.nano-toast-container {
  position: fixed;
  bottom: var(--space-4);
  right: var(--space-4);
  z-index: var(--z-toast);
  display: flex;
  flex-direction: column-reverse;
  gap: var(--space-2);
  max-width: 24rem;
  width: 100%;
  pointer-events: none;
}

.nano-toast {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  background-color: hsl(var(--color-background));
  color: hsl(var(--color-foreground));
  border: 1px solid hsl(var(--color-border));
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  pointer-events: auto;
  animation: nano-toast-slide-in var(--duration-slow) var(--ease-out);

  &.is-dismissing {
    animation: nano-toast-slide-out var(--duration-normal) var(--ease-in) forwards;
  }

  .nano-toast__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--space-0-5);
  }

  .nano-toast__title {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    line-height: var(--leading-normal);
  }

  .nano-toast__description {
    font-size: var(--text-sm);
    line-height: var(--leading-normal);
    color: hsl(var(--color-muted-foreground));
  }

  .nano-toast__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.25rem;
    height: 1.25rem;
    padding: 0;
    border: none;
    border-radius: var(--radius-sm);
    background-color: transparent;
    color: hsl(var(--color-muted-foreground));
    cursor: pointer;
    transition: color var(--duration-fast) var(--ease-default);

    &:hover {
      color: hsl(var(--color-foreground));
    }

    svg {
      width: 0.875rem;
      height: 0.875rem;
    }
  }

  .nano-toast__action {
    flex-shrink: 0;
    align-self: center;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1-5) var(--space-3);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: hsl(var(--color-foreground));
    background-color: transparent;
    border: 1px solid hsl(var(--color-border));
    border-radius: var(--radius-md);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    transition: background-color var(--duration-fast) var(--ease-default),
                border-color var(--duration-fast) var(--ease-default);

    &:hover {
      background-color: hsl(var(--color-muted));
    }

    &:focus-visible {
      outline: 2px solid hsl(var(--color-ring));
      outline-offset: 2px;
    }
  }

  &.nano-toast--success {
    border-color: hsl(var(--color-success) / 0.5);
    background-color: hsl(var(--color-success) / 0.05);

    .nano-toast__title {
      color: hsl(var(--color-success));
    }

    .nano-toast__action {
      border-color: hsl(var(--color-success) / 0.4);
      color: hsl(var(--color-success));

      &:hover {
        background-color: hsl(var(--color-success) / 0.1);
      }
    }
  }

  &.nano-toast--destructive {
    border-color: hsl(var(--color-destructive) / 0.5);
    background-color: hsl(var(--color-destructive) / 0.05);

    .nano-toast__title {
      color: hsl(var(--color-destructive));
    }

    .nano-toast__action {
      border-color: hsl(var(--color-destructive) / 0.4);
      color: hsl(var(--color-destructive));

      &:hover {
        background-color: hsl(var(--color-destructive) / 0.1);
      }
    }
  }

  &.nano-toast--warning {
    border-color: hsl(var(--color-warning) / 0.5);
    background-color: hsl(var(--color-warning) / 0.05);

    .nano-toast__title {
      color: hsl(var(--color-warning));
    }

    .nano-toast__action {
      border-color: hsl(var(--color-warning) / 0.4);
      color: hsl(var(--color-warning));

      &:hover {
        background-color: hsl(var(--color-warning) / 0.1);
      }
    }
  }
}

@keyframes nano-toast-slide-in {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes nano-toast-slide-out {
  from {
    transform: translateX(0);
    opacity: 1;
  }
  to {
    transform: translateX(100%);
    opacity: 0;
  }
}
