/* STORY preloader — minimal editorial opening. */
html.story-preloader-active,
html.story-preloader-active body { overflow: hidden; }

.story-preloader {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: grid;
  place-items: center;
  background: #fff;
  color: #0a0a0a;
  opacity: 1;
  visibility: visible;
  transition: opacity .24s ease, visibility 0s linear .24s;
}

.story-preloader[hidden] { display: none !important; }

.story-preloader__stage {
  width: min(74vw, 430px);
  display: grid;
  place-items: center;
  transform: translateY(0);
  transition: transform .68s cubic-bezier(.22,1,.36,1), opacity .45s ease;
}

.story-preloader__mask {
  width: clamp(178px, 21vw, 292px);
  overflow: hidden;
  clip-path: inset(0 100% 0 0);
  animation: story-editorial-reveal .42s cubic-bezier(.77,0,.18,1) .08s forwards;
}

.story-preloader__wordmark {
  display: block;
  width: 100%;
  height: auto;
  opacity: 0;
  transform: translateX(-8px) scale(1.015);
  animation: story-wordmark-settle .36s cubic-bezier(.22,1,.36,1) .1s forwards;
}

.story-preloader.is-loaded .story-preloader__mask {
  animation: story-editorial-close .62s cubic-bezier(.77,0,.18,1) forwards;
}

.story-preloader.is-loaded .story-preloader__stage {
  transform: translateY(-6px);
  opacity: .96;
}

.story-preloader.is-leaving { opacity: 0; }

@keyframes story-editorial-reveal {
  from { clip-path: inset(0 100% 0 0); }
  to   { clip-path: inset(0 0 0 0); }
}

@keyframes story-wordmark-settle {
  from { opacity: 0; transform: translateX(-8px) scale(1.015); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}

@keyframes story-editorial-close {
  from { clip-path: inset(0 0 0 0); }
  to   { clip-path: inset(0 0 0 100%); }
}

@media (max-width: 640px) {
  .story-preloader__stage { width: min(76vw, 320px); }
  .story-preloader__mask { width: clamp(158px, 48vw, 224px); }
}

@media (prefers-reduced-motion: reduce) {
  .story-preloader,
  .story-preloader__stage,
  .story-preloader__mask,
  .story-preloader__wordmark {
    animation: none !important;
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
    clip-path: none !important;
  }
}

/* The overlay is invisible unless the first-visit bootstrap explicitly activates it. */
html:not(.story-preloader-active) .story-preloader { display: none !important; }

/* Mobile-only loader setting is applied in the early head bootstrap. */
