/* =============================================
   Alert Banner Component — UI-0074
   ============================================= */

/* --- Base Alert --- */
.alert {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-4) var(--space-4) var(--space-4) calc(var(--space-4) + 4px);
  border-radius: var(--radius-md); /* 8px */
  border: 1px solid transparent;
  border-left-width: 4px;
  box-sizing: border-box;
  font-family: var(--font-sans);
}

/* --- Alert Icon --- */
.alert__icon {
  flex-shrink: 0;
  width: var(--icon-md);
  height: var(--icon-md);
  stroke: currentColor;
  fill: none;
  margin-top: 1px; /* Align with first line of text */
}

/* --- Alert Body --- */
.alert__body {
  flex: 1;
  min-width: 0;
}

.alert__title {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  margin-bottom: var(--space-1);
  line-height: var(--leading-tight, 1.25);
}

.alert__message {
  font-size: var(--text-sm);
  line-height: var(--leading-normal, 1.5);
}

/* Optional action link */
.alert__action {
  display: inline-block;
  margin-top: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  text-decoration: underline;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  transition: opacity var(--duration-fast) var(--ease-default);
}

.alert__action:hover {
  opacity: 0.8;
}

/* --- Close Button --- */
.alert__close {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: none;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-sm);
  padding: 0;
  color: inherit;
  opacity: 0.6;
  transition: opacity var(--duration-fast) var(--ease-default),
              background-color var(--duration-fast) var(--ease-default);
}

.alert__close:hover {
  opacity: 1;
  background-color: rgba(0, 0, 0, 0.06);
}

.alert__close svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  fill: none;
}

/* =============================================
   Alert Type Variants
   ============================================= */

/* Success */
.alert--success {
  background-color: var(--color-success-light, #D1FAE5);
  border-color: var(--color-success, #10B981);
  border-left-color: var(--color-success, #10B981);
  color: #065F46;
}

/* Error */
.alert--error {
  background-color: var(--color-error-light, #FEE2E2);
  border-color: var(--color-error, #EF4444);
  border-left-color: var(--color-error, #EF4444);
  color: #991B1B;
}

/* Warning */
.alert--warning {
  background-color: var(--color-warning-light, #FEF3C7);
  border-color: var(--color-warning, #F59E0B);
  border-left-color: var(--color-warning, #F59E0B);
  color: #92400E;
}

/* Info */
.alert--info {
  background-color: var(--color-info-light, #E8F1FD);
  border-color: var(--color-info, #2F80ED);
  border-left-color: var(--color-info, #2F80ED);
  color: #1E4E8C;
}

/* =============================================
   Alert — Mobile Responsive
   ============================================= */
@media (max-width: 639px) {
  .alert {
    padding: var(--space-3) var(--space-3) var(--space-3) calc(var(--space-3) + 4px);
    gap: var(--space-2);
    font-size: var(--text-sm);
  }

  .alert__title {
    font-size: var(--text-sm);
  }

  .alert__message {
    font-size: 13px;
    line-height: 1.5;
  }

  .alert__close {
    width: 44px;
    height: 44px;
    margin: -10px -10px -10px 0;
  }
}
