/* One restrained motion layer; content is visible unless JS has safely initialized. */
:root{--motion-micro:240ms;--motion-reveal:500ms;--motion-ease:cubic-bezier(.2,.65,.3,1)}
.js-motion .reveal{transition:opacity var(--motion-reveal) var(--motion-ease),transform var(--motion-reveal) var(--motion-ease);transition-delay:var(--motion-delay,0ms)}
.js-motion .reveal:not(.revealed){opacity:0;transform:translateY(12px)}
.reveal-delay-1{--motion-delay:70ms}.reveal-delay-2{--motion-delay:140ms}
.js-motion .reveal:has(h2):not(.revealed){transform:translateY(16px)}
.js-motion .reveal.reveal-fade:not(.revealed){transform:none}
.js-motion .reveal:focus-within{opacity:1;transform:none;transition:none}
/* Hero video and H1 stay painted immediately; only supporting text gently settles. */
.js-motion .fullscreen-hero .hero-slogan{animation:motion-settle 400ms var(--motion-ease)}
.js-motion .fullscreen-hero .hero-link{animation:motion-settle 400ms var(--motion-ease) 70ms backwards}
@keyframes motion-settle{from{opacity:.92;translate:0 6px}to{opacity:1;translate:0 0}}
.navbar .nav-link{position:relative;transition:opacity var(--motion-micro) ease-out}
.navbar .nav-link::after{content:"";position:absolute;left:0;right:0;bottom:3px;height:1px;background:var(--sage);transform:scaleX(0);transform-origin:left;transition:transform var(--motion-micro) var(--motion-ease);pointer-events:none}
.navbar .nav-link:is(:hover,:focus-visible,.active)::after{transform:scaleX(1)}
.cta-link>p,.cta-link>span{transition:transform 250ms var(--motion-ease)}
.cta-link:is(:hover,:focus-visible)>p,.cta-link:is(:hover,:focus-visible)>span{transform:translateX(3px)}
.carousel-item{transition-duration:500ms;transition-timing-function:var(--motion-ease)}
.multi-track{transition-timing-function:var(--motion-ease)}
.carousel-control-prev,.carousel-control-next,.carousel-indicators button{transition:opacity var(--motion-micro) ease-out}
.module-accordion .accordion-button::after{transition:transform 220ms var(--motion-ease)}
.module-accordion .accordion-button:not(.collapsed)::after{transform:rotate(180deg)}
.module-accordion .accordion-item{transition:border-color var(--motion-micro) ease,background-color var(--motion-micro) ease}
.module-accordion .accordion-item:focus-within,.module-accordion .accordion-item:hover{border-color:#acbba280}
/* Keep Bootstrap's required collapse geometry; shorten its existing transition. */
.module-accordion .collapsing{transition-duration:240ms;transition-timing-function:ease-out}
.site-footer :is(.footer-email,.footer-policies a,.footer-utility a){text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:.25em;transition:text-decoration-color var(--motion-micro) ease,opacity var(--motion-micro) ease}
.site-footer :is(.footer-email,.footer-policies a,.footer-utility a):is(:hover,:focus-visible){text-decoration-color:currentColor}
.footer-social a:is(:hover,:focus-visible){background:#fbfaec12;border-color:#fbfaecaa}
.newsletter-control button:is(:hover,:focus-visible){background:#fbfaec1c}
@media(max-width:991px){.js-motion .navbar-collapse.show .navbar-nav{animation:motion-menu 220ms var(--motion-ease)}}
@keyframes motion-menu{from{opacity:.85;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@media(hover:hover) and (pointer:fine){
 [data-lightbox]{overflow:hidden}
 [data-lightbox] img{transition:transform 420ms var(--motion-ease),opacity 250ms ease}
 [data-lightbox]:hover img{transform:scale(1.015)}
 .gallery-item a:has(img)::after{background:#2c2d4126}
}
@media(prefers-reduced-motion:reduce){
 .js-motion .reveal,.js-motion .reveal:not(.revealed),.js-motion .reveal:has(h2):not(.revealed){opacity:1;transform:none;transition:none}
 .js-motion .fullscreen-hero .hero-slogan,.js-motion .fullscreen-hero .hero-link,.js-motion .navbar-collapse.show .navbar-nav{animation:none;translate:none}
 .cta-link>p,.cta-link>span,.cta-link:is(:hover,:focus-visible)>p,.cta-link:is(:hover,:focus-visible)>span,[data-lightbox]:hover img{transform:none;transition:none}
 .module-accordion .accordion-button::after,.module-accordion .accordion-button:not(.collapsed)::after{transform:none;transition:none}
}
