:root{--bg-void: #050608;--bg-app: #0e1116;--bg-panel: #161a21;--bg-raised: #1f2530;--bg-raised-hi: #2a313f;--bg-sunken: #0a0c10;--sensor-bg: var(--bg-void);--text: #eaeef5;--text-dim: #8a93a6;--text-faint: #545c6e;--axis-ink: #b3bed3;--neon-cyan: #34e9ff;--neon-cyan-dim: #6fb9c8;--neon-gold: #ffcf3d;--neon-magenta: #ff3d7a;--neon-green: #3dffa0;--cyan-rgb: 52 233 255;--gold-rgb: 255 207 61;--magenta-rgb: 255 61 122;--green-rgb: 61 255 160;--text-rgb: 234 238 245;--tut-empty: #6fd3ff;--tut-empty-rgb: 111 211 255;--accent-fill-from: #34e9ff;--accent-fill-to: #1fb8cc;--accent-fill-ink: #04262b;--bust-fill: #ff3d7a;--bust-fill-ink: #1a0308;--on-shape: #0b0c0f;--p0: #2dd4ee;--p1: #1fb37e;--p2: #ffd83d;--p3: #e08a1e;--p4: #a56bf5;--p5: #2f7bdb;--ink-rgb: 0 0 0;--chip-lip: rgb(var(--ink-rgb) / .5);--chip-cast: rgb(var(--ink-rgb) / .35);--chip-cast-hi: rgb(var(--ink-rgb) / .4);--sensor-recess: rgb(var(--ink-rgb) / .65);--cell-recess: rgb(var(--ink-rgb) / .35);--cell-recess-faint: rgb(var(--ink-rgb) / .25);--dot-ring: rgb(var(--ink-rgb) / .5);--dot-well: rgb(var(--ink-rgb) / .55);--dot-floor: rgb(var(--gloss-rgb) / .2);--dot-lip: rgb(var(--gloss-rgb) / .1);--x-bevel: rgb(var(--gloss-rgb) / .7);--sheet-cast: rgb(var(--ink-rgb) / .6);--sheet-cast-up: rgb(var(--ink-rgb) / .55);--menu-cast: rgb(var(--ink-rgb) / .65);--bar-cast: rgb(var(--ink-rgb) / .5);--socket-cast: rgb(var(--ink-rgb) / .55);--edge-rgb: 255 255 255;--edge-hair: rgb(var(--edge-rgb) / .06);--edge-line: rgb(var(--edge-rgb) / .1);--edge-line-hi: rgb(var(--edge-rgb) / .14);--edge-sheet: rgb(var(--edge-rgb) / .12);--edge-sensor: rgb(var(--edge-rgb) / .03);--gloss-rgb: 255 255 255;--gloss-chip: rgb(var(--gloss-rgb) / .12);--gloss-chip-hi: rgb(var(--gloss-rgb) / .16);--gloss-chip-lo: rgb(var(--gloss-rgb) / .08);--gloss-shape: rgb(var(--gloss-rgb) / .15);--gloss-shape-ring: rgb(var(--gloss-rgb) / .75);--gloss-glint: rgb(var(--gloss-rgb) / .7);--gloss-fill-edge: rgb(var(--gloss-rgb) / .2);--scrim-rgb: 5 6 8;--scrim-overlay: rgb(var(--scrim-rgb) / .32);--scrim-menu: rgb(var(--scrim-rgb) / .6);--scrim-rules: rgb(var(--scrim-rgb) / .72);--sheet-fade: color-mix(in srgb, var(--bg-void) 92%, transparent);--ring-gap: rgb(var(--scrim-rgb) / .8);--cursor-ring: #fff;--bust-ring: #fff;--star-socket-hi: #090c11;--star-socket-mid: #141a23;--star-socket-lo: #28313f;--star-socket-shade-rgb: 0 0 0;--star-socket-lit-rgb: 158 175 200;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 18px;--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--page-max: 1240px;--rail: 300px}:root[data-theme=light]{--bg-void: #ccd4e2;--bg-app: #dfe5ee;--bg-panel: #f7f9fd;--bg-raised: #e8edf6;--bg-raised-hi: #ffffff;--bg-sunken: #dde3ee;--sensor-bg: #c6cfdd;--text: #0f1524;--text-dim: #4f586e;--text-faint: #78829a;--axis-ink: #495468;--neon-cyan: #0a5f75;--neon-cyan-dim: #2f6577;--neon-gold: #804d00;--neon-magenta: #c01043;--neon-green: #0a7a48;--cyan-rgb: 10 95 117;--gold-rgb: 128 77 0;--magenta-rgb: 192 16 67;--green-rgb: 10 122 72;--text-rgb: 15 21 36;--tut-empty: #1a6a97;--tut-empty-rgb: 26 106 151;--accent-fill-from: #0c7d95;--accent-fill-to: #0a6f88;--accent-fill-ink: #ffffff;--ink-rgb: 30 41 59;--chip-lip: rgb(var(--ink-rgb) / .16);--chip-cast: rgb(var(--ink-rgb) / .12);--chip-cast-hi: rgb(var(--ink-rgb) / .16);--sensor-recess: rgb(var(--ink-rgb) / .22);--cell-recess: rgb(var(--ink-rgb) / .14);--cell-recess-faint: rgb(var(--ink-rgb) / .1);--dot-ring: rgb(var(--ink-rgb) / .45);--dot-well: rgb(var(--ink-rgb) / .4);--dot-floor: rgb(255 255 255 / .4);--dot-lip: rgb(255 255 255 / .95);--x-bevel: rgb(255 255 255 / .75);--sheet-cast: rgb(var(--ink-rgb) / .18);--sheet-cast-up: rgb(var(--ink-rgb) / .14);--menu-cast: rgb(var(--ink-rgb) / .2);--bar-cast: rgb(var(--ink-rgb) / .12);--edge-rgb: 15 23 42;--edge-hair: rgb(var(--edge-rgb) / .1);--edge-line: rgb(var(--edge-rgb) / .14);--edge-line-hi: rgb(var(--edge-rgb) / .2);--edge-sheet: rgb(var(--edge-rgb) / .14);--edge-sensor: rgb(var(--edge-rgb) / .1);--gloss-chip: transparent;--gloss-chip-hi: transparent;--gloss-chip-lo: transparent;--scrim-rgb: 15 23 42;--scrim-overlay: rgb(var(--scrim-rgb) / .18);--scrim-menu: rgb(var(--scrim-rgb) / .34);--scrim-rules: rgb(var(--scrim-rgb) / .42);--ring-gap: rgb(255 255 255 / .9);--cursor-ring: #0f1524;--bust-ring: rgb(15 23 42 / .85);--star-socket-hi: #b6bfd0;--star-socket-mid: #d2d8e3;--star-socket-lo: #f0f2f7;--star-socket-shade-rgb: 100 116 139;--star-socket-lit-rgb: 255 255 255;--socket-cast: transparent}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}*{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}html,body{margin:0;padding:0;height:100%;overscroll-behavior:none;background:var(--bg-void);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}button{font-family:inherit}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;gap:1.25rem;padding:1.25rem clamp(.75rem,4vw,2rem);padding-top:max(1.25rem,calc(env(safe-area-inset-top) + .35rem));max-width:var(--page-max);margin:0 auto}header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:clamp(.6rem,2vw,1.4rem);padding:.45rem .5rem .45rem 1.1rem;background:var(--bg-panel);border:1px solid var(--edge-hair);border-radius:var(--radius-lg)}.wordmark{flex:none;margin:0;font-size:.95rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--neon-cyan);text-shadow:0 0 14px rgb(var(--cyan-rgb) / .35)}.stats{display:flex;flex:1;align-items:baseline;justify-content:center;gap:clamp(1rem,3.5vw,2.25rem);flex-wrap:wrap}.stat{display:inline-flex;align-items:baseline;gap:.35rem;min-width:0;white-space:nowrap}.stat .k{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.stat b{font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:1rem;font-weight:700;color:var(--text)}.stat-band[data-practice]{color:var(--neon-gold);font-weight:700}.stat-band{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.menu-toggle{display:flex;flex:none;gap:.55rem;min-width:44px;height:44px;padding:0 .7rem;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:none;color:var(--text-dim);cursor:pointer;transition:color .12s ease,background .12s ease;-webkit-tap-highlight-color:transparent}.menu-toggle:hover{color:var(--text);background:var(--bg-raised)}.menu-word{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.menu-bars{position:relative;width:18px;height:2px;border-radius:2px;background:currentColor}.menu-bars:before,.menu-bars:after{content:"";position:absolute;left:0;width:100%;height:2px;border-radius:2px;background:currentColor}.menu-bars:before{top:-6px}.menu-bars:after{top:6px}.menu-toggle[aria-expanded=true]{color:var(--neon-cyan)}main{display:grid;grid-template-columns:minmax(0,1fr) var(--rail);gap:1.25rem;align-items:stretch;flex:1;min-height:0}#stage{position:relative;display:flex;align-items:center;justify-content:center;padding:clamp(.75rem,3vw,1.75rem);background:var(--bg-panel);border:1px solid var(--edge-hair);border-radius:var(--radius-lg);max-width:100%;min-height:50vh;overflow-x:hidden}.board-loader{position:absolute;top:0;right:0;bottom:0;left:0;z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;border-radius:inherit;background:var(--bg-panel);color:var(--text);font-weight:700;letter-spacing:.02em}.board-loader[hidden]{display:none}.board-loader-track{width:clamp(9rem,32vw,14rem);height:4px;overflow:hidden;border-radius:999px;background:rgb(var(--cyan-rgb) / .16)}.board-loader-scan{display:block;width:38%;height:100%;border-radius:inherit;background:var(--neon-cyan);box-shadow:0 0 12px rgb(var(--cyan-rgb) / .45);animation:board-loader-scan 1.15s ease-in-out infinite}@keyframes board-loader-scan{0%{transform:translate(-110%)}to{transform:translate(300%)}}#stage:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:inherit;background:radial-gradient(circle,rgb(var(--gold-rgb) / .6),rgb(var(--cyan-rgb) / .18) 45%,transparent 72%);mix-blend-mode:screen;opacity:0}#side{display:flex;flex-direction:column;gap:.9rem;min-width:0;align-self:start}#progress{margin:0;min-height:1.25em;color:var(--text-dim);font-size:.85rem}.rail-action{display:flex;flex-direction:column;gap:.5rem;padding:.7rem .75rem;background:var(--bg-panel);border:1px solid var(--edge-hair);border-radius:var(--radius-lg)}.btn.hint-action{display:flex;align-items:center;justify-content:center;gap:.6rem;min-height:2.9rem;border-color:rgb(var(--gold-rgb) / .35);background:rgb(var(--gold-rgb) / .08);color:var(--neon-gold);letter-spacing:.02em}.btn.hint-action:hover:not(:disabled){background:rgb(var(--gold-rgb) / .16)}.hint-action-name{font-weight:700}.hint-action-key,.legend kbd{padding:.05rem .4rem;border:1px solid var(--edge-line-hi);border-radius:4px;background:var(--bg-sunken);color:var(--text-dim);font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:.68rem;font-weight:700;line-height:1.5}.hint-action:disabled .hint-action-key{color:var(--text-faint)}.tutorial-panel{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem 1rem;padding:.8rem 1rem;background:linear-gradient(135deg,rgb(var(--cyan-rgb) / .1),color-mix(in srgb,var(--bg-panel) 98%,transparent) 42%);border:1px solid rgb(var(--cyan-rgb) / .38);border-left-width:3px;border-radius:var(--radius-lg);box-shadow:0 0 24px rgb(var(--cyan-rgb) / .08)}.tutorial-panel[hidden]{display:none}.tutorial-head{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:1rem}.tutorial-progress{color:var(--neon-cyan-dim);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.tutorial-panel h2,.tutorial-panel p{grid-column:1;margin:0}.tutorial-panel h2{font-size:1.05rem;line-height:1.2}#tutorial-body{color:var(--text);font-size:.88rem;line-height:1.45}.tutorial-how{grid-column:1;margin-top:.3rem;color:var(--text-dim);font-size:.78rem;line-height:1.35}.tutorial-feedback{grid-column:1;min-height:1.25em;color:var(--neon-gold);font-size:.8rem}.tutorial-actions{grid-column:2;grid-row:2 / span 5;display:flex;flex-direction:column;gap:.4rem;align-self:center;min-width:9rem}.tutorial-actions .btn{width:100%}.tutorial-exit{padding:.2rem 0;border:0;background:transparent;color:var(--text-dim);cursor:pointer;font:inherit;font-size:.75rem;text-decoration:underline;text-underline-offset:.2em}.cell.tutorial-target{--tut-hue: var(--text);--tut-glow: rgb(var(--text-rgb) / .45);z-index:3;outline:2px dashed var(--tut-hue);outline-offset:2px;box-shadow:0 0 0 2px var(--ring-gap),0 0 14px var(--tut-glow)}.cell.tutorial-target.role-shape{--tut-hue: var(--neon-gold);--tut-glow: rgb(var(--gold-rgb) / .72)}.cell.tutorial-target.role-empty{--tut-hue: var(--tut-empty);--tut-glow: rgb(var(--tut-empty-rgb) / .6)}.cell.tutorial-target.role-unknown{--tut-hue: var(--p4);--tut-glow: color-mix(in srgb, var(--p4) 60%, transparent)}.cell.tutorial-target.role-sensor{--tut-hue: var(--text);--tut-glow: rgb(var(--text-rgb) / .45)}.cell.tutorial-target.tutorial-act{outline-style:solid;outline-width:3px;animation:tutorial-act-pulse 1.2s ease-in-out infinite}@keyframes tutorial-act-pulse{0%,to{box-shadow:0 0 0 2px var(--ring-gap),0 0 8px var(--tut-glow)}50%{box-shadow:0 0 0 2px var(--ring-gap),0 0 24px 4px var(--tut-glow)}}.tutorial-actions .btn.tutorial-act{animation:tutorial-button-pulse 1.6s ease-in-out infinite}@keyframes tutorial-button-pulse{0%,to{box-shadow:0 0 rgb(var(--cyan-rgb) / .45)}50%{box-shadow:0 0 18px 4px rgb(var(--cyan-rgb) / .45)}}.cell.tutorial-given:after{content:"given";position:absolute;right:2px;bottom:1px;color:var(--text-dim);font-size:clamp(.33rem,calc(var(--cell) * .12),.55rem);letter-spacing:.04em;text-transform:uppercase}.tutorial-control-focus,.bank-item.tutorial-focus{outline:2px solid var(--neon-gold);outline-offset:2px;box-shadow:0 0 16px rgb(var(--gold-rgb) / .45)}.dump{width:100%;height:9rem;padding:.6rem;border:1px solid var(--edge-hair);border-radius:var(--radius-sm);background:var(--bg-sunken);color:var(--text-dim);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;line-height:1.35;white-space:pre;resize:vertical}.dump[data-empty]{height:0;padding:0;border:0;overflow:hidden}.msg{position:fixed;left:0;right:0;bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:90;width:fit-content;max-width:min(28rem,calc(100% - 1.5rem));margin-inline:auto;padding:.5rem .9rem;border:1px solid var(--edge-line-hi);border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg-raised-hi) 94%,transparent);box-shadow:0 6px 20px var(--bar-cast);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--neon-gold);font-size:.9rem;line-height:1.35;text-align:center;text-wrap:balance;opacity:0;transform:translateY(.4rem);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.msg[data-shown]{opacity:1;transform:translateY(0)}@media (pointer: fine) and (min-width: 701px){.msg{left:auto;right:calc(max(0px,(100vw - var(--page-max)) / 2) + clamp(.75rem,4vw,2rem));bottom:calc(2.9rem + env(safe-area-inset-bottom));width:auto;max-width:min(var(--rail),calc(100vw - 2rem));margin-inline:0;text-align:left;text-wrap:pretty;transform:translate(.6rem)}.msg[data-shown]{transform:translate(0)}}#shape-bank,#hint-why{background:var(--bg-panel);border:1px solid var(--edge-hair);border-radius:var(--radius-lg);padding:.75rem .9rem}#hint-why{border-color:rgb(var(--cyan-rgb) / .35);border-left-width:3px}#hint-why-text,.hint-summary{margin:0;font-size:.85rem;line-height:1.5;color:var(--text)}.hint-proof-toggle{display:flex;align-items:center;gap:.35rem;margin:.45rem 0 0;padding:.3rem 0;min-height:2.75rem;border:0;background:none;color:var(--neon-cyan);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}.hint-proof-toggle:after{content:"›";font-size:1rem;line-height:1;transition:transform .14s ease}.hint-proof-toggle[aria-expanded=true]:after{transform:rotate(90deg)}.hint-proof-toggle[aria-expanded=true]+#hint-why-text{margin-top:.35rem;padding-top:.45rem;border-top:1px solid rgb(var(--cyan-rgb) / .2)}.hint-headline{margin:0 0 .4rem;font-size:.85rem;line-height:1.45;font-weight:700;color:var(--neon-gold)}.ref{color:var(--neon-cyan);font-weight:700}#hint-why .hint-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}#hint-why .hint-head h2{margin:0}.hint-close{flex:none;margin:-.4rem -.5rem 0 0;padding:.4rem .5rem;border:0;border-radius:var(--radius-sm);background:none;color:var(--text-dim);font:inherit;font-size:1.05rem;line-height:1;cursor:pointer}.hint-close:hover{color:var(--neon-cyan);background:rgb(var(--cyan-rgb) / .12)}.hint-proof-toggle:hover{color:var(--text)}#shape-bank h2,#hint-why h2{margin:0 0 .6rem;font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-dim)}.bank-grid{--box: 48px;--bit: 8px;--bit-gap: 2px;display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}.bank-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;color:inherit;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.3rem .15rem;border:1px solid var(--edge-hair);border-radius:var(--radius-sm);background:var(--bg-raised);cursor:pointer;transition:border-color .12s ease,background .12s ease,opacity .12s ease}.bank-item:hover:not(.used){border-color:var(--edge-line-hi);background:var(--bg-raised-hi)}.bank-item.used{cursor:default}.bank-shape-box{width:var(--box);height:var(--box);display:flex;align-items:center;justify-content:center}.bank-shape{display:grid;grid-template-columns:repeat(var(--sw),var(--bit));grid-template-rows:repeat(var(--sh),var(--bit));gap:var(--bit-gap)}.bank-shape .bit{width:var(--bit);height:var(--bit);border-radius:2px;background:var(--text-faint)}.bank-letter{font-size:.8rem;font-weight:700;color:var(--text-dim);letter-spacing:.02em}.bank-item.p0{--pc: var(--p0)}.bank-item.p1{--pc: var(--p1)}.bank-item.p2{--pc: var(--p2)}.bank-item.p3{--pc: var(--p3)}.bank-item.p4{--pc: var(--p4)}.bank-item.p5{--pc: var(--p5)}.bank-item.used{background:color-mix(in srgb,var(--pc) 16%,var(--bg-raised));border-color:color-mix(in srgb,var(--pc) 55%,transparent)}.bank-item.used .bank-shape .bit{background:var(--pc);opacity:.65}.bank-item.used .bank-letter{color:var(--pc);text-decoration:line-through;text-decoration-color:var(--pc);text-decoration-thickness:2px}.bank-item.ruled-out{background:var(--bg-sunken);border-color:var(--edge-hair)}.bank-item.ruled-out:hover{background:color-mix(in srgb,var(--bg-sunken) 82%,var(--bg-raised-hi));border-color:var(--edge-line-hi)}.bank-shape-box{position:relative}.bank-item.ruled-out .bank-shape-box:after{content:"";position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:linear-gradient(to bottom right,transparent calc(50% - 1.25px),var(--neon-magenta) calc(50% - 1.25px),var(--neon-magenta) calc(50% + 1.25px),transparent calc(50% + 1.25px));pointer-events:none}.bank-item.ruled-out .bank-shape .bit{background:var(--text-faint);opacity:.35}.bank-item.ruled-out .bank-letter{color:var(--text-faint);opacity:.7}#frame{--label: 18px;display:grid;grid-template-columns:var(--label) auto;grid-template-rows:var(--label) auto;gap:4px;transform-origin:top center;transition:transform .28s var(--ease-pop)}#col-labels{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(var(--cols),var(--cell));gap:4px}#row-labels{grid-column:1;grid-row:2;display:grid;grid-auto-rows:var(--cell);gap:4px}.axis{display:flex;align-items:center;justify-content:center;font-size:.74rem;font-weight:700;letter-spacing:.08em;line-height:1;color:var(--axis-ink);font-variant-numeric:tabular-nums;transition:color .12s linear}.axis.on{color:var(--neon-cyan);text-shadow:0 0 6px rgb(var(--cyan-rgb) / .75)}#board{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--cols),var(--cell));grid-auto-rows:var(--cell);gap:4px;perspective:800px;max-width:100%}.cell{box-sizing:border-box;width:100%;height:100%;margin:0;padding:0;border:none;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;position:relative;-webkit-user-select:none;user-select:none;font-weight:700;color:var(--text)}.cell.clue{background:var(--sensor-bg);cursor:default;box-shadow:inset 0 2px 5px var(--sensor-recess),inset 0 0 0 1px var(--edge-sensor)}.cell.clue .arrows-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.cell.clue .arrow-head{fill:var(--neon-cyan);filter:drop-shadow(0 0 2px rgb(var(--cyan-rgb) / .7))}.cell.clue .arrow-shaft{stroke:var(--neon-cyan);stroke-width:6;stroke-linecap:round}.cell.hidden{background:linear-gradient(160deg,var(--bg-raised-hi),var(--bg-raised));cursor:pointer;box-shadow:0 3px 0 var(--chip-lip),0 6px 10px var(--chip-cast),inset 0 1px 0 var(--gloss-chip);transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.cell.hidden:hover{filter:brightness(1.12);transform:translateY(-2px);box-shadow:0 5px 0 var(--chip-lip),0 10px 16px var(--chip-cast-hi),inset 0 1px 0 var(--gloss-chip-hi)}.cell.hidden:active{transform:translateY(1px);box-shadow:0 1px 0 var(--chip-lip),0 2px 4px var(--chip-cast-hi),inset 0 1px 0 var(--gloss-chip-lo);filter:brightness(.96)}.cell.p0{--pc: var(--p0)}.cell.p1{--pc: var(--p1)}.cell.p2{--pc: var(--p2)}.cell.p3{--pc: var(--p3)}.cell.p4{--pc: var(--p4)}.cell.p5{--pc: var(--p5)}.cell.hit{background:var(--pc, var(--bg-sunken));cursor:default;box-shadow:inset 0 2px 6px var(--cell-recess),inset 0 -1px 0 var(--gloss-shape);color:var(--on-shape);animation:cell-open .32s var(--ease-pop) both}@keyframes cell-open{0%{transform:scale(.55) rotateY(85deg);opacity:0;filter:brightness(2.2)}60%{transform:scale(1.08) rotateY(0);opacity:1;filter:brightness(1.1)}to{transform:scale(1) rotateY(0);filter:brightness(1)}}.cell.done{box-shadow:inset 0 2px 6px var(--cell-recess-faint),0 0 3px 0 var(--pc),0 0 7px 1px var(--pc),inset 0 0 0 2px var(--gloss-shape-ring);filter:saturate(1.35)}.cell.done:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background-image:linear-gradient(135deg,transparent 44%,var(--gloss-glint) 50%,transparent 56%);background-size:300% 100%;background-repeat:no-repeat;background-position:-50% 0;opacity:0;animation-name:cell-glint;animation-duration:5s;animation-timing-function:linear;animation-delay:var(--glint-delay, 0s);animation-iteration-count:infinite}@keyframes cell-glint{0%{opacity:0;background-position-x:150%}1%{opacity:1}4%{opacity:1}5%{opacity:0;background-position-x:-50%}to{opacity:0;background-position-x:-50%}}.cell.bust{background:var(--bust-fill);color:var(--bust-fill-ink);box-shadow:0 0 0 2px var(--bust-ring),0 0 14px 4px rgb(var(--magenta-rgb) / .85),0 0 34px 12px rgb(var(--magenta-rgb) / .55);z-index:2}.cell.shown{background:color-mix(in srgb,var(--pc) 22%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--pc) 55%,transparent);color:var(--text-faint);cursor:default}.cell.hint{animation:hint-pulse 1.1s ease-in-out infinite}@keyframes hint-pulse{0%,to{box-shadow:0 0 0 2px var(--neon-cyan),0 0 rgb(var(--cyan-rgb) / .55)}50%{box-shadow:0 0 0 3px var(--neon-cyan),0 0 20px 6px rgb(var(--cyan-rgb) / .6)}}.cell.hint-wrong{animation:hint-pulse-wrong 1.1s ease-in-out infinite}@keyframes hint-pulse-wrong{0%,to{box-shadow:0 0 0 2px var(--neon-magenta),0 0 rgb(var(--magenta-rgb) / .55)}50%{box-shadow:0 0 0 3px var(--neon-magenta),0 0 20px 6px rgb(var(--magenta-rgb) / .6)}}.cell.hint-ctx{box-shadow:inset 0 0 0 2px rgb(var(--cyan-rgb) / .75)}#stage.flash:after{animation:stage-flash .35s ease-out}@keyframes stage-flash{0%{opacity:0}15%{opacity:.85}to{opacity:0}}#stage.flash.lock:after{animation:stage-lock-flash .75s ease-out}@keyframes stage-lock-flash{0%{opacity:0}12%{opacity:1}to{opacity:0}}.lock-size{position:absolute;left:50%;top:26%;z-index:21;pointer-events:none;font-weight:800;font-style:italic;font-size:calc(1.6rem + var(--size, 1) * .75rem);letter-spacing:.04em;color:var(--neon-cyan);text-shadow:0 0 16px rgb(var(--cyan-rgb) / .9),0 0 46px rgb(var(--cyan-rgb) / .5);animation:lock-size 1.1s var(--ease-pop) forwards}@keyframes lock-size{0%{transform:translate(-50%,10%) scale(.5) rotate(-8deg);opacity:0}18%{transform:translate(-50%,-10%) scale(1.25) rotate(-3deg);opacity:1}60%{transform:translate(-50%,-35%) scale(1) rotate(0);opacity:.9}to{transform:translate(-50%,-110%) scale(.9) rotate(2deg);opacity:0}}.spark{position:absolute;left:50%;top:50%;width:calc(var(--cell, 34px) * .11);height:calc(var(--cell, 34px) * .11);border-radius:50%;pointer-events:none;z-index:15;background:var(--neon-gold);box-shadow:0 0 8px rgb(var(--gold-rgb) / .9);animation:spark-fly var(--t, .5s) ease-out forwards}@keyframes spark-fly{0%{transform:translate(-50%,-50%) rotate(var(--a, 0deg)) translate(0) scale(1);opacity:1}to{transform:translate(-50%,-50%) rotate(var(--a, 0deg)) translate(var(--d, 60%)) scale(.2);opacity:0}}#stage.chill{animation:stage-chill 1.2s ease-out}@keyframes stage-chill{0%{filter:none}25%{filter:saturate(.15) brightness(.72)}to{filter:none}}.cell.lock-dud{animation:lock-dud 1.2s ease-out}@keyframes lock-dud{0%{opacity:1}30%{opacity:.25;transform:scale(.94)}to{opacity:1}}#app.shake{animation:app-shake .4s linear}@keyframes app-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;padding-bottom:clamp(.5rem,2vh,1rem);background:var(--scrim-overlay);border-radius:inherit;z-index:10}.overlay[hidden]{display:none}#app:has(#overlay:not([hidden])) #keys{visibility:hidden}#overlay{position:fixed;z-index:150;padding-bottom:max(clamp(.5rem,2vh,1rem),env(safe-area-inset-bottom));background:none}#stage:has(>#overlay:not([hidden])) #frame{transform:scale(var(--overlay-zoom, 1))}#stage:has(>#unrated-ask:not([hidden])) #frame{transform:scale(.5)}.panel{background:var(--bg-panel);border:1px solid var(--edge-line);border-radius:var(--radius-lg);padding:.85rem 1.25rem;text-align:center;max-width:min(94%,420px);box-shadow:0 20px 60px var(--sheet-cast)}.panel h2{margin:0 0 .4rem;font-size:1.25rem;letter-spacing:.03em}.panel p{margin:0 0 .9rem;color:var(--text-dim);font-size:.9rem;line-height:1.45}:root:not([data-touch-ui]) #ov-panel{min-width:34rem;max-width:min(94%,42rem);padding:1.5rem 2rem 1.15rem}#unrated-ask .unrated-choices{display:flex;flex-direction:column;gap:.75rem;align-items:stretch}.stars-row{font-size:2rem;letter-spacing:.15em;color:var(--neon-gold);margin:.2rem 0 .4rem}.stars-row:empty{display:none}.panel .ov-prompt{margin:0 0 .5rem;font-size:.82rem;letter-spacing:.02em}.overlay .choices{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;align-items:center}.overlay .choices[hidden]{display:none}#ov-choices:not([hidden]){display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:100%;gap:.5rem}#ov-choices button{min-width:0;min-height:48px;padding:.55rem .25rem}:root:not([data-touch-ui]) #ov-choices:not([hidden]){width:auto;justify-content:center;grid-auto-columns:minmax(0,9rem)}#ov-keys{margin-top:.85rem}#ov-choices .choice-sub{white-space:nowrap}#ov-choices .btn.quiet{background:var(--bg-raised);border:1px solid var(--edge-line-hi);color:var(--text);padding:.55rem .25rem}#ov-choices .btn.quiet .choice-label{text-decoration:none}#ov-bust-choices:not([hidden]){margin-top:.35rem}#ov-bust-choices .btn.quiet{text-decoration:underline}.btn.quiet{background:none;border:none;color:var(--text-dim);text-decoration:underline;padding:.3rem .5rem}.btn.quiet:hover{color:var(--text)}.overlay .choices button{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;line-height:1.15}.choice-sub{font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:.66rem;font-weight:600;letter-spacing:.03em;text-transform:lowercase;text-decoration:none;opacity:.72}.btn.quiet{text-decoration:none}.btn.quiet .choice-label{text-decoration:underline}.overlay.bust .panel{border-color:rgb(var(--magenta-rgb) / .55);box-shadow:0 0 50px rgb(var(--magenta-rgb) / .35),0 -14px 34px var(--sheet-cast-up)}.overlay.bust .panel h2{color:var(--neon-magenta);text-shadow:0 0 16px rgb(var(--magenta-rgb) / .6)}.overlay.win .panel{border-color:rgb(var(--green-rgb) / .5);box-shadow:0 0 50px rgb(var(--green-rgb) / .3),0 -14px 34px var(--sheet-cast-up)}.overlay.win .panel h2{color:var(--neon-green);text-shadow:0 0 16px rgb(var(--green-rgb) / .55)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--edge-line);border-radius:var(--radius-md);background:var(--bg-raised);color:var(--text);padding:.7rem 1rem;font-size:.95rem;font-weight:600;cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.btn:hover:not(:disabled){filter:brightness(1.15);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(1px);filter:brightness(.95)}.btn:disabled{cursor:not-allowed;transform:none;box-shadow:none;filter:grayscale(.6);opacity:.5}.btn.primary{background:linear-gradient(160deg,var(--accent-fill-from),var(--accent-fill-to));border-color:var(--gloss-fill-edge);color:var(--accent-fill-ink);box-shadow:0 0 18px rgb(var(--cyan-rgb) / .35)}.btn.primary:disabled,.btn.ghost:disabled{background:var(--bg-raised);color:var(--text-faint);border-color:var(--edge-hair);box-shadow:none}.btn.ghost{background:transparent;border-color:var(--edge-line-hi);color:var(--text-dim)}#mobile-toolbar{position:fixed;left:0;right:0;bottom:0;z-index:100;display:none;grid-template-columns:minmax(0,1.15fr) repeat(4,minmax(0,1fr));gap:2px;padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));border-top:1px solid var(--edge-line-hi);background:color-mix(in srgb,var(--bg-sunken) 94%,transparent);box-shadow:0 -8px 24px var(--bar-cast);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#mobile-toolbar button{display:grid;grid-template-rows:auto auto .95em;align-content:center;justify-items:center;row-gap:1px}.mode-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;min-height:48px;padding:4px 2px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);font-size:.64rem;font-weight:700;line-height:1.1;cursor:pointer}.mode-icon{font-size:1.15rem;line-height:1}.hint-icon:before{content:"?"}.empty-icon:before{content:"●"}.shape-icon:before{content:"×"}.lock-icon:before{content:"✓"}.auto-icon:before{content:"A"}.empty-icon{color:var(--text-dim)}.shape-icon{color:var(--neon-gold);font-size:1.25rem}.tool-sub{font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:.58rem;font-weight:700;letter-spacing:.02em;line-height:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lock-badge{color:var(--text-dim);font-variant-numeric:tabular-nums;transition:color .15s ease,text-shadow .15s ease}.lock-badge.ready{color:var(--neon-gold);text-shadow:0 0 10px rgb(var(--gold-rgb) / .55)}.mode-btn[aria-pressed=true]{border-color:rgb(var(--cyan-rgb) / .6);background:rgb(var(--cyan-rgb) / .14);color:var(--neon-cyan);box-shadow:inset 0 0 0 1px rgb(var(--cyan-rgb) / .15),0 0 12px rgb(var(--cyan-rgb) / .15)}.tool-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;min-width:0;min-height:48px;margin-right:6px;padding:3px 2px;border:0;border-radius:var(--radius-sm);background:rgb(var(--gold-rgb) / .06);color:var(--text);font-family:inherit;font-size:.64rem;font-weight:700;line-height:1.15;cursor:pointer}.tool-btn:after{content:"";position:absolute;top:3px;bottom:3px;right:-4px;width:1px;background:var(--edge-line-hi)}.tool-btn:active:not(:disabled){background:rgb(var(--gold-rgb) / .16)}.tool-btn:disabled{cursor:not-allowed;filter:grayscale(.6);opacity:.45}.hint-icon{color:var(--neon-gold);font-size:1.05rem}.control-copy-icon{display:inline-block;min-width:1em;margin-right:.28em;font-size:.95em;text-align:center;vertical-align:-.05em}.hint-budget{font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:.58rem;font-weight:700;letter-spacing:.02em;color:var(--neon-gold)}.tool-btn:disabled .hint-budget,.tool-btn:disabled .hint-icon{color:var(--text-faint)}.mode-btn.danger[aria-pressed=true]{border-color:rgb(var(--magenta-rgb) / .7);background:rgb(var(--magenta-rgb) / .15);color:var(--neon-magenta);box-shadow:inset 0 0 0 1px rgb(var(--magenta-rgb) / .15),0 0 12px rgb(var(--magenta-rgb) / .18)}:root[data-touch-ui] #mobile-toolbar{display:grid}:root[data-touch-ui] .rail-action,:root[data-touch-ui] #stat-hints,:root[data-touch-ui] #progress{display:none}:root[data-touch-ui] #app{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}:root[data-touch-ui] .msg{left:0;right:0;bottom:calc(5.2rem + env(safe-area-inset-bottom));width:fit-content;margin-inline:auto;text-align:center}.hold-indicator{position:absolute;left:50%;top:50%;width:max(160%,72px);aspect-ratio:1;transform:translate(-50%,-50%);z-index:9;border-radius:50%;pointer-events:none;filter:drop-shadow(0 0 6px rgb(var(--magenta-rgb) / .9))}.cell:has(.hold-indicator){z-index:12}.hold-indicator svg{width:100%;height:100%;transform:rotate(-90deg)}.hold-indicator circle{fill:none;stroke:var(--neon-magenta);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;animation:hold-progress var(--hold-ms, .65s) linear forwards}@keyframes hold-progress{to{stroke-dashoffset:0}}.cell.cursor{outline:3px solid var(--cursor-ring);outline-offset:-3px}.cell.tutorial-target.cursor{outline-color:var(--tut-hue)}.cell.hidden.mark-empty:after,.cell.hidden.mark-shape:after{content:"";position:absolute;top:18%;right:18%;bottom:18%;left:18%;pointer-events:none}.cell.hidden.mark-empty:after{top:32%;right:32%;bottom:32%;left:32%;border-radius:50%;background:var(--text-dim);box-shadow:0 0 0 1px var(--dot-ring),0 1px 1px var(--dot-lip),inset 0 2px 3px var(--dot-well),inset 0 -1px 1px var(--dot-floor)}.cell.hidden.mark-shape:after{border-radius:var(--radius-sm);background:linear-gradient(45deg,transparent 36%,var(--neon-gold) 36%,var(--neon-gold) 64%,transparent 64%),linear-gradient(-45deg,transparent 36%,var(--neon-gold) 36%,var(--neon-gold) 64%,transparent 64%);filter:drop-shadow(0 -1px 0 var(--x-bevel)) drop-shadow(0 0 4px rgb(var(--gold-rgb) / .65));opacity:.55}.cell.hidden.mark-shape.mark-active:after{opacity:1}.cell.hidden.mark-shape.mark-active{box-shadow:inset 0 0 0 2px rgb(var(--gold-rgb) / .55)}#keys{margin:auto 0 0;padding:.15rem .25rem 0;color:var(--text-dim);font-size:.75rem;letter-spacing:.01em;text-align:center}.legend{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:.2rem 1.1rem}.legend-group{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .75rem}.legend-label{color:var(--text-faint);font-size:.62rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.legend-item{display:inline-flex;align-items:baseline;gap:.3rem;white-space:nowrap}.legend-item kbd+kbd{margin-left:-.15rem}.legend kbd{min-width:1.5em;text-align:center}.lock-status{font-variant-numeric:tabular-nums;transition:color .15s ease,text-shadow .15s ease}.lock-status.ready{color:var(--neon-gold);font-weight:700;text-shadow:0 0 10px rgb(var(--gold-rgb) / .55)}.menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:block}.menu[hidden]{display:none}.menu-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--scrim-menu)}.menu-sheet{position:absolute;top:calc(3rem + env(safe-area-inset-top));right:.4rem;display:flex;flex-direction:column;gap:.15rem;min-width:12.5rem;max-width:min(20rem,calc(100vw - 1.1rem));padding:.35rem;background:var(--bg-panel);border:1px solid var(--edge-sheet);border-radius:var(--radius-md);box-shadow:0 24px 60px var(--menu-cast);transform-origin:top right;animation:menu-in .14s var(--ease-pop)}@media (pointer: fine) and (min-width: 701px){.menu-sheet{top:calc(env(safe-area-inset-top) + 2.5rem + 46px);right:calc(max(0px,(100vw - var(--page-max)) / 2) + clamp(.75rem,4vw,2rem))}.menu-backdrop{background:transparent}}@keyframes menu-in{0%{opacity:0;transform:scale(.94) translateY(-8px)}}.menu-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:.7rem;min-height:46px;padding:0 .7rem;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:.95rem;font-weight:600;text-align:left;text-decoration:none;cursor:pointer}.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--bg-raised)}.menu-item:disabled{color:var(--text-faint);cursor:not-allowed}.menu-glyph{width:1.1rem;text-align:center;font-size:1rem;color:var(--neon-cyan)}.menu-item:disabled .menu-glyph{color:var(--text-faint)}.menu-detail{margin-left:auto;color:var(--text-dim);font-size:.78rem;font-weight:500;font-variant-numeric:tabular-nums}.menu-item:disabled .menu-detail{color:var(--text-faint)}#rules-popup,#about-popup,#boards-popup,#level-popup,#rank-popup{position:fixed;align-items:center;padding:1rem;padding-bottom:max(1rem,env(safe-area-inset-bottom));background:var(--scrim-rules);z-index:200}.rules-panel{position:relative;display:flex;flex-direction:column;gap:.7rem;max-width:min(100%,34rem);max-height:min(84vh,46rem);padding:.9rem 1rem;text-align:left}.rules-panel h2{margin:0}.rules-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:.35rem;padding-bottom:2rem}.rules-body h3{margin:1rem 0 .3rem;font-size:.66rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--neon-cyan-dim)}.rules-body h3:first-child{margin-top:0}.rules-body p{margin:0;color:var(--text-dim);font-size:.86rem;line-height:1.5}.rule-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.7rem;margin-bottom:1rem}.rule-tile{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:0;padding:.7rem .6rem;border-radius:var(--radius-md);background:rgb(var(--ink-rgb) / .16);box-shadow:inset 0 0 0 1px rgb(var(--ink-rgb) / .22)}.rule-frame{--cell: 20px;--label: 12px;display:grid;grid-template-columns:var(--label) auto;grid-template-rows:var(--label) auto;gap:2px}.rule-cols{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(var(--cols),var(--cell));gap:2px}.rule-rows{grid-column:1;grid-row:2;display:grid;grid-auto-rows:var(--cell);gap:2px}.rule-frame .axis{font-size:.6rem;letter-spacing:.04em}.rule-grid{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--cols),var(--cell));grid-auto-rows:var(--cell);gap:2px}.rule-grid .cell.rule-claim{z-index:1;outline:2px solid var(--neon-cyan);outline-offset:1px;filter:drop-shadow(0 0 5px rgb(var(--cyan-rgb) / .65))}.rule-caption{margin:0;color:var(--text-dim);font-size:.78rem;line-height:1.4;text-align:center;text-wrap:balance}.rule-more>summary{cursor:pointer;padding:.35rem 0;font-size:.7rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--neon-cyan-dim)}.rule-more>summary:focus-visible{outline:2px solid var(--neon-cyan);outline-offset:2px}.rule-more[open]>summary{margin-bottom:.5rem}.rules-panel>.btn{align-self:stretch;flex:none}.about-panel{width:min(100%,24rem);gap:.9rem}.about-product{display:grid;gap:.28rem;padding:.8rem 0;border-block:1px solid var(--edge-hair)}.about-product strong{color:var(--neon-cyan);font-size:1rem;letter-spacing:.2em;text-transform:uppercase;text-shadow:0 0 14px rgb(var(--cyan-rgb) / .35)}.about-product span{color:var(--text-dim);font-size:.82rem}.about-product a{color:var(--text)}.about-links{display:grid;gap:.35rem}.about-links a{display:flex;min-height:44px;align-items:center;justify-content:space-between;padding:0 .75rem;border:1px solid var(--edge-line-hi);border-radius:var(--radius-md);color:var(--text);font-size:.88rem;font-weight:600;text-decoration:none}.about-links a:after{content:"↗";color:var(--neon-cyan-dim)}.about-links a:hover,.about-links a:focus-visible{background:var(--bg-raised)}.rules-scroll{position:relative;display:flex;min-height:0}.rules-scroll:after{content:"";position:absolute;inset:auto 0 0;height:2rem;pointer-events:none;background:linear-gradient(to top,var(--bg-panel),transparent)}.tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.25rem;flex:none;padding:.25rem;border:1px solid var(--edge-line);border-radius:var(--radius-md);background:var(--bg-sunken)}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:calc(var(--radius-md) - .25rem);background:none;color:var(--text-dim);padding:.42rem .5rem;font:inherit;font-size:.82rem;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:background .12s ease,color .12s ease}.tab[aria-selected=true]{background:var(--bg-raised-hi);border-color:var(--edge-line-hi);color:var(--text)}.tab:focus-visible{outline:3px solid var(--neon-gold);outline-offset:2px}.rank-bar{--from: 0;--to: 0;display:grid;gap:.25rem;margin:0 auto .6rem;max-width:15rem;width:100%}.rank-bar:empty{display:none}.rank-line{display:flex;align-items:baseline;justify-content:space-between;gap:.4rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.rank-name{font-weight:700;color:var(--text)}.rank-gain{margin-right:auto;font-weight:700;color:var(--neon-gold)}.rank-count{font-variant-numeric:tabular-nums;font-family:ui-monospace,SF Mono,Cascadia Code,Consolas,monospace;font-size:.66rem;letter-spacing:.03em}.rank-track{position:relative;height:4px;border-radius:999px;background:var(--bg-sunken);border:1px solid var(--edge-line);overflow:hidden}.rank-fill{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left center;transform:scaleX(var(--to));background:linear-gradient(90deg,rgb(var(--gold-rgb) / .55),var(--neon-gold));animation:rank-fill .7s cubic-bezier(.16,.9,.3,1) both}@keyframes rank-fill{0%{transform:scaleX(var(--from))}to{transform:scaleX(var(--to))}}.rank-up .rank-name{animation:rank-up .9s ease-out both}@keyframes rank-up{0%{color:var(--text);text-shadow:none}25%{color:var(--neon-gold);text-shadow:0 0 14px rgb(var(--gold-rgb) / .75)}to{color:var(--text);text-shadow:none}}@media (prefers-reduced-motion: reduce){.rank-fill{animation:none}.rank-up .rank-name{animation:none;color:var(--neon-gold)}}.level-panel{gap:.6rem}.level-stats{margin:0;flex:none;color:var(--text-dim);font-size:.74rem;line-height:1.45}.level-rungs{display:grid;gap:.35rem;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:.2rem}.level-rungs button{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;gap:.6rem;padding:.5rem .8rem;font-size:.85rem;line-height:1.15;text-align:left}.level-rungs .btn.quiet{background:var(--bg-raised);border:1px solid var(--edge-line-hi);color:var(--text);padding:.5rem .8rem}.level-rungs .btn.quiet .choice-label{text-decoration:none}.rank-panel{gap:.6rem}.rank-panel .rank-bar{max-width:17rem;margin-bottom:0}.boards-panel{max-height:min(88vh,50rem);gap:.55rem}.boards-actions{display:grid;gap:.4rem;flex:none}.boards-actions .btn{padding:.6rem .85rem;font-size:.88rem}.code-entry{display:grid;gap:.35rem;flex:none}.code-row{display:flex;gap:.4rem}.code-input{flex:1;min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--edge-line-hi);border-radius:var(--radius-md);background:var(--bg-sunken);color:var(--text);padding:.6rem .7rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;letter-spacing:.06em;text-transform:uppercase}.code-input::placeholder{color:var(--text-faint);text-transform:none;letter-spacing:.04em}.code-input:focus-visible{outline:3px solid var(--neon-gold);outline-offset:2px}.code-row .btn{flex:none;padding:.6rem .9rem;font-size:.88rem}.boards-msg{margin:0;flex:none;color:var(--text-dim);font-size:.78rem;line-height:1.4}.boards-msg[data-bad]{color:var(--neon-magenta)}.boards-msg code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.86rem;letter-spacing:.06em;color:var(--neon-gold);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.ov-keep-row{margin-top:.75rem}.ov-keep-row button{flex:none;width:min(100%,13rem);min-height:44px;font-size:.85rem}.ov-keep-row .keep-action{background:var(--bg-raised);border:1px solid var(--edge-line-hi);color:var(--text);padding:.7rem 1rem;text-decoration:none}.ov-keep-row .keep-action.primary{background:var(--bg-raised-hi);border-color:var(--neon-cyan);color:var(--text);box-shadow:0 0 14px rgb(var(--cyan-rgb) / .2)}.kept-list{flex:1;min-height:0;display:flex;flex-direction:column;gap:.3rem;overflow-y:auto;overscroll-behavior:contain;padding-right:.2rem;padding-bottom:2rem}.kept-empty{margin:.6rem 0 0;color:var(--text-faint);font-size:.82rem;line-height:1.5}.kept-row{display:flex;align-items:stretch;gap:.25rem;border:1px solid var(--edge-line);border-radius:var(--radius-md);background:var(--bg-raised)}.kept-resume{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:inherit;background:none;color:var(--text);padding:.5rem .15rem .5rem .6rem;font:inherit;text-align:left;cursor:pointer}.kept-line{font-size:.85rem;font-weight:600;letter-spacing:.01em}.kept-when{color:var(--text-faint);font-size:.72rem;letter-spacing:.04em}.kept-act{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-left:1px solid var(--edge-hair);background:none;color:var(--text-dim);padding:0 .55rem;font-size:1rem;line-height:1;cursor:pointer}.kept-act:last-child{border-radius:0 var(--radius-md) var(--radius-md) 0}.kept-resume:hover,.kept-act:hover{background:var(--bg-raised-hi);color:var(--text)}.kept-resume:focus-visible,.kept-act:focus-visible{outline:3px solid var(--neon-gold);outline-offset:-2px}.kept-row[data-arm]{border-color:var(--neon-magenta)}.kept-row[data-arm] .kept-act[data-act=delete]{color:var(--neon-magenta);font-weight:700}.kept-row[data-arm] .kept-line{color:var(--neon-magenta)}.cell:focus-visible,.bank-item:focus-visible,.btn:focus-visible,.menu-toggle:focus-visible,.menu-item:focus-visible,.about-product a:focus-visible,.about-links a:focus-visible,.mode-btn:focus-visible,.tool-btn:focus-visible,.hint-proof-toggle:focus-visible,.hint-close:focus-visible{outline:3px solid var(--neon-gold);outline-offset:2px}@media (min-width: 701px) and (max-width: 1060px){:root{--rail: 232px}}@media (min-width: 701px) and (max-width: 1060px),(min-width: 701px) and (max-height: 780px){.bank-grid{--box: 40px;--bit: 7px;--bit-gap: 1px;gap:.35rem}.bank-letter{font-size:.66rem}}@media (pointer: fine) and (min-width: 701px) and (max-height: 780px){#app{height:100dvh}#side{min-height:0;overflow-y:auto;scrollbar-width:thin;overscroll-behavior:contain}#shape-bank h2,#hint-why h2{margin-bottom:.4rem}}@media (prefers-reduced-motion: reduce){.hint-proof-toggle:after{transition:none}.board-loader-scan{animation:none;width:100%;opacity:.55}#app.shake{animation:none}#stage.flash:after{animation:none}#stage.flash.lock:after{animation:none}.cell.hit{animation:none}.cell.hint{animation:none;box-shadow:0 0 0 3px var(--neon-cyan)}.cell.hint-wrong{animation:none;box-shadow:0 0 0 3px var(--neon-magenta)}.cell.tutorial-target.tutorial-act{animation:none;box-shadow:0 0 0 2px var(--ring-gap),0 0 18px var(--tut-glow)}.tutorial-actions .btn.tutorial-act{animation:none;box-shadow:0 0 18px 4px rgb(var(--cyan-rgb) / .45)}.lock-size{animation:none;opacity:1;transform:translate(-50%,-50%) rotate(0)}.spark,.cell.done:after{display:none}#stage.chill,.cell.lock-dud{animation:none}#frame,.axis{transition:none}.menu-sheet{animation:none}.msg{transition:none;transform:translateY(0)}}@media (pointer: coarse),(max-width: 700px){#mobile-toolbar{display:grid}.tab{min-height:44px;padding:.42rem .9rem}.kept-act{min-width:44px}#keys,.menu-word{display:none}.menu-toggle{padding:0}.rail-action,#stat-hints{display:none}#app{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}.msg{bottom:calc(5.2rem + env(safe-area-inset-bottom))}#overlay{padding-bottom:0}#overlay .panel{position:relative;width:100%;max-width:none;border-width:1px 0 0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding-bottom:max(.9rem,env(safe-area-inset-bottom))}#overlay:has(#ov-choices:not([hidden])) .panel{display:flex;flex-direction:column;min-height:clamp(16rem,34vh,18.5rem);padding:1rem 1rem 0}#overlay:has(#ov-choices:not([hidden])) .ov-keep-row{margin-top:auto;padding:1.5rem 0 max(1.5rem,calc(env(safe-area-inset-bottom) + .75rem))}#overlay:has(#ov-bust-choices:not([hidden])) .panel{display:flex;flex-direction:column;min-height:clamp(12rem,26vh,15rem);padding:1rem 1rem 0}#overlay:has(#ov-bust-choices:not([hidden])) #ov-bust-choices{margin-top:auto;padding:1.25rem 0 max(1.5rem,calc(env(safe-area-inset-bottom) + .75rem))}#overlay .panel:before{content:"";position:absolute;left:0;right:0;bottom:100%;height:2.4rem;pointer-events:none;background:linear-gradient(to top,var(--sheet-fade),transparent)}}:root[data-touch-ui] #overlay{padding-bottom:0}:root[data-touch-ui] #overlay .panel{position:relative;width:100%;max-width:none;border-width:1px 0 0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding-bottom:max(.9rem,env(safe-area-inset-bottom))}:root[data-touch-ui] #overlay:has(#ov-choices:not([hidden])) .panel{display:flex;flex-direction:column;min-height:clamp(16rem,34vh,18.5rem);padding:1rem 1rem 0}:root[data-touch-ui] #overlay:has(#ov-choices:not([hidden])) .ov-keep-row{margin-top:auto;padding:1.5rem 0 max(1.5rem,calc(env(safe-area-inset-bottom) + .75rem))}:root[data-touch-ui] #overlay:has(#ov-bust-choices:not([hidden])) .panel{display:flex;flex-direction:column;min-height:clamp(12rem,26vh,15rem);padding:1rem 1rem 0}:root[data-touch-ui] #overlay:has(#ov-bust-choices:not([hidden])) #ov-bust-choices{margin-top:auto;padding:1.25rem 0 max(1.5rem,calc(env(safe-area-inset-bottom) + .75rem))}:root[data-touch-ui] #overlay .panel:before{content:"";position:absolute;left:0;right:0;bottom:100%;height:2.4rem;pointer-events:none;background:linear-gradient(to top,var(--sheet-fade),transparent)}@media (max-width: 700px),(max-height: 500px) and (pointer: coarse),(pointer: coarse) and (orientation: portrait){.tutorial-panel{grid-template-columns:minmax(0,1fr);gap:.35rem;padding:.7rem .8rem}.tutorial-head,.tutorial-panel h2,#tutorial-body,.tutorial-how,.tutorial-feedback{grid-column:1}.tutorial-actions{grid-column:1;grid-row:auto;flex-direction:row;min-width:0;margin-top:.15rem}.tutorial-actions .btn{flex:1}.tutorial-actions #tutorial-next{flex:2}.tutorial-actions{flex-wrap:wrap}.tutorial-actions #tutorial-more{flex:1 1 100%}#app{min-height:0;gap:.4rem;padding:.25rem;padding-top:max(.25rem,calc(env(safe-area-inset-top) + .2rem))}.wordmark{display:none}header{flex-wrap:nowrap;justify-content:space-between;gap:.4rem;padding:.25rem .4rem .25rem .35rem;border-radius:var(--radius-md)}.menu-toggle{margin-block:-.35rem}.stats{flex:1;min-width:0;align-items:baseline;flex-wrap:nowrap;justify-content:space-between;gap:.4rem}.stat{min-width:0;gap:.25rem}.stat .k{font-size:.56rem}.stat-band{margin-left:.3rem;font-size:.56rem}.stat b{font-size:.92rem}main{flex:0 0 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;gap:.6rem;align-items:start}#stage{min-height:0;padding:.25rem;border-radius:var(--radius-md);overflow-x:hidden}#frame{--label: 14px;gap:2px}#col-labels,#row-labels,#board{gap:3px}.axis{font-size:.66rem;letter-spacing:.04em}.cell{border-radius:4px;touch-action:manipulation;-webkit-touch-callout:none}#side{width:100%;gap:.35rem}.msg{font-size:.82rem}#shape-bank,#hint-why{border-radius:var(--radius-md)}.hint-close{margin:-.55rem -.8rem 0 0;padding:.55rem .8rem}#hint-why .hint-head{margin-bottom:0}#shape-bank{padding:.5rem .55rem}#shape-bank h2{margin-bottom:.4rem;font-size:.62rem}.bank-grid{--box: 32px;--bit: 6px;--bit-gap: 1px;grid-template-columns:repeat(6,1fr);gap:.3rem}.bank-item{gap:.1rem;padding:.25rem .1rem}.bank-letter{font-size:.72rem}}@media (max-width: 700px) and (max-height: 800px),(max-height: 500px) and (pointer: coarse){#shape-bank h2{display:none}#shape-bank{padding:.35rem .4rem}.bank-item{padding:.15rem .1rem}}@media (max-width: 700px) and (pointer: coarse),(max-height: 500px) and (pointer: coarse),(pointer: coarse) and (orientation: portrait){#app{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}}@media (hover: none),(pointer: coarse){.cell.hidden:hover{filter:none;transform:none;box-shadow:0 3px 0 var(--chip-lip),0 6px 10px var(--chip-cast),inset 0 1px 0 var(--gloss-chip)}}.panel .stars-row{--star-size: clamp(3.2rem, 21vw, 5rem);display:flex;justify-content:center;align-items:center;padding:calc(var(--star-size) * .3) calc(var(--star-size) * .22);margin:0;position:relative;isolation:isolate;--star-beat: .18s;--star-gap: .17s;--star-lit-in: 60ms}.star{position:relative;z-index:1;font-size:var(--star-size);width:1em;height:1em;flex:0 0 auto;margin:0 .06em;--star-delay: calc(var(--star-beat) + var(--i, 0) * var(--star-gap));--star-burst-delay: calc(var(--star-delay) + var(--star-lit-in))}.star-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;overflow:visible}.star-art-dark{filter:drop-shadow(0 .03em .035em var(--socket-cast))}.star-socket{animation:star-socket-settle .2s ease-out both}@keyframes star-socket-settle{0%{opacity:.45}to{opacity:1}}.star-lit{--star-pop: 1.42;--star-bloom: 1;--star-ring: 1.5;animation:star-ignite .62s ease-out both;animation-delay:var(--star-delay)}.star-final{--star-pop: 1.66;--star-bloom: 1.4;--star-ring: 1.6;animation-duration:.72s}@keyframes star-ignite{0%{opacity:.42;transform:scale(.8)}8%{opacity:1;transform:scale(.98)}24%{transform:scale(var(--star-pop))}52%{transform:scale(.94)}74%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.star-lit .star-art-gold{opacity:1;filter:drop-shadow(0 0 .14em rgb(var(--gold-rgb) / .5)) drop-shadow(0 0 .34em rgb(var(--gold-rgb) / .24));animation:star-fill var(--star-lit-in) linear both,star-glow .62s ease-out both;animation-delay:var(--star-delay)}.star-final .star-art-gold{animation-duration:var(--star-lit-in),.72s}.star-lit .star-art-gold .star-shine{animation:star-shine 4.6s linear infinite;animation-delay:calc(var(--star-burst-delay) + .42s)}@keyframes star-shine{0%{transform:translate(-30px)}13%{transform:translate(145px)}to{transform:translate(145px)}}@keyframes star-fill{0%{opacity:0}to{opacity:1}}@keyframes star-glow{0%{filter:drop-shadow(0 0 0 rgb(var(--gold-rgb) / 0)) drop-shadow(0 0 0 rgb(var(--gold-rgb) / 0))}8%{filter:drop-shadow(0 0 calc(.16em * var(--star-bloom)) rgb(var(--gold-rgb) / .85)) drop-shadow(0 0 calc(.42em * var(--star-bloom)) rgb(var(--gold-rgb) / .45))}24%{filter:drop-shadow(0 0 calc(.24em * var(--star-bloom)) rgb(var(--gold-rgb) / .95)) drop-shadow(0 0 calc(.62em * var(--star-bloom)) rgb(var(--gold-rgb) / .6))}52%{filter:drop-shadow(0 0 .2em rgb(var(--gold-rgb) / .72)) drop-shadow(0 0 .5em rgb(var(--gold-rgb) / .38))}to{filter:drop-shadow(0 0 .14em rgb(var(--gold-rgb) / .5)) drop-shadow(0 0 .34em rgb(var(--gold-rgb) / .24))}}.star-lit:before,.star-lit:after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;pointer-events:none;z-index:-1;animation-delay:var(--star-burst-delay);animation-fill-mode:both;animation-timing-function:ease-out}.star-lit:before{width:1.3em;height:1.3em;background:radial-gradient(closest-side,rgb(var(--gold-rgb) / 0) 44%,rgb(var(--gold-rgb) / 1) 70%,rgb(var(--gold-rgb) / .22) 88%,rgb(var(--gold-rgb) / 0));filter:blur(.035em);animation-name:star-ring;animation-duration:.44s}@keyframes star-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.5);filter:blur(.02em)}10%{opacity:1}34%{opacity:.4}54%{opacity:0}to{opacity:0;transform:translate(-50%,-50%) scale(var(--star-ring));filter:blur(.18em)}}.star-lit:after{width:1.7em;height:1.7em;background:repeating-conic-gradient(from -9deg,rgb(var(--gold-rgb) / .68),rgb(var(--gold-rgb) / .68) 10deg,rgb(var(--gold-rgb) / 0) 10deg,rgb(var(--gold-rgb) / 0) 45deg);-webkit-mask:radial-gradient(closest-side,#000 8%,rgba(0,0,0,.5) 44%,rgba(0,0,0,0) 92%);mask:radial-gradient(closest-side,#000 8%,rgba(0,0,0,.5) 44%,rgba(0,0,0,0) 92%);filter:blur(.07em);animation-name:star-sparks;animation-duration:.42s}@keyframes star-sparks{0%{opacity:0;transform:translate(-50%,-50%) scale(.45) rotate(0);filter:blur(.03em)}14%{opacity:1}48%{opacity:.2}72%{opacity:0}to{opacity:0;transform:translate(-50%,-50%) scale(1.05) rotate(14deg);filter:blur(.16em)}}.stars-halo{position:absolute;left:50%;top:50%;z-index:0;width:4.2em;height:1.9em;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,rgb(var(--gold-rgb) / .4),rgb(var(--gold-rgb) / .15) 50%,rgb(var(--gold-rgb) / 0) 78%);animation:stars-halo .86s ease-out both;animation-delay:calc(var(--star-beat) + 2 * var(--star-gap) + var(--star-lit-in))}@keyframes stars-halo{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}26%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}@media (prefers-reduced-motion: reduce){.star-lit,.star-lit .star-art-gold,.star-socket{animation:none}.star-lit:before,.star-lit:after,.stars-halo,.star-lit .star-art-gold .star-shine{display:none}}:root[data-theme=light] #stage:after{mix-blend-mode:multiply}:root[data-theme=light] .cell.hidden:hover{filter:none;background:linear-gradient(160deg,var(--bg-raised-hi),var(--bg-sunken))}:root[data-theme=light] .btn:hover:not(:disabled):not(.primary){filter:brightness(.97)}:root[data-theme=light] .cell.hidden{box-shadow:0 3px 0 var(--chip-lip),0 6px 10px var(--chip-cast),inset 0 0 0 1px var(--edge-hair)}:root[data-theme=light] .cell.hidden:hover{box-shadow:0 5px 0 var(--chip-lip),0 10px 16px var(--chip-cast-hi),inset 0 0 0 1px var(--edge-line)}:root[data-theme=light] .cell.hidden:active{box-shadow:0 1px 0 var(--chip-lip),0 2px 4px var(--chip-cast-hi),inset 0 0 0 1px var(--edge-line)}@media (hover: none),(pointer: coarse){:root[data-theme=light] .cell.hidden:hover{box-shadow:0 3px 0 var(--chip-lip),0 6px 10px var(--chip-cast),inset 0 0 0 1px var(--edge-hair)}}:root[data-theme=light] .mode-btn[aria-pressed=true]{border-color:var(--neon-cyan);background:rgb(var(--cyan-rgb) / .07);box-shadow:inset 0 0 0 2px rgb(var(--cyan-rgb) / .16)}:root[data-theme=light] .mode-btn.danger[aria-pressed=true]{border-color:var(--neon-magenta);background:rgb(var(--magenta-rgb) / .07);box-shadow:inset 0 0 0 2px rgb(var(--magenta-rgb) / .16)}:root[data-theme=light] .tool-btn{background:rgb(var(--gold-rgb) / .1)}:root[data-theme=light] .tool-btn:active:not(:disabled){background:rgb(var(--gold-rgb) / .2)}:root[data-theme=light] #hint-why{border-color:rgb(var(--cyan-rgb) / .55)}:root[data-theme=light] .cell.bust{box-shadow:0 0 0 2px var(--bust-ring),0 0 10px 2px rgb(var(--magenta-rgb) / .45)}:root[data-theme=light] .overlay.bust .panel{box-shadow:0 0 0 1px rgb(var(--magenta-rgb) / .5),0 -14px 34px var(--sheet-cast-up)}:root[data-theme=light] .overlay.win .panel{box-shadow:0 0 0 1px rgb(var(--green-rgb) / .5),0 -14px 34px var(--sheet-cast-up)}:root[data-theme=light] .overlay.bust .panel h2,:root[data-theme=light] .overlay.win .panel h2{text-shadow:none}:root[data-theme=light] .bank-item.used .bank-letter{color:color-mix(in srgb,var(--pc) 40%,var(--text));text-decoration-color:color-mix(in srgb,var(--pc) 40%,var(--text))}:root[data-theme=light] .bank-item.used .bank-shape .bit{background:color-mix(in srgb,var(--pc) 55%,var(--text));opacity:.55}
