@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(../media/space-grotesk-vietnamese-wght-normal.4a0fb5cd.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(../media/space-grotesk-latin-ext-wght-normal.5fecc5e6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(../media/space-grotesk-latin-wght-normal.43410083.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(../media/atkinson-hyperlegible-latin-ext-400-normal.919ada84.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-ext-400-normal.16c772d7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(../media/atkinson-hyperlegible-latin-400-normal.06001f43.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-400-normal.053251c7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(../media/atkinson-hyperlegible-latin-ext-700-normal.2f4b6bcb.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-ext-700-normal.c3314b92.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(../media/atkinson-hyperlegible-latin-700-normal.3a47e141.woff2)format("woff2"),url(../media/atkinson-hyperlegible-latin-700-normal.e9e5b3a2.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-cyrillic-ext-400-normal.472863ba.woff2)format("woff2"),url(../media/ibm-plex-mono-cyrillic-ext-400-normal.e44713e8.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-cyrillic-400-normal.d0101253.woff2)format("woff2"),url(../media/ibm-plex-mono-cyrillic-400-normal.e4e4d6ce.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-vietnamese-400-normal.ee78a2d9.woff2)format("woff2"),url(../media/ibm-plex-mono-vietnamese-400-normal.d8252392.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-ext-400-normal.36df61f8.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-ext-400-normal.ce445492.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-normal.e1d6b3bf.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-normal.73d9f091.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--paper:#06060e;--surface:#12121d;--ink:#f0f0f5;--muted:#aab0c2;--accent:#a78bfa;--accent-ink:#fff;--accent-gradient:linear-gradient(135deg,#3b82f6,#8b5cf6,#06b6d4);--accent-cta:linear-gradient(135deg,#4f46e5,#7c3aed);--honey:#fbbf24;--encourage:#22d3ee;--success:#34d399;--warning:#fbbf24;--error:#f87171;--border:#26263a;--font-display:"Space Grotesk Variable","Inter",system-ui,sans-serif;--font-body:"Atkinson Hyperlegible",system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace;--sp-xs:8px;--sp-sm:12px;--sp-md:16px;--sp-lg:24px;--sp-xl:32px;--sp-2xl:48px;--radius-sm:10px;--radius-md:16px;--radius-lg:20px;--radius-pill:999px;--shadow-soft:0 1px 2px #0006,0 8px 28px #00000073;--success-soft:#11261d;--error-soft:#2a1414;--accent-soft:#1b1830}:root[data-theme=light]{--paper:#f6f7fb;--surface:#fff;--ink:#14141f;--muted:#565a6e;--accent:#6d28d9;--accent-ink:#fff;--honey:#b45309;--encourage:#0891b2;--success:#1f8a5b;--warning:#b45309;--error:#c0392b;--border:#e4e6f0;--shadow-soft:0 1px 2px #1414280d,0 8px 24px #14142814;--success-soft:#e7f3ec;--error-soft:#fbeae8;--accent-soft:#efeafe}*{box-sizing:border-box}html{font-size:18px}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.2}code,pre,.mono{font-family:var(--font-mono)}a{color:var(--accent)}.eyebrow{font-family:var(--font-display);color:var(--accent);margin:0;font-size:17px;font-weight:600}@supports ((-webkit-background-clip:text) or (background-clip:text)){:root:not([data-theme=light]) .eyebrow{background:var(--accent-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.btn-primary{justify-content:center;align-items:center;gap:var(--sp-xs);min-height:48px;padding:0 var(--sp-xl);background-color:#4f46e5;background-image:var(--accent-cta);color:var(--accent-ink);border-radius:var(--radius-pill);font:inherit;cursor:pointer;border:none;font-weight:700;text-decoration:none;transition:filter .18s ease-out,box-shadow .18s ease-out;display:inline-flex;box-shadow:0 4px 16px #7c3aed59}.btn-primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 6px 22px #7c3aed73}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{justify-content:center;align-items:center;gap:var(--sp-xs);min-height:48px;padding:0 var(--sp-lg);background:var(--surface);color:var(--ink);border:1.5px solid var(--border);border-radius:var(--radius-pill);font:inherit;cursor:pointer;font-weight:600;text-decoration:none;transition:border-color .18s ease-out,background .18s ease-out;display:inline-flex}.btn-secondary:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:var(--sp-lg)}.option{text-align:left;width:100%;min-height:48px;padding:var(--sp-sm)var(--sp-md);background:var(--surface);color:var(--ink);border:1.5px solid var(--border);border-radius:var(--radius-md);font:inherit;cursor:pointer;transition:border-color .12s ease-out,background .12s ease-out;display:block}.option:hover:not(:disabled):not(.is-correct):not(.is-wrong){border-color:var(--accent)}.option:disabled{cursor:default}.option.is-selected{border-color:var(--accent);background:var(--accent-soft)}.option.is-correct{border-color:var(--success);background:var(--success-soft)}.option.is-wrong{border-color:var(--error);background:var(--error-soft)}.option.is-muted{opacity:.6}.feedback{margin-top:var(--sp-sm);padding:var(--sp-sm)var(--sp-md);border-radius:var(--radius-md);border:1px solid var(--border)}.feedback.is-correct{background:var(--success-soft);border-color:var(--success)}.feedback.is-wrong{background:var(--error-soft);border-color:var(--error)}.field{width:100%;padding:var(--sp-sm)var(--sp-md);background:var(--surface);color:var(--ink);border:1.5px solid var(--border);border-radius:var(--radius-sm);font:inherit;transition:border-color .12s ease-out}.field:focus{border-color:var(--accent)}textarea.field{font-family:var(--font-mono);resize:vertical;line-height:1.5}.auth-split{grid-template-columns:1.05fr .95fr;min-height:100vh;display:grid}.auth-brand{color:#fff;padding:clamp(var(--sp-xl),5vw,88px);background:linear-gradient(135deg,#1e1b4b 0%,#0c0a1f 45%,#0a1628 100%);align-items:center;display:flex}.auth-panel{padding:clamp(var(--sp-xl),5vw,72px)var(--sp-lg);justify-content:center;align-items:center;display:flex}@media (max-width:820px){.auth-split{grid-template-columns:1fr}.auth-brand{display:none}}.video-frame{aspect-ratio:16/9;border-radius:var(--radius-md);background:var(--ink);width:100%;position:relative;overflow:hidden}.video-frame iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.navlink{color:var(--ink);padding:var(--sp-xs)var(--sp-sm);border-radius:var(--radius-sm);font-weight:600;text-decoration:none;transition:background .12s ease-out,color .12s ease-out}.navlink:hover{background:var(--accent-soft);color:var(--accent)}.navlink[aria-current=page]{color:var(--accent)}.tabnav{gap:var(--sp-xs);border-bottom:1px solid var(--border);margin-bottom:var(--sp-lg);flex-wrap:wrap;display:flex}.tab{min-height:44px;padding:0 var(--sp-md);color:var(--muted);border:none;border-bottom:3px solid #0000;align-items:center;margin-bottom:-1px;font-weight:600;text-decoration:none;transition:color .12s ease-out,border-color .12s ease-out;display:inline-flex}.tab:hover{color:var(--ink)}.tab[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.modal{width:100%;max-width:100vw;height:100%;max-height:100vh;padding:var(--sp-lg);background:0 0;border:none;margin:0;position:fixed;inset:0}.modal[open]{justify-content:center;align-items:center;display:flex}.modal::backdrop{background:#04040aa6}.modal-card{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);width:100%;max-width:720px;max-height:90vh;padding:var(--sp-xl);overflow-y:auto}.author-shell{max-width:1180px;padding:0 var(--sp-xl)var(--sp-2xl);gap:var(--sp-xl);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;margin:0 auto;display:grid}.author-preview{max-height:calc(100vh - 96px);position:sticky;top:80px;overflow-y:auto}.author-type-card{color:var(--accent);background:var(--accent-soft);border-radius:var(--radius-pill);padding:2px 10px;font-size:13px;font-weight:700;display:inline-block}@media (max-width:980px){.author-shell{grid-template-columns:1fr}.author-preview{max-height:none;position:static}}.learn-shell{max-width:1180px;padding:var(--sp-lg)var(--sp-xl)var(--sp-2xl);gap:var(--sp-xl);grid-template-columns:264px minmax(0,1fr);align-items:start;margin:0 auto;display:grid}.lesson-nav{position:sticky;top:80px}.lesson-nav-title{font-family:var(--font-display);margin:0 0 var(--sp-sm);font-size:18px;font-weight:600}.lesson-nav ul{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.lesson-link{gap:var(--sp-xs);min-height:40px;padding:var(--sp-xs)var(--sp-sm);border-radius:var(--radius-sm);color:var(--ink);align-items:center;text-decoration:none;transition:background .12s ease-out,color .12s ease-out;display:flex}.lesson-link:hover{background:var(--accent-soft)}.lesson-link[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:700}@media (max-width:900px){.learn-shell{gap:var(--sp-lg);grid-template-columns:1fr}.lesson-nav{position:static}}.card-grid{gap:var(--sp-md);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:.18s ease-out fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
