:root{--bg: #06070d;--surface: #0e1120;--surface-2: #151a2e;--surface-3: #1d2440;--border: #262f52;--border-bright: #3a4674;--text: #f0f4ff;--text-2: #bcc6e6;--muted: #8290b8;--faint: #5b6791;--cyan: #2ad4e8;--magenta: #ff5fd0;--violet: #b085ff;--lime: #8ee04e;--amber: #ffb02e;--rose: #ff6b81;--accent: var(--cyan);--accent-deep: #10707d;--good: #4ee08a;--warn: #ffb02e;--bad: #ff6b81;--selection: rgba(42, 212, 232, .28);--tint: var(--cyan);--code-bg: #080b14;--code-kw: #ff8fb1;--code-str: #9ad86f;--code-num: #f0b072;--code-lit: #f0b072;--code-fn: #63c8e8;--code-prop: #8fb4ff;--code-type: #c99bf5;--code-decorator: #ffc861;--code-ident: #dbe4f0;--code-op: #8b9bb4;--code-punc: #6e7d95;--code-comment: #5b6a82;--code-interp: #ffd9a0;--code-gutter: #3f4c72;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, "SF Mono", Menlo, monospace;--radius: 14px;--radius-sm: 8px;--shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .4);--glow-tint: 0 0 24px color-mix(in srgb, var(--tint) 34%, transparent);--glow-tint-lg: 0 0 44px color-mix(in srgb, var(--tint) 40%, transparent)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:-30%;background:radial-gradient(38% 34% at 18% 12%,rgba(42,212,232,.3),transparent 68%),radial-gradient(34% 30% at 82% 8%,rgba(255,95,208,.26),transparent 68%),radial-gradient(40% 36% at 62% 78%,rgba(176,133,255,.2),transparent 70%),radial-gradient(30% 28% at 8% 72%,rgba(142,224,78,.12),transparent 70%);pointer-events:none;z-index:0;will-change:transform;animation:aurora 26s ease-in-out infinite alternate}@keyframes aurora{0%{transform:translateZ(0) scale(1) rotate(0)}33%{transform:translate3d(3%,-2%,0) scale(1.08) rotate(3deg)}66%{transform:translate3d(-2%,3%,0) scale(1.04) rotate(-2deg)}to{transform:translate3d(1%,1%,0) scale(1.1) rotate(1.5deg)}}body:after{content:"";position:fixed;left:-25%;right:-25%;bottom:0;height:44vh;pointer-events:none;z-index:0;background-image:repeating-linear-gradient(90deg,rgba(42,212,232,.55) 0 1px,transparent 1px 84px),repeating-linear-gradient(0deg,rgba(255,95,208,.45) 0 1px,transparent 1px 56px);transform:perspective(300px) rotateX(74deg);transform-origin:bottom center;mask-image:linear-gradient(to top,rgba(0,0,0,.95),transparent 80%);-webkit-mask-image:linear-gradient(to top,rgba(0,0,0,.95),transparent 80%);animation:floorscroll 6s linear infinite}@keyframes floorscroll{0%{background-position:0 0,0 0}to{background-position:0 0,0 60px}}#root{position:relative;z-index:1}::selection{background:var(--selection)}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em}p{margin:0}ul{margin:0;padding:0;list-style:none}kbd{font-family:var(--font-mono);font-size:10px;padding:1px 5px;border-radius:4px;border:1px solid var(--border-bright);background:#0000004d;color:var(--muted);margin-left:6px;white-space:nowrap}code{font-family:var(--font-mono);font-size:.92em}.app{max-width:1060px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;min-height:100vh}.app__foot{margin-top:auto;padding-top:40px;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--faint)}.app__foot-dim{opacity:.7}.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}.home{display:flex;flex-direction:column;gap:22px}.hero{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-end;justify-content:space-between}.hero__title{font-size:46px;line-height:1.05;letter-spacing:-.035em;font-weight:900;background:linear-gradient(100deg,var(--cyan) 0%,#ffffff 22%,var(--magenta) 44%,var(--violet) 62%,var(--cyan) 82%,#ffffff 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 30px rgba(42,212,232,.35));animation:sweep 9s linear infinite}@keyframes sweep{0%{background-position:0% 50%}to{background-position:260% 50%}}.hero__sub{margin-top:10px;color:var(--text-2);max-width:46ch;font-size:14px}.hero__stats{display:flex;gap:10px}.herostat{min-width:88px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--tint) 40%,var(--border));border-radius:var(--radius);background:linear-gradient(180deg,color-mix(in srgb,var(--tint) 12%,transparent),transparent),var(--surface);text-align:center;box-shadow:inset 0 1px color-mix(in srgb,var(--tint) 20%,transparent)}.herostat--lit{box-shadow:var(--glow-tint),inset 0 1px color-mix(in srgb,var(--tint) 30%,transparent)}.herostat__value{display:block;font-size:28px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--tint);text-shadow:0 0 20px color-mix(in srgb,var(--tint) 45%,transparent)}.herostat--quiet .herostat__value{color:var(--text);text-shadow:none}.herostat__label{display:block;margin-top:2px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.rankcard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:16px 18px;position:relative;overflow:hidden}.rankcard__row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.rankcard__name{font-weight:800;font-size:17px;letter-spacing:-.01em;background:linear-gradient(90deg,var(--cyan),var(--magenta));-webkit-background-clip:text;background-clip:text;color:transparent}.rankcard__next{font-size:12px;color:var(--muted)}.meter{display:block;height:9px;margin-top:12px;background:#00000073;border:1px solid var(--border);border-radius:999px;overflow:hidden}.meter--sm{height:6px;margin:0;border:0}.meter--tint{background:color-mix(in srgb,var(--tint) 14%,rgba(0,0,0,.5))}.meter__fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--cyan),var(--magenta));box-shadow:0 0 16px #2ad4e88c;transition:width .5s cubic-bezier(.2,.8,.2,1)}.meter--tint .meter__fill{background:linear-gradient(90deg,color-mix(in srgb,var(--tint) 70%,#000),var(--tint));box-shadow:0 0 12px color-mix(in srgb,var(--tint) 55%,transparent)}.start,.topics,.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:20px}.start__head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.start__body{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between}.start__desc{color:var(--text-2);font-size:14px;max-width:52ch}.start__desc strong{color:var(--text);font-variant-numeric:tabular-nums}.filters{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.filter{display:flex;flex-direction:column;gap:6px}.filter__label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.modepicker{display:flex;flex-wrap:wrap;gap:6px}.modechip{font:inherit;font-size:12px;font-weight:650;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s,box-shadow .15s}.modechip__glyph{font-size:11px;opacity:.85}.modechip__n{font-size:10px;opacity:.6;font-variant-numeric:tabular-nums}.modechip:hover{color:var(--tint);border-color:color-mix(in srgb,var(--tint) 55%,var(--border))}.modechip--on{color:#05070e;background:var(--tint);border-color:var(--tint);box-shadow:var(--glow-tint)}.modechip--on .modechip__n{opacity:.55}.select{font:inherit;font-size:13px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:8px 14px;min-width:200px}.input{font:inherit;font-size:13px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px}.input--mono{font-family:var(--font-mono);width:100%;min-width:0}.select:focus-visible,.input:focus-visible{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px #2ad4e838}.topics__summary{font-size:13px;color:var(--muted);margin-bottom:12px}.topiclist{display:flex;flex-direction:column;gap:2px}.topicrow__btn{width:100%;display:grid;grid-template-columns:minmax(140px,1fr) minmax(60px,2fr) auto;gap:14px;align-items:center;padding:9px 12px;border:0;border-left:2px solid transparent;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .15s,border-color .15s}.topicrow__btn:hover{background:color-mix(in srgb,var(--tint) 10%,transparent);border-left-color:var(--tint)}.topicrow__name{font-size:13px;display:flex;align-items:center;gap:9px}.topicrow__btn:hover .topicrow__name{color:var(--tint)}.topicrow__num{display:flex;align-items:center;gap:8px}.topicrow__seen{font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums}.topicrow__dot{flex:0 0 auto;width:9px;height:9px;border-radius:3px;background:var(--tint);box-shadow:0 0 12px color-mix(in srgb,var(--tint) 65%,transparent)}.badge{font-size:10px;padding:2px 7px;border-radius:999px;font-weight:700;letter-spacing:.02em}.badge--due{background:color-mix(in srgb,var(--tint) 22%,transparent);color:var(--tint);box-shadow:0 0 12px color-mix(in srgb,var(--tint) 25%,transparent)}.badge--good{background:#4ee08a2e;color:var(--good)}.badge--bad{background:#ff6b812e;color:var(--bad)}.btn{font:inherit;font-size:13px;font-weight:700;padding:10px 18px;border-radius:var(--radius-sm);border:1px solid var(--border-bright);background:var(--surface-2);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;gap:2px;box-shadow:0 3px #0000008c;transition:background .14s,border-color .14s,transform .07s,box-shadow .07s}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 #0000008c}.btn:focus-visible{outline:none;border-color:var(--cyan);box-shadow:0 3px #0000008c,0 0 0 3px #2ad4e840}.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.btn--primary{background:linear-gradient(180deg,color-mix(in srgb,var(--tint) 92%,#fff) 0%,var(--tint) 100%);border-color:color-mix(in srgb,var(--tint) 70%,#000);color:#05070e;box-shadow:0 3px color-mix(in srgb,var(--tint) 45%,#000),var(--glow-tint)}.btn--primary:hover:not(:disabled){background:linear-gradient(180deg,#fff 0%,var(--tint) 100%)}.btn--primary:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 color-mix(in srgb,var(--tint) 45%,#000),var(--glow-tint)}.btn--primary kbd{background:#05070e33;border-color:#05070e47;color:#05070ebf}.btn--ghost{background:transparent;border-color:var(--border);color:var(--text-2);box-shadow:none}.btn--ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:var(--border-bright)}.btn--quiet{background:transparent;border-color:transparent;color:var(--muted);padding:6px 10px;font-size:12px;box-shadow:none;font-weight:600}.btn--quiet:hover:not(:disabled){background:var(--surface-2);color:var(--tint)}.btn--danger{background:linear-gradient(180deg,#ff8a9c,var(--bad));border-color:#b03445;color:#1a0508;box-shadow:0 3px #7d2430,0 0 22px #ff6b8159}.btn--big{padding:14px 26px;font-size:15px;letter-spacing:.01em}.btn--wide{width:100%;justify-content:center}.session{display:flex;flex-direction:column;gap:18px}.session__head{display:grid;grid-template-columns:1fr auto;gap:10px 16px;align-items:center}.session__meta{display:flex;align-items:center;gap:10px}.session__title{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.session__stats{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}.pill{font-size:11px;padding:4px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-2);white-space:nowrap;font-weight:600}.pill--mode{background:color-mix(in srgb,var(--tint) 18%,transparent);border-color:color-mix(in srgb,var(--tint) 45%,transparent);color:var(--tint);box-shadow:0 0 14px color-mix(in srgb,var(--tint) 22%,transparent);display:inline-flex;align-items:center;gap:5px}.pill--topic{border-color:color-mix(in srgb,var(--tint) 35%,var(--border))}.pill--new{background:#4ee08a29;border-color:transparent;color:var(--good)}.pill--seen{color:var(--muted)}.combo{font-size:11px;font-weight:900;padding:4px 11px;border-radius:999px;background:linear-gradient(90deg,var(--amber),var(--magenta));background-size:200% 100%;color:#16060f;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 0 18px #ffb02e73;animation:pop .34s cubic-bezier(.2,1.5,.4,1)}.combo--hot{font-size:12px;box-shadow:0 0 26px #ff5fd099;animation:pop .34s cubic-bezier(.2,1.5,.4,1),sweep 2.4s linear infinite,throb 1.5s ease-in-out infinite}.combo--fire{font-size:13px;padding:5px 13px;background:linear-gradient(90deg,#fff3b0,var(--amber),var(--rose),var(--magenta),var(--amber));background-size:300% 100%;box-shadow:0 0 34px #ffb02ecc,0 0 60px #ff5fd066;animation:pop .34s cubic-bezier(.2,1.5,.4,1),sweep 1.5s linear infinite,throb .9s ease-in-out infinite}@keyframes throb{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.progressbar{grid-column:1 / 2;height:5px;background:#00000080;border-radius:999px;overflow:hidden}.progressbar__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--tint) 60%,#000),var(--tint));box-shadow:0 0 14px color-mix(in srgb,var(--tint) 60%,transparent);transition:width .4s cubic-bezier(.2,.8,.2,1)}.session__count{grid-column:2 / 3;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.session__body{border:1px solid var(--border);border-top:2px solid color-mix(in srgb,var(--tint) 60%,var(--border));border-radius:var(--radius);background:var(--surface);padding:24px;box-shadow:var(--shadow),inset 0 1px color-mix(in srgb,var(--tint) 12%,transparent)}.session__foot{display:flex;align-items:center;justify-content:flex-end;gap:14px}.session__due{font-size:12px;color:var(--muted)}.xppop{position:fixed;left:50%;top:38%;transform:translate(-50%);z-index:40;pointer-events:none;font-size:34px;font-weight:900;letter-spacing:-.02em;color:var(--tint);text-shadow:0 0 28px color-mix(in srgb,var(--tint) 70%,transparent);animation:xprise .95s cubic-bezier(.2,.9,.2,1) forwards}@keyframes xprise{0%{opacity:0;transform:translate(-50%) translateY(14px) scale(.7)}22%{opacity:1;transform:translate(-50%) translateY(0) scale(1.12)}40%{transform:translate(-50%) translateY(-6px) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-56px) scale(.95)}}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.mode{display:flex;flex-direction:column;gap:16px}.prompt{font-size:18px;line-height:1.45;color:var(--text);max-width:68ch;font-weight:550}.prompt code,.answer__text code,.feedback code,.checklist__item code{background:#00000073;border:1px solid var(--border);padding:1px 6px;border-radius:5px;color:var(--code-prop)}.hint{font-size:13px;color:var(--muted)}.reveal-slot{padding:4px 0}.answer{display:flex;flex-direction:column;gap:14px}.answer__text{color:var(--text-2);max-width:72ch;font-size:14.5px}.debug__head{display:flex;gap:14px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.tag{font-size:11px;padding:4px 11px;border-radius:999px;white-space:nowrap;font-weight:700;border:1px solid transparent}.tag--bad{background:#ff6b8129;color:var(--bad);border-color:#ff6b8166}.tag--warn{background:#ffb02e29;color:var(--warn);border-color:#ffb02e66}.tag--info{background:#2ad4e829;color:var(--cyan);border-color:#2ad4e866}.grades{display:flex;flex-direction:column;gap:10px}.grades__label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}.grades__row{display:flex;gap:10px;flex-wrap:wrap}.grade{flex:1 1 130px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;position:relative;box-shadow:0 3px #00000080;transition:border-color .14s,background .14s,transform .07s,box-shadow .07s}.grade kbd{position:absolute;top:9px;right:9px;margin:0}.grade:hover{background:color-mix(in srgb,var(--tint) 12%,var(--surface-2));border-color:var(--tint);box-shadow:0 3px #00000080,var(--glow-tint)}.grade:active{transform:translateY(3px);box-shadow:0 0 #00000080}.grade:focus-visible{outline:none;border-color:var(--tint);box-shadow:0 3px #00000080,0 0 0 3px color-mix(in srgb,var(--tint) 25%,transparent)}.grade__label{font-weight:800;font-size:14px;color:var(--tint)}.grade__hint{font-size:11px;color:var(--muted)}.grade--again{--tint: var(--bad)}.grade--hard{--tint: var(--amber)}.grade--good{--tint: var(--cyan)}.grade--easy{--tint: var(--lime)}.feedback{border-radius:var(--radius-sm);padding:14px 16px;font-size:14px;line-height:1.55;border:1px solid var(--border);border-left:3px solid var(--border-bright);background:var(--surface-2);color:var(--text-2);max-width:82ch;animation:pop .28s cubic-bezier(.2,1.3,.4,1)}.feedback strong{color:var(--text)}.feedback--good{border-color:#4ee08a59;border-left-color:var(--good);background:#4ee08a17;box-shadow:0 0 30px #4ee08a24}.feedback--good strong{color:var(--good)}.feedback--bad{border-color:#ff6b8159;border-left-color:var(--bad);background:#ff6b8117;animation:shake .4s ease,pop .28s cubic-bezier(.2,1.3,.4,1)}.feedback--bad strong{color:var(--bad)}.feedback--warn{border-color:#ffb02e59;border-left-color:var(--warn);background:#ffb02e17}.feedback--warn strong{color:var(--warn)}.feedback--neutral{border-left-color:var(--muted)}.feedback__code{font-family:var(--font-mono);font-size:11px;color:var(--muted);font-weight:500;margin-left:6px}.errors{margin-top:6px;display:flex;flex-direction:column;gap:2px;font-size:13px}.errors li{color:var(--text-2)}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.code{margin:0;background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:12.5px;line-height:1.7;overflow-x:auto;padding:14px 0;box-shadow:inset 0 0 40px #0006}.code--scroll{max-height:460px;overflow-y:auto}.code code{display:block;min-width:max-content}.code__line{display:flex;gap:14px;padding:0 16px;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;border-left:2px solid transparent}.code--gutter .code__line{padding-left:14px}.code__ln{flex:0 0 auto;min-width:2ch;text-align:right;color:var(--code-gutter);user-select:none}.code:not(.code--gutter) .code__ln{display:none}.code__text{white-space:pre}.code--clickable .code__line{cursor:pointer;transition:background .1s}.code--clickable .code__line:hover{background:#2ad4e814;border-left-color:var(--cyan)}.code--clickable .code__line:focus-visible{outline:none;background:#2ad4e81f;border-left-color:var(--cyan)}.code__line--correct{background:#4ee08a24;border-left-color:var(--good);box-shadow:inset 0 0 30px #4ee08a1f}.code__line--wrong{background:#ff6b8124;border-left-color:var(--bad)}.code__line--reveal{background:#ffb02e24;border-left-color:var(--warn)}.code__line--changed{background:#2ad4e81f;border-left-color:var(--cyan)}.t--kw{color:var(--code-kw)}.t--str{color:var(--code-str)}.t--interp{color:var(--code-interp)}.t--num,.t--lit{color:var(--code-num)}.t--fn{color:var(--code-fn)}.t--prop{color:var(--code-prop)}.t--type{color:var(--code-type)}.t--decorator{color:var(--code-decorator)}.t--ident{color:var(--code-ident)}.t--op{color:var(--code-op)}.t--punc{color:var(--code-punc)}.t--comment{color:var(--code-comment);font-style:italic}.t--plain,.code--plain .t{color:var(--text-2)}.code--plain .t--comment{color:var(--code-comment)}.code--plain .t--str{color:var(--code-str)}.code--gaps .code__line{align-items:baseline}.gap{font-family:var(--font-mono);font-size:12.5px;padding:1px 7px;margin:0 1px;min-width:5ch;border-radius:5px;border:1px dashed var(--border-bright);background:#0006;color:var(--muted);cursor:pointer;white-space:pre;line-height:1.5;transition:border-color .14s,background .14s,box-shadow .14s}.gap--filled{border-style:solid;border-color:#2ad4e88c;background:#2ad4e824;color:var(--cyan)}.gap--active{border-color:var(--cyan);box-shadow:0 0 0 2px #2ad4e840,0 0 18px #2ad4e866;animation:pop .24s cubic-bezier(.2,1.3,.4,1)}.gap--right{border-style:solid;border-color:var(--good);background:#4ee08a29;color:var(--good);box-shadow:0 0 16px #4ee08a59}.gap--wrong{border-style:solid;border-color:var(--bad);background:#ff6b8129;color:var(--bad);animation:shake .4s ease}.gap:focus-visible{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px #2ad4e840}.drill__input{display:flex;flex-direction:column;gap:10px;max-width:580px}.drill__input label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);display:block;margin-bottom:5px;font-weight:700}.drill__hint{font-size:12.5px;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{font-family:var(--font-mono);font-size:12px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);cursor:pointer;box-shadow:0 2px #00000073;transition:background .14s,border-color .14s,color .14s,transform .07s,box-shadow .07s}.chip:hover{background:#2ad4e824;border-color:var(--cyan);color:var(--cyan)}.chip:active{transform:translateY(2px);box-shadow:0 0 #00000073}.chip:focus-visible{outline:none;border-color:var(--cyan);box-shadow:0 2px #00000073,0 0 0 3px #2ad4e838}.spec__layout{display:grid;grid-template-columns:minmax(240px,310px) 1fr;gap:20px;align-items:start}.spec__brief{display:flex;flex-direction:column;gap:8px}.spec__brief-title{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:8px;font-weight:700}.spec__score{font-variant-numeric:tabular-nums;color:var(--tint);letter-spacing:0;font-size:12px;font-weight:800}.checklist{display:flex;flex-direction:column;gap:6px}.checklist__item{font-size:13px;color:var(--text-2);padding-left:16px;position:relative;line-height:1.45}.checklist__item:before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--tint) 70%,transparent)}.checks{display:flex;flex-direction:column;gap:8px}.checks--bonus{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.check{display:flex;gap:9px;font-size:13px;align-items:flex-start}.check__icon{flex:0 0 13px;font-size:12px;line-height:1.5}.check__body{display:flex;flex-direction:column;gap:2px}.check__label{line-height:1.4}.check__note{font-size:12px;color:var(--warn);font-family:var(--font-mono)}.check__hint{font-size:12px;color:var(--muted);line-height:1.4}.check--ok .check__icon{color:var(--good);text-shadow:0 0 12px rgba(78,224,138,.6)}.check--ok .check__label{color:var(--text-2)}.check--no .check__icon{color:var(--faint)}.check--no .check__label{color:var(--text)}.check--bonus .check__icon{color:var(--faint)}.check--bonus .check__label{color:var(--muted)}.spec__editor{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--code-bg);overflow:hidden;box-shadow:inset 0 0 40px #0006}.editor{max-height:560px;overflow:auto}.editor .cm-editor{background:transparent}.fix{display:flex;flex-direction:column;gap:8px}.fix__title{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}.complete{border:1px solid color-mix(in srgb,var(--tint) 35%,var(--border));border-radius:var(--radius);background:linear-gradient(180deg,color-mix(in srgb,var(--tint) 10%,transparent),transparent 40%),var(--surface);padding:32px;display:flex;flex-direction:column;gap:18px;max-width:640px;margin:28px auto;box-shadow:var(--shadow),var(--glow-tint-lg);animation:pop .4s cubic-bezier(.2,1.2,.3,1);text-align:center}.complete__title{font-size:15px;text-transform:uppercase;letter-spacing:.2em;color:var(--muted)}.complete__verdict{font-size:32px;font-weight:900;letter-spacing:-.03em;line-height:1.1;background:linear-gradient(100deg,var(--tint),#ffffff 70%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px color-mix(in srgb,var(--tint) 45%,transparent))}.complete__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px}.stat{border:1px solid var(--border);border-radius:var(--radius-sm);background:#0000004d;padding:14px;display:flex;flex-direction:column;gap:2px;text-align:left}.stat__value{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}.stat__label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.stat__sub{font-size:11px;color:var(--faint)}.complete__note{font-size:13px;color:var(--muted);line-height:1.55}.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:30}.confetti__bit{position:absolute;top:-14px;width:8px;height:14px;border-radius:2px;animation:fall linear forwards}@keyframes fall{0%{transform:translateY(-10vh) rotate(0);opacity:1}to{transform:translateY(110vh) rotate(680deg);opacity:.15}}.stats{display:flex;flex-direction:column;gap:18px}.stats__head{display:flex;align-items:center;gap:12px}.panel{display:flex;flex-direction:column;gap:14px}.panel__title{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}.panel__note{font-size:12px;color:var(--faint)}.heatmap{display:grid;grid-template-rows:repeat(7,13px);grid-auto-flow:column;grid-auto-columns:13px;gap:3px;justify-content:start;overflow-x:auto;padding-bottom:2px}.heatmap__cell{border-radius:3px;background:#ffffff0d}.heatmap__cell--pad{background:transparent}.heatmap__cell[data-level="1"]{background:#2ad4e84d}.heatmap__cell[data-level="2"]{background:#2ad4e88c}.heatmap__cell[data-level="3"]{background:var(--cyan)}.heatmap__cell[data-level="4"]{background:linear-gradient(135deg,var(--cyan),var(--magenta));box-shadow:0 0 10px #ff5fd08c}.buckets{display:flex;flex-direction:column;gap:8px}.bucket{display:grid;grid-template-columns:96px 1fr 44px;gap:12px;align-items:center;font-size:13px}.bucket__label{color:var(--text-2)}.bucket__bar{height:10px;background:#00000073;border-radius:999px;overflow:hidden}.bucket__fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--tint) 55%,#000),var(--tint));box-shadow:0 0 12px color-mix(in srgb,var(--tint) 50%,transparent);transition:width .5s cubic-bezier(.2,.8,.2,1)}.bucket__count{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.weaklist{display:flex;flex-direction:column;gap:5px}.weakrow{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;align-items:center;padding:9px 12px;border-radius:var(--radius-sm);background:#00000047;border-left:2px solid color-mix(in srgb,var(--tint) 60%,transparent)}.weakrow__title{font-size:13px}.weakrow__meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.weakrow__due{font-size:11px;color:var(--faint)}.setting{display:flex;flex-direction:column;gap:7px;padding-top:16px;border-top:1px solid var(--border)}.setting:first-of-type{border-top:0;padding-top:0}.setting__label{font-size:13px;display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-weight:600}.setting__value{font-variant-numeric:tabular-nums;color:var(--cyan);font-weight:800;text-shadow:0 0 14px rgba(42,212,232,.5)}.setting__hint{font-size:12px;color:var(--faint);line-height:1.45}.setting>.btn,.setting .actions{align-self:flex-start}.range{width:100%;accent-color:var(--cyan)}.stagger>*{animation:rise .55s cubic-bezier(.2,.9,.25,1) backwards}.stagger>*:nth-child(1){animation-delay:.02s}.stagger>*:nth-child(2){animation-delay:.09s}.stagger>*:nth-child(3){animation-delay:.16s}.stagger>*:nth-child(4){animation-delay:.23s}.stagger>*:nth-child(5){animation-delay:.3s}@keyframes rise{0%{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.topiclist>li{animation:slidein .4s cubic-bezier(.2,.9,.25,1) backwards}.topiclist>li:nth-child(1){animation-delay:.2s}.topiclist>li:nth-child(2){animation-delay:.25s}.topiclist>li:nth-child(3){animation-delay:.3s}.topiclist>li:nth-child(4){animation-delay:.35s}.topiclist>li:nth-child(5){animation-delay:.4s}.topiclist>li:nth-child(6){animation-delay:.45s}.topiclist>li:nth-child(7){animation-delay:.5s}.topiclist>li:nth-child(8){animation-delay:.55s}.topiclist>li:nth-child(9){animation-delay:.6s}.topiclist>li:nth-child(10){animation-delay:.65s}.topiclist>li:nth-child(11){animation-delay:.7s}.topiclist>li:nth-child(12){animation-delay:.75s}@keyframes slidein{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}@property --angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.neon{border:2px solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,conic-gradient(from var(--angle),var(--border) 0deg,var(--border) 24deg,color-mix(in srgb,var(--tint) 55%,var(--border)) 62deg,var(--tint) 96deg,#ffffff 120deg,var(--tint) 148deg,color-mix(in srgb,var(--tint) 55%,var(--border)) 184deg,var(--border) 230deg,var(--border) 360deg) border-box;box-shadow:0 0 30px color-mix(in srgb,var(--tint) 16%,transparent);animation:spin 5s linear infinite}@keyframes spin{to{--angle: 360deg}}@supports not (background: linear-gradient(in oklab,red,blue)){.neon{animation:none}}.start,.topics,.panel,.rankcard{transition:transform .25s cubic-bezier(.2,.9,.25,1),box-shadow .25s ease,border-color .25s ease}.start:hover,.topics:hover,.panel:hover,.rankcard:hover{transform:translateY(-2px);border-color:var(--border-bright);box-shadow:0 10px 34px #00000073}.herostat{transition:transform .25s cubic-bezier(.2,1.1,.3,1),box-shadow .25s ease}.herostat:hover{transform:translateY(-3px) scale(1.03)}.topicrow__btn:hover .topicrow__dot{box-shadow:0 0 20px color-mix(in srgb,var(--tint) 90%,transparent);transform:scale(1.25)}.topicrow__dot{transition:transform .2s cubic-bezier(.2,1.3,.3,1),box-shadow .2s ease}.flame{display:inline-block;animation:flicker 2.4s ease-in-out infinite;transform-origin:50% 85%;filter:drop-shadow(0 0 10px rgba(255,140,40,.8))}@keyframes flicker{0%,to{transform:scale(1) rotate(-2deg)}25%{transform:scale(1.12) rotate(2deg)}50%{transform:scale(.96) rotate(-1deg)}75%{transform:scale(1.08) rotate(1.5deg)}}.unfold{animation:unfold .5s cubic-bezier(.2,.95,.25,1) backwards;transform-origin:top center;perspective:900px}@keyframes unfold{0%{opacity:0;transform:perspective(900px) rotateX(-62deg) translateY(-6px)}to{opacity:1;transform:perspective(900px) rotateX(0) translateY(0)}}.flash{position:fixed;inset:0;z-index:35;pointer-events:none;animation:flashfade .6s ease-out forwards}.flash--good{background:radial-gradient(120% 80% at 50% 100%,rgba(78,224,138,.28),transparent 60%),radial-gradient(120% 80% at 50% 0%,rgba(78,224,138,.2),transparent 60%)}.flash--bad{background:radial-gradient(120% 80% at 50% 100%,rgba(255,107,129,.3),transparent 60%),radial-gradient(120% 80% at 50% 0%,rgba(255,107,129,.22),transparent 60%)}@keyframes flashfade{0%{opacity:0}18%{opacity:1}to{opacity:0}}.xpburst{position:fixed;left:50%;top:38%;width:0;height:0;z-index:39;pointer-events:none}.xpburst__spark{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--tint);box-shadow:0 0 12px var(--tint);animation:spark .75s cubic-bezier(.15,.8,.3,1) forwards}@keyframes spark{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.3)}}.btn--primary{position:relative;overflow:hidden}.btn--primary:after{content:"";position:absolute;top:0;bottom:0;width:45%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skew(-18deg);animation:shine 4.5s ease-in-out infinite;pointer-events:none}@keyframes shine{0%,62%{left:-60%}86%,to{left:130%}}@media(max-width:820px){.spec__layout{grid-template-columns:1fr}.hero{align-items:flex-start}.hero__title{font-size:34px}.app{padding:20px 14px 48px}.session__body{padding:16px}.topicrow__btn{grid-template-columns:1fr auto}.topicrow__meter{display:none}.bucket{grid-template-columns:78px 1fr 40px}.complete{padding:22px}.complete__verdict{font-size:24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}.confetti,.flash,.xpburst,.xppop{display:none}body:after{display:none}}
