/* Per-surface timing; the mask owns the lifetime of its child transition. */
.motion-sheet-enter-active,.motion-sheet-leave-active{transition:opacity var(--sheet-time,.18s) ease-out}
.motion-sheet-enter-active>section,.motion-sheet-leave-active>section{transition:transform var(--sheet-time,.18s) cubic-bezier(.2,.75,.25,1)}
.motion-sheet-enter-from,.motion-sheet-leave-to{opacity:0}
.motion-sheet-enter-from>section,.motion-sheet-leave-to>section{transform:translateY(8px) scale(.98)}
.motion-sheet-leave-active{pointer-events:none}
#app .motion-sheet-enter-active>section,#app .motion-sheet-leave-active>section{animation:none}
#app .maps-bottom.maps-glass{transition:height .25s cubic-bezier(.2,.7,.2,1)}
#app .maps-bottom.maps-glass.dragging{transition:none}
#app .maps-controls.maps-glass{transition:bottom .22s}
.photo-front.is-dragging{transition:none}
@media(prefers-reduced-motion:reduce){.motion-sheet-enter-active,.motion-sheet-leave-active,.motion-sheet-enter-active>section,.motion-sheet-leave-active>section,#app .maps-bottom.maps-glass,#app .maps-controls.maps-glass{transition:none}}

/* One local page boundary; status bar and audio remain mounted. */
.page-motion-frame{display:flex;flex-direction:column;flex:1;min-height:0;position:relative}
.page-motion-enter-active{transition:opacity .18s ease-out,transform .18s cubic-bezier(.2,.75,.25,1)}
.page-motion-leave-active{transition:opacity .10s ease-out,transform .10s ease-out}
.page-motion-enter-from{opacity:.35;transform:translateY(5px)}
.page-motion-leave-to{opacity:0;transform:translateY(5px)}
.page-motion-leave-active{pointer-events:none}
@media(prefers-reduced-motion:reduce){.page-motion-enter-active,.page-motion-leave-active{transition:none}}

/* Bottom sheets travel as a panel; centred menus remain a small-scale reveal. */
:is(.life-mask,.im-sheet-mask,.clock-mask,.mail-mask,.music-sheet-mask,.travel-mask).motion-sheet-enter-active{--sheet-time:.28s}
:is(.life-mask,.im-sheet-mask,.clock-mask,.mail-mask,.music-sheet-mask,.travel-mask).motion-sheet-leave-active{--sheet-time:.20s}
:is(.life-mask,.im-sheet-mask,.clock-mask,.mail-mask,.music-sheet-mask,.travel-mask):is(.motion-sheet-enter-from,.motion-sheet-leave-to)>section{transform:translateY(100%)}
.music-expand-enter-active{transition:transform .28s cubic-bezier(.2,.75,.25,1),opacity .28s}
.music-expand-leave-active{transition:transform .20s ease-in,opacity .20s}
.music-expand-leave-active{pointer-events:none}

/* Small controls compress, while full-width list rows only fade. */
#app :is(.music-modes button,.music-main-controls button,.now-track button,.now-bottom button,.clock-plus,.notes-send,.mail-control):not(:disabled){
 transition:transform .12s ease-out,opacity .12s ease-out;touch-action:manipulation;-webkit-tap-highlight-color:transparent
}
#app :is(.music-modes button,.music-main-controls button,.now-track button,.now-bottom button,.clock-plus,.notes-send,.mail-control):not(:disabled):active{transform:scale(.97);opacity:.8}
#app :is(button.settings-cell,button.books-row,.music-track,.im-conversation-main,.tips-row):not(:disabled){transition:opacity .10s ease-out;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
#app :is(button.settings-cell,button.books-row,.music-track,.im-conversation-main,.tips-row):not(:disabled):active{opacity:.64}
.launcher:not(.editing) .launcher-item .dock-app-icon{transition:transform .12s ease-out,opacity .12s ease-out}
.launcher:not(.editing) .launcher-item:active .dock-app-icon{transform:scale(.96);opacity:.8}
.launcher.editing .dock-app-icon,.launcher-ghost .dock-app-icon{transition:none}
.music-albums button{transition:opacity .14s ease-out}
.music-albums button:active{opacity:.72}
.ios-switch{transition:background-color .18s ease-out}
.ios-switch i{transition:transform .18s cubic-bezier(.2,.75,.25,1)}
.ios-switch.on i{left:2px;transform:translateX(20px)}
/* Do not tween input values or coordinates. Only the thumb's press feedback. */
.music-slider{height:24px;background:linear-gradient(#ffffff50,#ffffff50) center/100% 4px no-repeat;touch-action:pan-y}
.music-slider::-webkit-slider-thumb{transition:transform .1s ease-out}
.music-slider:active::-webkit-slider-thumb{transform:scale(1.2)}
.music-slider::-moz-range-thumb{transition:transform .1s ease-out}
.music-slider:active::-moz-range-thumb{transform:scale(1.2)}
.music-modes button,.now-track button{position:relative}
.music-modes .ui-icon{width:24px;height:24px;display:block;flex:none}
.music-modes small{position:absolute;right:8px;bottom:3px;font-size:10px}
.queue-row details{flex:none}
.queue-row summary,.queue-handle{width:40px;height:44px;box-sizing:border-box;padding:0;display:grid;place-items:center}
.queue-row summary::-webkit-details-marker{display:none}
.queue-row summary .ui-icon{width:20px;height:20px}
.queue-handle .ui-icon{width:23px;height:23px;pointer-events:none}
.queue-handle{flex:none;touch-action:none}
.queue-dragging{outline:1px solid #ffffff40;border-radius:10px}
.queue-row summary{transition:opacity .10s ease-out;touch-action:manipulation}
.queue-row summary:active{opacity:.55}
/* No persistent will-change layers, no global transition/all or touch suppression. */
@media(prefers-reduced-motion:reduce){
 #app :is(.page-motion-enter-active,.page-motion-leave-active,.motion-sheet-enter-active,.motion-sheet-leave-active,.motion-sheet-enter-active>section,.motion-sheet-leave-active>section,.music-expand-enter-active,.music-expand-leave-active){transition:none!important}
 #app :is(.music-modes button,.music-main-controls button,.now-track button,.now-bottom button,.clock-plus,.notes-send,.mail-control,button.settings-cell,button.books-row,.music-track,.im-conversation-main,.tips-row,.music-albums button,.dock-app-icon,.ios-switch,.ios-switch i,.queue-row summary){transition:none!important}
 #app :is(.music-modes button,.music-main-controls button,.now-track button,.now-bottom button,.clock-plus,.notes-send,.mail-control):active,.launcher:not(.editing) .launcher-item:active .dock-app-icon{transform:none!important}
 .music-slider::-webkit-slider-thumb{transition:none!important}
 .music-slider::-moz-range-thumb{transition:none!important}
 .music-slider:active::-webkit-slider-thumb{transform:none!important}
 .music-slider:active::-moz-range-thumb{transform:none!important}
}
