/* Public-site motion: no dependency on JavaScript for visible content or navigation. */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }

  ::view-transition-old(root) { animation: page-out 160ms ease-out both; }
  ::view-transition-new(root) { animation: page-in 260ms ease-out both; }
  html { scroll-behavior: smooth; }

  .public-site .hero-copy,
  .public-site .page-hero > .container { animation: content-enter 550ms cubic-bezier(.2,.7,.2,1) both; }
  .public-site .connection-art { animation: content-enter 650ms 80ms cubic-bezier(.2,.7,.2,1) both; }
  /* A short welcoming movement, then the illustration settles. */
  .public-site .art-node { animation: node-float 2s 300ms ease-in-out 2; }
  .public-site .node-b, .public-site .node-d { animation-delay: 500ms; }

  .public-site .reveal-item {
    transition: opacity 550ms ease, translate 550ms cubic-bezier(.2,.7,.2,1), background-color 180ms ease;
  }
  .public-site .reveal-pending { opacity: 0; translate: 0 18px; }
  .public-site .reveal-pending:focus-within { opacity: 1; translate: none; }
  .public-site .image-loaded { animation: image-in 380ms ease-out; }
  .public-site .service-row.reveal-item:nth-child(3n+2) { transition-delay: 60ms; }
  .public-site .service-row.reveal-item:nth-child(3n+3) { transition-delay: 120ms; }
  .public-site .service-row { transition: translate 240ms ease, box-shadow 240ms ease, border-color 240ms ease; }
  .public-site .service-visual::before,.public-site .service-visual::after { transition: rotate 420ms cubic-bezier(.2,.7,.2,1); }

  .public-site .btn { transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease; }
  .public-site .btn:active { transform: translateY(1px); }
  .public-site .row-arrow,
  .public-site .service-icon,
  .public-site .text-link > span { transition: transform 220ms ease, background-color 220ms ease, color 220ms ease; }
  .public-site .service-row:focus-visible .row-arrow { background: var(--blue); color: white; }
  .public-site .main-nav a { transition: color 180ms ease; }
  .public-site .main-nav a[aria-current=page]::after { animation: underline-in 300ms ease-out; transform-origin: left; }
  [dir=rtl] .public-site .main-nav a[aria-current=page]::after { transform-origin: right; }
  .public-site .faq-item[open] > .rich-text { animation: content-enter 250ms ease-out; }

  @media (hover: hover) and (pointer: fine) {
    .public-site .service-row:hover { translate: 0 -5px; box-shadow: 0 18px 38px #1024410c; border-color: #2459f448; }
    .public-site .service-row:hover .service-visual::before { rotate: 32deg; }
    .public-site .service-row:hover .service-visual::after { rotate: -24deg; }
    .public-site .btn:hover { transform: translateY(-2px); box-shadow: 0 7px 18px #112b4a20; }
    .public-site .service-row:hover .service-icon { transform: translateY(-3px); }
    .public-site .service-row:hover .row-arrow { transform: rotate(45deg); background: var(--blue); color: white; }
    .public-site .text-link:hover > span { transform: translate(2px,-2px); }
  }
  @media (max-width: 900px) {
    .public-site .main-nav.is-open { animation: content-enter 220ms ease-out; }
  }
}

@keyframes content-enter { from { opacity: 0; translate: 0 14px; } to { opacity: 1; translate: none; } }
@keyframes page-out { to { opacity: 0; } }
@keyframes page-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes node-float { 0%,100% { translate: 0 0; } 50% { translate: 0 -7px; } }
@keyframes underline-in { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes image-in { from { opacity: .4; } to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  .public-site .reveal-pending { opacity: 1; translate: none; }
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}
@media print {
  .public-site .reveal-pending { opacity: 1; translate: none; }
  .public-site * { animation: none !important; transition: none !important; }
}
