/* Shared motion: interaction feedback, never a delay before an action. */
:root{--motion-fast:140ms;--motion-view:200ms;--motion-exit:160ms;--motion-expand:240ms;--motion-ease:cubic-bezier(.2,.75,.25,1)}
@media(prefers-reduced-motion:no-preference){
 .btn,.lbtn,.lnav__toggle{transition:background-color var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast),opacity var(--motion-fast),transform var(--motion-fast) var(--motion-ease)}
 .btn:active:not(:disabled),.lbtn:active,.lnav__toggle:active{transform:scale(.98)}
 .nav__link,.settings-tabs button,.visit-tabs a,.inquiry-tabs a{transition:color var(--motion-fast),background-color var(--motion-fast),border-color var(--motion-fast)}
 .switch__track{transition:background-color var(--motion-fast)}
 .switch__track::before{transition:transform var(--motion-view) var(--motion-ease)}
 .swatch{transition:box-shadow var(--motion-fast),border-color var(--motion-fast),transform var(--motion-fast)}
 .swatch:active{transform:scale(.94)}
 /* Dialogs: enter and leave (not only appear). Exit keeps the top layer until the fade ends. */
 dialog.modal{opacity:0;transform:translateY(6px) scale(.985);transition:opacity var(--motion-exit) ease-in,transform var(--motion-exit) ease-in,overlay var(--motion-exit) allow-discrete,display var(--motion-exit) allow-discrete}
 dialog.modal[open]{opacity:1;transform:none;transition-duration:var(--motion-view);transition-timing-function:var(--motion-ease)}
 dialog.modal::backdrop{opacity:0;transition:opacity var(--motion-exit) ease-in,overlay var(--motion-exit) allow-discrete,display var(--motion-exit) allow-discrete}
 dialog.modal[open]::backdrop{opacity:1;transition-duration:var(--motion-view)}
 .modal-overlay .modal{animation:motion-dialog var(--motion-view) var(--motion-ease)}
 .modal-overlay{animation:motion-reveal var(--motion-fast) ease-out}
 /* Popups (searchable selects, date picker, address suggestions) and the cookie banner fade in and out. */
 .search-select__popup,.date-popover,.address-suggest,.consent{transition:opacity var(--motion-fast) ease-out,transform var(--motion-fast) var(--motion-ease),overlay var(--motion-fast) allow-discrete,display var(--motion-fast) allow-discrete}
 .search-select__popup[hidden],.date-popover[hidden],.date-popover[popover]:not(:popover-open),.address-suggest[hidden]{opacity:0;transform:translateY(-4px)}
 .consent[hidden]{opacity:0;transform:translateY(8px)}
 [data-reservation-tab]:not([hidden]),[role=tabpanel]:not([hidden]),[data-wizard-step]:not([hidden]),[data-inquiry-mode-panel]:not([hidden]){animation:motion-reveal var(--motion-fast) ease-out}
 details[open] > :not(summary){animation:motion-reveal var(--motion-expand) ease-out}
 .visit-body:not([hidden]){animation:motion-reveal var(--motion-expand) ease-out}
 .assignment-editor > summary > svg,.team-invite > summary > svg,.inquiry-item > summary > svg{transition:transform var(--motion-view) var(--motion-ease)}
 .inquiry-item[open] > summary > svg{transform:rotate(180deg)}
 .alert[role=status],.alert--ok,.alert--danger{animation:motion-reveal var(--motion-fast) ease-out}
 .auth-shell .login-card,.login-shell .login-card{animation:motion-reveal var(--motion-view) ease-out}
 .hero__cta .lbtn svg,.closing .lbtn svg{transition:transform var(--motion-fast) var(--motion-ease)}
 .hero__cta .lbtn:hover svg,.closing .lbtn:hover svg{transform:translateX(2px)}
}
@keyframes motion-reveal{from{opacity:.4}to{opacity:1}}
@media(prefers-reduced-motion:no-preference){
 @starting-style{
  dialog.modal[open]{opacity:0;transform:translateY(6px) scale(.985)}
  dialog.modal[open]::backdrop{opacity:0}
  .search-select__popup:not([hidden]),.date-popover:popover-open,.date-popover:not([popover]):not([hidden]),.address-suggest:not([hidden]){opacity:0;transform:translateY(-4px)}
  .consent:not([hidden]){opacity:0;transform:translateY(8px)}
 }
}
@keyframes motion-dialog{from{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
