.vot-mappa { isolation: isolate; z-index: 0; height: 72vh; min-height: 360px; border-radius: 12px; background: #e7e5e4; }
.dark .vot-mappa { background: #292524; }
.vot-mappa.vot-collocando { cursor: crosshair; outline: 3px solid #f59e0b; }
.vot-mappa.vot-collocando .leaflet-interactive, .vot-mappa.vot-collocando .leaflet-grab { cursor: crosshair; }
.vot-mappa.vot-collocando .leaflet-marker-pane, .vot-mappa.vot-collocando .leaflet-overlay-pane svg .leaflet-interactive { pointer-events: none; }
.vot-pin span { display: block; width: 16px; height: 16px; margin: 2px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.4); }
.vot-pin-evidenzia span { animation: vot-pulse 0.8s ease-in-out 3; }
@keyframes vot-pulse { 50% { transform: scale(1.9); } }
.vot-popup { font-size: 13px; line-height: 1.45; color: #1c1917; }
.vot-popup .vot-sez { margin-top: 6px; }
.vot-popup .vot-muto { color: #57534e; font-size: 12px; }
.vot-popup .vot-azioni { margin-top: 10px; display: flex; gap: 12px; align-items: center; }
.vot-popup .vot-azioni a { color: #b45309; font-weight: 600; }
.vot-popup .vot-azioni button { color: #b91c1c; font-size: 12px; }
.vot-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.35); flex: none; }

.vot-layout { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1024px) { .vot-layout { grid-template-columns: minmax(0, 3fr) minmax(260px, 1fr); } }
.vot-colonna-mappa, .vot-colonna-lato { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.vot-schede { display: flex; flex-wrap: wrap; gap: 8px; }
.vot-banner { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 12px; font-size: 14px; }
.vot-banner-attesa { background: #fffbeb; box-shadow: inset 0 0 0 1px #fcd34d; color: #78350f; }
.vot-banner-ok { background: #f0fdf4; box-shadow: inset 0 0 0 1px #86efac; color: #14532d; }
.dark .vot-banner-attesa { background: rgba(245,158,11,.12); color: #fde68a; }
.dark .vot-banner-ok { background: rgba(34,197,94,.12); color: #bbf7d0; }
.vot-banner-icona { width: 20px; height: 20px; color: #d97706; }
.vot-banner-azione { margin-left: auto; font-weight: 600; text-decoration: underline; }
.vot-muto { color: #78716c; font-size: 13px; }
.vot-nota { margin-top: 8px; }
.vot-lista { margin-top: 8px; font-size: 14px; }
.vot-lista li + li { border-top: 1px solid rgba(120,113,108,.18); }
.vot-lista-scorre { max-height: 320px; overflow-y: auto; margin-top: 0; }
.vot-voce { display: flex; flex-direction: column; width: 100%; text-align: left; padding: 8px 2px; }
.vot-voce:hover { color: #b45309; }
.vot-voce-pin { flex-direction: row; align-items: center; gap: 8px; }
.vot-voce-attiva { color: #b45309; font-weight: 600; }
.vot-voce-icona { width: 16px; height: 16px; flex: none; }
.vot-voce-titolo { font-weight: 500; }
.vot-voce-sotto { font-size: 12px; color: #78716c; }
.vot-legenda { display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.vot-riga { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; }
.vot-cresce { flex: 1; }
.vot-conta { color: #78716c; font-variant-numeric: tabular-nums; }
.vot-sposta { margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(120,113,108,.18); }
.vot-vuoto { text-align: center; padding: 40px 0; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.vot-vuoto-icona { width: 40px; height: 40px; color: #a8a29e; }
.vot-vuoto-titolo { font-weight: 600; }
@media (max-width: 640px) { .vot-mappa { height: 58vh; } }
/* Modelli offline */
.vot-modelli { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.vot-modello { border: 1px solid rgba(120,113,108,.25); border-radius: 12px; padding: 14px; display: flex; flex-direction: column; gap: 6px; }
.vot-modello-titolo { font-weight: 600; }
.vot-modello-azioni { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; padding-top: 8px; }
.vot-azioni-form { display: flex; gap: 10px; margin-top: 16px; }
.vot-riepilogo-esiti { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.vot-esito { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.vot-esito-ok { background: #dcfce7; color: #166534; }
.vot-esito-avviso { background: #fef3c7; color: #92400e; }
.vot-esito-errore { background: #fee2e2; color: #991b1b; }
.vot-tabella-esiti { overflow-x: auto; max-height: 520px; overflow-y: auto; border: 1px solid rgba(120,113,108,.25); border-radius: 10px; }
.vot-tabella-esiti table { width: 100%; border-collapse: collapse; font-size: 13px; }
.vot-tabella-esiti th { position: sticky; top: 0; background: #f5f5f4; text-align: left; padding: 8px 10px; font-weight: 600; }
.dark .vot-tabella-esiti th { background: #292524; }
.vot-tabella-esiti td { padding: 8px 10px; border-top: 1px solid rgba(120,113,108,.18); vertical-align: top; }
/* Disegno sulla mappa */
.vot-strumenti { display: flex; flex-direction: column; gap: 6px; }
.vot-strumento { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 8px 10px; border-radius: 10px; border: 1px solid rgba(120,113,108,.25); font-size: 14px; }
.vot-strumento span { display: flex; flex-direction: column; }
.vot-strumento small { font-size: 12px; color: #78716c; }
.vot-strumento:hover { border-color: #f59e0b; }
.vot-strumento-attivo { border-color: #f59e0b; background: #fffbeb; color: #78350f; }
.dark .vot-strumento-attivo { background: rgba(245,158,11,.12); color: #fde68a; }
.leaflet-tooltip.vot-etichetta-area { background: rgba(255,255,255,.85); border: 0; box-shadow: none; padding: 1px 5px; font-size: 11px; font-weight: 600; color: #1c1917; }
.leaflet-tooltip.vot-etichetta-area::before { display: none; }
.leaflet-tooltip.vot-etichetta-zona { background: rgba(37,99,235,.9); color: #fff; border: 0; padding: 2px 8px; font-size: 12px; font-weight: 700; border-radius: 6px; box-shadow: none; }
.leaflet-tooltip.vot-etichetta-zona::before { display: none; }
.vot-zoom-basso .vot-etichetta-area { display: none; }
.vot-matite { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.vot-matita { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-radius: 8px; border: 1px solid rgba(120,113,108,.25); font-size: 13px; text-align: left; }
.vot-matita:hover { border-color: #f59e0b; }
.vot-campione { width: 14px; height: 14px; border-radius: 3px; flex: none; box-shadow: 0 0 0 1px rgba(0,0,0,.25); }
.vot-colore { width: 40px; height: 26px; padding: 0; border: 0; background: none; }
.vot-numero { width: 80px; border: 1px solid rgba(120,113,108,.35); border-radius: 6px; padding: 2px 6px; font-size: 13px; background: transparent; }
.vot-link { font-size: 12px; text-decoration: underline; color: #78716c; }
.vot-banner-gruppo { display: flex; gap: 12px; }
.vot-scritta span { display: inline-block; transform: translate(-50%, -50%); white-space: nowrap; font-weight: 700; font-family: Arial, Helvetica, sans-serif; text-shadow: 0 0 3px #fff, 0 0 3px #fff; }
.vot-ingresso { display: flex; flex-direction: column; align-items: center; }
.vot-ingresso span { display: block; border: 2px solid #8a6d10; border-radius: 3px; }
.vot-ingresso em { font-style: normal; font-size: 11px; font-weight: 700; color: #b45309; white-space: nowrap; text-shadow: 0 0 3px #fff; }

/* modifica dei riquadri */
.vot-banner-modifica { background: #fff7ed; box-shadow: inset 0 0 0 1px #fdba74; color: #9a3412; }
.dark .vot-banner-modifica { background: rgba(234,88,12,.12); color: #fed7aa; }
.vot-banner-modifica .vot-banner-gruppo button { margin-left: .25rem; }
.vot-maniglia span { display: block; width: 18px; height: 18px; border-radius: 999px; background: #fff; border: 3px solid #ea580c; box-shadow: 0 1px 4px rgba(0,0,0,.35); }
.vot-maniglia-ridim span { border-radius: 4px; cursor: nwse-resize; }
.vot-maniglia-ruota span { background: #ea580c; cursor: grab; }
.vot-selezione { cursor: move; }
.vot-numeri { position: absolute; pointer-events: none; }
.vot-foto { position: absolute; transform-origin: 50% 50%; user-select: none; max-width: none; }
.vot-schede-zone { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.vot-scheda { padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: 600; background: #f5f5f4; color: #44403c; box-shadow: inset 0 0 0 1px #e7e5e4; }
.vot-scheda:hover { background: #fff7ed; }
.vot-scheda-attiva { background: #ea580c; color: #fff; box-shadow: none; }
.dark .vot-scheda { background: rgba(255,255,255,.06); color: #e7e5e4; box-shadow: inset 0 0 0 1px rgba(255,255,255,.12); }
.dark .vot-scheda-attiva { background: #ea580c; color: #fff; }

/* maniglie «Allarga o stringi» su prati, edifici e strade */
.vot-vertice span { width: 16px; height: 16px; border-radius: 3px; border-width: 3px; cursor: move; }
.vot-vertice-lato span { background: #ea580c; border-color: #fff; border-radius: 999px; }
.vot-vertice-centro span { width: 24px; height: 24px; border-radius: 999px; background: #ea580c; color: #fff; border-color: #fff; font-size: 14px; line-height: 18px; text-align: center; cursor: move; }

/* stampa della mappa */
.vot-stampa-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.vot-stampa-icona { width: 16px; height: 16px; display: inline-block; vertical-align: -3px; margin-right: 4px; }
.vot-stampa-scelte { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; padding: 8px 10px; border-radius: 10px; background: #fff7ed; border: 1px solid #fed7aa; font-size: 13px; }
.dark .vot-stampa-scelte { background: #292524; border-color: #57534e; }
.vot-stampa-scelte label { display: flex; flex-direction: column; gap: 2px; font-weight: 600; }
.vot-stampa-scelte label.vot-riga { flex-direction: row; align-items: center; gap: 6px; }
.vot-stampa-scelte select { border: 1px solid #d6d3d1; border-radius: 6px; padding: 3px 26px 3px 8px; font-weight: 400; font-size: 13px; background-color: #fff; color: #1c1917; }
.vot-stampa-vai { background: #ea580c; color: #fff; border-radius: 8px; padding: 6px 14px; font-weight: 700; }
.vot-stampa-testata { display: none; }
body.vot-stampando .vot-stampa-foglio { position: fixed; inset: 0; z-index: 99999; background: #fff; overflow: auto; padding: 8px; }
body.vot-stampando .vot-stampa-testata { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; font: 13px Arial, sans-serif; color: #1c1917; margin-bottom: 6px; }
.vot-stampa-testata strong { font-size: 16px; }
.vot-stampa-legenda { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 11px; }
.vot-stampa-legenda i { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-left: 6px; }
body.vot-stampando .vot-mappa { border-radius: 0; min-height: 0; }
body.vot-stampando .leaflet-control-container { display: none; }
@media print {
    body.vot-stampando > *:not(.vot-stampa-foglio) { display: none !important; }
    body.vot-stampando .vot-stampa-foglio { position: static; padding: 0; overflow: visible; }
    body.vot-stampando, body.vot-stampando * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* filtri rapidi */
.vot-filtri { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.vot-filtri .vot-muto { font-size: 12px; margin-right: 2px; }
.vot-filtro { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #d6d3d1; border-radius: 999px; padding: 4px 10px; font-size: 13px; background: #fff; color: #1c1917; }
.dark .vot-filtro { background: #1c1917; color: #e7e5e4; border-color: #44403c; }
.vot-filtro-attivo { border-color: #ea580c; background: #fff7ed; color: #9a3412; font-weight: 700; }
.dark .vot-filtro-attivo { background: #431407; color: #fdba74; }

/* lampade nei popup */
.vot-lampade { display: flex; flex-direction: column; gap: 4px; }
.vot-lampada { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.vot-lampada button { border: 1px solid #d6d3d1; border-radius: 6px; padding: 3px 8px; font-size: 12px; font-weight: 600; background: #fff; color: #1c1917; min-height: 30px; }
.vot-lampada button[data-stato=guasta] { border-color: #fca5a5; color: #b91c1c; }
.vot-lampada button[data-stato=attiva] { border-color: #86efac; color: #15803d; }

/* prospetto del blocco */
.vot-prospetto { position: fixed; inset: 0; z-index: 9990; background: rgba(28,25,23,.55); display: flex; align-items: center; justify-content: center; padding: 16px; }
.vot-prospetto-finestra { background: #fff; color: #1c1917; border-radius: 14px; width: min(1400px, 100%); max-height: 100%; display: flex; flex-direction: column; box-shadow: 0 20px 50px rgba(0,0,0,.35); overflow: hidden; }
.dark .vot-prospetto-finestra { background: #1c1917; color: #e7e5e4; }
.vot-prospetto-testa { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; padding: 12px 16px; border-bottom: 1px solid #e7e5e4; }
.vot-prospetto-testa > div:first-child { display: flex; flex-direction: column; flex: 1 1 260px; }
.vot-prospetto-testa strong { font-size: 18px; }
.vot-prospetto-legenda { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; }
.vot-prospetto-legenda i { display: inline-block; width: 13px; height: 13px; border: 2px solid; border-radius: 3px; margin-right: 4px; vertical-align: -2px; }
.vot-prospetto-bottoni { display: flex; gap: 8px; align-items: center; }
.vot-prospetto-bottoni button, .vot-prospetto-bottoni a { border: 1px solid #d6d3d1; border-radius: 8px; padding: 6px 12px; font-size: 13px; font-weight: 600; }
.vot-prospetto-bottoni [data-chiudi] { border: 0; font-size: 18px; padding: 4px 10px; }
.vot-prospetto-corpo { display: flex; gap: 0; min-height: 0; flex: 1; }
.vot-prospetto-parete { flex: 1; overflow: auto; padding: 16px; min-width: 0; }
.vot-prospetto-griglia { position: relative; margin: 0 auto; }
.vot-prospetto-fila { position: absolute; left: 0; transform: translateY(2px); font-size: 11px; font-weight: 700; color: #78716c; white-space: nowrap; }
.vot-prospetto-cella { position: absolute; border: 2px solid; border-radius: 5px; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; padding: 1px; line-height: 1.1; color: #1c1917; cursor: pointer; }
.vot-prospetto-cella b { font-size: 13px; }
.vot-prospetto-cella small { font-size: 9.5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vot-prospetto-cella:hover, .vot-prospetto-cella.vot-scelta { outline: 3px solid #ea580c; outline-offset: 1px; z-index: 1; }
.vot-prospetto-dettaglio { width: 300px; flex: none; border-left: 1px solid #e7e5e4; padding: 14px; overflow: auto; font-size: 13px; }
.vot-prospetto-dettaglio .vot-azioni { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.vot-prospetto-dettaglio .vot-azioni a, .vot-prospetto-dettaglio .vot-azioni button { border: 1px solid #d6d3d1; border-radius: 6px; padding: 5px 9px; font-size: 12px; font-weight: 600; }
@media (max-width: 760px) {
    .vot-prospetto { padding: 0; }
    .vot-prospetto-finestra { border-radius: 0; height: 100%; }
    .vot-prospetto-corpo { flex-direction: column; }
    .vot-prospetto-dettaglio { width: auto; border-left: 0; border-top: 1px solid #e7e5e4; max-height: 40vh; }
}
@media print {
    body.vot-stampa-prospetto > *:not(.vot-prospetto) { display: none !important; }
    body.vot-stampa-prospetto .vot-prospetto { position: static; background: none; padding: 0; display: block; }
    body.vot-stampa-prospetto .vot-prospetto-finestra { box-shadow: none; width: 100%; max-height: none; }
    body.vot-stampa-prospetto .vot-prospetto-dettaglio, body.vot-stampa-prospetto .vot-prospetto-bottoni { display: none; }
    body.vot-stampa-prospetto .vot-prospetto-parete { overflow: visible; }
    body.vot-stampa-prospetto * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
.vot-filtri { margin-bottom: 8px; }

/* tavolozza colore dell'elemento scelto */
.vot-barra-colore { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); z-index: 1000; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 6px 10px; background: #fff; color: #1c1917; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,.25); font-size: 12px; font-weight: 600; max-width: calc(100% - 90px); }
.vot-barra-colore button { width: 24px; height: 24px; border-radius: 6px; border: 2px solid rgba(0,0,0,.2); }
.vot-barra-colore button.vot-tinta-scelta { border-color: #ea580c; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #ea580c; }
.vot-barra-colore label { display: inline-flex; align-items: center; gap: 4px; font-weight: 500; }
.vot-barra-colore input[type=color] { width: 28px; height: 24px; padding: 0; border: 0; background: none; }

/* prospetto stampato: un foglio per parte */
.vot-prospetto-fogli { display: none; }
@media print {
    body.vot-stampa-prospetto .vot-prospetto-finestra { display: none !important; }
    body.vot-stampa-prospetto .vot-prospetto-fogli { display: block; }
    .vot-prospetto-foglio { page-break-after: always; break-after: page; color: #1c1917; }
    .vot-prospetto-foglio:last-child { page-break-after: auto; break-after: auto; }
    .vot-prospetto-foglio .vot-prospetto-testa { padding: 0 0 8px; border-bottom: 1px solid #d6d3d1; margin-bottom: 10px; }
    .vot-prospetto-foglio .vot-prospetto-testa > div:first-child { display: flex; flex-direction: column; }
}
.vot-prospetto-bottoni select { border: 1px solid #d6d3d1; border-radius: 8px; padding: 5px 26px 5px 8px; font-size: 13px; background-color: #fff; color: #1c1917; }
