@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:400;src:url(./fredoka-latin-400-normal-17JuUzdy.woff2)format("woff2"),url(./fredoka-latin-400-normal-DbXSrOeS.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:500;src:url(./fredoka-latin-500-normal-B0JifZgm.woff2)format("woff2"),url(./fredoka-latin-500-normal-BL692wg7.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:600;src:url(./fredoka-latin-600-normal-C4zohCW5.woff2)format("woff2"),url(./fredoka-latin-600-normal-CcrEjrB4.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:700;src:url(./fredoka-latin-700-normal-BOIZVyIN.woff2)format("woff2"),url(./fredoka-latin-700-normal-C8FeHd3X.woff)format("woff")}:root{--ink:#2c3b43;--ink-soft:#5b6b70;--cream:#fbf6ec;--cream-2:#f3ecdd;--panel:#fbf6ecf0;--panel-line:#2c3b431a;--teal:#5f9f99;--teal-deep:#3f7e78;--coral:#e0907c;--butter:#f0cb6c;--sage:#9dbd8d;--sky:#a7cbdc;--star:#f1c75f;--shadow:0 10px 30px #1c282e2e, 0 2px 6px #1c282e1f;--radius:22px;--font:"Fredoka", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;--accent:var(--teal)}*{box-sizing:border-box}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;background:#1d2a33;margin:0;overflow:hidden}:root{--app-w:100vw;--app-h:100vh}@supports (height:100dvh){:root{--app-h:100dvh}}#app{width:var(--app-w);height:var(--app-h);touch-action:none;position:fixed;top:0;left:0;overflow:hidden}#game-canvas{outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}#ui{pointer-events:none;position:absolute;inset:0}#ui>*{pointer-events:auto}#ui .passthrough,#ui .passthrough *{pointer-events:none}button{font-family:inherit}.btn{appearance:none;letter-spacing:.01em;color:var(--ink);background:var(--cream);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.55em;min-height:48px;padding:.72em 1.5em;font-size:1.15rem;font-weight:600;transition:transform .12s,box-shadow .12s,background .15s;display:inline-flex;box-shadow:0 4px #2c3b4329,0 8px 18px #1c282e24}.btn svg{flex:none;width:1.25em;height:1.25em}.btn:hover{transform:translateY(-2px);box-shadow:0 6px #2c3b4329,0 12px 22px #1c282e29}.btn:active{transform:translateY(2px);box-shadow:0 2px #2c3b4329,0 4px 10px #1c282e24}.btn:focus-visible{outline:3px solid var(--butter);outline-offset:3px}.btn.primary{background:var(--teal);color:#fff;box-shadow:0 4px 0 var(--teal-deep), 0 8px 18px #1c282e2e}.btn.primary:hover{box-shadow:0 6px 0 var(--teal-deep), 0 12px 22px #1c282e33}.btn.primary:active{box-shadow:0 2px 0 var(--teal-deep), 0 4px 10px #1c282e2e}.btn.big{padding:.7em 1.9em;font-size:1.5rem}.btn.ghost{color:var(--cream);box-shadow:none;background:#fbf6ec2e;border:2px solid #fbf6ec80}.btn.small{min-height:40px;padding:.5em 1em;font-size:.95rem}.btn[disabled]{opacity:.5;pointer-events:none}.icon-btn{appearance:none;cursor:pointer;background:var(--cream);width:52px;height:52px;color:var(--ink);border:0;border-radius:50%;place-items:center;transition:transform .12s;display:grid;box-shadow:0 3px #2c3b4329,0 6px 14px #1c282e24}.icon-btn svg{width:26px;height:26px}.icon-btn:hover{transform:translateY(-2px)}.icon-btn:focus-visible{outline:3px solid var(--butter);outline-offset:3px}.panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid #fff9}.screen{opacity:0;justify-content:center;align-items:center;transition:opacity .35s;display:flex;position:absolute;inset:0}.screen.show{opacity:1}.boot{color:var(--cream);cursor:pointer;background:radial-gradient(120% 90% at 50% 40%,#33505a 0%,#1d2a33 70%);flex-direction:column;gap:28px}.boot .logo-small{letter-spacing:.01em;font-size:clamp(2.4rem,6vw,4.5rem);font-weight:700}.boot .tap{opacity:.85;font-size:1.3rem;animation:2.2s ease-in-out infinite breathe}.boot .loading{opacity:.6;font-size:1rem}@keyframes breathe{0%,to{opacity:.45;transform:scale(.98)}50%{opacity:1;transform:scale(1)}}.title{flex-direction:column;justify-content:space-between;padding:6vh 4vw 7vh}.logo{color:var(--cream);text-align:center;letter-spacing:.005em;-webkit-text-stroke:.11em #3f7e78;paint-order:stroke fill;text-shadow:0 .09em #2f625d,0 .2em .35em #141e244d;font-size:clamp(3.6rem,11vw,8.5rem);font-weight:700;line-height:.95;animation:.9s cubic-bezier(.2,1.4,.4,1) both logoIn}.logo .bang{color:var(--butter);transform-origin:50% 90%;animation:3.2s ease-in-out 1.2s infinite wiggle;display:inline-block}.logo .sub{letter-spacing:.08em;text-transform:uppercase;color:#fbf6ec;-webkit-text-stroke:0;text-shadow:0 2px #2f625de6,0 3px 10px #141e2459;margin-top:.9em;font-size:.2em;font-weight:600;display:block}.logo .bang{-webkit-text-stroke-color:#b98a3a}@keyframes logoIn{0%{opacity:0;transform:translateY(-30px)scale(.85)}to{opacity:1;transform:none}}@keyframes wiggle{0%,88%,to{transform:rotate(0)}92%{transform:rotate(10deg)}96%{transform:rotate(-6deg)}}.title-buttons{flex-direction:column;align-items:center;gap:14px;display:flex}.title-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.title .corner{color:#fbf6ecb3;font-size:.85rem;position:absolute;bottom:20px;right:22px}.map{background:#dfe8e1}.map svg.mapart{width:100%;height:100%;position:absolute;inset:0}.map .map-top{justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;top:18px;left:22px;right:22px}.map .map-title{color:var(--ink);background:var(--panel);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:10px;padding:8px 22px;font-size:clamp(1.5rem,3vw,2.2rem);font-weight:700;display:flex}.map .map-title svg{width:28px;height:28px;color:var(--teal)}.map .star-total{background:var(--panel);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:1.2rem;font-weight:600;display:flex}.map .star-total svg{width:24px;height:24px;color:var(--star)}.map-node{cursor:pointer;color:var(--ink);background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;padding:0;display:flex;position:absolute;transform:translate(-50%,-50%)}.map-node .disc{background:var(--cream);border:5px solid var(--node-accent,var(--teal));border-radius:50%;place-items:center;width:clamp(64px,8vw,88px);height:clamp(64px,8vw,88px);transition:transform .15s;display:grid;box-shadow:0 5px #2c3b4333,0 10px 22px #1c282e33}.map-node .disc svg{width:55%;height:55%;color:var(--node-accent,var(--teal))}.map-node:hover .disc,.map-node:focus-visible .disc{transform:scale(1.08)}.map-node:focus-visible{outline:none}.map-node:focus-visible .disc{outline:4px solid var(--butter);outline-offset:3px}.map-node .label{background:var(--panel);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:clamp(.85rem,1.4vw,1.05rem);font-weight:600;box-shadow:0 3px 10px #1c282e24}.map-node .stars{gap:2px;display:flex}.map-node .stars svg{width:18px;height:18px}.map-node.locked .disc{filter:saturate(.3);background:#e6e2d8;border-color:#b9b5aa}.map-node.locked .disc svg{color:#9a968b}.map-node.locked .label{opacity:.75}.map-node.current .disc{animation:1.8s ease-in-out infinite nodePulse}@keyframes nodePulse{0%,to{box-shadow:0 5px #2c3b4333,0 0 #f0cb6c99}50%{box-shadow:0 5px #2c3b4333,0 0 0 14px #f0cb6c00}}.map .ace-token{z-index:5;pointer-events:none;filter:drop-shadow(0 6px 6px #1c282e4d);width:54px;height:54px;transition:left .9s cubic-bezier(.4,1.4,.5,1),top .9s cubic-bezier(.4,1.4,.5,1);animation:1.6s ease-in-out infinite hop;position:absolute;transform:translate(-50%,-125%)}@keyframes hop{0%,to{margin-top:0}50%{margin-top:-8px}}.stage-card{opacity:0;flex-direction:column;gap:12px;width:min(420px,100% - 48px);padding:22px 24px 20px;transition:transform .3s,opacity .3s;display:flex;position:absolute;bottom:24px;right:24px;transform:translateY(20px)}.stage-card.show{opacity:1;transform:none}.stage-card h2{align-items:center;gap:10px;margin:0;font-size:1.9rem;line-height:1.05;display:flex}.stage-card h2 svg{width:34px;height:34px;color:var(--card-accent,var(--teal))}.stage-card p{color:var(--ink-soft);margin:0;font-size:1.05rem;line-height:1.35}.stage-card ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.stage-card li{align-items:center;gap:10px;font-size:1rem;display:flex}.stage-card li svg{flex:none;width:22px;height:22px}.stage-card li.got{color:var(--teal-deep)}.stage-card .card-actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.stage-card .lock-note{background:var(--cream-2);color:var(--ink-soft);border-radius:14px;align-items:center;gap:10px;padding:10px 14px;display:flex}.stage-card .lock-note svg{flex:none;width:22px;height:22px}.intro{background:radial-gradient(130% 100% at 50% 40%, var(--intro-a,#6f9e98) 0%, var(--intro-b,#2c4a52) 100%);color:var(--cream);text-align:center;flex-direction:column;gap:18px;padding:20px}.intro .world{letter-spacing:.14em;text-transform:uppercase;opacity:.85;font-size:1.1rem}.intro h1{text-shadow:0 6px #00000026;margin:0;font-size:clamp(3rem,9vw,6rem);line-height:1;animation:.8s cubic-bezier(.2,1.4,.4,1) both logoIn}.intro h1 svg{vertical-align:-.08em;width:.8em;height:.8em;margin-right:.15em}.intro p{opacity:.92;max-width:34em;margin:0;font-size:clamp(1.1rem,2.4vw,1.5rem)}.intro .goals{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;display:flex}.intro .goal{background:#fbf6ec29;border:1.5px solid #fbf6ec59;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:1.05rem;display:flex}.intro .goal svg{width:22px;height:22px}.intro .go{margin-top:18px}.intro .loading-dots{opacity:.7;font-size:1rem}#ui>.hud,#ui .hud,#ui .hud *{pointer-events:none}.hud{position:absolute;inset:0}.crosshair{width:34px;height:34px;transition:transform .12s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair .ring{border:2.5px solid #fbf6ece6;border-radius:50%;transition:inset .12s,border-color .12s;position:absolute;inset:6px;box-shadow:0 0 0 1.5px #2c3b4340}.crosshair .dot{background:#fbf6ecf2;border-radius:50%;width:5px;height:5px;margin:-2.5px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 1.5px #2c3b4340}.crosshair.on .ring{border-color:var(--butter);inset:1px}.crosshair.on{transform:translate(-50%,-50%)scale(1.08)}.crosshair.fire{transform:translate(-50%,-50%)scale(1.22)}.crosshair .charge{background:conic-gradient(#fbf6ecd9 calc(var(--c,0) * 360deg), transparent 0);opacity:0;border-radius:50%;transition:opacity .15s;position:absolute;inset:-6px;-webkit-mask:radial-gradient(circle,#0000 55%,#000 57%);mask:radial-gradient(circle,#0000 55%,#000 57%)}.crosshair.charging .charge{opacity:1}.aim-label{color:var(--cream);text-shadow:0 1px 4px #141e2499;opacity:0;white-space:nowrap;font-size:.95rem;font-weight:600;transition:opacity .15s;position:absolute;top:calc(50% + 30px);left:50%;transform:translate(-50%)}.aim-label.show{opacity:.95}.objectives{flex-direction:column;gap:8px;width:min(360px,42vw);padding:14px 16px 12px;display:flex;position:absolute;top:18px;left:18px}.objectives .obj-stage{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:8px;font-size:.85rem;display:flex}.objectives .obj-stage svg{width:18px;height:18px;color:var(--accent)}.obj{align-items:center;gap:10px;font-size:1.08rem;font-weight:500;line-height:1.2;transition:opacity .3s;display:flex}.obj svg{width:24px;height:24px;color:var(--accent);flex:none}.obj .count{font-variant-numeric:tabular-nums;background:var(--cream-2);border-radius:999px;margin-left:auto;padding:2px 10px;font-size:.98rem;font-weight:600}.obj.main{font-size:1.2rem;font-weight:600}.obj.done{opacity:.55}.obj.done .count{background:var(--sage);color:#fff}.obj.flash{animation:.7s objFlash}@keyframes objFlash{0%{transform:scale(1)}30%{color:var(--teal-deep);transform:scale(1.06)}to{transform:scale(1)}}.obj-sep{background:var(--panel-line);height:1px;margin:2px 0}.stars-hud{border-radius:999px;gap:6px;padding:10px 14px;display:flex;position:absolute;top:18px;right:18px}.stars-hud svg{width:30px;height:30px;transition:transform .3s cubic-bezier(.3,1.8,.5,1)}.stars-hud svg.got{transform:scale(1.12)}.blaster-bar{border-radius:26px;gap:10px;padding:10px 12px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.bslot{background:var(--cream-2);border-radius:18px;place-items:center;width:64px;height:64px;transition:transform .15s,background .15s,box-shadow .15s;display:grid;position:relative}.bslot svg{width:36px;height:36px;color:var(--slot,var(--teal))}.bslot .key{color:var(--ink-soft);font-size:.75rem;font-weight:600;position:absolute;top:4px;left:6px}.bslot.active{box-shadow:0 0 0 3px var(--slot,var(--teal)), 0 8px 16px #1c282e2e;background:#fff;transform:translateY(-6px)scale(1.06)}.bslot.locked{opacity:.35}.bslot.locked svg{filter:grayscale()}.blaster-name{background:var(--panel);box-shadow:var(--shadow);opacity:0;white-space:nowrap;border-radius:999px;padding:6px 16px;font-size:1.05rem;font-weight:600;transition:opacity .25s;position:absolute;bottom:104px;left:50%;transform:translate(-50%)}.blaster-name.show{opacity:1}.timer{opacity:0;border-radius:999px;align-items:center;gap:10px;padding:8px 20px;font-size:1.3rem;font-weight:600;transition:opacity .2s;display:flex;position:absolute;top:18px;left:50%;transform:translate(-50%)}.timer.show{opacity:1}.timer svg{width:26px;height:26px;color:var(--coral)}.timer .t{font-variant-numeric:tabular-nums;text-align:right;min-width:3.2em}.timer .lbl{color:var(--ink-soft);font-size:1rem;font-weight:500}.timer.low .t{color:var(--coral)}.cheer{color:var(--cream);text-shadow:0 3px #2c3b434d,0 6px 18px #141e2459;white-space:nowrap;font-size:clamp(1.6rem,3.6vw,2.6rem);font-weight:700;animation:1.1s forwards cheerPop;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes cheerPop{0%{opacity:0;transform:translate(-50%,-30%)scale(.6)}18%{opacity:1;transform:translate(-50%,-50%)scale(1.08)}30%{transform:translate(-50%,-50%)scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-80%)scale(.95)}}.banner{text-align:center;border-radius:28px;padding:16px 34px 14px;animation:.5s cubic-bezier(.2,1.4,.4,1) both bannerIn;position:absolute;top:22%;left:50%;transform:translate(-50%)}.banner.out{animation:.4s forwards bannerOut}.banner h3{margin:0;font-size:clamp(1.7rem,3.4vw,2.5rem);line-height:1.05}.banner p{color:var(--ink-soft);margin:6px 0 0;font-size:1.1rem}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-20px)scale(.9)}to{opacity:1;transform:translate(-50%)}}@keyframes bannerOut{to{opacity:0;transform:translate(-50%,-14px)scale(.96)}}.hint{text-align:center;opacity:0;border-radius:20px;align-items:center;gap:10px;max-width:min(720px,90vw);padding:12px 22px;font-size:1.15rem;font-weight:500;line-height:1.5;transition:opacity .3s,transform .3s;display:flex;position:absolute;bottom:112px;left:50%;transform:translate(-50%)}.hint.show{opacity:1;transform:translate(-50%)translateY(-4px)}.kbd{vertical-align:.05em;background:#fff;border:1.5px solid #2c3b4333;border-radius:8px;justify-content:center;align-items:center;min-width:1.9em;height:1.8em;margin:0 .12em;padding:0 .45em;font-size:.9em;font-weight:600;line-height:1;display:inline-flex;box-shadow:0 2px #2c3b4333}.kbd svg{width:1.1em;height:1.1em}.caption{opacity:0;border-radius:999px;align-items:center;gap:12px;max-width:min(760px,92vw);padding:10px 18px 10px 10px;font-size:1.15rem;transition:opacity .25s;display:flex;position:absolute;bottom:186px;left:50%;transform:translate(-50%)}.caption.show{opacity:1}.caption .who{color:#fff;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;font-size:1rem;font-weight:700;display:grid}.caption .who.ace{background:var(--butter);color:var(--ink)}.caption .who.narrator{background:var(--teal)}.caption .who svg{width:24px;height:24px}.helmet{pointer-events:none;opacity:0;background:radial-gradient(75% 70%,#0000 62%,#aadce11f 74%,#c8ecee59 86%,#e6f8f88c 100%);transition:opacity .6s;position:absolute;inset:0}.helmet.show{opacity:1}.helmet:after{content:"";background:radial-gradient(#ffffff47,#0000 70%);border-radius:50%;width:18%;height:9%;position:absolute;top:7%;left:8%;transform:rotate(-18deg)}.click-to-look{border-radius:999px;align-items:center;gap:8px;padding:10px 18px;font-size:1.05rem;font-weight:500;display:none;position:absolute;top:calc(50% - 74px);left:50%;transform:translate(-50%)}.click-to-look.show{display:flex}.click-to-look svg{width:22px;height:22px}.toast-unlock{align-items:center;gap:18px;padding:20px 28px;animation:.5s cubic-bezier(.2,1.4,.4,1) both bannerIn;display:flex;position:absolute;top:30%;left:50%;transform:translate(-50%)}.toast-unlock svg{width:64px;height:64px}.modal-bg{-webkit-backdrop-filter:blur(6px);background:#1c282e73;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.modal{width:min(560px,100%);max-height:calc(var(--app-h) - 40px);flex-direction:column;gap:14px;padding:26px 28px 24px;animation:.3s cubic-bezier(.2,1.3,.4,1) both modalIn;display:flex;overflow:auto}@keyframes modalIn{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:none}}.modal h2{align-items:center;gap:12px;margin:0 0 4px;font-size:2rem;display:flex}.modal h2 svg{width:34px;height:34px;color:var(--teal)}.modal .stack{flex-direction:column;gap:12px;display:flex}.modal .stack .btn{justify-content:flex-start;width:100%;padding-left:1.2em}.modal .row{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.setting{border-bottom:1px solid var(--panel-line);grid-template-columns:1fr auto;align-items:center;gap:6px 16px;padding:10px 0;display:grid}.setting:last-of-type{border-bottom:0}.setting label{align-items:center;gap:10px;font-size:1.1rem;font-weight:500;display:flex}.setting label svg{width:22px;height:22px;color:var(--teal)}.setting .desc{color:var(--ink-soft);grid-column:1/-1;margin-top:-2px;font-size:.92rem}.setting .val{font-variant-numeric:tabular-nums;text-align:right;min-width:3em;font-weight:600}.setting .slider-row{grid-column:1/-1;align-items:center;gap:14px;display:flex}input[type=range]{appearance:none;background:linear-gradient(to right, var(--teal) var(--p,50%), #e2d9c6 var(--p,50%));cursor:pointer;border-radius:999px;outline:none;flex:1;height:12px}input[type=range]::-webkit-slider-thumb{appearance:none;border:3px solid var(--teal);background:#fff;border-radius:50%;width:28px;height:28px;box-shadow:0 2px 6px #1c282e40}input[type=range]::-moz-range-thumb{border:3px solid var(--teal);background:#fff;border-radius:50%;width:24px;height:24px}input[type=range]:focus-visible{outline:3px solid var(--butter);outline-offset:4px}.toggle{appearance:none;background:var(--cream-2);cursor:pointer;border:1.5px solid #2c3b4326;border-radius:999px;flex:none;width:62px;height:34px;transition:background .2s;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .2s cubic-bezier(.3,1.5,.5,1);position:absolute;top:3px;left:3px;box-shadow:0 2px 4px #1c282e40}.toggle:checked{background:var(--teal)}.toggle:checked:after{transform:translate(28px)}.toggle:focus-visible{outline:3px solid var(--butter);outline-offset:3px}.seg{background:var(--cream-2);border-radius:999px;gap:4px;padding:4px;display:inline-flex}.seg button{appearance:none;font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:999px;min-height:36px;padding:6px 14px;font-weight:600}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 2px 6px #1c282e26}.controls-grid{grid-template-columns:auto 1fr;align-items:center;gap:10px 18px;font-size:1.08rem;display:grid}.controls-grid .keys{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.controls-grid .what{color:var(--ink)}.results{justify-content:flex-end;padding:4vh 5vw}.results .res-panel{flex-direction:column;gap:14px;width:min(480px,92vw);padding:26px 28px;animation:.4s cubic-bezier(.2,1.3,.4,1) both modalIn;display:flex}.results h2{margin:0;font-size:2.3rem;line-height:1.05}.results .res-sub{color:var(--ink-soft);margin:-6px 0 0;font-size:1.1rem}.res-stars{justify-content:center;gap:14px;padding:6px 0;display:flex}.res-stars .rs{text-align:center;width:120px;color:var(--ink-soft);flex-direction:column;align-items:center;gap:6px;font-size:.92rem;line-height:1.2;display:flex}.res-stars svg{opacity:.25;width:68px;height:68px;transition:transform .45s cubic-bezier(.3,1.8,.5,1),opacity .3s;transform:scale(.6)}.res-stars .rs.got svg{opacity:1;transform:scale(1)}.res-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.res-list li{align-items:center;gap:10px;font-size:1.02rem;display:flex}.res-list li svg{flex:none;width:22px;height:22px}.res-reward{background:var(--cream-2);border-radius:18px;align-items:center;gap:14px;padding:12px 16px;animation:.5s cubic-bezier(.2,1.3,.4,1) 1.4s both modalIn;display:flex}.res-reward svg{flex:none;width:52px;height:52px}.res-reward b{font-size:1.15rem;display:block}.res-reward span{color:var(--ink-soft);font-size:.98rem}.res-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.wipe{pointer-events:none;z-index:50;position:absolute;inset:0;overflow:hidden}.wipe .b{background:var(--wipe,#f3ecdd);border-radius:50%;position:absolute;transform:scale(0)}.wipe.in .b{animation:.55s cubic-bezier(.5,0,.3,1) forwards wipeIn}.wipe.out .b{animation:.55s cubic-bezier(.5,0,.3,1) forwards wipeOut;transform:scale(1)}@keyframes wipeIn{to{transform:scale(1)}}@keyframes wipeOut{0%{transform:scale(1)}to{transform:scale(0)}}.ending{text-align:center;color:var(--cream);text-shadow:0 3px #2f625d99;background:radial-gradient(90% 70% at 50% 55%,#3f7e78b8,#3f7e7826 70%,#0000);flex-direction:column;gap:16px;padding:20px}.ending h1{margin:0;font-size:clamp(2.6rem,7vw,5rem)}.ending p{max-width:30em;margin:0;font-size:1.3rem}@media (width<=760px){.objectives{width:calc(var(--app-w) - 120px);padding:10px 12px}.obj{font-size:.95rem}.obj.main{font-size:1.02rem}.bslot{width:52px;height:52px}.bslot svg{width:28px;height:28px}.stars-hud svg{width:22px;height:22px}.hint{font-size:1rem;bottom:92px}.caption{font-size:1rem;bottom:150px}.stage-card{width:auto;bottom:12px;left:12px;right:12px}.results{justify-content:center}.res-stars .rs{width:90px}.res-stars svg{width:52px;height:52px}}@media (height<=560px){.title{padding:3vh 4vw}.logo{font-size:clamp(2.8rem,9vh,5rem)}.modal{padding:18px 20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.touch-ui{z-index:4;touch-action:none;position:absolute;inset:0}.touch-zone{position:absolute;top:0;bottom:0}.touch-zone.left{width:45%;left:0}.touch-zone.right{width:55%;right:0}.touch-ui .stick{pointer-events:none;background:#fbf6ec38;border:2px solid #fbf6ec99;border-radius:50%;width:132px;height:132px;margin:-66px 0 0 -66px;display:none;position:absolute}.touch-ui .stick.show{display:block}.touch-ui .knob{background:#fbf6ece6;border-radius:50%;width:58px;height:58px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 10px #141e2440}.tbtn{appearance:none;color:var(--ink);font:600 .8rem var(--font);touch-action:none;background:#fbf6ecd9;border:0;border-radius:50%;place-items:center;display:grid;position:absolute;box-shadow:0 4px #2c3b432e,0 8px 18px #1c282e33}.tbtn svg{width:46%;height:46%}.tbtn span{font-size:.72rem;position:absolute;bottom:6px}.tbtn.on{background:#fff;transform:scale(.94)}.tbtn.fire{width:96px;height:96px;color:var(--teal-deep);bottom:120px;right:28px}.tbtn.jump{width:66px;height:66px;bottom:96px;right:136px}.tbtn.down{width:58px;height:58px;bottom:172px;right:136px}.tbtn.swap{width:54px;height:54px;bottom:228px;right:40px}.tbtn.tpause{width:48px;height:48px;margin-right:-24px;top:14px;right:50%}@media (height<=520px){.objectives{gap:4px;width:min(300px,40vw);padding:8px 12px;top:10px;left:10px}.objectives .obj-stage{font-size:.72rem}.obj{gap:8px;font-size:.88rem}.obj svg{width:18px;height:18px}.obj.main{font-size:.98rem}.obj .count{padding:1px 8px;font-size:.82rem}.stars-hud{padding:6px 10px;top:10px;right:10px}.stars-hud svg{width:22px;height:22px}.blaster-bar{border-radius:18px;gap:6px;padding:6px 8px;bottom:8px}.bslot{border-radius:12px;width:44px;height:44px}.bslot svg{width:24px;height:24px}.bslot .key{font-size:.62rem;top:2px;left:4px}.blaster-name{font-size:.9rem;bottom:66px}.hint{padding:8px 14px;font-size:.92rem;bottom:66px}.caption{padding:6px 12px 6px 6px;font-size:.92rem;bottom:116px}.caption .who{width:30px;height:30px}.banner{padding:10px 22px;top:14%}.banner h3{font-size:1.4rem}.banner p{font-size:.92rem}.timer{padding:6px 14px;font-size:1.05rem;top:10px}.tbtn.fire{width:78px;height:78px;bottom:70px;right:18px}.tbtn.jump{width:56px;height:56px;bottom:50px;right:106px}.tbtn.down{width:50px;height:50px;bottom:114px;right:106px}.tbtn.swap{width:46px;height:46px;bottom:160px;right:30px}.tbtn.tpause{width:40px;height:40px;margin-right:-20px;top:8px}.crosshair{width:28px;height:28px}}@media (width<=600px) and (orientation:portrait){body.touch .hint{justify-content:center;max-width:none;padding:10px 14px;font-size:1rem;bottom:262px;left:12px;right:12px;transform:none}body.touch .hint.show{transform:translateY(-4px)}body.touch .caption{max-width:none;font-size:.98rem;bottom:330px;left:12px;right:12px;transform:none}body.touch .blaster-name{bottom:214px}body.touch .tbtn.fire{width:84px;height:84px;bottom:104px;right:16px}body.touch .tbtn.jump{width:62px;height:62px;bottom:100px;right:112px}body.touch .tbtn.down{width:54px;height:54px;bottom:172px;right:112px}body.touch .tbtn.swap{width:50px;height:50px;bottom:200px;right:30px}body.touch .tbtn.tpause{width:44px;height:44px;margin-right:0;top:84px;right:18px}body.touch .objectives{width:calc(var(--app-w) - 150px)}body.touch .banner{width:calc(var(--app-w) - 24px);top:30%}body.touch .timer{top:140px}}.rotate-prompt{z-index:80;padding:max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));pointer-events:auto;background:radial-gradient(120% 90% at 50% 35%,#6fa8a3 0%,#2f625d 100%);justify-content:center;align-items:center;display:none;position:absolute;inset:0}.rotate-prompt.show{animation:.35s both rpIn;display:flex}@keyframes rpIn{0%{opacity:0}to{opacity:1}}.rp-card{text-align:center;width:min(380px,100%);color:var(--cream);flex-direction:column;align-items:center;gap:12px;display:flex}.rp-card h2{text-shadow:0 3px #1f423e99;margin:0;font-size:clamp(1.7rem,7vw,2.3rem);line-height:1.05}.rp-card p{opacity:.95;margin:0 0 6px;font-size:1.12rem;line-height:1.4}.rp-art{width:min(260px,70vw)}.rp-svg{width:100%;height:auto;overflow:visible}.rp-phone{transform-box:fill-box;transform-origin:50%;animation:3.2s cubic-bezier(.5,0,.3,1) infinite rpTurn}@keyframes rpTurn{0%,18%{transform:rotate(0)}45%,80%{transform:rotate(90deg)}to{transform:rotate(0)}}.rp-ace{transform-box:fill-box;transform-origin:bottom;animation:1.6s ease-in-out infinite rpBob}@keyframes rpBob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.rp-wave{transform-box:fill-box;transform-origin:0 100%;animation:.8s ease-in-out infinite alternate rpWave}@keyframes rpWave{0%{transform:rotate(-12deg)}to{transform:rotate(16deg)}}.rp-arrow{animation:3.2s ease-in-out infinite rpArrow}@keyframes rpArrow{0%,15%{opacity:.2}30%,60%{opacity:1}85%,to{opacity:.2}}.rotate-prompt .btn{margin-top:4px}.inapp-tip{left:50%;top:max(12px, env(safe-area-inset-top));width:min(520px, calc(var(--app-w) - 24px));z-index:40;align-items:center;gap:10px;padding:10px 10px 10px 14px;font-size:.95rem;line-height:1.35;display:flex;position:absolute;transform:translate(-50%)}.inapp-tip svg{width:22px;height:22px;color:var(--teal);flex:none}.inapp-tip .icon-btn{width:36px;height:36px;box-shadow:none;background:var(--cream-2);flex:none}.inapp-tip .icon-btn svg{width:18px;height:18px;color:var(--ink)}.obj-toggle{display:none}body.touch #ui .hud .objectives{pointer-events:auto;z-index:6;cursor:pointer;top:max(10px, env(safe-area-inset-top));left:max(10px, env(safe-area-inset-left));width:auto;max-width:min(340px, calc(var(--app-w) - 190px));gap:4px;padding:7px 12px}body.touch .objectives .obj-stage,body.touch .objectives .obj-sep,body.touch .objectives .obj:not(.main){display:none}body.touch .objectives.expanded .obj-stage,body.touch .objectives.expanded .obj-sep{display:flex}body.touch .objectives.expanded .obj-sep{display:block}body.touch .objectives.expanded .obj:not(.main){display:flex}body.touch .objectives .obj.main{gap:8px;font-size:.95rem}body.touch .objectives .obj svg{width:20px;height:20px}body.touch .objectives .obj .count{padding:1px 8px;font-size:.82rem}body.touch .obj-toggle{background:var(--teal);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:.8rem;font-weight:700;display:grid;position:absolute;bottom:-9px;right:-9px;box-shadow:0 2px 6px #1c282e40}body.touch .obj-toggle .ex{display:none}body.touch .objectives.expanded .obj-toggle .ex{display:block}body.touch .objectives.expanded .obj-toggle .co{display:none}body.touch .stars-hud{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right));padding:6px 10px}body.touch .stars-hud svg{width:22px;height:22px}body.touch .blaster-bar{bottom:max(8px, env(safe-area-inset-bottom))}body.touch .tbtn.fire,body.touch .tbtn.jump,body.touch .tbtn.down,body.touch .tbtn.swap{margin-right:env(safe-area-inset-right);margin-bottom:env(safe-area-inset-bottom)}body.touch .tbtn.tpause{top:max(64px, calc(env(safe-area-inset-top) + 56px));right:max(16px, env(safe-area-inset-right));width:44px;height:44px;margin-right:0}body.touch .touch-zone.left{left:env(safe-area-inset-left)}.fs-ring{pointer-events:none;background:#fbf6ec1f;border:2.5px dashed #fbf6ecbf;border-radius:50%;width:156px;height:156px;margin:-78px 0 0 -78px;transition:border-color .15s,background .15s;display:none;position:absolute}.fs-ring.show{display:block}.fs-ring.edge{border-color:var(--butter);background:#f0cb6c29;border-style:solid}.tbtn.fire{z-index:2;transition:transform 60ms linear}body.touch #ui .hud .blaster-bar{pointer-events:auto;z-index:6}body.touch #ui .hud .blaster-bar .bslot{pointer-events:auto;cursor:pointer;min-width:44px;min-height:44px}body.touch .bslot.nudge{animation:.45s slotNudge}@keyframes slotNudge{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-2px)}}.app-version{left:max(14px, env(safe-area-inset-left));bottom:max(12px, env(safe-area-inset-bottom));color:#2c3b438c;letter-spacing:.04em;pointer-events:none;font-size:.78rem;font-weight:500;position:absolute}@media (height<=520px) and (orientation:landscape){body.touch .tbtn.tpause{top:max(10px, env(safe-area-inset-top));right:max(124px, calc(env(safe-area-inset-right) + 114px));width:40px;height:40px}body.touch .tbtn.swap{width:46px;height:46px;bottom:156px;right:34px}}@media (height<=300px) and (orientation:landscape){body.touch .tbtn.fire{width:70px;height:70px;bottom:58px}body.touch .tbtn.swap{width:42px;height:42px;bottom:134px;right:30px}body.touch .tbtn.jump{bottom:40px}body.touch .tbtn.down{bottom:100px}}body.touch .blaster-name{top:max(56px, calc(env(safe-area-inset-top) + 50px));bottom:auto}@media (height<=520px){.stage-card{gap:6px;width:min(330px,44vw);padding:12px 16px;bottom:12px;right:12px}.stage-card h2{font-size:1.3rem}.stage-card h2 svg{width:24px;height:24px}.stage-card p{font-size:.88rem}.stage-card li{gap:6px;font-size:.85rem}.stage-card li svg{width:16px;height:16px}.stage-card .btn{min-height:40px;padding:.45em 1.1em;font-size:1rem}.map .map-top{top:8px}.map .map-title{padding:6px 14px;font-size:1.2rem}.map-node .disc{border-width:4px;width:56px;height:56px}.map-node .label{font-size:.8rem}.title{padding:2vh 4vw 3vh}.title-buttons{gap:8px}.title .btn.big{min-height:44px;padding:.5em 1.5em;font-size:1.2rem}.title .btn{min-height:44px;padding:.5em 1.1em;font-size:1rem}.title .corner{top:max(10px, env(safe-area-inset-top));bottom:auto;right:max(12px, env(safe-area-inset-right))}}.hud .msg{display:none}body.touch .hud .banners,body.touch .hud .hint,body.touch .hud .caption{display:none!important}body.touch .hud .msg{z-index:3;text-align:center;width:max-content;max-width:calc(var(--app-w) - 24px);box-sizing:border-box;border-radius:16px;justify-content:center;align-items:center;gap:8px;padding:7px 14px;font-size:.95rem;line-height:1.3;display:none;position:absolute;left:50%;transform:translate(-50%)}body.touch .hud .msg.show{animation:.25s both msgIn;display:flex}@keyframes msgIn{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)}}body.touch .hud .msg span{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}body.touch .hud .msg.kind-banner{flex-direction:column;gap:1px;padding:6px 16px}body.touch .hud .msg.kind-banner b{font-size:1.05rem;line-height:1.2}body.touch .hud .msg.kind-banner span{color:var(--ink-soft);-webkit-line-clamp:1;line-clamp:1;font-size:.85rem}body.touch .hud .msg .who{border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:.8rem;font-style:normal;font-weight:700;display:grid}body.touch .hud .msg .who.ace{background:var(--butter);color:var(--ink)}body.touch .hud .msg .who.narrator{background:var(--teal);color:#fff}body.touch .hud .msg .who svg{width:16px;height:16px}body.touch .hud .msg .kbd{font-size:.82em}body.touch.portrait .hud .msg{top:calc(max(10px, env(safe-area-inset-top)) + 96px)}body.touch.portrait .tbtn.tpause{top:max(10px, env(safe-area-inset-top));right:max(120px, calc(env(safe-area-inset-right) + 110px));width:44px;height:44px;margin-right:0}body.touch.portrait .objectives{max-width:min(340px, calc(var(--app-w) - 190px))}body.touch.landscape .hud .msg{bottom:calc(max(8px, env(safe-area-inset-bottom)) + 66px);max-width:max(220px, calc(var(--app-w) - 390px))}body.touch.landscape .tbtn.tpause{top:max(10px, env(safe-area-inset-top));right:max(124px, calc(env(safe-area-inset-right) + 114px));width:40px;height:40px;margin-right:0}body.touch.landscape .objectives{max-width:min(340px, calc(var(--app-w) - 420px))}body.touch .timer{top:calc(max(10px, env(safe-area-inset-top)) + 46px);left:max(10px, env(safe-area-inset-left));gap:6px;padding:5px 12px;font-size:1rem;transform:none}body.touch .timer svg{width:20px;height:20px}body.touch .timer .lbl{text-overflow:ellipsis;white-space:nowrap;max-width:9em;font-size:.8rem;overflow:hidden}.tbtn.swap span{font-size:.62rem;bottom:4px}.tbtn.swap svg{width:44%;height:44%;margin-top:-6px}body.touch.landscape.vh-short .blaster-bar{bottom:max(8px, env(safe-area-inset-bottom));border-radius:18px;gap:6px;padding:6px 8px}body.touch.landscape.vh-short .bslot{border-radius:12px;width:44px;height:44px}body.touch.landscape.vh-short .bslot svg{width:24px;height:24px}body.touch.landscape.vh-short .tbtn.fire{width:78px;height:78px;bottom:70px;right:18px}body.touch.landscape.vh-short .tbtn.jump{width:56px;height:56px;bottom:50px;right:106px}body.touch.landscape.vh-short .tbtn.down{width:50px;height:50px;bottom:114px;right:106px}body.touch.landscape.vh-short .tbtn.swap{width:46px;height:46px;bottom:158px;right:34px}body.touch.landscape.vh-short .objectives .obj.main{font-size:.9rem}body.touch.landscape.vh-short .stars-hud svg{width:20px;height:20px}body.touch.landscape.vh-short .crosshair{width:28px;height:28px}body.touch.landscape.vh-tiny .tbtn.fire{width:68px;height:68px;bottom:58px}body.touch.landscape.vh-tiny .tbtn.jump{width:52px;height:52px;bottom:40px;right:98px}body.touch.landscape.vh-tiny .tbtn.down{width:46px;height:46px;bottom:98px;right:98px}body.touch.landscape.vh-tiny .tbtn.swap{width:42px;height:42px;bottom:132px;right:30px}body.touch.landscape.vh-tiny .blaster-bar{gap:4px;padding:4px 6px;bottom:4px}body.touch.landscape.vh-tiny .hud .msg{padding:4px 10px;font-size:.76rem;bottom:58px}body.touch.landscape.vh-tiny .hud .msg span{-webkit-line-clamp:2;line-clamp:2}body.touch.landscape.vh-tiny .hud .msg.kind-banner b{font-size:.9rem}body.touch.landscape.vh-tiny .stars-hud{padding:4px 8px}.screen{max-height:var(--app-h)}.intro{justify-content:flex-start;overflow-y:auto}.intro>:first-child{margin-top:auto}.intro>:last-child{margin-bottom:auto}.intro h1{font-size:clamp(1.9rem, calc(var(--app-h) * .13), 6rem)}.intro .go{margin-top:clamp(6px, calc(var(--app-h) * .03), 18px);position:sticky;bottom:6px}.intro{gap:clamp(6px, calc(var(--app-h) * .025), 18px)}.intro p{font-size:clamp(.92rem, calc(var(--app-h) * .035), 1.5rem)}.intro .goal{padding:clamp(4px, calc(var(--app-h) * .012), 8px) 14px;font-size:clamp(.85rem, calc(var(--app-h) * .03), 1.05rem)}.intro .btn.big{font-size:clamp(1.1rem, calc(var(--app-h) * .045), 1.5rem);padding:.55em 1.7em}.logo{font-size:clamp(2.4rem, min(11vw, calc(var(--app-h) * .16)), 8.5rem)}.title{padding:clamp(8px, calc(var(--app-h) * .05), 6vh) 4vw clamp(10px, calc(var(--app-h) * .06), 7vh)}.title .btn.big{font-size:clamp(1.15rem, calc(var(--app-h) * .045), 1.5rem)}.boot .logo-small{font-size:clamp(2rem, min(6vw, calc(var(--app-h) * .12)), 4.5rem)}.modal{max-height:calc(var(--app-h) - 24px)}.modal-bg{padding:12px}.modal>.row:last-child{background:linear-gradient(to bottom, #fbf6ec00, var(--cream) 30%);margin:0 -28px -24px;padding:10px 28px 14px;position:sticky;bottom:-24px}.results .res-panel{max-height:calc(var(--app-h) - 24px);overflow-y:auto}.results .res-actions{background:linear-gradient(to bottom, #fbf6ec00, var(--cream) 30%);margin:0 -28px -26px;padding:10px 28px 14px;position:sticky;bottom:-26px}.stage-card{max-height:calc(var(--app-h) - 76px);overflow-y:auto}.stage-card .card-actions{background:linear-gradient(to bottom, #fbf6ec00, var(--cream) 30%);margin:0 -24px -20px;padding:8px 24px 12px;position:sticky;bottom:-20px}.rp-card{max-height:calc(var(--app-h) - 40px);overflow-y:auto}body.vh-short .results{padding:10px}body.vh-short .results .res-panel{gap:8px;padding:14px 18px}body.vh-short .results h2{font-size:1.6rem}body.vh-short .res-stars svg{width:44px;height:44px}body.vh-short .res-stars .rs{font-size:.78rem}body.vh-short .res-reward{padding:8px 12px}body.vh-short .res-reward svg{width:34px;height:34px}body.vh-short .modal{gap:8px;padding:16px 20px 14px}body.vh-short .modal>.row:last-child{margin:0 -20px -14px;padding:8px 20px 10px;bottom:-14px}body.vh-short .modal h2{font-size:1.5rem}body.vh-short .modal .stack{gap:8px}body.vh-short .modal .stack .btn{min-height:42px;padding-top:.45em;padding-bottom:.45em;font-size:1rem}body.vh-short .setting{padding:6px 0}body.touch .objectives:not(.expanded) .obj.main>span:not(.count){white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}body.touch .objectives:not(.expanded) .obj.main{flex-wrap:nowrap}body.touch.landscape.vh-tiny .hud .msg.kind-banner span{display:none}#ui>.screen{z-index:20}#ui>.modal-bg{z-index:30}.inapp-tip.corner-tip{left:max(12px, env(safe-area-inset-left));top:auto;right:auto;bottom:calc(max(12px, env(safe-area-inset-bottom)) + 24px);width:min(300px, calc(var(--app-w) * .28));align-items:flex-start;gap:8px;padding:8px 6px 8px 10px;font-size:.8rem;line-height:1.3;transform:none}.inapp-tip.corner-tip svg{width:18px;height:18px;margin-top:2px}.inapp-tip.corner-tip .icon-btn{width:30px;height:30px}#ui .inapp-tip.corner-tip.in-flow{width:min(340px, calc(var(--app-w) - 24px));margin-bottom:4px;position:static;transform:none}
