@font-face{font-family:"Rubik";font-style:normal;font-weight:400 800;font-display:swap;src:url("../fonts/rubik-latin.woff2") format("woff2");unicode-range:U+0000-00FF,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}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400 700;font-display:swap;src:url("../fonts/jetbrains-mono-latin.woff2") format("woff2");unicode-range:U+0000-00FF,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}*,*::before,*::after{box-sizing:border-box}:root{--brand:#ffffff;--brand-ink:#08080a;--radius-sm:8px;--radius:12px;--radius-lg:20px;--maxw:1240px;--font:"Rubik",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:"JetBrains Mono","SFMono-Regular",ui-monospace,"Cascadia Code",Consolas,"Liberation Mono",Menlo,monospace;--ink:#08080a;--ink-2:#141418;--ink-3:#1d1d23;--paper:#f3f3f5;--paper-2:#e8e8ec;--lime:#b9d62e;--lime-deep:#6f8a00;--ch-python:#7aa2f7;--ch-javascript:#e5c07b;--ch-typescript:#89ddff;--ch-html:#ff9e64;--ch-css:#56b6c2;--ch-sql:#9ece6a;--ch-php:#c792ea;--ch-java:#f7768e;--ch-go:#73daca;--ch-ruby:#e06c75;--gutter:clamp(20px,6vw,112px);--pill:999px;--tile:16px;--syn-loop:#e5c07b;--syn-kw:#c792ea;--syn-str:#9ece6a;--syn-num:#ff9e64;--syn-fn:#7aa2f7;--syn-bi:#56b6c2;--syn-com:#5c6370;--syn-op:#89ddff;--syn-tag:#f7768e;--syn-attr:#e5c07b;--syn-punct:#abb2bf;--accent-lime:#b9d62e}html[data-theme="dark"]{--bg:#08080a;--bg-2:#0c0c0f;--surface:#111114;--surface-2:#191920;--border:rgba(255,255,255,0.09);--border-strong:rgba(255,255,255,0.17);--text:#f3f3f5;--text-muted:#9a9aa4;--code-bg:#0a0a0d;--code-text:#e8e8ec;--success:#9ece6a;--success-ink:#0a1f08;--error:#f7768e;--error-ink:#2a0a10;--shadow:0 24px 60px rgba(0,0,0,0.55);--shadow-sm:0 8px 24px rgba(0,0,0,0.45);--brand:#ffffff;--brand-ink:#08080a;--brand-soft:rgba(255,255,255,0.08);--ring:rgba(255,255,255,0.45);--rule:rgba(243,243,245,0.045);--glow:rgba(185,214,46,0.07);--header-bg:#101016;color-scheme:dark}html[data-theme="light"]{--bg:#ffffff;--bg-2:#f5f5f6;--surface:#ffffff;--surface-2:#f2f2f4;--border:rgba(10,10,15,0.12);--border-strong:rgba(10,10,15,0.22);--text:#0c0c0f;--text-muted:#5c5c66;--code-bg:#0a0a0d;--code-text:#e8e8ec;--success:#1a7f37;--success-ink:#ffffff;--error:#cf2236;--error-ink:#ffffff;--shadow:0 24px 60px rgba(20,20,30,0.14);--shadow-sm:0 8px 24px rgba(20,20,30,0.10);--brand:#0c0c0f;--brand-ink:#ffffff;--brand-soft:rgba(10,10,15,0.06);--ring:rgba(10,10,15,0.35);--rule:rgba(8,8,10,0.055);--glow:rgba(185,214,46,0.14);--header-bg:#f2f2f5;color-scheme:light}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;display:flex;flex-direction:column}body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(1100px 640px at 50% -14%,var(--glow),transparent 70%),linear-gradient(90deg,var(--rule) 1px,transparent 1px),repeating-linear-gradient(transparent 0 27px,var(--rule) 27px 28px);background-size:100% 100%,112px 100%,100% 100%;-webkit-mask:radial-gradient(120% 90% at 50% 0,#000 30%,transparent 85%);mask:radial-gradient(120% 90% at 50% 0,#000 30%,transparent 85%);transform:translateZ(0);contain:paint}h1,h2,h3,h4{line-height:1.2;margin:0 0 0.5em;font-weight:700;letter-spacing:-0.01em}h1{font-size:clamp(1.9rem,4vw,2.9rem)}h2{font-size:clamp(1.4rem,2.6vw,2rem)}h3{font-size:1.15rem}p{margin:0 0 1rem}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%}.muted{color:var(--text-muted)}.lead{font-size:1.15rem;color:var(--text-muted)}.eyebrow{display:inline-block;font-family:var(--mono);font-size:0.8rem;font-weight:600;letter-spacing:0.01em;color:var(--text-muted);margin-bottom:0.7rem}.eyebrow::before{content:"// ";opacity:0.7}.grad{font-family:var(--mono);color:var(--syn-loop)}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}.container.narrow{max-width:820px}.main{flex:1 0 auto}.section{padding:64px 0}.section-tight{padding-top:26px}.page-header{position:relative;background:radial-gradient(820px 320px at 22% -70%,var(--brand-soft),transparent 70%),var(--header-bg);border-bottom:1px solid var(--border);padding:34px 0 36px}.page-header .crumb{margin-bottom:18px}.page-header .section-head{margin-bottom:0;max-width:760px}.page-header .lang-hero{margin-bottom:0}.page-header .dash-head{margin-bottom:0}.page-header + .section{padding-top:46px}.section-head{max-width:720px;margin-bottom:36px}.section-head-sub{margin-top:48px}.block{display:block}.skip-link{position:absolute;left:-999px;top:0;z-index:200;background:var(--brand);color:var(--brand-ink);padding:10px 16px;border-radius:0 0 var(--radius-sm) 0}.skip-link:focus{left:0}.btn{--b:var(--brand);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:0.95rem;font-weight:600;line-height:1;padding:12px 20px;border-radius:999px;border:1px solid transparent;cursor:pointer;transition:transform 0.08s ease,background 0.15s ease,border-color 0.15s ease,opacity 0.15s ease;text-decoration:none;white-space:nowrap}.btn:hover{text-decoration:none;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.btn-primary{background:var(--brand);color:var(--brand-ink)}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border-strong)}.btn-ghost:hover{background:var(--surface-2)}.btn-success{background:var(--success);color:var(--success-ink)}.btn-success:hover{filter:brightness(1.05)}.btn-lg{padding:15px 28px;font-size:1.02rem}.btn-sm{padding:9px 16px;font-size:0.86rem}.btn-xs{padding:5px 10px;font-size:0.78rem}.btn-block{width:100%}.site-header{position:sticky;top:0;z-index:60;background:var(--bg);color:var(--text);--smile-dots:var(--text);--smile-mouth:var(--lime)}html[data-theme="light"] .site-header{--smile-mouth:var(--text)}.site-header--lime{position:relative;background:var(--lime);color:var(--ink);--text:var(--ink);--smile-dots:var(--ink);--smile-mouth:var(--ink)}.nav-bar{display:flex;align-items:center;gap:16px 32px;min-height:76px;padding:12px var(--gutter)}.brand{display:inline-flex;align-items:center;gap:10px;color:inherit;margin-right:auto}.brand:hover{text-decoration:none}.brand-smile{width:24px;height:29px;flex:none}.brand-smile circle{fill:var(--smile-dots)}.brand-smile path{fill:none;stroke:var(--smile-mouth);stroke-width:14;stroke-linecap:round}.brand-name{font-size:1.6rem;font-weight:800;letter-spacing:-0.05em;line-height:1}.primary-nav{display:flex;align-items:center;gap:12px 28px;flex-wrap:wrap}.nav-links,.nav-actions{display:flex;align-items:center;gap:4px 24px;flex-wrap:wrap}.nav-link{color:inherit;font-size:1.05rem;font-weight:500;padding:10px 0;text-decoration:none;text-underline-offset:8px;text-decoration-thickness:3px}.nav-link:hover,.nav-link.is-active{text-decoration:underline}.nav-cta{display:inline-flex;align-items:center;min-height:46px;padding:0 22px;border-radius:var(--pill);background:var(--lime);color:var(--ink);font-weight:700;font-size:1.05rem;text-decoration:none;transition:transform 0.16s ease}.nav-cta:hover{text-decoration:none;transform:translateY(-2px)}.nav-cta .face{width:18px;height:18px;margin-right:10px;flex:none}.nav-cta.is-current{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--lime)}html[data-theme="light"] .nav-cta.is-current{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--ink)}html[data-theme="light"] .nav-cta,.site-header--lime .nav-cta{background:var(--ink);color:var(--paper)}.site-header--lime .nav-cta{color:var(--lime)}.brand-mark{display:inline-flex;align-items:center}.brand-mark svg{height:19px;width:auto;display:block}.brand-word{font-family:var(--mono);font-weight:800;font-size:1.05rem;letter-spacing:0.07em;text-transform:uppercase;color:var(--text);line-height:1}.user-chip{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:var(--pill);background:var(--ch-javascript);color:var(--ink);font-weight:700}.inline-form{margin:0}.nav-toggle{display:none;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:none;border:0;cursor:pointer;padding:10px;min-width:44px;min-height:44px;box-sizing:border-box}.nav-toggle-bar{width:24px;height:2px;background:var(--text);border-radius:2px;transition:transform 0.25s ease,opacity 0.2s ease;transform-origin:center}.nav-toggle.is-open .nav-toggle-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle.is-open .nav-toggle-bar:nth-child(2){opacity:0}.nav-toggle.is-open .nav-toggle-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.theme-toggle{position:relative;flex:none;width:76px;height:40px;padding:0;border:0;border-radius:var(--pill);background:var(--ink-3);box-shadow:inset 0 0 0 1px #2a2a31;cursor:pointer;transition:background 0.3s ease,box-shadow 0.3s ease}html[data-theme="light"] .theme-toggle{background:#e2e2e8;box-shadow:inset 0 0 0 1px rgba(8,8,10,0.14)}.theme-toggle:focus-visible{outline:3px solid var(--lime);outline-offset:3px}html[data-theme="light"] .theme-toggle:focus-visible,.site-header--lime .theme-toggle:focus-visible{outline-color:var(--ink)}.theme-toggle svg{display:block;overflow:visible}.theme-toggle path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.theme-toggle .tt-lids,.theme-toggle .tt-shades{stroke-width:10}.theme-toggle .tt-shades{fill:currentColor}.theme-toggle .tt-mouth{stroke-width:12}.theme-knob{position:absolute;top:4px;left:4px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--lime);color:var(--ink);transition:transform 0.42s cubic-bezier(0.3,1.4,0.4,1),background 0.3s ease,color 0.3s ease}.theme-knob svg{width:20px;height:20px}html[data-theme="light"] .theme-knob{transform:translateX(36px);background:var(--ink);color:var(--lime)}.theme-hint{position:absolute;top:12px;left:50px;width:16px;height:16px;color:#a9a9b3;opacity:0.6;transition:opacity 0.2s ease}html[data-theme="light"] .theme-hint{left:10px;color:#5c5c66}.theme-toggle:hover .theme-hint{opacity:1}.theme-knob .tt-day,.theme-hint .tt-night,html[data-theme="light"] .theme-knob .tt-night,html[data-theme="light"] .theme-hint .tt-day{display:none}html[data-theme="light"] .theme-knob .tt-day,html[data-theme="light"] .theme-hint .tt-night{display:inline}.site-header.site-header--lime .theme-toggle{background:rgba(8,8,10,0.14);box-shadow:inset 0 0 0 1px rgba(8,8,10,0.18)}.site-header.site-header--lime .theme-knob{background:var(--ink);color:var(--lime)}.site-header.site-header--lime .theme-hint{color:var(--ink)}.theme-toggle--bar{display:none}@media (prefers-reduced-motion: reduce){.theme-toggle,.theme-knob,.theme-hint{transition:none}}.lp{position:relative;margin:0}.lp-btn{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 14px 0 11px;border:0;border-radius:var(--pill);background:var(--ink-3);box-shadow:inset 0 0 0 1px #2a2a31;color:inherit;font:inherit;font-size:1rem;font-weight:500;cursor:pointer}html[data-theme="light"] .lp-btn{background:#e2e2e8;box-shadow:inset 0 0 0 1px rgba(8,8,10,0.14)}.site-header--lime .lp-btn{background:rgba(8,8,10,0.14);box-shadow:inset 0 0 0 1px rgba(8,8,10,0.18)}.lp-btn:focus-visible{outline:3px solid var(--lime);outline-offset:3px}html[data-theme="light"] .lp-btn:focus-visible,.site-header--lime .lp-btn:focus-visible{outline-color:var(--ink)}.lp-flag{width:22px;height:15px;flex:none;border-radius:3px;box-shadow:0 0 0 1px rgba(128,128,140,0.35)}.lp-chev{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform 0.2s ease}.lp-btn[aria-expanded="true"] .lp-chev{transform:rotate(180deg)}.lp-pop{position:absolute;right:0;top:calc(100% + 10px);z-index:80;width:280px;color:var(--text)}.site-header--lime .lp-pop{--text:#f3f3f5;color:#f3f3f5}.lp-list{margin:0;padding:8px;list-style:none;border-radius:20px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--border),0 24px 48px rgba(0,0,0,0.4);max-height:min(420px,70vh);overflow-y:auto;outline:none}.site-header--lime .lp-list{background:#121216;box-shadow:0 24px 48px rgba(0,0,0,0.3)}.lp-list:focus-visible{box-shadow:inset 0 0 0 2px var(--lime),0 24px 48px rgba(0,0,0,0.4)}html[data-theme="light"] .lp-list:focus-visible{box-shadow:inset 0 0 0 2px var(--ink),0 24px 48px rgba(0,0,0,0.18)}.lp-opt{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:12px;cursor:pointer;font-size:1rem}.lp-opt:hover,.lp-opt.is-active{background:var(--surface-2)}.site-header--lime .lp-opt:hover,.site-header--lime .lp-opt.is-active{background:#1d1d23}.lp-opt.is-active{outline:2px solid var(--text);outline-offset:-2px}.lp-opt[aria-selected="true"]{background:var(--lime);color:var(--ink)}.lp-code{margin-left:auto;font-family:var(--mono);font-size:0.75rem;opacity:0.7}.lp-note{margin:8px 0 0;padding:12px 16px;border-radius:14px;background:var(--surface-2);font-size:0.875rem;line-height:1.4}.site-header--lime .lp-note{background:#1d1d23}.lp--bar{display:none}.site-header:has(.lp-btn[aria-expanded="true"]){z-index:95}.lp-hello{position:fixed;left:16px;bottom:16px;z-index:90;width:min(380px,calc(100vw - 32px));box-sizing:border-box;display:flex;flex-direction:column;gap:12px;margin:0;padding:16px;border-radius:20px;background:var(--ink);color:#f3f3f5;box-shadow:0 20px 40px rgba(0,0,0,0.35)}.lp-hello p{display:flex;align-items:center;gap:10px;margin:0;font-size:1rem;line-height:1.4}.lp-hello-go{display:flex;gap:8px}.lp-hello button{flex:1;min-height:44px;border:0;border-radius:var(--pill);background:#1d1d23;color:inherit;font:inherit;font-weight:500;cursor:pointer}.lp-hello .lp-keep{background:var(--lime);color:var(--ink);font-weight:600}.lp-hello button:focus-visible{outline:3px solid var(--lime);outline-offset:2px}@media (prefers-reduced-motion: reduce){.lp-chev{transition:none}}.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin:26px 0 14px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}.course-icon{width:48px;height:48px;display:block;flex-shrink:0}.lang-tile{display:inline-flex;align-items:center;justify-content:center;border-radius:28%;background:var(--c);color:#08080a;font-family:var(--mono);font-size:0.8rem;font-weight:600}.lang-tile .lang-glyph{width:60%;height:60%}.back-link{display:inline-block;color:var(--text-muted);font-weight:600;font-size:0.9rem;margin-bottom:14px}.lesson-shell{display:grid;grid-template-columns:288px minmax(0,1fr);align-items:start}.lesson-sidebar{position:sticky;top:54px;height:calc(100vh - 54px);overflow-y:auto;background:var(--surface);border-right:1px solid var(--border);padding:22px 16px 30px}.lesson-overlay{display:none}.sidebar-progress{margin:14px 0 18px}.progress-bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.progress-bar-fill{display:block;height:100%;background:var(--brand);border-radius:999px;transition:width 0.4s ease}.sidebar-progress .muted{font-size:0.82rem;display:inline-block;margin-top:6px}.sidebar-nav{font-size:0.92rem}.sidebar-module{font-weight:700;font-size:0.74rem;letter-spacing:0.07em;text-transform:uppercase;color:var(--text-muted);margin:18px 0 8px}.sidebar-nav ul{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;gap:2px}.sidebar-nav a{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;color:var(--text-muted)}.sidebar-nav a:hover{background:var(--surface);color:var(--text);text-decoration:none}.sidebar-nav a.is-active{background:var(--brand-soft);color:var(--brand);font-weight:600}.sidebar-nav .dot{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--border-strong);font-size:11px;flex-shrink:0}.sidebar-nav a.is-done .dot{background:var(--success);border-color:var(--success);color:var(--success-ink)}.lesson-main{min-width:0;max-width:980px;margin:0 auto;padding:36px 48px 80px}.sidebar-open{display:none}.lesson-header{margin-bottom:24px}.lesson-meta{font-size:0.88rem}.lesson-body{font-size:1.05rem}.lesson-body h2{margin-top:1.8em}.lesson-body h3{margin-top:1.5em}.lesson-body ul,.lesson-body ol{padding-left:1.4em;margin:0 0 1rem}.lesson-body li{margin-bottom:0.4em}.lesson-body code{font-family:var(--mono);font-size:0.9em;background:var(--surface-2);padding:2px 6px;border-radius:6px}.lesson-body pre{background:var(--code-bg);color:var(--code-text);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;overflow-x:auto}.lesson-body pre code{background:none;padding:0;font-size:0.9rem;line-height:1.6}.lesson-body .callout{display:flex;gap:12px;background:var(--brand-soft);border:1px solid var(--border);border-left:4px solid var(--brand);border-radius:var(--radius-sm);padding:14px 18px;margin:0 0 1rem}.lesson-body .callout strong{color:var(--brand)}.playground{margin:32px 0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.playground-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.playground-title{font-weight:700}.playground-actions{display:flex;gap:8px}.code-input{width:100%;min-height:180px;resize:vertical;border:0;background:var(--code-bg);color:var(--code-text);font-family:var(--mono);font-size:0.92rem;line-height:1.6;padding:18px 20px;display:block;tab-size:4}.code-input:focus{outline:2px solid var(--ring);outline-offset:-2px}.playground-output{border-top:1px solid var(--border)}.playground-output-head{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;font-size:0.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em}.output-body{margin:0;padding:14px 20px 20px;font-family:var(--mono);font-size:0.9rem;line-height:1.55;white-space:pre-wrap;word-break:break-word;min-height:48px;max-height:360px;overflow:auto;color:var(--code-text);background:var(--code-bg)}.output-body.is-error{color:var(--error)}.quiz{margin:36px 0}.quiz-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:16px}.quiz-prompt{font-weight:600;font-size:1.05rem}.quiz-q{display:inline-block;color:var(--brand);font-weight:800;margin-right:6px}.quiz-options{display:flex;flex-direction:column;gap:10px;margin-top:14px}.quiz-option{text-align:left;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;transition:border-color 0.12s ease,background 0.12s ease}.quiz-option:hover{border-color:var(--brand);background:color-mix(in srgb,var(--brand-soft) 60%,var(--surface-2))}.quiz-option:disabled{cursor:default;opacity:0.85}.quiz-option.is-correct{border-color:var(--success);background:color-mix(in srgb,var(--success) 16%,var(--surface-2))}.quiz-option.is-incorrect{border-color:var(--error);background:color-mix(in srgb,var(--error) 14%,var(--surface-2))}.quiz-option:disabled:hover{border-color:var(--border-strong);background:var(--surface-2)}.quiz-option.is-correct:hover{border-color:var(--success);background:color-mix(in srgb,var(--success) 16%,var(--surface-2))}.quiz-option.is-incorrect:hover{border-color:var(--error);background:color-mix(in srgb,var(--error) 14%,var(--surface-2))}.quiz-feedback{margin:14px 0 0;font-weight:600}.quiz-feedback.is-correct{color:var(--success)}.quiz-feedback.is-incorrect{color:var(--error)}.lesson-complete{margin:40px 0;text-align:center}.complete-guest{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius);padding:26px}.complete-guest p{margin-bottom:14px}.lesson-nav{display:flex;justify-content:space-between;gap:16px;margin-top:24px;border-top:1px solid var(--border);padding-top:24px}.lesson-nav a{display:flex;flex-direction:column;gap:2px;padding:14px 18px;border:1px solid var(--border);border-radius:var(--radius);color:var(--text);max-width:48%}.lesson-nav a:hover{text-decoration:none;border-color:var(--border-strong)}.lesson-nav-next{text-align:right;align-items:flex-end;margin-left:auto}.lesson-nav .muted{font-size:0.78rem;text-transform:uppercase;letter-spacing:0.05em}.field{margin-bottom:18px;display:flex;flex-direction:column;gap:7px}.field label{font-weight:600;font-size:0.92rem}.field input,.field select,.field textarea{font:inherit;padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);width:100%}.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--ring);outline-offset:2px;border-color:var(--brand)}.field input:disabled{opacity:0.7;cursor:not-allowed;border-style:dashed}.field-error{color:var(--error);font-size:0.86rem;margin:0;font-weight:600}.field-error.block{margin:10px 0}.hint{font-size:0.82rem;margin:0}.checkbox-field{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;font-size:0.92rem;color:var(--text-muted)}.checkbox-field input{width:18px;height:18px;margin-top:2px;accent-color:var(--brand)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dash-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:32px;flex-wrap:wrap}.dash-section-title{margin:36px 0 18px}.progress-card{display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;color:var(--text);transition:transform 0.12s ease,border-color 0.15s}.progress-card:hover{text-decoration:none;transform:translateY(-3px);border-color:var(--border-strong)}.progress-card-top{display:flex;align-items:center;justify-content:space-between}.progress-card-percent{font-weight:800;font-size:1.1rem;color:var(--brand)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px dashed var(--border-strong);border-radius:var(--radius);padding:40px 32px;text-align:center}.empty-state .eyebrow{margin-bottom:0}.empty-state p{font-size:1.05rem;color:var(--text);margin:0}.empty-state .btn{margin-top:12px}.activity-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.activity-list a{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;color:var(--text)}.activity-list a:hover{text-decoration:none;border-color:var(--border-strong)}.activity-dot{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--success);color:var(--success-ink);font-size:13px;flex-shrink:0}.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px;margin:22px 0;scroll-margin-top:96px}.track-row{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.track-row b{display:block;margin-bottom:6px;font-weight:600}.track-row p{margin:0;line-height:1.5;color:color-mix(in srgb,var(--text) 86%,var(--surface))}.track-switch{position:relative;flex:none;width:76px;height:40px;padding:0;border:0;border-radius:var(--pill);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border-strong);cursor:pointer}.track-switch::after{content:"";position:absolute;inset:-2px 0}.track-switch:focus-visible{outline:3px solid var(--lime);outline-offset:3px}html[data-theme="light"] .track-switch:focus-visible{outline-color:var(--ink)}.track-knob{position:absolute;top:4px;left:4px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--text) 24%,var(--surface-2));color:var(--text)}.track-knob .face{width:20px;height:20px}.track-knob .face .face-lids{stroke-width:11}.track-switch.is-on .track-knob{transform:translateX(36px);background:var(--lime);color:var(--ink)}html[data-theme="light"] .track-switch.is-on .track-knob{background:var(--ink);color:var(--lime)}.track-more{margin:18px 0 0;padding-top:16px;border-top:1px solid var(--border);font-size:0.875rem;line-height:1.5;color:var(--text-muted)}.track-more a{color:inherit;text-decoration:underline;text-underline-offset:3px}.delete-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.delete-head h2{margin:0}.delete-head .face{width:30px;height:30px;flex:none;--mouth:var(--error)}.delete-lede{max-width:56ch;margin:0 0 14px}.delete-more > summary{min-height:44px;padding-block:0;list-style:none}.delete-more > summary::-webkit-details-marker{display:none}.delete-keep,.delete-more[open] .delete-go{display:none}.delete-more[open] .delete-keep{display:inline}.delete-more[open] > summary{border-color:var(--border-strong);color:var(--text)}.delete-goes{margin-top:22px;padding-top:20px;border-top:1px solid var(--border)}.delete-goes h3{margin-bottom:12px;font-size:1.06rem}.delete-goes ul{display:grid;gap:6px;margin:0 0 12px;padding-left:20px}.delete-goes p:not(.field-error){margin:0 0 20px;color:var(--text-muted);font-size:0.875rem}.delete-goes a{color:inherit;text-decoration:underline;text-underline-offset:2px}.btn-delete{min-height:44px;padding-block:0;background:var(--error);color:var(--error-ink)}.btn-delete:hover{filter:brightness(1.06)}.flash-stack{margin-top:16px;display:flex;flex-direction:column;gap:10px}.flash{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 18px;border-radius:var(--radius-sm);border:1px solid var(--border);font-weight:600}.flash-success{background:color-mix(in srgb,var(--success) 18%,var(--surface));border-color:var(--success)}.flash-error{background:color-mix(in srgb,var(--error) 16%,var(--surface));border-color:var(--error)}.flash-close{background:none;border:0;font-size:1.3rem;line-height:1;cursor:pointer;color:inherit;min-width:44px;min-height:44px;display:inline-grid;place-items:center;flex-shrink:0;border-radius:var(--radius-sm);opacity:0.7;transition:background 0.12s ease,opacity 0.12s ease}.site-footer{flex-shrink:0;background:var(--ink);color:var(--paper);padding:32px var(--gutter) 28px}.footer-top{display:flex;flex-wrap:wrap;align-items:center;gap:18px 40px}.footer-brand{display:flex;align-items:center;gap:10px;margin-right:auto;color:var(--paper);font-size:1.5rem;font-weight:800;letter-spacing:-0.05em;line-height:1}.footer-brand:hover{text-decoration:none;color:var(--paper)}.footer-face{width:0.9em;height:0.9em;flex:none;--mouth:var(--lime)}.footer-links{display:flex;flex-wrap:wrap;gap:6px 28px}.footer-links a{color:var(--paper);font-weight:500;padding:10px 0}.footer-go{display:inline-flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:10px 22px;border-radius:999px;background:var(--lime);color:var(--ink);font-weight:700}.footer-go:hover{text-decoration:none;color:var(--ink)}.footer-go svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;transition:transform 0.2s ease}.footer-go:hover svg{transform:translateX(4px)}.footer-langs{display:flex;flex-wrap:wrap;gap:0 28px;margin-top:14px}.footer-langs a{display:inline-flex;align-items:center;min-height:44px;color:var(--lime);font-weight:500}.footer-bottom{display:flex;flex-wrap:wrap;gap:8px 32px;margin-top:22px;padding-top:18px;border-top:1px solid #24242a;font-size:0.9rem;color:#b4b4bc}.footer-bottom p{margin:0}.footer-stats{font-family:var(--mono);font-size:0.85rem;color:var(--paper);font-variant-numeric:tabular-nums}.footer-stats b{color:var(--lime);font-weight:600}.footer-legal{display:flex;flex-wrap:wrap;align-items:center;gap:4px 24px;width:100%;margin-top:12px;padding-top:12px;border-top:1px solid #24242a}.footer-legal nav{display:flex;flex-wrap:wrap;gap:0 20px}.footer-legal nav a{display:inline-flex;align-items:center;min-height:44px}.footer-legal p{margin-left:auto;line-height:1.5}.footer-legal a{color:var(--paper);font-weight:400}.ch-start{--c:var(--lime)}.ch-python{--c:var(--ch-python)}.ch-javascript{--c:var(--ch-javascript)}.ch-typescript{--c:var(--ch-typescript)}.ch-html{--c:var(--ch-html)}.ch-css{--c:var(--ch-css)}.ch-sql{--c:var(--ch-sql)}.ch-php{--c:var(--ch-php)}.ch-java{--c:var(--ch-java)}.ch-go{--c:var(--ch-go)}.ch-ruby{--c:var(--ch-ruby)}.face{fill:currentColor;overflow:visible}.face .face-mouth{fill:none;stroke:var(--mouth,currentColor);stroke-width:12;stroke-linecap:round;stroke-linejoin:round}.face .face-tail,.face .face-lids{fill:none;stroke:currentColor;stroke-width:8;stroke-linecap:round}.face .face-shades{fill:currentColor;stroke:currentColor;stroke-width:6;stroke-linejoin:round}.face-set .face{display:none}.face-set[data-state="smile"] .face-k-smile,.face-set[data-state="grin"] .face-k-grin,.face-set[data-state="open"] .face-k-open,.face-set[data-state="frown"] .face-k-frown,.face-set[data-state="unsure"] .face-k-unsure,.face-set[data-state="shut"] .face-k-shut,.face-set[data-state="shades"] .face-k-shades{display:block}.face-wink{transform-box:fill-box;transform-origin:center;animation:face-wink 4.5s ease-in-out infinite}.face-pulse{transform-box:fill-box;transform-origin:center;animation:face-pulse 0.6s ease-in-out infinite}@keyframes face-wink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(0.15)}}@keyframes face-pulse{0%,100%{transform:scale(1)}50%{transform:scale(0.84)}}@media (prefers-reduced-motion: reduce){.face-wink,.face-pulse{animation:none}}.run-explain{display:flex;gap:10px;align-items:flex-start;margin:10px 0 0;padding:12px 14px;border-radius:12px;background:var(--ink-3);color:var(--paper);font-size:0.98rem;line-height:1.5}.run-explain[hidden]{display:none}.run-explain .face{width:22px;height:22px;flex:none;margin-top:2px;color:var(--ch-javascript)}.error-body{min-height:100vh;background:var(--bg);color:var(--text);--err-face:var(--lime)}html[data-theme="light"] .error-body{--err-face:var(--ink);--mouth:var(--lime-deep)}.error-shell{box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:clamp(20px,3.4vw,48px)}.error-brand{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;color:inherit;font-weight:800;font-size:1.35rem;letter-spacing:-0.02em;text-decoration:none;--mouth:var(--lime)}html[data-theme="light"] .error-brand{--mouth:var(--lime-deep)}.error-brand .face{width:28px;height:28px}.error-code{display:flex;align-items:center;justify-content:center;gap:2vw;margin:0;font-weight:800;font-size:clamp(132px,21vw,300px);line-height:0.8;letter-spacing:-0.06em}.error-face{position:relative;display:block;width:0.84em;height:0.84em;color:var(--err-face)}.error-face .face{position:absolute;inset:0;width:100%;height:100%;transition:opacity 0.2s ease,transform 0.35s cubic-bezier(0.3,1.4,0.4,1)}.error-face .face-dot{transform-box:fill-box;transform-origin:center;animation:error-blink 3.8s infinite}.error-glad{opacity:0;transform:rotate(-12deg)}.error-body:has(.error-home:hover,.error-home:focus-visible) .error-sad{opacity:0}.error-body:has(.error-home:hover,.error-home:focus-visible) .error-glad{opacity:1;transform:none}@keyframes error-blink{0%,94%,100%{transform:scaleY(1)}97%{transform:scaleY(0.1)}}.error-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;flex-wrap:wrap}.error-text{display:flex;flex-direction:column;gap:12px;min-width:0}.error-text h1{margin:0;font-size:clamp(2.1rem,4.2vw,3.6rem);line-height:1;letter-spacing:-0.03em}.error-text p{margin:0;max-width:46ch;color:var(--text-muted);font-size:1.1rem}.error-text code{font-family:var(--mono);font-size:1rem;color:var(--text-muted);overflow-wrap:anywhere}.error-text code b{font-weight:600;color:var(--err-face)}html[data-theme="light"] .error-text code b{color:var(--lime-deep)}.error-actions{display:flex;gap:12px;flex-wrap:wrap}.error-actions a{display:inline-flex;align-items:center;min-height:52px;padding:0 24px;border-radius:var(--pill);font-weight:700;font-size:1.05rem;text-decoration:none;transition:transform 0.16s ease}.error-actions a:hover{transform:translateY(-2px);text-decoration:none}.error-actions a:focus-visible{outline:3px solid var(--lime);outline-offset:3px}.error-home{background:var(--lime);color:var(--ink)}.error-home:hover{color:var(--ink)}.error-alt{color:var(--text);box-shadow:inset 0 0 0 2px var(--border-strong)}@media (max-width: 600px){.error-actions,.error-actions a{width:100%;justify-content:center}}@media (prefers-reduced-motion: reduce){.error-face .face-dot{animation:none}.error-face .face,.error-actions a{transition:none}}@media (max-width: 920px){.steps{grid-template-columns:1fr}.lesson-shell{display:block}.lesson-main{max-width:780px;padding:22px 24px 64px}.lesson-sidebar{position:fixed;top:0;left:0;bottom:0;width:300px;max-width:84vw;height:auto;z-index:85;background:var(--surface);border:0;border-right:1px solid var(--border-strong);border-radius:0;padding:76px 18px 24px;transform:translateX(-105%);visibility:hidden;transition:transform 0.25s ease,visibility 0.25s ease;box-shadow:var(--shadow)}.lesson-sidebar.is-open{transform:translateX(0);visibility:visible}.lesson-overlay{display:block;position:fixed;inset:0;z-index:84;background:rgba(0,0,0,0.5);opacity:0;pointer-events:none;transition:opacity 0.25s ease}.lesson-overlay.is-open{opacity:1;pointer-events:auto}.sidebar-open{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-strong);color:var(--text);border-radius:999px;padding:8px 16px;font:inherit;font-weight:600;cursor:pointer;margin-bottom:18px}}@media (max-width: 880px){.nav-bar{position:relative}.nav-toggle{display:flex}.primary-nav{position:absolute;top:100%;left:0;right:0;z-index:70;flex-direction:column;align-items:stretch;gap:18px;background:var(--header-panel,var(--bg));padding:8px var(--gutter) 28px;box-shadow:0 24px 40px rgba(0,0,0,0.35);transform:translateY(-8px);opacity:0;pointer-events:none;transition:transform 0.22s ease,opacity 0.22s ease}.site-header--lime{--header-panel:var(--lime)}.primary-nav.is-open{transform:translateY(0);opacity:1;pointer-events:auto}.nav-links,.nav-actions{flex-direction:column;align-items:flex-start;gap:4px}.nav-actions .theme-toggle{display:none}.theme-toggle--bar{display:block}.nav-bar{column-gap:8px}.lp-hello{bottom:92px}.nav-actions .lp{display:none}.lp--bar{display:block}.lp--bar .lp-btn{width:44px;height:44px;padding:0;justify-content:center}.lp--bar .lp-name,.lp--bar .lp-chev{display:none}.lp--bar .lp-pop{position:fixed;left:0;right:0;top:auto;bottom:0;width:auto;padding:12px 12px 20px;border-radius:24px 24px 0 0;background:var(--surface);box-shadow:0 -20px 40px rgba(0,0,0,0.4)}.site-header--lime .lp--bar .lp-pop{background:#121216}.lp--bar .lp-list{box-shadow:none;padding:0;max-height:60vh;background:none}.nav-link{font-size:1.3rem}.nav-cta{margin-top:8px}.user-dd{width:100%;display:block}.user-dd-trigger{display:none}.user-dd-menu{position:static;opacity:1;transform:none;pointer-events:auto;min-width:0;box-shadow:none;border:0;border-radius:0;padding:0;background:none}.user-dd-head{padding-left:0;padding-right:0}}@media (max-width: 760px){.grid-2{grid-template-columns:1fr}.lesson-nav{flex-direction:column}.lesson-nav a{max-width:100%}.lesson-nav-next{text-align:left;align-items:flex-start}.dash-head{flex-direction:column;align-items:flex-start}.footer-links{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:0 16px}.footer-go{width:100%}.footer-langs{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.footer-bottom{flex-direction:column}.footer-legal{flex-direction:column;align-items:flex-start}.footer-legal nav{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:0 16px}.footer-legal p{margin-left:0}}@media (prefers-reduced-motion: reduce){*{transition:none !important;scroll-behavior:auto !important}}.t-com{color:var(--syn-com);font-style:italic}.t-str{color:var(--syn-str)}.t-num{color:var(--syn-num)}.t-kw{color:var(--syn-kw)}.t-loop{color:var(--syn-loop)}.t-fn{color:var(--syn-fn)}.t-bi{color:var(--syn-bi)}.t-op{color:var(--syn-op)}.t-tag{color:var(--syn-tag)}.t-attr{color:var(--syn-attr)}.t-punct{color:var(--syn-punct)}.tok{font-family:var(--mono);font-weight:600}.gw-editor{position:relative;background:var(--code-bg)}.gw-editor-pre,.gw-editor-ta{margin:0;border:0;box-sizing:border-box;width:100%;font-family:var(--mono);font-size:0.92rem;line-height:1.6;letter-spacing:0;padding:16px 18px;tab-size:4;-moz-tab-size:4;white-space:pre}.gw-editor-pre{position:absolute;inset:0;overflow:hidden;pointer-events:none;color:var(--code-text);background:transparent}.gw-editor-pre code{font:inherit;white-space:pre;display:block}.gw-editor-ta{position:relative;display:block;min-height:220px;height:auto;resize:vertical;background:transparent;color:transparent;caret-color:var(--text);-webkit-text-fill-color:transparent;outline:none;overflow:auto}.gw-editor-ta::placeholder{color:var(--text-muted);-webkit-text-fill-color:var(--text-muted)}.pg-fab{position:fixed;right:24px;bottom:24px;z-index:70;min-height:56px;padding:0 10px 0 18px;display:inline-flex;align-items:center;gap:12px;border:2px solid #26262d;border-radius:var(--pill);background:var(--ink);color:var(--paper);font:inherit;font-size:1.0625rem;font-weight:700;cursor:pointer;box-shadow:0 18px 40px -16px rgba(0,0,0,0.7);transition:transform 0.16s ease,opacity 0.2s ease}.pg-fab:hover{transform:translateY(-2px)}.pg-fab:focus-visible{outline:3px solid var(--lime);outline-offset:3px}.pg-fab-glyph{color:var(--lime);font-family:var(--mono);font-weight:600}.pg-fab-kbd{padding:5px 10px;border-radius:var(--pill);background:var(--ink-3);color:#d4d4da;font-family:var(--mono);font-size:0.75rem;font-weight:600}.pg-fab.is-hidden{opacity:0;pointer-events:none;transform:translateY(24px)}.pg-scrim{position:fixed;inset:0;z-index:74;background:rgba(8,8,10,0.55);opacity:0;transition:opacity 0.3s ease}.pg-scrim.is-open{opacity:1}.pg-scrim[hidden]{display:none}.pg-drawer{--c:var(--ch-python);position:fixed;left:0;right:0;bottom:0;z-index:75;height:min(72vh,680px);display:flex;flex-direction:column;border-radius:28px 28px 0 0;background:var(--ink);color:var(--paper);box-shadow:0 -30px 80px rgba(0,0,0,0.55);transform:translateY(101%);visibility:hidden;transition:transform 0.5s cubic-bezier(0.2,1.1,0.3,1),visibility 0s linear 0.5s}.pg-drawer.is-open{transform:none;visibility:visible;transition:transform 0.5s cubic-bezier(0.2,1.1,0.3,1),visibility 0s}.pg-drawer.is-dragging{transition:none;user-select:none}.pg-grab{flex:none;align-self:center;width:72px;height:22px;margin-top:4px;display:grid;place-items:center;border-radius:var(--pill);cursor:ns-resize;touch-action:none}.pg-grab::before{content:"";width:52px;height:5px;border-radius:var(--pill);background:#33333b;transition:background 0.2s ease}.pg-grab:hover::before,.pg-grab:focus-visible::before,.pg-drawer.is-dragging .pg-grab::before{background:var(--c)}.pg-bar{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;padding:6px clamp(14px,2vw,24px) 14px}.pg-face{width:48px;height:48px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:15px;background:var(--lime);color:var(--ink);transition:background 0.26s ease}.pg-face[data-state="open"]{background:var(--ch-python)}.pg-face[data-state="grin"]{background:var(--ch-sql)}.pg-face[data-state="frown"]{background:var(--ch-java)}.pg-face .face{width:30px;height:30px}.pg-title{margin:0;font-size:1.875rem;font-weight:800;letter-spacing:-0.04em;line-height:1}.pg-pick{position:relative}.pg-lang{min-height:48px;padding:0 16px 0 6px;display:inline-flex;align-items:center;gap:10px;border:0;border-radius:var(--pill);background:var(--c);color:var(--ink);font:inherit;font-size:1.0625rem;font-weight:700;cursor:pointer;transition:transform 0.16s ease,background 0.26s ease}.pg-lang:hover{transform:translateY(-2px)}.pg-lang svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:transform 0.2s ease}.pg-lang[aria-expanded="true"] svg{transform:rotate(180deg)}.pg-badge{width:36px;height:36px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--ink);color:var(--c);font-family:var(--mono);font-size:0.8125rem;font-weight:600}.pg-menu{position:absolute;left:0;top:56px;z-index:5;width:min(680px,calc(100vw - 32px));max-height:min(60vh,520px);overflow:auto;padding:18px;display:flex;flex-direction:column;gap:12px;border-radius:22px;background:var(--ink-2);box-shadow:0 30px 60px -20px rgba(0,0,0,0.7),inset 0 0 0 1px #24242b;transform-origin:top left;animation:pg-menu-in 0.22s cubic-bezier(0.2,1,0.3,1)}.pg-menu[hidden]{display:none}@keyframes pg-menu-in{from{opacity:0;transform:translateY(-6px) scale(0.97)}}.pg-menu-head{margin:0;color:#d4d4da;font-size:0.875rem;font-weight:700}.pg-menu-head span{color:#8a8a94;font-weight:500}.pg-menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}.pg-item{min-height:48px;padding:0 12px 0 6px;display:flex;align-items:center;gap:10px;border:2px solid #26262d;border-radius:var(--pill);background:transparent;color:var(--paper);font:inherit;font-size:1rem;font-weight:700;text-align:left;cursor:pointer}.pg-item:hover,.pg-item:focus-visible{background:var(--ink-3)}.pg-item[aria-checked="true"]{border-color:var(--c);background:var(--ink-3)}.pg-item .pg-badge{width:34px;height:34px;background:var(--c);color:var(--ink);font-size:0.75rem}.pg-item--extra .pg-badge{background:var(--ink-3);color:var(--c);box-shadow:inset 0 0 0 2px var(--c)}.pg-item-text{display:flex;flex-direction:column;line-height:1.1}.pg-status{margin-left:auto;color:#a9a9b3;font-family:var(--mono);font-size:0.875rem}.pg-btn{min-height:48px;padding:0 20px;display:inline-flex;align-items:center;gap:10px;border:0;border-radius:var(--pill);font:inherit;font-size:1rem;font-weight:700;cursor:pointer;transition:transform 0.16s ease}.pg-btn:hover{transform:translateY(-2px)}.pg-btn:active{transform:translateY(1px) scale(0.98)}.pg-btn[disabled]{cursor:progress;transform:none}.pg-btn--line{border:2px solid #33333b;background:transparent;color:var(--paper)}.pg-btn--run{padding:0 10px 0 20px;background:var(--lime);color:var(--ink);font-size:1.0625rem}.pg-btn--run svg{width:13px;height:13px;fill:currentColor}.pg-btn--run kbd{padding:4px 8px;border-radius:var(--pill);background:rgba(8,8,10,0.14);font-family:var(--mono);font-size:0.75rem}.pg-close{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--ink-3);color:var(--paper);cursor:pointer}.pg-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round}.pg-close:hover{background:#26262d}.pg-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:0 clamp(14px,2vw,24px) 18px}.pg-pane{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border-radius:20px;box-shadow:inset 0 0 0 1px var(--ink-3)}.pg-pane--code{background:#0d0d11}.pg-pane--out{background:#111114}.pg-pane-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 12px 16px;border-bottom:1px solid var(--ink-3);font-size:0.875rem}.pg-file{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 9px;border-radius:var(--pill);background:var(--ink-3);font-family:var(--mono);font-size:0.8125rem}.pg-file::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--c)}.pg-note{color:#8a8a94;font-size:0.8125rem}.pg-out-label{font-weight:700}.pg-code{flex:1;min-height:0;display:flex}.pg-lines{flex:none;width:48px;padding:16px 12px 0 0;overflow:hidden;color:#44444d;font-family:var(--mono);font-size:0.9375rem;line-height:1.75;text-align:right;white-space:pre;user-select:none}.pg-editor-host{flex:1;min-width:0;min-height:0;overflow:hidden}.pg-editor-host .gw-editor{height:100%;background:transparent}.pg-editor-host .gw-editor-pre,.pg-editor-host .gw-editor-ta{padding:16px 18px 16px 4px;font-size:0.9375rem;line-height:1.75}.pg-editor-host .gw-editor-ta{height:100%;min-height:0;resize:none;caret-color:var(--lime)}.pg-scan{position:absolute;left:0;top:0;z-index:1;width:35%;height:3px;border-radius:3px;background:var(--lime);opacity:0}.pg-pane--out.is-running .pg-scan{opacity:1;animation:pg-scan 0.9s cubic-bezier(0.5,0,0.5,1) infinite}@keyframes pg-scan{from{transform:translateX(-100%)}to{transform:translateX(290%)}}.pg-out{flex:1;min-height:0;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.pg-out[hidden]{display:none}.pg-output{margin:0;color:#8a8a94;font-family:var(--mono);font-size:0.9375rem;line-height:1.7;white-space:pre-wrap;word-break:break-word}.pg-output.is-done{color:var(--paper)}.pg-err{color:#ffb3c0}.pg-explain.run-explain{margin:0;gap:14px;padding:16px;border-radius:16px;background:#1b1418;box-shadow:inset 0 0 0 1px #3a2430;color:var(--paper);font-size:1rem}.pg-explain.run-explain .face{width:40px;height:40px;margin:0;padding:8px;border-radius:12px;background:var(--ch-java);color:var(--ink);box-sizing:border-box}.pg-frame{flex:1;min-height:0;margin:12px;width:calc(100% - 24px);border:0;border-radius:14px;background:#ffffff}.pg-frame[hidden]{display:none}.pg-drawer :focus-visible{outline:3px solid var(--lime);outline-offset:2px}@media (max-width: 900px){.pg-body{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.pg-status,.pg-btn--run kbd{display:none}}@media (max-width: 760px){.pg-drawer{height:86vh}.pg-title{font-size:1.5rem}.pg-fab{right:16px;bottom:16px;padding:0 18px}.pg-fab .pg-fab-text,.pg-fab .pg-fab-kbd{display:none}}@media (prefers-reduced-motion: reduce){.pg-fab,.pg-scrim,.pg-drawer,.pg-drawer.is-open,.pg-lang,.pg-lang svg,.pg-btn,.pg-face{transition:none}.pg-menu,.pg-pane--out.is-running .pg-scan{animation:none}.pg-fab:hover,.pg-lang:hover,.pg-btn:hover,.pg-btn:active{transform:none}}.user-dd{position:relative;display:flex;align-items:center}.user-dd-trigger{display:inline-flex;align-items:center;background:none;border:0;border-radius:var(--pill);padding:0;cursor:pointer;color:inherit;transition:transform 0.15s ease}.user-dd-trigger:hover{transform:translateY(-2px)}.user-dd-trigger:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.user-dd-menu{position:absolute;right:0;top:calc(100% + 9px);min-width:226px;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:6px;opacity:0;transform:translateY(-6px) scale(0.98);transform-origin:top right;pointer-events:none;transition:opacity 0.15s ease,transform 0.15s ease;z-index:80}.user-dd.is-open .user-dd-menu{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.user-dd-head{padding:9px 11px 11px;border-bottom:1px solid var(--border);margin-bottom:6px;display:flex;flex-direction:column;gap:2px}.user-dd-head strong{font-size:0.92rem}.user-dd-head span{font-size:0.78rem;overflow:hidden;text-overflow:ellipsis}.user-dd-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 11px;border-radius:8px;font-family:var(--mono);font-size:0.86rem;color:var(--text-muted);background:none;border:0;cursor:pointer;transition:background 0.12s ease,color 0.12s ease}.user-dd-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.user-dd-item::before{content:"\203A";color:var(--border-strong);font-weight:700}.user-dd-item:hover::before{color:var(--syn-fn)}.user-dd-danger:hover{color:var(--error)}.user-dd-danger:hover::before{color:var(--error)}.small{font-size:0.8rem}.crumb{font-family:var(--mono);font-size:0.84rem;color:var(--text-muted);margin-bottom:22px;display:flex;flex-wrap:wrap;align-items:center;gap:1px}.crumb-prompt{color:var(--syn-str)}.crumb-sep{color:var(--border-strong);margin:0 3px}.crumb a{color:var(--text-muted);padding:1px 5px;border-radius:5px}.crumb a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.crumb-current{color:var(--text);padding:1px 5px}.lang-hero{display:flex;align-items:center;gap:20px;margin-bottom:38px}.lang-hero .course-icon{width:64px;height:64px;flex-shrink:0}.lang-hero h1{margin:0}.lang-hero .lead{margin:6px 0 0}.tier-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:20px}.tier-card{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;color:var(--text);transition:transform 0.12s ease,border-color 0.15s ease}.tier-card:hover{text-decoration:none;transform:translateY(-3px);border-color:var(--border-strong)}.tier-card-head{display:flex;align-items:center;gap:11px}.tier-bars{display:inline-flex;gap:3px;align-items:flex-end}.tier-bars i{width:6px;height:15px;border-radius:2px;background:var(--surface-2);border:1px solid var(--border-strong)}.tier-bars i.on{background:var(--syn-loop);border-color:var(--syn-loop)}.tier-name{font-family:var(--mono);font-size:0.76rem;text-transform:uppercase;letter-spacing:0.09em;color:var(--text-muted)}.tier-card h3{margin:4px 0 0}.tier-progress{display:flex;align-items:center;gap:10px;margin-top:6px}.tier-progress .progress-bar{flex:1}.tier-card-foot{margin-top:auto;padding-top:14px;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:0.8rem;color:var(--text-muted)}.tier-go{color:var(--text);font-weight:700}.tier-card.is-soon{opacity:0.6}.tier-card.is-soon .tier-card-foot.soon{color:var(--text-muted);justify-content:flex-start}::selection{background:color-mix(in srgb,var(--syn-fn) 32%,transparent);color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:padding-box}.sidebar-nav a:focus-visible,.progress-card:focus-visible,.tier-card:focus-visible,.crumb a:focus-visible,.quiz-option:focus-visible,.lesson-nav a:focus-visible,.activity-list a:focus-visible,.lesson-body a:focus-visible,.sidebar-open:focus-visible,.flash-close:focus-visible,.back-link:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.flash-close:hover{opacity:1;background:color-mix(in srgb,currentColor 12%,transparent)}.progress-card:active,.tier-card:active{transform:translateY(0)}.field-label{font-weight:600;font-size:0.92rem}.field-hint{font-size:0.82rem;color:var(--text-muted)}.lang-role{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin:22px 0 0;max-width:760px;color:var(--text);line-height:1.55}.lang-role-tag{font-family:var(--mono);font-size:0.72rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--brand-ink);background:var(--accent-lime);padding:3px 9px;border-radius:999px;flex-shrink:0}.build-home{display:flex;flex-direction:column;gap:48px}.build-new{display:grid;grid-template-columns:1.15fr 0.85fr;gap:28px;align-items:start}.build-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px}.build-form h2{margin:0 0 18px}.build-tips{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px}.build-tips h3{margin:0 0 14px}.build-steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:12px;color:var(--text-muted)}.build-steps strong{color:var(--text)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.project-card-main{display:flex;gap:14px;align-items:center;padding:18px;color:var(--text)}.project-card-main:hover{background:var(--surface-2);text-decoration:none}.project-icon{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:11px;background:var(--brand-soft);color:var(--brand);flex-shrink:0}.project-icon svg{width:22px;height:22px}.project-card-body{display:flex;flex-direction:column;gap:3px;min-width:0}.project-card-body strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-body .muted{font-size:0.84rem}.project-card-foot{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.project-card-foot form{margin:0}.btn-danger{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,var(--border-strong))}.btn-danger:hover{background:color-mix(in srgb,var(--error) 14%,var(--surface-2))}.ide-shell{max-width:1620px;margin:0 auto;padding:22px 24px 64px}.ide-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.ide-topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.ide-back{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;border:1px solid var(--border-strong);color:var(--text);flex-shrink:0}.ide-back:hover{background:var(--surface-2);text-decoration:none}.ide-back svg{width:18px;height:18px}.ide-project-name{font-size:1.05rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ide-status{font-family:var(--mono);font-size:0.78rem;color:var(--text-muted);padding:3px 10px;border-radius:999px;border:1px solid var(--border);white-space:nowrap}.ide-status.is-ok{color:var(--success);border-color:color-mix(in srgb,var(--success) 34%,var(--border))}.ide-status.is-error{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,var(--border))}.ide{display:grid;grid-template-columns:196px minmax(0,1fr) minmax(0,1fr);gap:12px;height:72vh;min-height:540px}.ide-files{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.ide-files-head{font-family:var(--mono);font-size:0.74rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-muted);padding:14px 16px 8px}.ide-file-list{display:flex;flex-direction:column;overflow-y:auto;flex:1}.ide-file{display:flex;align-items:center;gap:9px;padding:9px 16px;font-family:var(--mono);font-size:0.85rem;color:var(--text-muted);text-align:left;border-left:2px solid transparent}.ide-file:hover{background:var(--surface-2);color:var(--text)}.ide-file.is-active{color:var(--text);background:var(--surface-2);border-left-color:var(--brand)}.ide-file-dot{width:7px;height:7px;border-radius:2px;background:var(--border-strong);flex-shrink:0}.ide-file.is-active .ide-file-dot{background:var(--brand)}.ide-add{display:flex;gap:6px;padding:12px;border-top:1px solid var(--border)}.ide-add input{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text);font-family:var(--mono);font-size:0.8rem}.ide-add input:focus{outline:2px solid var(--ring);outline-offset:1px}.ide-delete{margin:0;padding:0 12px 12px}.ide-delete-btn{width:100%;padding:8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:0.8rem;cursor:pointer}.ide-delete-btn:hover{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,var(--border))}.ide-editor{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.ide-editor-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border)}.ide-editor-name{font-family:var(--mono);font-size:0.85rem;color:var(--text)}.ide-editor-hint{font-size:0.76rem;color:var(--text-muted)}.ide-editor-host{flex:1;overflow:hidden}.ide-editor-host .gw-editor{height:100%}.ide-editor-host .gw-editor-ta{height:100%;min-height:0;resize:none;padding:16px 18px}.ide-editor-host .gw-editor-pre{padding:16px 18px}.ide-preview{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.ide-preview-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:0.8rem;color:var(--text-muted)}.ide-refresh{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer}.ide-refresh:hover{color:var(--text);background:var(--surface-2)}.ide-refresh svg{width:15px;height:15px}.ide-frame{flex:1;width:100%;border:0;background:#ffffff;display:block}.ide-reco{margin-top:30px}.ide-reco-head{max-width:620px;margin-bottom:18px}.ide-reco-head h2{margin:0 0 6px}.ide-reco-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.ide-reco-card{display:flex;gap:13px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;color:var(--text)}.ide-reco-card:hover{background:var(--surface-2);border-color:var(--border-strong);text-decoration:none;transform:translateY(-1px)}.ide-reco-badge{display:inline-grid;place-items:center;min-width:40px;height:40px;padding:0 8px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-family:var(--mono);font-weight:800;font-size:0.9rem;flex-shrink:0}.ide-reco-body{display:flex;flex-direction:column;gap:3px}.ide-reco-body .muted{font-size:0.85rem}@media (max-width: 1080px){.ide{grid-template-columns:170px 1fr;height:auto}.ide-preview{grid-column:1 / -1;height:460px}}@media (max-width: 760px){.build-new{grid-template-columns:1fr}.ide{grid-template-columns:1fr}.ide-files{flex-direction:column}.ide-file-list{flex-direction:row;overflow-x:auto}.ide-file{border-left:0;border-bottom:2px solid transparent;white-space:nowrap}.ide-file.is-active{border-left:0;border-bottom-color:var(--brand)}.ide-editor{height:420px}}