/**
 * motion-pass.css — Global animation & transition refinement
 * Owns: reducing consumer-app motion feel; enforcing institutional speed & restraint.
 * Does NOT own: page layout, color, or component-specific styles (those live in density-pass.css and per-page styles).
 *
 * Rules:
 *  - Page transitions ≤ 200ms
 *  - Card hover ≤ 150ms
 *  - Modal / dropdown open ≤ 150ms
 *  - Progress bars ≤ 400ms ease-out (functional, not decorative)
 *  - Skeleton animations: subtle and dim
 *  - No staggered card-grid animations
 *  - No slide-up-on-scroll
 *  - No bouncy / spring effects
 *  - Retained: live-status indicator pulses (subtle, functional)
 */

/* ── Global transition speed floor ── */
* {
  transition-duration: max(var(--dur, 0ms), 1ms);
}

/* ── Hover / interactive element speed ── */
a,
button,
[role="button"],
.btn,
.btn-primary,
.btn-secondary,
.btn-outline,
.nav-link,
.plan-card,
.chart-card,
.nowcast-card,
.indicator-card,
.timeline-item,
.trust-item,
.metric-box,
.data-card,
.sky-card,
.tab,
.segment-btn,
.toggle-btn,
input,
select,
textarea {
  transition-duration: 150ms !important;
  transition-timing-function: ease-out !important;
}

/* ── Button hover transforms: remove bounce, reduce lift ── */
.btn-primary:hover,
.btn-secondary:hover,
button:hover {
  transform: translateY(-1px) !important;
  transition-duration: 120ms !important;
}

/* ── Card hover: fast, no exaggerated lift ── */
.chart-card:hover,
.nowcast-card:hover,
.indicator-card:hover,
.data-card:hover,
.sky-card:hover,
.timeline-item:hover,
.trust-item:hover,
.plan-card:hover {
  transition: border-color 150ms ease-out, box-shadow 150ms ease-out, transform 150ms ease-out !important;
}

/* ── Modal / overlay: open fast ── */
.modal,
.modal-overlay,
.sky-modal,
[class*="modal"],
[class*="panel"],
[class*="dropdown"],
[class*="overlay"] {
  transition-duration: 150ms !important;
}

/* ── Progress bars: functional, not decorative ── */
[class*="bar-fill"],
[class*="score-fill"],
[class*="macro-score-fill"],
[class*="eng-bar"],
[class*="r2-bar-fill"] {
  transition: width 350ms ease-out !important;
}

/* ── Page-level fade-in: fast ── */
.fadeIn,
[class*="fade-in"],
[class*="fadein"] {
  animation-duration: 150ms !important;
}

/* ── Intel rail panel: fast slide ── */
#sky-intel-rail-panel {
  transition-duration: 200ms !important;
  transition-timing-function: ease-out !important;
}

/* ── Search modal ── */
#sky-search-modal {
  animation-duration: 120ms !important;
}

/* ── Skeleton loading: keep but make dim/subtle ── */
[class*="shimmer"],
[class*="skeleton"],
[class*="pulse-skeleton"] {
  animation-duration: 1.4s !important;
  opacity: 0.6;
}

/* ── Status indicator pulse: subtle, slow (functional) ── */
.sky-live-pulse,
[class*="live-dot"],
[class*="live-indicator"],
[class*="status-dot"] {
  animation-duration: 2.5s !important;
  animation-timing-function: ease-in-out !important;
}

/* ── Typing indicator (chatbot): keep as-is, it's interactive feedback ── */
/* skyDotPulse is fine at 1.2s — leave it */

/* ── Mic pulse: reduce ── */
@keyframes skyMicPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(254, 188, 46, 0.4); }
  50% { box-shadow: 0 0 0 6px rgba(254, 188, 46, 0); }
}

/* ── Remove staggered card-grid animations ── */
/* If any card has animation-delay, override to 0 */
.chart-card,
.nowcast-card,
.indicator-card,
.data-card,
.plan-card,
.trust-item,
.timeline-item {
  animation-delay: 0ms !important;
}

/* ─────────────────────────────────────────────────────────────────────────
 * FOCUS STATE OVERRIDE: use gold accent consistently
 * ───────────────────────────────────────────────────────────────────────── */
input:focus,
select:focus,
textarea:focus {
  border-color: rgba(254,188,46,0.4) !important;
  box-shadow: 0 0 0 1px rgba(254,188,46,0.15) !important;
  outline: none !important;
}

/* ── Reduced motion: respect OS preference ── */
@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;
  }
}
