:root{--oxblood:#9b0101;--teal:#2f7a66;--ink:#1c1c1e;--paper:#fff;--bg:#fcf7e1;--block:#fff;--fill:#e5e5ea;--field:#fff;--card-field:#fcf7e1;--thumb:#fff;--text:#1c1c1e;--muted:#6c6c70;--rule:#d1d1d6;--rule-strong:#aeaeb2;--accent:var(--oxblood);--on-accent:#fff;--tint:var(--oxblood);--success:var(--teal);--focus:var(--oxblood);--bar:#fcf7e1d1;--fs-hero:34px;--fs-title:28px;--fs-sub:20px;--fs-body:17px;--fs-small:15px;--fs-label:13px;--r-card:14px;--r-control:10px;--tap:44px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;--font-head:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI Variable Display", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;--font-body:var(--font);--font-mono:var(--font);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#000;--block:#1c1c1e;--fill:#2c2c2e;--field:#1c1c1e;--card-field:#2c2c2e;--thumb:#636366;--text:#fff;--muted:#98989f;--rule:#38383a;--rule-strong:#545458;--accent:#b3151a;--tint:#ff6b6b;--focus:#ff6b6b;--bar:#161617cc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#000;--block:#1c1c1e;--fill:#2c2c2e;--field:#1c1c1e;--card-field:#2c2c2e;--thumb:#636366;--text:#fff;--muted:#98989f;--rule:#38383a;--rule-strong:#545458;--accent:#b3151a;--tint:#ff6b6b;--focus:#ff6b6b;--bar:#161617cc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{font-family:var(--font-body);font-size:var(--fs-body);letter-spacing:-.01em;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-weight:400;line-height:1.47}button{font:inherit;color:inherit;cursor:pointer;letter-spacing:inherit}button:disabled{cursor:default}:focus-visible{outline:3px solid color-mix(in srgb, var(--focus) 55%, transparent);outline-offset:2px}a{color:var(--tint)}p{margin:0 0 12px}.icon{flex:none;display:block}.muted{color:var(--muted)}.small-text{font-size:var(--fs-small)}.nowrap{white-space:nowrap}.page-title,.greeting,.block-title,.section-title,.card h2,.prompt{font-family:var(--font-head);color:inherit;letter-spacing:-.02em;margin:0}.greeting{font-size:var(--fs-hero);font-weight:700;line-height:1.12}.page-title{font-size:var(--fs-title);margin-bottom:12px;font-weight:700;line-height:1.15}.block-title,.section-title,.card h2,.prompt{font-size:var(--fs-sub);font-weight:600;line-height:1.3}.section-title{margin:36px 0 10px}.card h2{margin-bottom:4px}.eyebrow,.mono{font-family:var(--font);font-weight:600;font-size:var(--fs-label);letter-spacing:0;line-height:1.35}.eyebrow{color:var(--muted);margin-bottom:4px;display:block}.topbar{z-index:20;background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom:.5px solid var(--rule);position:sticky;top:0}.topbar-inner{align-items:center;gap:20px;max-width:1100px;min-height:56px;margin:0 auto;padding:6px 16px;display:flex}.brand{color:var(--text);min-height:var(--tap);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{border-radius:7px;width:30px;height:30px;display:block}.brand .eyebrow{color:var(--text);font-size:var(--fs-small);margin:0}.nav{flex:1;gap:2px;display:flex}.nav-link{min-height:36px;color:var(--text);font-size:var(--fs-small);border-radius:999px;align-items:center;padding:0 14px;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{background:var(--fill)}.nav-link.active{background:var(--text);color:var(--bg);font-weight:600}.stats{align-items:center;gap:8px;margin-left:auto;display:flex}.stat{font-size:var(--fs-small);color:var(--muted);white-space:nowrap;margin-right:4px}.bell{color:var(--tint);width:var(--tap);height:var(--tap);border-radius:50%;place-items:center;display:grid;position:relative}.bell:hover{background:var(--fill)}.badge{color:#fff;background:#ff3b30;border-radius:9px;place-items:center;min-width:18px;height:18px;padding:0 5px;font-size:12px;font-weight:600;display:grid;position:absolute;top:4px;right:2px}.prefs-toggles{gap:8px;display:flex}.pref-btn{min-width:var(--tap);height:var(--tap);background:var(--fill);color:var(--text);font-size:var(--fs-small);border:none;border-radius:999px;place-items:center;padding:0 12px;font-weight:600;display:grid}.pref-btn:hover{background:color-mix(in srgb, var(--fill) 80%, var(--text))}.avatar{width:var(--tap);height:var(--tap);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:var(--fs-small);background-clip:content-box;border-radius:50%;place-items:center;padding:4px;text-decoration:none;display:grid}.tabbar{display:none}.btn{min-height:var(--tap);font-family:var(--font-body);font-size:var(--fs-body);background:var(--fill);color:var(--tint);border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 22px;font-weight:600;line-height:1.2;transition:background-color .15s,transform .1s;display:inline-flex}.btn:not(:disabled):active{transform:scale(.98)}.btn.primary,.btn.danger{background:var(--accent);color:var(--on-accent)}.btn.primary:not(:disabled):hover,.btn.danger:not(:disabled):hover{background:color-mix(in srgb, var(--accent) 88%, #000)}.btn.ghost{background:var(--fill);color:var(--tint)}.btn.ghost:not(:disabled):hover{background:color-mix(in srgb, var(--fill) 85%, var(--text))}.btn:disabled{background:var(--fill);color:var(--muted);opacity:.7}.btn.small{min-height:36px;font-size:var(--fs-small);padding:6px 16px}.btn.wide{width:100%;max-width:380px}a.btn{text-decoration:none}.btn.invert{color:var(--oxblood);background:#fff}.btn.invert:not(:disabled):hover{background:#f2f2f7}.link-btn{min-height:36px;color:var(--tint);background:0 0;border:none;padding:6px 0;font-weight:500;text-decoration:none}.link-btn:hover{text-decoration:underline}.danger-text{color:var(--tint)!important}.icon-btn{border-radius:var(--r-control);background:var(--fill);width:36px;height:36px;color:var(--text);border:none;place-items:center;display:grid}.icon-btn:disabled{opacity:.35}.icon-buttons{flex:none;gap:6px;display:flex}.page{max-width:720px;margin:0 auto;padding:28px 16px 96px}.page.narrow{max-width:520px}.page.wide{max-width:1100px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.splash{min-height:100vh;color:var(--muted);place-items:center;display:grid}.empty{color:var(--muted);padding:24px 0}.card{background:var(--block);border-radius:var(--r-card);margin:20px 0;padding:20px}.block-accent{background:var(--accent);color:var(--on-accent)}.block-accent .eyebrow,.block-accent .muted{color:inherit;opacity:.85}.chip{background:var(--fill);color:var(--text);font-size:var(--fs-label);border-radius:999px;padding:3px 10px;font-weight:600;line-height:1.4;display:inline-block}.chip.bad,.chip.solid{background:var(--accent);color:var(--on-accent)}.chip.ok{background:var(--success);color:#fff}.notice{background:var(--block);border-radius:var(--r-card);margin:0 0 20px;padding:14px 16px}.notice.warn{background:var(--accent);color:var(--on-accent)}.form{flex-direction:column;gap:16px;display:flex}.form label,.filters label{min-width:140px;font-size:var(--fs-small);flex-direction:column;flex:1;gap:6px;font-weight:600;display:flex}.form-row{flex-wrap:wrap;gap:16px;display:flex}.form-actions{justify-content:flex-start;display:flex}.form-actions.gap{gap:10px}.input{width:100%;min-height:var(--tap);border-radius:var(--r-control);background:var(--field);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);box-shadow:inset 0 0 0 .5px var(--rule);border:none;padding:10px 14px;font-weight:400}.card .input{background:var(--card-field);box-shadow:none}.input::placeholder{color:var(--muted);opacity:.8}.input:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 35%, transparent);outline:none}.input.compact{width:auto;min-height:36px;font-size:var(--fs-small);padding:6px 10px}.input.grow{flex:1;width:auto;min-width:0}.input.small-number{width:84px}select.input{appearance:auto}textarea.input{resize:vertical;line-height:1.5}.form-error{background:color-mix(in srgb, var(--accent) 12%, var(--block));color:var(--tint);border-radius:var(--r-control);padding:12px 16px;font-weight:500}.form-ok{background:color-mix(in srgb, var(--success) 14%, var(--block));border-radius:var(--r-control);padding:12px 16px}.hint{font-size:var(--fs-label);color:var(--muted);margin:0;line-height:1.45}.segmented{background:var(--fill);border-radius:9px;flex-wrap:wrap;gap:2px;padding:2px;display:inline-flex}.segmented button{min-height:32px;color:var(--text);font-size:var(--fs-small);background:0 0;border:none;border-radius:7px;padding:4px 14px;font-weight:500}.segmented button.active{background:var(--thumb);font-weight:600;box-shadow:0 1px 3px #0000001f,0 0 0 .5px #0000000a}.segmented.small button{min-height:28px;font-size:var(--fs-label);padding:3px 10px}.check-row{cursor:pointer;align-items:flex-start;font-size:var(--fs-body)!important;flex-direction:row!important;gap:12px!important;font-weight:400!important}.check-row input{width:22px;height:22px;accent-color:var(--accent);flex:none;margin-top:1px}.inline-label{align-items:center;flex-direction:row!important;flex:none!important;gap:8px!important;min-width:0!important}.grow-text{flex:1}.radio{width:22px;height:22px;accent-color:var(--accent);flex:none}.swatches{gap:10px;display:flex}.swatch{width:var(--tap);height:var(--tap);border:none;border-radius:50%;padding:0;box-shadow:inset 0 0 0 .5px #0003}.swatch.active{outline:3px solid var(--focus);outline-offset:2px}.overlay{z-index:50;background:#0006;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--block);border-radius:18px;width:100%;max-width:460px;margin:0}.login{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.login-prefs{position:absolute;top:12px;right:16px}.login-main{flex:1;place-items:center;padding:72px 16px 32px;display:grid}.login-card{flex-direction:column;gap:16px;width:100%;max-width:400px;display:flex}.login-hero{text-align:center;flex-direction:column;align-items:center;padding:0 0 8px;display:flex}.login-hero .page-title{font-size:var(--fs-hero);margin:0 0 6px}.login-hero p{color:var(--muted);margin:0}.login-mark{border-radius:14px;width:64px;height:64px;margin-bottom:16px}.login-card .btn.wide{max-width:none;margin-top:8px}.home{max-width:640px;margin:0 auto;padding:20px 16px 96px}.home-head{margin:8px 0 20px}.home-head .eyebrow{margin-bottom:2px}.home-head .greeting{margin:0 0 4px}.hero-summary{color:var(--muted);margin:0}.home-head-row{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.streak-cup{width:var(--tap);height:52px;color:var(--tint);flex:none;place-items:center;display:grid;position:relative}.streak-cup.cold{color:var(--rule-strong)}.streak-cup-n{background:var(--block);min-width:20px;height:20px;color:var(--text);box-shadow:0 0 0 1px var(--rule);font-variant-numeric:tabular-nums;border-radius:10px;place-items:center;padding:0 5px;font-size:12px;font-weight:700;display:grid;position:absolute;bottom:6px;right:-4px}.refresh-hint{margin:-6px 0 14px}.refresh-more{text-align:center;margin:10px 0 0}.passport-page{border-top:.5px solid var(--rule);padding:14px 0 4px}.passport-page:first-of-type{border-top:none}.passport-head{justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.passport-head .eyebrow{color:var(--text);margin:0}.passport-stamps{flex-wrap:wrap;align-items:center;gap:2px 8px;transition:opacity .6s;display:flex}.passport-stamp{transform:rotate(var(--tilt,0deg));display:inline-block}.passport-stamp .postmark{transform:none}.next-card{background:var(--block);border-radius:var(--r-card);margin-bottom:28px;padding:18px 18px 20px}.next-card .eyebrow{color:var(--tint)}.next-card strong{font-size:var(--fs-sub);letter-spacing:-.02em;margin-bottom:12px;font-weight:600;display:block}.next-card .btn{width:100%}.next-progress{background:var(--fill);border-radius:3px;height:6px;margin:2px 0 14px;overflow:hidden}.next-progress>div{background:var(--accent);border-radius:3px;height:100%}.chapter-section{margin-bottom:28px}.chapter-header{padding:0 4px 8px}.chapter-header .eyebrow{align-items:center;gap:8px;margin-bottom:2px;display:flex}.chapter-dot{width:10px;height:10px;box-shadow:0 0 0 1px var(--rule-strong);border-radius:50%;flex:none}.chapter-header .block-title{font-size:var(--fs-sub)}.station-desc{color:var(--muted);font-size:var(--fs-small);margin:2px 0 0}.chapter-header .chip{margin-top:8px}.lock-note{font-size:var(--fs-label);color:var(--muted);align-items:center;gap:6px;margin:8px 0 0;display:flex}.list{background:var(--block);border-radius:var(--r-card);overflow:hidden}.list-row{text-align:left;width:100%;min-height:60px;color:var(--text);background:0 0;border:none;align-items:center;gap:14px;padding:10px 14px 10px 16px;text-decoration:none;display:flex;position:relative}.list-row+.list-row:before{content:"";border-top:.5px solid var(--rule);position:absolute;top:0;left:62px;right:0}.list-row:not(:disabled):hover{background:color-mix(in srgb, var(--fill) 50%, transparent)}.list-row:not(:disabled):active{background:var(--fill)}.list-row:disabled{cursor:default}.list-row .row-text{flex:1;min-width:0}.list-row .chevron{color:var(--rule-strong)}.locked-list .list-row{opacity:.55}.stop-title{font-weight:500;display:block}.stop-meta{font-size:var(--fs-label);color:var(--muted);margin-top:1px;display:block}.list-row:disabled .stop-title{color:var(--muted)}.stop-next{color:var(--tint);font-weight:600}.stop-node{background:var(--fill);width:32px;height:32px;color:var(--muted);font-size:var(--fs-label);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.stop-node.open{color:var(--text)}.stop-node.current{background:color-mix(in srgb, var(--accent) 14%, var(--block));color:var(--tint);box-shadow:inset 0 0 0 2px var(--tint)}.stop-node.done{background:var(--accent);color:var(--on-accent)}.stop-node.test.ready{background:var(--text);color:var(--bg)}.stop-node.test.passed{background:var(--success);color:#fff}.stop-node.test.failed{background:color-mix(in srgb, var(--accent) 14%, var(--block));color:var(--tint)}.lesson{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.lesson-top{align-items:center;gap:12px;width:100%;max-width:760px;margin:0 auto;padding:10px 12px;display:flex}.close{background:var(--fill);color:var(--text);border:none;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;margin:4px;display:grid}.close .icon{width:18px;height:18px}.progress{background:var(--fill);border-radius:4px;flex:1;height:8px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .35s}.progress-fill.test{background:var(--text)}.hearts-row{color:#ff3b30;flex-wrap:wrap;justify-content:flex-end;gap:2px;max-width:45%;display:flex}.heart.lost{color:var(--rule-strong)}.test-timer{font-size:var(--fs-small);font-variant-numeric:tabular-nums;color:var(--muted);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.test-timer.low{color:var(--tint)}.lesson-body{flex:1;width:100%;max-width:640px;margin:0 auto;padding:16px 16px 200px}.prompt{margin:8px 0 24px;font-size:24px;font-weight:700;line-height:1.25}.penalty-badge{font-size:var(--fs-small);color:var(--muted);align-items:center;gap:6px;display:inline-flex}.options{gap:10px;display:grid}.option{text-align:left;background:var(--block);border-radius:var(--r-card);min-height:56px;box-shadow:inset 0 0 0 1px var(--rule);border:none;align-items:center;gap:14px;padding:12px 16px;display:flex}.option:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--rule-strong)}.option.selected{background:color-mix(in srgb, var(--accent) 8%, var(--block));box-shadow:inset 0 0 0 2px var(--tint)}.option-key{background:var(--fill);width:28px;height:28px;font-size:var(--fs-label);color:var(--muted);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.option.selected .option-key{background:var(--accent);color:var(--on-accent)}.answer-line{border-radius:var(--r-card);background:var(--block);min-height:64px;box-shadow:inset 0 0 0 1px var(--rule);flex-wrap:wrap;align-content:flex-start;gap:8px;margin-bottom:20px;padding:10px;display:flex}.tile-bank{flex-wrap:wrap;gap:8px;display:flex}.tile{min-height:var(--tap);background:var(--block);box-shadow:0 1px 2px #00000014, inset 0 0 0 .5px var(--rule);border:none;border-radius:12px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.tile:not(:disabled):hover{box-shadow:0 1px 2px #00000014, inset 0 0 0 1px var(--rule-strong)}.tile.used{background:var(--fill);color:#0000;box-shadow:none}.tile-num{font-size:var(--fs-label);color:var(--muted)}.lesson-footer{z-index:30;background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--rule);padding-bottom:env(safe-area-inset-bottom);position:fixed;bottom:0;left:0;right:0}.lesson-footer.correct,.lesson-footer.wrong{color:#fff;-webkit-backdrop-filter:none;backdrop-filter:none;border:none;border-radius:20px 20px 0 0}.lesson-footer.correct{background:var(--success)}.lesson-footer.wrong{background:var(--oxblood)}.footer-inner{justify-content:space-between;align-items:center;gap:16px;max-width:760px;margin:0 auto;padding:16px;display:flex}.footer-inner .btn{min-width:160px}.feedback strong{font-size:var(--fs-sub);font-weight:700;display:block}.feedback p{margin:4px 0 0}.lesson-footer.correct .btn,.lesson-footer.wrong .btn{background:#fff}.lesson-footer.correct .btn{color:var(--teal)}.lesson-footer.wrong .btn{color:var(--oxblood)}.lesson-end{background:var(--bg);place-items:center;min-height:100vh;padding:32px 16px;display:grid}.end-inner{text-align:center;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:420px;display:flex}.end-inner .page-title{margin:0}.end-text{color:var(--muted);margin:0}.end-stats{background:var(--block);border-radius:var(--r-card);width:100%;display:flex}.end-stats div{flex:1;padding:14px 18px}.end-stats div+div{border-left:.5px solid var(--rule)}.end-stats .eyebrow{margin-bottom:2px}.end-stats strong{font-size:var(--fs-sub);font-variant-numeric:tabular-nums;font-weight:700;display:block}.end-inner .btn.wide{max-width:none}.fail-mark{color:var(--tint)}.postmark{color:var(--oxblood)}:root[data-theme=dark] .postmark{color:var(--tint)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .postmark{color:var(--tint)}}.postmark-ring{font-family:var(--font);letter-spacing:.22em;fill:currentColor;font-size:9px;font-weight:600}.postmark-date{font-family:var(--font);letter-spacing:.02em;fill:currentColor;font-size:16px;font-weight:600}.postmark:not(.stamp-in){transform:rotate(-8deg)}@media (prefers-reduced-motion:no-preference){.stamp-in{animation:.45s cubic-bezier(.2,.9,.3,1.2) both stamp-in}}@keyframes stamp-in{0%{opacity:0;transform:scale(1.4)rotate(4deg)}to{opacity:1;transform:scale(1)rotate(-8deg)}}.test-intro .back-link{align-items:center;gap:6px;margin-bottom:16px;display:inline-flex}.test-head{border-radius:var(--r-card);margin-bottom:20px;padding:22px 20px}.test-head .page-title{margin:0}.test-facts{background:var(--block);border-radius:var(--r-card);margin:0 0 20px;padding:0 16px;list-style:none}.test-facts li{border-bottom:.5px solid var(--rule);align-items:center;gap:12px;min-height:52px;padding:12px 0;display:flex}.test-facts li:last-child{border-bottom:none}.rules{gap:6px;margin:0;padding-left:20px;display:grid}.top-label{margin:0}.reading{flex-direction:column;gap:20px;margin:8px 0 28px;display:flex}.reading-text p{white-space:pre-line;margin:0 0 12px}.reading-text p:last-child{margin-bottom:0}.reading-media{background:var(--block);border-radius:var(--r-card);margin:0;overflow:hidden}.reading-media img,.reading-media video{object-fit:contain;background:#000;width:100%;height:auto;max-height:70vh;display:block}.reading-media .btn{margin:16px}.reading-media figcaption{font-size:var(--fs-label);color:var(--muted);padding:10px 14px}.video-frame{aspect-ratio:16/9;background:#000;border:0;width:100%;display:block}.video-frame.vertical{aspect-ratio:9/16;width:min(100%,340px);margin:0 auto}.doc{background:var(--block);border-radius:var(--r-card);overflow:hidden}.doc-card{flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px;display:flex}.doc-card>.icon{color:var(--tint)}.doc-name{flex:1;min-width:140px}.doc-name strong{overflow-wrap:anywhere;font-weight:600;display:block}.doc-actions{gap:8px;display:flex}.doc-actions .btn{text-decoration:none}.pdf-frame{border:0;border-top:.5px solid var(--rule);background:#fff;width:100%;height:70vh;display:block}.doc-preview .doc{background:var(--bg)}.doc-preview .pdf-frame{display:none}.reading-group{margin-top:28px}.reading-group .section-title{margin:0 0 8px 4px}.reading-row{background:var(--block);min-height:60px;color:var(--text);justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;text-decoration:none;display:flex;position:relative}.reading-row:first-of-type{border-radius:var(--r-card) var(--r-card) 0 0}.reading-row:last-of-type{border-radius:0 0 var(--r-card) var(--r-card)}.reading-row:only-of-type{border-radius:var(--r-card)}.reading-row+.reading-row:before{content:"";border-top:.5px solid var(--rule);position:absolute;top:0;left:16px;right:0}.reading-row:hover{background:color-mix(in srgb, var(--fill) 50%, var(--block))}.reading-row .icon{color:var(--rule-strong)}.reading-eyebrow{margin-top:20px}.group-head{justify-content:space-between;align-items:center;gap:12px;margin:0 0 4px 4px;display:flex}.group-head .section-title{margin:0}.group-hint{margin:0 0 10px 4px}.group-label{margin:0 0 6px 4px}.notif-list{background:var(--block);border-radius:var(--r-card);overflow:hidden}.notif{border-bottom:.5px solid var(--rule);background:0 0;border-radius:0;align-items:flex-start;gap:14px;margin:0;padding:14px 16px;display:flex}.notif:last-child{border-bottom:none}.notif.unread{background:color-mix(in srgb, var(--accent) 6%, var(--block))}.notif-tag{text-align:center;flex:none;min-width:88px}.notif-body{flex:1;min-width:0}.notif-body p{margin:0 0 4px}.log-day{margin-top:28px}.log-card{background:var(--block);border-radius:var(--r-card);margin-top:10px;padding:14px 16px}.log-meta{font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.log-meta .mono{font-size:var(--fs-small);font-weight:600}.log-meta .mono.muted{font-weight:400}.log-meta .link-btn{margin-left:auto}.log-marker{background:var(--rule-strong);border-radius:50%;flex:none;width:8px;height:8px}.log-marker.cat-issue{background:var(--tint)}.log-author{font-weight:600}.log-content{white-space:pre-wrap;margin:6px 0 0}.filters{align-items:flex-end}.chapter-row{border-left:6px solid;align-items:center;gap:16px;display:flex}.chapter-info{flex:1;min-width:0}.chapter-info p{margin:2px 0 10px}.chapter-stats{font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.lesson-editor{border-top:6px solid;flex-direction:column;gap:16px;display:flex}.test-editor{border-top-color:var(--accent)!important}.editor-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.editor-num{color:var(--muted);font-size:var(--fs-small);flex:none;font-weight:600}.exercise-editor{border-top:.5px solid var(--rule);flex-direction:column;gap:8px;padding-top:16px;display:flex}.exercise-editor .editor-head .segmented{flex:none}.item-row{align-items:center;gap:8px;display:flex}.step-num{text-align:center;width:18px;font-size:var(--fs-small);color:var(--muted);flex:none}.exercise-editor .link-btn{align-self:flex-start}.editor-subtitle{font-size:var(--fs-body);margin:8px 0 0;font-weight:700}.reading-editor{flex-direction:column;gap:10px;display:flex}.reading-block-editor{border-top:.5px solid var(--rule);flex-direction:column;gap:8px;padding-top:12px;display:flex}.reading-add{flex-wrap:wrap;gap:8px;display:flex}.media-preview{border-radius:var(--r-control);background:#000;max-width:360px;overflow:hidden}.media-preview img,.media-preview video{object-fit:contain;width:100%;max-height:220px;display:block}.file-btn{cursor:pointer;flex:none;position:relative;overflow:hidden}.file-btn input{opacity:0;cursor:pointer;position:absolute;inset:0}.file-btn.disabled{opacity:.6;pointer-events:none}.save-bar{background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--rule);align-items:center;gap:12px;margin-top:24px;padding:12px 0;display:flex;position:sticky;bottom:0}.save-bar .form-error{flex:1}.table-wrap{background:var(--block);border-radius:var(--r-card);padding:0;overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:.5px solid var(--rule);vertical-align:middle;padding:12px 14px}.table tr:last-child td{border-bottom:none}.table th{font-size:var(--fs-label);color:var(--muted);background:0 0;font-weight:600}.table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.pending-row{border-left:6px solid var(--accent);align-items:center;gap:16px;display:flex}.pending-row p{margin:2px 0}.testing-cell{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.pref-row{min-height:var(--tap);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}:root{--ease:cubic-bezier(.32, .72, 0, 1);--spring:cubic-bezier(.34, 1.56, .64, 1)}.option,.tile,.list-row,.reading-row,.tab,.nav-link,.segmented button{transition:background-color .2s ease, box-shadow .2s ease, color .2s ease, transform .15s var(--ease)}.lesson-footer{transition:background-color .3s var(--ease), border-radius .3s var(--ease), color .3s ease}@media (prefers-reduced-motion:no-preference){.page,.home,.lesson-body{animation:rise-in .4s var(--ease) backwards}.home-head{animation:rise-in .45s var(--ease) backwards}.next-card{animation:rise-in .45s var(--ease) 60ms backwards}.next-progress>div{transform-origin:0;animation:grow-x .9s var(--ease) .3s backwards}.chapter-section{animation:rise-in .45s var(--ease) backwards;animation-delay:calc(.12s + min(var(--i,0), 6) * 60ms)}.stop-node.current{animation:1.6s ease-out .8s 3 node-pulse}.option:not(:disabled):active,.tile:not(:disabled):active,.list-row:not(:disabled):active,.reading-row:active{transform:scale(.98)}.question-in .prompt,.question-in .penalty-badge,.question-in .option{animation:rise-in .4s var(--ease) backwards}.question-in .option:first-child{animation-delay:50ms}.question-in .option:nth-child(2){animation-delay:.1s}.question-in .option:nth-child(3){animation-delay:.15s}.question-in .option:nth-child(4){animation-delay:.2s}.question-in .option:nth-child(n+5){animation-delay:.25s}.question-in .answer-line,.question-in .tile-bank{animation:rise-in .4s var(--ease) 80ms backwards}.option.selected .option-key{animation:pop .3s var(--spring)}.answer-line .tile{animation:pop .25s var(--spring)}.lesson-footer.correct,.lesson-footer.wrong{animation:sheet-up .35s var(--ease)}.lesson-footer.correct .feedback,.lesson-footer.wrong .feedback{animation:rise-in .35s var(--ease) 80ms backwards}.lesson:has(.lesson-footer.correct) .option.selected{animation:pop .35s var(--spring)}.lesson:has(.lesson-footer.wrong) .option.selected{animation:.4s shake}.lesson:has(.lesson-footer.wrong) .answer-line{animation:.4s shake}.heart.lost{animation:heart-lose .5s var(--ease)}.progress-fill{transition:width .55s var(--spring)}.end-inner>*{animation:rise-in .45s var(--ease) backwards}.end-inner>:nth-child(2){animation-delay:.3s}.end-inner>:nth-child(3){animation-delay:.38s}.end-inner>:nth-child(4){animation-delay:.46s}.end-inner>:nth-child(5){animation-delay:.54s}.end-inner>:nth-child(n+6){animation-delay:.62s}.end-inner>.postmark{animation:none}.fail-mark{animation:pop .45s var(--spring) backwards}.cup-steam path{animation:2.4s ease-in-out infinite steam}.cup-steam path:nth-child(2){animation-delay:.8s}.cup-steam path:nth-child(3){animation-delay:1.6s}.tab.active .icon{animation:pop .3s var(--spring)}.overlay{animation:.2s backwards fade-in}.dialog{animation:dialog-in .3s var(--spring) backwards}.notice,.form-error,.form-ok{animation:rise-in .3s var(--ease) backwards}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}}@keyframes grow-x{0%{transform:scaleX(0)}}@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes sheet-up{0%{transform:translateY(24px)}to{transform:none}}@keyframes shake{0%,to{transform:none}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}@keyframes heart-lose{0%{color:#ff3b30;transform:scale(1.3)}to{transform:scale(1)}}@keyframes node-pulse{0%{box-shadow:inset 0 0 0 2px var(--tint), 0 0 0 0 color-mix(in srgb, var(--tint) 45%, transparent)}to{box-shadow:inset 0 0 0 2px var(--tint), 0 0 0 10px color-mix(in srgb, var(--tint) 0%, transparent)}}@keyframes steam{0%{opacity:0;transform:translateY(3px)}40%{opacity:.9}to{opacity:0;transform:translateY(-4px)}}@keyframes dialog-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@media (prefers-reduced-transparency:reduce){.topbar,.tabbar,.lesson-footer,.save-bar{background:var(--block);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (width<=640px){:root{--fs-title:28px}.topbar-inner{gap:8px;min-height:52px}.nav,.stat{display:none}.tabbar{z-index:20;background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--rule);padding:4px 4px env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tab{min-height:50px;color:var(--muted);letter-spacing:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:500;text-decoration:none;display:flex}.tab.active{color:var(--tint)}.page,.home{padding-bottom:calc(110px + env(safe-area-inset-bottom))}.save-bar{bottom:calc(58px + env(safe-area-inset-bottom))}.btn.small,.icon-btn,.segmented button,.input.compact,.link-btn{min-height:var(--tap)}.icon-btn{width:var(--tap);height:var(--tap)}.close{width:var(--tap);height:var(--tap);margin:0}.card,.test-head{padding:18px 16px}.chapter-row,.pending-row,.footer-inner{flex-direction:column;align-items:stretch}.footer-inner .btn{width:100%}.pdf-frame{display:none}}
