:root {
    --cpm-blue: #0B3C8A;
    --cpm-red: #E10600;
    --cpm-dark: #0F0F0F;
    --cpm-light: #F5F7FA;
    --cpm-gray: #E5E7EB;
    --cpm-bg: #F5F7FA;
    --cpm-muted: #64748b;
}

/* =========================
   DARK MODE
========================= */
body.dark {
    --cpm-light: #0F172A;
    --cpm-dark: #F8FAFC;
    --cpm-gray: #334155;
    --cpm-bg: #020617;
    --cpm-muted: #94a3b8;
    background: #020617;
    color: #F1F5F9;
}

    /* Cards – superficie elevata per separazione e leggibilità */
    body.dark .card-soft,
    body.dark .movimento {
        background-color: #1E293B;
        color: #F1F5F9;
        border: 1px solid rgba(255,255,255,0.06);
    }

    /* Inputs */
    body.dark .form-control {
       background: #0f172a;
        color: #F8FAFC;
        border-color: #334155;
    }

        body.dark .form-control::placeholder {
            color: #94A3B8;
        }

    /* Labels */
    body.dark .punti-label {
        color: #CBD5E1;
    }

html, body {
    min-height: 100%;
}

html {
    background: #f5f7fa;
}

/* Evita flash bianco al reload in dark mode */
html:has(body.dark) {
    background: #020617;
}

body {
    /* ☀️ GRADIENT LIGHT */
    background: #f5f7fa;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: #111;
    overscroll-behavior: contain;
    /* 🌈 transizione tema */
    transition: background 0.4s ease, color 0.3s ease;
    animation: pageFadeIn 0.25s ease;
}

@keyframes pageFadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
        transform: none;
    }
}

.card {
    border: none;
    border-radius: 20px;
}

.card-soft {
    background-color: white;
    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

/* Card filtri stile grouped list iOS – larghezza piena riga */
.filtri-card-ios {
    border-radius: 12px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
.filtri-rows {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
body.dark .filtri-card-ios {
    background-color: #1E293B;
    box-shadow: 0 2px 12px rgba(0,0,0,0.3);
    border: 1px solid rgba(255,255,255,0.06);
}

/* Storico benzinaio: DDL Periodo stile Apple (come altre DDL app) */
.storico-filter-field-min { min-width: 130px; }
.storico-tessera-filter { min-width: 0; }
.storico-tessera-ac-list {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    margin-top: 4px;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 25px rgba(15, 23, 42, .12);
}
.storico-tessera-ac-list .list-group-item {
    border-left: 0;
    border-right: 0;
}
.storico-filtro-periodo .storico-ddl-periodo.form-control-ios,
.filtri-card-ios .form-select.form-control-ios.storico-ddl-periodo {
    border-radius: 10px;
    padding: 12px 14px;
    padding-right: 36px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
    background-color: #fff;
    color: #1e293b;
    min-height: 48px;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    width: 100%;
}
.storico-filtro-periodo .storico-ddl-periodo:focus,
.filtri-card-ios .storico-ddl-periodo:focus {
    border-color: var(--cpm-blue);
    box-shadow: 0 0 0 2px rgba(11, 60, 138, 0.2);
    outline: none;
}
.storico-filtro-custom .form-control-ios {
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
    background-color: #fff;
    color: #1e293b;
    min-height: 48px;
    width: 100%;
}
.storico-filtro-custom .form-control-ios:focus {
    border-color: var(--cpm-blue);
    box-shadow: 0 0 0 2px rgba(11, 60, 138, 0.2);
    outline: none;
}
body.dark .storico-filtro-periodo .storico-ddl-periodo,
body.dark .filtri-card-ios .storico-ddl-periodo {
    background-color: #0f172a;
    color: #f8fafc;
    border-color: rgba(255,255,255,.12);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
}
body.dark .storico-filtro-custom .form-control-ios {
    background-color: #0f172a;
    color: #f8fafc;
    border-color: rgba(255,255,255,.12);
}

/* Card Consensi e regolamento – stile iOS grouped list */
.consensi-card-ios {
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}
body.dark .consensi-card-ios {
    background-color: #1E293B;
    box-shadow: 0 2px 12px rgba(0,0,0,0.3);
    border: 1px solid rgba(255,255,255,0.08);
}
body.dark .consensi-card-ios .consensi-check input[type="checkbox"] {
    accent-color: var(--cpm-blue);
    filter: none;
}
.consensi-section {
    padding: 16px 20px;
}
.consensi-section-title {
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: #475569;
    margin-bottom: 12px;
}
body.dark .consensi-section-title {
    color: #94A3B8;
}
.consensi-divider {
    height: 1px;
    background: rgba(0,0,0,0.08);
    margin: 16px 0;
}
body.dark .consensi-divider {
    background: rgba(255,255,255,0.12);
}
.consensi-card-ios .consensi-check {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}
.consensi-card-ios .consensi-check input[type="checkbox"] {
    margin-top: 3px;
    flex-shrink: 0;
}
.consensi-label {
    font-size: 15px;
    line-height: 1.4;
    color: #1e293b;
    cursor: pointer;
}
body.dark .consensi-label {
    color: rgba(255,255,255,0.92);
}
.consensi-note {
    font-size: 14px;
    color: #374151;
    margin-top: 8px;
    padding-left: 0;
    line-height: 1.5;
}
body.dark .consensi-note {
    color: rgba(255,255,255,0.85);
}
.consensi-readonly {
    font-size: 14px;
    color: #374151;
    font-style: italic;
}
body.dark .consensi-readonly {
    color: rgba(255,255,255,0.8);
}

.btn-cpm {
    background-color: var(--cpm-blue);
    color: #fff;
    border-radius: 14px;
    padding: 14px;
    font-weight: 600;
    transition: all 0.25s ease;
}

    .btn-cpm:hover {
        background-color: var(--cpm-red);
        transform: translateY(-2px);
    }

    .btn-cpm:active {
        transform: scale(0.98);
    }

/* Bottone primary in stile iOS (Applica filtri) */
.btn-ios-style {
    border-radius: 12px !important;
    padding: 14px 20px !important;
    font-size: 17px !important;
    font-weight: 600;
}

.form-control {
    border-radius: 14px;
    padding: 14px;
    border: 1px solid var(--cpm-gray);
    font-size: 16px;
    transition: background-color 0.3s ease, border-color 0.3s ease;
}

    .form-control:focus {
        border-color: var(--cpm-blue);
        box-shadow: 0 0 0 0.2rem rgba(11, 60, 138, 0.25);
    }

/* Contenitore tessera: trasparente, nessuno sfondo */
.card-tessera {
    background: transparent;
    color: white;
    border-radius: 14px;
    padding: 0;
    position: relative;
    overflow: hidden;
    aspect-ratio: 1.65;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    transition: box-shadow 0.35s ease;
    cursor: pointer;
}

.tessera-bg-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.card-ios {
    border-radius: 14px !important;
}

.card-tessera-inner {
    position: absolute;
    inset: 0;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
}

.tessera-numero-e-nome {
    position: absolute;
    top: 10px;
    left: 0;
    right: 0;
    text-align: center;
}

.tessera-numero-e-nome .tessera-codice-numero {
    display: block;
}

.tessera-numero-e-nome .tessera-nome {
    display: block;
    margin-top: 0;
}

/* QR in basso a destra sulla card: distanza fissa dal fondo (stessa posizione su tutti gli schermi) */
.tessera-qr-wrap {
    position: absolute;
    bottom: 2%;
    right: 3%;
    padding: 5px;
    display: inline-block;
    background: #FFF;
    backdrop-filter: blur(0px);
    -webkit-backdrop-filter: blur(0px);
    border-radius: 10px;
    border: 0px solid rgba(0, 0, 0, 0.35);
}

.card-tessera .tessera-qr-wrap .js-qr-trigger {
    display: block;
    width: 62px;
    height: 62px;
    max-width: 62px;
    max-height: 62px;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
    object-fit: contain;
    border: none !important;
    outline: none !important;
}

.tessera-hint {
    margin-top: -18px;
    margin-bottom: 8px;
    padding: 0 4px;
    font-size: 12px;
    font-weight: 700;
    color: var(--cpm-muted);
    text-align: center;
}
body.dark .tessera-hint {
    color: #94a3b8;
}

.card-tessera img {
    transition: opacity 0.25s ease;
}

.card-tessera .js-qr-trigger {
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
}

/* Numero tessera in evidenza sulla card (es. CPM-00000000) */
.tessera-codice-numero {
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
body.dark .card-tessera .tessera-codice-numero {
    color: #fff;
}

/* Dark tessera – solo ombra, contenitore resta trasparente */
body.dark .card-tessera {
    box-shadow: 0 12px 30px rgba(0,0,0,0.6);
}

.punti-grandi {
    font-size: 42px;
    font-weight: 700;
    color: var(--cpm-blue);
}

.punti-label {
    font-size: 14px;
    color: #666;
}

.movimento {
    background: #fff;
    border-radius: 14px;
    padding: 14px 16px;
    margin-bottom: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    cursor: pointer;
}

    .movimento:hover {
        transform: scale(1.01);
    }

.fade-in {
    animation: fadeInUp 0.5s ease;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.alert-success {
    border-radius: 14px;
}


/* =========================
   TOAST
========================= */

/* =========================
   CPM TOAST – PREMIUM
========================= */

.toast-cpm {
    position: fixed;
    bottom: 22px;
    left: 50%;
    transform: translateX(-50%);
    min-width: 260px;
    /* più largo: quasi full-width su mobile, limitato su desktop */
    width: min(560px, calc(100% - 24px));
    max-width: none;
    padding: 14px 18px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.2px;
    color: #fff;
    opacity: 0;
    pointer-events: none; /* nascosto: non intercetta click (come toast-confirm-cpm) */
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 14px 40px rgba(0,0,0,0.35);
    transition: opacity 0.35s ease;
    z-index: 10001;
}

    /* visibile */
    .toast-cpm.show {
        opacity: 1;
        pointer-events: auto;
    }

    /* icona */
    .toast-cpm .toast-icon {
        font-size: 18px;
        line-height: 1;
    }

    /* =========================
   VARIANTI COLORE
========================= */

    /* SUCCESS */
    .toast-cpm.success {
        background: linear-gradient(135deg, var(--cpm-blue), #082b63);
    }

    /* WARNING */
    .toast-cpm.warning {
        background: linear-gradient(135deg, #d97706, #b45309);
    }

    /* ERROR */
    .toast-cpm.error {
        background: linear-gradient(135deg, var(--cpm-red), #7a0a00);
    }

body.dark .toast-cpm.success {
    background: linear-gradient(135deg, #020617, #0B3C8A);
}

body.dark .toast-cpm.warning {
    background: linear-gradient(135deg, #1f2933, #92400e);
}

body.dark .toast-cpm.error {
    background: linear-gradient(135deg, #020617, #7a0a00);
}

/* Toast conferma (messaggio + due pulsanti) */
.toast-confirm-cpm {
    position: fixed;
    bottom: 22px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    min-width: 280px;
    /* più largo: quasi full-width su mobile, limitato su desktop */
    width: min(600px, calc(100% - 24px));
    max-width: none;
    padding: 16px 18px;
    border-radius: 16px;
    background: linear-gradient(135deg, #d97706, #b45309);
    color: #fff;
    opacity: 0;
    box-shadow: 0 14px 40px rgba(0,0,0,0.35);
    transition: opacity 0.3s ease, transform 0.3s ease;
    z-index: 10001;
}

.toast-confirm-cpm.show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

.toast-confirm-cpm .toast-confirm-text {
    font-size: 14px;
    font-weight: 500;
    margin-bottom: 14px;
    line-height: 1.4;
}

.toast-confirm-cpm .toast-confirm-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
}

.toast-confirm-cpm .toast-confirm-btn {
    padding: 10px 18px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 600;
    border: none;
    cursor: pointer;
    transition: opacity 0.2s;
}

.toast-confirm-cpm .toast-confirm-btn:active {
    opacity: 0.85;
}

.toast-confirm-cpm .toast-confirm-cancel {
    background: rgba(255,255,255,0.25);
    color: #fff;
}

.toast-confirm-cpm .toast-confirm-ok {
    background: #fff;
    color: #b45309;
}

/* =========================
   LOADING
========================= */

.loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(15, 15, 15, 0.6);
    z-index: 9998;
    display: none;
    align-items: center;
    justify-content: center;
}

.loading-spinner {
    width: 56px;
    height: 56px;
    border: 5px solid rgba(255,255,255,0.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin 0.9s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

button:disabled,
.btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* =========================
   MICRO TAP
========================= */

.btn {
    transition: transform 0.1s ease, box-shadow 0.1s ease;
}

    .btn:active {
        transform: scale(0.97);
    }

/* =========================
   THEME TOGGLE (pwd-toggle)
========================= */
.pwd-toggle {
    position: absolute;
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    border: none;
    background: transparent;
    padding: 0;
    color: #6c757d; /* grigio bootstrap */
    cursor: pointer;
}

    .pwd-toggle:hover {
        color: #0B3C8A; /* blu CPM */
    }

    .pwd-toggle:active {
        transform: translateY(-50%) scale(0.95);
    }

body.dark .pwd-toggle {
    color: #adb5bd;
}

/* =========================
   CPM CHECKBOX (FIX TOTALE)
========================= */

.cpm-check {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    user-select: none;
}

    /* nascondiamo checkbox nativo */
    .cpm-check input[type="checkbox"] {
        appearance: none;
        -webkit-appearance: none;
        width: 20px;
        height: 20px;
        border-radius: 6px;
        border: 2px solid var(--cpm-gray);
        background-color: transparent;
        cursor: pointer;
        transition: all 0.2s ease;
        position: relative;
    }

        /* spunta */
        .cpm-check input[type="checkbox"]:checked {
            background-color: var(--cpm-blue);
            border-color: var(--cpm-blue);
        }

            /* checkmark */
            .cpm-check input[type="checkbox"]:checked::after {
                content: "✓";
                position: absolute;
                color: #fff;
                font-size: 14px;
                left: 50%;
                top: 50%;
                transform: translate(-50%, -55%);
            }

        /* hover */
        .cpm-check input[type="checkbox"]:hover {
            border-color: var(--cpm-blue);
        }

/* dark mode */
body.dark .cpm-check input[type="checkbox"] {
    border-color: #475569;
}

    body.dark .cpm-check input[type="checkbox"]:checked {
        background-color: var(--cpm-blue);
    }

/* =========================
   CPM CHECKBOX – STILE TOGGLE (switch on/off)
   Usare classe .cpm-check-toggle sul contenitore .cpm-check
   Track 44x22 interno, pallino 20px, spostamento solo orizzontale
========================= */
.cpm-check-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    user-select: none;
}

.cpm-check-toggle input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    display: block;
    box-sizing: border-box;
    width: 48px;
    height: 26px;
    min-width: 48px;
    min-height: 26px;
    border-radius: 13px;
    border: 2px solid var(--cpm-gray);
    background-color: var(--cpm-gray);
    cursor: pointer;
    transition: background-color 0.25s ease, border-color 0.25s ease;
    position: relative;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    overflow: hidden; /* pallino mai fuori dalla track */
}

/* Pallino: area interna track = 44x22 (48-4, 26-4). Pallino 20px => top (22-20)/2 = 1px */
.cpm-check-toggle input[type="checkbox"]::after {
    content: "" !important;
    position: absolute;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    left: 2px;
    top: 1px;
    transform: translateX(0);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    transition: transform 0.25s ease;
}

.cpm-check-toggle input[type="checkbox"]:checked {
    background-color: var(--cpm-blue);
    border-color: var(--cpm-blue);
}

.cpm-check-toggle input[type="checkbox"]:checked::after {
    content: "" !important;
    transform: translateX(2px);
}

.cpm-check-toggle input[type="checkbox"]:hover {
    border-color: var(--cpm-blue);
}

.cpm-check-toggle label {
    cursor: pointer;
    margin: 0;
}

/* dark mode toggle */
body.dark .cpm-check-toggle input[type="checkbox"] {
    border-color: #475569;
    background-color: #475569;
}

body.dark .cpm-check-toggle input[type="checkbox"]:checked {
    background-color: var(--cpm-blue);
    border-color: var(--cpm-blue);
}

body.dark .cpm-check-toggle input[type="checkbox"]::after {
    content: "" !important;
    background: #e2e8f0;
    top: 1px;
    transform: translateX(0);
}

body.dark .cpm-check-toggle input[type="checkbox"]:checked::after {
    content: "" !important;
    transform: translateX(2px);
}

/* =========================
   TOGGLE PROFILO / CONSENSI (stesse dimensioni del Login, solo colori più visibili in card)
========================= */
.cpm-check-toggle-profilo {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    cursor: pointer;
    user-select: none;
}

.cpm-check-toggle-profilo input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    display: block;
    box-sizing: border-box;
    width: 48px;
    height: 26px;
    min-width: 48px;
    max-width: 48px;
    min-height: 26px;
    max-height: 26px;
    border-radius: 13px;
    border: 2px solid #94a3b8;
    background-color: #cbd5e1;
    cursor: pointer;
    transition: background-color 0.25s ease, border-color 0.25s ease;
    position: relative;
    flex: 0 0 auto;
    align-self: flex-start;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

.cpm-check-toggle-profilo input[type="checkbox"]::after {
    content: "" !important;
    position: absolute;
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
    border-radius: 50%;
    background: #fff;
    left: 2px;
    top: 50%;
    transform: translate(0, -50%);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    transition: transform 0.25s ease;
}

.cpm-check-toggle-profilo input[type="checkbox"]:checked {
    background-color: var(--cpm-blue);
    border-color: var(--cpm-blue);
}

.cpm-check-toggle-profilo input[type="checkbox"]:checked::after {
    content: "" !important;
    /* spostamento minimo (circa 3px) */
    transform: translate(3px, -50%);
}

.cpm-check-toggle-profilo input[type="checkbox"]:hover {
    border-color: var(--cpm-blue);
}

.cpm-check-toggle-profilo label {
    cursor: pointer;
    margin: 0;
    padding-top: 3px;
    line-height: 1.35;
}

body.dark .cpm-check-toggle-profilo input[type="checkbox"] {
    border-color: #64748b;
    background-color: #475569;
}

body.dark .cpm-check-toggle-profilo input[type="checkbox"]:checked {
    background-color: var(--cpm-blue);
    border-color: var(--cpm-blue);
}

body.dark .cpm-check-toggle-profilo input[type="checkbox"]::after {
    content: "" !important;
    background: #e2e8f0;
    top: 50%;
    transform: translate(0, -50%);
}

body.dark .cpm-check-toggle-profilo input[type="checkbox"]:checked::after {
    content: "" !important;
    transform: translate(3px, -50%);
}

/* =========================
   PUNTI DISPONIBILI - UX
========================= */

.punti-wrapper {
    padding: 12px 0;
}

.punti-badge {
    display: inline-block;
    background: rgba(11, 60, 138, 0.1);
    color: var(--cpm-blue);
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: 6px;
    letter-spacing: 1px;
}

.punti-grandi {
    font-size: 52px;
    font-weight: 800;
    line-height: 1;
}

.animate-punti {
    animation: puntiPop 0.45s ease;
}

@keyframes puntiPop {
    from {
        opacity: 0;
        transform: scale(0.9);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Dark mode */
body.dark .punti-badge {
    background: rgba(255,255,255,0.08);
    color: #E0E7FF;
}


/* =========================
   NOME CLIENTE SU TESSERA
========================= */

.tessera-nome {
    font-size: 0.8rem;
    font-weight: 600;
    opacity: 0.9;
}
/* Dark mode */
body.dark .tessera-nome {
    color: #E5E7EB;
}


/* =========================
   PUNTI DISPONIBILI - HIGHLIGHT
========================= */
.punti-card-filtri {
    background: linear-gradient( 135deg, var(--cpm-blue), #082b63 );
    color: #fff;
    border-radius: 14px;
    padding: 18px 20px;
    text-align: center;
    box-shadow: 0 14px 30px rgba(11, 60, 138, 0.35);
    position: relative;
    overflow: hidden;
}

.punti-card {
    background: linear-gradient( 135deg, var(--cpm-blue), #082b63 );
    color: #fff;
    border-radius: 22px;
    padding: 28px 20px;
    text-align: center;
    box-shadow: 0 14px 30px rgba(11, 60, 138, 0.35);
    position: relative;
    overflow: hidden;
}

.punti-card-ios {
    border-radius: 14px;
}

/* etichetta sopra – caption iOS */
.punti-label-top {
    font-size: 11px;
    letter-spacing: 1.8px;
    opacity: 0.9;
    margin-bottom: 6px;
    font-weight: 600;
    text-transform: uppercase;
}

/* numero punti */
.punti-valore {
    font-size: 52px;
    font-weight: 800;
    line-height: 1;
    margin-top: 4px;
    animation: puntiPulse 1.2s ease;
}

/* micro glow */
.punti-card::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient( circle at top, rgba(255,255,255,0.25), transparent 70% );
    pointer-events: none;
}

.punti-card-filtri::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient( circle at top, rgba(255,255,255,0.25), transparent 70% );
    pointer-events: none;
}

.punti-card-filtri {
    background: linear-gradient(135deg, #0B3C8A, #082f66);
}

/* animazione ingresso */
@keyframes puntiPulse {
    0% {
        transform: scale(0.92);
        opacity: 0;
    }

    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* =========================
   DARK MODE
========================= */

body.dark .punti-card {
    background: linear-gradient( 135deg, #020617, #0B3C8A );
    box-shadow: 0 18px 40px rgba(0,0,0,0.6);
}

body.dark .punti-card-filtri {
    background: linear-gradient( 135deg, #020617, #0B3C8A );
    box-shadow: 0 18px 40px rgba(0,0,0,0.6);
}

body.dark .punti-label-top {
    color: #CBD5E1;
}

/* =========================
   SHIMMER LUXURY - PUNTI
========================= */

.punti-grandi {
    position: relative;
    display: inline-block;
    font-size: 46px;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: #C9A24D; /* oro/champagne */
    overflow: hidden;
}

    /* riflesso */
    .punti-grandi::after {
        content: "";
        position: absolute;
        top: 0;
        left: -120%;
        width: 120%;
        height: 100%;
        background: linear-gradient( 120deg, transparent 0%, rgba(255,255,255,0.15) 40%, rgba(255,255,255,0.35) 50%, rgba(255,255,255,0.15) 60%, transparent 100% );
        animation: shimmerMove 3.8s ease-in-out infinite;
        pointer-events: none;
    }

@keyframes shimmerMove {
    0% {
        left: -120%;
    }

    45% {
        left: -120%;
    }

    100% {
        left: 120%;
    }
}

body.dark .punti-grandi {
    color: #E6C77A; /* oro più caldo su dark */
}

    body.dark .punti-grandi::after {
        background: linear-gradient( 120deg, transparent 0%, rgba(255,255,255,0.08) 40%, rgba(255,255,255,0.22) 50%, rgba(255,255,255,0.08) 60%, transparent 100% );
    }


/* =========================
   MICRO OMBRA DINAMICA TESSERA
========================= */

.card-tessera {
    will-change: transform, box-shadow;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
}

/* Dark mode */
body.dark .card-tessera {
    box-shadow: 0 16px 36px rgba(0,0,0,0.6);
}

/* =========================
   OFFLINE PWA BANNER
========================= */

.offline-banner {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%) translateY(120%);
    background: linear-gradient(135deg, #0f172a, #020617);
    color: #fff;
    padding: 12px 20px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 500;
    box-shadow: 0 12px 30px rgba(0,0,0,0.35);
    z-index: 10000;
    opacity: 0;
    transition: all 0.35s ease;
    pointer-events: none;
}

    /* visibile */
    .offline-banner.show {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }

    /* stato online */
    .offline-banner.online {
        background: linear-gradient(135deg, #16a34a, #22c55e);
    }

/* =========================
   PAGE EXIT TRANSITION
========================= */

.page-exit {
    animation: fadeOutDown 0.25s ease forwards;
}

@keyframes fadeOutDown {
    from {
        opacity: 1;
        transform: translateY(0);
    }

    to {
        opacity: 0;
        transform: translateY(6px);
    }
}

/* =========================================================
   ESTENSIONI UX – STAZIONI / PREMI / SEGNALAZIONI
   (NON SOSTITUISCE NULLA – SOLO AGGIUNTE)
========================================================= */

/* =========================
   STAZIONI CPM
========================= */

/* base comune (movimento già esistente) */
.movimento {
    background: #fff;
    border-radius: 18px;
    padding: 16px;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}

body.dark .movimento {
    background: #1E293B;
    border-color: rgba(255,255,255,0.08);
}

/* feedback tap */
.movimento:active {
    transform: scale(0.97);
}

/* hover desktop */
@media (hover: hover) {
    .movimento:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 26px rgba(0,0,0,0.12);
    }
}

/* =========================
   STAZIONE CARD (SPECIALIZZAZIONE)
========================= */
/* Card stazione: prima riga (nome, indirizzo, orari, km), ultima riga = Naviga */
.stazione-card-wrap {
    cursor: pointer;
    transition: background 0.15s ease;
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.stazione-card-wrap:last-child {
    border-bottom: none;
}
.stazione-card-wrap:active {
    background: #e5e5ea;
}
body.dark .stazione-card-wrap {
    border-bottom-color: rgba(255,255,255,.1);
}
body.dark .stazione-card-wrap:active {
    background: rgba(255,255,255,.06);
}
.movimenti-list-ios .stazione-card-wrap .movimento-row.stazione-card {
    border-bottom: none;
    padding-bottom: 2px;
}
/* Indirizzo stazione: prima riga = via, seconda = comune e provincia */
.stazione-indirizzo {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.stazione-indirizzo-via {
    display: block;
}
.stazione-indirizzo-comune {
    display: block;
}

.stazione-row-naviga {
    padding: 4px 16px 12px 48px;
    text-align: left;
}
.stazione-row-naviga .nav-link-sta {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.stazione-row-naviga .nav-link-sta:hover {
    text-decoration: underline;
}
.movimento-row.stazione-card {
    align-items: flex-start;
}
.movimenti-list-ios .movimento-row.stazione-card .movimento-row-right {
    align-items: flex-start;
}
.movimento.stazione-card {
    cursor: pointer;
}

/* badge distanza */
.movimento .badge {
    font-size: 12px;
    border-radius: 999px;
    padding: 4px 10px;
}

/* =========================
   BOTTONE NAVIGAZIONE
========================= */
.movimento .btn-outline-primary {
    border-radius: 14px;
    font-weight: 600;
    transition: all 0.2s ease;
}

    .movimento .btn-outline-primary:active {
        transform: scale(0.96);
    }

body.dark .movimento .btn-outline-primary {
    border-color: rgba(255,255,255,0.25);
}

/* =========================
   BOTTONE "VICINO A ME"
========================= */
.btn-geo {
    height: 100%;
    font-weight: 600;
    border-radius: 14px;
}

/* =========================
   MAPPA (Leaflet)
========================= */
#map {
    overflow: hidden;
    border-radius: 18px;
    box-shadow: 0 12px 28px rgba(0,0,0,0.18);
}

.map-stazioni {
    height: 340px;
}

body.dark #map {
    box-shadow: 0 18px 40px rgba(0,0,0,0.6);
}

/* =========================
   FILTRI STAZIONI
========================= */
/* Bottone "Vicino a me" meno aggressivo */
.stazioni-filtri .btn-outline-primary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.stazioni-filtri .form-control,
.stazioni-filtri .btn {
    height: 52px;
    line-height: 1.2;
    border-radius: 14px;
}


/* bottone principale */
.stazioni-filtri .btn-primary,
.stazioni-filtri .btn-cpm {
    box-shadow: 0 6px 14px rgba(11,60,138,0.25);
}

/* Mobile: respiro verticale */
@media (max-width: 575px) {
    .stazioni-filtri .btn {
        font-size: 15px;
    }
}

/* bottone secondario "Vicino a me" */
.stazioni-filtri .btn-outline-secondary {
    border: 2px solid var(--cpm-blue);
    color: var(--cpm-blue);
    background: transparent;
}

    .stazioni-filtri .btn-outline-secondary:active {
        transform: scale(0.96);
    }

/* =========================
   MARKER STAZIONI
========================= */

.marker-cpm {
    width: 34px;
    height: 34px;
    background: var(--cpm-blue);
    border-radius: 50%;
    border: 3px solid #fff;
    box-shadow: 0 6px 14px rgba(0,0,0,0.35);
    display: flex;
    align-items: center;
    justify-content: center;
}

    .marker-cpm::after {
        content: "";
        position: absolute;
        bottom: -6px;
        left: 50%;
        transform: translateX(-50%);
        width: 10px;
        height: 10px;
        background: inherit;
        clip-path: polygon(50% 100%, 0 0, 100% 0);
    }

    /* Colore da wrapper Leaflet (setIcon): così solo il marker selezionato è rosso */
    .marker-stazione-normale .marker-cpm {
        background: var(--cpm-blue);
    }
    .marker-stazione-vicina .marker-cpm {
        background: #E63946;
        transform: scale(1.15);
        z-index: 1000;
        animation: pulse-marker 1.6s ease-out infinite;
    }

    /* 📍 stazione più vicina (classe .vicina nel markup, fallback) */
    .marker-cpm.vicina {
        background: #E63946;
        transform: scale(1.15);
        z-index: 1000;
    }

/* Dark mode */
body.dark .marker-cpm {
    border-color: #020617;
}

    /* marker più vicino */
    .marker-cpm.vicina {
        background: #dc3545; /* rosso elegante */
        animation: pulse-marker 1.6s ease-out infinite;
    }

/* animazione pulse */
@keyframes pulse-marker {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(220,53,69,0.55);
    }

    70% {
        transform: scale(1.15);
        box-shadow: 0 0 0 12px rgba(220,53,69,0);
    }

    100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(220,53,69,0);
    }
}

.stazione-card .text-muted {
    line-height: 1.35;
}

/* =========================
   MARKER UTENTE (SEI QUI)
========================= */
.marker-cpm.user {
    background: #16a34a; /* verde */
    box-shadow: 0 0 0 6px rgba(22,163,74,0.25);
    animation: pulseUser 1.6s infinite;
}

@keyframes pulseUser {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(22,163,74,0.45);
    }

    70% {
        transform: scale(1.15);
        box-shadow: 0 0 0 12px rgba(22,163,74,0);
    }

    100% {
        transform: scale(1);
    }
}

.leaflet-popup-content-wrapper {
    border-radius: 14px;
    box-shadow: 0 10px 24px rgba(0,0,0,0.25);
}

.leaflet-popup-tip {
    box-shadow: 0 6px 14px rgba(0,0,0,0.18);
}
/* =========================
   SEGNALAZIONI
========================= */

/* Textarea segnalazione */
textarea.form-control {
    resize: none;
}

/* =========================
   PREMI
========================= */

/* Card premio */
.premio-card {
    transition: transform 0.22s ease, box-shadow 0.22s ease;
}

    .premio-card:active {
        transform: scale(0.98);
    }

    /* Badge punti premio */
    .premio-card .badge {
        font-size: 12px;
        padding: 5px 10px;
        border-radius: 999px;
    }

/* Premio NON riscattabile */
.premio-disabled {
    opacity: 0.6;
    filter: grayscale(0.4);
}

/* =========================
   MICRO TRANSIZIONI PAGINA
========================= */

.fade-in {
    animation: fadeInUp 0.45s ease;
}

/* =========================
   ACCESSIBILITÀ TOUCH
========================= */

@media (hover: none) {
    .movimento:hover,
    .premio-card:hover {
        transform: none;
        box-shadow: none;
    }
}

/* =========================
   SELECT APP STYLE
========================= */

.ddl-app {
    border-radius: 16px;
    padding: 16px 14px;
    font-size: 16px;
    font-weight: 500;
    background-color: #fff;
    border: 1px solid var(--cpm-gray);
    box-shadow: 0 6px 18px rgba(0,0,0,0.06);
    transition: all 0.25s ease;
}

    .ddl-app:focus {
        border-color: var(--cpm-blue);
        box-shadow: 0 0 0 0.2rem rgba(11, 60, 138, 0.25);
    }

/* dark mode */
body.dark .ddl-app {
    background-color: #020617;
    color: #F8FAFC;
    border-color: #334155;
}

/* =========================
   SELECT FEEDBACK
========================= */

.ddl-pulse {
    animation: ddlPulse 0.18s ease;
}

@keyframes ddlPulse {
    0% {
        transform: scale(0.98);
    }

    100% {
        transform: scale(1);
    }
}

/* =========================
   PILL SWITCH (APP STYLE)
========================= */

.pill-group {
    display: flex;
    gap: 10px;
    background: var(--cpm-gray);
    padding: 6px;
    border-radius: 999px;
}

.pill {
    flex: 1;
    text-align: center;
    padding: 10px 12px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    color: #555;
    transition: all 0.25s ease;
    user-select: none;
}

    .pill.active {
        background: var(--cpm-blue);
        color: #fff;
        box-shadow: 0 6px 18px rgba(11,60,138,0.35);
    }

    .pill:active {
        transform: scale(0.96);
    }

/* Dark mode */
body.dark .pill-group {
    background: #020617;
}

body.dark .pill {
    color: #CBD5E1;
}

    body.dark .pill.active {
        background: var(--cpm-blue);
        color: #fff;
    }

/* =========================
   SEGNALAZIONI – ACCORDION
========================= */

.accordion-item {
    border: none;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 6px 16px rgba(0,0,0,0.06);
}

.accordion-button {
    background-color: transparent;
    font-weight: 600;
    border-radius: 0;
}

    .accordion-button:not(.collapsed) {
        background-color: rgba(11, 60, 138, 0.05);
        color: var(--cpm-blue);
    }

body.dark .accordion-button:not(.collapsed) {
    background-color: rgba(255,255,255,0.05);
    color: #E0E7FF;
}

.accordion-body {
    padding: 16px;
    background-color: #fafafa;
}

body.dark .accordion-body {
    background-color: #020617;
}

/* =========================
   PALLINO NUOVO MESSAGGIO
========================= */

.badge-nuovo {
    width: 10px;
    height: 10px;
    background-color: var(--cpm-red);
    border-radius: 50%;
    display: inline-block;
    margin-left: 8px;
    animation: pulseNew 1.4s infinite;
}

@keyframes pulseNew {
    0% {
        transform: scale(1);
        opacity: 1;
    }

    50% {
        transform: scale(1.3);
        opacity: 0.6;
    }

    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* =========================
   MICRO TAP FEEDBACK
========================= */

.accordion-button:active {
    transform: scale(0.98);
}

/* =========================
   STATI PREMI
========================= */
.stato-RICHIESTO {
    background: #facc15;
    color: #000;
}

.stato-IN_LAVORAZIONE {
    background: #38bdf8;
    color: #000;
}

.stato-CONSEGNATO {
    background: #22c55e;
    color: #fff;
}

.stato-ANNULLATO {
    background: #ef4444;
    color: #fff;
}

/* =========================
   CLIENTE – Header riga con sfumatura CPM blue, campanella dentro
========================= */
.cliente-header-row {
    width: 100%;
    min-height: 18px;
    padding-top: env(safe-area-inset-top);
    padding-bottom: 1px;
    background: linear-gradient(90deg, var(--cpm-bg) 0%, transparent 10%, transparent 90%, var(--cpm-bg) 100%),
                linear-gradient(180deg, transparent 0%, rgba(11, 60, 138, 0.06) 50%, rgba(11, 60, 138, 0.02) 100%);
}
.cliente-header-row-inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-height: 18px;
    padding: 0 16px;
    padding-right: max(16px, env(safe-area-inset-right));
}
.page-topbar-bell-cliente {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: #475569;
    font-size: 20px;
    text-decoration: none;
    transition: color 0.2s ease, background 0.2s ease;
    position: relative;
}
.page-topbar-bell-cliente:hover {
    color: var(--cpm-blue);
    background: rgba(11, 60, 138, 0.08);
}
.page-topbar-bell-cliente:focus-visible {
    outline: 2px solid var(--cpm-blue);
    outline-offset: 2px;
}
.page-topbar-bell-badge-cliente {
    position: absolute;
    top: 4px;
    right: 4px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    font-size: 10px;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
    color: #fff;
    background: #dc2626;
    border-radius: 8px;
    box-sizing: border-box;
}
body.dark .cliente-header-row {
    background: linear-gradient(90deg, var(--cpm-bg) 0%, transparent 10%, transparent 90%, var(--cpm-bg) 100%),
                linear-gradient(180deg, transparent 0%, rgba(11, 60, 138, 0.12) 50%, rgba(11, 60, 138, 0.04) 100%);
}
body.dark .page-topbar-bell-cliente {
    color: #94a3b8;
}
body.dark .page-topbar-bell-cliente:hover {
    color: #e2e8f0;
    background: rgba(255,255,255,0.08);
}

/* Pannello notifiche Cliente: full-screen 100% che scende dall'alto, transizione lenta e soft */
.cliente-notifiche-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    background: var(--cpm-bg);
    transform: translateY(-100%);
    transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: transform;
    backface-visibility: hidden;
    pointer-events: none;
    box-shadow: 0 10px 40px rgba(0,0,0,0.15);
}
.cliente-notifiche-overlay.open {
    transform: translateY(0);
    pointer-events: auto;
}
body.cliente-notifiche-open {
    overflow: hidden;
}
.cliente-notifiche-overlay-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 44px;
    padding: 6px 16px;
    padding-top: max(6px, env(safe-area-inset-top));
    border-bottom: 1px solid rgba(0,0,0,0.06);
    background: rgba(255,255,255,0.6);
}
body.dark .cliente-notifiche-overlay-header {
    background: rgba(15, 23, 42, 0.8);
    border-bottom-color: rgba(255,255,255,0.08);
}
.cliente-notifiche-overlay-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 18px;
    font-weight: 600;
    color: #0f172a;
}
.cliente-notifiche-overlay-title-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(11, 60, 138, 0.1);
    color: var(--cpm-blue);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}
body.dark .cliente-notifiche-overlay-title {
    color: #f1f5f9;
}
body.dark .cliente-notifiche-overlay-title-icon {
    background: rgba(255,255,255,0.08);
    color: #E0E7FF;
}
.cliente-notifiche-overlay-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: #475569;
    font-size: 20px;
    cursor: pointer;
    transition: color 0.2s, background 0.2s;
}
.cliente-notifiche-overlay-close:hover {
    color: var(--cpm-blue);
    background: rgba(11, 60, 138, 0.08);
}
body.dark .cliente-notifiche-overlay-close {
    color: #94a3b8;
}
body.dark .cliente-notifiche-overlay-close:hover {
    color: #e2e8f0;
    background: rgba(255,255,255,0.08);
}
.cliente-notifiche-overlay-iframe {
    flex: 1;
    width: 100%;
    border: 0;
    min-height: 0;
}

/* =========================
   PAGE HEADER (non sticky – scrolla con la pagina)
========================= */
.page-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    padding: 12px 10px;
    margin-bottom: 16px;
    border-bottom: 1px solid rgba(0,0,0,0.06);
    background: rgba(255,255,255,0.5);
}

.page-back-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 0;
    font-size: 14px;
    color: var(--cpm-blue);
    text-decoration: none;
    transition: color 0.2s ease, opacity 0.2s ease;
}

.page-back-link:hover {
    color: var(--cpm-blue);
    opacity: 0.85;
}

.page-back-link i {
    font-size: 18px;
}

body.dark .page-back-link {
    color: #93c5fd;
}

body.dark .page-back-link:hover {
    color: #bfdbfe;
}

.page-header .page-title {
    margin-top: 8px;
}

/* Dark mode */
body.dark .page-header {
    background: rgba(2,6,23,0.5);
    border-bottom: 1px solid rgba(255,255,255,0.08);
}

.page-title {
    display: flex;
    align-items: center;
    gap: 16px;
    min-width: 0;
}

.page-icon {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: rgba(11, 60, 138, 0.1);
    color: var(--cpm-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}

/* Dark */
body.dark .page-icon {
    background: rgba(255,255,255,0.08);
    color: #E0E7FF;
}

.page-header h1 {
    font-size: 20px;
    margin: 0;
}

/* Large title iOS (Movimenti) */
.page-header-ios h1 {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: -0.02em;
}

/* Titolo più piccolo: Profilo, Password, Segnalazioni, MovimentoDettaglio */
.page-header-title-small h1 {
    font-size: 20px;
    font-weight: 600;
}

/* =========================
   BADGE NUOVO MESSAGGIO
========================= */

.notif-dot {
    width: 10px;
    height: 10px;
    background: #E10600;
    border-radius: 50%;
    display: inline-block;
    margin-left: 8px;
    box-shadow: 0 0 0 2px rgba(225,6,0,0.15);
}

/* dark mode */
body.dark .notif-dot {
    box-shadow: 0 0 0 2px rgba(225,6,0,0.35);
}

/* =========================
   MENU BADGE ROSSO
========================= */

.menu-dot {
    position: absolute;
    top: 8px;
    right: 6px;
    width: 10px;
    height: 10px;
    background: #E10600;
    border-radius: 50%;
    box-shadow: 0 0 0 2px rgba(225,6,0,0.2);
}

/* dark mode */
body.dark .menu-dot {
    box-shadow: 0 0 0 2px rgba(225,6,0,0.4);
}

.tessera-logo {
    height: 22px;
    opacity: 0.9;
}

/* =========================
   LOGIN HEADER BRAND
========================= */

.login-header {
    background: linear-gradient(135deg, var(--cpm-blue), #082b63);
    padding: 48px 0 80px;
}

body.dark .login-header {
    background: linear-gradient(135deg, #020617, #0B3C8A);
}

.login-header-logo {
    height: 120px;
    width: auto;
    filter: drop-shadow(0 6px 14px rgba(0,0,0,0.35));
}

/* sovrapposizione card */
.mt-n5 {
    margin-top: -60px;
}

/* =========================
   SCADENZA PUNTI (HOME)
========================= */
.punti-scadenza {
    color: rgba(255,255,255,0.85);
    font-size: 13px;
    text-align: center;
}

    .punti-scadenza i {
        opacity: 0.9;
    }

body.theme-switch {
    transition: background-color 0.25s ease, color 0.25s ease;
}

/* =========================
   INFO PUNTI – UX LIGHT
========================= */

.info-punti-toggle {
    font-size: 13px;
    color: var(--cpm-blue);
    font-weight: 500;
    text-decoration: none;
    opacity: 0.85;
    transition: opacity 0.2s ease;
}

    .info-punti-toggle:hover {
        opacity: 1;
        text-decoration: underline;
    }

.info-punti-box {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    background: rgba(11, 60, 138, 0.06);
    border-left: 4px solid var(--cpm-blue);
    padding: 12px 14px;
    border-radius: 12px;
    font-size: 13px;
    color: #333;
    animation: fadeInUp 0.25s ease;
}

    .info-punti-box i {
        font-size: 18px;
        color: var(--cpm-blue);
        margin-top: 2px;
    }

/* Dark mode */
body.dark .info-punti-box {
    background: rgba(255,255,255,0.06);
    color: #E5E7EB;
}

.app-loading {
    position: fixed;
    inset: 0;
    background: rgba(255,255,255,0.4);
    backdrop-filter: blur(3px);
    z-index: 9999;
}

.punti-warning {
    font-size: 11px; /* più piccolo */
    padding: 10px 14px; /* meno “urlato” */
    border-radius: 14px;
    line-height: 1.4;
}

body.dark .punti-warning {
    background-color: rgba(251, 191, 36, 0.15); /* warning soft */
    color: #fde68a;
}

/* =========================
   STAZIONI – NAVIGAZIONE
========================= */

.stazione-actions {
    margin-top: 6px;
}

.nav-link-sta {
    font-size: 13px;
    color: var(--cpm-blue);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 500;
}

.nav-link-sta i {
    font-size: 14px;
}

    .nav-link-sta:hover {
        text-decoration: underline;
    }
    .nav-link-sta:active {
        opacity: 0.65;
    }

.password-hint {
    font-size: 12px;
    color: var(--cpm-muted);
    margin-bottom: 12px;
    line-height: 1.4;
}

    .password-hint .mono {
        font-family: monospace;
        font-size: 11px;
    }

/* =======================
   PASSWORD STRENGTH
======================= */

.pwd-meter {
    width: 100%;
    height: 6px;
    background: #e5e7eb; /* grigio chiaro */
    border-radius: 4px;
    overflow: hidden;
    margin-top: 6px;
}

#pwdBar {
    height: 100%;
    width: 0%;
    background: #dc3545;
    transition: width .25s ease, background-color .25s ease;
}

/* feedback testo */
.password-feedback {
    min-height: 18px;
    margin-top: 8px;
    margin-bottom: 8px;
    font-size: 0.9rem;
}

    /* stati */
    .password-feedback.err {
        color: #dc3545;
    }

    .password-feedback.warn {
        color: #f59e0b;
    }

    .password-feedback.ok {
        color: #198754;
    }

.pwd-meter div {
    height: 100%;
    width: 0%;
    background: #dc3545;
    transition: width 0.3s ease, background 0.3s ease;
}

/* Regole password: stile come PortaleDipendenti (check/x, colore riga) */
.password-rules {
    list-style: none;
    padding: 0;
    margin: 0.35rem 0 0;
    font-size: 0.8rem;
}
.password-rule {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.15rem 0;
}
.password-rule .password-rule-icon {
    flex-shrink: 0;
    width: 1rem;
    text-align: center;
    font-size: 1rem;
}
.password-rule.password-rule-ok {
    color: #0b773d;
}
.password-rule.password-rule-ko {
    color: #6b7280;
}
.password-rule.password-rule-ok .password-rule-icon {
    color: #0b773d;
}
.password-rule.password-rule-ko .password-rule-icon {
    color: #9ca3af;
}

/* Admin: solo icona (stile precedente, senza colore sulla riga) */
.password-rule-icon.met {
    color: #198754;
}
.password-rule-icon.unmet {
    color: #9ca3af;
}

.accordion-button .badge {
    margin-right: 1.5rem;
}

.link-action {
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
    cursor: pointer;
}

    .link-action:hover {
        text-decoration: underline;
    }

/* =========================
   STATI SEGNALAZIONE (APP UX)
========================= */

/* base comune */
.badge.stato {
    border-radius: 999px;
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.3px;
}

/* DA RISPONDERE CPM → neutro */
.stato-DA_RISPONDERE_CPM {
    background: #e5e7eb;
    color: #374151;
}

body.dark .stato-DA_RISPONDERE_CPM {
    background: #334155;
    color: #e5e7eb;
}

/* RISPOSTA CPM → attenzione (blu CPM) */
.stato-RISPOSTA_CPM {
    background: rgba(11, 60, 138, 0.12);
    color: #0B3C8A;
    border: 1px solid rgba(11, 60, 138, 0.35);
}

body.dark .stato-RISPOSTA_CPM {
    background: rgba(11, 60, 138, 0.35);
    color: #E0E7FF;
}

/* CHIUSA → successo soft */
.stato-CHIUSA {
    background: rgba(34, 197, 94, 0.15);
    color: #166534;
}

body.dark .stato-CHIUSA {
    background: rgba(34, 197, 94, 0.25);
    color: #bbf7d0;
}

/* =========================
   REPLY BOX – APP STYLE
========================= */

/* riga bottoni */
.reply-actions {
    display: flex;
    justify-content: flex-end;
    gap: 18px;
}

/* già coerente con il tuo progetto */
.link-action {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--cpm-blue);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}

    .link-action:hover {
        text-decoration: underline;
        opacity: 0.85;
    }

/* variante rossa SENZA BORDI */
.link-danger {
    color: var(--cpm-red);
}

body.dark .link-action {
    color: #E0E7FF;
}

body.dark .link-danger {
    color: #ff8b8b;
}

.reply-box {
    width: 100%;
    display: block;
    flex: 1 1 100%;
}

.reply-text {
    width: 100% !important;
    display: block;
}

/* =========================
   BUONO FULLSCREEN
========================= */

.buono-fullscreen {
    background: linear-gradient(180deg, #ffffff, #f5f7fa);
    height: 100vh;
    height: 100dvh;
}

.buono-wrapper {
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px;
    text-align: center;
}

.buono-hint {
    font-size: 14px;
    font-weight: 600;
    opacity: 0.75;
    margin-bottom: 18px;
}

.buono-qr img {
    width: 260px;
    max-width: 80vw;
}

.buono-desc {
    margin-top: 10px;
    font-size: 15px;
    opacity: 0.85;
}

.buono-note {
    margin-top: 18px;
    font-size: 12px;
    opacity: 0.6;
}

.buono-close {
    margin-top: 28px;
}

.buono-card {
    transition: transform .2s ease, box-shadow .2s ease;
}

    .buono-card:active {
        transform: scale(0.98);
    }

.buono-code {
    background: rgba(11,60,138,0.06);
    border-radius: 14px;
    padding: 12px;
    font-size: 13px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

    .buono-code strong {
        font-family: monospace;
        font-size: 16px;
    }

/* STATI */
.stato-EMESSO {
    background: #22c55e;
    color: #fff;
}

.stato-USATO {
    background: #94a3b8;
    color: #fff;
}

.buono-vincolo {
    margin-top: 8px;
    font-size: 0.9rem;
    color: #6b7280;
    text-align: center;
}

/* =========================
   PUNTI CARD – VERSIONE COMPACT (PREMI)
========================= */

.premi-page .punti-card {
    padding: 18px 16px;
}

.premi-page .punti-valore {
    font-size: 40px;
}

.premi-page .punti-scadenza {
    font-size: 12px;
    opacity: 0.85;
}

/* =========================
   DETTAGLIO PUNTI - FIX VISIBILITÀ
========================= */

/* =========================
   CARD PUNTI – DETTAGLIO VISIBILE
========================= */

.punti-card {
    position: relative;
}

.punti-card-filtri {
    position: relative;
}

.punti-dettaglio {
    display:flex;
    flex-direction :column ;
    gap:6px;
        margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.15);
}

.punti-riga {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    line-height: 1.4;
    color:#fff;
}

/* FIX DETTAGLIO PUNTI SU CARD BLU */
.punti-card .punti-dettaglio,
.punti-card .punti-dettaglio *,
.punti-card .punti-riga {
    color: #ffffff !important;
}

    .punti-card .punti-riga.tolleranza {
        color: #FFD966 !important; /* giallo leggibile */
    }

    .punti-card .punti-riga i {
        color: inherit !important;
        opacity: 1;
    }

.punti-card {
    background: linear-gradient(135deg, #0B3C8A, #082f66);
}

/* TOGGLE DETTAGLIO PUNTI */
    .punti-card .punti-dettaglio-toggle {
        font-size: 0.9rem;
        cursor: pointer;
        opacity: 0.85;
        margin-top: .5rem;
        color: #fff !important;
        opacity: 0.9;
        display: inline-flex;
        align-items: center;
        gap: .4rem;
    }

    .punti-dettaglio-toggle:hover {
        opacity: 1;
        text-decoration: underline;
    }

    /* FIX: link blu su punti-card (header blu) */
.punti-card .link-action,
.punti-card .link-action:visited,
.punti-card .link-action:hover,
.punti-card .link-action:active {
    color: #fff !important;
    opacity: 0.9;
    text-decoration: none;
}

    .punti-card .link-action:hover {
        opacity: 1;
        text-decoration: underline;
    }

    .punti-card .punti-dettaglio-toggle:hover {
        opacity: 1;
        text-decoration: underline;
    }

.info-punti-toggle {
    color: #fff !important;
    text-decoration: underline;
}

/* FIX: link blu su punti-card (header blu) */
.info-punti-toggle .link-action,
.info-punti-toggle .link-action:visited,
.info-punti-toggle .link-action:hover,
.info-punti-toggle .link-action:active {

    opacity: 0.9;
    text-decoration: none;
}

.info-punti-toggle .punti-dettaglio-toggle:hover {
    opacity: 1;
    text-decoration: underline;
}

/* CONTENITORE DETTAGLIO */
.punti-dettaglio {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 10px;
}

/* RIGA BASE */
.punti-riga {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    line-height: 1.2;
}

    /* ✔ PUNTI ATTIVI */
    .punti-riga.attivi {
        color: rgba(255, 255, 255, 0.9);
    }

    /* ⚠ PUNTI IN SCADENZA — STILE BANCA */
    .punti-riga.tolleranza {
        color: #ffcc66;
        background: rgba(255, 204, 102, 0.15);
        padding: 4px 8px;
        border-radius: 6px;
        width: fit-content;
        font-weight: 600;
    }

    /* ICONE */
    .punti-riga i {
        font-size: 0.9rem;
        opacity: 0.9;
    }

/* LINK "VEDI DETTAGLIO" */
.info-punti-toggle {
    color: rgba(255, 255, 255, 0.75);
    font-size: 0.8rem;
    text-decoration: underline;
}

    .info-punti-toggle:hover {
        color: #ffffff;
    }

.link-action.disabled {
    opacity: .45;
    pointer-events: none;
    cursor:default;
}


/* ===============================
   PANEL NUOVA SEGNALAZIONE
=============================== */
/* ===============================
   PANEL NUOVA SEGNALAZIONE
=============================== */

[id$="pnlNuova"] {
    position: relative;
}

    /* Pulsante X */
    [id$="pnlNuova"] .btn-close {
        position: absolute;
        top: -21px; /* 🔥 SALE SOPRA LA CARD */
        right: -12px; /* 🔥 LEGGERMENTE FUORI */

        z-index: 20;
        width: 34px;
        height: 34px;
        background-color: #ffffff;
        border-radius: 50%;
        opacity: 0.75;
        box-shadow: 0 4px 12px rgba(0,0,0,0.25);
        display: flex;
        align-items: center;
        justify-content: center;
    }

        /* Hover */
        [id$="pnlNuova"] .btn-close:hover {
            opacity: 1;
        }

    /* Primo campo: respiro sotto la X */
    [id$="pnlNuova"] .form-select:first-of-type,
    [id$="pnlNuova"] .form-control:first-of-type {
        margin-top: 0.75rem;
    }

/*.buono-qr-img {
    max-width: 220px;
    cursor: zoom-in;
}

.qr-fullscreen {
    position: fixed;
    inset: 0;
    background: #fff;
    z-index: 9999;
    max-width: 100%;
    max-height: 100%;
    margin: auto;
    cursor: zoom-out;
}*/
.qr-fullscreen {
    position: fixed;
    inset: 0;
    background: #000;
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

    .qr-fullscreen.show {
        display: flex;
    }

.qr-full-img {
    width: 90vw;
    height: 90vw;
    max-width: 500px;
    max-height: 500px;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
}

.badge-punti {
    background: rgba(11, 60, 138, 0.12); /* blu CPM soft */
    color: #0B3C8A;
    font-weight: 600;
    border-radius: 999px;
    padding: 4px 10px;
    font-size: 0.85rem;
}





/* =====================================================
   CPM BUONO CARD – ISOLATO / BANKING STYLE
===================================================== */

.cpm-buono-card {
    background: #ffffff;
    border-radius: 18px;
    padding: 16px;
    margin-bottom: 14px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.06);
}

/* header */
.cpm-buono-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
}

.cpm-buono-title {
    font-size: 15px;
    font-weight: 600;
    color: #0f172a;
}

/* badge stato */
.cpm-buono-badge {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 999px;
    font-weight: 600;
    letter-spacing: 0.4px;
}

/* stati */
.cpm-buono-attivo {
    background: #157347;
    color: #fff;
}

.cpm-buono-usato {
    background: #e5e7eb;
    color: #374151;
}

.cpm-buono-annullato {
    background: #dc3545;
    color: #fff;
}

/* meta */
.cpm-buono-meta {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 6px;
}

.cpm-buono-punti {
    font-weight: 500;
    color: #475569;
}

.cpm-buono-data {
    font-weight: 400;
}

/* azione */
.cpm-buono-action {
    margin-top: 6px;
}

.cpm-buono-link {
    font-size: 14px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

    .cpm-buono-link:hover {
        text-decoration: underline;
    }

/* dark mode */
body.dark .cpm-buono-card {
    background: #020617;
    box-shadow: 0 12px 30px rgba(0,0,0,0.6);
}

body.dark .cpm-buono-title {
    color: #e5e7eb;
}

body.dark .cpm-buono-meta {
    color: #94a3b8;
}

body.dark .cpm-buono-usato {
    background: #1e293b;
    color: #cbd5f5;
}

/* =====================================================
   CPM PREMI CARD – BANKING / LUXURY
===================================================== */

.cpm-premio-card {
    background: #ffffff;
    border-radius: 18px;
    padding: 16px;
    margin-bottom: 14px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.06);
    transition: transform .15s ease, box-shadow .15s ease;
}

    .cpm-premio-card:active {
        transform: scale(0.98);
    }

/* HEADER */
.cpm-premio-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
}

.cpm-premio-title {
    font-size: 15px;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.2;
}

/* BADGE PUNTI */
.cpm-premio-badge {
    font-size: 12px;
    padding: 4px 10px;
    border-radius: 999px;
    font-weight: 700;
    background: rgba(11,60,138,0.1);
    color: var(--cpm-blue);
}

/* DESCRIZIONE */
.cpm-premio-desc {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 8px;
    line-height: 1.4;
}

/* VINCOLO */
.cpm-premio-vincolo {
    font-size: 12px;
    color: #92400e;
    background: #fef3c7;
    padding: 6px 10px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;
}

/* BOTTONE AZIONE */
.cpm-premio-action {
    width: 100%;
    border: none;
    background: none;
    color: var(--cpm-blue);
    font-weight: 600;
    font-size: 14px;
    padding: 10px 0;
    cursor: pointer;
}

    .cpm-premio-action:hover {
        text-decoration: underline;
    }

    .cpm-premio-action:disabled {
        opacity: 0.4;
        cursor: default;
        text-decoration: none;
    }

/* DISABLED */
.cpm-premio-disabled {
    opacity: 0.55;
}

/* DARK MODE */
body.dark .cpm-premio-card {
    background: #020617;
    box-shadow: 0 14px 32px rgba(0,0,0,0.6);
}

body.dark .cpm-premio-title {
    color: #e5e7eb;
}

body.dark .cpm-premio-desc {
    color: #94a3b8;
}

body.dark .cpm-premio-vincolo {
    background: rgba(251,191,36,0.15);
    color: #fde68a;
}

/* =====================================================
   CPM PREMI CARD – BANKING / LUXURY
===================================================== */

.cpm-premio-card {
    background: #ffffff;
    border-radius: 18px;
    padding: 16px;
    margin-bottom: 14px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.06);
    transition: transform .15s ease, box-shadow .15s ease;
}

    .cpm-premio-card:active {
        transform: scale(0.98);
    }

/* HEADER */
.cpm-premio-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
}

.cpm-premio-title {
    font-size: 15px;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.2;
}

/* BADGE PUNTI */
.cpm-premio-badge {
    font-size: 12px;
    padding: 4px 10px;
    border-radius: 999px;
    font-weight: 700;
    background: rgba(11,60,138,0.1);
    color: var(--cpm-blue);
}

/* DESCRIZIONE */
.cpm-premio-desc {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 8px;
    line-height: 1.4;
}

/* VINCOLO */
.cpm-premio-vincolo {
    font-size: 12px;
    color: #92400e;
    background: #fef3c7;
    padding: 6px 10px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;



}

/* BOTTONE AZIONE */
.cpm-premio-action {
    width: 100%;
    border: none;
    background: none;
    color: var(--cpm-blue);
    font-weight: 600;
    font-size: 14px;
    padding: 10px 0;
    cursor: pointer;
}

    .cpm-premio-action:hover {
        text-decoration: underline;
    }

    .cpm-premio-action:disabled {
        opacity: 0.4;
        cursor: default;
        text-decoration: none;
    }

/* DISABLED */
.cpm-premio-disabled {
    opacity: 0.55;
}

/* DARK MODE */
body.dark .cpm-premio-card {
    background: #020617;
    box-shadow: 0 14px 32px rgba(0,0,0,0.6);
}

body.dark .cpm-premio-title {
    color: #e5e7eb;
}

body.dark .cpm-premio-desc {
    color: #94a3b8;
}

body.dark .cpm-premio-vincolo {
    background: rgba(251,191,36,0.15);
    color: #fde68a;
}

/* =========================
   iOS TAB BAR
========================= */
.ios-tabs {
    display: flex;
    background: #f1f3f5;
    border-radius: 14px;
    padding: 4px;
    gap: 4px;
}

.ios-tab {
    flex: 1;
    background: transparent;
    border: none;
    border-radius: 12px;
    padding: 10px 0;
    font-weight: 600;
    font-size: 14px;
    color: #6c757d;
    position: relative;
    transition: all .25s ease;
}

    .ios-tab.active {
        background: #ffffff;
        color: #0B3C8A;
        box-shadow: 0 4px 10px rgba(0,0,0,.08);
    }

/* Dark: tab bar (Profilo + Premi) */
body.dark .ios-tabs {
    background: #0f172a;
    box-shadow: 0 2px 8px rgba(0,0,0,.3);
}
body.dark .ios-tab {
    color: #94A3B8;
}
body.dark .ios-tab.active {
    background: #1E293B;
    color: #93C5FD;
    box-shadow: 0 4px 10px rgba(0,0,0,.25);
}

/* =========================
   BADGE iOS
========================= */
.ios-badge {
    position: absolute;
    top: -4px;
    right: 18px;
    background: #ff3b30;
    color: #fff;
    font-size: 11px;
    min-width: 18px;
    height: 18px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 5px;
}

/* =========================
   TAB CONTENT
========================= */
.ios-tab-content {
    display: none;
    animation: fadeUp .25s ease;
}

    .ios-tab-content.active {
        display: block;
    }

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.ios-tab {
    position: relative;
    padding: 10px 16px;
    font-weight: 600;
}

.ios-badge {
    position: absolute;
    top: -4px;
    right: -6px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: #ff3b30;
    color: #fff;
    border-radius: 9px;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
    font-weight: 600;
}

.cpm-premio-disabled .cpm-premio-action i {
    opacity: 0.5;
}

.cpm-action-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* === CTA RISCATTA – STILE BANK / iOS === */
.cpm-premio-action {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    padding: 6px 0;
    background: transparent;
    border: none;
    color: var(--cpm-primary, #0B3C8A);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
}

    /* icona */
    .cpm-premio-action i {
        font-size: 0.95rem;
        opacity: 0.85;
    }

    /* hover (desktop) */
    .cpm-premio-action:hover {
        opacity: 0.75;
    }



/* DISABILITATO */
.cpm-riscatta-link[disabled],
.cpm-riscatta-link.aspNetDisabled {
    color: #b5b5b5;
    cursor: default;
    pointer-events: none;
    
}

/* icona leggermente più soft */
.cpm-riscatta-link i {
    font-size: 15px;
}

.cpm-premio-action-wrapper {
    display: flex;
    justify-content: center;
    margin-top: 10px;
}

.cpm-riscatta-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.cpm-buono-action {
    display: flex;
    align-items: center;
    gap: 7px; /* 👈 spazio elegante tra le azioni */
}

    .cpm-buono-action .cpm-buono-link + .cpm-buono-link {
        margin-left: 7px;
    }

/* =========================
   LEGENDA BUONI
========================= */

.buoni-legenda {
    display: flex;
    gap: 15px;
    margin-bottom: 12px;
    font-size: 0.85rem;
    color: #6c757d;
}

    .buoni-legenda .legenda-item {
        display: flex;
        align-items: center;
        gap: 6px;
        font-weight: 500;
    }

        .buoni-legenda .legenda-item::before {
            content: "●";
            font-size: 0.9rem;
        }

    /* Stati */
    .buoni-legenda .attivo::before {
        color: #157347; /* verde scuro */
    }

    .buoni-legenda .usato::before {
        color: #adb5bd; /* grigio */
    }

    .buoni-legenda .annullato::before {
        color: #dc3545; /* rosso */
    }

/* =========================
   PREMI / BUONI – LISTA iOS (movimento-row)
========================= */
/* Vincolo premio: riga sotto la descrizione */
.movimento-row-vincolo {
    margin-top: 6px;
}
    .movimento-row-vincolo.vincolo-badge {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 5px 10px;
        background: #f3f4f6;
        color: #6b7280;
        font-size: 12px;
        font-weight: 400;
        border-left: 4px solid #9ca3af;
        border-radius: 8px;
    }
.movimento-row-vincolo.vincolo-badge i {
    color: #6b7280;
    font-size: 12px;
}
body.dark .movimento-row-vincolo.vincolo-badge {
    background: rgba(255,255,255,0.08);
    color: #9ca3af;
    border-left-color: #6b7280;
}
body.dark .movimento-row-vincolo.vincolo-badge i {
    color: #9ca3af;
}
.movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo.vincolo-badge {
    background: rgba(0,0,0,0.06);
    color: #9ca3af;
    border-left-color: #6b7280;
}
.movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo.vincolo-badge i {
    color: #9ca3af;
}
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo.vincolo-badge {
    background: rgba(255,255,255,0.06);
    color: #6b7280;
    border-left-color: #4b5563;
}
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo.vincolo-badge i {
    color: #6b7280;
}

/* Premio: Riscatta sotto il badge, allineata in larghezza al badge */
/* Card premi: prima riga (titolo, descrizione, vincolo, badge pt), ultima riga = Riscatta centrato */
.premi-card-wrap {
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.premi-card-wrap:last-child {
    border-bottom: none;
}
body.dark .premi-card-wrap {
    border-bottom-color: rgba(255,255,255,.1);
}
.premi-card-wrap .movimento-row.premi-row {
    border-bottom: none;
    padding-top: 10px;
    padding-bottom: 2px;
}
/* Badge punti allineato al titolo (riga e colonna destra in alto) */
.movimento-row.premi-row {
    align-items: flex-start;
}
.movimento-row.premi-row .movimento-row-right {
    align-items: flex-start;
}
.movimento-row.premi-row .movimento-row-left {
    align-items: flex-start;
}
.premi-row-actions {
    padding: 0 16px 8px;
    text-align: left;
}
.premi-row-actions .premi-riscatta-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

/* Modal anagrafica incompleta (Premi): bloccante al click su Riscatta */
/* Centrato nella porzione visibile (stessa logica QR fullscreen: 100dvh) */
.premi-modal-anagrafica {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    min-height: 100vh;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
}
.premi-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.5);
    backdrop-filter: blur(4px);
}
.premi-modal-card {
    position: relative;
    width: 100%;
    max-width: 340px;
    background: #fff;
    border-radius: 20px;
    padding: 28px 24px;
    text-align: center;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3);
}
.premi-modal-icon {
    font-size: 48px;
    color: var(--cpm-blue);
    margin-bottom: 16px;
}
.premi-modal-title {
    font-size: 20px;
    font-weight: 700;
    margin: 0 0 12px 0;
    color: #1e293b;
}
.premi-modal-text {
    font-size: 15px;
    line-height: 1.45;
    color: #64748b;
    margin: 0 0 24px 0;
}
.premi-modal-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.premi-modal-btn {
    display: block;
    padding: 14px 20px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    text-align: center;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: background 0.2s, color 0.2s;
}
.premi-modal-btn-primary {
    background: var(--cpm-blue);
    color: #fff;
}
.premi-modal-btn-primary:hover { background: #1d4ed8; color: #fff; }
.premi-modal-btn-close {
    background: rgba(0,0,0,0.06);
    color: #475569;
}
.premi-modal-btn-close:hover { background: rgba(0,0,0,0.1); }
body.dark .premi-modal-card { background: #1e293b; }
body.dark .premi-modal-title { color: #f1f5f9; }
body.dark .premi-modal-text { color: #94a3b8; }
body.dark .premi-modal-btn-close { background: rgba(255,255,255,0.1); color: #e2e8f0; }
body.dark .premi-modal-btn-close:hover { background: rgba(255,255,255,0.15); }

/* OTP: 6 caselle in riga, ZERO flex sulle caselle = width sempre 40px */
#modalOtpLogin .otp-digits-wrap {
    display: block !important;
    text-align: center;
    font-size: 0;
}
#modalOtpLogin .otp-digit {
    display: inline-block !important;
    width: 40px !important;
    min-width: 40px !important;
    max-width: 40px !important;
    height: 40px !important;
    margin: 0 5px !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-size: 20px;
    font-weight: 500;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    background: #fff;
    -moz-appearance: textfield;
    vertical-align: top;
}
#modalOtpLogin .otp-digit::-webkit-outer-spin-button,
#modalOtpLogin .otp-digit::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
#modalOtpLogin .otp-digit:focus {
    border-color: #9ca3af;
    outline: none;
}
#modalOtpLogin .otp-digit::placeholder {
    color: transparent;
}
body.dark #modalOtpLogin .otp-digit {
    border-color: rgba(255,255,255,0.25);
    background: rgba(255,255,255,0.08);
    color: #f1f5f9;
}
body.dark #modalOtpLogin .otp-digit:focus {
    border-color: rgba(255,255,255,0.45);
}

/* X in alto a destra nella card: ultimo figlio = paint order sopra il contenuto */
#modalOtpLogin .premi-modal-card { overflow: visible; }
#modalOtpLogin .otp-modal-close {
    position: absolute;
    top: 12px;
    right: 12px;
    left: auto;
    width: 34px;
    height: 34px;
    padding: 0;
    border: none;
    background: rgba(0,0,0,0.08);
    color: #475569;
    border-radius: 8px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    z-index: 5;
    transition: background 0.2s ease, color 0.2s ease;
}
#modalOtpLogin .otp-modal-close i {
    pointer-events: none;
}
#modalOtpLogin .otp-modal-close:hover {
    background: rgba(0,0,0,0.14);
    color: #1e293b;
}
body.dark #modalOtpLogin .otp-modal-close {
    background: rgba(255,255,255,0.12);
    color: #94a3b8;
}
body.dark #modalOtpLogin .otp-modal-close:hover {
    background: rgba(255,255,255,0.22);
    color: #e2e8f0;
}

.movimento-row.premi-row .movimento-row-badges {
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}
.premi-badge-riscatta-wrap {
    display: inline-flex;
    flex-direction: column;
    align-items: stretch;
}
.premi-badge-riscatta-wrap .premi-riscatta-link {
    text-align: center;
    display: block;
}

.premi-riscatta-link {
    font-size: 13px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.premi-riscatta-link:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
    opacity: 0.9;
}
.movimento-row.premi-row.premi-row-disabled {
    opacity: 0.6;
    background-color: rgba(0, 0, 0, 0.03);
}
.movimento-row.premi-row.premi-row-disabled .movimento-row-stazione,
.movimento-row.premi-row.premi-row-disabled .movimento-row-meta,
.movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo {
    color: #9ca3af;
}
/* Premi e Buoni: icona leggermente più piccola, centrata nella riga */
.movimento-row.premi-row .movimento-row-icon,
.movimento-row.buono-row .movimento-row-icon {
    font-size: 18px;
}
.movimento-row.premi-row.premi-row-disabled .movimento-row-icon {
    opacity: 0.6;
}
.movimento-row.premi-row.premi-row-disabled .movimento-row-punti {
    background-color: #d1d5db !important;
    color: #6b7280 !important;
}
.movimento-row.premi-row.premi-row-disabled .premi-riscatta-link,
.premi-riscatta-link[disabled],
.premi-riscatta-link.aspNetDisabled {
    color: #9ca3af !important;
    pointer-events: none;
    text-decoration: line-through;
    cursor: not-allowed;
}
body.dark .premi-riscatta-link { color: #93c5fd; }
body.dark .premi-riscatta-link:hover { color: #bfdbfe; }
body.dark .movimento-row.premi-row.premi-row-disabled {
    background-color: rgba(0, 0, 0, 0.2);
    opacity: 0.7;
}
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-stazione,
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-meta,
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-vincolo {
    color: #6b7280;
}
body.dark .movimento-row.premi-row.premi-row-disabled .movimento-row-punti {
    background-color: #4b5563 !important;
    color: #9ca3af !important;
}
body.dark .movimento-row.premi-row.premi-row-disabled .premi-riscatta-link { color: #6b7280 !important; }

/* Legenda buoni: una sola riga */
.buoni-legenda-oneline {
    display: flex;
    flex-wrap: nowrap;
    gap: 14px;
    font-size: 14px;
    color: #6c757d;
    align-items: center;
}
.buoni-legenda-oneline .legenda-item {
    white-space: nowrap;
}
.buoni-legenda-oneline .legenda-item::before {
    content: "●";
    font-size: 0.85rem;
    margin-right: 5px;
}
.buoni-legenda-oneline .attivo::before { color: #157347; }
.buoni-legenda-oneline .usato::before { color: #adb5bd; }
.buoni-legenda-oneline .annullato::before { color: #dc3545; }
body.dark .buoni-legenda-oneline { color: #9ca3af; }

.buono-stato-badge {
    font-size: 11px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 999px;
    letter-spacing: 0.02em;
}
/* Piccolo badge stato buono: stessi colori della legenda */
.buono-stato-badge.buono-stato-piccolo {
    font-size: 10px;
    padding: 3px 8px;
    font-weight: 600;
}
.buono-stato-badge.buono-stato-solo-colore {
    display: inline-block;
    padding: 0;
    width: 12px;
    height: 12px;
    min-width: 12px;
    min-height: 12px;
    border-radius: 50%;
    vertical-align: middle;
}
.buono-stato-badge.buono-stato-solo-colore.buono-attivo {
    background-color: #157347 !important;
    color: transparent;
}
.buono-stato-badge.buono-stato-solo-colore.buono-usato {
    background-color: #adb5bd !important;
    color: transparent;
}
.buono-stato-badge.buono-stato-solo-colore.buono-annullato {
    background-color: #dc3545 !important;
    color: transparent;
}
.buono-stato-badge.buono-attivo {
    background: #157347;
    color: #fff;
}
.buono-stato-badge.buono-usato {
    background: #e5e7eb;
    color: #374151;
}
.buono-stato-badge.buono-annullato {
    background: #dc3545;
    color: #fff;
}
body.dark .buono-stato-badge.buono-stato-solo-colore.buono-attivo {
    background-color: #198754 !important;
}
body.dark .buono-stato-badge.buono-stato-solo-colore.buono-usato {
    background-color: #4b5563 !important;
}
body.dark .buono-stato-badge.buono-stato-solo-colore.buono-annullato {
    background-color: #ef4444 !important;
}
body.dark .buono-stato-badge.buono-attivo {
    background: #198754;
    color: #d1fae5;
}
body.dark .buono-stato-badge.buono-usato {
    background: #4b5563;
    color: #9ca3af;
}
body.dark .buono-stato-badge.buono-annullato {
    background: #dc2626;
    color: #fecaca;
}

/* Card buoni: prima riga (titolo, meta, badge), ultima riga = Mostra buono + Scarica PDF */
.buono-card-wrap {
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.buono-card-wrap:last-child {
    border-bottom: none;
}
body.dark .buono-card-wrap {
    border-bottom-color: rgba(255,255,255,.1);
}
.buono-card-wrap .movimento-row.buono-row {
    border-bottom: none;
    padding-bottom: 6px;
}
.buono-row-actions {
    padding: 0 16px 14px;
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
}
.buono-row-actions .btn-buono-card {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}
.buono-row-actions .btn-buono-card:hover {
    text-decoration: underline;
}

/* =========================
   BUONO – CONTAINER
========================= */
.buono-wrapper {
    max-width: 420px;
    margin: 0 auto;
    padding: 24px 20px 32px;
    background: #ffffff;
    border-radius: 16px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.06);
    text-align: center;
}

/* =========================
   HEADER
========================= */
.buono-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-bottom: 10px;
}

    .buono-header img {
        height: 40px;
    }

.buono-title {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: #2f3a45;
    text-transform: uppercase;
}

/* =========================
   HINT
========================= */
.buono-hint {
    font-size: 14px;
    color: #5f6b7a;
    margin-bottom: 18px;
}

/* =========================
   QR
========================= */
.buono-qr img {
    width: 240px;
    max-width: 100%;
    margin: 10px auto 16px;
}

/* =========================
   CODICE
========================= */
.buono-code {
    display: inline-block;
    padding: 6px 14px;
    border-radius: 999px;
    background: #e9eef3;
    color: #2f3a45;
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.05em;
    margin-bottom: 14px;
}

/* =========================
   DESCRIZIONE
========================= */
.buono-desc {
    font-size: 15px;
    font-weight: 600;
    color: #2f3a45;
    margin-bottom: 14px;
}

/* =========================
   VINCOLO
========================= */
.buono-vincolo {
    display: inline-block;
    padding: 8px 12px;
    margin-bottom: 7px;
    background: #f3f4f6;
    color: #6b7280;
    font-size: 13px;
    font-weight: 500;
    border-left: 4px solid #9ca3af;
    border-radius: 8px;
}

/* =========================
   NOTE
========================= */
.buono-note {
    font-size: 12.5px;
    color: #6f7b88;
    margin-bottom: 24px;
}

/* =========================
   AZIONI
========================= */
.buono-actions {
    display: flex;
    justify-content: center;
    gap: 24px;
}

/* Chiudi */
.link-action {
    font-weight: 600;
    font-size: 14px;
    color: #2f6fd6;
    text-decoration: none;
    cursor: pointer;
}

    .link-action:hover {
        text-decoration: underline;
    }

/* Annulla */
.link-danger {
    font-weight: 600;
    font-size: 14px;
    color: #a94442;
    text-decoration: none;
}

    .link-danger:hover {
        text-decoration: underline;
    }

/* =========================
   FULLSCREEN QR (centrato nella porzione visibile dello schermo)
========================= */
.qr-fullscreen {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    min-height: 100vh;
    background: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
    box-sizing: border-box;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease;
    z-index: 9999;
}

    .qr-fullscreen.show {
        opacity: 1;
        pointer-events: auto;
    }

.qr-fullscreen .qr-full-img {
    display: block;
    width: min(92vw, 92dvh);
    height: min(92vw, 92dvh);
    max-width: 100%;
    max-height: min(88dvh, 88vh);
    object-fit: contain;
    margin: auto;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
}

.btn-buono {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--cpm-blue);
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
}

.btn-danger-outline {
    color: #b42318;
}

/* =========================
   MASCHERA BUONO – DARK MODE
========================= */
body.dark.buono-fullscreen {
    background: linear-gradient(180deg, #0f172a, #020617);
}
body.dark .buono-wrapper {
    background: #1e293b;
    box-shadow: 0 8px 24px rgba(0,0,0,0.4);
}
body.dark .buono-title {
    color: #e2e8f0;
}
body.dark .buono-header img {
    filter: brightness(1.05);
}
body.dark .buono-hint {
    color: #94a3b8;
}
body.dark .buono-code {
    background: rgba(255,255,255,0.08);
    color: #e2e8f0;
}
body.dark .buono-desc {
    color: #e2e8f0;
}
body.dark .buono-vincolo {
    background: rgba(255,255,255,0.08);
    color: #9ca3af;
    border-left-color: #6b7280;
}
body.dark .buono-note {
    color: #94a3b8;
}
body.dark .btn-buono {
    color: #93c5fd;
}
body.dark .btn-buono:hover {
    color: #bfdbfe;
}
body.dark .btn-danger-outline {
    color: #fca5a5;
}
body.dark .btn-danger-outline:hover {
    color: #fecaca;
}

/* ===== LISTA MOVIMENTI STILE iOS ===== */
.movimenti-list-ios {
    background: #fff;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 20px;
}

.movimenti-list-ios .movimento-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 16px;
    cursor: pointer;
    transition: background 0.15s ease;
    min-height: 56px;
}

.movimenti-list-ios .movimento-row:active {
    background: #e5e5ea;
}

.movimenti-list-ios .movimento-row.premi-row,
.movimenti-list-ios .movimento-row.buono-row {
    cursor: default;
}
/* Premi: badge punti in alto, allineato al titolo (override align-items: center della riga base) */
.movimenti-list-ios .movimento-row.premi-row {
    align-items: flex-start;
}
.movimenti-list-ios .movimento-row.premi-row .movimento-row-left,
.movimenti-list-ios .movimento-row.premi-row .movimento-row-right {
    align-items: flex-start;
}
.movimenti-list-ios .movimento-row.premi-row:active,
.movimenti-list-ios .movimento-row.buono-row:active {
    background: transparent;
}

/* Badge tipo operazione nello storico */
.storico-badge-tipo {
    font-size: 13px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 999px;
}
.storico-badge-carico { background: #d4edda; color: #155724; }
.storico-badge-buono { background: #ffe5d0; color: #a04000; }
.storico-badge-storno { background: #f8d7da; color: #721c24; }
body.dark .storico-badge-carico { background: rgba(52,199,89,.25); color: #6ee7b7; }
body.dark .storico-badge-buono { background: rgba(255,159,67,.25); color: #ffc078; }
body.dark .storico-badge-storno { background: rgba(255,107,107,.25); color: #ffa8a8; }

/* Dettaglio buono: numero punti scaricati */
/* Punti scaricati (Benzinaio e Cliente dettaglio buono) in rosso */
.dettaglio-punti-wrap .dettaglio-punti-val.storico-punti-scaricati-val { color: #dc3545; }
body.dark .dettaglio-punti-wrap .dettaglio-punti-val.storico-punti-scaricati-val { color: #f87171; }

/* Dettaglio operazione storico */
.storico-dettaglio-dl { display: grid; grid-template-columns: auto 1fr; gap: 0.4rem 1.2rem; margin: 0; }
.storico-dettaglio-dl dt { font-weight: 600; color: #495057; }
.storico-dettaglio-dl dd { margin: 0; }

.movimento-row-left {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.movimento-row-icon {
    font-size: 20px;
    color: var(--cpm-blue);
    flex-shrink: 0;
}

.movimento-row-body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.movimento-row-stazione {
    font-weight: 600;
    font-size: 15px;
}

.movimento-row-tessera-codice {
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
    margin-top: 2px;
}

.movimento-row-tessera-codice .movimento-row-tessera-label {
    font-weight: 700;
}

.movimento-row-meta {
    font-size: 13px;
    color: #6c757d;
}

.movimento-row-descrizione-italic {
    font-style: italic;
}

.movimento-row-importo {
    font-size: 13px;
    color: #6c757d;
    margin-top: 2px;
}

.movimento-row-right {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.movimento-row-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}

.movimento-row-punti {
    font-size: 12px;
    border-radius: 999px;
    padding: 4px 10px;
}

/* Punti positivi – blu medio (né sparato né troppo scuro) */
.movimento-row-punti-plus {
    background-color: #1d5bb5;
    color: #fff;
}

body.dark .movimento-row-punti-plus {
    background-color: #2d6bc9;
    color: #e8eeff;
}

/* Storno / punti negativi */
.movimento-row-punti-minus {
    background-color: #dc3545;
    color: #fff;
}


body.dark .movimento-row-punti-minus {
    background-color: #b91c1c;
    color: #fecaca;
}

.movimento-row-badge {
    font-size: 11px;
    padding: 3px 8px;
}

/* Badge scadenza punti – stesso stile del vincolo Premi */
.movimento-row-badge-scadenza {
    font-size: 12px;
    font-weight: 400;
    padding: 5px 10px;
    background: #f3f4f6;
    color: #6b7280;
    border-left: 4px solid #9ca3af;
    border-radius: 8px;
}

body.dark .movimento-row-badge-scadenza {
    background: rgba(255,255,255,0.08);
    color: #9ca3af;
    border-left-color: #6b7280;
}

.movimento-row-chevron {
    font-size: 14px;
    color: #adb5bd;
}

/* Riga non cliccabile (es. buono riscattato / annullato): nascondi freccia, no pointer, no effetto hover/active */
.movimento-row-no-link .movimento-row-chevron {
    display: none;
}
.movimento-row-no-link {
    cursor: default;
}
.movimenti-list-ios .movimento-row-no-link:hover,
.movimenti-list-ios .movimento-row-no-link:active {
    background: transparent;
}

.movimento-row-punti-val {
    font-size: 14px;
    font-weight: 600;
}

.movimento-row-punti-val.plus {
    color: #198754;
}

.movimento-row-punti-val.minus {
    color: #dc3545;
}

/* Link "Visualizza tutti" movimenti: stile come Riscatta (no sfondo hover, solo testo/underline) */
.link-tutti-movimenti {
    display: inline-flex;
    align-items: center;
    font-size: 14px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
    transition: color 0.2s ease, opacity 0.2s ease;
}

.link-tutti-movimenti:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
    opacity: 0.9;
}

.link-tutti-movimenti:active {
    opacity: 0.85;
}

body.dark .link-tutti-movimenti {
    color: #93c5fd;
}

body.dark .link-tutti-movimenti:hover {
    color: #93c5fd;
    text-decoration: underline;
    opacity: 0.9;
}

body.dark .movimenti-list-ios {
    background: #1E293B;
    border: 1px solid rgba(255,255,255,0.06);
}

body.dark .movimento-row-stazione {
    color: #F1F5F9;
}

body.dark .movimento-row-tessera-codice {
    color: #94a3b8;
}

body.dark .movimenti-list-ios .movimento-row:active {
    background: rgba(255,255,255,.06);
}
body.dark .movimenti-list-ios .movimento-row.premi-row:active,
body.dark .movimenti-list-ios .movimento-row.buono-row:active {
    background: transparent;
}
body.dark .movimenti-list-ios .movimento-row-no-link:hover,
body.dark .movimenti-list-ios .movimento-row-no-link:active {
    background: transparent;
}

body.dark .movimento-row-meta,
body.dark .movimento-row-importo {
    color: #94A3B8;
}
body.dark .movimento-row-icon {
    color: #93C5FD;
}

body.dark .movimento-row-chevron {
    color: #64748b;
}

/* Empty state iOS (Movimenti) */
.empty-state-ios {
    text-align: center;
    padding: 48px 24px 32px;
}
.empty-state-ios-icon {
    font-size: 56px;
    color: #c7c7cc;
    margin-bottom: 16px;
    display: block;
}
.empty-state-ios-title {
    font-size: 17px;
    font-weight: 600;
    color: #3c3c43;
    margin: 0 0 6px;
}
.empty-state-ios-subtitle {
    font-size: 15px;
    color: #8e8e93;
    margin: 0;
}
body.dark .empty-state-ios-icon {
    color: #4b5563;
}
body.dark .empty-state-ios-title {
    color: #e5e7eb;
}
body.dark .empty-state-ios-subtitle {
    color: #9ca3af;
}

/* Overlay scansione QR – Benzinaio Home (inquadratura chiara e stile curato) */
.scanner-overlay {
    position: fixed;
    inset: 0;
    background: linear-gradient(180deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}
.scanner-overlay-inner {
    background: rgba(30, 41, 59, 0.95);
    border-radius: 24px;
    padding: 20px;
    max-width: 100%;
    box-shadow: 0 25px 60px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.08);
}
.scanner-overlay-header {
    color: #f1f5f9;
    font-size: 1.05rem;
    display: flex;
    align-items: center;
    gap: 10px;
}
.scanner-overlay-header .scanner-header-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(59, 130, 246, 0.2);
    color: #3b82f6;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
}
.scanner-close {
    color: #94a3b8;
    border-color: rgba(255, 255, 255, 0.2);
    border-radius: 10px;
}
.scanner-close:hover {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.4);
    background: rgba(255, 255, 255, 0.08);
}
/* Inquadratura QR: cornice visibile e area ben definita */
.qr-reader-wrap {
    border-radius: 16px;
    overflow: hidden;
    margin-top: 12px;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.35), inset 0 0 0 1px rgba(255, 255, 255, 0.1);
    border: 2px dashed rgba(59, 130, 246, 0.5);
    background: rgba(0, 0, 0, 0.3);
    padding: 8px;
}
.qr-reader-wrap video {
    border-radius: 10px;
    display: block;
}
.qr-reader-wrap img[alt="QR code scanner"] {
    border-radius: 10px;
}
body.dark .scanner-overlay-inner {
    background: rgba(15, 23, 42, 0.98);
}
.scanner-overlay-fullscreen .scanner-overlay-inner {
    position: relative;
    max-width: 100%;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    border-radius: 0;
    border: none;
}
.scanner-close-btn {
    position: absolute;
    top: -8px;
    right: -8px;
    z-index: 10;
    width: 30px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(0, 0, 0, 0.3);
    color: #e2e8f0;
    font-size: 1.25rem;
    border-radius: 12px;
    cursor: pointer;
}
.scanner-close-btn:hover {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.4);
    background: rgba(255, 255, 255, 0.1);
}
.scanner-close-btn .bi {
    pointer-events: none;
}
.scanner-overlay-fullscreen #scannerCameraBlock {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.scanner-overlay-fullscreen .qr-reader-wrap {
    flex: 1;
    min-height: 200px;
    margin-top: 16px;
}
.scanner-hint {
    color: #94a3b8;
    font-size: 0.9rem;
    text-align: center;
}
.scanner-hint-top {
    flex-shrink: 0;
    order: -1;
}
.scanner-no-camera-wrap {
    flex-shrink: 0;
    text-align: center;
    padding: 12px 0;
    width: 100%;
}
.scanner-no-camera-wrap .scanner-manual-fallback {
    width: 100%;
}
.scanner-no-camera-wrap .scanner-manual-fallback .form-control,
.scanner-no-camera-wrap .scanner-manual-fallback .btn,
.scanner-no-camera-wrap > .btn {
    width: 100%;
    box-sizing: border-box;
}
/* Benzinaio: solo camera, nessun upload file */
#qr-reader input[type="file"],
.scanner-overlay input[type="file"] {
    display: none !important;
}

/* Risultato scansione buono (verde/rosso) – ritorno automatico allo scanner */
.scanner-result-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.85);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.scanner-result-card {
    background: #fff;
    border-radius: 20px;
    padding: 32px 24px;
    text-align: center;
    max-width: 340px;
    width: 100%;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}
.scanner-result-card.scanner-result-ok { border-top: 4px solid #22c55e; }
.scanner-result-card.scanner-result-err { border-top: 4px solid #dc3545; }
.scanner-result-icon { font-size: 56px; display: block; margin-bottom: 16px; }
.scanner-result-title { font-size: 20px; font-weight: 700; margin: 0 0 8px 0; color: #1e293b; }
.scanner-result-message { font-size: 15px; color: #64748b; margin: 0 0 8px 0; }
.scanner-result-detail { margin: 0; }
body.dark .scanner-result-card { background: #1e293b; }
body.dark .scanner-result-title { color: #f1f5f9; }
body.dark .scanner-result-message { color: #94a3b8; }

/* Bottone Carica altri – stile iOS (Movimenti) */
.load-more-wrap {
    text-align: center;
    margin-top: 20px;
    padding: 0 4px;
}

.btn-load-more-ios {
    display: block;
    width: 100%;
    padding: 14px 20px;
    font-size: 17px;
    font-weight: 600;
    color: var(--cpm-blue);
    background: #f2f2f7;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease;
    -webkit-appearance: none;
    appearance: none;
}

.btn-load-more-ios:hover {
    background: #e5e5ea;
    color: var(--cpm-blue);
}

.btn-load-more-ios:active {
    background: #d1d1d6;
    transform: scale(0.98);
}

body.dark .btn-load-more-ios {
    background: rgba(255, 255, 255, 0.08);
    color: #93c5fd;
}

body.dark .btn-load-more-ios:hover {
    background: rgba(255, 255, 255, 0.12);
}

body.dark .btn-load-more-ios:active {
    background: rgba(255, 255, 255, 0.18);
}

/* Splash "Accesso in corso" – centrato anche su mobile (viewport dinamico) */
.redirect-splash {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    min-height: 100vh;
    min-height: 100dvh;
    height: 100%;
    background: #0B3C8A;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 9999;
    padding: 20px;
    box-sizing: border-box;
}

    .redirect-splash .splash-logo {
        width: 120px;
        margin-bottom: 12px;
    }

    .redirect-splash .splash-text {
        font-size: 15px;
        font-weight: 500;
        color: #FFF;
    }

    body.dark .redirect-splash {
    background: #020617;
}

body.dark .redirect-splash .splash-text {
    color: #94a3b8;
}

/* ===== DDL PILL APP STYLE ===== */

/* RIGA iOS */
.ios-row {
    background: #fff;
    padding: 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 16px;
    border-top: 1px solid rgba(0,0,0,.08);
    border-bottom: 1px solid rgba(0,0,0,.08);
    cursor: pointer;
}

/* Riga sola lettura (es. tipo cliente in profilo: non modificabile) */
.ios-row-readonly {
    cursor: default;
    pointer-events: none;
    color: #64748b;
}

/* SHEET */
.ios-sheet {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
}

    .ios-sheet.show {
        display: block;
    }

.ios-sheet-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.35);
}

.ios-sheet-panel {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    background: #f2f2f7;
    border-radius: 16px 16px 0 0;
    padding: 12px;
    animation: sheetUp .25s ease-out;
}

@keyframes sheetUp {
    from {
        transform: translateY(100%);
    }

    to {
        transform: translateY(0);
    }
}

.ios-sheet-handle {
    width: 36px;
    height: 4px;
    background: #ccc;
    border-radius: 2px;
    margin: 6px auto 10px;
}

.ios-sheet-title {
    text-align: center;
    font-size: 13px;
    color: #666;
    margin-bottom: 8px;
}

/* area scrollabile stile iOS (rotella) */
.ios-sheet-options {
    max-height: 220px;
    overflow-y: auto;
    overflow-x: hidden;
    scroll-snap-type: y mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    padding: 0 8px;
}

.ios-sheet-option {
    background: #fff;
    padding: 16px;
    text-align: center;
    font-size: 17px;
    border-radius: 12px;
    margin-bottom: 8px;
    scroll-snap-align: center;
    scroll-snap-stop: always;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .ios-sheet-option:active {
        background: #e5e5ea;
    }

.ios-sheet-option-muted {
    color: #8e8e93;
    pointer-events: none;
}

.ios-sheet-cancel {
    margin-top: 8px;
    padding: 16px;
    text-align: center;
    font-size: 17px;
    font-weight: 600;
    color: #007aff;
}

/* Blocco Anno + Tipo + Filtri avanzati con righe separatrici – prima riga e tutte a larghezza piena */
.filtri-rows .ios-row {
    border-top: none;
    border-bottom: 1px solid rgba(0,0,0,.08);
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.filtri-rows .ios-row:last-child {
    border-bottom: 1px solid rgba(0,0,0,.08);
}

body.dark .filtri-rows .ios-row {
    border-bottom-color: rgba(255,255,255,.1);
    background: #1E293B;
    color: #F1F5F9;
}
body.dark .ios-row span,
body.dark .ios-row strong {
    color: #F1F5F9;
}

/* Profilo: stesse righe/sheet di Movimenti in dark */
body.dark .profilo-rows .ios-row,
body.dark .profilo-card-ios .ios-row {
    border-bottom-color: rgba(255,255,255,.1);
    background: #1E293B;
    color: #F1F5F9;
}

/* FILTRI AVANZATI – in linea con ios-row e card-soft */
.filtri-avanzati-icon {
    color: var(--cpm-blue);
    opacity: 1;
    font-size: 1.25rem;
    display: inline-block;
    flex-shrink: 0;
    width: 1.25em;
    height: 1.25em;
}

.filtri-rows .filtri-avanzati-toggle {
    margin-top: 0;
}

    .filtri-avanzati-toggle .filtri-avanzati-chevron {
        color: #666;
        font-size: 0.9rem;
    }

    .filtri-avanzati-toggle[aria-expanded="true"] .filtri-avanzati-chevron {
        transform: rotate(180deg);
    }

.filtri-avanzati-body {
    margin-top: 2px;
}

.filtri-avanzati-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    padding: 16px 0 8px;
}

.filtri-avanzati-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.filtri-avanzati-label {
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin: 0;
}

.filtri-avanzati-inner .form-control {
    width: 100%;
}

/* Campi data Da/A: data su una riga (no wrap) */
.filtri-avanzati-inner .filtri-date-input {
    min-height: 48px;
    white-space: nowrap;
    min-width: 0;
}

/* Campi data Data nascita (Profilo): icona calendario */
.profilo-field input[type="date"] {
    padding-right: 44px;
    min-height: 48px;
}
@media (max-width: 767px) {
    .profilo-field input[type="date"] {
        padding-right: 48px;
        min-height: 48px;
    }
}

/* Dark mode: icona calendario nativa chiara (altrimenti nera su sfondo scuro) */
body.dark input[type="date"]::-webkit-calendar-picker-indicator {
    filter: invert(1);
    opacity: 0.85;
}

body.dark .filtri-avanzati-toggle .filtri-avanzati-chevron {
    color: #94A3B8;
}

body.dark .filtri-avanzati-label {
    color: #94A3B8;
}

/* =========================
   PROFILO – iOS STYLE
========================= */
.profilo-card-ios {
    overflow: hidden;
}

.profilo-rows {
    padding: 0;
}

.profilo-field {
    padding: 14px 16px;
    border-bottom: 1px solid rgba(0,0,0,.08);
}

.profilo-field-last {
    border-bottom: none;
}

.profilo-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin: 0 0 6px;
}

/* RegistraCliente: valore "Seleziona tipologia" stesso colore delle label (Cognome, Nome, ecc.) */
.profilo-card-ios .profilo-field .ios-row span {
    color: #64748b;
}

.profilo-field .form-control-ios {
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
}

.profilo-field .form-control-readonly,
.profilo-field .profilo-ios-row-readonly {
    background: #f8f9fa;
    color: #6c757d;
}
.profilo-field .profilo-ios-row-readonly {
    cursor: default;
    pointer-events: none;
}

/* Campi anagrafica: sempre maiuscolo in visualizzazione (nome, cognome, CF/P.IVA, indirizzo, cellulare) – RegistraCliente e Profilo */
.input-uppercase {
    text-transform: uppercase;
}

/* Email (Login, Password dimenticata): sempre minuscolo in visualizzazione */
.input-lowercase {
    text-transform: lowercase;
}

/* Autocomplete comune inline (nessuna maschera) */
.comune-autocomplete-wrap {
    position: relative;
}
.comune-autocomplete-dropdown {
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    margin-top: 4px;
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.15);
    border: 1px solid rgba(0,0,0,0.08);
    z-index: 100;
}
.comune-autocomplete-dropdown.show {
    display: block;
}
.comune-autocomplete-item {
    padding: 12px 14px;
    font-size: 15px;
    color: #111;
    cursor: pointer;
    border-bottom: 1px solid rgba(0,0,0,0.05);
}
.comune-autocomplete-item:last-child {
    border-bottom: none;
}
.comune-autocomplete-item:hover,
.comune-autocomplete-item:active {
    background: #f1f5f9;
}
.comune-autocomplete-muted {
    color: #8e8e93;
    cursor: default;
}
.comune-autocomplete-muted:hover,
.comune-autocomplete-muted:active {
    background: transparent;
}
body.dark .comune-autocomplete-dropdown {
    background: #1E293B;
    border-color: rgba(255,255,255,0.1);
}
body.dark .comune-autocomplete-item {
    color: #F1F5F9;
    border-bottom-color: rgba(255,255,255,0.06);
}
body.dark .comune-autocomplete-item:hover,
body.dark .comune-autocomplete-item:active {
    background: #334155;
}
body.dark .comune-autocomplete-muted {
    color: #94a3b8;
}

.profilo-actions {
    padding: 20px 16px 16px;
}
.profilo-btn-fixed {
    width: 100%;
    min-width: 100%;
    box-sizing: border-box;
}

/* Tab Profilo Anagrafici / Consensi */
.nav-tabs-profilo {
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.nav-tabs-profilo .nav-link {
    font-weight: 600;
    color: #64748b;
    border: none;
    border-bottom: 2px solid transparent;
    padding: 12px 16px;
}
.nav-tabs-profilo .nav-link.active {
    color: var(--cpm-blue);
    border-bottom-color: var(--cpm-blue);
    background: transparent;
}
body.dark .nav-tabs-profilo {
    border-bottom-color: rgba(255,255,255,.1);
}
body.dark .nav-tabs-profilo .nav-link {
    color: #94a3b8;
}
body.dark .nav-tabs-profilo .nav-link.active {
    color: #60a5fa;
    border-bottom-color: #60a5fa;
}

/* Storico consensi per tipologia */
.storico-consensi-tipo {
    padding: 12px 0;
    border-bottom: 1px solid rgba(0,0,0,.06);
}
.storico-consensi-tipo:last-child {
    border-bottom: none;
}
.storico-consensi-tipo-title {
    font-size: 14px;
    font-weight: 600;
    color: #374151;
    margin: 0 0 8px 0;
}
.storico-consensi-table {
    font-size: 13px;
}
.storico-consensi-table th {
    font-weight: 600;
    color: #6b7280;
}
body.dark .storico-consensi-tipo-title {
    color: #e2e8f0;
}
body.dark .storico-consensi-tipo {
    border-bottom-color: rgba(255,255,255,.08);
}
body.dark .storico-consensi-table th {
    color: #94a3b8;
}

/* =========================
   PROFILO – Consensi (tab usa .ios-tabs come Premi)
========================= */
.consenso-block .consenso-stato {
    font-size: 13px;
    color: #64748b;
}
.consenso-stato-sotto {
    margin-top: 10px;
    text-align: left;
}
.consenso-table th {
    font-size: 12px;
    font-weight: 600;
    color: #6b7280;
}
.consenso-table td {
    font-size: 12px;
    color: #111827;
}

/* Griglia consensi – night mode */
body.dark .consensi-card-ios h5 {
    color: #F1F5F9;
}
body.dark .consenso-block {
    color: #E2E8F0;
}
body.dark .consenso-block .fw-semibold {
    color: #F1F5F9;
}
body.dark .consenso-table {
    background: transparent;
    --bs-table-bg: transparent;
    --bs-table-border-color: rgba(255,255,255,0.08);
}
body.dark .consenso-table thead th {
    background: rgba(15,23,42,0.6);
    color: #E2E8F0;
    border-bottom: 1px solid rgba(255,255,255,0.12);
    border-top: none;
    font-weight: 600;
}
body.dark .consenso-table tbody tr {
    border-bottom: 1px solid rgba(255,255,255,0.06);
}
body.dark .consenso-table tbody tr:hover {
    background: rgba(255,255,255,0.04);
}
body.dark .consenso-table td {
    color: #CBD5E1;
    border-bottom-color: rgba(255,255,255,0.06);
    vertical-align: middle;
}
body.dark .consenso-block .consenso-stato {
    color: #94A3B8;
}
body.dark .consenso-firma-panel {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
}
body.dark .consenso-firma-info {
    color: #94A3B8;
}

.consenso-firma-panel {
    border-radius: 8px;
    background: #f3f4f6;
    padding: 8px;
}
.consenso-firma-img {
    max-width: 100%;
    max-height: 120px;
    display: block;
    margin: 0 auto 4px auto;
}
.consenso-firma-info {
    font-size: 11px;
    color: #6b7280;
    display: block;
    text-align: center;
}

body.dark .profilo-field {
    border-bottom-color: rgba(255,255,255,.1);
}

body.dark .profilo-label {
    color: #94A3B8;
}

body.dark .profilo-card-ios .profilo-field .ios-row span {
    color: #94A3B8;
}

body.dark .profilo-field .form-control-ios {
    border-color: rgba(255,255,255,.12);
}

body.dark .profilo-field .form-control-readonly,
body.dark .profilo-field .profilo-ios-row-readonly {
    background: rgba(255,255,255,.06);
    color: #94A3B8;
}

/* =========================
   DETTAGLIO MOVIMENTO – iOS grouped list
========================= */
.dettaglio-card-ios {
    border-radius: 12px;
    overflow: hidden;
}
.dettaglio-rows {
    padding: 0;
}
.dettaglio-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 18px;
    border-bottom: 1px solid rgba(0,0,0,.08);
    font-size: 16px;
}
.dettaglio-row-last {
    border-bottom: none;
}
.dettaglio-row-label {
    font-size: 15px;
    color: #64748b;
    font-weight: 500;
}
.dettaglio-row-value {
    font-weight: 600;
    color: #1e293b;
    text-align: right;
}
.dettaglio-punti-wrap {
    border-radius: 12px;
}
.dettaglio-punti-val {
    font-size: 2rem;
    font-weight: 700;
}
.dettaglio-row-toggle {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.dettaglio-row-toggle:hover {
    background: rgba(0,0,0,.03);
    color: inherit;
}
.dettaglio-chevron {
    font-size: 14px;
    color: #94a3b8;
}
.dettaglio-row-toggle[aria-expanded="true"] .dettaglio-chevron {
    transform: rotate(180deg);
}
body.dark .dettaglio-row {
    border-bottom-color: rgba(255,255,255,.08);
}
body.dark .dettaglio-row-label {
    color: #94A3B8;
}
body.dark .dettaglio-row-value {
    color: #F1F5F9;
}
body.dark .dettaglio-row-toggle:hover {
    background: rgba(255,255,255,.06);
}

/* =========================
   PASSWORD (CAMBIO) – iOS STYLE
========================= */
.password-card-ios {
    overflow: hidden;
}

.password-rows {
    padding: 0;
}

.password-field {
    padding: 14px 16px;
    border-bottom: 1px solid rgba(0,0,0,.08);
}

.password-field-last {
    border-bottom: none;
}

.password-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin: 0 0 6px;
}

.password-field .form-control-ios {
    border-radius: 10px;
    padding: 12px 14px 12px 14px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
}

.password-field .position-relative {
    position: relative;
}

.password-field .pwd-toggle {
    right: 14px;
}

.password-actions {
    padding: 20px 16px 16px;
}

/* Torna al login – stile iOS (PasswordDimenticata, ResetPassword) */
.torna-login-ios {
    display: block;
    text-align: center;
    padding: 16px;
    font-size: 17px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
}

.torna-login-ios:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
    opacity: 0.9;
}

body.dark .torna-login-ios {
    color: #93c5fd;
}

body.dark .torna-login-ios:hover {
    color: #93c5fd;
    opacity: 0.9;
}

.password-field .pwd-meter {
    margin-top: 10px;
}

.password-field .password-feedback {
    margin-top: 6px;
    margin-bottom: 0;
}

body.dark .password-field {
    border-bottom-color: rgba(255,255,255,.1);
}

body.dark .password-label {
    color: #94A3B8;
}

body.dark .password-field .form-control-ios {
    border-color: rgba(255,255,255,.12);
}

/* =========================
   SEGNALAZIONI – iOS STYLE
========================= */
.segnalazioni-card-ios {
    overflow: hidden;
}

.segnalazioni-form-hidden {
    display: none !important;
}

.segnalazione-from-movimento .filtri-rows .ios-row[data-sheet="sheet-tipo-segnalazione"] {
    cursor: default;
    pointer-events: none;
    opacity: 0.9;
}
.segnalazione-from-movimento .segnalazioni-field-after-tipo input[readonly] {
    background: #f1f5f9;
    color: #475569;
    cursor: default;
}

.segnalazioni-rows {
    padding: 0;
}

.segnalazioni-field {
    padding: 14px 16px;
    border-bottom: 1px solid rgba(0,0,0,.08);
}

.segnalazioni-field-last {
    border-bottom: none;
}

.segnalazioni-field-after-tipo {
    border-top: 1px solid rgba(0,0,0,.08);
}

body.dark .segnalazioni-field-after-tipo {
    border-top-color: rgba(255,255,255,.1);
}

.segnalazioni-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin: 0 0 6px;
}

.segnalazioni-field .form-control-ios,
.segnalazioni-field .form-select.form-control-ios {
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
    background-color: #fff;
    color: #1e293b;
    min-height: 48px;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 36px;
}

.segnalazioni-field .form-select.form-control-ios:focus {
    border-color: var(--cpm-blue);
    box-shadow: 0 0 0 2px rgba(11, 60, 138, 0.2);
    outline: none;
}

.segnalazioni-field textarea.form-control-ios {
    min-height: 100px;
    resize: vertical;
}

.segnalazioni-actions {
    padding: 16px 16px 20px;
    text-align: center;
}

/* Annulla – stile rosso come "Annulla buono" (btn-danger-outline) */
.segnalazioni-annulla {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    text-align: center;
    font-size: 17px;
    font-weight: 600;
    color: #b42318;
    padding: 12px 20px;
    margin: 0 auto;
    text-decoration: none;
    border-radius: 12px;
    transition: color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
}

.segnalazioni-annulla:hover {
    color: #8b1a12;
    text-decoration: underline;
    opacity: 0.9;
    background: transparent;
}

body.dark .segnalazioni-annulla {
    color: #fca5a5;
}

body.dark .segnalazioni-annulla:hover {
    color: #fecaca;
    text-decoration: underline;
    opacity: 1;
    background: transparent;
}

/* Link \"Nuova segnalazione\" – allineato a sinistra, leggibile in dark mode */
.segnalazioni-nuova-wrap {
    text-align: left;
}

.segnalazioni-nuova-link,
button.segnalazioni-nuova-link {
    font-size: 15px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
    background: none !important;
    border: none !important;
    padding: 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
}

.segnalazioni-nuova-link:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
    opacity: 0.9;
}

body.dark .segnalazioni-nuova-link {
    color: #60a5fa;
}

body.dark .segnalazioni-nuova-link:hover {
    color: #93c5fd;
    opacity: 1;
}

/* "Chiudi segnalazione": stile link (no bottone), colore rosso – anche se è un <button> */
button.segnalazioni-chiudi-link,
.segnalazioni-chiudi-link {
    background: none !important;
    border: none !important;
    padding: 0;
    font-size: 15px;
    font-weight: 600;
    color: var(--bs-danger, #dc3545);
    text-decoration: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    box-shadow: none;
}

.segnalazioni-chiudi-link:hover {
    color: var(--bs-danger, #dc3545);
    text-decoration: underline;
    opacity: 0.9;
    background: transparent !important;
    border-color: transparent !important;
}

body.dark .segnalazioni-chiudi-link {
    color: #f87171;
}

body.dark .segnalazioni-chiudi-link:hover {
    color: #fca5a5;
    opacity: 1;
}

/* Filtro lista: Vedi chiuse / Mostra aperte */
.segnalazioni-azioni-row {
    text-align: left;
}

.segnalazioni-azioni-row-affiancati.segnalazioni-azioni-row {
    flex-wrap: nowrap;
    gap: 0.5rem 0.75rem;
}

.segnalazioni-azioni-row-affiancati .segnalazioni-nuova-wrap,
.segnalazioni-azioni-row-affiancati .segnalazioni-filter-wrap {
    flex-shrink: 0;
}

.segnalazioni-filter-wrap {
    text-align: left;
}

.segnalazioni-filter-link {
    font-size: 14px;
    font-weight: 500;
    color: var(--cpm-blue);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
}

.segnalazioni-filter-link:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
    opacity: 0.9;
}

/* "Segnalazioni aperte" – verde */
.segnalazioni-link-aperte {
    color: #166534 !important;
    font-weight: 500;
}

.segnalazioni-link-aperte:hover {
    color: #15803d !important;
    opacity: 1;
}

body.dark .segnalazioni-link-aperte {
    color: #86efac !important;
}

body.dark .segnalazioni-link-aperte:hover {
    color: #bbf7d0 !important;
}

/* "Vedi segnalazioni chiuse" – colore secondario (grigio/slate) per distinguerlo da Nuova segnalazione */
.segnalazioni-link-chiuse {
    color: #64748b !important;
    font-weight: 500;
}

.segnalazioni-link-chiuse:hover {
    color: #475569 !important;
    opacity: 1;
}

body.dark .segnalazioni-filter-link {
    color: #60a5fa;
}

body.dark .segnalazioni-filter-link:hover {
    color: #93c5fd;
}

body.dark .segnalazioni-link-chiuse {
    color: #94a3b8 !important;
}

body.dark .segnalazioni-link-chiuse:hover {
    color: #cbd5e1 !important;
}

/* Lista accordion iOS */
.segnalazioni-list-ios {
    overflow: hidden;
}

/* Lista segnalazioni = stessa logica movimento-row (Home/Movimenti) */
.segnalazione-item {
    border-bottom: 1px solid rgba(0,0,0,.08);
}

.segnalazione-item:last-child {
    border-bottom: none;
}

.segnalazione-item .movimento-row {
    border-bottom: none;
}

.segnalazione-row {
    cursor: pointer;
}

.segnalazione-row.segnalazione-row {
    background: transparent;
}

.segnalazione-row:hover {
    background: rgba(0,0,0,.03);
}

.segnalazioni-dot-wrap,
.movimento-dot-wrap {
    flex-shrink: 0;
    margin-right: 6px;
    display: inline-flex;
    align-items: center;
}
.segnalazione-pallino-non-letta {
    width: 10px;
    height: 10px;
    min-width: 10px;
    min-height: 10px;
    background-color: var(--cpm-red);
    border-radius: 50%;
    display: inline-block;
}
body.dark .segnalazione-pallino-non-letta {
    background-color: #f87171;
}

.admin-segn-pallino-non-letta {
    width: 10px;
    height: 10px;
    min-width: 10px;
    min-height: 10px;
    background-color: var(--cpm-red);
    border-radius: 50%;
    display: inline-block;
}
body.dark .admin-segn-pallino-non-letta {
    background-color: #f87171;
}

.segnalazione-chevron {
    transition: transform 0.2s ease;
}

.segnalazione-item:has(.collapse.show) .segnalazione-chevron {
    transform: rotate(90deg);
}

.segnalazione-collapse {
    border-top: 1px solid rgba(0,0,0,.06);
}

/* ===== VISTA CONVERSAZIONE (stile WhatsApp come Admin: non sotto la riga) ===== */
.segnalazioni-conversazione-hidden {
    display: none !important;
}

.segnalazioni-conversazione-wrap {
    margin-top: 0;
    padding-bottom: 1.5rem;
}

/* Dettaglio aperto: meno spazio tra header pagina e riga oggetto+badge */
.segnalazioni-conversazione-wrap.segnalazioni-conversation-open {
    margin-top: -0.75rem;
}

/* Prima riga: Oggetto a sinistra, badge stato a destra (maschera dettaglio segnalazione). */
.segnalazioni-conversazione-header {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid rgba(0,0,0,.08);
    width: 100%;
    box-sizing: border-box;
}

.segnalazioni-conversazione-back {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    gap: 0.25rem;
    color: var(--cpm-blue);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.95rem;
    order: 1;
}

.segnalazioni-conversazione-back:hover {
    color: var(--cpm-blue);
    text-decoration: underline;
}

/* Contenitore oggetto + badge: occupa tutto lo spazio, flex per mettere badge a destra */
.segnalazioni-conversazione-titolo {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    gap: 0.5rem;
}

/* Oggetto a sinistra, si tronca se lungo */
.segnalazioni-conv-oggetto {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 600;
    font-size: 1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-sizing: border-box;
}

/* Badge stato a destra nella maschera segnalazione */
.segnalazioni-conv-stato {
    flex-shrink: 0;
    margin-left: auto;
    font-size: 0.75rem;
}

/* Contenitore chat stile WhatsApp (come Admin) */
.segnalazioni-wa-container {
    background: linear-gradient(180deg, #ebe5df 0%, #eee8e2 100%);
    background-color: #ebe5df;
    border-radius: 12px;
    padding: 0;
    margin-bottom: 1rem;
    min-height: 220px;
    box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
}

.segnalazioni-wa-container .segnalazione-chat-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 1rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: #3d3d3d;
    background: rgba(255,255,255,0.5);
    border-radius: 12px 12px 0 0;
    border-bottom: 1px solid rgba(0,0,0,.06);
}

.segnalazioni-wa-container .segnalazione-chat-header i {
    color: #25d366;
    font-size: 1.1rem;
}

.segnalazioni-wa-messages {
    padding: 1rem;
    min-height: 180px;
}

.segnalazioni-wa-messages .segnalazione-wa-msg {
    display: flex;
    flex-direction: column;
    margin-bottom: 6px;
    max-width: 78%;
}

.segnalazioni-wa-messages .segnalazione-wa-msg-client {
    align-items: flex-start;
}

.segnalazioni-wa-messages .segnalazione-wa-msg-cpm {
    align-items: flex-end;
}

.segnalazioni-wa-messages .segnalazione-wa-bubble {
    border-radius: 18px;
    padding: 8px 12px 10px;
    font-size: 0.9rem;
    line-height: 1.45;
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}

/* Cliente: bolla sinistra (ricevuti) – bianca con coda a sinistra */
.segnalazioni-wa-messages .segnalazione-wa-msg-client .segnalazione-wa-bubble {
    background: #fff;
    color: #1f2c34;
    border-radius: 4px 18px 18px 18px;
    border: none;
}

/* CPM: bolla destra (inviati) – verde WA con coda a destra */
.segnalazioni-wa-messages .segnalazione-wa-msg-cpm .segnalazione-wa-bubble {
    background: #d9fdd3;
    color: #1f2c34;
    border-radius: 18px 4px 18px 18px;
    border: none;
}

.segnalazioni-wa-messages .segnalazione-wa-data {
    font-size: 0.7rem;
    color: #667781;
    margin-top: 2px;
    margin-left: 4px;
    font-style: normal;
}

.segnalazioni-wa-messages .segnalazione-wa-allegati a {
    color: #027eb5;
    text-decoration: none;
    padding: 3px 8px;
    border-radius: 6px;
    background: rgba(0,0,0,.05);
    font-size: 0.85rem;
}

.segnalazioni-wa-messages .segnalazione-wa-allegati a:hover {
    background: rgba(0,0,0,.08);
}

.segnalazione-rispondi-label {
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 0.35rem;
}

body.dark .segnalazioni-conversazione-header {
    border-bottom-color: rgba(255,255,255,.1);
}

body.dark .segnalazioni-wa-container {
    background: linear-gradient(180deg, #2d2d2d 0%, #252525 100%);
}

body.dark .segnalazioni-wa-messages .segnalazione-wa-msg-client .segnalazione-wa-bubble {
    background: #3d4a54;
    color: #e2e8f0;
}

body.dark .segnalazioni-wa-messages .segnalazione-wa-msg-cpm .segnalazione-wa-bubble {
    background: #005c4b;
    color: #e2e8f0;
}

.segnalazioni-body {
    padding: 16px;
    background: #ffffff;
}

.segnalazioni-msg {
    margin-bottom: 14px;
}

.segnalazioni-msg:last-of-type {
    margin-bottom: 0;
}

.segnalazioni-msg-mittente {
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin-bottom: 4px;
}

.segnalazioni-msg-bubble {
    background: #fff;
    border-radius: 10px;
    padding: 8px 10px;
    font-size: 14px;
    line-height: 1.35;
    border: 1px solid rgba(0,0,0,.06);
}

.segnalazioni-msg-data {
    font-size: 11px;
    color: #8e8e93;
    margin-top: 4px;
    font-style: italic;
}

/* Stile WhatsApp: messaggio cliente a sinistra, CPM a destra */
.segnalazioni-msg-client,
.segnalazioni-msg-cpm {
    display: flex;
    flex-direction: column;
    max-width: 85%;
}

.segnalazioni-msg-client {
    align-items: flex-start;
}

.segnalazioni-msg-cpm {
    align-items: flex-end;
}

/* Bolle in toni di grigio: un solo accento (blu) resta per le azioni */
.segnalazioni-msg-client .segnalazioni-msg-bubble {
    /* cliente: grigio con leggero accento blu */
    background: #e0edff;
    color: #1e3a8a;
    border-color: #bfdbfe;
}

.segnalazioni-msg-cpm .segnalazioni-msg-bubble {
    background: #f3f4f6;
    color: #374151;
    border-color: #e5e7eb;
}

.segnalazioni-msg-client .segnalazioni-msg-data,
.segnalazioni-msg-cpm .segnalazioni-msg-data {
    margin-top: 4px;
}

.segnalazioni-allegato-link {
    display: inline-flex;
    align-items: center;
    font-size: 12px;
    color: #0B3C8A;
    text-decoration: none;
    margin-right: 8px;
    margin-bottom: 4px;
    padding: 2px 6px;
    border-radius: 6px;
    background: rgba(11, 60, 138, 0.1);
}
.segnalazioni-allegato-link:hover {
    background: rgba(11, 60, 138, 0.18);
}

.segnalazioni-reply-wrap {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid rgba(0,0,0,.08);
}

.segnalazioni-reply-wrap .reply-text {
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 16px;
    border: 1px solid rgba(0,0,0,.1);
}

.segnalazioni-reply-actions {
    display: flex;
    gap: 16px;
    justify-content: flex-end;
    margin-top: 10px;
}

.segnalazioni-link-action {
    font-size: 15px;
    font-weight: 600;
    color: var(--cpm-blue);
    text-decoration: none;
}

.segnalazioni-link-action:hover {
    color: var(--cpm-blue);
    opacity: 0.9;
}

.segnalazioni-link-danger {
    color: #8b1a12;
}

.segnalazioni-link-danger:hover {
    color: #374151;
}

/* Dark */
body.dark .segnalazioni-field {
    border-bottom-color: rgba(255,255,255,.1);
}

body.dark .segnalazioni-label {
    color: #94A3B8;
}

body.dark .segnalazioni-field .form-control-ios,
body.dark .segnalazioni-field .form-select.form-control-ios {
    background-color: #0f172a;
    color: #F8FAFC;
    border-color: rgba(255,255,255,.12);
}

body.dark .segnalazioni-field .form-select.form-control-ios {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
}

body.dark .segnalazioni-field .form-select.form-control-ios:focus {
    border-color: #64748b;
    box-shadow: 0 0 0 2px rgba(100, 116, 139, 0.3);
}

body.dark .segnalazioni-field .form-select.form-control-ios option {
    background: #0f172a;
    color: #F8FAFC;
}


body.dark .segnalazione-item {
    border-bottom-color: rgba(255,255,255,.1);
}

body.dark .segnalazione-row:hover {
    background: rgba(255,255,255,.06);
}

body.dark .segnalazione-collapse {
    border-top-color: rgba(255,255,255,.08);
}

body.dark .segnalazioni-body {
    background: #0f172a;
}

body.dark .segnalazioni-msg-bubble {
    background: #334155;
    border-color: rgba(255,255,255,.08);
    color: #F1F5F9;
}

body.dark .segnalazioni-msg-mittente {
    color: #94A3B8;
}

body.dark .segnalazioni-reply-wrap {
    border-top-color: rgba(255,255,255,.1);
}

body.dark .segnalazioni-reply-wrap .reply-text {
    border-color: rgba(255,255,255,.12);
}

body.dark .segnalazioni-link-action {
    color: var(--cpm-blue);
}

body.dark .segnalazioni-link-danger {
    color: #94a3b8;
}

/* =========================
   DARK MODE – LEGGIBILITÀ GLOBALE
========================= */
body.dark .page-header h1,
body.dark .page-header-ios h1 {
    color: #F8FAFC;
}
body.dark .text-muted,
body.dark .text-secondary {
    color: #94A3B8 !important;
}
body.dark .small,
body.dark small {
    color: #94A3B8;
}
body.dark h1, body.dark h2, body.dark h3, body.dark h4, body.dark h5, body.dark h6 {
    color: #F1F5F9;
}
body.dark .form-control:focus {
    border-color: #64748B;
    box-shadow: 0 0 0 0.2rem rgba(100, 116, 139, 0.35);
}
/* Sheet (dropdown Anno/Tipo / Profilo Tipo-Sesso-Comune-CAP) in dark – come Movimenti */
body.dark .ios-sheet-panel {
    background: #1E293B;
    border-top: 1px solid rgba(255,255,255,0.08);
}
body.dark .ios-sheet-handle {
    background: #64748B;
}
body.dark .ios-sheet-title {
    color: #94A3B8;
}
body.dark .ios-sheet-options {
    background: transparent;
}
body.dark .ios-sheet-option {
    background: #334155;
    color: #F1F5F9;
}
body.dark .ios-sheet-option:active {
    background: #475569;
}
body.dark .ios-sheet-cancel {
    color: #93C5FD;
}
body.dark .ios-sheet-backdrop {
    background: rgba(0,0,0,.5);
}
/* Input search in sheet (es. Comune Profilo) */
body.dark .ios-sheet-panel .form-control,
body.dark .ios-sheet-panel .form-control-ios {
    background: #0f172a;
    color: #F8FAFC;
    border-color: rgba(255,255,255,0.12);
}
body.dark .ios-sheet-panel .form-control::placeholder {
    color: #94A3B8;
}
/* Empty state e load more */
body.dark .empty-state-ios-icon {
    color: #64748B;
}
body.dark .empty-state-ios-title {
    color: #E2E8F0;
}
body.dark .empty-state-ios-subtitle {
    color: #94A3B8;
}
/* Container / contenuto generico su sfondo scuro */
body.dark .container {
    color: inherit;
}

/* =========================
   DARK MODE – AREA CLIENTE (leggibilità ovunque)
========================= */
body.dark .ios-row {
    background: #1E293B;
    color: #F1F5F9;
    border-color: rgba(255,255,255,.1);
}
body.dark .ios-row-readonly {
    color: #94a3b8;
}
body.dark .movimento {
    color: #F1F5F9;
}
body.dark .card,
body.dark .card-soft,
body.dark .card-body {
    color: #F1F5F9;
}
body.dark .card a:not(.btn):not(.page-back-link):not(.segnalazioni-link-action):not(.link-tutti-movimenti) {
    color: #93c5fd;
}
body.dark .card a:not(.btn):hover {
    color: #bfdbfe;
}
body.dark .form-label,
body.dark label {
    color: #e2e8f0;
}
body.dark .dettaglio-punti-wrap,
body.dark .dettaglio-punti-wrap .dettaglio-row-label {
    color: #94a3b8;
}
body.dark .dettaglio-punti-wrap .dettaglio-punti-val,
body.dark .dettaglio-punti-wrap .punti-grandi {
    color: #f1f5f9;
}
body.dark .segnalazioni-card-ios,
body.dark .segnalazioni-rows {
    color: #f1f5f9;
}
body.dark .premi-modal-title {
    color: #f1f5f9;
}
body.dark .premi-modal-text {
    color: #cbd5e1;
}
body.dark .consenso-table td {
    color: #e2e8f0;
}
body.dark .btn-outline-secondary {
    border-color: rgba(255,255,255,.3);
    color: #e2e8f0;
}
body.dark .btn-outline-secondary:hover {
    background: rgba(255,255,255,.1);
    color: #f1f5f9;
    border-color: rgba(255,255,255,.4);
}
body.dark .info-punti-toggle {
    color: #93c5fd;
}
body.dark .info-punti-toggle:hover {
    color: #bfdbfe;
}
body.dark .info-punti-box i {
    color: #93c5fd;
}
body.dark .filtri-rows .ios-row span,
body.dark .filtri-rows .ios-row strong {
    color: #f1f5f9;
}
body.dark .segnalazioni-nuova-link {
    color: #93c5fd;
}
body.dark .segnalazioni-annulla {
    color: #94a3b8;
}
body.dark .segnalazioni-annulla:hover {
    color: #cbd5e1;
    text-decoration: underline;
    opacity: 1;
    background: transparent;
}
body.dark .ios-sheet-option-muted {
    color: #64748b;
}

/* =========================
   PAGINA REGOLAMENTO – PDF.js (tutte le pagine, scroll)
========================= */
.regolamento-page .regolamento-pdf-container {
    position: relative;
    width: 100%;
    height: calc(100vh - 120px);
    min-height: 400px;
    max-height: calc(100dvh - 120px);
    border-radius: 12px;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    background: var(--cpm-bg, #F5F7FA);
}

.regolamento-page .regolamento-pdf-loading,
.regolamento-page .regolamento-pdf-fallback {
    padding: 1.5rem;
    text-align: center;
    color: var(--cpm-muted, #64748b);
}
.regolamento-page .regolamento-pdf-fallback {
    display: none;
}

.regolamento-page .regolamento-pdf-fallback a {
    color: var(--cpm-blue, #0B3C8A);
    font-weight: 600;
}

.regolamento-page .regolamento-pdf-pages {
    padding: 12px 0;
}

.regolamento-page .regolamento-pdf-page-canvas {
    display: block;
    margin: 0 auto 16px;
    max-width: 100%;
    height: auto;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

/* Allegato segnalazione – pagina con torna indietro; PDF come Regolamento (pdf.js + canvas). Stesso ridimensionamento pagina del Regolamento. */
.allegato-segnalazione-page .allegato-segnalazione-container {
    position: relative;
    width: 100%;
    height: calc(100vh - 120px);
    min-height: 400px;
    max-height: calc(100dvh - 120px);
    border-radius: 12px;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    background: var(--cpm-bg, #F5F7FA);
}

.allegato-segnalazione-loading {
    padding: 1.5rem;
    text-align: center;
    color: var(--cpm-muted, #64748b);
}

.allegato-segnalazione-pdf-wrap {
    position: relative;
    width: 100%;
    min-height: 100%;
    border-radius: 12px;
    background: var(--cpm-bg, #F5F7FA);
}

.allegato-segnalazione-pdf-pages {
    padding: 12px 0;
}

.allegato-segnalazione-pdf-pages .regolamento-pdf-page-canvas {
    display: block;
    margin: 0 auto 16px;
    max-width: 100%;
    height: auto;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

.allegato-segnalazione-image-wrap {
    width: 100%;
    text-align: center;
    background: var(--cpm-bg, #F5F7FA);
    border-radius: 12px;
    padding: 1rem;
    min-height: 200px;
}

.allegato-segnalazione-image-wrap:not(.d-none) {
    display: block !important;
}

.allegato-segnalazione-image {
    max-width: 100%;
    width: auto;
    height: auto;
    max-height: calc(100vh - 180px);
    min-height: 100px;
    object-fit: contain;
    display: block !important;
    margin: 0 auto;
    vertical-align: middle;
}

/* =========================
   PROMOZIONI IN CORSO (Cliente / Benzinaio)
========================= */
.promozioni-page-subtitle {
    margin: 6px 0 0;
    font-size: 14px;
    color: var(--cpm-muted);
    font-weight: 400;
}
body.dark .promozioni-page-subtitle {
    color: #94a3b8;
}
.promozioni-page-icon.page-icon {
    background: linear-gradient(135deg, rgba(11, 60, 138, 0.15), rgba(11, 60, 138, 0.08));
    color: var(--cpm-blue);
}
body.dark .promozioni-page-icon.page-icon {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.2), rgba(99, 102, 241, 0.1));
    color: #a5b4fc;
}

/* ---------- Cliente: maschera Promozioni “WOW” ---------- */
/* Cliente Promozioni: header come Profilo/Password; sotto: lista e card */
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap {
    animation: promozioni-card-in 0.4s ease backwards;
}
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(1) { animation-delay: 0.05s; }
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(2) { animation-delay: 0.1s; }
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(3) { animation-delay: 0.15s; }
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(4) { animation-delay: 0.2s; }
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(5) { animation-delay: 0.25s; }
.promozioni-page-cliente .promozioni-list-ios .promozioni-card-wrap:nth-child(n+6) { animation-delay: 0.3s; }
/* Stessa animazione lista per Benzinaio */
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap {
    animation: promozioni-card-in 0.4s ease backwards;
}
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(1) { animation-delay: 0.05s; }
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(2) { animation-delay: 0.1s; }
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(3) { animation-delay: 0.15s; }
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(4) { animation-delay: 0.2s; }
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(5) { animation-delay: 0.25s; }
.promozioni-page-benzinaio .promozioni-list-ios .promozioni-card-wrap:nth-child(n+6) { animation-delay: 0.3s; }
@keyframes promozioni-card-in {
    from {
        opacity: 0;
        transform: translateY(12px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
/* In corso: stile blu CPM evidente + effetto metal */
.promozioni-page-cliente .promozioni-card {
    border-radius: 16px;
    padding: 18px 20px;
    border: 1px solid rgba(11, 60, 138, 0.18);
    border-left: 4px solid var(--cpm-blue);
    background: linear-gradient(165deg, #ffffff 0%, #eff6ff 20%, #dbeafe 45%, #bfdbfe 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.6), inset 0 -1px 2px rgba(11, 60, 138, 0.08), 0 4px 14px rgba(11, 60, 138, 0.14), 0 2px 6px rgba(0, 0, 0, 0.04);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.promozioni-page-cliente .promozioni-row-clickable:active {
    transform: scale(0.99);
}
body.dark .promozioni-page-cliente .promozioni-card {
    border: 1px solid rgba(99, 102, 241, 0.25);
    border-left: 4px solid #6366f1;
    background: linear-gradient(165deg, #312e81 0%, #3730a3 25%, #4338ca 55%, #4f46e5 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.08), inset 0 -1px 2px rgba(0, 0, 0, 0.2), 0 4px 14px rgba(99, 102, 241, 0.25);
}
.promozioni-page-cliente .promozioni-card-titolo {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--cpm-blue);
}
body.dark .promozioni-page-cliente .promozioni-card-titolo {
    color: #c7d2fe;
}
.promozioni-page-cliente .promozioni-empty-state {
    padding: 3rem 1.5rem;
    border-radius: 20px;
    background: linear-gradient(180deg, rgba(11, 60, 138, 0.06) 0%, transparent 100%);
}
body.dark .promozioni-page-cliente .promozioni-empty-state {
    background: linear-gradient(180deg, rgba(99, 102, 241, 0.08) 0%, transparent 100%);
}
.promozioni-page-cliente .promozioni-empty-icon {
    font-size: 64px;
    opacity: 0.9;
}
.promozioni-page-cliente .promozioni-empty-title {
    font-size: 1.25rem;
}

.promozioni-empty-state {
    text-align: center;
    padding: 48px 24px;
}
.promozioni-empty-icon {
    font-size: 56px;
    color: var(--cpm-gray);
    display: block;
    margin-bottom: 16px;
}
body.dark .promozioni-empty-icon {
    color: #475569;
}
.promozioni-empty-title {
    font-size: 18px;
    font-weight: 600;
    margin: 0 0 8px;
    color: var(--cpm-dark);
}
body.dark .promozioni-empty-title {
    color: #F1F5F9;
}
.promozioni-empty-text {
    font-size: 14px;
    color: var(--cpm-muted);
    margin: 0;
}
body.dark .promozioni-empty-text {
    color: #94a3b8;
}

/* Sezioni "Promozioni in corso" / "Promozioni in arrivo" */
.promozioni-sezione {
    margin-bottom: 1.5rem;
}
.promozioni-sezione:last-child {
    margin-bottom: 0;
}
.promozioni-sezione-titolo {
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--cpm-blue);
    margin: 0 0 10px 0;
    padding-bottom: 8px;
    border-bottom: 3px solid rgba(11, 60, 138, 0.45);
    display: inline-block;
}
.promozioni-sezione-block {
    margin: 0;
}
.promozioni-sezione-list {
    margin-top: 0;
}
body.dark .promozioni-sezione-titolo {
    color: #a5b4fc;
    border-bottom-color: rgba(99, 102, 241, 0.55);
}
/* Titolo "In arrivo": aspetto disattivato (stessa logica del dettaglio) */
.promozioni-sezione-titolo-arrivo {
    color: #a8a29e;
    border-bottom-color: rgba(168, 162, 158, 0.4);
}
body.dark .promozioni-sezione-titolo-arrivo {
    color: #57534e;
    border-bottom-color: rgba(87, 83, 78, 0.5);
}
/* Card "In arrivo" in LISTA: quasi disattivato – grigi spenti, come in dettaglio */
.promozioni-sezione-arrivo .promozioni-card {
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-left: 4px solid #d6d3d1 !important;
    background: linear-gradient(165deg, #fafaf9 0%, #f5f5f4 40%, #e7e5e4 100%) !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    opacity: 0.92;
}
body.dark .promozioni-sezione-arrivo .promozioni-card {
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-left: 4px solid #57534e !important;
    background: linear-gradient(165deg, #1c1917 0%, #292524 50%, #44403c 100%) !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    opacity: 0.85;
}
.promozioni-sezione-arrivo .promozioni-card-titolo {
    color: #a8a29e !important;
}
body.dark .promozioni-sezione-arrivo .promozioni-card-titolo {
    color: #57534e !important;
}
.promozioni-sezione-arrivo .promozioni-card-periodo-chip {
    background: rgba(245, 245, 244, 0.9) !important;
    border-color: rgba(0, 0, 0, 0.08) !important;
    color: #78716c !important;
}
.promozioni-sezione-arrivo .promozioni-card-periodo-chip i {
    color: #a8a29e !important;
}
body.dark .promozioni-sezione-arrivo .promozioni-card-periodo-chip {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.08) !important;
    color: #a8a29e !important;
}
body.dark .promozioni-sezione-arrivo .promozioni-card-periodo-chip i {
    color: #78716c !important;
}
.promozioni-sezione-arrivo .promozioni-card-validita,
.promozioni-sezione-arrivo .promozioni-card-date {
    color: #a8a29e !important;
}
body.dark .promozioni-sezione-arrivo .promozioni-card-validita,
body.dark .promozioni-sezione-arrivo .promozioni-card-date {
    color: #57534e !important;
}
/* Lista promozioni: stile righe come Movimenti (non card separate) */
.promozioni-sezione-list {
    background: #fff;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 1rem;
}
body.dark .promozioni-sezione-list {
    background: #1E293B;
    border: 1px solid rgba(255, 255, 255, 0.06);
}
/* In corso: sfondo metal blu CPM sul blocco */
.promozioni-sezione:not(.promozioni-sezione-arrivo) .promozioni-sezione-list {
    background: linear-gradient(165deg, #ffffff 0%, #eff6ff 25%, #dbeafe 55%, #bfdbfe 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.6), inset 0 -1px 2px rgba(11, 60, 138, 0.08);
}
body.dark .promozioni-sezione:not(.promozioni-sezione-arrivo) .promozioni-sezione-list {
    background: linear-gradient(165deg, #312e81 0%, #3730a3 30%, #4338ca 55%, #4f46e5 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.08), inset 0 -1px 2px rgba(0, 0, 0, 0.2);
}
.promozioni-sezione:not(.promozioni-sezione-arrivo) .promozioni-sezione-list .promozioni-card {
    background: transparent;
}
body.dark .promozioni-sezione:not(.promozioni-sezione-arrivo) .promozioni-sezione-list .promozioni-card {
    background: transparent;
}
.promozioni-sezione-list .promozioni-card-wrap {
    margin-bottom: 0;
}
.promozioni-sezione-list .promozioni-card-wrap:last-child .promozioni-card {
    border-bottom: none;
}
/* Riga promozione = stile movimento-row (piatto, bordo sotto, no ombra/gradient) */
.promozioni-sezione-list .promozioni-card {
    border-radius: 0;
    box-shadow: none;
    border: none;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    border-left: 4px solid var(--cpm-blue);
    padding: 14px 16px;
    min-height: 56px;
    background: #fff;
    transition: background 0.15s ease;
}
.promozioni-sezione-list .promozioni-card:active {
    background: #e5e5ea;
}
body.dark .promozioni-sezione-list .promozioni-card {
    border-bottom-color: rgba(255, 255, 255, 0.1);
    background: #1E293B;
}
body.dark .promozioni-sezione-list .promozioni-card:active {
    background: rgba(255, 255, 255, 0.06);
}
/* In arrivo: stessa riga piatta, bordo sinistro grigio, blocco leggermente spento */
.promozioni-sezione-arrivo .promozioni-sezione-list {
    background: #fafaf9;
}
body.dark .promozioni-sezione-arrivo .promozioni-sezione-list {
    background: #0f172a;
}
.promozioni-sezione-arrivo .promozioni-sezione-list .promozioni-card {
    border-left-color: #d6d3d1;
    background: transparent;
    opacity: 0.92;
}
body.dark .promozioni-sezione-arrivo .promozioni-sezione-list .promozioni-card {
    border-left-color: #57534e;
    background: transparent;
    opacity: 0.85;
}
.promozioni-list-ios .promozioni-card-wrap {
    margin-bottom: 0;
}
.promozioni-sezione-list .promozioni-card-wrap:last-child {
    margin-bottom: 0;
}
.promozioni-list-ios .promozioni-card-wrap:last-child {
    margin-bottom: 0;
}
/* Card base (in corso): blu CPM evidente + metal – usato fuori lista (es. altre viste) */
.promozioni-card {
    position: relative;
    border-radius: 14px;
    padding: 16px 18px;
    border: 1px solid rgba(11, 60, 138, 0.18);
    border-left: 4px solid var(--cpm-blue);
    background: linear-gradient(165deg, #ffffff 0%, #eff6ff 22%, #dbeafe 50%, #bfdbfe 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.5), inset 0 -1px 2px rgba(11, 60, 138, 0.08), 0 3px 12px rgba(11, 60, 138, 0.12), 0 2px 5px rgba(0, 0, 0, 0.04);
}
body.dark .promozioni-card {
    border: 1px solid rgba(99, 102, 241, 0.25);
    border-left: 4px solid #6366f1;
    background: linear-gradient(165deg, #312e81 0%, #3730a3 28%, #4338ca 58%, #4f46e5 100%);
    box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.08), inset 0 -1px 2px rgba(0, 0, 0, 0.2), 0 3px 12px rgba(99, 102, 241, 0.22);
}
.promozioni-card-badge {
    position: absolute;
    top: 12px;
    right: 14px;
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    background: linear-gradient(135deg, var(--cpm-blue), #1d4ed8);
    padding: 6px 12px;
    border-radius: 20px;
    box-shadow: 0 2px 8px rgba(11, 60, 138, 0.35);
}
body.dark .promozioni-card-badge {
    background: linear-gradient(135deg, #4f46e5, #6366f1);
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.4);
}
/* Badge "In arrivo": posizione a destra ma lasciando spazio alla freccia (non coprirla) */
.promozioni-card-in-arrivo .promozioni-card-badge.promozioni-badge-in-arrivo {
    right: 46px;
}
.promozioni-badge-in-arrivo {
    background: linear-gradient(135deg, #a8a29e, #78716c);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
    opacity: 0.9;
}
body.dark .promozioni-badge-in-arrivo {
    background: linear-gradient(135deg, #57534e, #78716c);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
    opacity: 0.85;
}
.promozioni-card-in-arrivo .promozioni-card {
    border-left: 3px solid #d6d3d1;
}
body.dark .promozioni-card-in-arrivo .promozioni-card {
    border-left-color: #57534e;
}
.promozioni-card .promozioni-card-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(11, 60, 138, 0.1);
    color: var(--cpm-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
}
body.dark .promozioni-card .promozioni-card-icon {
    background: rgba(99, 102, 241, 0.2);
    color: #a5b4fc;
}
.promozioni-card-titolo {
    font-size: 17px;
    font-weight: 600;
    color: var(--cpm-dark);
    line-height: 1.3;
}
body.dark .promozioni-card-titolo {
    color: #F8FAFC;
}
.promozioni-card-validita {
    font-size: 13px;
    color: var(--cpm-muted);
    margin-top: 4px;
}
body.dark .promozioni-card-validita {
    color: #94a3b8;
}
/* Data in lista: chip più chiaro e leggibile */
.promozioni-card-periodo-wrap {
    margin-top: 6px;
}
.promozioni-card-periodo-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 500;
    color: #1e3a5f;
    padding: 6px 12px;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 4px;
    border: 1px solid rgba(11, 60, 138, 0.18);
    box-shadow: 0 1px 2px rgba(11, 60, 138, 0.06);
}
.promozioni-card-periodo-chip i {
    font-size: 0.95rem;
    color: var(--cpm-blue);
}
body.dark .promozioni-card-periodo-chip {
    background: rgba(248, 250, 252, 0.15);
    border-color: rgba(148, 163, 184, 0.3);
    color: #e2e8f0;
}
body.dark .promozioni-card-periodo-chip i {
    color: #93c5fd;
}
.promozioni-card .movimento-row-body,
.promozioni-card .promozioni-row-body {
    padding-right: 80px;
}
/* Dettaglio sotto la card: blocco in evidenza, sfondo neutro e pulito */
.promozioni-card-dettaglio-sotto {
    display: none;
    padding: 0;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    background: #f8fafc;
    border-radius: 0 0 14px 14px;
    margin-top: 0;
    border-left: 4px solid var(--cpm-blue);
    border-right: 1px solid rgba(0, 0, 0, 0.06);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    box-shadow: none;
}
.promozioni-card-dettaglio-sotto.open {
    display: block;
}
.promozioni-card-wrap-open .promozioni-card {
    border-radius: 14px 14px 0 0;
}
.promozioni-card-dettaglio-heading {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cpm-blue);
    padding: 14px 20px 10px;
}
.promozioni-card-dettaglio-descrizione {
    font-size: 15px;
    line-height: 1.7;
    color: var(--cpm-dark);
    white-space: pre-wrap;
    word-break: break-word;
    letter-spacing: 0.01em;
    max-width: 52em;
    padding: 0 20px 20px;
}
body.dark .promozioni-card-dettaglio-sotto {
    background: #1e293b;
    border-top-color: rgba(255, 255, 255, 0.08);
    border-left-color: #6366f1;
    border-right-color: rgba(255, 255, 255, 0.06);
    border-bottom-color: rgba(255, 255, 255, 0.06);
}
body.dark .promozioni-card-dettaglio-heading {
    color: #a5b4fc;
}
body.dark .promozioni-card-dettaglio-descrizione {
    color: #e2e8f0;
}
/* Riga cliccabile: titolo + date + freccia a destra (invito a tap) */
.promozioni-row-clickable {
    cursor: pointer;
    outline: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.promozioni-row-clickable:hover {
    opacity: 0.95;
}
.promozioni-row-clickable:hover .promozioni-row-arrow {
    transform: translateX(4px);
    color: var(--cpm-blue);
}
.promozioni-row-clickable .promozioni-row-body {
    padding-right: 8px;
    flex: 1;
    min-width: 0;
}
.promozioni-row-arrow {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--cpm-muted);
    font-size: 1.1rem;
    transition: transform 0.2s ease, color 0.2s ease;
}
body.dark .promozioni-row-clickable:hover .promozioni-row-arrow {
    color: #a5b4fc;
}
body.dark .promozioni-row-arrow {
    color: #94a3b8;
}
.promozioni-card-date {
    font-size: 13px;
    color: var(--cpm-muted);
    margin-top: 4px;
}
body.dark .promozioni-card-date {
    color: #94a3b8;
}
.promozioni-descrizione-wrap {
    padding: 12px 18px 16px;
    margin-top: -1px;
    border: 1px solid rgba(11, 60, 138, 0.12);
    border-top: none;
    border-radius: 0 0 14px 14px;
    background: rgba(11, 60, 138, 0.04);
}
body.dark .promozioni-descrizione-wrap {
    border-color: rgba(148, 163, 184, 0.15);
    background: rgba(30, 41, 59, 0.6);
}
.promozioni-descrizione-text {
    font-size: 14px;
    line-height: 1.5;
    color: var(--cpm-dark);
    white-space: pre-wrap;
    word-break: break-word;
}
body.dark .promozioni-descrizione-text {
    color: #e2e8f0;
}

/* Modale dettaglio promozione (Cliente/Benzinaio) */
.promozioni-modal-dettaglio .promo-modal-titolo {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--cpm-dark);
    margin: 0;
}
body.dark .promozioni-modal-dettaglio .promo-modal-titolo {
    color: #f1f5f9;
}
.promozioni-modal-dettaglio .promo-modal-date {
    font-size: 0.875rem;
    margin: 0 0 1rem;
}
.promozioni-modal-dettaglio .promo-modal-descrizione {
    font-size: 15px;
    line-height: 1.5;
    color: var(--cpm-dark);
    white-space: pre-wrap;
    word-break: break-word;
}
body.dark .promozioni-modal-dettaglio .promo-modal-descrizione {
    color: #e2e8f0;
}

/* ---------- Dettaglio promozione: hero, card periodo + descrizione ---------- */
.promo-dettaglio-content {
    margin-top: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.promo-dettaglio-content .promo-dettaglio-hero,
.promo-dettaglio-content .promo-dettaglio-periodo-card,
.promo-dettaglio-content .promo-dettaglio-descrizione-card {
    width: 100%;
    flex: 0 0 auto !important; /* no crescita in altezza da flex (evita 123px) */
}
.promo-dettaglio-hero {
    padding: 0;
    margin-bottom: 8px;
}
/* Card data (periodo) */
.promo-dettaglio-periodo-card {
    padding: 12px 16px !important;
    border-left: 3px solid var(--cpm-blue);
    margin-bottom: 10px;
}
body.dark .promo-dettaglio-periodo-card {
    border-left-color: #6366f1;
}
/* Card descrizione: aspetto card, altezza solo contenuto (nessun 123px da flex) */
.promo-dettaglio-descrizione-card {
    display: block;
    width: 100%;
    height: auto !important;
    min-height: 0 !important;
    box-sizing: border-box;
    background-color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-left: 3px solid var(--cpm-blue);
    border-radius: 12px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
    margin-top: 0;
    padding: 12px 16px !important;
    text-align: left !important;
}
body.dark .promo-dettaglio-descrizione-card {
    background-color: #1E293B;
    border-color: rgba(255, 255, 255, 0.06);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}
.promo-dettaglio-descrizione-card * {
    text-align: left !important;
}
body.dark .promo-dettaglio-descrizione-card {
    border-left-color: #6366f1;
}
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-title {
    margin-bottom: 4px;
    text-align: left !important;
}
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text {
    text-align: left !important;
    display: block;
    width: 100%;
    margin-right: auto;
    margin-left: 0;
    min-height: 0;
}
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text label,
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text span {
    text-align: left !important;
    display: block;
}
/* Titolo promozione nel dettaglio: stesso stile di "In corso" */
.promo-dettaglio-hero-title {
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--cpm-blue);
    line-height: 1.3;
    margin: 0 0 10px 0;
    padding-bottom: 6px;
    border-bottom: 2px solid rgba(11, 60, 138, 0.2);
    display: inline-block;
}
body.dark .promo-dettaglio-hero-title {
    color: #a5b4fc;
    border-bottom-color: rgba(99, 102, 241, 0.35);
}
.promo-dettaglio-periodo-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    color: var(--cpm-muted);
    padding: 6px 14px;
    background: rgba(11, 60, 138, 0.08);
    border-radius: 999px;
    border: 1px solid rgba(11, 60, 138, 0.12);
}
.promo-dettaglio-periodo-chip i {
    font-size: 1rem;
    color: var(--cpm-blue);
}
body.dark .promo-dettaglio-periodo-chip {
    background: rgba(99, 102, 241, 0.12);
    border-color: rgba(99, 102, 241, 0.2);
    color: #94a3b8;
}
body.dark .promo-dettaglio-periodo-chip i {
    color: #a5b4fc;
}
.promo-dettaglio-periodo-inner {
    display: flex;
    align-items: center;
    gap: 14px;
}
.promo-dettaglio-periodo-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(11, 60, 138, 0.1);
    color: var(--cpm-blue);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    flex-shrink: 0;
}
body.dark .promo-dettaglio-periodo-icon {
    background: rgba(99, 102, 241, 0.2);
    color: #a5b4fc;
}
.promo-dettaglio-periodo-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--cpm-muted);
    margin-bottom: 2px;
}
.promo-dettaglio-periodo-value {
    font-size: 1rem;
    font-weight: 600;
    color: var(--cpm-dark);
}
body.dark .promo-dettaglio-periodo-label {
    color: #94a3b8;
}
body.dark .promo-dettaglio-periodo-value {
    color: #f1f5f9;
}
.promo-dettaglio-descrizione-title {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--cpm-muted);
    margin: 0;
}
body.dark .promo-dettaglio-descrizione-title {
    color: #94a3b8;
}
/* Blocco descrizione: area fissa che non si muove; altezza fissa, scroll solo interno */
.promo-dettaglio-descrizione-card {
    flex-shrink: 0 !important;
    overflow: hidden;
    contain: layout;
    min-height: 220px;
}
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text.promo-modal-descrizione {
    font-size: 15px;
    line-height: 1.65;
    color: var(--cpm-dark);
    word-break: break-word;
    text-align: left !important;
    display: block;
    width: 100%;
    height: 180px !important;
    min-height: 180px !important;
    max-height: 180px !important;
    flex: none !important;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    box-sizing: border-box;
    position: relative;
    resize: none;
    pointer-events: auto;
}
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text.promo-modal-descrizione label,
.promo-dettaglio-descrizione-card .promo-dettaglio-descrizione-text.promo-modal-descrizione span {
    display: block !important;
    min-height: 0 !important;
    padding-top: 4px;
}
body.dark .promo-dettaglio-descrizione-text.promo-modal-descrizione {
    color: #e2e8f0;
}

/* ---------- Dettaglio promozione "In arrivo": stessa logica quasi disattivato della lista ---------- */
.promo-dettaglio-content.promo-dettaglio-in-arrivo {
    opacity: 0.92;
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo {
    opacity: 0.85;
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-hero-title {
    color: #a8a29e;
    border-bottom-color: rgba(168, 162, 158, 0.2);
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-hero-title {
    color: #57534e;
    border-bottom-color: rgba(87, 83, 78, 0.3);
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-card {
    border-left-color: #d6d3d1;
    background-color: #fafaf9;
    border-color: rgba(0, 0, 0, 0.06);
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-card {
    border-left-color: #57534e;
    background-color: #1c1917;
    border-color: rgba(255, 255, 255, 0.06);
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-icon {
    background: rgba(168, 162, 158, 0.15);
    color: #78716c;
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-icon {
    background: rgba(87, 83, 78, 0.3);
    color: #a8a29e;
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-label,
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-value {
    color: #78716c;
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-label,
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-periodo-value {
    color: #57534e;
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-card {
    background-color: #fafaf9;
    border-color: rgba(0, 0, 0, 0.06);
    border-left-color: #d6d3d1;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-card {
    background-color: #1c1917;
    border-color: rgba(255, 255, 255, 0.06);
    border-left-color: #57534e;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-title,
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione,
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione label,
.promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione span {
    color: #78716c;
}
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-title,
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione,
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione label,
body.dark .promo-dettaglio-content.promo-dettaglio-in-arrivo .promo-dettaglio-descrizione-text.promo-modal-descrizione span {
    color: #57534e;
}

/* ======================
   FIRMA (RegistraCliente / consensi)
======================= */
.firma-box { padding: 0; touch-action: none; }
.firma-canvas {
    display: block;
    border: 1px solid #ced4da;
    border-radius: 8px;
    background: #fff;
    touch-action: none;
    cursor: crosshair;
    max-width: 100%;
    transform: translateZ(0);
    backface-visibility: hidden;
}
.firma-cancella-link {
    display: inline-block;
    font-size: 0.875rem;
    color: #6c757d;
    text-decoration: none;
    cursor: pointer;
    margin-top: 0.35rem;
}
.firma-cancella-link:hover { color: #495057; text-decoration: underline; }

/* Pagine login/reset: icona link non valido */
.reset-link-icon { font-size: 2.5rem; }