/* Gestione interventi — foglio di stile */
:root {
  --blu: #1d4e89;
  --blu-scuro: #143a68;
  --blu-chiaro: #e8f0fa;
  --testo: #1c2430;
  --tenue: #6b7685;
  --bordo: #dde3ea;
  --sfondo: #f3f5f8;
  --carta: #ffffff;
  --verde: #1f7a4d;
  --rosso: #b42318;
  --arancio: #b45309;
  --z-lucca: #2563eb;
  --z-garfagnana: #15803d;
  --z-altre: #a16207;
  --raggio: 10px;
  --ombra: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--testo); background: var(--sfondo);
}
a { color: var(--blu); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.45rem; margin: 0; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
h2 { font-size: 1.05rem; margin: 0 0 .8rem; display: flex; align-items: center; gap: .5rem; }
h3 { font-size: .9rem; margin: 0; }

/* Barra superiore */
.topbar {
  position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 1.2rem;
  padding: .55rem 1.2rem; background: var(--blu); color: #fff; flex-wrap: wrap;
}
.topbar a { color: #fff; }
.marchio { display: flex; align-items: center; gap: .5rem; font-weight: 700; font-size: 1.05rem; }
.marchio:hover { text-decoration: none; }
.logo { display: inline-grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 8px; background: rgba(255,255,255,.16); font-size: 1.1rem; }
.marchio.grande { color: var(--blu); font-size: 1.35rem; justify-content: center; }
.marchio.grande .logo { background: var(--blu); color: #fff; }
.menu { display: flex; gap: .2rem; overflow-x: auto; }
.menu a { padding: .4rem .75rem; border-radius: 7px; opacity: .85; white-space: nowrap; }
.menu a:hover { background: rgba(255,255,255,.12); text-decoration: none; opacity: 1; }
.menu a.attivo { background: rgba(255,255,255,.2); opacity: 1; font-weight: 600; }
.utente { margin-left: auto; display: flex; align-items: center; gap: .9rem; font-size: .9rem; }
.utente .btn-primario { background: #fff; color: var(--blu); border-color: #fff; }
.esci { opacity: .75; }

.contenuto { max-width: 1500px; margin: 0 auto; padding: 1.3rem 1.2rem 3rem; }
.intestazione { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.1rem; }
.briciole { font-size: .85rem; color: var(--tenue); margin-bottom: .2rem; }
.briciole a { color: var(--tenue); }

/* Pulsanti */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .35rem; padding: .5rem .9rem;
  border: 1px solid var(--bordo); border-radius: 8px; background: var(--carta); color: var(--testo);
  font: inherit; font-weight: 500; cursor: pointer; white-space: nowrap; line-height: 1.2;
}
.btn:hover { background: #f7f9fb; text-decoration: none; }
.btn-primario { background: var(--blu); border-color: var(--blu); color: #fff; }
.btn-primario:hover { background: var(--blu-scuro); }
.btn-verde { background: var(--verde); border-color: var(--verde); color: #fff; }
.btn-verde:hover { background: #17623d; }
.btn-pericolo { color: var(--rosso); border-color: #f1c4bf; }
.btn-pericolo:hover { background: #fdf0ef; }
.btn-piccolo { padding: .3rem .65rem; font-size: .85rem; }
.btn-pieno { width: 100%; margin-top: .4rem; }
.btn-x { border: 0; background: none; color: var(--tenue); font-size: 1.2rem; cursor: pointer; padding: 0 .3rem; }
.btn-x:hover { color: var(--rosso); }
.azioni { display: flex; gap: .5rem; flex-wrap: wrap; align-items: flex-end; }

/* Moduli */
label, .campo { display: flex; flex-direction: column; gap: .25rem; font-size: .85rem; font-weight: 500; color: #3c4655; margin-bottom: .75rem; }
.campo > span { display: block; }
input, select, textarea {
  font: inherit; font-size: .95rem; padding: .5rem .6rem; border: 1px solid var(--bordo); border-radius: 7px;
  background: #fff; color: var(--testo); width: 100%; min-width: 0; font-weight: 400;
}
input:focus, select:focus, textarea:focus { outline: 2px solid rgba(29, 78, 137, .25); border-color: var(--blu); }
textarea { resize: vertical; }
fieldset { border: 0; padding: 0; margin: 0 0 .6rem; min-width: 0; }
fieldset[disabled] input, fieldset[disabled] select, fieldset[disabled] textarea { background: #f7f8fa; color: #444; }
legend { font-weight: 700; font-size: .95rem; margin-bottom: .6rem; padding: 0; }
label.spunta { flex-direction: row; align-items: center; gap: .5rem; font-weight: 400; }
label.spunta input { width: auto; }
.griglia2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 .8rem; }
.griglia3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 .8rem; }
.griglia2 .largo { grid-column: 1 / -1; }
.filtri { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.filtri input, .filtri select { width: auto; }
.filtri input[type=search] { min-width: 240px; }
.filtri-estesi { display: flex; gap: .6rem; flex-wrap: wrap; align-items: flex-end; }
.filtri-estesi label { margin: 0; min-width: 130px; }
.filtri-estesi .largo { flex: 1 1 220px; }
.filtra-select { margin-bottom: .3rem; }
.riga-aggiungi { display: flex; gap: .5rem; flex-wrap: wrap; align-items: flex-end; margin-top: .8rem; padding-top: .8rem; border-top: 1px dashed var(--bordo); }
.riga-aggiungi label { margin: 0; flex: 0 1 150px; }
.riga-aggiungi .stretto { flex: 0 1 80px; }
.riga-aggiungi .largo { flex: 1 1 200px; }
.nota-form { display: flex; gap: .4rem; margin-bottom: .6rem; }

/* Contenitori */
.riquadro { background: var(--carta); border: 1px solid var(--bordo); border-radius: var(--raggio); padding: 1.1rem 1.2rem; box-shadow: var(--ombra); margin-bottom: 1rem; }
.riquadro.senza-pad { padding: 0; overflow-x: auto; }
.modulo { max-width: 1000px; }
.stretto-form { max-width: 440px; }
.titolo-riquadro { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.titolo-riquadro h2 { margin: 0; }
.due-colonne { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 1rem; align-items: start; }
.vuoto { background: var(--carta); border: 1px dashed var(--bordo); border-radius: var(--raggio); padding: 2.5rem; text-align: center; color: var(--tenue); }
.nota { font-size: .85rem; color: var(--tenue); }
.tenue { color: var(--tenue); }
.destra { text-align: right; }

.avviso { padding: .7rem 1rem; border-radius: 8px; margin-bottom: 1rem; border: 1px solid; }
.avviso-ok { background: #ecfdf3; border-color: #abefc6; color: #085d3a; }
.avviso-errore { background: #fef3f2; border-color: #fecdca; color: #912018; }

/* Badge */
.badge { display: inline-block; padding: .1rem .5rem; border-radius: 999px; font-size: .72rem; font-weight: 600; background: #eef1f5; color: #3c4655; vertical-align: middle; white-space: nowrap; }
.conta { display: inline-block; min-width: 1.6rem; padding: .05rem .45rem; border-radius: 999px; background: #e6eaf0; color: #3c4655; font-size: .75rem; font-weight: 600; text-align: center; }
.stato-nuovo { background: #fff4e5; color: #9a4d00; }
.stato-pianificato { background: #e8f0fa; color: #1d4e89; }
.stato-in_corso { background: #ede9fe; color: #5b21b6; }
.stato-completato { background: #e7f6ee; color: #1f7a4d; }
.stato-chiuso { background: #eef1f5; color: #4b5563; }
.stato-annullato { background: #f3f4f6; color: #9ca3af; text-decoration: line-through; }
.prio-alta.badge { background: #fff1e6; color: #b45309; }
.prio-urgente.badge { background: #fde8e7; color: #b42318; }
.prio-bassa.badge { background: #f1f5f9; color: #64748b; }
.zona-lucca { background: #e5edff; color: var(--z-lucca); }
.zona-garfagnana { background: #e3f4e9; color: var(--z-garfagnana); }
.zona-altre { background: #fbf1df; color: var(--z-altre); }

/* Schede zona */
.schede { display: flex; gap: .4rem; margin-bottom: 1rem; flex-wrap: wrap; }
.schede a { padding: .5rem 1rem; border-radius: 8px; background: var(--carta); border: 1px solid var(--bordo); color: var(--testo); font-weight: 500; display: flex; gap: .5rem; align-items: center; }
.schede a:hover { text-decoration: none; border-color: #bcc6d2; }
.schede a.attivo { background: var(--blu); border-color: var(--blu); color: #fff; }
.schede a.attivo .conta { background: rgba(255,255,255,.25); color: #fff; }

/* Kanban */
.corsia { margin-bottom: 1.6rem; }
.corsia > h2 { padding-left: .7rem; border-left: 4px solid var(--z-altre); }
.corsia-lucca > h2 { border-color: var(--z-lucca); }
.corsia-garfagnana > h2 { border-color: var(--z-garfagnana); }
.kanban { display: grid; grid-template-columns: repeat(4, minmax(230px, 1fr)); gap: .8rem; overflow-x: auto; padding-bottom: .3rem; }
.colonna { background: #e9edf2; border-radius: var(--raggio); padding: .6rem; min-height: 110px; transition: background .15s, outline-color .15s; outline: 2px dashed transparent; }
.colonna h3 { display: flex; justify-content: space-between; align-items: center; padding: .1rem .2rem .55rem; color: #3c4655; text-transform: uppercase; letter-spacing: .03em; font-size: .75rem; }
.colonna.sopra { background: var(--blu-chiaro); outline-color: var(--blu); }
.schede-int { display: flex; flex-direction: column; gap: .5rem; min-height: 40px; }
.carta {
  display: block; background: var(--carta); border-radius: 8px; padding: .6rem .7rem; color: var(--testo);
  box-shadow: var(--ombra); border-left: 3px solid transparent; font-size: .87rem;
}
.carta:hover { text-decoration: none; box-shadow: 0 4px 12px rgba(16,24,40,.12); }
.carta[draggable=true] { cursor: grab; }
.carta.trascinata { opacity: .45; }
.carta.prio-alta { border-left-color: #f59e0b; }
.carta.prio-urgente { border-left-color: var(--rosso); }
.carta-testa { display: flex; justify-content: space-between; align-items: center; margin-bottom: .2rem; }
.numero { font-size: .75rem; font-weight: 700; color: var(--tenue); font-variant-numeric: tabular-nums; }
.carta-cliente { font-weight: 650; line-height: 1.25; }
.carta-sede, .carta-imp { color: var(--tenue); font-size: .8rem; }
.carta-descr { margin: .35rem 0; color: #334; }
.carta-piede { display: flex; justify-content: space-between; gap: .4rem; font-size: .75rem; color: var(--tenue); border-top: 1px solid #eef1f5; padding-top: .35rem; }
.da-assegnare { color: var(--arancio); font-weight: 600; }

/* Tabelle e liste */
.tabella { width: 100%; border-collapse: collapse; font-size: .9rem; }
.tabella th { text-align: left; font-size: .75rem; text-transform: uppercase; letter-spacing: .03em; color: var(--tenue); font-weight: 600; padding: .6rem .8rem; border-bottom: 1px solid var(--bordo); background: #fafbfc; white-space: nowrap; }
.tabella td { padding: .6rem .8rem; border-bottom: 1px solid #eef1f5; vertical-align: top; }
.tabella tr:last-child td { border-bottom: 0; }
.riquadro:not(.senza-pad) .tabella th, .riquadro:not(.senza-pad) .tabella td { padding-left: .4rem; padding-right: .4rem; }
.tabella.cliccabile tbody tr { cursor: pointer; }
.tabella.cliccabile tbody tr:hover { background: #f7f9fc; }
.num, .tabella th.num { text-align: right; font-variant-numeric: tabular-nums; }
tr.dismesso td { color: #9aa3ae; }
.voce-lista { display: flex; justify-content: space-between; gap: 1rem; padding: .65rem .2rem; border-bottom: 1px solid #eef1f5; color: var(--testo); font-size: .9rem; }
.voce-lista:last-child { border-bottom: 0; }
.voce-lista:hover { background: #f7f9fc; text-decoration: none; }
.voce-lista.dismesso { opacity: .55; }
.dati { display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: .45rem .8rem; margin: 0 0 1rem; font-size: .9rem; }
.dati dt { color: var(--tenue); }
.dati dd { margin: 0; }
.testo-problema { background: #fafbfc; border: 1px solid #eef1f5; border-radius: 8px; padding: .8rem 1rem; white-space: normal; }
.eventi { list-style: none; margin: 0; padding: 0; font-size: .85rem; max-height: 420px; overflow-y: auto; }
.eventi li { padding: .5rem 0; border-bottom: 1px solid #eef1f5; }
.cronologia { list-style: none; margin: 0; padding: 0 0 0 1rem; border-left: 2px solid var(--bordo); }
.cronologia li { position: relative; padding: 0 0 1.1rem .8rem; font-size: .9rem; }
.cronologia li::before { content: ""; position: absolute; left: -1.42rem; top: .35rem; width: .7rem; height: .7rem; border-radius: 50%; background: var(--blu); border: 2px solid #fff; }
.cron-testa { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-bottom: .2rem; }
.paginazione { display: flex; gap: 1rem; justify-content: center; align-items: center; margin-top: 1rem; }
.riepilogo { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .8rem; margin-bottom: 1rem; }
.tessera { margin: 0; }
.cifra { font-size: 1.7rem; font-weight: 700; color: var(--blu); }

/* Firma */
.firma-pad { width: 100%; max-width: 600px; height: 200px; border: 2px dashed #bcc6d2; border-radius: 8px; background: #fff; touch-action: none; display: block; margin-bottom: .6rem; }
.firma-img { max-width: 100%; max-height: 160px; border: 1px solid var(--bordo); border-radius: 8px; background: #fff; }
.modulo-firma .largo { flex: 1 1 200px; margin: 0; }

/* Accesso e installazione */
.pagina-login { display: grid; place-items: center; min-height: 100vh; padding: 1rem; background: linear-gradient(160deg, #e8f0fa, #f3f5f8 60%); }
.login { width: 100%; max-width: 380px; padding: 2rem; }
.login .sottotitolo { text-align: center; color: var(--tenue); margin: .2rem 0 1.4rem; }
.install { width: 100%; max-width: 760px; padding: 1.8rem; }
.install h1 { margin-bottom: 1.2rem; }
.codice { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .8rem; }

/* Rapportino stampabile */
body.stampa { background: #e5e7eb; }
.barra-stampa { display: flex; gap: .5rem; justify-content: center; padding: 1rem; }
.foglio { background: #fff; width: 210mm; min-height: 297mm; margin: 0 auto 2rem; padding: 14mm 14mm; font-size: 10.5pt; color: #111; box-shadow: 0 4px 20px rgba(0,0,0,.12); }
.foglio h3 { font-size: 8.5pt; text-transform: uppercase; letter-spacing: .05em; color: #555; margin: 0 0 4px; }
.foglio-testa { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 2px solid #1d4e89; padding-bottom: 8px; margin-bottom: 12px; font-size: 9pt; color: #333; }
.foglio-azienda { font-size: 15pt; font-weight: 800; color: #1d4e89; }
.foglio-titolo { text-align: right; font-weight: 700; }
.foglio-numero { font-size: 13pt; }
.foglio-blocchi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
.foglio-blocco { border: 1px solid #ccc; border-radius: 4px; padding: 6px 8px; font-size: 9.5pt; }
.foglio-sezione { margin-bottom: 12px; }
.foglio-sezione p { margin: 0; border: 1px solid #ccc; border-radius: 4px; padding: 6px 8px; min-height: 2.2em; }
.foglio-scrivibile { min-height: 6.5em !important; }
.foglio-due { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 14px; }
.foglio-tabella { width: 100%; border-collapse: collapse; font-size: 9pt; }
.foglio-tabella th, .foglio-tabella td { border: 1px solid #ccc; padding: 3px 6px; text-align: left; }
.foglio-tabella th { background: #f2f4f7; }
.foglio-tabella tfoot td { background: #f9fafb; }
.foglio-firme { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 18px; }
.foglio-firma-spazio { height: 70px; border-bottom: 1px solid #333; display: flex; align-items: flex-end; padding-bottom: 3px; }
.foglio-firma-spazio img { max-height: 66px; max-width: 100%; }

@media print {
  @page { size: A4; margin: 0; }
  body.stampa { background: #fff; }
  .barra-stampa { display: none; }
  .foglio { box-shadow: none; margin: 0; width: auto; min-height: 0; }
}

/* Schermi piccoli (telefono) */
@media (max-width: 1100px) {
  .due-colonne { grid-template-columns: minmax(0, 1fr); }
  .kanban { grid-template-columns: repeat(4, minmax(240px, 80vw)); scroll-snap-type: x mandatory; }
  .colonna { scroll-snap-align: start; }
}
@media (max-width: 700px) {
  body { font-size: 15px; }
  .topbar { padding: .5rem .8rem; gap: .5rem; }
  .menu { order: 3; width: 100%; }
  .utente { gap: .6rem; }
  .contenuto { padding: 1rem .8rem 3rem; }
  .griglia2, .griglia3 { grid-template-columns: minmax(0, 1fr); }
  .filtri input[type=search] { min-width: 0; flex: 1 1 100%; }
  .filtri select { flex: 1 1 auto; }
  .riquadro { padding: .9rem; }
  .tabella { font-size: .85rem; }
  .dati { grid-template-columns: 80px minmax(0, 1fr); }
  .foglio { width: 100%; min-height: 0; padding: 6mm; }
  .foglio-blocchi, .foglio-due, .foglio-firme { grid-template-columns: 1fr; }
  input, select, textarea { font-size: 16px; } /* evita lo zoom automatico su iPhone */
}

/* ===== F-gas, importazione, agenda (v2) ===== */
.blocco-fgas { border: 1px solid var(--bordo); border-radius: 8px; padding: .6rem .8rem; margin-bottom: .8rem; background: #fafbfc; }
.blocco-fgas summary, details > summary { cursor: pointer; font-weight: 600; font-size: .9rem; margin-bottom: .2rem; }
.blocco-fgas[open] summary { margin-bottom: .7rem; }
label small { font-weight: 400; }
.griglia-indirizzo { display: grid; grid-template-columns: minmax(0, 1fr) 90px; gap: 0 .8rem; }
.fgas-sintesi { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: .8rem 1rem; }
.fgas-sintesi > div { display: flex; flex-direction: column; gap: .1rem; font-size: .9rem; }
.fgas-sintesi b { font-size: 1.05rem; font-variant-numeric: tabular-nums; }
.fgas-sintesi .largo { grid-column: 1 / -1; margin: 0; }
.scaduto { color: var(--rosso); font-weight: 600; }
.in-scadenza { color: var(--arancio); font-weight: 600; }
.badge.fgas-da_comunicare { background: #fff4e5; color: #9a4d00; }
.badge.fgas-esportato { background: #e8f0fa; color: #1d4e89; }
.badge.fgas-comunicato { background: #e7f6ee; color: #1f7a4d; }
.elenco-errori { margin: .4rem 0 0; padding-left: 1.2rem; font-size: .88rem; }
.elenco-errori li { margin-bottom: .15rem; }
.scelte { display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; margin-bottom: .6rem; }
.scelte label { margin: 0; }
.tabella-gas td { vertical-align: middle; }
.tabella-gas input:not([type=checkbox]), .tabella-gas select { min-width: 90px; }
.tabella-gas label.spunta { margin: 0; font-size: .82rem; white-space: nowrap; }
.modulo-fgas details { margin: .6rem 0; }
.tabella tr.evidenziata td { background: #f2f7ff; }
.tabella td.azioni { display: flex; gap: .35rem; flex-wrap: wrap; }
.avviso-attenzione { background: #fffaeb; border-color: #fedf89; color: #93370d; }
.report-blocco { padding: .8rem 0; border-bottom: 1px solid #eef1f5; }
.report-blocco:last-of-type { border-bottom: 0; }
.report-blocco h3 { font-size: .95rem; margin-bottom: .6rem; }
.conteggi { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .5rem; margin: 0 0 .6rem; }
.conteggi > div { background: #f6f8fb; border-radius: 8px; padding: .5rem .7rem; }
.conteggi dt { font-size: .78rem; color: var(--tenue); }
.conteggi dd { margin: 0; font-size: 1.25rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.elenco-file { padding-left: 1.1rem; font-size: .9rem; }
.elenco-file li { margin-bottom: .3rem; }
code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .82em; background: #eef2f7; padding: .1rem .3rem; border-radius: 4px; word-break: break-all; }
.agenda-voce { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: .8rem; align-items: start; }
.agenda-ora { font-weight: 700; font-size: 1.05rem; color: var(--blu); font-variant-numeric: tabular-nums; }
.agenda-giorno { margin: .9rem 0 .2rem; color: var(--tenue); text-transform: capitalize; }
.foglio-agenda .agenda-voce { padding: 8px 0; border-bottom: 1px solid #ddd; font-size: 10pt; }
.foglio-agenda .agenda-ora { color: #111; }
@media print { .foglio-agenda { page-break-after: always; } }

/* ===== v3: telefono, webapp, pagine pubbliche ===== */
.pallino { display: inline-grid; place-items: center; min-width: 1.15rem; height: 1.15rem; padding: 0 .3rem; border-radius: 999px; background: #e5484d; color: #fff; font-size: .7rem; font-weight: 700; margin-left: .25rem; }
.solo-mobile { display: none !important; }
.barra-basso { display: none; }
.avviso-link { display: block; color: inherit; }
.avviso-link:hover { text-decoration: none; filter: brightness(.98); }
.scelte-verticali { margin: .4rem 0 .6rem; }
.scelte-verticali label { margin-bottom: .35rem; }
textarea.da-bozza { border-color: #f5b041; background: #fffdf5; }

/* foto e documenti */
.galleria { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem; margin-bottom: .8rem; }
.galleria figure { margin: 0; }
.galleria img, .galleria .file-icona { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 8px; border: 1px solid var(--bordo); background: #f6f8fb; display: grid; place-items: center; }
.galleria figcaption { display: flex; justify-content: space-between; align-items: center; font-size: .75rem; color: var(--tenue); gap: .2rem; }
.galleria.piccola { grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); margin: .6rem 0; }
.file-icona { font-weight: 700; color: var(--rosso); font-size: .85rem; }
.carica-foto { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.btn-foto { cursor: pointer; margin: 0; flex-direction: row; font-size: .95rem; color: var(--testo); }
.link-copia { display: flex; gap: .4rem; margin-bottom: .6rem; }
.link-copia input { font-size: .8rem; color: var(--tenue); }

/* barra azioni rapide nell'intervento */
.azioni-rapide { display: flex; gap: .5rem; flex-wrap: wrap; margin: -.3rem 0 1rem; }
.azioni-rapide form { margin: 0; }

/* vista "Oggi" del tecnico */
.oggi-testa { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.oggi-testa h1 { font-size: 1.5rem; }
.oggi-numeri { display: flex; gap: .6rem; }
.oggi-numeri > div { background: var(--carta); border: 1px solid var(--bordo); border-radius: 10px; padding: .45rem .8rem; text-align: center; min-width: 88px; }
.oggi-numeri b { display: block; font-size: 1.4rem; color: var(--blu); font-variant-numeric: tabular-nums; line-height: 1.1; }
.oggi-numeri span { font-size: .72rem; color: var(--tenue); }
.oggi-gruppo { margin: 1.3rem 0 .6rem; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; color: var(--tenue); }
.carte-tec { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: .8rem; }
.carta-tec { background: var(--carta); border: 1px solid var(--bordo); border-radius: 12px; box-shadow: var(--ombra); overflow: hidden; border-left: 4px solid var(--blu); display: flex; flex-direction: column; }
.carta-tec.prio-alta { border-left-color: #f59e0b; }
.carta-tec.prio-urgente { border-left-color: var(--rosso); }
.carta-tec.stato-bordo-in_corso { border-left-color: #7c3aed; }
.carta-tec-corpo { display: block; padding: .8rem .9rem .6rem; color: var(--testo); flex: 1; }
.carta-tec-corpo:hover { text-decoration: none; background: #fafcff; }
.carta-tec-testa { display: flex; justify-content: space-between; align-items: center; margin-bottom: .25rem; }
.carta-tec .ora { font-weight: 800; font-size: 1.1rem; color: var(--blu); font-variant-numeric: tabular-nums; }
.carta-tec-cliente { font-weight: 700; font-size: 1.02rem; line-height: 1.25; }
.carta-tec-imp { font-size: .85rem; margin-top: .25rem; }
.carta-tec-descr { margin-top: .4rem; font-size: .92rem; }
.carta-tec-nota { margin-top: .4rem; font-size: .8rem; background: #fffaeb; color: #93370d; padding: .3rem .5rem; border-radius: 6px; }
.carta-tec-azioni { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; border-top: 1px solid #eef1f5; }
.carta-tec-azioni > * { margin: 0; }
.carta-tec-azioni .btn { width: 100%; border: 0; border-radius: 0; padding: .75rem .4rem; border-right: 1px solid #eef1f5; }
.carta-tec-azioni form .btn { height: 100%; }

/* pagine pubbliche (modulo e stato) */
body.pubblica { background: var(--sfondo); }
.pub-testa { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .9rem max(16px, env(safe-area-inset-left, 0px)); background: var(--blu); color: #fff; }
.pub-testa .marchio { color: #fff; }
.pub-tel { color: #fff; font-weight: 600; white-space: nowrap; }
.pub-contenuto { max-width: 620px; margin: 0 auto; padding: 1.2rem 16px 3rem; }
.pub-titolo { margin: .3rem 0 1rem; }
.pub-piede { text-align: center; font-size: .78rem; color: var(--tenue); padding: 1rem 16px 2rem; }
.pub-impianto { background: #f2f7ff; border-color: #c9dbf3; }
.pub-esito { text-align: center; }
.pub-esito h1 { justify-content: center; margin-bottom: .6rem; }
.spunta-grande { width: 64px; height: 64px; border-radius: 50%; background: #e7f6ee; color: var(--verde); font-size: 2rem; font-weight: 700; display: grid; place-items: center; margin: .4rem auto .8rem; }
.nascosto { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.modulo-pub .privacy { font-size: .8rem; color: var(--tenue); }
.passi { list-style: none; padding: 0; margin: 1rem 0; }
.passi li { position: relative; padding: 0 0 1rem 2rem; color: var(--tenue); }
.passi li::before { content: ""; position: absolute; left: .35rem; top: .2rem; width: .8rem; height: .8rem; border-radius: 50%; border: 2px solid #bcc6d2; background: #fff; }
.passi li::after { content: ""; position: absolute; left: .78rem; top: 1.15rem; bottom: .1rem; width: 2px; background: #dde3ea; }
.passi li:last-child::after { display: none; }
.passi li.fatto { color: var(--testo); }
.passi li.fatto::before { background: var(--verde); border-color: var(--verde); }
.arrivo .titolo-riquadro { flex-wrap: wrap; gap: .4rem; }
.arrivo .azioni { margin-top: .7rem; align-items: center; }
.arrivo .azioni form { margin: 0; }

/* etichette QR */
.foglio-etichette { display: grid; grid-template-columns: repeat(2, 90mm); gap: 4mm; align-content: start; padding: 10mm; }
.etichetta { width: 90mm; height: 55mm; border: 1px dashed #aab4c0; border-radius: 3mm; padding: 4mm; display: flex; gap: 4mm; align-items: center; page-break-inside: avoid; background: #fff; }
.etichetta-qr { width: 32mm; flex: 0 0 32mm; }
.etichetta-qr svg { width: 100%; height: auto; display: block; }
.etichetta-testo { font-size: 8pt; line-height: 1.3; color: #222; display: flex; flex-direction: column; gap: 1mm; }
.etichetta-az { font-weight: 800; color: #1d4e89; font-size: 10pt; }
.etichetta-tit { font-weight: 700; font-size: 11pt; }
.etichetta-tel { font-weight: 700; font-size: 10pt; }
.etichetta-imp { color: #666; font-size: 7pt; margin-top: 1mm; }
@media print { .foglio-etichette { padding: 8mm; } .etichetta { border-color: #ddd; } }

/* telefono */
@media (max-width: 700px) {
  body:has(.barra-basso) { padding-bottom: calc(68px + env(safe-area-inset-bottom, 0px)); }
  .topbar { position: sticky; top: 0; flex-wrap: nowrap; }
  .topbar .utente { display: none; }
  .menu { display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; background: var(--blu-scuro); padding: .4rem; box-shadow: 0 8px 24px rgba(0,0,0,.25); }
  body.menu-aperto .menu { display: flex; position: fixed; top: auto; bottom: calc(64px + env(safe-area-inset-bottom, 0px)); z-index: 30; border-radius: 12px 12px 0 0; }
  .menu a { padding: .75rem 1rem; font-size: 1rem; }
  .solo-mobile { display: block !important; }
  .barra-basso { display: grid; grid-template-columns: repeat(5, 1fr); position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; background: var(--carta); border-top: 1px solid var(--bordo);
    padding: 4px max(4px, env(safe-area-inset-left, 0px)) calc(4px + env(safe-area-inset-bottom, 0px)); box-shadow: 0 -2px 10px rgba(16,24,40,.06); }
  .barra-basso a, .barra-basso button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; font: inherit; font-size: .68rem; color: var(--tenue); background: none; border: 0; padding: 6px 0; position: relative; }
  .barra-basso a:hover { text-decoration: none; }
  .barra-basso svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
  .barra-basso .attivo { color: var(--blu); font-weight: 600; }
  .barra-basso .barra-piu { color: #fff; }
  .barra-basso .barra-piu svg { width: 46px; height: 46px; padding: 11px; background: var(--blu); border-radius: 50%; stroke-width: 2.4; box-shadow: 0 4px 12px rgba(29,78,137,.35); margin-top: -18px; }
  .barra-basso .pallino { position: absolute; top: 2px; right: 18%; }
  .contenuto { padding-top: .9rem; }
  .carte-tec { grid-template-columns: minmax(0, 1fr); }
  .oggi-testa h1 { font-size: 1.3rem; }
  .azioni-rapide { position: sticky; top: 52px; z-index: 5; background: var(--sfondo); padding: .4rem 0; margin-top: -.5rem; }
  .azioni-rapide .btn, .azioni-rapide form { flex: 1; }
  .azioni-rapide form .btn { width: 100%; }
  .intestazione .azioni .btn { padding: .45rem .7rem; }
  .galleria { grid-template-columns: repeat(3, 1fr); }
  .foglio-etichette { grid-template-columns: 1fr; }
}
[hidden] { display: none !important; }
section[id], form[id] { scroll-margin-top: 110px; }
label.spunta input[type=checkbox] { width: 18px; height: 18px; flex: 0 0 18px; }

/* ===== v4: attrezzature e scadenze ===== */
.badge.cat-refrigerazione { background: #e5edff; color: #1d4ed8; }
.badge.cat-cottura { background: #fde8e0; color: #b4471f; }
.badge.cat-lavaggio { background: #e0f4f8; color: #0e7490; }
.badge.cat-bar { background: #f3ebe2; color: #7c4a1e; }
.badge.cat-preparazione { background: #eef1f5; color: #475467; }
.badge.cat-aspirazione { background: #f1eefc; color: #6d28d9; }
.badge.cat-climatizzazione { background: #e3f4e9; color: #15803d; }
.codice-errore { margin-top: .5rem; font-size: .9rem; }
.censisci { margin-top: .9rem; padding: .8rem; border: 1px dashed #bcc6d2; border-radius: 10px; display: flex; flex-direction: column; gap: .6rem; align-items: flex-start; background: #fafbfc; }
.riga-aggiungi.senza-bordo { border-top: 0; margin-top: 0; padding-top: 0; width: 100%; }
details.piano { border-bottom: 1px solid #eef1f5; padding: .55rem 0; }
details.piano summary { display: flex; justify-content: space-between; gap: .8rem; font-weight: 400; list-style: none; }
details.piano summary::-webkit-details-marker { display: none; }
details.piano.dismesso { opacity: .55; }
details.piano .riga-aggiungi { border-top: 0; padding-top: .4rem; }
.barra-crea { position: sticky; bottom: 0; display: flex; gap: .8rem; flex-wrap: wrap; align-items: flex-end; z-index: 4; box-shadow: 0 -4px 16px rgba(16,24,40,.08); }
.barra-crea label { margin: 0; min-width: 170px; }
.barra-crea .nota { flex-basis: 100%; margin: 0; }
@media (max-width: 700px) { .barra-crea { bottom: calc(64px + env(safe-area-inset-bottom, 0px)); } }
.badge.garanzia-si { background: #e7f6ee; color: #1f7a4d; }
.badge.garanzia-si.garanzia-in-scadenza { background: #fff4e5; color: #9a4d00; }
.badge.garanzia-no { background: #f3f4f6; color: #6b7280; }
.garanzia-riga { margin-top: .3rem; }
.blocco-garanzia { border: 1px solid var(--bordo); border-radius: 8px; padding: .6rem .8rem .2rem; margin-bottom: .8rem; }
.blocco-garanzia legend { font-size: .9rem; padding: 0 .3rem; margin: 0; }
.garanzia-spunta { align-self: end; }
/* logo aziendale */
.logo-img { height: 2.1rem; width: auto; max-width: 11rem; object-fit: contain; background: #fff; border-radius: 7px; padding: 3px 7px; display: block; }
.marchio.grande .logo-img { height: 4.2rem; max-width: 17rem; background: none; padding: 0; margin: 0 auto; }
.pub-testa .logo-img { height: 2.4rem; }
.foglio-logo { display: block; max-height: 18mm; max-width: 70mm; width: auto; height: auto; margin-bottom: 2mm; }
.etichetta-logo { display: block; max-height: 9mm; max-width: 40mm; width: auto; height: auto; margin-bottom: 1mm; }
.logo-anteprima { display: flex; gap: .8rem; flex-wrap: wrap; align-items: center; margin-bottom: .6rem; }
.logo-anteprima img { max-height: 64px; max-width: 100%; width: auto; padding: 8px; border: 1px solid var(--bordo); border-radius: 8px; background: #fff; }
.azioni-form { display: flex; gap: .6rem; flex-wrap: wrap; }
