/* ============================================================
   Planet Solara — Motion
   Calm, weighty, orbital. Things ease in like mass settling into
   orbit; live data pulses softly. No bouncy/cartoon easing.
   ============================================================ */

:root {
  /* Durations */
  --dur-instant: 80ms;    /* @kind other */
  --dur-fast:    140ms;   /* @kind other */
  --dur-base:    220ms;   /* @kind other */
  --dur-slow:    360ms;   /* @kind other */
  --dur-slower:  600ms;   /* @kind other */
  --dur-orbit:   1200ms;  /* @kind other */

  /* Easing */
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);   /* @kind other */
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);  /* @kind other */
  --ease-in:     cubic-bezier(0.4, 0, 1, 1);      /* @kind other */
  --ease-linear: linear;                          /* @kind other */

  --transition-base: all var(--dur-base) var(--ease-out);  /* @kind other */
  --transition-color: color var(--dur-fast) var(--ease-out),
                      background-color var(--dur-fast) var(--ease-out),
                      border-color var(--dur-fast) var(--ease-out),
                      box-shadow var(--dur-base) var(--ease-out);  /* @kind other */
}

/* Signature keyframes (available to components & UIs) */
@keyframes solara-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}
@keyframes solara-spin {
  to { transform: rotate(360deg); }
}
@keyframes solara-orbit {
  to { transform: rotate(360deg); }
}
@keyframes solara-rise {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* transform-only entrance — safe when the animation clock is frozen
   (thumbnails / background iframes never end up with hidden content) */
@keyframes solara-pop {
  from { transform: translateY(10px) scale(0.985); }
  to   { transform: none; }
}
@keyframes solara-scan {
  from { transform: translateY(-100%); }
  to   { transform: translateY(100%); }
}
@keyframes solara-glow-breathe {
  0%, 100% { box-shadow: var(--glow-solar-sm); }
  50%      { box-shadow: var(--glow-solar-md); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
