/* === HyperWeave Status Indicator Animations ===
 * State-dependent animation speeds for .hw-logic-bit
 * Active: slow breathe. Warning: medium pulse. Critical: fast strobe.
 */

/* Active/passing: slow breathe 2s */
[data-hw-status="active"] .hw-logic-bit,
[data-hw-status="passing"] .hw-logic-bit {
  animation: hw-breathe 2s ease-in-out infinite;
  will-change: opacity;
}

/* Warning: medium pulse 0.9s */
[data-hw-status="warning"] .hw-logic-bit {
  animation: hw-pulse 0.9s ease-in-out infinite;
  will-change: opacity;
}

/* Critical/failing: strobe 0.35s */
[data-hw-status="critical"] .hw-logic-bit,
[data-hw-status="failing"] .hw-logic-bit {
  animation: hw-strobe 0.35s steps(1) infinite;
  will-change: opacity;
}

/* Building: faster breathe 1.5s */
[data-hw-status="building"] .hw-logic-bit {
  animation: hw-breathe 1.5s ease-in-out infinite;
  will-change: opacity;
}

/* Offline: no animation */
[data-hw-status="offline"] .hw-logic-bit {
  animation: none;
  opacity: .4;
}

/* === Keyframes === */
@keyframes hw-breathe {
  0%, 100% { opacity: .3; }
  50%      { opacity: 1; }
}
@keyframes hw-pulse {
  0%, 100% { opacity: .25; }
  50%      { opacity: 1; }
}
@keyframes hw-strobe {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: .1; }
}
@keyframes hw-sweep {
  0%   { opacity: 0; transform: translateX(-120%) skewX(-15deg); }
  30%  { opacity: 0.06; }
  70%  { opacity: 0.06; }
  100% { opacity: 0; transform: translateX(120%) skewX(-15deg); }
}
