/* Shared motion: preserve the glass layout, never delay a navigation or save. */
:root {
  --motion-fast: 120ms;
  --motion-panel: 220ms;
  --motion-page: 280ms;
  --motion-ease: cubic-bezier(.2, .7, .2, 1);
}
@keyframes crm-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes crm-fade-out { to { opacity: 0; } }
@keyframes crm-panel-in {
  from { opacity: 0; transform: translateY(6px) scale(.985); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: no-preference) {
  /* Opacity only: a transform on main would break its fixed popovers in Safari. */
  #main-content { animation: crm-fade-in var(--motion-page) var(--motion-ease); }
  html.crm-native-transition #main-content { animation: none; }
  @view-transition { navigation: auto; }
  ::view-transition-old(root) { animation: crm-fade-out var(--motion-fast) ease-in both; }
  ::view-transition-new(root) { animation: crm-fade-in var(--motion-page) var(--motion-ease) both; }
  ::view-transition-group(root) { animation-duration: var(--motion-page); }
  .reg-picker, .cost-popup, dialog[open], #search-dropdown:not([hidden]) {
    animation: crm-panel-in var(--motion-panel) var(--motion-ease);
    transform-origin: top center;
  }
  dialog[open]::backdrop { animation: crm-fade-in var(--motion-panel) ease-out; }
  details[open] > :not(summary) { animation: crm-fade-in var(--motion-panel) ease-out; }
  .btn, .entry-pick, .registry-month-tab, .registry-views a, .registry-tile,
  .glass-nav a, .glass-icon-btn, .glass-settings-link {
    transition: background-color var(--motion-fast) ease-out,
      border-color var(--motion-fast) ease-out, color var(--motion-fast) ease-out,
      scale var(--motion-fast) ease-out;
  }
  .btn:active:not(:disabled), .entry-pick:active, .glass-icon-btn:active { scale: .98; }
  .glass-rightbar {
    transition: transform var(--motion-page) var(--motion-ease),
      visibility 0s linear var(--motion-page);
  }
  .rightbar-open .glass-rightbar {
    transition: transform var(--motion-page) var(--motion-ease), visibility 0s;
  }
  @media (min-width: 1200px) {
    .has-sidebar .page, .glass-topbar {
      transition: margin-right var(--motion-page) var(--motion-ease);
    }
    .has-sidebar.rightbar-hidden .page { max-width: none; margin-right: 20px; }
    .has-sidebar:not(.rightbar-hidden) .glass-rightbar {
      transition: transform var(--motion-page) var(--motion-ease), visibility 0s;
    }
  }
}
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}
@media print {
  #main-content { animation: none !important; }
}
