/* Cantiere 3D — pagine: giornale, GII, materiali, controlli, dashboard, nuova scheda */
.tablewrap{overflow-x:auto;border:1px solid #e3e8f0;border-radius:var(--r);background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.04),0 12px 28px -18px rgba(16,24,40,.22)}
.card .tablewrap{box-shadow:none}
.gdl{width:100%;border-collapse:collapse;min-width:860px}
.gdl th{text-align:left;font-family:var(--f-mono);font-weight:500;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#4a5868;padding:10px 12px;border-bottom:1px solid #e3e8f0;background:#f6f8fb;position:sticky;top:0;z-index:1}
.gdl td{padding:12px;border-bottom:1px solid #e6eaf0;vertical-align:top;font-size:13px}
.gdl tbody tr{transition:background .12s}
.gdl tbody tr:hover td{background:#f8fafc}
.gdl .prog{width:64px}
.gdl .prog span{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 6px;border-radius:10px;background:#fdecef;color:var(--red);font-family:var(--f-display);font-size:15px;font-weight:700}
.gdl .nt{width:170px}
.gdl .nt b{display:block;font-family:var(--f-display);font-size:13.5px;font-weight:600;color:var(--navy)}
.gdl .nt>span{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.gdl .nt .wd{display:inline-block;margin-top:3px;font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#0d2b52;background:#e8eef7;border-radius:3px;padding:0 5px}
.gdl .txt{line-height:1.5;max-width:62ch}
.gdl .oss{color:#4a5868;max-width:40ch}
.gdl td.act{white-space:nowrap;text-align:right}
.gdl td.act .mini{margin:0 0 4px 4px}
.gdl tr.rest td{background:repeating-linear-gradient(135deg,#f6f7f9 0 6px,#fff 6px 12px);color:#7b8796}
.gdl tr.rest .prog span{background:#eef1f6;color:#8593a6}
.gdl tr.rest .wd{background:#eceff3;color:#7b8796}
.gdl tr.miss .txt{color:#7b8796;font-style:italic}
.gdl tr.miss .prog span{background:#fff;color:var(--red);border:1.5px dashed #f0a6b3}
.emptyrow{text-align:center;color:var(--muted);padding:30px!important}
.chip{display:inline-block;margin-top:6px;font-size:11px;padding:1px 7px;border-radius:4px;background:#eef1f6;color:#4a5d78;font-style:normal}
.chip.warn{background:#fff4e0;color:#8a5a00}
.odsrow{display:flex!important;gap:4px;flex-wrap:wrap;margin-top:6px}
.odschip{display:inline-block;font-family:var(--f-mono);font-size:10.5px;font-weight:500;color:#1f5aa6;background:#eef4fd;border:1px solid #cfe0f7;border-radius:999px;padding:1px 8px;text-decoration:none}
.odschip:hover{border-color:#1f5aa6}
.odstesto{font-size:13px;line-height:1.55;color:#1c2633;max-height:340px;overflow:auto}

/* registro GII */
.gsum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.gs{background:#fff;border-radius:var(--r);border:1px solid #e3e8f0;box-shadow:0 1px 2px rgba(16,24,40,.04),0 12px 28px -18px rgba(16,24,40,.22);padding:12px 14px;display:flex;flex-direction:column;gap:2px;transition:transform .22s ease,box-shadow .22s ease}
.gs b{font-family:var(--f-display);font-size:26px;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.gs span{font-size:12px;color:var(--muted)}
.gs.warn b{color:#9a6700}
.gtab{table-layout:fixed;min-width:980px}
.gtab col.c-km{width:128px}.gtab col.c-bin{width:92px}.gtab col.c-mat{width:150px}.gtab col.c-qty{width:56px}.gtab col.c-nt{width:120px}.gtab col.c-act{width:110px}
.gtab td{vertical-align:middle;padding:10px 12px}
.gtab th.c,.gtab td.qty{text-align:center}
.gtab .qty{font-family:var(--f-mono)}
.gtab .kmc{font-family:var(--f-mono);white-space:nowrap}
.gtab .kmc b{font-family:var(--f-mono);font-size:13.5px;font-weight:600;color:#0d2b52;font-variant-numeric:tabular-nums}
.gtab .kmc small,.gtab .lni{display:block;font-family:var(--f-body);font-size:11px;color:#7a8797;margin-top:2px}
.gtab .mc .mt{font-family:var(--f-mono);font-size:12.5px;white-space:nowrap;line-height:1.5;font-variant-numeric:tabular-nums}
.gtab .mc .mt.dup{color:#9a6700;font-weight:600}
.gtab .mc .mt small{display:block;font-family:var(--f-body);font-size:10.5px;font-weight:500;color:#9a6700;line-height:1.2;white-space:normal}
.gtab .nd{color:#9aa6b4}
.gtab .nomt{display:inline-block;font-size:12px;color:#9a6700;background:#fff8e1;border-radius:5px;padding:2px 8px}
.gtab .nt b{display:block;font-family:var(--f-display);font-size:13px;color:#0d2b52}
.gtab .nt span{display:block;font-family:var(--f-mono);font-size:10.5px;text-transform:uppercase;color:#7a8797}
.gtab td.txt{font-size:12.5px;color:#3b4a5d}
.gtab td.txt span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gtab tr.nokm td{background:#fbfcfe}
.gtab td.act{text-align:right}

/* materiali */
.mkpis .kpi{gap:6px}
.mkpis .kpi .mic{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:10px;background:#eef3fb;color:#0d2b52;display:grid;place-items:center}
.mkpis .kpi .mic svg{width:20px;height:20px}
.mkpis .kpi .v small{margin-left:4px}
.mkpis .kpi .of{font-family:var(--f-mono);font-size:12px;color:#7a8797;margin-top:-2px}
.kbar{position:relative;height:6px;border-radius:4px;background:#eef1f6;margin:6px 0 2px}
.kbar>i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:#0d2b52;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.kbar>b{position:absolute;top:-4px;bottom:-4px;width:2px;border-radius:1px;background:#e0a800}
.kpi .st{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 9px;margin-top:4px}
.kpi .st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.st.ok{background:#e3f4ea;color:#16794c}.st.warn{background:#fff5d6;color:#8a6200}.st.bad{background:#fde8eb;color:#c8102e}.st.na{background:#eef1f6;color:#7a8797}
.legend2{display:flex;gap:12px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.legend2 i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.legend2 .ordsw{width:3px;height:12px;background:#e0a800}
.legend2 .gapsw{background:repeating-linear-gradient(45deg,#c8102e 0 2px,transparent 2px 5px);border:1px solid #c8102e}
.sw-pos{background:#0d2b52}.sw-res{background:#c9d6ea}.sw-pari{background:#b86e00}.sw-dispari{background:#1f5aa6}
.mbars{display:flex;flex-direction:column;gap:26px;padding:14px 0 4px}
.mrow{display:grid;grid-template-columns:170px 1fr 190px;gap:14px;align-items:center}
.mrow .mlab b{display:block;font-family:var(--f-display);font-size:13.5px;color:#0d2b52}
.mrow .mlab span{font-size:11.5px;color:#7a8797}
.mtrack{position:relative;height:26px;border-radius:8px;background:#e6edf7}
.mtrack .pos{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:8px;background:linear-gradient(90deg,#0b2447,#1d5aa8);transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
.mtrack .pos em{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-style:normal;font-family:var(--f-mono);font-size:11.5px;font-weight:600;color:#fff;white-space:nowrap}
.mtrack .ord{position:absolute;top:-6px;bottom:-6px;width:3px;margin-left:-1.5px;border-radius:2px;background:#e0a800;box-shadow:0 0 0 2px #fff}
.mtrack .ord::after{content:attr(data-l);position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);font-family:var(--f-mono);font-size:10px;color:#8a6200;white-space:nowrap}
.mrow .mval{text-align:right;font-size:12px;color:#3b4a5d}
.mrow .mval b{display:block;font-family:var(--f-mono);font-size:14px;color:#0d2b52}
.mrow .ost{display:block;font-weight:700}
.ost.ok{color:#16794c}.ost.warn{color:#8a6200}.ost.bad{color:#c8102e}
.mattab{min-width:760px;table-layout:fixed}
.mattab th,.mattab td{text-align:right;vertical-align:middle}
.mattab th:first-child,.mattab td:first-child{text-align:left}
.mattab td{font-family:var(--f-mono);font-size:13px;font-variant-numeric:tabular-nums}
.mattab td:first-child{font-family:var(--f-body)}
.mattab td:first-child b{display:block;font-family:var(--f-display);font-size:13.5px;color:#0d2b52}
.mattab td:first-child b span{font-weight:400;color:#7a8797}
.mattab td:first-child small{display:block;font-size:11px;color:#7a8797;font-family:var(--f-body)}
.mattab td.tot{font-weight:700;color:#0d2b52}
.mattab .mbar{display:block;height:5px;border-radius:3px;background:#e9edf3;margin-top:5px;overflow:hidden}.mattab .mbar i{display:block;height:100%;background:#16794c}
.mattab .pct{display:block;font-size:10.5px;color:#7a8797}
.mattab .ordc .ost{display:block;font-size:10.5px;font-family:var(--f-body);font-weight:700}
.mntab{min-width:900px;table-layout:fixed}
.mntab col.c-nt{width:120px}.mntab col.c-bin{width:84px}.mntab col.c-km{width:150px}
.mntab th,.mntab td{text-align:right;vertical-align:middle}
.mntab th:nth-child(-n+3),.mntab td:nth-child(-n+3){text-align:left}
.mntab td{font-family:var(--f-mono);font-size:13px;font-variant-numeric:tabular-nums}
.mntab td.nt{font-family:var(--f-body)}
.mntab td.nt b{display:block;font-family:var(--f-display);font-size:13.5px;color:#0d2b52}
.mntab td.nt span{font-size:10.5px;color:#7a8797;text-transform:uppercase}
.mntab td .zero{color:#c3ccd8}
.mntab td .cum{display:block;font-size:10.5px;color:#7a8797}
.mntab tfoot td{font-weight:700;color:#0d2b52;background:#f6f8fb;border-top:2px solid #d8dee6}
.mntab tr.lev td.nt b::after{content:" · livellamento";font-family:var(--f-body);font-weight:500;font-size:11px;color:#16794c}
.mntab tr.gii td.nt b::after{content:" · GII";font-family:var(--f-body);font-weight:500;font-size:11px;color:#5d6b7c}

/* controlli */
.ctl-sum{display:flex;flex-direction:column;align-items:stretch;gap:12px}
.ctl-prog{background:#fff;border:1px solid #e3e8f0;border-radius:14px;padding:12px 16px;box-shadow:0 1px 2px rgba(16,24,40,.05)}
.cp-h{display:flex;align-items:baseline;gap:6px;font-size:14px;color:#3b4a5d}.cp-h b{font-family:var(--f-display);font-size:20px;color:#0d2b52}.cp-h span{margin-left:auto;font-family:var(--f-display);font-weight:700;color:#16794c;font-size:16px}
.cp-bar,.cbar{height:8px;border-radius:4px;background:#e9edf3;overflow:hidden;margin-top:8px}.cp-bar i,.cbar i{display:block;height:100%;background:linear-gradient(90deg,#1f9d63,#16794c);border-radius:4px;transition:width .4s ease}
.cbar{height:5px;margin:0 0 6px}
.ctl-chips{display:flex;gap:8px;flex-wrap:wrap}
.ctl-chip{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #e3e8f0;border-radius:12px;background:#fff;cursor:pointer;color:#1c2633;text-align:left;box-shadow:0 1px 2px rgba(16,24,40,.05);transition:transform .22s ease,box-shadow .22s ease}
.ctl-chip b{font-family:var(--f-display);font-size:18px;line-height:1}
.ctl-chip span{font-size:12px;color:#5d6b7c}
.ctl-chip.bad b{color:#c8102e}.ctl-chip.warn b{color:#9a6700}.ctl-chip.info b{color:#3d5a80}.ctl-chip.ok b{color:#16794c}.ctl-chip.pin b{color:#8a6a00}
.ctl-chip[aria-pressed="true"]{border-color:#0d2b52;box-shadow:0 0 0 2px rgba(13,43,82,.15)}
.ctl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:14px}
.ctlcard.alldone{border-color:#bfe3cd}
.ctl-list{list-style:none;margin:0;padding:0}
.ctl-list li{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;padding:10px 8px 10px 10px;border-top:1px solid #edf0f4;border-left:4px solid transparent;font-size:13px;color:#1c2633}
.ctl-list li:first-child{border-top:none}
.ctl-list li.lv-bad{border-left-color:#c8102e}.ctl-list li.lv-warn{border-left-color:#e0a800}.ctl-list li.lv-info{border-left-color:#9aa9bd}
.ckb{width:26px;height:26px;border-radius:50%;border:2px solid #9aa9bd;background:#fff;color:transparent;display:grid;place-items:center;cursor:pointer;padding:0;transition:all .15s}
.ckb svg{width:15px;height:15px}
.ckb:hover{border-color:#16794c;color:#9fd2b5}
.ckb[aria-pressed="true"]{background:#16794c;border-color:#16794c;color:#fff}
.ckb[aria-pressed="true"]:hover{background:#c8102e;border-color:#c8102e}
.ctl-list .tx{min-width:0;overflow-wrap:anywhere}
.ctl-list .tx b{color:#0d2b52}
.ctl-list .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.ctl-list .tag{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:2px 6px}
.tag.bad{background:#fde8eb;color:#c8102e}.tag.warn{background:#fff3cd;color:#8a6200}.tag.info{background:#eef1f6;color:#4a5d78}.tag.okt{background:#16794c;color:#fff}
.ctl-list .meta .dt{font-size:11.5px;color:#7a8797}
.ctl-list .ac{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.ctl-list li.done{background:#f3faf6;border-left-color:#16794c}
.ctl-list li.done .tag:not(.okt){opacity:.55}
.ctl-list li.done .tx,.ctl-list li.done .tx b{color:#6b7a8c}
@keyframes ckflash{0%{background:#c9ecd8}100%{background:#f3faf6}}
.ctl-list li.done.flash{animation:ckflash 1.2s ease-out}
.card .cnt{font-size:12px;color:#5d6b7c;font-weight:600}

/* dashboard */
.chart{width:100%;height:auto;display:block}
.chart .grid{stroke:#e6eaf0;stroke-width:1}
.chart .base{stroke:#9aa7b8;stroke-width:1}
.chart .tick{fill:#5d6b7c;font-family:var(--f-mono);font-size:10px}
.chart .tick.strong{fill:#1c2633}
.chart .dlabel{fill:#1c2633;font-family:var(--f-mono);font-size:11px}
.chart .refline{stroke:#7b8796;stroke-dasharray:4 4;stroke-width:1}
.chart .flagmark{fill:#c8102e;font-size:10px}
.chart .lane{fill:#f3f5f8;stroke:#e1e6ed}
.chart .ogg{fill:#e6edf7}
.chart .stat{stroke:#0d2b52;stroke-width:1;stroke-dasharray:2 3}
.chart .gap{fill:rgba(200,16,46,.10);stroke:#c8102e;stroke-dasharray:3 2}
.chart .unc{stroke:#c8102e;stroke-width:1.5;stroke-dasharray:4 2}
.chart .hit{cursor:crosshair}
.hscroll{overflow-x:auto}.covermin{min-width:640px}
.chscroll{overflow-x:auto}
.anomalie{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:320px;overflow:auto}
.anomalie li{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:start;padding:7px 4px;border-bottom:1px solid #e6eaf0;font-size:12.5px}
.anomalie .sev{font-family:var(--f-mono);font-size:11px}
.anomalie .bad .sev{color:#c8102e}.anomalie .warn .sev{color:#9a6700}.anomalie .info .sev{color:var(--muted)}
.anomalie .an{min-width:0;overflow-wrap:anywhere}

/* nuova scheda */
.formgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.formside{display:flex;flex-direction:column;gap:12px;position:sticky;top:12px}
.preview .pv{margin:0;font-size:13px;line-height:1.5;white-space:pre-line;background:#f7f9fc;border:1px solid #e1e6ed;border-radius:8px;padding:8px 10px}
.girows{display:flex;flex-direction:column;gap:8px}
.girow{display:grid;grid-template-columns:96px minmax(130px,1.3fr) minmax(130px,1.3fr) minmax(110px,1fr) 60px 1fr auto;gap:8px;align-items:end;padding-bottom:8px;border-bottom:1px solid #e6eaf0}
.girow .ded{font-size:10.5px;color:#9a6700}
.formbar{background:rgba(244,246,250,.92);border-radius:14px}
.selimp{display:flex;gap:6px;align-items:center}
.selimp small{font-size:11px;color:var(--muted)}

@media (max-width:1100px){.mrow{grid-template-columns:130px 1fr 150px}}
@media (max-width:900px){.formgrid{grid-template-columns:1fr}.formside{position:static}.girow{grid-template-columns:1fr 1fr}.girow .gn{grid-column:1/-1}}
@media (max-width:820px){
  /* tabelle → schede con le etichette dei campi */
  .tablewrap{overflow:visible;border:none;background:none;box-shadow:none}
  .gdl{min-width:0!important;display:block;border:none}
  .gdl thead,.gdl colgroup{display:none}
  .gdl tbody{display:flex;flex-direction:column;gap:10px}
  .gdl tr{display:grid;background:#fff;border:1px solid #e3e8f0;border-radius:14px;padding:12px 14px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
  .gdl td{display:block;border:none!important;padding:0!important;background:none!important;width:auto!important;max-width:none}
  .gdl td[data-l]::before{content:attr(data-l);display:block;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#7a8797;margin-bottom:2px}
  .gdl tr.rest{background:repeating-linear-gradient(135deg,#f6f7f9 0 6px,#fff 6px 12px)}
  #gBody tr{grid-template-columns:auto 1fr;column-gap:12px;row-gap:8px}
  #gBody td.nt[data-l]::before{display:none}
  #gBody td.prog{grid-row:1}
  #gBody td.txt{grid-column:1/-1;font-size:13.5px;line-height:1.5}
  #gBody td.oss:not(:empty)::before{content:"Osservazioni";display:block;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#7a8797;margin-bottom:2px}
  #gBody td.oss:empty{display:none}
  #gBody td.act{grid-column:1/-1;text-align:left;display:flex;gap:6px;flex-wrap:wrap}
  #gBody td.act .mini{margin:0}
  #gBody tr.rest{padding:8px 14px;opacity:.85}
  #gBody tr.rest td.oss{display:none}
  .gtab tbody tr{grid-template-columns:1fr 1fr;column-gap:12px;row-gap:8px}
  .gtab td.kmc{grid-column:1}.gtab td.bin{grid-column:2;justify-self:end}
  .gtab td.mc[colspan]{grid-column:1/-1}
  .gtab td.qty{text-align:left!important}
  .gtab td.txt{grid-column:1/-1}.gtab td.txt:empty{display:none}
  .gtab td.txt span{-webkit-line-clamp:4}
  .gtab td.act{grid-column:1/-1;text-align:left}
  .gtab tr.nokm td{background:none}
  .gtab .mc .mt{white-space:normal}
  .mattab tbody tr{grid-template-columns:repeat(3,1fr);column-gap:10px;row-gap:8px}
  .mattab td{text-align:left!important}
  .mattab td:first-child{grid-column:1/-1;padding-bottom:6px!important;border-bottom:1px solid #edf0f4!important}
  .mntab tbody tr{grid-template-columns:repeat(3,1fr);column-gap:10px;row-gap:6px}
  .mntab td{text-align:left!important}
  .mntab td.nt{grid-column:1/3}
  .mntab td.bin{grid-column:3;justify-self:end}
  .mntab td.kmr{grid-column:1/-1;font-size:12px;color:#5d6b7c}
  .mntab tfoot{display:block;margin-top:10px}
  .mntab tfoot tr{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;background:#0d2b52;color:#fff;border-radius:14px;padding:12px 14px}
  .mntab tfoot td{background:none!important;color:#fff;display:block;text-align:left!important}
  .mntab tfoot td:first-child{grid-column:1/-1}
  .mntab tfoot td[data-l]::before{color:#a9c1e6}
  .mrow{grid-template-columns:1fr auto;gap:6px 10px}
  .mrow .mtrack{grid-column:1/-1;grid-row:2;margin-top:4px}
  .mtrack .ord::after{display:none}
  .mrow .mval{grid-column:1/-1;grid-row:3;text-align:left;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
  .mrow .mval b{display:inline}
  .mrow .mlab{grid-column:1/-1}
  .mkpis .kpi .mic{display:none}
  .mkpis .kpi .of{font-size:11px}
  .mkpis .kpi .st{font-size:10.5px;line-height:1.25}
  #mRings{grid-template-columns:repeat(4,1fr)}
  #mRings .ring svg{width:64px;height:64px}
  .ctl-chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .ctl-list li{grid-template-columns:30px 1fr;padding:10px 8px 10px 10px}
  .ctl-list li .ac{grid-column:2;justify-content:flex-start}
  .anomalie li{grid-template-columns:1fr;gap:4px}
  #chCumul .chart,#chDelay .chart,#chUse .chart{min-width:600px}
  .formbar{position:sticky;bottom:calc(70px + env(safe-area-inset-bottom,0px));z-index:5;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:10px;margin:0 -6px;box-shadow:0 -6px 20px -14px rgba(16,24,40,.4)}
  .formbar .btn{flex:1}
}
@media (max-width:380px){.ctl-chips{grid-template-columns:1fr}}
.mattab col.c-mat1{width:26%}.mattab col.c-ord{width:15%}
