:root{--ink-50:#eef1f8;--ink-100:#d5daea;--ink-200:#a9b2cc;--ink-300:#7d88a8;--ink-400:#5a658a;--ink-500:#3c4665;--ink-600:#262e49;--ink-700:#171d32;--ink-800:#0d1224;--ink-900:#080b18;--ink-950:#04060f;--neon-300:#67e8f9;--neon-400:#22d3ee;--neon-500:#06b6d4;--neon-600:#0891b2;--violet-glow-300:#c4b5fd;--violet-glow-400:#a78bfa;--violet-glow-500:#8b5cf6;--violet-glow-600:#7c3aed;--magenta-400:#f472b6;--magenta-500:#ec4899;--accent-rgb:34 211 238;--accent-2-rgb:139 92 246;--ink-700-rgb:23 29 50;--ink-800-rgb:13 18 36;--ink-950-rgb:4 6 15;--magenta-rgb:244 72 182;--bg:var(--ink-950);--bg-soft:var(--ink-900);--panel:linear-gradient(180deg, #121935 0%, #0a0f24 100%);--panel-2:#1b2342;--panel-3:#242e54;--line:#2c3560;--text:var(--ink-50);--muted:var(--ink-200);--accent:var(--neon-400);--accent-2:var(--violet-glow-500);--accent-soft:rgb(var(--accent-rgb) / .18);--good:#34d399;--warn:#fbbf24;--bad:#f87171;--gold:#fbbf24;--radius:14px;--radius-lg:18px;--radius-xl:22px;--hairline:#ffffff14;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 16px 36px -20px #000000eb;--shadow-lg:0 34px 72px -28px #000000f2;--glow-accent:0 18px 44px -22px rgb(var(--accent-rgb) / .9);--glow-violet:0 18px 44px -22px rgb(var(--accent-2-rgb) / .9);--grad-brand:linear-gradient(100deg, var(--neon-300) 0%, var(--violet-glow-400) 50%, var(--magenta-400) 100%);--mono:"JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, "Courier New", monospace;--display:"Space Grotesk", "Inter", "Segoe UI", system-ui, sans-serif;--sans:"Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background-color:var(--bg);background-image:radial-gradient(circle at center, #ffffff0d 1px, transparent 1.7px), radial-gradient(1200px 640px at 10% -16%, rgb(var(--accent-rgb) / .2), transparent 62%), radial-gradient(1000px 560px at 94% -6%, rgb(var(--accent-2-rgb) / .16), transparent 58%), radial-gradient(900px 720px at 50% 118%, rgb(var(--magenta-rgb) / .1), transparent 60%);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-size:34px 34px,auto,auto,auto;background-attachment:fixed;font-size:16.5px;line-height:1.55}::selection{background:rgb(var(--accent-rgb) / .35);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--ink-500);border:2px solid var(--bg);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--neon-600)}button{font-family:inherit}h1,h2,h3{font-family:var(--display);letter-spacing:-.025em;margin:0 0 .4rem;font-weight:700;line-height:1.15}h1{font-size:clamp(1.85rem,1.35rem + 1.7vw,2.45rem)}h2{font-size:1.3rem}h3{font-size:1.05rem;font-weight:600}p{margin:0 0 .6rem}.muted{color:var(--muted)}.small{font-size:.82rem}kbd{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-bottom-width:2px;border-radius:6px;padding:.1rem .42rem;font-size:.82rem}.app{flex-direction:column;gap:1.1rem;max-width:1180px;min-height:100vh;margin:0 auto;padding:1rem 1.25rem 2.5rem;display:flex}.topbar{z-index:20;-webkit-backdrop-filter:blur(10px)saturate(1.15);backdrop-filter:blur(10px)saturate(1.15);flex-wrap:wrap;align-items:center;gap:1rem;padding:.3rem 0 .6rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.65rem;display:flex}.brand-tile{border:1px solid rgb(var(--accent-rgb) / .3);background:linear-gradient(140deg, var(--ink-800), var(--ink-900));width:36px;height:36px;box-shadow:0 0 22px -8px rgb(var(--accent-rgb) / .9);border-radius:11px;place-items:center;display:grid;position:relative;overflow:hidden}.brand-tile svg{width:20px;height:20px;display:block}@media (prefers-reduced-motion:no-preference){.brand-tile:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff40,#0000);transition:transform .7s;position:absolute;inset:0;transform:translate(-100%)}a:hover .brand-tile:after,.brand:hover .brand-tile:after{transform:translate(100%)}}.brand-word{font-family:var(--display);letter-spacing:-.02em;color:var(--ink-50);font-size:1rem;font-weight:600}.brand div{flex-direction:column;line-height:1.2;display:flex}.brand-sub{color:var(--muted);font-size:.75rem}.topbar .brand{order:1}.topbar .account-btn{order:2;margin-left:auto}.nav{border-bottom:1px solid var(--line);flex-wrap:wrap;flex-basis:100%;order:3;gap:.1rem;margin:.15rem 0 0;display:flex}.nav-btn{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:9px 9px 0 0;align-items:center;gap:.42rem;padding:.42rem .8rem .55rem;font-size:.88rem;line-height:1.2;transition:color .15s,background .15s;display:inline-flex;position:relative}.nav-btn:after{content:"";background:var(--grad-brand);opacity:0;border-radius:2px;height:2px;transition:opacity .15s;position:absolute;bottom:-1px;left:.65rem;right:.65rem}.nav-btn:hover{color:var(--text);background:var(--panel-2)}.nav-btn.is-active{color:var(--neon-300)}.nav-btn.is-active:after{opacity:1}a.nav-btn{text-decoration:none}.settings{flex-wrap:wrap;gap:.55rem;display:flex}.session-controls{justify-content:flex-end}.switch{color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}.switch input{accent-color:var(--accent);cursor:pointer;width:15px;height:15px}.main{flex:1}.route-fallback{min-height:240px;color:var(--muted);align-content:center;place-items:center;gap:.75rem;font-size:.9rem;display:grid}.route-spinner{border:3px solid rgb(var(--accent-rgb) / .22);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite route-spin}@keyframes route-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.route-spinner{animation:none}}.sync-banner{background:rgb(var(--ink-950-rgb) / .5);border:1px solid var(--line);max-width:1100px;color:var(--muted);border-left:3px solid #fbbf24;border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin:.6rem auto 0;padding:.55rem 1rem;font-size:.85rem;display:flex}.site-footer{border-top:1px solid var(--line);flex-direction:column;gap:1.15rem;margin-top:1.6rem;padding-top:1.2rem;display:flex;position:relative}.site-footer:before{content:"";background:linear-gradient(90deg, transparent, rgb(var(--accent-rgb) / .6), transparent);pointer-events:none;height:1px;position:absolute;inset:0 0 auto}.footer-tip{max-width:82ch;margin:0}.footer-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,2fr);gap:1.6rem 2.2rem;display:grid}@media (width<=780px){.footer-grid{grid-template-columns:1fr}}.footer-brand{flex-direction:column;gap:.75rem;display:flex}.footer-lockup{align-items:center;gap:.6rem;width:fit-content;text-decoration:none;display:inline-flex}.footer-lockup-word{font-family:var(--display);letter-spacing:-.02em;color:var(--ink-50);font-size:1.05rem;font-weight:600}.brand-gradient{background-image:linear-gradient(100deg, var(--neon-300) 0%, var(--violet-glow-300) 45%, var(--magenta-400) 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.footer-blurb{max-width:46ch;color:var(--muted);margin:0;font-size:.84rem;line-height:1.6}.footer-contact{flex-direction:column;gap:.4rem;margin:0;padding:0;font-size:.82rem;list-style:none;display:flex}.footer-contact li{align-items:baseline;gap:.6rem;display:flex}.footer-contact-label{text-transform:uppercase;letter-spacing:.09em;min-width:3.6rem;color:var(--ink-300);font-size:.68rem}.footer-contact a{color:var(--muted);border-bottom:1px solid #0000;text-decoration:none;transition:color .15s,border-color .15s}.footer-contact a:hover{color:var(--neon-300);border-bottom-color:rgb(var(--accent-rgb) / .5)}.footer-cols{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1.4rem;display:grid}.footer-col h3{font-family:var(--sans);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-300);margin:0 0 .6rem;font-size:.68rem;font-weight:600}.footer-col ul{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.footer-col a{color:var(--ink-200);align-items:baseline;gap:.3rem;font-size:.84rem;text-decoration:none;transition:color .15s;display:inline-flex}.footer-col a:hover{color:var(--neon-300)}.ext-arrow{color:var(--ink-300);font-size:.68em;transition:color .15s}.footer-col a:hover .ext-arrow,.footer-lockup:hover .ext-arrow{color:var(--neon-300)}.footer-legal{border-top:1px solid var(--line);color:var(--ink-300);flex-wrap:wrap;align-items:center;gap:.5rem;padding-top:.75rem;font-size:.76rem;display:flex}.footer-sep{color:var(--ink-500)}.footer-legal-end{flex-wrap:wrap;align-items:center;gap:.6rem;margin-left:auto;display:inline-flex}.footer-top{border:1px solid var(--line);color:var(--ink-200);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.35rem;padding:.28rem .7rem;font-size:.74rem;transition:border-color .15s,color .15s;display:inline-flex}.footer-top:hover{border-color:rgb(var(--accent-rgb) / .6);color:#fff}.btn{color:var(--text);border:1px solid var(--line);cursor:pointer;box-shadow:var(--shadow-sm);background:linear-gradient(#1e2748,#161c38);border-radius:10px;justify-content:center;align-items:center;gap:.45rem;padding:.52rem .95rem;font-size:.9rem;font-weight:500;transition:transform .15s,background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.icon{flex:none;width:1.05em;height:1.05em;display:block}.btn:hover{background:var(--panel-3);border-color:rgb(var(--accent-rgb) / .35);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(140deg, var(--neon-300), var(--neon-400) 46%, var(--violet-glow-400));color:var(--ink-950);box-shadow:0 14px 34px -16px rgb(var(--accent-rgb) / .9);border-color:#0000;font-weight:700}.btn-primary:hover{background:linear-gradient(140deg, var(--neon-300), var(--violet-glow-400) 60%, var(--magenta-400));box-shadow:0 20px 46px -16px rgb(var(--accent-2-rgb) / .95)}.btn-ghost{background:0 0}.btn-danger{color:#fca5a5;background:#f871711f;border-color:#f8717173}.btn-small{padding:.25rem .6rem;font-size:.8rem}.badge{border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-gold{color:var(--gold);background:#fbbf2429;border:1px solid #fbbf2466}.course{flex-direction:column;gap:1.4rem;display:flex}.course-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.unit-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;margin-bottom:.7rem;display:flex}.unit-head-copy{flex:320px;min-width:0}.unit-head p{margin:0;font-size:.88rem}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:.85rem;display:grid}.lesson-card{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);cursor:pointer;box-shadow:var(--shadow-md);flex-direction:column;gap:.5rem;min-height:172px;padding:.95rem 1.05rem;transition:transform .16s,border-color .16s,box-shadow .16s,opacity .16s,filter .16s;display:flex;position:relative;overflow:hidden}.lesson-card:before{content:"";background:linear-gradient(90deg, var(--neon-400), var(--violet-glow-400));opacity:0;height:3px;transition:opacity .16s;position:absolute;inset:0 0 auto}.lesson-card:hover:not(:disabled){border-color:rgb(var(--accent-rgb) / .55);box-shadow:var(--glow-accent), var(--shadow-md);transform:translateY(-3px)}.lesson-card:hover:not(:disabled):before,.lesson-card.is-done:before,.lesson-card.is-premium:before{opacity:1}.lesson-card.is-done{border-color:#34d39966}.lesson-card.is-done:before{background:linear-gradient(90deg, var(--good), var(--neon-400))}.lesson-card.is-locked{opacity:.62;cursor:not-allowed;box-shadow:none;filter:saturate(.72)}.lesson-card.is-locked:before{opacity:0}.lesson-card-top{justify-content:space-between;align-items:center;display:flex}.lesson-number{font-family:var(--mono);letter-spacing:.04em;color:var(--neon-300);background:rgb(var(--accent-rgb) / .12);border:1px solid rgb(var(--accent-rgb) / .28);border-radius:999px;padding:.08rem .5rem;font-size:.72rem}.lesson-summary{color:var(--muted);flex:1;margin:0;font-size:.83rem}.lesson-card-meta{min-height:26px}.lesson-card-foot{color:var(--muted);border-top:1px solid var(--hairline);justify-content:space-between;padding-top:.45rem;font-size:.76rem;display:flex}.key-chips{flex-wrap:wrap;gap:.25rem;display:flex}.stars{color:var(--muted);gap:.1rem;font-size:.95rem;display:inline-flex}.star.is-on{color:var(--gold);text-shadow:0 0 12px #fbbf2499}.lock{color:var(--muted);display:inline-flex}.lock .icon,.lock.icon{width:1rem;height:1rem}.runner{flex-direction:column;gap:1rem;display:flex}.runner-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.runner-summary{color:var(--muted);max-width:64ch;margin:0;font-size:.9rem}.runner-head-side{flex-direction:column;align-items:flex-end;gap:.5rem;display:flex}.breadcrumb{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;font-size:.78rem}.runner-actions{flex-wrap:wrap;gap:.6rem;display:flex}.countdown{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:.15rem .7rem;font-size:1.6rem;font-weight:700}.countdown.is-low{color:var(--bad);border-color:#f8717180}.stats-bar{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);flex-wrap:wrap;align-items:stretch;gap:.7rem;padding:.75rem .95rem;display:flex}.stat-tile{border-left:3px solid var(--line);flex-direction:column;min-width:92px;padding-left:.6rem;display:flex}.stat-tile.tone-good{border-left-color:var(--good)}.stat-tile.tone-warn{border-left-color:var(--warn)}.stat-tile.tone-bad{border-left-color:var(--bad)}.stat-label{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.72rem}.stat-value{font-family:var(--mono);letter-spacing:-.01em;font-size:1.5rem;font-weight:700;line-height:1.2}.stat-hint{color:var(--muted);font-size:.72rem}.stat-progress{flex-direction:column;flex:1;align-self:center;gap:.3rem;min-width:180px;display:flex}.stat-progress-track{background:var(--panel-3);border-radius:999px;height:9px;overflow:hidden}.stat-progress-fill{background:linear-gradient(90deg, var(--neon-400), var(--violet-glow-500));height:100%;box-shadow:0 0 12px rgb(var(--accent-rgb) / .55);border-radius:999px;transition:width .12s linear}.stat-progress-label{color:var(--muted);font-size:.72rem}.typing-area{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:1.1rem 1.2rem;position:relative}.typing-area.has-error{animation:.14s shake}@keyframes shake{0%,to{transform:translate(0)}50%{transform:translate(-3px)}}.typing-scroll{outline:none;max-height:260px;overflow-y:auto}.typing-text{font-family:var(--mono);letter-spacing:.02em;white-space:pre-wrap;word-break:break-word;margin:0;font-size:1.42rem;line-height:2.5rem}.ch{border-radius:4px;padding:0 .5px;transition:color 80ms}.ch.is-pending{color:var(--ink-400)}.ch.is-correct{color:#6ee7b7}.ch.is-wrong{color:#fff;background:#f871716b}.ch.is-current{color:var(--ink-950);background:var(--accent);box-shadow:0 0 0 3px rgb(var(--accent-rgb) / .25)}.ch-newline{opacity:.7;font-size:.95em}.typing-overlay{border-radius:var(--radius);background:rgb(var(--ink-950-rgb) / .78);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-align:center;pointer-events:none;place-items:center;padding:1rem;display:grid;position:absolute;inset:0}.typing-overlay p{color:var(--muted);max-width:52ch;margin:0}.typing-ready{flex-direction:column;align-items:center;gap:.85rem;display:flex}.ready-key{flex-direction:column;align-items:center;gap:.45rem;display:flex}.ready-key-caption{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-size:.72rem}.ready-kbd{font-family:var(--mono);min-width:4rem;color:var(--neon-300);background:rgb(var(--accent-rgb) / .2);border:1px solid var(--accent);border-bottom:5px solid var(--accent);box-shadow:0 0 0 5px rgb(var(--accent-rgb) / .16);border-radius:14px;padding:.55rem .9rem;font-size:2.6rem;font-weight:700;line-height:1;animation:1.6s ease-in-out infinite ready-key-pulse}.ready-kbd.is-word{padding:.75rem 1.1rem;font-size:1.6rem}.ready-key-finger{color:var(--muted);align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}@keyframes ready-key-pulse{0%,to{box-shadow:0 0 0 5px rgb(var(--accent-rgb) / .16)}50%{box-shadow:0 0 0 11px rgb(var(--accent-rgb) / .05)}}@media (prefers-reduced-motion:reduce){.ready-kbd{animation:none}}.keyboard-block{flex-direction:column;align-items:center;gap:.7rem;display:flex}.keyboard{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.kb-row{gap:6px;display:flex}.kb-key{background:var(--panel-2);border:1px solid var(--line);border-bottom:3px solid var(--line);height:44px;color:var(--muted);-webkit-user-select:none;user-select:none;border-radius:9px;justify-content:center;align-items:center;font-size:.78rem;transition:all 80ms;display:flex;position:relative}.kb-mod{color:var(--ink-400);font-size:.66rem}.kb-char .kb-label{font-family:var(--mono);color:var(--text);font-size:.88rem}.kb-shift-char{color:var(--ink-300);font-size:.62rem;position:absolute;top:2px;left:5px}.kb-key.is-target{background:rgb(var(--accent-rgb) / .3);border-color:var(--accent);box-shadow:0 0 0 2px rgb(var(--accent-rgb) / .35);color:var(--neon-300)}.kb-key.is-target .kb-label{color:var(--neon-300)}.kb-key.is-shift{border-color:var(--warn);color:var(--warn);box-shadow:0 0 0 2px #fbbf244d}.kb-key.is-pressed{background:var(--panel-3);border-bottom-width:1px;transform:translateY(2px)}.finger-guide{flex-direction:column;align-items:center;gap:.5rem;width:100%;display:flex}.finger-guide-text{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;margin:0;font-size:.9rem;display:inline-flex}.finger-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.kbd-inline{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:0 .4rem}.finger-legend{flex-wrap:wrap;justify-content:center;gap:.45rem;margin:0;padding:0;font-size:.7rem;list-style:none;display:flex}.finger-legend li{border:1px solid var(--line);color:var(--muted);opacity:.75;border-radius:999px;align-items:center;gap:.3rem;padding:.15rem .5rem;display:inline-flex}.finger-legend li.is-active{opacity:1;color:var(--text);border-color:var(--finger);background:#ffffff0a}.finger-legend-tag{font-family:var(--mono);opacity:.7;font-size:.62rem}.modal-backdrop{background:rgb(var(--ink-950-rgb) / .72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:50;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xl);width:100%;max-width:560px;box-shadow:var(--shadow-lg);padding:1.5rem 1.55rem;animation:.16s ease-out pop;position:relative;overflow:hidden}.modal:before{content:"";background:var(--grad-brand);opacity:.9;height:2px;position:absolute;inset:0 0 auto}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.modal-head h2{font-size:1.35rem}.modal-stars{text-align:center;margin:.6rem 0 1rem}.modal-stars .stars{justify-content:center;font-size:2.1rem;display:flex}.modal-stars p{color:var(--muted);margin:.35rem 0 0;font-size:.88rem}.result-grid{grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:.9rem;display:grid}.result-cell{background:var(--panel-2);border:1px solid var(--line);text-align:center;border-radius:11px;flex-direction:column;padding:.55rem;display:flex}.result-value{font-family:var(--mono);font-size:1.3rem;font-weight:700}.result-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.68rem}.result-note{color:var(--muted);text-align:center;font-size:.86rem}.modal .result-note:last-of-type{margin:.8rem 0 .9rem}.modal-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.summary-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem;display:grid}.summary-cell{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;padding:.7rem .85rem;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex}.summary-cell:hover{border-color:rgb(var(--accent-rgb) / .4);box-shadow:var(--shadow-md);transform:translateY(-2px)}.summary-value{font-family:var(--mono);font-size:1.25rem;font-weight:700}.summary-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem}.table-wrap{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow-sm);border-radius:12px;overflow-x:auto}.progress-table{border-collapse:collapse;width:100%;font-size:.85rem}.progress-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--panel-2);white-space:nowrap;padding:.55rem .8rem;font-size:.72rem}.progress-table td{border-top:1px solid var(--line);padding:.5rem .8rem}.progress-table tr.is-empty td{color:var(--ink-400)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);flex-direction:column;gap:.8rem;padding:1.1rem;display:flex}.field{color:var(--muted);flex-direction:column;gap:.4rem;font-size:.85rem;display:flex}.field textarea{background:var(--bg-soft);color:var(--text);border:1px solid var(--line);font-family:var(--mono);resize:vertical;border-radius:11px;padding:.7rem .8rem;font-size:.92rem;line-height:1.6}.field textarea:focus{outline:2px solid rgb(var(--accent-rgb) / .5);outline-offset:0}.panel-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.library-note{background:rgb(var(--accent-rgb) / .08);border:1px solid rgb(var(--accent-rgb) / .28);color:var(--muted);border-radius:12px;margin:0;padding:.7rem .9rem;font-size:.84rem}.story-grid{grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:.85rem;display:grid}.story-card{background:linear-gradient(180deg, rgb(var(--accent-2-rgb) / .09), transparent 46%), var(--panel);border-left:3px solid #a78bfab3}.story-card.is-done{border-left-color:var(--good)}.story-author{color:var(--violet-glow-300);margin:-.2rem 0 0;font-size:.78rem;font-style:italic}.runner-subtitle{color:var(--violet-glow-300);margin:0 0 .35rem;font-size:.88rem;font-style:italic}.progress-group{margin-bottom:1.1rem}.progress-group-title{color:var(--muted);justify-content:space-between;align-items:baseline;gap:.6rem;margin:.7rem 0 .35rem;font-size:.86rem;font-weight:600;display:flex}.row-meta{color:var(--muted);font-size:.74rem;display:block}.chart-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);flex-direction:column;gap:.7rem;padding:1rem 1.1rem 1.15rem;display:flex}.chart-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.9rem;display:flex}.chart-head h2{margin:0 0 .1rem;font-size:1.05rem}.chart-head p{margin:0}.chart-head-side{align-items:center;gap:.5rem;display:flex}.range-toggle{border:1px solid var(--line);border-radius:9px;display:inline-flex;overflow:hidden}.range-toggle button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:.32rem .7rem;font-size:.78rem;transition:background .15s}.range-toggle button+button{border-left:1px solid var(--line)}.range-toggle button:hover{background:var(--panel-2);color:var(--text)}.range-toggle button.is-active{background:var(--accent-soft);color:var(--neon-300)}.chart-stats{flex-wrap:wrap;gap:1.3rem;display:flex}.chart-stat{flex-direction:column;display:flex}.chart-stat-value{font-family:var(--mono);font-size:1.05rem;font-weight:700;line-height:1.25}.chart-stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.68rem}.delta-up .chart-stat-value{color:var(--good)}.delta-down .chart-stat-value{color:var(--bad)}.delta-flat .chart-stat-value{color:var(--muted)}.chart-canvas{width:100%;position:relative}.chart-svg{touch-action:none;display:block}.chart-grid{stroke:#ffffff0f;stroke-width:1px}.chart-mean{stroke:#ffffff47;stroke-width:1px;stroke-dasharray:4 5}.chart-guide{stroke:#ffffff59;stroke-width:1px;stroke-dasharray:3 4}.chart-axis-label{fill:var(--ink-300);font-size:11px;font-family:var(--mono)}.chart-dot{transition:opacity .1s}.chart-tooltip{background:var(--panel-3);border:1px solid var(--line);pointer-events:none;white-space:nowrap;z-index:3;border-radius:9px;flex-direction:column;padding:.35rem .6rem;font-size:.74rem;line-height:1.35;display:flex;position:absolute;top:0;transform:translate(-50%);box-shadow:0 12px 26px -16px #000000f2}.chart-tooltip strong{font-family:var(--mono);font-size:.95rem}.chart-empty{text-align:center;color:var(--muted);background:var(--bg-soft);border:1px dashed var(--line);border-radius:12px;place-items:center;min-height:120px;padding:1.4rem;font-size:.86rem;display:grid}.chart-pair{grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:1rem;display:grid}.chart-subhead{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.5rem 0 0;font-size:.78rem}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:.9rem;font-size:.72rem;display:flex}.chart-legend span{align-items:center;gap:.32rem;display:inline-flex}.chart-legend i{border-radius:2px;width:9px;height:9px;display:inline-block}.bar-chart{align-items:flex-end;gap:4px;height:180px;padding-top:.4rem;display:flex}.bar-col{flex-direction:column;flex:1;align-items:center;gap:.2rem;min-width:0;height:100%;display:flex}.bar-value{font-size:.6rem;font-family:var(--mono);color:var(--muted);height:.85rem}.bar-track{background:#ffffff08;border-radius:5px;flex:1;align-items:flex-end;width:100%;display:flex;overflow:hidden}.bar-fill{background:linear-gradient(180deg, var(--accent), rgb(var(--accent-rgb) / .42));width:100%;box-shadow:0 0 14px -2px rgb(var(--accent-rgb) / .6);border-radius:5px;transition:height .2s}.bar-col.is-today .bar-fill{background:linear-gradient(#34d399,#34d3996b)}.bar-col.is-empty .bar-fill{background:var(--panel-3)}.bar-label{color:var(--muted);white-space:nowrap;font-size:.6rem}.item-bars{align-items:flex-end;gap:3px;height:150px;padding-bottom:.2rem;display:flex;overflow-x:auto}.item-bar{flex-direction:column;flex:1 0 14px;align-items:center;gap:2px;height:100%;display:flex}.item-bar.ends-group{border-right:1px dashed var(--line);margin-right:3px;padding-right:3px}.item-bar-value{font-size:.58rem;font-family:var(--mono);color:var(--muted);height:.8rem}.item-bar-track{background:#ffffff08;border-radius:4px;flex:1;align-items:flex-end;width:100%;display:flex;overflow:hidden}.item-bar-fill{border-radius:4px;width:100%;transition:height .2s}.item-bar-index{font-size:.58rem;font-family:var(--mono);color:var(--ink-400)}.completion-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.1rem;display:grid}.completion{flex-direction:column;gap:.4rem;display:flex}.completion-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.completion-row{align-items:center;gap:.55rem;display:flex}.completion-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);width:42px;font-size:.66rem}.completion-track{background:var(--panel-3);border-radius:999px;flex:1;height:9px;overflow:hidden}.completion-fill{height:100%;box-shadow:0 0 10px rgb(var(--accent-rgb) / .45);border-radius:999px;transition:width .25s}.completion-value{font-family:var(--mono);color:var(--muted);text-align:right;min-width:58px;font-size:.74rem}.session-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.session-row{border-top:1px solid var(--line);grid-template-columns:90px minmax(0,1fr) repeat(3,72px) 70px minmax(70px,auto);align-items:center;gap:.5rem;padding:.42rem 0;font-size:.82rem;display:grid}.session-row:first-child{border-top:0}.session-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-metric{font-family:var(--mono);color:var(--muted);text-align:right;font-size:.78rem}.session-stars{font-size:.8rem}.session-when{text-align:right;white-space:nowrap}.kind-badge{border:1px solid var(--line);color:var(--muted);text-align:center;border-radius:5px;padding:.1rem .4rem;font-size:.64rem;display:inline-block}.kind-lesson{border-color:rgb(var(--accent-rgb) / .5);color:var(--neon-300)}.kind-story{color:#c4b5fd;border-color:#a78bfa80}.kind-test{color:#6ee7b7;border-color:#34d39980}.kind-practice{border-color:#94a3b866}.kind-game{color:#fcd34d;border-color:#fbbf2480}.summary-hint{color:var(--muted);font-size:.66rem}.intro-card{background:linear-gradient(135deg, rgb(var(--accent-rgb) / .14), rgb(var(--accent-2-rgb) / .08)), var(--panel);border:1px solid rgb(var(--accent-rgb) / .45);border-radius:var(--radius-lg);box-shadow:var(--glow-accent), var(--shadow-md);flex-direction:column;gap:1rem;padding:1.2rem 1.3rem;display:flex}.intro-body h2{margin:0 0 .5rem;font-size:1.2rem}.intro-body>p{color:var(--muted);max-width:78ch;margin:0 0 .8rem}.intro-list{color:var(--muted);flex-direction:column;gap:.4rem;max-width:84ch;margin:0;padding-left:1.1rem;font-size:.88rem;display:flex}.intro-list strong{color:var(--text)}.intro-enter{font-family:var(--mono);color:var(--accent);background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:0 .3rem}.intro-actions{flex-wrap:wrap;gap:.6rem;display:flex}@media (width<=860px){.session-row{grid-template-columns:82px minmax(0,1fr) 68px auto}.session-row .session-metric,.session-row .session-stars{display:none}}@media (width<=720px){.typing-text{font-size:1.15rem;line-height:2.1rem}.kb-key{height:36px}.result-grid{grid-template-columns:repeat(2,1fr)}.nav{gap:.1rem .25rem}}.account-btn{background:var(--panel-2);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.8rem;transition:background .15s;display:inline-flex}.account-btn:hover{background:var(--panel-3)}.lang-switch{background:var(--panel-2);border:1px solid var(--line);border-radius:999px;align-items:center;gap:.15rem;padding:.15rem;display:inline-flex}.lang-btn{color:var(--muted);letter-spacing:.02em;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.75rem;font-weight:600;transition:all .15s;display:inline-flex}.lang-btn:hover{color:var(--text);background:var(--panel-3)}.lang-btn.is-active{color:var(--neon-300);background:linear-gradient(180deg, rgb(var(--accent-rgb) / .24), rgb(var(--accent-rgb) / .1));border-color:rgb(var(--accent-rgb) / .5);box-shadow:inset 0 1px #ffffff14}.lang-flag{border-radius:2px;width:18px;height:12px;display:inline-flex;overflow:hidden;box-shadow:0 0 0 1px #ffffff29}.lang-flag svg{width:100%;height:100%;display:block}.lang-code{line-height:1}.account-dot{background:#64748b;border-radius:50%;width:8px;height:8px}.account-dot.is-member{background:var(--gold);box-shadow:0 0 0 3px #fbbf242e}.modal-narrow{max-width:460px}.badge-muted{background:var(--panel-3);color:var(--muted);border:1px solid var(--line)}.unit-badge{vertical-align:middle;margin-left:.5rem;font-size:.66rem}.member-card{background:linear-gradient(135deg, #fbbf241a, rgb(var(--accent-rgb) / .08)), var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid #fbbf2459;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex}.member-card.is-member{background:linear-gradient(135deg, #34d3991a, rgb(var(--accent-rgb) / .06)), var(--panel);border-color:#34d39966}.member-body{align-items:flex-start;gap:.75rem;display:flex}.member-body p{max-width:64ch;margin:.2rem 0 0}.member-actions{flex-wrap:wrap;gap:.5rem;display:flex}.plan-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.8rem;margin-bottom:.9rem;display:grid}.plan{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}.plan.is-highlighted{border-color:#fbbf2480}.plan h3{align-items:center;gap:.5rem;font-size:.98rem;display:flex}.plan-price{font-family:var(--mono);margin:.1rem 0 .6rem;font-size:1.3rem;font-weight:700}.plan ul{color:var(--muted);flex-direction:column;gap:.3rem;margin:0;padding-left:1.05rem;font-size:.83rem;display:flex}.plan ul strong{color:var(--text)}.auth-form{flex-direction:column;gap:.75rem;margin-bottom:.8rem;display:flex}.field input{background:var(--bg-soft);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.55rem .7rem;font-family:inherit;font-size:.95rem}.field input:focus{outline:2px solid rgb(var(--accent-rgb) / .5);outline-offset:0}.form-error,.form-notice{border-radius:10px;margin:0 0 .7rem;padding:.55rem .75rem;font-size:.83rem}.form-error{color:#fca5a5;background:#f871711f;border:1px solid #f8717166}.form-notice{color:#6ee7b7;background:#34d3991a;border:1px solid #34d39959}.form-error code,.form-notice code{font-family:var(--mono);font-size:.78rem}.auth-switch{flex-wrap:wrap;gap:1rem;margin-bottom:.6rem;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:.84rem;text-decoration:underline}.link-btn:hover{color:var(--neon-300)}.account-list{flex-direction:column;gap:.5rem;margin:0 0 1rem;display:flex}.account-list>div{border-bottom:1px solid var(--line);justify-content:space-between;gap:1rem;padding-bottom:.4rem;display:flex}.account-list dt{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.74rem}.account-list dd{text-align:right;margin:0;font-size:.88rem}.dev-panel{background:rgb(var(--accent-2-rgb) / .08);border:1px dashed #a78bfa80;border-radius:12px;margin-bottom:.9rem;padding:.7rem .85rem}.dev-panel code{font-family:var(--mono);background:#00000040;border-radius:4px;padding:0 .25rem;font-size:.76rem}.dev-actions{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.lesson-card.is-premium{border-style:dashed;border-color:#fbbf2473}.lesson-card.is-premium:before{background:linear-gradient(90deg, var(--gold), var(--magenta-400));opacity:1}.lesson-card.is-premium:hover:not(:disabled){border-color:var(--gold);box-shadow:0 18px 44px -22px #fbbf24d9, var(--shadow-md)}.lesson-card.is-premium h3{color:#fcd34d}.gate{align-items:flex-start}.gate h1{margin-bottom:.4rem}.course-head.has-art{align-items:center;gap:1.6rem 2.4rem}.course-head.has-art>div:first-child{flex:340px;min-width:0}.hero-art{flex:none;width:min(400px,100%);margin-left:auto}.hero-art svg{width:100%;height:auto;display:block;overflow:visible}.hero-slab{stroke:#ffffff14;stroke-width:1px}.hero-key{fill:#1a2244;stroke:#303a6b;stroke-width:1px}.hero-key-label{font-family:var(--mono);fill:var(--ink-300);-webkit-user-select:none;user-select:none;font-size:10px;font-weight:600}.hero-key.is-focus{fill:var(--accent);fill-opacity:.14;stroke:rgb(var(--accent-rgb) / .4)}.hero-key.is-focus:not(.is-tap){animation:3.6s ease-in-out infinite hero-home-wave}.hero-key-cell.is-focus .hero-key-label{fill:#a5f3fc}.hero-key.is-tap{fill:var(--accent);fill-opacity:.32;stroke:var(--neon-300);stroke-width:1.4px;animation:2.8s ease-in-out infinite hero-tap-key}.hero-key-cell.is-tap .hero-key-label{fill:#fff;font-weight:700}.hero-ridge{fill:var(--neon-300);opacity:.85}.unit-head .hero-art{width:min(250px,100%)}.hero-art.is-compact .hero-key-label{font-size:11.5px}.hero-art.is-compact .hero-row:not(.is-focus) .hero-key-label{opacity:.35}.hero-art.is-compact .hero-row:not(.is-focus) .hero-ridge{opacity:.18}.hero-art.is-compact .hero-aura{opacity:.6;animation:none}.hero-aura{opacity:.7;animation:6s ease-in-out infinite hero-aura}.hero-scan{opacity:0;animation:5s ease-in-out infinite hero-scan}.hero-ripple{fill:none;stroke:var(--neon-300);stroke-width:1.5px;opacity:0;transform-box:fill-box;transform-origin:50%;animation:2.8s ease-out infinite hero-ripple}.hero-finger{animation:2.8s ease-in-out infinite hero-tap}.hero-finger-glow{fill:var(--accent);opacity:.26}.hero-finger-tip{fill:var(--neon-300);opacity:.9}.hero-finger-trail{fill:var(--accent);opacity:.18}@keyframes hero-home-wave{0%,to{fill-opacity:.12}50%{fill-opacity:.3}}@keyframes hero-tap-key{0%,to{fill-opacity:.26}42%{fill-opacity:.62}}@keyframes hero-aura{0%,to{opacity:.55}50%{opacity:.9}}@keyframes hero-scan{0%{opacity:0;transform:translate(0)}12%{opacity:.85}88%{opacity:.85}to{opacity:0;transform:translate(298px)}}@keyframes hero-ripple{0%{opacity:.9;transform:scale(.5)}65%{opacity:0;transform:scale(1.9)}to{opacity:0;transform:scale(1.9)}}@keyframes hero-tap{0%,to{opacity:.5;transform:translateY(0)}38%,58%{opacity:.85;transform:translateY(22px)}}@media (width<=820px){.hero-art{width:100%;max-width:420px;margin:0 auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.lesson-card:hover:not(:disabled),.summary-cell:hover,.btn:hover{transform:none}.hero-scan,.hero-ripple{display:none}.hero-aura{opacity:.8}.hero-key.is-tap{fill-opacity:.45}}.landing{background:linear-gradient(135deg, rgb(var(--accent-rgb) / .16), rgb(var(--accent-2-rgb) / .08)), var(--panel);border:1px solid rgb(var(--accent-rgb) / .4);border-radius:var(--radius-xl);box-shadow:var(--glow-accent), var(--shadow-lg);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:1.5rem;margin-bottom:1.4rem;padding:1.6rem 1.8rem;display:grid;overflow:hidden}.landing-eyebrow{border:1px solid rgb(var(--accent-rgb) / .45);background:rgb(var(--accent-rgb) / .12);color:var(--neon-300);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;margin:0 0 .6rem;padding:.2rem .65rem;font-size:.72rem;font-weight:600;display:inline-block}.landing-title{font-family:var(--display);margin:0 0 .7rem;font-size:clamp(1.7rem,1.1rem + 2.2vw,2.6rem);line-height:1.12}.landing-sub{color:var(--muted);max-width:60ch;margin:0 0 1rem}.landing-points{color:var(--muted);flex-direction:column;gap:.4rem;max-width:62ch;margin:0 0 1.2rem;padding-left:1.1rem;font-size:.9rem;display:flex}.landing-points strong{color:var(--text)}.landing-actions{flex-wrap:wrap;gap:.6rem;margin-bottom:1.1rem;display:flex}.landing-stats{color:var(--muted);flex-wrap:wrap;gap:.4rem 1.1rem;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.landing-stats li{position:relative}.landing-stats li+li:before{content:"·";color:var(--ink-400);position:absolute;left:-.65rem}.landing-art{display:none}@media (width>=940px){.landing-art{display:block}}@media (width<=939px){.landing{grid-template-columns:minmax(0,1fr);padding:1.3rem}}.lb-head-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.lb-mine{margin-bottom:.6rem}.lb-mine h2{margin:0 0 .6rem;font-size:1.05rem}.lb-mine-row{flex-wrap:wrap;align-items:center;gap:.9rem;display:flex}.lb-mine-name{font-weight:600}.lb-mine-metric{font-family:var(--mono);color:var(--muted);font-size:.84rem}.lb-rank{min-width:2.4rem;font-family:var(--mono);text-align:right;color:var(--muted);font-weight:700;display:inline-block}.lb-rank.is-gold{color:#fcd34d}.lb-rank.is-silver{color:#cbd5e1}.lb-rank.is-bronze{color:#f0a878}.lb-table td,.lb-table th{white-space:nowrap}.lb-col-rank{width:3.5rem}.lb-nick{font-weight:600}.lb-you-badge{margin-left:.5rem;font-size:.62rem}.lb-table tr.is-you td{background:rgb(var(--accent-rgb) / .08)}.lb-post{border:1px solid rgb(var(--accent-rgb) / .3);background:rgb(var(--accent-rgb) / .05);border-radius:12px;margin:.9rem 0 1.3rem;padding:.85rem .95rem}.lb-post-head h3{margin:0 0 .2rem;font-size:.98rem}.lb-post-head p{margin:0 0 .6rem}.lb-post-form{flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-bottom:.4rem;display:flex}.lb-nick-field{flex:200px}.lb-post .form-notice,.lb-post .form-error{margin:.5rem 0 0}
