/* uc-toast: transient notifications. A viewport-anchored .uc-toast-stack holds one or more .uc-toast
   cards (message + optional action + close). Consumes only --uc-* (themes + brands automatically).
   Variants --success/--danger/--accent tint the left rail. .is-leaving animates the exit.
   Behaviour (stack create, auto-dismiss, pause-on-hover, close) lives in runtime/uc-toast.js
   (window.ucToast); the CSS also styles a static, no-JS toast. */
/* Operator 2026-09-19: the stack anchors BOTTOM-LEFT (left:16px). The bottom-right corner belongs
   to host FABs (plan/do had already overridden the kit right-anchor locally for exactly that);
   ds/85 made left the kit default so every consumer matches without a local override.
   Operator 2026-09-19 (ds/86): z-index 2147483647 - toasts ALWAYS on top (os window chrome was
   outranking 9000; hosts had local z-fixes before the kit took it over). */
.uc-toast-stack{position:fixed;z-index:2147483647;left:16px;bottom:16px;display:flex;flex-direction:column;gap:10px;max-width:min(92vw,380px);pointer-events:none}
.uc-toast-stack>*{pointer-events:auto}
/* Motion (2026-09-16, transitions.dev t-toast adapted): rise-in on the slower
   open clock (350ms, 16px + scale .97 + cross-blur 2px), exit on the faster
   close clock (250ms) back through the same hidden state. Open deliberate,
   dismiss snappy. Same ease both ways (smooth-out). */
.uc-toast{position:relative;display:flex;align-items:center;gap:10px;box-sizing:border-box;padding:11px 14px;background:var(--uc-surface-2);color:var(--uc-text);border:1px solid var(--uc-border);border-radius:var(--uc-radius);box-shadow:0 6px 20px rgba(0,0,0,.18);font:500 13.5px/1.4 var(--uc-font,system-ui,sans-serif);animation:uc-toast-in .35s cubic-bezier(.22,1,.36,1);will-change:transform,opacity,filter}
.uc-toast-msg{flex:1 1 auto;min-width:0}
.uc-toast-action{flex:0 0 auto;background:transparent;border:0;color:var(--uc-accent);font:700 13px/1 var(--uc-font,system-ui,sans-serif);cursor:pointer;padding:2px;text-decoration:underline}
.uc-toast-close{flex:0 0 auto;width:22px;height:22px;border:0;border-radius:5px;background:transparent;color:var(--uc-text-dim);font-size:16px;line-height:1;cursor:pointer;padding:0}
.uc-toast-close:hover{color:var(--uc-text)}
/* Semantic variants carry a tinted status ground (operator 9/12: a success toast should read
   GREEN, not a neutral card with a hairline rail). color-mix on the token keeps it theme- and
   brand-safe: a solid token ground would fail text contrast in dark themes (#3fa66a + white)
   and under brand overrides; the 18% wash over --uc-surface-2 reads unmistakably green in
   light and dark while the message stays --uc-text. Browsers without color-mix degrade to the
   neutral card + rail (the pre-67 look) - never a broken sheet. */
.uc-toast--success{border-left:3px solid var(--uc-success);background:color-mix(in srgb,var(--uc-success) 18%,var(--uc-surface-2));border-color:color-mix(in srgb,var(--uc-success) 45%,var(--uc-border));border-left-color:var(--uc-success)}
.uc-toast--danger{border-left:3px solid var(--uc-danger);background:color-mix(in srgb,var(--uc-danger) 18%,var(--uc-surface-2));border-color:color-mix(in srgb,var(--uc-danger) 45%,var(--uc-border));border-left-color:var(--uc-danger)}
/* Warn mirrors the semantic success/danger treatment (rail + tinted ground); os.u.cash's local
   amber rail (#febc2e) is retired in favor of this. Requires a tokens sheet carrying --uc-warn
   (ds/70+); ds/3 tokens predate it, so warn-capable hosts must pair this sheet with ds/70 tokens. */
.uc-toast--warn{border-left:3px solid var(--uc-warn);background:color-mix(in srgb,var(--uc-warn) 18%,var(--uc-surface-2));border-color:color-mix(in srgb,var(--uc-warn) 45%,var(--uc-border));border-left-color:var(--uc-warn)}
.uc-toast--accent{border-left:3px solid var(--uc-accent)}
.uc-toast.is-leaving{opacity:0;transform:translateY(16px) scale(.97);filter:blur(2px);transition:opacity .25s cubic-bezier(.22,1,.36,1),transform .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1)}
@keyframes uc-toast-in{from{opacity:0;transform:translateY(16px) scale(.97);filter:blur(2px)}to{opacity:1;transform:none;filter:blur(0)}}
@media (prefers-reduced-motion:reduce){.uc-toast{animation:none}.uc-toast.is-leaving{transition:none}}
