@layer base {
  .toaster {
    --viewport-padding: var(--spacing-4);
    --toast-width: 360px;
    --toast-border-radius: var(--radius);
    --toast-font-family: var(--font-family-base);
    --toast-animation-duration: var(--animation-duration-normal);
  }
  
  .toast {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-3);
    padding: var(--spacing-4);
    background-color: var(--card);
    color: var(--card-foreground);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--border);
    width: var(--toast-width);
    position: relative;
    animation: slideIn var(--toast-animation-duration) cubic-bezier(0.16, 1, 0.3, 1);
    transition: transform 0.2s ease, opacity 0.2s ease;
  }
  
  .toast:focus {
    outline: none;
    box-shadow: var(--shadow-focus);
  }
  
  .toast:hover {
    transform: translateY(-2px);
  }
  
  .content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-1);
    min-width: 0;
  }
  
  .title {
    font-weight: 600;
    font-size: 1rem;
    color: var(--card-foreground);
    line-height: 1.4;
  }
  
  .description {
    font-size: 0.875rem;
    color: var(--muted-foreground);
    line-height: 1.4;
  }
  
  .icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    color: var(--primary);
  }
  
  .actionButton {
    padding: var(--spacing-2) var(--spacing-3);
    background-color: var(--primary);
    color: var(--primary-foreground);
    border: none;
    border-radius: var(--radius-sm);
    font-weight: 500;
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color var(--animation-duration-fast) ease;
    margin-left: var(--spacing-2);
    white-space: nowrap;
  }
  
    .actionButton:hover {
    background-color: color-mix(in srgb, var(--primary) 90%, black);
  }

  .actionButton:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus);
  }

  .actionButton:active {
    background-color: color-mix(in srgb, var(--primary) 80%, black);
  }
  
  .cancelButton {
    padding: var(--spacing-2) var(--spacing-3);
    background-color: var(--muted);
    color: var(--muted-foreground);
    border: none;
    border-radius: var(--radius-sm);
    font-weight: 500;
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color var(--animation-duration-fast) ease;
    white-space: nowrap;
  }
  
    .cancelButton:hover {
    background-color: color-mix(in srgb, var(--muted) 80%, white);
  }

  .cancelButton:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus);
  }

  .cancelButton:active {
    background-color: color-mix(in srgb, var(--muted) 75%, white);
  }
  
  .closeButton {
    position: absolute;
    top: var(--spacing-2);
    right: var(--spacing-2);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: var(--radius-sm);
    background-color: transparent;
    color: var(--muted-foreground);
    border: none;
    cursor: pointer;
    opacity: 0.7;
    transition: opacity var(--animation-duration-fast) ease, 
                background-color var(--animation-duration-fast) ease;
  }
  
  .closeButton:hover {
    opacity: 1;
    background-color: var(--muted);
  }
  
  .closeButton:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus);
    opacity: 1;
  }
  
  /* Dark mode adjustments */
  :global(.dark) .toast {
    border-color: var(--border);
  }
  
    :global(.dark) .actionButton:hover {
    background-color: color-mix(in srgb, var(--primary) 90%, white);
  }

  :global(.dark) .actionButton:active {
    background-color: color-mix(in srgb, var(--primary) 80%, white);
  }

  :global(.dark) .cancelButton:hover {
    background-color: color-mix(in srgb, var(--muted) 80%, black);
  }

  :global(.dark) .cancelButton:active {
    background-color: color-mix(in srgb, var(--muted) 70%, black);
  }
  
  @keyframes slideIn {
    from {
      transform: translateX(calc(100% + var(--viewport-padding)));
      opacity: 0;
    }
    to {
      transform: translateX(0);
      opacity: 1;
    }
  }
}