:root{
  --navy:#102a43;--blue:#1666b1;--blue2:#0b75c9;--ink:#1f2937;--muted:#64748b;
  --bg:#f4f7fb;--card:#ffffff;--line:#dfe7f1;--green:#12805c;--amber:#b7791f;
  --red:#c53030;--purple:#6b46c1;--shadow:0 10px 28px rgba(16,42,67,.08);
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}
a{color:inherit;text-decoration:none}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.sidebar{background:linear-gradient(180deg,#0b233b 0%,#102f4f 100%);color:#fff;padding:24px 18px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:12px;margin:2px 8px 28px}.brand-mark{width:42px;height:42px;border-radius:12px;background:#fff;color:var(--blue);display:grid;place-items:center;font-weight:800;letter-spacing:-1px}.brand h1{font-size:17px;margin:0}.brand small{display:block;color:#b9c8d8;margin-top:3px}
.nav{display:flex;flex-direction:column;gap:7px}.nav a{padding:11px 13px;border-radius:10px;color:#d8e4ef;font-size:14px;display:flex;gap:10px;align-items:center}.nav a:hover,.nav a.active{background:rgba(255,255,255,.12);color:#fff}.nav .icon{width:22px;text-align:center}
.sidebar-foot{position:absolute;bottom:22px;left:18px;right:18px;color:#afc1d2;font-size:12px;line-height:1.45}
.main{min-width:0}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 30px;position:sticky;top:0;z-index:10}.topbar h2{font-size:20px;margin:0}.topbar .date{font-size:13px;color:var(--muted)}
.content{padding:26px 30px 50px;max-width:1500px;margin:auto}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.page-head h3{font-size:26px;margin:0 0 6px;color:var(--navy)}.page-head p{margin:0;color:var(--muted);font-size:14px}
.actions{display:flex;gap:9px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;padding:10px 14px;font-weight:650;font-size:13px;cursor:pointer;background:#eaf1f8;color:var(--navy)}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--blue);color:#fff}.btn.danger{background:#fff0f0;color:var(--red)}.btn.success{background:#e7f7f1;color:var(--green)}.btn.small{padding:7px 10px;font-size:12px}
.kpis{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:15px;margin-bottom:18px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:var(--shadow)}.kpi .label{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.kpi .value{font-size:31px;font-weight:800;color:var(--navy);margin:9px 0 5px}.kpi .hint{font-size:12px;color:var(--muted)}.kpi.red{border-top:4px solid var(--red)}.kpi.amber{border-top:4px solid #dd9d24}.kpi.green{border-top:4px solid var(--green)}.kpi.blue{border-top:4px solid var(--blue)}.kpi.purple{border-top:4px solid var(--purple)}
.grid-2{display:grid;grid-template-columns:1.25fr .75fr;gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);overflow:hidden}.card-head{padding:17px 19px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.card-head h4{margin:0;color:var(--navy);font-size:16px}.card-body{padding:18px 19px}.card.no-overflow{overflow:visible}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{background:#f7f9fc;color:#536579;text-transform:uppercase;letter-spacing:.04em;font-size:11px;padding:11px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:11px 12px;border-bottom:1px solid #edf1f6;vertical-align:middle}.table tr:hover td{background:#fafcff}.table tr:last-child td{border-bottom:0}.table .name{font-weight:700;color:var(--navy)}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:750;white-space:nowrap}.badge.scaduto{background:#fdeaea;color:#a61b1b}.badge.in-scadenza{background:#fff5db;color:#8a5b00}.badge.valido{background:#e5f6ef;color:#096647}.badge.mancante{background:#f0eafb;color:#5b38a3}.badge.da-verificare{background:#e8f1fb;color:#1d5e9d}.badge.non-richiesto{background:#edf1f5;color:#64748b}.badge.registrato{background:#e8f7fb;color:#0d7288}
.filters{display:flex;gap:10px;align-items:end;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:6px;min-width:160px;flex:1}.field.narrow{flex:0 0 170px}.field label{font-size:11px;font-weight:750;color:#5a6b7d;text-transform:uppercase;letter-spacing:.04em}.input,.select,.textarea{width:100%;border:1px solid #ccd7e3;border-radius:9px;padding:10px 11px;background:#fff;color:var(--ink);font:inherit;font-size:13px;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:#72aee3;box-shadow:0 0 0 3px rgba(22,102,177,.1)}.textarea{min-height:90px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:span 3}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.progress-row{display:grid;grid-template-columns:150px 1fr 42px;align-items:center;gap:12px;margin:12px 0;font-size:12px}.bar{height:10px;background:#edf2f7;border-radius:99px;overflow:hidden}.bar>span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#1c75bc,#52a5df)}
.donut-wrap{display:flex;align-items:center;justify-content:center;gap:28px;padding:8px 0}.donut{width:170px;height:170px;border-radius:50%;position:relative;background:conic-gradient(#c53030 0 var(--p1),#d99a24 var(--p1) var(--p2),#6b46c1 var(--p2) var(--p3),#1666b1 var(--p3) var(--p4),#12805c var(--p4) 100%)}.donut:after{content:"";position:absolute;inset:30px;background:#fff;border-radius:50%}.donut-center{position:absolute;inset:0;z-index:2;display:grid;place-content:center;text-align:center}.donut-center strong{font-size:28px;color:var(--navy)}.donut-center span{font-size:11px;color:var(--muted)}.legend{display:grid;gap:9px;font-size:12px}.legend div{display:flex;align-items:center;gap:8px}.dot{width:10px;height:10px;border-radius:50%}
.notice{border-radius:11px;padding:12px 14px;margin-bottom:16px;font-size:13px}.notice.ok{background:#e7f7f1;color:#0b6649;border:1px solid #bce6d6}.notice.error{background:#fff0f0;color:#9d2424;border:1px solid #f1caca}.notice.info{background:#eaf3fb;color:#235f91;border:1px solid #c8def0}.notice.warning{background:#fff8e6;color:#805b10;border:1px solid #efd79a}
.empty{text-align:center;padding:35px 15px;color:var(--muted)}.muted{color:var(--muted)}.mono{font-family:Consolas,monospace}.right{text-align:right}.nowrap{white-space:nowrap}.section-title{font-size:14px;color:var(--navy);margin:0 0 12px}.person-head{display:flex;gap:18px;align-items:center}.avatar{width:58px;height:58px;border-radius:15px;background:linear-gradient(135deg,#1666b1,#5ba3db);color:#fff;display:grid;place-items:center;font-weight:800;font-size:20px}.person-meta h3{margin:0 0 4px;font-size:22px}.person-meta p{margin:0;color:var(--muted);font-size:13px}
.filebox{border:1px dashed #b8c8d8;border-radius:12px;padding:18px;text-align:center;background:#f9fbfd}.statline{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #edf1f5;font-size:13px}.statline:last-child{border-bottom:0}.statline span:first-child{color:var(--muted)}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,1fr)}.form-grid .span-3{grid-column:span 2}}
@media(max-width:760px){.layout{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar-foot{display:none}.nav{display:grid;grid-template-columns:repeat(3,1fr)}.brand{margin-bottom:15px}.topbar{padding:0 16px}.content{padding:18px 14px 40px}.kpis{grid-template-columns:repeat(2,1fr)}.page-head{flex-direction:column}.form-grid{grid-template-columns:1fr}.form-grid .span-2,.form-grid .span-3{grid-column:auto}.nav a{font-size:12px;padding:9px}.nav .icon{display:none}}
@media print{.sidebar,.topbar,.actions,.filters{display:none!important}.layout{display:block}.content{padding:0}.card,.kpi{box-shadow:none}}
.file-actions{display:flex;justify-content:center;margin-top:10px}.pdf-analysis{margin:0}.pdf-analysis ul{margin:10px 0 0 18px;padding:0}.analysis-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.analysis-grid>div{background:rgba(255,255,255,.62);border:1px solid rgba(16,42,67,.1);border-radius:9px;padding:10px}.analysis-grid span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;opacity:.72;margin-bottom:4px}.analysis-grid strong{font-size:14px}.analysis-note{margin-top:10px;font-size:12px}
@media(max-width:760px){.analysis-grid{grid-template-columns:1fr}}

.date-candidates{margin-top:12px;padding-top:10px;border-top:1px solid rgba(15,23,42,.12)}
.date-candidates>span{display:block;font-size:12px;font-weight:700;margin-bottom:7px}
.date-candidates>div{display:flex;flex-wrap:wrap;gap:7px}
.date-candidate{border:1px solid #94a3b8;background:#fff;border-radius:999px;padding:6px 10px;font-size:12px;cursor:pointer}
.date-candidate:hover,.date-candidate.selected{border-color:#0f766e;background:#ecfdf5;color:#065f46}


/* v1.8 - anteprima certificato e compilazione manuale */
.compact-notice{margin-bottom:12px}
.certificate-workspace{display:grid;grid-template-columns:minmax(420px,1.1fr) minmax(430px,.9fr);gap:18px;align-items:start}
.certificate-preview-panel,.certificate-entry-panel{border:1px solid var(--line);border-radius:14px;background:#fbfdff;padding:15px;min-width:0}
.workspace-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.workspace-head h4{margin:0;color:var(--navy);font-size:16px}.workspace-head p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.certificate-preview-shell{height:620px;min-height:420px;border:1px solid #cbd8e6;border-radius:12px;overflow:hidden;background:#e9eff5;position:relative}
.certificate-preview-frame{width:100%;height:100%;border:0;background:#fff;display:block}
.certificate-preview-image{width:100%;height:100%;object-fit:contain;background:#fff;display:block}
.preview-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:25px;color:var(--muted)}
.preview-empty strong{color:var(--navy);font-size:15px}.preview-empty span{max-width:330px;font-size:12px;line-height:1.5}
.preview-icon{width:62px;height:62px;border-radius:15px;background:#e4eef8;color:var(--blue);display:grid;place-items:center;font-weight:850;letter-spacing:.04em}
.preview-filebox{margin-top:12px;padding:14px}.file-select-label{display:block;font-size:12px;font-weight:750;color:var(--navy);margin-bottom:8px}
.certificate-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.certificate-fields .span-2{grid-column:span 2}.certificate-fields .span-3{grid-column:span 2}
.manual-mode-notice{border:1px solid #c9d9e8;background:#eef6fc;color:#315f83;border-radius:10px;padding:11px 12px;font-size:12px;line-height:1.45;margin-bottom:14px}
.manual-mode-notice.active{border-color:#e1b955;background:#fff8e4;color:#76540d;box-shadow:0 0 0 3px rgba(217,154,36,.08)}
.manual-highlight{border-color:#d99a24!important;box-shadow:0 0 0 3px rgba(217,154,36,.12)!important}
.auto-filled{border-color:#3a9b78!important;background:#f0fbf6!important}
.date-tools{display:flex;flex-direction:row;align-items:center;gap:10px;min-height:38px}.date-tools .btn{flex:0 0 auto}.date-tools .muted{font-size:11px}
@media(max-width:1180px){.certificate-workspace{grid-template-columns:1fr}.certificate-preview-shell{height:560px}.certificate-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.certificate-preview-panel,.certificate-entry-panel{padding:11px}.certificate-preview-shell{height:480px;min-height:360px}.workspace-head{flex-direction:column}.certificate-fields{grid-template-columns:1fr}.certificate-fields .span-2,.certificate-fields .span-3{grid-column:auto}.date-tools{flex-direction:column;align-items:stretch}.date-tools .btn{width:100%}}


/* v1.11 - filtri certificati e fascicolo multiplo */
.bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line);background:#f8fbfe}
.bulk-toolbar>div{display:flex;flex-direction:column;gap:3px}.bulk-toolbar strong{color:var(--navy);font-size:14px}.bulk-toolbar span{color:var(--muted);font-size:12px}
.select-cell{width:42px;text-align:center!important}.select-cell input{width:17px;height:17px;accent-color:var(--blue);cursor:pointer}
.deadline-certificate-filter{min-width:280px}.deadline-filters .field{flex:1 1 190px}.deadline-filters .field.narrow{flex:0 0 175px}
@media(max-width:760px){.bulk-toolbar{align-items:stretch;flex-direction:column}.bulk-toolbar .btn{width:100%}.deadline-certificate-filter{min-width:100%}}


/* v1.12 - aggiornamento visibile e filtro certificati */
.kpi-link{display:block;transition:transform .12s ease,box-shadow .12s ease}
.kpi-link:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(16,42,67,.13)}
.version-pill{display:inline-flex;align-items:center;border-radius:999px;padding:7px 10px;background:#e8f1fb;color:#1d5e9d;font-weight:800;font-size:12px}
.deadline-filter-notice{margin-top:-5px}
.certificate-type-select{border:2px solid #1666b1;background:#f6fbff;font-weight:650}
.deadline-certificate-filter label{color:#0f528c;font-size:12px}

/* v1.14 - login e utenti */
.login-body{min-height:100vh;display:grid;place-items:center;background:#eef3f8;padding:24px}.login-card{width:min(430px,100%);background:#fff;border:1px solid #d9e2ec;border-radius:18px;padding:30px;box-shadow:0 18px 50px rgba(16,42,67,.14)}.login-card h2{margin:26px 0 6px}.login-card p{color:#627d98;margin-top:0}.login-brand{padding-bottom:20px;border-bottom:1px solid #e6edf4}.login-submit{width:100%;justify-content:center;margin-top:18px}.login-foot{margin-top:24px;text-align:center;font-size:12px;color:#829ab1}.topbar-user{display:flex;align-items:center;gap:12px}.user-chip{display:flex;flex-direction:column;padding:7px 11px;background:#f3f6f9;border:1px solid #d9e2ec;border-radius:10px;line-height:1.15}.user-chip strong{font-size:12px}.user-chip span{font-size:10px;color:#627d98}.inline-form{display:inline}.muted{color:#829ab1;font-size:12px}@media(max-width:800px){.topbar-user .date{display:none}.user-chip{display:none}}

/* A2A corporate logo — v1.17 */
.brand-company{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin:0 6px 24px}
.sidebar-logo-wrap{background:#fff;border-radius:12px;padding:8px 9px;box-shadow:0 7px 18px rgba(0,0,0,.12)}
.sidebar-company-logo{display:block;width:100%;height:auto;max-height:78px;object-fit:contain}
.brand-copy{padding:0 5px}.brand-copy h1{font-size:18px;margin:0}.brand-copy small{display:block;color:#b9c8d8;margin-top:3px}
.login-logo-wrap{display:flex;justify-content:center;align-items:center;padding:4px 0 18px;border-bottom:1px solid #e6edf4}
.login-company-logo{display:block;width:min(330px,100%);height:auto;max-height:185px;object-fit:contain}
.login-product{text-align:center;margin-top:18px}.login-product h1{font-size:22px;color:var(--navy);margin:0 0 5px}.login-product small{font-size:12px;color:#627d98}
.login-card h2{margin-top:22px}
@media(max-width:760px){.brand-company{flex-direction:row;align-items:center}.sidebar-logo-wrap{width:128px;flex:0 0 128px}.sidebar-company-logo{max-height:52px}.brand-copy{padding:0}.login-company-logo{width:min(290px,100%)}}

/* v1.18 - Presenze / Clock In - Clock Out */
.kpis{grid-template-columns:repeat(6,minmax(135px,1fr))}
.kpi.teal{border-top:4px solid #0f8b8d}
.attendance-kpis{grid-template-columns:repeat(4,minmax(160px,1fr))}
.attendance-hours-value{font-size:25px!important;white-space:nowrap}
.attendance-clock-card{margin-bottom:18px;border-top:4px solid var(--green)}
.attendance-clock-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) 180px;gap:14px;align-items:end}
.attendance-main-action{height:42px;font-size:15px;font-weight:850;letter-spacing:.04em}
.btn.clock-in{background:#12805c;color:#fff}.btn.clock-in:hover{background:#0e6e4f}
.btn.clock-out{background:#c53030;color:#fff}.btn.clock-out:hover{background:#a92727}
.attendance-live-clock{font-size:29px;font-weight:850;letter-spacing:.04em;color:var(--navy);font-variant-numeric:tabular-nums}
.attendance-present-card{margin:18px 0}
.attendance-status-dot{font-size:11px;font-weight:850;color:var(--green);letter-spacing:.06em}
.badge.attendance-open{background:#e5f6ef;color:#096647}.badge.attendance-closed{background:#edf1f5;color:#536579}
.attendance-history-head{display:flex;justify-content:space-between;align-items:center;margin:25px 2px 11px}.attendance-history-head h4{margin:0;color:var(--navy);font-size:18px}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}.attendance-kpis{grid-template-columns:repeat(2,1fr)}.attendance-clock-grid{grid-template-columns:1fr 1fr}.attendance-main-action{grid-column:span 2}}
@media(max-width:760px){.kpis,.attendance-kpis{grid-template-columns:repeat(2,1fr)}.attendance-clock-grid{grid-template-columns:1fr}.attendance-main-action{grid-column:auto;height:50px}.attendance-live-clock{font-size:23px}.attendance-clock-card .card-head{align-items:flex-start;gap:10px}.attendance-present-card .table th:nth-child(4),.attendance-present-card .table td:nth-child(4){display:none}}

/* v1.19 - Tesserino QR */
.qr-btn{background:#e8f1fb;color:#1d5e9d}.employee-photo-thumb{width:58px;height:58px;border-radius:15px;object-fit:cover;border:2px solid #dbe7f1}
.id-card-wrap{display:flex;justify-content:center;margin:24px 0}.id-card{width:540px;max-width:100%;aspect-ratio:85.6/53.98;background:#fff;border:1px solid #c9d5de;border-radius:16px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}.id-card-head{height:26%;background:#0d2a43;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px}.id-card-head img{width:120px;max-height:50px;object-fit:contain}.id-card-head div{text-align:right}.id-card-head strong{display:block;font-size:13px}.id-card-head span{display:block;font-size:10px;opacity:.82;margin-top:2px}.id-card-body{flex:1;display:grid;grid-template-columns:27% 1fr 22%;gap:14px;padding:14px 16px;align-items:center}.badge-photo{width:100%;height:145px;object-fit:cover;border-radius:10px;border:1px solid #d7e1ea;background:#eef4f8}.badge-photo-missing{display:grid;place-items:center;text-align:center;color:#8a5b00;font-size:11px;font-weight:800}.id-card-data h2{font-size:19px;color:var(--navy);margin:0 0 2px}.id-card-data p{margin:0 0 10px;color:var(--muted);font-size:11px}.id-card-data label{display:block;color:#1766a6;font-size:8px;font-weight:800;text-transform:uppercase;margin-top:6px}.id-card-data strong{display:block;color:var(--navy);font-size:10.5px}.badge-qr{width:100%;aspect-ratio:1;object-fit:contain}.id-card-foot{display:flex;justify-content:space-between;padding:6px 16px;border-top:1px solid #e0e7ee;color:#64748b;font-size:8px}.scan-card{max-width:560px;margin:20px auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:24px}.scan-state{margin:22px 0 16px;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:4px}.scan-state strong{font-size:20px}.scan-state span{font-size:12px}.scan-state.present{background:#e5f6ef;color:#096647}.scan-state.out{background:#edf1f5;color:#536579}.scan-main-btn{width:100%;height:58px;font-size:18px;font-weight:850;margin-top:12px}
@media(max-width:760px){.id-card-body{grid-template-columns:25% 1fr 24%;gap:8px;padding:10px}.badge-photo{height:115px}.id-card-data h2{font-size:15px}.id-card-head img{width:95px}.id-card-head strong{font-size:10px}.scan-card{padding:18px}}


/* A2A Presenze / HR v1.20 */
.hr-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.hr-status.amber{background:#fff3d6;color:#8a5a00}.hr-status.green{background:#dcf7ea;color:#086647}.hr-status.red{background:#fde3e3;color:#9b1c1c}.hr-status.gray{background:#edf1f4;color:#5c6872}.hr-review{display:flex;gap:6px;align-items:center;min-width:360px}.hr-review .input{min-width:140px}.hr-month-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.emp-body{margin:0;background:#f3f6f9;color:#173042;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh;padding-bottom:76px}.emp-header{position:sticky;top:0;z-index:20;background:#0d2a43;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;box-shadow:0 2px 12px rgba(0,0,0,.16)}.emp-header-brand{display:flex;gap:10px;align-items:center}.emp-header-brand img{width:42px;height:42px;object-fit:contain;background:#fff;border-radius:9px;padding:4px}.emp-header-brand div{display:flex;flex-direction:column}.emp-header-brand strong{font-size:17px}.emp-header-brand span{font-size:12px;opacity:.82}.emp-logout{color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.35);padding:8px 11px;border-radius:9px;font-size:13px}.emp-main{max-width:720px;margin:0 auto;padding:14px}.emp-card{background:#fff;border:1px solid #dfe7ed;border-radius:18px;padding:16px;margin-bottom:14px;box-shadow:0 4px 18px rgba(16,42,67,.06)}.emp-section-title{display:flex;justify-content:space-between;margin-bottom:14px}.emp-section-title h2{margin:0;font-size:20px}.emp-section-title p{margin:3px 0 0;color:#6b7c89;font-size:13px}.emp-state{border-radius:14px;text-align:center;padding:18px;margin-bottom:14px;display:flex;flex-direction:column;gap:5px}.emp-state.present{background:#e1f6ec;color:#086647}.emp-state.out{background:#edf3f8;color:#355466}.emp-state span{font-weight:900;font-size:14px}.emp-state strong{font-size:38px;letter-spacing:1px}.emp-state small{font-size:13px}.emp-card form label,.emp-login label{font-weight:700;font-size:13px;display:block;margin:9px 0 6px}.emp-card select,.emp-card input,.emp-card textarea,.emp-login input{box-sizing:border-box;width:100%;border:1px solid #cbd7df;border-radius:10px;padding:12px;font:inherit;background:#fff}.emp-clock,.emp-primary{width:100%;border:0;border-radius:14px;padding:16px 18px;font-weight:900;font-size:19px;cursor:pointer;margin-top:12px}.emp-clock.in,.emp-primary{background:#1766a6;color:#fff}.emp-clock.out{background:#c53030;color:#fff}.emp-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.emp-form small{display:block;color:#6c7d88;margin-top:5px}.emp-request{display:flex;justify-content:space-between;gap:10px;padding:13px 0;border-top:1px solid #edf1f4}.emp-request:first-of-type{border-top:0}.emp-request>div:first-child{display:flex;flex-direction:column;gap:3px}.emp-request span{font-size:13px;color:#5f7381}.emp-request small{font-size:12px;color:#8a5a00}.emp-request>div:last-child{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.emp-link{border:0;background:none;text-decoration:underline;font-size:12px;cursor:pointer}.emp-link.danger{color:#a82020}.emp-table-wrap{overflow:auto}.emp-table{border-collapse:collapse;width:100%;font-size:12px}.emp-table th,.emp-table td{padding:9px 7px;border-bottom:1px solid #e5ebef;text-align:left;white-space:nowrap}.emp-empty{padding:15px;text-align:center;color:#708390}.emp-bottom{position:fixed;bottom:0;left:0;right:0;height:58px;background:#fff;border-top:1px solid #dbe4ea;display:flex;justify-content:space-around;align-items:center;z-index:30}.emp-bottom a{color:#173e59;text-decoration:none;font-size:12px;font-weight:800}.emp-alert{max-width:720px;margin:0 auto 12px;padding:11px 13px;border-radius:10px;font-size:13px}.emp-alert.ok{background:#dcf7ea;color:#086647}.emp-alert.error{background:#fde3e3;color:#9b1c1c}.emp-login{max-width:390px;margin:7vh auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 12px 40px rgba(16,42,67,.15);border:1px solid #e0e7ec}.emp-logo{display:block;max-width:180px;max-height:70px;object-fit:contain;margin:0 auto 10px}.emp-product{text-align:center;color:#1766a6;font-weight:900;letter-spacing:3px;font-size:12px}.emp-login h1{text-align:center;margin:8px 0 4px}.emp-login p{text-align:center;color:#667986;margin-top:0}.emp-login small{display:block;text-align:center;color:#81909a;margin-top:18px}.emp-login .emp-primary{font-size:16px}.emp-illness-file,.emp-permission-times{display:none}
@media(max-width:640px){.emp-main{padding:10px}.emp-card{border-radius:15px;padding:14px}.emp-state strong{font-size:34px}.emp-grid{grid-template-columns:1fr}.hr-review{min-width:260px;flex-wrap:wrap}.emp-login{margin:3vh 12px}}

/* v1.21 - Generatore tesserini QR */
.badge-kpis{grid-template-columns:repeat(2,minmax(180px,260px));margin-bottom:18px}
#badgeBulkForm .bulk-toolbar{gap:16px;flex-wrap:wrap}
#badgeBulkForm .bulk-toolbar .actions{display:flex;gap:8px;flex-wrap:wrap}
#badgeBulkForm .select-cell{width:44px;text-align:center}
#badgeBulkForm .badge-select,#badgeSelectAll{width:18px;height:18px;accent-color:#1766a6}
@media(max-width:760px){.badge-kpis{grid-template-columns:1fr 1fr}.badge-kpis .value{font-size:28px}}

.id-card-stack{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.id-card-back{aspect-ratio:auto;min-height:340px}.id-card-back-body{padding:16px;flex:1}.badge-qual-box h4{margin:0 0 12px;color:var(--navy);font-size:16px}.badge-stamps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.badge-stamp{border:1px solid #d8e1e8;border-radius:12px;padding:12px}.badge-stamp strong{display:block;font-size:12px;margin-bottom:4px}.badge-stamp span{display:block;font-size:13px;font-weight:800}.badge-stamp small{display:block;margin-top:4px;color:#64748b;font-size:11px}.badge-stamp.valido{background:#e8f7ef;color:#176b3a}.badge-stamp.in-scadenza{background:#fff4dd;color:#8a5b00}.badge-stamp.scaduto{background:#fdeaea;color:#9b1c1c}.badge-stamp.registrato{background:#e8f0fe;color:#2352a2}.badge-stamp.warning{background:#eef2f6;color:#445466}.badge-stamp.non-richiesto{background:#f1f4f7;color:#6b7280}.badge-stamps.public .badge-stamp{padding:10px}.badge-qual-box .note{margin:12px 0 0;color:#64748b;font-size:12px;line-height:1.5}@media(max-width:1100px){.id-card-stack{grid-template-columns:1fr}}@media(max-width:640px){.badge-stamps{grid-template-columns:1fr}}

.site-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.site-card-head h3{margin:0 0 6px}.site-card-head p{margin:0;color:var(--muted)}

/* v1.22.1 dashboard e sidebar */
.sidebar{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}
.sidebar .nav{flex:0 0 auto}
.sidebar-foot{position:static;left:auto;right:auto;bottom:auto;margin-top:auto;padding:18px 4px 4px;border-top:1px solid rgba(255,255,255,.12);word-break:break-word}
.dashboard-kpis{grid-template-columns:repeat(7,minmax(130px,1fr))}
.dashboard-actions-card{margin-bottom:18px}
.dashboard-actions-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.dash-action{display:grid;grid-template-columns:42px 1fr 20px;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:14px 15px;background:#fff;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.dash-action:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(16,42,67,.10);border-color:#b9cddd}
.dash-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:#edf5fb;color:#1766a6;font-weight:900;font-size:19px}
.dash-action strong{display:block;color:var(--navy);font-size:14px;margin-bottom:3px}
.dash-action small{display:block;color:var(--muted);font-size:11px;line-height:1.35}
.dash-arrow{font-size:26px;color:#9aabba;text-align:right}
.dashboard-analysis{grid-template-columns:1fr 1fr}
@media(max-width:1350px){.dashboard-kpis{grid-template-columns:repeat(4,1fr)}.dashboard-actions-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.dashboard-kpis{grid-template-columns:repeat(2,1fr)}.dashboard-actions-grid{grid-template-columns:1fr}.dashboard-analysis{grid-template-columns:1fr}}
@media(max-width:760px){.sidebar{height:auto;overflow:visible}.sidebar-foot{display:block;margin-top:16px}.dashboard-kpis{grid-template-columns:repeat(2,1fr)}}

/* v1.22.3 - Dashboard analitica: grafici e alert */
.dashboard-top-note{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:-2px 0 14px;padding:0 2px;color:var(--muted);font-size:12px}.dashboard-top-note a,.text-link{color:#1766a6;text-decoration:none;font-size:12px;font-weight:800}.dashboard-top-note a:hover,.text-link:hover{text-decoration:underline}
.dashboard-kpis-analytics{grid-template-columns:repeat(6,minmax(145px,1fr));gap:14px}.dashboard-kpis-analytics .kpi{min-height:126px}.dashboard-kpis-analytics .kpi .value{font-size:35px}.dashboard-kpis-analytics .kpi.purple{border-top-color:#7b43c4}
.dashboard-chart-grid{display:grid;grid-template-columns:1.02fr 1.12fr 1.14fr;gap:16px;margin-bottom:16px}.dashboard-chart-card{min-width:0}.dashboard-chart-card .card-head,.dashboard-alert-card .card-head{align-items:center}.dashboard-chart-card .card-body{min-height:245px;display:flex;flex-direction:column}.chart-foot{margin-top:auto;padding-top:12px;color:var(--muted);font-size:11px;border-top:1px solid #eef2f5}
.analytics-donut-wrap{display:flex;align-items:center;justify-content:center;gap:24px;padding:7px 0 14px}.analytics-donut{width:170px;height:170px;border-radius:50%;position:relative;flex:0 0 auto;background:conic-gradient(#c53030 0 var(--p1),#e3a128 var(--p1) var(--p2),#7b43c4 var(--p2) var(--p3),#718096 var(--p3) var(--p4),#18a66a var(--p4) 100%)}.analytics-donut:after{content:"";position:absolute;inset:31px;background:#fff;border-radius:50%}.analytics-donut-center{position:absolute;inset:0;z-index:2;display:grid;place-content:center;text-align:center}.analytics-donut-center strong{font-size:27px;line-height:1;color:var(--navy)}.analytics-donut-center span{margin-top:7px;color:var(--muted);font-size:11px;line-height:1.3}.analytics-legend{display:grid;gap:10px;min-width:140px}.analytics-legend>div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;font-size:11px}.analytics-legend strong{color:var(--navy)}.legend-dot{width:9px;height:9px;border-radius:3px}.legend-dot.valid{background:#18a66a}.legend-dot.warning{background:#e3a128}.legend-dot.expired{background:#c53030}.legend-dot.missing{background:#7b43c4}.legend-dot.verify{background:#718096}
.month-chart{height:205px;display:grid;grid-template-columns:repeat(6,minmax(38px,1fr));gap:10px;align-items:end;padding:8px 4px 4px;background:repeating-linear-gradient(to top,#f7f9fb 0,#f7f9fb 1px,transparent 1px,transparent 43px);border-bottom:1px solid #dfe7ed}.month-bar-col{height:100%;display:grid;grid-template-rows:20px 1fr 28px;align-items:end;text-align:center}.month-bar-value{font-size:10px;font-weight:800;color:#506273;align-self:end}.month-bar-track{height:150px;display:flex;align-items:flex-end;justify-content:center}.month-bar-track span{display:block;width:min(38px,72%);min-height:3px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#e4a42b,#1766a6);box-shadow:0 2px 6px rgba(23,102,166,.14)}.month-bar-label{font-size:10px;color:#64748b;white-space:nowrap;align-self:center}
.category-bars{display:grid;gap:14px;padding-top:5px}.category-bar-row{display:grid;grid-template-columns:minmax(100px,145px) 1fr 30px;gap:10px;align-items:center}.category-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:#526678;font-size:10.5px}.category-bar-track{height:17px;background:#eef3f7;border-radius:4px;overflow:hidden}.category-bar-track span{display:block;height:100%;background:linear-gradient(90deg,#0d4b7c,#1766a6);border-radius:4px}.category-bar-row strong{font-size:11px;color:var(--navy)}
.dashboard-alert-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dashboard-alert-card{min-width:0}.dashboard-alert-card .card-head>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dashboard-alert-card .card-head .muted{font-size:11px}.dashboard-alert-card h4{display:flex;align-items:center;gap:8px;margin:0}.alert-symbol{width:22px;height:22px;display:inline-grid;place-items:center;border-radius:6px;font-size:13px;font-weight:900}.alert-symbol.warning{background:#fff1d6;color:#9a6100}.alert-symbol.expired{background:#fde3e3;color:#a51f1f}.dashboard-alert-card .card-body{padding-top:0}.dashboard-alert-table{font-size:11px}.dashboard-alert-table th{font-size:9.5px;white-space:nowrap}.dashboard-alert-table td{padding-top:9px;padding-bottom:9px}.dashboard-alert-table .name,.dashboard-alert-table .doc-link{color:var(--navy);font-weight:700;text-decoration:none}.dashboard-alert-table .doc-link{font-weight:500;color:#395b75}.dashboard-alert-table .name:hover,.dashboard-alert-table .doc-link:hover{text-decoration:underline}.days-cell{font-weight:800}.days-cell.negative{color:#c53030}.mini-state{display:inline-flex;padding:4px 7px;border-radius:6px;font-size:9px;font-weight:850;white-space:nowrap}.mini-state.warning{background:#fff1d6;color:#9a6100}.mini-state.expired{background:#fde3e3;color:#b02020}.empty.compact{padding:18px 8px}.dashboard-actions-card,.dashboard-actions-grid,.dashboard-analysis{display:none!important}
@media(max-width:1450px){.dashboard-kpis-analytics{grid-template-columns:repeat(3,1fr)}.dashboard-chart-grid{grid-template-columns:1fr 1fr}.dashboard-chart-card:last-child{grid-column:1/-1}.category-bar-row{grid-template-columns:160px 1fr 32px}}
@media(max-width:1050px){.dashboard-alert-grid{grid-template-columns:1fr}.dashboard-chart-grid{grid-template-columns:1fr}.dashboard-chart-card:last-child{grid-column:auto}.dashboard-kpis-analytics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.dashboard-top-note{align-items:flex-start;flex-direction:column;gap:4px}.dashboard-kpis-analytics{grid-template-columns:1fr 1fr}.dashboard-kpis-analytics .kpi{min-height:110px}.dashboard-kpis-analytics .kpi .value{font-size:29px}.analytics-donut-wrap{flex-direction:column}.month-chart{gap:5px;overflow-x:auto}.month-bar-track{height:130px}.month-bar-label{font-size:9px}.category-bar-row{grid-template-columns:92px 1fr 25px}.dashboard-alert-table th:nth-child(4),.dashboard-alert-table td:nth-child(4){display:none}}

/* v1.23.0 - Badge cantiere: emissione, revoca, versionamento e SIISL-ready */
.badge-kpis{grid-template-columns:repeat(4,minmax(150px,1fr));max-width:none}
.compact-input{display:inline-block!important;width:150px!important;min-width:120px;padding:7px 9px!important;margin-right:6px;vertical-align:middle}
@media(max-width:1050px){.badge-kpis{grid-template-columns:repeat(2,minmax(160px,1fr))}}
@media(max-width:620px){.badge-kpis{grid-template-columns:1fr}.compact-input{width:100%!important;margin:0 0 6px}}

/* v1.26 - Geofence e programmazione cantieri */
.emp-assignment{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #d9e5ec;background:#f8fbfd;border-radius:13px;margin:10px 0 12px}.emp-assignment strong{font-size:18px;color:#0d2a43}.emp-assignment span{font-size:13px;color:#4f6879}.emp-assignment small{font-size:12px;color:#6d7f8b}.emp-assignment em{font-size:12px;color:#8a5a00;font-style:normal;margin-top:3px}.emp-gps-note{font-size:11px;line-height:1.45;color:#607482;background:#eef5fa;border-radius:10px;padding:9px 11px;margin:10px 0}.emp-gps-status{font-size:12px;color:#466071;text-align:center;padding:7px 6px}.emp-clock:disabled{opacity:.45;cursor:not-allowed}.emp-tomorrow{border-left:4px solid #1766a6}.btn.danger{background:#c53030;color:#fff}


/* v1.26.2 — Anteprima tesserino A2A basata sul master aziendale fornito */
.id-card-master{position:relative;background:#fff!important;color:#111!important;border:3px solid #111!important;border-radius:0!important;overflow:hidden}
.id-card-master-title{text-align:center;padding:8px 8px 2px}.id-card-master-title strong{display:block;font-size:18px;letter-spacing:.01em;color:#111}.id-card-master-title span{display:block;font-size:8px;color:#111;margin-top:2px}
.id-card-master-top{height:92px;display:flex;align-items:center;justify-content:space-between;padding:2px 20px 0 28px}.id-card-master-logo{width:180px!important;max-height:72px!important;object-fit:contain}.id-card-master .badge-photo{width:92px;height:82px;border-radius:0;border:1px solid #aaa;object-fit:cover}
.id-card-master-company{text-align:center;color:#003e9c;font-size:11px;line-height:1.5;margin-top:-4px;width:72%}.id-card-master-company strong{display:block}.id-card-master-lines{padding:4px 10px 26px;color:#111;font-size:11px;line-height:1.65}.id-card-master-lines b{color:#003e9c}.id-card-master-dates{display:flex;gap:18px;flex-wrap:wrap}
.badge-qr-master{position:absolute!important;right:8px!important;bottom:8px!important;width:52px!important;height:52px!important;border:0!important}.id-card-master .id-card-foot{position:absolute;left:8px;right:66px;bottom:5px;color:#59636b;font-size:8px;border-top:0!important}
@media(max-width:620px){.id-card-master-top{padding-left:12px;padding-right:12px}.id-card-master-logo{width:150px!important}.id-card-master-company{width:72%;font-size:10px}.id-card-master-lines{font-size:10px}}

.id-card-back-master-top{display:flex;gap:14px;align-items:center;padding:10px 14px 0}.badge-qr-back{position:static!important;width:84px!important;height:84px!important}.id-card-back-meta{display:grid;gap:4px;font-size:10px}.id-card-back-meta b{color:#1766a6;font-size:11px}.id-card-back-master .id-card-back-body{padding-top:6px}.id-card-back-master .badge-stamps{gap:5px}.id-card-back-master .badge-stamp{padding:5px 7px}.id-card-back-master .badge-stamp strong{font-size:9px}.id-card-back-master .badge-stamp span{font-size:9px}.id-card-back-master .badge-stamp small{font-size:8px}


/* v1.26.8 - Piano assegnazione cantieri */
.assignment-plan-card{margin:18px 0}.assignment-scroll{overflow-x:auto;padding:0 0 6px}.assignment-week-grid{display:grid;grid-template-columns:repeat(7,minmax(185px,1fr));gap:10px;min-width:1345px;padding:0 14px 14px}.assignment-day{border:1px solid #dfe7ed;border-radius:12px;background:#fff;min-height:160px;overflow:hidden}.assignment-day.is-today{box-shadow:0 0 0 2px #1766a6 inset}.assignment-day-head{display:flex;align-items:flex-start;justify-content:space-between;padding:10px;background:#f5f8fa;border-bottom:1px solid #e3e9ee}.assignment-day-head strong{display:block}.assignment-day-head span{display:block;font-size:10px;color:#687783;margin-top:2px}.assignment-day-head a{font-size:11px;font-weight:700}.assignment-site{padding:8px 10px;border-bottom:1px solid #edf1f4}.assignment-site:last-child{border-bottom:0}.assignment-site-name{font-size:11px;font-weight:800;color:#1766a6;margin-bottom:5px}.assignment-site ul{list-style:none;padding:0;margin:0;display:grid;gap:5px}.assignment-site li{font-size:11px;line-height:1.2}.assignment-site li small{display:block;color:#6b7882;margin-top:2px}.assignment-empty{padding:16px 10px;color:#8b969e;font-size:11px}.plan-conflict{display:inline-block;margin-left:5px;padding:2px 5px;border-radius:999px;background:#fde3e3;color:#9b1c1c;font-size:9px;font-weight:800}.assignment-legend{display:flex;gap:16px;flex-wrap:wrap;padding:0 14px 14px;font-size:11px;color:#67747e}.assignment-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.legend-plan{background:#1766a6}.legend-conflict{background:#c62828}

/* v1.26.8 - Calendario HR mensile */
.hr-calendar-card{margin:18px 0}.hr-calendar-scroll{overflow-x:auto;padding:0 14px 12px}.hr-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(145px,1fr));gap:7px;min-width:1050px}.hr-cal-weekday{text-align:center;font-size:11px;font-weight:800;color:#61717d;padding:5px}.hr-cal-day{min-height:138px;border:1px solid #dfe7ed;border-radius:11px;background:#fff;padding:8px;display:flex;flex-direction:column;gap:5px}.hr-cal-day.weekend{background:#f8fafb}.hr-cal-day.today{box-shadow:0 0 0 2px #1766a6 inset}.hr-cal-day.blank{border:0;background:transparent}.hr-cal-date{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #edf1f4;padding-bottom:4px}.hr-cal-date strong{font-size:14px}.hr-cal-date a{font-size:11px}.hr-cal-chip{border-radius:7px;padding:4px 6px;font-size:9.5px;line-height:1.2}.hr-cal-chip strong{display:block;font-size:10px}.hr-cal-chip span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.hr-cal-chip.presence{background:#e3f4ec;color:#176647}.hr-cal-chip.holiday{background:#e4eefb;color:#245a9a}.hr-cal-chip.permission{background:#eee8fb;color:#65439a}.hr-cal-chip.illness{background:#fff0d6;color:#8a5900}.hr-cal-chip.missing{background:#fde3e3;color:#9b1c1c}.hr-cal-chip.planned{background:#e7f4f6;color:#19646b}.hr-cal-empty{color:#a1a9af;text-align:center;margin:auto}.hr-cal-legend{display:flex;gap:8px;flex-wrap:wrap;padding:0 14px 8px}.hr-cal-legend span{font-size:10px;font-weight:800;border-radius:999px;padding:4px 8px}.hr-cal-legend .presence{background:#e3f4ec;color:#176647}.hr-cal-legend .holiday{background:#e4eefb;color:#245a9a}.hr-cal-legend .permission{background:#eee8fb;color:#65439a}.hr-cal-legend .illness{background:#fff0d6;color:#8a5900}.hr-cal-legend .missing{background:#fde3e3;color:#9b1c1c}.hr-cal-legend .planned{background:#e7f4f6;color:#19646b}.hr-calendar-card .note{padding:0 14px 12px;margin:0}
@media(max-width:700px){.assignment-plan-card .card-head,.hr-calendar-card .card-head{align-items:flex-start;gap:10px}.assignment-plan-card .actions,.hr-calendar-card .actions{width:100%}.assignment-week-grid{min-width:1260px}.hr-calendar-grid{min-width:980px}}

/* v1.26.9 - import programma Excel + scadenze visite mediche */
.planning-import-card{margin:0 0 18px}.planning-check{display:flex!important;align-items:center;gap:8px;text-transform:none!important;font-size:12px!important;letter-spacing:0!important;margin-top:8px}.planning-check input{width:17px;height:17px}.hr-cal-chip.injury{background:#fde8e8;color:#a12626}.hr-cal-chip.medical{background:#e8efff;color:#274c9b;border:1px solid #c8d6fa}.hr-cal-chip.other{background:#f0f1f3;color:#515c65}.hr-cal-legend .injury{background:#fde8e8;color:#a12626}.hr-cal-legend .medical{background:#e8efff;color:#274c9b}.hr-cal-legend .other{background:#f0f1f3;color:#515c65}.medical-expiry-card .table td{vertical-align:middle}

/* v1.27 permessi utente */
.permission-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:24px 0 12px}.permission-head h4{margin:0 0 4px}.permission-head p{margin:0}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px}.permission-card{display:flex;align-items:flex-start;gap:10px;border:1px solid #dce4eb;border-radius:12px;padding:12px;background:#fff;cursor:pointer}.permission-card:has(input:checked){border-color:#1766a6;background:#f1f7fc}.permission-card input{margin-top:3px}.permission-card span{display:block}.permission-card strong{display:block;font-size:13px;color:#16324a}.permission-card small{display:block;margin-top:4px;line-height:1.35;color:#64748b}@media(max-width:980px){.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.permission-grid{grid-template-columns:1fr}.permission-head{align-items:flex-start;flex-direction:column}}

/* v1.27.3 - Calendario Piano Cantieri giorno / settimana / mese */
.planning-calendar-card{margin:0 0 18px}.planning-calendar-head{align-items:center}.planning-view-tabs{display:flex;gap:6px;flex-wrap:wrap}.planning-view-tab{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 12px;border:1px solid #d8e2ea;border-radius:9px;background:#fff;color:#344b5e;font-size:12px;font-weight:800;text-decoration:none}.planning-view-tab.active{border-color:#1766a6;background:#eef6fc;color:#1766a6}.planning-calendar-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid #edf1f4}.planning-date-form{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.planning-calendar-scroll{overflow-x:auto;padding:12px 14px 14px}.planning-week-calendar{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:8px;min-width:1280px}.planning-week-day{min-height:190px;border:1px solid #dfe7ed;border-radius:11px;background:#fff;overflow:hidden}.planning-week-day.today{box-shadow:0 0 0 2px #1766a6 inset}.planning-week-day.selected .planning-cal-date-link{background:#eaf4fb}.planning-cal-date-link{display:flex;justify-content:space-between;align-items:center;padding:9px 10px;background:#f6f8fa;border-bottom:1px solid #e4eaef;text-decoration:none;color:#20384b}.planning-cal-date-link strong{font-size:12px}.planning-cal-date-link span{font-size:10px;color:#687783}.planning-cal-site{padding:7px 9px;border-bottom:1px solid #edf1f4}.planning-cal-site:last-child{border-bottom:0}.planning-cal-site strong{display:block;color:#1766a6;font-size:10px;text-transform:uppercase;letter-spacing:.02em}.planning-cal-site span{display:block;margin-top:3px;font-size:10.5px;line-height:1.3;color:#334c5f}.planning-cal-no-plan{padding:14px 10px;color:#9aa4ac;font-size:10px}.planning-cal-no-plan.compact{padding:4px 0}.planning-month-title{padding:12px 14px 0;font-size:16px;font-weight:800;color:#213a4d}.planning-month-calendar{display:grid;grid-template-columns:repeat(7,minmax(155px,1fr));gap:6px;min-width:1085px}.planning-month-weekday{text-align:center;font-size:10px;font-weight:800;color:#697985;padding:4px}.planning-month-day{min-height:128px;border:1px solid #dfe7ed;border-radius:9px;background:#fff;padding:7px;overflow:hidden}.planning-month-day.outside{background:#f8fafb;border-style:dashed}.planning-month-day.today{box-shadow:0 0 0 2px #1766a6 inset}.planning-month-day.selected{background:#f4f9fd}.planning-month-date{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:7px;text-decoration:none;font-size:12px;font-weight:900;color:#233d50;background:#f2f5f7}.planning-month-items{display:grid;gap:4px;margin-top:6px}.planning-month-site{border-left:3px solid #1766a6;background:#f3f7fa;border-radius:5px;padding:4px 5px;min-width:0}.planning-month-site strong{display:block;font-size:9px;color:#1766a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planning-month-site span{display:block;font-size:9px;color:#425867;line-height:1.25;white-space:normal;overflow-wrap:anywhere;margin-top:1px}.planning-day-calendar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px}.planning-day-site{border:1px solid #dfe7ed;border-radius:10px;overflow:hidden}.planning-day-site-head{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#f5f8fa;border-bottom:1px solid #e4eaef;padding:9px 10px}.planning-day-site-head strong{font-size:12px;color:#1766a6}.planning-day-site-head span{font-size:10px;color:#6b7984}.planning-day-site ul{list-style:none;padding:8px 10px;margin:0;display:grid;gap:6px}.planning-day-site li{display:flex;justify-content:space-between;gap:8px;font-size:11px}.planning-day-site li strong{color:#243f52}.planning-day-site li span{color:#6a7882}.planning-calendar-empty{grid-column:1/-1;padding:22px;text-align:center;color:#8d99a2;border:1px dashed #d9e1e7;border-radius:10px}.planning-calendar-card .card-body.planning-calendar-controls{padding-top:10px;padding-bottom:10px}
@media(max-width:980px){.planning-day-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}.planning-calendar-head{align-items:flex-start;gap:10px}.planning-calendar-head .planning-view-tabs{width:100%}}
@media(max-width:620px){.planning-day-calendar{grid-template-columns:1fr}.planning-calendar-controls{align-items:stretch}.planning-date-form{width:100%}.planning-date-form .field{flex:1}.planning-view-tabs{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.planning-view-tab{width:100%}.planning-calendar-controls .actions{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}.planning-calendar-controls .actions .btn{width:100%;padding-left:6px;padding-right:6px}.planning-week-calendar{min-width:1190px}.planning-month-calendar{min-width:1015px}}
