:root{--sfondo:#f6f7f9;--carta:#fff;--testo:#1d2330;--tenue:#6b7385;--bordo:#d9dde5;--accento:#1f5fbf;--festa:#eef1f6;--M:#e3f0ff;--P:#fff4d6;--N:#2f3b52;--SN:#d5d9e2;--F:#e5f5e8;--ko:#c62828;--ok:#2e7d32;color:var(--testo);background:var(--sfondo);font-family:system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}.app{padding:12px 16px 32px}.testata{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-bottom:12px;display:flex}.testata h1{margin:0;font-size:20px}.mese{gap:6px;display:flex}.mese select,.mese input{padding:4px 6px;font-size:15px}.mese input{width:80px}.schede{gap:4px;display:flex}button{font:inherit;border:1px solid var(--bordo);background:var(--carta);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:14px}button:hover{border-color:var(--accento)}.schede button.attiva{background:var(--accento);color:#fff;border-color:var(--accento)}.genera{background:var(--accento);color:#fff;border-color:var(--accento);margin-left:auto;font-weight:600}.genera:disabled{opacity:.7;cursor:wait}.piccolo{padding:2px 8px;font-size:12px}.pannello{background:var(--carta);border:1px solid var(--bordo);border-radius:8px;padding:12px}.errore{color:var(--ko);font-weight:600}.nota{color:var(--tenue);font-size:13px}.vuoto{color:var(--tenue);padding:24px}.impostazioni{grid-template-columns:minmax(280px,1fr) minmax(320px,1fr);gap:24px;display:grid}.impostazioni h2{margin:4px 0 8px;font-size:16px}.campi{flex-wrap:wrap;gap:16px;display:flex}.campi label{color:var(--tenue);flex-direction:column;font-size:13px;display:flex}.campi input{width:80px;padding:4px;font-size:18px}.regole{padding-left:18px;line-height:1.9}.regole input[type=number]{width:56px;margin:0 6px}.elenco{border-collapse:collapse;width:100%}.elenco td,.elenco th{border-bottom:1px solid var(--bordo);text-align:left;padding:3px 6px}.elenco input:not([type]){width:100%;padding:3px 5px;font-size:14px}.azioni{gap:8px;margin-top:10px;display:inline-flex}@media (width<=760px){.impostazioni{grid-template-columns:1fr}}.legenda{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;font-size:13px;display:flex}.cod{text-align:center;border-radius:4px;min-width:22px;margin-left:8px;padding:1px 4px;font-weight:600;display:inline-block}.scorri{max-height:calc(100vh - 170px);overflow:auto}.griglia{border-collapse:separate;border-spacing:0;font-size:13px}.griglia th,.griglia td{border-right:1px solid var(--bordo);border-bottom:1px solid var(--bordo);text-align:center}.griglia thead th{background:var(--carta);z-index:2;position:sticky;top:0}.griglia .giorno{background:var(--carta);text-align:left;white-space:nowrap;z-index:1;padding:2px 8px;font-weight:500;position:sticky;left:0}.griglia thead .giorno{z-index:3}.griglia th.nome{vertical-align:bottom;width:34px;min-width:34px;height:110px;padding:4px 0}.griglia th.nome span{writing-mode:vertical-rl;white-space:nowrap;font-weight:600;transform:rotate(180deg)}.griglia .cella{cursor:pointer;-webkit-user-select:none;user-select:none;width:34px;min-width:34px;height:24px;font-weight:600;position:relative}.griglia.turni .cella{cursor:default}.griglia tr.festa td{background-color:var(--festa)}.griglia tr.festa .giorno{background:var(--festa);color:var(--ko)}.griglia tr.prima td{border-bottom:2px solid var(--testo);color:var(--tenue);font-style:italic}.griglia .conta{width:30px;color:var(--tenue)}.griglia .conta.manca,.griglia .manca{color:var(--ko);font-weight:700}.griglia tfoot td{background:var(--sfondo);font-weight:600}.griglia tfoot .giorno{background:var(--sfondo)}.des-L{outline-offset:-4px;color:#4a5468;outline:2px dashed #8a93a6}.des-M{outline-offset:-4px;outline:2px dashed #6f9ad8;background:var(--M)!important}.des-P{outline-offset:-4px;outline:2px dashed #d8b24a;background:var(--P)!important}.des-N{color:#fff;outline-offset:-4px;outline:2px dashed #8fa0c4;background:var(--N)!important}.des-F{color:var(--ok);background:var(--F)!important}.cod-M{background:var(--M)!important}.cod-P{background:var(--P)!important}.cod-N{color:#fff;background:var(--N)!important}.cod-SN{color:#4a5468;background:var(--SN)!important;font-weight:500!important}.cod-F{color:var(--ok);background:var(--F)!important}.cella.ok:after,.cella.ko:after{font-size:9px;line-height:1;position:absolute;top:0;right:1px}.cella.ok:after{content:"✓";color:var(--ok)}.cella.ko:after{content:"✗";color:var(--ko);font-size:11px;font-weight:900}.cella.ko{box-shadow:inset 0 0 0 2px var(--ko)}.cod-N.ok:after{color:#9be3a2}.esito{flex-wrap:wrap;align-items:center;gap:8px 20px;margin-bottom:8px;display:flex}.esito .azioni{margin:0 0 0 auto}@media print{@page{size:A4 landscape;margin:8mm}:root{--M:#fff;--P:#e6e6e6;--N:#555;--SN:#cfcfcf;--F:#fff;--festa:#f0f0f0}body{background:#fff}.testata,.esito .azioni,.nota,.legenda{display:none!important}.pannello{border:none;padding:0}.scorri{max-height:none;overflow:visible}.griglia{font-size:11pt}.griglia .cella{width:auto;min-width:0;height:auto}.griglia th.nome{width:auto;min-width:0;height:90px}.griglia thead th,.griglia .giorno{position:static}.cella.ok:after,.cella.ko:after{display:none}.cella.ko{box-shadow:none}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.regole-extra .nota{max-width:900px}.lista-regole{flex-direction:column;gap:8px;max-width:1000px;margin:12px 0;padding:0;list-style:none;display:flex}.regola{border:1px solid var(--bordo);border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.regola .badge{background:var(--sfondo);border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-weight:800;display:grid}.regola.stato-integrata .badge{background:var(--F);color:var(--ok)}.regola.stato-non_integrata .badge,.regola.stato-errore .badge{color:var(--ko);background:#fde8e8}.regola.stato-ambigua .badge{background:var(--P);color:#8a6100}.regola .corpo{flex-direction:column;flex:1;gap:4px;display:flex}.regola .corpo input{border:1px solid #0000;border-radius:4px;padding:4px 6px;font-size:15px}.regola .corpo input:hover,.regola .corpo input:focus{border-color:var(--bordo)}.esito-regola{color:var(--tenue);font-size:13px}.regola.stato-integrata .esito-regola strong{color:var(--ok)}.interruttore{white-space:nowrap;font-size:13px}.nuova-regola{gap:8px;max-width:1000px;display:flex}.nuova-regola input{flex:1;padding:6px 8px;font-size:15px}.nuova-regola .genera{margin-left:0}.da-aggiungere{border-top:1px solid var(--bordo);margin-top:20px}.da-aggiungere h2{font-size:15px}.elenco input.etichette{width:130px;padding:3px 5px;font-size:13px}.controllo{border-radius:8px;margin-bottom:8px;padding:8px 12px;font-size:14px}.controllo.ok{background:var(--F)}.controllo.ko{background:#fdecec}.controllo ul{columns:2;margin:6px 0 2px;padding-left:20px}.griglia.in-modifica .cella{cursor:pointer}.griglia.in-modifica .cella:hover{box-shadow:inset 0 0 0 2px var(--accento)}.cella.a-mano{box-shadow:inset 0 0 0 3px var(--accento)!important}.cella.da-proposta{box-shadow:inset 0 0 0 3px #e08a00!important}.menu-codici{z-index:10;background:var(--carta);border:1px solid var(--bordo);color:var(--testo);border-radius:6px;gap:2px;padding:4px;font-weight:500;display:flex;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000026}.menu-codici button{white-space:nowrap;padding:3px 7px;font-size:13px}.menu-codici button.attiva{background:var(--accento);color:#fff}@media print{.controllo{display:none}}.orologio{align-items:center;gap:6px;display:inline-flex}.orologio .lancetta{transform-origin:12px 12px;animation:1s linear infinite gira}@keyframes gira{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.orologio .lancetta{animation-duration:4s}}.orario{gap:4px;display:flex}.campi .orario input{width:56px;font-size:16px}.campi small{color:var(--tenue)}.elenco input.saldo{width:70px;padding:3px 5px;font-size:13px}.cella.errore-cella{box-shadow:inset 0 0 0 3px var(--ko)!important}.cella.errore-cella:before{content:"!";color:var(--ko);font-size:10px;font-weight:900;position:absolute;top:0;left:2px}.cella.avviso-cella{box-shadow:inset 0 0 0 2px #e0a800}.cella.forzata:before{content:"★";color:var(--accento);font-size:9px;position:absolute;bottom:0;left:1px}.menu-codici .separatore{background:var(--bordo);width:1px;margin:0 2px}.controllo .avvisi{color:#8a6100}.qualita{color:var(--tenue);font-size:13px}
