.alert {
  border: 1px solid var(--alert-border-color, var(--color-border));
  border-radius: var(--rounded-lg);
  color: var(--alert-color, var(--color-text));
  font-size: var(--text-base);
  inline-size: var(--size-full);
  padding: var(--size-4);
  display: flex;
  align-items: flex-start;
  gap: var(--size-3);
  background-color: var(--alert-background, var(--color-bg));

  img {
    filter: var(--alert-icon-color, var(--color-filter-text));
    flex-shrink: 0;
  }
}

.alert--positive {
  --alert-border-color: var(--color-positive);
  --alert-color: var(--color-positive);
  --alert-icon-color: var(--color-filter-positive);
  --alert-background: color-mix(in srgb, var(--color-positive) 5%, var(--color-bg));
}

.alert--negative {
  --alert-border-color: var(--color-negative);
  --alert-color: var(--color-negative);
  --alert-icon-color: var(--color-filter-negative);
  --alert-background: color-mix(in srgb, var(--color-negative) 5%, var(--color-bg));
}

.alert--warning {
  --alert-border-color: var(--yellow-600);
  --alert-color: var(--yellow-700);
  --alert-icon-color: invert(44%) sepia(89%) saturate(409%) hue-rotate(89deg) brightness(94%) contrast(97%);
  --alert-background: color-mix(in srgb, var(--yellow-200) 20%, var(--color-bg));
}

.alert--info {
  --alert-border-color: var(--blue-600);
  --alert-color: var(--blue-700);
  --alert-icon-color: invert(22%) sepia(85%) saturate(1790%) hue-rotate(339deg) brightness(105%) contrast(108%);
  --alert-background: color-mix(in srgb, var(--blue-100) 20%, var(--color-bg));
}

/* Alert variants */
.alert--sm {
  padding: var(--size-2) var(--size-3);
  font-size: var(--text-sm);
}

.alert--lg {
  padding: var(--size-6);
  font-size: var(--text-lg);
}

/* Alert with close button */
.alert--dismissible {
  position: relative;
  padding-right: var(--size-12);
}

.alert__close {
  position: absolute;
  top: var(--size-4);
  right: var(--size-4);
  background: none;
  border: none;
  cursor: pointer;
  padding: var(--size-1);
  border-radius: var(--rounded-sm);
  color: var(--alert-color, var(--color-text));
  opacity: 0.7;
  transition: opacity 0.2s ease;
}

.alert__close:hover {
  opacity: 1;
}
