:root{--lime:#d4ff3a;--cyan:#3af2ff;--pink:#ff3ea5;--purple:#8b5cff;--muted:#938aab;--ink:#08070e;--line:#ffffff16}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:#f6f4ff;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}a{color:inherit;text-decoration:none}header{max-width:1400px;margin:auto;height:88px;display:flex;align-items:center;padding:0 5%;border-bottom:1px solid var(--line);gap:45px}.brand{display:flex;align-items:center;gap:9px}.brand img{width:42px;transform:rotate(-8deg)}.brand>span{font-size:26px;font-weight:950;letter-spacing:-1.3px;line-height:1}.brand b{color:var(--lime);text-shadow:2px 1px var(--pink)}.brand small{display:block;font:7px monospace;color:var(--cyan);letter-spacing:3px;margin-top:6px}nav{display:flex;gap:6px;background:#14111e;border:1px solid #2c2638;border-radius:8px;padding:4px;margin:auto}nav a{padding:10px 19px;font:10px monospace;color:#8b809f;border-radius:5px;white-space:nowrap}nav b{font:700 12px Arial,sans-serif;margin-left:6px}nav a[aria-current]{background:var(--lime);color:#08070e}nav i{font:8px monospace;margin-left:6px;color:var(--pink);font-style:normal}.archive{font:10px monospace;color:#7c718e}main{max-width:1280px;margin:auto;padding:32px 42px 0}.title-row{display:flex;align-items:center;margin-bottom:24px;gap:32px}.eyebrow{font:8px monospace;color:var(--cyan);letter-spacing:2px}h1{font-size:66px;font-weight:950;line-height:1;letter-spacing:-4px;margin:10px 0 0}h1>span{color:var(--lime)}h1>i{font-style:normal;color:var(--pink);font-size:32px;vertical-align:top;margin:5px 0 0 9px;display:inline-block}.title-row>p{font-size:16px;letter-spacing:1px;border-left:1px solid #3b2e48;padding-left:25px;margin:29px 0 0}.title-row>p small{display:block;font-size:10px;letter-spacing:1px;color:var(--muted);margin-top:11px}.edition{margin-left:auto;text-align:right;font:8px/1.8 monospace;color:#71657e;letter-spacing:1.5px}.edition b{font-weight:400;color:#b5a4c7}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 254px;gap:30px}.game-shell{border:1px solid #4e3c63;border-radius:13px;overflow:hidden;background:#100c19;box-shadow:6px 6px 0 #21172e}.hud{height:72px;display:flex;align-items:center;gap:10px;padding:0 20px;background:#14101f;border-bottom:1px solid #352540}.song{display:flex;align-items:center;gap:11px;flex:1}.disc{display:grid;place-items:center;width:37px;height:37px;border:1px solid #62516e;border-radius:50%;color:var(--lime);background:repeating-radial-gradient(circle,#1d1826 0 3px,#32283e 4px,#1d1826 5px 6px);font-size:20px}.song strong{font:700 12px monospace;letter-spacing:2px}.song small{display:block;color:#8a7b9e;font:8px monospace;letter-spacing:.8px;margin-top:6px}.score-hud{margin-right:15px;text-align:right}.score-hud span{font:8px monospace;display:block;color:#9786ac;letter-spacing:1.5px}.score-hud b{font:700 23px monospace;display:block;letter-spacing:-1px;margin-top:3px}.hud>button{width:30px;height:30px;border:1px solid #483751;background:#241b2e;color:#e9d9f8;border-radius:6px;font-size:17px}.stage{height:490px;position:relative;overflow:hidden;isolation:isolate;touch-action:none;background:#0d0718}canvas{width:100%;height:100%;display:block}.stage-caption{position:absolute;left:24px;top:24px;pointer-events:none}.stage-caption>span{color:#b3a1c9;font:9px monospace;letter-spacing:2px}.stage-caption>small{display:block;color:#6e5d83;font-size:9px;margin-top:7px}.run-stats{position:absolute;right:22px;top:23px;text-align:right;pointer-events:none}.run-stats>b{font:700 28px monospace;color:var(--lime);display:block}.run-stats>span{font:700 22px monospace;display:block;margin-top:22px}.run-stats small{font:7px monospace;color:#89749d;letter-spacing:1.5px;display:block;margin-top:3px}#tap-zone{position:absolute;inset:0;background:transparent;border:0;z-index:2;touch-action:none;outline-offset:-4px}.stage-bottom{position:absolute;bottom:17px;left:24px;right:24px;display:flex;justify-content:space-between;gap:12px;pointer-events:none}.stage-bottom>span:first-child{font-size:10px;color:#bbabd1}.stage-bottom>span:last-child{font:11px monospace;color:var(--lime);letter-spacing:4px}#overlay{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:linear-gradient(90deg,#0b061299,#10092011,#0b061255);backdrop-filter:blur(2px)}#overlay[hidden]{display:none}.start-card{width:320px;text-align:center;border:1px solid #75548f66;border-radius:17px;padding:26px 25px;background:#160c24e8;box-shadow:0 18px 80px #090213aa}.tag{font:8px monospace;letter-spacing:2.5px;color:var(--cyan)}.hero-cat{width:88px;display:block;margin:19px auto 14px;filter:drop-shadow(0 6px 14px #3af2ff22);transform:rotate(-8deg)}h2{font-size:25px;letter-spacing:-.7px;margin:14px 0}.start-card p{font-size:12px;line-height:1.9;color:#a79ab9}.start-card p b{color:#eadff5}.primary{background:var(--lime);color:#0c0713;border:2px solid #08070e;border-radius:6px;box-shadow:3px 3px #71637e;display:flex;justify-content:center;gap:17px;align-items:center;width:100%;padding:13px 9px;font-size:13px;font-weight:800;margin-top:22px}.primary:hover{background:#e6ff89;transform:translateY(-1px)}.primary:active{transform:translate(2px,2px)}.primary span{font-size:19px}.start-card>small{display:block;font-size:9px;color:#7e6b92;margin-top:17px}.secondary{background:none;color:#baa9cc;border:0;border-bottom:1px solid #51415e;font-size:11px;margin-top:18px;padding:4px 0}.timeline{height:4px;position:relative;background:#34213e}.timeline>div{height:100%;width:0;background:var(--lime)}.timeline>span{position:absolute;top:0;bottom:0;border-left:2px solid #0b0711}.transport{height:34px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;font:8px monospace;letter-spacing:1px;color:#9583a7}.transport>span:last-child{color:#d5c2e8}aside{padding-top:7px}.panel-label{font:9px monospace;letter-spacing:1.3px;color:#9d8bae;display:flex;justify-content:space-between;margin-bottom:15px}.panel-label>span{color:var(--pink);font-size:18px}.difficulties{display:flex;gap:7px}.difficulties button{flex:1;min-width:0;padding:13px 3px;border:1px solid #44324f;background:#17101f;color:#bba7cd;border-radius:7px}.difficulties button span{font-weight:700;font-size:12px}.difficulties button small{display:block;font:7px monospace;margin-top:7px;color:#81708f;white-space:nowrap}.difficulties .active{background:#d4ff3a0c;border-color:var(--lime);color:var(--lime)}.guide{margin-top:25px;padding-top:22px;border-top:1px solid #392541}.number{font:8px monospace;color:var(--pink);letter-spacing:1.6px}.guide h3{font-size:15px;margin:12px 0 10px}.guide p{font-size:11px;color:#92819f;line-height:1.9;margin:0}.rhythm-preview{height:24px;display:flex;align-items:center;gap:8px;margin-top:16px}.rhythm-preview i{height:14px;width:4px;background:var(--cyan);border-radius:2px}.rhythm-preview i:nth-child(2n){height:22px;background:var(--lime);margin-right:7px}.rhythm-preview i:nth-child(n+6){width:3px;margin-right:0;background:var(--pink)}.settings{border-top:1px solid #392541;padding-top:20px;margin-top:22px}.settings label{display:flex;justify-content:space-between;font-size:11px;color:#b09cbf}.settings output{font:10px monospace;color:var(--cyan)}.settings input{width:100%;accent-color:var(--cyan);height:14px;margin:14px 0 4px}.settings p{color:#766582;font-size:9px;line-height:1.7;margin:0}.best{margin-top:22px;display:flex;align-items:center;flex-wrap:wrap;border:1px dashed #513b5d;border-radius:7px;padding:12px}.best>span{font:8px monospace;color:#ae95bb;letter-spacing:1px}.best b{margin-left:auto;color:var(--lime);font:700 21px monospace}.best small{width:100%;font-size:9px;color:#776083;margin-top:5px}.compare{display:block;margin-top:22px}.compare>span{display:block;font-size:9px;color:#897393}.compare b{display:block;font-size:12px;color:var(--cyan);margin-top:8px}footer{border-top:1px solid #ffffff12;margin-top:33px;padding:18px 0;display:flex;justify-content:space-between;font:7px monospace;letter-spacing:1.5px;color:#685773}footer b{color:var(--pink);margin-left:8px}#feedback{position:absolute;z-index:3;left:50%;top:29%;transform:translateX(-50%);text-align:center;pointer-events:none;opacity:0;white-space:nowrap}#feedback b{font:900 italic 27px Arial;letter-spacing:-1px;text-shadow:2px 3px #13091d;display:block}#feedback span{font:8px monospace;letter-spacing:2px;display:block;margin-top:5px;color:#e0d4ed}#countdown{position:absolute;inset:0;display:grid;place-items:center;font:900 77px Arial;color:var(--lime);z-index:4;pointer-events:none;text-shadow:4px 4px var(--pink)}#countdown[hidden]{display:none}.result-number{font:800 48px monospace;color:var(--lime);margin:10px 0}.result-stats{display:flex;justify-content:space-around;border-block:1px solid #493152;padding:13px 0;margin:14px 0}.result-stats b{display:block;font:700 17px monospace}.result-stats span{font-size:9px;color:#a28bad}.result-stats span b{margin-bottom:6px;color:#f6efff}.tile-stage{max-width:500px;margin:0 auto;width:100%;height:490px}.tile-shell{background:repeating-linear-gradient(135deg,#100b18 0 1px,#0d0912 1px 10px)}.tile-stage .stage-caption{left:15px;top:14px}.lane-inputs{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);z-index:2}.lane-inputs button{position:relative;border:0;background:none;color:#d5c2e8;touch-action:none}.lane-inputs span{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);border:1px solid #61446f;border-bottom-width:3px;border-radius:5px;padding:6px 11px;font:700 13px monospace}.lane-inputs .down span{background:var(--lime);color:#08070e}.tile-stage .run-stats{right:12px;top:15px}.tile-stage .run-stats>span{margin-top:0}.tile-stage .stage-bottom{bottom:76px;left:0;right:0;justify-content:center}.tile-stage .stage-bottom span{font:8px monospace;letter-spacing:4px}.tile-stage .start-card{width:300px}.tile-stage #feedback{top:36%}.hold-key{color:var(--cyan)!important}.metric-row{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}.metric-row span{font:8px monospace;padding:6px;background:#25182f;border-radius:4px;color:#b79bc7}.running .disc{animation:spin 4s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(min-height:900px){.stage,.tile-stage{height:560px}}@media(max-width:1050px){main{padding:28px 26px 0}.play-layout{grid-template-columns:minmax(0,1fr) 218px;gap:20px}.edition{display:none}.title-row{gap:25px}h1{font-size:58px}.title-row>p{font-size:13px}}@media(max-width:720px){header{height:72px;padding:0 16px;gap:12px}.brand img{width:32px}.brand>span{font-size:21px}.brand small{font-size:5px;letter-spacing:2px}nav{margin-left:auto;margin-right:0;gap:1px;padding:3px}nav a{padding:9px 8px;font-size:7px}nav b{font-size:10px;margin-left:3px}nav i,.archive{display:none}main{padding:22px 14px 0}.title-row{gap:12px;margin-bottom:17px;justify-content:space-between}.eyebrow{font-size:6px;letter-spacing:1px}h1{font-size:41px;letter-spacing:-2.5px;margin-top:8px}h1>i{font-size:22px;margin-left:5px}.title-row>p{font-size:10px;padding-left:10px;margin-top:17px;letter-spacing:0}.title-row>p small{font-size:7px;letter-spacing:0;margin-top:7px}.play-layout{display:flex;flex-direction:column;gap:24px}.game-shell{box-shadow:4px 4px #21172e}.hud{height:62px;padding:0 12px;gap:7px}.disc{width:29px;height:29px;font-size:16px}.song{gap:7px}.song strong{font-size:10px;letter-spacing:1px}.song small{font-size:6px;letter-spacing:.5px}.score-hud{margin-right:4px}.score-hud b{font-size:19px}.score-hud span{font-size:6px}.hud>button{width:26px;height:29px;font-size:16px}.stage,.tile-stage{height:clamp(390px,58svh,560px)}.stage-caption{left:14px;top:17px}.stage-caption>span{font-size:7px;letter-spacing:1px}.stage-caption>small{font-size:8px}.run-stats{right:14px;top:16px}.run-stats>b{font-size:22px}.run-stats>span{font-size:19px;margin-top:17px}.run-stats small{font-size:6px}.stage-bottom{left:14px;right:14px;bottom:16px}.stage-bottom>span:first-child{font-size:8px}.stage-bottom>span:last-child{font-size:8px;letter-spacing:2px}.start-card{width:280px;padding:22px 20px}.hero-cat{width:76px;margin:14px auto 12px}.start-card h2{font-size:23px}.start-card p{font-size:11px}.primary{font-size:12px;padding:12px 8px}.transport{padding:0 13px;font-size:7px}aside{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding-top:0}.panel-label,.difficulties,.compare{grid-column:1/-1}.panel-label{margin:0;font-size:8px}.difficulties{margin-top:-12px}.difficulties button{padding:10px 4px}.difficulties button small{font-size:8px}.guide{margin:0;padding-top:16px}.guide h3{font-size:12px}.guide p{font-size:10px}.guide .number{font-size:7px}.settings{margin:0;padding-top:16px}.settings p{font-size:8px}.best{margin:0;align-self:center}.compare{margin:0;border-top:1px solid #392541;padding-top:16px;display:flex;justify-content:space-between;align-items:center}.compare b{margin-top:0;font-size:11px}.compare>span{font-size:8px}footer{font-size:5px;letter-spacing:.8px;margin-top:25px}.running .title-row{display:none}.running main{padding-top:12px}.running .guide,.running .settings,.running .best,.running .compare,.running footer,.running .panel-label{display:none}.running aside{padding-top:0}.running .difficulties{margin-top:-7px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
@media(max-width:720px){body[data-game="tiles"] .title-row>p{display:none}body[data-game="tiles"] h1{font-size:40px}.start-card:has(#demo){padding-block:19px}.start-card:has(#demo) .hero-cat{width:66px;margin:12px auto}.start-card:has(#demo)>small{margin-top:10px}.start-card:has(#demo) .secondary{margin-top:12px}}
/* Catline real-song edition */
.homeward .stage{height:550px}.homeward .game-shell{align-self:start}.homeward .song strong{font-size:12px}.homeward .song small{letter-spacing:.5px}.homeward .run-stats>b{color:#d4ff3a}.homeward .stage-caption{z-index:1}.homeward #feedback{top:22%;transition:opacity .15s,transform .15s}.homeward #feedback b{font-size:24px}.homeward #feedback span{font-size:9px;letter-spacing:.4px}.homeward #turn-cue{position:absolute;left:18px;top:90px;width:78px;padding:10px 9px;border:1px solid #ffffff22;border-radius:12px;background:#120e24aa;pointer-events:none;backdrop-filter:blur(8px);text-align:center;transition:border-color .2s,box-shadow .2s}.homeward #turn-cue.ready{border-color:#d4ff3a;box-shadow:0 0 20px #d4ff3a22}.homeward #turn-cue.armed{border-color:#3af2ff;background:#123439ba}.homeward #cue-label{font-size:9px;color:#baafc9;display:block}.homeward #cue-arrow{font:900 36px Arial;display:block;color:#d4ff3a;margin:4px 0 8px}.homeward #turn-cue>div{height:3px;border-radius:9px;background:#ffffff19;overflow:hidden}.homeward #cue-fill{display:block;background:#d4ff3a;height:100%;width:0}.homeward #lyric-line{position:absolute;bottom:55px;left:12%;right:12%;text-align:center;color:#f5eeff;font-size:13px;font-weight:500;text-shadow:0 2px 12px #000,0 2px 4px #000;pointer-events:none;min-height:20px;opacity:.9}.homeward #scene-title{position:absolute;inset:30% 0 auto;text-align:center;pointer-events:none;opacity:0;transform:translateY(8px);transition:opacity .6s,transform 1s}.homeward #scene-title.show{opacity:1;transform:none}.homeward #scene-title small{display:block;font:9px monospace;letter-spacing:5px;color:#e4d8ef}.homeward #scene-title b{display:block;font-size:25px;letter-spacing:4px;color:#fff;margin-top:12px;text-shadow:0 0 25px #000}.homeward #overlay{background:linear-gradient(90deg,#0e071655,#10092011,#0e071633);backdrop-filter:blur(3px)}.homeward .start-card{background:#170e27ed;box-shadow:0 20px 100px #0007;border:1px solid #8c63b955;width:330px;padding:23px 27px}.homeward .hero-cat{width:82px}.homeward .start-card h2{font-size:27px}.homeward .stage-bottom>span:last-child{font-size:7px;letter-spacing:1px}.homeward .stage-bottom>span:first-child{font-size:9px}.homeward .compare b{font-size:11px}.homeward .result-stats{gap:8px}.homeward .result-stats b{font-size:20px}.homeward .tag{color:#d4ff3a}.homeward #song-link{font-size:10px;color:#3af2ff;display:inline-block;margin-top:12px}.homeward .title-row .edition{line-height:2}.homeward .settings p{line-height:1.8}
@media(max-width:720px){.homeward .stage{height:clamp(460px,65svh,610px)}.homeward .start-card{width:286px;padding:18px 22px}.homeward .start-card h2{font-size:25px}.homeward #turn-cue{top:80px;left:12px;width:65px;padding:8px}.homeward #cue-arrow{font-size:29px}.homeward #cue-label{font-size:8px}.homeward #lyric-line{font-size:11px;left:10%;right:10%;bottom:51px}.homeward #feedback b{font-size:21px}.homeward #feedback span{font-size:8px}.homeward #scene-title b{font-size:21px}.homeward .title-row>p{font-size:9px;max-width:133px}.homeward .title-row>p small{font-size:7px}.homeward .stage-bottom>span:first-child{font-size:8px}.homeward .stage-bottom>span:last-child{display:none}.homeward .song strong{font-size:10px}.homeward .song small{font-size:6px}.homeward .difficulties button small{font:8px Arial}}
@media(prefers-reduced-motion:reduce){.homeward #scene-title,.homeward #feedback{transition:none}}

/* v4: precision feedback is separate from approach guidance. */
#protection{position:absolute;top:22px;right:24px;color:#d4ff3a;font:600 11px monospace;letter-spacing:2px;z-index:4;pointer-events:none}.homeward .run-stats{top:49px}
#timing-meter{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;pointer-events:none;z-index:4;font:9px monospace;color:#a5acc2;opacity:0}body.running #timing-meter{opacity:1}
#timing-meter>div{width:140px;height:6px;position:relative;background:linear-gradient(90deg,#ff9baf55 0% 26%,#3af2ff66 26% 38%,#d4ff3aaa 38% 62%,#3af2ff66 62% 74%,#ff9baf55 74%);border-radius:6px}#timing-meter>div:after{content:'';position:absolute;left:50%;top:-5px;width:1px;height:16px;background:#fff8}#timing-marker{position:absolute;left:50%;top:-3px;background:white;width:3px;height:12px;transform:translateX(-50%);border-radius:2px}#timing-value{position:absolute;top:18px;left:50%;transform:translateX(-50%);font-weight:400;color:#dce2f2;white-space:nowrap}
@media(max-width:600px){#protection{top:17px;right:14px;font-size:10px}.homeward .run-stats{top:42px}#timing-meter{bottom:48px}.homeward #feedback{top:37%}}

/* V8 visual performance; the canvas and input surface never scale or shake. */
.neon-motion .game-shell{border-color:#606088;box-shadow:0 0 40px #3af2ff0a,5px 5px 0 #21172e}
.neon-motion .hud{background:linear-gradient(110deg,#101e2a,#1b1129)}
.neon-motion .stage-caption>span{color:#e0eaff;text-shadow:0 1px 8px #07101c}
.neon-motion .stage-caption>small{color:#a5b4ca}
.neon-motion #scene-title{inset:17% 0 auto;z-index:1}
.neon-motion #scene-title b{font-size:21px;letter-spacing:3px;text-shadow:0 0 25px #000,0 2px 8px #000}
.neon-motion #scene-title small{color:#d4ff3a;letter-spacing:7px}
.neon-motion #feedback b{font-size:29px;text-shadow:0 0 20px currentColor,2px 3px #13091d}
.neon-motion .start-card{background:linear-gradient(160deg,#152334f2,#211331f5);border-color:#67e5ed55;box-shadow:0 0 60px #38e8ff12,0 20px 70px #0008}
.neon-motion .hero-cat{filter:drop-shadow(0 0 20px #3af2ff55)}
.neon-motion .timeline>div{background:linear-gradient(90deg,#3af2ff,#ff61ce,#d4ff3a);box-shadow:0 0 12px #3af2ff88}
@media(max-width:720px){.neon-motion #feedback b{font-size:24px}.neon-motion #scene-title b{font-size:15px;letter-spacing:1px}.neon-motion #scene-title small{font-size:8px;letter-spacing:3px}}

/* Photo character edition: readable face, stable rhythm cue, short lyric captions. */
.photo-run .hero-cat{width:104px;max-height:108px;object-fit:contain;transform:none}.photo-run .song strong{letter-spacing:1px}.photo-run #lyric-line{bottom:83px;font-weight:700;font-size:13px;left:8%;right:8%;text-shadow:0 2px 5px #000,0 0 10px #000}.photo-run .start-card h2{font-size:24px}@media(max-width:720px){.photo-run .hero-cat{width:90px;max-height:90px}.photo-run #lyric-line{bottom:80px;font-size:12px}.photo-run .start-card h2{font-size:22px}}

/* V12: photo-inspired coast; keep the playfield quiet and the route readable. */
.photo-run{--cyan:#b6ebde;--pink:#e9accb;background:radial-gradient(ellipse at 45% 30%,#211c30,#0c0b15 65%)}
.photo-run .game-shell{border-color:#88748f;box-shadow:0 20px 65px #0004,4px 4px #252032}
.photo-run .hud{background:linear-gradient(110deg,#28283b,#352736)}
.photo-run #turn-cue,.photo-run .stage-caption>small{display:none!important}
.photo-run #timing-meter{display:none}.photo-run:has(details[open]) #timing-meter{display:flex}
.photo-run .stage-caption{top:22px;left:22px}.photo-run .stage-caption>span{font-size:8px;letter-spacing:2px;color:#fff0e3bf}
.photo-run #feedback{top:12%}.photo-run #feedback b{font-size:22px;text-shadow:0 2px 8px #211b38}.photo-run #feedback span{display:none}
.photo-run:has(details[open]) #feedback span{display:block}
.photo-run #scene-title{inset:22% 0 auto}.photo-run #scene-title b{font-size:20px;font-weight:500;letter-spacing:6px}.photo-run #scene-title small{color:#ffe6ca;letter-spacing:4px}
.photo-run #lyric-line{bottom:38px;font-size:12px;font-weight:500;opacity:.85}
.photo-run:has(details[open]) #lyric-line{bottom:83px}
.photo-run .stage-bottom{display:none}.photo-run .run-stats>b{color:#ffe3bd}.photo-run #protection{color:#e9daca;font-size:9px;letter-spacing:1px}
.photo-run .run-stats>span{font-size:20px}.photo-run .run-stats small{color:#d2c6db99}
.photo-run .start-card{background:linear-gradient(155deg,#383045ed,#251f34f5);border-color:#edd1db55;box-shadow:0 20px 65px #140e2766}
.photo-run .hero-cat{filter:drop-shadow(0 5px 12px #d9bdce22)}
.photo-run .timeline>div{background:linear-gradient(90deg,#b6ebde,#e9accb,#ffe0b7);box-shadow:none}
@media(max-width:720px){.photo-run .stage-caption{left:14px;top:18px}.photo-run .stage-caption>span{font-size:7px;letter-spacing:1px}.photo-run #feedback{top:14%}.photo-run #feedback b{font-size:20px}.photo-run #lyric-line{bottom:30px;font-size:11px}.photo-run #scene-title b{font-size:18px;letter-spacing:3px}}

/* Poker-night edition: warm brass, plum leather and quiet green felt. */
.casino-run{--cyan:#d7bf91;--pink:#c590a1;--lime:#ebcf91;background:radial-gradient(ellipse at 35% 20%,#292024,#100f15 70%)}
.casino-run .game-shell{border:1px solid #a28760;border-radius:8px;box-shadow:0 24px 65px #0006,4px 4px #32272a}
.casino-run .hud{background:linear-gradient(100deg,#35232d,#211c24);border-bottom:1px solid #7c6245}
.casino-run .disc{color:#ebcf91;border-color:#b39766;background:repeating-radial-gradient(circle,#322831 0 3px,#544047 4px,#322831 5px 6px)}
.casino-run .hud>button{border-color:#655049;background:#322731;border-radius:3px}
.casino-run .stage-caption>span{color:#e8d2ab;text-shadow:0 2px 4px #161918}
.casino-run .run-stats>b,.casino-run #protection{color:#f1dba8}.casino-run .run-stats small{color:#d5c8af}
.casino-run #scene-title b{font-size:19px;letter-spacing:2px;text-shadow:0 2px 6px #081d18}.casino-run #scene-title small{color:#e4bc80}
.casino-run #overlay{backdrop-filter:none;background:#0a121155}
.casino-run .start-card{border:1px solid #b39469;border-radius:6px;background:linear-gradient(150deg,#382730f5,#201c24f5);box-shadow:0 18px 50px #0007;padding:22px 24px;width:310px}
.casino-run .hero-cat{width:88px;height:88px;filter:none;object-fit:contain;image-rendering:auto;margin:12px auto}
.casino-run .start-card h2{font-size:24px}.casino-run .tag{color:#e7ca94;letter-spacing:1.4px}
.casino-run .primary{background:#ebcf91;border-color:#211a1d;box-shadow:3px 3px #806449;border-radius:3px}.casino-run .primary:hover{background:#f4dfb1}
.casino-run .difficulties .active{background:#ebcf9110;border-color:#caa76f;color:#ebcf91}
.casino-run .timeline>div{background:#e3bb7a;box-shadow:none}.casino-run .transport{background:#211b24;color:#bba98f}
.casino-run .settings input{accent-color:#cbaa78}.casino-run #lyric-line{color:#fff2d7;font-weight:600;text-shadow:0 2px 5px #04221c}
@media(max-width:720px){.casino-run .start-card{width:280px;padding:18px 20px}.casino-run .hero-cat{width:76px;height:76px}.casino-run .start-card h2{font-size:22px}}

/* V14: actual WebGL geometry; the canvas remains behind the stable input surface. */
.world-3d{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.three-ready #scene{opacity:0}.stage:not(.three-ready) .world-3d{display:none}
.table-3d .stage{height:590px}.table-3d .game-shell{border-color:#947956;box-shadow:0 25px 70px #0007,4px 4px #30252c}
.table-3d #overlay{background:linear-gradient(90deg,#12101866,#12101811,#12101833)}
.table-3d .start-card{background:linear-gradient(150deg,#34252ef0,#201b23f5)}
.table-3d .stage-caption,.table-3d .run-stats{z-index:1}.table-3d #protection{z-index:1}
.table-3d #lyric-line{bottom:29px;z-index:1}.table-3d #scene-title{z-index:1;inset:20% 0 auto}
@media(max-width:720px){.table-3d .stage{height:clamp(460px,65svh,610px)}}

/* V16: quieter game chrome, one accent, sound controls within reach. */
.arcade-polish{--lime:#e9dbb9;--cyan:#a9eed9;--pink:#a9eed9;--muted:#a3a5ac;background:#111315}
.arcade-polish header{height:68px;border-color:#ffffff0d}.arcade-polish .brand b{color:#e9dbb9;text-shadow:none}.arcade-polish .brand small{color:#989e9e}
.arcade-polish nav{background:#1b1e20;border-color:#ffffff12}.arcade-polish nav a[aria-current]{background:#e9dbb9}.arcade-polish main{max-width:1440px;padding-top:24px}
.arcade-polish .title-row{margin-bottom:20px;gap:28px}.arcade-polish h1{font-size:44px;letter-spacing:-2px;margin-top:7px}.arcade-polish h1 i,.arcade-polish .edition{display:none}.arcade-polish .eyebrow{color:#9fa8a5;font-size:8px}
.arcade-polish .title-row>p{font-size:13px;margin:15px 0 0;border-color:#ffffff18}.arcade-polish .title-row>p small{font-size:10px;letter-spacing:0;margin-top:7px}
.arcade-polish .play-layout{grid-template-columns:minmax(0,1fr) 236px;gap:24px}.arcade-polish .game-shell{border:1px solid #ffffff21;border-radius:18px;box-shadow:0 24px 70px #0005}
.arcade-polish .hud{height:60px;padding:0 20px;background:#1b1e20;border-color:#ffffff0d}.arcade-polish .song strong{font-family:inherit;font-size:13px;letter-spacing:.5px}.arcade-polish .song small{color:#929b9b;letter-spacing:.5px}.arcade-polish .disc{width:32px;height:32px;background:#303b37;border-color:#819b7744;color:#e9dbb9}
.arcade-polish .hud>button{width:32px;height:32px;border:1px solid #ffffff14;border-radius:9px;background:#282c2e;color:#e4e8e7}.arcade-polish .score-hud b{font-size:22px;font-weight:500;font-style:normal;font-variant-numeric:tabular-nums}.arcade-polish .score-hud span{color:#8c9896}
.arcade-polish .transport{height:32px;background:#1b1e20;color:#929c99}.arcade-polish .timeline{height:3px;background:#2e3632}.arcade-polish .timeline>div{background:#b5e9d6}
.arcade-polish #overlay{background:#0a14143b}.arcade-polish .start-card{width:300px;border:1px solid #ffffff24;border-radius:18px;padding:24px;background:#171e21ed;box-shadow:0 20px 60px #0005}.arcade-polish .hero-cat{width:64px;height:64px;margin:16px auto}.arcade-polish .start-card h2{font-size:26px;letter-spacing:.5px;margin:12px 0}.arcade-polish .start-card p{color:#b5bfbd;font-size:12px}.arcade-polish .start-card>small{color:#87938e;font-size:9px;line-height:1.6}.arcade-polish .tag{color:#a9b8b1;font-size:8px;letter-spacing:2px}
.arcade-polish .primary{background:#e9dbb9;border:0;border-radius:10px;box-shadow:none;color:#18231e;padding:15px;margin-top:20px;transition:background .15s,transform .15s}.arcade-polish .primary:hover{background:#f4e9cb}.arcade-polish .primary:active{transform:scale(.98)}.arcade-polish .secondary{color:#a9b8b1;border:0;margin-top:14px;font-size:11px}
.arcade-polish .panel-label{color:#84958f;font-size:8px;margin:3px 0 14px}.arcade-polish .panel-label>span{display:none}.arcade-polish .difficulties{gap:5px;background:#1b1f20;padding:5px;border:1px solid #ffffff10;border-radius:12px}.arcade-polish .difficulties button{border:1px solid transparent;border-radius:8px;background:transparent;padding:11px 1px;color:#99a5a0}.arcade-polish .difficulties button small{font-size:7px;color:#84918b;letter-spacing:0}.arcade-polish .difficulties .active{background:#2e3c35;border-color:#8ead9144;color:#e4eadb}
.arcade-polish .guide,.arcade-polish .settings{border-color:#ffffff10;margin-top:20px;padding-top:20px}.arcade-polish .compact-guide .number{color:#81948a;font-size:8px}.arcade-polish .compact-guide p{color:#a6b1ac;font-size:12px;line-height:1.9;margin-top:10px}.arcade-polish .settings label{color:#c4cec8;font-size:12px}.arcade-polish .settings output{color:#b6e6d2}.arcade-polish .settings input{accent-color:#b6e6d2}.arcade-polish .settings p{font-size:10px;color:#8a9a91;line-height:1.8}
.arcade-polish .sound-caption{display:flex;align-items:center;justify-content:space-between;margin:8px 0 10px}.arcade-polish .sound-caption span{font:8px monospace;letter-spacing:1.8px;color:#80958b}.arcade-polish #preview-sfx{font-size:11px;background:#2b3e34;border:1px solid #9bbf9f33;border-radius:7px;color:#d8efdf;padding:8px 12px}.arcade-polish #preview-sfx:hover{background:#3b5044}
.arcade-polish .calibration>summary{font-size:11px;color:#8c9e94;cursor:pointer}.arcade-polish .best{border:1px solid #ffffff13;border-radius:12px;padding:14px}.arcade-polish .best b{color:#dcebc9}.arcade-polish .best small{color:#7d9085}.arcade-polish .compare b{font-size:11px;color:#a1b8ac}.arcade-polish .compare>span{color:#708278}.arcade-polish footer{color:#718077;letter-spacing:1px}
.arcade-polish #feedback b{font:700 20px Arial;letter-spacing:3px;text-shadow:0 0 18px #96ffce66}.arcade-polish #feedback{top:13%}.arcade-polish #countdown{color:#e4f7ed;text-shadow:0 0 35px #a1ffd444;font-weight:600}.arcade-polish #scene-title b{font-size:18px;font-weight:500;letter-spacing:3px}.arcade-polish #scene-title small{color:#d4e6db}.arcade-polish #lyric-line{font-size:12px;letter-spacing:.5px;color:#e3ece5}
@media(max-width:850px){.arcade-polish .play-layout{grid-template-columns:1fr}.arcade-polish aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}.arcade-polish .panel-label,.arcade-polish .compact-guide,.arcade-polish .compare,.arcade-polish .best{display:none}.arcade-polish .difficulties{grid-column:1/-1}.arcade-polish .settings{margin-top:0}.arcade-polish header{height:62px}.arcade-polish .title-row>p{display:none}.arcade-polish main{padding:20px 16px 0}.arcade-polish h1{font-size:36px}.arcade-polish .title-row{margin-bottom:18px}.arcade-polish .hud{padding:0 14px}.arcade-polish .stage{height:clamp(470px,65svh,610px)}.arcade-polish .start-card{width:270px;padding:20px}.arcade-polish .start-card h2{font-size:24px}}
@media(prefers-reduced-motion:reduce){.arcade-polish .primary{transition:none}}
.arcade-polish .sound-modes{display:flex;gap:4px;padding:4px;border:1px solid #ffffff14;border-radius:9px;background:#1b1f20;margin-bottom:18px}.arcade-polish .sound-modes button{flex:1;border:0;border-radius:6px;padding:9px 4px;background:transparent;color:#94a79a;font:12px inherit}.arcade-polish .sound-modes button[aria-pressed=true]{background:#354a3e;color:#e6f1e7}.arcade-polish .sound-panel input:disabled{opacity:.35}

/* The Neon Strip: quiet plum chrome around a pastel, low-poly city. */
.vegas-run{background:#191725;--lime:#f6dfb4;--cyan:#c3ece2;--muted:#aba5bd}.vegas-run header{background:#191725}.vegas-run nav,.vegas-run .hud,.vegas-run .transport{background:#252234}.vegas-run .game-shell{border-color:#a291b44d}.vegas-run .start-card{background:#29253aeb}.vegas-run .difficulties,.vegas-run .sound-modes{background:#252234}.vegas-run .difficulties .active,.vegas-run .sound-modes button[aria-pressed=true]{background:#49415d;border-color:#a99cb34d}.vegas-run .stage-caption,.vegas-run .run-stats,.vegas-run #protection{color:#fff5da;text-shadow:0 1px 5px #4c3c67aa}.vegas-run #lyric-line{color:#fffaf1;text-shadow:0 2px 5px #443552}.vegas-run #scene-title b{color:#fff4e1}.vegas-run .eyebrow{color:#c0afca}.vegas-run .primary,.vegas-run nav a[aria-current]{background:#f1d6b2}.vegas-run #preview-sfx{background:#3a344e;border-color:#ab97bb44}.vegas-run .title-row h1 span{color:#f1d6b2}

/* Compact success confirmation; gameplay and next-corner guidance stay unobstructed. */
.vegas-run #feedback[data-judgement="PERFECT"] b,.vegas-run #feedback[data-judgement="GREAT"] b,.vegas-run #feedback[data-judgement="GOOD"] b{font-size:28px;font-weight:800;letter-spacing:1px;font-style:italic;-webkit-text-stroke:.5px #372549;text-shadow:0 2px 0 #463554}
.vegas-run #feedback[data-judgement="PERFECT"] b{color:#ffe38d!important}
.vegas-run #feedback[data-judgement="GREAT"] b{color:#8effdc!important}
@media(max-width:720px){.vegas-run #feedback[data-judgement="PERFECT"] b,.vegas-run #feedback[data-judgement="GREAT"] b,.vegas-run #feedback[data-judgement="GOOD"] b{font-size:23px;letter-spacing:.5px}}
