.ui-toast-region {
    position: fixed; z-index: 5000; right: 22px; bottom: 22px; width: min(390px, calc(100vw - 44px));
    display: grid; gap: 10px; pointer-events: none;
}
.ui-toast-card {
    --toast-accent: #2d63e8;
    display: grid; grid-template-columns: 34px minmax(0, 1fr) 28px; align-items: center; gap: 10px;
    min-height: 64px; padding: 11px 10px 11px 12px; border: 1px solid #dbe3f0; border-left: 4px solid var(--toast-accent);
    border-radius: 14px; color: #172642; background: rgba(255,255,255,.98);
    box-shadow: 0 18px 46px rgba(31,64,120,.18); pointer-events: auto;
    animation: uiToastEnter .24s ease-out both;
}
.ui-toast-card[data-type="success"] { --toast-accent: #20835d; }
.ui-toast-card[data-type="warning"] { --toast-accent: #b2761d; }
.ui-toast-card[data-type="error"] { --toast-accent: #c83f4f; }
.ui-toast-card.is-leaving { animation: uiToastLeave .18s ease-in both; }
.ui-toast-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 10px; color: var(--toast-accent); background: color-mix(in srgb, var(--toast-accent) 11%, white); }
.ui-toast-icon svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ui-toast-copy { min-width: 0; line-height: 1.55; font-size: 12px; word-break: break-word; }
.ui-toast-close { width: 28px; height: 28px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 8px; color: #72809a; background: transparent; box-shadow: none; font: 18px/1 "Microsoft YaHei", sans-serif; cursor: pointer; }
.ui-toast-close:hover, .ui-toast-close:focus-visible { color: #214fbe; background: #edf3ff; box-shadow: none; transform: none; }
.ui-toast-close:focus-visible { outline: 2px solid rgba(45,99,232,.35); outline-offset: 1px; }
@keyframes uiToastEnter { from { opacity: 0; transform: translate3d(18px, 10px, 0); } }
@keyframes uiToastLeave { to { opacity: 0; transform: translate3d(18px, 4px, 0); } }
@media (prefers-reduced-motion: reduce) {
    .ui-toast-card, .ui-toast-card.is-leaving { animation: none; }
}
