@keyframes page-arrival {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes hero-title-reveal {
  from {
    opacity: 0;
    transform: translateY(2.2rem);
    clip-path: inset(0 0 100% 0);
  }
  to {
    opacity: 1;
    transform: translateY(0);
    clip-path: inset(-.08em -.04em -.22em);
  }
}

@keyframes hero-detail-reveal {
  from {
    opacity: 0;
    transform: translateY(1rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: no-preference) {
  body {
    animation: page-arrival .35s ease-out both;
  }

  main,
  .site-footer {
    transition: opacity .18s ease, transform .18s cubic-bezier(.2, .7, .2, 1);
  }

  body.is-language-switching main,
  body.is-language-switching .site-footer {
    opacity: 0;
    transform: translateY(.7rem);
  }

  .site-header {
    animation: hero-detail-reveal .55s cubic-bezier(.2, .7, .2, 1) .05s both;
  }

  .intro h1 {
    animation: hero-title-reveal 1s cubic-bezier(.16, 1, .3, 1) .18s both;
  }

  .intro-copy {
    animation: hero-detail-reveal .65s cubic-bezier(.2, .7, .2, 1) .52s both;
  }

  .intro-footer {
    animation: hero-detail-reveal .65s cubic-bezier(.2, .7, .2, 1) .7s both;
  }

  .contact-grid .contact-title-reveal {
    opacity: 0;
    transform: translateY(2.2rem);
    clip-path: inset(0 0 100% 0);
  }

  .contact-grid.is-visible .contact-title-reveal {
    animation: hero-title-reveal 1s cubic-bezier(.16, 1, .3, 1) .16s both;
  }
}
