/*
  Intro loader (index.html only) — full-viewport overlay, once per
  session. Markup is injected at runtime by assets/js/loader.js (see
  the placeholder comment in index.html); this file styles it whether
  or not it's actually present in the DOM on a given load.

  Ref: Input/Intro loader.png (1920x1080). Measured (script-assisted,
  pure-white pixel bbox): title text horizontally centered (bbox
  center x=961.5 of 1920) and vertically centered (bbox center
  y=548 of 1080, ~1% off exact mid-viewport — treated as centered).
  Single line, --font-size-display, --color-text-inverse.
*/

.intro-loader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Backdrop while the video buffers: loader.js sets a random soft
     placeholder tone inline (round 15); this is only the fallback. */
  background: var(--color-placeholder-3);
  overflow: hidden;
  opacity: 1;
  transition: opacity var(--motion-duration) var(--motion-easing);
}

.intro-loader.is-hidden {
  opacity: 0;
  pointer-events: none;
}

.intro-loader__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity var(--motion-duration) var(--motion-easing);
}

.intro-loader__video.is-loaded {
  opacity: 1;
}

.intro-loader__title {
  position: relative;
  z-index: 1;
  color: var(--color-text-inverse);
  font-size: var(--font-size-display);
  line-height: var(--line-height-display);
  font-weight: 400;
  text-align: center;
  padding: 0 var(--grid-margin);
}

/* No scrolling while the loader is visible. */
body.intro-loader-active {
  overflow: hidden;
}
