.js .reveal { opacity: 0; transform: translateY(var(--reveal-distance)); transition: opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out); }
.js .reveal.is-visible { opacity: 1; transform: translateY(0); }
.js .reveal:nth-child(2) { transition-delay: var(--delay-reveal-step); }
.js .reveal:nth-child(3) { transition-delay: calc(var(--delay-reveal-step) * 2); }
.js .reveal:nth-child(4) { transition-delay: calc(var(--delay-reveal-step) * 3); }
.mobile-action, .capability-body { transition: padding var(--duration-fast), opacity var(--duration-fast), border-color var(--duration-fast); }
.capability-body:not([hidden]) { animation: body-in var(--duration-base) var(--ease-out); }
@keyframes body-in { from { opacity: 0; transform: translateY(calc(var(--space-2) * var(--direction-reverse))); } }
.button::after { transition: transform var(--duration-fast) var(--ease-out); }
.button:hover::after, .button:focus-visible::after { transform: translateX(var(--space-1)); }
.role-panel.is-switching { animation: body-in var(--duration-base) var(--ease-out); }
.casefile-preview.is-switching { animation: body-in var(--duration-base) var(--ease-out); }
@media (prefers-reduced-motion: no-preference) { .capture-card { animation: float-card var(--motion-float) var(--ease-out) infinite alternate; } @keyframes float-card { from { transform: translateY(0); } to { transform: translateY(calc(var(--space-3) * -1)); } } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: var(--motion-minimal) !important; animation-iteration-count: var(--motion-once) !important; transition-duration: var(--motion-minimal) !important; }
  .js .reveal { opacity: 1; transform: none; }
}
.reveal.is-visible .billing-flow span, .section-intro.is-visible .billing-flow span { animation: chip-in var(--duration-slow) var(--ease-out) both; }
.billing-flow span:nth-of-type(2) { animation-delay: var(--delay-billing-step); }
.billing-flow span:nth-of-type(3) { animation-delay: calc(var(--delay-billing-step) * 2); }
.billing-flow span:nth-of-type(4) { animation-delay: calc(var(--delay-billing-step) * 3); }
.billing-flow span:nth-of-type(5) { animation-delay: calc(var(--delay-billing-step) * 4); }
@keyframes chip-in { from { opacity: 0; transform: translateY(var(--space-2)); border-color: var(--color-signal); } }
.faq-list .capability button > span { transition: transform var(--duration-fast) var(--ease-out), color var(--duration-fast); }
.faq-list .capability button[aria-expanded="true"] > span { transform: rotate(var(--expanded-angle)); color: var(--color-signal); }
.benefit-rail p, .work-ledger p, .proof-points p, .contact-outcomes p { transition: border-color var(--duration-base) var(--ease-out); }
.benefit-rail p:hover, .work-ledger p:hover, .proof-points p:hover, .contact-outcomes p:hover { border-top-color: var(--color-signal); }
@supports (animation-timeline: view()) {
  .process-list::after { content: ""; position: absolute; inset: 0 auto 0 var(--space-5); width: var(--border-thin); background: var(--color-signal); transform: scaleY(0); transform-origin: top; animation: process-fill linear both; animation-timeline: view(); animation-range: entry 30% exit 70%; }
  @keyframes process-fill { to { transform: scaleY(1); } }
}
