@font-face{font-family:Geist;src:url(/fonts/geist-var-latin.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist;src:url(/fonts/geist-var-latin-ext.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-var-latin.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-var-latin-ext.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-var.woff2)format("woff2");font-weight:100 700;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Fredoka;src:url(/fonts/fredoka-var.woff2)format("woff2");font-weight:300 700;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/nunito-var.woff2)format("woff2");font-weight:200 1000;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f7f8fa;--background-secondary:#f3f5f8;--surface:#fff;--surface-elevated:#fff;--surface-hover:#f4f7fb;--surface-active:#edf2fa;--surface-muted:#f1f4f8;--border:#e2e8f0;--border-strong:#cbd5e1;--border-control:#94a3b8;--foreground:#111827;--foreground-secondary:#334155;--muted-foreground:#596577;--faint-foreground:#626b7a;--placeholder:#94a3b8;--primary:#1d4ed8;--primary-hover:#1e40af;--primary-active:#1e3a8a;--primary-strong:#1e3a8a;--primary-soft:#e8effd;--primary-foreground:#fff;--accent-secondary:#4f46e5;--accent-secondary-soft:#eef0fd;--violet:#7c3aed;--cyan:#0e7490;--success:#14703a;--success-soft:#e5f5ea;--warning:#964607;--warning-soft:#fbf1d6;--danger:#b91c1c;--danger-soft:#fbe4e4;--info:#0369a1;--info-soft:#e0f2fe;--input:#fff;--focus-ring:#1d4ed8;--selection:#2563eb2e;--header-background:#f7f8fad1;--shadow:0 1px 2px #1118270d,0 8px 24px -12px #1118272e;--shadow-pop:0 4px 12px #11182714,0 24px 48px -16px #1118273d;--grid-dot:#1118270f;--code-background:#0d1420;--code-foreground:#d6deea;--code-border:#1b2536;--code-line:#9aa7ba;--code-hl:#3b82f629;--syn-comment:#7f8b9e;--syn-keyword:#8fb2ff;--syn-string:#9be2b0;--syn-number:#f4c88a;--syn-type:#c6b3ff;--syn-fn:#7dd8ec;--syn-punct:#a9b4c4;--sidebar-background:#0d1420;--sidebar-foreground:#cbd5e1;--sidebar-active:#3b82f6;--gradient-brand:linear-gradient(135deg,#2563eb,#7c3aed);--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--pill:999px;--border-w:1px;--font-display:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-body:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--wt-display:640;--t-xs:11.5px;--t-sm:13px;--t-body:15.5px;--t-read:17px;--lh-read:1.72;--t-read-h2:26px;--t-read-h3:20px;--t-code:14.5px;--t-lg:17px;--t-h4:18px;--t-h3:22px;--t-h2:28px;--t-h1:36px;--t-display:clamp(40px,5.2vw,58px);--lh-body:1.65;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--dur:.18s;--dur-fast:.12s;--ease:cubic-bezier(.2,.8,.2,1);--container:1200px;--topbar-h:60px;--rail-w:272px;--ctx-w:280px}@media (prefers-color-scheme:dark){:root[data-theme=system]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#070b14;--background-secondary:#090e18;--surface:#0d1420;--surface-elevated:#111a28;--surface-hover:#151f30;--surface-active:#192538;--surface-muted:#0a1019;--border:#1b2536;--border-strong:#2a3649;--border-control:#4b5b75;--foreground:#f8fafc;--foreground-secondary:#cbd5e1;--muted-foreground:#8a98ac;--faint-foreground:#7b8aa0;--placeholder:#6b7a90;--primary:#3b82f6;--primary-hover:#60a5fa;--primary-active:#2563eb;--primary-strong:#93c5fd;--primary-soft:#12213f;--primary-foreground:#0b1220;--accent-secondary:#818cf8;--accent-secondary-soft:#1b1e45;--violet:#a78bfa;--cyan:#22d3ee;--success:#4ade80;--success-soft:#0e2a1b;--warning:#fbbf24;--warning-soft:#2e2309;--danger:#f87171;--danger-soft:#3a1414;--info:#38bdf8;--info-soft:#0c2a3d;--input:#0d1420;--focus-ring:#60a5fa;--selection:#3b82f659;--header-background:#070b14cc;--shadow:0 1px 2px #0006,0 10px 28px -12px #000000b3;--shadow-pop:0 4px 12px #00000080,0 24px 48px -16px #000c;--grid-dot:#ffffff0b;--code-background:#0a0f1a;--code-foreground:#d6deea;--code-border:#1b2536;--code-line:#9aa7ba;--code-hl:#3b82f62e;--syn-comment:#7f8b9e;--syn-keyword:#8fb2ff;--syn-string:#9be2b0;--syn-number:#f4c88a;--syn-type:#c6b3ff;--syn-fn:#7dd8ec;--syn-punct:#a9b4c4;--sidebar-background:#090e18;--sidebar-foreground:#cbd5e1;--sidebar-active:#3b82f6;--gradient-brand:linear-gradient(135deg,#3b82f6,#8b5cf6)}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#070b14;--background-secondary:#090e18;--surface:#0d1420;--surface-elevated:#111a28;--surface-hover:#151f30;--surface-active:#192538;--surface-muted:#0a1019;--border:#1b2536;--border-strong:#2a3649;--border-control:#4b5b75;--foreground:#f8fafc;--foreground-secondary:#cbd5e1;--muted-foreground:#8a98ac;--faint-foreground:#7b8aa0;--placeholder:#6b7a90;--primary:#3b82f6;--primary-hover:#60a5fa;--primary-active:#2563eb;--primary-strong:#93c5fd;--primary-soft:#12213f;--primary-foreground:#0b1220;--accent-secondary:#818cf8;--accent-secondary-soft:#1b1e45;--violet:#a78bfa;--cyan:#22d3ee;--success:#4ade80;--success-soft:#0e2a1b;--warning:#fbbf24;--warning-soft:#2e2309;--danger:#f87171;--danger-soft:#3a1414;--info:#38bdf8;--info-soft:#0c2a3d;--input:#0d1420;--focus-ring:#60a5fa;--selection:#3b82f659;--header-background:#070b14cc;--shadow:0 1px 2px #0006,0 10px 28px -12px #000000b3;--shadow-pop:0 4px 12px #00000080,0 24px 48px -16px #000c;--grid-dot:#ffffff0b;--code-background:#0a0f1a;--code-foreground:#d6deea;--code-border:#1b2536;--code-line:#9aa7ba;--code-hl:#3b82f62e;--syn-comment:#7f8b9e;--syn-keyword:#8fb2ff;--syn-string:#9be2b0;--syn-number:#f4c88a;--syn-type:#c6b3ff;--syn-fn:#7dd8ec;--syn-punct:#a9b4c4;--sidebar-background:#090e18;--sidebar-foreground:#cbd5e1;--sidebar-active:#3b82f6;--gradient-brand:linear-gradient(135deg,#3b82f6,#8b5cf6)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--topbar-h) + 16px)}body{background:var(--background);color:var(--foreground);font-family:var(--font-body);font-size:var(--t-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(var(--grid-dot) 1px,transparent 1px);background-size:24px 24px;margin:0}::selection{background:var(--selection)}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--wt-display);letter-spacing:-.015em;text-wrap:balance;color:var(--foreground);margin:0;line-height:1.15}h1{font-size:var(--t-h1)}h2{font-size:var(--t-h2)}h3{font-size:var(--t-h3)}h4{font-size:var(--t-h4)}p{margin:0}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.92em}pre code{font-size:inherit}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}[hidden]{display:none!important}.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}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.container{width:100%;max-width:var(--container);padding:0 var(--sp-6);margin:0 auto}.container-narrow{max-width:820px}.container-wide{max-width:1400px}.section{padding:var(--sp-16) 0}.section-tight{padding:var(--sp-10) 0}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.grid{gap:var(--sp-4);display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.container{padding:0 var(--sp-4)}.section{padding:var(--sp-10) 0}}.eyebrow{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);align-items:center;gap:8px;font-weight:500;display:inline-flex}.eyebrow-dot{background:var(--primary);border-radius:50%;width:6px;height:6px}.page-head{gap:var(--sp-3);padding:var(--sp-10) 0 var(--sp-6);display:grid}.page-head h1{font-size:var(--t-h1)}.page-head .lede{font-size:var(--t-lg);color:var(--muted-foreground);max-width:68ch;line-height:1.6}.section-head{justify-content:space-between;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap;display:flex}.section-head p{color:var(--muted-foreground);max-width:60ch;margin-top:6px}.muted{color:var(--muted-foreground)}.faint{color:var(--faint-foreground)}.mono{font-family:var(--font-mono)}.tnum{font-variant-numeric:tabular-nums}.small{font-size:var(--t-sm)}.btn{border-radius:var(--radius-md);border:var(--border-w) solid var(--border-strong);background:var(--surface);height:40px;color:var(--foreground);font-weight:560;font-size:var(--t-sm);white-space:nowrap;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:8px;padding:0 16px;line-height:1;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--border-control);color:var(--foreground)}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-foreground)}.btn-ghost{color:var(--foreground-secondary);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-hover);border-color:#0000}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{height:32px;font-size:var(--t-xs);padding:0 12px}.btn-lg{height:48px;font-size:var(--t-body);padding:0 22px}.btn-block{width:100%}.btn .arrow{transition:transform var(--dur) var(--ease)}.btn:hover .arrow{transform:translate(3px)}.icon-btn{border-radius:var(--radius-md);border:var(--border-w) solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--muted-foreground);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease);place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-hover);color:var(--foreground);border-color:var(--border-strong)}.icon-btn svg{width:18px;height:18px}.chip{border-radius:var(--pill);border:var(--border-w) solid var(--border);background:var(--surface);height:32px;color:var(--foreground-secondary);font-size:var(--t-sm);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease);align-items:center;gap:6px;padding:0 12px;font-weight:520;display:inline-flex}.chip:hover{border-color:var(--border-control);background:var(--surface-hover)}.chip.is-on,.chip[aria-pressed=true]{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-strong)}.chip-n{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.chip.is-on .chip-n{color:var(--primary-strong)}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.badge{border-radius:var(--radius-sm);height:22px;font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.04em;text-transform:uppercase;background:var(--surface-muted);color:var(--muted-foreground);border:var(--border-w) solid var(--border);white-space:nowrap;align-items:center;gap:6px;padding:0 8px;font-weight:500;display:inline-flex}.badge.is-foundation{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-intermediate{background:var(--primary-soft);color:var(--primary-strong);border-color:#0000}.badge.is-advanced{background:var(--accent-secondary-soft);color:var(--accent-secondary);border-color:#0000}.badge.is-senior{background:var(--warning-soft);color:var(--warning);border-color:#0000}.badge.is-easy{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-medium{background:var(--primary-soft);color:var(--primary-strong);border-color:#0000}.badge.is-hard{background:var(--danger-soft);color:var(--danger);border-color:#0000}.badge.is-published{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-planned{background:var(--surface-muted);color:var(--faint-foreground);border-style:dashed}.badge.is-solved{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-attempted{background:var(--warning-soft);color:var(--warning);border-color:#0000}.badge.is-not-started{background:var(--surface-muted);color:var(--faint-foreground)}.badge.is-completed{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-current{background:var(--primary);color:var(--primary-foreground);border-color:#0000}.badge.is-available{background:var(--primary-soft);color:var(--primary-strong);border-color:#0000}.badge.is-locked{background:var(--surface-muted);color:var(--faint-foreground);border-style:dashed}.badge.is-live{background:var(--success-soft);color:var(--success);border-color:#0000}.badge.is-off{background:var(--surface-muted);color:var(--faint-foreground)}.badge-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.tag{border-radius:var(--radius-sm);background:var(--surface-muted);height:24px;color:var(--foreground-secondary);font-size:var(--t-xs);font-family:var(--font-mono);align-items:center;padding:0 8px;display:inline-flex}.kbd{border:var(--border-w) solid var(--border-strong);background:var(--surface);height:20px;font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);border-bottom-width:2px;border-radius:4px;align-items:center;padding:0 6px;display:inline-flex}.card{background:var(--surface);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow)}.card-flat{box-shadow:none}.card-link{color:inherit;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),background var(--dur) var(--ease);display:block}.card-link:hover{border-color:var(--border-control);color:inherit;transform:translateY(-2px)}.card-title{font-family:var(--font-display);font-weight:600;font-size:var(--t-h4);letter-spacing:-.01em;line-height:1.3}.card-sub{color:var(--muted-foreground);font-size:var(--t-sm);line-height:1.55}.card-top{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.card-foot{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:var(--border-w) solid var(--border);font-size:var(--t-xs);color:var(--faint-foreground);font-family:var(--font-mono);display:flex}.card-icon{border-radius:var(--radius-md);background:var(--surface-muted);place-items:center;width:40px;height:40px;font-size:20px;display:grid}.progress{border-radius:var(--pill);background:var(--surface-muted);height:6px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:var(--pill);height:100%;transition:width .4s var(--ease);display:block}.progress.is-done .progress-fill{background:var(--success)}.progress-line{align-items:center;gap:var(--sp-3);font-size:var(--t-xs);font-family:var(--font-mono);color:var(--muted-foreground);display:flex}.progress-line .progress{flex:1}.empty{gap:var(--sp-3);text-align:center;padding:var(--sp-12) var(--sp-6);border:var(--border-w) dashed var(--border-strong);border-radius:var(--radius-lg);color:var(--muted-foreground);justify-items:center;display:grid}.empty h2{color:var(--foreground);font-size:var(--t-h4)}.empty p{max-width:44ch}.skeleton{background:linear-gradient(90deg,var(--surface-muted),var(--surface-hover),var(--surface-muted));border-radius:var(--radius-md);background-size:200% 100%;min-height:16px;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.alert{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);border:var(--border-w) solid var(--border);background:var(--surface-muted);font-size:var(--t-sm);display:flex}.alert.is-info{background:var(--info-soft);color:var(--info);border-color:#0000}.alert.is-success{background:var(--success-soft);color:var(--success);border-color:#0000}.alert.is-warning{background:var(--warning-soft);color:var(--warning);border-color:#0000}.alert.is-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.field{gap:6px;display:grid}.field label{font-size:var(--t-sm);color:var(--foreground-secondary);font-weight:560}.field .hint{font-size:var(--t-xs);color:var(--faint-foreground)}.input,.select,.textarea{border-radius:var(--radius-md);border:var(--border-w) solid var(--border-control);background:var(--input);width:100%;height:40px;color:var(--foreground);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);padding:0 12px}.textarea{resize:vertical;height:auto;min-height:120px;padding:10px 12px;line-height:1.5}.input::placeholder,.textarea::placeholder{color:var(--placeholder)}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted-foreground) 50%),linear-gradient(135deg,var(--muted-foreground) 50%,transparent 50%);background-position:calc(100% - 16px) 17px,calc(100% - 11px) 17px;background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.tabs{border-bottom:var(--border-w) solid var(--border);scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{height:40px;color:var(--muted-foreground);font-size:var(--t-sm);white-space:nowrap;border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:color var(--dur) var(--ease),background var(--dur) var(--ease);align-items:center;gap:8px;padding:0 14px;font-weight:560;display:inline-flex;position:relative}.tab:hover{color:var(--foreground);background:var(--surface-hover)}.tab[aria-selected=true]{color:var(--foreground)}.tab[aria-selected=true]:after{content:"";background:var(--primary);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.tab-n{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.dialog-scrim{z-index:80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade var(--dur) var(--ease);background:#070b148c;position:fixed;inset:0}.dialog{z-index:81;background:var(--surface-elevated);border:var(--border-w) solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop);animation:rise var(--dur) var(--ease);position:fixed}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.drawer{z-index:81;background:var(--surface-elevated);border-right:var(--border-w) solid var(--border);width:min(320px,88vw);box-shadow:var(--shadow-pop);animation:slide var(--dur) var(--ease);position:fixed;top:0;bottom:0;overflow-y:auto}.drawer.is-right{border-right:0;border-left:var(--border-w) solid var(--border);animation-name:slide-r;left:auto;right:0}@keyframes slide{0%{transform:translate(-100%)}to{transform:none}}@keyframes slide-r{0%{transform:translate(100%)}to{transform:none}}.sheet{z-index:81;background:var(--surface-elevated);border-top:var(--border-w) solid var(--border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:82vh;box-shadow:var(--shadow-pop);animation:sheet-up var(--dur) var(--ease);padding:var(--sp-4) var(--sp-5) var(--sp-8);position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.sheet:before{content:"";background:var(--border-strong);width:40px;height:4px;margin:0 auto var(--sp-4);border-radius:2px;display:block}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.dialog-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:var(--border-w) solid var(--border);display:flex}.dialog-body{padding:var(--sp-5)}.popover{z-index:60;background:var(--surface-elevated);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);min-width:220px;box-shadow:var(--shadow-pop);animation:rise var(--dur) var(--ease);padding:6px;position:absolute}.popover-item{border-radius:var(--radius-md);width:100%;color:var(--foreground);font-size:var(--t-sm);text-align:left;align-items:center;gap:10px;padding:9px 10px;display:flex}.popover-item:hover{background:var(--surface-hover);color:var(--foreground)}.popover-item.is-danger{color:var(--danger)}.popover-sep{background:var(--border);height:1px;margin:6px 0}.popover-head{font-size:var(--t-xs);color:var(--faint-foreground);font-family:var(--font-mono);padding:8px 10px 6px}.site{flex-direction:column;min-height:100dvh;display:flex}.site-main{flex:1}.topbar{z-index:50;height:var(--topbar-h);background:var(--header-background);-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4);border-bottom:var(--border-w) solid var(--border);position:sticky;top:0}.topbar-inner{align-items:center;gap:var(--sp-5);height:100%;display:flex}.brand{color:var(--foreground);font-family:var(--font-display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:19px;font-weight:700;display:inline-flex}.brand:hover{color:var(--foreground)}.brand-mark{background-color:var(--primary);background-image:var(--gradient-brand);width:28px;height:28px;color:var(--primary-foreground);font-family:var(--font-mono);letter-spacing:-.04em;border-radius:7px;place-items:center;font-size:12px;font-weight:700;display:grid}.brand .x10{color:var(--primary)}.nav{align-items:center;gap:2px;display:flex}.nav-link{border-radius:var(--radius-md);height:34px;color:var(--foreground-secondary);font-size:var(--t-sm);transition:background var(--dur) var(--ease),color var(--dur) var(--ease);align-items:center;padding:0 11px;font-weight:540;display:inline-flex}.nav-link:hover{background:var(--surface-hover);color:var(--foreground)}.nav-link.is-active{background:var(--primary-soft);color:var(--primary-strong)}.topbar-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.search-trigger{border-radius:var(--radius-md);border:var(--border-w) solid var(--border);background:var(--surface);height:36px;color:var(--muted-foreground);font-size:var(--t-sm);min-width:220px;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);align-items:center;gap:10px;padding:0 10px 0 12px;display:inline-flex}.search-trigger:hover{border-color:var(--border-control);background:var(--surface-hover);color:var(--foreground)}.search-trigger svg{flex:none;width:16px;height:16px}.search-trigger-text{text-align:left;flex:1}.avatar{background:var(--primary-soft);width:32px;height:32px;color:var(--primary-strong);font-size:var(--t-xs);letter-spacing:.02em;border:var(--border-w) solid var(--border);border-radius:50%;place-items:center;font-weight:640;display:grid}.avatar-btn{border-radius:50%}.menu-btn{display:none}@media (max-width:1024px){.nav{display:none}.menu-btn{display:inline-grid}.search-trigger{min-width:0}.search-trigger-text,.search-trigger .kbd{display:none}}.mobile-nav{padding:var(--sp-4);gap:var(--sp-2);display:grid}.mobile-nav .nav-link{height:44px;font-size:var(--t-body)}.mobile-nav-head{padding:var(--sp-2) var(--sp-2) var(--sp-4);justify-content:space-between;align-items:center;display:flex}.mobile-nav-group{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--faint-foreground);padding:var(--sp-4) var(--sp-3) var(--sp-2)}.footer{border-top:var(--border-w) solid var(--border);padding:var(--sp-12) 0 var(--sp-8);color:var(--muted-foreground);font-size:var(--t-sm)}.footer-grid{gap:var(--sp-8);grid-template-columns:1.4fr repeat(3,1fr);display:grid}.footer .footer-h{font-size:var(--t-sm);color:var(--foreground);margin-bottom:var(--sp-3);font-weight:600}.footer ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.footer a{color:var(--muted-foreground)}.footer a:hover{color:var(--foreground)}.footer-bottom{justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-10);padding-top:var(--sp-5);border-top:var(--border-w) solid var(--border);font-size:var(--t-xs);color:var(--faint-foreground);flex-wrap:wrap;display:flex}@media (max-width:820px){.footer-grid{grid-template-columns:1fr 1fr}}.palette{width:min(680px,100vw - 32px);max-height:min(70vh,640px);animation:rise var(--dur) var(--ease);flex-direction:column;display:flex;top:min(12vh,120px);left:50%;overflow:hidden;transform:translate(-50%)}.palette-input-row{padding:0 var(--sp-4);border-bottom:var(--border-w) solid var(--border);align-items:center;gap:12px;display:flex}.palette-input-row svg{width:18px;height:18px;color:var(--muted-foreground);flex:none}.palette-input{height:54px;font-size:var(--t-lg);color:var(--foreground);background:0 0;border:0;flex:1}.palette-input:focus{outline:none}.palette-input::placeholder{color:var(--placeholder)}.palette-list{overscroll-behavior:contain;flex:1;padding:8px;overflow-y:auto}.palette-group{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--faint-foreground);background:var(--surface-elevated);z-index:1;padding:10px 12px 4px;position:sticky;top:0}.palette-hit{border-radius:var(--radius-md);text-align:left;width:100%;color:var(--foreground);align-items:center;gap:12px;padding:9px 12px;display:flex}.palette-hit.is-active{background:var(--primary-soft)}.palette-hit-icon{background:var(--surface-muted);border-radius:6px;flex:none;place-items:center;width:28px;height:28px;font-size:14px;display:grid}.palette-hit-text{flex:1;gap:2px;min-width:0;display:grid}.palette-hit-title{font-size:var(--t-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:540;overflow:hidden}.palette-hit-title mark,.palette-hit-sub mark{color:var(--primary-strong);background:0 0;font-weight:640}.palette-hit-sub{font-size:var(--t-xs);color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.palette-hit-meta{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);white-space:nowrap}.palette-empty{padding:var(--sp-8) var(--sp-4);text-align:center;color:var(--muted-foreground);font-size:var(--t-sm)}.palette-foot{gap:var(--sp-4);padding:8px var(--sp-4);border-top:var(--border-w) solid var(--border);font-size:var(--t-xs);color:var(--faint-foreground);display:flex}.palette-foot .kbd{margin-right:4px}.palette-foot .count{font-family:var(--font-mono);margin-left:auto}@media (max-width:640px){.palette-hit-meta{display:none}.palette{max-height:calc(100dvh - 16px);top:8px}}.hero{padding:var(--sp-16) 0 var(--sp-12);gap:var(--sp-12);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;display:grid}.hero h1{font-size:var(--t-display);letter-spacing:-.03em;line-height:1.02}.hero-lead{color:var(--muted-foreground);letter-spacing:-.01em;margin-bottom:.25em;font-size:.55em;font-weight:560;display:block}.hero-accent{color:var(--primary)}.hero-loop{margin:var(--sp-5) 0;font-family:var(--font-mono);font-size:var(--t-sm);color:var(--foreground-secondary);letter-spacing:.02em;flex-wrap:wrap;gap:6px 0;display:flex}.hero-loop li{list-style:none}.hero-loop li+li:before{content:"→";color:var(--faint-foreground);margin:0 10px}.hero-lede{font-size:var(--t-lg);color:var(--muted-foreground);max-width:56ch;line-height:1.6}.hero-cta{gap:var(--sp-3);margin-top:var(--sp-6);flex-wrap:wrap;display:flex}.hero-meta{gap:var(--sp-5);margin-top:var(--sp-5);font-size:var(--t-xs);font-family:var(--font-mono);color:var(--faint-foreground);flex-wrap:wrap;display:flex}.hero-meta span:before{content:"✓";color:var(--success);margin-right:6px}@media (max-width:1024px){.hero{gap:var(--sp-8);grid-template-columns:1fr}}.topo{border:var(--border-w) solid var(--border);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow);aspect-ratio:1;max-height:520px;position:relative;overflow:hidden}.topo svg{width:100%;height:100%}.topo .edge{stroke:var(--border-strong);stroke-width:1.5px;fill:none}.topo .edge.is-hot{stroke:var(--primary);stroke-dasharray:4 6;animation:1.6s linear infinite dash}@keyframes dash{to{stroke-dashoffset:-20px}}.topo .node{fill:var(--surface-elevated);stroke:var(--border-strong);stroke-width:1.5px}.topo .node.is-primary{fill:var(--primary-soft);stroke:var(--primary)}.topo .node-label{font-family:var(--font-mono);fill:var(--foreground);font-size:11px}.topo .node-sub{font-family:var(--font-mono);fill:var(--muted-foreground);font-size:9px}.topo-caption{left:var(--sp-4);bottom:var(--sp-4);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);position:absolute}.loop-strip{border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);grid-template-columns:repeat(8,1fr);gap:0;display:grid;overflow:hidden}.loop-step{padding:var(--sp-4);border-right:var(--border-w) solid var(--border);color:inherit;transition:background var(--dur) var(--ease);gap:4px;display:grid}.loop-step:last-child{border-right:0}.loop-step:hover{background:var(--surface-hover);color:inherit}.loop-step .n{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.loop-step .t{font-weight:600;font-size:var(--t-sm)}.loop-step .d{font-size:var(--t-xs);color:var(--muted-foreground)}@media (max-width:1024px){.loop-strip{grid-template-columns:repeat(4,1fr)}.loop-step:nth-child(4n){border-right:0}.loop-step:nth-child(-n+4){border-bottom:var(--border-w) solid var(--border)}}@media (max-width:640px){.loop-strip{grid-template-columns:repeat(2,1fr)}.loop-step{border-right:var(--border-w) solid var(--border);border-bottom:var(--border-w) solid var(--border)}.loop-step:nth-child(2n){border-right:0}}.feature{gap:var(--sp-3);display:grid}.feature-icon{border-radius:var(--radius-md);background:var(--primary-soft);width:40px;height:40px;color:var(--primary-strong);place-items:center;font-size:18px;display:grid}.feature h3{font-size:var(--t-h4)}.feature p{color:var(--muted-foreground);font-size:var(--t-sm)}.feature a{font-size:var(--t-sm);font-weight:560}.outcomes{background:var(--border);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.outcome{background:var(--surface);padding:var(--sp-5)}.outcome b{font-family:var(--font-display);font-size:var(--t-h2);letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:block}.outcome span{font-size:var(--t-sm);color:var(--muted-foreground)}@media (max-width:820px){.outcomes{grid-template-columns:repeat(2,1fr)}}.domain-head{align-items:center;gap:var(--sp-4);margin:var(--sp-10) 0 var(--sp-4);display:flex}.domain-swatch{background:var(--domain,var(--primary));border-radius:5px;width:10px;height:36px}.domain-head h2{font-size:var(--t-h3)}.domain-head p{color:var(--muted-foreground);font-size:var(--t-sm);max-width:70ch}.domain-nav{padding:var(--sp-4) 0;top:var(--topbar-h);background:var(--header-background);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;flex-wrap:wrap;gap:8px;display:flex;position:sticky}.course-card{gap:var(--sp-3);grid-template-rows:auto 1fr auto;min-height:220px;display:grid;position:relative}.course-card .card-title{font-size:var(--t-lg)}.course-card .tagline{font-size:var(--t-sm);color:var(--muted-foreground);font-style:italic}.course-progress{left:var(--sp-5);right:var(--sp-5);bottom:calc(var(--sp-5) - 2px);position:absolute}.course-head{gap:var(--sp-10);padding:var(--sp-10) 0 var(--sp-8);grid-template-columns:minmax(0,1fr) 340px;align-items:start;display:grid}.course-head h1{font-size:var(--t-h1);margin-top:var(--sp-3)}.course-head .tagline{font-size:var(--t-lg);color:var(--muted-foreground);margin-top:var(--sp-2);font-style:italic}.course-head .summary{margin-top:var(--sp-4);max-width:66ch;color:var(--foreground-secondary)}.course-facts{gap:var(--sp-5);margin-top:var(--sp-5);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);flex-wrap:wrap;display:flex}.course-facts b{color:var(--foreground);font-weight:600}.course-aside{top:calc(var(--topbar-h) + 16px);position:sticky}.course-aside .card{gap:var(--sp-4);display:grid}.course-aside .btn{width:100%}.outcome-list{color:var(--foreground-secondary);font-size:var(--t-sm);gap:8px;margin:0;padding-left:20px;display:grid}.outcome-list li::marker{color:var(--success)}.prereq-list{flex-wrap:wrap;gap:8px;display:flex}@media (max-width:1024px){.course-head{grid-template-columns:1fr}.course-aside{position:static}}.curriculum{gap:var(--sp-5);display:grid}.module{border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.module-head{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--surface-muted);border-bottom:var(--border-w) solid var(--border);display:flex}.module-head .n{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.module-head h3{font-size:var(--t-body);font-weight:600}.module-head .meta{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);margin-left:auto}.lesson-row{gap:var(--sp-3);padding:12px var(--sp-5);border-bottom:var(--border-w) solid var(--border);color:inherit;transition:background var(--dur) var(--ease);grid-template-columns:28px minmax(0,1fr) auto;align-items:center;display:grid}.lesson-row:last-child{border-bottom:0}a.lesson-row:hover{background:var(--surface-hover);color:inherit}.lesson-row .mark{border:var(--border-w) solid var(--border-strong);width:22px;height:22px;color:var(--faint-foreground);border-radius:50%;place-items:center;font-size:11px;display:grid}.lesson-row.is-done .mark{background:var(--success);border-color:var(--success);color:#fff}.lesson-row.is-planned{color:var(--muted-foreground)}.lesson-row.is-planned .mark{border-style:dashed}.lesson-row .t{font-weight:540;font-size:var(--t-sm)}.lesson-row .s{font-size:var(--t-xs);color:var(--muted-foreground);margin-top:2px}.lesson-row .m{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);white-space:nowrap}.roadmap-layout{gap:var(--sp-8);grid-template-columns:minmax(0,1fr) 360px;align-items:start;display:grid}.roadmap-legend{gap:var(--sp-4);font-size:var(--t-xs);font-family:var(--font-mono);color:var(--muted-foreground);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.roadmap-legend span{align-items:center;gap:6px;display:inline-flex}.roadmap-legend i{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:3px;width:10px;height:10px}.roadmap-legend i.is-completed{background:var(--success);border-color:var(--success)}.roadmap-legend i.is-current{background:var(--primary);border-color:var(--primary)}.roadmap-legend i.is-available{background:var(--primary-soft);border-color:var(--primary)}.roadmap-legend i.is-locked{border-style:dashed}.roadmap{gap:0;display:grid;position:relative}.roadmap-stage{gap:var(--sp-4);padding:var(--sp-3) 0;grid-template-columns:120px minmax(0,1fr);display:grid}.roadmap-stage-label{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);text-align:right;letter-spacing:.06em;text-transform:uppercase;padding-top:14px}.roadmap-stage-nodes{gap:var(--sp-3);padding-left:var(--sp-5);border-left:2px solid var(--border);flex-wrap:wrap;display:flex;position:relative}.roadmap-node{border-radius:var(--radius-lg);border:var(--border-w) solid var(--border-strong);background:var(--surface);min-width:220px;color:inherit;text-align:left;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform var(--dur) var(--ease);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:10px 14px;display:grid;position:relative}.roadmap-node:before{content:"";left:calc(-1 * var(--sp-5) - 1px);width:var(--sp-5);background:var(--border);height:2px;position:absolute;top:50%}.roadmap-node:hover{border-color:var(--primary);transform:translate(2px)}.roadmap-node.is-selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.roadmap-node .ico{background:var(--surface-muted);border-radius:8px;place-items:center;width:32px;height:32px;font-size:16px;display:grid}.roadmap-node .t{font-weight:600;font-size:var(--t-sm)}.roadmap-node .s{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);margin-top:2px}.roadmap-node.is-completed{border-color:var(--success)}.roadmap-node.is-completed .ico{background:var(--success-soft)}.roadmap-node.is-current{border-color:var(--primary);background:var(--primary-soft)}.roadmap-node.is-current:before{background:var(--primary)}.roadmap-node.is-locked{color:var(--muted-foreground);border-style:dashed}.roadmap-node.is-locked .ico{filter:grayscale()}.roadmap-end{margin-top:var(--sp-4);padding:var(--sp-5);border-radius:var(--radius-lg);background-color:var(--primary);background-image:var(--gradient-brand);color:var(--primary-foreground);gap:4px;display:grid}.roadmap-end b{font-family:var(--font-display);font-size:var(--t-h3)}.roadmap-end span{opacity:.85;font-size:var(--t-sm)}.roadmap-panel{top:calc(var(--topbar-h) + 16px);gap:var(--sp-4);display:grid;position:sticky}.roadmap-panel .card{gap:var(--sp-4);display:grid}.panel-kv{font-size:var(--t-sm);grid-template-columns:auto 1fr;gap:8px 16px;display:grid}.panel-kv dt{color:var(--muted-foreground);font-family:var(--font-mono);font-size:var(--t-xs);padding-top:2px}.panel-kv dd{margin:0}@media (max-width:1024px){.roadmap-layout{grid-template-columns:1fr}.roadmap-panel{display:none}.roadmap-stage{grid-template-columns:1fr}.roadmap-stage-label{text-align:left;padding:0 0 4px}}.player{grid-template-columns:var(--rail-w) minmax(0,1fr) var(--ctx-w);gap:var(--sp-8);padding-top:var(--sp-6);align-items:start;display:grid}.player-rail,.player-ctx{top:calc(var(--topbar-h) + 16px);max-height:calc(100dvh - var(--topbar-h) - 32px);scrollbar-width:thin;position:sticky;overflow-y:auto}.rail-course{padding:0 var(--sp-2) var(--sp-4);border-bottom:var(--border-w) solid var(--border);margin-bottom:var(--sp-3);gap:4px;display:grid}.rail-course a{color:var(--foreground);font-weight:600;font-size:var(--t-sm)}.rail-course .progress-line{margin-top:6px}.rail-module{margin-bottom:var(--sp-3)}.rail-module-title{padding:6px var(--sp-2);font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--faint-foreground);align-items:center;gap:8px;display:flex}.rail-lesson{padding:7px var(--sp-2);border-radius:var(--radius-md);color:var(--foreground-secondary);font-size:var(--t-sm);transition:background var(--dur) var(--ease),color var(--dur) var(--ease);grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.rail-lesson:hover{background:var(--surface-hover);color:var(--foreground)}.rail-lesson.is-active{background:var(--primary-soft);color:var(--primary-strong);font-weight:560}.rail-lesson .mark{border:1.5px solid var(--border-strong);color:#0000;border-radius:50%;place-items:center;width:16px;height:16px;font-size:9px;display:grid}.rail-lesson.is-done .mark{background:var(--success);border-color:var(--success);color:#fff}.rail-lesson.is-active .mark{border-color:var(--primary)}.rail-lesson.is-planned{color:var(--faint-foreground)}.rail-lesson.is-planned .mark{border-style:dashed}.rail-lesson .m{font-family:var(--font-mono);color:var(--faint-foreground);font-size:10px}.rail-lesson .t{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lesson{min-width:0}.lesson-crumbs{font-size:var(--t-xs);font-family:var(--font-mono);color:var(--faint-foreground);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lesson-crumbs a{color:var(--muted-foreground)}.lesson-crumbs a:hover{color:var(--foreground)}.lesson-head{gap:var(--sp-3);padding:var(--sp-4) 0 var(--sp-6);border-bottom:var(--border-w) solid var(--border);margin-bottom:var(--sp-6);display:grid}.lesson-head h1{font-size:var(--t-h1)}.lesson-head .summary{font-size:var(--t-lg);color:var(--muted-foreground);max-width:66ch;line-height:1.55}.lesson-meta{gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);flex-wrap:wrap;align-items:center;display:flex}.lesson-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lesson-actions{justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-6) 0;margin-top:var(--sp-8);border-top:var(--border-w) solid var(--border);flex-wrap:wrap;display:flex}.lesson-nav{gap:var(--sp-4);margin-top:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.lesson-nav a{padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:inherit;transition:border-color var(--dur) var(--ease);gap:4px;display:grid}.lesson-nav a:hover{border-color:var(--primary);color:inherit}.lesson-nav .dir{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.lesson-nav .t{font-weight:600;font-size:var(--t-sm)}.lesson-nav .is-next{text-align:right}.mark-complete{gap:10px}.mark-complete.is-done{background:var(--success-soft);border-color:var(--success);color:var(--success)}.planned-box{gap:var(--sp-4);padding:var(--sp-6);border:var(--border-w) dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-muted);display:grid}.planned-box ol{color:var(--foreground-secondary);gap:8px;margin:0;padding-left:22px;display:grid}.ctx-block{padding:0 0 var(--sp-5);margin-bottom:var(--sp-5);border-bottom:var(--border-w) solid var(--border);gap:8px;display:grid}.ctx-block:last-child{border-bottom:0}.ctx-title{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--faint-foreground)}.toc{gap:2px;margin:0;padding:0;list-style:none;display:grid}.toc a{color:var(--muted-foreground);font-size:var(--t-sm);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease);border-left:2px solid #0000;padding:5px 10px;line-height:1.35;display:block}.toc a:hover{color:var(--foreground)}.toc a.is-active{color:var(--primary-strong);border-left-color:var(--primary)}.toc .d3 a{font-size:var(--t-xs);padding-left:22px}.ctx-link{border-radius:var(--radius-md);color:var(--foreground-secondary);font-size:var(--t-sm);transition:background var(--dur) var(--ease);align-items:center;gap:10px;padding:8px 10px;display:flex}.ctx-link:hover{background:var(--surface-hover);color:var(--foreground)}.ctx-link .ico{background:var(--surface-muted);border-radius:6px;place-items:center;width:24px;height:24px;font-size:13px;display:grid}.player-drawer-btns{margin-bottom:var(--sp-4);gap:8px;display:none}@media (max-width:1280px){.player{grid-template-columns:var(--rail-w) minmax(0,1fr)}.player-ctx{display:none}}@media (max-width:1024px){.player{grid-template-columns:1fr;gap:0}.player-rail{display:none}.player-drawer-btns{display:flex}}.prose{font-size:var(--t-read);line-height:var(--lh-read);color:var(--foreground);max-width:60ch}.prose>*+*{margin-top:1.1em}.prose h2{font-size:var(--t-read-h2);letter-spacing:-.015em;margin-top:2.1em;padding-top:.2em;line-height:1.25;position:relative}.prose h3{font-size:var(--t-read-h3);letter-spacing:-.01em;margin-top:1.8em;line-height:1.3}.prose h2+*,.prose h3+*{margin-top:.7em}.prose .anchor{color:var(--faint-foreground);opacity:0;transition:opacity var(--dur) var(--ease);font-weight:400;position:absolute;left:-1.1em}.prose h2:hover .anchor,.prose h3:hover .anchor{opacity:1}.prose p{color:var(--foreground-secondary)}.prose strong{color:var(--foreground);font-weight:650}.prose em{color:var(--foreground);font-style:italic}.prose strong em,.prose em strong{color:var(--foreground);font-weight:650}.prose ul,.prose ol{color:var(--foreground-secondary);padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--faint-foreground)}.prose a{text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:3px}.prose a:hover{-webkit-text-decoration-color:var(--primary);text-decoration-color:var(--primary)}.prose code:not(pre code){background:var(--surface-muted);border:var(--border-w) solid var(--border);color:var(--foreground);font-variant-ligatures:none;overflow-wrap:break-word;border-radius:5px;padding:.1em .38em;font-size:.84em}.prose hr{border:0;border-top:var(--border-w) solid var(--border);margin:2em 0}.prose blockquote{border-left:3px solid var(--border-strong);color:var(--muted-foreground);margin:0;padding:0 0 0 1em;font-style:italic}.table-wrap{border:var(--border-w) solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.prose th{text-align:left;font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--muted-foreground);background:var(--surface-muted);border-bottom:var(--border-w) solid var(--border-strong);padding:10px 12px;font-weight:500}.prose td{border-bottom:var(--border-w) solid var(--border);vertical-align:top;color:var(--foreground-secondary);padding:9px 12px}.prose tr:last-child td{border-bottom:0}.prose td code{white-space:nowrap}.prose details{border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface);margin:1em 0}.prose details summary{cursor:pointer;color:var(--foreground);align-items:center;gap:8px;padding:10px 14px;font-weight:600;list-style:none;display:flex}.prose details summary::-webkit-details-marker{display:none}.prose details summary:before{content:"+";font-family:var(--font-mono);color:var(--faint-foreground);width:1em}.prose details[open] summary:before{content:"−"}.prose details[open] summary{border-bottom:var(--border-w) solid var(--border)}.prose details>:not(summary){margin-left:14px;margin-right:14px}.prose details>summary+*{margin-top:12px}.prose details>:last-child{margin-bottom:12px}.prose figure.diagram{border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);margin:1.5em 0;padding:16px}.prose figure.diagram svg{width:100%;max-width:720px;height:auto;font-family:var(--font-mono);color:var(--foreground);margin:0 auto;font-size:12px;display:block}.prose figure.diagram svg text:not([fill]){fill:currentColor}.prose figure.diagram figcaption{font-size:var(--t-sm);color:var(--muted-foreground);text-align:center;margin-top:10px}.prose .try{counter-reset:ex}.prose .try h3:before{counter-increment:ex;content:counter(ex) ". ";color:var(--faint-foreground)}figure.code{border:var(--border-w) solid var(--code-border);border-radius:var(--radius-lg);background:var(--code-background);color:var(--code-foreground);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;margin:0;position:relative;overflow:hidden}.code-caption{border-bottom:1px solid var(--code-border);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--code-line);letter-spacing:.02em;align-items:center;gap:10px;padding:9px 16px;display:flex}.code-title{color:var(--code-foreground)}.code-lang{text-transform:uppercase;letter-spacing:.06em;margin-left:auto}.code-copy{border:1px solid var(--code-border);height:24px;color:var(--code-line);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;opacity:0;transition:opacity var(--dur) var(--ease),color var(--dur) var(--ease);background:0 0;border-radius:5px;padding:0 8px;font-size:10.5px;position:absolute;top:6px;right:8px}figure.code:hover .code-copy,.code-copy:focus-visible{opacity:1}.code-copy:hover{color:var(--code-foreground)}.code-copy.is-done{color:var(--success);opacity:1}.code-caption+.code-copy{top:5px}figure.code pre{font-size:var(--t-code);tab-size:4;font-variant-ligatures:none;font-feature-settings:"tnum" 1;margin:0;padding:16px 0;line-height:1.7;overflow-x:auto}figure.code code{counter-reset:line;min-width:max-content;display:block}.ln{counter-increment:line;padding:0 18px 0 0;display:block}.ln:before{content:counter(line);text-align:right;width:2.2em;color:var(--code-line);opacity:.55;-webkit-user-select:none;user-select:none;box-sizing:content-box;margin-right:1.5em;padding-left:16px;display:inline-block}.ln.is-hl{background:var(--code-hl);box-shadow:inset 3px 0 0 var(--primary)}.predict{border-top:1px solid var(--code-border);gap:10px;padding:12px 14px;display:grid}.predict-label{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--code-line)}.predict-input{resize:vertical;border:1px solid var(--code-border);background:var(--code-background);width:100%;color:var(--code-foreground);font-family:var(--font-mono);border-radius:6px;padding:8px 10px;font-size:13px;line-height:1.6}.predict-input:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.predict-input[readonly]{opacity:.65}.predict-actions{flex-wrap:wrap;gap:8px;display:flex}.predict-result{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--code-line);display:block}.predict-result:empty{display:none}.predict-output{border:1px solid var(--code-border);color:var(--code-foreground);white-space:pre-wrap;background:#ffffff08;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-size:13px;line-height:1.6;overflow-x:auto}figure.code.is-right .predict{box-shadow:inset 3px 0 0 var(--syn-string)}figure.code.is-right .predict-result{color:var(--syn-string)}figure.code.is-wrong .predict{box-shadow:inset 3px 0 0 var(--syn-number)}figure.code.is-wrong .predict-result{color:var(--syn-number)}figure.code.is-revealed .predict{box-shadow:inset 3px 0 0 var(--code-line)}figure.viz{border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);margin:28px 0;overflow:hidden}.viz-frames{padding:18px 18px 0}.viz-frame[hidden]{display:none}.viz-stage{overflow-x:auto}.journey{flex-direction:column;gap:34px;display:flex}.journey-key{font-size:var(--t-sm);color:var(--muted-foreground);flex-wrap:wrap;align-items:center;gap:14px;display:flex}.journey-key .k{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.journey-key .k-w{background:var(--primary)}.journey-key .k-o{background:var(--primary-soft);border:1px solid var(--primary)}.journey-key .k-m{background:var(--surface-hover);border:1px solid var(--border-strong)}.journey-key-sum{font-variant-numeric:tabular-nums;margin-left:auto}.journey-band-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:14px;padding-bottom:10px;display:flex}.journey-band-head h3{font-size:var(--t-lg);margin:0}.journey-band-head p{color:var(--muted-foreground);font-size:var(--t-sm);flex:260px;margin:0}.journey-band-stat{font-size:var(--t-sm);color:var(--muted-foreground);font-variant-numeric:tabular-nums;white-space:nowrap}.journey-phases{grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.jp-link{border:1px solid var(--border);background:var(--surface);color:inherit;height:100%;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);border-radius:10px;gap:12px;padding:14px;text-decoration:none;display:flex}a.jp-link:hover{border-color:var(--primary);background:var(--surface-hover)}a.jp-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.jp-link.is-inert{cursor:default}.journey-phase.is-empty .jp-link{background:0 0;border-style:dashed}.jp-n{font-family:var(--font-mono);font-size:var(--t-sm);color:var(--muted-foreground);font-variant-numeric:tabular-nums}.jp-body{flex-direction:column;gap:6px;min-width:0;display:flex}.jp-title{font-weight:650;line-height:1.3}.jp-summary{font-size:var(--t-sm);color:var(--muted-foreground);overflow-wrap:break-word;line-height:1.5}.jp-meta{font-size:var(--t-xs);color:var(--muted-foreground);font-variant-numeric:tabular-nums}.jbar{background:var(--surface-hover);border-radius:3px;height:6px;margin-top:2px;display:flex;overflow:hidden}.jbar-w{background:var(--primary)}.jbar-o{background:var(--primary-soft)}.jbar-m{background:var(--border-strong)}.viz-track-scroll{overflow-x:auto}.viz-stage svg.viz-state{min-width:0;margin-top:10px}.viz-stage svg{width:100%;min-width:520px;height:auto;color:var(--foreground);font-family:var(--font-mono);font-size:12px;display:block}.viz-stage svg text:not([fill]){fill:currentColor}.viz-note{font-size:var(--t-sm);color:var(--muted-foreground);max-width:68ch;margin:12px 0 0;line-height:1.6}.viz-note b{color:var(--foreground);font-weight:650}.viz-controls{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:14px 18px;display:flex}.viz-btn{border:1px solid var(--border-strong);background:var(--surface);min-width:34px;height:30px;color:var(--foreground);font-size:var(--t-sm);cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease);border-radius:6px;padding:0 10px}.viz-btn:hover:not(:disabled){background:var(--surface-hover)}.viz-btn:disabled{opacity:.4;cursor:default}.viz-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.viz-play.is-playing{border-color:var(--primary);color:var(--primary)}.viz-dots{gap:6px;display:flex}.viz-dot{border:1px solid var(--border-control);cursor:pointer;width:9px;height:9px;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease);background:0 0;border-radius:50%;padding:0}.viz-dot.is-on{background:var(--primary);border-color:var(--primary)}.viz-dot:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.viz-count{font-size:var(--t-xs);color:var(--muted-foreground);font-variant-numeric:tabular-nums;margin-left:auto}figure.viz.is-broken{border-color:var(--danger);padding:14px 18px}figure.viz.is-broken figcaption{color:var(--danger);font-size:var(--t-sm)}.viz-picks{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:16px;padding:14px 18px;display:flex}.viz-pick{font-size:var(--t-sm);color:var(--muted-foreground);align-items:center;gap:8px;display:flex}.viz-pick select{border:1px solid var(--border-control);background:var(--surface);height:30px;color:var(--foreground);font-size:var(--t-sm);border-radius:6px;padding:0 8px;font-family:inherit}.viz-pick select:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.viz-stats{flex-wrap:wrap;gap:0;margin:0;padding:0 18px 4px;display:flex}.viz-stat{flex-direction:column;gap:2px;padding:10px 22px 10px 0;display:flex}.viz-stat dt{font-size:var(--t-xs);color:var(--muted-foreground)}.viz-stat dd{font-family:var(--font-mono);font-size:var(--t-sm);color:var(--foreground);font-variant-numeric:tabular-nums;margin:0}figure.viz.is-degraded .viz-stat:last-child dd{color:var(--danger);font-weight:650}figure.viz.is-interactive .viz-note{margin:0;padding:0 18px 16px}.viz-toggle{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);cursor:pointer;align-items:center;gap:6px;padding:3px 0;display:inline-flex}.viz-toggle input{accent-color:var(--primary);cursor:pointer;margin:0}.viz-toggle:has(input:checked){color:var(--foreground)}.viz-toggle input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.viz-progress{background:var(--surface-muted);border-radius:2px;flex:1;min-width:80px;height:4px;overflow:hidden}.viz-progress span{background:var(--primary);height:100%;transition:width .22s linear;display:block}figure.viz.is-animated .viz-stage{padding:18px 18px 0}figure.viz.is-animated .viz-note{font-size:var(--t-sm);color:var(--muted-foreground);margin:0;padding:12px 18px 0}figure.viz.is-animated .viz-note b{color:var(--foreground)}@media (prefers-reduced-motion:reduce){.viz-progress span{transition:none}}.hljs-comment,.hljs-quote{color:var(--syn-comment);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-meta-keyword,.hljs-doctag{color:var(--syn-keyword)}.hljs-string,.hljs-meta-string,.hljs-regexp,.hljs-addition{color:var(--syn-string)}.hljs-number,.hljs-symbol,.hljs-bullet{color:var(--syn-number)}.hljs-type,.hljs-class .hljs-title,.hljs-title.class_,.hljs-built_in,.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable,.hljs-selector-class{color:var(--syn-type)}.hljs-title,.hljs-title.function_,.hljs-function .hljs-title,.hljs-section,.hljs-name,.hljs-selector-id{color:var(--syn-fn)}.hljs-punctuation,.hljs-operator,.hljs-tag,.hljs-params{color:var(--syn-punct)}.hljs-meta{color:var(--syn-comment)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-deletion{color:var(--danger)}.callout{border-radius:var(--radius-md);border:var(--border-w) solid var(--border);border-left:3px solid var(--callout,var(--primary));background:var(--surface);gap:6px;padding:14px 16px 14px 18px;display:grid}.callout-label{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--callout,var(--primary));font-weight:600}.callout-body>*+*{margin-top:.6em}.callout-body p,.callout-body li{font-size:var(--t-sm);color:var(--foreground-secondary)}.callout-body ul{margin:0;padding-left:1.2em}.callout.is-info{--callout:var(--info)}.callout.is-tip{--callout:var(--cyan)}.callout.is-warning{--callout:var(--warning)}.callout.is-best{--callout:var(--success)}.callout.is-interview{--callout:var(--accent-secondary)}.callout.is-mistake{--callout:var(--danger)}.callout.is-production{--callout:var(--warning)}.callout.is-takeaway{--callout:var(--primary);background:var(--primary-soft);border-color:#0000}.problem-card{gap:var(--sp-3);display:grid;position:relative}.problem-card .card-title{font-size:var(--t-lg)}.problem-card .kind{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);align-items:center;gap:6px;display:inline-flex}.problem-card .status{top:var(--sp-4);right:var(--sp-4);position:absolute}.lab{gap:var(--sp-6);padding-top:var(--sp-5);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;display:grid}.lab-tabs{display:none}.lab-problem{min-width:0}.lab-problem .prose{max-width:none}.lab-problem h1{font-size:var(--t-h2);margin:var(--sp-3) 0 var(--sp-4)}.lab-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lab-section{margin-top:var(--sp-6)}.lab-section h2{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--faint-foreground);margin-bottom:var(--sp-3)}.example{padding:var(--sp-3) var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted);font-family:var(--font-mono);font-size:var(--t-sm);grid-template-columns:auto 1fr;gap:6px 14px;display:grid}.example b{color:var(--muted-foreground);font-weight:500}.example code{white-space:pre-wrap}.lab-work{top:calc(var(--topbar-h) + 16px);gap:var(--sp-4);min-width:0;display:grid;position:sticky}.editor{border:var(--border-w) solid var(--code-border);border-radius:var(--radius-lg);background:var(--code-background);color:var(--code-foreground);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;overflow:hidden}.editor-head{border-bottom:1px solid var(--code-border);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--code-line);align-items:center;gap:10px;padding:8px 12px;display:flex}.editor-head .btn{border-color:var(--code-border);height:26px;color:var(--code-line);background:0 0;padding:0 10px;font-size:10.5px}.editor-head .btn:hover{color:var(--code-foreground);border-color:var(--code-line)}.editor textarea{width:100%;min-height:360px;color:var(--code-foreground);font-family:var(--font-mono);tab-size:4;resize:vertical;white-space:pre;background:0 0;border:0;padding:14px 16px;font-size:13px;line-height:1.6;display:block;overflow:auto}.editor textarea:focus{outline:none}.editor-note{font-family:var(--font-mono);color:var(--code-line);border-top:1px solid var(--code-border);padding:6px 12px;font-size:10.5px}.runner{gap:var(--sp-3);display:grid}.runner-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.runner-bar .note{font-size:var(--t-xs);color:var(--muted-foreground)}.tests{gap:6px;display:grid}.test-row{border-radius:var(--radius-md);border:var(--border-w) solid var(--border);background:var(--surface);font-size:var(--t-sm);grid-template-columns:20px minmax(0,1fr);align-items:start;gap:10px;padding:10px 12px;display:grid}.test-row .ico{font-family:var(--font-mono);font-weight:700}.test-row.is-pass{border-color:var(--success)}.test-row.is-pass .ico{color:var(--success)}.test-row.is-fail{border-color:var(--danger)}.test-row.is-fail .ico{color:var(--danger)}.test-row .why{font-size:var(--t-xs);color:var(--danger);margin-top:4px;display:block}.console{border-radius:var(--radius-md);background:var(--code-background);color:var(--code-foreground);font-family:var(--font-mono);white-space:pre-wrap;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border:1px solid var(--code-border);margin:6px 0 0;padding:10px 12px;font-size:12px;line-height:1.5;overflow-x:auto}.console b{color:var(--code-line);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:10px;font-weight:500;display:block}.runner-off{padding:var(--sp-4);border-radius:var(--radius-md);border:var(--border-w) dashed var(--border-strong);background:var(--surface-muted);font-size:var(--t-sm);color:var(--muted-foreground);gap:8px;display:grid}.runner-off b{color:var(--foreground)}.result-line{font-size:var(--t-sm)}.result-line.is-ok{color:var(--success)}.result-line.is-bad{color:var(--danger)}.hint{border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.hint summary{cursor:pointer;font-size:var(--t-sm);align-items:center;gap:8px;padding:10px 14px;font-weight:560;list-style:none;display:flex}.hint summary::-webkit-details-marker{display:none}.hint summary:before{content:"+";font-family:var(--font-mono);color:var(--faint-foreground)}.hint[open] summary:before{content:"−"}.hint .body{font-size:var(--t-sm);color:var(--foreground-secondary);padding:0 14px 12px}@media (max-width:1024px){.lab{grid-template-columns:1fr}.lab-tabs{display:flex}.lab-work{position:static}.lab[data-tab=problem] .lab-work,.lab[data-tab=code] .lab-problem{display:none}}.incident{gap:var(--sp-5);display:grid}.signals{background:var(--border);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.signal{background:var(--surface);padding:var(--sp-3) var(--sp-4);gap:4px;display:grid}.signal .k{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint-foreground);font-size:10px}.signal .v{font-family:var(--font-mono);font-size:var(--t-sm);color:var(--foreground)}.signal.is-bad .v{color:var(--danger)}@media (max-width:820px){.signals{grid-template-columns:repeat(2,1fr)}}.diagnosis{gap:var(--sp-3);display:grid}.diagnosis .textarea{min-height:140px;font-family:var(--font-body)}.reveal{border:var(--border-w) solid var(--primary);border-radius:var(--radius-lg);background:var(--primary-soft);padding:var(--sp-5);gap:var(--sp-3);display:grid}.reveal h3{font-size:var(--t-h4)}.timeline{border-left:2px solid var(--border);gap:0;margin:0;padding:0;list-style:none;display:grid}.timeline li{padding:6px 0 10px var(--sp-5);font-size:var(--t-sm);position:relative}.timeline li:before{content:"";background:var(--surface);border:2px solid var(--border-strong);border-radius:50%;width:10px;height:10px;position:absolute;top:12px;left:-6px}.timeline li.is-bad:before{border-color:var(--danger);background:var(--danger-soft)}.timeline .t{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);margin-right:8px}.quiz{gap:var(--sp-8);grid-template-columns:minmax(0,1fr) 260px;align-items:start;display:grid}.quiz-q{gap:var(--sp-5);display:grid}.quiz-q .n{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.quiz-q h2{font-size:var(--t-h3);line-height:1.3}.q-options{gap:8px;display:grid}.q-option{border-radius:var(--radius-md);border:var(--border-w) solid var(--border-strong);background:var(--surface);color:var(--foreground);text-align:left;font-size:var(--t-sm);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.q-option:hover{border-color:var(--primary);background:var(--surface-hover)}.q-option .k{background:var(--surface-muted);width:24px;height:24px;font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);border-radius:6px;place-items:center;display:grid}.q-option.is-picked{border-color:var(--primary);background:var(--primary-soft)}.q-option.is-picked .k{background:var(--primary);color:#fff}.q-option.is-correct{border-color:var(--success);background:var(--success-soft)}.q-option.is-correct .k{background:var(--success);color:#fff}.q-option.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.q-option.is-wrong .k{background:var(--danger);color:#fff}.q-option .lab{font-family:var(--font-mono);font-size:var(--t-xs)}.q-explain{padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface-muted);border:var(--border-w) solid var(--border);font-size:var(--t-sm);color:var(--foreground-secondary)}.quiz-actions{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.q-nav{top:calc(var(--topbar-h) + 16px);gap:var(--sp-3);display:grid;position:sticky}.q-grid{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.q-dot{border-radius:var(--radius-sm);border:var(--border-w) solid var(--border-strong);background:var(--surface);height:34px;font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);place-items:center;display:grid;position:relative}.q-dot.is-answered{background:var(--success-soft);border-color:var(--success);color:var(--success)}.q-dot.is-answered:after{content:"✓";background:var(--success);color:#fff;border-radius:50%;place-items:center;width:12px;height:12px;font-size:9px;display:grid;position:absolute;top:-4px;right:-4px}.q-dot.is-review{background:var(--warning-soft);border-color:var(--warning);color:var(--warning)}.q-dot.is-review:after{content:"?";background:var(--warning);color:#fff;border-radius:50%;place-items:center;width:12px;height:12px;font-size:9px;display:grid;position:absolute;top:-4px;right:-4px}.q-dot.is-current{border-width:2px;border-color:var(--primary);color:var(--primary-strong);font-weight:700}.q-legend{font-size:var(--t-xs);color:var(--muted-foreground);gap:6px;display:grid}.q-legend span{align-items:center;gap:8px;display:flex}.q-legend .q-dot{width:24px;height:20px;font-size:9px}@media (max-width:1024px){.quiz{grid-template-columns:1fr}.q-nav{position:static}}.result-hero{gap:var(--sp-8);padding:var(--sp-8);border-radius:var(--radius-xl);background:var(--surface);border:var(--border-w) solid var(--border);grid-template-columns:auto 1fr;align-items:center;display:grid}.ring{width:140px;height:140px;position:relative}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:10px}.ring .bg{stroke:var(--surface-muted)}.ring .fg{stroke:var(--primary);stroke-linecap:round;transition:stroke-dashoffset .8s var(--ease)}.ring .val{font-family:var(--font-display);font-size:var(--t-h2);letter-spacing:-.02em;place-items:center;font-weight:700;display:grid;position:absolute;inset:0}.result-stats{gap:var(--sp-6);grid-template-columns:repeat(3,auto);display:grid}.result-stats b{font-family:var(--font-display);font-size:var(--t-h3);display:block}.result-stats span{font-size:var(--t-xs);color:var(--muted-foreground);font-family:var(--font-mono)}@media (max-width:640px){.result-hero{text-align:center;grid-template-columns:1fr;justify-items:center}}.review-row{padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface);font-size:var(--t-sm);gap:8px;display:grid}.review-row .q{font-weight:600}.review-row .a{flex-wrap:wrap;gap:10px;display:flex}.review-row .a span{font-family:var(--font-mono);font-size:var(--t-xs);border-radius:4px;padding:2px 8px}.review-row .a .wrong{background:var(--danger-soft);color:var(--danger);text-decoration:line-through}.review-row .a .right{background:var(--success-soft);color:var(--success)}.pj-layout{gap:var(--sp-10);padding-top:var(--sp-6);grid-template-columns:minmax(0,1fr) 320px;align-items:start;display:grid}.pj-aside{top:calc(var(--topbar-h) + 16px);gap:var(--sp-4);display:grid;position:sticky}@media (max-width:1024px){.pj-layout{grid-template-columns:1fr}.pj-aside{position:static}}.milestones{gap:var(--sp-3);counter-reset:ms;margin:0;padding:0;list-style:none;display:grid}.milestone{gap:var(--sp-3);padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);grid-template-columns:36px minmax(0,1fr);display:grid}.milestone:before{counter-increment:ms;content:counter(ms,decimal-leading-zero);font-family:var(--font-mono);font-size:var(--t-sm);color:var(--faint-foreground);padding-top:2px}.milestone h3{font-size:var(--t-body)}.milestone p{font-size:var(--t-sm);color:var(--foreground-secondary);margin-top:4px}.milestone .done{font-size:var(--t-xs);font-family:var(--font-mono);color:var(--success);margin-top:8px}.milestone .done b{color:var(--faint-foreground);margin-right:6px;font-weight:500}.tradeoff{padding:var(--sp-4);border-left:3px solid var(--warning);background:var(--surface);border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:var(--t-sm);gap:6px;display:grid}.tradeoff b{color:var(--foreground)}.tradeoff .cost{color:var(--muted-foreground)}.sd-section{gap:var(--sp-4);padding:var(--sp-6) 0;border-top:var(--border-w) solid var(--border);display:grid}.sd-section h2{font-size:var(--t-h3)}.sd-section .lead{color:var(--muted-foreground)}.estimate{font-family:var(--font-mono);font-size:var(--t-sm);padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted);grid-template-columns:auto 1fr;gap:8px 16px;display:grid}.estimate dt{color:var(--muted-foreground)}.estimate dd{color:var(--foreground);margin:0}.arch{gap:8px;display:grid}.arch-row{gap:var(--sp-4);border-bottom:var(--border-w) solid var(--border);font-size:var(--t-sm);grid-template-columns:180px minmax(0,1fr);padding:12px 0;display:grid}.arch-row b{font-family:var(--font-mono);color:var(--foreground);font-weight:500}.arch-row span{color:var(--foreground-secondary)}@media (max-width:640px){.arch-row{grid-template-columns:1fr;gap:4px}}.decision{padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);font-size:var(--t-sm);gap:8px;display:grid}.decision .q{color:var(--foreground);font-weight:600}.decision .pick{color:var(--foreground-secondary)}.decision .cost{color:var(--warning)}.decision .cost:before{content:"cost · ";font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground)}.iq-list{gap:8px;display:grid}.iq-row{gap:var(--sp-3);border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:inherit;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:14px 16px;display:grid}.iq-row:hover{border-color:var(--border-control);background:var(--surface-hover);color:inherit}.iq-row .q{font-weight:560;font-size:var(--t-sm)}.iq-row .m{align-items:center;gap:6px;display:flex}.iq-detail{max-width:820px}.iq-detail h1{font-size:var(--t-h2);margin:var(--sp-3) 0 var(--sp-4);line-height:1.25}.iq-panel{padding:var(--sp-5) 0}.iq-panel .prose{max-width:none}.followups{gap:8px;display:grid}.followup{border-radius:var(--radius-md);border:var(--border-w) solid var(--border);background:var(--surface);font-size:var(--t-sm);padding:12px 14px}.followup b{margin-bottom:4px;display:block}.followup span{color:var(--foreground-secondary)}.iq-actions{margin-top:var(--sp-5);flex-wrap:wrap;gap:8px;display:flex}.exp-chip{font-family:var(--font-mono)}.dash{gap:var(--sp-6);display:grid}.stat-tiles{gap:var(--sp-3);grid-template-columns:repeat(5,1fr);display:grid}.stat-tile{padding:var(--sp-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:inherit;gap:6px;display:grid}a.stat-tile:hover{border-color:var(--border-control);color:inherit}.stat-tile .k{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--faint-foreground)}.stat-tile .v{font-family:var(--font-display);font-size:var(--t-h2);letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.stat-tile .s{font-size:var(--t-xs);color:var(--muted-foreground)}@media (max-width:1024px){.stat-tiles{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.stat-tiles{grid-template-columns:repeat(2,1fr)}}.dash-grid{gap:var(--sp-5);grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;display:grid}@media (max-width:1024px){.dash-grid{grid-template-columns:1fr}}.resume{gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--radius-lg);background:var(--primary-soft);border:var(--border-w) solid var(--primary);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;display:grid}.resume .ico{background:var(--surface);border-radius:10px;place-items:center;width:44px;height:44px;font-size:22px;display:grid}.resume .e{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--primary-strong);letter-spacing:.06em;text-transform:uppercase}.resume .t{margin-top:2px;font-weight:600}.resume .s{font-size:var(--t-sm);color:var(--muted-foreground)}@media (max-width:640px){.resume{grid-template-columns:auto 1fr}.resume .btn{grid-column:1/-1}}.heat{grid-template-columns:repeat(7,1fr);gap:4px;max-width:280px;display:grid}.heat i{aspect-ratio:1;background:var(--surface-muted);border-radius:3px}.heat i.l1{background:var(--primary-soft)}.heat i.l2{background:color-mix(in srgb,var(--primary) 45%,var(--surface))}.heat i.l3{background:var(--primary)}.heat-foot{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);font-size:var(--t-xs);color:var(--muted-foreground);display:flex}.track-row{gap:var(--sp-3);border-bottom:var(--border-w) solid var(--border);color:inherit;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:12px 0;display:grid}.track-row:last-child{border-bottom:0}.track-row:hover{color:inherit}.track-row .t{font-weight:560;font-size:var(--t-sm)}.track-row .progress{margin-top:6px}.track-row .p{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted-foreground);text-align:right}.track-row .p b{color:var(--foreground);font-size:var(--t-sm);display:block}.next-step{padding:var(--sp-4);border-radius:var(--radius-lg);border:var(--border-w) solid var(--border);background:var(--surface);gap:8px;display:grid}.next-step .e{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--faint-foreground);letter-spacing:.06em;text-transform:uppercase}.saved-group{margin-bottom:var(--sp-6);gap:8px;display:grid}.saved-row{gap:var(--sp-3);border:var(--border-w) solid var(--border);border-radius:var(--radius-md);background:var(--surface);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:10px 14px;display:grid}.saved-row .t{font-weight:540;font-size:var(--t-sm)}.saved-row .s{font-size:var(--t-xs);color:var(--muted-foreground)}.badge-grid{gap:var(--sp-4);grid-template-columns:repeat(4,1fr);display:grid}@media (max-width:1024px){.badge-grid{grid-template-columns:repeat(2,1fr)}}.ach{padding:var(--sp-5);border:var(--border-w) solid var(--border);border-radius:var(--radius-lg);background:var(--surface);gap:8px;display:grid}.ach.is-locked{opacity:.75;border-style:dashed}.ach .ico{background:var(--primary-soft);border-radius:10px;place-items:center;width:44px;height:44px;font-size:22px;display:grid}.ach.is-locked .ico{background:var(--surface-muted);filter:grayscale()}.ach h3{font-size:var(--t-body)}.ach p{font-size:var(--t-xs);color:var(--muted-foreground)}.ach .when{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--success)}.settings{gap:var(--sp-10);padding-top:var(--sp-6);grid-template-columns:200px minmax(0,1fr);align-items:start;display:grid}.settings-nav{top:calc(var(--topbar-h) + 16px);gap:2px;display:grid;position:sticky}.settings-nav a{border-radius:var(--radius-md);color:var(--muted-foreground);font-size:var(--t-sm);padding:8px 10px}.settings-nav a:hover,.settings-nav a.is-active{background:var(--surface-hover);color:var(--foreground)}.settings-section{gap:var(--sp-4);padding:var(--sp-6) 0;border-bottom:var(--border-w) solid var(--border);scroll-margin-top:calc(var(--topbar-h) + 16px);display:grid}.settings-section h2{font-size:var(--t-h4)}.settings-section .desc{font-size:var(--t-sm);color:var(--muted-foreground);max-width:60ch}.form-row{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (max-width:1024px){.settings{grid-template-columns:1fr}.settings-nav{flex-wrap:wrap;display:flex;position:static}}@media (max-width:640px){.form-row{grid-template-columns:1fr}}.theme-choice{gap:var(--sp-3);grid-template-columns:repeat(3,1fr);display:grid}.theme-opt{padding:var(--sp-3);border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface);text-align:left;color:inherit;gap:8px;display:grid}.theme-opt[aria-checked=true]{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.theme-opt .sw{border:var(--border-w) solid var(--border);border-radius:6px;height:44px}.theme-opt .sw.is-light{background:linear-gradient(#f7f8fa 40%,#fff 40%)}.theme-opt .sw.is-dark{background:linear-gradient(#070b14 40%,#0d1420 40%)}.theme-opt .sw.is-system{background:linear-gradient(90deg,#f7f8fa 50%,#070b14 50%)}.theme-opt b{font-size:var(--t-sm)}.auth{max-width:420px;margin:var(--sp-12) auto;gap:var(--sp-5);display:grid}.auth .card{gap:var(--sp-4);display:grid}.auth h1{font-size:var(--t-h2)}.auth .alt{text-align:center;font-size:var(--t-sm);color:var(--muted-foreground)}.profile-head{gap:var(--sp-5);padding:var(--sp-8) 0;grid-template-columns:auto 1fr;align-items:center;display:grid}.profile-head .avatar{width:72px;height:72px;font-size:var(--t-h3)}.profile-head h1{font-size:var(--t-h2)}.profile-head .handle{font-family:var(--font-mono);color:var(--muted-foreground)}.profile-head .headline{color:var(--foreground-secondary);margin-top:6px}.sync{font-size:var(--t-xs);font-family:var(--font-mono);color:var(--muted-foreground);align-items:center;gap:8px;display:inline-flex}.sync i{background:var(--faint-foreground);border-radius:50%;width:7px;height:7px}.sync.is-synced i{background:var(--success)}.sync.is-syncing i{background:var(--primary);animation:1s infinite pulse}.sync.is-error i,.sync.is-offline i{background:var(--warning)}@keyframes pulse{50%{opacity:.3}}.toast{z-index:90;border-radius:var(--radius-md);background:var(--foreground);color:var(--background);font-size:var(--t-sm);box-shadow:var(--shadow-pop);animation:rise var(--dur) var(--ease);padding:10px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.notfound{gap:var(--sp-4);text-align:center;padding:var(--sp-20) 0;justify-items:center;display:grid}.notfound h1{font-size:var(--t-display);font-family:var(--font-mono);color:var(--faint-foreground)}.notfound-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.start-btn,.retry-btn{border-radius:var(--radius-md);border:var(--border-w) solid var(--primary);background:var(--primary);height:40px;color:var(--primary-foreground);font-weight:560;font-size:var(--t-sm);justify-content:center;align-items:center;gap:8px;padding:0 16px;display:inline-flex}.start-btn:hover,.retry-btn:hover{background:var(--primary-hover);color:var(--primary-foreground)}
