@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/f4b234103afdc32a-s.197tvtifbphtu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/0b60d5f95c5f3f76-s.2e115y8-hourl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/8056169c9d560660-s.p.41rroleoq1br7.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/f4b234103afdc32a-s.197tvtifbphtu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/0b60d5f95c5f3f76-s.2e115y8-hourl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/8056169c9d560660-s.p.41rroleoq1br7.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(../media/f4b234103afdc32a-s.197tvtifbphtu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(../media/0b60d5f95c5f3f76-s.2e115y8-hourl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(../media/8056169c9d560660-s.p.41rroleoq1br7.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Fallback;src:local(Arial);ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.0%;size-adjust:105.43%}.c1Kawa_className{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.c1Kawa_variable{--ff-display:"Bricolage Grotesque", "Bricolage Grotesque Fallback"}
@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/62f37606a5bd6f6f-s.0klc_mi0-5f4_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/4cf231d25563e07b-s.p.2874ccu1_u7jf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/62f37606a5bd6f6f-s.0klc_mi0-5f4_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/4cf231d25563e07b-s.p.2874ccu1_u7jf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/62f37606a5bd6f6f-s.0klc_mi0-5f4_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/4cf231d25563e07b-s.p.2874ccu1_u7jf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/62f37606a5bd6f6f-s.0klc_mi0-5f4_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/4cf231d25563e07b-s.p.2874ccu1_u7jf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.jYrUrW_className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.jYrUrW_variable{--ff-text:"Instrument Sans", "Instrument Sans Fallback"}
:root{--c-ink-900:#0f1f38;--c-ink-800:#17294a;--c-ink-700:#24395f;--c-paper:#f2f4f7;--c-highlight:#fc3;--c-highlight-soft:#fff1c2;--c-done:#17855a;--c-danger:#c2333d;--c-warning:#9a5a00;--bg:var(--c-paper);--bg-sunken:#e8ecf1;--surface:#fff;--surface-2:#f6f8fa;--surface-ink:var(--c-ink-900);--on-ink:#f4f6fa;--on-ink-muted:#b4bfd1;--text:#142238;--text-muted:#56637a;--text-subtle:#5f6b7f;--border:#dbe1e8;--border-strong:#c3ccd7;--accent:var(--c-ink-900);--accent-hover:var(--c-ink-700);--on-accent:#fff;--link:#1f4fbf;--signal:var(--c-highlight);--signal-soft:var(--c-highlight-soft);--on-signal:#1c1600;--done:var(--c-done);--on-done:#fff;--done-soft:#e2f3eb;--danger:var(--c-danger);--danger-soft:#fbe7e8;--warning:var(--c-warning);--warning-soft:#fdf0dc;--info-soft:#e6eefb;--focus:#1f4fbf;--font-display:var(--ff-display,"Bricolage Grotesque"), ui-sans-serif, system-ui, sans-serif;--font-text:var(--ff-text,"Instrument Sans"), ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-xs:.8125rem;--fs-sm:.9375rem;--fs-md:1.0625rem;--fs-lg:1.25rem;--fs-xl:1.5625rem;--fs-2xl:clamp(1.75rem, 1.2rem + 1.8vw, 2.25rem);--fs-3xl:clamp(2.1rem, 1.3rem + 3vw, 3.25rem);--fs-4xl:clamp(2.5rem, 1.4rem + 4.4vw, 4.5rem);--lh-tight:1.08;--lh-snug:1.25;--lh-text:1.6;--tracking-display:-.025em;--measure:68ch;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--sp-20:5rem;--gutter:clamp(1rem, .6rem + 2vw, 2.5rem);--page-max:1240px;--read-max:760px;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:22px;--radius-pill:999px;--shadow-1:0 1px 2px #0f1f380f;--shadow-2:0 2px 4px #0f1f380d, 0 10px 24px -8px #0f1f3824;--shadow-3:0 4px 10px #0f1f380f, 0 24px 48px -16px #0f1f3842;--dur-fast:.14s;--dur-base:.24s;--dur-slow:.36s;--dur-reveal:.56s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--stagger:60ms;--z-base:1;--z-sticky:20;--z-nav:30;--z-overlay:40;--z-drawer:50;--z-toast:60;--topbar-h:64px;--tabbar-h:64px;--tap:44px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1424;--bg-sunken:#08101d;--surface:#111d31;--surface-2:#16243c;--surface-ink:#16264a;--on-ink:#f4f6fa;--on-ink-muted:#a9b6cc;--text:#e8edf5;--text-muted:#a3afc2;--text-subtle:#8593a9;--border:#22324d;--border-strong:#31456a;--accent:var(--c-highlight);--accent-hover:#ffd75c;--on-accent:#1c1600;--link:#8fb3ff;--signal:#ffcf40;--signal-soft:#ffcc3324;--done:#3fc48a;--on-done:#04261a;--done-soft:#3fc48a24;--danger:#ff7a83;--danger-soft:#ff7a831f;--warning:#f2b45a;--warning-soft:#f2b45a1f;--info-soft:#8fb3ff1f;--focus:#8fb3ff;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 2px 4px #00000040, 0 12px 28px -10px #00000073;--shadow-3:0 6px 14px #0000004d, 0 28px 56px -18px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0b1424;--bg-sunken:#08101d;--surface:#111d31;--surface-2:#16243c;--surface-ink:#16264a;--on-ink:#f4f6fa;--on-ink-muted:#a9b6cc;--text:#e8edf5;--text-muted:#a3afc2;--text-subtle:#8593a9;--border:#22324d;--border-strong:#31456a;--accent:var(--c-highlight);--accent-hover:#ffd75c;--on-accent:#1c1600;--link:#8fb3ff;--signal:#ffcf40;--signal-soft:#ffcc3324;--done:#3fc48a;--on-done:#04261a;--done-soft:#3fc48a24;--danger:#ff7a83;--danger-soft:#ff7a831f;--warning:#f2b45a;--warning-soft:#f2b45a1f;--info-soft:#8fb3ff1f;--focus:#8fb3ff;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 2px 4px #00000040, 0 12px 28px -10px #00000073;--shadow-3:0 6px 14px #0000004d, 0 28px 56px -18px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--dur-fast:1ms;--dur-base:1ms;--dur-slow:1ms;--dur-reveal:1ms;--stagger:0s}}
*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:var(--fs-md);line-height:var(--lh-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-variant-numeric:tabular-nums}img,video,svg{max-width:100%;display:block}a{color:var(--link);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:var(--tracking-display);font-weight:700;line-height:var(--lh-snug);margin:0 0 var(--sp-3);text-wrap:balance}h1{font-size:var(--fs-3xl);line-height:var(--lh-tight)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}h4{font-size:var(--fs-lg)}p{margin:0 0 var(--sp-4);text-wrap:pretty}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:var(--radius-xs)}::selection{background:var(--signal);color:var(--on-signal)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--sp-4);z-index:var(--z-toast);background:var(--accent);color:var(--on-accent);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-sm);position:absolute;top:-100px}.skip-link:focus{top:var(--sp-3)}.container{width:100%;max-width:var(--page-max);padding:var(--sp-8) var(--gutter) var(--sp-16);margin:0 auto}.narrow{max-width:calc(var(--read-max) + 2 * var(--gutter))}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.stack-lg{gap:var(--sp-12);flex-direction:column;display:flex}.row{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.spread{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.grid{gap:var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));display:grid}.grid-stats{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));display:grid}.muted{color:var(--text-muted)}.small{font-size:var(--fs-sm)}.mono{font-family:var(--font-mono);font-size:.88em}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap;display:flex}.page-head h1{font-size:var(--fs-2xl);margin-bottom:var(--sp-1)}.page-head p{color:var(--text-muted);margin:0}.section-title{font-size:var(--fs-xl);margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-5);box-shadow:var(--shadow-1)}.card-link{color:inherit;gap:var(--sp-2);flex-direction:column;height:100%;text-decoration:none;display:flex}.card-link:hover{text-decoration:none}.stat{color:inherit;flex-direction:column;gap:2px;text-decoration:none;display:flex}.stat:hover{border-color:var(--border-strong);text-decoration:none}.stat strong{font-family:var(--font-display);font-size:var(--fs-2xl);line-height:1.1}.cover{aspect-ratio:16/9;border-radius:var(--radius-sm);background:var(--surface-2);object-fit:cover;width:100%;color:var(--text-muted);font-size:var(--fs-sm);place-items:center;display:grid}.alert,.banner{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);background:var(--info-soft);color:var(--text);font-size:var(--fs-sm);border:1px solid #0000;align-items:flex-start;display:flex}.alert svg{flex:none;margin-top:2px}.alert.error,.banner.error{background:var(--danger-soft);color:var(--danger)}.alert.ok,.banner.ok{background:var(--done-soft);color:var(--done)}.alert.warn,.banner.warn{background:var(--warning-soft);color:var(--warning)}.badge{white-space:nowrap;font-size:var(--fs-xs);border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);align-items:center;gap:.3em;padding:.38em .7em;font-weight:600;line-height:1;display:inline-flex}.badge svg{width:12px;height:12px}.badge.published,.badge.done{background:var(--done-soft);color:var(--done);border-color:#0000}.badge.draft{background:var(--warning-soft);color:var(--warning);border-color:#0000}.badge.archived{color:var(--text-subtle)}.badge.private{background:var(--info-soft);color:var(--link);border-color:#0000}.badge.demo{color:var(--danger);background:0 0;border-color:currentColor}.badge.signal{background:var(--signal);color:var(--on-signal);border-color:#0000}.badge.on-ink{color:var(--on-ink);background:#ffffff1a;border-color:#ffffff29}.chip{align-items:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-4);border-radius:var(--radius-pill);font:600 var(--fs-sm)/1 var(--font-text);color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);display:inline-flex}.chip:hover{border-color:var(--border-strong)}.chip:active{transform:scale(.96)}.chip[aria-pressed=true]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.chip .count{opacity:.7;font-weight:500}.btn{justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-5);border-radius:var(--radius-sm);font:600 var(--fs-sm)/1 var(--font-text);letter-spacing:.005em;white-space:nowrap;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), color var(--dur-fast);text-decoration:none;display:inline-flex;position:relative}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:active{transform:translateY(1px)scale(.97)}.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.signal{background:var(--signal);color:var(--on-signal);border-color:var(--signal)}.btn.signal:hover{filter:brightness(1.04)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.danger{color:var(--danger)}.btn.lg{min-height:52px;padding:0 var(--sp-6);font-size:var(--fs-md);border-radius:var(--radius-md)}.btn.sm{min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-xs)}.btn.block{width:100%}.btn[disabled],.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn[aria-busy=true]{color:#0000!important}.btn[aria-busy=true]:after{content:"";border:2px solid;border-color:var(--on-accent) transparent var(--on-accent) var(--on-accent);border-radius:50%;width:18px;height:18px;animation:.62s linear infinite spin;position:absolute}.btn:not(.primary)[aria-busy=true]:after{border-color:var(--text) transparent var(--text) var(--text)}.icon-btn{width:var(--tap);height:var(--tap);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #0000;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2)}.icon-btn:active{transform:scale(.94)}.icon-btn.outlined{border-color:var(--border);background:var(--surface)}.linkbtn{font:inherit;color:var(--link);cursor:pointer;background:0 0;border:0;padding:0}.linkbtn:hover{text-decoration:underline}.progress{border-radius:var(--radius-pill);background:var(--bg-sunken);height:8px;position:relative;overflow:hidden}.progress>span{height:100%;width:var(--value,0%);border-radius:inherit;background:var(--signal);transition:width var(--dur-slow) var(--ease-spring);animation:progress-in var(--dur-reveal) var(--ease-out) both;display:block}.progress.done>span{background:var(--done)}.progress.flash>span{animation:progress-in var(--dur-reveal) var(--ease-out) both, flash .9s var(--ease-out) 1}.progress.thin{height:4px}.progress.on-ink{background:#ffffff24}.progress-meta{justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted);margin-top:var(--sp-2);display:flex}.avatar{background:var(--signal);width:36px;height:36px;color:var(--on-signal);font:700 var(--fs-xs)/1 var(--font-display);letter-spacing:.02em;border-radius:50%;flex:none;place-items:center;display:inline-grid}.avatar.lg{width:48px;height:48px;font-size:var(--fs-sm)}label{gap:var(--sp-2);font-size:var(--fs-sm);flex-direction:column;font-weight:600;display:flex}.check{align-items:center;gap:var(--sp-2);flex-direction:row;font-weight:500}input,select,textarea{font:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-height:var(--tap);width:100%;transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);padding:.6rem .8rem}input:hover,select:hover,textarea:hover{border-color:var(--text-subtle)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 28%, transparent);outline:none}input[aria-invalid=true]{border-color:var(--danger)}input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--c-ink-900)}textarea{resize:vertical;min-height:120px}.field-error{color:var(--danger);font-size:var(--fs-xs);font-weight:500}.form-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));display:grid}.form-grid .full{grid-column:1/-1}.input-icon{position:relative}.input-icon>svg{color:var(--text-subtle);pointer-events:none;position:absolute;top:50%;left:14px;translate:0 -50%}.input-icon>input{padding-left:44px}details>summary{cursor:pointer}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}th,td{text-align:left;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);vertical-align:middle}th{font-size:var(--fs-xs);color:var(--text-muted);background:var(--surface-2);font-weight:600}tr:last-child td{border-bottom:0}tbody tr:hover td{background:color-mix(in srgb, var(--surface-2) 60%, transparent)}.skeleton{border-radius:var(--radius-sm);background:var(--bg-sunken);animation:fade-in var(--dur-base) var(--ease-out) .14s backwards;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface) 55%, transparent), transparent);animation:1.4s ease-in-out .14s infinite shimmer;position:absolute;inset:0;translate:-100%}.empty{justify-items:start;gap:var(--sp-3);padding:var(--sp-10) var(--sp-8);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface);display:grid}.empty h3{font-size:var(--fs-lg);margin:0}.empty p{color:var(--text-muted);max-width:52ch;margin:0}.empty-mark{border-radius:var(--radius-md);background:var(--signal-soft);width:48px;height:48px;color:var(--text);place-items:center;display:grid}@keyframes spin{to{rotate:360deg}}@keyframes fade-in{0%{opacity:0}}@keyframes rise{0%{opacity:0;translate:0 14px}}@keyframes progress-in{0%{width:0}}@keyframes flash{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--done) 60%, transparent)}to{box-shadow:0 0 0 10px #0000}}@keyframes shimmer{to{translate:100%}}@keyframes pop{0%{opacity:0;scale:.6}70%{opacity:1;scale:1.08}to{scale:1}}@keyframes draw{0%{stroke-dashoffset:var(--len,30)}to{stroke-dashoffset:0}}@keyframes sheet-up{0%{translate:0 100%}}@keyframes slide-in-right{0%{opacity:0;translate:24px}}.reveal{animation:rise var(--dur-reveal) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--stagger))}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.skeleton:after{display:none}}
.shell{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:var(--z-nav);height:var(--topbar-h);align-items:center;gap:var(--sp-6);padding:0 var(--gutter);background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--sp-2);color:var(--text);font:800 1.125rem/1 var(--font-display);letter-spacing:-.03em;white-space:nowrap;text-decoration:none;display:inline-flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--c-ink-900);width:30px;height:30px;color:var(--c-highlight);border-radius:9px;place-items:center;display:inline-grid}.brand-sub{color:var(--text-muted);font-weight:500}.mainnav{gap:var(--sp-1);flex:1;display:flex}.mainnav a{align-items:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-3);border-radius:var(--radius-sm);color:var(--text-muted);font-weight:600;font-size:var(--fs-sm);transition:color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);text-decoration:none;display:inline-flex;position:relative}.mainnav a:hover{color:var(--text);background:var(--surface-2)}.mainnav a[aria-current=page]{color:var(--text)}.mainnav a[aria-current=page]:after{content:"";left:var(--sp-3);right:var(--sp-3);background:var(--signal);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-12px}.topbar-end{align-items:center;gap:var(--sp-2);margin-left:auto;display:flex}.menu{position:relative}.menu-trigger{align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-2) 0 var(--sp-1);border-radius:var(--radius-pill);color:var(--text);font:600 var(--fs-sm)/1 var(--font-text);cursor:pointer;background:0 0;border:1px solid #0000;display:inline-flex}.menu-trigger:hover{background:var(--surface-2)}.menu-trigger svg{color:var(--text-muted);transition:rotate var(--dur-base) var(--ease-out)}.menu-trigger[aria-expanded=true] svg{rotate:180deg}.menu-panel{z-index:var(--z-overlay);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-width:260px;box-shadow:var(--shadow-3);padding:var(--sp-2);transform-origin:100% 0;animation:menu-in var(--dur-base) var(--ease-out);position:absolute;top:calc(100% + 8px);right:0}@keyframes menu-in{0%{opacity:0;translate:0 -4px;scale:.96}}.menu-head{gap:var(--sp-3);padding:var(--sp-3);border-bottom:1px solid var(--border);margin-bottom:var(--sp-2);align-items:center;display:flex}.menu-head strong{font-size:var(--fs-sm);display:block}.menu-head span{font-size:var(--fs-xs);color:var(--text-muted);word-break:break-all;display:block}.menu-item{align-items:center;gap:var(--sp-3);width:100%;min-height:var(--tap);padding:0 var(--sp-3);border-radius:var(--radius-sm);color:var(--text);font:500 var(--fs-sm)/1 var(--font-text);cursor:pointer;text-align:left;background:0 0;border:0;text-decoration:none;display:flex}.menu-item:hover,.menu-item:focus-visible{background:var(--surface-2);text-decoration:none}.menu-item svg{color:var(--text-muted)}.tabbar{display:none}@media (max-width:767px){.mainnav{display:none}.topbar{gap:var(--sp-3)}.tabbar{z-index:var(--z-nav);grid-template-columns:repeat(var(--tabs,3), 1fr);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(12px);border-top:1px solid var(--border);display:grid;position:fixed;inset:auto 0 0}.tabbar a,.tabbar button{color:var(--text-muted);font:600 .72rem/1 var(--font-text);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:4px;text-decoration:none;display:flex;position:relative}.tabbar a[aria-current=page]{color:var(--text)}.tabbar a[aria-current=page]:before{content:"";background:var(--signal);border-radius:0 0 3px 3px;height:3px;position:absolute;top:0;left:30%;right:30%}.shell.has-tabbar main{padding-bottom:calc(var(--tabbar-h) + var(--sp-8))}}.login{background:var(--surface);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:100dvh;display:grid}.login-art{background:var(--c-ink-900);color:var(--on-ink);flex-direction:column;justify-content:space-between;padding:clamp(2rem,4vw,4rem);display:flex;position:relative;overflow:hidden}.login-art .brand{color:var(--on-ink)}.login-art .brand-sub{color:var(--on-ink-muted)}.login-lines{pointer-events:none;opacity:.9;width:46%;height:100%;position:absolute;top:0;bottom:0;right:0}.login-art .brand-mark{background:#ffffff14}.login-claim{z-index:1;font:800 var(--fs-4xl)/.98 var(--font-display);letter-spacing:-.04em;max-width:11ch;margin:0;position:relative}.login-claim mark{color:inherit;background:linear-gradient(transparent 58%, color-mix(in srgb, var(--c-highlight) 85%, transparent) 58% 92%, transparent 92%);animation:mark-in .9s var(--ease-out) .3s forwards;background-repeat:no-repeat;background-size:0% 100%}@keyframes mark-in{to{background-size:100% 100%}}.login-foot{color:var(--on-ink-muted);font-size:var(--fs-sm);max-width:40ch;margin:0;position:relative}.login-form-wrap{padding:clamp(1.5rem, 4vw, 4rem) var(--gutter);place-items:center;display:grid}.login-form{gap:var(--sp-5);flex-direction:column;width:100%;max-width:400px;display:flex}.login-form h1{font-size:var(--fs-2xl);margin:0}.login-form .lede{color:var(--text-muted);margin:0}.password-field{position:relative}.password-field input{padding-right:52px}.password-field .icon-btn{position:absolute;top:50%;right:2px;translate:0 -50%}.login-help{font-size:var(--fs-sm);justify-content:space-between;align-items:center;display:flex}@media (max-width:899px){.login{grid-template-rows:auto 1fr;grid-template-columns:1fr}.login-art{min-height:0;padding:var(--sp-6) var(--gutter) var(--sp-8);gap:var(--sp-8)}.login-claim{font-size:var(--fs-3xl)}.login-foot{display:none}}.greeting{margin-bottom:var(--sp-8)}.greeting h1{font-size:var(--fs-3xl);margin:0}.greeting p{color:var(--text-muted);margin:var(--sp-2) 0 0;font-size:var(--fs-lg)}.resume{isolation:isolate;background:var(--surface-ink);min-height:320px;color:var(--on-ink);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);display:grid;position:relative;overflow:hidden}.resume-body{gap:var(--sp-4);flex-direction:column;justify-content:center;padding:clamp(1.5rem,3vw,3rem);display:flex}.resume-kicker{align-items:center;gap:var(--sp-2);color:var(--c-highlight);font-weight:600;font-size:var(--fs-sm);margin:0;display:flex}.resume-kicker .live{background:var(--c-highlight);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #ffcc3338}.resume h2{font-size:var(--fs-3xl);color:var(--on-ink);margin:0;line-height:1.02}.resume-where{color:var(--on-ink-muted);font-size:var(--fs-lg);margin:0}.resume-where strong{color:var(--on-ink);font-weight:600}.resume-progress{max-width:420px}.resume-progress .progress-meta{color:var(--on-ink-muted)}.resume-media{min-height:220px;position:relative}.resume-media img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.resume-media:after{content:"";background:linear-gradient(90deg, var(--surface-ink) 0%, color-mix(in srgb, var(--surface-ink) 30%, transparent) 40%, transparent 70%);position:absolute;inset:0}.resume .btn.signal{align-self:flex-start}@media (max-width:767px){.resume{grid-template-columns:1fr}.resume-media{order:-1;min-height:160px}.resume-media:after{background:linear-gradient(0deg, var(--surface-ink) 0%, transparent 70%)}.resume .btn.signal{align-self:stretch}}.stats-strip{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));gap:0;display:grid;overflow:hidden}.stats-strip>div{padding:var(--sp-5);border-left:1px solid var(--border)}.stats-strip>div:first-child{border-left:0}.stats-strip dt{font-size:var(--fs-sm);color:var(--text-muted)}.stats-strip dd{margin:var(--sp-1) 0 0;font:700 var(--fs-2xl)/1.1 var(--font-display);letter-spacing:-.02em}.stats-strip dd small{font:500 var(--fs-sm)/1 var(--font-text);color:var(--text-muted);letter-spacing:0}@media (max-width:767px){.stats-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-strip>div:nth-child(3){border-left:0}.stats-strip>div:nth-child(n+3){border-top:1px solid var(--border)}}.ccard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);height:100%;box-shadow:var(--shadow-1);color:var(--text);transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.ccard:hover,.ccard:focus-visible{box-shadow:var(--shadow-3);border-color:var(--border-strong);text-decoration:none;transform:translateY(-3px)}.ccard:active{transform:translateY(-1px)scale(.99)}.ccard:focus-visible{outline-offset:3px;border-radius:var(--radius-lg)}.ccard-cover{aspect-ratio:16/9;background:var(--surface-ink);position:relative;overflow:hidden}.ccard-cover img{object-fit:cover;width:100%;height:100%;transition:scale var(--dur-slow) var(--ease-out)}.ccard:hover .ccard-cover img{scale:1.04}.ccard-flags{top:var(--sp-3);left:var(--sp-3);right:var(--sp-3);gap:var(--sp-2);flex-wrap:wrap;display:flex;position:absolute}.ccard-flags .badge{background:color-mix(in srgb, var(--surface) 92%, transparent);color:var(--text);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-color:#0000}.ccard-flags .badge.done{background:var(--done);color:var(--on-done)}.ccard-body{gap:var(--sp-3);padding:var(--sp-5);flex-direction:column;flex:1;display:flex}.ccard-cat{font-size:var(--fs-sm);color:var(--text-muted);margin:0;font-weight:600}.ccard h3{font-size:var(--fs-lg);line-height:var(--lh-snug);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.ccard-meta{gap:var(--sp-4);color:var(--text-muted);font-size:var(--fs-sm);margin:0;display:flex}.ccard-meta span{align-items:center;gap:6px;display:inline-flex}.ccard-foot{padding-top:var(--sp-3);gap:var(--sp-3);flex-direction:column;margin-top:auto;display:flex}.ccard-next{justify-content:space-between;align-items:center;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);font-weight:600;font-size:var(--fs-sm);display:flex}.ccard-next .next-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ccard-next .next-label small{color:var(--text-muted);font-weight:500;font-size:var(--fs-xs);margin-bottom:2px;display:block}.ccard-go{background:var(--surface-2);width:36px;height:36px;color:var(--text);transition:background var(--dur-base) var(--ease-out), translate var(--dur-base) var(--ease-out);border-radius:50%;flex:none;place-items:center;display:grid}.ccard:hover .ccard-go{background:var(--signal);color:var(--on-signal);translate:3px}.ccard.is-done .ccard-go{background:var(--done-soft);color:var(--done)}.tcover{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-5);color:var(--on-ink);background:radial-gradient(120% 90% at 100% 0%, color-mix(in srgb, var(--hue,#2b4a86) 70%, transparent), transparent 60%), var(--c-ink-900);flex-direction:column;display:flex;position:absolute;inset:0}.tcover-word{font:800 clamp(2.2rem, 5vw, 3rem)/.9 var(--font-display);letter-spacing:-.05em;opacity:.95}.tcover-rule{background:var(--c-highlight);border-radius:3px;width:56px;height:6px}.filters{gap:var(--sp-4);margin-bottom:var(--sp-8);flex-direction:column;display:flex}.filters-row{gap:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.filters .input-icon{flex:280px;max-width:420px}.chips{gap:var(--sp-2);scrollbar-width:none;padding-bottom:2px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips .chip{flex:none}.segmented{border-radius:var(--radius-pill);background:var(--bg-sunken);gap:2px;padding:4px;display:inline-flex}.segmented button{min-height:36px;padding:0 var(--sp-4);border-radius:var(--radius-pill);font:600 var(--fs-sm)/1 var(--font-text);color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);background:0 0;border:0}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.result-count{color:var(--text-muted);font-size:var(--fs-sm);margin:0}@media (max-width:767px){.segmented{width:100%;overflow-x:auto}.filters .input-icon{max-width:none}}.course-hero{margin-bottom:var(--sp-12);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,4rem);display:grid}.course-hero h1{font-size:var(--fs-4xl);margin:var(--sp-3) 0 var(--sp-4)}.course-hero h1.long{font-size:var(--fs-3xl)}.course-hero .lede{font-size:var(--fs-lg);color:var(--text-muted);max-width:56ch}.course-hero-media{aspect-ratio:4/3;border-radius:var(--radius-lg);box-shadow:var(--shadow-3);background:var(--surface-ink);position:relative;overflow:hidden}.course-hero-media img{object-fit:cover;width:100%;height:100%}.course-hero-media .tcover-word{font-size:clamp(3rem,7vw,5.5rem)}.course-actions{gap:var(--sp-3);margin-top:var(--sp-6);flex-wrap:wrap;align-items:center;display:flex}.course-progress{align-items:center;gap:var(--sp-4);max-width:460px;display:flex}.course-progress .progress{flex:1}.course-progress strong{font:700 var(--fs-xl)/1 var(--font-display)}.crumbs{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-muted);margin:0 0 var(--sp-6);flex-wrap:wrap;padding:0;list-style:none;display:flex}.crumbs a{color:var(--text-muted);font-weight:500;text-decoration:none}.crumbs a:hover{color:var(--text);text-decoration:underline}.crumbs li+li:before{content:"/";margin-right:var(--sp-2);color:var(--border-strong)}@media (max-width:899px){.course-hero{grid-template-columns:1fr}.course-hero-media{aspect-ratio:16/9;order:-1}.course-actions .btn{flex:auto}}.finished{gap:var(--sp-5);padding:var(--sp-6);border-radius:var(--radius-lg);background:var(--done-soft);margin-bottom:var(--sp-10);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.finished h2{font-size:var(--fs-xl);margin:0}.finished p{margin:var(--sp-1) 0 0;color:var(--text-muted)}.finished-mark{background:var(--done);width:56px;height:56px;color:var(--on-done);animation:pop var(--dur-slow) var(--ease-spring) both;border-radius:50%;place-items:center;display:grid}@media (max-width:767px){.finished{grid-template-columns:auto 1fr}.finished .row{grid-column:1/-1}}.map{gap:var(--sp-8);flex-direction:column;display:flex}.map-module{gap:var(--sp-4);grid-template-columns:72px minmax(0,1fr);display:grid}.map-num{font:800 var(--fs-3xl)/1 var(--font-display);letter-spacing:-.05em;color:var(--text-subtle);font-variant-numeric:tabular-nums;padding-top:2px}.map-module.is-current .map-num{color:var(--text)}.map-module.is-done .map-num{color:var(--done)}.map-head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;display:flex}.map-head h3{font-size:var(--fs-xl);margin:0}.map-head .count{font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap}.map-desc{color:var(--text-muted);margin:var(--sp-1) 0 0;font-size:var(--fs-sm)}.thread{margin:var(--sp-4) 0 0;padding:0;list-style:none;position:relative}.thread:before{content:"";background:var(--border);border-radius:1px;width:2px;position:absolute;top:22px;bottom:22px;left:15px}.thread li{position:relative}.thread a{gap:var(--sp-3);min-height:52px;padding:var(--sp-2) var(--sp-3) var(--sp-2) 0;border-radius:var(--radius-sm);color:var(--text);transition:background var(--dur-fast) var(--ease-out);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;text-decoration:none;display:grid}.thread a:hover{background:var(--surface);text-decoration:none}.thread a:hover .node{scale:1.08}.node{z-index:1;background:var(--bg);border:2px solid var(--border-strong);width:32px;height:32px;color:var(--text-subtle);transition:scale var(--dur-base) var(--ease-spring);border-radius:50%;place-items:center;display:grid;position:relative}.node.done{background:var(--done);border-color:var(--done);color:var(--on-done)}.node.current{background:var(--signal);border-color:var(--signal);color:var(--on-signal);box-shadow:0 0 0 5px color-mix(in srgb, var(--signal) 30%, transparent)}.node.started{border-color:var(--signal)}.thread .title{min-width:0}.thread .title strong{font-weight:600;display:block}.thread .title small{color:var(--text-muted);font-size:var(--fs-xs);display:block}.thread .here{font-size:var(--fs-xs);background:var(--signal);color:var(--on-signal);border-radius:var(--radius-pill);padding:4px 8px;font-weight:700}.thread .mins{font-size:var(--fs-xs);color:var(--text-subtle);white-space:nowrap}.map-toggle{align-items:center;gap:var(--sp-1);padding:var(--sp-1) 0;color:var(--text-muted);font:600 var(--fs-xs)/1 var(--font-text);cursor:pointer;background:0 0;border:0;display:inline-flex}.map-toggle svg{transition:rotate var(--dur-base) var(--ease-out)}.map-toggle[aria-expanded=false] svg{rotate:-90deg}.collapse{transition:grid-template-rows var(--dur-base) var(--ease-out);grid-template-rows:1fr;display:grid}.collapse[data-open=false]{grid-template-rows:0fr}.collapse>div{overflow:hidden}@media (max-width:599px){.map-module{gap:var(--sp-1);grid-template-columns:1fr}.map-num{font-size:var(--fs-xl)}}.lesson-shell{min-height:calc(100dvh - var(--topbar-h));grid-template-columns:minmax(0,1fr);display:grid}.lesson-shell.with-rail{grid-template-columns:320px minmax(0,1fr)}.lesson-rail{top:var(--topbar-h);height:calc(100dvh - var(--topbar-h));border-right:1px solid var(--border);background:var(--surface);padding:var(--sp-6) var(--sp-4) var(--sp-10);position:sticky;overflow-y:auto}.lesson-main{min-width:0}.lesson-top{top:var(--topbar-h);z-index:var(--z-sticky);align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--gutter);background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border);min-height:56px;display:flex;position:sticky}.lesson-top .where{min-width:0;font-size:var(--fs-sm);flex:1}.lesson-top .where a{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;text-decoration:none;display:block;overflow:hidden}.lesson-top .where a:hover{text-decoration:underline}.lesson-top .where span{color:var(--text-muted);font-size:var(--fs-xs)}.lesson-top .progress{flex:none;width:140px}.lesson-top .pct{font-size:var(--fs-xs);color:var(--text-muted);text-align:right;width:3.5ch;font-weight:600}@media (max-width:599px){.lesson-top .progress,.lesson-top .pct{display:none}}.lesson-page{width:100%;max-width:980px;padding:var(--sp-10) var(--gutter) var(--sp-16);margin:0 auto}.lesson-header{max-width:var(--read-max);margin:0 auto var(--sp-8)}.lesson-header .module-of{color:var(--text-muted);font-weight:600;font-size:var(--fs-sm);margin:0 0 var(--sp-2)}.lesson-header h1{font-size:var(--fs-3xl);margin:0}.lesson-header .summary{font-size:var(--fs-lg);color:var(--text-muted);margin:var(--sp-4) 0 0}.lesson-body{gap:var(--sp-6);flex-direction:column;display:flex}.lesson-body>*{width:100%;max-width:var(--read-max);margin-left:auto;margin-right:auto}.lesson-body>.wide{max-width:100%}.lesson-body h2{font-size:var(--fs-2xl);margin:var(--sp-6) auto 0}.lesson-body h3{font-size:var(--fs-xl);margin:var(--sp-4) auto 0}.lesson-body h4{font-size:var(--fs-lg);margin:var(--sp-2) auto 0}.block-text{margin:0 auto;font-size:1.125rem;line-height:1.7}.block-text>:last-child,.callout-text>:last-child{margin-bottom:0}.block-text p{margin:0 0 1em}.block-text ul,.block-text ol,.callout-text ul,.callout-text ol{margin:0 0 1em;padding-left:1.4em}.block-text li{margin-bottom:var(--sp-2)}.callout-text p{margin:0 0 .6em}.block-list{margin:0 auto;padding-left:1.4em;font-size:1.125rem;line-height:1.7}.block-list li{margin-bottom:var(--sp-2);padding-left:.3em}.block-list li::marker{color:var(--text-subtle);font-weight:700}.block-callout{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-radius:var(--radius-md);background:var(--info-soft);grid-template-columns:auto 1fr;align-items:start;display:grid}.block-callout .ico{background:var(--surface);border-radius:50%;place-items:center;width:32px;height:32px;display:grid}.block-callout.tip{background:var(--done-soft)}.block-callout.warning{background:var(--warning-soft)}.block-callout.important{background:var(--signal-soft)}.block-callout strong{font-size:var(--fs-sm);margin-bottom:2px;display:block}.block-divider{background:var(--border);height:1px;margin:var(--sp-4) auto;border:0}.block-image{margin:0 auto}.block-image img{border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-2)}.block-image figcaption{color:var(--text-muted);font-size:var(--fs-sm);margin-top:var(--sp-2)}.block-resource{align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);color:var(--text);transition:border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);text-decoration:none;display:flex}.block-resource:hover{border-color:var(--border-strong);box-shadow:var(--shadow-2);text-decoration:none}.block-resource:active{transform:scale(.99)}.block-resource .ico{border-radius:var(--radius-sm);background:var(--signal-soft);flex:none;place-items:center;width:44px;height:44px;display:grid}.block-resource .txt{flex:1;min-width:0}.block-resource strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.block-resource small{color:var(--text-muted)}.video-shell{border-radius:var(--radius-lg);box-shadow:var(--shadow-3);aspect-ratio:16/9;background:#050a14;position:relative;overflow:hidden}.video-shell video{object-fit:contain;background:#050a14;width:100%;height:100%}.video-state{text-align:center;color:#e8edf5;padding:var(--sp-6);pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.video-state.error{pointer-events:auto;background:#050a14}.video-state .spinner{border:3px solid #fff3;border-top-color:var(--c-highlight);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.video-meta{justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;display:flex}.video-meta .watched{align-items:center;gap:var(--sp-2);display:inline-flex}.video-meta .dot{background:var(--border-strong);border-radius:50%;width:8px;height:8px}.video-meta .dot.on{background:var(--done)}@media (max-width:599px){.video-shell{margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));border-radius:0;width:calc(100% + 2 * var(--gutter))!important;max-width:none!important}}.complete-zone{max-width:var(--read-max);margin:var(--sp-12) auto 0;padding:var(--sp-6);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);gap:var(--sp-5);transition:background var(--dur-slow) var(--ease-out), border-color var(--dur-slow) var(--ease-out);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.complete-zone h2{font-size:var(--fs-lg);margin:0}.complete-zone p{color:var(--text-muted);font-size:var(--fs-sm);margin:2px 0 0}.complete-zone.is-done{background:var(--done-soft);border-color:#0000}.check-mark{border:2px dashed var(--border-strong);width:52px;height:52px;color:var(--text-subtle);border-radius:50%;place-items:center;display:grid}.complete-zone.is-done .check-mark{background:var(--done);color:var(--on-done);animation:pop var(--dur-slow) var(--ease-spring) both;border:0}.check-mark path{stroke-dasharray:30;stroke-dashoffset:0}.complete-zone.just-done .check-mark path{animation:draw .38s var(--ease-out) .12s both}.complete-zone .actions{gap:var(--sp-3);flex-wrap:wrap;justify-content:flex-end;display:flex}@media (max-width:767px){.complete-zone{grid-template-columns:auto 1fr}.complete-zone .actions{grid-column:1/-1}.complete-zone .actions .btn{flex:auto}}.course-done{max-width:var(--read-max);margin:var(--sp-6) auto 0;border-radius:var(--radius-lg);background:var(--surface-ink);color:var(--on-ink);text-align:left;animation:rise var(--dur-reveal) var(--ease-out) both;padding:clamp(1.5rem,4vw,3rem)}.course-done h2{color:var(--on-ink);font-size:var(--fs-3xl);margin:var(--sp-2) 0}.course-done p{color:var(--on-ink-muted);margin:0 0 var(--sp-6)}.course-done .btn:not(.signal){color:var(--on-ink);background:0 0;border-color:#ffffff40}.lesson-pager{max-width:var(--read-max);margin:var(--sp-6) auto 0;gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.pager-link{padding:var(--sp-4) var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);min-height:76px;color:var(--text);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);flex-direction:column;justify-content:center;gap:2px;text-decoration:none;display:flex}.pager-link:hover{border-color:var(--border-strong);box-shadow:var(--shadow-2);text-decoration:none}.pager-link:active{transform:scale(.99)}.pager-link small{color:var(--text-muted);font-weight:600;font-size:var(--fs-xs);align-items:center;gap:4px;display:inline-flex}.pager-link strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pager-link.next{text-align:right;grid-column:2;align-items:flex-end}@media (max-width:599px){.lesson-pager{grid-template-columns:1fr}.pager-link.next{order:-1;grid-column:auto}}.outline-title{font:700 var(--fs-lg)/1.25 var(--font-display);letter-spacing:-.015em;margin:0 0 var(--sp-1)}.outline-title a{text-decoration:none}.outline-title a:hover{text-decoration:underline}.outline-progress{margin-bottom:var(--sp-6)}.outline-module{margin-bottom:var(--sp-5)}.outline-module h3{font:700 var(--fs-xs)/1.3 var(--font-text);letter-spacing:0;color:var(--text-muted);margin:0 0 var(--sp-2);padding:0 var(--sp-2)}.outline-module ol{margin:0;padding:0;list-style:none}.outline-module a{gap:var(--sp-2);min-height:40px;padding:var(--sp-2);border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-sm);grid-template-columns:22px 1fr;align-items:center;text-decoration:none;display:grid}.outline-module a:hover{background:var(--surface-2);text-decoration:none}.outline-module a[aria-current=page]{background:var(--signal-soft);font-weight:600}.outline-module .node{border-width:2px;width:22px;height:22px}.outline-module .node svg{width:12px;height:12px}.drawer-overlay{z-index:var(--z-overlay);-webkit-backdrop-filter:blur(2px);animation:fade-in var(--dur-base) var(--ease-out);background:#08101d73;position:fixed;inset:0}.drawer{z-index:var(--z-drawer);background:var(--surface);width:min(380px,88vw);box-shadow:var(--shadow-3);animation:drawer-in var(--dur-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}@keyframes drawer-in{0%{translate:-100%}}.drawer-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border);display:flex}.drawer-body{padding:var(--sp-5) var(--sp-3) var(--sp-10);overscroll-behavior:contain;flex:1;overflow-y:auto}.drawer-grip{display:none}@media (max-width:767px){.drawer{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-height:85dvh;animation:sheet-up var(--dur-slow) var(--ease-out);padding-bottom:env(safe-area-inset-bottom);top:auto;left:0;right:0}.drawer-grip{background:var(--border-strong);width:40px;height:4px;margin:var(--sp-2) auto 0;border-radius:2px;display:block}}@media (max-width:1279px){.lesson-shell.with-rail{grid-template-columns:minmax(0,1fr)}.lesson-rail{display:none}}.login-art .thread-line{stroke-dasharray:600;stroke-dashoffset:0;animation:draw-line 1.1s var(--ease-out) both}.login-art .thread-line.live{animation-delay:.2s}@keyframes draw-line{0%{stroke-dashoffset:600px}}.login-art .thread-node{animation:fade-in var(--dur-slow) var(--ease-out) both;animation-delay:calc(.25s + var(--i) * 90ms)}@media (max-width:899px){.login-lines{display:none}}.outline-trigger{padding:0 var(--sp-3)}@media (min-width:1280px){.lesson-shell.with-rail .outline-trigger{display:none}}@media (max-width:599px){.outline-trigger-label{display:none}}.mainnav{scrollbar-width:none;min-width:0;overflow-x:auto}.mainnav::-webkit-scrollbar{display:none}.mainnav a{flex:none}@media (max-width:1023px){.menu-trigger .menu-name{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topbar{gap:var(--sp-4)}}
.admin .container{padding-top:var(--sp-8)}.admin .page-head h1{font-size:var(--fs-2xl)}.admin .card h2{font-size:var(--fs-lg)}.admin .card h3{font-size:var(--fs-md)}.admin .stat{padding:var(--sp-5)}.admin details.card>summary{font-weight:600}.admin .cover{border-radius:var(--radius-md)}.admin h2{font-size:var(--fs-xl)}
.studio-root{background:var(--bg);min-height:100dvh}.studio-bar{z-index:var(--z-nav);align-items:center;gap:var(--sp-4);height:64px;padding:0 var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.studio-bar-start{align-items:center;gap:var(--sp-2);flex:auto;min-width:0;display:flex}.studio-bar-mid{flex:none}.studio-bar-end{align-items:center;gap:var(--sp-2);flex:none;display:flex}.studio-title{flex-direction:column;min-width:0;line-height:1.2;display:flex}.studio-title strong{font-family:var(--font-display);font-size:var(--fs-md);letter-spacing:-.015em;white-space:nowrap;text-overflow:ellipsis;max-width:32ch;overflow:hidden}.studio-kicker{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.studio-tree-toggle{display:none}.save-indicator{align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted);min-width:120px;font-weight:600;display:inline-flex}.save-dot{background:var(--border-strong);width:8px;height:8px;transition:background var(--dur-base) var(--ease-out);border-radius:50%}.save-indicator.is-saving .save-dot{background:var(--signal);animation:.9s ease-in-out infinite pulse-dot}.save-indicator.is-saved .save-dot{background:var(--done)}.save-indicator.is-error{color:var(--danger)}.save-indicator.is-error .save-dot{background:var(--danger)}.save-indicator .morph{animation:morph-in var(--dur-base) var(--ease-out);display:inline-block}@keyframes morph-in{0%{opacity:0;translate:0 .6em}}@keyframes pulse-dot{50%{opacity:.35}}.segmented.sm{padding:3px}.segmented.sm button{min-height:32px;padding:0 var(--sp-3);font-size:var(--fs-xs);align-items:center;gap:6px;display:inline-flex}.vis-control{align-items:center;gap:var(--sp-2);display:flex}.vis-assign{font-size:var(--fs-xs);color:var(--link);white-space:nowrap;font-weight:600;text-decoration:none}.vis-assign .count{background:var(--info-soft);border-radius:10px;place-items:center;min-width:20px;height:20px;margin-left:4px;padding:0 6px;display:inline-grid}.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.icon-btn.sm{width:32px;height:32px}.studio-body{grid-template-columns:320px minmax(0,1fr);min-height:calc(100dvh - 64px);display:grid}.studio-tree{overscroll-behavior:contain;background:var(--surface);border-right:1px solid var(--border);height:calc(100dvh - 64px);padding:var(--sp-4) var(--sp-3) var(--sp-10);position:sticky;top:64px;overflow-y:auto}.studio-main{min-width:0}.studio-scrim{display:none}.tree{gap:var(--sp-2);flex-direction:column;display:flex}.tree-course{align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-sm);color:var(--text);border:1px solid #0000;text-decoration:none;display:flex}.tree-course:hover{background:var(--surface-2);text-decoration:none}.tree-course[aria-current=page]{background:var(--signal-soft)}.tree-course strong{font-size:var(--fs-sm);display:block}.tree-course small{color:var(--text-muted);font-size:var(--fs-xs);display:block}.tree-head{padding:var(--sp-3) var(--sp-2) var(--sp-1);justify-content:space-between;align-items:baseline;display:flex}.tree-head span{font:700 var(--fs-sm)/1 var(--font-display)}.tree-head small{color:var(--text-muted);font-size:var(--fs-xs)}.tree-modules,.tree-lessons{margin:0;padding:0;list-style:none}.tree-module{border-radius:var(--radius-sm);margin-bottom:var(--sp-1)}.tree-row{border-radius:var(--radius-sm);align-items:center;gap:4px;min-height:40px;padding:2px 4px;display:flex;position:relative}.tree-row:hover{background:var(--surface-2)}.tree-module-row .tree-label{font-weight:700;font-size:var(--fs-sm)}.tree-num{font:800 var(--fs-xs)/1 var(--font-display);color:var(--text-subtle);font-variant-numeric:tabular-nums;flex:none;width:20px}.tree-label{align-items:center;gap:var(--sp-2);min-width:0;color:var(--text);font-size:var(--fs-sm);padding:var(--sp-2) 0;flex:1;text-decoration:none;display:flex}.tree-label:hover{text-decoration:none}.tree-lesson-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tree-lesson{padding-left:34px}.tree-lesson.is-current{background:var(--signal-soft)}.tree-lesson.is-current .tree-label{font-weight:600}.tree-flag{color:var(--warning);background:var(--warning-soft);border-radius:var(--radius-pill);flex:none;padding:2px 6px;font-size:.7rem;font-weight:600}.tree-handle,.tree-caret{width:26px;height:32px;color:var(--text-subtle);border-radius:var(--radius-xs);cursor:grab;background:0 0;border:0;flex:none;place-items:center;display:inline-grid}.tree-caret{cursor:pointer}.tree-caret svg{transition:rotate var(--dur-base) var(--ease-out)}.tree-caret[aria-expanded=false] svg{rotate:-90deg}.tree-handle:hover,.tree-caret:hover{background:var(--bg-sunken);color:var(--text)}.tree-handle:active{cursor:grabbing}.tree-actions{opacity:0;transition:opacity var(--dur-fast) var(--ease-out);gap:2px;display:flex}.tree-row:hover .tree-actions,.tree-row:focus-within .tree-actions{opacity:1}.tree-input{min-height:34px;font-size:var(--fs-sm);flex:1;padding:4px 8px}.tree-adding{align-items:center;gap:var(--sp-2);padding:4px 6px 4px 34px;display:flex}.tree-adding.lesson{padding-left:34px}.tree-add{min-height:34px;margin:2px 0 var(--sp-2) 34px;padding:0 var(--sp-3);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-muted);font:600 var(--fs-xs)/1 var(--font-text);cursor:pointer;background:0 0;align-items:center;gap:6px;display:inline-flex}.tree-add:hover{color:var(--text);border-color:var(--text-subtle);background:var(--surface-2)}.tree-add-module{min-height:40px;font-size:var(--fs-sm);margin-left:4px}.tree-empty{margin:0 0 var(--sp-1) 34px;font-size:var(--fs-xs);color:var(--text-muted)}.tree-hint{margin:var(--sp-4) var(--sp-2) 0;font-size:var(--fs-xs);color:var(--text-subtle);flex-wrap:wrap;align-items:center;gap:4px;display:flex}[data-lifted]{opacity:.55}[data-over=before]{box-shadow:inset 0 3px 0 var(--signal)}[data-over=after]{box-shadow:inset 0 -3px 0 var(--signal)}.block-card.is-lifted{box-shadow:var(--shadow-3);scale:1.01}.studio-page{max-width:920px;padding:var(--sp-8) var(--gutter) var(--sp-20);gap:var(--sp-8);flex-direction:column;margin:0 auto;display:flex}.studio-section{gap:var(--sp-5);flex-direction:column;display:flex}.studio-section>h2{font-size:var(--fs-xl);margin:0}.settings-grid{gap:var(--sp-8);grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;display:grid}.input-lg{font:700 var(--fs-xl)/1.2 var(--font-display);letter-spacing:-.015em;padding:.7rem .9rem}.field-label{font-size:var(--fs-sm);font-weight:600}.field-note{gap:var(--sp-3);font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;display:flex}.hint{color:var(--text-muted);font-weight:500;font-size:var(--fs-xs)}fieldset.field{gap:var(--sp-2);border:0;flex-direction:column;margin:0;padding:0;display:flex}fieldset.field legend{font-size:var(--fs-sm);margin-bottom:var(--sp-2);padding:0;font-weight:600}.cover-field{gap:var(--sp-3);flex-direction:column;display:flex}.cover-preview{aspect-ratio:16/9;border-radius:var(--radius-md);background:var(--surface-ink);box-shadow:var(--shadow-2);position:relative;overflow:hidden}.cover-preview img{object-fit:cover;width:100%;height:100%}.upload-overlay{padding:var(--sp-3);color:#fff;font-size:var(--fs-xs);gap:var(--sp-2);background:#08101db3;flex-direction:column;display:flex;position:absolute;inset:auto 0 0}.guide{gap:var(--sp-5);padding:var(--sp-6);border-radius:var(--radius-lg);background:var(--surface-ink);color:var(--on-ink);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.guide h2{color:var(--on-ink);font-size:var(--fs-xl);margin:0 0 var(--sp-1)}.guide p{color:var(--on-ink-muted);margin:0}.guide-step{background:var(--c-highlight);width:48px;height:48px;color:var(--on-signal);font:800 var(--fs-lg)/1 var(--font-display);border-radius:50%;place-items:center;display:grid}.guide .btn.primary{background:var(--c-highlight);border-color:var(--c-highlight);color:var(--on-signal)}.guide.is-quiet{background:var(--surface);color:var(--text);border:1px solid var(--border)}.guide.is-quiet h2{color:var(--text)}.guide.is-quiet p{color:var(--text-muted)}.guide.is-quiet .guide-step{background:var(--done-soft);color:var(--done)}.guide.is-blocks{grid-template-columns:auto 1fr;align-items:start}.guide.is-blocks .picker{grid-column:2}.quick-picks{gap:var(--sp-3);margin-top:var(--sp-5);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.quick-pick{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius-md);min-height:96px;color:var(--on-ink);font:600 var(--fs-sm)/1.2 var(--font-text);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:#ffffff0f;border:1px solid #ffffff24;flex-direction:column;display:flex}.quick-pick:hover{background:#ffffff1f}.quick-pick:active{transform:scale(.97)}.quick-pick svg{color:var(--c-highlight)}.lesson-edit-head{gap:var(--sp-3);flex-direction:column;display:flex}.lesson-edit-where{gap:var(--sp-3);font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;margin:0;font-weight:600;display:flex}.lesson-edit-where span{font-weight:500}.lesson-title-input{resize:none;field-sizing:content;min-height:0;font:700 var(--fs-3xl)/1.08 var(--font-display);letter-spacing:var(--tracking-display);color:var(--text);background:0 0;border:0;padding:0;overflow:hidden}.lesson-title-input:focus-visible{box-shadow:none;outline:2px dashed var(--border-strong);outline-offset:6px;border-radius:var(--radius-xs)}.lesson-edit-meta{gap:var(--sp-4);grid-template-columns:minmax(0,1fr) auto;align-items:start;display:grid}.lesson-edit-meta textarea{field-sizing:content;min-height:0}.minutes{font-size:var(--fs-xs);color:var(--text-muted);gap:var(--sp-1)}.minutes input{width:84px}.blocks{gap:var(--sp-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.block-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-1);transition:box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), scale var(--dur-base) var(--ease-out);position:relative}.block-card:focus-within{border-color:var(--focus);box-shadow:0 0 0 4px color-mix(in srgb, var(--focus) 14%, transparent), var(--shadow-2)}.block-card.is-flagged{border-color:var(--warning);box-shadow:0 0 0 4px var(--warning-soft)}.block-head{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2) 0;display:flex}.block-type{font-size:var(--fs-xs);color:var(--text-muted);flex:1;align-items:center;gap:6px;font-weight:700;display:inline-flex}.block-tools{opacity:.35;transition:opacity var(--dur-fast) var(--ease-out);gap:2px;display:flex}.block-card:hover .block-tools,.block-card:focus-within .block-tools{opacity:1}.block-body{padding:var(--sp-3) var(--sp-5) var(--sp-5)}.block-insert{left:50%;top:calc(-1 * var(--sp-4));z-index:3;opacity:0;transition:opacity var(--dur-fast) var(--ease-out);position:absolute;translate:-50% -50%}.block-card:hover .block-insert,.block-insert:focus-within,.block-insert .picker.is-open{opacity:1}.add-block-end{justify-content:center;display:flex}.lesson-edit-nav{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.lesson-edit-nav .pager-link.next{grid-column:2}.heading-editor{gap:var(--sp-3);align-items:center;display:flex}.heading-input{padding:var(--sp-1) 0;font-family:var(--font-display);letter-spacing:-.02em;background:0 0;border:0;flex:1;font-weight:700}.heading-input.level-2{font-size:var(--fs-2xl)}.heading-input.level-3{font-size:var(--fs-xl)}.heading-input:focus-visible{box-shadow:none;outline:none}.callout-editor{gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);background:var(--info-soft);flex-direction:column;display:flex}.callout-editor.tone-important{background:var(--signal-soft)}.callout-editor.tone-tip{background:var(--done-soft)}.callout-editor.tone-warning{background:var(--warning-soft)}.tone-picker{gap:var(--sp-2);flex-wrap:wrap;display:flex}.tone{min-height:32px;padding:0 var(--sp-3);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text);font:600 var(--fs-xs)/1 var(--font-text);cursor:pointer;align-items:center;gap:6px;display:inline-flex}.tone[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.list-editor{gap:var(--sp-3);flex-direction:column;align-items:flex-start;display:flex}.list-items{gap:var(--sp-2);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.list-items li{align-items:center;gap:var(--sp-2);display:flex}.list-mark{text-align:right;width:24px;color:var(--text-subtle);flex:none;font-weight:700}.rte{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.rte:focus-within{border-color:var(--focus)}.rte-bar{border-bottom:1px solid var(--border);background:var(--surface-2);align-items:center;gap:2px;padding:4px;display:flex}.rte-tabs{border-radius:var(--radius-pill);background:var(--bg-sunken);gap:2px;margin-left:auto;padding:2px;display:inline-flex}.rte-tabs button{min-height:28px;padding:0 var(--sp-3);border-radius:var(--radius-pill);font:600 var(--fs-xs)/1 var(--font-text);color:var(--text-muted);cursor:pointer;background:0 0;border:0}.rte-tabs button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.rte textarea{resize:none;padding:var(--sp-3) var(--sp-4);border:0;border-radius:0;min-height:0;font-size:1.0625rem;line-height:1.65;overflow:hidden}.rte textarea:focus-visible{box-shadow:none}.rte-view{padding:var(--sp-3) var(--sp-4)}.rte.compact{background:color-mix(in srgb, var(--surface) 70%, transparent)}.picker{position:relative}.picker-trigger{align-items:center;gap:var(--sp-2);min-height:48px;padding:0 var(--sp-6);border-radius:var(--radius-pill);border:1px dashed var(--border-strong);background:var(--surface);color:var(--text);font:600 var(--fs-sm)/1 var(--font-text);cursor:pointer;transition:border-color var(--dur-fast), background var(--dur-fast), transform var(--dur-fast) var(--ease-out);display:inline-flex}.picker-trigger:hover{border-color:var(--text-subtle);background:var(--surface-2)}.picker-trigger:active{transform:scale(.97)}.picker.is-open .picker-trigger svg{rotate:45deg}.picker-trigger svg{transition:rotate var(--dur-base) var(--ease-spring)}.picker-inline{border:1px solid var(--border-strong);background:var(--surface);width:28px;height:28px;color:var(--text);cursor:pointer;box-shadow:var(--shadow-1);border-radius:50%;place-items:center;display:grid}.picker-inline:hover{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}.picker-panel{z-index:var(--z-overlay);width:min(560px,86vw);padding:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);transform-origin:top;animation:bloom var(--dur-base) var(--ease-out);grid-template-columns:1fr 1fr;gap:4px;display:grid;position:absolute;top:calc(100% + 8px);left:50%;translate:-50%}@keyframes bloom{0%{opacity:0;translate:-50% -4px;scale:.94}}.picker.full{flex-direction:column;align-items:center;display:flex}.picker.full .picker-panel{margin-top:var(--sp-3);animation-name:bloom-flow;position:static;translate:none}@keyframes bloom-flow{0%{opacity:0;translate:0 -4px;scale:.96}}.picker-item{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-sm);color:var(--text);text-align:left;cursor:pointer;font:inherit;animation:rise var(--dur-base) var(--ease-out) both;animation-delay:calc(var(--i) * 32ms);background:0 0;border:0;display:flex}.picker-item:hover,.picker-item:focus-visible{background:var(--surface-2)}.picker-item strong{font-size:var(--fs-sm);display:block}.picker-item small{color:var(--text-muted);font-size:var(--fs-xs);line-height:1.35;display:block}.picker-ico{border-radius:var(--radius-sm);background:var(--signal-soft);flex:none;place-items:center;width:40px;height:40px;display:grid}.dropzone{align-items:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-4);text-align:center;border:2px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-muted);transition:border-color var(--dur-fast), background var(--dur-fast);flex-direction:column;display:flex}.dropzone p{color:var(--text);margin:0}.dropzone.is-over{border-color:var(--signal);background:var(--signal-soft)}.upload-card{align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface-2);border:1px solid var(--border);display:flex}.upload-card.is-error{background:var(--danger-soft);color:var(--danger);border-color:#0000}.upload-info{gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex}.upload-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);overflow:hidden}.upload-info small{color:inherit;opacity:.85}.media-current{gap:var(--sp-3);flex-direction:column;display:flex}.media-preview{object-fit:contain;border-radius:var(--radius-md);background:#050a14;width:100%;max-height:420px}.kind-image .media-preview{background:var(--surface-2)}.media-meta{align-items:center;gap:var(--sp-3);flex-wrap:wrap;justify-content:space-between;display:flex}.media-name{font-weight:600;font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}.media-meta small{gap:var(--sp-2);align-items:center;display:inline-flex}.media-ok{color:var(--done);align-items:center;gap:2px;font-weight:600;display:inline-flex}.media-warn{color:var(--warning);font-weight:600}.dlg-overlay{z-index:var(--z-drawer);padding:var(--sp-5);-webkit-backdrop-filter:blur(4px);animation:fade-in .2s var(--ease-out);background:#08101d73;place-items:center;display:grid;position:fixed;inset:0}.dlg{background:var(--surface);border-radius:var(--radius-lg);width:min(560px,100%);max-height:85dvh;box-shadow:var(--shadow-3);border-top:4px solid var(--border-strong);animation:dlg-in var(--dur-base) var(--ease-out);overflow:auto}.dlg.tone-danger{border-top-color:var(--danger)}.dlg.tone-warn{border-top-color:var(--warning)}.dlg.tone-ok{border-top-color:var(--done)}@keyframes dlg-in{0%{opacity:0;translate:0 8px;scale:.97}}.dlg-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-5) var(--sp-5) 0;display:flex}.dlg-head h2{font-size:var(--fs-lg);margin:0}.dlg-body{padding:var(--sp-3) var(--sp-5)}.dlg-body p{margin:0 0 var(--sp-3)}.dlg-actions{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5) var(--sp-5);flex-wrap:wrap;display:flex}.issues{gap:var(--sp-2);counter-reset:issue;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.issues li{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--warning-soft);font-size:var(--fs-sm);display:flex}.issue-go{font-weight:600;font-size:var(--fs-xs);flex:none;align-items:center;gap:4px;display:inline-flex}.toasts{z-index:var(--z-toast);left:50%;bottom:var(--sp-6);gap:var(--sp-2);pointer-events:none;flex-direction:column;align-items:center;display:flex;position:fixed;translate:-50%}.toast{pointer-events:auto;align-items:center;gap:var(--sp-3);min-height:48px;padding:0 var(--sp-3) 0 var(--sp-4);border-radius:var(--radius-md);background:var(--c-ink-900);color:#f4f6fa;box-shadow:var(--shadow-3);font-size:var(--fs-sm);animation:toast-pop var(--dur-slow) var(--ease-spring);font-weight:500;display:flex;position:relative;overflow:hidden}.toast.is-error{background:var(--c-danger)}.toast.is-ok svg{color:#6fe0a8}@keyframes toast-pop{0%{opacity:0;translate:0 26px;scale:.9}55%{opacity:1;translate:0 -7px;scale:1.03}to{translate:0;scale:1}}.toast-undo{min-height:36px;padding:0 var(--sp-3);border-radius:var(--radius-sm);color:#ffd75c;font:700 var(--fs-sm)/1 var(--font-text);cursor:pointer;background:#ffffff1f;border:0;align-items:center;gap:4px;display:inline-flex}.toast-undo:hover{background:#fff3}.toast-countdown{background:var(--c-highlight);transform-origin:0;height:3px;animation:linear forwards countdown;position:absolute;bottom:0;left:0;right:0}@keyframes countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.studio-new{min-height:100dvh}.studio-new .studio-bar{justify-content:space-between}.studio-new-main{padding:var(--sp-12) var(--gutter);place-items:start center;display:grid}.studio-new-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(680px,100%);box-shadow:var(--shadow-2);padding:clamp(1.5rem,4vw,3rem)}.studio-new-card h1{font-size:var(--fs-3xl);margin:0 0 var(--sp-2)}.studio-step{font-size:var(--fs-sm);color:var(--text-muted);margin:0 0 var(--sp-2);font-weight:700}.preview-bar{z-index:calc(var(--z-nav) + 1);align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--gutter);background:var(--c-ink-900);color:#f4f6fa;font-size:var(--fs-sm);flex-wrap:wrap;display:flex;position:sticky;top:0}.preview-pill{color:var(--c-highlight);align-items:center;gap:6px;font-weight:700;display:inline-flex}.preview-note{color:#b4bfd1;flex:1}.preview-shell .topbar{top:52px}.preview-shell .lesson-top{top:calc(var(--topbar-h) + 52px)}.preview-shell .lesson-rail{top:calc(var(--topbar-h) + 52px);height:calc(100dvh - var(--topbar-h) - 52px)}.studio-cta{justify-content:space-between;align-items:center;gap:var(--sp-5);flex-wrap:wrap;display:flex}.studio-cta h2{margin:0 0 var(--sp-1)}.studio-cta p{margin:0}.studio-mobile{display:none}@media (max-width:1279px){.studio-body{grid-template-columns:280px minmax(0,1fr)}.studio-title strong{max-width:22ch}}@media (max-width:1100px){.vis-assign{display:none}}@media (max-width:1023px){.studio-tree-toggle{display:inline-grid}.studio-body{grid-template-columns:minmax(0,1fr)}.studio-tree{z-index:var(--z-drawer);width:min(340px,86vw);height:auto;transition:translate var(--dur-slow) var(--ease-out);box-shadow:var(--shadow-3);position:fixed;top:64px;bottom:0;left:0;translate:-100%}.studio.tree-open .studio-tree{translate:0}.studio.tree-open .studio-scrim{z-index:var(--z-overlay);background:#08101d59;display:block;position:fixed;inset:64px 0 0}.studio-bar-end .btn{padding:0 var(--sp-3)}.settings-grid{grid-template-columns:1fr}.save-indicator{min-width:0}.studio-kicker{display:none}.tree-actions,.block-tools{opacity:1}}@media (max-width:899px){.studio-bar-end .badge{display:none}.quick-picks{grid-template-columns:1fr 1fr}.guide{grid-template-columns:auto 1fr}.guide>.btn{grid-column:1/-1}}@media (max-width:767px){.studio-bar,.studio-body{display:none}.studio-mobile{gap:var(--sp-4);padding:var(--sp-5) var(--gutter) var(--sp-10);flex-direction:column;display:flex}.studio-mobile h1{font-size:var(--fs-2xl);margin:0}.studio-mobile-list{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.studio-mobile-list ul{margin:var(--sp-1) 0 0;padding-left:var(--sp-5);color:var(--text-muted);font-size:var(--fs-sm)}.studio-new .studio-bar{display:flex}.preview-note{display:none}}.guide.is-blocks .picker.full{align-items:flex-start}.studio-new .segmented button{white-space:nowrap;justify-content:center;align-items:center;gap:6px;display:inline-flex}@media (max-width:1023px){.save-indicator .morph{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.studio-bar-end [data-testid=preview-link]{justify-content:center;gap:0;width:44px;padding:0;font-size:0}.studio-bar-end .badge.draft,.studio-bar-end .badge.published{display:none}.studio-title strong{max-width:100%}}
.back-link{align-items:center;gap:var(--sp-2);color:var(--text-muted);font-size:var(--fs-sm);width:fit-content;font-weight:600;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--text)}.row.between{justify-content:space-between}.nowrap{white-space:nowrap}.grow{flex:auto;min-width:0}.flow-strip{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.flow-step{min-height:32px;padding:0 var(--sp-3);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-muted);align-items:center;font-weight:600;display:inline-flex;position:relative}.flow-step:not(:last-child):after{content:"→";margin-left:var(--sp-3);color:var(--text-subtle)}.flow-step.is-human{background:var(--done-soft);color:var(--done);border-color:#0000}.scope-fields{gap:var(--sp-2);border:0;margin:0;padding:0;display:grid}.scope-fields legend{font-weight:600;font-size:var(--fs-sm);margin-bottom:var(--sp-2)}.scope-fields label.scope-option,.form-grid .scope-fields label.scope-option{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out);flex-direction:row;align-items:flex-start;font-weight:400;display:flex}.scope-option:hover{border-color:var(--border-strong)}.scope-option:has(input:checked){border-color:var(--accent);background:var(--surface-2)}.scope-option input{flex:none;width:18px;height:18px;margin-top:3px}.scope-option small{color:var(--text-muted);font-size:var(--fs-xs);margin-top:2px;display:block}.scope-option code{font-size:var(--fs-xs);color:var(--text-subtle);margin-left:var(--sp-1)}.scope-note{align-items:center;gap:var(--sp-2);margin:var(--sp-1) 0 0;display:flex}.scope-chip{border-radius:var(--radius-xs);background:var(--bg-sunken);min-height:24px;font-family:var(--font-mono);color:var(--text-muted);align-items:center;padding:0 8px;font-size:.75rem;display:inline-flex}.token-reveal{gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--radius-lg);background:var(--surface-ink);color:var(--on-ink);box-shadow:var(--shadow-2);animation:token-in var(--dur-base) var(--ease-out);display:grid}@keyframes token-in{0%{opacity:0;translate:0 6px}}.token-reveal-head{gap:var(--sp-3);align-items:flex-start;display:flex}.token-reveal-head svg{color:var(--signal);flex:none;margin-top:2px}.token-reveal-head p{margin:var(--sp-1) 0 0;color:var(--on-ink-muted);font-size:var(--fs-sm)}.token-reveal .btn{color:var(--on-ink);background:#ffffff14;border-color:#ffffff2e}.token-reveal .btn.ghost{background:0 0}.token-value{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);background:#00000047;border:1px dashed #ffffff38;flex-wrap:wrap;align-items:center;display:flex}.token-value code{word-break:break-all;min-width:0;color:var(--signal);-webkit-user-select:all;user-select:all;flex:260px;font-size:.85rem}.int-list{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.int-row{justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.int-name{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--text);font-weight:650;text-decoration:none}.int-name:hover{text-underline-offset:3px;text-decoration:underline}.int-meta{gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.int-side{text-align:right;justify-items:end;gap:2px;display:grid}.empty-hint p{color:var(--text-muted);margin:0}.int-facts{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));display:grid}.int-facts>div{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);gap:2px;display:grid}.int-facts span{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.status-pill{border-radius:var(--radius-pill);min-width:40px;font-family:var(--font-mono);justify-content:center;padding:1px 8px;font-size:.78rem;font-weight:600;display:inline-flex}.status-pill.ok{background:var(--done-soft);color:var(--done)}.status-pill.warn{background:var(--warning-soft);color:var(--warning)}.status-pill.err{background:var(--danger-soft);color:var(--danger)}.audit-table td{vertical-align:top}.danger-zone{border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}.danger-zone p{color:var(--text-muted);margin:0}.tester-row{gap:var(--sp-3);flex-wrap:wrap;align-items:flex-end;display:flex}.tester-row label{gap:var(--sp-1);font-weight:600;font-size:var(--fs-sm);display:grid}.tester-out{border-radius:var(--radius-md);border:1px solid var(--border);overflow:hidden}.tester-out strong{padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);display:block}.tester-out.ok strong{background:var(--done-soft);color:var(--done)}.tester-out.err strong{background:var(--danger-soft);color:var(--danger)}.tester-out pre,.code-card pre{padding:var(--sp-3) var(--sp-4);background:var(--bg-sunken);white-space:pre;tab-size:2;max-height:360px;margin:0;font-size:.8rem;line-height:1.5;overflow:auto}.code-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.code-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--fs-sm);display:flex}.can-cannot{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));display:grid}.can-cannot>div{padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface-2)}.can-cannot>div:last-child{background:var(--danger-soft)}.can-cannot h3{align-items:center;gap:var(--sp-2);font-size:var(--fs-md);margin:0 0 var(--sp-2);display:flex}.can-cannot p{font-size:var(--fs-sm);margin:0}@media (max-width:640px){.int-side{text-align:left;justify-items:start}.flow-step{font-size:.7rem}}@media (prefers-reduced-motion:reduce){.token-reveal{animation:none}}@media (min-width:768px){.menu-mobile-only{display:none!important}}.access-list{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.access-row{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);flex-wrap:wrap;display:flex}.access-main{min-width:0}.access-title{color:var(--text);font-weight:650;text-decoration:none}.access-title:hover{text-underline-offset:3px;text-decoration:underline}.access-row .int-meta{margin-top:var(--sp-1)}.access-add{gap:var(--sp-3);flex-wrap:wrap;align-items:flex-end;display:flex}.access-add select{min-width:min(100%,320px)}
