/* A restrained shared motion rhythm; no perpetual animation or scroll hijacking. */
:root { --ease-soft: cubic-bezier(.16, 1, .3, 1); }
.button, .menu {
  transition: background-color 200ms ease, color 200ms ease,
    transform 240ms var(--ease-soft), box-shadow 240ms ease;
}
.button span, .services a span, .text-link span {
  display: inline-block;
  transition: transform 260ms var(--ease-soft);
}
nav > a:not(.button) { position: relative; transition: color 180ms ease; }
nav > a:not(.button)::after {
  content: ''; position: absolute; left: 0; bottom: -5px;
  width: 100%; height: 2px; background: var(--blue);
  transform: scaleX(0); transform-origin: left;
  transition: transform 260ms var(--ease-soft);
}
input, select, textarea {
  transition: border-color 180ms ease, box-shadow 180ms ease;
}
input:focus, select:focus, textarea:focus {
  border-color: var(--blue); box-shadow: 0 2px 9px #0865dc14;
}
.button:active { transform: translateY(0) scale(.985); }
@media (hover: hover) and (pointer: fine) {
  .button:hover { transform: translateY(-2px); box-shadow: 0 7px 16px #09274c1a; }
  .button:hover span, .services a:hover span, .text-link:hover span { transform: translate(3px, -2px); }
  nav > a:not(.button):hover::after { transform: scaleX(1); }
}
nav > a:not(.button):focus-visible::after { transform: scaleX(1); }
@media (max-width: 760px) {
  nav, nav.open { display: flex; flex-direction: column; }
  nav {
    opacity: 0; visibility: hidden; pointer-events: none;
    transform: translateY(-10px);
    transition: opacity 180ms ease, transform 260ms var(--ease-soft), visibility 0s 260ms;
  }
  nav.open {
    opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(0);
    transition: opacity 180ms ease, transform 260ms var(--ease-soft), visibility 0s;
  }
  /* Hide focus targets immediately when closing, while the panel fades. */
  nav:not(.open) > a { visibility: hidden; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .button:hover, .button:active, .button span, .services a span, .text-link span { transform: none; }
}
