:root { --ease-settle: cubic-bezier(.22, 1, .36, 1); }
.site-header { transition: box-shadow 300ms ease; }
.site-header.is-scrolled { box-shadow: 0 5px 22px rgba(25, 34, 29, .06); }
.nav-links a, .text-link { position: relative; transition: color 220ms ease, border-color 220ms ease; }
.nav-links a::after, .text-link::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -1px;
  height: 1px; background: var(--gold); transform: scaleX(0); transform-origin: right;
  transition: transform 360ms var(--ease-settle);
}
.nav-links a:hover { border-bottom-color: transparent; }
.nav-links a[aria-current="location"] { color: var(--gold); }
.nav-links a:hover::after, .nav-links a:focus-visible::after,
.nav-links a[aria-current="location"]::after, .text-link:hover::after, .text-link:focus-visible::after {
  transform: scaleX(1); transform-origin: left;
}
.text-link { border-bottom-color: #c3b592; }
.international .text-link, .contact .text-link { border-bottom-color: #8c804e; }
.international .text-link::after, .contact .text-link::after { background: var(--gold-light); }
.international .text-link:hover, .contact .text-link:hover { color: var(--gold-light); }
.text-link span[aria-hidden], .button span[aria-hidden], .nav-contact span {
  transition: transform 360ms var(--ease-settle);
}
.button { position: relative; isolation: isolate; overflow: hidden; transition: color 250ms ease, transform 180ms ease; }
.button::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: var(--gold-light); transform: scaleX(0); transform-origin: right;
  transition: transform 420ms var(--ease-settle);
}
.button-light:hover { background: #fff; }
.button:hover::before, .button:focus-visible::before { transform: scaleX(1); transform-origin: left; }
.button:active { transform: translateY(1px); }
.button:hover span[aria-hidden], .button:focus-visible span[aria-hidden],
.text-link:hover span[aria-hidden], .text-link:focus-visible span[aria-hidden],
.nav-contact:hover span { transform: translate(3px, -3px); }
.hero-image { scale: 1.045; translate: 0 var(--hero-shift, 0px); }
.hero-caption a span { transition: transform 300ms var(--ease-settle); }
.hero-caption a:hover span { transform: translateY(4px); }
.practice { transition: border-color 240ms ease; }
.practice:hover, .practice:focus-within { border-top-color: var(--gold); }
.practice summary h3 { transition: color 240ms ease; }
.expand::after { transition: transform 280ms var(--ease-settle); }
.practice[data-expanded="false"] .expand::after { transform: rotate(90deg); }
.portrait-frame { overflow: hidden; aspect-ratio: 4 / 5; background: var(--soft); }
.portrait-frame img {
  width: 100%; height: 100%; object-fit: cover; object-position: center top;
  transition: transform 900ms var(--ease-settle);
}
input, textarea, select { transition: border-color 220ms ease, background-color 220ms ease; }
input:focus, textarea:focus, select:focus { border-color: var(--gold-light); background-color: #303430; }
@media (hover: hover) and (pointer: fine) {
  .profile:hover .portrait-frame img, .profile:focus-within .portrait-frame img { transform: scale(1.025); }
}
@media (max-width: 800px) {
  .hero-image { translate: none; }
  .menu-open .nav-links { animation: menu-enter 240ms var(--ease-settle); }
  .nav-links a:hover { border-bottom-color: var(--line); }
}
@media (max-width: 560px) { .portrait-frame { aspect-ratio: 4 / 4.6; } }
@keyframes menu-enter {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .hero-image { scale: 1; translate: none; }
  .profile .portrait-frame img { transform: none !important; }
  .button, .text-link span[aria-hidden], .button span[aria-hidden], .nav-contact span, .hero-caption a span { transform: none !important; }
}
