:root{--page: #0b0918;--scene: radial-gradient(130% 100% at 50% 34%, #2b2a6e 0%, #1d1a4e 45%, #120f2a 100%);--cyan: #4de3ff;--cyan-bright: #8ff0ff;--cyan-pale: #b9f6ff;--coral: #ff5c6c;--coral-light: #ff9aa4;--coral-dark: #c23847;--slab: #2a2d36;--slab-hi: #3a3e4a;--slab-lo: #15171d;--cell: #232630;--cell-hi: #2e3140;--cell-lo: #1a1c22;--block: #464b57;--block-top-hi: #737a8c;--block-top: #5c6272;--ring-glass-top: #ffffff;--ring-glass-mid: #e8ecf5;--ring-glass-bot: #9aa3b5;--ring-inner: rgba(26, 29, 38, .82);--coin-a: #effdff;--coin-b: #dffbff;--coin-c: #c6f4ff;--ink-on-coin: #0b0d14;--cta-a: #ffd98a;--cta-b: #ffb13b;--cta-c: #ff7a1a;--cta-border: #7a2e00;--cta-shadow: #5c1f00;--glass: rgba(255, 255, 255, .1);--glass-2: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .25);--glass-border-2: rgba(255, 255, 255, .14);--panel: rgba(20, 18, 48, .97);--panel-2: rgba(20, 18, 48, .9);--callout: rgba(16, 26, 40, .9);--text: #ffffff;--text-70: rgba(255, 255, 255, .75);--text-55: rgba(255, 255, 255, .55);--text-45: rgba(255, 255, 255, .45);--shadow-text: 0 2px 0 rgba(0, 0, 0, .4);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--font-stack: "Nunito", "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;color-scheme:dark}@font-face{font-family:Nunito;font-style:normal;font-weight:800 900;font-display:swap;src:url(./nunito-latin-CjueodBP.woff2) format("woff2")}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--page);color:var(--text);font-family:var(--font-stack);font-weight:800;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input{font:inherit}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.app{min-height:100dvh;display:flex;flex-direction:column;background:var(--scene);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:relative;overflow:hidden}.bokeh{position:absolute;border-radius:50%;background:#ffffff12;pointer-events:none}.bokeh.b1{left:-24px;top:56px;width:96px;height:96px;filter:blur(11px)}.bokeh.b2{right:-8px;top:96px;width:52px;height:52px;filter:blur(8px)}.bokeh.b3{left:24px;bottom:24px;width:72px;height:72px;filter:blur(10px);background:#ffffff0f}.bokeh.b4{right:16px;bottom:52px;width:44px;height:44px;filter:blur(6px);background:#ffffff14}.screen{width:100%;max-width:960px;margin:0 auto;padding:0 16px 24px;flex:1;display:flex;flex-direction:column;position:relative}.topbar{height:56px;display:flex;align-items:center;gap:10px}.wordmark{font-size:28px;font-weight:900;line-height:1;color:var(--text);text-shadow:var(--shadow-text),0 0 22px rgba(77,227,255,.3)}.wordmark em{font-style:normal;color:var(--cyan)}.topbar-number{color:#fff9;font-size:17px;font-variant-numeric:tabular-nums}.topbar-spacer{flex:1}.timer{padding:6px 14px;border-radius:999px;background:#ffffff17;border:1px solid rgba(255,255,255,.18);font-variant-numeric:tabular-nums;font-size:15px;box-shadow:0 4px 10px #0000004d}.warmup-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:#4de3ff24;border:1px solid rgba(77,227,255,.4);color:var(--cyan-pale);font-size:13px}.warmup-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 5px var(--cyan)}.menu-wrap{position:relative}.menu-button{position:relative;width:36px;height:36px;min-width:36px;border-radius:50%;background:#ffffff17;border:1px solid rgba(255,255,255,.18);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;box-shadow:0 4px 10px #0000004d}.menu-button:before{content:"";position:absolute;inset:-5px}.menu-button i{width:14px;height:2px;border-radius:1px;background:#ffffffd9}.menu-pop{position:absolute;right:0;top:44px;background:var(--panel);border:1px solid var(--glass-border-2);border-radius:16px;padding:6px;z-index:40;min-width:12em;box-shadow:0 16px 40px #0000008c,inset 0 2px #ffffff1a}.menu-pop a{display:block;width:100%;text-align:left;padding:12px 14px;border-radius:10px;font-size:16px;color:var(--text);text-decoration:none}.menu-pop a:hover{background:#ffffff14}.play{display:flex;flex-direction:column;align-items:center;flex:1;position:relative}.progress-chip{margin-top:8px;min-height:28px;display:inline-flex;align-items:center;gap:8px;padding:5px 14px;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.16);color:#ffffffd9;font-size:13px;font-variant-numeric:tabular-nums}.badge-chip{display:inline-flex;align-items:center;gap:6px;color:var(--cyan-pale)}.badge-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 5px var(--cyan)}.tutorial-prompt{min-height:44px;margin:0 0 6px;max-width:400px;text-align:center;font-size:15px;color:var(--text-70);line-height:1.45}.toast{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:14px;background:#101a28d9;border:1px solid rgba(77,227,255,.35);box-shadow:0 8px 20px #00000073;color:var(--text);font-size:15px}.toast:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px var(--cyan);flex-shrink:0}.explain-callout{position:relative;z-index:5;max-width:400px;margin:0 0 10px;padding:14px 18px;border-radius:16px;background:#101a28eb;border:1px solid rgba(77,227,255,.4);box-shadow:0 12px 28px #00000080;font-size:15px;line-height:1.45;text-align:center}.board-well{background:var(--slab);border-radius:16px;padding:12px;box-shadow:inset 0 2px 0 var(--slab-hi),inset 0 -2px 0 var(--slab-lo),0 22px 34px #0000008c;position:relative;touch-action:none;user-select:none;-webkit-user-select:none}.board-well.settle{animation:ry-settle .8s var(--ease-out)}@keyframes ry-settle{0%{transform:scale(1)}70%{transform:scale(.985)}to{transform:scale(1)}}.board{display:grid;gap:3px;position:relative}.cell{position:relative;width:var(--cell-px);height:var(--cell-px);border-radius:calc(var(--cell-px) * .1);background:var(--cell);box-shadow:inset 1px 1px 0 var(--cell-hi),inset -1px -1px 0 var(--cell-lo);padding:0;color:var(--text);transition:opacity .2s var(--ease-out)}.cell.explain-dim{opacity:.4}.cell.pillar{background:var(--cell);overflow:visible}.block-body{position:absolute;inset:2% 4% 6%;border-radius:calc(var(--cell-px) * .12);background:var(--block);box-shadow:0 6px 8px #0000008c}.block-top{position:absolute;left:0;right:0;top:0;height:64%;border-radius:calc(var(--cell-px) * .12) calc(var(--cell-px) * .12) calc(var(--cell-px) * .1) calc(var(--cell-px) * .1);background:linear-gradient(180deg,var(--block-top-hi) 0%,var(--block-top) 10%,var(--block-top) 100%)}.cell.shake{animation:ry-shake .24s var(--ease-out)}@keyframes ry-shake{20%,60%{transform:translate(-3px)}40%,80%{transform:translate(3px)}}.cell.suggest:after{content:"";position:absolute;inset:1px;border-radius:inherit;box-shadow:0 0 0 2px #b9f6ffe6,0 0 14px #4de3ff99;background:#4de3ff1f;animation:ry-pulse 1.4s ease-in-out infinite;pointer-events:none}@keyframes ry-pulse{0%,to{opacity:.35}50%{opacity:.95}}.light-layer{position:absolute;inset:1px;border-radius:calc(var(--cell-px) * .08);pointer-events:none;background:radial-gradient(circle closest-side,#4de3ff59,#4de3ff1f 60%,#4de3ff00 78%),linear-gradient(#4de3ff42,#4de3ff42);transition:opacity .2s var(--ease-out)}.light-layer.overlap{background:radial-gradient(circle closest-side,#8ff0ff80,#8ff0ff2e 60%,#4de3ff00 80%),linear-gradient(#4de3ff66,#4de3ff66)}.light-layer.ghost-lit{opacity:.5;background:radial-gradient(circle closest-side,#4de3ff59,#4de3ff1f 60%,#4de3ff00 78%),linear-gradient(#4de3ff38,#4de3ff38)}.light-layer.sweep{animation:ry-ignite .12s var(--ease-out) both;animation-delay:var(--sweep-delay, 0ms)}@keyframes ry-ignite{0%{opacity:0}}.hatch{position:absolute;inset:1px;border-radius:calc(var(--cell-px) * .08);pointer-events:none;background:repeating-linear-gradient(45deg,rgba(185,246,255,.3) 0 2px,transparent 2px 7px)}.place-dot{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff6;box-shadow:inset 0 1px #ffffff80,0 1px 2px #0006;pointer-events:none}.target{position:absolute;left:50%;top:50%;width:84%;height:84%;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none}.target.needs{background:linear-gradient(180deg,var(--ring-glass-top) 0%,var(--ring-glass-mid) 32%,var(--ring-glass-bot) 100%);box-shadow:0 2px 4px #00000073}.target.needs:before{content:"";position:absolute;inset:11%;border-radius:50%;background:var(--ring-inner)}.target.over{background:linear-gradient(180deg,var(--coral-light) 0%,var(--coral) 38%,var(--coral-dark) 100%);box-shadow:0 2px 4px #00000073,0 0 12px #ff5c6c66}.target.over:before{content:"";position:absolute;inset:11%;border-radius:50%;background:var(--ring-inner)}.target.done{background:radial-gradient(circle at 32% 24%,#ffffff 0%,var(--coin-a) 35%,var(--coin-b) 70%,var(--coin-c) 100%);box-shadow:0 0 0 3px var(--cyan),0 0 14px #4de3ffbf,0 2px 4px #00000059;animation:ry-coin .3s var(--ease-spring)}@keyframes ry-coin{0%{transform:translate(-50%,-50%) scale(.7)}60%{transform:translate(-50%,-50%) scale(1.1)}to{transform:translate(-50%,-50%) scale(1)}}.target.zero{background:#1a1d2680;border:2.5px dashed rgba(232,236,245,.6)}.target.zero-lit{background:#2e141a99;border-color:#ff5c6ce6;box-shadow:0 0 12px #ff5c6c66;animation:ry-shake .24s var(--ease-out)}.target-n{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-bottom:18%;font-weight:900;font-size:calc(var(--cell-px) * .38);font-variant-numeric:tabular-nums;color:var(--text);text-shadow:0 2px 3px rgba(0,0,0,.6);transition:transform .2s var(--ease-spring)}.target.done .target-n{color:var(--ink-on-coin);text-shadow:none;padding-bottom:0}.target.zero .target-n,.target.zero-lit .target-n{padding-bottom:0;font-size:calc(var(--cell-px) * .34);color:#e8ecf5d9}.target.zero-lit .target-n{color:var(--coral-light)}.pips{position:absolute;left:0;right:0;bottom:15%;display:flex;justify-content:center;gap:3px}.pip{width:calc(var(--cell-px) * .115);height:calc(var(--cell-px) * .115);max-width:8px;max-height:8px;border-radius:50%;border:1.5px solid rgba(232,236,245,.65);background:#1a1d2699}.pip.filled{background:var(--cyan);border-color:var(--cyan);box-shadow:0 0 4px var(--cyan),0 0 8px #4de3ff99;animation:ry-pip .2s var(--ease-spring)}@keyframes ry-pip{0%{transform:scale(.4)}}.pip.ghost{border-color:#4de3ffe6;background:#4de3ff4d;animation:ry-pulse 1.4s ease-in-out infinite}.pip.over{background:var(--coral);border-color:var(--coral);box-shadow:0 0 5px #ff5c6ce6}.cell.hinted{outline:2px solid var(--cyan-pale);outline-offset:-2px;box-shadow:inset 1px 1px 0 var(--cell-hi),inset -1px -1px 0 var(--cell-lo),0 0 14px #4de3ff80}.beam-layer{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:2}.beam-core{stroke:#fff;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(77,227,255,.65))}.beam-glow{stroke:var(--cyan);stroke-width:12;stroke-linecap:round;opacity:.22}.beam{transition:opacity .2s var(--ease-out)}.beam.preview{opacity:.6}@keyframes ry-beam-sweep{to{stroke-dashoffset:0}}@keyframes ry-beam-retract{to{opacity:var(--beam-rest, 0)}}.pillar-patch{fill:var(--cyan);opacity:.45}.beam-blocked{stroke:var(--coral);stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,92,108,.7));animation:ry-blocked .48s var(--ease-out) 2 both}@keyframes ry-blocked{0%,to{opacity:0}50%{opacity:.9}}.hint-line,.explain-line line{stroke:#4de3ffd9;stroke-width:2;stroke-dasharray:6 6}.explain-line line.closed{opacity:.18}.explain-line line.carrying{stroke:var(--cyan-pale);stroke-width:2.5}.explain-sentinel{fill:none;stroke:#b9f6fff2;stroke-width:2;filter:drop-shadow(0 0 8px rgba(77,227,255,.7))}.explain-backdrop{fill:#0907168c}.token-layer{position:absolute;inset:0;pointer-events:none;z-index:3}.token{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center}.token .halo{position:absolute;width:var(--halo, 46px);height:var(--halo, 46px);border-radius:50%;background:radial-gradient(circle,#4de3ff80,#4de3ff33 52%,#4de3ff00 74%);pointer-events:none}.orb{position:relative;width:62%;height:62%;border-radius:50%;background:radial-gradient(circle at 32% 26%,#6a6e80,#3a3d4a 22%,#1b1d24 58%,#05060a);box-shadow:0 5px 10px #00000080,inset -2px -2px 3px -1px #9aa3b580}.orb .iris{position:absolute;left:50%;top:50%;width:56%;height:56%;transform:translate(-50%,-50%);border-radius:50%;border:2px solid rgba(77,227,255,.95);box-shadow:0 0 7px var(--cyan),inset 0 0 6px #4de3ff99}.orb .pupil{position:absolute;left:50%;top:50%;width:12%;height:12%;transform:translate(-50%,-50%);border-radius:50%;background:#fff;box-shadow:0 0 5px #fff}.orb .sheen{position:absolute;left:20%;top:10%;width:26%;height:15%;border-radius:50%;background:#ffffffbf;filter:blur(1px);transform:rotate(-18deg)}.token.wrong .iris{border-color:#ff5c6cf2;box-shadow:0 0 7px var(--coral),inset 0 0 6px #ff5c6c99;animation:ry-flicker .3s steps(3) 2}@keyframes ry-flicker{33%{opacity:.3}66%{opacity:.9}}.token .given-pin{position:absolute;left:50%;top:12%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#fff;box-shadow:0 0 4px #ffffffe6,0 1px 2px #00000080;z-index:2}.token.posted{animation:ry-drop .18s var(--ease-spring) both}@keyframes ry-drop{0%{transform:translate(-50%,-50%) scale(.6)}55%{transform:translate(-50%,-50%) scale(1.08,.86)}to{transform:translate(-50%,-50%) scale(1)}}.token.ghost{opacity:.75}.token.ghost .orb{opacity:.7}.token.ghost.drag{filter:drop-shadow(0 4px 6px rgba(0,0,0,.4));opacity:.9}.token.ghost.blocked{animation:ry-shake-token .24s var(--ease-out) both}.token.ghost.blocked .iris{border-color:#ff5c6cf2;box-shadow:0 0 7px var(--coral)}@keyframes ry-shake-token{20%,60%{transform:translate(calc(-50% - 3px),-50%)}40%,80%{transform:translate(calc(-50% + 3px),-50%)}to{transform:translate(-50%,-50%);opacity:0}}.token.lifting{animation:ry-lift .12s var(--ease-out) both}@keyframes ry-lift{to{transform:translate(-50%,-50%) scale(.5);opacity:0}}.sel-ring{position:absolute;width:96%;height:96%;border-radius:50%;border:2.5px dashed rgba(185,246,255,.9);box-shadow:0 0 10px #4de3ff99;animation:ry-spin 6s linear infinite}@keyframes ry-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.token.find{animation:ry-find .6s var(--ease-out)}@keyframes ry-find{30%{transform:translate(-50%,-50%) scale(1.18)}}.token.settle{animation:ry-token-settle .3s var(--ease-out) both}@keyframes ry-token-settle{50%{transform:translate(-50%,-50%) scale(1.12)}}.spark{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--cyan-pale);box-shadow:0 0 6px var(--cyan);animation:ry-spark .36s var(--ease-out) both}@keyframes ry-spark{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--sx),var(--sy)) scale(.4);opacity:0}}.badge{position:absolute;top:4%;right:8%;width:30%;height:30%;min-width:14px;min-height:14px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:900;line-height:1;z-index:2}.badge.wrong{background:var(--coral);color:#fff}.badge.correct{background:var(--cyan);color:var(--ink-on-coin);animation:ry-badge-fade .9s var(--ease-out) both}@keyframes ry-badge-fade{0%{transform:scale(.5)}15%{transform:scale(1)}80%{opacity:1}to{opacity:0}}.lift-chip{position:absolute;top:-32px;min-height:32px;left:50%;transform:translate(-50%);pointer-events:auto;padding:4px 14px;border-radius:999px;background:#262a3aeb;border:1px solid rgba(255,255,255,.35);color:var(--text);font-size:13px;font-weight:800;box-shadow:0 4px 10px #00000073;animation:ry-chip-rise .12s var(--ease-out) both;z-index:4}.lift-chip:before{content:"";position:absolute;inset:-8px}@keyframes ry-chip-rise{0%{transform:translate(-50%) translateY(6px);opacity:0}}.tray-block{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:12px}.tray-label{color:#ffffff80;font-size:13px;letter-spacing:.04em}.tray{display:block;padding:11px 22px;border-radius:999px;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 3px 9px #00000073,0 4px 12px #0000004d}.tray-inner{display:flex;align-items:center;gap:14px;animation:ry-tray-pulse .4s var(--ease-out)}@keyframes ry-tray-pulse{40%{transform:scale(1.06)}}.socket{position:relative;width:42px;height:42px;border-radius:50%;background:#00000059;box-shadow:inset 0 3px 6px #00000080}.socket.extra{box-shadow:inset 0 3px 6px #00000080,0 0 0 2px #ff5c6ccc}.socket .orb{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%)}.status-line{min-height:24px;margin-top:12px;font-size:15px;color:#ffffffd9;text-align:center;max-width:400px;line-height:1.35}.actions{display:flex;justify-content:center;gap:10px;margin-top:12px;align-self:stretch;flex-wrap:wrap}.confirm-row{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:13px;color:var(--text-70);flex-wrap:wrap;justify-content:center;max-width:480px}.button{min-height:46px;padding:0 18px;border-radius:15px;background:var(--glass);border:1px solid var(--glass-border);box-shadow:0 4px 10px #0000004d;color:var(--text);font-size:15px;font-weight:800;text-shadow:0 2px 0 rgba(0,0,0,.35);display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.button-primary{min-height:52px;padding:0 22px;border-radius:16px;background:linear-gradient(180deg,var(--cta-a) 0%,var(--cta-b) 18%,var(--cta-c) 100%);border:2px solid var(--cta-border);box-shadow:0 4px 0 var(--cta-shadow),0 10px 18px #00000059,inset 0 2px #ffffff80;color:#fff;font-weight:900;font-size:17px;text-shadow:0 2px 0 rgba(92,31,0,.45);display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.button-primary:active{transform:translateY(2px);box-shadow:0 2px 0 var(--cta-shadow),0 6px 12px #00000059,inset 0 2px #ffffff80}.button:disabled,.button-primary:disabled{opacity:.5;cursor:default}.play .actions .button{flex:1;max-width:140px;color:#ffffff8c;transition:color .2s var(--ease-out),border-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.play .actions .button:disabled{color:#ffffff59;opacity:1}.play .actions .button:not(:disabled):hover,.play .actions .button:not(:disabled):focus-visible,.play .actions .button.lit{color:var(--text)}.play .actions .button.lit{border-color:#ffffff80}.play .actions .button.nudge{border-color:#4de3ffb3;box-shadow:0 0 0 3px #4de3ff38,0 4px 10px #0000004d;animation:ry-hint-nudge .6s var(--ease-out) 2}@keyframes ry-hint-nudge{15%{transform:translate(-3px) rotate(-2deg)}35%{transform:translate(3px) rotate(2deg)}55%{transform:translate(-2px) rotate(-1deg)}75%{transform:translate(2px) rotate(1deg)}}.perfect-banner{position:fixed;left:50%;top:34%;transform:translate(-50%,-50%) rotate(-2deg);padding:14px 40px;border-radius:20px;background:linear-gradient(180deg,var(--cta-a) 0%,var(--cta-b) 22%,var(--cta-c) 100%);border:3px solid var(--cta-border);box-shadow:0 6px 0 var(--cta-shadow),0 20px 40px #00000073,inset 0 3px #ffffff8c;color:#fff;font-size:36px;font-weight:900;letter-spacing:.04em;text-shadow:0 3px 0 rgba(92,31,0,.5);z-index:45;animation:ry-banner .5s var(--ease-spring) both;pointer-events:none}@keyframes ry-banner{0%{transform:translate(-50%,-160%) rotate(-2deg);opacity:0}70%{transform:translate(-50%,-42%) rotate(-2deg)}to{transform:translate(-50%,-50%) rotate(-2deg);opacity:1}}.confetti{position:fixed;border-radius:3px;z-index:44;pointer-events:none;animation:ry-fall 1.4s ease-in both}@keyframes ry-fall{0%{transform:translateY(-40px) rotate(0);opacity:1}to{transform:translateY(120px) rotate(180deg);opacity:0}}.sheet-backdrop{position:fixed;inset:0;background:#09071673;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;background:var(--panel);border-top:1px solid var(--glass-border-2);border-radius:20px 20px 0 0;box-shadow:0 -16px 40px #0000008c,inset 0 2px #ffffff1a;padding:16px 24px calc(20px + env(safe-area-inset-bottom));animation:ry-sheet-in .22s var(--ease-out);display:flex;flex-direction:column;gap:12px}@keyframes ry-sheet-in{0%{transform:translateY(24px);opacity:0}}.sheet .grabber{align-self:center;width:44px;height:4px;border-radius:2px;background:#ffffff40}.sheet h2{margin:0;font-size:24px;font-weight:900;text-align:center;text-shadow:var(--shadow-text)}.chips-row{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.pill{padding:6px 14px;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.16);font-size:15px;font-variant-numeric:tabular-nums}.streak-block{display:flex;flex-direction:column;gap:4px}.streak-block .streak-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.streak-line{font-size:13px;color:#ffffffd9;font-weight:800}.shields{display:inline-flex;align-items:center;gap:4px}.shields-n{font-size:13px;color:var(--text-55);margin-left:2px}.day-shield{display:inline-flex;width:10px;height:12px}.day-shield .shield{width:10px;height:12px}.share-preview{background:#0000004d;border:1px solid var(--glass-border-2);border-radius:12px;padding:12px;font-size:13px;line-height:1.35;white-space:pre-wrap;font-family:ui-monospace,monospace;font-weight:400}.sheet-actions{display:flex;flex-direction:column;gap:10px}.sheet-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 4px}.sheet .fine{text-align:center;color:#ffffff80;font-size:13px;margin:0}.text-toggle{min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:15px;color:var(--text-70);text-decoration:underline}.launch{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px}.launch .wordmark{font-size:48px;text-shadow:0 3px 0 rgba(0,0,0,.4),0 0 36px rgba(77,227,255,.4)}.launch-board{transform:perspective(900px) rotateX(6deg) rotate(-2deg) scale(.98)}.launch-actions{display:flex;flex-direction:column;gap:12px;align-self:stretch;max-width:400px;width:100%;margin:0 auto}.tut-top{display:flex;align-items:center;justify-content:space-between;align-self:stretch;padding:14px 8px 0}.tut-dots{display:flex;gap:6px}.tut-dots i{width:8px;height:8px;border-radius:50%;background:#ffffff40}.tut-dots i.on{background:var(--cyan);box-shadow:0 0 6px var(--cyan)}.tut-skip{color:#fff9;font-size:15px;min-height:44px;padding:0 8px}.tut-title{margin:16px 0 6px;font-size:22px;font-weight:900;text-align:center;text-shadow:var(--shadow-text);max-width:400px}.page-title{font-size:28px;font-weight:900;margin:16px 0 4px;text-shadow:var(--shadow-text)}.page-sub{color:var(--text-70);font-size:15px;margin:0 0 16px}.card{border-radius:20px;background:var(--panel-2);border:1px solid var(--glass-border-2);box-shadow:inset 0 2px #ffffff1a,0 12px 24px #00000059;padding:16px 18px}.seg{display:flex;border-radius:16px;background:#0000004d;border:1px solid var(--glass-border-2);padding:4px;box-shadow:inset 0 2px 6px #0006}.seg button{flex:1;min-height:40px;padding:0 14px;border-radius:12px;color:#fff9;font-size:15px;font-weight:800}.seg button.selected{background:#ffffff29;border:1px solid rgba(255,255,255,.3);box-shadow:0 3px 8px #00000059;color:var(--text);font-weight:900}.field-row{display:flex;gap:10px;align-items:center;margin:10px 0;flex-wrap:wrap}.text-input{min-height:44px;padding:0 14px;border-radius:12px;background:#00000059;border:1px solid rgba(255,255,255,.18);box-shadow:inset 0 2px 6px #0006;color:#ffffffd9;font-size:15px;letter-spacing:.06em;width:10em}.label-sub{color:var(--text-55);font-size:13px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.stat{border-radius:16px;background:var(--panel-2);border:1px solid var(--glass-border-2);padding:12px 14px;display:flex;flex-direction:column;gap:2px}.stat .value{font-size:22px;font-weight:900;font-variant-numeric:tabular-nums}.stat .label{font-size:13px;color:var(--text-55)}.collection-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:9px;margin-top:8px}.mini-ray{position:relative;border-radius:12px;overflow:hidden;background:radial-gradient(120% 100% at 50% 40%,#2b2a6e,#120f2a);border:1px solid rgba(255,255,255,.12);aspect-ratio:1}.mini-ray .tag{position:absolute;left:7px;bottom:4px;color:var(--text-70);font-size:12px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;border-bottom:1px solid rgba(255,255,255,.08)}.settings-row:last-child{border-bottom:none}.settings-row .label{font-size:15px}.toggle{flex-shrink:0;width:46px;height:26px;border-radius:13px;background:#ffffff24;border:1px solid rgba(255,255,255,.25);position:relative;transition:background .16s var(--ease-out)}.toggle:before{content:"";position:absolute;inset:-10px}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#e8ecf5;box-shadow:0 1px 3px #0006;transition:transform .16s var(--ease-out)}.toggle.on{background:linear-gradient(180deg,var(--cta-b),var(--cta-c));border-color:var(--cta-border);box-shadow:inset 0 1px #fff6}.toggle.on:after{transform:translate(20px);background:#fff}.rules-row{display:flex;align-items:center;gap:16px;padding:10px 0}.rules-row .art{flex-shrink:0;width:44px;height:44px;position:relative}.rules-row p{margin:0;color:#ffffffe6;font-size:15px;line-height:1.4}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.board-well.settle .light-layer{border-radius:50%;inset:8%;background:radial-gradient(circle at 36% 30%,#d8faff,#8ff0ff 30%,#4de3ff 78%,#4de3ff80);box-shadow:0 0 10px #4de3ff80}.solve-bloom{position:absolute;width:var(--bloom, 600px);height:var(--bloom, 600px);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#d8faffe6,#4de3ff80 40%,#4de3ff00 70%);pointer-events:none;animation:ry-solve-bloom .5s var(--ease-out) both}@keyframes ry-solve-bloom{0%{opacity:.9;transform:translate(-50%,-50%) scale(.05)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.board-well.art .beam{opacity:0!important;transition:opacity .3s var(--ease-out)}.board-well.art .cell,.board-well.art .target{opacity:.85}.board-well.art .light-layer{background:radial-gradient(circle at 36% 30%,#aee9f5,#6ed3ee 34%,#49c4e8 80%,#49c4e880);box-shadow:0 0 8px #4de3ff59}.board-well.art .token .halo{opacity:.85}.board-well.art{transition:box-shadow .3s var(--ease-out)}.tray.solved .socket{animation:ry-socket-light .3s var(--ease-out) both;animation-delay:calc(.4s + .12s * var(--i, 0))}@keyframes ry-socket-light{50%{box-shadow:inset 0 3px 6px #00000080,0 0 12px #4de3ffb3,inset 0 0 8px #4de3ff80}}.beam-glow{stroke:var(--beam, var(--cyan))}.perfect-banner.grade-great{background:linear-gradient(180deg,#d8faff,#8ff0ff 24%,#4de3ff);border-color:#0e5d74;box-shadow:0 6px #0a4557,0 20px 40px #00000073,inset 0 3px #ffffff8c;color:#06222c;text-shadow:0 2px 0 rgba(255,255,255,.35)}.perfect-banner.grade-solved{background:#262a3af5;border-color:#ffffff59;box-shadow:0 6px #0006,0 20px 40px #00000073;color:var(--text);text-shadow:var(--shadow-text)}.card-scrim{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:transparent}.results-card{width:100%;max-width:560px;max-height:66dvh;overflow-y:auto;background:var(--panel);border-top:1px solid var(--glass-border-2);border-radius:20px 20px 0 0;box-shadow:0 -16px 40px #0000008c,inset 0 2px #ffffff1a;padding:4px 22px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;animation:ry-card-rise .32s var(--ease-out)}@keyframes ry-card-rise{0%{transform:translateY(48px);opacity:0}}.results-card .rise{animation:ry-block-rise .26s var(--ease-out) both}@keyframes ry-block-rise{0%{transform:translateY(10px);opacity:0}}.grabber-hit{min-height:26px;display:flex;align-items:center;justify-content:center;touch-action:none;cursor:grab}.grabber{width:44px;height:4px;border-radius:2px;background:#ffffff40;align-self:center;flex-shrink:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-title{font-size:22px;font-weight:900;text-shadow:var(--shadow-text)}.card-title .accent{font-style:normal;color:var(--cyan)}.card-title .title-sub{font-size:15px;font-weight:800;color:var(--text-55)}.grade-badge{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;background:#0000004d;border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 2px 5px #0006}.grade-badge i{width:13px;height:13px;border-radius:50%;background:radial-gradient(circle at 32% 26%,#383c48,#14161c 65%,#05060a);box-shadow:inset 0 1px 2px #0009}.grade-badge i.on{background:radial-gradient(circle at 32% 26%,#6a6e80,#1b1d24 60%,#05060a);box-shadow:0 0 7px #4de3ffd9,inset 0 0 0 2.5px #4de3ffe6}.time-line{font-size:15px;color:#ffffffd9;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.challenge-verdict{padding:2px 10px;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.16);font-size:13px}.challenge-verdict.win{border-color:#4de3ff80;color:var(--cyan-pale)}.rating-tap{display:block;width:100%;text-align:left}.rating-line{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:17px;font-weight:900;font-variant-numeric:tabular-nums}.delta-chip{padding:2px 10px;border-radius:999px;background:#4de3ff24;border:1px solid rgba(77,227,255,.4);color:var(--cyan-pale);font-size:14px}.delta-chip.down{background:#ffffff12;border-color:#ffffff2e;color:#fff9}.tier-bar-wrap{display:block;margin-top:8px}.tier-label{display:block;font-size:13px;color:var(--text-55);margin-top:5px}.tier-bar{display:block;height:6px;border-radius:3px;background:#00000059;box-shadow:inset 0 1px 3px #00000080;overflow:hidden}.tier-bar i{display:block;height:100%;border-radius:3px;transition:width .3s var(--ease-out)}.rating-explainer{display:block;margin-top:6px;font-size:13px;color:var(--text-70);font-weight:800}.loop-row{display:flex;align-items:center;gap:12px;font-size:14px;color:#ffffffd9}.loop-copy{display:flex;flex-direction:column;gap:1px}.loop-copy strong{font-weight:900}.loop-copy em{font-style:normal;font-size:13px;color:var(--text-55)}.chain-rings{display:inline-flex;gap:5px;flex-shrink:0}.chain-rings i{width:15px;height:15px;border-radius:50%;background:radial-gradient(circle at 32% 26%,#3a3d4a,#14161c 70%);box-shadow:inset 0 0 0 2px #5cf2c7d9,0 0 6px #5cf2c780}.set-ring .seg{stroke:#ffffff2e}.set-ring .seg.on{stroke:var(--cyan);filter:drop-shadow(0 0 4px rgba(77,227,255,.7));animation:ry-seg-fill .3s var(--ease-out)}.set-ring .seg.next:not(.on){animation:ry-pulse 1.4s ease-in-out infinite;stroke:#b9f6ff99}@keyframes ry-seg-fill{0%{opacity:0}}.week-strip{display:inline-flex;gap:7px}.week-strip .day{display:flex;flex-direction:column;align-items:center;gap:3px}.week-strip i{width:10px;height:10px;border-radius:50%;background:#ffffff24}.week-strip i.on{background:var(--cyan);box-shadow:0 0 6px var(--cyan);animation:ry-dot-light .12s var(--ease-out)}.week-strip i.today{animation:ry-pulse 1.4s ease-in-out infinite}@keyframes ry-dot-light{0%{transform:scale(.4)}}.week-strip em{font-style:normal;font-size:9px;color:var(--text-45)}.streak-copy{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.shield{width:12px;height:14px}.collection-row{display:flex;flex-direction:column;gap:6px}.collection-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.collection-strip .mini-ray{width:56px;height:56px;flex-shrink:0;aspect-ratio:auto}.collection-strip .mini-ray .tag{display:none}.collection-strip .slide-in{animation:ry-thumb-slide .4s var(--ease-out) both}.collection-strip .latest .mini-ray{border-color:#4de3ffb3;box-shadow:0 0 10px #4de3ff59}@keyframes ry-thumb-slide{0%{transform:translate(24px) scale(1.2);opacity:0}}.mini-grade{position:absolute;right:4px;top:4px;width:8px;height:8px;border-radius:50%}.mini-grade.perfect{background:var(--cyan);box-shadow:0 0 5px var(--cyan)}.mini-grade.great{background:var(--cyan-pale);opacity:.8}.mini-grade.solved{background:#fff6}.collection-line{font-size:13px;color:var(--text-55)}.card-actions{display:flex;flex-direction:column;gap:10px;margin-top:2px}.secondary-row{display:flex;gap:10px}.secondary-row .button{flex:1;min-height:44px}.share-block{gap:10px}.share-thumb{width:26px;height:32px;border-radius:4px;object-fit:cover;border:1px solid rgba(255,255,255,.25)}.card-footer{margin:0;font-size:13px;color:var(--text-55);display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid rgba(255,255,255,.08);padding-top:10px}.install-hint{color:#ffffffd9;display:inline-flex;align-items:center;gap:8px;font-weight:800;text-align:left}.install-hint i{font-style:normal;width:20px;height:20px;border-radius:6px;background:#4de3ff29;border:1px solid rgba(77,227,255,.5);color:var(--cyan-pale);display:inline-grid;place-items:center;font-size:14px;line-height:1}.footer-time{flex-shrink:0;text-align:right}.unlock-toast{align-self:center;padding:8px 16px;border-radius:999px;background:#4de3ff24;border:1px solid rgba(77,227,255,.45);color:var(--cyan-pale);font-size:14px;box-shadow:0 0 18px #4de3ff40}.next-pill{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:45;min-width:200px;animation:ry-card-rise .26s var(--ease-out)}.chip-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.chip-row .progress-chip{margin-top:8px}.challenge-chip{margin-top:8px;display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:999px;background:#4de3ff1f;border:1px solid rgba(77,227,255,.4);color:var(--cyan-pale);font-size:13px;font-variant-numeric:tabular-nums}.challenge-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 5px var(--cyan)}.rung-counter{font-size:16px}.set-banner{margin:4px 0 0;font-size:24px;font-weight:900;text-align:center;text-shadow:var(--shadow-text)}.set-scrim{flex-direction:column;align-items:center;justify-content:flex-end}.mosaic-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:96px 24px 16px;width:100%;pointer-events:none}.mosaic-frame{width:100%;max-width:300px;padding:14px;border-radius:24px;background:#141230d9;border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 2px #ffffff1a,0 24px 48px #00000080,0 0 40px #4de3ff1f;animation:ry-card-rise .32s var(--ease-out)}.mosaic{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.shield-row{display:flex;align-items:center;gap:12px}.shield-row .delta-chip{margin-left:auto;text-align:center}.shield-disc{width:44px;height:44px;border-radius:50%;background:#00000059;box-shadow:inset 0 3px 6px #00000080;display:grid;place-items:center;flex-shrink:0}.shield-disc .shield{width:18px;height:21px}.unlock-note{font-size:12px;font-weight:800;color:var(--cyan-pale);text-align:right}.perfect-banner.banner-set{font-size:26px;top:26%;white-space:nowrap}.mosaic .mini-ray{width:100%;aspect-ratio:1}.mosaic-piece{animation:ry-mosaic .18s var(--ease-spring) both}@keyframes ry-mosaic{0%{transform:scale(.6);opacity:0}}.mosaic-bloom{position:absolute;inset:-20%;border-radius:50%;background:radial-gradient(circle,#8ff0ff47,#4de3ff1a 50%,#4de3ff00 72%);pointer-events:none;animation:ry-bloom .4s var(--ease-out) .76s both;opacity:0}@keyframes ry-bloom{0%{opacity:0;transform:scale(.6)}60%{opacity:1}to{opacity:.5;transform:scale(1)}}.return-splash{gap:20px;animation:ry-block-rise .4s var(--ease-out)}.splash-orb{position:relative;width:96px;height:96px;display:grid;place-items:center}.splash-orb .orb{width:76px;height:76px;box-shadow:0 10px 20px #00000080,0 0 44px #4de3ff66}.splash-day{margin:0;font-size:44px;font-weight:900;text-shadow:var(--shadow-text),0 0 36px rgba(77,227,255,.35)}.play.swap-in{animation:ry-swap-in .3s var(--ease-out)}@keyframes ry-swap-in{0%{transform:translate(64px);opacity:0}}
