/* Small feedback cues. Entrance/reveal effects are progressive enhancements. */
@media(prefers-reduced-motion:no-preference){
 .header-inner nav a:after{transition:background .2s,opacity .2s}
 .header-inner nav a:not([aria-current=page]):after{content:"";position:absolute;bottom:3px;left:0;right:0;height:2px;background:currentColor;opacity:0}
 .header-inner nav a:hover:after{opacity:.45}
 .button>span,.hero-bottom-link>span{transition:translate .2s ease}
 .button:hover>span{translate:2px -1px}
 .hero-bottom-link:hover>span{translate:0 3px}
 .language-picker[open] nav{animation:language-appear .16s ease-out}
 dialog[open]{animation:dialog-appear .2s ease-out}
 @keyframes language-appear{from{opacity:.8;translate:0 -4px}to{opacity:1;translate:0 0}}
 @keyframes dialog-appear{from{opacity:.85;translate:0 6px}to{opacity:1;translate:0 0}}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important}
 *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
/* Page-level fade: standard navigation stays native, with no click interception. */
@media(prefers-reduced-motion:no-preference){
 main{animation:page-arrive .42s cubic-bezier(.2,.65,.3,1) both}
 @keyframes page-arrive{from{opacity:.05}to{opacity:1}}
}
/* Supported browsers can blend same-origin documents during navigation. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:page-depart .12s ease-out both}
::view-transition-new(root){animation:page-crossfade .28s ease-out both}
::view-transition-group(root){pointer-events:none}
@keyframes page-depart{to{opacity:0}}
@keyframes page-crossfade{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){
 @view-transition{navigation:none}
 ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}
