/* ==========================================================
 * Solivya Notify - stili sistema notifiche unificato
 * (toast scorrevoli + modale alert/confirm)
 * ========================================================== */

:root {
    --sn-primary: #4c51bf;
    --sn-primary-dark: #3c41a3;
    --sn-success: #06d6a0;
    --sn-success-dark: #04ad81;
    --sn-warning: #f59e0b;
    --sn-warning-dark: #d97706;
    --sn-error: #ef4444;
    --sn-error-dark: #b91c1c;
    --sn-info: #3b82f6;
    --sn-text: #0f172a;
    --sn-text-muted: #475569;
    --sn-bg: #ffffff;
    --sn-border: rgba(15, 23, 42, 0.08);
    --sn-shadow: 0 22px 60px rgba(15, 23, 42, 0.22);
}

/* ==================== TOASTS ==================== */
.sn-toasts {
    position: fixed;
    top: 24px;
    right: 24px;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 12px;
    pointer-events: none;
    max-width: calc(100vw - 32px);
}

.sn-toast {
    pointer-events: auto;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    min-width: 280px;
    max-width: 440px;
    background: var(--sn-bg);
    border-radius: 12px;
    padding: 14px 16px;
    box-shadow: 0 14px 40px rgba(15, 23, 42, 0.14);
    border-left: 4px solid var(--sn-info);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    color: var(--sn-text);
    transform: translateX(110%);
    opacity: 0;
    transition: transform .28s cubic-bezier(.22,.61,.36,1), opacity .25s ease;
}

.sn-toast.sn-toast-in {
    transform: translateX(0);
    opacity: 1;
}
.sn-toast.sn-toast-out {
    transform: translateX(110%);
    opacity: 0;
}

.sn-toast-success { border-left-color: var(--sn-success); }
.sn-toast-error   { border-left-color: var(--sn-error); }
.sn-toast-warning { border-left-color: var(--sn-warning); }
.sn-toast-info    { border-left-color: var(--sn-info); }

.sn-toast-icon {
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    margin-top: 2px;
    color: var(--sn-info);
}
.sn-toast-success .sn-toast-icon { color: var(--sn-success); }
.sn-toast-error   .sn-toast-icon { color: var(--sn-error); }
.sn-toast-warning .sn-toast-icon { color: var(--sn-warning); }
.sn-toast-info    .sn-toast-icon { color: var(--sn-info); }

.sn-toast-icon svg {
    width: 100%;
    height: 100%;
}

.sn-toast-body {
    flex: 1;
    min-width: 0;
}

.sn-toast-title {
    font-weight: 700;
    font-size: 14px;
    margin-bottom: 4px;
    color: var(--sn-text);
}

.sn-toast-msg {
    font-size: 14px;
    line-height: 1.45;
    color: var(--sn-text-muted);
    word-wrap: break-word;
}

.sn-toast-close {
    background: transparent;
    border: none;
    color: var(--sn-text-muted);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    flex: 0 0 24px;
    transition: background .15s ease, color .15s ease;
}
.sn-toast-close:hover {
    background: rgba(15, 23, 42, 0.08);
    color: var(--sn-text);
}

@media (max-width: 520px) {
    .sn-toasts {
        top: 12px;
        right: 12px;
        left: 12px;
    }
    .sn-toast {
        min-width: 0;
        max-width: 100%;
    }
}

/* ==================== MODAL ==================== */
/* Sessione 26 sexies - FIX FREEZE SCHERMATA:
 * Il bug precedente era che `.sn-modal { display: flex }` con specificita' uguale
 * a `[hidden]` (browser default) significava che `modal.hidden = true` da JS NON
 * nascondeva la modale, e durante la finestra di fade-out (200ms) il backdrop
 * trasparente bloccava tutti i click sulla pagina sottostante. Risultato:
 * dopo aver eliminato una chat (o chiuso qualunque modale) lo schermo sembrava
 * "freezzato" finche' il setTimeout non scattava.
 *
 * Fix: pointer-events: none di default, abilitati solo con .sn-modal-in.
 * Inoltre `[hidden]` esplicito con !important per blindare la nascondibilita'. */
.sn-modal {
    position: fixed;
    inset: 0;
    z-index: 10001;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    opacity: 0;
    transition: opacity .2s ease;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    pointer-events: none;
}

.sn-modal[hidden] { display: none !important; }

.sn-modal.sn-modal-in { opacity: 1; pointer-events: auto; }
.sn-modal.sn-modal-out { opacity: 0; pointer-events: none; }

.sn-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    cursor: pointer;
}

.sn-modal-dialog {
    position: relative;
    z-index: 1;
    background: var(--sn-bg);
    max-width: 480px;
    width: 100%;
    border-radius: 18px;
    padding: 30px 28px 24px;
    box-shadow: var(--sn-shadow);
    text-align: center;
    transform: translateY(12px) scale(.98);
    transition: transform .25s cubic-bezier(.22,.61,.36,1);
}

.sn-modal-in .sn-modal-dialog {
    transform: translateY(0) scale(1);
}

.sn-modal-icon {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    color: var(--sn-info);
    background: rgba(59, 130, 246, 0.12);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
}
.sn-modal-icon:empty { display: none; }
.sn-modal-icon svg { width: 100%; height: 100%; }

.sn-modal-dialog[data-variant="success"] .sn-modal-icon { color: var(--sn-success); background: rgba(6, 214, 160, 0.13); }
.sn-modal-dialog[data-variant="error"]   .sn-modal-icon { color: var(--sn-error);   background: rgba(239, 68, 68, 0.13); }
.sn-modal-dialog[data-variant="warning"] .sn-modal-icon { color: var(--sn-warning); background: rgba(245, 158, 11, 0.15); }
.sn-modal-dialog[data-variant="info"]    .sn-modal-icon { color: var(--sn-info);    background: rgba(59, 130, 246, 0.13); }
.sn-modal-dialog[data-variant="confirm"] .sn-modal-icon { color: #6b46c1;           background: rgba(107, 70, 193, 0.13); }

.sn-modal-title {
    margin: 0 0 8px;
    font-size: 22px;
    font-weight: 700;
    color: var(--sn-text);
    letter-spacing: -0.01em;
}

.sn-modal-message {
    color: var(--sn-text-muted);
    font-size: 15px;
    line-height: 1.55;
    margin: 0 auto 22px;
    max-width: 360px;
    white-space: pre-line;
}

.sn-modal-body {
    margin: 0 0 18px;
    text-align: left;
}
.sn-modal-body:empty { display: none; }

.sn-modal-actions {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
}

.sn-btn {
    appearance: none;
    border: none;
    border-radius: 10px;
    padding: 11px 22px;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: transform .12s ease, box-shadow .15s ease, background .15s ease;
    min-width: 110px;
}

.sn-btn:hover { transform: translateY(-1px); }
.sn-btn:active { transform: translateY(0); }

.sn-btn-primary {
    background: var(--sn-primary);
    color: #fff;
    box-shadow: 0 4px 12px rgba(76, 81, 191, 0.25);
}
.sn-btn-primary:hover { background: var(--sn-primary-dark); box-shadow: 0 6px 18px rgba(76, 81, 191, 0.35); }

.sn-btn-secondary {
    background: #f1f5f9;
    color: var(--sn-text);
}
.sn-btn-secondary:hover { background: #e2e8f0; }

.sn-btn-danger {
    background: var(--sn-error);
    color: #fff;
    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.25);
}
.sn-btn-danger:hover { background: var(--sn-error-dark); box-shadow: 0 6px 18px rgba(239, 68, 68, 0.35); }

.sn-btn-success {
    background: var(--sn-success);
    color: #fff;
    box-shadow: 0 4px 12px rgba(6, 214, 160, 0.25);
}
.sn-btn-success:hover { background: var(--sn-success-dark); }

/* Form embed nelle modali (per il rating chat) */
.sn-modal-body .sn-rating-stars {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin: 8px 0 14px;
}
.sn-modal-body .sn-rating-stars button {
    appearance: none;
    background: transparent;
    border: none;
    cursor: pointer;
    width: 44px;
    height: 44px;
    padding: 0;
    color: #cbd5e1;
    transition: color .15s ease, transform .12s ease;
}
.sn-modal-body .sn-rating-stars button:hover { transform: scale(1.1); }
.sn-modal-body .sn-rating-stars button svg { width: 100%; height: 100%; }
.sn-modal-body .sn-rating-stars button.is-active,
.sn-modal-body .sn-rating-stars button.is-hover { color: #fbbf24; }
.sn-modal-body .sn-rating-stars button.is-active svg { fill: currentColor; }

.sn-modal-body textarea.sn-rating-text {
    width: 100%;
    border: 1px solid var(--sn-border);
    border-radius: 10px;
    padding: 10px 12px;
    font-family: inherit;
    font-size: 14px;
    resize: vertical;
    min-height: 70px;
    color: var(--sn-text);
    background: #f8fafc;
}
.sn-modal-body textarea.sn-rating-text:focus {
    outline: none;
    border-color: var(--sn-primary);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(76, 81, 191, 0.18);
}

/* Box "prossima apertura" (per il popup orari) */
.sn-next-open {
    margin: 8px auto 4px;
    padding: 14px 18px;
    background: linear-gradient(135deg, rgba(76,81,191,0.10), rgba(107,70,193,0.10));
    border: 1px solid rgba(76, 81, 191, 0.22);
    border-radius: 12px;
    color: var(--sn-text);
    font-size: 15px;
    max-width: 320px;
    text-align: center;
}
.sn-next-open strong {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sn-primary);
    margin-bottom: 4px;
}
.sn-next-open .sn-next-open-when {
    font-weight: 700;
    font-size: 18px;
    color: var(--sn-text);
}

@media (max-width: 520px) {
    .sn-modal-dialog {
        padding: 24px 20px 18px;
        border-radius: 16px;
    }
    .sn-modal-title { font-size: 19px; }
    .sn-modal-message { font-size: 14px; }
    .sn-modal-actions { flex-direction: column-reverse; }
    .sn-btn { width: 100%; }
}
