@font-face{font-family:GeistSans;src:url(/_next/static/media/cf72403939ff961f-s.p.woff2) format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local("Arial");ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.00%;size-adjust:106.28%}.__className_fee4ca{font-family:GeistSans,GeistSans Fallback}.__variable_fee4ca{--font-geist-sans:"GeistSans","GeistSans Fallback"}@font-face{font-family:GeistMono;src:url(/_next/static/media/2bcd4b1f8f3a3e9f.p.woff2) format("woff2");font-display:swap;font-weight:100 900}.__className_9f1075{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.__variable_9f1075{--font-geist-mono:"GeistMono",ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/archivo-vietnamese-wght-normal.3b352474.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/archivo-latin-ext-wght-normal.1a471e96.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/archivo-latin-wght-normal.2829ce62.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--bg:#ffffff;--soft:#f6f5f3;--soft-hover:#eceae6;--raised:#ffffff;--line:#e6e3df;--line-strong:#d9d4ce;--control-ring:#8f8a85;--ink:#111111;--ink-2:#3a3734;--muted:#66625e;--accent:#5b8fd1;--accent-hover:#78a4dc;--on-accent:#111111;--on-accent-muted:rgba(17,17,17,0.85);--accent-soft:#e4edf8;--on-accent-soft:#1f4274;--primary:var(--ink);--on-primary:#ffffff;--night:#0f0f0f;--night-2:#1a1a1a;--night-line:#2b2b2b;--on-night:#f2f2f2;--on-night-muted:#a3a3a3;--success:#1e7a4f;--success-soft:#e3f2ea;--warning:#8a5a00;--warning-soft:#fbf0d9;--danger:#b42318;--danger-soft:#fbe6e3;--chart-grid:#efece8;--font-display:"Archivo Variable",Archivo,"Helvetica Neue",Arial,sans-serif;--font-body:var(--font-geist-sans),Geist,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--font-mono:var(--font-geist-mono),ui-monospace,SFMono-Regular,Menlo,monospace;--r-xs:4px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:16px;--r-pill:999px;--ring:0 0 0 1px var(--line);--lift:0 0 0 1px var(--ink),0 26px 44px -30px rgba(60,40,20,0.45);--container:1320px;--gutter:20px;--section:clamp(64px,9vw,120px);--dur-1:120ms;--dur-2:180ms;--dur-3:260ms;--dur-4:360ms;--ease-out:cubic-bezier(0.22,1,0.36,1);--spring:cubic-bezier(0.34,1.56,0.64,1)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit}img,svg{max-width:100%}:focus-visible{outline:2px solid var(--focus,var(--ink));outline-offset:3px;border-radius:var(--r-xs)}::selection{background:var(--accent-soft);color:var(--on-accent-soft)}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}.night{background:var(--night);color:var(--on-night);--focus:var(--on-night)}.night .muted{color:var(--on-night-muted)}.soft-band{background:var(--soft)}.section{padding:var(--section) 0}.display,h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:0}.hero{font-size:clamp(44px,8.4vw,132px);line-height:.9;text-transform:uppercase}.h1,.hero{font-weight:800;letter-spacing:-.03em}.h1{font-size:clamp(38px,6vw,84px);line-height:.95}.h2{font-weight:700;font-size:clamp(30px,4.2vw,56px);line-height:1.04;letter-spacing:-.028em;max-width:18em}.h3{font-size:clamp(22px,2.6vw,32px)}.h3,.title{font-weight:700;line-height:1.2}.title{font-size:21px;letter-spacing:-.01em}.figure,.title{font-family:var(--font-display)}.figure{font-weight:800;font-size:clamp(40px,5vw,68px);line-height:.95;letter-spacing:-.035em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lead{font-size:clamp(17px,1.4vw,20px);color:var(--muted);max-width:38em;margin:0}.night .lead{color:var(--on-night-muted)}.label{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.label .plus{color:var(--accent)}.night .label{color:var(--on-night-muted)}.caption{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.caption,.muted{color:var(--muted)}p{margin:0 0 1em}.prose li,.prose p{color:var(--ink-2);max-width:68ch}.prose strong{color:var(--ink)}code{font-family:var(--font-mono);font-size:.88em;background:var(--soft);padding:.1em .35em;border-radius:var(--r-xs)}.bar{position:-webkit-sticky;position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}.bar-inner{height:64px;gap:16px}.bar-inner,.brand{display:flex;align-items:center}.brand{gap:10px;text-decoration:none;font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:-.01em;white-space:nowrap}.brand img{width:24px;height:24px;flex:none}.nav{display:flex;gap:4px;margin-left:auto;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a{text-decoration:none;font-size:15px;padding:8px 12px;border-radius:var(--r-pill);white-space:nowrap;color:var(--ink-2);transition:background var(--dur-1) var(--ease-out)}.nav a:hover{background:var(--soft)}.nav a[aria-current=page]{background:var(--ink);color:var(--on-primary)}.btn{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 22px;border-radius:var(--r-pill);border:0;font:600 16px/1 var(--font-body);text-decoration:none;cursor:pointer;background:var(--primary);color:var(--on-primary);transition:background var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.btn:hover{background:var(--accent);color:var(--on-accent)}.btn .arrow{transition:transform var(--dur-2) var(--ease-out)}.btn:hover .arrow{transform:translateX(3px)}.btn.ghost{background:transparent;color:inherit;box-shadow:inset 0 0 0 1.5px var(--control-ring)}.btn.ghost:hover{background:var(--soft);color:var(--ink)}.night .btn{background:var(--on-night);color:var(--night)}.night .btn:hover{background:var(--accent);color:var(--on-accent)}.night .btn.ghost{background:transparent;color:var(--on-night);box-shadow:inset 0 0 0 1.5px #444}.btn.sm{height:38px;padding:0 16px;font-size:15px}.btn.ai{background:var(--accent);color:var(--on-accent)}.btn.ai:hover{background:var(--accent-hover)}.chip{text-decoration:none;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--r-pill);font-size:12px;font-weight:600;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--ink-2);background:var(--bg);white-space:nowrap}.chip.ai{background:var(--accent-soft);color:var(--on-accent-soft);box-shadow:none}.chip.ink{background:var(--ink);color:var(--on-primary);box-shadow:none}.chip.good{background:var(--success-soft);color:var(--success);box-shadow:none}.chips{display:flex;flex-wrap:wrap;gap:8px}.pill-toggle{display:inline-flex;flex-wrap:wrap;gap:6px;padding:4px;background:var(--soft);border-radius:var(--r-pill)}.pill-toggle button{border:0;background:transparent;padding:8px 14px;border-radius:var(--r-pill);font:500 14px/1 var(--font-body);color:var(--ink-2);cursor:pointer;min-height:36px}.pill-toggle button[aria-pressed=true]{background:var(--ink);color:var(--on-primary)}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:16px;gap:16px}.span-12{grid-column:span 12}.span-7{grid-column:span 7}.span-6{grid-column:span 6}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.span-8{grid-column:span 8}@media (max-width:900px){.grid>*{grid-column:span 12!important}}.card{background:var(--raised);border-radius:var(--r-lg);box-shadow:var(--ring);padding:clamp(20px,2.4vw,28px)}a.card{text-decoration:none;display:block;transition:box-shadow var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out)}a.card:hover{box-shadow:var(--lift);transform:translateY(-4px)}.card.soft{background:var(--soft);box-shadow:none}.card.ai{background:var(--accent-soft);box-shadow:none;color:var(--on-accent-soft)}.card.accent{background:var(--accent);color:var(--on-accent);box-shadow:none}.card.accent .caption,.card.accent .muted{color:var(--on-accent-muted)}.night .card{background:var(--night-2);box-shadow:0 0 0 1px var(--night-line)}.stack>*+*{margin-top:12px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}.progress{height:6px;border-radius:var(--r-pill);background:var(--chart-grid);overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);border-radius:inherit;transition:width var(--dur-4) var(--ease-out)}.night .progress{background:var(--night-line)}.tabs{position:-webkit-sticky;position:sticky;top:64px;z-index:20;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}.tablist{display:flex;gap:4px;overflow-x:auto;padding:10px 0;scrollbar-width:none}.tablist::-webkit-scrollbar{display:none}.tab{border:0;background:transparent;padding:8px 14px;border-radius:var(--r-pill);font:500 15px/1 var(--font-body);color:var(--ink-2);cursor:pointer;white-space:nowrap;min-height:40px}.tab:hover{background:var(--soft)}.tab[aria-selected=true]{background:var(--ink);color:var(--on-primary)}.tab .count{font-size:12px;opacity:.7;margin-left:4px}.check{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-md);cursor:pointer;transition:background var(--dur-1) var(--ease-out)}.check:hover{background:var(--soft)}.check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;width:22px;height:22px;margin:2px 0 0;border-radius:6px;box-shadow:inset 0 0 0 1.5px var(--control-ring);display:grid;place-items:center;cursor:pointer;transition:background var(--dur-1) var(--spring)}.check input:checked{background:var(--ink);box-shadow:none}.check input:checked:after{content:"";width:10px;height:6px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}.check.done span{color:var(--muted)}.flash{perspective:1400px}.flash-inner{position:relative;min-height:280px;transition:transform var(--dur-4) var(--ease-out);transform-style:preserve-3d;cursor:pointer}.flash.flipped .flash-inner{transform:rotateY(180deg)}.flash-face{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:var(--r-xl);padding:clamp(24px,4vw,44px);display:flex;flex-direction:column;justify-content:center;gap:12px}.flash-front{background:var(--raised);box-shadow:var(--ring)}.flash-back{background:var(--accent-soft);color:var(--on-accent-soft);transform:rotateY(180deg)}.flash-q{font-family:var(--font-display);font-weight:700;font-size:clamp(22px,2.8vw,34px);line-height:1.15;letter-spacing:-.02em}.flash-a{font-size:clamp(17px,1.6vw,21px);line-height:1.5}.option{display:flex;gap:12px;width:100%;text-align:left;border:0;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--line-strong);border-radius:var(--r-md);padding:14px 16px;font:400 16px/1.45 var(--font-body);color:var(--ink);cursor:pointer;transition:background var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}.option:hover:not(:disabled){background:var(--soft)}.option .key{flex:none;width:26px;height:26px;border-radius:var(--r-pill);display:grid;place-items:center;font-size:13px;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--control-ring)}.option.correct{background:var(--success-soft);box-shadow:inset 0 0 0 1.5px var(--success)}.option.correct .key{background:var(--success);color:#fff;box-shadow:none}.option.wrong{background:var(--danger-soft);box-shadow:inset 0 0 0 1.5px var(--danger)}.option.wrong .key{background:var(--danger);color:#fff;box-shadow:none}.option:disabled{cursor:default}details.qa{border-radius:var(--r-md);box-shadow:var(--ring);background:var(--raised)}details.qa+details.qa{margin-top:10px}details.qa summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;gap:12px;align-items:flex-start;font-weight:600}details.qa summary::-webkit-details-marker{display:none}details.qa summary .plus{margin-left:auto;flex:none;width:28px;height:28px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--soft);transition:transform var(--dur-2) var(--ease-out)}details.qa[open] summary .plus{transform:rotate(45deg);background:var(--accent)}details.qa .answer{padding:0 18px 18px;color:var(--ink-2)}details.qa .answer .ai-point{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);margin-right:8px}pre.code{margin:0;background:var(--night);color:var(--on-night);border-radius:var(--r-md);padding:18px 20px;overflow-x:auto;font:13.5px/1.6 var(--font-mono)}pre.code code{background:none;padding:0;color:inherit}.table-wrap{overflow-x:auto;border-radius:var(--r-lg);box-shadow:var(--ring)}table{width:100%;border-collapse:collapse;font-size:15px}th{text-align:left;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--soft);padding:12px 16px}td{padding:14px 16px;border-top:1px solid var(--line);vertical-align:top;color:var(--ink-2)}td strong{color:var(--ink)}.video-frame{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:var(--r-xl);background:var(--night)}.video-frame iframe,.video-start,.video-start img{position:absolute;inset:0;width:100%;height:100%;border:0}.video-start{padding:0;background:none;cursor:pointer}.video-start img{object-fit:cover}.video-start:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.video-play{position:absolute;top:50%;left:50%;display:grid;place-items:center;width:72px;height:72px;padding-left:5px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-size:26px;transform:translate(-50%,-50%)}.simple-card{display:grid;grid-gap:18px;gap:18px;background:var(--accent-soft);border-radius:var(--r-lg);padding:clamp(18px,2.4vw,24px)}.simple-card .label,.simple-card p{color:var(--on-accent-soft)}.simple-card p{margin:6px 0 0;font-size:15px;line-height:1.5}.quick-check{background:var(--soft);border-radius:var(--r-lg);padding:clamp(18px,2.4vw,24px);margin-top:28px}.quick-check .quick-q{color:var(--ink);font-weight:600;margin:6px 0 14px}.quick-options{display:grid;grid-gap:8px;gap:8px}.quick-option{width:100%;min-height:48px;padding:12px 16px;border:0;border-radius:var(--r-md);background:var(--raised);box-shadow:var(--ring);color:var(--ink-2);font:inherit;text-align:left;cursor:pointer}.quick-option:hover:not(:disabled){box-shadow:inset 0 0 0 1.5px var(--control-ring)}.quick-option:focus-visible,.term:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.quick-option:disabled{cursor:default}.quick-option[data-state=right]{background:var(--success-soft);color:var(--success);box-shadow:inset 0 0 0 1.5px var(--success)}.quick-option[data-state=wrong]{background:var(--danger-soft);color:var(--danger);box-shadow:inset 0 0 0 1.5px var(--danger)}.quick-check .quick-result{margin:14px 0 0}.quick-check .quick-result[data-state=right],.quick-result[data-state=right] strong{color:var(--success)}.quick-check .quick-result[data-state=wrong],.quick-result[data-state=wrong] strong{color:var(--danger)}.term{padding:0;border:0;border-bottom:1.5px dotted var(--accent);background:none;color:var(--ink);font:inherit;font-weight:600;cursor:help}.term-card{z-index:60;display:grid;grid-gap:4px;gap:4px;max-width:min(320px,calc(100vw - 32px));padding:14px 16px;border-radius:var(--r-md);background:var(--night);color:var(--on-night);font-size:15px;line-height:1.45;box-shadow:0 8px 24px rgba(0,0,0,.18)}.term-arrow{fill:var(--night)}.diagram{background:var(--raised);box-shadow:var(--ring);border-radius:var(--r-xl);padding:clamp(16px,3vw,32px);overflow-x:auto}.diagram svg{display:block;margin:0 auto;height:auto}.diagram .loading{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}textarea.notes{min-height:140px;resize:vertical;border:0;border-radius:var(--r-md);padding:14px 16px;font:16px/1.5 var(--font-body)}input.search,textarea.notes{width:100%;box-shadow:inset 0 0 0 1.5px var(--control-ring);color:var(--ink);background:var(--bg)}input.search{max-width:420px;height:48px;border:0;border-radius:var(--r-pill);padding:0 20px;font:16px var(--font-body)}.footer{padding:48px 0}.footer a{text-decoration:none}.footer a:hover{color:var(--accent)}.ai-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--accent);flex:none}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:700px){.hide-sm{display:none}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition-duration:0s!important;animation-duration:0s!important}}.diagram .label{font-size:inherit;font-weight:inherit;letter-spacing:normal;text-transform:none;color:inherit}.diagram svg{max-width:none!important}.footer .stack>a{display:block;width:-moz-fit-content;width:fit-content}@media (max-width:700px){.brand span{display:none}.bar-inner{gap:8px}}.input,select.input,textarea.input{width:100%;min-height:48px;border:0;border-radius:var(--r-md);box-shadow:inset 0 0 0 1.5px var(--control-ring);padding:12px 16px;font:16px/1.4 var(--font-body);color:var(--ink);background:var(--bg)}textarea.input{min-height:96px;resize:vertical}textarea.input.mono{font-family:var(--font-mono);font-size:13.5px;line-height:1.55}.input:focus{outline:2px solid var(--ink);outline-offset:2px}.form{display:flex;flex-direction:column;gap:18px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.danger{background:var(--danger);color:#fff}.btn.danger:hover{background:#8f1c13;color:#fff}.alert{padding:14px 16px;border-radius:var(--r-md);font-size:15px}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.ok{background:var(--success-soft);color:var(--success)}.status{display:inline-flex;height:26px;align-items:center;padding:0 10px;border-radius:var(--r-pill);font-size:12px;font-weight:600}.status.pending{background:var(--warning-soft);color:var(--warning)}.status.approved,.status.published{background:var(--success-soft);color:var(--success)}.status.rejected,.status.suspended{background:var(--danger-soft);color:var(--danger)}.status.draft{background:var(--soft);color:var(--muted)}.status.coming_soon{background:var(--accent-soft);color:var(--on-accent-soft)}.admin-shell{display:grid;grid-template-columns:220px minmax(0,1fr);grid-gap:32px;gap:32px}.admin-nav{position:-webkit-sticky;position:sticky;top:88px;align-self:start;display:flex;flex-direction:column;gap:4px}.admin-nav a{text-decoration:none;padding:10px 14px;border-radius:var(--r-pill);color:var(--ink-2)}.admin-nav a:hover{background:var(--soft)}.admin-nav a[aria-current=page]{background:var(--ink);color:var(--on-primary)}@media (max-width:900px){.admin-shell{grid-template-columns:1fr}.admin-nav{position:static;flex-direction:row;overflow-x:auto}}.editor-list>.card{padding:16px}.mini{font-size:13px;padding:4px 10px;height:30px}:root{--section:clamp(28px,3.4vw,44px);--container:1120px}body{font-size:16px}.hero{font-size:clamp(26px,2.8vw,32px);text-transform:none}.h1,.hero{line-height:1.15;letter-spacing:-.02em;font-weight:700}.h1{font-size:clamp(24px,2.6vw,30px)}.h2{font-size:clamp(20px,2vw,24px);line-height:1.2;letter-spacing:-.015em}.h3{font-size:18px;letter-spacing:-.01em}.h3,.title{line-height:1.3}.title{font-size:16px}.figure{font-size:26px;font-weight:700;line-height:1.1;letter-spacing:-.02em}.lead{font-size:16px}.label{font-size:13px;letter-spacing:0;text-transform:none}.btn,.label{font-weight:500}.btn{height:40px;padding:0 18px;font-size:15px}.btn:hover{background:var(--ink-2);color:var(--on-primary)}.btn.sm{height:34px;padding:0 14px;font-size:14px}.btn.ai{background:var(--primary);color:var(--on-primary)}.btn.ai:hover{background:var(--ink-2)}.chip{height:24px;padding:0 10px}a.card:hover{box-shadow:0 0 0 1px var(--line-strong);transform:none}.card{border-radius:var(--r-md);padding:20px}.flash-q{font-size:clamp(19px,2vw,24px)}.flash-a{font-size:17px}th{font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;background:transparent}.night:not(.footer){background:transparent;color:inherit;--on-night:var(--ink);--on-night-muted:var(--muted);--night-2:var(--soft);--night-line:var(--line);--focus:var(--ink)}.night:not(.footer) .btn{background:var(--primary);color:var(--on-primary)}.night:not(.footer) .btn:hover{background:var(--ink-2);color:var(--on-primary)}.night:not(.footer) .btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--control-ring)}.night:not(.footer) .btn.ghost:hover{background:var(--soft)}.night:not(.footer) .label,.night:not(.footer) .lead,.night:not(.footer) .muted{color:var(--muted)}.night:not(.footer) .card{background:var(--raised);box-shadow:var(--ring)}.night:not(.footer) .progress{background:var(--chart-grid)}.admin-shell{grid-template-columns:minmax(0,1fr);gap:16px}.admin-nav{position:static;flex-direction:row;overflow-x:auto}.admin-nav a{font-size:14px;white-space:nowrap;padding:7px 12px}.admin-nav a[aria-current=page]{background:var(--soft-hover);color:var(--ink)}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.side{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:20px;padding:18px 12px;background:var(--soft)}.side-brand{display:flex;align-items:center;justify-content:space-between;padding:0 8px}.side-toggle{display:none;border:0;background:transparent;font:500 14px/1 var(--font-body);color:var(--ink);padding:8px;cursor:pointer}.side-nav{display:flex;flex-direction:column;gap:2px}.side-nav a{text-decoration:none;font-size:15px;padding:7px 10px;border-radius:var(--r-sm);color:var(--ink-2)}.side-nav a:hover{background:var(--soft-hover)}.side-nav a[aria-current=page]{background:var(--soft-hover);color:var(--ink);font-weight:500}.side-group{font-size:13px;color:var(--muted);padding:12px 10px 4px}.side-user{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px}.side-user a{text-decoration:none;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-user button{border:0;background:transparent;font:400 13px/1 var(--font-body);color:var(--muted);cursor:pointer;padding:6px;white-space:nowrap}.shell-main{min-width:0}.page{max-width:1080px;margin:0 auto;padding:32px clamp(16px,3vw,36px) 64px;gap:24px}.page,.page-head{display:flex;flex-direction:column}.page-head{gap:4px}.page-head p{margin:0;color:var(--muted)}.panel{background:var(--raised);box-shadow:var(--ring);border-radius:var(--r-md)}.panel-pad{padding:20px;display:flex;flex-direction:column;gap:12px}.split{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:16px;gap:16px;align-items:start}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--raised);box-shadow:var(--ring);border-radius:var(--r-md)}.stats>div{padding:14px 18px;display:flex;flex-direction:column;gap:2px}.stats>div+div{box-shadow:-1px 0 0 var(--line)}.stats .k{font-size:13px;color:var(--muted)}.stats .v{font-size:22px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stats .v small{font-size:14px;font-weight:400;color:var(--muted)}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;font-size:15px;text-decoration:none}.list-row+.list-row{border-top:1px solid var(--line)}.list-row .sub{color:var(--muted);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}details.level{background:var(--raised);box-shadow:var(--ring);border-radius:var(--r-md)}details.level+details.level{margin-top:10px}details.level>summary{list-style:none;cursor:pointer;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}details.level>summary::-webkit-details-marker{display:none}details.level>summary:after{content:"+";font-size:20px;line-height:1;color:var(--muted);flex:none}details.level[open]>summary:after{content:"−"}.level-title{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.01em}.level-sub{font-size:13px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lesson{display:grid;grid-template-columns:22px minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;padding:11px 18px;text-decoration:none;border-top:1px solid var(--line);font-size:15px}a.lesson:hover{background:var(--soft)}.lesson.locked{color:var(--muted)}.lesson.current,a.lesson.current:hover{background:var(--accent-soft)}.lesson .meta{font-size:13px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.mark{width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--control-ring);display:grid;place-items:center;font-size:11px;line-height:1;flex:none}.mark.done{background:var(--ink);color:var(--on-primary);box-shadow:none}.mark.now{background:var(--accent);box-shadow:none}.mark.lock{box-shadow:none;background:var(--soft-hover)}.player{min-height:100vh;display:flex;flex-direction:column}.pl-top{position:-webkit-sticky;position:sticky;top:0;z-index:30;height:56px;flex:none;background:var(--bg);box-shadow:0 1px 0 var(--line);display:flex;align-items:center;gap:16px;padding:0 16px}.pl-back{text-decoration:none;font-size:14px;color:var(--muted);white-space:nowrap}.pl-back:hover{color:var(--ink)}.pl-name{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 1 auto}.pl-name,.pl-prog{white-space:nowrap}.pl-prog{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex:none}.pl-prog .progress{width:120px}.pl-body{flex:1 1 auto;display:grid;grid-template-columns:300px minmax(0,1fr)}.pl-out{position:-webkit-sticky;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto;background:var(--soft);padding:14px 10px 24px}.pl-group{font-size:13px;color:var(--muted);padding:12px 8px 4px}.pl-item{width:100%;display:grid;grid-template-columns:18px minmax(0,1fr);grid-gap:10px;gap:10px;align-items:center;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:var(--r-sm);font:400 14px/1.3 var(--font-body);color:var(--ink-2);cursor:pointer}.pl-item:hover{background:var(--soft-hover)}.pl-item[aria-current=step]{background:var(--raised);color:var(--ink);font-weight:500;box-shadow:var(--ring)}.pl-main{min-width:0;padding:32px clamp(16px,4vw,48px) 48px}.pl-col{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:20px}.pl-col.wide{max-width:1040px}.reading{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:32px;gap:32px;align-items:start}.reading>.prose{grid-column:1;grid-row:1}.reading>.simple-card{grid-column:2;grid-row:1;position:-webkit-sticky;position:sticky;top:72px;max-height:calc(100vh - 88px);overflow-y:auto}@media (max-width:1200px){.reading{grid-template-columns:minmax(0,1fr);gap:24px}.reading>.prose,.reading>.simple-card{grid-column:auto;grid-row:auto}.reading>.simple-card{position:static;max-height:none}}.pl-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:6px}.clarity{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--soft);border-radius:var(--r-md)}.clarity>div{padding:12px 16px;font-size:14px;line-height:1.45}.clarity .k{display:block;font-size:13px;color:var(--muted);margin-bottom:2px}.pl-nav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:20px;border-top:1px solid var(--line);margin-top:8px}.pl-mobile{display:none}.pl-mobile>summary{list-style:none;cursor:pointer;padding:12px 16px;font-size:14px;font-weight:500;background:var(--soft);display:flex;justify-content:space-between;gap:12px}.pl-mobile>summary::-webkit-details-marker{display:none}.pl-mobile .pl-list{padding:0 10px 12px;background:var(--soft)}@media (max-width:960px){.shell{grid-template-columns:minmax(0,1fr)}.side{position:static;height:auto;gap:0;padding:8px 12px}.side-toggle{display:block}.side-body{display:none;flex-direction:column;gap:12px;padding-top:10px}.side.open .side-body{display:flex}.split{grid-template-columns:minmax(0,1fr)}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats>div:nth-child(3){box-shadow:none}.stats>div:nth-child(n+3){border-top:1px solid var(--line)}.pl-body{grid-template-columns:minmax(0,1fr)}.pl-out{display:none}.pl-mobile{display:block}.pl-prog .progress{display:none}.clarity{grid-template-columns:minmax(0,1fr)}.side-user{display:none}.side.open .side-user{display:flex}}.night:not(.footer){--night:var(--bg)}.shell-main .container{max-width:1080px;padding:0 clamp(16px,3vw,36px)}.diagram foreignObject{overflow:visible}.slide-pill{position:absolute;left:0;right:0;top:0;z-index:0;border-radius:var(--r-sm);pointer-events:none;opacity:0;will-change:transform}.pl-list,.side-nav{position:relative}.side-nav .slide-pill{background:var(--soft-hover)}.side-group,.side-nav a{position:relative;z-index:1}.side-nav a[aria-current=page]{background:transparent}.pl-out .slide-pill{background:var(--raised);box-shadow:var(--ring)}.pl-out .pl-item{position:relative;z-index:1}.pl-out .pl-item[aria-current=step]{background:transparent;box-shadow:none}.pl-out .pl-group{position:relative;z-index:1}.progress.slide{position:relative}.progress.slide>span{width:100%;transition:none;will-change:transform}.btn{transition:background var(--dur-1) ease,color var(--dur-1) ease,transform var(--dur-1) ease}.btn:active:not(:disabled){transform:scale(.97)}.lesson,.list-row,.option,.pl-item,.side-nav a{transition:background var(--dur-1) ease}.pl-points{display:inline-flex}.xp{display:flex;margin:0 auto;max-width:calc((100dvh - 320px) * 16 / 9);flex-direction:column;border-radius:var(--r-xl);background:var(--night);color:var(--on-night)}.xp,.xp-view{position:relative;overflow:hidden}.xp-view{aspect-ratio:16/9}.xp-stage{position:absolute;left:50%;top:50%;width:1200px;height:675px;transform:translate(-50%,-50%) scale(var(--s,1))}.xp-arrows{position:absolute;inset:0;width:100%;height:100%;color:var(--on-night-muted)}.xp-el{position:absolute;left:0;top:0;padding:22px 26px;border-radius:20px;background:var(--night-2);box-shadow:0 0 0 2px var(--night-line);font:600 38px/1.2 var(--font-body);text-align:center;will-change:transform,opacity}.xp-el small{display:block;margin-top:8px;font:400 30px/1.25 var(--font-body);color:var(--on-night-muted)}.xp-el.xp-chip{padding:14px 24px;font-size:34px}.xp-el.xp-chip small{margin:0 0 2px;font:400 28px/1.2 var(--font-mono)}.xp-el.xp-code{padding:14px 20px;font:400 32px/1.2 var(--font-mono)}.xp-el.xp-note{padding:0;box-shadow:none;font:400 32px/1.3 var(--font-body)}.xp-el.xp-frame,.xp-el.xp-note{background:none;color:var(--on-night-muted)}.xp-el.xp-frame{padding:14px 26px;box-shadow:0 0 0 2px var(--night-line);font:500 30px/1.2 var(--font-body);text-align:left}.xp-el.xp-you{background:var(--on-night);color:var(--ink);box-shadow:none}.xp-el.xp-you small{color:var(--ink-2)}.xp-el.xp-ai{background:var(--accent);color:var(--on-accent);box-shadow:none}.xp-el.xp-ai small{color:var(--on-accent-muted)}.xp-cap{display:grid;padding:14px clamp(16px,3vw,28px) 16px}.xp-cap p{grid-area:1/1;margin:0;visibility:hidden;font-size:18px;line-height:1.45}.xp-cap p.on{visibility:visible}.xp-scroll{position:absolute;inset:0 0 52px;overflow-y:auto;scrollbar-width:none}.xp-scroll::-webkit-scrollbar{display:none}.xp-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.xp-hint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);padding:6px 14px;border-radius:var(--r-pill);background:var(--on-night);color:var(--ink);font-size:14px;font-weight:500;white-space:nowrap;pointer-events:none}.xp-bar{position:relative;z-index:1;display:flex;align-items:center;gap:2px;height:52px;padding:0 8px;border-top:1px solid var(--night-line)}.xp-btn{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border:0;border-radius:var(--r-sm);background:none;color:var(--on-night);cursor:pointer}.xp-btn:hover{background:var(--night-2)}.xp-btn:focus-visible,.xp-seek button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.xp-seek{position:relative;flex:1 1 auto;display:flex;gap:3px;height:44px;margin:0 8px}.xp-seek button{position:relative;min-width:0;padding:0;border:0;background:none;cursor:pointer}.xp-seek button:after{content:"";position:absolute;left:0;right:0;top:20px;height:4px;border-radius:2px;background:var(--night-line)}.xp-seek button:hover:after{background:var(--on-night-muted)}.xp-fill{position:absolute;left:0;right:0;top:20px;height:4px;z-index:1;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;pointer-events:none}.xp-count{flex:none;min-width:52px;padding-right:4px;font-size:14px;text-align:right;color:var(--on-night-muted)}.xp:-webkit-full-screen{position:fixed;inset:0;margin:0;max-width:none;z-index:100;border-radius:0}.xp.is-full,.xp:fullscreen{position:fixed;inset:0;margin:0;max-width:none;z-index:100;border-radius:0}.xp:-webkit-full-screen .xp-view{flex:1 1;min-height:0;aspect-ratio:auto}.xp.is-full .xp-view,.xp:fullscreen .xp-view{flex:1 1;min-height:0;aspect-ratio:auto}.xp:-webkit-full-screen .xp-cap p{font-size:clamp(18px,2.2vh,26px);max-width:60em}.xp.is-full .xp-cap p,.xp:fullscreen .xp-cap p{font-size:clamp(18px,2.2vh,26px);max-width:60em}.xp-why{margin:14px 0 0}.xp-notes{margin-top:8px}.xp-notes summary{cursor:pointer;font-weight:500}.xp-notes ol{margin:12px 0 0;padding-left:22px}@media (max-width:600px){.xp:not(:-webkit-full-screen):not(.is-full){margin-inline:-16px;max-width:none;border-radius:0}.xp:not(:fullscreen):not(.is-full){margin-inline:-16px;max-width:none;border-radius:0}.xp-cap p{font-size:16px}}