/* kdg-toast — Sonner-inspired bottom-right toaster */
.kdg-toast-stack {
  position: fixed;
  bottom: var(--kdg-space-4);
  right: var(--kdg-space-4);
  z-index: var(--kdg-z-toast);
  display: flex;
  flex-direction: column-reverse;
  gap: var(--kdg-space-2);
  pointer-events: none;
  max-width: 380px;
  width: calc(100vw - var(--kdg-space-6));
  margin: 0;
  padding: 0;
  list-style: none;
}

/* --- Toast card --- */
.kdg-toast {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--kdg-space-3);
  padding: var(--kdg-space-3) var(--kdg-space-4);
  background: var(--kdg-color-surface);
  border: 1px solid var(--kdg-color-border-subtle);
  border-radius: var(--kdg-radius-lg);
  box-shadow: var(--kdg-shadow-elev-3);
  pointer-events: auto;
  overflow: hidden;
  font-size: var(--kdg-font-size-sm);
  color: var(--kdg-color-text-primary);
  -webkit-backdrop-filter: saturate(180%) blur(8px);
  backdrop-filter: saturate(180%) blur(8px);
  animation: kdg-toast-in var(--kdg-duration-slow) cubic-bezier(0.16, 1, 0.3, 1);
  transition: transform var(--kdg-t-fast),
              opacity var(--kdg-t-fast);
  will-change: transform, opacity;
}

.kdg-toast::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: currentColor;
  opacity: 0.35;
  transform-origin: left center;
  transform: scaleX(1);
  animation: kdg-toast-progress linear forwards;
  pointer-events: none;
}

.kdg-toast--success { color: var(--kdg-color-state-success); }
.kdg-toast--warning { color: var(--kdg-color-state-warning); }
.kdg-toast--danger  { color: var(--kdg-color-state-danger); }
.kdg-toast--info    { color: var(--kdg-color-state-info); }

.kdg-toast--leaving {
  animation: kdg-toast-out var(--kdg-duration-base) var(--kdg-ease-in) forwards;
}
.kdg-toast--leaving::after { animation-play-state: paused; opacity: 0; }

.kdg-toast--paused::after { animation-play-state: paused; }

.kdg-toast--collapsed {
  opacity: 0;
  transform: translateY(8px) scale(0.98);
  pointer-events: none;
  max-height: 0;
  padding-top: 0;
  padding-bottom: 0;
  margin: 0;
  border-width: 0;
  overflow: hidden;
  transition: all var(--kdg-duration-base) var(--kdg-ease-in);
}

.kdg-toast--dragging { transition: none; cursor: grabbing; }

/* --- Icon chip --- */
.kdg-toast__icon {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: currentColor;
  color: var(--kdg-color-text-inverse);
  margin-top: 1px;
}
.kdg-toast__icon i { color: var(--kdg-color-text-inverse); font-size: 14px; line-height: 1; }

.kdg-toast--success .kdg-toast__icon { background: var(--kdg-color-state-success); }
.kdg-toast--warning .kdg-toast__icon { background: var(--kdg-color-state-warning); }
.kdg-toast--danger  .kdg-toast__icon { background: var(--kdg-color-state-danger); }
.kdg-toast--info    .kdg-toast__icon { background: var(--kdg-color-state-info); }

/* --- Body --- */
.kdg-toast__body { flex: 1 1 auto; min-width: 0; color: var(--kdg-color-text-primary); }

.kdg-toast__title {
  font-weight: var(--kdg-font-weight-semibold);
  color: var(--kdg-color-text-primary);
  margin: 0 0 2px;
  font-size: var(--kdg-font-size-sm);
  line-height: var(--kdg-line-height-snug);
}

.kdg-toast__message {
  color: var(--kdg-color-text-secondary);
  margin: 0;
  word-wrap: break-word;
  font-size: var(--kdg-font-size-sm);
  line-height: var(--kdg-line-height-base);
}

.kdg-toast__actions {
  display: flex;
  gap: var(--kdg-space-2);
  margin-top: var(--kdg-space-2);
}

.kdg-toast__action {
  appearance: none;
  background: transparent;
  border: 1px solid var(--kdg-color-border-strong);
  border-radius: var(--kdg-radius-sm);
  padding: 4px 10px;
  font-size: var(--kdg-font-size-xs);
  font-weight: var(--kdg-font-weight-medium);
  color: var(--kdg-color-text-primary);
  cursor: pointer;
  transition: background var(--kdg-t-fast),
              border-color var(--kdg-t-fast);
}
.kdg-toast__action:hover {
  background: var(--kdg-color-state-neutral-soft);
  border-color: var(--kdg-color-border-strong);
}

/* --- Close button --- */
.kdg-toast__close {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: var(--kdg-radius-sm);
  color: var(--kdg-color-text-tertiary);
  cursor: pointer;
  margin-left: var(--kdg-space-1);
  transition: background var(--kdg-t-fast),
              color var(--kdg-t-fast);
}
.kdg-toast__close:hover {
  background: var(--kdg-color-state-neutral-soft);
  color: var(--kdg-color-text-primary);
}

.kdg-toast--non-dismissible .kdg-toast__close { display: none; }

/* --- Animations --- */
@keyframes kdg-toast-in {
  from { opacity: 0; transform: translateX(calc(100% + var(--kdg-space-4))); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes kdg-toast-out {
  from { opacity: 1; transform: translateX(0); }
  to   { opacity: 0; transform: translateX(calc(100% + var(--kdg-space-4))); }
}
@keyframes kdg-toast-progress {
  from { transform: scaleX(1); }
  to   { transform: scaleX(0); }
}

/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce) {
  .kdg-toast { animation: none; }
  .kdg-toast--leaving { animation: none; opacity: 0; }
  .kdg-toast::after { animation: none; opacity: 0; }
}
