/* Fixed camera geometry avoids intrinsic image sizes changing the visible crop. */
.viewer[data-camera-viewer] {
  --camera-accent: var(--gold-bright, #ebd38f);
  --camera-tint: rgba(170, 135, 210, .12);
  min-height: 0;
  grid-template-rows: auto auto auto auto auto;
}
.viewer[data-camera-viewer="han"] { --camera-accent: #f3dda0; --camera-tint: rgba(214, 182, 109, .11); }
.viewer[data-camera-viewer="soren"] { --camera-accent: #bcdfff; --camera-tint: rgba(75, 151, 242, .12); }
.viewer[data-camera-viewer] .viewer__stage {
  display: block;
  position: relative;
  height: clamp(380px, calc(100svh - 390px), 900px);
  min-height: 0;
  overflow: hidden;
  isolation: isolate;
}
.viewer[data-camera-viewer] .viewer-camera {
  position: absolute;
  z-index: 2;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  transform-origin: 0 0;
  pointer-events: none;
}
.viewer[data-camera-viewer] .viewer-camera .frame-stack,
.viewer[data-camera-viewer] .viewer-camera img,
.viewer[data-camera-viewer] #sten-frame {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  max-width: none;
  max-height: none;
  margin: 0;
  object-fit: contain;
  object-position: center;
  pointer-events: none;
}
.viewer[data-camera-viewer] .viewer__gesture { z-index: 4; }
.camera-controls {
  position: relative;
  z-index: 20;
  width: min(calc(100% - 2rem), 480px);
  margin: .15rem auto .8rem;
  padding: .7rem .75rem .4rem;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: linear-gradient(125deg, var(--camera-tint), rgba(4, 6, 10, .55));
}
.camera-controls__presets { display: flex; align-items: center; justify-content: space-between; gap: .65rem; }
.camera-controls__label { color: #a8a6b0; font: 500 .59rem/1.3 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.camera-controls__choices { display: inline-flex; gap: .25rem; }
.camera-preset, .camera-step {
  border: 1px solid transparent;
  background: transparent;
  color: var(--paper);
  cursor: pointer;
  font-family: var(--sans);
}
.camera-preset { min-height: 36px; padding: .4rem .7rem; border-radius: 3px; color: #a8a6b0; font-size: .67rem; }
.camera-preset[aria-pressed="true"] { color: var(--camera-accent); border-color: var(--line); background: var(--camera-tint); }
.camera-controls__range { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px 3.4em; align-items: center; gap: .4rem; }
.camera-step { width: 44px; height: 44px; padding: 0; font-size: 1.2rem; border-radius: 50%; }
.camera-step:hover:not(:disabled), .camera-preset:hover { color: var(--camera-accent); background: var(--camera-tint); }
.camera-step:disabled { color: #666570; cursor: default; }
.camera-controls input { min-width: 0; width: 100%; height: 40px; margin: 0; accent-color: var(--camera-accent); cursor: pointer; }
.camera-controls output { color: var(--camera-accent); font: 500 .66rem var(--sans); font-variant-numeric: tabular-nums; text-align: right; }
.camera-controls button:focus-visible, .camera-controls input:focus-visible { outline: 2px solid var(--camera-accent); outline-offset: 2px; }
.viewer[data-camera-viewer] .sound-panel { padding-top: .65rem; }
@media (max-width: 740px) {
  .viewer[data-camera-viewer] .viewer__stage { height: clamp(360px, 125vw, 620px); }
  .camera-controls { margin-bottom: .9rem; }
}
@media (max-width: 360px) {
  .camera-controls { padding-inline: .5rem; }
  .camera-controls__label { font-size: .54rem; }
  .camera-preset { padding-inline: .5rem; font-size: .64rem; }
  .camera-controls__range { gap: .2rem; }
}
