:root{--bg:#141517;--surface:#1d1f22;--surface-2:#25282c;--line:#34383d;--fg:#e9e7e2;--muted:#9a9ea3;--faint:#6d7277;--led:#ff4f3a;--led-soft:#ff4f3a29;--hold:#f2b33d;--hold-soft:#f2b33d33;--turn:#58b8d6;--turn-soft:#58b8d633;--done:#7fbf8e;--done-soft:#7fbf8e26;--dev-body:#a7a6a1;--dev-well:#a3a29d;--dev-edge:#8d8c87;--dev-knob:#6c6d70;--dev-knob-edge:#55565a;--dev-blue:#3f87a8;--dev-white:#f2f2ef;--dev-rose:#bfb3b0;--dev-key:#5d5e62;--dev-pad:#6e7074;--dev-key-edge:#3c3d40;--dev-keyprint:#e9e9e6;--dev-print:#2b2b2b;--dev-print-soft:#5f5f5b;--dev-led-off:#2f2f30;--dev-lit:#f0766a;--hl-press:#e5281a;--hl-hold:#f0a400;--hl-turn:#1d7fe0;--display:"Archivo","Helvetica Neue",Arial,sans-serif;--body:"Archivo","Helvetica Neue",Arial,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#efede8;--surface:#f8f7f4;--surface-2:#e6e3dd;--line:#d2cec6;--fg:#1d1e20;--muted:#5b5f63;--faint:#878b8f;--led:#d8321f;--led-soft:#d8321f1f;--hold:#b97900;--hold-soft:#b9790029;--turn:#1f7f9e;--turn-soft:#1f7f9e26;--done:#2f8048;--done-soft:#2f80481f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}:root[data-theme=light]{--bg:#efede8;--surface:#f8f7f4;--surface-2:#e6e3dd;--line:#d2cec6;--fg:#1d1e20;--muted:#5b5f63;--faint:#878b8f;--led:#d8321f;--led-soft:#d8321f1f;--hold:#b97900;--hold-soft:#b9790029;--turn:#1f7f9e;--turn-soft:#1f7f9e26;--done:#2f8048;--done-soft:#2f80481f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg)}body{color:var(--fg);font-family:var(--body);font-size:16px;line-height:1.55}.wrap{max-width:1380px;margin:0 auto;padding-block:18px 60px;padding-inline:20px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--turn);outline-offset:2px}h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.15}h1,h2{letter-spacing:-.005em;font-weight:800;font-stretch:112%}h3{font-weight:700}.top{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:14px 24px;padding-bottom:14px;display:flex}.brand{align-items:baseline;gap:10px;display:flex}.brand h1{font-size:3.12rem;line-height:.9}:root{--logo-blue:#1434f5;--logo-yellow:#fce64e;--logo-ink:var(--fg)}.logo{font-family:"Manrope",var(--display);letter-spacing:-.01em;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:0 .1em .1em 0;text-decoration:none;display:inline-grid}.logo span{font-weight:var(--w);color:var(--c);transform:translate(var(--x),var(--y));grid-area:1/1;transition:transform .25s,color .25s}.logo span:first-child{z-index:1}.logo span:nth-child(2){z-index:2}.logo span:nth-child(3){z-index:3}.logo.glitch span{transition:none}@media (prefers-reduced-motion:reduce){.logo span{transition:none}}.instr{flex-wrap:wrap;gap:6px;display:flex}.instr a,.instr .off{color:inherit;border:1px solid var(--line);font-family:var(--display);cursor:pointer;background:0 0;border-radius:999px;padding:5px 14px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.instr a[aria-current=page]{background:var(--fg);color:var(--bg);border-color:var(--fg)}.instr .off{opacity:.55;cursor:default}.instr small{font-family:var(--body);opacity:.8;margin-left:4px;font-weight:400}.meter{font-family:var(--mono);color:var(--muted);align-items:center;gap:10px;margin-left:auto;font-size:.78rem;display:flex}.meter .bar{background:var(--surface-2);border-radius:3px;width:140px;height:6px;overflow:hidden}.meter .bar i{background:var(--done);width:0;height:100%;transition:width .4s;display:block}.sync{font-family:var(--mono);color:var(--faint);font-size:.72rem}.tabs{flex-wrap:wrap;gap:4px;margin:14px 0 18px;display:flex}.tabs a{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 10px;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-block}.tabs a[aria-current=page]{color:var(--fg);border-color:var(--led)}.below{grid-template-columns:240px minmax(0,1fr);align-items:start;gap:28px;margin-top:28px;display:grid}@media (width<=760px){.below{grid-template-columns:minmax(0,1fr)}}.rail{flex-direction:column;order:0;gap:2px;min-width:0;display:flex}.rail .lbl{font-family:var(--mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase;margin:4px 0 6px;font-size:.7rem}.wk{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;width:100%;padding:8px;display:grid}.wk:hover{background:var(--surface)}.wk[aria-current=true]{background:var(--surface);border-color:var(--line)}.wk .n{font-family:var(--mono);color:var(--muted);font-size:.75rem}.wk .t{font-size:.92rem;line-height:1.25}.wk .s{border:1.5px solid var(--faint);border-radius:50%;width:12px;height:12px}.wk .s.part{border-color:var(--hold);background:conic-gradient(var(--hold) var(--p,0%),transparent 0)}.wk .s.full{border-color:var(--done);background:var(--done)}@media (width<=760px){.rail{flex-direction:row;gap:6px;padding-bottom:6px;overflow-x:auto}.rail .lbl{display:none}.wk{border-color:var(--line);grid-template-columns:28px 1fr auto;width:auto;min-width:150px}.rail .unit{white-space:nowrap;align-self:center;margin:0 4px}}.lesson{min-width:0}.eyebrow{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--led);font-size:.74rem}.lesson h2{margin:6px 0 8px;font-size:clamp(1.6rem,2.6vw,2.2rem)}.goal{color:var(--fg);max-width:65ch;font-size:1.06rem}.meta{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin:10px 0 16px;font-size:.76rem;display:flex}.listen{border-left:3px solid var(--turn);background:var(--turn-soft);border-radius:0 8px 8px 0;max-width:72ch;margin:0 0 18px;padding:12px 14px;font-size:.93rem}.listen b{font-family:var(--display);letter-spacing:.04em}.concept{border:1px solid var(--line);background:var(--surface);border-radius:10px;max-width:72ch;margin:0 0 14px;padding:14px 16px}.concept h3{letter-spacing:.03em;margin-bottom:4px;font-size:1rem}.concept p{margin:.35em 0}.steps{counter-reset:st;flex-direction:column;gap:8px;margin:18px 0;padding:0;list-style:none;display:flex}.step{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:10px;grid-template-columns:30px minmax(0,1fr);gap:10px;padding:12px 14px;transition:border-color .15s,background .15s;display:grid}.step:hover{border-color:var(--faint)}.step.active{border-color:var(--led);background:linear-gradient(0deg,var(--led-soft),var(--led-soft)),var(--surface)}.step.done .txt{color:var(--muted)}.step .ck{border:1.5px solid var(--faint);cursor:pointer;background:0 0;border-radius:6px;place-items:center;width:24px;height:24px;margin-top:1px;padding:0;display:grid}.step.done .ck{background:var(--done);border-color:var(--done)}.step.done .ck:after{content:"";border:2.5px solid var(--bg);border-top:0;border-right:0;width:10px;height:6px;transform:rotate(-45deg)translate(1px,-1px)}.step .num{font-family:var(--mono);color:var(--faint);letter-spacing:.08em;font-size:.7rem}.step .txt{margin:2px 0 0}.step .hear{color:var(--muted);margin:6px 0 0;font-size:.9rem}.step .hear:before{content:"Listen for: ";font-family:var(--mono);letter-spacing:.06em;color:var(--turn);text-transform:uppercase;font-size:.72rem}.k{font-family:var(--mono);letter-spacing:.04em;background:var(--surface-2);border:1px solid var(--line);white-space:nowrap;border-bottom-width:2px;border-radius:4px;margin:0 1px;padding:2px 6px 1px;font-size:.74em;font-weight:700;line-height:1;display:inline}.k .ico{vertical-align:-.16em;width:1.05em;height:1.05em}.k.press{border-color:var(--led);color:var(--led)}.k.hold{border-color:var(--hold);color:var(--hold)}.k.turn{border-color:var(--turn);color:var(--turn)}.challenge{border:1px dashed var(--hold);border-radius:10px;max-width:72ch;margin-top:20px;padding:16px}a.song{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--done);text-decoration-color:var(--done);text-underline-offset:3px;white-space:nowrap;text-decoration-thickness:2px}a.song:hover{color:var(--done)}a.song svg{vertical-align:-.12em;width:.95em;height:.95em;color:var(--done);margin-left:4px}.challenge h3{color:var(--hold);margin-bottom:4px;font-size:1rem}.notes{max-width:72ch;margin-top:18px}.notes label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.74rem}.notes textarea{border:1px solid var(--line);background:var(--surface);width:100%;min-height:90px;color:var(--fg);font:inherit;resize:vertical;border-radius:8px;margin-top:6px;padding:10px 12px;font-size:.95rem}.finish{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;font-family:var(--display);letter-spacing:.03em;border-radius:8px;padding:8px 16px;font-weight:600}.btn.primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn:disabled{opacity:.45;cursor:default}.finish .stamp{font-family:var(--mono);color:var(--done);font-size:.78rem}.player{--ph:calc(100dvh - 32px);height:max(520px,var(--ph));border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;gap:12px;padding:14px 16px 16px;scroll-margin-top:12px;display:flex}.phead{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.phead .ttl{font-family:var(--display);min-width:0;font-size:1.05rem;font-weight:600}.phead .ttl span{color:var(--muted);font-weight:500}.picker{min-width:0;position:relative}.picker summary{cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:4px 10px 4px 0;list-style:none;display:inline-flex}.picker summary::-webkit-details-marker{display:none}.picker summary:hover{color:var(--led)}.picker .caret{opacity:.6;border-bottom:2px solid;border-right:2px solid;width:7px;height:7px;transform:rotate(45deg)translateY(-2px)}.picker[open] .caret{transform:rotate(-135deg)translateY(-2px)}.pmenu{z-index:30;background:var(--surface);border:1px solid var(--line);width:min(520px,100vw - 32px);max-height:min(70vh,560px);font-family:var(--body,inherit);border-radius:12px;grid-template-columns:1fr 1fr;gap:4px 12px;padding:8px;font-size:.9rem;font-weight:400;display:grid;position:absolute;top:calc(100% + 6px);left:0;overflow:auto;box-shadow:0 12px 32px #0000002e}@media (width<=600px){.pmenu{grid-template-columns:1fr;width:auto;max-height:65vh;position:fixed;top:auto;left:16px;right:16px}}.pm-g{min-width:0}.pm-h{font-family:var(--display);color:var(--fg);margin:8px 8px 4px;font-size:.78rem;font-weight:700}.pm-i{text-align:left;width:100%;color:var(--fg);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;grid-template-columns:30px 1fr auto;align-items:center;gap:6px;padding:6px 8px;display:grid}.pm-i:hover{background:var(--surface-2)}.pm-i[aria-current=true]{background:var(--led-soft)}.pm-i .n{font-family:var(--mono);color:var(--muted);font-size:.7rem}.pm-i .t{line-height:1.25}.pm-i .s{border:1.5px solid var(--faint);border-radius:50%;width:10px;height:10px}.pm-i .s.part{border-color:var(--hold);background:conic-gradient(var(--hold) var(--p,0%),transparent 0)}.pm-i .s.full{border-color:var(--done);background:var(--done)}.pm-i.soon{cursor:default;opacity:.45}.pm-i.soon small{font-family:var(--mono);color:var(--faint);font-size:.62rem}.dots{flex:220px;justify-content:space-between;align-items:center;min-width:160px;max-width:520px;height:24px;margin-left:auto;display:flex;position:relative}.dots:before{content:"";background:var(--line);border-radius:2px;height:2px;margin-top:-1px;position:absolute;top:50%;left:11px;right:11px}.dots:after{content:"";height:2px;width:calc((100% - 22px) * var(--p,0));background:var(--done);border-radius:2px;margin-top:-1px;position:absolute;top:50%;left:11px}.dots a{z-index:1;cursor:pointer;background:0 0;border:0;place-items:center;width:22px;height:22px;padding:0;display:grid;position:relative}.dots a:before{content:"";background:var(--surface-2);border:2px solid var(--line);box-sizing:border-box;border-radius:50%;width:10px;height:10px;transition:transform .12s}.dots a:hover:before{transform:scale(1.3)}.dots a.done:before{background:var(--done);border-color:var(--done)}.dots a[aria-current=true]:before{background:var(--surface);border:3px solid var(--led);width:14px;height:14px}.maxbtn{border:1px solid var(--line);font-family:var(--mono);cursor:pointer;color:var(--muted);background:0 0;border-radius:8px;padding:5px 10px;font-size:.74rem}.maxbtn:hover{color:var(--fg);border-color:var(--faint)}.pbody{grid-template-columns:minmax(0,1fr) 14px var(--sw,clamp(300px,30%,460px));flex:1;gap:4px;min-height:0;display:grid}.gutter{cursor:col-resize;touch-action:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.gutter:before{content:"";background:var(--line);border-radius:2px;width:4px;height:44px;transition:background .15s,height .15s}.gutter:hover:before,.gutter:focus-visible:before,.gutter.drag:before{background:var(--led);height:72px}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.pstage{justify-content:center;align-items:center;min-height:0;display:flex}.pstage>svg{width:100%;height:100%;display:block}.pstep{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:12px;min-height:0;padding:16px 18px;display:flex;overflow:auto}.pstep .h{font-family:var(--mono);letter-spacing:.1em;color:var(--faint);text-transform:uppercase;font-size:.74rem}.pstep .ptxt{margin:0;font-size:clamp(1.05rem,1.35vw,1.3rem);line-height:1.7}.ptxt p,.txt p{margin:0 0 .6em}.ptxt p:last-child,.txt p:last-child{margin-bottom:0}.plead{font-weight:600}.pacts{gap:.55em;margin:0;padding:0;list-style:none;display:grid}.pacts li{padding-left:1.15em;position:relative}.pacts li:before{content:"";background:var(--led);border-radius:50%;width:.42em;height:.42em;position:absolute;top:.72em;left:.1em}.txt .pacts{gap:.3em}.pstep .hear{border-top:1px solid var(--line);margin-top:1.1em;padding-top:.8em}.intro{flex-direction:column;gap:14px;display:flex}.intro .eyebrow{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--led);font-size:.74rem}.intro h3{color:var(--fg);font-family:var(--display);font-size:clamp(1.5rem,2.2vw,2.1rem);font-weight:800;line-height:1.1}.intro .lbl{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:4px;font-size:.72rem;display:block}.intro .ideas ul{margin:0;padding-left:1.1em;line-height:1.7}.intro .lis{color:var(--muted);border-left:3px solid var(--turn);margin:0;padding-left:12px;font-size:.95rem}.pstep .hear{color:var(--muted);margin:0;font-size:.98rem}.pstep .hear:before{content:"Listen for: ";font-family:var(--mono);letter-spacing:.06em;color:var(--turn);text-transform:uppercase;font-size:.72rem}.pstep .grow{flex:1}.ctl{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px;font-size:.92rem}.ctl .h{justify-content:space-between;align-items:center;display:flex}.ctl .x{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:1.1rem}.ctl .sec{color:var(--muted)}.legend{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:6px 14px;font-size:.72rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.navrow{gap:8px;display:flex}.navrow .btn{flex:1;padding:10px 12px;font-size:.95rem}.navrow .btn:first-child{flex:none;padding-inline:18px}.disclaim{color:var(--faint);margin:0;font-size:.76rem}@media (width<=900px){.player{height:auto;min-height:max(480px,var(--ph))}.pbody{flex:1;grid-template-columns:minmax(0,1fr)}.pstage>svg{height:auto}.pstep{overflow:visible}}html.focus body{overflow:hidden}html.focus body .player{z-index:50;height:auto;min-height:0;padding:calc(env(safe-area-inset-top,0px) + 14px) 20px calc(env(safe-area-inset-bottom,0px) + 16px);border:0;border-radius:0;position:fixed;inset:0;overflow:auto}html.focus body .pbody{grid-template-columns:minmax(0,1fr) 14px var(--sw,clamp(320px,30%,520px))}@media (width<=900px){html.focus body .pbody{grid-template-columns:minmax(0,1fr)}.gutter{display:none}}.refgrid .dockcard>svg{width:100%;height:auto;display:block}.dockcard{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:12px}.pnl-body{fill:var(--dev-body);stroke:var(--dev-edge);stroke-width:1.5px}.pnl-well{fill:var(--dev-well);stroke:var(--dev-edge);stroke-width:.8px}.brand-t{fill:var(--dev-print-soft);font-family:var(--display);letter-spacing:.02em;font-size:17px;font-style:italic;font-weight:700}.model-t{fill:var(--dev-print);font-family:var(--body);font-size:10.5px;font-weight:700}.c{cursor:pointer}.knobcap{fill:var(--dev-knob);stroke:var(--dev-knob-edge);stroke-width:1px}.knobblue{fill:var(--dev-blue);stroke:var(--dev-knob-edge);stroke-width:1px}.knobwhite{fill:var(--dev-white);stroke:var(--dev-edge);stroke-width:1px}.knobrose{fill:var(--dev-rose);stroke:var(--dev-edge);stroke-width:1px}.knobtop{fill:#ffffff14}.pled{fill:var(--dev-led-off)}.c .keycap{fill:var(--dev-key);stroke:var(--dev-key-edge);stroke-width:1.2px}.c .padcap{fill:var(--dev-pad);stroke:var(--dev-key-edge);stroke-width:1.2px}.c .trig{fill:var(--dev-key);stroke:var(--dev-key-edge);stroke-width:1.2px}.keyico{fill:none;stroke:var(--dev-keyprint);stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.keytxt{fill:var(--dev-keyprint);font-family:var(--display);letter-spacing:.03em;font-size:9.5px;font-weight:700}.padtxt{fill:var(--dev-keyprint);font-family:var(--display);font-size:13px;font-weight:700}.trigtxt{fill:var(--dev-keyprint);font-family:var(--display);font-size:10.5px;font-weight:700}.trigtxt.u{text-decoration:underline}.c .lbl{fill:var(--dev-print);font-family:var(--display);letter-spacing:.02em;font-size:8.6px;font-weight:700}.c .lbl .grey{fill:var(--dev-print-soft);font-weight:600}.c .sub{fill:var(--dev-print-soft);font-family:var(--display);letter-spacing:.02em;font-size:7.2px;font-weight:600;text-decoration:underline}.tiny{fill:var(--dev-print-soft);font-family:var(--display);font-size:6px;font-weight:600}.pageled{fill:var(--dev-led-off)}.pageled.on{fill:#f3d36b}.pwr{fill:none;stroke:var(--dev-print-soft);stroke-width:1.1px;stroke-linecap:round}.lcd-frame{fill:#1b1c1d}.lcd{fill:#d9dcd6}.lcd-inv{fill:#3a3d44}.lcd-big{fill:#2a2c30;font-family:var(--mono);font-size:15px;font-weight:700}.lcd-big.inv{fill:#e6e8e2}.lcd-small{fill:#2a2c30;font-family:var(--mono);font-size:7px}.lcd-small.inv{fill:#e6e8e2}.c .ring{fill:none;stroke-width:3.5px;stroke:#0000}.c:hover .ring{stroke:var(--dev-print-soft)}.c.sel .ring{stroke:var(--dev-print);stroke-dasharray:4 3}.c.hl-press .ring{stroke:var(--hl-press);animation:1.1s ease-in-out infinite pulse}.c.hl-hold .ring{stroke:var(--hl-hold)}.c.hl-turn .ring{stroke:var(--hl-turn);stroke-dasharray:7 4;animation:3s linear infinite spin}.c.hl-press .keycap,.c.hl-press .padcap,.c.hl-press .trig{fill:var(--dev-lit)}.c.hl-hold .keycap,.c.hl-hold .padcap,.c.hl-hold .trig{fill:var(--hl-hold)}.c.hl-hold .keyico{stroke:#1b1b1b}.c.hl-hold .keytxt,.c.hl-hold .padtxt,.c.hl-hold .trigtxt{fill:#1b1b1b}@keyframes pulse{50%{opacity:.25}}@keyframes spin{to{stroke-dashoffset:-44px}}@media (prefers-reduced-motion:reduce){.c.hl-press .ring,.c.hl-turn .ring{animation:none}}.ico{vertical-align:-.22em;fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linejoin:round;stroke-linecap:round;width:1.15em;height:1.15em;margin-right:3px}.ref{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.card{border:1px solid var(--line);background:var(--surface);border-radius:10px;min-width:0;padding:14px 16px}.card h3{margin-bottom:6px;font-size:1.05rem}.card .tag{font-family:var(--mono);color:var(--led);letter-spacing:.1em;text-transform:uppercase;font-size:.7rem}.card dl{grid-template-columns:auto 1fr;gap:4px 10px;margin:8px 0 0;font-size:.92rem;display:grid}.card dt{font-family:var(--mono);padding-top:2px;font-size:.76rem;font-weight:700}.card dd{margin:0}.card p{margin:.4em 0;font-size:.94rem}.sc{border-collapse:collapse;width:100%;font-size:.93rem}.sc td{border-bottom:1px solid var(--line);vertical-align:top;padding:7px 8px}.sc td:first-child{white-space:nowrap}.tblwrap{overflow-x:auto}.refgrid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start;gap:22px;display:grid}@media (width<=980px){.refgrid{grid-template-columns:minmax(0,1fr)}}.info h3{margin:4px 0 6px;font-size:1.3rem}.info .sec{color:var(--muted);margin-top:8px;font-size:.93rem}.intro{max-width:70ch;color:var(--muted);margin:0 0 16px}.foot{color:var(--faint);max-width:80ch;margin-top:40px;font-size:.8rem}.foot a{color:var(--muted)}.figwrap{justify-content:center;align-items:center;width:100%;height:100%;display:flex;overflow:auto}svg.fig{width:100%;height:100%;max-height:100%;display:block}.fig text{fill:var(--fg);font-family:var(--body)}.fig .fh{font-family:var(--display);font-size:22px;font-weight:700}.fig .fb{fill:var(--muted);font-size:16px}.fig .fl{font-size:17px;font-weight:600}.fig .fm{fill:var(--muted);font-size:14px}.fig .fs{font-family:var(--mono);fill:var(--faint);font-size:12px}.fig .fs.u{text-decoration:underline}.fig .fbar{fill:#141517;font-size:14px;font-weight:600}.fig .fbig{font-family:var(--display);font-size:38px;font-weight:800}.fig .ln{stroke:var(--faint);stroke-width:1.5px;fill:none}.fig .ln2{stroke:var(--faint);stroke-width:2px;stroke-dasharray:4 4}.fig .grid{stroke:var(--line);stroke-width:1px}.fig .mark{stroke:var(--fg);stroke-width:2px;stroke-dasharray:5 4}.fig .box{fill:var(--surface-2);stroke:var(--line)}.fig .arr{stroke:var(--turn);stroke-width:2px;fill:none;marker-end:none}.gp{flex-direction:column;gap:12px;width:100%;max-width:900px;padding:6px;display:flex}.gp .gt{font-family:var(--display);font-size:1.25rem;font-weight:700}.gtabs{flex-wrap:wrap;gap:6px;display:flex}.gtabs button{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:5px 12px;font-size:.88rem}.gtabs button[aria-pressed=true]{background:var(--fg);color:var(--bg);border-color:var(--fg)}.gg{grid-template-columns:minmax(64px,auto) repeat(var(--n),minmax(0,1fr));align-items:stretch;gap:4px;display:grid}.gg .hd{text-align:center;font-family:var(--mono);color:var(--faint);font-size:.78rem;line-height:1.2}.gg .hd.b{color:var(--fg);font-weight:700}.gg .hd small{color:var(--faint);font-size:.66rem;font-weight:400;display:block}.gg .hd small.u{text-decoration:underline}.gg .rl{flex-direction:column;justify-content:center;padding-right:6px;font-size:.85rem;font-weight:600;display:flex}.gg .rl small{font-family:var(--mono);color:var(--faint);font-size:.66rem;font-weight:400}.cell{aspect-ratio:1/1.25;border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;min-height:26px;padding:0;position:relative;overflow:hidden}.cell.bt{background:var(--surface-2)}.cell i{height:calc((100% - 6px) * var(--v));background:var(--c);opacity:0;border-radius:4px;transition:opacity .1s;position:absolute;bottom:3px;left:3px;right:3px}.cell.on i{opacity:1}.cell.out{opacity:.25;cursor:default}.cell.now{outline:2px solid var(--fg);outline-offset:-2px}.gctl{flex-wrap:wrap;align-items:center;gap:10px 16px;display:flex}.gbpm{font-family:var(--mono);color:var(--muted);font-size:.85rem}.gsw{align-items:center;gap:8px;font-size:.9rem;display:flex}.gsw input{width:160px;accent-color:var(--turn)}.gsw b{font-family:var(--mono);min-width:3.2em;font-weight:600}.gnote{color:var(--muted);flex-basis:100%;font-size:.92rem}.ghint{color:var(--faint);margin:0;font-size:.8rem}.pstep .h .kind{letter-spacing:.08em;border-radius:999px;margin-right:6px;padding:1px 8px;font-weight:600;display:inline-block}.kind.k-intro{background:var(--surface);color:var(--fg)}.kind.k-learn{background:var(--turn-soft);color:var(--turn)}.kind.k-play{background:var(--led-soft);color:var(--led)}.kind.k-check{background:var(--done-soft);color:var(--done)}.quiz{margin:14px 0}.qhint{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:600}.opts{gap:8px;display:grid}.opt{font:inherit;text-align:left;border:1px solid var(--line);background:var(--surface);color:inherit;cursor:pointer;border-radius:10px;padding:10px 14px}.opt:hover:not(:disabled){border-color:var(--done)}.opt.right{border-color:var(--done);box-shadow:inset 0 0 0 1px var(--done);font-weight:600}.opt.wrong{opacity:.5;text-decoration:line-through}.opt:disabled{cursor:default}.qmsg{margin:10px 0 0;font-weight:600}.qmsg.ok{color:var(--done)}.qexp{margin:6px 0 0}.ans{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px}.ans summary{cursor:pointer;color:var(--done);font-weight:600}.ans p{margin:8px 0 0}.hear.rule:before{content:"Remember: "!important;color:var(--done)!important}.rail .unit{font-family:var(--display);color:var(--fg);margin:14px 0 4px;font-size:.82rem;font-weight:700}.wk.soon{cursor:default;opacity:.5}.wk .t small.by{color:var(--muted);font-size:.76rem;display:block}.wk.soon small{font-family:var(--mono);color:var(--faint);font-size:.66rem}@media (width<=900px){.figwrap,svg.fig{height:auto}}.legend[hidden]{display:none!important}.cell{min-width:0}@media (width<=600px){.gg{grid-template-columns:46px repeat(var(--n),minmax(0,1fr));gap:2px}.cell{border-radius:3px;min-height:22px}.cell i{bottom:1px;left:1px;right:1px}.gg .hd small{display:none}.gg .hd{font-size:.66rem}.gg .rl{font-size:.74rem}}body{margin:0}img{max-width:100%}[hidden]{display:none!important}a.wk,a.pm-i{color:inherit;text-decoration:none}a.btn{color:inherit;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}a.btn.primary{color:var(--bg)}.btn[aria-disabled=true]{opacity:.45;pointer-events:none}.step .num a{color:inherit;text-decoration:none}.step .go{all:unset;cursor:pointer;display:block}.acct{font-family:var(--mono);color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:.76rem;text-decoration:none}.acct:hover{color:var(--fg);border-color:var(--faint)}.brand a{color:inherit;text-decoration:none}.page{max-width:72ch}.page h2{margin:6px 0 10px;font-size:clamp(1.6rem,2.6vw,2.2rem)}.page p{margin:.5em 0}.cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:18px 0;display:grid}.icard{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:12px;padding:16px;text-decoration:none;display:block}a.icard:hover{border-color:var(--faint)}.icard h3{margin-bottom:4px;font-size:1.1rem}.icard p{color:var(--muted);margin:0;font-size:.93rem}.icard.off{opacity:.55}.signin{flex-direction:column;gap:8px;max-width:320px;margin:14px 0;display:flex}.signin .btn{justify-content:flex-start;gap:10px}.signin svg{width:18px;height:18px}.row{flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0;display:flex}.msg{color:var(--muted);font-size:.9rem}.msg.bad{color:var(--led)}.contact label{color:var(--muted);margin:10px 0;font-size:.9rem;display:block}.contact textarea,.contact input{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--fg);font:inherit;border-radius:8px;margin-top:6px;padding:10px 12px;font-size:.95rem;display:block}.contact textarea{resize:vertical;min-height:120px}.contact .hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}section.box{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:20px 0;padding:16px}section.box h3{margin-bottom:6px}.top .acct{margin-left:auto}.top .meter+.acct{margin-left:0}.umap{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:start;gap:14px;margin-top:26px;display:grid}.ucard{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px}.ucard h3{margin:4px 8px 8px;font-size:.95rem}.ucard .wk:hover{background:var(--surface-2)}.top+#view{margin-top:24px}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
