/* ══════════════════════════════════════════════════════════════
   CAMERA SECTION — 3D GLB rig (Three.js) behind the studio copy
   Sticky viewport: WebGL canvas fills it; the statement + stats
   overlay sits layered above the floating, scroll-rotating rig.
   ══════════════════════════════════════════════════════════════ */

.cam-section {
  position: relative;
  height: 200vh;
  background: transparent;
}

.cam-sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
}

/* ─── WebGL canvas layer ──────────────────────────────────── */
.cam-canvas-wrap {
  position: absolute;
  inset: 0;
  z-index: 1;
}
#cam-gl {
  display: block;
  width: 100%;
  height: 100%;
  /* Desaturated + softly blurred so the rig melts into the backdrop */
  filter: grayscale(1) contrast(0.92) brightness(0.9) blur(3.5px);
  opacity: 0.55;
}

/* ─── Loading indicator ───────────────────────────────────── */
.cam-loading {
  position: absolute;
  left: 50%;
  top: 54%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--font-secondary);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.4);
  transition: opacity 0.6s var(--ease-cinematic);
}
.cam-loading.is-hidden {
  opacity: 0;
  pointer-events: none;
}
.cam-loading-ring {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.15);
  border-top-color: var(--red);
  animation: camSpin 0.9s linear infinite;
}
@keyframes camSpin {
  to { transform: rotate(360deg); }
}

/* ─── Studio statement + stats overlay ────────────────────── */
.cam-overlay {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(48px, 8vh, 96px);
  padding: clamp(96px, 14vh, 160px) clamp(28px, 6vw, 96px) clamp(56px, 9vh, 104px);
  pointer-events: none;
}

.cam-overlay-top {
  max-width: 900px;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(24px, 3.5vh, 40px);
  text-align: center;
  will-change: transform, opacity;
}

.cam-overlay .statement-tag {
  font-family: var(--font-secondary);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.5);
  display: flex;
  align-items: center;
  gap: 14px;
}
.cam-overlay .statement-tag::before,
.cam-overlay .statement-tag::after {
  content: '';
  width: 40px;
  height: 1px;
  background: var(--red);
}

.cam-overlay .statement-h2 {
  margin: 0;
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(30px, 4.4vw, 68px);
  line-height: 1.14;
  letter-spacing: -0.01em;
  color: #fff;
  max-width: 16ch;
  text-wrap: balance;
  text-shadow: 0 10px 50px rgba(0, 0, 0, 0.65);
}
.cam-overlay .statement-h2 b {
  font-family: var(--font-main);
  font-style: normal;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.005em;
}

.cam-overlay-stats {
  display: flex;
  justify-content: center;
  gap: clamp(40px, 7vw, 110px);
  text-align: center;
  will-change: transform, opacity;
}
.cam-overlay-stats .statement-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.cam-overlay-stats .stm-num {
  font-family: var(--font-main);
  font-weight: 700;
  font-size: clamp(30px, 3.4vw, 52px);
  line-height: 0.9;
  letter-spacing: -0.01em;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 6px 30px rgba(0, 0, 0, 0.5);
}
.cam-overlay-stats .stm-label {
  font-family: var(--font-secondary);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.4);
}

/* ─── Mobile ──────────────────────────────────────────────── */
@media (max-width: 900px) {
  .cam-section {
    height: 180vh;
    position: relative;
    z-index: 2; /* match sibling sections (iOS video compositing) */
  }
  .cam-overlay {
    padding: clamp(88px, 13vh, 140px) 32px clamp(40px, 8vh, 72px);
  }
  .cam-overlay-stats {
    gap: clamp(24px, 8vw, 48px);
  }
  .cam-overlay-stats .stm-num {
    font-size: clamp(30px, 9vw, 48px);
  }
}

/* ─── Reduced motion — static rig, copy fully visible ─────── */
@media (prefers-reduced-motion: reduce) {
  .cam-section { height: 120vh; }
  .cam-sticky { position: relative; }
}
