@font-face{font-family:Fredoka;src:url(../fonts/Fredoka.woff2)format("woff2");font-weight:300 700;font-display:swap}:root{--ink:#3a2b52;--ink-soft:#6b5a82;--cream:#fff7e8;--cream-2:#ffefd5;--gold:#ffd166;--gold-deep:#f6ad3c;--pink:#ff9fbd;--pink-deep:#ec6f9a;--lav:#b7a4ff;--lav-deep:#7d66d9;--mint:#91e6c7;--sky:#9fdcff;--line:3px solid var(--ink);--shadow:0 6px 0 var(--ink), 0 16px 34px #24184047;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--gutter:clamp(12px, 2.4vmin, 28px)}*{box-sizing:border-box}html,body{overscroll-behavior:none;background:#20163f;height:100%;margin:0;overflow:hidden}body{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;color:var(--ink);font-family:Fredoka,ui-rounded,SF Pro Rounded,Nunito,system-ui,sans-serif}button{color:inherit;font-family:inherit}#app{position:fixed;inset:0}#scene{outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}#vignette{pointer-events:none;z-index:1;background:radial-gradient(at 50% 45%,#100a2800 42%,#1a0f362e 76%,#140b2c70 100%),linear-gradient(#1b103a33,#0000 18% 78%,#1b103a47);position:absolute;inset:0}#ui{z-index:2;pointer-events:none;font-size:clamp(14px,1.55vh + .42vw,19px);position:absolute;inset:0}.icon{flex:none;width:1.38em;height:1.38em;display:inline-flex}.icon svg{width:100%;height:100%;display:block}.icon.tiny{width:1em;height:1em}.boot-screen{pointer-events:auto;color:var(--cream);text-align:center;z-index:20;background:radial-gradient(circle at 50% 34%,#ffd16626,#0000 28%),linear-gradient(160deg,#2b1c56,#42286b 46%,#1d1746);flex-direction:column;align-content:center;place-items:center;gap:8px;display:none;position:absolute;inset:0}.boot-screen.active{display:flex}.boot-mark{filter:drop-shadow(0 8px 18px #0000004d);width:72px;height:72px;animation:2.4s ease-in-out infinite boot-float}.boot-mark .icon{width:100%;height:100%}.boot-logo{letter-spacing:.01em;text-shadow:0 4px #10082859;font-size:clamp(34px,6vw,62px);font-weight:700}.boot-logo span{color:var(--pink)}.boot-sub{letter-spacing:.32em;opacity:.86;font-size:.74em;font-weight:600}.boot-bar{border:2px solid #fff7e899;border-radius:99px;width:min(280px,64vw);height:12px;margin-top:20px;overflow:hidden}.boot-bar span{background:linear-gradient(90deg, var(--pink), var(--gold));border-radius:99px;width:44%;height:100%;animation:1.3s ease-in-out infinite alternate boot-progress;display:block}.boot-note{color:#fff7e8a6;margin:2px 0 0;font-size:.78em}@keyframes boot-float{50%{transform:translateY(-7px)rotate(8deg)}}@keyframes boot-progress{to{transform:translate(128%)}}.screen{padding:calc(var(--gutter) + var(--safe-t)) calc(var(--gutter) + var(--safe-r)) calc(var(--gutter) + var(--safe-b)) calc(var(--gutter) + var(--safe-l));pointer-events:none;flex-direction:column;display:none;position:absolute;inset:0}.screen.active{animation:.32s ease-out screen-in;display:flex}.screen button,.screen .modal,.screen .character-card,.screen .current-character{pointer-events:auto}@keyframes screen-in{0%{opacity:0;transform:translateY(6px)}}@keyframes card-in{0%{opacity:0;transform:translateY(20px)scale(.97)}}.eyebrow{letter-spacing:.18em;color:var(--lav-deep);text-transform:uppercase;align-items:center;gap:.4em;font-size:.72em;font-weight:600;display:inline-flex}kbd{border:2px solid var(--ink);background:var(--cream);min-width:1.9em;height:1.9em;color:var(--ink);box-shadow:0 2px 0 var(--ink);border-radius:8px;place-items:center;padding:0 .35em;font-family:inherit;font-size:.78em;font-weight:600;display:inline-grid}.btn{border:var(--line);background:linear-gradient(180deg, #fffdf8, var(--cream));min-height:52px;box-shadow:0 5px 0 var(--ink), 0 12px 24px #2c1c4c38;letter-spacing:.02em;cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.55em;padding:.55em 1.35em;font-size:1em;font-weight:700;transition:transform .12s cubic-bezier(.2,1.4,.4,1),box-shadow .12s,filter .12s;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";pointer-events:none;background:linear-gradient(#ffffffa6,#fff0);border-radius:999px;height:34%;position:absolute;top:4px;left:8%;right:8%}.btn>*{z-index:1;position:relative}.btn:hover{filter:brightness(1.03);box-shadow:0 7px 0 var(--ink), 0 18px 30px #2c1c4c3d;transform:translateY(-2px)rotate(-.4deg)}.btn:active{box-shadow:0 2px 0 var(--ink), 0 6px 12px #2c1c4c33;transform:translateY(3px)}.btn.primary{background:linear-gradient(180deg, #ffe58c, var(--gold) 46%, #ffbc48);color:#52331d;text-shadow:0 1px #ffffff8c;font-size:1.12em}.btn.secondary{color:var(--ink);background:linear-gradient(#fffaf0f7,#f0e5fff5);font-size:.9em}.btn.ghost{color:var(--ink);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff7e89e;font-size:.9em;box-shadow:0 4px #3a2b52cc}.btn.small-btn{min-height:44px;padding:.45em 1.1em;font-size:.86em}.btn .icon{width:1.25em;height:1.25em}.btn.primary .icon svg path{stroke:#52331d}.icon-btn{border:var(--line);width:48px;height:48px;box-shadow:0 4px 0 var(--ink), 0 8px 18px #2c1c4c2e;cursor:pointer;background:#fff7e8f0;border-radius:50%;place-items:center;padding:9px;transition:transform .1s,box-shadow .1s,background .15s;display:inline-grid}.icon-btn:hover{background:#fffdf8;transform:translateY(-2px)}.icon-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.icon-btn .icon{width:100%;height:100%}.icon-btn.muted{background:#e9e2f2}#ui :focus-visible{outline:3px solid var(--pink-deep);outline-offset:3px}.menu-screen{justify-content:flex-end}.menu-scrim{pointer-events:none;background:radial-gradient(at 78%,#22144a05 0%,#22144a33 52%,#1e114294 100%),linear-gradient(90deg,#0000 8%,#23154a0d 34%,#23154a61 58%,#23154ab8 100%);position:absolute;inset:0}.menu-topbar{top:calc(var(--gutter) + var(--safe-t));left:calc(var(--gutter) + var(--safe-l));right:calc(var(--gutter) + var(--safe-r));z-index:2;justify-content:space-between;align-items:flex-start;display:flex;position:absolute}.best-chip{border:var(--line);min-height:54px;box-shadow:0 4px 0 var(--ink), 0 10px 22px #1e123c33;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff7e8eb;border-radius:18px;align-items:center;gap:10px;padding:7px 16px 7px 9px;display:flex}.best-chip .icon{width:2.15em;height:2.15em}.best-chip span{flex-direction:column;line-height:1.05;display:flex}.best-chip small,.hud-chip small{letter-spacing:.13em;color:var(--ink-soft);font-size:.6em;font-weight:600}.best-chip strong{font-size:1.18em;font-weight:700}.menu-top-actions{gap:10px;display:flex}.sparkles{pointer-events:none;position:absolute;inset:0;overflow:hidden}.sparkles i{left:var(--x);top:var(--y);opacity:.7;width:7px;height:7px;animation:sparkle-drift var(--d) ease-in-out var(--dl) infinite alternate;background:#fff6c8;border-radius:50%;position:absolute;box-shadow:0 0 14px 5px #ffe79680}@keyframes sparkle-drift{0%{opacity:.15;transform:translateY(8px)scale(.5)}to{opacity:.9;transform:translate(14px,-18px)scale(1.2)}}.menu-panel{z-index:2;flex-direction:column;gap:clamp(12px,2.1vh,22px);width:min(455px,42vw);min-width:330px;margin-left:auto;padding:4px 8px 4px 0;display:flex;position:relative}.logo-lockup{animation:.65s cubic-bezier(.2,1.3,.4,1) both logo-in}@keyframes logo-in{0%{opacity:0;transform:translateY(18px)rotate(-1deg)}}.logo-eyebrow{color:var(--cream);letter-spacing:.26em;text-shadow:0 2px 8px #1c0f3ab3;align-items:center;gap:.5em;margin-bottom:2px;font-size:.78em;font-weight:600;display:inline-flex}.spark-dot{background:var(--gold);border-radius:50%;width:6px;height:6px;box-shadow:0 0 10px 3px #ffd96d80}.logo-title{letter-spacing:.005em;flex-direction:column;margin:0;font-weight:700;line-height:.81;display:flex;position:relative}.logo-title .galaxy{color:var(--cream);-webkit-text-stroke:clamp(2px, .3vw, 4px) var(--ink);text-shadow:0 5px 0 var(--ink), 0 9px 0 #3a2b5252, 0 18px 34px #1e113c73;font-size:clamp(60px,9.4vw,112px);transform:rotate(-1.5deg)}.logo-title .dash{color:var(--pink);-webkit-text-stroke:clamp(2px, .3vw, 4px) var(--ink);text-shadow:0 5px 0 var(--ink), 0 9px 0 #3a2b5252, 0 18px 34px #1e113c73;margin-left:.72em;font-size:clamp(58px,8.8vw,105px);transform:rotate(-1.5deg)}.logo-title sup{color:#fff1b8;-webkit-text-stroke:2px var(--ink);text-shadow:0 3px 0 var(--ink);font-size:clamp(18px,2.5vw,30px);position:absolute;top:.12em;right:.05em;transform:rotate(12deg)}.logo-ribbon{border:2.5px solid var(--ink);color:var(--cream);letter-spacing:.16em;background:linear-gradient(#8e7ae6,#6f5ccb);border-radius:999px;align-self:flex-start;align-items:center;gap:.45em;margin-top:10px;padding:.36em 1em .3em;font-size:clamp(9px,.92vw,12px);font-weight:600;display:inline-flex;box-shadow:0 4px #3a2b52d9,inset 0 1px #ffffff59}.logo-ribbon .icon{width:1.1em;height:1.1em}.menu-tagline{color:var(--cream);letter-spacing:.04em;text-shadow:0 2px 8px #1c0f3a99;margin:9px 0 0;font-size:.98em;font-weight:500}.current-character{width:100%;color:var(--cream);cursor:pointer;text-align:left;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(90deg,#fff7e82e,#fff7e812);border:2.5px solid #fff7e88c;border-radius:18px;align-items:center;gap:11px;padding:8px 12px 8px 8px;transition:background .15s,border-color .15s;display:flex}.current-character:hover{border-color:var(--cream);background:#fff7e830}.mini-face{background:var(--accent,#ffb6cd);border:2px solid var(--ink);border-radius:50%;width:42px;height:42px;padding:2px}.mini-face svg{width:100%;height:100%}.mini-copy{flex-direction:column;flex:1;line-height:1.05;display:flex}.mini-copy small{letter-spacing:.15em;opacity:.7;font-size:.58em;font-weight:600}.mini-copy strong{font-size:1.05em}.mini-change{letter-spacing:.12em;background:#fff7e829;border-radius:999px;padding:.45em .8em;font-size:.66em;font-weight:600}.menu-actions{flex-direction:column;gap:10px;display:flex}.play-btn{letter-spacing:.06em;min-height:62px;font-size:1.22em}.menu-secondary{grid-template-columns:1fr 1fr;gap:10px;display:grid}.menu-secondary .btn{padding-inline:.6em;font-size:.85em}.menu-foot{color:#fff7e8b8;letter-spacing:.04em;justify-content:space-between;align-items:center;font-size:.7em;font-weight:500;display:flex}.star-balance{align-items:center;gap:.35em;display:inline-flex}.star-balance .icon{width:1.2em;height:1.2em}.version{opacity:.65}.select-screen{justify-content:space-between}.select-screen:before{content:"";pointer-events:none;background:linear-gradient(#21134694,#0000 22% 62%,#1e113ea6);position:absolute;inset:0}.select-top{z-index:2;align-items:center;gap:16px;display:flex;position:relative}.select-title{text-align:center;flex:1}.select-title .eyebrow{color:#fff7e8cc}.select-title h2{color:var(--cream);-webkit-text-stroke:2px var(--ink);text-shadow:0 4px 0 var(--ink), 0 10px 22px #1e113c66;letter-spacing:.01em;margin:0;font-size:clamp(28px,4.4vw,46px)}.select-star{place-items:center;width:52px;display:grid}.select-star .icon{width:100%;height:100%;animation:9s linear infinite spin-slow}@keyframes spin-slow{to{transform:rotate(360deg)}}.select-cards{z-index:2;justify-content:center;align-items:flex-end;gap:clamp(12px,2.4vw,28px);margin-top:auto;margin-bottom:12px;display:flex;position:relative}.character-card{text-align:left;border:var(--line);width:min(355px,40vw);min-height:160px;box-shadow:0 6px 0 var(--ink), 0 18px 34px #1e113c4d;cursor:pointer;background:#fff8eeed;border-radius:26px;grid-template-columns:86px 1fr;align-items:center;gap:14px;padding:18px 18px 18px 16px;transition:transform .16s cubic-bezier(.2,1.4,.4,1),box-shadow .16s,background .16s;animation:.4s cubic-bezier(.2,1.3,.4,1) both card-in;display:grid;position:relative;overflow:hidden}.character-card:nth-child(2){animation-delay:70ms}.character-card:before{content:"";background:radial-gradient(circle, var(--accent), transparent 68%);opacity:.38;pointer-events:none;border-radius:50%;width:190px;height:190px;position:absolute;top:-90px;right:-70px}.character-card:hover{background:#fffdf7;transform:translateY(-5px)rotate(-.4deg)}.character-card:active{transform:translateY(2px)}.character-card.on{box-shadow:0 6px 0 var(--ink), 0 0 0 5px var(--accent), 0 18px 34px #1e113c57}.char-face{background:var(--accent);border:2.5px solid var(--ink);border-radius:50%;width:82px;height:82px;padding:5px;box-shadow:inset 0 -4px #3a2b5226}.char-face svg{width:100%;height:100%}.char-copy{flex-direction:column;min-width:0;display:flex}.char-role{letter-spacing:.17em;color:var(--ink-soft);font-size:.6em;font-weight:600}.char-name{color:var(--ink);margin:2px 0 6px;font-size:1.9em;line-height:1}.char-blurb{color:var(--ink-soft);font-size:.78em;font-weight:500;line-height:1.28}.char-check{background:var(--gold);border:2px solid var(--ink);letter-spacing:.1em;border-radius:999px;align-items:center;gap:.25em;padding:.28em .65em;font-size:.58em;font-weight:700;display:none;position:absolute;bottom:12px;right:12px}.char-check .icon{width:1.15em;height:1.15em}.character-card.on .char-check{display:inline-flex}.select-bottom{z-index:2;justify-content:space-between;align-items:center;gap:20px;padding:8px 0 4px;display:flex;position:relative}.select-bottom p{color:#fff7e8d1;text-shadow:0 2px 6px #180c3466;max-width:44ch;margin:0;font-size:.82em}.overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(#1e124047,#140b2c8c);justify-content:center;align-items:center}.overlay.active{z-index:9}.modal{width:min(560px,92vw);max-height:calc(100vh - var(--gutter) * 2 - var(--safe-t) - var(--safe-b));overscroll-behavior:contain;border:var(--line);background:linear-gradient(165deg, #fffdf7, var(--cream) 62%, #ffedd6);box-shadow:var(--shadow);border-radius:30px;padding:clamp(20px,3.4vmin,36px);animation:.38s cubic-bezier(.2,1.35,.4,1) modal-in;position:relative;overflow:auto}@keyframes modal-in{0%{opacity:0;transform:translateY(20px)scale(.95)}}.modal h2{color:var(--pink-deep);-webkit-text-stroke:1.7px var(--ink);text-shadow:0 3px #3a2b5238;margin:.12em 0 .2em;font-size:clamp(34px,5vw,56px);line-height:.95}.modal-sub{color:var(--ink-soft);margin:0 0 18px;font-size:.9em;font-weight:500}.modal-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px;display:flex}.modal-actions .btn{flex:140px}.modal-tip{text-align:center;color:var(--ink-soft);margin-top:14px;font-size:.7em}.modal-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:14px;display:flex}.modal-head h2{margin-bottom:0}.howto-modal{width:min(880px,94vw)}.howto-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.howto-card{background:#ffffff8c;border:2px dashed #3a2b5233;border-radius:20px;padding:16px}.howto-card h3{margin:8px 0 5px;font-size:1.18em}.howto-card p{color:var(--ink-soft);margin:0;font-size:.8em;line-height:1.45}.howto-icon{border:2px solid var(--ink);background:#ffe9f0;border-radius:14px;place-items:center;width:42px;height:42px;display:inline-grid}.howto-icon .icon{width:1.5em;height:1.5em}.howto-foot{border-top:2px dashed #3a2b5226;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding-top:14px;display:flex}.howto-foot span{color:var(--ink-soft);align-items:center;gap:.5em;font-size:.75em;display:inline-flex}.howto-foot .icon{width:1.3em;height:1.3em}.pause-modal{text-align:center;width:min(480px,94vw)}.pause-stats,.result-stats{justify-content:center;gap:10px;margin:18px 0 4px;display:flex}.pause-stats span,.result-stats span{background:#fff9;border:2px solid #3a2b521f;border-radius:15px;flex-direction:column;flex:1;gap:2px;min-width:0;padding:10px 8px;display:flex}.pause-stats small,.result-stats small{letter-spacing:.13em;color:var(--ink-soft);font-size:.56em;font-weight:600}.pause-stats strong,.result-stats strong{font-size:1.24em}.result-modal{text-align:center;width:min(540px,94vw)}.result-modal .eyebrow{color:var(--ink-soft)}.result-title{transform:rotate(-2deg);font-size:clamp(38px,6.4vw,68px)!important}.result-title.lose{color:var(--sky)}.result-title.win-title{color:var(--gold-deep)}.result-burst{border:3px solid var(--ink);width:72px;height:72px;box-shadow:0 5px 0 var(--ink);background:#fff;border-radius:50%;place-items:center;margin:-6px auto 8px;animation:.55s cubic-bezier(.2,1.8,.4,1) both burst-pop;display:grid}.result-burst .icon{width:70%;height:70%}@keyframes burst-pop{0%{transform:scale(0)rotate(-30deg)}}.big-stars{justify-content:center;gap:4px;height:44px;margin:2px 0 4px;display:flex}.big-stars>span{opacity:.2;filter:grayscale();width:44px;height:44px;transform:scale(.8)}.big-stars>span .icon{width:100%;height:100%}.big-stars>span.on{opacity:1;filter:none;animation:.5s cubic-bezier(.2,1.8,.4,1) both star-pop}.big-stars>span:nth-child(2){animation-delay:.1s}.big-stars>span:nth-child(3){animation-delay:.2s}.big-stars>span:nth-child(4){animation-delay:.3s}.big-stars>span:nth-child(5){animation-delay:.4s}@keyframes star-pop{0%{transform:scale(0)rotate(-30deg)}}.new-best{border:2.5px solid var(--ink);background:var(--gold);letter-spacing:.12em;width:-moz-fit-content;width:fit-content;box-shadow:0 3px 0 var(--ink);border-radius:999px;margin:14px auto 0;padding:.32em .9em;font-size:.72em;font-weight:700;display:none}.new-best.on{animation:1.2s ease-in-out infinite alternate best-wiggle;display:block}@keyframes best-wiggle{to{transform:rotate(2deg)scale(1.04)}}.hud{opacity:0;pointer-events:none;transition:opacity .25s;position:absolute;inset:0}.hud button{pointer-events:auto}.hud.active{opacity:1}.hud-top{top:calc(var(--gutter) + var(--safe-t));left:calc(var(--gutter) + var(--safe-l));right:calc(var(--gutter) + var(--safe-r));align-items:flex-start;gap:clamp(8px,1.4vw,18px);display:flex;position:absolute}.hud-left,.hud-right{flex-direction:column;gap:9px;display:flex}.hud-right{align-items:flex-end}.hud-chip{border:2.5px solid var(--ink);min-height:46px;box-shadow:0 4px 0 var(--ink), 0 9px 20px #1e113c38;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fff8eeeb;border-radius:16px;align-items:center;gap:8px;padding:5px 13px 5px 7px;display:flex}.hud-chip .icon{width:1.95em;height:1.95em}.hud-chip span{flex-direction:column;line-height:1.02;display:flex}.hud-chip strong{font-size:1.12em;font-weight:700}.score-chip{background:linear-gradient(#fff7e0,#ffecc0)}.stars-chip{background:linear-gradient(#fff8dd,#ffe9b1)}.hearts{gap:2px;padding-left:4px;display:flex}.hearts .icon{filter:drop-shadow(0 2px 2px #1e113c40);width:1.9em;height:1.9em;transition:transform .18s}.hearts .icon:first-child{animation:2.4s ease-in-out infinite heart-beat}@keyframes heart-beat{20%,40%{transform:scale(1.06)}30%{transform:scale(.96)}}.hud-center{flex-direction:column;flex:1;align-items:center;gap:7px;min-width:150px;padding-top:2px;display:flex}.zone-chip{border:2px solid var(--ink);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#fff8eee0;border-radius:999px;align-items:center;gap:.4em;padding:.28em .9em;font-size:.74em;font-weight:600;display:inline-flex;box-shadow:0 3px #3a2b52bf}.zone-chip .icon{width:1.25em;height:1.25em}.progress-track{border:2.5px solid var(--ink);background:#fff8eed9;border-radius:999px;width:min(520px,100%);height:16px;padding:2px;position:relative;box-shadow:0 3px #3a2b52b3,inset 0 1px 2px #fff9}.progress-fill{transform-origin:0;background:linear-gradient(90deg,#ff9fbd,#ffd166 62%,#91e6c7);border-radius:999px;width:100%;height:100%;transition:transform .12s linear;transform:scaleX(0);box-shadow:inset 0 1px #ffffff80}.progress-dot{background:var(--cream);border:2px solid var(--ink);width:12px;height:12px;box-shadow:0 1px 0 var(--ink);border-radius:50%;position:absolute;top:50%;left:0%;transform:translate(-50%,-50%)}.progress-flag{filter:drop-shadow(0 2px #3a2b524d);width:2.1em;height:2.1em;position:absolute;top:-20px;right:-11px}.progress-flag .icon{width:100%;height:100%}.hud-btn{width:46px;height:46px}.hud-bottom{left:calc(var(--gutter) + var(--safe-l));right:calc(var(--gutter) + var(--safe-r));bottom:calc(var(--gutter) + var(--safe-b));justify-content:space-between;align-items:flex-end;display:flex;position:absolute}.control-hint{color:#fff7e8e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#20143c61;border-radius:999px;align-items:center;gap:4px;padding:5px 10px;font-size:.72em;display:inline-flex}.control-hint span{opacity:.5;margin:0 2px}.control-hint kbd{min-width:1.7em;height:1.7em;box-shadow:none;border-width:1.5px;font-size:.9em}.mode-badge{border:2px solid var(--ink);letter-spacing:.1em;background:#fff8eee0;border-radius:999px;align-items:center;gap:.35em;padding:.35em .8em;font-size:.68em;font-weight:600;display:inline-flex;box-shadow:0 3px #3a2b52b3}.mode-badge .icon{width:1.3em;height:1.3em}.zone-banner{opacity:0;text-align:center;pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:2px;width:min(82vw,720px);transition:opacity .35s,transform .45s cubic-bezier(.2,1.3,.4,1);display:flex;position:absolute;top:27%;left:50%;transform:translate(-50%,-10px)scale(.94)}.zone-banner.show{opacity:1;transform:translate(-50%)scale(1)}.zone-banner span{letter-spacing:.4em;color:var(--gold);text-shadow:0 2px 10px #140a32cc;font-size:.68em;font-weight:600}.zone-banner strong{color:var(--cream);-webkit-text-stroke:2px var(--ink);text-shadow:0 4px 0 var(--ink), 0 14px 30px #10082c99;letter-spacing:.02em;font-size:clamp(28px,4.4vw,56px);line-height:1}.zone-banner.tone-space strong{color:#b9f6ff}.zone-banner.tone-dawn strong{color:#ffe5aa}.toast{left:50%;bottom:calc(var(--gutter) + var(--safe-b) + 72px);opacity:0;border:2.5px solid var(--ink);background:var(--cream);box-shadow:0 4px 0 var(--ink);pointer-events:none;z-index:6;text-align:center;border-radius:999px;max-width:88vw;padding:.45em 1.1em;font-size:.8em;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;transform:translate(-50%,12px)}.toast.on{opacity:1;transform:translate(-50%)}.screen-flash{pointer-events:none;opacity:0;z-index:8;position:absolute;inset:0}.screen-flash.on{animation:.62s ease-out flash}@keyframes flash{0%{opacity:0}18%{opacity:1}to{opacity:0}}.fade{opacity:0;pointer-events:none;z-index:10;background:#1c1438;transition:opacity .4s;position:absolute;inset:0}.fade.on{opacity:1}.touch-ui{left:calc(var(--gutter) + var(--safe-l));right:calc(var(--gutter) + var(--safe-r));bottom:calc(var(--gutter) + var(--safe-b) + 10px);pointer-events:none;z-index:4;justify-content:space-between;align-items:flex-end;display:none;position:absolute}.touch-pair{gap:12px;display:flex}.touch-btn{pointer-events:auto;border:3px solid var(--ink);width:72px;height:72px;box-shadow:0 5px 0 var(--ink), 0 8px 18px #140a323d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);touch-action:none;background:#fff8eed1;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;display:inline-flex}.touch-btn .icon{width:2.2em;height:2.2em}.touch-btn:active{box-shadow:0 2px 0 var(--ink);transform:translateY(3px)}.touch-btn.jump-btn{background:linear-gradient(#ffe68f,#ffc85b);width:92px;height:92px}.jump-btn span{letter-spacing:.12em;font-size:.55em;font-weight:700}body.touch.in-game:not(.mode-flight) #touch-run,body.touch.in-game.mode-flight #touch-flight{display:flex}body.touch.paused .touch-ui,body.touch.result-open .touch-ui{display:none!important}.flight-ui{justify-content:center}.stick-guide{opacity:.9;flex-direction:column;align-items:center;gap:4px;display:flex;position:relative}.stick-ring{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1e123e38;border:3px solid #fff7e88c;border-radius:50%;width:96px;height:96px;box-shadow:inset 0 0 0 9px #fff7e814}.stick-knob{border:3px solid var(--ink);background:linear-gradient(#fff4d4,#ffc85b);border-radius:50%;width:44px;height:44px;margin-left:-22px;animation:2.8s ease-in-out infinite knob-drift;position:absolute;top:26px;left:50%;box-shadow:0 3px #3a2b52b3}.stick-guide small{letter-spacing:.14em;color:#fff7e8cc;text-shadow:0 2px 6px #140a32b3;font-size:.58em}@keyframes knob-drift{0%,to{transform:translate(0)}30%{transform:translate(18px,-8px)}60%{transform:translate(-14px,9px)}}body.touch .control-hint{display:none}@media (max-width:980px){.menu-panel{width:min(420px,47vw);min-width:300px}.logo-title .galaxy,.logo-title .dash{font-size:clamp(54px,9vw,86px)}.hud-center{max-width:46%}.char-blurb{display:none}.character-card{grid-template-columns:70px 1fr;min-height:130px}.char-face{width:66px;height:66px}.char-name{font-size:1.6em}}@media (max-aspect-ratio:4/5){#ui{font-size:clamp(13px,1.8vw + 8px,17px)}.menu-screen{justify-content:flex-end}.menu-scrim{background:radial-gradient(at 50% 40%,#22144a05,#22144a40 64%,#1e11428c),linear-gradient(#22144a59,#0000 25% 48%,#1f1142c7 82%)}.menu-topbar{top:calc(var(--gutter) + var(--safe-t))}.best-chip{min-height:46px;padding:5px 12px 5px 7px}.best-chip .icon{width:1.8em;height:1.8em}.menu-panel{gap:10px;width:auto;min-width:0;margin:0;padding:0}.logo-eyebrow{font-size:.66em}.logo-title .galaxy{font-size:clamp(50px,17vw,80px)}.logo-title .dash{font-size:clamp(46px,15.6vw,76px)}.logo-ribbon{font-size:8px}.menu-tagline{margin-top:6px;font-size:.82em}.current-character{border-radius:15px;padding:6px 10px 6px 6px}.mini-face{width:34px;height:34px}.play-btn{min-height:54px;font-size:1.05em}.menu-secondary .btn{min-height:46px;font-size:.76em}.menu-foot{font-size:.6em}.select-screen{padding-top:calc(var(--gutter) + 58px + var(--safe-t));justify-content:flex-end;gap:8px}.select-top{position:relative}.select-title h2{font-size:clamp(24px,6.6vw,36px)}.select-star{width:34px}.select-cards{gap:8px;margin-top:auto;margin-bottom:6px}.character-card{border-radius:20px;grid-template-columns:48px 1fr;gap:8px;width:50%;min-height:96px;padding:10px}.char-face{width:46px;height:46px;padding:3px}.char-role{font-size:.5em}.char-name{margin:1px 0 0;font-size:1.28em}.char-check{padding:.2em .5em;font-size:.48em;bottom:7px;right:7px}.select-bottom{flex-direction:column;align-items:stretch;gap:6px}.select-bottom p{display:none}.select-bottom .btn{width:100%;min-height:50px}.hud-top{flex-wrap:wrap;gap:7px 6px}.hud-chip{border-radius:14px;min-height:40px;padding:3px 9px 3px 5px}.hud-chip .icon{width:1.6em;height:1.6em}.hud-chip strong{font-size:1em}.hud-chip small{font-size:.52em}.hud-left,.hud-right{gap:6px}.hud-right{margin-left:auto}.hearts .icon{width:1.5em;height:1.5em}.hud-center{flex:0 0 100%;order:3;min-width:0;max-width:none;padding-top:0}.zone-chip{display:none}.progress-track{width:100%;height:13px}.progress-flag{width:1.7em;height:1.7em;top:-17px}.hud-btn{width:40px;height:40px}.howto-grid{grid-template-columns:1fr}.howto-modal{width:94vw}.howto-foot{text-align:center;flex-direction:column;align-items:stretch}.howto-foot span{justify-content:center}.modal{border-radius:24px}.modal h2{font-size:38px}.result-stats strong{font-size:1.05em}.touch-btn{width:64px;height:64px}.touch-btn.jump-btn{width:82px;height:82px}}@media (max-height:560px){.menu-panel{gap:8px}.menu-tagline,.menu-foot{display:none}.logo-title .galaxy,.logo-title .dash{font-size:clamp(40px,10vh,70px)}.logo-title{width:-moz-fit-content;width:fit-content}.logo-title sup{margin-left:.2em;inset:auto auto .2em 100%}.play-btn{min-height:48px}.menu-secondary .btn{min-height:40px}.current-character{min-height:42px}.logo-ribbon{padding:.25em .8em .2em}.character-card{min-height:96px}.select-bottom p{display:none}.howto-card p{font-size:.72em}}@media (pointer:coarse){.control-hint{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.level-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.level-chip{text-align:left;cursor:pointer;font:inherit;color:var(--ink);background:var(--cream);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);pointer-events:auto;border-radius:14px;flex-direction:column;gap:2px;padding:8px 10px;transition:transform .12s;display:flex}.level-chip small{letter-spacing:.12em;color:var(--ink-soft);font-size:.62em}.level-chip strong{font-size:.86em;line-height:1.1}.level-chip em{color:var(--ink-soft);font-size:.62em;font-style:normal}.level-chip:hover:not(:disabled){transform:translateY(-2px)}.level-chip.on{box-shadow:0 4px 0 var(--ink), 0 0 0 4px var(--accent)}.level-chip.done small{color:var(--lav-deep)}.level-chip:disabled{opacity:.55;cursor:not-allowed;filter:grayscale(.6)}@media (max-width:640px){.level-chip em{display:none}}.btn[hidden]{display:none}.about-modal{width:min(640px,94vw)}.about-body{overscroll-behavior:contain;-webkit-user-select:text;user-select:text;touch-action:pan-y;max-height:min(56vh,460px);padding-right:6px;overflow:auto}.about-part+.about-part{border-top:2px dashed #3a2b5226;margin-top:14px;padding-top:12px}.about-part h3{margin:0 0 6px;font-size:1.02em}.about-part p,.about-part li{color:var(--ink-soft);margin:0 0 6px;font-size:.82em;line-height:1.45}.about-part ul{margin:0;padding-left:1.2em}.about-row{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;font-size:.9em;font-weight:600;display:flex}.segmented{border:2.5px solid var(--ink);background:var(--cream);border-radius:999px;display:inline-flex;overflow:hidden}.segmented .seg{cursor:pointer;background:0 0;border:0;min-width:64px;min-height:40px;padding:0 14px;font-weight:700}.segmented .seg+.seg{border-left:2.5px solid var(--ink)}.segmented .seg.on{background:var(--gold)}.consent-banner{z-index:3;pointer-events:auto;left:calc(var(--gutter) + var(--safe-l));bottom:calc(var(--gutter) + var(--safe-b));border:var(--line);width:min(380px,38vw);box-shadow:0 4px 0 var(--ink), 0 12px 26px #1e113c4d;background:#fff8eef5;border-radius:20px;padding:12px 14px;position:absolute}.consent-banner p{color:var(--ink);margin:0 0 10px;font-size:.74em;line-height:1.4}.consent-buttons{gap:8px;display:flex}.consent-buttons .btn{flex:1}@media (max-aspect-ratio:4/5){.consent-banner{width:auto;right:calc(var(--gutter) + var(--safe-r));bottom:auto;top:calc(var(--gutter) + var(--safe-t) + 58px)}}@media (max-height:560px){.consent-banner{padding:8px 10px}.consent-banner p{margin-bottom:6px;font-size:.66em}.consent-buttons .btn{min-height:38px}}.nowebgl .modal{text-align:center}.nowebgl h2{font-size:clamp(28px,5vw,44px)}.noscript{text-align:left;color:#fff6df;background:#22184f;margin:0;padding:7vh 6vw;font:500 17px/1.55 system-ui,sans-serif;position:fixed;inset:0;overflow-y:auto}.noscript h1{margin:0 0 12px;font-size:28px}.noscript h2{color:#ffcf5c;margin:22px 0 6px;font-size:19px}.noscript p{max-width:62ch;margin:0 0 8px}
