/* HERO: full-bleed loop, bottom-anchored full-width wordmark. */

.s-hero {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden;
  background: var(--ink);
}

/* ---------- media ---------- */

.hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.hero-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

/* The cinematic loop sits over the field and reveals once it can play.
   The field stays behind it as instant-paint, reduced-motion, and fallback. */
.hero-vid {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.2s var(--ease-out);
  will-change: opacity;
}

.hero-vid.is-playing {
  opacity: 1;
}

/* Static fallback if WebGL is unavailable: a quiet ink-to-signal wash. */
.hero-canvas--unsupported {
  background:
    radial-gradient(120% 80% at 75% 18%, rgba(255, 46, 0, 0.16), transparent 55%),
    radial-gradient(90% 70% at 20% 90%, rgba(255, 46, 0, 0.08), transparent 60%),
    var(--ink);
}

.hero-scrim,
.hero-scrim-deep {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

/* Thin ink scrim so the mono line and wordmark always read over the loop. */
.hero-scrim {
  background: linear-gradient(
    to bottom,
    rgba(11, 11, 12, 0.4) 0%,
    rgba(11, 11, 12, 0.06) 28%,
    rgba(11, 11, 12, 0.14) 58%,
    rgba(11, 11, 12, 0.6) 82%,
    rgba(11, 11, 12, 0.86) 100%
  );
}

/* Deepens via scroll scrub in js/hero.js as the next section slides over. */
.hero-scrim-deep {
  background: var(--ink);
  opacity: 0;
}

/* ---------- content ---------- */

.hero-content {
  position: relative;
  z-index: 1;
  width: 100%;
  padding-bottom: clamp(0.5rem, 1.5vh, 1.25rem);
}

.hero-tag {
  color: var(--paper);
  padding-left: var(--gutter);
  margin-bottom: clamp(1.25rem, 3.5vh, 2.5rem);
}

.hero-tag-sep {
  color: var(--signal);
  margin: 0 0.5em;
}

.hero-mark {
  position: relative;
  width: 100%;
}

.hero-mark-mask {
  display: block;
  overflow: hidden;
}

/* Top padding gives the cap line headroom inside the reveal mask. */
.hero-wordmark {
  display: block;
  padding-top: 0.05em;
  color: var(--paper);
}

.hero-reg {
  position: absolute;
  z-index: 1;
  top: -1.18em;
  right: 0.4vw;
  font-variation-settings: 'wdth' 100, 'wght' 700;
  font-weight: 700;
  font-size: clamp(1.5rem, 4.5vw, 4.25rem);
  line-height: 1;
  color: var(--paper);
}

/* ---------- mobile ---------- */

@media (max-width: 767px) {
  .hero-tag {
    margin-bottom: 1rem;
  }
  .hero-content {
    padding-bottom: 0.75rem;
  }
}
