@layer components {
  .toast-container {
    position: fixed;
    display: flex;
    flex-direction: column;
    pointer-events: none;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;

    overflow: visible;

    &::backdrop {
      display: none;
    }

    &[data-placement="top-left"] {
      inset: var(--space-4) auto auto var(--space-4);
    }

    &[data-placement="top-center"] {
      inset: var(--space-4) auto auto 50%;
      transform: translateX(-50%);
    }

    &[data-placement="top-right"] {
      inset: var(--space-4) var(--space-4) auto auto;
    }

    &[data-placement="bottom-left"] {
      inset: auto auto var(--space-4) var(--space-4);
      flex-direction: column-reverse;
    }

    &[data-placement="bottom-center"] {
      inset: auto auto var(--space-4) 50%;
      transform: translateX(-50%);
      flex-direction: column-reverse;
    }

    &[data-placement="bottom-right"] {
      inset: auto var(--space-4) var(--space-4) auto;
      flex-direction: column-reverse;
    }
  }

  .toast {
    padding: var(--space-5) var(--space-4);
    max-width: 28rem;
    min-width: 20rem;
    pointer-events: auto;
    background-color: var(--card);
    border: 1px solid var(--border);
    border-inline-start-width: var(--space-1);
    border-inline-start-style: solid;
    border-radius: var(--radius-medium);
    box-shadow: var(--shadow-small);
    transition: opacity 150ms, transform 150ms, margin 150ms;
    line-height: 1;

    .toast-title {
      font-weight: 600;
      margin: 0 0 var(--space-3) 0;
    }
    .toast-message {
      color: var(--muted-foreground);
    }

    &[data-variant="success"] {
      border-inline-start-color: var(--success);
    }

    &[data-variant="danger"] {
      border-inline-start-color: var(--danger);
    }

    &[data-variant="warning"] {
      border-inline-start-color: var(--warning);
    }

    &[data-variant="info"] {
      border-inline-start-color: var(--secondary);
    }

    & > [data-close] {
      margin-inline-start: auto;
      background: none;
      border: none;
      padding: 0;
      cursor: pointer;
      opacity: 0.5;

      &:hover {
        opacity: 1;
      }
    }

    margin: var(--space-2) 0;

    &[data-entering] {
      opacity: 0;
      transform: translateY(-1rem);
    }

    &[data-exiting] {
      opacity: 0;
      margin: 0;
      padding-block: 0;
      max-height: 0;
      overflow: hidden;
      transition: opacity 200ms, margin 200ms, padding 200ms, max-height 200ms;
    }
  }
}
