/* ═══════════════════════════════════════════════════════════════════
   AURALIS · Audio Error Banner (Task FF)
   ───────────────────────────────────────────────────────────────────
   Bottom-fixed recovery banner. 3 action buttons. Auto-dismiss 8s.
   ═══════════════════════════════════════════════════════════════════ */

.aeb {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 250;
  padding: 16px 16px calc(env(safe-area-inset-bottom, 0) + 16px);
  transform: translateY(100%);
  transition: transform 0.3s var(--ease-spring), opacity 0.25s var(--ease);
  opacity: 0;
}
.aeb.is-visible {
  transform: translateY(0);
  opacity: 1;
}
.aeb.is-leaving {
  transform: translateY(100%);
  opacity: 0;
}

[data-theme="light"] .aeb,
:root:not([data-theme]) .aeb {
  background: var(--bg-main);
  box-shadow: 0 -8px 24px rgba(60, 70, 100, 0.2);
  border-top: 1px solid hsl(220 18% 86%);
}
[data-theme="dark"] .aeb {
  background: linear-gradient(180deg, hsl(220 25% 8%) 0%, hsl(220 25% 5%) 100%);
  border-top: 1px solid var(--border-color);
  box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.5);
}

.aeb-msg {
  font-size: 14px;
  font-weight: 700;
  color: var(--danger);
  margin-bottom: 12px;
  text-align: center;
}

.aeb-actions {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}

.aeb-btn {
  min-height: 40px;
  padding: 8px 16px;
  border: none;
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: transform var(--dur-fast) var(--ease);
}
.aeb-btn:active { transform: scale(0.97); }

.aeb-btn--retry {
  background: linear-gradient(135deg, hsl(var(--hue1) 70% 55%), hsl(var(--hue2) 65% 55%));
  color: white;
}
.aeb-btn--retry small {
  font-weight: 500;
  opacity: 0.8;
}
.aeb-btn--choose {
  background: transparent;
  color: var(--accent);
  border: 1px solid var(--accent);
}
.aeb-btn--dismiss {
  background: transparent;
  color: var(--text-muted);
}

@media (prefers-reduced-motion: reduce) {
  .aeb { transition: none; }
}
