
:root{--bg:#f5f7fc;--card:#fff;--ink:#172033;--mut:#6f7890;--line:#e5e9f2;--blue:#246bfd;--violet:#7357e8;--green:#20a46b;--orange:#ef8f22;--red:#e5484d;--cyan:#159bb5;--shadow:0 8px 26px #22314d12}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px system-ui,-apple-system,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:255px 1fr;min-height:100vh}.side{background:#17243d;color:#fff;padding:18px 12px;position:sticky;top:0;height:100vh;overflow:auto}.brand{font-weight:850;font-size:20px;padding:8px 10px 18px}.brand small{display:block;color:#aebbd1;font-size:11px;margin-top:4px}.grp{font-size:10px;color:#8ea0be;padding:15px 10px 6px;font-weight:800}.nav{width:100%;border:0;background:transparent;color:#d9e2f2;padding:10px;border-radius:10px;text-align:left;cursor:pointer}.nav.on,.nav:hover{background:#ffffff18;color:#fff}.main{min-width:0}.top{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:12px 22px;position:sticky;top:0;z-index:5}.top h1{font-size:20px;margin:0}.sub{color:var(--mut);font-size:12px}.context{margin-left:auto;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;max-width:260px}.view{padding:20px;max-width:1450px;margin:auto}.hero,.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.hero{padding:18px;display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.hero h2,.card h3{margin:0 0 5px}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;padding:9px 11px;border-radius:10px;cursor:pointer}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;cursor:pointer}.kpi b{display:block;font-size:22px}.kpi small{color:var(--mut)}.kpi.blue{border-top:4px solid var(--blue)}.kpi.violet{border-top:4px solid var(--violet)}.kpi.green{border-top:4px solid var(--green)}.kpi.red{border-top:4px solid var(--red)}.kpi.orange{border-top:4px solid var(--orange)}.kpi.cyan{border-top:4px solid var(--cyan)}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}.span4{grid-column:span 4}.span6{grid-column:span 6}.span8{grid-column:span 8}.span12{grid-column:span 12}.card{padding:16px}.feed{padding:11px 0;border-bottom:1px solid var(--line);cursor:pointer}.pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef2f8;font-size:11px}.tablewrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:#f7f9fd}.empty{padding:28px;text-align:center;color:var(--mut)}.field{display:grid;gap:5px;margin:10px 0}.field label{font-size:12px;color:var(--mut);font-weight:700}.field input,.field select,.field textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff}.field textarea{min-height:90px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.notice{padding:12px;border-radius:11px;background:#f0f5ff;border:1px solid #dbe7ff}.check{padding:12px;border:1px solid var(--line);border-radius:12px;margin:8px 0}.check.done{border-left:5px solid var(--green);background:#f8fffb}.check.bad{border-left:5px solid var(--red);background:#fff9f9}.check.obs{border-left:5px solid var(--orange);background:#fffaf3}.check.na{border-left:5px solid #9aa4b5;background:#fafbfc}.progress{height:10px;background:#edf1f7;border-radius:99px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--green))}.statrow{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.stat{padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:12px}.stickytools{position:sticky;top:72px;z-index:3;background:var(--bg);padding:6px 0}.outcomes{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.attention{padding:12px;border-left:4px solid var(--orange);background:#fff;border-radius:10px;margin:8px 0;box-shadow:var(--shadow);cursor:pointer}.attention.red{border-color:var(--red)}.attention.green{border-color:var(--green)}.modal{position:fixed;inset:0;background:#11182788;z-index:30;display:flex;align-items:center;justify-content:center;padding:15px}.modal.hide{display:none}.box{background:#fff;width:min(820px,100%);max-height:92vh;overflow:auto;border-radius:18px}.mh,.mf{padding:14px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.mf{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end;position:sticky;bottom:0;background:#fff}.mb{padding:16px}.x{margin-left:auto}.bottom{display:none}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tile{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;cursor:pointer}.tile b{display:block}.tile small{color:var(--mut)}
@media(max-width:850px){.app{display:block}.side{display:none}.top{height:82px;padding:12px 16px}.view{padding:12px 12px 82px}.kpis{grid-template-columns:repeat(2,1fr)}.grid{display:block}.card{margin-bottom:10px}.formgrid{grid-template-columns:1fr}.hero{align-items:flex-start;flex-direction:column}.bottom{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:10}.bottom button{border:0;background:#fff;padding:10px 2px;color:#34415b}.bottom b{display:block;font-size:20px}.bottom small{font-size:11px}.tiles{grid-template-columns:1fr 1fr}.context{max-width:145px}.table th,.table td{padding:9px 7px}.box{max-height:88vh}}

/* V46 */ .workspace-tabs{display:flex;gap:7px;overflow:auto;padding:4px 0 12px}.workspace-tabs .btn{white-space:nowrap}.impact{border-left:4px solid #7c3aed;background:#f7f3ff;padding:12px;border-radius:10px;margin:8px 0}.command-palette{position:fixed;inset:0;background:#0f172a88;z-index:9999;display:flex;justify-content:center;align-items:flex-start;padding-top:10vh}.command-box{width:min(680px,92vw);background:#fff;border-radius:16px;box-shadow:0 20px 60px #0005;padding:14px}.command-box input{width:100%;font-size:18px;padding:13px;border:1px solid #cbd5e1;border-radius:10px}.command-results{max-height:55vh;overflow:auto;margin-top:10px}@media(max-width:600px){.workspace-tabs{margin-inline:-8px}.workspace-tabs .btn{min-height:44px}.mobile-field-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:10px}.mobile-field-actions .btn{min-height:58px}}

/* V47 · UX mobile e barre azioni */
.mf{gap:8px;flex-wrap:wrap;overflow:visible;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}
.mf .btn{min-height:44px}
.mobile-more{display:none}
@media(max-width:850px){
  .modal{padding:0;align-items:flex-end}
  .box{max-height:94dvh;display:flex;flex-direction:column;overflow:hidden}
  .mb{overflow-y:auto;overscroll-behavior:contain;min-height:0}
  .mf{position:relative;bottom:auto;flex:0 0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));justify-content:stretch;background:#fff;box-shadow:0 -8px 24px #17203312}
  .mf .btn{width:100%;min-width:0;padding:10px 7px;white-space:normal;line-height:1.15}
  .mf .btn.primary{grid-column:auto}
  .mf .secondary-mobile{display:none}
  .mf .mobile-more{display:block}
}
@media(max-width:520px){
  .mf{grid-template-columns:repeat(3,minmax(0,1fr));padding:10px 10px calc(10px + env(safe-area-inset-bottom,0px))}
  .mf .btn{font-size:13px}
  .notice{line-height:1.35}
}
.action-sheet{display:grid;gap:8px}
.action-sheet .btn{text-align:left;width:100%;min-height:48px}


.activity-count{min-width:42px;height:42px;border-radius:14px;background:#eef4ff;color:#245fd7;display:grid;place-items:center;font-weight:800;font-size:18px}
@media(max-width:850px){.activity-count{min-width:38px;height:38px;border-radius:12px}}

.checkgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check{padding:11px 12px;border:1px solid #e2e6ef;border-radius:12px;background:#fff}
@media(max-width:600px){.checkgrid{grid-template-columns:1fr}}

/* V50 · Utenti, ruoli, approvazioni e audit */
.perm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.user-card{border:1px solid #e4e8f1;border-radius:16px;padding:14px;background:#fff}
.role-pill{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef4ff;color:#245fd7;font-size:12px;font-weight:800}
.audit-row{padding:11px 0;border-bottom:1px solid #edf0f5}.audit-row:last-child{border-bottom:0}
@media(max-width:650px){.perm-grid{grid-template-columns:1fr}}

/* V52 · Modalità Campo e catena evidenze */
.field-shell{max-width:900px;margin:auto}.field-head{padding:18px;border-radius:20px;background:linear-gradient(135deg,#17243d,#245fd7);color:white;margin-bottom:14px}
.field-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.field-action{min-height:86px;border:0;border-radius:18px;padding:14px;text-align:left;font-weight:800;font-size:16px;background:#fff;box-shadow:0 5px 20px #17243d12}
.field-action small{display:block;font-weight:500;margin-top:6px;color:#667085}.progressbar{height:10px;border-radius:999px;background:#e8edf5;overflow:hidden}.progressbar>i{display:block;height:100%;background:#245fd7}
.chain{display:flex;gap:6px;flex-wrap:wrap}.chain span{padding:6px 9px;border-radius:999px;background:#eef2f7;font-size:12px;font-weight:700}.chain .done{background:#e7f7ee;color:#137a43}
@media(max-width:600px){.field-shell{margin:-4px}.field-head{border-radius:16px}.field-actions{grid-template-columns:1fr 1fr}.field-action{min-height:78px;padding:12px;font-size:14px}}
/* V53 */ .select-tools{display:grid;grid-template-columns:1fr auto;gap:6px}.list-item{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #edf0f5}.list-item.off{opacity:.5}
/* V67.4 · correzione intestazione smartphone */
@media(max-width:850px){
  .top{height:auto;min-height:82px;padding:10px 12px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px}
  .top .back{grid-column:1;grid-row:1;width:52px;min-width:52px;height:52px;align-self:start}
  .top .brand{grid-column:2;grid-row:1;min-width:0;width:100%}
  .top .brand b{font-size:22px;line-height:1.1;display:block;white-space:normal;overflow-wrap:anywhere}
  .top .brand small{display:block;font-size:13px;line-height:1.25;margin-top:4px;white-space:normal}
  .top .context,.top .top-context{grid-column:1 / -1;grid-row:2;width:100%;max-width:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:8px;align-items:stretch}
  .top .context b,.top .top-context b{min-width:0;display:flex;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:13px;line-height:1.2;white-space:normal;overflow-wrap:anywhere}
  .top .context select,.top .top-context select{width:100%;min-width:0;max-width:none;height:100%;min-height:44px;font-size:13px;padding:8px 30px 8px 9px}
  .view{padding-top:12px}
}
@media(max-width:480px){
  .top .context,.top .top-context{grid-template-columns:1fr}
  .top .brand b{font-size:20px}
  .top .brand small{font-size:12px}
}

@media(max-width:520px){
 .mf{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mf .btn{font-size:12.5px;min-height:46px}
 .box{width:100%;border-radius:18px 18px 0 0;max-height:94dvh;align-self:flex-end}
 .modal{align-items:flex-end;padding:0}
}

/* V67.5 · identità prodotto */
.brand-product{display:flex;flex-direction:column;min-width:0}
.brand-product .product-name{font-weight:800;letter-spacing:-.02em}
.brand-product .product-tagline{font-size:11px;color:var(--mut);font-weight:500;margin-top:2px}
.product-copyright{font-size:10px;color:var(--mut);opacity:.82;letter-spacing:.01em}
.side .product-copyright{display:block;padding:2px 16px 12px}
@media(max-width:850px){
 .top .product-tagline{font-size:10px;line-height:1.15}
 .top .product-copyright{font-size:9px}
}

/* V67.6 · header mobile compatto */
@media(max-width:850px){
  .top{
    position:relative!important;
    height:auto!important;
    min-height:0!important;
    padding:10px 12px!important;
    display:grid!important;
    grid-template-columns:48px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    gap:8px 10px!important;
    align-items:center!important;
  }
  .top .back{
    grid-column:1!important;grid-row:1!important;
    width:48px!important;min-width:48px!important;height:48px!important;
    margin:0!important;padding:0!important;
  }
  .top .brand{
    grid-column:2!important;grid-row:1!important;
    width:auto!important;min-width:0!important;max-width:100%!important;
    margin:0!important;padding:0!important;
    overflow:hidden!important;
  }
  .top .brand b,.top .brand .product-name{
    display:block!important;
    font-size:19px!important;line-height:1.12!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .top .brand small{
    display:block!important;font-size:11px!important;line-height:1.15!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
    margin-top:2px!important;
  }
  .top .context,.top .top-context{
    grid-column:1 / -1!important;grid-row:2!important;
    width:100%!important;max-width:none!important;min-width:0!important;
    display:grid!important;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)!important;
    gap:8px!important;margin:0!important;padding:0!important;
  }
  .top .context b,.top .top-context b{
    min-width:0!important;min-height:42px!important;
    padding:7px 9px!important;margin:0!important;
    display:flex!important;align-items:center!important;
    font-size:12px!important;line-height:1.15!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
    border-radius:11px!important;
  }
  .top .context select,.top .top-context select{
    min-width:0!important;width:100%!important;max-width:100%!important;
    min-height:42px!important;height:42px!important;
    padding:6px 28px 6px 9px!important;margin:0!important;
    font-size:12px!important;border-radius:11px!important;
  }
  .view{padding-top:10px!important}
}
@media(max-width:480px){
  .top{grid-template-columns:44px minmax(0,1fr)!important;padding:8px 10px!important;gap:7px 8px!important}
  .top .back{width:44px!important;min-width:44px!important;height:44px!important}
  .top .brand b,.top .brand .product-name{font-size:17px!important}
  .top .brand small{font-size:10px!important}
  .top .context,.top .top-context{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)!important}
  .top .context b,.top .top-context b,.top .context select,.top .top-context select{font-size:11px!important;min-height:40px!important;height:40px!important}
}

/* V67.7 · header mobile basato sul DOM reale */
@media(max-width:850px){
 header.top{
   display:grid!important;
   grid-template-columns:48px minmax(0,1fr)!important;
   grid-template-rows:auto auto!important;
   gap:8px 10px!important;
   padding:10px 12px!important;
   height:auto!important;min-height:0!important;
   align-items:center!important;
 }
 header.top .top-back{
   grid-column:1!important;grid-row:1!important;
   width:48px!important;height:48px!important;min-width:48px!important;
   padding:0!important;margin:0!important;
 }
 header.top .top-title{
   grid-column:2!important;grid-row:1!important;
   min-width:0!important;width:auto!important;margin:0!important;padding:0!important;
 }
 header.top .top-title h1{
   margin:0!important;font-size:22px!important;line-height:1.05!important;
   white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
 }
 header.top .top-title .sub{
   margin-top:3px!important;font-size:12px!important;line-height:1.15!important;
   white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
 }
 header.top .top-controls{
   grid-column:1 / -1!important;grid-row:2!important;
   display:grid!important;
   grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)!important;
   gap:8px!important;
   align-items:stretch!important;
   width:100%!important;min-width:0!important;
   margin:0!important;padding:0!important;
 }
 header.top #userChip{
   width:100%!important;max-width:100%!important;min-width:0!important;
   height:42px!important;min-height:42px!important;
   margin:0!important;padding:7px 10px!important;
   display:block!important;
   overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;
   font-size:12px!important;line-height:1.1!important;text-align:left!important;
   border-radius:11px!important;
 }
 header.top #context{
   width:100%!important;max-width:100%!important;min-width:0!important;
   height:42px!important;min-height:42px!important;
   margin:0!important;padding:6px 30px 6px 10px!important;
   font-size:12px!important;line-height:1.1!important;
   border-radius:11px!important;
 }
}
@media(max-width:480px){
 header.top{grid-template-columns:44px minmax(0,1fr)!important;padding:8px 10px!important;gap:7px 8px!important}
 header.top .top-back{width:44px!important;height:44px!important;min-width:44px!important}
 header.top .top-title h1{font-size:20px!important}
 header.top .top-title .sub{font-size:11px!important}
 header.top .top-controls{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)!important;gap:6px!important}
 header.top #userChip,header.top #context{height:40px!important;min-height:40px!important;font-size:11px!important}
}

/* V67.8 · selezione multipla trasversale */
.bulkbar{position:sticky;top:8px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin:0 0 10px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px #17203318}
.select-col{width:42px!important;min-width:42px!important;text-align:center!important}
.select-col input,.attention input[type=checkbox]{width:20px;height:20px;accent-color:#2563eb;cursor:pointer}
.selected-row{background:#eef5ff!important}
@media(max-width:850px){
 .bulkbar{top:6px;flex-wrap:wrap}
 .bulkbar .actions{width:100%}
 .bulkbar .actions .btn{flex:1}
 .select-col{width:38px!important;min-width:38px!important;padding-left:6px!important;padding-right:6px!important}
 .selectable-table th,.selectable-table td{white-space:nowrap}
}

/* V67.9 · copyright identità prodotto */
.side .brand .brand-copyright{display:block;margin-top:5px;font-size:10px;line-height:1.2;font-weight:500;color:#aebbd0;opacity:.78;letter-spacing:.01em}

.about-product{text-align:center;max-width:720px;margin:0 auto}.about-mark{width:62px;height:62px;margin:4px auto 12px;border-radius:18px;background:#17243d;color:#fff;display:grid;place-items:center;font-weight:850;font-size:18px;letter-spacing:-.04em}.about-product h2{margin:0 0 5px;font-size:24px}.about-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0 16px;text-align:left}.about-meta>div{padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.about-meta span,.about-meta b{display:block}.about-meta span{font-size:10px;color:var(--mut);text-transform:uppercase;font-weight:750;margin-bottom:4px}.about-meta b{font-size:13px}.about-copy{font-size:10px;color:var(--mut);padding-top:12px;border-top:1px solid var(--line)}@media(max-width:520px){.about-meta{grid-template-columns:1fr}.about-product h2{font-size:21px}}

/* V68 · Centro Attività 2.0 */
.activity-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px;align-items:end;margin-bottom:12px}.activity-filters .field{margin:0}
@media(max-width:850px){.activity-filters{grid-template-columns:1fr 1fr}.activity-filters .field:first-child{grid-column:1/-1}}
@media(max-width:520px){.activity-filters{grid-template-columns:1fr}.activity-filters .field:first-child{grid-column:auto}}

/* V69 · conversazioni contestuali */
.context-thread{max-height:360px;overflow:auto;padding-right:4px}.context-thread .feed{margin:7px 0;padding:10px 12px;border:1px solid var(--line);border-radius:12px}.context-thread .system-msg{background:#f6f8fb;border-style:dashed}.mini-actions{margin-top:7px}.mini-actions .btn{padding:5px 8px;font-size:11px}

/* V70 · Fascicolo intelligente e coerenza */
.dossier-health{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:12px}.dossier-health>div{padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.dossier-health b,.dossier-health span{display:block}.dossier-health b{font-size:22px}.dossier-health span{font-size:10px;color:var(--mut);margin-top:3px}.dossier-state{font-size:11px;font-weight:800;padding:4px 7px;border-radius:999px;background:#edf2f7}.dossier-state.mancante,.dossier-state.scaduto{background:#fff0f0;color:#b42318}.dossier-state.da-verificare,.dossier-state.da-integrare{background:#fff7e6;color:#9a6700}.dossier-state.presente{background:#ecfdf3;color:#067647}
@media(max-width:850px){.dossier-health{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.dossier-health{grid-template-columns:1fr 1fr}}

/* V71 · struttura operativa */
.chain-node{margin:8px 0}.chain-node .chain-node{margin-left:24px;border-left:2px solid #d9e3f5;padding-left:14px}.chain-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:11px;border:1px solid var(--line);border-radius:12px;background:#fff}.chain-works{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.chain-works span{font-size:10px;padding:3px 7px;border-radius:999px;background:#eef4ff;color:#2453a6}.work-company-row{display:grid;grid-template-columns:1fr 180px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
@media(max-width:600px){.chain-node .chain-node{margin-left:12px;padding-left:8px}.chain-main{display:block}.chain-main .actions{margin-top:8px}.work-company-row{grid-template-columns:1fr}}

/* V71.1 consolidamento */.settings-nav{display:flex;gap:6px;flex-wrap:wrap;padding:8px;margin-bottom:10px;background:#f8faff;border:1px solid var(--line);border-radius:12px}.checklib{max-height:55vh;overflow:auto}.checklib .check{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}

/* V71.2 Centro Report 2.0 */
.report-output-bar{position:sticky;top:0;z-index:4;display:flex;gap:6px;flex-wrap:wrap;padding:9px;margin:8px 0 12px;background:rgba(248,250,255,.96);border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(8px)}.report-group{margin:18px 0}.report-group h2{font-size:15px;margin:0 0 8px}.report-formats{font-size:9px;color:var(--mut);margin-top:9px}.report-bar{height:12px;background:#e8eef8;border-radius:8px;overflow:hidden}.report-bar i{display:block;height:100%;background:linear-gradient(90deg,#246bfd,#6d5dfc)}@media(max-width:600px){.report-output-bar .btn{flex:1 1 44%}}

/* V72 · Campo + Sync foundation */
.sync-badge{position:fixed;right:14px;bottom:14px;z-index:9000;border:1px solid var(--line);border-radius:999px;padding:8px 11px;background:#fff;box-shadow:0 5px 20px #10204022;font:700 11px system-ui;cursor:pointer}.sync-badge.ok{color:#16805b}.sync-badge.local{color:#58677f}.sync-badge.offline{color:#a46610}.sync-badge.conflict{color:#b42318;background:#fff2f0}@media(max-width:600px){.sync-badge{bottom:72px;right:10px}}

/* Cantiere360 2.0 · operational UX */
.ops-focus{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(120deg,#17243d,#263c68);color:#fff;padding:14px 16px;border-radius:16px;margin:0 0 14px}.ops-focus small{display:block;opacity:.7;font-size:10px;letter-spacing:.12em}.ops-focus b{display:block;font-size:18px}.ops-focus select{max-width:320px;background:#fff}.ops-site{display:flex;align-items:center;justify-content:space-between;padding:11px 4px;border-bottom:1px solid var(--line);cursor:pointer}.ops-site.selected{font-weight:700}.ops-count{min-width:30px;height:30px;border-radius:999px;display:grid;place-items:center;background:#edf1f7;font-weight:800}.ops-count.hot{background:#fff0ed;color:#b42318}.ops-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ops-actions button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px;text-align:left;cursor:pointer;font:inherit}.ops-actions button>b,.ops-actions button>small{display:block;margin-top:5px}.ops-actions button>small{color:var(--muted);line-height:1.35}.mobile-nav{display:none}.workspace-tabs.compact{margin-bottom:12px}
@media(max-width:720px){body{padding-bottom:68px}.sidebar{display:none!important}.main{margin-left:0!important}.ops-focus{align-items:stretch;flex-direction:column}.ops-focus select{max-width:none;width:100%}.ops-actions{grid-template-columns:1fr 1fr}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;z-index:8500;left:0;right:0;bottom:0;height:62px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -5px 20px #10204014}.mobile-nav button{border:0;background:transparent;font-size:18px;color:#68758b}.mobile-nav span{display:block;font-size:10px;margin-top:2px}.mobile-nav button.on{color:#3157c8;font-weight:800}.mobile-nav .field{margin:-12px 4px 5px;background:#3157c8;color:#fff;border-radius:15px;box-shadow:0 6px 18px #3157c844}.sync-badge{bottom:72px}.hero{gap:10px}.hero .actions{width:100%}.hero .actions .btn{flex:1}.workspace-tabs.compact{display:flex;overflow:auto;white-space:nowrap}.ops-kpis{grid-template-columns:1fr 1fr}}

.brand-logo{width:38px;height:38px;object-fit:contain;border-radius:8px;display:block;margin-bottom:7px}.brand-name{display:block}.about-logo{max-width:180px;max-height:90px;object-fit:contain;margin:0 auto 14px;display:block}.about-meta{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:720px){.about-meta{grid-template-columns:1fr 1fr}}

@media(max-width:720px){
 .top{min-height:82px;height:auto;padding:12px 18px!important;display:grid!important;grid-template-columns:64px 1fr!important;gap:12px!important;align-items:center!important}
 .top-controls{display:none!important}
 .top-back{width:64px!important;height:64px!important;margin:0!important}
 .top-title{min-width:0!important}
 .top-title h1{font-size:28px!important;line-height:1.1!important;margin:0!important}
 .top-title .sub{font-size:14px!important;margin-top:5px!important}
 .view{display:block!important;min-height:calc(100vh - 150px)!important;padding:14px 14px 88px!important}
 .hero{display:flex!important;flex-direction:column!important;align-items:stretch!important}
 .hero h2{font-size:22px!important}
 .ops-focus,.card,.kpi{visibility:visible!important}
 .startup-error{margin-top:12px!important}
}

/* 2.5.4 · Checklist contestuale */
.field-warning-btn{display:block;border:0;width:100%;text-align:left;cursor:pointer}.field-open-items{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.field-open-items span{background:#fff4e5;color:#8a5700;padding:8px 10px;border-radius:10px;font-weight:700}.field-ok{margin:8px 0;padding:10px 12px;background:#eaf8f0;color:#16794b;border-radius:10px;font-weight:750}.field-check-actions{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.field-check-actions .btn{min-width:0;padding:10px 6px}.field-check{transition:.18s ease}.check-summary{position:sticky;top:0;z-index:2}
@media(max-width:700px){.field-check-actions{grid-template-columns:repeat(2,1fr)}.field-check-actions .btn{min-height:44px}.field-open-items{display:grid;grid-template-columns:1fr}.field-warning-btn{min-height:44px}}
.day-action{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;border:0;font:inherit;cursor:pointer}.day-action span{font-weight:700;white-space:nowrap}

.pending-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}.pending-preview-card{min-width:0;border:1px solid var(--line);border-radius:10px;padding:6px;background:#fff;display:grid;gap:5px}.pending-preview-card img,.pending-preview-card .file-icon{width:100%;aspect-ratio:4/3;border-radius:7px;object-fit:cover;background:#eef1f5}.pending-preview-card .file-icon{display:grid;place-items:center;font-size:28px}.pending-preview-card span{font-size:11px;overflow-wrap:anywhere}@media(max-width:600px){.pending-preview-grid{grid-template-columns:1fr 1fr}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


@media (min-width:851px) and (max-width:1180px){.side{width:220px}.view{padding:18px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.grid{grid-template-columns:1fr}.top{padding:0 18px}}
@media(max-width:850px){body{font-size:15px}.top{position:sticky;top:0;z-index:8}.hero h1{font-size:24px}.kpi b{font-size:24px}.actions{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.actions .btn{flex:0 0 auto;min-height:44px}.tablewrap{overflow:auto}.table{min-width:680px}.modal{align-items:flex-end}.box{width:100%;max-width:none;border-radius:20px 20px 0 0;max-height:92vh}.modalfoot{display:flex;overflow-x:auto;justify-content:flex-start}.modalfoot .btn{flex:0 0 auto;min-height:44px}.tile{min-height:84px}.context{font-size:12px}.view{overflow-x:hidden}}
@media(max-width:520px){.kpis,.tiles{grid-template-columns:1fr 1fr}.hero .actions{width:100%}.top h2{font-size:16px}.btn{padding:10px 12px}.card{border-radius:14px}.kpi{padding:14px}.kpi small{font-size:11px}}
@media print{.side,.top,.bottom,.no-print{display:none!important}.app,.main{display:block!important}.view{padding:0!important}.card{box-shadow:none!important;break-inside:avoid}}

/* V2.4 · shell mobile/PWA */
@media(max-width:850px){
 .side{display:none!important}
 .app{display:block!important;min-height:100dvh!important}
 .main{display:block!important;margin:0!important;width:100%!important;min-width:0!important}
 .top{display:grid!important;grid-template-columns:52px minmax(0,1fr)!important;gap:10px!important;height:auto!important;min-height:74px!important;padding:10px 14px!important}
 .top-controls{display:none!important}
 .top-back{width:52px!important;height:52px!important;padding:0!important}
 .top-title{display:block!important;min-width:0!important}
 .top-title h1{font-size:23px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
 .top-title .sub{font-size:12px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
 .view{display:block!important;width:100%!important;max-width:none!important;min-height:calc(100dvh - 140px)!important;padding:12px 12px calc(84px + env(safe-area-inset-bottom,0px))!important}
 .bottom{display:grid!important;grid-template-columns:repeat(5,1fr)!important;padding-bottom:env(safe-area-inset-bottom,0px)!important}
}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}

@media(max-width:850px){:root{--mobile-bottom:72px}body{overflow-x:hidden!important}.side{display:none!important}.main{display:block!important;margin:0!important;width:100%!important;padding:0!important}.top{position:sticky!important;top:0!important;z-index:30!important;display:grid!important;grid-template-columns:48px minmax(0,1fr)!important;gap:10px!important;min-height:68px!important;height:auto!important;padding:8px 12px!important;background:rgba(255,255,255,.97)!important;border-bottom:1px solid #e8ebf2!important}.top-back{width:48px!important;height:48px!important;border-radius:14px!important}.top-title{min-width:0!important}.top-title h1{font-size:22px!important;line-height:1.1!important}.top-title .sub{font-size:12px!important;margin-top:3px!important}.top-controls{display:none!important}.view{display:block!important;width:100%!important;max-width:none!important;min-height:calc(100dvh - 68px)!important;padding:12px 12px calc(var(--mobile-bottom) + 22px + env(safe-area-inset-bottom,0px))!important}.hero,.ops-focus,.card{border-radius:20px!important}.hero{padding:18px!important;margin-bottom:12px!important}.hero h2{font-size:24px!important;line-height:1.1!important;margin-bottom:6px!important}.hero p,.hero .sub{font-size:14px!important}.hero .actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;margin-top:14px!important}.hero .actions .btn{min-height:56px!important;width:100%!important;font-size:16px!important;white-space:normal!important}.ops-focus{padding:16px!important;margin:0 0 12px!important}.ops-focus h2,.ops-focus h3{font-size:21px!important;margin:4px 0 10px!important}.ops-focus select{min-height:46px!important;font-size:16px!important;width:100%!important}.kpis{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;margin:0 0 12px!important}.kpi{min-height:100px!important;padding:13px 15px!important;border-radius:18px!important}.kpi .n,.kpi strong{font-size:29px!important;line-height:1!important}.kpi .sub,.kpi small{font-size:12px!important;line-height:1.25!important}.grid2,.grid3,.grid4{grid-template-columns:1fr!important;gap:10px!important}.card{padding:16px!important}.card h3{font-size:18px!important}.actions{gap:8px!important}.btn{min-height:44px!important;border-radius:13px!important}.bottom{position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:60!important;display:grid!important;height:calc(var(--mobile-bottom) + env(safe-area-inset-bottom,0px))!important;grid-template-columns:repeat(5,1fr)!important;padding:6px 4px env(safe-area-inset-bottom,0px)!important;background:rgba(255,255,255,.98)!important;border-top:1px solid #e3e7ef!important;box-shadow:0 -8px 24px rgba(20,32,55,.08)!important}.bottom button,.bottom .bnav{min-width:0!important;height:58px!important;padding:5px 2px!important;margin:0!important;border:0!important;background:transparent!important;border-radius:14px!important;font-size:11px!important;line-height:1.05!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:4px!important}.bottom button.on,.bottom .bnav.on{background:#eef4ff!important;color:#245fdb!important;box-shadow:none!important;transform:none!important}.bottom .ico{font-size:21px!important}.sync-badge,.syncBadge,#syncBadge{display:none!important}}@media(max-width:390px){.hero .actions{grid-template-columns:1fr!important}.kpi{min-height:94px!important;padding:12px 14px!important}}
/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


/* 2.5.0 responsive design system — desktop preserved, phone dedicated */
:root{--tap:46px;--r-sm:12px;--r-md:16px;--r-lg:22px}
button,select,input,textarea{font:inherit}button{touch-action:manipulation}
@media(max-width:720px){
 body{padding-bottom:calc(70px + env(safe-area-inset-bottom,0px))!important;background:#f5f7fb!important}
 .bottom{display:none!important}.side{display:none!important}.main{margin:0!important;width:100%!important}
 .top{position:sticky!important;top:0!important;z-index:100!important;display:grid!important;grid-template-columns:44px minmax(0,1fr)!important;align-items:center!important;gap:10px!important;height:64px!important;min-height:64px!important;padding:8px 14px!important;background:rgba(255,255,255,.96)!important;border-bottom:1px solid #e5e9f1!important;backdrop-filter:blur(12px)}
 .top-back{width:44px!important;height:44px!important;min-height:44px!important;padding:0!important;border-radius:13px!important}.top-title h1{font-size:20px!important;line-height:1.1!important;margin:0!important}.top-title .sub{font-size:11px!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.top-controls{display:none!important}
 .view{padding:12px 12px 18px!important;min-height:calc(100dvh - 134px)!important;overflow-x:hidden!important}
 .mobile-nav{height:calc(66px + env(safe-area-inset-bottom,0px))!important;padding:4px 6px env(safe-area-inset-bottom,0px)!important;grid-template-columns:repeat(5,1fr)!important;background:rgba(255,255,255,.98)!important;border-top:1px solid #e1e6ef!important;box-shadow:0 -8px 26px rgba(20,32,55,.08)!important}
 .mobile-nav button{min-width:0!important;min-height:54px!important;margin:0!important;padding:5px 2px!important;border-radius:13px!important;font-size:20px!important;color:#69758a!important;transition:background .12s,color .12s,transform .12s!important}
 .mobile-nav button span{font-size:10px!important;font-weight:650!important;margin-top:2px!important}.mobile-nav button.on{color:#245fd5!important;background:#edf3ff!important;font-weight:800!important}.mobile-nav .field{margin:0!important;background:transparent!important;color:#69758a!important;border-radius:13px!important;box-shadow:none!important}.mobile-nav .field.on{background:#245fd5!important;color:#fff!important;box-shadow:0 5px 14px rgba(36,95,213,.25)!important;transform:translateY(-2px)!important}
 .sync-badge{display:none!important}
 .m-home{display:grid;gap:12px}.m-context{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:0 2px}.m-context label{font-size:12px;font-weight:800;color:#68758a}.m-context select{width:100%;min-height:44px;padding:0 38px 0 12px;border:1px solid #dbe1eb;border-radius:13px;background:#fff;color:#172033;font-size:14px}
 .m-primary{padding:18px;background:#fff;border:1px solid #e2e7ef;border-radius:22px;box-shadow:0 8px 28px rgba(30,47,80,.06)}.m-primary>div:first-child small{font-size:10px;font-weight:850;letter-spacing:.14em;color:#6f7b90}.m-primary h2{font-size:25px;line-height:1.08;margin:5px 0 5px;color:#172033}.m-primary p{margin:0;color:#6d778a;font-size:13px}.m-primary-actions{display:grid;grid-template-columns:1.15fr 1fr;gap:9px;margin-top:16px}.m-primary-actions .btn{min-height:50px!important;padding:9px 11px!important;border-radius:14px!important;font-size:14px!important;white-space:normal!important}.m-primary-actions .field-start{background:#fff!important;border:1px solid #d9e0ea!important;color:#172033!important}
 .m-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.m-kpis button{min-width:0;min-height:78px;padding:10px 6px;border:1px solid #e1e6ee;border-top:3px solid #d5dae3;border-radius:15px;background:#fff;text-align:left;color:#172033}.m-kpis button.red{border-top-color:#e14b53}.m-kpis button.amber{border-top-color:#e4a13a}.m-kpis button.violet{border-top-color:#7557df}.m-kpis b{display:block;font-size:24px;line-height:1;margin-bottom:7px}.m-kpis span{display:block;font-size:10px;line-height:1.15;color:#707b8e}
 .m-section{background:#fff;border:1px solid #e2e7ef;border-radius:18px;padding:14px;box-shadow:0 5px 20px rgba(30,47,80,.035)}.m-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.m-section-head h3{font-size:16px;margin:0}.m-section-head>span{min-width:28px;height:28px;display:grid;place-items:center;border-radius:999px;background:#fff0ee;color:#b72f37;font-size:12px;font-weight:850}.m-section-head>button{min-height:36px;border:0;background:#f1f5fb;color:#3157a8;border-radius:10px;padding:0 11px;font-weight:750}
 .m-row,.m-site{width:100%;min-height:54px;display:grid;align-items:center;border:0;border-top:1px solid #edf0f5;background:#fff;color:#172033;text-align:left}.m-row{grid-template-columns:8px minmax(0,1fr) 18px;gap:10px;padding:9px 2px}.m-row:first-of-type{border-top:0}.m-row .dot{width:7px;height:7px;border-radius:99px;background:#e14b53}.m-row .dot.amber{background:#e4a13a}.m-row span,.m-site span{min-width:0}.m-row b,.m-site b{display:block;font-size:13px;line-height:1.25}.m-row small,.m-site small{display:block;color:#7a8495;font-size:10px;line-height:1.25;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-row strong{font-size:20px;color:#a1a9b6}
 .m-site{grid-template-columns:minmax(0,1fr) 34px;gap:10px;padding:10px 2px}.m-site em{width:30px;height:30px;display:grid;place-items:center;border-radius:99px;background:#eef2f7;font-style:normal;font-size:11px;font-weight:850}.m-site em.hot{background:#fff0ee;color:#b72f37}.m-empty{padding:16px 4px;color:#748095;font-size:13px}
 .m-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.m-quick button{min-height:68px;border:1px solid #e0e6ef;background:#fff;border-radius:15px;color:#26344c;font-size:18px;padding:8px 4px}.m-quick span{display:block;margin-top:5px;font-size:9px;font-weight:700;line-height:1.1}
 .btn,input,select,textarea,.nav,.tile{min-height:44px}
}
@media(max-width:390px){.m-primary-actions{grid-template-columns:1fr}.m-kpis{grid-template-columns:1fr 1fr}.m-kpis button{min-height:70px}.m-quick{grid-template-columns:1fr 1fr}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


html.phone-ui body{padding-bottom:calc(62px + env(safe-area-inset-bottom,0px))!important;background:#f5f7fb!important}
html.phone-ui .side,html.phone-ui .bottom,html.phone-ui .top-controls{display:none!important}
html.phone-ui .main{margin:0!important;width:100%!important;padding:0!important}
html.phone-ui .top{position:sticky!important;top:0!important;z-index:100!important;display:grid!important;grid-template-columns:42px minmax(0,1fr)!important;align-items:center!important;gap:9px!important;height:58px!important;min-height:58px!important;padding:7px 12px!important;background:rgba(255,255,255,.98)!important;border-bottom:1px solid #e6eaf1!important;backdrop-filter:blur(12px)!important}
html.phone-ui .top-back{display:grid!important;place-items:center!important;width:42px!important;height:42px!important;min-height:42px!important;padding:0!important;border-radius:12px!important}
html.phone-ui.phone-dashboard .top-back{visibility:hidden!important;pointer-events:none!important}
html.phone-ui .top-title h1{font-size:18px!important;line-height:1.05!important;margin:0!important}
html.phone-ui .top-title .sub{font-size:10px!important;line-height:1.15!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
html.phone-ui .view{padding:10px 12px calc(16px + env(safe-area-inset-bottom,0px))!important;min-height:calc(100dvh - 120px)!important;overflow-x:hidden!important}
html.phone-ui .m-home{gap:10px!important}html.phone-ui .m-context{grid-template-columns:64px minmax(0,1fr)!important;gap:8px!important;padding:0!important}html.phone-ui .m-context label{font-size:11px!important}html.phone-ui .m-context select{min-height:42px!important;border-radius:12px!important;font-size:13px!important}
html.phone-ui .m-primary{padding:15px!important;border-radius:18px!important}html.phone-ui .m-primary h2{font-size:22px!important;margin:4px 0!important}html.phone-ui .m-primary p{font-size:12px!important}html.phone-ui .m-primary-actions{gap:8px!important;margin-top:12px!important}html.phone-ui .m-primary-actions .btn{min-height:46px!important;font-size:13px!important;border-radius:12px!important}
html.phone-ui .m-kpis{gap:7px!important}html.phone-ui .m-kpis button{min-height:66px!important;padding:8px 7px!important;border-radius:13px!important}html.phone-ui .m-kpis b{font-size:22px!important;margin-bottom:5px!important}html.phone-ui .m-kpis span{font-size:9.5px!important}
html.phone-ui .m-section{padding:12px!important;border-radius:16px!important}html.phone-ui .m-row,html.phone-ui .m-site{min-height:50px!important}html.phone-ui .m-quick button{min-height:62px!important;border-radius:14px!important}
html.phone-ui .mobile-nav{display:grid!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:8500!important;height:calc(60px + env(safe-area-inset-bottom,0px))!important;padding:3px 5px env(safe-area-inset-bottom,0px)!important;background:rgba(255,255,255,.98)!important;border-top:1px solid #e1e6ef!important;box-shadow:0 -6px 22px rgba(20,32,55,.08)!important}
html.phone-ui .mobile-nav button{min-height:50px!important;border-radius:12px!important;font-size:18px!important}html.phone-ui .mobile-nav button span{font-size:9.5px!important}html.phone-ui .mobile-nav .field{margin:0!important;background:transparent!important;color:#69758a!important;box-shadow:none!important;transform:none!important}html.phone-ui .mobile-nav .field.on{background:#edf3ff!important;color:#245fd5!important;box-shadow:none!important;transform:none!important}html.phone-ui .sync-badge{display:none!important}
@media(max-width:390px){html.phone-ui .m-kpis{grid-template-columns:1fr 1fr!important}html.phone-ui .m-kpis button{min-height:62px!important}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}

@media(max-width:850px){.mobile-nav button span{font-size:10.5px!important}.mobile-nav button.field span{font-size:10px!important}}
/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.field-head-top,.field-progress-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.field-head h2{margin:5px 0 4px}.field-context-line{opacity:.96}.field-context-edit{margin-top:10px}.field-progress .progressbar{margin-top:8px}.field-stats,.field-status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.field-stats span,.field-status-grid span{background:#f5f7fb;border-radius:12px;padding:8px;text-align:center;font-size:12px}.field-stats b,.field-status-grid b{display:block;font-size:16px}.field-warning{margin-top:10px;padding:9px 11px;border-radius:11px;background:#fff6e6;color:#8a5700;font-size:12px;font-weight:700}.field-photo{outline:2px solid #2b70f7}.field-danger{outline:1px solid #efc7cb}.field-close{grid-column:1/-1}.field-status{margin-top:12px}.field-photo-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-photo-choices .btn{min-height:76px;text-align:left;white-space:normal}.field-photo-choices small{display:block;margin-top:5px;color:#667085}.check-summary{padding:12px;border-radius:12px;background:#eef4ff;margin-bottom:12px}.field-check{margin-bottom:8px}
@media(max-width:600px){.field-head{padding:14px!important}.field-head h2{font-size:24px!important}.field-context-line{font-size:13px;line-height:1.35}.field-context-edit{min-height:40px!important}.field-progress{padding:14px!important}.field-stats{grid-template-columns:repeat(4,1fr);gap:5px}.field-stats span{padding:7px 3px;font-size:10px}.field-stats b{font-size:15px}.field-actions-v2{gap:9px!important}.field-actions-v2 .field-action{min-height:72px!important;padding:11px!important;font-size:14px!important}.field-actions-v2 .field-action small{font-size:11px!important;line-height:1.25}.field-photo-choices{grid-template-columns:1fr}.field-status-grid{grid-template-columns:1fr 1fr}.field-status{margin-bottom:8px}}
.row-action{border:0;background:transparent;font-size:18px;cursor:pointer;padding:8px}.row-action:hover{background:#eef4ff;border-radius:8px}
/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}

html.checklist-mode .mobile-nav{display:none!important}html.checklist-mode body{padding-bottom:0!important}html.checklist-mode #modal{z-index:9000!important}.field-check{transition:all .15s ease}.field-check-actions .check-ok{font-weight:800;border-color:#d8dee8;background:#fff;color:#26344c}.check-complete{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid #edf0f5}.check-complete>b{font-size:12px}.check-complete .btn{min-height:34px}.check-add{width:100%;margin-top:7px;text-align:left;white-space:normal}@media(max-width:600px){html.checklist-mode .modal .box{height:calc(100dvh - 58px)!important;max-height:none!important;bottom:0!important}.field-check-actions{display:grid!important;grid-template-columns:1.35fr .75fr 1.25fr .75fr!important;gap:5px!important}.field-check-actions .btn{min-width:0!important;padding:8px 5px!important;font-size:12px!important}.field-check-main{margin-bottom:8px}.check-complete{grid-template-columns:minmax(0,1fr) auto}.check-complete .btn{grid-column:1/-1}} .field-check-actions .check-ok.is-selected{border-color:#86c99c!important;background:#edf9f0!important;color:#176b35!important}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.field-check-actions .btn[aria-pressed="false"]{background:#fff!important;color:#26344c!important;border-color:#d8dee8!important;font-weight:600!important}
.field-check-actions .check-ok.is-selected{background:#edf9f0!important;color:#176b35!important;border-color:#86c99c!important;font-weight:800!important}
.field-check-actions .check-nc.is-selected{background:#fff0f1!important;color:#a61b2b!important;border-color:#e59aa4!important;font-weight:800!important}
.field-check-actions .check-obs.is-selected{background:#fff7e8!important;color:#8a5700!important;border-color:#efc56f!important;font-weight:800!important}
.field-check-actions .check-na.is-selected{background:#f0f2f5!important;color:#475467!important;border-color:#b9c0ca!important;font-weight:800!important}
.field-check.has-result{border-color:#d7dde7}.check-summary b{font-variant-numeric:tabular-nums}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.health-ring{width:118px;height:118px;border-radius:999px;background:conic-gradient(#2b6ff7 calc(var(--score,75)*1%),#e9edf5 0);display:flex;align-items:baseline;justify-content:center;gap:2px;padding-top:36px;margin:4px auto 14px;box-shadow:inset 0 0 0 12px #fff}.health-ring b{font-size:34px}.health-ring span{color:#758096}.exec-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.exec-kpis button{border:1px solid var(--line);background:#f8faff;border-radius:16px;padding:18px 12px;text-align:left}.exec-kpis b{display:block;font-size:28px}.exec-kpis span{font-size:12px;color:var(--muted)}@media(max-width:720px){.exec-kpis{grid-template-columns:1fr 1fr}.exec-kpis button{min-height:94px}.health-ring{width:108px;height:108px}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


@media(max-width:850px){.modal .box{height:min(94dvh,900px)!important;max-height:94dvh!important;overflow:hidden!important}.modal .mh{flex:0 0 auto}.modal .mb{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;padding-bottom:24px}.modal .mf{flex:0 0 auto!important;position:relative!important;z-index:3!important;max-height:30dvh;overflow-y:auto!important;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))!important}.modal-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.modal-actions-grid .btn{min-height:52px}.dossier-kpis{grid-template-columns:1fr 1fr!important}.attachment-pick{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.create-inline{width:100%;min-height:48px;text-align:left}.tap-hint{display:block;color:#246bfd;margin-top:8px}.link-pill{border:0;border-radius:999px;padding:7px 10px;background:#eef4ff;color:#2459b8;font-weight:700}.clickable-row{cursor:pointer}.field-stats{grid-template-columns:repeat(2,1fr)!important}#fdraft{width:100%!important;min-height:220px!important;max-height:38dvh!important;font-size:14px!important;line-height:1.35!important}.modal-scroll-note{margin-top:10px}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.doc-quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.doc-action{border:1px solid #e1e6ef;background:#fff;border-radius:14px;padding:15px;text-align:left;cursor:pointer;color:#172033}.doc-action b{display:block;font-size:15px;margin-bottom:5px}.doc-action span{font-size:12px;color:#667085}.doc-row{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;padding:12px 4px;border-bottom:1px solid #edf0f5;cursor:pointer}.doc-mark{width:38px;height:38px;border-radius:11px;background:#eef4ff;display:grid;place-items:center;font-weight:800}.status-pill{display:inline-block;padding:5px 9px;border-radius:999px;background:#eef4ff;font-size:12px}.doc-editor-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:13px 4px;border-bottom:1px solid #edf0f5}.toggle-row span{display:flex;flex-direction:column;gap:3px}.toggle-row small{color:#667085}.toggle-row input{width:22px;height:22px}@media(max-width:700px){.doc-quick{grid-template-columns:1fr}.doc-row{grid-template-columns:38px 1fr auto}.doc-action{padding:13px}.modal .box{max-height:calc(100dvh - 86px);margin-bottom:76px}.modal .mb{overflow:auto;overscroll-behavior:contain;min-height:0}.modal .mf{position:sticky;bottom:0;background:#fff;padding-bottom:max(10px,env(safe-area-inset-bottom));z-index:3}}

.empty-action p{margin:8px auto 14px;max-width:520px}.kpi[onclick],.clickable-row,.doc-row{cursor:pointer}
@media(max-width:700px){.table{min-width:0!important}.selectable-table{min-width:680px!important}.workspace-tabs.compact{scrollbar-width:thin}.modal .mf{display:grid!important;grid-template-columns:1fr 1fr;gap:8px;overflow:visible!important;max-height:none!important}.modal .mf .btn{min-width:0!important;white-space:normal}.doc-editor-head{position:sticky;top:0;background:#fff;z-index:2;padding:4px 0}.preview-toolbar{position:sticky;top:0;background:#fff;z-index:2;padding-bottom:8px}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


@media(min-width:1181px){.view{max-width:none;padding:24px 32px}.hero{padding:22px 26px}.grid{gap:16px}.side{width:270px}.app{grid-template-columns:270px minmax(0,1fr)}.table th,.table td{padding:12px 14px}.card{padding:20px}.kpis{grid-template-columns:repeat(6,minmax(140px,1fr))}}
.site-setup-strip{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:8px;margin:0 0 12px}.site-setup-strip button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px;text-align:left;cursor:pointer}.site-setup-strip b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#eef4ff;color:#246bfd;margin-bottom:6px}.site-setup-strip span{font-weight:700}.setup-next{display:grid;grid-template-columns:auto 1fr;gap:10px 12px;align-items:center;margin:16px 0}.signer-edit{display:grid;grid-template-columns:1.2fr 1fr 1fr auto auto auto;gap:8px;align-items:end;border:1px solid var(--line);border-radius:12px;padding:10px;margin:8px 0}.signer-edit .field{margin:0}.signer-check{padding:11px 4px;white-space:nowrap}.doc-section{border-top:1px solid var(--line);padding-top:12px;margin-top:16px}.photo-choice{display:flex;gap:8px;align-items:center;padding:9px;border-bottom:1px solid var(--line)}
@media(max-width:850px){.site-setup-strip{display:flex;overflow-x:auto}.site-setup-strip button{min-width:126px}.signer-edit{grid-template-columns:1fr 1fr}.signer-edit .field:first-child{grid-column:1/-1}.signer-check{padding:7px 0}.selectable-table{min-width:0!important}.selectable-table th:nth-child(n+4):not(:last-child),.selectable-table td:nth-child(n+4):not(:last-child){display:none}.selectable-table th,.selectable-table td{white-space:normal!important}.selectable-table td{vertical-align:top}.tablewrap{overflow-x:hidden!important}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.consequence-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}.consequence-options .check{margin:0;display:flex;align-items:center;gap:8px;min-width:0}.consequence-options .check span{white-space:normal;overflow-wrap:anywhere}.attachment-action{width:100%;min-height:48px;text-align:left}.attachment-preview{margin-top:7px}.pending-file{padding:7px 9px;border:1px solid var(--line);border-radius:9px;margin-top:5px;background:#f8fafc}.actionable-stats button{border:0;background:#f5f7fb;border-radius:12px;padding:8px;text-align:center;cursor:pointer;color:inherit}.actionable-stats button:active{background:#e8efff}.field-blockers{cursor:default}.field-blockers>button{display:flex;width:100%;justify-content:space-between;gap:10px;border:0;background:transparent;padding:10px 0;text-align:left;font:inherit;cursor:pointer;color:inherit;border-top:1px solid #f0e2c7}.field-open-items button{border:0;background:#fff4e5;color:#8a5700;padding:8px 10px;border-radius:10px;font-weight:700;cursor:pointer;text-align:left}.doc-photo-library{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}.photo-choice-card{display:grid;gap:7px;border:1px solid var(--line);border-radius:12px;padding:8px;cursor:pointer;min-width:0}.photo-choice-card img{width:100%;aspect-ratio:4/3;object-fit:cover;background:#eef1f5;border-radius:8px}.photo-choice-card span{font-size:12px;overflow-wrap:anywhere}.photo-choice-card.photo-missing img{object-fit:contain}.select-tools input[list]{width:100%}
@media(max-width:600px){.consequence-options{grid-template-columns:1fr}.consequence-options .check{min-height:52px}.doc-photo-library{grid-template-columns:1fr 1fr}.actionable-stats{grid-template-columns:1fr 1fr!important}.actionable-stats button{min-height:66px}.field-open-items{display:grid!important;grid-template-columns:1fr}.field-open-items button{width:100%}.modal .mb{overflow-x:hidden}.modal .grid>.span6,.modal .grid>.span8,.modal .grid>.span4{grid-column:1/-1}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.span5{grid-column:span 5}.span7{grid-column:span 7}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.card-head h3{margin:0}
.attention-wide{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:64px}.attention-wide span{min-width:0}.attention-wide span b,.attention-wide span small{display:block}.attention-wide span small{margin-top:4px;color:var(--mut)}.attention-wide em{font-style:normal;color:var(--mut);white-space:nowrap}
.work-progress-row{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:13px 4px;display:grid;grid-template-columns:minmax(220px,1fr) minmax(160px,280px) 56px;gap:14px;align-items:center;text-align:left;cursor:pointer}.work-progress-row:hover{background:#f8faff}.work-progress-row span b,.work-progress-row span small{display:block}.work-progress-row span small{color:var(--mut);margin-top:3px}.work-progress-row i{height:9px;background:#e9edf5;border-radius:999px;overflow:hidden}.work-progress-row i u{display:block;height:100%;background:var(--blue);border-radius:999px;text-decoration:none}.work-progress-row strong{text-align:right}
@media(min-width:1100px){.dashboard-grid>.dashboard-attention{grid-column:span 8}.dashboard-grid>.dashboard-sites{grid-column:span 4}.dashboard-attention,.dashboard-sites{min-height:300px}.ops-kpis{grid-template-columns:repeat(4,minmax(170px,220px));justify-content:start}.ops-focus{width:100%}}
@media(max-width:1099px) and (min-width:851px){.dashboard-grid>.span8,.dashboard-grid>.span4,.dashboard-grid>.span7,.dashboard-grid>.span5{grid-column:span 6}.work-progress-row{grid-template-columns:1fr 130px 48px}}
@media(max-width:850px){.span5,.span7{grid-column:1/-1}.attention-wide{align-items:flex-start;flex-direction:column;gap:5px}.work-progress-row{grid-template-columns:1fr 52px}.work-progress-row i{grid-column:1/-1;grid-row:2}.work-progress-row strong{grid-column:2;grid-row:1}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.schedule-list{display:grid;gap:10px}.schedule-row{width:100%;border:0;background:transparent;display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(280px,3fr) 64px;align-items:center;gap:16px;padding:10px 4px;text-align:left;cursor:pointer}.schedule-row span{display:grid}.schedule-row small{color:#6b7280;margin-top:3px}.schedule-row>i{height:18px;background:#eef2f7;border-radius:999px;position:relative;overflow:hidden}.schedule-row>i>u{position:absolute;top:2px;bottom:2px;border-radius:999px;background:#dbeafe;text-decoration:none;overflow:hidden}.schedule-row>i>u>em{display:block;height:100%;background:#2563eb;border-radius:999px}.schedule-row strong{text-align:right}.journal-row{padding:14px 0;border-bottom:1px solid #e5e7eb}.journal-row:last-child{border-bottom:0}.journal-row small{display:block;color:#6b7280;margin-top:5px}@media(max-width:900px){.schedule-row{grid-template-columns:1fr 70px}.schedule-row>i{grid-column:1/-1;grid-row:2}.schedule-row strong{grid-column:2;grid-row:1}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


/* Cantiere360 4.8 · KPI semantici e controlli operativi */
.ops-kpis .kpi{border-top-width:5px;transition:.16s ease;box-shadow:0 6px 18px #22314d0b}.ops-kpis .kpi:hover{transform:translateY(-1px)}
.ops-kpis .kpi.red{background:#fff2f3;border-color:#f2c5c8;border-top-color:var(--red)}.ops-kpis .kpi.red b{color:#b4232b}
.ops-kpis .kpi.amber,.ops-kpis .kpi.orange{background:#fff8e9;border-color:#f2dfb2;border-top-color:#e8a62b}.ops-kpis .kpi.amber b,.ops-kpis .kpi.orange b{color:#9a6500}
.ops-kpis .kpi.violet{background:#f6f2ff;border-color:#ded2ff;border-top-color:var(--violet)}.ops-kpis .kpi.violet b{color:#6043c8}
.ops-kpis .kpi.green{background:#eefaf4;border-color:#c7ead8;border-top-color:var(--green)}.ops-kpis .kpi.green b{color:#14764d}
.ops-kpis .kpi.blue{background:#eff5ff;border-color:#ccdcff;border-top-color:var(--blue)}.ops-kpis .kpi.blue b{color:#2058c9}
.ops-kpis .kpi.neutral{background:#fff;border-color:#e5e9f2;border-top-color:#c8d0dc;box-shadow:0 4px 14px #22314d08}.ops-kpis .kpi.neutral b{color:#596579}.m-kpis button.neutral{border-top-color:#c8d0dc;background:#fff}.m-kpis button.neutral b{color:#596579}
.prestart-row,.hold-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 4px;border-bottom:1px solid var(--line)}.prestart-row small,.hold-row small{display:block;color:var(--mut);margin:4px 0}.prestart-row.blocked{border-left:4px solid #e8a62b;padding-left:12px}.prestart-row.ready{border-left:4px solid var(--green);padding-left:12px}.prestart-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.prestart-tags span{font-size:11px;background:#fff5dc;border:1px solid #f0d79a;border-radius:999px;padding:4px 8px}.prestart-tags span.ok{background:#eaf8f1;border-color:#bde3d0;color:#176b49}.ops-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:850px){.prestart-row,.hold-row{align-items:flex-start;flex-direction:column}.prestart-row .row,.hold-row .row{width:100%}.ops-actions{grid-template-columns:1fr 1fr}}


/* 6.1 · semantic design system: status first, category second */
.kpi.neutral,.m-kpis button.neutral,.exec-kpis button.neutral,.dossier-health>div.neutral{background:#fff!important;border-color:#e3e8f0!important;border-top-color:#c8d0dc!important;color:#596579!important;box-shadow:0 4px 14px #22314d08!important}
.kpi.neutral b,.kpi.neutral strong,.m-kpis button.neutral b,.exec-kpis button.neutral b,.dossier-health>div.neutral b{color:#596579!important}
.kpi:focus-visible,.m-kpis button:focus-visible,.btn:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid rgba(36,107,253,.28)!important;outline-offset:2px!important}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(max-width:850px){.kpi,.m-kpis button{overflow:hidden}.kpi small,.m-kpis span{overflow-wrap:anywhere}.tablewrap{border-radius:14px;border:1px solid #e7ebf2}.modal .box{box-shadow:0 -18px 60px rgba(18,32,58,.18)!important}}


/* 6.2 · visual consistency sweep */
.kpi,.m-kpis button,.exec-kpis button,.actionable-stats button{min-width:0}
.kpi.neutral,.m-kpis button.neutral,.exec-kpis button.neutral,.actionable-stats button.neutral{background:#fff!important;border-color:#e3e8f0!important;border-top-color:#c8d0dc!important;box-shadow:0 4px 14px rgba(34,49,77,.05)!important}
.kpi.neutral b,.m-kpis button.neutral b,.exec-kpis button.neutral b,.actionable-stats button.neutral b{color:#596579!important}
.card>h3:first-child{margin-top:0}.empty{border:1px dashed #d8dee9;border-radius:14px;padding:18px;background:#fbfcfe}
.modal .mf .btn{min-height:42px}.top-controls>*{min-height:40px}
@media(max-width:700px){.hero{padding:16px!important}.card{padding:15px!important}.kpis{gap:8px!important}.kpi{padding:14px 12px!important}.kpi b{font-size:25px!important}.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal .mf{display:flex;gap:8px;flex-wrap:wrap}.modal .mf .btn{flex:1 1 140px}}


/* 6.3 · sistema grafico trasversale: densità, gerarchia, mobile e stati */
:root{--c360-radius:14px;--c360-gap:12px;--c360-focus:0 0 0 3px rgba(37,99,235,.18)}
.kpi.neutral,.m-kpis button.neutral,.exec-kpis button.neutral,.dossier-health>div.neutral,.actionable-stats button.neutral{background:#fff!important;border-color:#dfe4ec!important;color:#25324a!important;box-shadow:none!important}
.kpi.neutral b,.m-kpis button.neutral b,.exec-kpis button.neutral b,.dossier-health>div.neutral b,.actionable-stats button.neutral b{color:#25324a!important}
.kpi.neutral small,.m-kpis button.neutral small,.exec-kpis button.neutral small,.dossier-health>div.neutral span,.actionable-stats button.neutral small{color:#78849a!important}
button,.btn,input,select,textarea{transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}
button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none!important;box-shadow:var(--c360-focus)!important}
button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;filter:saturate(.4)}
.field label{font-weight:700;letter-spacing:.01em}.field input,.field select,.field textarea{min-height:44px}.field textarea{min-height:96px;resize:vertical}
.modal .box{border-radius:18px;overflow:hidden}.modal .mh{position:sticky;top:0;z-index:2;background:inherit}.modal .mf{position:sticky;bottom:0;z-index:2;background:inherit;box-shadow:0 -8px 20px rgba(15,23,42,.05)}
.tablewrap,.table-wrap{border-radius:14px;overflow:auto;-webkit-overflow-scrolling:touch}table{font-variant-numeric:tabular-nums}th{white-space:nowrap}
.empty{border-radius:14px;padding:24px!important;text-align:center}.notice,.attention{border-radius:14px}
@media(max-width:720px){.kpis{gap:8px!important}.kpi{min-height:88px;padding:12px!important}.modal .box{max-height:94dvh!important}.modal .mb{overscroll-behavior:contain}.actions{gap:8px!important}.actions .btn{min-height:44px}.m-row{gap:10px}.m-row>.btn{min-height:40px}.field input,.field select,.field textarea{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}


/* 6.4 · product-wide refinement: calm surfaces, semantic states, faster scanning */
:root{--surface:#fff;--surface-soft:#f8fafc;--text-strong:#172033;--text-muted:#6f7890}
.view{max-width:1600px;margin-inline:auto}.card,.hero,.kpi,.notice,.attention{border-color:#e4e9f1}
.kpis{align-items:stretch}.kpi{position:relative}.kpi b,.metric b,.stat b{font-variant-numeric:tabular-nums}
.kpi.neutral,.metric.neutral,.stat.neutral,.summary-kpi.neutral{background:var(--surface)!important;border-color:#e2e7ef!important;box-shadow:none!important}
.kpi.neutral:before,.metric.neutral:before,.stat.neutral:before,.summary-kpi.neutral:before{display:none!important}
.quality-row,.m-row{border-radius:12px}.quality-row:hover,.m-row:hover{background:#f8fafc}
.tablewrap table tbody tr:hover,.table-wrap table tbody tr:hover{background:#f7f9fd}
.modal .box{border:1px solid #e3e8f0}.modal .mh{backdrop-filter:saturate(1.2) blur(10px)}
.field>small,.sub{line-height:1.45}.field input::placeholder,.field textarea::placeholder{color:#98a2b3}
.badge,.pill{font-weight:700;letter-spacing:.01em}
@media(min-width:1100px){.main{min-width:0}.view{padding-inline:clamp(18px,2vw,34px)}}
@media(max-width:720px){.top{gap:8px}.top-title h1{font-size:20px}.view{padding-bottom:92px}.card{border-radius:16px}.modal .mf{padding-bottom:max(12px,env(safe-area-inset-bottom))}.bottom{padding-bottom:max(4px,env(safe-area-inset-bottom))}}

\n/* 6.6 · full visual semantics + modern responsive polish */\n[data-semantic-zero="1"]{background:#fff!important;background-image:none!important;border-color:#dfe5ee!important;border-top-color:#c8d0dc!important;box-shadow:none!important;color:#344054!important}\n[data-semantic-zero="1"] b,[data-semantic-zero="1"] strong,[data-semantic-zero="1"] .n{color:#344054!important}\n[data-semantic-zero="1"] small,[data-semantic-zero="1"] span{color:#7a8699!important}\n.hero{background:linear-gradient(180deg,#fff 0%,#fbfcff 100%);box-shadow:0 10px 28px rgba(24,39,75,.045)}\n.card{box-shadow:0 8px 24px rgba(24,39,75,.035)}.card:hover{border-color:#d9e1ec}\n.btn{border-radius:11px}.btn.primary{box-shadow:0 4px 12px rgba(36,107,253,.14)}\n.kpi{border-radius:15px}.kpi small{line-height:1.25}.kpi[onclick]{cursor:pointer}\n.tablewrap table,.table-wrap table{width:100%}.tablewrap th,.table-wrap th{position:sticky;top:0;z-index:1;background:#f8fafc}\n.modal .box{width:min(920px,calc(100vw - 28px));max-height:min(90dvh,900px)}.modal .mb{overflow:auto}\n.field select,.field input,.field textarea{border-radius:11px}.field select{cursor:pointer}\n.status-pill,.badge,.pill{white-space:nowrap}\n@media(max-width:720px){.modal{align-items:flex-end!important;padding:0!important}.modal .box{width:100%!important;max-width:none!important;max-height:94dvh!important;border-radius:20px 20px 0 0!important;border-bottom:0!important}.modal .mh{padding-top:14px}.modal .mf{gap:7px!important}.modal .mf .btn{flex:1 1 calc(50% - 7px)}.grid{column-gap:10px!important}.span4,.span5,.span6,.span7,.span8{grid-column:1/-1!important}.report-output-bar{overflow-x:auto;flex-wrap:nowrap!important;padding-bottom:5px}.report-output-bar .btn{white-space:nowrap}.kpi{min-height:84px}}\n

/* 6.6 · global calm UI / semantic states / dense professional forms */
:root{--c360-radius:14px;--c360-border:#e3e8f0;--c360-muted:#667085}
.kpi.neutral,[data-semantic-zero="1"]{background:#fff!important;border-color:var(--c360-border)!important;color:#344054!important}
.kpi.neutral:before,[data-semantic-zero="1"]:before{display:none!important}
.notice.good{border-color:#cfe8d8}.notice.warn{border-color:#f1dfad}.notice.danger{border-color:#f0c8c8}
.field label{font-weight:650;letter-spacing:.005em}.field input,.field select,.field textarea{min-height:42px}
.field textarea{min-height:96px}.actions{row-gap:8px}.empty{border:1px dashed #d8dee8;border-radius:14px;padding:22px}
.card h2,.card h3{letter-spacing:-.012em}.sub{line-height:1.45}.tablewrap,.table-wrap{border-radius:14px;overflow:auto}
[data-duplicate-option="1"]{color:#8a3f3f}
@media(max-width:720px){.top{gap:8px}.top-title h1{font-size:19px}.view{padding-left:12px!important;padding-right:12px!important}.card{padding:14px!important}.actions .btn{min-height:42px}.field input,.field select,.field textarea{font-size:16px}}
@media(min-width:1200px){.view{max-width:1600px}.card{padding:20px}}


.quick-presets{display:flex;gap:8px;overflow:auto;padding:2px 0 12px;scrollbar-width:thin}.quick-presets button{border:1px solid var(--line,#dbe2ea);background:#f8fafc;border-radius:999px;padding:8px 12px;white-space:nowrap;font-weight:700;cursor:pointer}.quick-presets button:hover{background:#eef4ff;border-color:#a9c1ff}.kpi[data-semantic-zero="1"],.metric[data-semantic-zero="1"]{background:#f8fafc!important;border-color:#e2e8f0!important;color:#334155!important}.kpi[data-semantic-zero="1"] b,.metric[data-semantic-zero="1"] b{color:#334155!important}.dossier-health .red{border-color:#fecaca;background:#fff7f7}.dossier-health .amber{border-color:#fde68a;background:#fffbeb}.dossier-health .green{border-color:#bbf7d0;background:#f0fdf4}@media(max-width:720px){.quick-presets{margin-left:-2px;margin-right:-2px}.quality-row{gap:10px}.quality-row strong{max-width:90px;text-align:right}}


/* 6.9 · semantic visual system applied product-wide */
[data-semantic-zero="1"],.neutral{--state-accent:#cbd3df}
[data-semantic-zero="1"].kpi,[data-semantic-zero="1"].metric,[data-semantic-zero="1"].stat,[data-semantic-zero="1"].summary-kpi,[data-semantic-zero="1"].dashboard-kpi,[data-semantic-zero="1"].report-kpi,[data-semantic-zero="1"].status-kpi,[data-semantic-zero="1"].mini-kpi{background:#fff!important;background-image:none!important;border-color:#e2e7ef!important;border-top-color:#cbd3df!important;border-left-color:#e2e7ef!important;box-shadow:none!important;color:#344054!important}
[data-semantic-zero="1"] b,[data-semantic-zero="1"] strong,[data-semantic-zero="1"] .n{color:#344054!important}
[data-semantic-zero="1"] small,[data-semantic-zero="1"] span{color:#7b8798!important}
.kpi,.metric,.stat,.summary-kpi{transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease,transform .15s ease}
.card,.hero{box-shadow:0 5px 18px rgba(24,39,75,.035)!important}.card:hover{box-shadow:0 7px 22px rgba(24,39,75,.05)!important}
.table th{font-size:11px;text-transform:uppercase;letter-spacing:.035em;color:#667085}.table td{vertical-align:top}.table tbody tr:last-child td{border-bottom:0}
.field label{color:#475467}.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:#8db0ff;box-shadow:0 0 0 3px rgba(36,107,253,.10)}
.notice{line-height:1.45}.empty{background:#fbfcfe}.actions .btn{font-weight:650}
@media(max-width:720px){.kpi,.metric,.summary-kpi{min-height:82px}.table th,.table td{padding:10px 11px}.hero h2{font-size:19px}.modal .mf .btn{min-height:46px}}
@media(min-width:1180px){.view{padding-top:26px}.card{border-radius:17px}.hero{border-radius:18px}}


/* 7.1 · sistema visivo semantico globale: il colore descrive uno stato reale. */
.kpi,.m-kpis button,.exec-kpis button,.summary-kpi,.dashboard-kpi,.report-kpi,.status-kpi,.mini-kpi,.actionable-stats button{transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}
[data-semantic-zero="1"],.neutral{--state-accent:#c8d0dc!important}
[data-semantic-zero="1"]{background:#fff!important;border-color:#e1e6ee!important;border-top-color:#c8d0dc!important;box-shadow:0 4px 14px rgba(34,49,77,.05)!important}
[data-semantic-zero="1"] b,[data-semantic-zero="1"] strong,[data-semantic-zero="1"] .n{color:#596579!important}
.attention.neutral{border-left-color:#c8d0dc!important;background:#fff!important;box-shadow:none!important}
.card,.hero,.kpi,.tile,.doc-action,.attention{border-color:#e3e8f0}
.table th{background:#f8fafc;color:#475467;font-size:12px;font-weight:800;letter-spacing:.01em;position:sticky;top:0;z-index:1}.table tbody tr:nth-child(even){background:#fbfcfe}.table tbody tr:hover{background:#f2f6fc}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid rgba(36,107,253,.12);border-color:#8eb1ff;box-shadow:0 0 0 1px #8eb1ff}
.empty{border:1px dashed #d7dde7;border-radius:14px;background:#fbfcfe}.notice{line-height:1.5}
@media(max-width:850px){.table{min-width:620px}.table th,.table td{white-space:normal;min-width:110px}.kpi{box-shadow:none!important}.modal .mf{backdrop-filter:blur(10px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}


/* 7.3 · revisione grafica globale: stato prima del colore, meno rumore, migliore densità */
:root{--surface-soft:#f8fafc;--text-strong:#172033;--text-soft:#667085;--border-soft:#e4e9f1}
.kpi,.metric,.stat,.summary-kpi,.dashboard-kpi,.report-kpi,.status-kpi,.mini-kpi,.m-kpis button,.exec-kpis button,.actionable-stats button{border-radius:15px!important}
[data-semantic-zero="1"]{background:var(--surface-soft)!important;border-color:var(--border-soft)!important;color:#475467!important;box-shadow:none!important}
[data-semantic-zero="1"]:before,[data-semantic-zero="1"]:after{display:none!important}
.attention.neutral,.notice.neutral{background:#fff!important;border-color:var(--border-soft)!important;color:#475467!important}
.card{overflow:clip}.card>h2:first-child,.card>h3:first-child{margin-top:0}.actions{display:flex;flex-wrap:wrap;align-items:center}
.modal .box{border-radius:20px;box-shadow:0 24px 70px rgba(20,32,55,.18)}.modal .mh{border-bottom:1px solid var(--border-soft)}.modal .mf{border-top:1px solid var(--border-soft);background:rgba(255,255,255,.96)}
.table td,.table th{line-height:1.4}.table tbody tr{transition:background .12s ease}.field{min-width:0}.field input,.field select,.field textarea{width:100%;box-sizing:border-box}
.quality-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;border:1px solid var(--border-soft);background:#fff;border-radius:13px;padding:12px 14px;margin:8px 0;cursor:pointer}.quality-row small{display:block;color:var(--text-soft);margin-top:3px}
@media(max-width:720px){.modal{padding:0!important;align-items:flex-end!important}.modal .box{width:100%!important;max-width:none!important;max-height:94dvh!important;border-radius:20px 20px 0 0!important}.modal .mb{overscroll-behavior:contain}.modal .mf{position:sticky;bottom:0;z-index:3;padding-bottom:max(12px,env(safe-area-inset-bottom))}.modal .mf .btn{flex:1 1 140px}.dossier-health{grid-template-columns:repeat(2,minmax(0,1fr))!important}.quality-row{align-items:flex-start}.quality-row strong{white-space:nowrap}}
@media(min-width:1200px){.main .view{max-width:1640px}.table td{padding-top:12px;padding-bottom:12px}}


.workspace-summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.site-setup-strip button{min-height:78px}.site-setup-strip button:hover{border-color:#9db8ff;background:#f7faff}.row-action+ .row-action{margin-left:5px}
@media(min-width:851px){.view{width:100%;max-width:1600px;padding:24px 32px}.hero{align-items:flex-start}.hero .actions{justify-content:flex-end}.site-setup-strip{grid-template-columns:repeat(7,minmax(125px,1fr))}.tablewrap{width:100%}.selectable-table{min-width:900px}.main{width:100%}}
@media(max-width:850px){.workspace-summary{align-items:stretch;flex-direction:column}.site-setup-strip{scroll-snap-type:x proximity}.site-setup-strip button{scroll-snap-align:start;min-width:142px}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.workspace-flow{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;margin:0 0 14px}.workspace-flow-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.flow-progress{white-space:nowrap;background:#eef4ff;color:#246bfd;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800}.site-setup-strip small{display:block;color:#7b8494;font-size:11px;margin-top:4px;font-weight:500}.guided-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:20px}.guided-empty .btn{margin-top:4px}
@media(min-width:1100px){.view{max-width:1760px;padding:28px 40px}.workspace-flow{padding:18px}.site-setup-strip{grid-template-columns:repeat(7,minmax(135px,1fr))}.grid{gap:18px}.card{padding:22px}.hero{padding:22px 24px}}
@media(max-width:850px){.workspace-flow{border-radius:16px;padding:12px}.workspace-flow-head{align-items:flex-start}.flow-progress{font-size:11px}.site-setup-strip{margin-bottom:0}}

/* 4.7 · archivio fotografico, presenze e chiusura NC */
.photo-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.photo-archive-card{border:1px solid var(--line);background:#fff;border-radius:16px;overflow:hidden;text-align:left;padding:0;cursor:pointer}.photo-archive-card img{width:100%;height:150px;object-fit:cover;background:#eef2f8;display:block}.photo-archive-card span{display:block;padding:12px}.photo-archive-card small{display:block;color:var(--muted);margin-top:4px}.photo-detail-preview img{width:100%;max-height:420px;object-fit:contain;border-radius:14px;background:#eef2f8}.nc-flow-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 4px;text-align:left;cursor:pointer}.nc-flow-row span{min-width:0}.nc-flow-row small{display:block;color:var(--muted);margin-top:5px}.nc-flow-row strong{white-space:nowrap}@media(max-width:700px){.photo-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-archive-card img{height:120px}.nc-flow-row{align-items:flex-start;flex-direction:column;gap:7px}.nc-flow-row strong{white-space:normal}}


.quality-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;border:1px solid var(--line,#dbe2ea);background:var(--surface,#fff);border-radius:14px;padding:14px 16px;margin:8px 0;cursor:pointer}.quality-row:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(15,23,42,.08)}.quality-row span{display:flex;flex-direction:column;gap:4px}.quality-row small{color:var(--muted,#64748b);font-weight:400}.quality-row strong{white-space:nowrap;color:var(--primary,#246bfd)}@media(max-width:640px){.quality-row{align-items:flex-start}.quality-row strong{font-size:12px}}

/* Cantiere360 6.8 · Visual System audit: stato prima del colore, densità e accessibilità coerenti */
:root{--c360-radius:14px;--c360-border:#e1e6ee;--c360-focus:#2457d6;--c360-muted:#667085}
.kpi,.metric,.stat,.summary-kpi,.m-kpis button,.exec-kpis button{border-radius:var(--c360-radius);transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}
.kpi[onclick],.m-kpis button,.exec-kpis button,.actionable-stats button{cursor:pointer}
.kpi[onclick]:hover,.m-kpis button:hover,.exec-kpis button:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(34,49,77,.08)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--c360-focus) 32%,transparent);outline-offset:2px}
.card{border-radius:var(--c360-radius)}
.tablewrap{border:1px solid var(--c360-border);border-radius:12px;overflow:auto;background:#fff}
.tablewrap table{margin:0}.tablewrap thead th{position:sticky;top:0;z-index:2;background:#f7f9fc}
.empty{border:1px dashed #d8dee8;border-radius:12px;padding:18px;color:var(--c360-muted);background:#fafbfc}
.modal .mb{overscroll-behavior:contain}.modal .field label{font-weight:650}
@media(max-width:760px){.kpis,.ops-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.modal .mb{max-height:72dvh}.actions,.row{gap:8px}.btn{min-height:42px}.tablewrap{max-width:100%}}
@media(max-width:420px){.kpis,.ops-kpis{grid-template-columns:1fr 1fr!important}.kpi{min-width:0}.kpi small{line-height:1.25}}






/* 7.6: compact, responsive workspace. Accent colors do not replace status labels. */
:root{--blue:#2854e8;--violet:#7846ea;--ink:#15223d;--text:#15223d;--muted:#58667e;--line:#dce4f2;--bg:#f4f7ff;--surface:#fff;--radius:16px;--focus:#2854e8;color-scheme:light}
*{box-sizing:border-box}html,body{min-width:0;max-width:100%;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
body{font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button{touch-action:manipulation}button:not(:disabled),a{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #2854e8;outline-offset:3px}
.app{min-width:0;display:block!important}.side{position:fixed;left:0;top:0;height:100dvh;overflow-y:auto;z-index:80;width:232px;background:#112244;color:#fff;border:0}.brand{font-size:21px;letter-spacing:-.5px;padding:24px 19px}.brand small,.brand-copyright{color:#b6c9f0}.side .grp{color:#a7bfeb;font-size:10px;letter-spacing:.12em;margin-top:19px}.side .nav{min-height:40px;border-radius:11px;color:#dce8ff;font-size:13px;padding:10px 13px;margin:3px 9px;width:calc(100% - 18px);border:1px solid transparent}.side .nav.on{background:#2854e8;border-color:#6184ff;color:#fff;box-shadow:0 5px 16px #0002}.side .nav:hover{background:#28436d;color:white}
.main{min-width:0}.top{background:#ffffffef;border-bottom:1px solid var(--line);gap:12px;padding:14px 24px;backdrop-filter:blur(12px)}.top h1{font-size:18px;line-height:1.2;letter-spacing:-.4px}.top .sub{font-size:12px}.top-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0}.top-shortcuts{display:flex;gap:7px}.context{max-width:290px;min-width:150px}.view{width:100%;max-width:1960px;margin-inline:auto;padding:22px 26px 96px}.view>*{min-width:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:39px;border:1px solid #cdd8ec;border-radius:10px;background:#fff;color:#263c62;padding:8px 13px;font-weight:650;font-size:13px;line-height:1.3;text-decoration:none;white-space:normal;box-shadow:none}.btn:hover{background:#edf3ff;border-color:#8da9ed}.btn.primary{background:#2854e8;border-color:#2854e8;color:#fff;box-shadow:0 4px 12px #2854e822}.btn.primary:hover{background:#2145c2;border-color:#2145c2}.btn.danger{background:#fff1f0;color:#a52020;border-color:#efbaba}.btn:disabled,button:disabled{opacity:.55;cursor:default}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:19px;box-shadow:0 4px 16px #203f7806;min-width:0}.card h3{font-size:16px;line-height:1.35;margin:0 0 12px;letter-spacing:-.25px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.card-head h3{margin:2px 0 0}.hero{margin-bottom:18px;gap:12px}.hero h2{font-size:clamp(23px,2.2vw,31px);letter-spacing:-.7px}.sub,small{color:#58667e}.section-kicker,.eyebrow{font-size:10px;font-weight:800;letter-spacing:.12em;line-height:1.4}
.control-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:25px;padding:28px 30px;border-radius:21px;background:linear-gradient(115deg,#163cbb 0%,#2854e8 65%,#6b3acb 100%);color:#fff;margin-bottom:17px;box-shadow:0 10px 30px #2854e81a}.control-hero h2{font-size:clamp(23px,2.2vw,34px);line-height:1.12;letter-spacing:-.9px;margin:9px 0 11px}.control-hero p{color:#e1eaff;font-size:14px;margin:0 0 19px}.control-hero .eyebrow{color:#d3e2ff}.control-hero .btn{background:#fff;color:#143ba9;border-color:#fff}.control-hero .btn.primary{color:#112c80;background:#8dffe2;border-color:#8dffe2}.hero-summary{padding-left:26px;border-left:1px solid #ffffff40;max-width:260px;display:flex;flex-direction:column;gap:6px}.hero-summary>span{font-size:16px;font-weight:750}.hero-summary>b{font-size:12px;font-weight:500;color:#e5edff}.hero-summary small{color:#e5edff}.hero-summary .text-action{color:#fff;text-align:left;padding-inline:0;font-size:12px;text-decoration:underline}
.ops-focus{border:1px solid var(--line);border-radius:13px;background:#fff;display:flex;justify-content:space-between;gap:16px;align-items:center;padding:11px 16px;margin:0 0 16px}.ops-focus>div{display:flex;flex-direction:column;min-width:0}.ops-focus small{font-size:9px;letter-spacing:.1em;font-weight:750}.ops-focus b{font-size:13px;overflow-wrap:anywhere}.ops-focus select{max-width:400px;min-height:36px;min-width:0;border:1px solid #d3deee;border-radius:9px;padding:7px 11px;background:#f8faff}
.control-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.control-kpis .kpi{position:relative;text-align:left;border:1px solid var(--line);border-radius:14px;background:#fff;min-height:102px;padding:15px 17px;display:flex;flex-direction:column;gap:1px;box-shadow:none}.control-kpis .kpi b{font-size:31px;line-height:1.12;font-weight:800;letter-spacing:-1px}.control-kpis .kpi small{font-size:12px;color:inherit;font-weight:650}.kpi-link{position:absolute;right:14px;top:18px;font-size:10px;font-weight:650}.control-kpis .kpi.red{background:#fff4f3;border-color:#f0b7b2;color:#a22121}.control-kpis .kpi.amber{background:#fff9eb;border-color:#ead3a2;color:#8a5000}.control-kpis .kpi.neutral{background:#fff;color:#52627a;border-color:#dce4f2}
.control-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px;align-items:start}.control-grid .priorities{grid-column:1;grid-row:1}.control-grid .next-days{grid-column:2;grid-row:1}.control-grid .site-overview{grid-column:1}.control-grid .guided-work{grid-column:2}.priority-row{width:100%;display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:12px;text-align:left;border:0;border-top:1px solid #edf1f8;background:#fff;padding:13px 1px;color:#15223d;border-radius:0;min-height:64px}.priority-row:first-of-type{border-top:0}.priority-row>span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}.priority-row b{font-size:13px;font-weight:700;overflow-wrap:anywhere}.priority-row small{font-size:11px;overflow-wrap:anywhere}.priority-row>strong{font-size:11px;white-space:nowrap;color:#2854e8}.priority-row:hover{background:#f6f9ff}.priority-marker{width:7px;height:28px;border-radius:5px;background:#c2cde0}.priority-row.red .priority-marker{background:#df3535}.priority-row.amber .priority-marker{background:#e8a01b}.text-action{border:0;background:transparent;color:#2854e8;font-weight:700;padding:10px 0;min-height:36px;font-size:12px}
.agenda-row{display:flex;align-items:center;gap:12px;width:100%;background:#fff;border:0;border-bottom:1px solid #edf1f8;padding:12px 0;text-align:left;color:#15223d;min-height:64px}.agenda-date{min-width:41px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;background:#eef2ff;color:#2854e8;font-size:21px;line-height:1.05;font-weight:800;padding:8px 7px}.agenda-date small{font-size:10px;font-weight:600;color:#2854e8;margin-top:4px}.agenda-row>span:last-child{display:flex;flex-direction:column;gap:4px;min-width:0}.agenda-row b{font-size:12px;overflow-wrap:anywhere}.agenda-row small{font-size:10px}.next-days>.actions{margin-top:17px}
.site-overview-row{display:flex;align-items:center;gap:13px;width:100%;border:0;border-top:1px solid #edf1f8;background:#fff;color:#15223d;padding:13px 0;text-align:left;min-height:65px}.site-initial{display:grid;place-items:center;width:39px;height:39px;flex-shrink:0;border-radius:11px;background:#ebf0ff;color:#2854e8;font-size:19px;font-weight:800}.site-overview-row>span:nth-child(2){display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.site-overview-row b{font-size:13px;overflow-wrap:anywhere}.site-overview-row small{font-size:11px}.site-overview-row strong{font-size:10px;color:#637188;font-weight:600}.site-overview-row .attention-count{color:#8a5000;background:#fff3d9;border:1px solid #ead3a2;border-radius:20px;padding:5px 8px;white-space:nowrap}.site-overview>.actions{margin-top:14px}
.guided-list>button{display:grid;grid-template-columns:minmax(0,1fr) 20px;gap:4px 10px;width:100%;background:#f7f9ff;border:1px solid #e0e7f7;border-radius:12px;color:#15223d;text-align:left;padding:13px;margin:9px 0;min-height:64px}.guided-list b{font-size:13px}.guided-list small{grid-column:1;font-size:11px}.guided-list span{grid-column:2;grid-row:1 / 3;align-self:center;color:#2854e8}.guided-work>.actions{margin-top:14px}
.field label{font-size:12px;font-weight:700;color:#293f61}.field input,.field select,.field textarea{min-width:0;width:100%;border:1px solid #cbd7e9;background:#fff;border-radius:10px;padding:10px 11px;min-height:41px;color:#15223d}.field textarea{min-height:96px;resize:vertical}.field{margin-bottom:13px;min-width:0}.formgrid,.form-grid,.grid{min-width:0}.field small{font-size:11px}.notice{background:#f1f5ff;border:1px solid #dce6fc;border-radius:12px;padding:13px 15px;color:#294165;font-size:12px;line-height:1.55}.notice b{color:#183665}.empty{padding:22px 14px;background:#f8faff;border:1px dashed #d5dfef;border-radius:12px;text-align:center;color:#617087;font-size:13px}.empty p{margin-bottom:0}
.modal{padding:20px;z-index:10050;background:#0b193b80;backdrop-filter:blur(4px)}.modal .box{width:min(1080px,100%);max-height:calc(100dvh - 40px);border-radius:18px;border:1px solid #dce4f2;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 22px 80px #0a1d4e33}.modal .mh{padding:16px 20px;border-bottom:1px solid var(--line);background:#fff;flex-shrink:0}.modal .mh b{font-size:16px;overflow-wrap:anywhere}.modal .mb{overflow:auto;overscroll-behavior:contain;padding:20px;min-height:0;background:#fff}.modal .mf{display:flex;flex-wrap:wrap;gap:8px;padding:13px 20px;background:#f8faff;border-top:1px solid var(--line);flex-shrink:0;max-height:35dvh;overflow:auto}.modal .x{min-width:36px;min-height:36px;flex-shrink:0}
.tablewrap,.table-wrap,.report-table-wrap{max-width:100%;overflow:auto;overscroll-behavior-inline:contain;border-radius:11px}.table th,table th{font-size:11px;font-weight:750;letter-spacing:.01em;background:#f1f5fc;color:#344a6c}.table td,table td{font-size:12px;line-height:1.4}td,th{overflow-wrap:anywhere}.search-result{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;min-height:56px;border:0;border-bottom:1px solid #e6ecf7;background:#fff;color:#15223d;padding:11px 12px}.search-result:hover{background:#eef3ff}.search-result span{display:flex;flex-direction:column;gap:3px}.search-result b{font-size:13px}.search-result small{font-size:11px}.search-result strong{font-size:11px;color:#2854e8}.command-box{border-radius:18px;overflow:hidden;width:min(680px,calc(100vw - 28px));max-height:80dvh;display:flex;flex-direction:column}.command-results{overflow:auto;min-height:0}.command-box>input{min-height:55px;border:0;border-bottom:1px solid var(--line);padding:15px;font-size:16px}
.assistant-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:16px;align-items:start}.assistant-chat{min-height:220px;max-height:52dvh;overflow:auto;overscroll-behavior:contain;margin-bottom:16px}.assistant-layout aside p,.assistant-layout aside li{font-size:13px}.assistant-layout aside ul{padding-left:19px}.role-row{padding:12px 0;border-bottom:1px solid var(--line)}.role-row b{font-size:14px}.role-row p{margin:5px 0;font-size:13px;color:#58667e}.update-banner{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:10040;display:flex;align-items:center;gap:16px;max-width:calc(100vw - 30px);background:#12254a;color:#fff;border:1px solid #5478b9;border-radius:15px;padding:11px 14px;box-shadow:0 10px 35px #102a5540;font-size:13px}.update-banner .btn{white-space:nowrap}.sync-badge{font-size:11px;border-radius:20px;max-width:150px}.top-shortcuts .btn{min-height:34px;font-size:11px;padding:7px 10px}
/* An empty count is never an alarm; this also covers legacy cards. */
[data-semantic-zero="1"],.kpi.neutral,.control-kpis .kpi.neutral{background:#fff!important;border-color:#dce4f2!important;color:#52627a!important;box-shadow:none!important}.kpi.neutral b,[data-semantic-zero="1"] b{color:#52627a!important}
@media(min-width:1001px){.main{margin-left:232px!important;width:calc(100% - 232px)!important}.side{display:block}.bottom,.mobile-nav{display:none!important}}
@media(min-width:1800px){.view{padding:28px 38px 100px}.control-grid{grid-template-columns:minmax(0,1.7fr) minmax(380px,1fr)}.card{padding:23px}.priority-row{padding-block:15px}.control-hero{padding:34px 38px}}
@media(max-width:1280px) and (min-width:1001px){.side{width:202px}.main{margin-left:202px!important;width:calc(100% - 202px)!important}.brand{font-size:19px;padding-inline:15px}.view{padding:18px 20px 90px}.top{padding:12px 20px}.top-title .sub{display:none}.control-grid{grid-template-columns:minmax(0,1.35fr) minmax(260px,1fr)}.hero-summary{max-width:180px;padding-left:18px}.control-hero{padding:23px}.context{max-width:210px}.top-shortcuts .btn{font-size:10px}}
@media(max-width:1000px){.side{display:none!important}.main{margin-left:0!important;width:100%!important}.top{position:sticky;top:0;padding:12px 18px;z-index:50}.view{padding:17px 18px 105px}.mobile-nav{display:flex!important;position:fixed;bottom:0;left:0;right:0;padding-bottom:max(7px,env(safe-area-inset-bottom));background:#fff;z-index:1000;border-top:1px solid var(--line);height:auto;min-height:66px}.mobile-nav button{min-height:54px;flex:1;background:#fff;border:0;color:#53657f}.mobile-nav button.on{color:#2854e8}.mobile-nav button.field{background:#2854e8;color:#fff;border-radius:13px;margin:6px 3px}.mobile-nav span{display:block;font-size:10px;margin-top:3px}.bottom{display:none!important}.sync-badge{bottom:83px!important;right:13px!important}.update-banner{bottom:83px}.context{max-width:250px}.control-grid{grid-template-columns:minmax(0,1.4fr) minmax(250px,1fr)}.top-shortcuts{display:none}.control-hero{padding:23px}.hero-summary{max-width:185px}.assistant-layout{grid-template-columns:minmax(0,1.7fr) minmax(230px,1fr)}}
@media(max-width:760px){.control-grid,.assistant-layout{display:flex;flex-direction:column;gap:14px}.control-grid>.card,.assistant-layout>.card{width:100%}.priorities{order:0}.next-days{order:1}.site-overview{order:2}.guided-work{order:3}.control-hero{grid-template-columns:minmax(0,1fr);gap:18px;padding:22px;border-radius:17px}.hero-summary{display:none}.control-hero h2{font-size:27px}.control-hero p{font-size:13px}.control-hero .actions .btn{flex:1;min-width:130px}.control-hero .actions .btn:last-child{display:none}.control-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.control-kpis .kpi{padding:13px 14px;min-height:91px}.control-kpis .kpi b{font-size:29px}.control-kpis .kpi small{font-size:11px}.kpi-link{right:12px;top:16px;font-size:9px}.ops-focus{flex-direction:column;align-items:stretch;gap:8px;padding:12px}.ops-focus select{max-width:none;width:100%}.ops-focus>div>b{display:none}.top{gap:8px;flex-wrap:wrap;padding:11px 14px}.top-title{flex:1;min-width:0}.top h1{font-size:16px}.top .sub{display:none}.top-controls{width:100%;justify-content:space-between;gap:8px}.top-controls #context{flex:1;max-width:none;width:100%;min-width:0}.top-controls #userChip{max-width:45%;overflow:hidden;font-size:10px;min-height:34px;padding:7px}.view{padding:14px 12px 110px}.card{padding:16px;border-radius:14px}.priority-row{gap:9px;grid-template-columns:6px minmax(0,1fr)}.priority-row>strong{grid-column:2;font-size:10px;justify-self:start}.priority-row b{font-size:13px}.priority-row small{font-size:11px}.site-overview-row>strong{max-width:95px;white-space:normal!important;text-align:right}.site-overview-row b{font-size:12px}.modal{padding:8px}.modal .box{width:100%;max-height:calc(100dvh - 16px);border-radius:14px}.modal .mh{padding:13px 14px}.modal .mb{padding:15px 13px}.modal .mf{padding:11px 13px  max(11px,env(safe-area-inset-bottom));gap:7px;max-height:32dvh}.modal .mf .btn{flex:1 1 auto}.field input,.field select,.field textarea{font-size:16px}.modal .grid>[class*="span"],.modal .formgrid>.field{grid-column:1 / -1;min-width:0}.update-banner{flex-direction:column;gap:8px;align-items:stretch;left:12px;right:12px;transform:none;max-width:none;padding:12px}.update-banner .btn{width:100%}.table td,table td{font-size:12px}.btn{min-height:41px}.hero{flex-direction:column;align-items:flex-start}.hero .actions{width:100%}}
@media(max-width:360px){.control-hero{padding:18px}.control-hero h2{font-size:23px}.card{padding:13px}.control-kpis .kpi{padding:12px}.kpi-link{display:none}.card-head .btn{width:100%}.top-controls #userChip{max-width:42%;font-size:9px}.site-initial{width:31px;height:34px}.site-overview-row{gap:9px}}
@media(pointer:coarse){.btn,.nav,.search-result,.text-action{min-height:44px}.check input[type="checkbox"],.signer-check input{min-width:22px;min-height:22px}.mobile-nav button{min-height:54px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.side,.top,.mobile-nav,.sync-badge,.update-banner,.top-shortcuts{display:none!important}.main{width:100%!important;margin:0!important}.view{padding:0;max-width:none}.card{box-shadow:none;break-inside:avoid}.control-hero{background:#fff;color:#15223d;border:1px solid #ccd7e8;box-shadow:none}.control-hero p,.control-hero .eyebrow{color:#405675}}

.main .view{max-width:1960px}
@media(max-width:760px){html.phone-ui .top{display:flex!important;flex-wrap:wrap!important;height:auto!important;min-height:58px!important;padding:10px 12px!important}html.phone-ui .top-controls{display:flex!important}html.phone-ui .view{padding:14px 12px 110px!important;overflow-x:visible!important}html.phone-ui .sync-badge{display:block!important}html.phone-ui body{background:#f4f7ff!important;padding-bottom:0!important}}
.local-data-tip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin:0 0 16px;border:1px solid #b8c9ff;background:#f0f4ff;color:#233d7b;border-radius:14px;font-size:13px}.local-data-tip .btn{flex-shrink:0;background:#fff}.module-group{margin:22px 0}.module-group h3{font-size:15px;color:#42506b;margin:0 0 10px}.workspace-locked .sidebar,.workspace-locked .mobile-nav,.workspace-locked #new,.workspace-locked #context,.workspace-locked .top-shortcuts{display:none!important}.workspace-locked .main{margin-left:0!important;width:100%!important}.workspace-locked #view{max-width:700px;margin:auto}.workspace-locked .phone-bottom-nav{display:none!important}
@media(max-width:760px){.local-data-tip{align-items:stretch;flex-direction:column}.local-data-tip .btn{width:100%}.module-group .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.workspace-locked .side,.workspace-locked .bottom{display:none!important}
