/*
 * ТОСТ «✓ Сохранено» (SAVE-B, оператор 30.09) — один компонент на PayPage и консоль (`toast.js`).
 * Снизу по центру выезжает строка итога и уходит через ~2.4 с. Только для УСПЕХА: ошибки остаются
 * на своих местах рядом с полем. Текст печёт сервер (`next`/`text` ответа); значок ✓ — оформление.
 * Регион `role=status` + `aria-live=polite` живёт в документе с загрузки модуля — чтец объявит вставку.
 * Цвета — из токенов поверхности (`--pay-*` либо `--admin-*`); движение — transform/opacity.
 */
.toast-region{position:fixed;left:0;right:0;bottom:max(20px,env(safe-area-inset-bottom));z-index:1000;display:flex;justify-content:center;padding:0 16px;pointer-events:none}
.toast-item{--toast-ok:var(--pay-mint,var(--admin-good,#abceb7));display:inline-flex;align-items:center;gap:10px;max-width:min(520px,100%);padding:10px 16px;border-radius:12px;
 background:color-mix(in srgb,var(--toast-ok) 12%,var(--pay-surface,var(--admin-surface,#17191c)));border:1px solid color-mix(in srgb,var(--toast-ok) 50%,transparent);
 color:var(--pay-text,var(--admin-text,#f0f1f2));font-size:var(--pay-type-small,var(--admin-type-small,13px));line-height:1.45;
 box-shadow:0 12px 28px -10px color-mix(in srgb,var(--pay-black,var(--admin-shadow,#000)) 45%,transparent);
 animation:toast-in .42s cubic-bezier(.2,.9,.3,1.1) both}
.toast-mark{flex:none;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:color-mix(in srgb,var(--toast-ok) 22%,transparent);color:var(--toast-ok);font-weight:700;font-size:12px}
.toast-text{min-width:0;overflow-wrap:anywhere}
.toast-text::first-letter{text-transform:uppercase}
.toast-item.is-leaving{animation:toast-out .32s ease-in both}
@keyframes toast-in{from{opacity:0;transform:translateY(140%)}to{opacity:1;transform:none}}
@keyframes toast-out{to{opacity:0;transform:translateY(140%)}}
@media (prefers-reduced-motion:reduce){.toast-item,.toast-item.is-leaving{animation:none}}
