/* Lightweight, public-page transitions; no perpetual motion or scroll hijacking. */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: gallery-page-out 220ms cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation: gallery-page-in 340ms cubic-bezier(.22,1,.36,1) both; }
::view-transition-group(root) { animation-duration: 340ms; }
@keyframes gallery-page-out { to { opacity: 0; transform: translateY(-6px); } }
@keyframes gallery-page-in { from { opacity: 0; transform: translateY(12px); } }
html[data-motion-direction="back"]::view-transition-new(root) { animation-name: gallery-page-back; }
@keyframes gallery-page-back { from { opacity: 0; transform: translateY(-10px); } }
@media (max-width: 900px) {
    :root { --touch-ease: cubic-bezier(.22,1,.36,1); }
    body :is(.entrance,.artist-link,.painting-open,.season-cover-link,.interview-trigger,.collection-artist-link,.gallery-back,.artist-dock-link,.gallery-filter,.dialog-step,.viewer-zoom,.dialog-close,.home-social-link) {
        transition: transform 340ms var(--touch-ease), opacity 220ms var(--touch-ease), background-color 220ms ease, border-color 220ms ease;
    }
    body :is(.entrance,.artist-link,.painting-open,.season-cover-link,.interview-trigger,.collection-artist-link,.home-social-link).is-pressed {
        transform: scale(.976); opacity: .9; transition-duration: 85ms;
    }
    body :is(.gallery-back,.artist-dock-link,.gallery-filter,.dialog-step,.viewer-zoom,.dialog-close).is-pressed {
        transform: none; opacity: .8; transition-duration: 70ms;
    }
    body :is(.dialog-step,.viewer-zoom,.dialog-close).is-pressed { background-color: rgba(243,237,223,.13); }
    .viewer-controls .art-icon { pointer-events: none; transition: transform 280ms var(--touch-ease); }
    .viewer-controls .is-pressed .art-icon { transform: scale(.88); }
    .gallery-back-arrow { transition: transform 300ms var(--touch-ease); }
    .gallery-back.is-pressed .gallery-back-arrow { transform: translateX(-3px); }
    .painting-surface { position: relative; transition: transform 340ms var(--touch-ease), opacity 280ms var(--touch-ease); }
    .painting-surface .painting-outgoing { position: absolute; inset: 0; pointer-events: none; }
    .art-dialog[open] { animation: gallery-viewer-in 340ms var(--touch-ease); }
    .art-dialog[open]::backdrop { animation: veil-enter 280ms ease; }
    .art-dialog.is-closing::backdrop { animation: gallery-veil-out 190ms ease-in both; }
    .art-dialog.is-closing { pointer-events: none; }
    .artist-dock { transition: transform 360ms var(--touch-ease), opacity 260ms ease, visibility 360ms; }
    .gallery-filters { scroll-behavior: smooth; scroll-snap-type: x proximity; }
    .gallery-filter { scroll-snap-align: center; }
    @keyframes gallery-viewer-in { from { opacity: 0; transform: translateY(18px) scale(.985); } to { opacity: 1; transform: none; } }
    @keyframes gallery-veil-out { to { opacity: 0; } }
}
@media (min-width: 901px) and (pointer: fine) {
    ::view-transition-old(root), ::view-transition-new(root), ::view-transition-group(root) { animation: none; }
}
@media (prefers-reduced-motion: reduce) {
    ::view-transition-old(root), ::view-transition-new(root), ::view-transition-group(root) { animation: none !important; }
    body :is(.entrance,.artist-link,.painting-open,.season-cover-link,.interview-trigger,.collection-artist-link,.gallery-back,.artist-dock-link,.gallery-filter,.dialog-step,.viewer-zoom,.dialog-close,.home-social-link).is-pressed { transform: none; }
    .viewer-controls .is-pressed .art-icon, .gallery-back.is-pressed .gallery-back-arrow { transform: none; }
    .gallery-filters { scroll-behavior: auto; }
}
