@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/fredoka-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:600;src:url(/fonts/fredoka-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:700;src:url(/fonts/fredoka-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/nunito-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/fonts/nunito-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/fonts/nunito-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/space-mono-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/fonts/space-mono-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--paper: #fff8fc;--paper-2: #fcebf3;--ink: #422c47;--ink-2: #6a5070;--muted: #715977;--accent: #ffbedc;--ok: #a3e6c1;--bad: #ffbfb8;--info: #a5dbff;--multi: #dcc8ff;--butter: #eed193;--flame: #ff6b5b;--on-color: #39253d;--scrim: rgba(66, 44, 71, .5);--grid-line: rgba(66, 44, 71, .08);--grid-size: 28px;--border-w: 3px;--border: var(--border-w) solid var(--ink);--shadow: 6px 6px 0 var(--ink);--shadow-sm: 4px 4px 0 var(--ink);--shadow-xs: 2px 2px 0 var(--ink);--radius: 14px;--radius-sm: 8px;--radius-pill: 999px;--font-display: "Fredoka", "Nunito", "Segoe UI Rounded", "Arial Rounded MT Bold", sans-serif;--font-body: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Space Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--fs-0: .75rem;--fs-1: .875rem;--fs-2: 1rem;--fs-3: 1.25rem;--fs-4: 1.75rem;--fs-5: 2.5rem;--fs-6: 4rem;--sp-0: 2px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--maxw: 1100px;--topbar-h: 72px;--page-pad: var(--sp-5);--motion: .12s;--bp-phone: 720px;--bp-tablet: 1100px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper: #261b28;--paper-2: #332636;--ink: #f5ebf0;--ink-2: #dbccd5;--muted: #bdabba;--scrim: rgba(20, 10, 26, .7);--grid-line: rgba(251, 234, 245, .07)}}:root[data-theme=dark]{color-scheme:dark;--paper: #261b28;--paper-2: #332636;--ink: #f5ebf0;--ink-2: #dbccd5;--muted: #bdabba;--scrim: rgba(20, 10, 26, .7);--grid-line: rgba(251, 234, 245, .07)}:root[data-theme=light]{color-scheme:light}@media(max-width:720px){:root{--page-pad: var(--sp-4);--fs-6: 3rem;--fs-5: 2rem}}@media(prefers-reduced-motion:reduce){:root{--motion: 0ms}}@media print{:root:not([data-theme=light]),:root[data-theme=light]{color-scheme:light;--paper: #ffffff;--paper-2: #ffffff;--ink: #000000;--ink-2: #333333;--muted: #444444;--grid-line: transparent;--shadow: none;--shadow-sm: none;--shadow-xs: none;--border-w: 1pt;--fs-1: 9pt;--fs-2: 11pt;--fs-3: 13pt;--fs-4: 18pt;--motion: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}.skip-link{position:absolute;top:-100px;left:var(--sp-4);z-index:100;padding:var(--sp-2) var(--sp-4);background:var(--accent);color:var(--on-color);border:var(--border);border-radius:var(--radius);font-family:var(--font-display);text-decoration:none}.skip-link:focus{top:var(--sp-4)}main:focus{outline:none}body{background-color:var(--paper);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);background-attachment:fixed;color:var(--ink);font-family:var(--font-body);font-size:var(--fs-2);line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.1;margin:0;font-weight:700}h1{font-size:var(--fs-5)}h2{font-size:var(--fs-4)}h3{font-size:var(--fs-3)}p{margin:0}a{color:inherit;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px dashed var(--ink);outline-offset:3px}.topbar :focus-visible,.sticky-bar :focus-visible,.card-ink :focus-visible{outline-color:var(--paper)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mono{font-family:var(--font-mono)}.muted{color:var(--muted)}.display{font-family:var(--font-display);font-weight:700}.big-number{font-family:var(--font-display);font-weight:700;font-size:var(--fs-6);line-height:1}.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--sp-2)}.stack-lg{gap:var(--sp-6)}.text-sm{font-size:var(--fs-1)}.title-sm{font-size:var(--fs-4)}.truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;min-width:0}.grow{flex:1 1 auto}.hidden{display:none!important}.topbar{background:var(--ink);color:var(--paper);border-bottom:var(--border);position:sticky;top:0;z-index:20;padding-top:env(safe-area-inset-top,0px)}.topbar-inner{max-width:var(--maxw);margin:0 auto;padding:var(--sp-3) calc(var(--page-pad) + env(safe-area-inset-right,0px)) var(--sp-3) calc(var(--page-pad) + env(safe-area-inset-left,0px));display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}.logo{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);text-decoration:none;display:inline-flex;align-items:center;gap:var(--sp-2)}.logo-mark svg{fill:var(--flame)}.logo-mark{background:var(--accent);color:var(--on-color);width:2em;height:2em;border:var(--border-w) solid var(--paper);border-radius:var(--radius-sm);transform:rotate(-3deg);display:inline-flex;align-items:center;justify-content:center;flex:none}.topbar nav{display:flex;gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase}.topbar nav a{text-decoration:none;border-bottom:3px solid transparent}.topbar nav a.active{border-bottom-color:var(--accent)}.topbar nav{align-items:center}.theme-toggle,.sound-toggle,.topbar-pill{border-radius:var(--radius-pill);background:var(--paper);color:var(--ink);border:2px solid var(--paper);padding:var(--sp-1) var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;cursor:pointer;line-height:1.2;box-shadow:var(--shadow-xs);min-height:44px}.theme-toggle,.sound-toggle,.topbar-pill{display:inline-flex;align-items:center;gap:var(--sp-1);white-space:nowrap;flex:none}.theme-toggle svg,.sound-toggle svg,.topbar-pill svg{flex:none}.theme-toggle span{min-width:5ch}.sound-toggle span{min-width:9ch}.page{max-width:var(--maxw);margin:0 auto;padding:var(--sp-6) calc(var(--page-pad) + env(safe-area-inset-right,0px)) var(--sp-8) calc(var(--page-pad) + env(safe-area-inset-left,0px))}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-6)}.page-head>:first-child{flex:1 1 22rem;min-width:0}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--sp-2)}.head-side{display:flex;flex-direction:column;align-items:flex-end;margin-left:auto;gap:var(--sp-3)}.head-chips{margin-top:var(--sp-3)}.big-number-sm{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1.1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border:var(--border);background:var(--paper);color:var(--ink);font-family:var(--font-display);font-weight:700;font-size:var(--fs-2);letter-spacing:.01em;line-height:1;cursor:pointer;box-shadow:var(--shadow-sm);border-radius:var(--radius);text-decoration:none;transition:transform var(--motion),box-shadow var(--motion);white-space:nowrap;min-height:44px}.btn:active{transform:translate(2px,2px);box-shadow:var(--shadow-xs)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:var(--shadow-xs)}.btn-primary{background:var(--accent);color:var(--on-color)}.btn-ink{background:var(--ink);color:var(--paper)}.btn-danger{background:var(--bad);color:var(--on-color)}.btn-ok{background:var(--ok);color:var(--on-color)}.btn-info{background:var(--info);color:var(--on-color)}.btn-sm{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-1);min-height:36px;box-shadow:var(--shadow-xs)}.btn-lg{padding:var(--sp-4) var(--sp-6);font-size:var(--fs-3);box-shadow:var(--shadow)}.btn-block{width:100%}.btn-ink.btn-sm,.btn-ink.btn-lg{color:var(--paper)}.card{background:var(--paper);border:var(--border);box-shadow:var(--shadow);padding:var(--sp-5);border-radius:var(--radius)}.card-flat{box-shadow:none}.card-accent{background:var(--accent);color:var(--on-color)}.card-ink{background:var(--ink);color:var(--paper)}.card-2{background:var(--paper-2)}.tag{display:inline-block;font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em;padding:var(--sp-0) var(--sp-3);border:2px solid var(--ink);border-radius:var(--radius-pill);background:var(--paper);color:var(--ink);line-height:1.4;max-width:100%;overflow-wrap:anywhere}.tag-accent{background:var(--accent);color:var(--on-color)}.tag-multi{background:var(--multi);color:var(--on-color)}.tag-ok{background:var(--ok);color:var(--on-color)}.tag-bad{background:var(--bad);color:var(--on-color)}.tag-info{background:var(--info);color:var(--on-color)}.tag-ink{background:var(--ink);color:var(--paper)}.tag code{font:inherit;text-transform:none}.sticker{transform:rotate(-2deg);box-shadow:var(--shadow-xs)}.divider{border:0;border-top:var(--border);margin:var(--sp-5) 0}.input,.textarea,.select{width:100%;padding:var(--sp-3);border:var(--border);background:var(--paper);color:var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-xs);min-height:44px}.textarea{min-height:240px;font-family:var(--font-mono);font-size:var(--fs-1);resize:vertical}.label{display:block;font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-1)}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.check{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;-webkit-user-select:none;user-select:none}.check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;border:var(--border);background:var(--paper);display:inline-grid;place-content:center;cursor:pointer;flex:0 0 auto;border-radius:var(--radius-sm)}.check input:checked{background:var(--accent)}.check input:checked:after{content:"";width:12px;height:12px;background:var(--on-color);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}.check input:focus-visible{outline:3px dashed var(--ink);outline-offset:2px}.progress{height:18px;border:var(--border);background:var(--paper);overflow:hidden;border-radius:var(--radius-pill)}.progress>span{display:block;height:100%;background:var(--accent);transition:width var(--motion)}.progress-ok>span{background:var(--ok)}.progress-sm{height:10px;border-width:2px}.dropzone{border:var(--border-w) dashed var(--ink);background:var(--paper-2);padding:var(--sp-7) var(--sp-5);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);cursor:pointer;transition:background var(--motion),transform var(--motion);border-radius:var(--radius)}.dropzone.is-over{background:var(--accent);color:var(--on-color);transform:scale(1.01)}.dropzone input{display:none}.bank-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--sp-5)}.bank-card{display:flex;flex-direction:column;gap:var(--sp-4)}.bank-card h3{font-size:var(--fs-3);overflow-wrap:anywhere}.stat-row{display:flex;gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;flex-wrap:wrap}.stat-row b{font-size:var(--fs-3);display:block;font-family:var(--font-display);font-weight:700}.backup-card{display:grid;grid-template-columns:1fr auto;gap:var(--sp-5);align-items:start}.backup-actions{display:flex;flex-direction:column;gap:var(--sp-3)}@media(max-width:720px){.backup-card{grid-template-columns:1fr}.backup-actions .btn{width:100%}}.empty .row{justify-content:center}.empty{border:var(--border);padding:var(--sp-7) var(--sp-5);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);background:var(--paper-2);border-radius:var(--radius)}.empty h2{font-size:var(--fs-4)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:50}.modal{background:var(--paper);color:var(--ink);border:var(--border);box-shadow:var(--shadow);width:min(720px,100%);max-height:calc(100vh - 2 * var(--sp-4));max-height:calc(100dvh - 2 * var(--sp-4));overflow:auto;padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-4);border-radius:var(--radius)}.modal>.row-between{flex-wrap:nowrap;align-items:flex-start}.modal>.row-between>h2{flex:1 1 auto;min-width:0}.modal-wide{width:min(960px,100%)}.toasts{position:fixed;top:calc(var(--topbar-h) + var(--sp-3) + env(safe-area-inset-top,0px));right:calc(var(--sp-5) + env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:var(--sp-2);z-index:60;max-width:min(360px,calc(100vw - 2 * var(--sp-4)));pointer-events:none}.toast{border:var(--border);box-shadow:var(--shadow-sm);padding:var(--sp-3) var(--sp-4);background:var(--paper);font-family:var(--font-mono);font-size:var(--fs-1);animation:pop var(--motion) ease-out}.toast-ok{background:var(--ok);color:var(--on-color)}.toast-bad{background:var(--bad);color:var(--on-color)}.toast-info{background:var(--accent);color:var(--on-color)}@keyframes pop{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.table-wrap{overflow-x:auto;border:var(--border);border-radius:var(--radius);background:var(--paper)}table{border-collapse:collapse;width:100%;font-size:var(--fs-1)}th,td{padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--ink);text-align:left;vertical-align:top}th{font-family:var(--font-mono);text-transform:uppercase;font-size:var(--fs-0);background:var(--ink);color:var(--paper);position:sticky;top:0}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-family:var(--font-mono)}.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.unplaced-list{border:var(--border);background:var(--paper-2);border-radius:var(--radius);max-height:240px;overflow:auto;font-family:var(--font-mono);font-size:var(--fs-1)}.unplaced-list ol{list-style:none;margin:0;padding:0}.unplaced-list li{display:grid;grid-template-columns:6ch 1fr;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--ink)}.unplaced-list li.single{grid-template-columns:1fr}.unplaced-list li:last-child{border-bottom:0}.unplaced-list .pg{color:var(--ink-2)}.unplaced-list .txt{overflow-wrap:anywhere;white-space:pre-wrap}.chapter-list{display:flex;flex-direction:column;gap:var(--sp-3)}.chapter-item{display:grid;grid-template-columns:auto 1fr auto;gap:var(--sp-4);align-items:center;padding:var(--sp-3) var(--sp-4);border:var(--border);background:var(--paper);cursor:pointer;transition:transform var(--motion),box-shadow var(--motion);border-radius:var(--radius)}.chapter-item.is-selected{background:var(--paper-2);box-shadow:var(--shadow-sm);transform:translate(-1px,-1px)}.chapter-item.is-selected .chapter-num{background:var(--accent);color:var(--on-color);padding:0 var(--sp-2);box-shadow:var(--shadow-xs)}.chapter-title{font-weight:700;overflow-wrap:anywhere}.chapter-num{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);min-width:2.2em;border-radius:var(--radius-sm);text-align:center}.chapter-meta{font-family:var(--font-mono);font-size:var(--fs-1);text-align:right;white-space:nowrap}.chapter-progress{margin-top:var(--sp-1);width:120px}.sticky-bar{position:sticky;bottom:0;background:var(--ink);color:var(--paper);border-top:var(--border);padding:var(--sp-4) calc(var(--page-pad) + env(safe-area-inset-right,0px)) calc(var(--sp-4) + env(safe-area-inset-bottom,0px)) calc(var(--page-pad) + env(safe-area-inset-left,0px));margin:var(--sp-6) calc(-1 * (var(--page-pad) + env(safe-area-inset-right,0px))) calc(-1 * var(--sp-8)) calc(-1 * (var(--page-pad) + env(safe-area-inset-left,0px)));z-index:10}.sticky-bar-inner{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr auto;column-gap:var(--sp-4);row-gap:var(--sp-3);align-items:center}.sticky-caption{margin:0;font-size:var(--fs-1);display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}.sticky-group{display:flex;gap:var(--sp-3);justify-content:flex-end}.options-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-4)}.session{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-4)}.swipe-zone{touch-action:pan-y pinch-zoom}.session-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.stem{font-size:var(--fs-3);font-weight:600;line-height:1.4;overflow-wrap:anywhere}.options{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-5)}.option{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--sp-3);width:100%;text-align:left;padding:var(--sp-3) var(--sp-4);border:var(--border);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:var(--radius);box-shadow:var(--shadow-xs);transition:transform var(--motion),box-shadow var(--motion),background var(--motion);overflow-wrap:anywhere;min-height:52px}.option:disabled{cursor:default}.option .letter{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);width:1.8em;height:1.8em;display:grid;place-content:center;border:2px solid currentColor;border-radius:var(--radius-pill)}.option.is-selected{background:var(--accent);color:var(--on-color)}.option.is-correct{background:var(--ok);color:var(--on-color)}.option.is-wrong{background:var(--bad);color:var(--on-color)}.option.is-missed{background:var(--ok);color:var(--on-color);border-style:dashed}.option .mark{font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase}.feedback{border:var(--border);padding:var(--sp-4);margin-top:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);border-radius:var(--radius);animation:pop var(--motion) ease-out}.feedback-ok{background:var(--ok);color:var(--on-color)}.feedback-bad{background:var(--bad);color:var(--on-color)}.feedback h3{font-size:var(--fs-4)}.rationale{background:var(--paper);color:var(--ink);border:2px solid var(--ink);padding:var(--sp-3);line-height:1.55}.session-actions{display:flex;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;padding-bottom:env(safe-area-inset-bottom,0px)}.kbd-hint{font-family:var(--font-mono);font-size:var(--fs-1);color:var(--muted)}.swipe-hint{display:none;font-family:var(--font-mono);font-size:var(--fs-1);color:var(--muted);text-align:center;margin-top:calc(var(--sp-2) - var(--sp-4))}kbd{font-family:var(--font-mono);border:2px solid var(--ink);padding:0 var(--sp-1);box-shadow:var(--shadow-xs);font-size:var(--fs-0)}.exam-layout{display:grid;grid-template-columns:1fr 260px;gap:var(--sp-5);align-items:start}.navgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:var(--sp-2)}.navcell{aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid var(--ink);background:var(--paper);color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-1);cursor:pointer;display:grid;place-content:center;padding:0;border-radius:var(--radius)}.navcell.is-answered{background:var(--info);color:var(--on-color)}.navcell.is-flagged{background:var(--multi);color:var(--on-color)}.navcell.is-current{outline:3px solid var(--accent);outline-offset:1px;font-weight:700}.navcell.is-current:focus-visible{outline:3px dashed var(--ink);outline-offset:3px}.navcell.is-right{background:var(--ok);color:var(--on-color)}.navcell.is-wrong{background:var(--bad);color:var(--on-color)}.legend{display:flex;flex-wrap:wrap;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-0);text-transform:uppercase}.legend i{display:inline-block;width:14px;height:14px;border:2px solid var(--ink);vertical-align:calc(-1 * var(--sp-0));margin-right:var(--sp-1)}.timer{font-family:var(--font-mono);font-size:var(--fs-3)}.timer.is-low{background:var(--bad);color:var(--on-color);padding:0 var(--sp-2);border:2px solid var(--ink)}.nav-toggle{display:none}.exam-scrim{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:29;background:var(--scrim);border:0;padding:0;margin:0;cursor:pointer}.score-hero{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-5);align-items:center}.review-item{display:flex;flex-direction:column;gap:var(--sp-3)}.review-item .options{margin-top:var(--sp-2)}.filters{display:flex;gap:var(--sp-2);flex-wrap:wrap}.btn[aria-pressed=true]{background:var(--ink);color:var(--paper)}.dash-sections{display:flex;flex-direction:column;gap:var(--sp-6)}.dash-caption{font-size:var(--fs-1)}.dash-title{font-weight:700;overflow-wrap:anywhere}.dash-bar{display:flex;align-items:center;gap:var(--sp-3)}.dash-bar>.chapter-progress{margin-top:0}.dash-bar>span{flex:0 0 auto}.dash-actions{white-space:nowrap}.dash-actions .btn+.btn{margin-left:var(--sp-2)}.dash-reset{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-4)}.skeleton{border:var(--border);height:120px;background:repeating-linear-gradient(-45deg,var(--paper-2) 0 12px,var(--paper) 12px 24px);animation:slide 1.2s linear infinite;background-size:200% 100%}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}.dropzone.is-over,.subject-card:hover{transform:none}}@keyframes slide{0%{background-position:0 0}to{background-position:68px 0}}.card-icon{display:inline-grid;place-items:center;width:44px;height:44px;border:2px solid var(--ink);border-radius:var(--radius-sm);background:var(--paper-2);box-shadow:var(--shadow-xs)}.auth-page{display:grid;place-items:center;padding-bottom:var(--sp-6);min-height:calc(100vh - var(--topbar-h));min-height:calc(100dvh - var(--topbar-h))}.auth-card{width:min(420px,100%)}.auth-help{font-size:var(--fs-1);text-align:center;margin:0}.alert-bad{background:var(--bad);color:var(--on-color)}.subject-card{position:relative;display:flex;flex-direction:column;gap:var(--sp-4);transition:transform var(--motion)}.subject-card h3{overflow-wrap:anywhere}.subject-card h3 a{text-decoration:none}.subject-card .stretch:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.subject-card .subject-actions{position:relative;z-index:1}.subject-card .helper{flex-basis:100%;font-family:var(--font-mono);font-size:var(--fs-1)}.sync-pill.is-busy svg{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.sync-pill.is-busy svg{animation:none}}.flag-note{margin-top:var(--sp-2)}.edit-option{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:var(--sp-3)}.edit-option-tick{display:inline-flex;align-items:center;gap:var(--sp-2)}.fix-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--sp-4)}@media(max-width:720px){.edit-option{grid-template-columns:auto 1fr}.edit-option>.btn{grid-column:2;justify-self:start}.fix-row{grid-template-columns:1fr}}.verse{margin:0;display:flex;flex-direction:column;gap:var(--sp-3)}.verse-text{font-family:var(--font-body);font-size:var(--fs-3);line-height:1.5;overflow-wrap:anywhere}.verse-ref{font-family:var(--font-mono)}.verse-notice{font-size:var(--fs-0)}.print-toolbar{margin-bottom:var(--sp-2)}.sheet .stem{font-size:var(--fs-2);font-weight:400;line-height:1.5}.sheet-head{display:flex;flex-direction:column;gap:var(--sp-2);padding-bottom:var(--sp-4);margin-bottom:var(--sp-5);border-bottom:var(--border)}.sheet-head h1{font-size:var(--fs-4)}.sheet-fields{font-family:var(--font-mono);font-size:var(--fs-1)}.sheet-q{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-5)}.sheet-q>li{display:grid;grid-template-columns:3ch 1fr;gap:var(--sp-2) var(--sp-3);break-inside:avoid}.sheet-q .qnum{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);text-align:right;line-height:1.1}.sheet-q .stem{grid-column:2}.sheet-opts{grid-column:2;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.sheet-opts li{display:grid;grid-template-columns:2.5ch 1fr;gap:var(--sp-2);overflow-wrap:anywhere}.sheet-opts .letter{font-family:var(--font-mono)}.sheet-key{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(7em,1fr));gap:var(--sp-2) var(--sp-4);font-family:var(--font-mono)}.sheet-key li{break-inside:avoid}.sheet-key b{font-family:var(--font-display)}@media print{@page{margin:16mm}body{background-image:none;line-height:1.35}.topbar,.toasts,.print-toolbar,.modal-backdrop,.skip-link{display:none!important}.page{padding:0;max-width:none}.session{max-width:none}.sheet.card{border:0;padding:0;border-radius:0}.sheet-head{break-after:avoid}a{text-decoration:none}}.results-grid{display:grid;gap:var(--sp-6)}.modal-footer{justify-content:flex-end;position:sticky;bottom:calc(-1 * var(--sp-5));margin-bottom:calc(-1 * var(--sp-5));padding:var(--sp-3) 0 var(--sp-5);background:var(--paper)}body.drawer-open{overflow:hidden}@media(pointer:coarse){.logo,.btn-sm{min-height:44px}.topbar nav a,.eyebrow a,.table-wrap a{display:inline-flex;align-items:center;min-height:44px}.check{min-height:44px}.kbd-hint{display:none}.swipe-hint{display:block}}@media(hover:hover){.topbar nav a:hover{border-bottom-color:var(--accent)}.theme-toggle:hover,.sound-toggle:hover,.topbar-pill:hover{background:var(--accent);color:var(--on-color)}.btn:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.btn-sm:hover{box-shadow:3px 3px 0 var(--ink)}.chapter-item:hover{box-shadow:var(--shadow-xs);transform:translate(-1px,-1px)}.subject-card:hover{transform:translate(-2px,-2px)}.option:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:var(--shadow-sm)}}@media(max-width:720px){.score-hero{grid-template-columns:1fr}.chapter-item{grid-template-columns:auto 1fr}.chapter-meta{grid-column:2;text-align:left}.chapter-progress{width:100%}.logo>span:last-child{display:none}.topbar-inner,.topbar nav{flex-wrap:wrap}.topbar nav{gap:var(--sp-2);justify-content:flex-end}.sound-toggle,.topbar-pill{padding:var(--sp-1);min-width:44px;justify-content:center}.sound-toggle span,.topbar-pill:not(.install-pill) span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sticky-bar{padding-top:var(--sp-3);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom,0px))}.sticky-bar-inner{grid-template-columns:1fr;gap:var(--sp-2)}.sticky-group{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:var(--sp-2)}.sticky-group .btn{padding:var(--sp-2) var(--sp-3);min-height:44px;font-size:var(--fs-2);white-space:normal;line-height:1.2}.sticky-group .btn svg{display:none}.sticky-caption{gap:var(--sp-1) var(--sp-3)}.sticky-bar .big-number{font-size:var(--fs-3)}.head-chips{flex-wrap:wrap}.head-side{align-items:flex-start;margin-left:0}.exam-layout{grid-template-columns:1fr}.nav-toggle{display:inline-flex}.exam-side{display:none}.exam-side.is-open{display:block;position:fixed;left:0;right:0;bottom:0;z-index:30;max-height:70vh;max-height:70dvh;overflow:auto;border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 -6px 0 var(--ink);padding-bottom:calc(var(--sp-5) + env(safe-area-inset-bottom,0px));animation:slide-up var(--motion) ease-out}.exam-scrim{display:block}.session-actions{flex-direction:column;align-items:stretch}.session-actions .row{width:100%}.session-actions .row{align-items:stretch}.results-actions>.btn{flex:1 1 40%;min-width:0;white-space:normal;line-height:1.2}.import-tabs{width:100%}.session-actions .row>.btn,.modal-footer>.btn,.import-tabs>.btn{flex:1 1 40%}.kbd-hint{display:none}.toasts{left:calc(var(--sp-4) + env(safe-area-inset-left,0px));right:calc(var(--sp-4) + env(safe-area-inset-right,0px));max-width:none}.dash-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.dash-table tr{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-4);padding:var(--sp-3) var(--sp-4);border-bottom:2px solid var(--ink)}.dash-table tr:last-child{border-bottom:0}.dash-table td{display:block;padding:0;border:0;text-align:left}.dash-table td[data-label]:before{content:attr(data-label) " ";content:attr(data-label) " " / "";display:block;font-family:var(--font-mono);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.dash-table td.dash-chapter,.dash-table td.dash-mastery,.dash-table td.dash-actions{grid-column:1 / -1}.dash-table td.dash-chapter{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.dash-bar>.chapter-progress{flex:1 1 auto;width:auto}.dash-table td.dash-actions{white-space:normal;display:flex;gap:var(--sp-2)}.dash-table td.dash-actions .btn{flex:1 1 40%;min-height:44px}.dash-table td.dash-actions .btn+.btn{margin-left:0}.dash-reset .btn{width:100%}}@media(min-width:721px)and (max-width:1100px){.results-actions>.btn{flex:1 1 40%;min-width:0;white-space:normal;line-height:1.2}.results-actions>.btn>svg{display:none}.chapter-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.chapter-item{grid-template-columns:auto 1fr}.chapter-meta{grid-column:2;text-align:left}.chapter-progress{width:100%}.results-grid{display:grid;grid-template-columns:minmax(320px,2fr) 3fr;gap:var(--sp-5);align-items:start}}@media(min-width:1101px){.bank-grid{grid-template-columns:repeat(3,1fr)}.chapter-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.results-grid{display:grid;grid-template-columns:2fr 3fr;gap:var(--sp-6);align-items:start}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:none}}
