:root{--ease-out:cubic-bezier(.23,1,.32,1);--motion-fast:140ms;--motion-panel:260ms}
.button,.nav-cta,.menu-toggle,.close{transition:transform var(--motion-fast) var(--ease-out)}
html:not(.keyboard-navigation) :is(.button,.nav-cta,.menu-toggle,.close):active{transform:scale(.98)}
.photo-slot img{transition:transform 620ms var(--ease-out)}
nav a:not(.nav-cta){position:relative;text-decoration:none}
nav a:not(.nav-cta):after{content:'';position:absolute;left:0;right:0;bottom:-5px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform 180ms var(--ease-out)}
nav a[aria-current=page]:not(.nav-cta):after{transform:scaleX(1)}
@media(hover:hover) and (pointer:fine){
  html:not(.keyboard-navigation) .image-card:hover .photo-slot img{transform:scale(1.025)}
  nav a:not(.nav-cta):hover:after{transform:scaleX(1)}
}
/* Native dialogs retain focus trapping, Escape and immediate interaction. */
dialog{opacity:0;transform:translateY(6px) scale(.98);transition:opacity var(--motion-panel) var(--ease-out),transform var(--motion-panel) var(--ease-out),display var(--motion-panel) allow-discrete,overlay var(--motion-panel) allow-discrete}
dialog[open]{opacity:1;transform:translateY(0) scale(1)}
dialog::backdrop{opacity:0;transition:opacity var(--motion-panel) var(--ease-out),display var(--motion-panel) allow-discrete,overlay var(--motion-panel) allow-discrete}
dialog[open]::backdrop{opacity:1}
@starting-style{dialog[open]{opacity:0;transform:translateY(6px) scale(.98)}dialog[open]::backdrop{opacity:0}}
@media(max-width:1050px){
  nav.open{opacity:1;transform:translateY(0);transform-origin:top right;transition:opacity 180ms var(--ease-out),transform 180ms var(--ease-out)}
  @starting-style{nav.open{opacity:0;transform:translateY(-5px)}}
}
.keyboard-navigation :is(dialog,nav,.button,.nav-cta,.menu-toggle,.close),.keyboard-navigation dialog::backdrop{transition:none!important;transform:none!important}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .button,.nav-cta,.menu-toggle,.close,.photo-slot img,nav,nav a:after{transition:none!important}
  html :is(.button,.nav-cta,.menu-toggle,.close):active,.image-card:hover .photo-slot img{transform:none!important}
  dialog,dialog[open]{transform:none;transition-duration:100ms}
  dialog::backdrop{transition-duration:100ms}
  @starting-style{dialog[open]{transform:none}nav.open{transform:none;opacity:1}}
}
