/* Motion personality: premium, measured and research-led. */
.hero-art {
  transform: translate3d(calc(var(--pointer-x, 0) * -9px), calc(var(--pointer-y, 0) * -7px), 0) scale(1.025);
  transition: transform 1.4s cubic-bezier(.4, 0, .2, 1);
}
.button { transition: transform 160ms cubic-bezier(.2, 0, 0, 1), background-color 200ms ease, box-shadow 200ms ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 11px 25px rgba(0, 51, 145, .26); }
.button:active { transform: translateY(0) scale(.98); box-shadow: none; }
.direction-card { transition: transform 350ms cubic-bezier(.4, 0, .2, 1), box-shadow 350ms cubic-bezier(.4, 0, .2, 1); }
.direction-card:hover { transform: translateY(-6px); box-shadow: 0 24px 42px rgba(19, 37, 76, .18); }
.direction-card::after { transition: transform 700ms cubic-bezier(.4, 0, .2, 1); }
.direction-card:hover::after { transform: rotate(52deg) scale(1.08); }
.material-row { transition: padding 250ms cubic-bezier(.2, 0, 0, 1), color 200ms ease; }
.material-row:hover { padding-left: 12px; color: var(--blue); }

/* Visible by default, even if JavaScript or the observer is unavailable. */
.reveal { animation: none; }
.motion-enter { transition: opacity 600ms ease, transform 600ms cubic-bezier(.05, .7, .1, 1); }
.motion-enter.motion-pending { opacity: 0; transform: translateY(24px); }
.motion-enter:not(.motion-pending):hover { transition-delay: 0ms; }

@media (prefers-reduced-motion: no-preference) {
  .hero-art { animation: brain-breathe 18s ease-in-out infinite; }
  .hero-content { animation: hero-intro 950ms cubic-bezier(.05,.7,.1,1) both; }
  @keyframes hero-intro { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
  .project-diagram .stream-line {
    background: linear-gradient(#538bea 0 50%, transparent 50% 100%);
    background-size: 1px 10px;
    animation: data-travel 1.5s linear infinite;
  }
  @keyframes brain-breathe {
    50% { transform: translate3d(calc(var(--pointer-x, 0) * -9px), calc(var(--pointer-y, 0) * -7px - 4px), 0) scale(1.045); }
  }
  @keyframes data-travel { to { background-position-y: 10px; } }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero-art, .button, .direction-card, .direction-card::after, .material-row { transition: none; }
  .reveal, .reveal-stagger .direction-card, .motion-enter.motion-pending { opacity: 1; transform: none; animation: none; transition: none; }
  .hero-art, .hero-content, .project-diagram .stream-line { animation: none; }
  .button:hover, .button:active, .direction-card:hover { transform: none; }
  .direction-card:hover::after { transform: rotate(22deg); }
}
