/* Gestionale v4: sala e tavoli, personale e dispositivi, magazzino, fornitori, stampanti, PC del locale. */
.side { overflow-y: auto; }
.nav-gruppo { margin: 12px 10px 4px; font-size: 0.7rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--side-muted); opacity: 0.75; }
.nav-gruppo:first-child { margin-top: 0; }
@media (max-width: 860px) { .nav-gruppo { display: none; } }
.h3 { font-size: 1rem; font-weight: 800; margin-top: 8px; }

/* editor della sala */
.sale-tab { display: flex; gap: 6px; flex-wrap: wrap; }
.sale-tab button { border: 1.5px solid var(--line); background: var(--surface); color: var(--ink); border-radius: 999px; padding: 7px 14px; font: 700 0.9rem var(--font-body); cursor: pointer; }
.sale-tab button[aria-selected="true"] { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.ed-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--line); }
.ed-pianta { position: relative; width: 100%; min-width: 720px; aspect-ratio: 48 / 30; background-color: var(--surface-2);
  background-image: linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size: calc(100% / 48) calc(100% / 30); touch-action: none; }
.ed-t { position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; border-radius: 10px; border: 2px solid var(--ink); background: var(--surface); color: var(--ink); cursor: grab; user-select: none; -webkit-user-select: none; touch-action: none; font-family: var(--font-body); }
.ed-t b { font-size: 1.05rem; font-weight: 800; line-height: 1; }
.ed-t small { font-size: 0.7rem; color: var(--muted); font-weight: 700; }
.ed-t.tondo { border-radius: 50%; }
.ed-t.occ { background: var(--warn-soft); }
.ed-t.sel { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent); z-index: 2; }
.ed-t:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.ed-t:active { cursor: grabbing; }
.ed-t .ridim { position: absolute; right: -7px; bottom: -7px; width: 16px; height: 16px; border-radius: 4px; background: var(--accent); border: 2px solid var(--surface); cursor: nwse-resize; touch-action: none; }
.ed-t:not(.sel) .ridim { display: none; }
.ed-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; padding: 12px; border-radius: 12px; background: var(--surface-2); border: 1px solid var(--line); }
.ed-form .field { min-width: 120px; flex: 1; }
.ed-form .btn-danger { flex: none; }
.stime { display: flex; flex-direction: column; gap: 8px; }
.stime .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.stime ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 0.92rem; }

/* personale e dispositivi */
.pers-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pers-lista li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; gap: 8px 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.pers-lista li.spento { opacity: 0.6; }
.pers-lista b { font-size: 1rem; }
.pers-lista select, .pers-lista input { font: 600 0.88rem var(--font-body); padding: 6px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); }
.pers-lista .pin-riga { grid-column: 1 / -1; display: flex; gap: 8px; }
.pers-lista .pin-riga input { width: 120px; }
@media (max-width: 560px) { .pers-lista li { grid-template-columns: minmax(0, 1fr) auto; } }
.pers-nuova { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 0.8fr) auto; gap: 10px; align-items: end; }
@media (max-width: 640px) { .pers-nuova { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.disp-conta { font-weight: 700; }
.disp-codice { border: 2px dashed var(--accent); border-radius: 14px; padding: 16px; display: flex; flex-direction: column; gap: 10px; align-items: center; text-align: center; }
.codice-grande { font: 700 2.6rem var(--font-data); letter-spacing: 0.18em; }
.disp-qr { display: flex; gap: 16px; flex-wrap: wrap; justify-content: center; }
.disp-qr figure { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; font-weight: 700; font-size: 0.85rem; }
.disp-qr .qr { width: 140px; height: 140px; background: #FFFFFF; padding: 6px; border-radius: 8px; }
.disp-qr .qr svg { width: 100%; height: 100%; display: block; }

/* magazzino */
.mag-tabs { align-self: flex-start; }
.mag-filtri { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.mag-filtri input[type="search"] { min-width: 220px; }
.mag-tbl tr { cursor: pointer; }
.mag-tbl tr:hover td { background: var(--surface-2); }
.mag-tbl .basso { color: var(--bad); font-weight: 800; }
.mag-tbl small { display: block; color: var(--muted); font-size: 0.78rem; }
.ric-cat { margin: 6px 0 2px; font-size: 0.85rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.ric-riga { display: grid; grid-template-columns: minmax(0, 1fr) repeat(3, minmax(70px, auto)); gap: 4px 14px; align-items: center; width: 100%; padding: 9px 10px; border: 0; border-bottom: 1px solid var(--line); background: transparent; text-align: left; font: 500 0.92rem var(--font-body); color: var(--ink); cursor: pointer; }
.ric-riga:hover { background: var(--surface-2); }
.ric-riga span { font-family: var(--font-data); font-size: 0.85rem; text-align: right; }
.ric-riga .alto { color: var(--bad); font-weight: 700; }
.ric-riga .vuota { color: var(--muted); font-family: var(--font-body); }
.ric-riga small { display: block; color: var(--muted); }
@media (max-width: 560px) { .ric-riga { grid-template-columns: minmax(0, 1fr) auto; } .ric-riga span:nth-of-type(n+2) { display: none; } }
.mov-riga { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.mov-riga select, .mov-riga input { font: 500 0.9rem var(--font-body); padding: 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); min-width: 0; }
.mov-riga input { width: 120px; flex: 1; }
.dlg-largo { width: min(860px, calc(100% - 24px)); }
.inv-wrap { max-height: 55vh; overflow-y: auto; }
.inv-wrap input { width: 100px; font: 600 0.9rem var(--font-data); padding: 6px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }
.zone-tbl select { width: 100%; min-width: 150px; font: 500 0.9rem var(--font-body); padding: 7px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }
.zone-tbl td.u { white-space: nowrap; color: var(--muted); font-size: 0.85rem; padding-top: 12px; }
.zone-tbl td small { display: block; color: var(--muted); font-size: 0.76rem; margin-top: 2px; }

/* fornitori */
.forn-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.forn { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.forn.spento { opacity: 0.6; }
.forn h3 { font-size: 1.05rem; font-weight: 800; }
.forn p { font-size: 0.9rem; color: var(--muted); }
.forn .acts-r { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; }
.do-testo { display: flex; flex-direction: column; gap: 8px; }
.do-testo textarea { width: 100%; font: 500 0.92rem var(--font-body); padding: 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }

/* stampanti */
.st-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 12px; }
.st { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.st .grid2 { gap: 10px; }
.st .esito-st { font-size: 0.85rem; font-weight: 700; }
.st .esito-st.ok { color: var(--ok); }
.st .esito-st.ko { color: var(--bad); }
.st .acts-r { display: flex; gap: 8px; flex-wrap: wrap; }

/* PC del locale */
.pc-punti { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.pc-codice { font: 700 2.2rem var(--font-data); letter-spacing: 0.12em; }
.pc-passi { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 6px; }
.pc-passi code { font-family: var(--font-data); background: var(--surface-2); padding: 1px 6px; border-radius: 5px; }
.stato-pc { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; }
.stato-pc::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--muted); }
.stato-pc.ok::before { background: var(--ok); }
.stato-pc.ko::before { background: var(--bad); }
.ed-vuoto { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-weight: 700; margin: 0; }
.ric-testa, .ric-testa:hover { cursor: default; background: transparent; font-weight: 700; color: var(--muted); font-size: 0.8rem; }
.ric-testa span { font-family: var(--font-body); font-size: 0.8rem; }
@media (min-width: 861px) { .nav a { padding: 8px 10px; } }

/* fatture dei fornitori */
.fa-scelte { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 560px) { .fa-scelte { grid-template-columns: minmax(0, 1fr); } }
.fa-scelta { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 18px; border: 2px dashed var(--line); border-radius: 14px; background: var(--surface-2); cursor: pointer; }
.fa-scelta:hover, .fa-scelta:focus-within { border-color: var(--accent); }
.fa-scelta b { font-size: 1.08rem; }
.fa-scelta span { color: var(--muted); font-size: 0.9rem; }
.fa-scelta input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.fa-lettura::before { content: ""; display: inline-block; width: 14px; height: 14px; margin-right: 8px; border-radius: 50%; border: 2px solid var(--line); border-top-color: var(--accent); vertical-align: -2px; animation: gira .8s linear infinite; }
@keyframes gira { to { transform: rotate(360deg); } }
.fa-coda { font-weight: 800; color: var(--muted); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; }
.fa-testa { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 14px; align-items: start; }
@media (max-width: 640px) { .fa-testa { grid-template-columns: minmax(0, 1fr); } }
.fa-dati { display: grid; grid-template-columns: max-content 1fr; gap: 3px 12px; margin: 0; font-size: 0.9rem; }
.fa-dati dt { color: var(--muted); font-weight: 700; }
.fa-dati dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.fa-righe { display: flex; flex-direction: column; gap: 8px; max-height: 52vh; overflow-y: auto; padding-right: 2px; }
.fa-riga { border: 1.5px solid var(--line); border-radius: 12px; padding: 10px 12px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 8px 14px; align-items: center; background: var(--surface); }
.fa-riga.off { opacity: 0.55; background: var(--surface-2); }
.fa-riga.manca { border-color: var(--bad); }
.fa-riga .chk { align-items: flex-start; }
.fa-riga .chk span b { display: block; font-weight: 700; }
.fa-riga .chk span small { display: block; color: var(--muted); font-size: 0.8rem; }
.fa-riga select, .fa-riga input:not([type="checkbox"]) { font: 500 0.9rem var(--font-body); padding: 7px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); min-width: 0; width: 100%; }
.fa-conv { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; font-size: 0.88rem; }
.fa-conv input { width: 84px; font-family: var(--font-data); }
.fa-conv .ris { font-weight: 800; }
.fa-nuovo { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 8px; }
.fa-badge { font-size: 0.72rem; font-weight: 800; padding: 2px 7px; border-radius: 6px; background: var(--surface-2); color: var(--muted); }
.fa-badge.ok { background: var(--ok-soft); color: var(--ok); }
.fa-badge.warn { background: var(--warn-soft); color: var(--warn); }
@media (max-width: 640px) { .fa-riga { grid-template-columns: minmax(0, 1fr); } }

/* ingredienti tolti dal cliente: evidenti */
.ord-righe .senza { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 5px; background: var(--bad); color: var(--surface); font-weight: 800; font-size: 0.78rem; letter-spacing: 0.02em; }

/* layout delle stampe */
.lay-wrap { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: start; }
@media (max-width: 900px) { .lay-wrap { grid-template-columns: minmax(0, 1fr); } }
.lay-form { display: flex; flex-direction: column; gap: 10px; }
.lay-riga { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--line); }
.lay-riga > span { font-weight: 700; font-size: 0.92rem; }
.lay-riga .segm label { padding: 5px 9px; font-size: 0.8rem; }
.lay-riga textarea { grid-column: 1 / -1; width: 100%; font: 500 0.9rem var(--font-data); padding: 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }
.lay-anteprima { display: flex; flex-direction: column; gap: 10px; align-items: center; position: sticky; top: 12px; }
.scontrino { background: #FFFFFF; color: #111111; font: 500 12.5px/1.35 "JetBrains Mono", ui-monospace, Consolas, monospace; padding: 16px 12px 26px; border-radius: 4px; box-shadow: 0 8px 26px rgba(0, 0, 0, .18);
  background-image: linear-gradient(135deg, transparent 75%, var(--bg) 75%), linear-gradient(225deg, transparent 75%, var(--bg) 75%); background-size: 10px 10px; background-position: bottom left; background-repeat: repeat-x; overflow: hidden; }
.scontrino div { white-space: pre; min-height: 1.35em; }
.scontrino .c { text-align: center; }
.scontrino .b { font-weight: 800; }
.scontrino .u span { text-decoration: underline; }
.scontrino .i span { background: #111111; color: #FFFFFF; }
.scontrino .h { font-size: 12.5px; transform: scaleY(1.9); transform-origin: top; margin-bottom: 1.2em; }
.scontrino .g { font-size: 25px; line-height: 1.3; }
.fa-riga .fa-conv input { width: 96px; flex: none; font-family: var(--font-data); }

/* ---------------------------------------------------------------- v4.2: prenotazioni e cassa */
.btn.small, .btn-sec.small, .btn-danger.small { padding: 6px 10px; font-size: 0.84rem; border-radius: 8px; }
.tbl-az { display: flex; gap: 6px; flex-wrap: wrap; }
.tbl tr.spento td { opacity: 0.55; }
.tbl td.num { font-family: var(--font-data); white-space: nowrap; }
.pr-giorni { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.pr-g { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 8px 10px; border-radius: 10px; border: 1.5px solid var(--line); background: var(--surface-2); cursor: pointer; text-align: left; font: inherit; color: var(--ink); min-width: 0; }
.pr-g small { color: var(--muted); font-weight: 700; text-transform: uppercase; font-size: 0.72rem; letter-spacing: 0.04em; }
.pr-g b { font-size: 1.3rem; font-weight: 800; line-height: 1.1; }
.pr-g span { font-size: 0.8rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.pr-g em { font-style: normal; font-size: 0.74rem; font-weight: 800; color: var(--warn); }
.pr-g.on { border-color: var(--ink); background: var(--surface); box-shadow: inset 0 0 0 1px var(--ink); }
.pr-g.da { border-color: var(--warn); }
.pr-sale { display: flex; gap: 14px; flex-wrap: wrap; }
.pill.st-richiesta, .pill.st-attesa, .pill.sc-da_emettere, .pill.sc-in_corso { background: var(--warn-soft); color: var(--warn); }
.pill.st-confermata, .pill.st-offerta { background: var(--info-soft, #E5EEFA); color: var(--info, #1E5FB0); }
.pill.st-arrivata, .pill.st-completata, .pill.sc-emesso, .pill.sc-a_mano { background: var(--ok-soft); color: var(--ok); }
.pill.st-annullata, .pill.st-noshow, .pill.st-scaduta { background: var(--surface-2); color: var(--muted); }
.pill.sc-errore, .pill.sc-incerto { background: var(--bad-soft); color: var(--bad); }
.ca-driver { display: flex; flex-direction: column; gap: 8px; }
.ca-opz { padding: 10px 12px; border: 1.5px solid var(--line); border-radius: 10px; align-items: center; }
.ca-opz:has(input:checked) { border-color: var(--ink); background: var(--surface-2); }
.ca-avanzate summary { cursor: pointer; font-weight: 700; padding: 6px 0; }
.ca-avanzate .zone-tbl input { max-width: 90px; }
#caReparti input { max-width: 90px; }
.ca-riep { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.ca-col { display: flex; flex-direction: column; gap: 4px; }
.ca-col h3 { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); margin-bottom: 4px; }
.ca-col div { display: flex; justify-content: space-between; gap: 10px; font-size: 0.92rem; border-bottom: 1px dashed var(--line); padding: 3px 0; }
.ca-col b { font-family: var(--font-data); }
@media (max-width: 900px) { .pr-giorni { grid-template-columns: repeat(4, minmax(0, 1fr)); } .ca-riep { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 520px) { .pr-giorni { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
:root { --info: #1E5FB0; --info-soft: #E5EEFA; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --info: #6AA6EE; --info-soft: #172A40; } }
:root[data-theme="dark"] { --info: #6AA6EE; --info-soft: #172A40; }
#caRtEpson:not([hidden]), #caRtOpz:not([hidden]), #caSumup:not([hidden]), #caPonte:not([hidden]) { display: flex; flex-direction: column; gap: 12px; }
