:root{--bg:#faf8f4;--bg-soft:#f1ede4;--fg:#1c2226;--muted:#6b7075;--accent:#007d9c;--accent-soft:#d9eef4;--border:#e3ddd0;--ok:#2f9e44;--ok-soft:#e2f3e6;--err:#c92a2a;--err-soft:#fbe4e4;--warn:#e8890c;--code-bg:#0f1416;--code-fg:#e6edf3;--shadow:0 1px 2px #1c22260f, 0 4px 16px #1c22260f;--radius:10px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:"SF Mono", ui-monospace, Menlo, Consolas, "Liberation Mono", monospace}[data-theme=dark]{--bg:#101418;--bg-soft:#171d22;--fg:#e8edf0;--muted:#99a3aa;--accent:#4fb6d6;--accent-soft:#12303a;--border:#262e34;--ok:#51cf66;--ok-soft:#14301b;--err:#ff8787;--err-soft:#3a1616;--warn:#ffa94d;--code-bg:#0b0f11;--code-fg:#e6edf3;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:var(--font);-webkit-font-smoothing:antialiased;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,pre{font-family:var(--mono)}.container{max-width:960px;margin:0 auto;padding:0 20px}button{font-family:inherit}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.header-inner{align-items:center;gap:16px;height:56px;display:flex}.brand{color:var(--fg);letter-spacing:-.02em;font-size:1.15rem;font-weight:800}.brand span{color:var(--accent)}.header-spacer{flex:1}.streak{color:var(--muted);white-space:nowrap;font-size:.85rem}.streak b{color:var(--warn)}.icon-btn{border:1px solid var(--border);color:var(--fg);cursor:pointer;background:0 0;border-radius:8px;padding:5px 10px;font-size:.9rem}.icon-btn:hover{background:var(--bg-soft)}.site-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;margin-top:64px;padding:24px 0 48px;font-size:.85rem}.hero{text-align:center;padding:64px 0 32px}.hero h1{letter-spacing:-.03em;margin:0 0 12px;font-size:clamp(2.2rem,6vw,3.4rem)}.hero p.tagline{color:var(--muted);max-width:560px;margin:0 auto 24px;font-size:1.15rem}.hero-cta{background:var(--accent);color:#fff;border-radius:999px;padding:12px 26px;font-weight:600;display:inline-block}[data-theme=dark] .hero-cta{color:#06222c}.hero-cta:hover{filter:brightness(1.08);text-decoration:none}.how{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:40px 0;display:grid}.how-card{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.how-card .num{color:var(--accent);font-weight:800}.how-card h3{margin:4px 0 6px;font-size:1rem}.how-card p{color:var(--muted);margin:0;font-size:.9rem}.path{flex-direction:column;gap:10px;display:flex}.chapter-card{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);color:var(--fg);align-items:center;gap:16px;padding:14px 18px;transition:border-color .15s,transform .15s;display:flex}a.chapter-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}.chapter-card.locked{opacity:.55;cursor:not-allowed}.chapter-num{color:var(--accent);min-width:2em;font-size:1.1rem;font-weight:800}.chapter-card h2{margin:0;font-size:1.05rem}.chapter-card p{color:var(--muted);margin:2px 0 0;font-size:.88rem}.chapter-meta{text-align:right;color:var(--muted);white-space:nowrap;margin-left:auto;font-size:.82rem}.chapter-card.done .chapter-num,.chapter-card.done .chapter-meta{color:var(--ok)}.chapter-head{padding:40px 0 8px}.chapter-head h1{letter-spacing:-.02em;margin:0 0 6px;font-size:2rem}.chapter-head .progress-line{color:var(--muted);margin-bottom:16px;font-size:.9rem}.lesson{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);margin:24px 0;padding:24px 28px}.lesson h1{font-size:1.5rem}.lesson h2{border-bottom:1px solid var(--border);margin-top:28px;padding-bottom:4px;font-size:1.2rem}.lesson pre{background:var(--code-bg);color:var(--code-fg);border-radius:8px;padding:14px 16px;font-size:.88rem;line-height:1.55;overflow-x:auto}.lesson blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0;margin:16px 0;padding:10px 16px;font-size:.92rem}.lesson code{background:var(--accent-soft);border-radius:4px;padding:1px 5px;font-size:.88em}.lesson pre code{background:0 0;padding:0}.lesson table{border-collapse:collapse;width:100%;font-size:.9rem}.lesson th,.lesson td{border:1px solid var(--border);text-align:left;padding:6px 10px}.exercise-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.exercise-row{background:var(--bg-soft);border:1px solid var(--border);color:var(--fg);border-radius:8px;align-items:center;gap:12px;padding:10px 16px;display:flex}a.exercise-row:hover{border-color:var(--accent);text-decoration:none}.exercise-row .ex-num{color:var(--muted);min-width:1.6em;font-weight:700}.exercise-row.done .ex-num{color:var(--ok)}.exercise-row .ex-title{font-size:.95rem}.exercise-row .boss-badge{text-transform:uppercase;letter-spacing:.05em;color:var(--warn);border:1px solid var(--warn);border-radius:999px;padding:1px 8px;font-size:.7rem;font-weight:700}.exercise-row .ex-status{color:var(--ok);margin-left:auto;font-size:.85rem}.exercise-head{padding:32px 0 4px}.exercise-head h1{margin:0 0 4px;font-size:1.6rem}.exercise-nav{align-items:center;gap:12px;margin:16px 0;display:flex}.exercise-nav .back{font-size:.9rem}.exercise-nav .pager{gap:8px;margin-left:auto;display:flex}.pager a{border:1px solid var(--border);color:var(--fg);background:var(--bg-soft);border-radius:8px;padding:5px 12px;font-size:.88rem}.pager a:hover{border-color:var(--accent);text-decoration:none}.pager a.disabled{opacity:.4;pointer-events:none}.prompt{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);margin:8px 0 20px;padding:18px 22px;font-size:.98rem}.prompt code{background:var(--accent-soft);font-family:var(--mono);border-radius:4px;padding:1px 5px;font-size:.9em}.prompt .emph{font-weight:700}.runner{grid-template-columns:1fr;gap:16px;display:grid}@media (min-width:900px){.runner{grid-template-columns:1fr 1fr}}.editor-pane,.output-pane{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.pane-bar{border-bottom:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:8px;padding:8px 12px;font-size:.82rem;font-weight:600;display:flex}.pane-bar .spacer{flex:1}.run-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:6px 18px;font-size:.9rem;font-weight:600}[data-theme=dark] .run-btn{color:#06222c}.run-btn:disabled{opacity:.6;cursor:wait}.solution-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:5px 12px;font-size:.82rem}.solution-btn:hover{border-color:var(--accent);color:var(--accent)}.editor-pane .cm-editor{height:100%;font-size:.9rem}.editor-pane .cm-scroller{font-family:var(--mono)}.output{background:var(--code-bg);color:var(--code-fg);font-family:var(--mono);white-space:pre-wrap;word-break:break-word;flex:1;min-height:160px;margin:0;padding:14px 16px;font-size:.88rem;line-height:1.55;overflow:auto}.output.err{color:#ffa8a8}.output.empty{color:var(--muted);font-style:italic}.verdict{border-top:1px solid var(--border);padding:12px 16px;font-size:.95rem}.verdict.pass{background:var(--ok-soft);color:var(--ok);font-weight:700}.verdict.fail{background:var(--err-soft);color:var(--err)}.verdict .detail{margin-top:4px;font-size:.88rem;font-weight:400}.hint-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);margin:16px 0;padding:14px 18px}.hint-box h3{margin:0 0 6px;font-size:.95rem}.hint-box ul{margin:0;padding-left:20px}.hint-box li{margin:4px 0;font-size:.92rem}.solution-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);margin:16px 0}.solution-box summary{cursor:pointer;padding:12px 18px;font-size:.95rem;font-weight:600}.solution-box pre{background:var(--code-bg);color:var(--code-fg);border-radius:0 0 var(--radius) var(--radius);margin:0;padding:14px 18px;font-size:.85rem;line-height:1.55;overflow-x:auto}.notfound{text-align:center;padding:96px 20px}.notfound h1{color:var(--accent);margin:0;font-size:4rem}.spinner{border:2px solid var(--border);border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}
