/* ============================================================
   animations.css — 关键帧动画
   呼吸光晕 / 文字浮现 / 淡入
   ============================================================ */

/* ── 呼吸光晕：低对比、边缘扩散 ──────────────────────────── */
@keyframes breathe {
  0%,
  100% {
    border-color: var(--color-line);
  }
  50% {
    border-color: var(--color-glow-soft);
  }
}

@keyframes haloPulse {
  0%,
  100% {
    opacity: 0.25;
    transform: scale(1);
  }
  50% {
    opacity: 0.55;
    transform: scale(1.04);
  }
}

.signal-btn.breathing {
  animation: breathe var(--duration-breathe) ease-in-out infinite;
}

.signal-btn.breathing::before {
  animation: haloPulse var(--duration-breathe) ease-in-out infinite;
}

/* ── 文字块浮现：从底部淡入 + 去模糊 ─────────────────────── */
.letter-block {
  opacity: 0;
  transform: translateY(var(--reveal-offset));
  filter: blur(var(--reveal-blur));
  transition:
    opacity var(--duration-reveal) ease,
    transform var(--duration-reveal) cubic-bezier(0.22, 0.61, 0.36, 1),
    filter var(--duration-reveal) ease;
}

.letter-block.visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* ── 心律名称告警：黄 / 红分级（闪烁见下） ───────────────── */
.ecg-beat.alarm-warn {
  color: #ffd27a; /* 黄色：过缓 / 不齐 / 早搏 / 过速 */
}

.ecg-beat.alarm-danger {
  color: #ff7d7d; /* 红色：室扑 / 室颤 / 停博 */
}

.ecg-beat.alarm-blink {
  animation: alarmBlink var(--duration-alarm-blink) steps(1, end) infinite;
}

@keyframes alarmBlink {
  0%,
  55% {
    opacity: 1;
  }
  55.01%,
  100% {
    opacity: 0.18;
  }
}

/* ── 屏幕断电关机：增亮一瞬 → 收缩成横线 → 黑屏 ────────── */
.ecg-screen.shutdown {
  animation: powerOff var(--ecg-poweroff-ms, 800ms) ease-in both;
}

@keyframes powerOff {
  0% {
    opacity: 1;
    transform: scaleY(1);
    filter: brightness(1);
  }
  12% {
    filter: brightness(2.4); /* CRT 关机瞬间增亮 */
  }
  30% {
    transform: scaleY(0.02);
    filter: brightness(1);
  }
  60% {
    transform: scaleY(0.02);
    filter: brightness(0.25);
  }
  100% {
    transform: scaleY(0.02);
    filter: brightness(0);
  }
}

/* ── 除颤电击：连续脉冲亮闪 → 恢复（shock 段期间触发一次） ── */
.ecg-screen.defib-shock {
  animation: defibFlash var(--ecg-defib-ms, 600ms) steps(1, end) both;
}

@keyframes defibFlash {
  0% {
    filter: brightness(1);
  }
  12% {
    filter: brightness(2.6);
  }
  22% {
    filter: brightness(0.85);
  }
  40% {
    filter: brightness(3.4);
  }
  55% {
    filter: brightness(0.8);
  }
  100% {
    filter: brightness(1);
  }
}

/* ── 静音按钮出现 ────────────────────────────────────────── */
.mute-btn:not([hidden]) {
  animation: fadeIn 600ms ease both;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
