.replay-dimension { display:flex; gap:4px; align-items:center; }
.replay-dimension button[aria-pressed="true"] { background:#3775d5; color:white; }
.replay-3d-host { position:absolute; inset:0; z-index:1; background:#131d29; }
.replay-3d-host[hidden], .replay-3d-controls[hidden] { display:none; }
.replay-3d-host canvas { display:block; width:100%; height:100%; touch-action:none; }
.replay-3d-labels { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.replay-3d-labels button { position:absolute; transform:translate(-50%,-100%); padding:3px 6px; background:#101820dc; border:1px solid #6f8397; border-radius:5px; font-size:11px; color:white; white-space:pre-line; pointer-events:auto; }
.replay-3d-labels button[hidden] { display:none; }
.replay-3d-labels .speaking { border-color:#a1ffc9; color:#a1ffc9; }
.replay-3d-labels .selected { outline:1px solid white; }
.replay-3d-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.replay-3d-status { font-size:12px; color:#aabbcc; }
.map-stage.is-3d > #canvas { visibility:hidden; }
.map-stage.is-3d > .map-zoom-controls, .map-stage.is-3d > .subtitle-layer { display:none; }
.map-stage.is-3d > .round-clock, .map-stage.is-3d > .kill-feed,
.map-stage.is-3d > .player-sound, .map-stage.is-3d > .team-roster { z-index:3; }
.replay-tactical-hud,.replay-followed,.replay-paused,.replay-fullscreen { display:none; }
.is-3d .replay-fullscreen { display:block; position:absolute; right:10px; bottom:10px; z-index:4; padding:6px 9px; font-size:11px; background:#111923d9; }
#review .canvas-wrap:fullscreen { display:flex; flex-direction:column; width:100vw; height:100vh; padding:0; gap:0; border:0; border-radius:0; }
#review .canvas-wrap:fullscreen .map-stage { flex:1; width:100%; height:0; min-height:0; aspect-ratio:auto; }
#review .canvas-wrap:fullscreen .player-bar { flex:0 0 auto; width:100%; box-sizing:border-box; }
#review .map-stage.is-3d { container-type:inline-size; }
#review .map-stage.is-3d > #teamRoster { position:absolute; inset:8px 15% auto 25%; display:flex; gap:76px; padding:0; border:0; overflow:visible; pointer-events:none; max-height:none; }
#review .map-stage.is-3d > #teamRoster .team-block { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:3px; flex:1; width:auto; padding:0; border:0; border-radius:0; background:none; backdrop-filter:none; box-shadow:none; overflow:visible; }
#review .is-3d #teamRoster .team-title { display:none; }
#review .is-3d #teamRoster .roster-player { position:relative; width:auto; height:116px; min-height:0; margin:0; padding:4px; border:1px solid #8ca1b050; border-top:3px solid var(--ct); border-radius:3px; background:#111923c9; pointer-events:auto; }
#review .is-3d #teamRoster .roster-player.t { border-top-color:var(--t); }
#review .is-3d #teamRoster .roster-player.selected { background:#215c4ade; outline:2px solid #b2ffd2; }
#review .is-3d #teamRoster .roster-player.speaking { box-shadow:0 0 12px #7affe190; }
#review .is-3d #teamRoster .roster-player-head { display:flex; flex-wrap:wrap; gap:2px; }
#review .is-3d #teamRoster .roster-player-name { order:-1; width:100%; font-size:10px; }
#review .is-3d #teamRoster .roster-role { display:none; }
#review .is-3d #teamRoster .roster-dot { width:22px; height:25px; flex:0 0 22px; border-radius:3px; color:#07121d; text-align:center; font:bold 19px/25px system-ui; }
#review .is-3d #teamRoster .roster-hp { font-size:9px; }
#review .is-3d #teamRoster .roster-economy { font-size:9px; }
#review .is-3d #teamRoster .roster-weapon { margin-top:3px; height:22px; min-height:22px; }
#review .is-3d #teamRoster .roster-weapon .equipment-item:not(:first-child) { display:none; }
#review .is-3d #teamRoster .roster-gear { margin-top:2px; height:18px; min-height:18px; gap:1px; overflow:hidden; }
#review .is-3d #teamRoster .equipment-item { width:18px; min-width:0; padding:0; }
#review .is-3d #teamRoster .roster-weapon .equipment-item { width:38px; }
#review .is-3d #teamRoster .roster-utility { flex:1 1 auto; flex-wrap:wrap; gap:1px; }
#review .is-3d #teamRoster .roster-passive { display:flex; position:absolute; right:3px; bottom:24px; gap:1px; }
#review .is-3d #teamRoster .roster-passive .equipment-item { width:10px; }
#review .is-3d #teamRoster .roster-utility .equipment-item { flex:0 0 11px; height:16px; }
#review .is-3d #teamRoster .equipment-item { background:none; border:0; }
#review .is-3d #teamRoster .equipment-icon { width:100%; height:16px; object-fit:contain; }
#review .map-stage.is-3d > .round-clock { top:8px; left:55%; width:70px; transform:translateX(-50%); }
#review .map-stage.is-3d > .kill-feed { top:140px; }
#review .map-stage.is-3d > .player-sound { top:8px; right:8px; z-index:6; }
.is-3d .replay-tactical-hud { display:block; position:absolute; z-index:3; top:8px; left:8px; width:clamp(160px,22cqw,310px); }
.is-3d .replay-tactical-hud canvas { width:100%; height:auto; aspect-ratio:1; border:1px solid #ffffff35; border-radius:6px; background:#111923ad; cursor:pointer; }
.replay-inputs { margin:12px 8px 0; padding:9px; border:1px solid #78aadd70; border-radius:6px; color:white; background:#101923c9; font-size:10px; }
.replay-inputs small { display:block; color:#bac6d5; font-size:9px; margin-top:6px; }
.replay-keys { display:grid; grid-template-columns:1.6fr repeat(3,1fr); gap:4px; margin-top:8px; }
.replay-keys span { display:grid; place-items:center; min-height:27px; border:1px solid #8b9ca97a; background:#73818d55; border-radius:3px; font:bold 14px system-ui; }
.replay-keys .forward { grid-column:3; }
.replay-keys .duck { grid-column:1; }
.replay-keys .jump { grid-column:1/3; }
.replay-keys .pressed { background:#64b834; color:#fff; border-color:#baff8b; box-shadow:0 0 10px #76e34755; }
.replay-keys .unavailable { opacity:.35; }
.is-3d .replay-followed:not([hidden]) { display:flex; align-items:center; gap:16px; position:absolute; z-index:3; bottom:12px; left:50%; transform:translateX(-50%); padding:12px 18px; border:1px solid #78aadd; border-radius:4px; color:white; background:#111923d9; white-space:nowrap; }
.replay-followed strong { font-size:24px; }.replay-followed span { font-size:12px; }
.is-3d .replay-paused:not([hidden]) { display:block; position:absolute; z-index:2; bottom:85px; left:50%; transform:translateX(-50%); padding:8px 30px; border-radius:4px; color:#fff; background:#101923c9; pointer-events:none; }
@container (max-width: 850px) {
  #review .map-stage.is-3d > #teamRoster { left:8px; right:8px; gap:76px; }
  #review .map-stage.is-3d > .round-clock { left:50%; }
  #review .map-stage.is-3d > .player-sound { top:138px; }
  #review .map-stage.is-3d > .kill-feed { top:180px; }
  .is-3d .replay-tactical-hud { top:138px; width:160px; }
  .replay-inputs { margin:6px 0 0; padding:6px; }.replay-keys span { min-height:21px; font-size:11px; }
  .is-3d .replay-followed:not([hidden]) { gap:8px; padding:8px; bottom:8px; }
}
@media (max-width:600px) {
  #review .is-3d #teamRoster .roster-player { height:93px; }
  #review .is-3d #teamRoster .roster-gear { display:none; }
  .is-3d .replay-tactical-hud { top:112px; width:125px; }
  .replay-inputs small { font-size:8px; }
  .is-3d .replay-followed:not([hidden]) { left:auto; right:8px; transform:none; flex-wrap:wrap; max-width:190px; }
}
