@layer components {

  /* ── Base ─────────────────────────────────────────────────────────── */

  .alert {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-4);
    padding-left: calc(var(--space-4) - 2px);
    background-color: var(--color-surface-secondary);
    border-left: 2px solid var(--color-border-default);
    border-radius: 0;
    position: relative;
  }

  /* ── Icon ──────────────────────────────────────────────────────────── */

  .alert > svg {
    width: var(--icon-md);
    height: var(--icon-md);
    flex-shrink: 0;
    margin-top: 2px;
  }

  /* ── Content ──────────────────────────────────────────────────────── */

  .alert-content {
    flex: 1;
    min-width: 0;
  }

  .alert-title {
    font-family: var(--font-sans);
    font-size: var(--text-base);
    font-weight: 600;
    line-height: var(--leading-normal);
    margin-bottom: var(--space-1);
  }

  .alert-message {
    font-family: var(--font-serif);
    font-size: var(--text-base);
    line-height: var(--leading-relaxed);
  }

  /* ── Close button ─────────────────────────────────────────────────── */

  .alert-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-1);
    border: none;
    border-radius: 0;
    background-color: transparent;
    color: inherit;
    cursor: pointer;
    flex-shrink: 0;
    transition: background-color var(--duration-normal) ease-out;
  }

  .alert-close:hover {
    background-color: var(--color-surface-tertiary);
  }

  .alert-close:active {
    background-color: var(--color-border-default);
    transition: none;
  }

  .alert-close:focus-visible {
    outline: 2px solid var(--color-accent-base);
    outline-offset: 2px;
  }

  .alert-close > svg {
    width: var(--icon-sm);
    height: var(--icon-sm);
  }

  /* ── Info ──────────────────────────────────────────────────────────── */

  .alert-info {
    background-color: var(--color-info-subtle);
    border-left-color: var(--color-info-base);
    color: var(--color-info-text);
  }

  /* ── Success ──────────────────────────────────────────────────────── */

  .alert-success {
    background-color: var(--color-success-subtle);
    border-left-color: var(--color-success-base);
    color: var(--color-success-text);
  }

  /* ── Warning ──────────────────────────────────────────────────────── */

  .alert-warning {
    background-color: var(--color-warning-subtle);
    border-left-color: var(--color-warning-base);
    color: var(--color-warning-text);
  }

  /* ── Error ─────────────────────────────────────────────────────────── */

  .alert-error {
    background-color: var(--color-error-subtle);
    border-left-color: var(--color-error-base);
    color: var(--color-error-text);
  }
}
