:root{--ink: #1b1733;--cream: #fff8ea;--sun: #ffd02a;--sun-deep: #f59200;--coral: #ff4f4f;--tangerine: #ff9416;--lime: #5fd84a;--sky: #2fb2ff;--violet: #8f5bff;--mint: #20d3b0;--navy: #161a4a;--navy-2: #262d86;--glass: linear-gradient(180deg, rgba(44, 50, 150, .92), rgba(24, 27, 88, .94));--edge: rgba(255, 255, 255, .16);--display: "Baloo 2", "Nunito", system-ui, sans-serif;--body: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--radius: 22px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0d1033}body{font-family:var(--body);color:#fff;-webkit-font-smoothing:antialiased;touch-action:manipulation}#game{position:fixed;inset:0}#scene{position:absolute;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}#ui{position:absolute;inset:0;pointer-events:none}#ui>*{pointer-events:none}#ui button,#ui a,#ui input,#ui select,#ui label,#ui .island-label,#ui .modal,#ui .island-panel,#ui .dialogue,#ui .title-screen,#ui .map-bar{pointer-events:auto}[hidden]{display:none!important}a{color:var(--sun)}.small{font-size:.82rem;opacity:.85}#boot{position:absolute;inset:0;display:grid;place-content:center;gap:18px;text-align:center;z-index:50;background:linear-gradient(180deg,#14105026,#0c0c32b8),url(../art/keyart.jpg) center / cover no-repeat,#1a1f6c;transition:opacity .6s ease}.boot-logo,#boot p{filter:drop-shadow(0 4px 14px rgba(10,8,50,.8))}#boot.done{opacity:0;pointer-events:none}.boot-logo{font-family:var(--display);line-height:.9}.boot-logo span{display:block;letter-spacing:.4em;font-weight:700;opacity:.8;font-size:1rem}.boot-logo b{font-size:clamp(3rem,12vw,6rem);background:linear-gradient(90deg,var(--coral),var(--sun),var(--lime),var(--sky),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}.boot-bar{width:min(320px,70vw);height:14px;border-radius:99px;background:#ffffff24;overflow:hidden;margin:0 auto}.boot-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--tangerine));transform-origin:left;transform:scaleX(.05);transition:transform .4s ease}#boot p{margin:0;font-weight:800;opacity:.85}#boot.error p{color:#ffd2d2}.btn{font:800 1rem/1 var(--display);color:var(--ink);background:var(--cream);border:0;border-radius:16px;padding:.78em 1.2em .7em;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4em;box-shadow:0 5px #00000047,0 10px 22px #00000040,inset 0 -3px #00000014,inset 0 2px #fffc;transition:transform .1s ease,box-shadow .1s ease,filter .15s ease}.btn:hover{filter:brightness(1.06);transform:translateY(-2px)}.btn:active{transform:translateY(3px);box-shadow:0 2px #00000047,0 4px 10px #0003}.btn:focus-visible,.stage-row:focus-visible,.seg button:focus-visible,.island-label:focus-visible,.book-row:focus-visible{outline:3px solid var(--sun);outline-offset:3px}.btn-sun{background:linear-gradient(180deg,#ffe36b,var(--sun) 45%,#ffb81f);box-shadow:0 6px #d9730a,0 12px 26px #ff960059,inset 0 2px #ffffffb3}.btn-big{font-size:1.4rem;padding:.7em 1.6em .62em;border-radius:20px}.btn-small{font-size:.9rem;padding:.6em .9em .55em;border-radius:13px}.btn-ghost{background:#ffffff1f;color:#fff;box-shadow:inset 0 0 0 2px #ffffff59}.btn-icon{width:2.6rem;height:2.6rem;padding:0;border-radius:14px;font-size:1.1rem}.danger{color:#ffb3b3!important}.title-screen{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:22px;text-align:center;padding:24px;background:radial-gradient(ellipse at 50% 42%,#0a0c320d,#0a0c3273 75%)}.title-logo{filter:drop-shadow(0 16px 30px rgba(20,10,60,.45))}.title-logo h1 span{text-shadow:0 .07em 0 #1b1733}.title-kicker{font:800 clamp(.9rem,2.4vw,1.3rem) var(--display);letter-spacing:.55em;color:#fff;text-shadow:0 2px 8px rgba(20,16,80,.9)}.title-logo h1{margin:-.1em 0 0;font:800 clamp(4.2rem,17vw,10rem)/.95 var(--display);letter-spacing:-.02em}.title-logo h1 span{display:inline-block;-webkit-text-stroke:.06em #1b1733;paint-order:stroke fill;animation:bob 2.4s ease-in-out infinite}.title-logo h1 span:nth-child(1){color:var(--coral);animation-delay:0s}.title-logo h1 span:nth-child(2){color:var(--tangerine);animation-delay:.12s}.title-logo h1 span:nth-child(3){color:var(--sun);animation-delay:.24s}.title-logo h1 span:nth-child(4){color:var(--lime);animation-delay:.36s}.title-logo h1 span:nth-child(5){color:var(--sky);animation-delay:.48s}.title-logo h1 span:nth-child(6){color:var(--violet);animation-delay:.6s}.title-logo p{margin:.3em 0 0;font:800 clamp(1rem,3vw,1.45rem) var(--display);color:#fff;text-shadow:0 2px 10px rgba(20,16,80,.95),0 0 2px rgba(20,16,80,.9)}@keyframes bob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}.title-play{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.title-hint{margin:0;font-weight:800;text-shadow:0 2px 6px rgba(0,0,0,.6);opacity:.9}.title-links{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.map-bar{position:absolute;top:calc(12px + var(--safe-top));left:12px;right:12px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.map-brand{font:800 1.4rem var(--display);text-shadow:0 3px 0 rgba(20,16,80,.7)}.map-brand b{color:var(--sun)}.map-stats{display:flex;gap:8px;justify-content:center}.chip{font:800 1.05rem var(--display);padding:.35em .8em .25em;border-radius:99px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--edge),0 4px #00000040}.chip-star{color:var(--sun)}.chip-note{color:#9fe8ff}.map-actions{display:flex;gap:8px}.map-goal{grid-column:1 / -1;justify-self:center;font:800 .95rem var(--display);background:#1410468c;padding:.3em .9em .2em;border-radius:99px}.map-labels{position:absolute;inset:0;overflow:hidden}.island-label{position:absolute;left:0;top:0;display:grid;justify-items:center;gap:1px;border:0;cursor:pointer;font:800 .95rem/1.1 var(--display);color:var(--ink);background:var(--cream);padding:.4em .85em .3em;border-radius:14px;box-shadow:0 4px #0000004d,0 8px 18px #0000004d;white-space:nowrap;will-change:transform}.island-label:after{content:"";position:absolute;bottom:-8px;left:50%;margin-left:-8px;border:8px solid transparent;border-top-color:var(--cream);border-bottom:0}.island-label span{font-size:.8rem;color:#c77800}.island-label.locked{background:#b8bdd9;color:#3a3f66}.island-label.locked:after{border-top-color:#b8bdd9}.island-label.locked span{color:#4a4f7a}.island-label:hover{filter:brightness(1.08)}.island-panel{position:absolute;top:calc(70px + var(--safe-top));right:14px;bottom:14px;width:min(440px,calc(100vw - 28px));background:var(--glass);border-radius:var(--radius);box-shadow:inset 0 0 0 2px var(--edge),0 18px 40px #00000073;overflow:auto;animation:slideIn .28s cubic-bezier(.2,.9,.3,1.2)}@keyframes slideIn{0%{transform:translate(40px);opacity:0}}.panel-head{position:relative;padding:18px 18px 16px;border-radius:var(--radius) var(--radius) 0 0;background:linear-gradient(135deg,var(--c1, #ff9416),var(--c2, #ff4f4f));color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.25)}.panel-head h2{margin:2px 0 4px;font:800 1.8rem/1 var(--display)}.panel-head p{margin:0;font-weight:700;opacity:.95}.panel-kicker{font:800 .8rem var(--display);letter-spacing:.08em;text-transform:uppercase;opacity:.9}.panel-close{position:absolute;top:12px;right:12px}.panel-progress{margin-top:10px;display:flex;align-items:center;gap:8px;font-weight:800}.theme-meadow{--c1: #5fd84a;--c2: #1fa5e0}.theme-snow{--c1: #3159ff;--c2: #18205a}.theme-festival{--c1: #ff9416;--c2: #ff3d7f}.theme-pier{--c1: #2fb2ff;--c2: #e8282f}.theme-garden{--c1: #20d3b0;--c2: #5fd84a}.theme-neon{--c1: #8f5bff;--c2: #ff3fb4}.theme-harbour{--c1: #1d2f6b;--c2: #3159ff}.theme-spring{--c1: #ff7fae;--c2: #8f5bff}.theme-crown{--c1: #ffbf2e;--c2: #8f5bff}.panel-locked{margin:14px 16px 0;padding:12px 14px;border-radius:14px;background:#00000040;font-weight:700}.stage-list{display:grid;gap:10px;padding:14px}.stage-row,.book-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;border:0;border-radius:16px;padding:10px 12px;font:inherit;color:var(--ink);background:var(--cream);box-shadow:0 4px #00000040;transition:transform .1s ease}.book-row{grid-template-columns:1fr auto}.stage-row:hover:not([disabled]),.book-row:hover:not([disabled]){transform:translateY(-2px) scale(1.01)}.stage-row[disabled],.book-row[disabled]{opacity:.55;cursor:not-allowed}.stage-num{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;font:800 1rem var(--display);color:#fff;background:linear-gradient(180deg,var(--tangerine),var(--coral))}.stage-info b,.book-row b{display:block;font:800 1.08rem/1.1 var(--display)}.stage-info small,.book-row small{font-weight:700;color:#6a6488}.stage-stars{white-space:nowrap}.star{font-style:normal;color:#1b17332e;font-size:1.15rem}.star.on{color:#ffb81f;text-shadow:0 2px 0 #c46a00}.panel-head .star{color:#ffffff59}.panel-head .star.on{color:#fff3a8;text-shadow:0 2px 0 rgba(0,0,0,.3)}.fc{font-style:normal;margin-left:2px}.setup{padding:12px 16px 20px;display:grid;gap:10px}.setup h3{margin:6px 0 0;font:800 .9rem var(--display);letter-spacing:.1em;text-transform:uppercase;opacity:.85}.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.seg-2{grid-template-columns:1fr 1fr}.seg-3{grid-template-columns:repeat(3,1fr)}.seg-4{grid-template-columns:repeat(4,1fr)}.seg-4 button small{font-size:.7rem}@media(max-width:700px){.seg-4{grid-template-columns:1fr 1fr}}.seg-mini button{padding:6px 4px}.seg-mini button b{font-size:.95rem;letter-spacing:.08em}.results-extra{margin:0;font:800 1rem var(--display);color:var(--sun)}.seg button{border:0;border-radius:14px;padding:10px 8px;cursor:pointer;color:#fff;background:#ffffff1a;box-shadow:inset 0 0 0 2px #fff3;font:inherit;display:grid;gap:2px;text-align:center}.seg button b{font:800 1.05rem var(--display)}.seg button small{font-weight:700;font-size:.75rem;opacity:.85}.seg button[aria-pressed=true]{background:var(--cream);color:var(--ink);box-shadow:0 4px #0000004d,inset 0 0 0 3px var(--sun)}.seg-stars .star{font-size:.85rem;color:#ffffff4d}.seg button[aria-pressed=true] .seg-stars .star{color:#1b173333}.seg-stars .star.on,.seg button[aria-pressed=true] .seg-stars .star.on{color:#ffb81f}.toggle{display:flex;gap:10px;align-items:flex-start;font-weight:700;cursor:pointer}.toggle input{width:1.3rem;height:1.3rem;accent-color:var(--sun);flex:none;margin-top:2px}.speed{display:flex;gap:10px;align-items:center;font-weight:800}.speed input{flex:1;accent-color:var(--sun)}.setup-best{font-weight:700;opacity:.9;padding:8px 12px;border-radius:12px;background:#0003}.modal{position:absolute;inset:0;display:grid;place-items:center;padding:16px;background:#0808248c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:20}.modal-card{width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;display:grid;gap:12px;padding:22px;background:var(--glass);border-radius:var(--radius);box-shadow:inset 0 0 0 2px var(--edge),0 24px 60px #00000080;animation:popIn .32s cubic-bezier(.2,.9,.3,1.3)}.modal-card.wide{width:min(720px,100%)}.modal-card h2{margin:0;font:800 2rem/1 var(--display);text-align:center}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h2{text-align:left}@keyframes popIn{0%{transform:scale(.85) translateY(20px);opacity:0}}.pause-screen .modal-card{text-align:center}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px}.settings-grid label{display:grid;gap:6px;font-weight:800}.settings-grid label.toggle{display:flex}.settings-grid input[type=range]{accent-color:var(--sun)}.settings-grid output{font:800 .9rem var(--display);color:var(--sun)}.settings-grid select{font:700 1rem var(--body);padding:8px 10px;border-radius:10px;border:0;background:var(--cream);color:var(--ink)}.settings-row{grid-column:1 / -1;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.settings-row small{opacity:.85;font-weight:700}.settings-row.links{justify-content:space-between}.skins{gap:10px}.skins>span{font-weight:800}.skin{display:grid!important;justify-items:center;gap:4px;cursor:pointer}.skin input{position:absolute;opacity:0}.skin i{width:38px;height:38px;border-radius:12px;box-shadow:inset 0 0 0 2px #ffffff59,inset 0 -5px #00000040,0 3px #0000004d}.skin input:checked+i{outline:3px solid var(--sun);outline-offset:3px}.skin.locked{opacity:.45;cursor:not-allowed}.skin small{font-size:.72rem}.credits{margin:0;text-align:center}.book{display:grid;gap:14px}.book-island{display:grid;gap:8px}.book-island h3{margin:0;font:800 1.2rem var(--display);color:var(--sun)}.book-island.mine{padding:12px;border-radius:16px;background:#0000002e}.loading-screen{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(circle,#1e1e6e8c,#080824cc);z-index:15}.loading-card{display:grid;justify-items:center;gap:12px;font:800 1.2rem var(--display)}.loading-spinner{font-size:3.2rem;color:var(--sun);animation:spin 1.1s cubic-bezier(.6,0,.4,1) infinite;text-shadow:0 4px 0 #c46a00}@keyframes spin{to{transform:rotate(360deg) scale(1)}50%{transform:rotate(180deg) scale(1.25)}}.loading-bar{width:220px;height:10px;border-radius:99px;background:#ffffff26;overflow:hidden}.loading-bar i{display:block;height:100%;background:var(--sun);transform-origin:left}.loading-bar.indeterminate i{animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%) scaleX(.3)}to{transform:translate(260%) scaleX(.3)}}.toasts{position:absolute;top:calc(78px + var(--safe-top));left:50%;transform:translate(-50%);display:grid;gap:8px;justify-items:center;z-index:30;width:min(560px,calc(100vw - 24px))}.toast{font:800 1rem var(--display);padding:.55em 1.1em .45em;border-radius:16px;background:var(--cream);color:var(--ink);box-shadow:0 5px #0000004d;animation:popIn .3s cubic-bezier(.2,.9,.3,1.3);transition:opacity .4s,transform .4s;text-align:center}.toast.out{opacity:0;transform:translateY(-10px)}.toast.gold{background:linear-gradient(180deg,#fff1a8,var(--sun))}.toast.unlock{background:linear-gradient(180deg,#d8ffd0,#7fe36a)}.toast.warn{background:#ffd9d2}.dialogue{position:absolute;inset:0;display:grid;justify-items:center;align-content:end;padding:0 12px calc(14px + var(--safe-bottom));z-index:40;cursor:pointer;background:linear-gradient(180deg,transparent 55%,rgba(10,8,40,.35))}.dialogue-card{width:min(860px,100%);display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:end;padding:16px 20px 14px;background:var(--cream);color:var(--ink);border-radius:26px;box-shadow:0 8px #0000004d,0 20px 50px #00000073,inset 0 0 0 4px #fff;animation:popIn .3s cubic-bezier(.2,.9,.3,1.3);position:relative}.dialogue-portrait{width:132px;height:132px;margin-top:-64px;border-radius:50%;background:radial-gradient(circle at 50% 40%,#fff3b0,#ffb81f);box-shadow:0 6px #00000040,inset 0 0 0 5px #fff;overflow:hidden;display:grid;place-items:end center}.dialogue[data-who=hush] .dialogue-portrait{background:radial-gradient(circle at 50% 40%,#e6e9ff,#8a90b8)}.dialogue[data-who=keeper] .dialogue-portrait{display:none}.dialogue[data-who=keeper] .dialogue-card{grid-template-columns:1fr}.dialogue-portrait img{width:128%;height:128%;object-fit:cover;object-position:50% 30%}.dialogue-name{display:inline-block;font:800 1rem var(--display);color:#fff;background:linear-gradient(180deg,var(--tangerine),var(--coral));padding:.25em .9em .15em;border-radius:99px;margin-top:-30px;position:relative;top:-6px;box-shadow:0 3px #00000040}.dialogue[data-who=hush] .dialogue-name{background:linear-gradient(180deg,#8a90b8,#5b62a8)}.dialogue[data-who=keeper] .dialogue-name{background:linear-gradient(180deg,var(--mint),#11897a)}.dialogue-body p{margin:4px 0 6px;font:700 clamp(1.02rem,2.4vw,1.25rem)/1.4 var(--body);min-height:3.4em}.dialogue-foot{display:flex;justify-content:space-between;align-items:center}.dialogue-skip{border:0;background:none;color:#8a84a8;font:800 .85rem var(--display);cursor:pointer}.dialogue-next{color:var(--coral);animation:bob 1s ease-in-out infinite;font-size:1.1rem}.hud{position:absolute;inset:0;font-family:var(--display)}.panel-glass{background:linear-gradient(180deg,#1e1e64b8,#10103cc7);border-radius:18px;box-shadow:inset 0 0 0 2px #ffffff24,0 6px 18px #0000004d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.hud-top{position:absolute;top:calc(10px + var(--safe-top));left:10px;right:10px;display:grid;grid-template-columns:minmax(150px,auto) 1fr auto auto;gap:10px;align-items:start}.hud-top .hud-song{grid-column:3}.hud-top .hud-pause{grid-column:4}.hud-score{padding:8px 14px 6px;display:grid;grid-template-columns:auto auto;column-gap:10px;align-items:center}.hud-label{grid-column:1 / -1;font-size:.72rem;font-weight:800;letter-spacing:.18em;opacity:.75}.hud-score b{font-size:2rem;line-height:1;font-weight:800;font-variant-numeric:tabular-nums;text-shadow:0 3px 0 rgba(0,0,0,.35)}.hud-mult{font-size:1.15rem;font-weight:800;padding:.1em .55em 0;border-radius:10px;background:#fff;color:var(--ink);box-shadow:0 3px #0000004d}.hud-mult.x2{background:var(--sky);color:#fff}.hud-mult.x3{background:var(--lime);color:#fff}.hud-mult.x4{background:linear-gradient(90deg,var(--coral),var(--sun));color:#fff}.hud-song{justify-self:end;width:min(340px,30vw);padding:6px 14px 8px;text-align:left;display:grid;gap:4px}.hud-song-title{font-weight:800;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hud-progress-row{display:flex;align-items:center;gap:8px}.hud-progress{flex:1;height:10px;border-radius:99px;background:#ffffff29;overflow:hidden}.hud-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--tangerine));transform-origin:left;transform:scaleX(0)}.hud-stars s{text-decoration:none;color:#ffffff40;font-size:1rem;transition:color .3s,transform .3s;display:inline-block}.hud-stars s.lit{color:var(--sun);transform:scale(1.15);text-shadow:0 0 10px rgba(255,210,60,.8)}.hud-badges{font-family:var(--body);font-size:.75rem;font-weight:800;opacity:.8}.hud-pause{width:48px;height:48px;border:0;border-radius:16px;font-size:1rem;font-weight:800;color:var(--ink);background:var(--cream);cursor:pointer;box-shadow:0 4px #0000004d}.hud-meters{position:absolute;top:calc(88px + var(--safe-top));left:10px;display:grid;gap:8px;width:min(210px,34vw)}.hud-meter{display:grid;gap:3px;font-size:.7rem;font-weight:800;letter-spacing:.16em;text-shadow:0 2px 0 rgba(0,0,0,.5)}.hud-meter .bar{height:12px;border-radius:99px;background:#0a0a288c;box-shadow:inset 0 0 0 2px #ffffff29;overflow:hidden}.hud-meter .bar i{display:block;height:100%;transform-origin:left;transition:transform .25s ease}.harmony .bar i{background:linear-gradient(90deg,var(--coral),var(--tangerine),var(--sun),var(--lime),var(--sky),var(--violet))}.encore .bar i{background:linear-gradient(90deg,#ffe38a,#ffb81f)}.encore{position:relative;cursor:pointer}.encore em{position:absolute;right:0;top:-2px;font-style:normal;font-size:.7rem;color:var(--ink);background:var(--sun);padding:0 6px;border-radius:6px;opacity:0;transition:opacity .2s}.encore.ready em{opacity:1;animation:pulse .8s ease-in-out infinite}.encore.ready .bar{box-shadow:inset 0 0 0 2px var(--sun),0 0 14px #ffc828cc}.encore.active .bar i{background:linear-gradient(90deg,#fff,var(--sun),#fff);background-size:200% 100%;animation:shimmer .6s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.hud-combo{--streak-color: #83dcff;position:absolute;left:clamp(12px,6vw,90px);top:42%;display:grid;justify-items:center;gap:5px;min-width:112px;padding:10px 12px 9px;border:1px solid var(--streak-color);border-radius:20px;background:#10103cb3;box-shadow:0 4px #0003;line-height:.9;opacity:0;transition:opacity .2s;pointer-events:none}.hud-combo[data-tier="1"]{--streak-color: #a3f78d}.hud-combo[data-tier="2"]{--streak-color: #ffe16b}.hud-combo[data-tier="3"]{--streak-color: #ff9ccf}.hud-combo[data-tier="4"]{--streak-color: #ccb1ff}.hud-combo em{min-height:1em;font:800 .65rem/1.1 var(--display);font-style:normal;color:var(--streak-color);white-space:nowrap}.streak-ring{position:absolute;inset:-3px;border:2px solid var(--streak-color);border-radius:22px;opacity:0;pointer-events:none}.streak-ring.go{animation:streakBurst .55s ease-out forwards}.hud.reduced-motion .streak-ring.go{display:none}.hud.reduced-motion .hud-combo .bump{animation-duration:.01ms}@keyframes streakBurst{0%{opacity:.9;transform:scale(.96)}to{opacity:0;transform:scale(1.3)}}@keyframes streakBurst-again{0%{opacity:.9;transform:scale(.96)}to{opacity:0;transform:scale(1.3)}}.hud-combo.show{opacity:1}.hud-combo b{font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,7vw,4.6rem);font-weight:800;-webkit-text-stroke:.06em #1b1733;paint-order:stroke fill;color:var(--streak-color)}.hud-combo span{font-weight:800;letter-spacing:.12em;font-size:.7rem;color:#fff;text-shadow:0 2px 0 #1b1733}.bump{animation:bump .18s ease-out}@keyframes bump{50%{transform:scale(1.18)}}@keyframes bump-again{50%{transform:scale(1.18)}}.hud-pops{position:absolute;inset:0}.hud-pop{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font-weight:800;font-size:clamp(1rem,2.6vw,1.5rem);white-space:nowrap;opacity:0;-webkit-text-stroke:.08em #1b1733;paint-order:stroke fill;text-align:center;line-height:1}.hud-pop small{display:block;font-size:.55em;letter-spacing:.12em}.hud-pop.go{animation:popup .55s cubic-bezier(.2,.9,.3,1) forwards}.hud-pop.perfect{color:#fff36b}.hud-pop.great{color:#6bffb0}.hud-pop.good{color:#7fd6ff}.hud-pop.miss{color:#ff7a8a;font-size:clamp(.9rem,2.2vw,1.2rem)}.hud-pop.wrong{color:#ffb3bd;font-size:clamp(.8rem,2vw,1.05rem)}@keyframes popup{0%{opacity:0;transform:translate(-50%,-30%) scale(.5)}20%{opacity:1;transform:translate(-50%,-80%) scale(1.15)}70%{opacity:1;transform:translate(-50%,-110%) scale(1)}to{opacity:0;transform:translate(-50%,-140%) scale(.95)}}@keyframes popup-again{0%{opacity:0;transform:translate(-50%,-30%) scale(.5)}20%{opacity:1;transform:translate(-50%,-80%) scale(1.15)}70%{opacity:1;transform:translate(-50%,-110%) scale(1)}to{opacity:0;transform:translate(-50%,-140%) scale(.95)}}.hud-count{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);font-weight:800;font-size:clamp(4rem,14vw,8rem);color:var(--sun);-webkit-text-stroke:.05em #1b1733;paint-order:stroke fill;opacity:0}.hud-count.go{animation:count .8s ease-out forwards}@keyframes count{0%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(.9)}}@keyframes count-again{0%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(.9)}}.hud-banner{position:absolute;left:50%;top:24%;transform:translate(-50%);font-weight:800;font-size:clamp(1.3rem,4vw,2.2rem);color:#fff;-webkit-text-stroke:.06em #1b1733;paint-order:stroke fill;opacity:0;white-space:nowrap}.hud-banner.go{animation:banner 1.4s ease-out forwards}.hud-banner.gold,.hud-banner.encore{color:var(--sun)}.hud-banner.combo{color:#9fe8ff}.hud-banner.intro{top:30%;color:#fff;text-align:center;font-size:clamp(1.8rem,5vw,3.2rem)}.hud-banner.intro small{display:block;font-size:.4em;letter-spacing:.3em;color:var(--sun);text-transform:uppercase;-webkit-text-stroke:0;text-shadow:0 2px 0 #1b1733}.hud-banner.intro.go{animation-duration:2.4s}.hud-banner.lost{color:#c9c3e8;font-size:clamp(1rem,3vw,1.4rem)}@keyframes banner{0%{opacity:0;transform:translate(-50%) scale(.6)}15%{opacity:1;transform:translate(-50%) scale(1.1)}30%{transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%) translateY(-20px)}}@keyframes banner-again{0%{opacity:0;transform:translate(-50%) scale(.6)}15%{opacity:1;transform:translate(-50%) scale(1.1)}30%{transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%) translateY(-20px)}}.hud-hint{position:absolute;left:50%;bottom:30%;transform:translate(-50%);font-weight:800;font-size:clamp(1.1rem,3vw,1.6rem);color:#fff;text-shadow:0 3px 0 #1b1733,0 0 16px rgba(0,0,0,.6);opacity:0;transition:opacity .2s}.hud.practice .hud-hint{opacity:.9}.hud-hint.waiting{color:var(--sun);animation:pulse .9s ease-in-out infinite}.hud.practice .hud-score,.hud.practice .hud-meters,.hud.practice .hud-combo,.hud.practice .hud-stars{display:none}.hud-encore-btn{position:absolute;right:14px;bottom:calc(40% + var(--safe-bottom));border:0;border-radius:50%;width:88px;height:88px;font:800 .95rem var(--display);color:var(--ink);background:radial-gradient(circle at 40% 35%,#fff6b8,var(--sun) 50%,#ff9d00);box-shadow:0 6px #b8600a,0 0 30px #ffc828cc;cursor:pointer;transform:scale(0);transition:transform .25s cubic-bezier(.2,.9,.3,1.4)}.hud-encore-btn.show{transform:scale(1);animation:pulse .8s ease-in-out infinite}@media(pointer:fine){.hud-encore-btn{display:none}}.hud-tap{position:absolute;left:0;right:0;bottom:0;height:34%;display:grid;grid-template-columns:1fr 1fr}.hud-tap i{display:flex;align-items:flex-end;justify-content:center;gap:8px;padding-bottom:calc(10px + var(--safe-bottom));font-style:normal;background:linear-gradient(0deg,rgba(255,255,255,.14),transparent 80%);transition:background .08s}.hud-tap i+i{box-shadow:inset 2px 0 #ffffff2e}.hud-tap b{font:800 1.6rem/1 var(--display);color:#fff;text-shadow:0 2px 0 #1b1733}.hud-tap span{font:800 .8rem/1.6 var(--display);letter-spacing:.25em;color:#fff;opacity:.8;text-shadow:0 2px 0 #1b1733}.hud-tap i[data-lane="0"].on{background:linear-gradient(0deg,rgba(255,79,79,.55),transparent 85%)}.hud-tap i[data-lane="1"].on{background:linear-gradient(0deg,rgba(47,178,255,.55),transparent 85%)}.hud-words{position:absolute;left:50%;top:calc(14px + var(--safe-top));transform:translate(-50%);display:grid;justify-items:center;gap:4px}.hud-word{display:flex;gap:4px;padding:6px 12px;border-radius:16px;background:#fff8eaf0;box-shadow:0 5px #0000004d}.hud-word span{font:800 clamp(1.6rem,4vw,2.4rem)/1 var(--display);color:#8a84a8;min-width:.7em;text-align:center;padding-top:.08em}.hud-word span.hit{color:#1c9c4a}.hud-word span.miss{color:#e8282f;text-decoration:line-through 3px}.hud-word span.now{color:var(--ink);border-bottom:4px solid var(--tangerine);animation:pulse .8s ease-in-out infinite}.hud-next{font:800 .95rem var(--display);letter-spacing:.08em;color:#fff;text-shadow:0 2px 0 #1b1733;opacity:.9}.hud.practice .hud-words{display:grid}.results-card{text-align:center;width:min(460px,100%)}.results-kicker{font:800 .9rem var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--sun)}.results-card h2{font-size:1.7rem}.results-top{display:flex;justify-content:center;align-items:center;gap:18px}.results-stars{display:flex;gap:4px}.big-star{font-style:normal;font-size:3.4rem;line-height:1;color:#ffffff2e;transform:scale(.6);animation:starIn .5s cubic-bezier(.2,.9,.3,1.6) forwards;animation-delay:var(--d)}.big-star.on{color:var(--sun);text-shadow:0 4px 0 #c46a00,0 0 22px rgba(255,210,60,.9)}.big-star:nth-child(2){font-size:4.2rem;margin-top:-14px}@keyframes starIn{0%{transform:scale(0) rotate(-40deg)}to{transform:scale(1) rotate(0)}}.results-rank{font:800 3.6rem/1 var(--display);width:86px;height:86px;display:grid;place-items:center;border-radius:22px;background:var(--cream);color:var(--coral);box-shadow:0 6px #0000004d;transform:rotate(-8deg);animation:stamp .45s cubic-bezier(.2,.9,.3,1.4) 1.1s both}.rank-Splus,.rank-S{color:#d4148a;background:linear-gradient(180deg,#fff6c2,var(--sun))}.rank-Splus{font-size:2.8rem}.rank-A{color:#1c8f3a}.rank-B{color:#1f6fe8}@keyframes stamp{0%{transform:scale(2.4) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(-8deg);opacity:1}}.results-score{display:grid;gap:2px}.results-score span{font-weight:800;letter-spacing:.2em;font-size:.75rem;opacity:.8}.results-score b{font:800 2.6rem/1 var(--display);font-variant-numeric:tabular-nums}.new-best{font-style:normal;justify-self:center;font:800 .9rem var(--display);color:var(--ink);background:var(--sun);padding:.2em .7em .1em;border-radius:8px;animation:pulse .8s ease-in-out infinite}.results-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 10px}.results-grid div{display:flex;justify-content:space-between;padding:6px 10px;border-radius:10px;background:#0003;font-weight:800}.results-grid span{opacity:.85}.results-grid b{font-family:var(--display)}.j-perfect b{color:#fff36b}.j-great b{color:#6bffb0}.j-good b{color:#7fd6ff}.j-miss b{color:#ff9aa6}.results-tip,.results-practice,.results-freed{margin:0;font-weight:700}.results-calibrate{margin:.4rem 0 0}.results-freed{color:#9fe8ff;font-family:var(--display);font-weight:800}.results-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}@media(max-width:700px){.map-bar{grid-template-columns:1fr auto}.map-brand{display:none}.map-stats{justify-content:flex-start}.map-goal{font-size:.8rem}.island-panel{inset:auto 8px 8px;width:auto;max-height:72vh;animation-name:slideUp}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}}.settings-grid{grid-template-columns:1fr}.hud-top{grid-template-columns:auto 1fr auto}.hud-top .hud-song{grid-column:2;justify-self:stretch;width:auto;text-align:center}.hud-top .hud-pause{grid-column:3}.hud-score{padding:6px 10px 4px}.hud-score b{font-size:1.4rem}.hud-song{padding:4px 8px 6px}.hud-song-title{font-size:.85rem}.hud-badges{display:none}.hud-meters{top:calc(70px + var(--safe-top));width:44vw}.hud-combo{left:auto;right:12px;top:calc(70px + var(--safe-top));min-width:104px;max-width:42vw;padding:8px 9px}.hud.words-mode .hud-combo{top:calc(190px + var(--safe-top))}.hud-combo b{font-size:2.2rem}.hud-words{top:calc(118px + var(--safe-top))}.hud-banner.intro small{letter-spacing:.1em;font-size:.34em}.dialogue-portrait{width:92px;height:92px;margin-top:-48px}.dialogue-card{gap:10px;padding:12px 14px}.results-top{gap:10px}.big-star{font-size:2.6rem}.big-star:nth-child(2){font-size:3.2rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hud-pop.go,.hud-count.go,.hud-banner.go{animation-duration:.9s!important}.streak-ring.go{display:none}}.language-control{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;font-size:13px}.language-control select{max-width:100%;padding:7px 10px;border-radius:10px;font:inherit}html[lang=vi] .btn{white-space:normal}html[lang=vi] .title-hint{letter-spacing:normal}
