.app-toast-container { position: fixed; top: 1rem; right: 1rem; z-index: 12000; display: flex; flex-direction: column; gap: .75rem; width: min(390px, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem); overflow-y: auto; pointer-events: none; }
.app-toast { display: flex; align-items: flex-start; gap: 1rem; flex-shrink: 0; padding: 1rem; border: 1px solid var(--bs-border-color, #dfe3e8); border-left: 4px solid var(--toast-color); border-radius: .5rem; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.15); pointer-events: auto; animation: app-toast-enter .18s ease-out; }
.app-toast-success { --toast-color: var(--bs-success, #198754); }
.app-toast-danger { --toast-color: var(--bs-danger, #dc3545); }
.app-toast-warning { --toast-color: #cc9000; }
.app-toast-info { --toast-color: var(--bs-info, #0dcaf0); }
.app-toast-content { flex: 1; min-width: 0; }
.app-toast-title { display: block; color: var(--toast-color); margin-bottom: .25rem; }
.app-toast-message { white-space: pre-line; overflow-wrap: anywhere; font-size: .875rem; }
.app-toast .btn-close { flex-shrink: 0; margin-top: .1rem; }
@keyframes app-toast-enter { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .app-toast { animation: none; } }
