:root{--bg:#fff;--bg-soft:#f6f7f9;--bg-softer:#eef0f3;--text:#1d2330;--text-muted:#5b6475;--border:#dde1e7;--accent:#08769a;--accent-soft:#e6f7ff;--ok:#177a33;--ok-soft:#e7f6ec;--bad:#c62828;--bad-soft:#fdecec;--warn:#8a5c00;--warn-soft:#fff5d6;--purple:#7c3aed;--purple-soft:#f3edff;--radius:10px;--shadow:0 1px 3px #0000000f, 0 4px 16px #0000000a;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.6}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#16181d;--bg-soft:#1e2128;--bg-softer:#262a33;--text:#e6e8ec;--text-muted:#a0a8b8;--border:#343946;--accent:#58c4dc;--accent-soft:#10303a;--ok:#4ac26b;--ok-soft:#13301d;--bad:#ff7b72;--bad-soft:#3a1618;--warn:#e3b341;--warn-soft:#3a2e10;--purple:#b392f0;--purple-soft:#2a2140;--shadow:none}}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}main:focus{outline:none}.skip-link{z-index:100;background:var(--accent);color:#fff;border-radius:8px;padding:.5rem .9rem;font-weight:600;text-decoration:none;position:fixed;top:-4rem;left:.75rem}.skip-link:focus{top:.75rem}@media (prefers-color-scheme:dark){.skip-link{color:#0b1d24}}code{background:var(--bg-softer);overflow-wrap:break-word;border-radius:4px;padding:.1em .35em;font-family:Cascadia Code,Consolas,monospace;font-size:.88em}pre{overflow-x:auto}h1,h2,h3,h4{line-height:1.25}h2{border-top:1px solid var(--border);margin-top:2.5rem;padding-top:1rem}h3{margin-top:1.8rem}.layout{grid-template-columns:290px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg-soft);border-right:1px solid var(--border);height:100vh;padding:1rem;position:sticky;top:0;overflow-y:auto}.brand{color:var(--text);align-items:center;gap:.5rem;padding:.25rem .5rem .75rem;font-size:1.15rem;font-weight:700;text-decoration:none;display:flex}.sidebar-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:1rem .5rem .25rem;font-size:.75rem}.sidebar ul{margin:0;padding:0;list-style:none}.sidebar li a{color:var(--text);border-radius:6px;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem .5rem;font-size:.92rem;text-decoration:none;display:flex}.sidebar li a:hover{background:var(--bg-softer)}.sidebar li a.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.pill{background:var(--bg-softer);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:.05rem .45rem;font-size:.72rem}.pill-done{background:var(--ok-soft);color:var(--ok)}.content{min-width:0;padding:2rem 3rem 5rem}.topbar{z-index:15;background:var(--bg);border-bottom:1px solid var(--border);justify-content:flex-end;align-items:center;gap:1.25rem;min-height:3.25rem;margin:-2rem -3rem 1.5rem;padding:.4rem 3rem;display:flex;position:sticky;top:0}.topbar:not(:has(*)){display:none}.topbar .sidebar-streak{margin:0}html{scroll-padding-top:4rem}.account-menu{position:relative}.account-menu>.btn{max-width:260px}.account-popover{z-index:40;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);width:330px;box-shadow:var(--shadow);justify-items:start;gap:.6rem;padding:.9rem;display:grid;position:absolute;top:calc(100% + .4rem);right:0}.account-popover p{margin:0;font-size:.9rem}.account-popover .sign-in-form{width:100%}.account-popover-signed{justify-items:stretch;width:290px}.account-who{gap:.1rem;min-width:0;display:grid}.account-who .muted{font-size:.8rem}.account-actions{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding-top:.6rem;font-size:.9rem;display:flex}.lesson,.home{max-width:900px}.lesson-kicker{color:var(--accent);margin:0;font-size:.9rem;font-weight:600}.lesson h1,.home h1{margin:.25rem 0 .5rem;font-size:2.2rem}.lesson-summary{color:var(--text-muted);font-size:1.15rem}.pager{border-top:1px solid var(--border);justify-content:space-between;gap:1rem;margin-top:4rem;padding-top:1.5rem;display:flex}.mobile-bar{display:none}.sidebar-chapter-head{align-items:center;gap:.25rem;display:flex}.sidebar-chapter-head a{color:var(--text);border-radius:6px;flex:1;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem .5rem;font-size:.92rem;font-weight:600;text-decoration:none;display:flex}.sidebar-chapter-head a:hover{background:var(--bg-softer)}.sidebar-chapter-head a.active{background:var(--accent-soft);color:var(--accent)}.sidebar-toggle{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;width:1.75rem;height:1.75rem;font-size:.9rem}.sidebar-toggle:hover{background:var(--bg-softer);color:var(--text)}.sidebar-sub{border-left:1px solid var(--border);margin-left:.75rem;padding-left:.5rem}.sidebar-sub h4{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:.6rem .5rem .15rem;font-size:.7rem}.sidebar-sub li a{font-size:.88rem}.playground{gap:.5rem;display:grid}.playground-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.code-editor{border:1px solid var(--border);border-radius:var(--radius);font-size:.85rem;overflow:hidden}.code-editor .cm-editor{max-height:520px}.code-editor .cm-editor.cm-focused{outline:2px solid var(--accent);outline-offset:-1px}.code-editor .cm-scroller{font-family:ui-monospace,Cascadia Code,Consolas,monospace}.playground-preview-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-top:.25rem;font-size:.75rem;font-weight:700}.hero h1{margin-bottom:.5rem;font-size:clamp(2rem,4vw,2.75rem);line-height:1.15}.hero-highlights{color:var(--ok);flex-wrap:wrap;gap:.5rem 1.25rem;margin:1rem 0;padding:0;font-weight:600;list-style:none;display:flex}.hero-actions{gap:1rem;margin-bottom:2rem}.hero-actions .btn{padding:.6rem 1.4rem;font-size:1.05rem;text-decoration:none}.hero-demo h2{margin-bottom:.25rem}.mini-playground{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:stretch;gap:1rem;display:grid}.mini-playground-editor{align-content:start;justify-items:start;gap:.5rem;display:grid}.mini-playground-editor .code-editor{width:100%}.mini-playground-result{border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg-soft);align-content:start;justify-items:start;gap:.75rem;padding:1rem;display:grid}@media (width<=700px){.mini-playground{grid-template-columns:1fr}}.feature-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.75rem;display:grid}.feature{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);gap:.25rem;padding:1rem;display:grid}.feature-icon{font-size:1.6rem}.audience{gap:.5rem;padding-left:1.25rem;display:grid}.placement .progress-bar{margin-bottom:1.5rem}.placement-options{gap:.5rem;margin:1rem 0;display:grid}.placement-option{text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font:inherit;padding:.75rem 1rem}.placement-option:hover{border-color:var(--accent);background:var(--accent-soft)}.placement-option code{white-space:normal;background:0 0}.sidebar-test{color:var(--text);border-radius:6px;margin:0 0 .5rem;padding:.35rem .5rem;font-size:.92rem;text-decoration:none;display:block}.sidebar-test:hover{background:var(--bg-softer)}.sidebar-test.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.cheatsheet-tabs{margin:1rem 0}.cheatsheet-print{margin-left:auto}.cheatsheet .compare code{white-space:normal}@media print{:is(body:has(.cheatsheet) .sidebar,body:has(.cheatsheet) .mobile-bar,body:has(.cheatsheet) .cheatsheet-tabs,body:has(.cheatsheet) .lesson-summary,body:has(.cheatsheet) .translation-notice,body:has(.cheatsheet) .lesson-kicker){display:none}body:has(.cheatsheet) .layout{display:block}body:has(.cheatsheet) .content{padding:0}}.news-list{gap:1rem;padding:0;list-style:none;display:grid}.news-list li{border-left:3px solid var(--accent);background:var(--bg-soft);border-radius:0 var(--radius) var(--radius) 0;gap:.15rem;padding:.75rem 1rem;display:grid}.news-list time{font-size:.8rem}.news-dot{background:var(--bad);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-left:.4rem;display:inline-block}.certificate-sheet{border-radius:var(--radius);box-shadow:var(--shadow);margin:1.5rem 0 1rem;overflow:hidden}.certificate-sheet svg{width:100%;height:auto;display:block}.certificate-actions .btn{text-decoration:none}.certificate-line{margin:.25rem 0 .5rem;font-weight:600;display:inline-block}@media print{@page{size:A4 landscape;margin:0}body:has(.certificate-sheet) *{visibility:hidden}:is(body:has(.certificate-sheet) .certificate-sheet,body:has(.certificate-sheet) .certificate-sheet *){visibility:visible}body:has(.certificate-sheet) .certificate-sheet{box-shadow:none;border-radius:0;margin:0;position:fixed;inset:0}}.review-option{text-align:left;font:inherit;color:inherit;cursor:pointer;width:100%}.review-option:disabled{cursor:default}.review .progress-bar{margin-bottom:1rem}.review-reminder{border-radius:var(--radius);background:var(--purple-soft);color:var(--purple);margin:-.25rem 0 1rem;padding:.6rem 1rem;font-weight:600;text-decoration:none;display:block}.dashboard{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);gap:1rem;margin:1.5rem 0 .5rem;padding:1.1rem 1.25rem;display:grid}.dashboard .continue-card{margin:0}.dashboard-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.dashboard-stats li,.dashboard-stats a{color:var(--text);gap:.1rem;text-decoration:none;display:grid}.dashboard-stats strong{font-size:1.35rem;line-height:1.2}.dashboard-stats strong .muted{font-size:.95rem;font-weight:400}.dashboard-stats span{color:var(--text-muted);font-size:.85rem}.dashboard-stats a span{color:var(--purple);font-weight:600}.dashboard-stats a:hover strong{color:var(--purple)}.dashboard .progress-bar{height:6px}.continue-card{border-radius:var(--radius);border:1px solid var(--accent);background:var(--accent-soft);color:var(--text);gap:.15rem;margin:1.5rem 0 1rem;padding:1rem 1.25rem;text-decoration:none;display:grid}.continue-card strong{color:var(--accent);font-size:1.1rem}.continue-card:hover{box-shadow:var(--shadow)}.streak-line{flex-wrap:wrap;align-items:baseline;gap:.25rem 1rem;margin:.75rem 0 .25rem;display:flex}.sidebar-me{border-top:1px solid var(--border);gap:.75rem;margin-top:1.5rem;padding-top:.25rem;display:grid}:is(.sidebar-me,.sidebar-me:not(:has(.sidebar-streak,.account-box))){display:none}.sidebar-me h3{margin-bottom:0}.sidebar-streak{margin:0 .5rem;font-size:.9rem;font-weight:600}.sidebar-me .account-box{border-top:none;gap:.6rem;margin:0;padding:0 .5rem}.sidebar-me .account-box .btn{justify-self:start}.read-check{color:var(--ok);font-weight:700}.lesson-card .read-check{font-size:.75rem}.read-marker{height:1px}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.75rem;display:grid}.badge{text-align:center;border:1px dashed var(--border);border-radius:var(--radius);justify-items:center;gap:.2rem;padding:1rem .75rem;font-size:.9rem;display:grid}.badge:not(.badge-earned) .badge-icon{opacity:.45}.badge-icon{filter:grayscale();font-size:2rem}.badge-earned{opacity:1;border-style:solid;border-color:var(--ok);background:var(--ok-soft)}.badge-earned .badge-icon{filter:none}.about-author,.about-teaser{align-items:flex-start;gap:1rem;display:flex}.about-avatar{font-size:2.2rem;line-height:1}.about-teaser{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);margin:2.5rem 0 1rem;padding:1rem 1.25rem}.about-teaser p{margin:.25rem 0 0}.about-name{color:var(--text-muted);margin-top:.15rem;display:block}.your-data{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);margin:2rem 0 1rem;padding:1rem 1.25rem}.your-data h2{margin-top:0}.sidebar-footer{margin-top:1.5rem;padding:.5rem;font-size:.8rem}.sidebar-footer a{color:var(--text-muted)}.form-privacy{flex-basis:100%;font-size:.8rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.bonus-badge{background:var(--purple-soft);color:var(--purple);border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.bonus-lock{border:1px dashed var(--purple);border-radius:var(--radius);background:var(--purple-soft);gap:.5rem;padding:1rem 1.25rem;display:grid}.bonus-lock p{margin:0}.sign-in-form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.sign-in-form .input{flex:1;min-width:200px}.sign-in-form .bad,.sign-in-sent{flex-basis:100%;margin:0}.sign-in-code{letter-spacing:.2em;font-variant-numeric:tabular-nums}.link-button{font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-basis:100%;padding:0;font-size:.85rem;text-decoration:underline}.account-box{border-top:1px solid var(--border);gap:.5rem;margin-top:1.5rem;padding:.75rem .5rem 0;display:grid}.account-box p{margin:0;font-size:.85rem}.account-email{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.feedback{border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg-soft);margin-top:3rem;padding:1rem 1.25rem}.feedback-teaser{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.feedback-form h3{margin:0}.feedback-form label{margin-bottom:-.35rem;font-size:.92rem;font-weight:600}.feedback-form p{margin:0}.feedback-honeypot{position:absolute;left:-9999px}.feedback-done p{margin:0 0 .5rem}.sidebar-top{justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.75rem;display:flex}.sidebar-top .brand{white-space:nowrap;padding-bottom:.25rem;padding-right:0}.lang-switch{border:1px solid var(--border);background:var(--bg);border-radius:999px;flex-shrink:0;display:inline-flex;overflow:hidden}.lang-switch a{color:var(--text-muted);padding:.15rem .6rem;font-size:.8rem;font-weight:600;text-decoration:none}.lang-switch a:hover{background:var(--bg-softer)}.lang-switch a.active{background:var(--accent);color:#fff}@media (prefers-color-scheme:dark){.lang-switch a.active{color:#0b1d24}}.translation-notice{border-radius:var(--radius);background:var(--warn-soft);color:var(--warn);padding:.6rem .9rem;font-size:.95rem}@media (width<=900px){.layout{grid-template-columns:1fr}.sidebar{z-index:20;height:auto;display:none;position:fixed;inset:3.25rem 15% 0 0;box-shadow:0 0 40px #0000004d}.sidebar .sidebar-top{display:none}.sidebar.open{display:block}.mobile-bar{z-index:30;background:var(--bg-soft);border-bottom:1px solid var(--border);align-items:center;gap:.5rem;height:3.25rem;padding:0 1rem;display:flex;position:sticky;top:0}.mobile-bar .brand{margin-right:auto;font-size:1rem}.menu-backdrop{z-index:19;background:#0006;position:fixed;inset:3.25rem 0 0}.sidebar .lang-switch{display:none}.content{padding:1.25rem 1rem 4rem}.topbar{display:none}.sidebar-me{display:grid}.sidebar-me:not(:has(.sidebar-streak,.account-box)){display:none}html{scroll-padding-top:3.75rem}}.progress-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);justify-items:start;gap:.5rem;padding:1rem 1.25rem;display:grid}.progress-bar{background:var(--bg-softer);border-radius:999px;width:100%;height:8px;overflow:hidden}.progress-bar>div{background:var(--ok);height:100%;transition:width .3s}.how-it-works li{margin-bottom:.5rem}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem;display:grid}.lesson-card{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);background:var(--bg);box-shadow:var(--shadow);align-content:start;gap:.25rem;padding:1rem;text-decoration:none;display:grid}.lesson-card:hover{border-color:var(--accent)}.lesson-card-summary{color:var(--text-muted);font-size:.9rem}.lesson-card-meta{color:var(--accent);margin-top:.25rem;font-size:.8rem;font-weight:600}.lesson-card-number{color:var(--accent);font-size:.8rem;font-weight:700}.callout{border-radius:var(--radius);border-left:4px solid;margin:1.25rem 0;padding:.85rem 1.1rem}.callout-title{margin-bottom:.25rem;font-weight:700}.callout-body>:first-child{margin-top:0}.callout-body>:last-child{margin-bottom:0}.callout-why{background:var(--accent-soft);border-color:var(--accent)}.callout-where{background:var(--purple-soft);border-color:var(--purple)}.callout-warn{background:var(--warn-soft);border-color:var(--warn)}.callout-tip{background:var(--ok-soft);border-color:var(--ok)}.callout-info{background:var(--bg-soft);border-color:var(--text-muted)}.callout-faq{background:var(--bg-soft);border-color:var(--purple)}.callout-faq .callout-title{font-style:italic}.table-wrap{margin:1rem 0;overflow-x:auto}table.compare{border-collapse:collapse;width:100%;font-size:.93rem}.compare th,.compare td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.5rem .75rem}.compare th{background:var(--bg-soft)}.code{margin:1rem 0;position:relative}.code pre{border-radius:var(--radius);border:1px solid var(--border);margin:0;padding:1rem;font-family:Cascadia Code,Consolas,monospace;font-size:.85rem;line-height:1.5;overflow-x:auto}.code-copy{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;opacity:0;border-radius:6px;padding:.2rem .5rem;font-size:.75rem;transition:opacity .15s;position:absolute;top:.5rem;right:.5rem}.code:hover .code-copy{opacity:1}.demo,.challenge{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--bg);margin:1.5rem 0;padding:1rem 1.25rem}.challenge{border-color:var(--purple);border-width:2px}.challenge-done{border-color:var(--ok)}.demo-header,.challenge-header{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.demo-header h3,.challenge-header h3{margin:0;font-size:1.05rem}.demo-actions{gap:.35rem;margin-left:auto;display:flex}.demo-badge,.challenge-badge,.quiz-badge{text-transform:uppercase;letter-spacing:.05em;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.15rem .5rem;font-size:.7rem;font-weight:700}.challenge-badge{background:var(--purple-soft);color:var(--purple)}.quiz-badge{background:var(--warn-soft);color:var(--warn)}.demo-description{color:var(--text-muted);margin-top:.5rem;font-size:.93rem}.demo-preview{background:var(--bg-soft);border:1px dashed var(--border);border-radius:8px;margin-top:.85rem;padding:1rem}.difficulty{border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.difficulty-warmup{background:var(--accent-soft);color:var(--accent)}.difficulty-easy{background:var(--ok-soft);color:var(--ok)}.difficulty-hard{background:var(--bad-soft);color:var(--bad)}.difficulty-medium{background:var(--warn-soft);color:var(--warn)}.challenge-task ul,.challenge-task ol{padding-left:1.3rem}.challenge-file{color:var(--text-muted);font-size:.9rem}.challenge-brief{background:var(--purple-soft);border-radius:8px;margin:.75rem 0;padding:.75rem 1rem;font-size:.93rem}.challenge-brief pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0 0;font-family:inherit}.source-info{margin:.75rem 0;font-size:.93rem}.source-info summary{cursor:pointer;color:var(--text-muted)}.source-info>.stack{margin-top:.5rem}.hints{justify-items:start;gap:.5rem;margin-bottom:.75rem;display:grid}.hint{background:var(--warn-soft);border-radius:8px;width:100%;padding:.5rem .75rem;font-size:.93rem}.tabs{border-bottom:1px solid var(--border);gap:.25rem;margin-top:.5rem;display:flex}.tabs button[role=tab]{color:var(--text-muted);cursor:pointer;font:inherit;background:0 0;border:none;border-bottom:2px solid #0000;padding:.45rem .9rem;font-weight:600}.tabs button.active{color:var(--purple);border-bottom-color:var(--purple)}.tabs-reset{align-self:center;margin-left:auto}.solution-code{margin-top:.75rem}.solution-code summary{cursor:pointer;color:var(--text-muted)}.challenge-check{cursor:pointer;align-items:center;gap:.4rem;margin-top:.85rem;font-weight:600;display:inline-flex}.error-box{background:var(--bad-soft);color:var(--bad);border-radius:8px;gap:.5rem;padding:.75rem;display:grid}.quiz{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-soft);margin:1.5rem 0;padding:1rem 1.25rem}.quiz-question{margin-bottom:.6rem;font-weight:600}.quiz-options{gap:.35rem;display:grid}.quiz-option{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:baseline;gap:.5rem;padding:.4rem .6rem;display:flex}.quiz-option>span{overflow-wrap:anywhere;min-width:0}.quiz-option:hover{background:var(--bg-softer)}.quiz-option.correct{border-color:var(--ok);background:var(--ok-soft)}.quiz-option.wrong{border-color:var(--bad);background:var(--bad-soft)}.quiz-result{margin-top:.6rem;font-size:.95rem}.summary{margin-top:3rem}.summary ul{padding-left:1.2rem}.loading{color:var(--text-muted)}.btn{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:.45rem .9rem;font-weight:600}@media (prefers-color-scheme:dark){.btn{color:#0b1d24}}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-small{padding:.2rem .6rem;font-size:.85rem}.btn-ghost{color:var(--text);border-color:var(--border);background:0 0;font-weight:500}.btn-danger{background:var(--bad);border-color:var(--bad)}.input,select.input,textarea.input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:.4rem .6rem}.input:focus{outline:2px solid var(--accent);outline-offset:1px}.input.invalid{border-color:var(--bad)}.field-error{color:var(--bad);font-size:.85rem}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.stack{grid-template-columns:minmax(0,1fr);gap:.6rem;display:grid}.card{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:.75rem 1rem}.muted{color:var(--text-muted);font-size:.9rem}.ok{color:var(--ok)}.bad{color:var(--bad)}.list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.list li{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.4rem .6rem}.flash{animation:.6s ease-out flash}@keyframes flash{0%{background:var(--warn-soft);outline:2px solid var(--warn)}}.modal-backdrop{z-index:100;background:#00000073;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--bg);color:var(--text);border-radius:var(--radius);min-width:min(420px,90vw);padding:1.5rem;box-shadow:0 10px 40px #0000004d}.toast-stack{z-index:200;gap:.5rem;display:grid;position:fixed;bottom:1rem;right:1rem}.toast{background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;min-width:220px;padding:.6rem 1rem}.toast-success{background:var(--ok);color:#fff}.toast-error{background:var(--bad);color:#fff}.demo-guide p{margin:.35rem 0}.demo-guide ol{margin:.25rem 0 .5rem;padding-left:1.3rem}.demo-guide li{margin:.2rem 0}@media (width<=900px){.demo,.challenge{padding:.75rem}.demo-preview,.challenge-brief{padding:.6rem .75rem}}
