/**
 * Глобальные flash-сообщения: стек сверху справа, под фиксированным хедером.
 * Отступы от правого и верхнего краёв — как раньше от правого и нижнего (1.25rem).
 * Разметка — nfs-ds4-toast (как в демо «S · Уведомления», nfs-ds-v4-pack.css).
 */
.nfs-flash-stack {
  position: fixed;
  top: calc(64px + 1.25rem + env(safe-area-inset-top, 0px));
  right: 1.25rem;
  bottom: auto;
  left: auto;
  z-index: 1090; /* выше типичного контента, согласовано с Bootstrap toast */
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  max-width: min(26rem, calc(100vw - 2.5rem));
  max-height: calc(100vh - 64px - 2.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  overflow-y: auto;
  overflow-x: hidden;
  pointer-events: none;
}

/* Мобильная шапка выше — как body:has(.nfs-header) в nfs_header.css */
@media (max-width: 1023.98px) {
  .nfs-flash-stack {
    top: calc(72px + 1.25rem + env(safe-area-inset-top, 0px));
    max-height: calc(100vh - 72px - 2.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  }

  /* Раскрытое поле поиска — двухрядный хедер */
  body:has(.nfs-header.nfs-header--search-open) .nfs-flash-stack {
    top: calc(132px + 1.25rem + env(safe-area-inset-top, 0px));
    max-height: calc(100vh - 132px - 2.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  }
}

/* Въезд справа: тост смещён вправо за край и заезжает влево (px — без обрезки при overflow стека) */
@keyframes nfsFlashToastEnter {
  from {
    opacity: 0;
    transform: translate3d(120%, 0, 0);
  }

  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

.nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item {
  pointer-events: auto;
  margin-bottom: 0;
  text-align: left;
  word-break: break-word;
  width: min(26rem, calc(100vw - 2.5rem));
  max-width: 100%;
  transform-origin: right top;
  will-change: opacity, transform;
  /* Перекрываем встроенную анимацию тоста — единый вход в стеке */
  animation: nfsFlashToastEnter 0.38s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item.fade {
  transition: opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item[data-closing='true'] {
  animation: none;
}

.nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item.fade:not(.show) {
  opacity: 0;
  transform: translate3d(120%, 0, 0);
}

@media (max-width: 575.98px) {
  .nfs-flash-stack {
    left: 0.75rem;
    right: 0.75rem;
    top: calc(72px + 0.75rem + env(safe-area-inset-top, 0px));
    max-width: none;
    align-items: stretch;
    max-height: calc(100vh - 72px - 1.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  }

  body:has(.nfs-header.nfs-header--search-open) .nfs-flash-stack {
    top: calc(132px + 0.75rem + env(safe-area-inset-top, 0px));
    max-height: calc(100vh - 132px - 1.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  }

  .nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item {
    animation: none;
    opacity: 1;
    transform: none;
  }

  .nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item.fade {
    transition: opacity 0.18s ease;
  }

  .nfs-flash-stack .nfs-ds4-toast.nfs-flash-stack__item.fade:not(.show) {
    transform: none;
  }
}
