
:root{font-family:'DM Sans',system-ui,sans-serif;color:#f3f7ff;background:#080e25;font-synthesis:none;--cyan:#89edff;--muted:#9ba9c5}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #fff;outline-offset:5px}button{color:inherit}button:disabled{opacity:.5}button,a{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}#game{position:relative;width:100%;height:100svh;min-height:400px;overflow:hidden;isolation:isolate}#world{width:100%;height:100%;display:block;outline:none;touch-action:none;background:#101b3b}.grain{position:absolute;inset:0;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:28px 3.5%;z-index:12;pointer-events:none}.wordmark{font:800 32px/1 system-ui,sans-serif;letter-spacing:-1.6px;text-decoration:none;color:#fff;pointer-events:auto}.wordmark span{display:block;font-size:9px;letter-spacing:5px;line-height:2.5;margin-left:3px;color:#a4d8e7}.top-actions{display:flex;align-items:center;gap:14px}.edition{font-size:9px;font-weight:600;letter-spacing:2px;color:#b6c9de;margin-right:13px}.icon-button{border:1px solid #a2d6f333;border-radius:50px;background:#0b163890;backdrop-filter:blur(15px);padding:9px 15px;pointer-events:auto;font-size:20px;min-width:44px;height:42px;display:flex;gap:8px;align-items:center;justify-content:center}.icon-button span{font-size:9px;color:#c3d4df;letter-spacing:1px}.screen{position:absolute;inset:0;z-index:10}.title-screen{background:linear-gradient(90deg,#070e28f5 0%,#09132cdd 29%,#09132c55 54%,transparent 75%)}.title-copy{position:absolute;top:23%;left:8%;max-width:570px}.tag{font-size:10px;letter-spacing:2.3px;color:#a5e9f3;font-weight:700;display:flex;align-items:center;gap:9px}.tag i{width:6px;height:6px;border-radius:50%;background:#8bf6e7;box-shadow:0 0 15px #8bf6e7}h1{font:500 clamp(42px,5.3vw,83px)/1.07 system-ui,sans-serif;letter-spacing:-2.8px;margin:24px 0}h1 em{font-style:normal;color:#8ce9ff}p{line-height:1.7}.title-copy p{color:#acbdd4;font-size:16px;margin:0 0 29px}.primary{border:0;background:#92e8f7;color:#0a2637;border-radius:8px;padding:17px 24px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:space-between;gap:45px;box-shadow:0 5px 35px #58c9ef1a;transition:background .2s,transform .2s}.primary:hover{background:#c2f6ff;transform:translateY(-2px)}.primary span{font-size:23px;line-height:16px;font-weight:400}.start-options{display:flex;align-items:center;gap:12px;font-size:11px;margin-top:19px}.start-options label{display:flex;align-items:center;gap:6px;color:#d1e5f1}.start-options input{accent-color:#90eaf8}.option-hint{font-size:10px;color:#7e94af}.title-controls{margin-top:33px;display:flex;flex-wrap:wrap;gap:15px;font-size:10px;color:#7790ae}kbd{font:9px system-ui;letter-spacing:1px;color:#b8cbdc;border:1px solid #7190a640;background:#12273b77;border-radius:4px;padding:4px 6px;margin-right:3px}.hero-caption{position:absolute;top:72%;left:66%;display:grid;gap:8px;font-size:10px;color:#8da8c0;letter-spacing:.5px}.hero-caption b{font-size:10px;color:#d5f2ff;letter-spacing:2.2px}.little-line{position:absolute;left:-45px;top:6px;width:30px;height:1px;background:#80bbd0}.title-bottom{position:absolute;bottom:30px;left:3.5%;right:3.5%;display:flex;align-items:center;justify-content:space-between;color:#7891ad;font-size:9px;letter-spacing:1.5px}.title-bottom i{font-style:normal;padding:0 12px;color:#a3d7e6}.quiet{border:0;background:none;font-size:12px;color:#b8d3e3;padding:12px}.modal-screen{display:grid;place-items:center;background:#070e25b8;backdrop-filter:blur(12px);padding:20px;z-index:30}.modal{max-width:540px;width:100%;border:1px solid #82d4ef2b;border-radius:22px;background:linear-gradient(145deg,#172a46ee,#0a1530f5);padding:42px;box-shadow:0 30px 100px #0005}.modal h2{font:500 47px/1.07 system-ui;letter-spacing:-1.5px;margin:24px 0 20px}.modal p{font-size:14px;color:#adc1d6}.modal .primary{margin-top:18px}.modal .quiet{display:block;margin-top:15px}.win{text-align:center;max-width:600px}.win .tag{display:block;font-size:9px}.stars{font-size:39px;color:#ffc982;letter-spacing:12px;margin-top:23px;text-shadow:0 0 30px #ffad623b}.results{display:flex;justify-content:center;gap:35px;margin:28px 0 5px}.results b{display:block;font:500 25px system-ui;color:#91e8f7}.results span{font-size:8px;letter-spacing:1.2px;color:#8da6be}.best{font-size:11px!important}.credits{display:block;margin-top:25px;color:#6f88a3;line-height:1.8;font-size:9px}#hud{position:absolute;top:111px;left:3.5%;right:3.5%;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}.chapter-pill{display:flex;gap:12px;align-items:center}.chapter-pill>span{font:400 36px system-ui;color:#8ce6f5;opacity:.65;border-right:1px solid #9ed7ff33;padding-right:13px}.chapter-pill small{display:block;font-size:8px;letter-spacing:2px;color:#9abbd2;margin-bottom:6px}.chapter-pill b{font-size:15px;font-weight:500}.meters{width:235px;padding:14px 17px;border:1px solid #a0c4ee20;background:#09152dc9;border-radius:11px;backdrop-filter:blur(10px)}.courage-label,.progress-label{display:flex;justify-content:space-between;font-size:8px;letter-spacing:1.3px;color:#8fafc4}.courage-label b{color:#b5eff4}.meter{margin:8px 0 12px;height:4px;background:#2e3f5f;border-radius:4px;overflow:hidden}.meter i{height:100%;display:block;background:#92ecdd;box-shadow:0 0 12px #80edcd;width:100%;transition:width .2s}.progress-label{font-size:9px;letter-spacing:0;color:#c1d7e7}.progress-label b{color:#97ecfa}#mission{position:absolute;left:3.5%;bottom:119px;max-width:260px;pointer-events:none}#mission>small{font-size:8px;letter-spacing:1.7px;color:#91e6f4}#mission p{font-size:13px;line-height:1.6;color:#cfdfec;margin:9px 0 15px}#friend-list{display:flex;gap:7px}.friend{padding:6px 8px;background:#08172d99;border:1px solid #9cb5db25;border-radius:6px;font-size:9px;color:#a1b5c9;display:flex;align-items:center;gap:5px}.friend i{width:5px;height:5px;border-radius:50%;background:#5a6b80}.friend.found{color:#d5f5ff;border-color:#93e8fb66}.friend.found i{background:var(--c,#8cecff);box-shadow:0 0 9px var(--c,#8cecff)}#dialogue{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);width:min(600px,90%);display:flex;align-items:center;gap:14px;background:#09162ded;backdrop-filter:blur(15px);border:1px solid #8ccef444;border-radius:13px;padding:14px 40px 14px 13px;z-index:8;box-shadow:0 8px 40px #0004}#portrait{width:53px;height:53px;flex-shrink:0;border-radius:9px;background:#1d2d49}.speaker{display:flex;align-items:center;gap:13px;font-size:9px;letter-spacing:1px}.speaker b{color:#bbafff}.speaker span{font-size:7px;color:#6e8ba6}.speaker+p{font-size:12px;line-height:1.6;margin:6px 0 0;color:#c5d9e7}#dismiss{position:absolute;top:8px;right:10px;border:0;background:none;color:#7898b5;font-size:20px}#flight-controls{position:absolute;bottom:29px;right:3.5%;display:flex;flex-direction:column;gap:9px;text-align:right;font-size:8px;letter-spacing:1px;color:#7595b1}#flight-controls>span:first-child{color:#9edeea}#flight-controls i{display:inline-block;width:2px;height:2px;border-radius:50%;background:#8fb5ca;margin:0 8px}#toast{position:absolute;top:37%;left:50%;transform:translate(-50%,-50%);color:#d9f7ff;padding:12px 20px;border:1px solid #83e4f455;background:#102c45df;border-radius:30px;font-size:13px;text-align:center;opacity:0;transition:opacity .25s;pointer-events:none;z-index:9}#toast.show{opacity:1}#loading{position:absolute;inset:0;background:#080f29;display:grid;place-items:center;font-size:10px;letter-spacing:3px;z-index:99}#touch-controls{position:absolute;inset:auto 0 16px;pointer-events:none;display:none;justify-content:space-between;padding:0 20px;z-index:9}#joystick{position:relative;width:110px;height:110px;background:#76d1ed13;border:1px solid #97e8f330;border-radius:50%;pointer-events:auto;touch-action:none;display:grid;place-items:center}#joystick i{position:absolute;width:43px;height:43px;border:1px solid #91e9f588;background:#8be5f133;border-radius:50%;box-shadow:0 0 20px #8ce8f51a}#joystick span{position:absolute;bottom:7px;font-size:7px;letter-spacing:2px;color:#87b8d0}.touch-actions{display:flex;align-items:flex-end;gap:12px}.touch-actions button{width:66px;height:66px;pointer-events:auto;touch-action:none;border-radius:50%;background:#143248bb;border:1px solid #8ad6e966;font-size:24px;color:#b7f5ff}.touch-actions button small{display:block;font-size:7px;letter-spacing:1px}#pulse-touch{height:82px;width:82px;background:#1a4a60cc}.playing header .edition{display:none}
@media (pointer:coarse){#touch-controls:not([hidden]){display:flex}#flight-controls{display:none!important}#dialogue{bottom:150px}#mission{bottom:156px;max-width:200px}}
@media(max-width:700px){header{padding:18px 22px}.wordmark{font-size:26px}.edition{display:none}.icon-button{padding:8px 12px;height:37px;font-size:18px}.title-screen{background:linear-gradient(90deg,#070e28da,transparent),linear-gradient(0deg,#09132cbb,transparent 90%)}.title-copy{top:24%;left:8%;right:8%}h1{font-size:46px;letter-spacing:-1.8px}.title-copy p{font-size:14px}.title-copy .tag{font-size:8px}.title-controls{display:none}.hero-caption{display:none}.title-bottom{font-size:7px;left:7%;right:5%;bottom:15px}.title-bottom>span{max-width:190px;line-height:1.9}.option-hint{font-size:9px;max-width:130px}.start-options{gap:6px}.title-copy .primary{padding:15px 22px}.modal{padding:28px}.modal h2{font-size:38px}.modal p{font-size:12px}.results{gap:22px}.results span{font-size:7px}.credits{font-size:8px}#hud{top:88px;left:22px;right:22px;gap:14px}.chapter-pill{gap:8px}.chapter-pill>span{font-size:27px;padding-right:9px}.chapter-pill b{font-size:12px}.chapter-pill small{font-size:7px;letter-spacing:1px}.meters{width:166px;padding:10px 12px}.courage-label{font-size:7px}.progress-label{font-size:8px}#mission{left:22px;max-width:185px}#mission p{font-size:11px}#mission>small{font-size:7px}#dialogue{width:92%;padding:11px 28px 11px 9px;gap:9px}#portrait{width:43px;height:43px}.speaker span{display:none}.speaker+p{font-size:11px}.friend{font-size:8px;padding:5px}#toast{font-size:11px;width:max-content;max-width:85%}}
@media(max-height:620px) and (min-width:701px){.title-copy{top:22%}h1{font-size:50px;margin:16px 0}.title-copy p{font-size:13px;margin-bottom:15px}.title-controls{margin-top:15px}.title-bottom{bottom:15px}header{padding-top:18px}#hud{top:87px}#dialogue{bottom:14px}#mission{bottom:105px}.modal{padding:25px}.modal h2{font-size:34px;margin:15px 0}.modal p{font-size:12px}.win .stars{margin-top:10px;font-size:25px}.results{margin:15px 0}.credits{margin-top:15px}}

#world3d{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}#altitude-touch{display:flex;flex-direction:column;gap:7px}#altitude-touch button{width:34px;height:34px;font-size:19px;background:#143248dd}#boost-status{color:#d8bafa!important}.three-mode #mission{bottom:155px}.three-mode #flight-controls{bottom:35px}
#radar{position:absolute;right:3.5%;top:230px;width:150px;height:192px;pointer-events:none;display:none;border-radius:8px}.three-mode.playing #radar{display:block}.three-mode #mission{max-width:220px}.three-mode #dialogue{bottom:28px}.modal{max-height:92svh;overflow:auto}.title-copy{max-height:74svh;overflow:auto}.three-mode .modal-screen~#radar{z-index:0}
@media(max-width:700px){#radar{width:108px;height:138px;top:190px;right:22px}.three-mode #mission{bottom:172px;max-width:180px}.three-mode #dialogue{bottom:145px}.title-copy{top:20%;max-height:72svh}.title-copy h1{font-size:clamp(32px,8vw,46px)}}
@media(max-height:580px){#radar{top:180px;width:100px;height:128px}#mission{display:none}.title-copy{top:20%;max-height:70svh}h1{font-size:36px}.title-copy p{font-size:12px;margin-bottom:12px}.title-controls{display:none}.modal{padding:22px}.modal h2{font-size:30px}}
@media(prefers-reduced-motion:reduce){button{transition:none}.grain{display:none}}

@media(min-width:701px) and (min-height:621px){.title-copy{max-height:none;overflow:visible;max-width:610px}.title-copy h1{font-size:clamp(42px,5vw,76px)}}
@media(max-width:700px){#touch-controls:not([hidden]){display:flex}#flight-controls{display:none!important}#dialogue,.three-mode #dialogue{bottom:145px}#game:has(#dialogue:not([hidden])) #mission{visibility:hidden}}
.playing:not(.three-mode) .chapter-pill{padding:10px 14px;background:#102c43cf;border:1px solid #9bd7e633;border-radius:10px}.playing:not(.three-mode) .chapter-pill small{color:#bcdce7}.playing:not(.three-mode) #mission{padding:12px 16px;background:#102c43dc;border-radius:10px;bottom:144px}.wordmark{text-shadow:0 2px 15px #14274780}#toast{top:24%}.title-copy .tag{font-size:9px;letter-spacing:1.5px}.playing:not(.three-mode) #flight-controls{padding:10px;background:#102c43c9;border-radius:8px}
@media(max-width:700px){.playing:not(.three-mode) .chapter-pill{padding:8px;max-width:165px}.playing:not(.three-mode) #mission{bottom:148px;max-width:190px}.title-copy .tag{max-width:250px;line-height:1.7}}

/* Flight UI: quiet ivory/cyan instruments, leaving the sky open. */
.flying header{padding:20px 24px;justify-content:flex-end}
.flying .wordmark,.flying #sound span,.showing header,.showing #hud,.showing #touch-controls,.showing #radar{display:none!important}
.flying .top-actions{gap:8px}
.flying .icon-button{height:40px;min-width:40px;padding:8px;background:#fff6e5e8;color:#365669;border:1px solid #fff9edb3;box-shadow:0 2px 10px #294b5912;backdrop-filter:blur(8px)}
#hud{top:20px;left:24px;right:128px;display:flex;align-items:center;gap:14px;justify-content:flex-start;z-index:5}
.flight-strip{display:flex;align-items:center;gap:16px;height:40px;padding:0 16px;border-radius:22px;background:#fff6e5e8;color:#365669;border:1px solid #fff9edb3;box-shadow:0 2px 10px #294b5912;backdrop-filter:blur(8px);flex-shrink:0}
.hud-progress{display:flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}
.hud-progress>span{font-size:23px;color:#a17b3e}.hud-progress b{font-weight:600}
.hud-resource{display:flex;align-items:center;gap:6px}.hud-resource>span{font-size:19px;line-height:1}
.mini-track{height:4px;width:40px;background:#d3ddd7;border-radius:5px;overflow:hidden}
.mini-track i{display:block;width:100%;height:100%;border-radius:5px;transition:width .15s;background:#5c9f95}
#boost-fill{background:#9b88b7}#boost-meter>span{color:#8570a2}
#courage-meter.low{color:#bd5c46}#courage-meter.low i{background:#d77657}
.pulse-indicator{font-size:20px;color:#418d9e;transition:opacity .2s}.pulse-indicator.recharging{opacity:.28}
#navigation-cue{font-size:11px;color:#f1f7f2;text-shadow:0 1px 5px #152a42;white-space:nowrap}
.three-mode .flight-strip,.three-mode.flying .icon-button{background:#1d3547d9;color:#e1f2ed;border-color:#adcbd52e}
.three-mode .mini-track{background:#53616e}.three-mode .pulse-indicator{color:#94e4e6}
#toast{top:76px;left:50%;transform:translateX(-50%);padding:7px 14px;border:0;background:#fff6e5ed;color:#365669;border-radius:18px;font-size:12px;max-width:80%;width:max-content;box-shadow:0 2px 8px #294b5910}
.three-mode #toast{background:#1d3547ed;color:#e1f2ed}
#dialogue,.three-mode #dialogue{bottom:25px;width:max-content;max-width:min(520px,85%);padding:9px 32px 9px 12px;gap:9px;border:1px solid #d7ebed30;background:#203a4ae6;border-radius:24px;box-shadow:none}
#portrait{width:32px;height:32px;border-radius:50%;background:transparent}
.speaker{font-size:8px;letter-spacing:.5px}.speaker span{display:none}.speaker+p{font-size:12px;line-height:1.4;margin:3px 0 0}
#dismiss{top:9px;right:11px}
.three-mode.playing #radar{top:auto;bottom:24px;right:24px;width:94px;height:120px;opacity:.8;border-radius:16px;overflow:hidden}
.three-mode:not(.flying) #radar{display:none}
.pause-objective{color:#c4e8df!important;padding-bottom:16px;border-bottom:1px solid #b7dce025}
#touch-controls{padding:0 18px;bottom:18px}#joystick{width:90px;height:90px;background:#fff5e51c;border-color:#fff5e566}#joystick i{width:36px;height:36px;background:#e5f2e552;border-color:#fff8eaaa}#joystick span,.touch-actions small{display:none!important}
.touch-actions button,#pulse-touch{width:56px;height:56px;border:1px solid #fff8ed91;background:#fff6e5c9;color:#43677b;font-size:24px}
.touch-actions{gap:10px}#altitude-touch button{background:#fff6e5c9;color:#43677b;border-color:#fff8ed91}
@media(max-width:700px){.flying header{padding:16px}.flying .icon-button{height:36px;min-width:36px;padding:6px;font-size:17px}.flying .top-actions{gap:6px}#hud{top:16px;left:16px;right:102px;flex-direction:column;align-items:flex-start;gap:8px}.flight-strip{height:36px;padding:0 11px;gap:10px}.mini-track{width:25px}.hud-progress{font-size:10px;gap:4px}.hud-resource{gap:4px}.hud-resource>span{font-size:17px}.pulse-indicator{font-size:18px}#navigation-cue{font-size:10px;padding-left:8px}#toast{top:89px;font-size:11px}#dialogue,.three-mode #dialogue{bottom:126px;max-width:90%;padding:8px 28px 8px 10px}.speaker+p{font-size:11px}.three-mode.playing #radar{top:68px;bottom:auto;right:16px;width:70px;height:90px}}
@media(pointer:coarse){#dialogue,.three-mode #dialogue{bottom:126px}.three-mode.playing #radar{top:76px;bottom:auto}}

/* Official intro lockup, with a dedicated clear area for the character. */
.wordmark img{display:block;width:124px;height:auto}.wordmark{letter-spacing:0}
body:not(.playing) header .wordmark,body:not(.playing) header .edition{display:none}
body:not(.playing) header{justify-content:flex-end}
.title-screen{background:linear-gradient(90deg,#0b183bd9 0%,#13264e8c 35%,transparent 52%);pointer-events:none}
.title-screen button,.title-screen a,.title-screen label{pointer-events:auto}
.title-copy{top:24%;left:6%;width:38%;max-width:490px;max-height:none;overflow:visible}
.official-title{margin:0 0 22px;letter-spacing:0;font-size:inherit;line-height:1}
.official-title img{width:100%;height:auto;display:block}
.official-title>span{display:block;text-align:center;margin-top:12px;color:#e6f5fa;font-size:13px;letter-spacing:7px;font-weight:500}
.title-copy .title-intro{font-size:15px;color:#e1edf4;margin:0 0 24px;text-align:center}
.title-copy .primary{display:flex;width:100%;max-width:260px;margin:0 auto;pointer-events:auto}
.start-options{justify-content:center}.title-controls{justify-content:center;color:#d4e4ed;font-size:9px;gap:10px;margin-top:22px}
.title-controls kbd{color:#e2eff5;background:#142c4c9c}
.title-bottom{color:#e0e9f0;letter-spacing:1px}.title-bottom .quiet{color:#e0e9f0}
@media(max-width:700px) and (orientation:portrait){
 .title-screen{background:linear-gradient(180deg,#10234680,transparent 30%,transparent 65%,#102346b0)}
 .title-copy{inset:9% 7% auto;width:86%;max-width:none;height:76%;max-height:none;overflow:visible;display:flex;flex-direction:column;align-items:center}
 .official-title{width:76%;max-width:300px;margin:0}.official-title>span{font-size:10px;letter-spacing:5px;margin-top:4px}
 .title-copy .title-intro{display:none}.title-copy .primary{position:absolute;top:77%;width:86%;max-width:270px;padding:14px 20px}
 .start-options{position:absolute;top:86%;margin-top:16px;font-size:10px}.option-hint{display:none}
 .title-controls{display:none}.title-bottom>span{display:none}.title-bottom{left:6%;right:6%;bottom:12px}
}
@media(max-height:620px) and (orientation:landscape){.title-copy{top:16%;left:6%;width:36%;max-height:none}.official-title{margin-bottom:12px;max-width:350px}.official-title>span{font-size:10px;margin-top:4px}.title-copy .title-intro{font-size:12px;margin-bottom:14px}.title-copy .primary{padding:12px 20px}.start-options{margin-top:12px}.title-controls{display:none}.title-bottom{bottom:8px}}

#boost-meter.exhausted>span{opacity:.35}

/* Three-sky 2D flight controls. */
#hud{display:block;width:max-content;right:auto}.flight-strip{width:max-content;gap:14px}
.course-track{height:2px;margin:6px 12px 0;background:#e2efe34d;border-radius:3px;overflow:hidden}.course-track i{display:block;height:100%;background:#fff2ca;width:0;transition:width .15s}
#speed-mark{font-size:23px;line-height:1;color:#8b91a1;opacity:.4;transition:color .2s,opacity .2s}#speed-mark.active{color:#9273ba;opacity:1}
.evening .flight-strip,.evening.flying .icon-button{background:#213b52d9;color:#e8f5ed;border-color:#c0dbe036}.evening .pulse-indicator{color:#91e1e6}.evening #speed-mark.active{color:#d4afff}
.evening #toast{background:#223e56ed;color:#edf7f4}
.hello-control{display:block;margin:-7px auto 16px;border:0;background:transparent;color:#cce8f2;font-size:11px;padding:6px 12px;pointer-events:auto;text-decoration:underline;text-underline-offset:4px}
#hello:hover{color:white}#world{cursor:grab}#world:active{cursor:grabbing}
#pulse-touch.recharging{opacity:.45}#touch-controls .touch-actions{align-items:center}
@media(max-width:700px) and (orientation:portrait){.hello-control{margin:10px auto 0;font-size:10px}.flight-strip{gap:12px}.course-track{margin-top:5px}}

#city-world{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.city-mode #world{position:relative;opacity:0}.city-mode .grain{display:none}.city-mode #pulse-touch{background:#bdeef8;color:#15394d}.city-mode #speed-mark.active{color:#ffdb87}.city-mode #toast{background:#19334be8;color:#fff4da}

/* Route-end reward only; gameplay stays free of extra panels. */
.perfect-celebration{position:absolute;inset:0;z-index:25;display:grid;place-items:center;pointer-events:none;background:radial-gradient(ellipse at center,#193a5959,#0b1837b3)}.perfect-card{width:min(94vw,680px);text-align:center;display:flex;flex-direction:column;align-items:center;animation:perfect-pop .58s cubic-bezier(.18,.9,.28,1.2) both;filter:drop-shadow(0 12px 28px #07163280)}.perfect-card strong{font:900 clamp(48px,10.5vw,108px)/1 'DM Sans',system-ui,sans-serif;letter-spacing:-.045em;color:#fff1bc;-webkit-text-stroke:2px #244b68;paint-order:stroke fill;text-shadow:0 5px 0 #216b8a,0 0 36px #8ef0ff80;transform:rotate(-4deg);margin-top:-18px}.perfect-card>span{font-size:clamp(9px,1.5vw,12px);font-weight:800;letter-spacing:.16em;color:#e8fcff;margin-top:24px;text-shadow:0 2px 6px #09233c}.perfect-sparkles{font-size:32px;letter-spacing:22px;color:#b5f9ff;animation:perfect-sparkle .9s ease-in-out infinite alternate;margin-bottom:-24px}.perfect-card canvas{display:block;width:min(360px,80vw);height:auto;aspect-ratio:36/25}.perfect-celebration[hidden]{display:none}@keyframes perfect-pop{0%{opacity:0;transform:scale(.35) rotate(-10deg)}70%{opacity:1;transform:scale(1.08) rotate(2deg)}100%{opacity:1;transform:scale(1) rotate(0)}}@keyframes perfect-sparkle{from{opacity:.45;transform:scale(.94)}to{opacity:1;transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.perfect-card,.perfect-sparkles{animation:none}}@media(max-height:520px){.perfect-card canvas{width:230px}.perfect-card strong{font-size:64px}.perfect-card>span{margin-top:15px}}

.perfect-celebration[data-grade="nice"] .perfect-card strong{color:#bdfaff}.perfect-celebration[data-grade="not-bad"] .perfect-card strong{color:#e8dcff;font-size:clamp(44px,9vw,94px)}.perfect-celebration[data-grade="improve"] .perfect-card strong{color:#d9f2ff;font-size:clamp(40px,7.5vw,76px);max-width:90vw;line-height:1.05}.perfect-celebration:not([data-grade="perfect"]) .perfect-sparkles{animation-duration:1.3s}

/* A single running score stays in the top instruments, never above the character. */
.score-readout{position:absolute;z-index:5;top:20px;left:50%;transform:translateX(-50%);height:40px;display:flex;align-items:center;gap:9px;padding:0 15px;border-radius:22px;background:#fff6e5e8;color:#365669;border:1px solid #fff9edb3;box-shadow:0 2px 10px #294b5912;pointer-events:none}.score-readout span{font-size:8px;font-weight:700;letter-spacing:.12em;opacity:.75}.score-readout b{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;min-width:4ch;text-align:right}.evening .score-readout{background:#213b52d9;color:#e8f5ed;border-color:#c0dbe036}@media(max-width:700px){.score-readout{left:16px;top:64px;transform:none;height:28px;padding:0 11px;gap:8px}.score-readout b{font-size:13px}.score-readout span{font-size:7px}#toast{top:103px}}
