/* Smoothness pass (2026-11-02): page-to-page cross-fade, one shared easing, softer press/hover, steadier sticky nav.
   Everything is progressive: browsers without View Transitions simply navigate as before. */
:root{--sm-ease:cubic-bezier(.16,1,.3,1)}
@media(prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  ::view-transition-old(root){animation:smFadeOut .28s ease both}
  ::view-transition-new(root){animation:smFadeIn .42s var(--sm-ease) both}
  .lnav{view-transition-name:lnav}
  ::view-transition-group(lnav){animation-duration:0s}
  @keyframes smFadeOut{to{opacity:0}}
  @keyframes smFadeIn{from{opacity:0;transform:translateY(8px)}}
}
html{scroll-padding-top:88px;-webkit-tap-highlight-color:transparent}
.lnav,.lnav__in{transform:translateZ(0)}
/* buttons and pills: one springy response everywhere */
.pill,.chip,.bkv__cta,.wmore,button.cp__cat,.foot__cta{transition:transform .4s var(--sm-ease),background-color .3s,color .3s,box-shadow .4s var(--sm-ease),opacity .3s}
.pill:active,.chip:active,.wmore:active{transform:scale(.97)}
@media(hover:hover){.pill:hover{transform:translateY(-1px)}}
/* gallery tiles: slower, softer zoom */
.ltile img{transition:transform .9s var(--sm-ease),opacity .5s}
@media(hover:hover){.ltile:hover img{transform:scale(1.03)}}
/* long pages: skip painting far-off heavy blocks until they are near */
.foot{content-visibility:auto;contain-intrinsic-size:auto 640px}
img{image-rendering:auto}
