

.js .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity var(--duration-slow) var(--ease-decelerate),
              transform var(--duration-slow) var(--ease-decelerate);
}

.js .reveal.is-revealed {
  opacity: 1;
  transform: translateY(0);
}

.reveal-group > .reveal:nth-child(1) { transition-delay: 0ms; }
.reveal-group > .reveal:nth-child(2) { transition-delay: 60ms; }
.reveal-group > .reveal:nth-child(3) { transition-delay: 120ms; }
.reveal-group > .reveal:nth-child(4) { transition-delay: 180ms; }
.reveal-group > .reveal:nth-child(5) { transition-delay: 240ms; }
.reveal-group > .reveal:nth-child(6) { transition-delay: 300ms; }

.governance .reveal-group > .reveal:nth-child(1) { transition-delay: 0ms; }
.governance .reveal-group > .reveal:nth-child(2) { transition-delay: 80ms; }
.governance .reveal-group > .reveal:nth-child(3) { transition-delay: 160ms; }
.governance .reveal-group > .reveal:nth-child(4) { transition-delay: 240ms; }

.js .reveal-mask {
  clip-path: inset(0 0 110% 0);
  transform: translateY(8px);
  transition: clip-path 900ms var(--ease-decelerate),
              transform 900ms var(--ease-decelerate);
}

.js .reveal-mask.is-revealed {
  clip-path: inset(-20% 0 -20% 0);
  transform: translateY(0);
}

.js .hero__eyebrow,
.js .hero__headline,
.js .hero__support,
.js .hero__identity,
.js .hero__actions,
.js .hero__navigator,
.js .scroll-indicator {
  opacity: 0;
}

@keyframes gridnity-hero-curtain {
  from { opacity: 1; }
  to   { opacity: 0; }
}

@keyframes gridnity-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes gridnity-fade-up-sm {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes gridnity-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes gridnity-fade-in-right {
  from { opacity: 0; transform: translateX(16px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes gridnity-fade-in-left {
  from { opacity: 0; transform: translateX(-12px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes gridnity-fade-up-xs {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes gridnity-wipe-up {
  from { opacity: 0; clip-path: inset(0 0 105% 0); transform: translateY(10px); }
  to   { opacity: 1; clip-path: inset(-25% 0 -25% 0); transform: translateY(0); }
}

@keyframes gridnity-rail-draw {
  from { clip-path: inset(0 100% 0 0); }
  to   { clip-path: inset(0 0 0 0); }
}

@keyframes gridnity-scroll-pulse {
  0%   { transform: translateY(0);   opacity: 0.5; }
  50%  { transform: translateY(10px); opacity: 0.15; }
  100% { transform: translateY(0);   opacity: 0.5; }
}

.fonts-ready .site-header {
  animation: gridnity-fade-in 400ms ease both;
}

.fonts-ready .hero__eyebrow {
  animation: gridnity-fade-in-left 500ms var(--ease-decelerate) 120ms both;
}

.fonts-ready .hero__headline {
  animation: gridnity-wipe-up var(--duration-cine) var(--ease-decelerate) 240ms both;
}

.fonts-ready .hero__support {
  animation: gridnity-fade-up-sm 600ms var(--ease-decelerate) 440ms both;
}

.fonts-ready .hero__identity {
  animation: gridnity-fade-up-sm 600ms var(--ease-decelerate) 560ms both;
}

.fonts-ready .hero__actions {
  animation: gridnity-fade-up-sm 600ms var(--ease-decelerate) 640ms both;
}

.fonts-ready .hero__navigator {
  animation: gridnity-fade-in 400ms ease 760ms both,
             gridnity-rail-draw 900ms var(--ease-decelerate) 760ms both;
}

.fonts-ready .navigator-item { animation: gridnity-fade-up-xs 420ms var(--ease-decelerate) backwards; }
.fonts-ready .navigator-item:nth-child(1) { animation-delay: 900ms; }
.fonts-ready .navigator-item:nth-child(2) { animation-delay: 960ms; }
.fonts-ready .navigator-item:nth-child(3) { animation-delay: 1020ms; }
.fonts-ready .navigator-item:nth-child(4) { animation-delay: 1080ms; }

.fonts-ready .scroll-indicator {
  animation: gridnity-fade-in 600ms ease 1500ms both,
             gridnity-scroll-pulse 2600ms ease-in-out 2100ms infinite;
}

.js .platform-hero__eyebrow,
.js .platform-hero__title,
.js .platform-hero__intro,
.js .platform-rail {
  opacity: 0;
}

.fonts-ready .platform-hero__eyebrow {
  animation: gridnity-fade-in-left 500ms var(--ease-decelerate) 100ms both;
}

.fonts-ready .platform-hero__title {
  animation: gridnity-wipe-up var(--duration-cine) var(--ease-decelerate) 200ms both;
}

.fonts-ready .platform-hero__intro {
  animation: gridnity-fade-up-sm 600ms var(--ease-decelerate) 380ms both;
}

.fonts-ready .platform-rail {
  animation: gridnity-fade-up 700ms var(--ease-decelerate) 640ms both;
}

.fonts-ready .platform-rail__item {
  animation: gridnity-fade-up-xs 420ms var(--ease-decelerate) backwards;
}
.fonts-ready .platform-rail__item:nth-child(1) { animation-delay: 760ms; }
.fonts-ready .platform-rail__item:nth-child(2) { animation-delay: 820ms; }
.fonts-ready .platform-rail__item:nth-child(3) { animation-delay: 880ms; }
.fonts-ready .platform-rail__item:nth-child(4) { animation-delay: 940ms; }

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .js .reveal {
    opacity: 1;
    transform: none;
  }

  .js .reveal-mask {
    clip-path: none;
    transform: none;
  }

  .hero__image.is-active { animation: none; transform: scale(1); }

  .hero { --hero-overhang: 0px; }
  .hero__images { transform: none; }
  .hero__curtain,
  .platform-hero__curtain { display: none; }
}
