:root {
  --motion-ease: cubic-bezier(.22, .65, .3, 1);
  --motion-quick: 260ms;
}

.site-header {
  position: fixed;
  transition: background 320ms ease, color 320ms ease, padding 360ms var(--motion-ease);
}

.hero-intro .hero-image {
  transform-origin: 56% 52%;
  animation: settle-image 4200ms cubic-bezier(.2, .5, .3, 1) both;
}
.hero-intro .hero-eyebrow { animation: reveal-copy 700ms var(--motion-ease) 80ms both; }
.hero-intro h1 { animation: reveal-copy 950ms var(--motion-ease) 180ms both; }
.hero-intro .hero-sub { animation: reveal-copy 850ms var(--motion-ease) 350ms both; }

@keyframes settle-image {
  from { transform: scale(1.035); }
  to { transform: scale(1); }
}
@keyframes reveal-copy {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal-pending {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 600ms ease, transform 760ms var(--motion-ease);
}
.reveal-pending.reveal-visible,
.reveal-pending:focus-within { opacity: 1; transform: none; }

:is(.text-link, .outline-link, .contact-web, .contact-phone, .nav-contact, .quick-links a, .back-top, .mobile-contact a) span[aria-hidden="true"],
.property-list .link-arrow {
  display: inline-block;
  transition: transform var(--motion-quick) var(--motion-ease);
}
.desktop-nav a::after {
  width: 100%;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--motion-quick) var(--motion-ease);
}
.desktop-nav a:focus-visible::after { transform: scaleX(1); }
.property-list > a { transition: background var(--motion-quick) ease; }
.property-list > a:hover { padding-left: 17px; }
.property-list > a.reveal-pending {
  transition: background var(--motion-quick) ease, opacity 600ms ease, transform 760ms var(--motion-ease);
}
.outline-link { transition: background var(--motion-quick) ease, border-color var(--motion-quick) ease; }
.contact-web { transition: border-color var(--motion-quick) ease; }
.contact-web:hover > span:first-child { text-decoration: none; }
.menu-toggle span { transition: transform var(--motion-quick) var(--motion-ease); }

@media (hover: hover) and (pointer: fine) {
  .desktop-nav a:hover::after { transform: scaleX(1); }
  :is(.text-link, .outline-link, .contact-web, .contact-phone, .nav-contact, .mobile-contact a):hover span[aria-hidden="true"],
  .property-list > a:hover .link-arrow { transform: translate(3px, -3px); }
  .quick-links a:hover span[aria-hidden="true"] { transform: translateY(3px); }
  .back-top:hover span[aria-hidden="true"] { transform: translateY(-3px); }
  .outline-link:hover,
  .contact-web:hover { border-color: var(--ink); }
}
@media (hover: none) {
  .text-link:hover span { transform: none; }
}
:is(.text-link, .outline-link, .contact-web, .contact-phone, .nav-contact, .mobile-contact a):focus-visible span[aria-hidden="true"],
.property-list > a:focus-visible .link-arrow { transform: translate(3px, -3px); }

@media (max-width: 800px) {
  .property-list > a:hover { padding-left: 0; }
  .mobile-nav {
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity 220ms ease, transform 240ms var(--motion-ease);
  }
  .mobile-nav.menu-visible { opacity: 1; transform: none; }
  .mobile-nav > a {
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 200ms ease, transform 260ms var(--motion-ease);
  }
  .mobile-nav.menu-visible > a { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .hero-image, .hero-copy > *, .reveal-pending, .mobile-nav, .mobile-nav > a {
    opacity: 1 !important;
    transform: none !important;
  }
  :is(.text-link, .outline-link, .contact-web, .contact-phone, .nav-contact, .quick-links a, .back-top, .mobile-contact a) span[aria-hidden="true"],
  .property-list .link-arrow { transform: none !important; }
}
@media print {
  .hero-image, .hero-copy > *, .reveal-pending {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}
