/* ============================================================ TOAST — Bottom-center toast messages (CSS-only auto-fade). Root class: .toast-container + .toast ============================================================ */ #toast-region { position: fixed; bottom: var(--space-l); left: 50%; transform: translateX(-50%); z-index: 10000; display: flex; flex-direction: column; align-items: center; gap: var(--space-xs); pointer-events: none; width: max-content; max-width: min(560px, calc(100vw - 2 * var(--space-l))); } .toast { padding: var(--space-s) var(--space-m); border-radius: var(--radius); font-size: var(--step-0); border-left: 4px solid; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25); pointer-events: auto; /* enter then fade out — total visible ~6.35s */ animation: toast-enter 0.35s ease-out, toast-exit 0.5s ease-in 6s forwards; } .toast--error { background: var(--bg-secondary); border-color: var(--error); color: var(--text-primary); } .toast--success { background: var(--bg-secondary); border-color: var(--success); color: var(--text-primary); } .toast--warning { background: var(--bg-secondary); border-color: var(--warning); color: var(--text-primary); animation: toast-enter 0.35s ease-out; } .toast--warning a { color: inherit; text-decoration: underline; } @keyframes toast-enter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes toast-exit { from { opacity: 1; } to { opacity: 0; pointer-events: none; } }