/* Shared cinematic composition: consistent exposure, navy shadows, unchanged geometry. */
.horizon-scene {
  --sam-visual-focus-x: 66%;
  --sam-visual-focus-y: 36%;
}
.horizon-scene .sam-film-stack {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  overflow: hidden;
  isolation: isolate;
  contain: paint;
}
.horizon-scene .sam-film-layer,
.horizon-scene .sam-film-layer video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.horizon-scene .sam-film-layer {
  opacity: 0;
  pointer-events: none;
  backface-visibility: hidden;
  will-change: opacity;
}
.horizon-scene .sam-film-layer video {
  display: block;
  object-fit: cover;
  object-position: center center;
  background: #050b14;
  /* Same restrained exposure curve in every scene; no palette swap or hard cut. */
  filter: saturate(.91) contrast(.94) brightness(.90);
}
.horizon-scene .sam-film-layer--puddle video { object-position: center 52%; }
.horizon-scene .sam-film-layer--nebula video { object-position: 55% center; }
.horizon-scene .sam-film-layer--reef video { object-position: center 47%; }
.horizon-scene .sam-film-vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(1,5,11,.78), rgba(1,5,11,.43) 27%, rgba(1,5,11,.10) 68%, transparent 94%),
    linear-gradient(0deg, rgba(1,7,15,.40), transparent 40%);
}
.sam-motion-notice {
  position: relative;
  z-index: 10;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  max-width: 740px;
  margin: 0;
  padding: 8px 0;
  color: #c9d5de;
  font: 12px/1.5 system-ui, sans-serif;
}
.sam-motion-message { font-size: 12px; flex: 1 1 290px; }
.sam-motion-notice button {
  min-height: 42px;
  padding: 7px 13px;
  border-radius: 3px;
  border: 1px solid #647987;
  background: #10171e;
  color: #e9eef2;
  cursor: pointer;
  font: 500 12px/1.25 system-ui, sans-serif;
}
.sam-motion-notice button:hover { border-color: #a9bdca; }
.sam-motion-notice button:focus-visible { outline: 3px solid #e7f3fb; outline-offset: 3px; }
.sam-motion-notice button:disabled { opacity: .54; cursor: not-allowed; }
.sam-motion-status {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}
@media (max-width:760px) {
  .horizon-scene { --sam-visual-focus-x: 58%; --sam-visual-focus-y: 25.5%; }
  .sam-motion-notice { width: 100%; padding-bottom: 13px; }
  .sam-motion-message { flex-basis: 100%; }
  .horizon-scene .sam-film-vignette {
    background: linear-gradient(0deg, rgba(0,5,11,.83) 1%, rgba(0,5,11,.30) 45%, transparent 87%);
  }
}
@media (prefers-reduced-motion: reduce) {
  .horizon-scene .sam-film-stack { display: none !important; }
}

/* Keep the opt-in motion control unobstructed by the mobile consent banner.
   The hero heading stays below this compact, in-flow-area warning. */
@media (max-width: 760px) {
  .horizon-home .horizon-hero .sam-motion-notice {
    position: absolute;
    top: 16px;
    left: 0;
    right: 0;
    width: auto;
    margin: 0;
    z-index: 12;
  }
}

/* v4: rain and water are now rendered by the native WebGL camera, not an eight-second MP4. */
