/* The same compositions, with one quieter motion language.
   Large moving surfaces animate transform/opacity only. No frame-rate timer. */
:root{--ease-calm:cubic-bezier(.22,.7,.2,1)}
::view-transition-group(root){animation-duration:.52s}
::view-transition-old(root){animation:calm-leave .3s ease-out both}
::view-transition-new(root){animation:calm-arrive .52s var(--ease-calm) both}
@keyframes calm-leave{to{opacity:0}}
@keyframes calm-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* A static translucent finish avoids re-sampling content for every control. */
:root :is(header nav a,.media-links a,.glass-link,.all-work,.back,.menu-button,.pager button,.filters button,#flow-open,.video-caption>a,.photo-index>summary,footer small a,.menu-panel button,.hero-select button,.glass-video .gv-button,.cinema-pause,.book-controls button,.music-square-play,.archive-track .archive-track-play){backdrop-filter:none!important;-webkit-backdrop-filter:none!important;transition-property:transform,opacity,color,border-color!important;transition-duration:.34s!important;transition-timing-function:var(--ease-calm)!important}
.music-player,.music-modal-header,.music-lyrics{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.music-player,.music-modal-header{background:#121a20f0!important}.music-lyrics{background:#10151af5!important}
.music-player{transition:opacity .38s var(--ease-calm),transform .44s var(--ease-calm)}
.music-surface{will-change:auto!important}
#music-dialog[open] .music-surface{will-change:transform,opacity!important}
.music-cover-art{transition:none!important}
.music-card:hover .music-cover-art{box-shadow:0 6px 18px #0003!important}
.magazine-surface .book-stage{filter:none!important}
/* Keep the glossy rims but let the artwork lead. */
.selected-orbit::before{border-color:#ffffff24;box-shadow:0 3px 8px #0003,inset 0 1px 1px #ffffff28}
.selected-piece .selected-image::after{box-shadow:inset 0 1px 2px #ffffff40,inset 0 -1px 2px #0003}
.selected-piece .selected-image{transition:transform .44s var(--ease-calm)!important}
.selected-piece .selected-label{transition:opacity .28s ease!important}
.project-card,.project-card img,.project-gallery>button,.project-gallery img,.archive-art img{transition:transform .6s var(--ease-calm)!important}
@media(hover:hover) and (pointer:fine){
 .project-card:hover,.project-gallery>button:hover{transform:translateY(-2px)}
 .project-card:hover img,.project-gallery>button:hover img{transform:scale(1.012)}
 .glass-link:hover,.media-links a:hover{transform:translateY(-1px)}
}
#lightbox .controls button,#lightbox .controls a,#lightbox-close{transition:opacity .28s ease!important}
/* Native scrolling stays immediate to the user's hand and respects OS settings. */
@media(prefers-reduced-motion:reduce){
 :root :is(header nav a,.media-links a,.glass-link,.all-work,.back,.menu-button,.pager button,.filters button,#flow-open,.video-caption>a,.photo-index>summary,footer small a,.menu-panel button,.hero-select button,.glass-video .gv-button,.cinema-pause,.book-controls button,.music-square-play,.archive-track .archive-track-play){transition:none!important}
 .project-card,.project-card img,.project-gallery>button,.project-gallery img,.archive-art img{transition:none!important}
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 #lightbox .controls button,#lightbox .controls a,#lightbox-close,
 .selected-piece .selected-image,.selected-piece .selected-label{transition:none!important}
 .music-surface,#music-dialog[open] .music-surface{will-change:auto!important}
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}
/* Oversized transparent crest artwork must never steal a neighboring circle's tap. */
.selected-piece .selected-orbit,.selected-piece .selected-label{pointer-events:none}
