/* V34: every layout decision comes from the player's logical container size. */
.ut-player.ut-adaptive {
  --ut-terminal-scale: 1;
  --ut-adaptive-inset: 16px;
  --ut-adaptive-gap: 10px;
  --ut-adaptive-control-size: 44px;
  --ut-adaptive-control-columns: 1;
  --ut-adaptive-card-width: 120px;
  --ut-adaptive-left: max(var(--ut-adaptive-inset), var(--ut-safe-left, env(safe-area-inset-left, 0px)));
  --ut-adaptive-right: max(var(--ut-adaptive-inset), var(--ut-safe-right, env(safe-area-inset-right, 0px)));
  --ut-adaptive-top: max(var(--ut-adaptive-inset), var(--ut-safe-top, env(safe-area-inset-top, 0px)));
  --ut-adaptive-bottom: max(var(--ut-adaptive-inset), var(--ut-safe-bottom, env(safe-area-inset-bottom, 0px)));
  min-height: 0;
  min-width: 0;
}
.ut-player.ut-adaptive .ut-map-panel {
  display: flex;
  flex-direction: column;
  left: var(--ut-adaptive-left);
  top: var(--ut-adaptive-top);
  width: var(--ut-adaptive-map-width, 280px);
  max-width: none;
  height: auto;
  max-height: var(--ut-adaptive-map-budget, calc(100% - 32px));
  min-width: 0;
  min-height: 0;
  padding: calc(12px * var(--ut-terminal-scale)) calc(14px * var(--ut-terminal-scale));
  border-radius: calc(16px * var(--ut-terminal-scale));
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}
.ut-player.ut-adaptive .ut-map-heading,
.ut-player.ut-adaptive .ut-map-caption { flex: 0 0 auto; }
.ut-player.ut-adaptive .ut-map-heading { min-width: 0; gap: calc(8px * var(--ut-terminal-scale)); }
.ut-player.ut-adaptive .ut-map-names { flex: 1 1 auto; min-width: 0; }
.ut-player.ut-adaptive .ut-tour-title { max-width: none; font-size: max(12px, calc(16px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-eyebrow { font-size: max(9px, calc(10px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-map-toggle { width: 44px; height: 44px; }
.ut-player.ut-adaptive .ut-map-frame {
  display: flex;
  flex: 1 1 auto;
  width: 100%;
  height: var(--ut-adaptive-map-frame-height, 206px);
  min-width: 0;
  min-height: 0;
  max-height: none;
  margin-top: calc(10px * var(--ut-terminal-scale));
  overflow: visible;
}
/* An exceptionally short panel scrolls its full content rather than clipping it. */
.ut-player.ut-adaptive.ut-map-overflow .ut-map-frame { flex: 0 0 var(--ut-adaptive-map-frame-height, 64px); }
.ut-player.ut-adaptive .ut-map-caption { margin-top: calc(8px * var(--ut-terminal-scale)); font-size: max(11px, calc(11px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-location-label { max-width: 100%; }
.ut-player.ut-adaptive.ut-map-collapsed .ut-map-frame,
.ut-player.ut-adaptive.ut-map-collapsed .ut-map-caption,
.ut-player.ut-adaptive.ut-no-map .ut-map-frame,
.ut-player.ut-adaptive.ut-no-map .ut-map-caption { display: none; }
.ut-player.ut-adaptive .ut-top-actions {
  top: var(--ut-adaptive-top);
  right: var(--ut-adaptive-right);
  gap: calc(8px * var(--ut-terminal-scale));
}
.ut-player.ut-adaptive .ut-top-actions .ut-button { width: var(--ut-adaptive-control-size); height: var(--ut-adaptive-control-size); }
.ut-player.ut-adaptive .ut-controls {
  display: grid;
  grid-template-columns: repeat(var(--ut-adaptive-control-columns), var(--ut-adaptive-control-size));
  grid-auto-rows: var(--ut-adaptive-control-size);
  align-content: start;
  top: var(--ut-adaptive-controls-top, 70px);
  right: var(--ut-adaptive-right);
  bottom: auto;
  width: var(--ut-adaptive-controls-width, 50px);
  max-width: none;
  height: var(--ut-adaptive-controls-height, auto);
  max-height: var(--ut-adaptive-controls-height, calc(100% - 140px));
  padding: 3px;
  transform: none;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-width: thin;
  overscroll-behavior: contain;
}
.ut-player.ut-adaptive .ut-controls .ut-button { width: var(--ut-adaptive-control-size); height: var(--ut-adaptive-control-size); min-width: 44px; min-height: 44px; }
.ut-player.ut-adaptive.ut-controls-two-columns .ut-controls .ut-button + .ut-button::before { display: none; }
.ut-player.ut-adaptive .ut-button svg { width: max(20px, calc(23px * var(--ut-terminal-scale))); height: max(20px, calc(23px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-bottom {
  left: var(--ut-adaptive-bottom-left, var(--ut-adaptive-left));
  right: auto;
  bottom: var(--ut-adaptive-bottom);
  width: var(--ut-adaptive-bottom-width, calc(100% - 90px));
  max-width: none;
  min-width: 0;
  transform: none;
}
.ut-player.ut-adaptive .ut-scene-header { gap: var(--ut-adaptive-gap); margin-bottom: calc(10px * var(--ut-terminal-scale)); }
.ut-player.ut-adaptive .ut-scene-name { margin-top: 3px; font-size: max(16px, calc(22px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-strip-toggle { width: 44px; height: 44px; }
.ut-player.ut-adaptive .ut-scene-strip { display: flex; gap: calc(9px * var(--ut-terminal-scale)); min-width: 0; overflow-x: auto; overflow-y: hidden; }
.ut-player.ut-adaptive .ut-scene-card {
  flex: 0 0 var(--ut-adaptive-card-width);
  width: var(--ut-adaptive-card-width);
  height: calc(var(--ut-adaptive-card-width) * .6333333333);
  aspect-ratio: 120 / 76;
  border-radius: calc(10px * var(--ut-terminal-scale));
}
.ut-player.ut-adaptive .ut-scene-card-title { font-size: max(11px, calc(12px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive .ut-scene-index { font-size: max(9px, calc(9px * var(--ut-terminal-scale))); }
.ut-player.ut-adaptive.ut-strip-collapsed .ut-scene-strip,
.ut-player.ut-adaptive.ut-strip-auto-collapsed .ut-scene-strip { display: none; }
.ut-player.ut-adaptive.ut-strip-collapsed .ut-scene-header,
.ut-player.ut-adaptive.ut-strip-auto-collapsed .ut-scene-header { margin-bottom: 0; }
.ut-player.ut-adaptive .ut-pick-hint { top: auto; bottom: var(--ut-adaptive-pick-bottom, 120px); width: max-content; max-width: calc(100% - 24px); font-size: max(11px, calc(12px * var(--ut-terminal-scale))); }

/* Global setting, per-hotspot setting, and terminal factor each apply once. */
.ut-player.ut-adaptive .ut-hotspot {
  --ut-hotspot-visual-scale: calc(var(--ut-hotspot-scale, 1) * var(--ut-spot-scale, 1) * var(--ut-terminal-scale, 1));
  width: max(44px, calc(56px * var(--ut-hotspot-visual-scale)));
  height: max(44px, calc(44px * var(--ut-hotspot-visual-scale)));
  min-width: 44px;
  min-height: 44px;
}
/* Old previews may still carry inline child scale. Keep all sizing explicit. */
.ut-player.ut-adaptive .ut-hotspot > * { scale: none !important; }
.ut-player.ut-adaptive .ut-hotspot .ut-arrow-disc { inset: 0; }
.ut-player.ut-adaptive .ut-hotspot .ut-arrow-disc svg {
  width: calc(46px * var(--ut-hotspot-visual-scale));
  height: calc(30px * var(--ut-hotspot-visual-scale));
}
.ut-player.ut-adaptive .ut-hotspot-turn .ut-arrow-disc svg { width: calc(44px * var(--ut-hotspot-visual-scale)); height: calc(38px * var(--ut-hotspot-visual-scale)); }
.ut-player.ut-adaptive .ut-point-disc {
  inset: auto;
  top: 50%;
  left: 50%;
  width: calc(40px * var(--ut-hotspot-visual-scale));
  height: calc(40px * var(--ut-hotspot-visual-scale));
  transform: translate(-50%, -50%) perspective(100px) rotateX(53deg);
}
.ut-player.ut-adaptive .ut-point-core { width: calc(7px * var(--ut-hotspot-visual-scale)); height: calc(7px * var(--ut-hotspot-visual-scale)); }
.ut-player.ut-adaptive .ut-hotspot-label {
  bottom: calc(50% + 20px * var(--ut-hotspot-visual-scale));
  max-width: calc(168px * var(--ut-terminal-scale));
  padding: max(4px, calc(5px * var(--ut-hotspot-visual-scale))) max(8px, calc(12px * var(--ut-hotspot-visual-scale)));
  font-size: max(11px, calc(12px * var(--ut-hotspot-visual-scale)));
}
.ut-player.ut-adaptive.ut-compact-container .ut-map-panel { padding: 7px 9px; border-radius: 12px; }
.ut-player.ut-adaptive.ut-compact-container .ut-map-frame { margin-top: 5px; }
.ut-player.ut-adaptive.ut-compact-container .ut-map-caption { margin-top: 4px; }
.ut-player.ut-adaptive.ut-compact-container .ut-eyebrow { display: none; }
.ut-player.ut-adaptive.ut-compact-container .ut-tour-title { font-size: 12px; }
.ut-player.ut-adaptive.ut-compact-container .ut-scene-name { margin-top: 0; font-size: 16px; }
.ut-player.ut-adaptive.ut-compact-container .ut-scene-header { margin-bottom: 5px; }
.ut-player.ut-adaptive.ut-compact-container.ut-strip-collapsed .ut-scene-header,
.ut-player.ut-adaptive.ut-compact-container.ut-strip-auto-collapsed .ut-scene-header { margin-bottom: 0; }
