.reveal {
  opacity: 0;
  transform: translate3d(0, 28px, 0);
  transition: opacity var(--motion-reveal) var(--ease-reveal),
              transform var(--motion-reveal) var(--ease-reveal);
  transition-delay: var(--reveal-delay, 0ms);
}
.reveal.is-visible { opacity: 1; transform: translate3d(0, 0, 0); }
.reveal--left { transform: translate3d(-28px, 0, 0); }
.reveal--right { transform: translate3d(28px, 0, 0); }
.reveal--left.is-visible,
.reveal--right.is-visible { transform: translate3d(0, 0, 0); }

.card--frame {
  position: relative;
  overflow: hidden;
}
.card--frame::before,
.card--frame::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  border: 2px solid var(--color-accent);
  opacity: 0;
  transition: opacity var(--duration-ui) var(--ease-out),
              transform var(--duration-ui) var(--ease-out);
}
.card--frame::before {
  top: 10px; left: 10px;
  border-right: 0; border-bottom: 0;
  transform: translate3d(-6px, -6px, 0);
}
.card--frame::after {
  right: 10px; bottom: 10px;
  border-left: 0; border-top: 0;
  transform: translate3d(6px, 6px, 0);
}
@media (hover: hover) and (pointer: fine) {
  .card--frame:hover::before,
  .card--frame:hover::after {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

.partners-marquee {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.partners-marquee__track {
  display: flex;
  align-items: center;
  gap: 2.75rem;
  width: max-content;
  will-change: transform;
}
.partners-marquee[data-partners-ready="true"] .partners-marquee__track {
  animation: partners-loop var(--partners-duration, 32s) linear infinite;
}
@media (max-width: 1023px) {
  .partners-marquee__track { gap: 2rem; }
}
@media (max-width: 767px) {
  .partners-marquee__track { gap: 1.5rem; }
}
@media (hover: hover) and (pointer: fine) {
  .partners-marquee:hover .partners-marquee__track {
    animation-play-state: paused;
  }
}
@keyframes partners-loop {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(-50%, 0, 0); }
}

/* Один offset: html без scroll-padding-top, інакше з margin сумуються і якір не докручує */
#career,
#routes,
#services,
#faq {
  scroll-margin-top: calc(var(--header-h) + var(--safe-top, 0px) + 16px);
}
#lead-form {
  scroll-margin-top: calc(var(--header-h) + var(--safe-top, 0px) + 16px - 50px);
}

.hero__title.reveal { --reveal-delay: 70ms; }
.hero__lead.reveal { --reveal-delay: 140ms; }
.hero__actions.reveal { --reveal-delay: 210ms; }
.hero__fact.reveal { --reveal-delay: 280ms; }

@media (max-width: 767px) {
  .reveal { --motion-reveal: 420ms; }
  .reveal--left { transform: translate3d(-12px, 0, 0); }
  .reveal--right { transform: translate3d(12px, 0, 0); }
  .page-header .reveal,
  .page-intro .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal--left,
  .reveal--right {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .partners-marquee__track,
  .partners-marquee[data-partners-ready="true"] .partners-marquee__track {
    animation: none;
  }
  .card--frame::before,
  .card--frame::after { display: none; }
}
