/* ============================================================
   STAMPA — il documento che esce dall'icona «condividi».
   Caricato con media="print": a schermo non esiste, quindi non può
   interferire con l'app né costare un solo millisecondo di rendering.

   Principi:
   · A4 verticale, NERO SU BIANCO: nessun colore, nessun grigio decorativo,
     nessuna ombra. Deve uscire leggibile anche da una stampante scarsa e
     restare leggibile fotocopiato o guardato su un telefono in cucina;
   · nessun elemento dell'app (barra schede, pulsanti, timer, toast, aloni);
   · interruzioni di pagina sensate: un giorno non si spezza mai a metà,
     un pasto nemmeno; spesa e batch cooking iniziano su pagina nuova;
   · tipografia grande e spaziata: chi cucina legge in piedi, di sfuggita.
   ============================================================ */

@page {
  size: A4 portrait;
  margin: 14mm 13mm 15mm;
}

/* Solo la vista di stampa esiste sulla carta. */
body > *:not(#stampa) { display: none !important; }

html, body {
  background: #fff !important;
  color: #000 !important;
  max-width: none !important;
  width: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  /* `min-height: 100dvh` dell'app diventerebbe l'altezza di una pagina intera
     e potrebbe aggiungere un foglio bianco in coda. */
  min-height: 0 !important;
  height: auto !important;
  overflow: visible !important;
  color-scheme: light;
}
/* Gli aloni di sfondo e la fascia della barra di sistema sono pseudo-elementi:
   la regola `body > *:not(#stampa)` non li tocca, vanno spenti a parte o
   uscirebbe una banda scura in cima al foglio. */
body::before,
body::after { display: none !important; }

#stampa {
  display: block;
  font-family: var(--font);
  font-size: 10.5pt;
  line-height: 1.45;
  color: #000;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* Rete di sicurezza: dentro il documento di stampa nessun elemento può portarsi
   dietro i colori, gli sfondi e le ombre dell'app. Tutte le classi del documento
   sono prefissate `s-` proprio per non incrociare quelle dell'interfaccia, ma se
   un giorno una collidesse (è già successo con `.cue`, che stampava rosa chiaro
   su bianco) qui viene comunque riportata al nero su bianco. */
#stampa * {
  color: #000 !important;
  background: none !important;
  box-shadow: none !important;
  text-shadow: none !important;
  -webkit-text-fill-color: #000;
}

/* ---------- INTESTAZIONE DEL DOCUMENTO ---------- */
.s-testa { border-bottom: 2.2pt solid #000; padding-bottom: 5mm; margin-bottom: 6mm; }
.s-marchio {
  font-size: 7.5pt; letter-spacing: .14em; text-transform: uppercase;
  font-weight: 800; color: #000;
}
.s-testa h1 { font-size: 22pt; font-weight: 800; letter-spacing: -.02em; margin: 1.5mm 0 2.5mm; }
.s-meta { display: flex; flex-wrap: wrap; gap: 3mm; font-size: 9pt; font-weight: 700; }
.s-meta span { border: .8pt solid #000; border-radius: 2mm; padding: .8mm 2.4mm; }
.s-sotto { font-size: 9pt; color: #000; margin-top: 3mm; }

/* ---------- SEZIONI ---------- */
.s-sez {
  font-size: 14pt; font-weight: 800; letter-spacing: -.01em;
  border-bottom: 1.2pt solid #000;
  padding-bottom: 1.6mm; margin: 7mm 0 4mm;
  break-after: avoid; page-break-after: avoid;
}
.s-sez.s-pagina { break-before: page; page-break-before: always; margin-top: 0; }

/* ---------- BLOCCO GIORNO ---------- */
/* Un giorno non si spezza mai fra due pagine: chi cucina o chi si allena
   deve avere tutto sott'occhio senza girare il foglio a metà. */
.s-giorno {
  break-inside: avoid; page-break-inside: avoid;
  margin-bottom: 6mm; padding-bottom: 3mm;
  border-bottom: .6pt solid #000;
}
.s-giorno:last-of-type { border-bottom: none; }
.s-giorno h3 {
  display: flex; align-items: baseline; justify-content: space-between; gap: 4mm;
  font-size: 12.5pt; font-weight: 800; letter-spacing: -.01em;
  border-left: 3pt solid #000; padding-left: 3mm;
  margin-bottom: 3mm;
  break-after: avoid; page-break-after: avoid;
}
.s-giorno h3 em {
  font-style: normal; font-size: 8.4pt; font-weight: 700; color: #000;
  white-space: nowrap; font-variant-numeric: tabular-nums;
}
.s-riposo h3 { border-left-width: 1pt; }

/* ---------- PASTI (documento dieta) ---------- */
/* Un pasto è un blocco compatto: titolo, nome del piatto, grammature.
   Non si spezza mai fra due pagine. */
.s-pasto { break-inside: avoid; page-break-inside: avoid; margin-bottom: 3.5mm; }
.s-pasto h4 {
  display: flex; align-items: baseline; justify-content: space-between; gap: 4mm;
  font-size: 10.5pt; font-weight: 800;
  text-transform: uppercase; letter-spacing: .06em;
  border-bottom: .8pt solid #000;
  padding-bottom: 1mm; margin-bottom: 1.4mm;
}
.s-pasto h4 em { font-style: normal; font-size: 8.4pt; font-weight: 700; white-space: nowrap; }
/* Il nome del piatto: è la prima cosa che cerca chi apre il foglio. */
.s-piatto { font-size: 9.6pt; font-weight: 700; margin-bottom: 1.4mm; }

.s-ingr { width: 100%; border-collapse: collapse; }
.s-ingr td { padding: 1mm 0; vertical-align: baseline; font-size: 9.8pt; }
.s-ingr td.a { border-bottom: .4pt dotted #999; }
.s-ingr td.q {
  text-align: right; white-space: nowrap; padding-left: 5mm;
  font-weight: 800; font-variant-numeric: tabular-nums;
  border-bottom: .4pt dotted #999;
}

.s-nota { font-size: 8.6pt; color: #000; margin-top: 2mm; }

/* ---------- TABELLE (esercizi, conservazione) ---------- */
.s-tabella { width: 100%; border-collapse: collapse; font-size: 9.4pt; margin-bottom: 3mm; }
.s-tabella th {
  text-align: left; font-size: 7.6pt; letter-spacing: .08em; text-transform: uppercase;
  font-weight: 800; border-bottom: 1pt solid #000; padding: 1.2mm 2mm;
}
.s-tabella td { border-bottom: .5pt solid #999; padding: 1.6mm 2mm; vertical-align: top; }
.s-tabella tr { break-inside: avoid; page-break-inside: avoid; }
.s-esercizi td.i { font-weight: 800; width: 6mm; }
.s-esercizi td.c { text-align: center; font-weight: 800; font-variant-numeric: tabular-nums; }
.s-esercizi td.vuota { min-width: 18mm; }
.s-esercizi strong { display: block; font-size: 9.8pt; font-weight: 800; }
.s-esercizi em.s-cue {
  display: block; font-style: normal; font-size: 8.2pt;
  margin-top: .6mm; padding: 0; border: 0; border-radius: 0; line-height: 1.3;
}

/* ---------- SPESA ---------- */
/* Due colonne: la lista sta in una pagina sola e resta leggibile nel carrello. */
.s-colonne { columns: 2; column-gap: 8mm; }
.s-reparto { break-inside: avoid; page-break-inside: avoid; margin-bottom: 4mm; }
.s-reparto h4 {
  font-size: 9.8pt; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
  border-bottom: .8pt solid #000; padding-bottom: 1mm; margin-bottom: 1.6mm;
}
.s-reparto li {
  display: flex; align-items: baseline; gap: 2mm;
  font-size: 9.6pt; padding: 1mm 0; border-bottom: .4pt dotted #999;
}
/* Casella da spuntare disegnata, non un carattere: il glifo del quadratino
   vuoto non è presente in tutti i font di stampa e in quel caso non veniva
   stampato affatto. */
.s-reparto li .casella {
  flex: 0 0 auto;
  width: 3mm; height: 3mm;
  border: .5pt solid #333;
  border-radius: .5mm;
  align-self: center;
}
.s-reparto li .v { flex: 1; }
/* La quantità può essere una frase intera («verifica di averlo: è il sale
   predefinito di tutte le ricette»): con `nowrap` si prendeva tutta la riga e
   il NOME finiva spezzato in verticale. Con un tetto e la possibilità di andare
   a capo, i pesi veri («1.720 g», 7 caratteri) restano comunque su una riga. */
.s-reparto li .q {
  font-weight: 800; font-variant-numeric: tabular-nums;
  max-width: 46%; text-align: right; overflow-wrap: break-word;
}
/* Prezzo indicativo della riga: una colonnina a destra della quantità, più
   leggera del peso perché al banco si legge prima quanto ne serve e poi
   quanto costa. Larghezza fissa così gli importi restano incolonnati. */
.s-reparto li .p {
  flex: 0 0 auto;
  min-width: 13mm; text-align: right;
  font-size: 8.8pt; color: #333;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
/* Totale del reparto accanto al suo titolo. */
.s-reparto h4 { display: flex; align-items: baseline; justify-content: space-between; gap: 3mm; }
.s-reparto h4 em {
  flex: 0 0 auto; white-space: nowrap;
  font-style: normal; font-size: 8.8pt; font-weight: 700; letter-spacing: 0;
  text-transform: none; font-variant-numeric: tabular-nums;
}
.s-reparto h4 > span { min-width: 0; }
/* Totale della lista: mai presentato come un preventivo. */
.s-totale-spesa {
  break-inside: avoid;
  margin-top: 3mm; padding-top: 2mm; border-top: .8pt solid #000;
  font-size: 9.2pt;
}
.s-totale-spesa strong { font-weight: 800; }
.s-totale-spesa span { color: #333; }

/* ---------- BATCH ---------- */
.s-passi { counter-reset: passo; }
.s-passi li {
  counter-increment: passo;
  display: flex; gap: 2.5mm; font-size: 9.4pt;
  padding: 1.2mm 0; border-bottom: .4pt dotted #999;
  break-inside: avoid;
}
.s-passi li::before {
  content: counter(passo);
  flex: 0 0 auto; width: 5mm; font-weight: 800;
}
.s-passi li em { font-style: normal; }

/* ---------- PIEDE ---------- */
.s-piede {
  margin-top: 7mm; padding-top: 3mm; border-top: .8pt solid #000;
  font-size: 8pt; break-inside: avoid;
}
