:root{--cream: #f4ece1;--cream-deep: rgba(58, 46, 74, .1);--disc: #fff8ee;--band-a: #f3e4cd;--band-b: #fdf4e6;--wall: #4a3f5c;--ink: #3a2e4a;--ink-soft: #7c7089;--ball: #ffd166;--hole: #2b2434;--accent: #ef8a76;--mint: #6bcb9b;--gold: #d99b2c;--gold-soft: #f2c667;--wall-on: #7c4a86;--blob-a: #efe0cc;--blob-b: #f8e6cd;--font-ui: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI", system-ui, -apple-system, sans-serif;--font-display: var(--font-ui);--radius: 16px;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}body{background:var(--cream);transition:background .9s ease;color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}svg,img{-webkit-user-drag:none;user-select:none}.game ::selection{background:transparent}.game ::-moz-selection{background:transparent}.game{height:100%;max-width:620px;margin:0 auto;padding:max(10px,env(safe-area-inset-top)) 12px max(14px,env(safe-area-inset-bottom));display:grid;grid-template-rows:auto 1fr auto;gap:8px;touch-action:none}.live-board,.park-board{transform-origin:0 0;transition:transform .18s cubic-bezier(.2,1,.3,1)}.game.dragging:not(.holding-far) .live-board,.other-board-turning .park-board{transform:scale(1.012)}.backdrop{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.blob{position:absolute;border-radius:50%;filter:blur(38px);opacity:.85;transition:background .9s ease}.blob-1{width:74vw;height:74vw;top:-16vw;left:-22vw;background:var(--blob-a);animation:drift-a 26s ease-in-out infinite}.blob-2{width:62vw;height:62vw;bottom:-14vw;right:-18vw;background:var(--blob-b);animation:drift-b 31s ease-in-out infinite}.blob-3{width:44vw;height:44vw;top:42%;left:-14vw;background:var(--blob-b);opacity:.55;animation:drift-a 37s ease-in-out infinite reverse}@keyframes drift-a{0%,to{transform:translate(0) scale(1)}50%{transform:translate(6vw,4vh) scale(1.08)}}@keyframes drift-b{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-5vw,-5vh) scale(1.06)}}.hud-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.hud-side{display:flex;gap:6px}.hud-side-end{justify-content:flex-end}.hud-mid{display:flex;align-items:center;gap:10px}.hud-where{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ink);opacity:.58}.icon-btn{width:40px;height:40px;display:grid;place-items:center;border:none;border-radius:12px;background:var(--cream-deep);color:var(--ink);fill:currentColor;cursor:pointer;transition:transform .12s ease,background .16s ease}.icon-btn:active{transform:scale(.92)}.icon-btn-bare{background:transparent}.icon-btn-bare:active{background:transparent;opacity:.55}.stats{display:flex;justify-content:center;gap:18px;margin-top:6px;font-size:13px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.stat b{color:var(--ink);font-weight:700}.stat i{font-style:normal;opacity:.65;margin-right:3px}.pips{display:flex;justify-content:center;gap:5px;margin-top:7px;height:6px}.pip{width:22px;height:6px;border-radius:999px;background:var(--cream-deep);transition:background .2s ease,transform .26s cubic-bezier(.2,1.6,.4,1)}.pip-on{background:var(--accent);transform:scaleY(1.35)}.key-pips{display:inline-flex;align-items:center;gap:3px;margin-left:8px}.key-pip{color:#c4b19b;transition:color .26s ease,transform .3s cubic-bezier(.2,1.6,.4,1)}.key-pip-on{color:var(--gold);transform:scale(1.22)}.key-pip-hint{animation:key-pip-hint .62s ease-out 2}@keyframes key-pip-hint{0%,to{color:#c4b19b;transform:scale(1)}25%{color:var(--gold);transform:scale(1.45)}55%{color:var(--gold);transform:scale(1.1)}}.stage{position:relative;display:grid;place-items:center;min-height:0}.board[data-stacked]{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none}.board{width:min(100%,76vh);height:auto;max-height:100%;touch-action:none;cursor:grab;display:block;overflow:visible}.board:active{cursor:grabbing}.disc{fill:var(--disc)}.stage:before{content:"";position:absolute;top:50%;left:50%;width:min(100%,76vh);aspect-ratio:1;transform:translate(-50%,-50%) scale(.95);border-radius:50%;box-shadow:0 12px 26px #3a2e4a26;pointer-events:none;transition:transform .18s cubic-bezier(.2,1,.3,1)}.game.dragging .stage:before{transform:translate(-50%,-50%) scale(.962)}.stage-stacked:before{display:none}.disc-shadow{fill:url(#discShadow);pointer-events:none}.band-a{fill:var(--band-a);transition:fill .22s ease}.band-b{fill:var(--band-b);transition:fill .22s ease}.art-soft3d .band-a{fill:url(#bandA3d)}.art-soft3d .band-b{fill:url(#bandB3d)}.mat-a-face{stop-color:var(--band-a)}.mat-b-face{stop-color:var(--band-b)}.mat-a-lip{stop-color:color-mix(in srgb,var(--band-a) 68%,#fff 32%)}.mat-b-lip{stop-color:color-mix(in srgb,var(--band-b) 68%,#fff 32%)}.mat-a-edge{stop-color:color-mix(in srgb,var(--band-a) 66%,var(--ink) 34%)}.mat-b-edge{stop-color:color-mix(in srgb,var(--band-b) 66%,var(--ink) 34%)}.mat-a-cut{stop-color:color-mix(in srgb,var(--band-a) 55%,var(--ink) 45%)}.mat-b-cut{stop-color:color-mix(in srgb,var(--band-b) 55%,var(--ink) 45%)}.art-paper .band-a{fill:url(#bandAPaper)}.art-paper .band-b{fill:url(#bandBPaper)}.band-cast{fill:url(#paperCast)}.art-soft3d .disc-socket,.art-paper .disc-socket{fill:url(#socketRecess)}.mat-socket-face{stop-color:var(--band-a)}.mat-socket-edge{stop-color:color-mix(in srgb,var(--band-a) 74%,var(--ink) 26%)}.board-light{pointer-events:none;fill:url(#boardLight)}.art-paper .board-light{opacity:.35}.walls path{fill:none;stroke:var(--wall);stroke-linecap:round;stroke-linejoin:round}.mat-hole-deep{stop-color:color-mix(in srgb,var(--hole) 84%,#000 16%)}.mat-hole-mid{stop-color:var(--hole)}.mat-hole-far{stop-color:color-mix(in srgb,var(--hole) 78%,#b9a9d6 22%)}.hole{fill:url(#holeWell)}.gate{fill:none;stroke:var(--gold);stroke-linecap:round;stroke-linejoin:round;animation:gate-breathe 1.9s ease-in-out infinite;transition:opacity .42s ease,stroke-width .42s cubic-bezier(.3,0,.2,1)}@keyframes gate-breathe{0%,to{stroke:var(--gold)}50%{stroke:var(--gold-soft)}}.key-art{transition:transform .32s cubic-bezier(.3,1.5,.5,1),opacity .28s ease;transform-box:fill-box;transform-origin:50% 50%}.key-glow{fill:var(--gold-soft);opacity:.16;animation:key-pulse 2.1s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 50%}.key-ring{fill:none;stroke:var(--gold-soft);stroke-width:.7;stroke-dasharray:3 4;opacity:.75;animation:key-spin 9s linear infinite;transform-box:fill-box;transform-origin:50% 50%}.key-orbit{animation:key-spin 3.6s linear infinite;transform-box:fill-box;transform-origin:50% 50%}.key-mote{fill:var(--gold-soft)}.key-body{animation:key-bob 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 50%}.key-metal{fill:var(--gold)}.key-eye{fill:var(--band-b)}.key-shine{fill:#fff3d6;opacity:.75}.key-near-0 .key-0,.key-near-1 .key-1{transform:scale(1.28)}.key-near-0 .key-0 .key-glow,.key-near-1 .key-1 .key-glow{opacity:.42}.key-near-0 .key-0 .key-orbit,.key-near-1 .key-1 .key-orbit{animation-duration:1.1s}@keyframes key-pulse{0%,to{transform:scale(.88);opacity:.14}50%{transform:scale(1.1);opacity:.3}}@keyframes key-spin{to{transform:rotate(360deg)}}@keyframes key-bob{0%,to{transform:rotate(-7deg) scale(1)}50%{transform:rotate(7deg) scale(1.04)}}.gate-bump .gates{animation:gate-shove .34s ease-out infinite;transform-box:fill-box;transform-origin:50% 50%}.gate-bump .gate{stroke:var(--gold-soft)}@keyframes gate-shove{0%{transform:scale(1)}35%{transform:scale(1.022)}to{transform:scale(1)}}.key-flash{fill:none;stroke:var(--gold-soft);pointer-events:none}.key-fly{position:fixed;top:0;left:0;width:30px;height:30px;margin:-15px 0 0 -15px;opacity:0;pointer-events:none;z-index:8;filter:drop-shadow(0 3px 6px rgba(217,155,44,.45))}.gate-open-0 .gate-0,.gate-open-1 .gate-1{opacity:0;stroke-width:.5!important}.key-got-0 .key-0,.key-got-1 .key-1{opacity:0;transform:scale(.2);transition:transform .15s ease-in,opacity .13s ease-in}.blade{fill:none;stroke:#6b6472;stroke-linecap:round}.blade-edge{fill:none;stroke:#eceaf0;stroke-linecap:round}.ball-swat{animation:ball-swat .34s cubic-bezier(.2,1.4,.4,1)}@keyframes ball-swat{0%{filter:brightness(2.1) saturate(.3)}to{filter:none}}.disc-socket{fill:var(--band-a);filter:brightness(.93);transition:fill .22s ease}.piece .walls path{transition:stroke .22s ease,stroke-opacity .22s ease;stroke-opacity:.42}.piece-on .walls path{stroke:var(--wall-on);stroke-opacity:1}.board .piece:only-child .walls path{stroke-opacity:1}.disc-edge-on{stroke:var(--wall-on);stroke-opacity:.7}.disc-edge{fill:none;stroke:#3a2e4a57;stroke-width:2.2}.inner-piece .disc-socket{fill:color-mix(in srgb,var(--band-a) 88%,var(--ink) 12%);filter:none}.hole-lip{fill:none;stroke:#fff;stroke-opacity:.14;stroke-width:1.4}.capped-plate{fill:color-mix(in srgb,var(--ink) 14%,var(--cream-deep))}.capped-rim{fill:none;stroke:var(--ink);stroke-opacity:.42;stroke-width:2.6}.capped-seam{stroke:var(--ink);stroke-opacity:.3;stroke-width:1.8;stroke-linecap:round}.capped-rivet{fill:var(--ink);fill-opacity:.26}.hole-halo{fill:none;stroke:var(--ball);stroke-width:2.4}.drag-arc{fill:none;stroke:var(--accent);stroke-width:3.4;stroke-linecap:round;pointer-events:none}.drag-arc-inner{stroke-width:2.6}.ring-flash{fill:none;stroke:var(--ball);pointer-events:none}.ball-eyes,.ball-eyes-blink,.mouth-calm,.mouth-woo{transform-box:fill-box;transform-origin:50% 50%}.ball-eyes-blink{animation:ball-blink 5.4s infinite}@keyframes ball-blink{0%,93.5%,to{transform:scaleY(1)}95.2%,96.2%{transform:scaleY(.08)}97.6%{transform:scaleY(1)}}.mouth-woo{opacity:0}.ball-woo .ball-eyes{transform:scale(1.16)}.ball-woo .mouth-calm{opacity:0}.ball-woo .mouth-woo{opacity:1}.ball-eyes,.mouth-calm,.mouth-woo{transition:opacity .11s ease,transform .14s ease}@media (prefers-reduced-motion: reduce){.ball-eyes-blink{animation:none}}.ball-body{fill:var(--ball);stroke:#e9b53f;stroke-width:.6}.ball-eye{fill:var(--ink)}.ball-smile{fill:none;stroke:var(--ink);stroke-linecap:round}.hint{position:absolute;bottom:-2%;white-space:nowrap;left:50%;transform:translate(-50%);padding:8px 14px;border-radius:999px;background:#3a2e4adb;color:#fff8ee;font-size:13px;font-weight:600;letter-spacing:.01em;pointer-events:none;animation:breathe 2.2s ease-in-out infinite}@keyframes breathe{0%,to{opacity:.55;transform:translate(-50%) scale(.98)}50%{opacity:1;transform:translate(-50%) scale(1.02)}}.puck{position:fixed;top:0;left:0;width:0;height:0;margin:-27px 0 0 -27px;border:2.5px solid rgba(239,138,118,.9);border-radius:50%;opacity:0;pointer-events:none;z-index:5;transition:opacity .2s ease}.game.dragging .puck{width:54px;height:54px;background:#ffd16629}.btn{flex:1;min-height:52px;border:none;border-radius:var(--radius);background:var(--cream-deep);color:var(--ink);font:inherit;font-size:16px;font-weight:700;cursor:pointer;transition:transform .12s ease,opacity .16s ease,background .16s ease}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--ink);color:var(--disc)}.btn-wide{width:100%;margin-top:4px}.celebrate{position:fixed;inset:0;z-index:10;display:grid;place-items:center;cursor:pointer}.celebrate-flash{position:absolute;inset:0;background:radial-gradient(circle at 50% 46%,#ffe9a8d9,#ffe9a800 62%);animation:flash .62s ease-out both;pointer-events:none}.celebrate-body{position:relative;text-align:center;transform:translateY(-4vh);pointer-events:none;padding:26px 30px 30px;max-width:100%;background:radial-gradient(closest-side,#fff8eef5,#fff8eedb 62%,#fff8ee00)}.praise{margin:0;font-size:clamp(36px,12.5vw,66px);font-weight:900;letter-spacing:-.03em;color:var(--ink);text-shadow:0 3px 0 rgba(255,255,255,.9),0 12px 26px rgba(58,46,74,.18);animation:praise-pop .52s cubic-bezier(.18,1.5,.4,1) both}.streak{margin:8px 0 0;font-size:14px;font-weight:700;color:var(--ink);text-shadow:0 0 8px rgba(255,248,238,.98),0 0 16px rgba(255,248,238,.92);animation:rise .42s cubic-bezier(.2,1.1,.4,1) .2s both}.streak b{display:inline-block;min-width:26px;padding:2px 8px;margin-right:4px;border-radius:999px;background:var(--accent);color:#fff8ee;font-size:15px}.tag{display:inline-block;margin-left:8px;padding:3px 9px;border-radius:999px;background:var(--mint);color:#143d2a;font-size:11px;font-weight:800;vertical-align:middle;letter-spacing:.04em;text-transform:uppercase;animation:stamp .38s cubic-bezier(.2,1.6,.4,1) .22s both}.stage-won .board{animation:board-cheer .62s cubic-bezier(.25,1.2,.4,1) both}@keyframes flash{0%{opacity:.95}to{opacity:0}}@keyframes praise-pop{0%{opacity:0;transform:scale(.4) rotate(-7deg)}70%{opacity:1;transform:scale(1.06) rotate(1.5deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}@keyframes stamp{0%{opacity:0;transform:scale(1.9) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(-4deg)}}@keyframes board-cheer{0%{transform:scale(1)}35%{transform:scale(1.045)}to{transform:scale(1)}}@keyframes fade{0%{opacity:0}}.howto-wrap{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:20px;background:#f4ece1db;backdrop-filter:blur(4px);animation:fade .22s ease both}.howto{width:min(360px,100%);background:var(--disc);border-radius:26px;padding:20px 22px;text-align:center;box-shadow:0 18px 44px #3a2e4a2e;animation:pop .34s cubic-bezier(.2,1.3,.4,1) both}.howto h2{margin:10px 0 0;font-size:22px;letter-spacing:-.02em}.howto-art{width:132px;height:132px;display:block;margin:0 auto}.howto-disc{fill:var(--band-b)}.howto-hole{fill:var(--hole)}.howto-wall{fill:none;stroke:var(--wall);stroke-width:5;stroke-linecap:round}.howto-ball{fill:var(--ball);stroke:#e9b53f;stroke-width:1}.howto-carry,.howto-drop{transform-box:view-box;transform-origin:50% 50%}.howto-carry{animation:howto-carry 4.6s cubic-bezier(.5,0,.5,1) infinite}.howto-drop{animation:howto-drop 4.6s cubic-bezier(.4,0,.6,1) infinite}.howto-arrowline{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-dasharray:150;animation:howto-trace 4.6s ease-in-out infinite}.howto-arrowhead{fill:var(--accent)}.gears-outer-face{fill:var(--band-b)}.gears-socket{fill:var(--band-a)}.gears-wall{fill:none;stroke:var(--wall);stroke-width:5;stroke-linecap:round}.gears-teeth{fill:none;stroke:#3a2e4a57;stroke-width:6;stroke-dasharray:5 4}.gears-edge{fill:none;stroke:#3a2e4a4d;stroke-width:2}.gears-outer,.gears-inner{transform-box:view-box;transform-origin:50% 50%}.gears-outer{animation:gears-alt-a 6s ease-in-out infinite}.gears-inner{animation:gears-alt-b 6s ease-in-out infinite}@keyframes gears-alt-a{0%,8%{transform:rotate(0)}42%,to{transform:rotate(105deg)}}@keyframes gears-alt-b{0%,52%{transform:rotate(0)}92%,to{transform:rotate(-120deg)}}.gears-text{margin:10px 0 0;font-size:14.5px;line-height:1.45;color:var(--ink)}.gears-text-dim{margin-top:8px;margin-bottom:16px;font-size:13.5px;color:var(--ink-soft)}.howto-steps{margin:14px 0 18px;padding:0;list-style:none;text-align:left;counter-reset:step}.howto-steps li{position:relative;padding:0 0 0 32px;margin-bottom:11px;font-size:14.5px;line-height:1.42;color:var(--ink-soft);counter-increment:step}.howto-steps li b{color:var(--ink)}.howto-steps li:before{content:counter(step);position:absolute;left:0;top:0;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:var(--band-a);color:var(--ink);font-size:12px;font-weight:800}@keyframes howto-carry{0%,8%{transform:rotate(0)}52%,to{transform:rotate(180deg)}}@keyframes howto-drop{0%,58%{transform:translateY(0);opacity:1}76%,86%{transform:translateY(-40px);opacity:1}94%,to{transform:translateY(-40px);opacity:0}}@keyframes howto-trace{0%,6%{stroke-dashoffset:150}50%,to{stroke-dashoffset:0}}.sheet-wrap{position:fixed;inset:0;z-index:20;display:grid;justify-items:center;align-items:start;background:color-mix(in srgb,var(--cream) 88%,transparent);backdrop-filter:blur(20px) saturate(1.08);-webkit-backdrop-filter:blur(20px) saturate(1.08);animation:fade .18s ease both;overflow-y:auto}.sheet{width:min(560px,100%);min-height:100%;background:transparent;padding:max(18px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));animation:sheet-in .24s cubic-bezier(.2,.9,.3,1) both}@keyframes sheet-in{0%{opacity:0;transform:translateY(10px) scale(.995)}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.sheet-head h2{margin:0;font-size:18px}@keyframes slideUp{0%{transform:translateY(24px);opacity:0}}.map-wrap{align-items:stretch}.map-sheet{display:flex;flex-direction:column;width:100%;max-width:none;height:100%;max-height:none;border-radius:0;background:var(--cream);padding:max(14px,env(safe-area-inset-top)) 18px 0;overflow:hidden}.map-head{flex:0 0 auto;padding-bottom:10px}.map-head-row{gap:14px;margin-bottom:0}.map-progress{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0}.map-cap{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;color:var(--ink);opacity:.4;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;fill:currentColor}.map-cap:before,.map-cap:after{content:"";width:34px;height:2px;border-radius:2px;background:currentColor;opacity:.45}.map-bar{flex:1;height:8px;border-radius:999px;background:var(--cream-deep);overflow:hidden}.map-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--gold));transition:width .5s cubic-bezier(.2,1,.3,1)}.map-count{font-size:12px;font-weight:800;color:var(--ink-soft);font-variant-numeric:tabular-nums}.map-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:0 -18px;padding:0 18px max(18px,env(safe-area-inset-bottom))}.map-inner{position:relative}.map-zone{position:absolute;left:-18px;right:-18px;opacity:.85;overflow:hidden;-webkit-mask-image:linear-gradient(to top,#000 62%,transparent);mask-image:linear-gradient(to top,#000 62%,transparent)}.map-zone-done{opacity:1}.map-zone-ghost{position:absolute;right:16px;bottom:30px;max-width:calc(100% - 32px);margin:0;font-size:clamp(34px,12vw,62px);text-align:right;overflow:hidden;font-weight:900;letter-spacing:-.04em;line-height:.86;text-transform:uppercase;color:var(--ink);opacity:.07;pointer-events:none;user-select:none}.map-zone-name{position:absolute;bottom:12px;left:22px;font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);opacity:.42;text-shadow:0 0 6px var(--bg),0 0 12px var(--bg)}.map-trail{position:absolute;inset:0;width:100%;height:100%}.map-trail-case,.map-trail-bed,.map-trail-done,.map-trail-dash{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.map-trail-case{stroke:#3a2e4a1a;stroke-width:22}.map-trail-bed{stroke:var(--disc);stroke-width:16}.map-trail-done{stroke:var(--mint);stroke-width:16;transition:stroke-dashoffset .7s cubic-bezier(.2,1,.3,1)}.map-trail-dash{stroke:#3a2e4a29;stroke-width:2;stroke-dasharray:5 11}.map-node{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:2px}.map-dot{width:56px;height:56px;border:none;border-radius:50%;background:var(--disc);color:var(--ink);font:inherit;cursor:pointer;display:grid;place-items:center;box-shadow:0 3px #3a2e4a29;transition:transform .14s cubic-bezier(.2,1.6,.4,1)}.map-dot:active:not(:disabled){transform:scale(.92)}.map-n{font-size:19px;font-weight:800}.map-dot-done{background:var(--mint);color:#143d2a;box-shadow:0 3px #143d2a38}.map-dot-current{background:var(--accent);color:#fff8ee;width:64px;height:64px;box-shadow:0 4px #3a2e4a33,0 0 0 5px #ef8a763d;animation:map-beat 1.9s ease-in-out infinite}.map-dot-current .map-n{font-size:22px}.map-dot-locked{background:#fff8eed1;color:#a2917d;box-shadow:0 2px #3a2e4a12;cursor:default}.map-dot-endless{background:var(--ink);color:var(--disc)}.map-you{position:absolute;top:-40px;display:grid;place-items:center;filter:drop-shadow(0 3px 4px rgba(58,46,74,.28));animation:map-hop 1.9s ease-in-out infinite;pointer-events:none}.map-prize{position:absolute;left:46px;top:-6px;display:grid;place-items:center;padding:4px;border-radius:50%;background:var(--disc);box-shadow:0 2px 8px #3a2e4a29;filter:grayscale(1);opacity:.45}.map-prize-won{filter:none;opacity:1;box-shadow:0 2px 10px #d99b2c73}.map-summit{position:absolute;left:0;right:0;text-align:center;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}@keyframes map-beat{0%,to{box-shadow:0 4px #3a2e4a33,0 0 0 5px #ef8a763d}50%{box-shadow:0 4px #3a2e4a33,0 0 0 13px #ef8a7612}}@keyframes map-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.shop-count{font-size:12px;font-weight:800;color:var(--ink-soft);margin-left:4px}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.shop-tile{position:relative;border:none;border-radius:18px;background:var(--band-b);color:var(--ink);font:inherit;padding:12px 6px 10px;cursor:pointer;display:grid;justify-items:center;gap:2px;transition:transform .14s cubic-bezier(.2,1.6,.4,1),background .2s ease}.shop-tile:active:not(:disabled){transform:scale(.94)}.shop-tile-on{background:var(--band-a);outline:2.5px solid var(--accent);outline-offset:-2.5px}.shop-tile-locked{cursor:default}.shop-tile-locked .shop-art{filter:grayscale(1);opacity:.32}.shop-name{font-size:12.5px;font-weight:800}.shop-tag{font-size:10.5px;color:var(--ink-soft)}.shop-lock{position:absolute;top:8px;right:8px;color:#b7a693}.unlock{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:12px;padding:7px 14px 7px 8px;border-radius:999px;background:var(--gold);color:#fff8ee;animation:stamp .42s cubic-bezier(.2,1.6,.4,1) .26s both}.unlock-art{display:grid;place-items:center;animation:hop .7s cubic-bezier(.3,1.4,.4,1) .3s both}.unlock-text{font-size:13.5px;font-weight:700;letter-spacing:.01em}.gate{display:grid;justify-items:center}.gate-art{width:116px;height:116px;display:block}.gate-lock{fill:var(--gold);stroke:var(--gold);stroke-linecap:round}.gate-note{margin:6px 0 14px;font-size:14px;color:var(--ink-soft)}.gate-input{width:100%;min-height:52px;padding:0 16px;border:2px solid transparent;border-radius:var(--radius);background:var(--cream-deep);color:var(--ink);font:inherit;font-size:16px;font-weight:700;text-align:center;letter-spacing:.18em;transition:border-color .16s ease}.gate-input::placeholder{font-weight:600;letter-spacing:normal;color:var(--ink-soft);opacity:.7}.gate-input:focus{outline:none;border-color:var(--ink)}.gate-input-wrong{border-color:var(--gold);animation:gate-shake .32s ease}.gate-error{min-height:1.2em;margin:8px 0 6px;font-size:13px;font-weight:700;color:var(--gold)}@keyframes gate-shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}45%{transform:translate(6px)}70%{transform:translate(-3px)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.map-hard{position:absolute;left:-20px;top:16px;width:30px;height:30px;display:grid;place-items:center;padding:0;border:2px solid var(--cream);border-radius:50%;background:var(--disc);color:var(--ink-soft);cursor:pointer;box-shadow:0 2px 6px #3a2e4a24;transition:transform .14s cubic-bezier(.2,1.6,.4,1),background .2s ease,color .2s ease}.map-hard:not(:disabled){color:var(--accent)}.map-hard:not(:disabled):active{transform:scale(.86)}.map-hard-done{background:var(--accent);color:#fff}.map-hard-done:not(:disabled){color:#fff}.map-hard-locked{opacity:.34;cursor:not-allowed;box-shadow:none}.pick-scrim{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:#2b24346b;backdrop-filter:blur(3px);animation:pick-in .16s ease both;z-index:30}.pick{width:min(340px,100%);display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:22px;background:var(--disc);box-shadow:0 18px 44px #2b24344d;animation:pick-rise .22s cubic-bezier(.2,1.4,.4,1) both}.pick-title{margin:0 0 2px;font-size:19px;font-weight:800;color:var(--ink)}.pick-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pick-opt{position:relative;display:grid;place-items:center;aspect-ratio:1;padding:0;border:none;border-radius:18px;background:var(--cream-deep);color:var(--ink);cursor:pointer;transition:transform .12s ease}.pick-opt:active{transform:scale(.95)}.pick-opt-hard{color:var(--accent)}.pick-opt-done{background:color-mix(in srgb,var(--cream-deep) 55%,var(--mint) 45%)}.pick-tick{position:absolute;top:7px;right:7px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:var(--mint);color:#fff}.pick-challenge{margin-top:2px;padding:12px 14px;border:none;border-radius:15px;background:var(--ink);color:var(--disc);font-size:15px;font-weight:800;cursor:pointer}.pick-cancel{padding:8px;border:none;background:none;color:var(--ink-soft);font-size:14px;font-weight:700;cursor:pointer}@keyframes pick-in{0%{opacity:0}}@keyframes pick-rise{0%{opacity:0;transform:translateY(14px) scale(.96)}}.map-node{animation:node-in .32s cubic-bezier(.2,1.5,.4,1) both;animation-delay:calc(var(--map-i, 0) * 42ms)}@keyframes node-in{0%{opacity:0;transform:translate(-50%,8px) scale(.7)}}.map-zone{animation:zone-in .42s ease both;animation-delay:calc(var(--map-z, 0) * 70ms)}@keyframes zone-in{0%{opacity:0}}@media (prefers-reduced-motion: reduce){.map-node,.map-zone,.pick,.pick-scrim{animation:none}}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);padding:10px 16px;border-radius:999px;background:var(--ink);color:var(--disc);font-size:14px;font-weight:700;box-shadow:0 8px 22px #2b243447;animation:toast-in .2s ease both;z-index:40;pointer-events:none}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}.map-zone:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 62% at 50% 0%,rgba(255,255,255,.55),transparent 70%),radial-gradient(84% 50% at 84% 14%,var(--zone-glow, transparent),transparent 74%),radial-gradient(70% 46% at 10% 84%,var(--zone-deep, rgba(58, 46, 74, .07)),transparent 72%)}.map-zone:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;background-image:radial-gradient(rgba(58,46,74,.16) 1px,transparent 1.2px);background-size:var(--zone-grid, 17px) var(--zone-grid, 17px);-webkit-mask-image:linear-gradient(to top,#000 35%,transparent 85%);mask-image:linear-gradient(to top,#000 35%,transparent 85%)}.map-dot-mastered{box-shadow:0 0 0 3px var(--disc),0 0 0 6px var(--gold),0 4px 12px #3a2e4a33}.offer-face{display:grid;place-items:center;padding:6px 0 10px}.portal-mouth{fill-opacity:.97}.portal-pool{fill:#3a2e4a21}.portal-lip{stroke:var(--mint);stroke-width:1.9;stroke-opacity:.75;stroke-linecap:round}.portal-ring circle{fill:none;stroke:var(--mint);stroke-width:2.4;stroke-dasharray:7 6;stroke-linecap:round;animation:portal-dash 3.4s linear infinite}.portal-ring-back circle{stroke:var(--gold-soft);stroke-width:1.8;stroke-dasharray:4 9;animation:portal-dash-back 5.2s linear infinite;opacity:.85}@keyframes portal-dash{to{stroke-dashoffset:-26}}@keyframes portal-dash-back{to{stroke-dashoffset:39}}@media (prefers-reduced-motion: reduce){.portal-ring circle,.portal-ring-back circle{animation:none}}.other-board{opacity:.62;animation:board-park .3s cubic-bezier(.3,0,.4,1) both}.other-board-turning{opacity:1;animation:none;transition:opacity .12s ease-out}.other-board-live{opacity:1;animation:none}.other-board-turning .piece .walls path,.other-board-turning .inner-piece .walls path,.other-board-live .piece .walls path,.other-board-live .inner-piece .walls path{stroke-opacity:1}@keyframes board-park{0%{opacity:1}to{opacity:.62}}@media (prefers-reduced-motion: reduce){.other-board{animation:none}}.teach{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:3}.teach-hand{width:min(46%,190px);height:auto;opacity:.9;animation:teach-fade 5.4s ease-in-out infinite}.teach-arc{stroke:var(--ink);stroke-opacity:.16;stroke-width:2.2;stroke-dasharray:3 5}.teach-finger circle{fill:var(--ink);fill-opacity:.14}.teach-finger-core{fill-opacity:.5!important}.teach-finger{animation:teach-swipe 5.4s cubic-bezier(.45,0,.55,1) infinite}@keyframes teach-swipe{0%,8%{transform:translate(-17px,6px)}38%,46%{transform:translate(17px,6px)}76%,to{transform:translate(-17px,6px)}}@keyframes teach-fade{0%,to{opacity:.35}20%,60%{opacity:.95}}@media (prefers-reduced-motion: reduce){.teach-finger{animation:none}.teach-hand{animation:none;opacity:.7}}.lined-up .piece-on .walls path{stroke-opacity:1;filter:drop-shadow(0 0 2.5px var(--gold-soft))}.lined-up .disc-edge-on{stroke:var(--gold);stroke-opacity:.95}@media (prefers-reduced-motion: reduce){.lined-up .piece-on .walls path{filter:none}}.display{font-family:var(--font-display);font-weight:900;letter-spacing:-.035em;text-shadow:0 1px 0 rgba(255,255,255,.55),0 2px 0 rgba(255,255,255,.25),0 3px 6px rgba(58,46,74,.16)}.stat i{text-transform:uppercase;letter-spacing:.08em;font-size:.82em;font-weight:800;opacity:.55}.icon-btn-quiet{background:transparent;opacity:.45}.icon-btn-quiet:active{opacity:.8}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.sheet-title{font-size:19px;margin:0}.pause{position:fixed;inset:0;z-index:40;background:color-mix(in srgb,var(--cream) 86%,transparent);backdrop-filter:blur(22px) saturate(1.1);-webkit-backdrop-filter:blur(22px) saturate(1.1);display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom));animation:pause-in .22s cubic-bezier(.2,.9,.3,1) both}.pause-inner{width:100%;max-width:340px;display:grid;gap:30px}.pause-mark{display:grid;justify-items:center;gap:6px}.pause-title{font-size:34px;margin:6px 0 0}.pause-where{margin:0;font-size:14px;font-weight:700;color:var(--ink-soft);letter-spacing:.02em}.pause-items{display:grid;gap:10px}.pause-item{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:16px;border:none;border-radius:var(--radius);background:var(--ink);color:var(--cream);font:inherit;font-size:17px;font-weight:800;letter-spacing:-.01em;cursor:pointer;transition:transform .12s ease,opacity .14s ease}.pause-item-quiet{background:var(--cream-deep);color:var(--ink);font-weight:700}.pause-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pause-ico{fill:currentColor;flex:0 0 auto;margin-top:-1px}.pause-ico-ball{display:grid;place-items:center;width:21px;height:21px;flex:0 0 auto}.pause-pair-minor{gap:4px}.pause-pair-three{grid-template-columns:auto auto auto;justify-content:space-between;gap:2px}.pause-pair-three .pause-item-minor{padding-inline:6px;white-space:nowrap}.pause-item-minor{padding:10px 8px;background:transparent;color:var(--ink-soft);font-size:14px;font-weight:700}.pause-item:active{transform:scale(.975);opacity:.9}@keyframes pause-in{0%{opacity:0;transform:scale(1.03)}}@media (prefers-reduced-motion: reduce){.pause{animation:none}}.pause-badge{width:108px;height:108px;border-radius:50%;display:grid;place-items:center;background:var(--disc);box-shadow:0 1px #fffc inset,0 10px 26px #3a2e4a24;animation:pause-badge-in .42s cubic-bezier(.2,1.5,.4,1) both 60ms}@keyframes pause-badge-in{0%{transform:scale(.82) translateY(6px);opacity:0}}.finale .pause-badge{background:linear-gradient(180deg,var(--disc),color-mix(in srgb,var(--mint) 34%,var(--disc)));animation-duration:.62s}.finale .pause-title{font-size:clamp(27px,9vw,38px)}.finale .pause-where{max-width:21ch;margin-inline:auto;letter-spacing:0;text-wrap:balance}.finale-note{margin:0;text-align:center;font-size:13px;line-height:1.5;color:var(--ink-soft)}.pause-where:before{content:"";display:block;width:34px;height:2px;border-radius:2px;margin:12px auto 10px;background:var(--ink);opacity:.16}@media (prefers-reduced-motion: reduce){.pause-badge{animation:none}}.back-btn{display:inline-flex;align-items:center;gap:4px;padding:8px 14px 8px 8px;border:none;border-radius:999px;background:var(--cream-deep);color:var(--ink);fill:currentColor;font:inherit;font-size:14px;font-weight:800;letter-spacing:.01em;cursor:pointer;transition:transform .12s ease,background .16s ease;min-height:44px}.back-btn:active{transform:scale(.94);background:#3a2e4a29}.back-btn-word{padding-right:2px}.teeth path{fill:var(--wall);stroke:var(--disc);stroke-width:1.1;stroke-linejoin:round}.hole-glow{transform-origin:0 0;animation:hole-breathe 9s ease-in-out infinite}@keyframes hole-breathe{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.1);opacity:1}}@media (prefers-reduced-motion: reduce){.hole-glow{animation:none}}.map-studio{display:flex;justify-content:center;padding:30px 0 42px;color:var(--ink);opacity:.22;transition:opacity .16s ease;-webkit-tap-highlight-color:transparent}.map-studio:active{opacity:.4}@media (hover: hover){.map-studio:hover{opacity:.4}}.map-studio svg{width:96px;height:auto}.ball-eyes-react{transform-box:fill-box;transform-origin:50% 50%}.ball-oof .ball-eyes-react{animation:ball-oof .46s cubic-bezier(.22,1,.3,1)}@keyframes ball-oof{0%{transform:scaleY(1) translateY(0)}18%{transform:scaleY(.5) translateY(6%)}55%{transform:scaleY(.62) translateY(4%)}to{transform:scaleY(1) translateY(0)}}.ball-oof .mouth-calm{animation:mouth-oof .46s cubic-bezier(.22,1,.3,1)}@keyframes mouth-oof{0%,to{transform:scaleX(1) translateY(0)}18%,55%{transform:scaleX(.66) translateY(5%)}}@media (prefers-reduced-motion: reduce){.ball-oof .ball-eyes-react,.ball-oof .mouth-calm{animation:none}}.portal-near .portal-live .portal-ring{transform:scale(1.14);opacity:1}.portal-near .portal-live .portal-mouth{transform:scale(1.07)}.portal-live .portal-ring,.portal-live .portal-mouth{transform-box:fill-box;transform-origin:50% 50%;transition:transform .18s cubic-bezier(.2,1,.3,1),opacity .18s ease}@media (prefers-reduced-motion: reduce){.portal-live .portal-ring,.portal-live .portal-mouth{transition:none}}.plate{fill:color-mix(in srgb,var(--disc) 88%,#3a2e4a)}.plate-edge{fill:none;stroke:#3a2e4a57;stroke-width:1.2}
