/* Main destinations move together; a gallery is never repurposed as a page swipe. */
@view-transition { navigation:auto; }
html { --section-enter:100%; --section-leave:-100%; }
body .primary-shell { view-transition-name:sjr-navigation; }
body .section-gesture-nav { position:relative; touch-action:pan-y pinch-zoom; --section-progress:0; }
body .section-gesture-nav a:after { display:none; }
body .section-travel-indicator { position:absolute; bottom:0; left:0; height:2px; width:22px; background:var(--color-accent); border-radius:2px; pointer-events:none; transform:translateX(var(--section-indicator-x,0px)); view-transition-name:sjr-tab-indicator; }
body .section-swipe-surface { translate:var(--section-drag,0px) 0; }
/* Do not restrict the ancestors of native horizontal rails or local filters. */
body :is(.listening-edition,.curation-open,.discovery-shelf-head,.features-hero,.features-heading,.features-card,.profile-heading,.profile-items) { touch-action:pan-y pinch-zoom; }
body:is(.section-gesture-active,[data-section-phase='settling']) .section-swipe-surface { will-change:translate; user-select:none; }
/* No CSS interpolation while tracking; cancellation is owned by WAAPI and can
   be resumed at its computed position by the next pointerdown. */
::view-transition, ::view-transition-group(*), ::view-transition-image-pair(*), ::view-transition-old(*), ::view-transition-new(*) { pointer-events:none; }
::view-transition-old(root) { animation:sjr-section-leave var(--duration-navigation,180ms) var(--ease-out) both; }
::view-transition-new(root) { animation:sjr-section-enter var(--duration-navigation,180ms) var(--ease-out) both; }
::view-transition-group(sjr-navigation) { animation-duration:var(--duration-navigation,180ms); }
::view-transition-old(sjr-navigation), ::view-transition-new(sjr-navigation) { animation:none; mix-blend-mode:normal; }

::view-transition-group(sjr-tab-indicator) { animation-duration:var(--duration-navigation,180ms); animation-timing-function:var(--ease-out); }
@keyframes sjr-section-leave { to { transform:translateX(var(--section-leave)); } }
@keyframes sjr-section-enter { from { transform:translateX(var(--section-enter)); } }
@media(prefers-reduced-motion:reduce) {
 body .section-swipe-surface,body .section-travel-indicator { transition:none!important; animation:none!important; }
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) { animation:none!important; }
}
