/* V25 optical glass: the world stays sharp through the controls. These rules
   retain the existing hidden/inert state. The music dock owns its own material;
   the layout below reserves separate lanes for it and the actual controls. */
:root{
  --rotor25-glass:linear-gradient(148deg,rgba(233,238,242,.055),rgba(2,36,122,.025) 48%,rgba(4,60,255,.035));
  --rotor25-glass-edge:rgba(194,222,249,.52);
  --rotor25-glass-shadow:inset 0 1px 0 rgba(233,238,242,.48),inset 0 -1px 0 rgba(4,60,255,.13),0 5px 18px rgba(0,4,12,.13);
  --rotor25-player-yellow:#ffda24;
}
body:not(.stadium-arena) :is(#mainMenu,.rotor-club>summary,.rotor-club>div,.rotor-pilot-summary,.cm-view-rail,.cm-settings-body,.cm-angles,.cm-location-options>a,.cm-location-options>button,.rotor-room-access),
body.stadium-green #world-ui :is(.stadium-room-nav>summary,.stadium-room-nav>nav,#pilotToggle,.opening-title,.stadium-room-info>summary,.stadium-room-info-panel,.stadium-world-tools>summary,.stadium-world-tools>.settings,.club-explore>summary,.club-explore-panel,#pilotPanel,#inputHint,.stadium-return-link),
body.stadium-arena :is(#menu,#scoreboard,#pilotCard,.stadium-match-tools>summary,.stadium-match-tools>#viewControls){
  background:var(--rotor25-glass);
  border:1px solid var(--rotor25-glass-edge);
  border-radius:24px;
  box-shadow:var(--rotor25-glass-shadow);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  color:#eff7ff;
}
/* This legacy specimen already declares its tint !important. Override only
   that tint, so the actual metal badge remains visible through its clear slot. */
body:not(.stadium-arena) .rotor-pilot-summary:has(.rotor-badge-stage){
  background:var(--rotor25-glass)!important;
  border-color:rgba(232,239,198,.62);
  border-radius:28px;
}
body:not(.stadium-arena) #mainMenu,
body.stadium-green #world-ui .opening-title{
  border-radius:30px;
  padding:18px 20px;
  text-shadow:0 1px 4px rgba(0,3,10,.76);
}
body:not(.stadium-arena) :is(.rotor-club>summary,.rotor-pilot-summary,.rotor-room-access,.cm-view-rail),
body.stadium-green #world-ui :is(.stadium-room-nav>summary,#pilotToggle,.stadium-return-link){
  border-radius:999px;
}
body:not(.stadium-arena) .rotor-pilot-summary{
  border-radius:28px;
  border-color:rgba(236,223,154,.6);
}
body:not(.stadium-arena) .rotor-pilot-summary strong,
body.stadium-green #world-ui :is(#worldPilotName,.pilot-emblem){color:var(--rotor25-player-yellow);}
body:not(.stadium-arena) .rotor-pilot-summary :is(small,span){font-size:11px;line-height:1.45;color:#e9eef2;}
body:not(.stadium-arena) .rotor-pilot-summary strong{font-size:24px;line-height:1.05;}
body:not(.stadium-arena) #mainMenu :is(.cm-kicker,.cm-intro,.cm-angles-toggle){color:#e8f3ff;}
body:not(.stadium-arena) #mainMenu .cm-kicker{font-size:11px;}
body:not(.stadium-arena) #mainMenu h1 em,
body.stadium-green #world-ui #nightTitleCopy h1 em{color:var(--rotor25-player-yellow);}
body:not(.stadium-arena) #mainMenu .cm-primary a,
body.stadium-green #world-ui .opening-title .power-court-play{
  border-radius:999px;
  border:1px solid rgba(217,235,255,.66);
  color:#eff7ff;
  background:linear-gradient(142deg,rgba(208,235,255,.09),rgba(15,54,100,.05));
  box-shadow:inset 0 1px rgba(244,252,255,.55),0 3px 12px rgba(0,3,11,.18);
}
body:not(.stadium-arena) #mainMenu .cm-primary .cm-play,
body.stadium-green #world-ui .opening-title .power-court-play{
  color:var(--rotor25-player-yellow);
  border-color:rgba(255,218,36,.83);
  background:linear-gradient(142deg,rgba(255,224,86,.11),rgba(255,205,23,.025));
}
body:not(.stadium-arena) #mainMenu .cm-primary a:hover,
body.stadium-green #world-ui .opening-title .power-court-play:hover{
  background:rgba(199,230,255,.12);
  border-radius:999px;
}
body:not(.stadium-arena) #mainMenu .cm-primary .cm-play:hover{
  background:rgba(255,218,36,.13);
  color:#ffe965;
}
body:not(.stadium-arena) :is(.cm-view-rail button,.cm-view-rail summary,.cm-angle-list button,.rotor-club>div a),
body.stadium-green #world-ui :is(.stadium-room-nav>nav a,.stadium-room-nav>nav button,.club-explore-panel button,.stadium-angle-rail>button){
  border-radius:18px;
  background:rgba(169,211,251,.045);
  color:#eaf5ff;
}
body:not(.stadium-arena) #cmTour{color:var(--rotor25-player-yellow);border-color:rgba(255,218,36,.6);background:rgba(255,218,36,.07);}
body:not(.stadium-arena) .cm-angles-head{background:rgba(3,11,22,.14);border-radius:18px;}
body.stadium-green #world-ui #choices[data-layout=dock] .mode{
  background:var(--rotor25-glass);
  border-radius:22px;
  box-shadow:var(--rotor25-glass-shadow);
}
/* Real local identity, duplicated only as a small line within the main menu. */
.rotor25-player-line{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px 12px;
  margin:0 0 17px;
  padding:0 0 12px;
  border-bottom:1px solid rgba(227,220,144,.25);
  color:#e2eefb;
  font:600 11px/1.45 Inter,system-ui,sans-serif;
  letter-spacing:.06em;
}
.rotor25-player-line strong{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:var(--rotor25-player-yellow);
  font:800 15px/1.25 Inter,system-ui,sans-serif;
  letter-spacing:.07em;
}
.rotor25-player-line strong::before{
  content:'';
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--rotor25-player-yellow);
  box-shadow:inset -1px -1px 2px rgba(67,48,0,.55),inset 1px 1px 2px rgba(255,255,235,.9);
}
.rotor25-player-line .rotor25-player-local{margin-left:auto;color:#e9eef2;}
@media(max-width:650px){
  body:not(.stadium-arena) #mainMenu,
  body.stadium-green #world-ui .opening-title{padding:14px 15px;border-radius:25px;}
  .rotor25-player-line{gap:5px 9px;margin-bottom:12px;padding-bottom:9px;letter-spacing:.035em;}
  .rotor25-player-line strong{font-size:14px;}
  body:not(.stadium-arena) #mainMenu :is(.cm-primary a,.cm-angles-toggle){font-size:11px;}
}
@media(max-height:650px){
  .rotor25-player-line{margin-bottom:10px;padding-bottom:8px;}
  .rotor25-player-line .rotor25-player-local{display:none;}
}

/* The visible official video must never sit over the racket pad or Play route.
   Provider dimensions are owned by courtside-radio.css. These selectors read
   its state only; they do not restyle or hide the provider. */
body:not(.rotor-radio-host):not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])){
  --rotor25-video-width:380px;
  --rotor25-control-right:calc(var(--rotor25-video-width) + 36px);
  --rotor25-menu-width:min(480px,calc(100vw - var(--rotor25-video-width) - 244px));
}
body:not(.rotor-radio-host):not(.stadium-arena):has(#pfDeck[data-provider=youtube].expanded:not([hidden])){
  --rotor25-video-width:504px;
}
body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu{
  left:24px;
  width:var(--rotor25-menu-width);
  scrollbar-width:thin;
  overscroll-behavior:contain;
}
body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary a{
  min-width:0;
  justify-content:center;
  padding:12px 10px;
  font-size:11px;
  line-height:1.3;
  letter-spacing:.05em;
  text-align:center;
}
body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmRacketControl{
  left:auto;
  right:var(--rotor25-control-right);
  bottom:264px;
  transform:none;
  width:164px;
  min-height:44px;
  padding:8px;
  font-size:11px;
  line-height:1.25;
  letter-spacing:.05em;
}
body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #stadiumPlayAccess{
  left:auto;
  right:var(--rotor25-control-right)!important;
  bottom:212px!important;
  top:auto;
}
body.rotation-preview:not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .racket-axis-desktop{
  left:auto;
  right:var(--rotor25-control-right);
  bottom:88px;
  width:116px;
}
/* Keep VOLT in its established slot at the top-right below the radio. The
   provider owns a separate slot below it; expanded video never removes the
   actual badge or its inspection action. */
body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-badge-actions{
  display:flex;
}
body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>.rotor-badge-stage{display:block;}
body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{
  max-height:261px;
  overflow-y:auto;
  scrollbar-width:thin;
}
body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail{
  left:24px;
  right:calc(var(--rotor25-video-width) + 36px);
  transform:none;
  max-width:none;
  width:auto;
  justify-content:flex-start;
  overflow-x:auto;
  scrollbar-width:thin;
}
body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail>*{flex:none;}
@media(min-width:651px) and (max-width:1200px){
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary{grid-template-columns:1fr;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu h1{font-size:clamp(32px,4.2vw,52px);}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmGreenRoom{left:24px;top:86px;bottom:auto;transform:none;}
}
@media(min-width:651px) and (max-width:950px){
  body:not(.rotor-radio-host):not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])){
    --rotor25-control-right:12px;
    --rotor25-menu-width:calc(100vw - var(--rotor25-video-width) - 60px);
  }
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu{
    top:260px;
    bottom:88px;
    max-height:none;
  }
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmRacketControl{left:24px;right:auto;top:132px;bottom:auto;width:116px;}
  body.rotation-preview:not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .racket-axis-desktop{left:152px;right:auto;top:132px;bottom:auto;width:116px;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #stadiumPlayAccess{left:24px;right:auto!important;top:260px;bottom:auto!important;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):has(#pfDeck[data-provider=youtube]:not([hidden])):has(#mainMenu:not([hidden]):not([data-stadium-ui-hidden]):not([inert])) #stadiumPlayAccess{display:none!important;}
}
@media(max-width:650px){
  body:not(.rotor-radio-host):not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])){
    --rotor25-video-width:200px;
    --rotor25-control-right:12px;
    --rotor25-menu-width:calc(100vw - 144px);
  }
  body:not(.stadium-arena):not(.three-hero-opening):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):not([data-stadium-arrival=on]):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu:not([hidden]){
    display:flex;
    flex-direction:column;
    left:12px;
    top:344px;
    bottom:80px!important;
    width:var(--rotor25-menu-width);
    max-height:none;
    padding:12px;
    transform:none;
  }
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu :is(h1,.cm-primary,.cm-angles-toggle,.rotor25-player-line){flex-shrink:0;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu h1{font-size:clamp(30px,7.7vw,44px);line-height:.88;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-intro{display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary a{min-width:0!important;min-height:48px;padding:8px 5px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-angles-toggle{min-height:44px;text-align:left;white-space:normal;}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail{
    display:flex;
    flex-wrap:nowrap;
    justify-content:flex-start;
    left:12px;
    right:12px;
    bottom:10px;
    transform:none;
    width:auto;
    max-width:none;
    height:60px;
    overflow-x:auto;
    overflow-y:visible;
    scrollbar-width:thin;
    overscroll-behavior-x:contain;
  }
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail>*{flex:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-settings-body{position:fixed;left:12px;right:12px;bottom:80px;width:auto;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmViewRail{display:flex;gap:4px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail :is(button,summary){min-height:44px;font-size:11px;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmRacketControl{right:12px;left:auto;bottom:190px;width:116px;}
  body.rotation-preview:not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .racket-axis-desktop{right:12px;left:auto;bottom:80px;width:116px;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #stadiumPlayAccess{left:12px;right:auto!important;top:344px;bottom:auto!important;}
  /* The real menu already offers Play. Keep the duplicate route for hidden-menu
     views, rather than piling it over the independent rotation pad. */
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):has(#pfDeck[data-provider=youtube]:not([hidden])):has(#mainMenu:not([hidden]):not([data-stadium-ui-hidden]):not([inert])) #stadiumPlayAccess{display:none!important;}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{
    left:auto;
    right:12px;
    top:132px;
    width:calc(100vw - 236px);
    min-width:0;
    height:200px;
    max-height:200px;
    overflow:auto;
    padding:8px;
    gap:3px;
  }
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>small{display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary strong{font-size:18px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>.rotor-badge-stage{height:64px;min-height:64px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-badge-actions small{display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-badge-inspect{width:100%;min-height:44px;padding:6px;font-size:11px;}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmGreenRoom{top:86px;bottom:auto;left:12px;transform:none;padding:12px;}
}
@media(max-width:650px) and (max-height:700px){
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary{order:-2;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .rotor25-player-line{order:-1;margin:10px 0;}
}
@media(max-height:560px){
  body:not(.rotor-radio-host):not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])){
    --rotor25-video-width:200px;
    --rotor25-control-right:228px;
    --rotor25-menu-width:min(480px,calc(100vw - 376px));
  }
  body:not(.stadium-arena):not(.three-hero-opening):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):not([data-stadium-arrival=on]):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu:not([hidden]){
    display:flex;
    flex-direction:column;
    left:auto;
    right:12px;
    top:200px;
    bottom:80px!important;
    width:var(--rotor25-menu-width);
    max-height:none;
    padding:12px;
  }
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary{order:-2;grid-template-columns:1fr;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu :is(.cm-intro,.rotor25-player-line){display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu :is(h1,.cm-primary,.cm-angles-toggle){flex-shrink:0;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmRacketControl{left:228px;right:auto;top:auto;bottom:198px;width:116px;}
  body.rotation-preview:not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .racket-axis-desktop{left:228px;right:auto;top:auto;bottom:80px;width:116px;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#pfDeck[data-provider=youtube]:not([hidden])) #stadiumPlayAccess{left:228px;right:auto!important;top:auto;bottom:250px!important;}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{
    left:auto;
    right:12px;
    top:76px;
    width:var(--rotor25-menu-width);
    min-width:0;
    height:112px;
    max-height:112px;
    display:grid;
    grid-template-columns:minmax(0,1fr) 70px;
    grid-template-rows:auto auto auto;
    gap:3px 6px;
    padding:8px;
    overflow:auto;
  }
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .cm-view-rail{left:228px;right:12px;bottom:10px;height:60px;flex-wrap:nowrap;overflow-y:visible;}
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) #cmGreenRoom{left:12px;top:auto;bottom:10px;transform:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>small{display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>.rotor-badge-stage{grid-column:2;grid-row:1/3;height:60px;min-height:60px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary>.rotor-badge-actions{grid-column:1/-1;flex-wrap:nowrap;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-badge-actions small{display:none;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-badge-inspect{min-height:44px;width:100%;font-size:11px;padding:6px;}
}
@media(max-height:380px){
  body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{top:64px;height:98px;max-height:98px;}
  body:not(.stadium-arena):not(.three-hero-opening):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):not([data-stadium-arrival=on]):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu:not([hidden]){top:174px;padding:8px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;}
  body:not(.stadium-arena):has(#pfDeck[data-provider=youtube]:not([hidden])) #mainMenu .cm-primary a{min-height:48px;padding:6px 4px;}
}

/* Replay belongs with the opening identity, outside the camera tour rail.
   The opener loads its stylesheet dynamically, so the exact control ID wins
   its old lower-left placement without changing any hidden state. */
body:not(.three-hero-opening) #threeHeroOpenerControls{
  top:max(132px,env(safe-area-inset-top));
  bottom:auto;
  left:max(24px,env(safe-area-inset-left));
  right:auto;
  gap:6px;
}
body:not(.three-hero-opening) #threeHeroOpenerControls .three-hero-replay{
  min-height:44px;
  padding:0 13px;
  border-radius:24px;
  border-color:var(--rotor25-glass-edge);
  background:var(--rotor25-glass);
  box-shadow:var(--rotor25-glass-shadow);
  font-size:11px!important;
  letter-spacing:.04em;
}
/* The menu already has the real Duel and Training choices. Leave a persistent
   Play route in views where that menu is hidden, inert or deliberately off. */
body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):not(.focus-view):not(.exhibit-view):not(.choosing-location):not(.roam-active):not([data-stadium-arrival=on]):has(#mainMenu:not([hidden]):not([data-stadium-ui-hidden]):not([inert])) :is(#stadiumPlayAccess,.three-hero-play){display:none!important;}
/* A second opener Play link is also unnecessary while the independent route
   is available. This keeps the compact replay control separate on small views. */
body:not(.three-hero-opening):has(#stadiumPlayAccess:not([hidden]):not([data-stadium-ui-hidden]):not([inert])) #threeHeroOpenerControls .three-hero-play{display:none!important;}
@media(max-width:950px),(max-height:560px){
  body:not(.three-hero-opening) #threeHeroOpenerControls{
    top:max(18px,env(safe-area-inset-top));
    left:218px;
    bottom:auto;
    right:auto;
  }
  body:not(.three-hero-opening) #threeHeroOpenerControls .three-hero-replay{
    width:44px;
    min-width:44px;
    height:44px;
    padding:0;
    font-size:0!important;
  }
  /* Native button text remains its accessible name; the compact visible mark
     is the familiar replay ring, with the same 44px keyboard/touch target. */
  body:not(.three-hero-opening) #threeHeroOpenerControls .three-hero-replay::before{
    content:'';
    width:20px;
    height:20px;
    background:currentColor;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M5 7v5h5M5.6 11.6a7.3 7.3 0 1 1 1 6.3'/%3E%3C/svg%3E") center/contain no-repeat;
    mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M5 7v5h5M5.6 11.6a7.3 7.3 0 1 1 1 6.3'/%3E%3C/svg%3E") center/contain no-repeat;
  }
}
@media(max-width:650px){
  body:not(.three-hero-opening) #threeHeroOpenerControls{left:166px;}
}
@media(max-height:560px){
  body:not(.three-hero-opening) .cm-header{padding-top:10px;padding-bottom:10px;}
  body:not(.three-hero-opening) #threeHeroOpenerControls{left:178px;top:max(10px,env(safe-area-inset-top));}
}
@media(max-height:560px) and (max-width:650px){
  body:not(.three-hero-opening) #threeHeroOpenerControls{left:166px;}
}
@media(max-width:360px){
  html body .cm-header [data-rotor-brand="25"] .rt25-brand-graphic{width:108px!important;height:27px!important;}
  body:not(.three-hero-opening) #threeHeroOpenerControls{left:134px;}
}
.rotor25-emblem-access{display:flex;align-items:center;justify-content:center;min-height:44px;margin-top:8px;padding:4px 12px;border:1px solid #bdd4ec44;border-radius:999px;background:#b4d4fc09;color:#e3f0ff;font-size:11px;font-weight:750;letter-spacing:.09em;text-decoration:none;pointer-events:auto}
.rotor25-emblem-access:hover,.rotor25-emblem-access:focus-visible{background:#b4d4fc20;border-color:#bdd4ec99}

/* V25 responsive spacing. Keep the same controls and clear surfaces; only
   their reading bounds and lanes change as CSS pixels shrink with zoom. */
:root{
  --rotor25-safe-left:max(12px,env(safe-area-inset-left,0px));
  --rotor25-safe-right:max(12px,env(safe-area-inset-right,0px));
  --rotor25-safe-top:env(safe-area-inset-top,0px);
  --rotor25-safe-bottom:max(10px,env(safe-area-inset-bottom,0px));
}
body :is(.cm-settings-body,.cm-angles,.rotor-club>div,.stadium-room-nav>nav,.stadium-room-info-panel,.club-explore-panel){
  box-sizing:border-box;
  max-width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right));
  max-height:calc(100dvh - 164px - var(--rotor25-safe-top) - var(--rotor25-safe-bottom));
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-width:thin;
}
body :is(.cm-view-rail,.cm-header,.rotor-pilot-summary,.stadium-angle-control,.world-footer){min-width:0;box-sizing:border-box;}
body :is(.cm-view-rail button,.cm-view-rail summary,.rotor-club>summary,.rotor-club>div a,.cm-location-options>a,.cm-location-options>button){min-height:44px;font-size:11px;}
body #cmAnglesClose{width:44px;min-width:44px;height:44px;min-height:44px;flex:none;}
body :is(.cm-location-options,.cm-primary){min-width:0;}
body .cm-location-options{flex-wrap:wrap;justify-content:center;gap:8px;}
body .cm-location-options :is(a,button){min-width:0;white-space:normal;text-align:center;}
body .cm-settings-body :is(button,select){min-height:44px;min-width:0;font-size:11px;}
body .cm-view-rail :is(.roam-toggle,.roam-ui-toggle,#cmViewPicker){font-size:11px;}
body .cm-view-rail :is(#cmPrevious,#cmNext){min-width:44px;}
html body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{
  top:calc(178px + var(--rotor25-safe-top));
  max-height:208px;
  overflow:auto;
  scrollbar-width:thin;
}
html body #pfRadio button{min-height:44px;font-size:11px!important;}
html body #pfRadio>b{font-size:11px;}
body.stadium-arena #menu :is(.eyebrow,#controller,.directorLinks a){font-size:11px;line-height:1.45;}
body.stadium-arena #menu .entry button{min-height:44px;font-size:11px;}
body.stadium-arena :is(.modal,#help,#resumePanel){
  max-width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right));
  max-height:calc(100dvh - 96px - var(--rotor25-safe-top) - var(--rotor25-safe-bottom));
  overflow:auto;
  overscroll-behavior:contain;
}
body.stadium-arena :is(.modalClose,#closeHelp,.stadium-match-tools>summary,.stadium-match-tools #quality){min-height:44px;}
body.stadium-arena .modalClose{min-width:44px;}
body.stadium-green #world-ui :is(.stadium-room-nav>summary,.stadium-return-link,.stadium-room-info>summary,.club-explore>summary){min-height:44px;font-size:11px;}
body.stadium-green #world-ui #choices[data-layout=dock] .mode :is(.index,.detail){font-size:11px!important;}
body.stadium-green #world-ui .title-navigation button{min-height:44px;}
body.stadium-green .stadium-angle-control :is(span,small),body.stadium-green .stadium-angle-header small{font-size:11px;}
body .stadium-arrival :is(.stadium-arrival-kicker,.stadium-arrival-travel){font-size:11px;}
@media(max-width:950px){
  body:not(.stadium-arena) .cm-settings-body{
    position:fixed;
    left:auto;
    right:var(--rotor25-safe-right);
    bottom:calc(var(--rotor25-safe-bottom) + 72px);
    width:min(320px,calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right)));
  }
  body:not(.stadium-arena) .cm-view-rail:has(#cmViewSettings[open]){overflow-y:visible;}
  body:not(.stadium-arena) .rotor-club>div{
    position:fixed;
    top:calc(76px + var(--rotor25-safe-top));
    right:var(--rotor25-safe-right);
    width:min(290px,calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right)));
  }
}
@media(max-width:650px){
  /* A single scrolling radio row has a fixed height; its status keeps a
     separate reading line instead of pushing VOLT down unpredictably. */
  html body:not(.rotor-radio-host):not(.three-hero-opening):not(.playing):not(.in-power-court) #pfRadio:not([hidden]):not([data-stadium-ui-hidden]){
    left:var(--rotor25-safe-left)!important;
    right:var(--rotor25-safe-right)!important;
    top:calc(74px + var(--rotor25-safe-top))!important;
    bottom:auto!important;
    width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right));
    max-width:none;
    min-height:54px;
    flex-wrap:nowrap;
    overflow-x:auto;
    overscroll-behavior-x:contain;
    scrollbar-width:thin;
    transform:none!important;
    box-sizing:border-box;
  }
  html body #pfRadio :is(button,b){flex:none;white-space:nowrap;}
  html body:not(.rotor-radio-host):not(.three-hero-opening):not(.playing):not(.in-power-court) #pfRadio .pf-radio-state{
    position:fixed;
    top:calc(130px + var(--rotor25-safe-top));
    right:var(--rotor25-safe-right);
    width:max-content;
    max-width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right));
    text-align:right;
  }
  html body:has(#mainMenu):not(.rotor-radio-host):not(.three-hero-opening) #pfDeck[data-provider=youtube]:not([hidden]):not([data-stadium-ui-hidden]){
    left:var(--rotor25-safe-left)!important;
    right:auto!important;
    top:calc(160px + var(--rotor25-safe-top))!important;
  }
  html body:not(.stadium-arena):not(.three-hero-opening):has(#pfDeck[data-provider=youtube]:not([hidden])) .rotor-pilot-summary{
    top:calc(160px + var(--rotor25-safe-top));
    right:var(--rotor25-safe-right);
    width:calc(100dvw - 224px - var(--rotor25-safe-right));
    min-width:0;
    height:200px;
    max-height:200px;
  }
  html body:has(#mainMenu):not(.stadium-arena):not(.three-hero-opening):has(#pfDeck:not([hidden])) #mainMenu:not([hidden]){
    top:calc(372px + var(--rotor25-safe-top));
    bottom:calc(var(--rotor25-safe-bottom) + 192px)!important;
    left:var(--rotor25-safe-left);
    width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right) - 132px);
    max-height:none;
    min-height:44px;
    overflow-y:auto;
    transform:none;
  }
  html body:not(.stadium-arena):not(.three-hero-opening):has(#mainMenu) .cm-view-rail{
    display:flex;
    left:var(--rotor25-safe-left);
    right:var(--rotor25-safe-right);
    bottom:var(--rotor25-safe-bottom);
    width:auto;
    max-width:none;
    height:60px;
    flex-wrap:nowrap;
    overflow-x:auto;
    transform:none;
    justify-content:flex-start;
  }
  html body .cm-view-rail>*{flex:none;}
  html body #cmViewRail{display:flex;gap:4px;}
  html body #cmViewPicker{min-width:150px;white-space:normal;}
  html body:not(.stadium-arena) .cm-settings-body{left:var(--rotor25-safe-left);right:var(--rotor25-safe-right);width:auto;}
  html body:not(.stadium-arena):not(.three-hero-opening):not(.try-racket):has(#mainMenu):has(#pfDeck:not([hidden])) #cmRacketControl{left:auto;right:var(--rotor25-safe-right);top:auto;bottom:calc(var(--rotor25-safe-bottom) + 246px);width:116px;}
  html body.rotation-preview:not(.three-hero-opening):has(#mainMenu):has(#pfDeck:not([hidden])) .racket-axis-desktop{left:auto;right:var(--rotor25-safe-right);top:auto;bottom:calc(var(--rotor25-safe-bottom) + 136px);width:116px;}
  html body:not(.stadium-arena):not(.three-hero-opening):has(#mainMenu):has(#pfDeck:not([hidden])) #cmGreenRoom{left:50%;top:auto;bottom:calc(var(--rotor25-safe-bottom) + 70px);transform:translateX(-50%);min-height:44px;}
  body:not(.stadium-arena) .cm-angles{top:calc(160px + var(--rotor25-safe-top));right:var(--rotor25-safe-right);bottom:calc(var(--rotor25-safe-bottom) + 72px);width:calc(100dvw - var(--rotor25-safe-left) - var(--rotor25-safe-right));padding:16px;}
  body.stadium-green #world-ui .mast{display:flex;flex-wrap:wrap;gap:6px 8px;padding:calc(12px + var(--rotor25-safe-top)) var(--rotor25-safe-right) 12px var(--rotor25-safe-left);}
  body.stadium-green #world-ui .mast .wordmark{flex:1 1 45%;min-width:0;}
  body.stadium-green #world-ui .mast .stadium-room-nav{margin-left:auto;}
  body.stadium-green #world-ui .mast .stadium-return-link{margin-left:auto;}
  body.stadium-green #world-ui .stadium-room-nav>nav{position:fixed;top:calc(122px + var(--rotor25-safe-top));right:var(--rotor25-safe-right);width:290px;}
  html body.stadium-green:not(.rotor-radio-host):not(.playing):not(.in-power-court) #pfRadio:not([hidden]):not([data-stadium-ui-hidden]){top:calc(134px + var(--rotor25-safe-top))!important;}
  html body.stadium-green:not(.rotor-radio-host):not(.playing):not(.in-power-court) #pfRadio .pf-radio-state{top:calc(190px + var(--rotor25-safe-top));}
  body.stadium-green #world-ui .world-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;left:var(--rotor25-safe-left);right:var(--rotor25-safe-right);bottom:var(--rotor25-safe-bottom);}
  body.stadium-green #world-ui .stadium-angle-rail{grid-column:1/-1;grid-row:1;justify-content:center;max-width:100%;}
  body.stadium-green #world-ui .stadium-world-tools{grid-column:2;grid-row:2;}
  body.stadium-green #world-ui .stadium-world-tools .settings{position:fixed;left:var(--rotor25-safe-left);right:var(--rotor25-safe-right);width:auto;bottom:calc(var(--rotor25-safe-bottom) + 112px);}
  body.stadium-green #world-ui :is(.stadium-room-info,.club-explore){bottom:calc(var(--rotor25-safe-bottom) + 112px);}
  body.stadium-green #world-ui .stadium-room-info{left:var(--rotor25-safe-left);}
  body.stadium-green #world-ui .club-explore{right:var(--rotor25-safe-right);}
  body.stadium-green #world-ui .stadium-angle-control>.stadium-angle-open{min-width:100px;max-width:190px;}
  body.stadium-green #world-ui .stadium-angle-control>.stadium-angle-open>small{font-size:11px;}
  /* Editor focus: leave its inputs, Close and the top stadium navigation live.
     Decorative arrival copy and duplicate floor controls wait until it closes. */
  html body.emblem-editor-open :is(#stadiumArrival,#chillNavigation,#viewModeDock){display:none!important;}
  html body.stadium-green.emblem-editor-open #world-ui :is(.opening-title,#choices,.stadium-room-info,.club-explore,.world-footer,#tourControls){display:none!important;}
  html body:not(.stadium-green).emblem-editor-open :is(#mainMenu,.cm-view-rail,#cmGreenRoom){display:none!important;}
}

/* The low left and upper stadium angles keep the white/lime invitation. Other
   viewpoints retain their player-yellow accent and compact responsive lanes. */
body:is([data-world-view=everyAngle],[data-world-view=titleHigh]) #mainMenu h1{color:#fff;}
body:is([data-world-view=everyAngle],[data-world-view=titleHigh]) #mainMenu h1 em{color:#c7fc68;}
@media(min-width:951px) and (min-height:561px){
  html body:is([data-world-view=everyAngle],[data-world-view=titleHigh]):not(.three-hero-opening) #mainMenu{
    left:max(24px,var(--rotor25-safe-left));
    top:auto;
    bottom:max(112px,calc(var(--rotor25-safe-bottom) + 88px));
    transform:none;
  }
}

/* A phone identity session reserves the preview and editor for the player. */
@media(max-width:680px){
  body.emblem-editor-open :is(#stadiumPlayAccess,#freeCamToggle,#courtsideVault,#openFlightLab,#pfTag,.rotor-emblem-launch,#pfTick){display:none!important;}
}

/* Camera navigation remains above the player showcase and empty video dock. */
body:has(#cmAngles:not([hidden])) :is(#pfDeck,.rotor-pilot-summary){visibility:hidden!important;}
body #cmAngles{z-index:10020;}
