/* Motion layer — GSAP/ScrollTrigger. Does not replace theme identity. */

html.js-motion,
html.js-motion body {
  overflow-x: clip;
}
html.js-motion .section,
html.js-motion .hero,
html.js-motion .hero-band,
html.js-motion .site-footer,
html.js-motion .page-hero {
  overflow-x: clip;
}

html.js-motion .reveal {
  animation: none;
}

html.js-motion .hero-kicker,
html.js-motion .hero-title,
html.js-motion .hero-lead,
html.js-motion .hero-actions,
html.js-motion .hero-photo img {
  animation: none;
}

html.js-motion:not(.motion-ready) .site-header .brand,
html.js-motion:not(.motion-ready) .nav-desktop,
html.js-motion:not(.motion-ready) .menu-toggle,
html.js-motion:not(.motion-ready) .hero-kicker,
html.js-motion:not(.motion-ready) .hero-title,
html.js-motion:not(.motion-ready) .hero-lead,
html.js-motion:not(.motion-ready) .hero-actions,
html.js-motion:not(.motion-ready) .hero-band,
html.js-motion:not(.motion-ready) .page-hero .eyebrow,
html.js-motion:not(.motion-ready) .page-hero h1,
html.js-motion:not(.motion-ready) .page-hero .lead,
html.js-motion:not(.motion-ready) .reveal,
html.js-motion:not(.motion-ready) .values-row article,
html.js-motion:not(.motion-ready) .person-card,
html.js-motion:not(.motion-ready) .editorial-card,
html.js-motion:not(.motion-ready) .practice-list li,
html.js-motion:not(.motion-ready) .practice-mobile .accordion,
html.js-motion:not(.motion-ready) .timeline li,
html.js-motion:not(.motion-ready) .segment-list article,
html.js-motion:not(.motion-ready) .area-card,
html.js-motion:not(.motion-ready) .cta-inner,
html.js-motion:not(.motion-ready) .footer-grid > * {
  opacity: 0;
}

html.js-motion:not(.motion-ready) .hero-photo {
  clip-path: inset(0 0 100% 0);
}

.line-mask {
  display: block;
  overflow: hidden;
}

.line-mask .line {
  display: block;
  padding-bottom: 0.06em;
}

.word {
  display: inline-block;
  white-space: nowrap;
}

.motion-shift {
  display: block;
  width: 100%;
  height: 100%;
}

.motion-line {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: rgba(37, 37, 31, 0.14);
  transform: scaleX(0);
  transform-origin: left;
  pointer-events: none;
}

html.js-motion .practice-list button {
  position: relative;
  border-bottom-color: transparent;
}

.motion-axis {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 132px;
  width: 1px;
  background: rgba(37, 37, 31, 0.12);
  transform: scaleY(0);
  transform-origin: top;
  pointer-events: none;
}

@media (max-width: 1024px) {
  .motion-axis { left: 0; }
}

html.js-motion .image-frame:hover img {
  transform: none;
}

html.js-motion .person-card .image-frame,
html.js-motion .area-card-media {
  overflow: hidden;
}

@media (hover: hover) and (pointer: fine) {
  html.js-motion .person-card .image-frame img,
  html.js-motion .area-card-media img {
    transition: transform 480ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .person-card .image-frame:hover img,
  html.js-motion .area-card-media:hover img {
    transform: scale(1.025);
  }

  html.js-motion .practice-list button .num + span {
    transition: transform 350ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .practice-list button:hover .num + span {
    transform: translateX(5px);
  }

  html.js-motion .segment-list article,
  html.js-motion .editorial-card,
  html.js-motion .area-card {
    transition: transform 360ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .segment-list article:hover,
  html.js-motion .editorial-card:hover,
  html.js-motion .area-card:hover {
    transform: translateY(-4px);
  }

  html.js-motion .editorial-card {
    position: relative;
  }

  html.js-motion .editorial-card h3 {
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .editorial-card:hover h3 {
    transform: translateX(6px);
  }

  html.js-motion .editorial-card .text-link::after {
    content: "→";
    display: inline-block;
    margin-left: 8px;
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .editorial-card:hover .text-link::after {
    transform: translateX(4px);
  }

  html.js-motion .editorial-card::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -8px;
    height: 1px;
    background: currentColor;
    opacity: 0.18;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 360ms cubic-bezier(0.22, 1, 0.36, 1);
    pointer-events: none;
  }

  html.js-motion .editorial-card:hover::after {
    transform: scaleX(1);
  }

  html.js-motion .btn-outline,
  html.js-motion .btn-light {
    position: relative;
    overflow: hidden;
    z-index: 0;
  }

  html.js-motion .btn-outline::before,
  html.js-motion .btn-light::before {
    content: "";
    position: absolute;
    inset: 0;
    background: currentColor;
    opacity: 0.08;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 380ms cubic-bezier(0.22, 1, 0.36, 1);
    z-index: -1;
    pointer-events: none;
  }

  html.js-motion .btn-outline:hover::before,
  html.js-motion .btn-light:hover::before {
    transform: scaleX(1);
  }

  html.js-motion .btn-hero .btn-arrow,
  html.js-motion .btn .btn-arrow {
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  html.js-motion .btn:hover .btn-arrow {
    transform: translateX(4px);
  }
}

body.is-home .site-header {
  background: rgba(236, 226, 210, 0.78);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: background 400ms ease, border-color 400ms ease, backdrop-filter 400ms ease;
}

body.is-home .site-header.is-scrolled,
body.is-home .site-header.header-scrolled {
  background: rgba(236, 226, 210, 0.96);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

@media (prefers-reduced-motion: reduce) {
  html.js-motion:not(.motion-ready) .site-header .brand,
  html.js-motion:not(.motion-ready) .nav-desktop,
  html.js-motion:not(.motion-ready) .menu-toggle,
  html.js-motion:not(.motion-ready) .hero-kicker,
  html.js-motion:not(.motion-ready) .hero-title,
  html.js-motion:not(.motion-ready) .hero-lead,
  html.js-motion:not(.motion-ready) .hero-actions,
  html.js-motion:not(.motion-ready) .hero-band,
  html.js-motion:not(.motion-ready) .page-hero .eyebrow,
  html.js-motion:not(.motion-ready) .page-hero h1,
  html.js-motion:not(.motion-ready) .page-hero .lead,
  html.js-motion:not(.motion-ready) .reveal,
  html.js-motion:not(.motion-ready) .values-row article,
  html.js-motion:not(.motion-ready) .person-card,
  html.js-motion:not(.motion-ready) .editorial-card,
  html.js-motion:not(.motion-ready) .practice-list li,
  html.js-motion:not(.motion-ready) .practice-mobile .accordion,
  html.js-motion:not(.motion-ready) .timeline li,
  html.js-motion:not(.motion-ready) .segment-list article,
  html.js-motion:not(.motion-ready) .area-card,
  html.js-motion:not(.motion-ready) .cta-inner,
  html.js-motion:not(.motion-ready) .footer-grid > *,
  html.js-motion:not(.motion-ready) .hero-photo {
    opacity: 1;
    clip-path: none;
    transform: none;
  }
}
