/* Isolated persistent HUD, outside every cinematic/route container. */
.rg-music{--rg-gap-x:24px;--rg-gap-bottom:24px;--rg-cyan:#70dfff;--rg-edge:#38c2ff;--rg-safe-top:env(safe-area-inset-top,0px);--rg-safe-right:env(safe-area-inset-right,0px);--rg-safe-bottom:env(safe-area-inset-bottom,0px);--rg-safe-left:env(safe-area-inset-left,0px);position:fixed;right:calc(var(--rg-gap-x) + var(--rg-safe-right));bottom:calc(var(--rg-gap-bottom) + var(--rg-safe-bottom));z-index:38;width:52px;height:52px;color:#eaf7ff;font-family:Arial,Helvetica,sans-serif;isolation:isolate;pointer-events:none}
.rg-music [hidden]{display:none!important}.rg-music button{color:inherit;font:inherit}.rg-music svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.rg-music button:focus-visible,.rg-music input:focus-visible{outline:2px solid #b6efff;outline-offset:4px}
.rg-music-dock{position:relative;display:grid;place-items:center;width:100%;height:100%;padding:0;border:1px solid #38c2ff70;border-radius:9px 2px 9px 2px;background:linear-gradient(135deg,#183346e8,#06121aee 60%);box-shadow:inset 0 1px #c0eeff16,0 5px 18px #0006,0 0 12px #38c2ff12;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#8bccdf!important;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;transition:border-color .18s,box-shadow .18s,transform .18s,color .18s}
.rg-music-dock::before,.rg-music-dock::after{content:'';position:absolute;width:9px;height:2px;background:var(--rg-edge);opacity:.65}.rg-music-dock::before{top:-1px;right:6px}.rg-music-dock::after{bottom:-1px;left:6px}
.rg-music-dock:active{transform:scale(.96)}.rg-music[data-dragging=true] .rg-music-dock{cursor:grabbing;transform:none;transition:none;border-color:#b6efff}
@media(hover:hover){.rg-music-dock:hover{transform:scale(1.04);border-color:#a4e9ff;color:#d2f5ff!important;box-shadow:0 0 18px #38c2ff2c,inset 0 0 14px #38c2ff10}.rg-music button.rg-music-control:hover:not(:disabled){background:#153d50;border-color:#70dfff}}
.rg-music[data-state=playing] .rg-music-dock{color:#9cecff!important;border-color:#70dfff;box-shadow:0 0 18px #38c2ff2a,inset 0 0 12px #38c2ff14}
.rg-music-panel{position:fixed;width:310px;max-width:calc(100vw - 24px);padding:17px;border:1px solid #38c2ff80;border-radius:12px 3px 12px 3px;background:linear-gradient(140deg,#112531ed,#071018f7 65%);box-shadow:inset 0 1px #b2eaff13,0 14px 50px #0009,0 0 26px #38c2ff0d;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);pointer-events:auto;overflow-y:auto;overscroll-behavior:contain;animation:rg-panel-in .18s ease-out;transform-origin:var(--rg-origin,100% 100%)}
.rg-music-top{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #77d6fb20;padding-bottom:10px}.rg-music-top p{margin:0;font:9px/1.4 'Courier New',monospace;letter-spacing:1.6px;color:#a4ccdc}.rg-music-top p::before{content:'';display:inline-block;width:4px;height:4px;background:#6edfff;margin:0 8px 1px 0;box-shadow:0 0 5px #70dfff55}
.rg-music-control{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;padding:0;border:1px solid #69d3fa42;border-radius:5px 1px 5px 1px;background:#0a1c27;color:#b5eaff!important;transition:background .16s,border-color .16s,transform .16s}.rg-music-control:active:not(:disabled){transform:scale(.96)}.rg-music-close{margin:-9px -9px -6px 0;border-color:transparent;background:none}.rg-music-close svg{width:17px;height:17px}
.rg-music-title{margin:17px 0 7px;font:700 21px/1.1 RAMGODCondensed,'Arial Narrow',Arial,sans-serif;letter-spacing:.8px;color:#e8f7ff}.rg-music-status{margin:0;color:#a2b9c7;font:10px/1.55 'Courier New',monospace;min-height:16px;letter-spacing:.25px}
.rg-music-visual{height:29px;display:flex;gap:4px;align-items:center;margin:13px 0 14px;overflow:hidden;opacity:.45}.rg-music-visual::after{content:'';height:1px;flex:1;margin-left:6px;background:linear-gradient(90deg,#5bd9ff66,transparent)}.rg-music-visual i{width:3px;height:var(--h,12px);background:#68dfff;transform:scaleY(.45);transform-origin:center;opacity:.55}
.rg-music-equalizer{display:flex;align-items:center;justify-content:center;gap:3px;width:24px;height:24px}.rg-music-equalizer i{display:block;width:3px;height:18px;transform:scaleY(.4);background:currentColor;transform-origin:center}
.rg-music[data-state=playing] .rg-music-visual{opacity:.9}.rg-music[data-state=playing] .rg-music-visual i,.rg-music[data-state=playing] .rg-music-equalizer i{animation:rg-bars 1.1s ease-in-out infinite alternate;animation-delay:calc(var(--i,0)*-137ms)}
.rg-music[data-muted=true] .rg-music-visual i,.rg-music[data-muted=true] .rg-music-equalizer i{animation-play-state:paused;opacity:.4}
.rg-music-controls{display:flex;align-items:center;gap:10px}.rg-music-play{width:48px;height:48px;border-color:#58cfff80;background:#103246}.rg-music-control:disabled{opacity:.38;cursor:default}.rg-music-volume{min-width:0;flex:1;display:block}.rg-music-volume-head{display:flex;justify-content:space-between;align-items:center;font:8px/1.4 'Courier New',monospace;letter-spacing:1px;color:#a7c5d6;margin-bottom:1px}.rg-music-volume input{display:block;width:100%;height:30px;margin:0;accent-color:#74dcff;cursor:pointer;touch-action:pan-y}.rg-music-volume input:disabled{opacity:.35;cursor:default}
.rg-music-bottom{margin:13px 0 0;padding-top:10px;border-top:1px solid #77d6fb20;display:flex;justify-content:space-between;align-items:center;gap:12px;color:#6e9bb1;font:8px/1.4 'Courier New',monospace;letter-spacing:1px}.rg-music-reset{border:0;background:transparent;padding:6px 0;min-height:30px;color:#a3c9db!important;font:8px/1.4 'Courier New',monospace!important;letter-spacing:.6px;text-decoration:underline;text-underline-offset:3px}
.rg-music-hint{position:fixed;pointer-events:none;padding:10px 12px;max-width:calc(100vw - 24px);background:#071923f5;border:1px solid #5bdbff80;border-radius:5px 1px 5px 1px;box-shadow:0 4px 18px #0008;color:#c3f0ff;font:9px/1.4 'Courier New',monospace;letter-spacing:1px;white-space:nowrap;animation:rg-panel-in .2s ease-out}
.rg-music-hint::after{content:'';position:absolute;width:7px;height:7px;right:var(--rg-pointer-right,18px);bottom:-5px;background:#071923;border-right:1px solid #5bdbff80;border-bottom:1px solid #5bdbff80;transform:rotate(45deg)}.rg-music-hint[data-side=below]::after{top:-5px;bottom:auto;transform:rotate(225deg)}
/* Explicit intrinsic sizing prevents a positioned hint from reflowing over
   its icon. Specificity keeps the site-wide readability pass from undoing it. */
#rg-music .rg-music-hint{width:max-content;box-sizing:border-box;max-width:min(260px,calc(100vw - 24px));padding:10px 12px;font:600 11px/1.45 Arial,Helvetica,sans-serif;letter-spacing:.6px;white-space:normal;text-align:center;border-radius:7px 2px 7px 2px}
.rg-music-sr{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
@keyframes rg-bars{0%{transform:scaleY(.25);opacity:.5}55%{transform:scaleY(.85);opacity:.9}100%{transform:scaleY(.45);opacity:.7}}@keyframes rg-panel-in{from{opacity:0;transform:translateY(5px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:760px){.rg-music{--rg-gap-x:12px;--rg-gap-bottom:28px;--rg-default-lift:36px;width:44px;height:44px}.rg-music-panel{width:296px;padding:15px}.rg-music-title{font-size:20px}.rg-music-hint{font-size:8px;padding:9px 10px;letter-spacing:.7px}}
/* Keep the noninteractive garage position label readable beside the dock. */
.garage-footer{padding-right:max(86px,6vw)}
@media(prefers-reduced-motion:reduce){.rg-music *,.rg-music *::before,.rg-music *::after{animation:none!important;transition:none!important}.rg-music-dock:hover{transform:none}}

.rg-music-hint[data-side=left]::after{top:var(--rg-pointer-top);right:-5px;bottom:auto;transform:rotate(-45deg)}.rg-music-hint[data-side=right]::after{top:var(--rg-pointer-top);left:-5px;right:auto;bottom:auto;transform:rotate(135deg)}
/* The latest city shortcut shares the bottom row on very narrow phones. */
@media(max-width:360px){.street-league-shortcut{left:calc(50% - 16px)}}

/* Keep transport buttons touch-friendly without compressing the volume slider. */
.rg-music-transport{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:12px}
.rg-music-title{text-transform:uppercase}
@media(max-width:360px),(max-height:480px){.rg-music-top p{letter-spacing:.65px}}

/* Blue at rest, then three synchronized pink pulses on the arrival invite.
   Animate color/light only, so the dock and readable hint stay stationary. */
.rg-music-inviting .rg-music-dock{animation:rg-music-invite 1.6s ease-in-out .6s 3 both}
.rg-music-inviting .rg-music-dock :is(svg,.rg-music-equalizer){animation:rg-music-invite-icon 1.6s ease-in-out .6s 3 both}
.rg-music-inviting .rg-music-dock::before,.rg-music-inviting .rg-music-dock::after{animation:rg-music-invite-edge 1.6s ease-in-out .6s 3 both}
.rg-music-inviting .rg-music-hint{animation:rg-panel-in .2s ease-out,rg-music-invite-hint 1.6s ease-in-out .6s 3 both}
.rg-music-inviting .rg-music-hint::after{border-color:inherit}
@keyframes rg-music-invite{
 0%,100%{border-color:#38c2ff70;box-shadow:inset 0 1px #c0eeff16,0 5px 18px #0006,0 0 12px #38c2ff12}
 45%,60%{border-color:#ff91df;box-shadow:0 0 25px #ff37c799,inset 0 0 15px #ff37c733}
}
@keyframes rg-music-invite-icon{
 0%,100%{color:#8bccdf;filter:drop-shadow(0 0 1px #70dfff22)}
 45%,60%{color:#ffb1e9;filter:drop-shadow(0 0 5px #ff37c7)}
}
@keyframes rg-music-invite-edge{
 0%,100%{background:#38c2ff;opacity:.65;box-shadow:0 0 0 transparent}
 45%,60%{background:#ff91df;opacity:1;box-shadow:0 0 8px #ff37c7}
}
@keyframes rg-music-invite-hint{
 0%,100%{border-color:#5bdbff80;color:#c3f0ff;box-shadow:0 4px 18px #0008;text-shadow:none}
 45%,60%{border-color:#ff91df;color:#ffe2f6;box-shadow:0 4px 18px #0008,0 0 21px #ff37c766;text-shadow:0 0 8px #ff37c766}
}
@media(prefers-reduced-motion:reduce){
 .rg-music-inviting .rg-music-dock{border-color:#ff91df;box-shadow:0 0 16px #ff37c766,inset 0 0 12px #ff37c722}
 .rg-music-inviting .rg-music-dock :is(svg,.rg-music-equalizer){color:#ffb1e9;filter:drop-shadow(0 0 4px #ff37c7)}
 .rg-music-inviting .rg-music-dock::before,.rg-music-inviting .rg-music-dock::after{background:#ff91df;opacity:1}
 .rg-music-inviting .rg-music-hint{border-color:#ff91df;color:#ffe2f6;box-shadow:0 4px 18px #0008,0 0 16px #ff37c744}
}
