/* Shared, restrained motion. No content depends on an animation completing. */
:root{--motion-ease:cubic-bezier(.25,.1,.25,1);--motion-fast:280ms;--hero-crossfade-duration:1000ms}
.button,.text-link,.nav-cta,.tab,.column-sidebar a,.job-list article,input,select,textarea{transition:color var(--motion-fast),background-color var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-fast)}
.button svg,.text-link svg,.circle-arrow svg,.nav-toggle svg{transition:transform var(--motion-fast) var(--motion-ease)}
.home-module-photo,.student-overview img,.article-cover{transition:scale 650ms var(--motion-ease)}
.hero-controls button{position:relative}
.hero-progress{position:absolute;bottom:-2px;height:2px;left:0;right:0;background:var(--gold-light);transform:scaleX(0);transform-origin:left;pointer-events:none}
.hero-controls button[aria-selected=true]{border-bottom-color:#edc67e55}
.hero-slide:not([hidden]){animation:none;opacity:1;z-index:1}
.hero-slide.is-entering:not([hidden]){z-index:2;will-change:opacity;animation:motion-hero-in var(--hero-crossfade-duration) ease both}
.hero-slide.is-leaving:not([hidden]){z-index:1;pointer-events:none}
.hero-slide:not([hidden]) .hero-photo{will-change:transform;animation:motion-hero-drift 4400ms linear both}
.showcase[data-autoplay=paused] .hero-photo{animation-play-state:paused}
.hero-controls{z-index:4}
@keyframes motion-hero-in{from{opacity:0}to{opacity:1}}
@keyframes motion-hero-drift{from{transform:scale(1)}to{transform:scale(1.025)}}
.nav-group.is-open .nav-submenu{animation:motion-menu 280ms var(--motion-ease)}
@keyframes motion-menu{from{opacity:0;translate:0 -6px}to{opacity:1;translate:0 0}}
.nav-parent:after,.site-header nav>a:not(.nav-cta):after{transform-origin:left;animation:motion-line 350ms var(--motion-ease)}
.motion-disclosure-body{display:flow-root}
.motion-pending{opacity:0}
.motion-pending:focus-within{opacity:1;translate:none}
main details summary{transition:color var(--motion-fast)}
main details summary:hover{color:var(--teal)}
.reading-progress{position:fixed;top:var(--site-header-height);left:0;right:0;height:3px;z-index:49;pointer-events:none}
.reading-progress span{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:var(--gold)}
.reading-progress[hidden]{display:none}
@keyframes motion-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.appointment-form input:focus,.appointment-form textarea:focus,.appointment-form select:focus{border-color:var(--teal);box-shadow:0 0 0 3px #289c9b16}
.form-result:not(.hidden),.form-error:not(.hidden){animation:motion-menu 300ms var(--motion-ease)}
@media(hover:hover) and (pointer:fine){
 .button:hover svg,.text-link:hover svg,.home-module:hover .circle-arrow svg{transform:translateX(3px)}
 .home-module:hover .home-module-photo,.student-overview article:hover img{scale:1.02}
 .job-list article:hover{background-color:var(--cream)}
}
@media(max-width:960px){.site-header nav.open{animation:motion-menu 280ms var(--motion-ease)}}
@media(max-width:700px){.hero-slide:not([hidden]) .hero-photo{animation:none;will-change:auto}}
@media(prefers-reduced-motion:reduce){
 *,*:before,*:after{animation:none!important;transition:none!important}
 .hero-slide.is-leaving{display:none!important}
 .home-module:hover,.service-card:hover{transform:none!important}
 .home-module:hover .home-module-photo,.student-overview article:hover img{scale:1!important}
 .button:hover svg,.text-link:hover svg,.home-module:hover .circle-arrow svg{transform:none!important}
 .hero-progress{display:none}
 .motion-pending{opacity:1;translate:none}
 .hero-slide:not([hidden]) .hero-photo{will-change:auto}
 html{scroll-behavior:auto}
}
@media print{.reading-progress,.hero-progress{display:none}.motion-pending{opacity:1;translate:none}}
