/* Lovia feedback surfaces. */
.alert,
body[data-bs-theme] .alert {
    --flash-accent: var(--lv-brand-ink, var(--land-rose, #c42752));
    color: var(--lv-ink, var(--bs-body-color, #1e1924));
    background: color-mix(in srgb, var(--flash-accent) 6%, var(--lv-surface, var(--bs-body-bg, #fff)));
    border: 1px solid color-mix(in srgb, var(--flash-accent) 16%, var(--lv-line, var(--bs-border-color, #ebe4e0)));
    border-radius: 20px !important;
    padding: 16px 20px;
    box-shadow: none;
    font-size: 14px;
    line-height: 1.65;
    overflow-wrap: anywhere;
}
.alert-success, .flash-message-success { --flash-accent: var(--lv-brand-ink, var(--land-rose, #c42752)); }
body[data-bs-theme] .alert-danger, .alert-danger, .flash-message-error { --flash-accent: var(--lv-red, #e5484d); }
body[data-bs-theme] .alert-warning, .alert-warning, .flash-message-warning { --flash-accent: #8a5300; }
body[data-bs-theme] .alert-secondary, .alert-secondary,
body[data-bs-theme] .alert-light, .alert-light,
body[data-bs-theme] .alert-dark, .alert-dark { --flash-accent: var(--lv-muted, #7a7280); }
body[data-bs-theme="dark"] .alert-danger, [data-bs-theme="dark"] .alert-danger, [data-bs-theme="dark"] .flash-message-error { --flash-accent: #ff9b9e; }
body[data-bs-theme="dark"] .alert-warning, [data-bs-theme="dark"] .alert-warning, [data-bs-theme="dark"] .flash-message-warning { --flash-accent: #ffc96b; }
.alert a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.alert-dismissible { padding-right: 3.5rem; }
.flash-stack {
    position: fixed;
    top: max(16px, env(safe-area-inset-top));
    right: max(16px, env(safe-area-inset-right));
    z-index: 1080;
    display: grid;
    gap: 10px;
    width: min(400px, calc(100% - 32px));
    max-height: calc(100dvh - 32px);
    overflow-y: auto;
    padding: 8px;
    pointer-events: none;
}
.flash-message {
    --flash-accent: var(--lv-brand-ink, var(--land-rose, #c42752));
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) 30px;
    align-items: start;
    gap: 14px;
    padding: 18px;
    background: linear-gradient(115deg, color-mix(in srgb, var(--flash-accent) 5%, var(--lv-surface, var(--bs-body-bg, #fff))), var(--lv-surface, var(--bs-body-bg, #fff)) 75%);
    border: 1px solid color-mix(in srgb, var(--flash-accent) 14%, var(--lv-line, var(--bs-border-color, #ebe4e0)));
    border-radius: 24px;
    box-shadow: 0 4px 16px rgba(30, 25, 36, .08);
    color: var(--lv-ink, var(--bs-body-color, #1e1924));
    pointer-events: auto;
    animation: flash-arrive .22s ease-out both;
    transition: opacity .18s, transform .18s;
}
.flash-message-error { --flash-accent: var(--lv-red, #e5484d); }
.flash-message-warning { --flash-accent: #8a5300; }
.flash-icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 15px;
    color: var(--flash-accent);
    background: color-mix(in srgb, var(--flash-accent) 10%, transparent);
}
.flash-message-success .flash-icon {
    color: #fff;
    background: linear-gradient(135deg, var(--lv-brand, var(--land-rose, #ee3f6b)), var(--lv-coral, #ff7a59));
    box-shadow: 0 4px 10px color-mix(in srgb, var(--flash-accent) 18%, transparent);
}
.flash-icon svg { width: 22px; height: 22px; }
.flash-content { min-width: 0; padding-top: 1px; }
.flash-content strong { display: block; margin-bottom: 5px; font-size: 14px; font-weight: 750; line-height: 1.5; letter-spacing: -.015em; }
.flash-content p { margin: 0; color: var(--lv-ink-2, var(--bs-secondary-color, #7a7280)); font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
.flash-content a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.flash-close {
    display: none;
    place-items: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--lv-line, var(--bs-border-color, #ebe4e0));
    border-radius: 50%;
    background: transparent;
    color: var(--lv-muted, var(--bs-secondary-color, #7a7280));
    cursor: pointer;
    transition: color .15s, background .15s;
}
.flash-ready .flash-close { display: grid; }
.flash-close svg { width: 14px; height: 14px; }
.flash-close:hover { color: var(--flash-accent); background: color-mix(in srgb, var(--flash-accent) 8%, var(--lv-surface, var(--bs-body-bg, #fff))); }
.flash-close:focus-visible { outline: 2px solid var(--flash-accent); outline-offset: 3px; }
.flash-ready { touch-action: none; user-select: none; -webkit-user-select: none; }
.flash-message.is-dragging { transition: none; }
.flash-message.is-leaving { animation: none; opacity: 0; transform: translateY(-6px) scale(.98); pointer-events: none; }
@keyframes flash-arrive { from { opacity: 0; transform: translateY(-6px) scale(.98); } to { opacity: 1; transform: none; } }
@media (max-width: 575.98px) {
    .flash-stack { top: max(8px, env(safe-area-inset-top)); right: 8px; width: calc(100% - 16px); max-height: calc(100dvh - 16px); padding: 6px; }
    .flash-message { grid-template-columns: 38px minmax(0, 1fr) 32px; gap: 11px; padding: 15px; border-radius: 22px; }
    .flash-icon { width: 38px; height: 38px; border-radius: 13px; }
    .flash-close { width: 32px; height: 32px; }
}
@media (prefers-reduced-motion: reduce) { .flash-message, .flash-close { animation: none; transition: none; } }
