@import url("./landing-v2.original.css?v=20260715-intro-modal-v4");

/*
 * SignalRadar first-paint gate.
 * The landing CSS is render-blocking, so the real page cannot flash before the
 * deferred cinematic runtime mounts. The intro modal is excluded from this
 * global gate because it has its own explicit open/closed state machine.
 */
html:not(.sr-preloader-released) body {
  background: #01040a !important;
}

html:not(.sr-preloader-released) body > *:not(#sr-preloader-bootstrap):not(#sr-signal-preloader):not([data-intro-modal]):not([data-intro-modal-managed]) {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

html.sr-preloader-released body > *:not(#sr-preloader-bootstrap):not(#sr-signal-preloader):not([data-intro-modal]):not([data-intro-modal-managed]) {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}

html.sr-preloader-revealing body > header,
html.sr-preloader-revealing body > main,
html.sr-preloader-revealing body > footer,
html.sr-preloader-revealing body > canvas {
  animation: srLandingPortalReveal 1.15s cubic-bezier(.16,.8,.2,1) both;
}

html:not(.sr-preloader-active):not(.sr-preloader-released) body > *:not(#sr-preloader-bootstrap):not(#sr-signal-preloader):not([data-intro-modal]):not([data-intro-modal-managed]) {
  animation: srLandingFailOpen 0s 12s forwards;
}

/* Never allow the raw server-rendered modal to flash before JS claims it. */
[data-intro-modal][hidden] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/*
 * Modal state contract. styles.css defines the visual design; these rules own
 * visibility and pointer routing so hidden/closing states cannot be overridden
 * by the landing reveal gate.
 */
[data-intro-modal-managed] {
  z-index: 2147482000 !important;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

[data-intro-modal-managed][hidden],
[data-intro-modal-managed][data-intro-state="waiting"],
[data-intro-modal-managed][data-intro-state="armed"],
[data-intro-modal-managed][data-intro-state="disabled"],
[data-intro-modal-managed][data-intro-state="closed"] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

[data-intro-modal-managed][data-intro-state="open"] {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

[data-intro-modal-managed][data-intro-state="closing"] {
  display: flex !important;
  visibility: visible !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

[data-intro-modal-managed] .intro-modal__backdrop {
  z-index: 0;
  pointer-events: auto !important;
}

[data-intro-modal-managed] .intro-modal__dialog {
  z-index: 2;
  pointer-events: auto !important;
}

[data-intro-modal-managed] [data-intro-close] {
  z-index: 8 !important;
  pointer-events: auto !important;
  touch-action: manipulation;
}

[data-intro-modal-managed] [data-intro-play] {
  pointer-events: auto;
  touch-action: manipulation;
}

.intro-modal__play.is-loading .intro-modal__play-icon {
  animation-duration: .75s;
}

.intro-modal__error {
  position: absolute;
  left: 50%;
  bottom: clamp(18px, 4vw, 34px);
  z-index: 5;
  width: min(86%, 560px);
  margin: 0;
  padding: 10px 14px;
  border: 1px solid rgba(255, 111, 137, .45);
  border-radius: 12px;
  background: rgba(28, 4, 14, .86);
  color: rgba(255, 225, 232, .95);
  font: 700 clamp(.72rem, 1.7vw, .9rem)/1.35 var(--font);
  text-align: center;
  transform: translateX(-50%);
  box-shadow: 0 12px 34px rgba(0, 0, 0, .42);
}

.intro-modal__error[hidden] {
  display: none !important;
}

@keyframes srLandingPortalReveal {
  from {
    opacity: 0;
    filter: blur(10px) saturate(135%);
    transform: scale(1.035) translateZ(0);
  }
  to {
    opacity: 1;
    filter: none;
    transform: scale(1) translateZ(0);
  }
}

@keyframes srLandingFailOpen {
  to {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.sr-preloader-revealing body > header,
  html.sr-preloader-revealing body > main,
  html.sr-preloader-revealing body > footer,
  html.sr-preloader-revealing body > canvas {
    animation-duration: .2s;
  }

  [data-intro-modal-managed] {
    transition-duration: .12s !important;
  }
}
