/* Rhythm-only presentation; input surfaces remain fixed to their four lanes. */
.rh-song,.rh-preview,.rh-chart-list button{touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.rh-page{background:radial-gradient(ellipse at 95% 0,#22396970,transparent 50%),#0a1224}
.rh-hub .rh-hero-art{background:linear-gradient(180deg,#09142900 55%,#050e24dd),url('./art/skyline-v2.webp') center/cover;border-color:#c3e7ff44;box-shadow:0 20px 65px #0005}
.rh-hub .rh-hero-art .rh-disc,.rh-hub .rh-art-track,.rh-hub .rh-art-bpm{display:none}
.rh-hub .rh-art-label{bottom:26px;left:25px;letter-spacing:.3em;color:#ecf7ff;font-weight:900}
.rh-hub .rh-hero-art:before{inset:auto 25px 55px;width:65px;height:2px;background:#a5e7ff;border:0;border-radius:0}
.rh-hub .rh-hero-art:after{display:none}
.rh-song{position:relative;overflow:hidden;min-height:109px;border-radius:12px;transition:border-color .18s,background .18s,transform .18s}
.rh-song[aria-pressed=true]{background:linear-gradient(110deg,#23426788,#131e35);border-color:#8fe4ff99;box-shadow:inset 3px 0 #8fe4ff,0 8px 25px #0002}
.rh-song-jacket{width:70px;height:74px;flex:none;border-radius:7px;border:1px solid #c1dcff33;background-position:center;background-size:cover;box-shadow:0 5px 12px #0004}
.rh-song-jacket.has-artwork{background-image:var(--rh-art);color:transparent}
.rh-song-copy strong{font-size:16px;letter-spacing:.03em}
.rh-song-copy small{font-size:9px;letter-spacing:.08em}
.rh-song-meta{font-variant-numeric:tabular-nums;font-size:10px}
.rh-jacket.has-artwork{height:230px;background-image:var(--rh-art);background-size:cover;background-position:center;box-shadow:0 12px 24px #0004;border:1px solid #c0ddff44}
.rh-jacket.has-artwork .rh-jacket-grid,.rh-jacket.has-artwork>span,.rh-jacket.has-artwork>i{display:none}
.rh-track-description{font-size:12px;color:#adc0dd;line-height:1.85;margin:10px 0 16px}
.rh-chart-detail{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#9bb2d3;margin:13px 0 0;letter-spacing:.04em}
.rh-preview{width:100%;font-size:12px;padding:10px 14px;min-height:40px;margin-top:10px;background:#0d192c;color:#a9d4f5;border:1px solid #99c6ed44;display:flex;justify-content:space-between;align-items:center}
.rh-preview[aria-pressed=true]{background:#70dcff10;border-color:#70dcff88;color:#c7f4ff}
.rh-preview span{font:9px monospace;letter-spacing:.1em;opacity:.7}
.rh-control-settings .rh-switch{display:grid;grid-template-columns:20px 1fr;gap:3px 10px;align-items:center;cursor:pointer}
.rh-control-settings .rh-switch input,.rm-settings .rh-switch input{width:18px;height:18px;accent-color:#91ddff;margin:0;grid-column:1;grid-row:1/3}
.rh-switch small{grid-column:2;font-size:10px!important;line-height:1.8}
.rm-settings .rh-switch{grid-template-columns:20px 1fr;align-items:center;gap:5px 10px}
.rm-track-art.has-artwork{background-image:linear-gradient(#07112515,#07112555),var(--rh-art);background-size:cover;background-position:center;border-color:#d0e8ff44}
.rm-track-art.has-artwork:before,.rm-track-art.has-artwork strong,.rm-track-art.has-artwork span{display:none}
.rh-stage{isolation:isolate;background:#060c1a}
.rh-stage:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(#0308178f,#030817c9),var(--rh-art);background-size:cover;background-position:center;opacity:.72}
.rh-stage-head,.rh-stage-foot{position:relative}
.rh-stage-head{border-bottom:0}
.rh-stage-jacket{width:47px;height:47px;flex:none;order:-1;border-radius:7px;border:1px solid #c6e7ff55;background:radial-gradient(circle,#5b9bba,#152641);box-shadow:0 6px 18px #0005}
.rh-stage-jacket.has-artwork{background-image:var(--rh-art);background-size:cover;background-position:center}
.rh-live-hud{position:relative;display:flex;align-items:center;gap:20px;max-width:1112px;width:calc(100% - 48px);margin:0 auto 9px;padding:10px 0;border-top:1px solid #c5ddff24;border-bottom:1px solid #c5ddff12;flex:none;color:#869fbf;font-size:9px;letter-spacing:.08em}
.rh-live-hud span{display:flex;align-items:center;gap:9px;white-space:nowrap}
.rh-live-hud b{font:700 12px monospace;color:#d9f0ff;letter-spacing:0;font-variant-numeric:tabular-nums}
.rh-live-gauge{flex:1;max-width:240px;height:4px;background:#a4c6ed18;border-radius:3px;overflow:hidden}
.rh-live-gauge i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#769cf5,#9ae5dc);box-shadow:0 0 10px #a2eaff66;transition:width .15s}
.rh-beat-meter{display:flex;gap:5px;margin-left:auto;align-items:end;height:13px}
.rh-beat-meter i{display:block;width:5px;height:5px;background:#78b8df33;border-radius:1px;transition:height .1s,background .1s}
.rh-beat-meter[data-beat="0"] i:nth-child(1),.rh-beat-meter[data-beat="1"] i:nth-child(2),.rh-beat-meter[data-beat="2"] i:nth-child(3),.rh-beat-meter[data-beat="3"] i:nth-child(4){height:13px;background:#9defff;box-shadow:0 0 10px #a5e4ff66}
.rh-highway{border-color:#a7cbff55;box-shadow:0 0 0 5px #071020aa,0 0 0 6px #b7d9ff18,0 25px 90px #000a;border-radius:6px 6px 0 0}
.rh-highway:before{height:90px;background:linear-gradient(#040a19f5,#060e2455,transparent)}
.rh-highway:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 12px 0 25px -20px #aecaff,inset -12px 0 25px -20px #aecaff}
.rh-pads{border-top:1px solid #b3d9ff33;background:linear-gradient(#10213df5,#060c19);height:88px}
.rh-pads button{position:relative;margin:7px 6px 6px;border-radius:7px;background:linear-gradient(#91dcff20,#0c1a30 48%,#070e1b);border-bottom-width:5px;box-shadow:inset 0 1px #ddf5ff33,0 4px 8px #0008;transition:box-shadow .06s,filter .06s}
.rh-pads button:before{content:'01';position:absolute;top:5px;left:7px;font:7px monospace;letter-spacing:.1em;opacity:.6}
.rh-pads button:nth-child(2):before{content:'02'}.rh-pads button:nth-child(3):before{content:'03'}.rh-pads button:nth-child(4):before{content:'04'}
.rh-pads button.is-held{box-shadow:inset 0 0 24px currentColor,0 0 20px color-mix(in srgb,currentColor 25%,transparent);filter:brightness(1.45)}
.rh-hit-timing{position:absolute;bottom:34.4%;width:100%;text-align:center;pointer-events:none;font:700 10px monospace;letter-spacing:.14em;color:#92c9ef;transition:opacity .15s}
.rh-hit-timing[data-side=slow]{color:#ffb1c7}.rh-hit-timing[data-side=just]{color:#b6f4e4}
.rh-judgement{font-style:italic;font-size:clamp(24px,3vw,34px);letter-spacing:.05em;filter:drop-shadow(0 3px 1px #061025);bottom:39%}
.rh-combo{bottom:27.5%;font:800 24px monospace;letter-spacing:.06em;text-shadow:0 2px 15px #061025}
.rh-milestone{position:absolute;top:22%;left:0;right:0;text-align:center;pointer-events:none;opacity:0;font:900 14px monospace;color:#ffe1a2;letter-spacing:.16em;text-shadow:0 0 25px #ffd18b66;transition:opacity .15s}
.rh-side-record .rh-small-disc{width:128px;height:128px;background-image:linear-gradient(#17203b00,#06102233),var(--rh-art);background-size:cover;background-position:center;border-radius:16px;color:#9de7ff;border-color:#b1d7ff66;box-shadow:0 20px 35px #0006;transform:rotate(-5deg)}
.rh-stage.has-artwork .rh-small-disc{color:transparent}
.rh-side-record{padding-left:12px;padding-right:12px}.rh-side-record .rh-live-dot{letter-spacing:.12em}
.rh-side-metrics>strong{font-variant-numeric:tabular-nums;font-family:monospace;color:#d8e9ff;font-size:40px}
.rh-health{width:8px;border-color:#a7ddff44;background:#030817}
.rh-countdown{font:900 88px monospace;top:32%;filter:drop-shadow(0 4px 0 #27416a)}
.rh-result{border-color:#b6d9ff66;background-image:linear-gradient(135deg,#14233ff3,#0d182dfb),var(--rh-art);background-size:cover;background-position:center;box-shadow:0 25px 100px #000a,inset 0 1px #def5ff22}
.rh-result-top>span{display:grid;place-items:center;position:relative;border:1px solid #a8dfff44;background:radial-gradient(ellipse,#73b8ff20,transparent 70%);border-radius:18px;height:120px;font-size:90px;text-shadow:0 4px 0 #45658c,0 0 24px #9fe5ff44}
.rh-result[data-rank=S] .rh-result-top>span{color:#ffe0a2;border-color:#ffd99066;text-shadow:0 4px 0 #8d6945,0 0 30px #ffeab855}
.rh-result-delta{font-size:11px!important;line-height:1.7!important;margin:16px 0 0!important;color:#a9c9e8!important;padding:10px 12px;border-radius:6px;border:1px solid #a6cced22;background:#78bfff08}
.rh-result-delta[data-best=true]{color:#b9f0d7!important;border-color:#a0ebce55;background:#81e8c70b}
.rh-result-timing{font:10px/1.8 monospace!important;color:#a6c2e4!important;text-align:center;margin:10px 0!important}
.rh-result-counts>div{border:1px solid #b5d5ff15;background:#0610238c;box-shadow:inset 0 1px #d1e5ff0b}
.rh-result .rh-timing{padding:9px;border:1px solid #b4d5ff20;border-radius:7px;background:#020b1a66}
.rh-result .rh-timing canvas{border-radius:3px}
.rh-stage[data-phase=result] .rh-result{animation:rh-result-in .3s ease-out both}
.rh-stage.is-quiet .rh-pads button,.rh-stage.is-quiet .rh-beat-meter i,.rh-stage.is-quiet .rh-live-gauge i{transition:none}
.rh-stage.is-quiet .rh-result{animation:none}
@keyframes rh-result-in{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
@media(max-width:1000px){.rh-song-jacket{width:60px;height:66px}.rh-song-copy strong{font-size:14px}.rh-side-record .rh-small-disc{width:94px;height:94px}}
@media(max-width:650px){
 .rh-song{min-height:88px;padding:12px;gap:12px}.rh-song-jacket{width:54px;height:60px}.rh-song-copy strong{font-size:14px}.rh-song-copy small{font-size:7px;letter-spacing:.02em}.rh-song-meta{font-size:9px;max-width:58px}
 .rh-jacket.has-artwork{height:94px}.rh-track-description,.rh-chart-detail,.rh-preview{grid-column:1/-1}.rh-track-description{font-size:11px;margin:12px 0 5px}.rh-chart-detail{font-size:9px;margin-top:12px}.rh-preview{font-size:12px;margin-top:10px}
 .rh-stage-head{height:66px;gap:10px}.rh-stage-jacket{width:32px;height:38px;border-radius:4px}.rh-stage-head strong{max-width:145px;font-size:13px}.rh-stage-head small{font-size:7px}.rh-stage-score b{font-size:22px}
 .rh-live-hud{width:calc(100% - 24px);padding:7px 0;margin-bottom:0;gap:10px;font-size:8px}.rh-live-hud b{font-size:10px}.rh-live-hud span{gap:5px}.rh-live-gauge{max-width:none}.rh-beat-meter{display:none}
 .rh-highway{border-radius:0;box-shadow:none}.rh-pads button{margin:6px 4px;font-size:21px}.rh-pads button:before{font-size:6px;left:5px}.rh-judgement{font-size:28px}.rh-combo{font-size:22px}.rh-hit-timing{font-size:9px}.rh-milestone{font-size:12px}
 .rh-result-top>span{height:92px;font-size:72px;width:76px;border-radius:13px}.rh-result-delta{font-size:10px!important;margin-top:12px!important;padding:8px 10px}.rh-result-timing{font-size:9px!important;margin:7px 0!important}.rh-result .rh-timing{padding:6px;margin-top:12px}.rh-result-stats{margin:14px 0}.rh-result>.rh-eyebrow{margin-bottom:15px}
}
@media(max-width:370px){.rh-stage-jacket{display:none}.rh-stage-head strong{max-width:140px}.rh-stage-head{gap:10px}.rh-live-hud{gap:8px}.rh-live-hud>span:last-of-type{font-size:7px}.rh-song-copy strong{font-size:12px}}
@media(max-height:530px){.rh-live-hud{display:none}.rh-stage-jacket{width:32px;height:32px}.rh-result-top>span{height:65px;font-size:56px}.rh-result-delta{margin:8px 0!important;padding:6px 8px}.rh-result-timing{display:none}.rh-result>.rh-eyebrow{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){.rh-stage *{transition:none!important;animation:none!important}}
