/* Motion adds to the approved grid; no dimensions or text measures change. */
:root { --motion-ease: cubic-bezier(.22,1,.36,1); }
.motion-pending { opacity: 0; }
.scroll-layer { translate: 0 var(--scroll-offset, 0px); }
.image-link { isolation: isolate; }
.image-link img {
  transform: translateY(var(--image-offset, 0px)) scale(1.075);
  transition: transform 1.1s var(--motion-ease);
}
.image-link:hover img { transform: translateY(var(--image-offset, 0px)) scale(1.115); }
.scroll-image img { transition: scale 1s var(--motion-ease); transform: none; translate: 0 var(--image-offset, 0px); scale: 1.075; }
.scroll-image:hover img { transform: none; scale: 1.115; }
.eyebrow { position: relative; border-bottom-color: transparent; }
.eyebrow::after { content: ''; position: absolute; bottom: -1px; left: 0; right: 0; height: 1px; background: var(--line); transform: scaleX(1); transform-origin: left; }
.eyebrow.motion-pending::after { transform: scaleX(0); }
.eyebrow.is-revealed::after { transition: transform 1.2s var(--motion-ease); }
.footer .eyebrow::after { display: none; }
.service-list > button { position: relative; isolation: isolate; }
.service-list > button::after { content: ''; position: absolute; inset: 0 -12px; background: #17664708; z-index: -1; transform: scaleY(0); transform-origin: bottom; transition: transform .45s var(--motion-ease); }
.service-list > button:hover::after, .service-list > button:focus-visible::after { transform: scaleY(1); }
.service-list > button > span:first-child { transition: transform .5s var(--motion-ease); }
.service-list > button:hover > span:first-child { transform: translateX(8px); }
.text-link { position: relative; }
.text-link::after { content: ''; position: absolute; height: 1px; bottom: 4px; left: 0; right: 0; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .5s var(--motion-ease); }
.text-link:hover::after, .text-link:focus-visible::after { transform: scaleX(1); transform-origin: left; }
.arrow { transition: transform .5s var(--motion-ease); }
.contact-button { transition: background .4s, color .4s, box-shadow .4s; }
.contact-button:hover { background: #dce9df; box-shadow: inset 0 0 0 1px #b8ccbf; }
.contact-button.green:hover { background: #11291e; }
dialog[open] { animation: panel-enter .45s var(--motion-ease) both; }
dialog[open]::backdrop { animation: backdrop-enter .35s ease both; }
#more-links:not([hidden]), nav.is-open { animation: menu-enter .35s var(--motion-ease) both; }
@keyframes panel-enter { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes backdrop-enter { from { opacity: 0; } to { opacity: 1; } }
@keyframes menu-enter { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@media (max-width:760px) { .scroll-layer { translate: none; } }
@media (prefers-reduced-motion: reduce) {
  .motion-pending { opacity: 1; }
  .scroll-layer, .scroll-image img { translate: none !important; }
  .image-link img, .image-link:hover img, .scroll-image img, .scroll-image:hover img { transform: none; scale: 1; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media print { .motion-pending { opacity: 1; } .scroll-layer { translate: none; } }
