:root{--red:#b51c23;--red-dark:#8f151b;--red-soft:#fff1f2;--border:#ead1d3;--text:#202326;--muted:#67717e;--green:#22863a;--amber:#d98b00;--bg:#f6f3f3;--shadow:0 10px 28px rgba(56,19,22,.09)}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg)}body{min-height:100vh}a{text-decoration:none;color:inherit}.topbar{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:3px solid var(--red);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 14px;box-shadow:0 3px 12px rgba(0,0,0,.06)}.brand-row{display:flex;align-items:center;gap:14px;min-width:0}.brand-row h1{font-size:21px;color:var(--red);margin:0;white-space:nowrap}.brand-row small{font-size:10px;color:#48515b}.sti-brand{display:flex;align-items:center;gap:8px}.sti-brand .sti-mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--red);color:#fff;font-size:27px;font-weight:950;transform:skew(-12deg);border-radius:5px}.sti-brand>div{display:flex;flex-direction:column;line-height:1}.sti-brand strong{font-size:20px}.sti-brand small{font-size:6px;color:#555;margin-top:3px}.sti-brand.compact .sti-mark{width:34px;height:34px;font-size:22px}.sti-brand.compact strong{font-size:18px}.topbar nav{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.btn,.primary,.secondary{border:1px solid var(--border);border-radius:8px;padding:9px 13px;font-weight:900;font-size:12px;cursor:pointer;background:#fff;color:var(--red)}.primary{background:var(--red);color:#fff;border-color:var(--red-dark)}.btn.green{background:#188638;color:#fff;border-color:#14702f}.btn.danger{background:var(--red);color:#fff}.btn.light{background:#fff}.full{width:100%}.version-badge{font-size:9px;color:#4f5964;background:#edf0f3;padding:3px 6px;border-radius:999px;vertical-align:middle}main{padding:14px}.tabs{display:flex;gap:8px;margin-bottom:12px}.tab{background:#fff;border:1px solid var(--border);padding:10px 14px;border-radius:9px;color:#8f5a5d;font-size:12px;font-weight:900}.tab.active{background:var(--red);border-color:var(--red-dark);color:#fff}.kpis{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;margin-bottom:12px}.kpi{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 15px;box-shadow:var(--shadow);display:flex;align-items:baseline;gap:9px}.kpi strong{font-size:26px;color:#19733a}.kpi span{font-size:11px;font-weight:900;color:#4b5661}.kpi.red strong{color:#bd1e27}.kpi.amber strong{color:#c97900}.kpi.muted strong{color:#69727c}.filters{display:grid;grid-template-columns:2fr repeat(5,minmax(130px,1fr)) auto auto;gap:8px;align-items:end;background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px;margin-bottom:10px}.filters label,.edit-form label,.admin-user-form label,.login-card label,.install-card label{display:flex;flex-direction:column;gap:5px;font-size:10px;font-weight:900;color:#4c2225}.filters input,.filters select,input,select,textarea{width:100%;padding:9px 10px;border:1px solid #d7c7c8;border-radius:8px;background:#fff;color:#1f2933;outline:none}.filters input:focus,.filters select:focus,input:focus,select:focus,textarea:focus{border-color:var(--red);box-shadow:0 0 0 2px rgba(181,28,35,.12)}.table-meta{font-size:11px;color:#65707c;margin:7px 3px}.table-meta span{margin:0 5px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow);max-height:calc(100vh - 270px)}.schedule{border-collapse:separate;border-spacing:0;min-width:1900px;width:100%;font-size:10px}.schedule th{position:sticky;top:0;z-index:5;background:var(--red);color:#fff;border-right:1px solid #841219;border-bottom:1px solid #841219;padding:9px 7px;text-align:center;white-space:nowrap}.schedule td{padding:8px 7px;border-right:1px solid #e1dadd;border-bottom:1px solid #e1dadd;text-align:center;vertical-align:middle;background:#fff;max-width:220px}.schedule tr:nth-child(even) td{background:#fffafa}.schedule tr.row-out td{color:#7b8189;background:#f2f3f4}.schedule tr.row-overdue td{background:#fff4f4}.schedule tr.row-due30 td{background:#fff8ea}.schedule tr.row-due90 td{background:#fffcf1}.schedule .code{font-weight:900;color:#7c151a}.status{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:900;white-space:nowrap}.status.on{background:#e5f4e9;color:#166a31}.status.off{background:#eceff1;color:#687078}.due-cell{font-weight:850;white-space:nowrap}.due-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.due-dot.overdue{background:#d51e28}.due-dot.due30{background:#ec9700}.due-dot.due90{background:#e6c000}.due-dot.ok{background:#2b9a4b}.due-dot.none,.due-dot.out{background:#a7afb8}.edit-link{display:inline-block;background:#fff0f1;color:var(--red);border:1px solid #efc0c4;border-radius:6px;padding:5px 7px;font-weight:900}.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:radial-gradient(circle at 15% 20%,#f4cfd2 0,transparent 32%),radial-gradient(circle at 90% 80%,#f1d7d9 0,transparent 32%),linear-gradient(135deg,#fffafa,#f6eeee)}.login-card,.install-card{width:min(460px,96vw);background:rgba(255,255,255,.96);border:1px solid var(--border);border-top:5px solid var(--red);border-radius:18px;box-shadow:0 20px 55px rgba(81,22,27,.18);padding:24px}.install-card{width:min(720px,96vw)}.login-sti{justify-content:center;margin-bottom:8px}.login-card h1,.install-card h1{text-align:center;color:var(--red);font-size:24px;margin:9px 0 6px}.login-brand-tagline{display:flex;justify-content:center;align-items:center;gap:8px;font-size:9px;font-weight:900;color:#837174;margin-bottom:18px}.login-brand-tagline i{color:var(--red)}.login-card form{display:flex;flex-direction:column;gap:12px}.login-captcha-box{background:#fff8f8;border:1px solid #efcdd0;border-radius:12px;padding:11px}.login-captcha-head{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.login-captcha-head strong{color:var(--red);font-size:10px}.login-captcha-head span{font-size:9px;color:#69727b}.login-captcha-image-row{display:flex;gap:8px;align-items:center}.login-captcha-image{width:220px;max-width:calc(100% - 52px);height:70px;object-fit:contain;border:1px solid #e6d3d4;border-radius:8px;background:#fff}.login-captcha-refresh{height:42px;width:42px;padding:0;font-size:20px}.login-captcha-label{margin-top:8px}.notice{border-radius:9px;padding:10px 12px;font-size:11px;font-weight:800;margin:10px 0}.notice.error{background:#fff0f1;color:#a3151c;border:1px solid #efb9bd}.notice.ok{background:#ebf8ef;color:#176e34;border:1px solid #b9e0c4}.install-grid,.edit-form,.admin-user-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.wide{grid-column:1/-1}.section-title,.form-title{grid-column:1/-1;font-size:12px;font-weight:950;color:var(--red);border-bottom:1px solid var(--border);padding:8px 0}.install-note{text-align:center;color:#6e777f;font-size:10px}.form-page,.admin-page{max-width:1100px;margin:0 auto}.edit-form,.admin-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:var(--shadow)}.form-actions{display:flex;justify-content:flex-end;gap:8px}.admin-page{display:grid;gap:14px}.admin-card h2{margin:0 0 12px;color:var(--red);font-size:17px}.admin-user-form{grid-template-columns:repeat(5,minmax(0,1fr));align-items:end}.user-list{display:flex;flex-direction:column;gap:7px}.user-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;border:1px solid #eee1e2;border-radius:9px;padding:9px}.user-row>div{display:flex;flex-direction:column}.user-row small{color:#717b85;margin-top:2px}@media(max-width:1100px){.filters{grid-template-columns:repeat(3,1fr)}.kpis{grid-template-columns:repeat(2,1fr)}.table-wrap{max-height:none}.topbar{position:relative}.schedule th{position:static}}@media(max-width:700px){main{padding:8px}.topbar{align-items:flex-start;flex-direction:column}.topbar nav{width:100%}.brand-row h1{font-size:17px}.filters{grid-template-columns:1fr 1fr}.kpis{grid-template-columns:1fr 1fr}.tabs{overflow-x:auto}.tab{white-space:nowrap}.edit-form,.install-grid,.admin-user-form{grid-template-columns:1fr}.wide,.section-title,.form-title{grid-column:1}.login-card,.install-card{padding:17px}.user-row{grid-template-columns:1fr auto}.user-row form{grid-column:1/-1}.schedule{font-size:9px}}

/* v0.1.2 - filtri Excel e manutenzione */
.column-filter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--border);border-radius:11px;padding:8px 10px;margin:0 0 8px;box-shadow:var(--shadow)}
.column-filter-toolbar>div:first-child{display:flex;flex-direction:column;gap:2px}.column-filter-toolbar strong{font-size:11px;color:var(--red)}.column-filter-toolbar span{font-size:9px;color:var(--muted)}.column-filter-toolbar>div:last-child{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.column-filter-form{margin:0}.schedule thead tr.filter-row th{top:32px;background:#fff5f5;padding:4px 3px;border-bottom:2px solid var(--red);z-index:6}.schedule thead tr:first-child th{height:32px}.col-filter-control{width:100%;min-width:82px;height:28px;padding:4px 5px!important;border:1px solid #dfc9cb!important;border-radius:5px!important;font-size:9px!important;background:#fff!important;color:#27313b!important;font-weight:700}.filter-actions-cell{min-width:42px!important}.mini-filter-btn{border:0;border-radius:5px;background:var(--red);color:#fff;font-size:15px;width:30px;height:28px;cursor:pointer}.maintenance-page{max-width:1100px;margin:0 auto;display:grid;gap:14px;padding:14px}.maintenance-help{font-size:11px;color:#63707b;line-height:1.45;margin:0 0 12px}.pin-form,.update-upload-form,.backup-download-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end}.update-upload-form{grid-template-columns:2fr 1fr auto}.backup-download-form{grid-template-columns:minmax(180px,320px) auto}.maintenance-page label{display:flex;flex-direction:column;gap:5px;font-size:10px;font-weight:900;color:#4c2225}.update-history{display:flex;flex-direction:column;gap:8px}.update-history-row{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(250px,2fr) auto;gap:12px;align-items:start;border:1px solid #eedcde;border-radius:10px;padding:10px;background:#fffafa}.update-version{display:flex;flex-direction:column;gap:3px;color:var(--red)}.update-version small,.update-package{font-size:10px;color:#66717a}.update-package p{margin:5px 0 0;line-height:1.35}.history-actions{display:flex;gap:6px;align-items:flex-start}.history-actions form{display:flex;gap:5px}.pin-mini{width:72px!important;padding:6px!important;font-size:9px!important}.backup-list{display:grid;gap:7px}.backup-list>div{display:flex;justify-content:space-between;gap:12px;border:1px solid #eee1e2;border-radius:8px;padding:8px 10px;font-size:10px}.backup-list small{color:#6c7780}.empty-note{font-size:11px;color:#77818a;font-style:italic}code{background:#f4eded;padding:2px 5px;border-radius:4px;color:#7c151a}
@media(max-width:900px){.column-filter-toolbar{align-items:flex-start;flex-direction:column}.pin-form,.update-upload-form,.backup-download-form{grid-template-columns:1fr}.update-history-row{grid-template-columns:1fr}.history-actions{flex-wrap:wrap}.schedule thead tr.filter-row th{position:static}.schedule thead tr:first-child th{position:static}}
