/* ============================================================
   AURA — MOTION
   Cards "float in" from below and settle. As newer moments
   arrive, older ones drift up, shrink, and dim. One easing,
   a small set of durations. Smooth, never busy.
   ============================================================ */

:root {
  /* ---- Easing ---- */
  --ease-float: cubic-bezier(0.22, 0.61, 0.30, 1); /* @kind other */ /* house curve — gentle settle */
  --ease-out: cubic-bezier(0.16, 1, 0.30, 1); /* @kind other */
  --ease-inout: cubic-bezier(0.65, 0, 0.35, 1); /* @kind other */

  /* ---- Durations ---- */
  --dur-enter: 620ms; /* @kind other */ /* a moment floating in     */
  --dur-exit: 420ms;  /* @kind other */ /* drifting up into history */
  --dur-shift: 540ms; /* @kind other */ /* the stack re-settling    */
  --dur-state: 260ms; /* @kind other */ /* toggles, small changes   */

  /* ---- Demotion: how much a card recedes per step up the stack ---- */
  --history-scale: 0.93; /* @kind other */
  --history-dim: 0.62;   /* @kind other */
  --history-dim-2: 0.40; /* @kind other */
  --history-dim-3: 0.26; /* @kind other */
}

@keyframes aura-float-in {
  from { transform: translateY(40px) scale(0.97); }
  to   { transform: translateY(0) scale(1); }
}

@keyframes aura-bloom-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes aura-ring-fill {
  from { stroke-dashoffset: var(--ring-circumference); }
}

/* The assistant's quiet "presence" — a warm, breathing companion orb. */
@keyframes aura-breathe {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.07); }
}
@keyframes aura-ripple {
  0%   { transform: scale(0.85); opacity: 0.45; }
  100% { transform: scale(1.9);  opacity: 0; }
}
@keyframes aura-drift {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -3px, 0); }
}

@media (prefers-reduced-motion: no-preference) {
  .aura-enter { animation: aura-float-in var(--dur-enter) var(--ease-float); }
}
