/* An engineered rhythm: a 900 ms brand signature, 460–700 ms entrances,
   and 140–220 ms feedback. No loops, scroll hijacking or global hidden states. */
:root {
  --motion-out: cubic-bezier(.22, 1, .36, 1);
  --motion-change: cubic-bezier(.77, 0, .175, 1);
}
.shift-symbol { width: 48px; height: 48px; flex: 0 0 auto; }
.hero > .wrap > .eyebrow { gap: 4px; margin-inline-start: -12px; }
.about-symbol.shift-symbol { width: 100px; height: 100px; }
.shift-left, .shift-right { transform-box: fill-box; transform-origin: center; }
.hero-figure figcaption { position: relative; }
.shift-track {
  position: absolute;
  inset-inline: 0;
  top: 0;
  height: 2px;
  background: var(--lime);
  transform-origin: left center;
  pointer-events: none;
}
[dir=rtl] .shift-track { transform-origin: right center; }
.button, .plain-button, .menu-toggle {
  transition: transform 160ms var(--motion-out), background-color 160ms ease, color 160ms ease;
}
.button:hover, .service-card:hover .card-top > span:last-child { transform: none; }
.text-link > span, .button > span, .capability-index a > span:last-child {
  transition: transform 200ms var(--motion-out);
}
.desktop-nav a { position: relative; padding-block: 8px; }
.desktop-nav a::after {
  content: '';
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  height: 1px;
  background: var(--lime);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 200ms var(--motion-out);
}
[dir=rtl] .desktop-nav a::after { transform-origin: left; }
.desktop-nav a[aria-current=page]::after { transform: scaleX(1); }
.service-card { position: relative; }
.service-card::before {
  content: '';
  position: absolute;
  top: 0;
  inset-inline-start: -1px;
  height: 100%;
  width: 2px;
  background: var(--lime);
  transform: scaleY(0);
  transform-origin: center top;
  transition: transform 220ms var(--motion-out);
}
.service-card:focus-visible::before { transform: scaleY(1); }
.process-overview .phase-line { transform-origin: left; transition: transform 220ms var(--motion-out), background-color 160ms ease; }
[dir=rtl] .process-overview .phase-line { transform-origin: right; }
.mobile-nav { transform-origin: top right; }
[dir=rtl] .mobile-nav { transform-origin: top left; }
.step .expand, .faq-list .expand { transition: transform 180ms var(--motion-out); }

@media (hover:hover) and (pointer:fine) {
  .button:hover { transform: translateY(-2px); }
  .button:hover > span, .text-link:hover > span, .capability-index a:hover > span:last-child,
  .service-card:hover .card-top > span:last-child { transform: translate(3px, -3px); }
  .desktop-nav a:hover::after { transform: scaleX(1); transform-origin: left; }
  [dir=rtl] .desktop-nav a:hover::after { transform-origin: right; }
  .service-card:hover::before { transform: scaleY(1); }
  .process-overview a:hover .phase-line { transform: scaleX(.88); }
}
@media (prefers-reduced-motion:no-preference) {
  .button:active, .plain-button:active, .menu-toggle:active { transform: scale(.97); transition-duration: 100ms; }
}
/* Keyboard interactions settle immediately, including pseudo-element feedback. */
[data-motion-input=keyboard] { scroll-behavior: auto; }
[data-motion-input=keyboard] *, [data-motion-input=keyboard] *::before, [data-motion-input=keyboard] *::after {
  animation: none !important;
  transition: none !important;
}
[data-motion-input=keyboard] .button:active, [data-motion-input=keyboard] .menu-toggle:active,
[data-motion-input=keyboard] .plain-button:active { transform: none; }
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .button, .plain-button, .menu-toggle, .text-link, .desktop-nav a {
    transition: color 120ms ease, background-color 120ms ease !important;
  }
  .button:hover, .button:active, .plain-button:active, .menu-toggle:active,
  .button:hover > span, .text-link:hover > span, .capability-index a:hover > span:last-child,
  .service-card:hover .card-top > span:last-child, .process-overview a:hover .phase-line { transform: none; }
}
[data-motion-input=keyboard] :is(.button, .plain-button, .menu-toggle, .text-link, .desktop-nav a) {
  transition: none !important;
}
