/* Sunday Motion System — canonical easings, durations, primitives */
:root {
  --sun-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --sun-ease-in: cubic-bezier(0.55, 0, 1, 0.45);
  --sun-fast: 140ms;
  --sun-mid: 240ms;
  --sun-slow: 360ms;
}
.lift-on-hover { transition: transform var(--sun-fast) var(--sun-ease-out), box-shadow var(--sun-fast) var(--sun-ease-out); }
.lift-on-hover:hover { transform: translateY(-1px); }
.focus-ring:focus-visible { outline: 2px solid #4F46E5; outline-offset: 2px; border-radius: inherit; }
@keyframes sun-shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
.sun-skeleton { background: linear-gradient(90deg, rgba(79,70,229,0.04) 0%, rgba(79,70,229,0.10) 50%, rgba(79,70,229,0.04) 100%); background-size: 200% 100%; animation: sun-shimmer 1.4s linear infinite; border-radius: 6px; }
@keyframes sun-dialog-in { from { opacity: 0; transform: scale(0.96) translateY(-6px); } to { opacity: 1; transform: scale(1) translateY(0); } }
dialog[open], .sun-dialog-open { animation: sun-dialog-in var(--sun-mid) var(--sun-ease-out); }
@keyframes sun-page-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.sun-page-in { animation: sun-page-in var(--sun-mid) var(--sun-ease-out); }
.sun-spinner { width: 16px; height: 16px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: sun-spin 0.8s linear infinite; display: inline-block; vertical-align: middle; }
@keyframes sun-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
