/* animations.css — reveal, marquee, transitions */

@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* word-by-word stagger reveal */
.word-wrap { display: inline-block; overflow: hidden; vertical-align: bottom; }
.word {
  display: inline-block;
  transform: translateY(110%);
  opacity: 0;
  transition: transform .85s var(--ease), opacity .5s ease;
}
.vis .word { transform: translateY(0); opacity: 1; }
[data-word-reveal] { opacity: 1; } /* defensive: readable even if JS fails */

/* generic scroll reveal */
.rev {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s var(--ease), transform .8s var(--ease);
}
.rev.vis { opacity: 1; transform: translateY(0); }
.rev[data-split] { opacity: 1; transform: none; }

.rev-stagger.vis .rev-child:nth-child(1) { transition-delay: 0ms; }
.rev-stagger.vis .rev-child:nth-child(2) { transition-delay: 90ms; }
.rev-stagger.vis .rev-child:nth-child(3) { transition-delay: 180ms; }
.rev-stagger.vis .rev-child:nth-child(4) { transition-delay: 270ms; }

/* region splash fade out */
.region-splash {
  transition: opacity 0.5s ease, visibility 0.5s ease;
}
.region-splash.is-leaving { opacity: 0; pointer-events: none; }

/* magnetic buttons handled via inline transform in JS; keep smooth return */
[data-magnetic] { will-change: transform; }

/* service detail panel entrance */
@keyframes detailIn {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.service-detail:not([hidden]) .service-detail-inner {
  animation: detailIn 0.5s var(--ease);
}
