/* Alert Component */

/* Contextual feedback messages for user notifications */

@layer components {
  /* ============================================
     BASE ALERT
     ============================================ */
  .alert {
    /* Layout */
    display: flex;
    align-items: flex-start;
    gap: var(--space-md);
    padding: var(--space-md) var(--space-lg);

    /* Typography */
    font-size: var(--font-size-md);
    line-height: var(--line-height-normal);

    /* Appearance */
    border-radius: var(--radius-lg);
    border-left: 4px solid;

    /* Animation */
    animation: alert-slide-in var(--transition-normal);
  }

  @keyframes alert-slide-in {
    from {
      opacity: 0;
      transform: translateY(-0.5rem);
    }

    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  /* ============================================
     ALERT STRUCTURE
     ============================================ */
  .alert__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    margin-top: 0.125rem;
  }

  .alert__icon svg {
    width: 100%;
    height: 100%;
  }

  .alert__content {
    flex: 1;
    min-width: 0;
  }

  .alert__title {
    font-weight: var(--font-weight-semibold);
    margin-bottom: var(--space-xs);
  }

  .alert__message {
    color: inherit;
  }

  .alert__close {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.25rem;
    height: 1.25rem;
    padding: 0;
    margin-top: 0.125rem;
    margin-left: var(--space-sm);
    background: none;
    border: none;
    cursor: pointer;
    opacity: 0.6;
    transition: opacity var(--transition-fast);
  }

  .alert__close:hover {
    opacity: 1;
  }

  .alert__close svg {
    width: 100%;
    height: 100%;
  }

  /* ============================================
     VARIANT COLORS
     ============================================ */

  /* Success */
  .alert--success {
    background-color: var(--color-success-light);
    border-left-color: var(--color-success);
    color: var(--color-success);
  }

  .alert--success .alert__title {
    color: var(--color-success-active);
  }

  .alert--success a {
    color: var(--color-success-active);
    text-decoration: underline;
    font-weight: var(--font-weight-medium);
  }

  .alert--success a:hover {
    color: var(--color-dark);
  }

  /* Error */
  .alert--error {
    background-color: var(--color-error-light);
    border-left-color: var(--color-error);
    color: var(--color-error);
  }

  .alert--error .alert__title {
    color: var(--color-error-active);
  }

  .alert--error a {
    color: var(--color-error-active);
    text-decoration: underline;
    font-weight: var(--font-weight-medium);
  }

  .alert--error a:hover {
    color: var(--color-dark);
  }

  /* Warning */
  .alert--warning {
    background-color: var(--color-warning-light);
    border-left-color: var(--color-warning);
    color: var(--color-warning-dark);
  }

  .alert--warning .alert__title {
    color: var(--color-warning-dark);
  }

  .alert--warning a {
    color: var(--color-warning-dark);
    text-decoration: underline;
    font-weight: var(--font-weight-medium);
  }

  .alert--warning a:hover {
    color: var(--color-dark);
  }

  /* Info */
  .alert--info {
    background-color: var(--color-info-light);
    border-left-color: var(--color-info);
    color: var(--color-info);
  }

  .alert--info .alert__title {
    color: var(--color-info-active);
  }

  .alert--info a {
    color: var(--color-info-active);
    text-decoration: underline;
    font-weight: var(--font-weight-medium);
  }

  .alert--info a:hover {
    color: var(--color-dark);
  }

  /* Neutral */
  .alert--neutral {
    background-color: var(--color-gray-1);
    border-left-color: var(--color-gray-3);
    color: var(--color-gray-4);
  }

  .alert--neutral .alert__title {
    color: var(--color-dark);
  }

  .alert--neutral a {
    color: var(--color-dark);
    text-decoration: underline;
    font-weight: var(--font-weight-medium);
  }

  .alert--neutral a:hover {
    color: var(--color-brand);
  }

  /* ============================================
     DISMISSIBLE VARIANT
     ============================================ */
  .alert--dismissible {
    padding-right: var(--space-md);
  }

  /* Animation for removal */
  .alert.removing {
    animation: alert-slide-out var(--transition-normal);
  }

  @keyframes alert-slide-out {
    from {
      opacity: 1;
      transform: translateY(0);
    }

    to {
      opacity: 0;
      transform: translateY(-0.5rem);
    }
  }
}
