/* Motion — restrained, decisive. Durations 120/200/420ms, ease-out, no bounce.
 * Everything is gated on prefers-reduced-motion so print/PDF/a11y see end-state.
 */

/* readiness ring arc + count text always visible; only the fill transitions */
.ring-arc { transition: stroke-dashoffset 900ms cubic-bezier(.2,.7,.2,1); }

/* animated bar fills (stage, confidence, readiness, dataroom) */
.fillbar > i { transition: width 900ms cubic-bezier(.2,.7,.2,1); }

@media (prefers-reduced-motion: no-preference) {
  /* staggered entrance */
  @keyframes rise { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }

  .kpis > * { animation: rise 420ms cubic-bezier(.2,.7,.2,1) both; }
  .kpis > *:nth-child(1) { animation-delay: 30ms; }
  .kpis > *:nth-child(2) { animation-delay: 95ms; }
  .kpis > *:nth-child(3) { animation-delay: 160ms; }
  .kpis > *:nth-child(4) { animation-delay: 225ms; }

  .grid-2 > .stack { animation: rise 460ms cubic-bezier(.2,.7,.2,1) both; }
  .grid-2 > .stack:nth-child(2) { animation-delay: 90ms; }

  .stack > .card, .stack > .banner { animation: rise 420ms cubic-bezier(.2,.7,.2,1) both; }
  .stack > *:nth-child(2) { animation-delay: 60ms; }
  .stack > *:nth-child(3) { animation-delay: 120ms; }
  .stack > *:nth-child(4) { animation-delay: 180ms; }

  /* route rows reveal after the engine "evaluates" */
  .route-reveal { animation: rise 380ms cubic-bezier(.2,.7,.2,1) both; }

  /* gentle attention pulse — used ONLY on the export-blocking dot */
  @keyframes attn { 0%,100% { box-shadow: 0 0 0 0 rgba(200,49,43,0.0); } 50% { box-shadow: 0 0 0 5px rgba(200,49,43,0.16); } }
  .pulse-err { animation: attn 2.4s ease-in-out infinite; }
}

/* engine evaluating panel */
.evaluating { display: flex; flex-direction: column; align-items: center; justify-content: center;
        padding: 56px 24px; text-align: center; }
.evaluating .spin { width: 30px; height: 30px; border-width: 3px; margin-bottom: 18px; }
.evaluating .et { font-weight: 700; font-size: 15px; }
.evaluating .es { font-size: 12.5px; color: var(--fg2); margin-top: 6px; font-family: var(--font-mono); }
.evaluating .elog { margin-top: 16px; display: flex; flex-direction: column; gap: 5px; font-size: 12px;
        color: var(--fg2); font-family: var(--font-mono); }
.evaluating .elog span { opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  @keyframes logIn { to { opacity: 1; } }
  .evaluating .elog span { animation: logIn 240ms ease-out forwards; }
  .evaluating .elog span:nth-child(1) { animation-delay: 120ms; }
  .evaluating .elog span:nth-child(2) { animation-delay: 360ms; }
  .evaluating .elog span:nth-child(3) { animation-delay: 600ms; }
}
@media (prefers-reduced-motion: reduce) { .evaluating .elog span { opacity: 1; } }
