:root{--bg:#0b1020;--bg-2:#121a31;--panel:#16203b;--panel-2:#1d294a;--ink:#eaf0ff;--ink-dim:#9aa8c9;--line:#25325a;--brand:#5b8def;--brand-2:#7c5cff;--gold:#ffd25e;--green:#43d9a3;--red:#ff6b81;--shadow:0 18px 50px rgba(0,0,0,.45);--r:18px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:radial-gradient(1200px 600px at 80% -10%,rgba(124,92,255,.18),transparent 60%),radial-gradient(900px 500px at -10% 20%,rgba(91,141,239,.16),transparent 55%),var(--bg);color:var(--ink);font-family:Space Grotesk,system-ui,sans-serif;min-height:100vh;-webkit-font-smoothing:antialiased}.wrap{max-width:1040px;margin:0 auto;padding:28px 20px 80px}.brand-title{font-family:Fraunces,serif;font-weight:700;letter-spacing:-.02em}.mono{font-family:JetBrains Mono,monospace}.panel{background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.btn{font-family:Space Grotesk,sans-serif;font-weight:600;border:none;cursor:pointer;border-radius:12px;padding:12px 18px;font-size:15px;transition:transform .12s ease,filter .12s ease,background .2s;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-2))}.btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.gold{background:linear-gradient(135deg,#ffcf4d,#ff9d3c);color:#2a1c00}.input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:12px 14px;font-size:15px;font-family:inherit}.input:focus{outline:none;border-color:var(--brand)}.label{font-size:13px;color:var(--ink-dim);margin-bottom:6px;display:block}.row{gap:12px;align-items:center}.col,.row{display:flex}.col{flex-direction:column}.grow{flex:1 1}.center{display:flex;justify-content:center}.center,.chip{align-items:center}.chip{display:inline-flex;gap:6px;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink-dim)}.chip.live{color:var(--gold);border-color:rgba(255,210,94,.4)}.choice{width:100%;text-align:left;background:var(--panel-2);border:1.5px solid var(--line);color:var(--ink);border-radius:14px;padding:16px 18px;font-size:17px;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .14s ease}.choice:hover{border-color:var(--brand);background:#20305a}.choice.correct{border-color:var(--green);background:rgba(67,217,163,.14)}.choice.wrong{border-color:var(--red);background:rgba(255,107,129,.14)}.choice:disabled{cursor:default}.bar{height:12px;border-radius:999px;background:var(--bg);overflow:hidden;border:1px solid var(--line)}.bar>div{height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-2));transition:width .4s ease}.dot-ramp{display:flex;gap:6px}.dot-ramp span{width:22px;height:8px;border-radius:4px;background:var(--line);transition:background .3s}.dot-ramp span.done{background:var(--green)}.dot-ramp span.now{background:var(--gold)}.dot-ramp span.boss{background:var(--brand-2);box-shadow:0 0 0 2px rgba(124,92,255,.3)}.streak-flame{font-size:22px;filter:drop-shadow(0 0 8px rgba(255,160,40,.6))}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:14px;gap:14px}.lesson-card{padding:18px;cursor:pointer;transition:transform .14s ease,border-color .14s}.lesson-card:hover{transform:translateY(-2px);border-color:var(--brand)}.fade-in{animation:fade .4s ease}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.pop{animation:pop .3s ease}@keyframes pop{0%{transform:scale(.96)}50%{transform:scale(1.03)}to{transform:scale(1)}}.tutor-bubble{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-size:14.5px;line-height:1.5;white-space:pre-wrap}.tutor-bubble.me{background:rgba(91,141,239,.14);border-color:rgba(91,141,239,.4)}.kbd{font-family:JetBrains Mono,monospace;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:12px}a{color:var(--brand)}.muted{color:var(--ink-dim)}.h1{font-size:34px;line-height:1.05}.h1,.h2{margin:0}.h2{font-size:22px}