/* Il documento: a schermo e su carta.

   È lo stesso oggetto, non due. Per questo il foglio è diviso in tre parti e
   non in due:

     — la tipografia del documento, senza condizioni, perché su carta e a
       schermo un avviso di pagamento si impagina allo stesso modo;
     — @media screen, che aggiunge soltanto la finzione del foglio (cornice,
       ombra, larghezza A4) per mostrare in anticipo come uscirà;
     — @media print, che toglie l'interfaccia, imposta la pagina e adatta
       ciò che in bianco e nero non funziona più.

   Tutte le regole di stampa del prodotto stanno qui, comprese quelle che
   prima vivevano in fondo a schermo.css: sparse in due file si
   contraddicevano a vicenda senza che nessuno se ne accorgesse. */

/* ─────────────────────────────── LA TIPOGRAFIA DEL DOCUMENTO ───────────── */

.documento{ font-family:var(--font-doc); color:var(--testo) }

/* La carta intestata dello studio: piccola, in alto, sopra l'intestazione del
   condominio. Chi scrive è lo studio; di chi si parla è il condominio. */
.carta-intestata{ display:flex; align-items:center; gap:10pt; margin:0 0 var(--s-4);
  padding-bottom:6pt; border-bottom:.6pt solid var(--bordo); font-family:var(--font-ui);
  font-size:8.5pt; line-height:1.35; color:var(--tenue) }
.carta-intestata__logo{ max-height:42pt; max-width:120pt; object-fit:contain }
.carta-intestata__testo{ display:flex; flex-direction:column }
.carta-intestata__testo strong{ color:var(--testo); font-size:10pt; letter-spacing:.02em }

/* Il frontespizio: la copertina davanti alla stampa (frontespizio.js). La
   carta intestata in alto, il titolo a un terzo del foglio, le note sotto:
   si legge da lontano, sul tavolo dell'assemblea. */
.frontespizio{ font-family:var(--font-doc); color:var(--testo); display:flex; flex-direction:column }
.frontespizio__titolo{ margin-top:28%; text-align:center; padding:0 6% }
.frontespizio__riga1{ font-size:24pt; line-height:1.2; margin:0 0 12pt; letter-spacing:.01em }
.frontespizio__riga2{ font-size:16pt; line-height:1.3; margin:0 0 8pt; font-weight:600 }
.frontespizio__riga3{ font-size:12.5pt; line-height:1.3; margin:0; font-weight:400; color:var(--tenue) }
.frontespizio__note{ margin:36pt auto 0; max-width:80%; border-top:.6pt solid var(--bordo); padding-top:12pt;
  font-size:10.5pt; line-height:1.45; text-align:center }
.frontespizio__note p{ margin:0 0 6pt }
.frontespizio__comandi{ margin-top:auto; padding-top:var(--s-4); align-items:center }

.documento__intestazione{ border-bottom:2px solid var(--testo); padding-bottom:var(--s-3);
  margin-bottom:var(--s-4) }
.documento__titolo{ font-size:var(--t-lg); margin:0 0 var(--s-1); line-height:1.25 }
.documento__intestazione p{ margin:0; font-size:var(--t-sm); color:var(--tenue) }

.documento__oggetto{ font-size:var(--t-md); margin:0 0 var(--s-5) }

.documento__destinatario{ margin:0 0 var(--s-4) }
.documento__destinatario strong{ display:block; font-size:var(--t-md); font-weight:700 }
.documento__destinatario .unita{ display:block; font-size:var(--t-sm); color:var(--tenue);
  margin-top:var(--s-1) }

.documento table{ width:100%; border-collapse:collapse; margin:var(--s-2) 0 0 }
.documento th,.documento td{ padding:var(--s-2); border-bottom:1px solid var(--bordo) }
.documento th{ text-align:left; font-size:var(--t-sm); text-transform:uppercase;
  letter-spacing:.03em; color:var(--tenue); font-weight:700 }
/* Il prospetto per conto: molte colonne strette, intestazioni su due righe. */
.prospetto-riparto th{ vertical-align:bottom; text-transform:none; letter-spacing:0 }
.prospetto-riparto th .descr{ display:block; font-weight:400; font-size:7.5pt; line-height:1.2;
  font-family:var(--font-doc); font-style:normal; white-space:normal }
.prospetto-riparto + .prospetto-riparto{ margin-top:var(--s-5) }
.prospetto-riparto td,.prospetto-riparto th{ padding:3pt 4pt }
/* La colonna degli importi ha l'intestazione sopra i numeri, non a sinistra. */
.documento th.num{ text-align:right }
/* Un nuovo capitolo del documento si stacca da quello prima: «2. Riepilogo»
   stava attaccato al totale del registro. */
.documento * + h2{ margin-top:var(--s-6) }
/* Le note dentro una cella numerica si leggono nel carattere del testo. */
.documento td.num .norma{ font-family:var(--font-doc); font-style:normal; white-space:normal }
/* Una riga sola separa il corpo dal totale: il bordo inferiore dell'ultima
   riga e quello superiore del piede si sovrapponevano, e si vedeva. */
.documento tbody tr:last-child td{ border-bottom:none }
.documento tfoot td{ border-top:2px solid var(--testo); border-bottom:none;
  padding-top:var(--s-3); font-weight:600 }

.documento__saldo{ margin:var(--s-4) 0 0; font-size:var(--t-md); text-align:right }

.documento__pagamento{ margin-top:var(--s-5); border:1px solid var(--bordo);
  border-radius:var(--r-sm); padding:var(--s-3) var(--s-4) }
.documento__pagamento p{ margin:var(--s-1) 0 0; font-size:var(--t-sm) }

.documento__piede{ margin-top:var(--s-5); font-size:var(--t-xs); color:var(--tenue);
  border-top:1px solid var(--bordo); padding-top:var(--s-2); line-height:1.5 }

/* Parti che compaiono nei documenti più lunghi — convocazione, verbale,
   rendiconto, riparto. Vivono qui e non nelle viste perché l'aspetto dei
   documenti si cambia in un posto solo. */
.documento h3{ font-size:var(--t-base); margin:var(--s-5) 0 var(--s-2) }
.documento p{ margin:var(--s-3) 0; line-height:1.55 }
.documento__odg{ margin:var(--s-2) 0 0; padding-left:var(--s-5); line-height:1.6 }
.documento__odg li{ margin-bottom:var(--s-2) }
.documento__odg .norma{ display:block; font-size:var(--t-xs); color:var(--tenue) }
.documento__punto{ margin-top:var(--s-5) }
.documento__punto h3{ margin-top:0 }
.documento__votazione{ font-size:var(--t-sm); color:var(--tenue) }
/* Le parti scritte a mano: stesso corpo del resto, ma riconoscibili. */
.documento__narrativa p{ margin:var(--s-2) 0; text-align:justify }
/* Le parole del condòmino si staccano da quelle dell'amministratore. */
.documento__dichiarazione{ margin:var(--s-2) 0 var(--s-2) var(--s-4); padding-left:var(--s-3); border-left:2px solid var(--bordo) }
.documento__assenti{ font-size:var(--t-sm) }
.documento__sbilancio{ margin-top:var(--s-3); color:var(--errore) }

/* Le firme: due colonne che su carta restano affiancate e non si spezzano. */
.documento__firme{ display:flex; gap:var(--s-7); margin-top:var(--s-7);
  justify-content:space-between }
.firma{ flex:1 1 0; font-size:var(--t-sm); text-align:center }
.firma__riga{ display:block; border-top:1px solid var(--testo);
  margin:0 auto var(--s-2); width:min(100%, 18rem) }

/* ─────────────────────────────── LA FINZIONE DEL FOGLIO, A SCHERMO ─────── */

@media screen{
  .documento{
    background:var(--superficie); border:1px solid var(--bordo); border-radius:var(--r);
    box-shadow:var(--ombra); padding:var(--s-6); margin:0 auto var(--s-5); max-width:210mm;
  }
  /* Dove lo schermo ha già la sua tabella, il foglio si vede solo in
     anteprima (raccogliAnteprima in app.js). In stampa esce sempre. */
  #vista.anteprima-nascosta:not(.anteprima-aperta) .documento{ display:none }
  #vista.anteprima-aperta .documento:first-of-type{ margin-top:var(--s-6) }
  /* Un documento lasciato fuori dalla stampa, in anteprima, si vede spento. */
  .documento--escluso{ opacity:.4 }
}

/* ─────────────────────────────── LA CARTA ──────────────────────────────── */

/* Il numero di pagina lo scrive la carta stessa, «pag. 2 di 5». Con i
   riquadri di margine definiti qui il browser non aggiunge più i suoi — data,
   titolo e indirizzo della pagina — che su un documento consegnato
   all'assemblea non devono comparire. */
@page{ size:A4; margin:18mm 15mm;
  @bottom-right{ content:"pag. " counter(page) " di " counter(pages);
    font-family:Georgia,"Times New Roman",serif; font-size:8pt; color:#555 } }
/* Il foglio per le tabelle larghe. Lo sceglie orientaStampa (elenchi.js)
   misurando il contenuto al momento di stampare: la stessa pagina entra in
   verticale con dieci condòmini e non con trecento dai nomi lunghi. */
@page largo{ size:A4 landscape; margin:12mm 12mm;
  @bottom-right{ content:"pag. " counter(page) " di " counter(pages);
    font-family:Georgia,"Times New Roman",serif; font-size:8pt; color:#555 } }
.stampa-orizzontale{ page:largo }
/* Una serie di lettere, una per condòmino, non si numera come un documento
   solo: «pag. 3 di 7» sull'avviso del terzo condòmino non ha senso per lui. */
@page serie{ size:A4; margin:18mm 15mm; @bottom-right{ content:" " } }
.stampa-serie{ page:serie }
/* La sonda con cui orientaStampa misura una tabella prima di stampare: le
   stesse misure della carta (carattere, spaziature), perché con quelle dello
   schermo — più ariose — ogni tabella risultava più larga del vero. Tenerle
   allineate alle regole di @media print qui sotto. */
.sonda-stampa{ font-family:var(--font-doc); font-size:11pt; line-height:1.35 }
.sonda-stampa th,.sonda-stampa td{ padding:4pt 6pt!important; border:0!important }
.sonda-stampa th{ font-size:var(--t-sm); letter-spacing:.03em }
.sonda-stampa .scorri table{ font-size:9pt }
.sonda-stampa .scorri th,.sonda-stampa .scorri td{ padding:2.5pt 5pt!important }
.sonda-stampa .scorri .pill{ font-size:7.5pt; padding:0 3pt }

/* Il foglio del frontespizio non porta il numero di pagina. */
@page frontespizio{ size:A4; margin:18mm 15mm; @bottom-right{ content:" " } }

@media screen{
  .frontespizio{ background:var(--superficie); border:1px solid var(--bordo); border-radius:var(--r);
    box-shadow:var(--ombra); padding:var(--s-6); margin:0 auto var(--s-5); max-width:210mm; aspect-ratio:210/297 }
}

@media print{
  /* Via tutto ciò che non è il documento */
  .barra,.menu,.azioni,#apri-menu,#toast,dialog,.solo-schermo{display:none!important}
  /* I documenti che si è scelto di non stampare (elenchi.js). */
  .documento--escluso,.elenco-barra,.tendina-filtro{display:none!important}
  /* Le spiegazioni per chi usa il programma non vanno sul prospetto stampato. */
  .guida,.aiuto-pagina,.vuoto:empty{display:none!important}
  .card{border:none;box-shadow:none}
  /* La scatola che a schermo scorre, su carta si apre tutta. Con la sua
     altezza massima la prima nota — 53 movimenti — usciva in sei righe
     e senza le colonne di destra: tutto ciò che non stava nel riquadro
     spariva dal foglio senza avviso. */
  .scorri{overflow:visible!important;max-height:none!important;border:0!important;box-shadow:none!important}
  /* I comandi dentro le righe non vanno su carta. */
  td button,.azioni-riga{display:none!important}
  /* Oltre la larghezza del foglio orizzontale: carattere più piccolo e
     celle più strette, invece di colonne tagliate. */
  .stampa-compatta table{font-size:8.5pt}
  .stampa-compatta th,.stampa-compatta td{padding:2pt 4pt!important}
  /* In bianco e nero il verde e il rosso diventano due grigi indistinguibili:
     il segno lo porta già la parola accanto (avanzo, disavanzo, residuo). */
  .segno-ok,.segno-errore{color:#000}
  .corpo{display:block;grid-template-columns:1fr}
  main{padding:0}
  body{background:#fff;font-family:var(--font-doc);font-size:11pt;color:#000}
  .doc{border:none;box-shadow:none}

  /* Il frontespizio occupa un foglio suo, alto quanto la pagina utile. */
  .frontespizio{ page:frontespizio; break-after:page; page-break-after:always; min-height:255mm; color:#000 }
  .frontespizio__riga3{ color:#000 }

  /* Un documento per foglio. L'ultimo non trascina una pagina bianca. */
  .documento{break-after:page;page-break-after:always;color:#000}
  .documento:last-child{break-after:auto;page-break-after:auto}

  /* Ciò che non deve spezzarsi fra due fogli */
  .documento__intestazione,.documento__destinatario,
  .documento__pagamento,.documento__piede,.documento__firme,.firma,
  .documento__punto,.documento__odg li,tr{break-inside:avoid;page-break-inside:avoid}
  /* Una voce del registro di anagrafe — l'unità con i suoi titolari — si legge
     come un blocco solo: spezzarla fra due fogli separerebbe l'immobile da chi
     lo abita, che è proprio l'accostamento per cui il registro esiste. */
  .voce-anagrafe{break-inside:avoid;page-break-inside:avoid}
  /* Luogo, data e firma non si separano: una firma sola su un foglio bianco non firma niente. */
  .chiusura-firma{break-inside:avoid;page-break-inside:avoid}
  /* Un titolo non resta solo in fondo al foglio col suo testo alla pagina dopo. */
  .documento h2,.documento h3{break-after:avoid;page-break-after:avoid}
  .documento__sbilancio{color:#000;font-weight:700}

  /* L'intestazione di una tabella lunga si ripete su ogni foglio; il piede
     no: è il totale generale, e ripetuto in fondo al primo foglio si leggeva
     come se il totale fosse già raggiunto lì. */
  thead{display:table-header-group}
  tfoot{display:table-row-group}

  /* Le tabelle dello schermo stampate così come sono — prima nota, rate,
     soggetti — portavano su carta le spaziature dello schermo: quattro
     movimenti per foglio. Su carta si stringono. */
  .scorri table{font-size:9pt}
  .scorri th,.scorri td{padding:2.5pt 5pt!important;vertical-align:top}
  .scorri .pill{font-size:7.5pt;padding:0 3pt}

  /* In bianco e nero il colore non distingue più: lo fanno peso e bordo */
  .documento th,.documento td{ border-bottom:.4pt solid #999; padding:4pt 6pt; color:#000 }
  .documento th{ border-bottom:.8pt solid #000; color:#000 }
  .documento tfoot td{ border-top:.8pt solid #000 }
  .documento__intestazione{ border-bottom-width:1pt }
  .documento__intestazione p,.documento__destinatario .unita,.documento__piede{ color:#333 }
  .cod{color:#000}
  .num{text-align:right;font-variant-numeric:tabular-nums}
  .pill{border:.4pt solid #000;background:none!important;color:#000!important}
  .avviso{border:.4pt solid #000;background:none!important}

  a{text-decoration:none;color:#000}
}

/* ─────────────────────────────── I GRAFICI SULLA CARTA ─────────────────── */

@media print{
  /* Un grafico non si spezza fra due fogli: mezza barra non dice niente. */
  .grafico{break-inside:avoid;page-break-inside:avoid;margin-bottom:var(--s-4)}
  .grafico__titolo{color:#000}
  .grafico__totale{color:#000}

  /* In bianco e nero i toni non si distinguono più per tinta. Si
     distinguono per densità, e ogni barra prende un contorno perché su
     carta chiara un riempimento chiaro sparirebbe del tutto. */
  .gbarra__traccia,.gcolonna__asta{background:#fff;border:.4pt solid #bbb}
  .gbarra__riempimento,.gcolonna__riempimento,.gconf__riempimento{border:.4pt solid #000}
  .gconf__traccia{background:#fff;border:.4pt solid #bbb}
  /* Le linee in bianco e nero: una piena e nera, l'altra grigia e tratteggiata. */
  .tono-traccia-accento{stroke:#000!important}
  .tono-traccia-tenue{stroke:#888!important;stroke-dasharray:5 4}
  .glinee__griglia{stroke:#ddd}
  .glinee__asse{fill:#333}
  .scarto-ko{color:#000;font-weight:700}
  .tono-accento{background:#555!important}
  .tono-ok{background:#888!important}
  .tono-allerta{background:#aaa!important}
  .tono-errore{background:#222!important}
  .tono-tenue{background:#ddd!important}
  .gbarra__quota,.gcolonna__valore,.gbarra__nota,.gcolonna__nota{color:#333}
}

/* ───────────────── MODULI PRESTAMPATI (bollettini postali) ─────────────────
   Qui non si impagina: si scrive dentro caselle già stampate su un modulo di
   carta. Ogni misura è in millimetri assoluti sul foglio, e --mx/--my sono la
   calibrazione della stampante, che sfalsa sempre di qualche decimo. */

.prestampato{
  position:relative; width:297mm; height:210mm;
  page-break-after:always; break-after:page;
  font-family:var(--font-ui); color:#000;
}
.prestampato:last-child{ page-break-after:auto; break-after:auto }
.prestampato__c,.mod__c,.mod__t,.mod__prova{ position:absolute }
.mod__c{
  left:calc(var(--x) + var(--mx)); top:calc(var(--y) + var(--my));
  transform:translateX(-50%);
  font-size:9pt; font-family:var(--mono); line-height:1;
}
.mod__t{
  left:calc(var(--x) + var(--mx)); top:calc(var(--y) + var(--my));
  width:var(--w); font-size:9pt; line-height:1;
  white-space:nowrap; overflow:hidden;
}
.mod__t.piccolo{ font-size:7.5pt }
.mod__t.minuto{ font-size:8pt }
/* La causale va a capo: il riquadro è alto due righe. */
.mod__t.capo{ white-space:normal; line-height:1.15; max-height:8mm }
/* Il reticolo di prova: un trattino dove finirà ogni dato. */
.mod__prova{
  left:calc(var(--x) + var(--mx)); top:calc(var(--y) + var(--my) + 3mm);
  width:var(--w); border-top:.3mm solid #c00;
}

@media screen{
  /* A schermo il modulo si mostra come un foglio, per vedere dove cadranno i
     dati prima di sprecare un modulo vero. */
  .prestampato{
    background:var(--superficie); border:1px solid var(--bordo);
    box-shadow:var(--ombra); margin:0 auto var(--s-5);
    transform-origin:top left;
  }
  .mod__prova{ border-top-color:var(--errore) }
}

@media print{
  /* Il foglio del bollettino è orizzontale: gli altri documenti no. Si
     dichiara qui, sul solo elemento che lo richiede. */
  .prestampato{ margin:0; border:none; box-shadow:none; background:none }
}

/* Il verso del foglio va dichiarato per pagina nominata, altrimenti varrebbe
   per tutti i documenti del prodotto. */
@page orizzontale{ size:A4 landscape; margin:0 }
.prestampato{ page:orizzontale }

/* ─────────────────────────── ETICHETTE ADESIVE ─────────────────────────────
   Come per i bollettini, qui non si impagina: si scrive dentro riquadri già
   fustellati su un foglio comprato in cartoleria. Le misure sono millimetri
   assoluti sul foglio; --mx/--my sono la calibrazione della stampante. */

.foglio-etichette{
  position:relative; width:210mm; height:297mm;
  page-break-after:always; break-after:page;
  font-family:var(--font-ui); color:#000;
}
.foglio-etichette:last-child{ page-break-after:auto; break-after:auto }
.etichetta-posta{
  position:absolute;
  left:calc(var(--x) + var(--mx)); top:calc(var(--y) + var(--my));
  width:var(--w); height:var(--h);
  display:flex; flex-direction:column; justify-content:center;
  padding:2mm 3mm; font-size:9pt; line-height:1.28; overflow:hidden;
}
.etichetta-posta strong{ font-weight:700 }
.etichetta-posta .mancante{ font-style:italic }

@media screen{
  /* A schermo il foglio si mostra com'è, per vedere dove cadranno i dati
     prima di sprecare un foglio adesivo vero. */
  .foglio-etichette{
    background:var(--superficie); border:1px solid var(--bordo);
    box-shadow:var(--ombra); margin:0 auto var(--s-5);
  }
  .etichetta-posta .mancante{ color:var(--errore) }
}

/* I riquadri di prova: si accendono su richiesta, per verificare la
   calibrazione senza stampare i dati. */
.foglio-etichette--prova .etichetta-posta{ outline:.3mm dashed #c00 }

@media print{
  .foglio-etichette{ margin:0; border:none; box-shadow:none; background:none }
}

/* Il foglio delle etichette è verticale e senza margini: i margini li porta
   il formato del foglio adesivo. */
@page etichette{ size:A4 portrait; margin:0 }
.foglio-etichette{ page:etichette }

/* ─────────────────── STAMPA DI UN DOCUMENTO DA UNA FINESTRA ───────────────────
   Di norma la stampa nasconde le finestre. Quando però il documento sta
   proprio in una finestra — la lettera d'invito all'area riservata, che
   contiene un collegamento che si vede una volta sola — si stampa la
   finestra e soltanto il documento che contiene. */
@media print{
  body.stampa-modale > *:not(dialog){ display:none!important }
  body.stampa-modale dialog{ display:block!important; position:static; box-shadow:none; border:0;
    max-width:none; max-height:none; width:auto; margin:0; padding:0 }
  body.stampa-modale dialog #modale-corpo > :not(.documento){ display:none!important }
}

/* I codici a barre delle rate sull'avviso: in griglia, con il numero sotto. */
.codici-sportello__griglia{ display:flex; flex-wrap:wrap; gap:6pt 18pt; margin-top:4pt }
.codici-sportello figure{ margin:0; text-align:center; break-inside:avoid }
.codici-sportello svg{ display:block; margin:0 auto; max-width:100% }
.codici-sportello figcaption{ font-size:8pt; line-height:1.35 }
