/* ═══════════════════════════════════════════════════════════════════════════
   hiLina Orb — Animation keyframes and state styles
   Source: lina-onboarding-prototype.html
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Keyframes ── */
@keyframes hl-orb-cw  { to { transform: rotate(360deg); } }
@keyframes hl-orb-ccw { to { transform: rotate(-360deg); } }

@keyframes hl-orb-breath-idle {
  0%, 100% { transform: scale(1.0);  opacity: 0.92; }
  50%      { transform: scale(1.04); opacity: 1; }
}
@keyframes hl-orb-breath-think {
  0%, 100% { transform: scale(1.0);  opacity: 0.90; }
  50%      { transform: scale(1.06); opacity: 1; }
}

/* ── Idle state ── */
.orb-idle .r2 { animation: hl-orb-cw  28s linear infinite; transform-origin: 80px 80px; }
.orb-idle .r3 { animation: hl-orb-ccw 18s linear infinite; transform-origin: 80px 80px; }
.orb-idle .r5 { animation: hl-orb-ccw 14s linear infinite; transform-origin: 80px 80px; }
.orb-idle .r4 { animation: hl-orb-cw   9s linear infinite; transform-origin: 80px 80px; }
.orb-idle .core { animation: hl-orb-breath-idle 4.2s ease-in-out infinite; transform-origin: 80px 80px; }
.orb-idle .xr  { animation: hl-orb-cw 22s linear infinite; transform-origin: 80px 80px; }

/* ── Thinking state (faster) ── */
.orb-thinking .r2  { animation: hl-orb-cw   8.8s linear infinite; transform-origin: 80px 80px; }
.orb-thinking .r3  { animation: hl-orb-ccw  5.6s linear infinite; transform-origin: 80px 80px; }
.orb-thinking .r5  { animation: hl-orb-ccw  4.4s linear infinite; transform-origin: 80px 80px; }
.orb-thinking .r4  { animation: hl-orb-cw   2.8s linear infinite; transform-origin: 80px 80px; }
.orb-thinking .r4b { animation: hl-orb-ccw  1.6s linear infinite; transform-origin: 80px 80px; }
.orb-thinking .core { animation: hl-orb-breath-think 2.2s ease-in-out infinite; transform-origin: 80px 80px; }
.orb-thinking .xr  { animation: hl-orb-cw  3.6s linear infinite; transform-origin: 80px 80px; }

/* ── Alert state (same speeds as idle, different colors via JS) ── */
.orb-alert .r2 { animation: hl-orb-cw  28s linear infinite; transform-origin: 80px 80px; }
.orb-alert .r3 { animation: hl-orb-ccw 18s linear infinite; transform-origin: 80px 80px; }
.orb-alert .r5 { animation: hl-orb-ccw 14s linear infinite; transform-origin: 80px 80px; }
.orb-alert .r4 { animation: hl-orb-cw   9s linear infinite; transform-origin: 80px 80px; }
.orb-alert .core { animation: hl-orb-breath-idle 4.2s ease-in-out infinite; transform-origin: 80px 80px; }
.orb-alert .xr  { animation: hl-orb-cw 22s linear infinite; transform-origin: 80px 80px; }

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  .orb-idle .r2, .orb-idle .r3, .orb-idle .r5, .orb-idle .r4,
  .orb-idle .core, .orb-idle .xr,
  .orb-thinking .r2, .orb-thinking .r3, .orb-thinking .r5,
  .orb-thinking .r4, .orb-thinking .r4b, .orb-thinking .core, .orb-thinking .xr,
  .orb-alert .r2, .orb-alert .r3, .orb-alert .r5, .orb-alert .r4,
  .orb-alert .core, .orb-alert .xr {
    animation: none !important;
  }
}
