/* Motion stays close to the material: measured, quiet, and optional. */
.site-header{transform:translateY(0);transition:transform .48s cubic-bezier(.22,.7,.2,1),box-shadow .35s ease;will-change:transform}
.site-header.header-hidden{transform:translateY(calc(-100% - 2px));pointer-events:none}
.site-header.header-scrolled{box-shadow:none}
.site-header:has(:focus-visible){transform:translateY(0);pointer-events:auto}
.line-link{position:relative}
.line-link::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.22,.7,.2,1)}
.line-link:hover::after,.line-link:focus-visible::after{transform:scaleX(1)}
.home-project-label,.project-label{transition:border-color .4s ease}
.project-card:hover .home-project-label,.project-card:focus-visible .home-project-label,.project-card:hover .project-label,.project-card:focus-visible .project-label{border-color:#9c8c70}
.lightbox[open]{animation:lightbox-arrive .24s ease-out}
.lightbox[open]::backdrop{animation:lightbox-arrive .24s ease-out}
.lightbox button{transition:background .25s ease,border-color .25s ease}
.lightbox button:hover,.lightbox button:focus-visible{background:#ffffff0d;border-color:#b2a184}
@keyframes lightbox-arrive{from{opacity:0}to{opacity:1}}
/* Supported browsers blend actual documents; navigation never waits on motion. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:document-out .12s ease-out both}
::view-transition-new(root){animation:document-in .24s ease-out both}
@keyframes document-out{to{opacity:0}}
@keyframes document-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
 .site-header{transition:none;will-change:auto}
 @view-transition{navigation:none}
 ::view-transition-old(root),::view-transition-new(root){animation:none}
 .lightbox[open],.lightbox[open]::backdrop{animation:none}
}
