/* Motion is enhancement only: content stays visible without JavaScript. */
:root{--motion-ease:cubic-bezier(.2,.65,.25,1)}
.header{transition:box-shadow .25s ease,background-color .25s ease}
.header.is-scrolled{box-shadow:0 5px 24px #122d4010;background:#fffffff5}
.program-card,.infra-equipment-card,.gallery-card,.research-grid article,.purpose-grid article{transition:translate .25s var(--motion-ease),box-shadow .25s ease,border-color .25s ease}
.solid-button,.directions-links a,.directions-copy,.portal-admin button{transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}
.paper-row,.document-row,.news-card{transition:background-color .2s ease,border-color .2s ease}
.section-navigation a,.news-tabs a{transition:color .2s ease,border-color .2s ease,background-color .2s ease}
.nav-panel:not([hidden]){animation:panel-enter .18s var(--motion-ease)}
.center-dialog[open]{animation:dialog-enter .22s var(--motion-ease)}
.center-dialog[open]::backdrop{animation:backdrop-enter .2s ease}
.contact-space-photo,.infra-space-grid figure,.training-practice-photos figure{overflow:hidden}
.contact-space-photo>img,.infra-space-grid img,.training-practice-photos img{transition:transform .55s var(--motion-ease)}
main{overflow-x:clip}
[data-motion]{--motion-x:0px;--motion-y:38px}
[data-motion=left]{--motion-x:-48px;--motion-y:0px}
[data-motion=right]{--motion-x:48px;--motion-y:0px}
[data-motion=down]{--motion-x:0px;--motion-y:-24px}
.motion-pending{opacity:0;transform:translate3d(var(--motion-x),var(--motion-y),0)}
.motion-in{animation:section-enter .85s var(--motion-ease) both;animation-delay:var(--motion-delay,0ms)}
.editing-page .motion-pending,.editing-page .motion-in{animation:none;opacity:1;transform:none}
@keyframes section-enter{from{opacity:0;transform:translate3d(var(--motion-x),var(--motion-y),0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media(max-width:700px){[data-motion]{--motion-y:24px}[data-motion=left]{--motion-x:-22px;--motion-y:0px}[data-motion=right]{--motion-x:22px;--motion-y:0px}[data-motion=down]{--motion-y:-16px}}
@keyframes panel-enter{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}
@keyframes dialog-enter{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@media(hover:hover) and (pointer:fine){
 .program-card:hover,.infra-equipment-card:hover,.gallery-card:hover,.research-grid article:hover,.purpose-grid article:hover{translate:0 -3px;border-color:#a9bfca;box-shadow:0 12px 28px #17364c0c}
 .paper-row:hover,.document-row:hover{background:#f6f9fb}
 .contact-space-photo:hover>img,.infra-space-grid figure:hover img,.training-practice-photos figure:hover img{transform:scale(1.018)}
}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important}
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 .motion-pending,.motion-in{opacity:1;transform:none}
 .program-card:hover,.infra-equipment-card:hover,.gallery-card:hover,.research-grid article:hover,.purpose-grid article:hover{translate:none}
 .contact-space-photo:hover>img,.infra-space-grid figure:hover img,.training-practice-photos figure:hover img{transform:none}
}
@media print{.motion-pending,.motion-in{animation:none!important;opacity:1!important;transform:none!important}}

/* Course resources stay static, including dynamically loaded lists. */
html:has(body[data-page="materials"]){scroll-behavior:auto!important}
body[data-page="materials"],body[data-page="materials"] *,body[data-page="materials"] *::before,body[data-page="materials"] *::after,body[data-page="materials"] dialog::backdrop{animation:none!important;transition:none!important;scroll-behavior:auto!important}
body[data-page="materials"] .motion-pending,body[data-page="materials"] .motion-in{opacity:1;transform:none}
