/* Luz rasante: scene styles. Host provides fonts, H1, CTA. */
.luz {
  position: relative;
  height: var(--luz-length, 480vh);
  background: var(--night, #0d0f0e);
  --luz-p: 0;
  --luz-ui: 1;
}
.luz-stage {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: var(--night, #0d0f0e);
  isolation: isolate;
}
.luz-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  z-index: 2;
  pointer-events: none;
}
/* Photograph layer lives UNDER the canvas: the iris reveals it. Real <picture>, native resolution. */
.luz-photo {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--night, #0d0f0e);
  visibility: hidden;
}
.luz-photo picture,
.luz-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}
.luz-photo picture {
  clip-path: inset(var(--luz-bar, 0px) 0);
}
.luz-photo img {
  object-fit: cover;
  object-position: 50% 46%;
}
/* hairline frame lines on the letterbox */
.luz-photo::before,
.luz-photo::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: rgba(239, 233, 221, 0.16);
  opacity: var(--luz-hair, 0);
  z-index: 1;
}
.luz-photo::before { top: calc(var(--luz-bar, 0px) - 1px); }
.luz-photo::after { bottom: calc(var(--luz-bar, 0px) - 1px); }

.luz-hint {
  position: absolute;
  left: 50%;
  bottom: clamp(28px, 5.2vh, 56px);
  transform: translateX(-50%);
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 12px;
  font: 500 11px/1 var(--ui, "Schibsted Grotesk", system-ui, sans-serif);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ash, #9c978c);
  pointer-events: none;
  opacity: calc(var(--luz-ui, 1) * var(--luz-hint, 1));
  transition: opacity 0.6s ease;
  white-space: nowrap;
}
.luz-hint i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--grazing, #c2602e);
  box-shadow: 0 0 14px 2px rgba(194, 96, 46, 0.55);
  animation: luz-pulse 2.8s ease-in-out infinite;
}
@keyframes luz-pulse {
  0%, 100% { opacity: 0.55; transform: scale(0.85); }
  50% { opacity: 1; transform: scale(1.15); }
}
.luz-live {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
@media (prefers-reduced-motion: reduce) {
  .luz-hint i { animation: none; }
}

/* captions tied to the sun */
.luz-caps { position: absolute; left: clamp(22px, 3.4vw, 56px); bottom: clamp(30px, 7.5vh, 76px); z-index: 3; pointer-events: none; }
.luz-cap {
  position: absolute; left: 0; bottom: 0; margin: 0; opacity: 0; white-space: nowrap;
  display: flex; align-items: center; gap: 14px;
  font: 300 clamp(15px, 1.15vw, 19px)/1.2 var(--display, "Newsreader", Georgia, serif);
  letter-spacing: 0.02em; color: rgba(239, 233, 221, 0.9);
  text-shadow: 0 1px 14px rgba(0, 0, 0, 0.55);
  will-change: opacity, transform;
}
.luz-cap i { width: 34px; height: 1px; background: var(--grazing, #c2602e); display: block; flex: none; }
@media (max-width: 899px) { .luz-caps { display: none; } }

/* exposure bloom when the iris opens onto the photograph */
.luz-flash {
  position: absolute; inset: 0; z-index: 2; opacity: 0; pointer-events: none;
  background: radial-gradient(ellipse 80% 70% at 52% 46%, #fff8ec 0%, #ffe9cc 45%, #f4cfa2 100%);
  clip-path: inset(var(--luz-bar, 0px) 0);
}
