.page-loading .desktop-nav a[data-navigation-pending]{opacity:1;text-decoration:underline;text-underline-offset:12px;text-decoration-thickness:2px}
.page-loading,.page-loading a{cursor:progress}
/* Explicit photo and content layers avoid stale full-page screenshot fragments. */
main{position:relative}
.page-sheet{position:relative;background:#fff}
.hero-changing>.page-sheet{z-index:2}
.hero-changing>.hero .hero-copy,.hero-changing>.detail-hero>.wrap{z-index:2}
.page-photo-layer{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:1;overflow:hidden}
.page-photo-frame,.page-photo-frame>img,.page-photo-frame>span{position:absolute;top:0;left:0;width:100%}
.page-photo-frame>img,.page-photo-frame>span{height:100%;object-fit:cover}
:root[data-page-transition] .header{view-transition-name:site-header}
::view-transition-group(site-header){animation:none;z-index:5}
::view-transition-old(site-header){animation:none;opacity:0}
::view-transition-new(site-header){animation:none}
::view-transition-old(root){animation:page-leave 150ms ease-out both}
::view-transition-new(root){animation:page-arrive 220ms ease-out both}
::view-transition{pointer-events:none}
@keyframes page-leave{to{opacity:0}}
@keyframes page-arrive{from{opacity:0}to{opacity:1}}
html.lenis{scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
/* Page-arrival focus must not draw a browser rectangle around headings.
   Interactive keyboard targets use an underline instead of a box. */
html{-webkit-tap-highlight-color:transparent}
:is(main,header,footer,dialog):focus,
:is(main,header,footer,dialog) :is(:focus,:focus-visible){outline:none!important}
:is(main,header,footer,dialog) :is(a,button,summary):focus-visible{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:2px}
