/* Stessa famiglia grafica del brogliaccio di Moso: testata blu con filetto rosso, caselle a tessera.
   Foglio turni: giorni in verticale a sinistra, militari in orizzontale nella riga dei nomi che resta sempre visibile. */
:root {
  --bg: #eef1f5;
  --surface: #ffffff;
  --surface-2: #f5f7fa;
  --line: #cfd6e0;
  --line-strong: #9aa7b8;
  --fg: #0f1b2d;
  --muted: #5b6878;
  --blu: #0b2f5c;
  --blu-fg: #ffffff;
  --rosso: #b3121f;
  --oggi: #e3ecf8;
  --focus: #2f6fd6;
  --sabato: #f2f4f8;
  --festa: #fcebeb;
  --prefestivo: #d06a00;
  --verde: #17703a;   --verde-sf: #e1f3e7;
  --giallo: #855a00;  --giallo-sf: #fff3cf;
  --rosso-sf: #fbe3e1;
  /* servizi */
  /* 14/11/2026: colori più accesi e tutti diversi tra loro (richiesta dell'utente) */
  --t-m: #8ec0f5;     --t-m-fg: #0b2f5c;
  --t-ml: #0b2f5c;    --t-ml-fg: #ffffff;
  --t-p: #45c6c0;     --t-p-fg: #033534;
  --t-n: #4b2f8f;     --t-n-fg: #ffffff;
  /* causali */
  --a-rs: #f5c518;    --a-rs-fg: #1f1700;
  --a-rrs: #ffe27a;   --a-rrs-fg: #3a2c00;
  --a-rf: #f07a1f;    --a-rf-fg: #ffffff;
  --a-rrf: #ffb27a;   --a-rrf-fg: #4a2100;
  --a-lic: #2fae4e;   --a-lic-fg: #ffffff;   /* licenza ordinaria, festività soppresse, speciale */
  --a-ass: #7d8ca3;   --a-ass-fg: #ffffff;
  /* tipi di licenza con colore proprio */
  --l-straord: #e0457b; --l-straord-fg: #ffffff;
  --l-esami: #b5d334;   --l-esami-fg: #253000;
  --l-studio: #c04fd6;  --l-studio-fg: #ffffff;
  --display: "Barlow Condensed", "Arial Narrow", "Roboto Condensed", sans-serif;
  --body: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
  --h-testata: 64px;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { color-scheme: light; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 14px/1.4 var(--body); }
button, input, select, textarea { font: inherit; }

/* ---------- testata ---------- */
.testata {
  position: sticky; top: 0; left: 0; z-index: 40; width: 100%;
  background: var(--blu); color: var(--blu-fg); border-bottom: 4px solid var(--rosso);
  transition: transform .2s ease;
}
body.compatto .testata { transform: translateY(-100%); }
.testata-in { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; padding: 8px 16px; }
.marchio { display: flex; align-items: center; gap: 10px; }
.marchio .stemma { height: 40px; width: auto; flex: none; filter: drop-shadow(0 1px 1px rgba(0,0,0,.35)); }
.marchio h1 { margin: 0; font: 700 20px/1.05 var(--display); letter-spacing: .02em; text-transform: uppercase; }
.marchio p { margin: 2px 0 0; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; opacity: .8; }
.schede { display: flex; gap: 2px; flex: 1; min-width: 0; overflow-x: auto; }
.schede button {
  white-space: nowrap; background: transparent; color: #d7e1f0; border: 0; border-radius: 6px;
  padding: 7px 11px; cursor: pointer; font: 600 13px var(--body);
}
.schede button:hover { background: rgba(255,255,255,.12); color: #fff; }
.schede button[aria-current="page"] { background: #fff; color: var(--blu); }
.utente { display: flex; align-items: center; gap: 10px; font-size: 12.5px; }
.stato { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; }
.stato i { width: 8px; height: 8px; border-radius: 50%; background: #9aa7b8; display: inline-block; }
.stato.ok i { background: #3fcf7a; }
.stato.salva i { background: #f2c230; }
.stato.errore i { background: #ff6b75; }
.testata .btn { background: rgba(255,255,255,.1); color: #fff; border-color: rgba(255,255,255,.3); }
.testata .btn:hover { background: rgba(255,255,255,.2); }

/* barra comandi del foglio, dentro la testata */
.strumenti { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 0 16px 8px; }
.strumenti input[type="date"] { height: 30px; border-radius: 6px; border: 1px solid rgba(255,255,255,.3); background: rgba(255,255,255,.1); color: #fff; padding: 0 8px; color-scheme: dark; }
.strumenti .suggerimento { font-size: 11.5px; opacity: .75; margin-left: auto; }

/* ---------- pulsanti ---------- */
.btn {
  height: 32px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 6px;
  background: var(--surface); color: var(--fg); cursor: pointer; font: 600 13px var(--body);
}
.btn:hover { border-color: var(--focus); }
.btn.primario { background: var(--blu); border-color: var(--blu); color: #fff; }
.strumenti .btn.primario { background: var(--rosso); border-color: var(--rosso); }
.btn.pericolo { color: var(--rosso); border-color: var(--rosso); }
.btn.piccolo { height: 26px; padding: 0 8px; font-size: 12px; }
.btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

/* ---------- legenda ---------- */
.legenda { display: flex; flex-wrap: wrap; gap: 6px 12px; padding: 10px 16px; font-size: 12px; color: var(--muted); background: var(--surface); border-bottom: 1px solid var(--line); }
.legenda .chip-l { display: inline-flex; align-items: center; gap: 5px; }
.legenda .tile { min-width: 34px; height: 20px; font-size: 11px; }

/* ---------- foglio turni (giorni in verticale) ---------- */
.foglio-box { padding: 0 0 80px; }
table.foglio { border-collapse: separate; border-spacing: 0; table-layout: fixed; background: var(--surface); }
.foglio col.c-data { width: 112px; }
.foglio col.c-cop { width: 96px; }
.foglio col.c-mil { width: 74px; }
.foglio th, .foglio td { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 0; }
.foglio thead th {
  position: sticky; top: var(--h-testata); z-index: 20; transition: top .2s ease;
  background: var(--surface-2); border-bottom: 2px solid var(--line-strong);
  padding: 6px 3px; text-align: center; vertical-align: bottom; font-weight: 600;
}
body.compatto .foglio thead th { top: 0; }
.foglio thead th.c-data, .foglio thead th.c-cop {
  text-align: left; padding-left: 10px; font: 600 12px var(--display); letter-spacing: .12em; text-transform: uppercase; color: var(--muted);
}
.foglio .c-data { position: sticky; left: 0; z-index: 5; background: inherit; }
.foglio .c-cop { position: sticky; left: 112px; z-index: 5; background: inherit; border-right: 2px solid var(--line-strong); }
.foglio thead th.c-data, .foglio thead th.c-cop { z-index: 25; background: var(--surface-2); }
.mil-grado { display: block; font: 500 10px var(--mono); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mil-cogn { display: block; font: 700 14px/1.05 var(--display); letter-spacing: .03em; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mil-nome { display: block; font-size: 10px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* colonna rinforzi del giorno */
.foglio col.c-rinf { width: 150px; }
.foglio thead th.c-rinf { border-left: 2px solid var(--line-strong); }
.foglio thead th.c-rinf .mil-grado { color: var(--blu); letter-spacing: .06em; }
td.c-rinf { border-left: 2px solid var(--line-strong); padding: 3px 4px; vertical-align: middle; }
td.c-rinf .rinf {
  display: flex; align-items: baseline; gap: 4px; width: 100%; margin-bottom: 2px; padding: 2px 6px;
  border: 1px solid transparent; border-radius: 5px; cursor: pointer; text-align: left;
  font: 600 11.5px var(--body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
td.c-rinf .rinf b { font: 700 11.5px var(--mono); }
td.c-rinf .rinf small { font: 500 10px var(--mono); opacity: .8; }
td.c-rinf .rinf:focus-visible, td.c-rinf .rinf-piu:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
td.c-rinf .rinf-piu {
  width: 100%; height: 20px; border: 1px dashed var(--line-strong); border-radius: 5px; background: transparent;
  color: var(--muted); font: 700 14px/1 var(--body); cursor: pointer;
}
td.c-rinf .rinf-piu:hover { border-color: var(--focus); color: var(--focus); }
th.posto { cursor: pointer; }
th.posto .mil-grado { color: var(--rosso); letter-spacing: .06em; }
th.posto:hover { background: var(--oggi); }

/* riga separatrice di settimana */
tr.sett td {
  background: var(--blu); color: #fff; padding: 5px 10px;
  font: 600 13px var(--display); letter-spacing: .12em; text-transform: uppercase;
}
tr.sett td .dx { float: right; font: 500 11.5px var(--body); letter-spacing: 0; text-transform: none; opacity: .85; position: sticky; right: 10px; }
tr.sett td .sx { position: sticky; left: 10px; }

/* righe dei giorni */
tr.giorno { background: var(--surface); }
tr.giorno.g-sab { background: var(--sabato); }
tr.giorno.g-dom, tr.giorno.g-fest { background: var(--festa); }
td.c-data { padding: 4px 8px 4px 10px; white-space: nowrap; }
.d-num { font: 600 22px/1 var(--display); font-variant-numeric: tabular-nums; }
.d-nome { font: 600 12px var(--display); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin-left: 4px; }
.d-tipo { display: block; font: 700 10px var(--body); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
tr.g-dom .d-nome, tr.g-fest .d-nome, tr.g-dom .d-tipo, tr.g-fest .d-tipo { color: var(--rosso); }
tr.g-pre .d-tipo { color: var(--prefestivo); }
tr.g-pre td.c-data { box-shadow: inset 4px 0 0 var(--prefestivo); }
tr.g-oggi td.c-data { background: var(--oggi); box-shadow: inset 4px 0 0 var(--rosso); }
tr.g-oggi .d-tipo::after { content: " · OGGI"; color: var(--rosso); }
td.c-cop { padding: 4px 6px; }
.badge {
  display: flex; align-items: center; justify-content: center; gap: 3px; width: 100%; height: 22px;
  border-radius: 5px; border: 1px solid; cursor: pointer; font: 700 11px var(--body); letter-spacing: .02em;
}
.badge.verde { background: var(--verde-sf); color: var(--verde); border-color: var(--verde); }
.badge.rosso { background: var(--rosso-sf); color: var(--rosso); border-color: var(--rosso); }
.badge.giallo { background: var(--giallo-sf); color: var(--giallo); border-color: var(--giallo); }
.conta { display: block; text-align: center; font: 500 10.5px var(--mono); color: var(--muted); margin-top: 2px; }

/* caselle */
td.cella { padding: 3px; height: 40px; cursor: pointer; position: relative; }
td.cella:focus { outline: none; }
td.cella:focus .tile, td.cella:focus .vuota { outline: 2px solid var(--focus); outline-offset: 1px; }
td.cella.fuori { background: repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(15,27,45,.06) 4px, rgba(15,27,45,.06) 8px); cursor: default; }
.vuota { display: block; height: 100%; border: 1px dashed var(--line); border-radius: 6px; }
td.cella:hover .vuota { border-color: var(--focus); }
.vuota.posto { display: grid; place-items: center; color: var(--muted); font-size: 10px; }
.vuota.smonto { display: grid; place-items: center; color: var(--muted); font: 600 9.5px var(--mono); letter-spacing: .04em; text-transform: uppercase; background: rgba(15,27,45,.04); }
.tile {
  position: relative; display: grid; place-items: center; height: 100%; border-radius: 6px; border: 1px solid transparent;
  font: 600 13.5px var(--mono); font-variant-numeric: tabular-nums;
}
.tile .inc {
  position: absolute; top: -5px; right: -3px; background: var(--rosso); color: #fff; border-radius: 3px;
  font: 700 8.5px var(--body); letter-spacing: .04em; padding: 0 3px; line-height: 13px;
}
.tile .var { position: absolute; bottom: 0; right: 3px; font-size: 10px; }
.tile .nota { position: absolute; top: 2px; left: 2px; width: 6px; height: 6px; border-radius: 50%; background: #d08700; }
.tile.bozza { border-style: dashed; border-color: currentColor; }
.tile.bozza::after { content: "?"; position: absolute; bottom: 0; left: 4px; font-size: 10px; }
.t-M, .t-M13 { background: var(--t-m); color: var(--t-m-fg); }
.t-ML { background: var(--t-ml); color: var(--t-ml-fg); }
.t-P { background: var(--t-p); color: var(--t-p-fg); }
.t-N { background: var(--t-n); color: var(--t-n-fg); }
.t-RS { background: var(--a-rs); color: var(--a-rs-fg); }
.t-RF { background: var(--a-rf); color: var(--a-rf-fg); }
.t-RRS { background: var(--a-rrs); color: var(--a-rrs-fg); }
.t-RRF { background: var(--a-rrf); color: var(--a-rrf-fg); }
.t-L { background: var(--a-lic); color: var(--a-lic-fg); }
.t-A { background: var(--a-ass); color: var(--a-ass-fg); }
.t-L.tl-STRAORD { background: var(--l-straord); color: var(--l-straord-fg); }
.t-L.tl-ESAMI { background: var(--l-esami); color: var(--l-esami-fg); }
.t-L.tl-STUDIO { background: var(--l-studio); color: var(--l-studio-fg); }
.t-x { background: var(--surface-2); color: var(--fg); border-color: var(--line); }
td.cella input.rapido {
  width: 100%; height: 100%; border: 2px solid var(--focus); border-radius: 6px; text-align: center;
  font: 700 13px var(--mono); text-transform: uppercase; background: #fff; outline: none;
}
.sentinella { padding: 24px; text-align: center; color: var(--muted); }
.carica-prima { display: flex; justify-content: center; padding: 10px; }

/* ---------- pannello laterale ---------- */
.pannello {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 100vw); z-index: 60; overflow-y: auto;
  background: var(--surface); border-left: 4px solid var(--blu); box-shadow: -10px 0 40px rgba(9,18,32,.25);
}
.p-testa { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding: 14px 16px; background: var(--blu); color: #fff; }
.p-testa h3 { margin: 0; font: 700 19px var(--display); letter-spacing: .04em; text-transform: uppercase; }
.p-testa p { margin: 2px 0 0; font-size: 12px; opacity: .85; }
.p-testa .chiudi { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.35); border-radius: 6px; width: 32px; height: 32px; font-size: 16px; cursor: pointer; flex: none; }
.p-corpo { padding: 14px 16px 30px; }
.p-corpo h4 { margin: 16px 0 6px; font: 600 12.5px var(--display); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.codici { display: grid; grid-template-columns: repeat(5, 1fr); gap: 5px; margin: 4px 0 12px; }
.codici button { padding: 6px 2px; border: 2px solid transparent; border-radius: 6px; cursor: pointer; font: 700 13px var(--mono); }
.codici button small { display: block; font: 500 9.5px var(--body); opacity: .8; }
.codici button[aria-pressed="true"] { border-color: var(--fg); box-shadow: 0 0 0 2px #fff inset; }
.codici button:disabled { cursor: default; }
.campo { display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
.campo > span { font-size: 12px; color: var(--muted); }
.campo input, .campo select, .campo textarea { padding: 6px 8px; border: 1px solid var(--line-strong); border-radius: 6px; background: #fff; }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: 2px solid var(--focus); border-color: transparent; }
.riga { display: flex; gap: 8px; flex-wrap: wrap; }
.riga > * { flex: 1; min-width: 110px; }
.azioni { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.nota-info { font-size: 12px; color: var(--muted); background: var(--surface-2); border-left: 3px solid var(--line-strong); padding: 6px 9px; border-radius: 4px; margin: 6px 0; }
.stato-giorno { padding: 9px 11px; border-radius: 6px; font: 700 14px var(--display); letter-spacing: .08em; text-transform: uppercase; margin: 0 0 10px; border: 1px solid; }
.stato-giorno.verde { background: var(--verde-sf); color: var(--verde); }
.stato-giorno.rosso { background: var(--rosso-sf); color: var(--rosso); }
.stato-giorno.giallo { background: var(--giallo-sf); color: var(--giallo); }
.problemi { margin: 0 0 10px; padding-left: 18px; }
.problemi li.rosso { color: var(--rosso); }
.problemi li.giallo { color: var(--giallo); }
table.tab { border-collapse: collapse; width: 100%; font-size: 13px; background: var(--surface); }
.tab th, .tab td { border: 1px solid var(--line); padding: 5px 7px; text-align: left; vertical-align: top; }
.tab th { background: var(--surface-2); font: 600 12px var(--display); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.tab td.ok { color: var(--verde); font-weight: 600; }
.tab td.ko { color: var(--rosso); font-weight: 600; }
.profilo { display: flex; align-items: flex-end; gap: 1px; height: 64px; margin: 6px 0 2px; border-bottom: 1px solid var(--line-strong); }
.profilo div { flex: 1; background: var(--blu); min-height: 1px; }
.profilo div.domani { background: var(--t-n); }
.profilo-asse { display: flex; justify-content: space-between; font-size: 10px; color: var(--muted); }

/* ---------- altre pagine ---------- */
.pagina { padding: 18px 16px 60px; max-width: 1250px; }
.pagina h1 { margin: 0 0 12px; font: 700 26px var(--display); letter-spacing: .02em; }
.pagina h2 { margin: 0 0 10px; font: 600 15px var(--display); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.scheda { background: var(--surface); border: 1px solid var(--line-strong); border-radius: 8px; padding: 14px 16px; margin-bottom: 16px; }
.tab input, .tab select { width: 100%; padding: 4px 6px; border: 1px solid var(--line); border-radius: 4px; }
.tab input[type="checkbox"] { width: auto; }
.chip { display: inline-block; padding: 0 7px; border-radius: 10px; font-size: 11px; border: 1px solid var(--line-strong); }
.chip.disponibile { color: var(--verde); border-color: var(--verde); }
.chip.riservato { color: var(--giallo); border-color: var(--giallo); }
.chip.fruito { color: var(--muted); }
.chip.annullato { color: var(--rosso); border-color: var(--rosso); text-decoration: line-through; }
.chip.conflitto { background: var(--rosso); color: #fff; border-color: var(--rosso); }
.provv { font-size: 10px; color: var(--giallo); border: 1px solid var(--giallo); border-radius: 3px; padding: 0 3px; margin-left: 4px; }

/* ---------- accesso ---------- */
.accesso { min-height: 100vh; display: grid; place-items: center; padding: 16px; background: var(--blu); }
.accesso form { background: var(--surface); padding: 24px; border-radius: 10px; border-bottom: 6px solid var(--rosso); width: min(390px, 100%); box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.accesso h1 { margin: 0 0 4px; font: 700 24px/1.05 var(--display); text-transform: uppercase; color: var(--blu); }
.accesso p { color: var(--muted); margin: 0 0 16px; font-size: 13px; }
.accesso .btn { width: 100%; height: 38px; margin-top: 4px; }

.avviso { position: fixed; bottom: 16px; left: 50%; transform: translateX(-50%); background: var(--fg); color: #fff; padding: 10px 16px; border-radius: 8px; z-index: 80; max-width: min(640px, 92vw); box-shadow: 0 8px 30px rgba(0,0,0,.3); }
.avviso.errore { background: var(--rosso); }

@media (max-width: 760px) {
  .foglio col.c-data { width: 84px; }
  .foglio col.c-cop { width: 72px; }
  .foglio .c-cop { left: 84px; }
  .strumenti .suggerimento { display: none; }
}

/* recuperi: posti provvisori del mese e sottotitoli */
tr.riga-posto td { background: var(--surface-2); }
td.sottotitolo { font: 600 11px var(--display); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); padding-top: 12px; }

/* etichetta di approvazione nella riga della settimana */
tr.sett td .appr {
  position: sticky; left: 260px; margin-left: 14px; padding: 1px 8px; border-radius: 3px; cursor: pointer;
  font: 600 11px var(--body); letter-spacing: .02em; text-transform: none; border: 1px solid transparent;
}
tr.sett td .appr.ok { background: var(--verde-sf); color: var(--verde); }
tr.sett td .appr.da { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .55); }
tr.sett td .appr.cambiata { background: var(--giallo-sf); color: var(--giallo); }
tr.sett td .senza-rs {
  position: sticky; left: 470px; margin-left: 10px; padding: 1px 8px; border-radius: 3px; cursor: pointer;
  font: 600 11px var(--body); letter-spacing: .02em; text-transform: none; border: 1px solid transparent;
  background: var(--giallo-sf); color: var(--giallo);
}
.scheda-appr { border: 1px solid var(--line); border-radius: 4px; padding: 10px 12px; margin: 10px 0; background: var(--surface-2); }
.scheda-appr h4 { margin: 0 0 8px; }

/* foglio di stampa: nascosto a schermo, unico contenuto in stampa */
.stampa { display: none; }
@media print {
  @page { size: A4 landscape; margin: 9mm 10mm; }
  body.in-stampa { background: #fff !important; }
  body.in-stampa > *:not(#stampa) { display: none !important; }
  body.in-stampa .stampa { display: block; color: #000; font-family: Arial, Helvetica, sans-serif; }
  .st-emblema { height: 17mm; margin: 0 auto 1.5mm; text-align: center; }
  .st-emblema img { height: 100%; width: auto; }
  .st-titolo { text-align: center; font: 700 17pt "Times New Roman", Times, serif; letter-spacing: .02em; }
  .st-citta { text-align: center; font: italic 15pt "Times New Roman", Times, serif; margin-top: 1mm; }
  .st-fregio { display: flex; align-items: center; justify-content: center; gap: 1mm; margin: 2mm auto 3mm; width: 60mm; }
  .st-fregio span { flex: 1; border-top: 1.2pt solid #000; }
  .st-fregio i { font-style: normal; font-size: 7pt; letter-spacing: -1pt; }
  .st-periodo { font-size: 10.5pt; margin: 0 0 2mm 4mm; }
  .st-tab, .st-firme { width: 100%; border-collapse: collapse; table-layout: fixed; }
  .st-c-nome { width: 62mm; }
  .st-tab th, .st-tab td { border: .6pt solid #000; padding: .3mm 1mm; font-size: 9pt; text-align: center; font-weight: 400; }
  .st-tab thead th { height: 5mm; }
  .st-tab .st-giorno { text-align: right; border-bottom: none; }
  .st-tab .st-mil { text-align: left; border-top: none; }
  .st-tab td.st-nome { text-align: left; white-space: nowrap; overflow: hidden; font-size: 9pt; }
  .st-tab tbody tr { break-inside: avoid; }
  .st-firme { margin-top: 5mm; break-inside: avoid; }
  .st-firme td { padding: 2mm 3mm; font-size: 9.5pt; text-align: center; vertical-align: middle; }
  .st-firme td.st-appr { border: .6pt solid #000; }
  .st-firme td.st-vuoto { border: none; }
  .st-firme td.st-stampata { border: none; padding: 3mm 0 0; text-align: right; font-size: 8.5pt; }
}
.scheda-appr .riga .campo { flex: 1 1 100%; }
.scheda-appr select { width: 100%; }

/* servizio a orario libero (S): bordo viola su fondo chiaro, si distingue dai turni fissi */
.t-X { background: var(--surface); color: var(--t-n); border: 1.5px solid var(--t-n); }

/* programmazione licenze: calendario del mese */
.lic-cal-box { overflow-x: auto; margin-top: 8px; }
.lic-cal { border-collapse: collapse; font-size: 11px; }
.lic-cal th, .lic-cal td { border: 1px solid var(--line); text-align: center; padding: 2px 0; min-width: 24px; height: 24px; }
.lic-cal th { font-weight: 600; color: var(--muted); line-height: 1.1; }
.lic-cal td.lic-nome { text-align: left; padding: 0 8px; white-space: nowrap; min-width: 150px; font-weight: 600; }
.lic-cal .g-sab { background: var(--sabato); }
.lic-cal .g-dom, .lic-cal .g-fest { background: var(--festa); }
.lic-prog { background: var(--a-lic) !important; color: var(--a-lic-fg); outline: 1px dashed var(--a-lic-fg); outline-offset: -3px; font-weight: 700; }
.lic-appr { background: var(--verde) !important; color: #fff; font-weight: 700; }
.lic-camp { display: inline-block; width: 22px; text-align: center; border-radius: 3px; margin-right: 4px; }

/* stampa dei buoni pasto: A4 verticale, una pagina per giorno */
@page verticale { size: A4 portrait; margin: 12mm 14mm; }
@media print {
  body.in-stampa .stampa.verticale { page: verticale; }
  .sb-pagina { break-after: page; }
  .sb-pagina:last-child { break-after: auto; }
  .sb-titolo { font: 700 12pt Arial, Helvetica, sans-serif; margin: 2mm 0 3mm; text-align: center; }
  .sb-sotto { font: 700 10pt Arial, Helvetica, sans-serif; margin: 5mm 0 2mm; }
  .sb-tab { width: 100%; border-collapse: collapse; table-layout: fixed; }
  .sb-tab th, .sb-tab td { border: .6pt solid #000; padding: 1.5mm 1.5mm; font-size: 9.5pt; text-align: center; }
  .sb-tab td { height: 9mm; }
  .sb-tab td.sb-sx { text-align: left; }
  .sb-tab tr { break-inside: avoid; }
  .sb-nota { font-size: 9.5pt; margin: 3mm 0; }
  .sb-stampata { font-size: 8.5pt; text-align: right; margin-top: 6mm; }

  /* 15/11/2026: buono pasto identico al modello A/30 (Modello Buono Pasto.pdf) */
  .bp-pagina { height: 272mm; display: flex; flex-direction: column; font-family: "Times New Roman", Times, serif; color: #000; position: relative; }
  .bp-modello { position: absolute; left: 0; top: 0; border: .8pt solid #000; padding: .6mm 4mm; font-size: 11pt; }
  .bp-emblema { text-align: center; height: 17mm; }
  .bp-emblema img { height: 100%; width: auto; filter: grayscale(1); }
  .bp-timbro { width: 100mm; margin: 2mm auto 0; border: .6pt solid #555; border-top: none; padding: 2mm 4mm 1mm; text-align: center; }
  .bp-timbro b { display: block; font: 700 11.5pt Arial, Helvetica, sans-serif; }
  .bp-timbro b + b { font-size: 10pt; }
  .bp-timbro span { display: block; width: 76mm; margin: 6mm auto 0; border-top: .6pt solid #555; font-size: 6.5pt; padding-top: .5mm; }
  .bp-mensa { width: 124mm; margin: 6mm auto 0; border: .8pt solid #000; border-top-width: .6pt; text-align: center; font: 700 11.5pt "Times New Roman", Times, serif; padding: 1.2mm 0; letter-spacing: .2pt; }
  .bp-titolo { text-align: center; font: 700 19pt Arial, Helvetica, sans-serif; margin: 3mm 0 1mm; }
  .bp-giorno { text-align: center; font: 700 10.5pt "Times New Roman", Times, serif; margin-bottom: 4mm; }
  .bp-giorno span { font: 400 13pt "Times New Roman", Times, serif; margin-left: 1.5mm; }
  .bp-tab { width: 100%; border-collapse: collapse; table-layout: fixed; }
  .bp-tab th, .bp-tab td { border: .8pt solid #000; padding: .4mm 1.2mm; font: 700 9.5pt "Times New Roman", Times, serif; text-align: center; height: 6.6mm; }
  .bp-tab td.bp-n { font-size: 9pt; }
  .bp-tab td.bp-nome { text-align: left; font-size: 10pt; }
  .bp-tab .bp-x { font-size: 10pt; }
  .bp-tab .bp-ca { font-weight: 400; line-height: 1.15; padding: 0; }
  .bp-tab .bp-ca span { display: block; padding: .3mm 0; }
  .bp-tab .bp-ca span + span { border-top: .6pt solid #000; }
  .bp-dichiara { font-size: 8.5pt; line-height: 1.25; margin: 1.5mm 0 0; text-align: justify; }
  .bp-firma { margin: 16mm 0 0 auto; width: 80mm; text-align: center; font: 700 10.5pt Arial, Helvetica, sans-serif; line-height: 1.2; }
  .bp-linea { display: flex; align-items: flex-end; gap: 2mm; margin: 5mm 0 0 auto; width: 104mm; font-size: 7pt; }
  .bp-linea i { flex: 1; border-bottom: .6pt solid #000; height: 0; }
  .bp-note { margin-top: auto; font-size: 6.8pt; line-height: 1.6; }
  .bp-note::before { content: ""; display: block; width: 60mm; border-top: .6pt solid #000; margin-bottom: 1mm; }
}

/* 14/11/2026: mattina e pomeriggio a orario libero, fuori dal presidio (bordo tratteggiato) */
.t-OM { background: var(--surface); color: var(--t-m-fg); border: 2px dashed var(--t-m); }
.t-OP { background: var(--surface); color: var(--t-p-fg); border: 2px dashed var(--t-p); }
