
:root{--ink:#14171a;--ink2:#4b5259;--ink3:#7b828a;--bg:#eef0f2;--card:#fff;--line:#dfe3e7;
 --acc:#1f5c8b;--accbg:#e8f0f7;--red:#b4232a;--redbg:#fdeeee;--amb:#9c5700;--ambbg:#fdf3e3;
 --grn:#1c6b46;--grnbg:#eaf6f0;--vio:#5b3fa8;--viobg:#f0ecfa}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);
 font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.top{background:var(--ink);color:#fff;padding:11px 18px;display:flex;align-items:center;gap:14px;
 flex-wrap:wrap;position:sticky;top:0;z-index:40}
.top b{font-size:15px}
.tabs{display:flex;gap:5px}
.tab{background:#2a2f35;color:#c8ced4;border:0;padding:7px 14px;border-radius:7px;font:600 13px inherit;cursor:pointer}
.tab.on{background:#fff;color:var(--ink)}
.right{margin-left:auto;display:flex;align-items:center;gap:9px;font-size:12.5px;color:#9aa3ab}
.right input,.right select{background:#2a2f35;color:#fff;border:1px solid #3a4046;border-radius:7px;
 padding:6px 9px;font:600 13px inherit}
.right input{width:104px}
.sync{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#7f8890}
.dot{width:7px;height:7px;border-radius:99px;background:#3ea06a;box-shadow:0 0 0 0 rgba(62,160,106,.6);
 animation:pl 2.4s infinite}
@keyframes pl{0%{box-shadow:0 0 0 0 rgba(62,160,106,.55)}70%{box-shadow:0 0 0 7px rgba(62,160,106,0)}100%{box-shadow:0 0 0 0 rgba(62,160,106,0)}}
.wrap{max-width:1150px;margin:0 auto;padding:16px 14px 80px}
.phone{max-width:470px}
.hide{display:none!important}
h2{font-size:11.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink3);margin:22px 0 10px;font-weight:700}
h2:first-child{margin-top:4px}
.card{background:var(--card);border:1px solid var(--line);border-radius:11px;margin-bottom:11px;overflow:hidden}
.pad{padding:14px 16px}
.pick{display:flex;gap:7px;overflow-x:auto;padding-bottom:3px;margin-bottom:10px}
.pick button{white-space:nowrap;border:1px solid var(--line);background:#fff;border-radius:9px;
 padding:9px 13px;font:600 13.5px inherit;cursor:pointer;color:var(--ink2)}
.pick button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.fasi{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:12px}
.fasi button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:11px 6px;
 font:700 13.5px inherit;cursor:pointer;color:var(--ink2);text-align:center}
.fasi button small{display:block;font-weight:600;font-size:11px;color:var(--ink3);margin-top:2px}
.fasi button.on{background:var(--accbg);border-color:var(--acc);color:var(--acc)}
.fasi button.on small{color:var(--acc)}
.srch{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:15px inherit;margin-bottom:11px}
.prog{position:sticky;top:50px;z-index:30;background:var(--card);border:1px solid var(--line);
 border-radius:11px;padding:12px 15px;margin-bottom:12px;box-shadow:0 2px 10px rgba(0,0,0,.05)}
.prog .n{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink2)}
.prog .n b{font-size:21px;color:var(--ink);letter-spacing:-.02em}
.bar{height:9px;background:#e8ebee;border-radius:99px;overflow:hidden;margin-top:8px;display:flex}
.bar i{display:block;height:100%}
.b-ass{background:#9db8d0}.b-sald{background:var(--acc)}.b-car{background:var(--grn)}
.lgn{display:flex;gap:13px;margin-top:7px;font-size:11.5px;color:var(--ink3);flex-wrap:wrap}
.lgn span::before{content:'';display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}
.lgn .a::before{background:#9db8d0}.lgn .s::before{background:var(--acc)}.lgn .c::before{background:var(--grn)}
.mk{scroll-margin-top:132px;display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid var(--line);background:#fff}
.mk:last-child{border-bottom:0}
.mk.full{background:var(--grnbg)}
.mk .cod{font:700 15px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:-.03em;min-width:104px}
.mk .dsc{flex:1;min-width:0;font-size:12.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mk .cnt{font:700 15px inherit;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:56px;text-align:right}
.mk .cnt s{text-decoration:none;color:var(--ink3);font-weight:600}
.mk button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 13px;
 font:700 15px inherit;cursor:pointer;color:var(--acc)}
.mk button.all{font-size:12px;padding:10px 9px;color:var(--ink2)}
.mk button.fix{color:var(--red);font-size:13px;padding:9px 11px}
.locked{font-size:11.5px;color:var(--amb);white-space:nowrap}
.chip{display:inline-block;font:700 10.5px inherit;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:5px}
.c-red{background:var(--redbg);color:var(--red)}.c-amb{background:var(--ambbg);color:var(--amb)}
.c-grn{background:var(--grnbg);color:var(--grn)}.c-acc{background:var(--accbg);color:var(--acc)}
.c-vio{background:var(--viobg);color:var(--vio)}
.alert{border-radius:10px;padding:11px 14px;margin-bottom:9px;font-size:13.5px;line-height:1.5}
.alert b.tg{display:inline-block;font:700 10.5px inherit;letter-spacing:.07em;padding:3px 8px;
 border-radius:5px;margin-right:7px;vertical-align:1px}
.alert.blocco{background:var(--redbg);border:1px solid #f2c9cb;color:#7d1a20}
.alert.blocco b.tg{background:var(--red);color:#fff}
.alert.revisione{background:var(--viobg);border:1px solid #d6ccf0;color:#432e80}
.alert.revisione b.tg{background:var(--vio);color:#fff}
.alert.modifica,.alert.verifica{background:var(--ambbg);border:1px solid #f0dcb4;color:#6f3f00}
.alert.modifica b.tg,.alert.verifica b.tg{background:var(--amb);color:#fff}
.alert .src{font-size:11.5px;opacity:.75;margin-top:4px}
.alert .q{margin-top:7px;padding-left:11px;border-left:2px solid currentColor;opacity:.85;font-size:12.5px}
.mk.ev-blocco{background:var(--redbg)}
.mk.ev-revisione{background:var(--viobg)}
.mk.ev-modifica,.mk.ev-verifica{background:var(--ambbg)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}
.kpi{display:flex;gap:9px;flex-wrap:wrap;margin:11px 0 3px}
.kpi div{background:var(--bg);border-radius:9px;padding:9px 12px;font:700 16px inherit;letter-spacing:-.02em}
.kpi span{display:block;font:700 10px inherit;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3);margin-bottom:1px}
.cliente{font:700 11.5px inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.titolo{font-size:17px;font-weight:650;letter-spacing:-.01em;margin:2px 0 3px}
.rowl{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.rowl:last-child{border-bottom:0}
.rowl b{font-variant-numeric:tabular-nums}
.feed{font-size:13px;color:var(--ink2)}
.feed div.r{padding:7px 0;border-bottom:1px solid var(--line);display:flex;gap:9px;align-items:baseline}
.feed div.r:last-child{border-bottom:0}
.feed .t{color:var(--ink3);font-variant-numeric:tabular-nums;min-width:42px}
.feed .c{font:700 12.5px ui-monospace,Menlo,monospace}
.feed .who{min-width:80px;font-weight:650}
.hint{font-size:12px;color:var(--ink3);font-style:italic;margin-top:9px}
.hint a{color:var(--acc)}
.legend{background:#fff;border:1px dashed #c6ccd2;border-radius:10px;padding:14px 16px;font-size:13px;color:var(--ink2);margin-top:22px}
.legend b{color:var(--ink)}
.tot{padding:11px 14px;background:#f7f8f9;font-size:12.5px;color:var(--ink3);text-align:center}
.empty{text-align:center;padding:38px 22px}
.empty .t{font-size:17px;font-weight:650;margin-bottom:7px}
.empty .s{color:var(--ink3);font-size:13.5px;line-height:1.6}
.login{position:fixed;inset:0;background:var(--ink);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}
.lbox{background:#fff;border-radius:14px;padding:30px 28px;width:100%;max-width:370px}
.lbox h1{font-size:20px;margin:0 0 3px;letter-spacing:-.02em}
.lbox p{margin:0 0 20px;font-size:13px;color:var(--ink3)}
.lbox label{display:block;font:700 11px inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);margin:13px 0 5px}
.lbox input{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:9px;font:15px inherit}
.lbox button{width:100%;margin-top:19px;padding:13px;border:0;border-radius:9px;background:var(--acc);
 color:#fff;font:700 15px inherit;cursor:pointer}
.lbox .nb{margin-top:15px;font-size:11.5px;color:var(--ink3);line-height:1.5;font-style:italic}
.me{display:flex;align-items:center;gap:7px;font-size:12.5px;color:#c8ced4}
.me b{color:#fff;font-weight:650}
.me a{color:#8a929a;text-decoration:none;font-size:11.5px;border-bottom:1px dotted #5a6169}
.ld{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid var(--line);background:#fff}
.ld:last-child{border-bottom:0}
.ld.ok{background:var(--grnbg)}
.ld.no{background:#fafbfb;color:var(--ink3)}
.ld.sel{background:#d9f0e4;box-shadow:inset 3px 0 0 var(--grn)}
.ld .cod{font:700 15px ui-monospace,Menlo,monospace;letter-spacing:-.03em;min-width:104px}
.ld .dsc{flex:1;min-width:0;font-size:12.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ld .cnt{font:700 15px inherit;font-variant-numeric:tabular-nums;min-width:70px;text-align:right}
.ld .cnt s{text-decoration:none;color:var(--ink3);font-weight:600}
.ld button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 13px;font:700 15px inherit;cursor:pointer;color:var(--grn)}
.ld button.all{font-size:12px;padding:10px 9px;color:var(--ink2)}
.ld button.meno{color:var(--red);font-size:15px;padding:10px 12px}
.barra{position:sticky;bottom:0;background:var(--ink);color:#fff;border-radius:12px;padding:13px 16px;
 display:flex;align-items:center;gap:14px;margin-top:12px;z-index:35;flex-wrap:wrap}
.barra .n{font:700 19px inherit;letter-spacing:-.02em}
.barra .l{font-size:11.5px;color:#9aa3ab;text-transform:uppercase;letter-spacing:.06em}
.barra button{margin-left:auto;background:var(--grn);border:0;color:#fff;border-radius:9px;
 padding:12px 18px;font:700 14.5px inherit;cursor:pointer}
.barra button:disabled{background:#3a4046;color:#7f8890;cursor:default}
.steps{display:flex;gap:6px;margin-bottom:14px}
.steps div{flex:1;text-align:center;font:700 10.5px inherit;letter-spacing:.05em;text-transform:uppercase;
 color:var(--ink3);padding:9px 4px;border-radius:8px;background:#e4e7ea;border:1px solid transparent}
.steps div.on{background:var(--acc);color:#fff;border-color:var(--acc)}
.steps div.ok{background:var(--grnbg);color:var(--grn);border-color:#bfe3ce}
.steps div b{display:block;font-size:15px;letter-spacing:-.02em;margin-bottom:1px}
.step{background:var(--card);border:1px solid var(--line);border-radius:11px;margin-bottom:11px;overflow:hidden}
.step>.h{display:flex;align-items:center;gap:11px;padding:13px 16px;border-bottom:1px solid var(--line)}
.step>.h .num{width:26px;height:26px;border-radius:99px;background:var(--acc);color:#fff;
 display:flex;align-items:center;justify-content:center;font:700 14px inherit;flex:0 0 auto}
.step>.h .tt{font-weight:650;font-size:15.5px}
.step>.h .st{margin-left:auto;font-size:12px;color:var(--ink3)}
.step>.b{padding:14px 16px}
.step.locked{opacity:.42}
.step.locked .b{pointer-events:none;user-select:none}
.step.locked>.h .num{background:#c3c9cf}
.step.done>.h .num{background:var(--grn)}
.bloccato{background:var(--ambbg);border:1px solid #f0dcb4;border-radius:11px;padding:16px 18px;
 margin-bottom:12px;color:#6f3f00;font-size:14px;line-height:1.55}
.bloccato b{display:block;font-size:15.5px;margin-bottom:4px;color:#5a3300}
.ddtpick{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.ddtpick button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:11px 15px;
 font:700 15px inherit;cursor:pointer;color:var(--ink2)}
.ddtpick button.on{background:var(--grn);border-color:var(--grn);color:#fff}
.ddtpick button small{display:block;font:600 10.5px inherit;opacity:.75;margin-top:1px}
.btnFoto{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
 background:var(--acc);color:#fff;border:0;border-radius:11px;padding:16px;
 font:700 16px inherit;cursor:pointer;margin-top:11px}
.btnFoto:disabled{background:#e4e7ea;color:var(--ink3);cursor:default}
.btnFoto svg{width:21px;height:21px;fill:currentColor}
.dest{background:var(--accbg);border-radius:9px;padding:10px 13px;font-size:13px;color:var(--acc);margin-top:10px}
.dest b{color:var(--ink)}
.dest.vuota{background:var(--ambbg);color:var(--amb)}
.fw{position:relative}
.fw button{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:99px;
 border:0;background:var(--red);color:#fff;font:700 13px inherit;line-height:1;cursor:pointer;padding:0}
.orfane{background:var(--redbg);border:1px solid #f2c9cb;border-radius:9px;padding:10px 13px;
 font-size:12.5px;color:#7d1a20;margin-top:10px}
.foto{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.foto img{width:66px;height:66px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.pl{background:#fff;border:1px solid var(--line);border-radius:11px;padding:22px 24px;margin-bottom:12px}
.pl h3{margin:0 0 3px;font-size:19px;letter-spacing:-.02em}
.pl .sub{color:var(--ink3);font-size:13px;margin-bottom:16px}
.pl table{width:100%;border-collapse:collapse;font-size:13.5px}
.pl th{text-align:left;font:700 11px inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);
 padding:8px 10px;border-bottom:1.5px solid var(--ink)}
.pl td{padding:7px 10px;border-bottom:1px solid var(--line)}
.pl td.n,.pl th.n{text-align:right;font-variant-numeric:tabular-nums}
.pl tfoot td{font-weight:700;border-top:1.5px solid var(--ink);border-bottom:0}
@media print{.top,.tabs,.pick,.barra,.noprint{display:none!important}.wrap{padding:0;max-width:100%}
 .pl{border:0;padding:0}}
.dossier{border:1px solid var(--acc);border-radius:11px;overflow:hidden;margin-bottom:14px}
.dossier .hd{background:var(--accbg);padding:13px 16px}
.dossier .hd .k{font:700 19px ui-monospace,Menlo,monospace;letter-spacing:-.03em;color:var(--acc)}
.dossier .hd .s{font-size:12.5px;color:var(--ink2);margin-top:2px}
.dossier .bd{padding:4px 16px 14px}
.tl{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;align-items:baseline}
.tl:last-child{border-bottom:0}
.tl .f{font-weight:700;min-width:92px}
.tl .w{color:var(--ink2);min-width:96px}
.tl .d{color:var(--ink3);font-variant-numeric:tabular-nums}
.tl .x{margin-left:auto;font-weight:700}
.ddtbox{display:flex;gap:9px;align-items:center;background:var(--grnbg);border:1px solid #c3e3d2;
 border-radius:10px;padding:10px 13px;margin-bottom:11px;font-size:13.5px}
.ddtbox input{border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:700 15px inherit;width:96px}
.day{font:700 11px inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);
 margin:16px 0 6px;padding-top:11px;border-top:1px solid var(--line)}
.day:first-child{border-top:0;padding-top:0;margin-top:0}
.sel{padding:10px 12px;border:1px solid var(--line);border-radius:9px;font:14px inherit;margin-bottom:12px}
.ruolo{display:flex;gap:4px;background:#2a2f35;border-radius:8px;padding:3px}
.ruolo button{background:transparent;border:0;color:#c8ced4;padding:5px 11px;border-radius:6px;
 font:600 12.5px inherit;cursor:pointer}
.ruolo button.on{background:#4b5259;color:#fff}
.lang{display:flex;gap:3px;background:#2a2f35;border-radius:7px;padding:3px}
.lang button{background:transparent;border:0;color:#8a929a;padding:4px 9px;border-radius:5px;
 font:700 11.5px inherit;cursor:pointer;letter-spacing:.04em}
.lang button.on{background:#4b5259;color:#fff}
.lbox .lang{background:#eef0f2;margin-bottom:18px;justify-content:center}
.lbox .lang button{color:var(--ink3)}
.lbox .lang button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.err{background:var(--redbg);border:1px solid #f2c9cb;color:#7d1a20;border-radius:9px;
 padding:10px 13px;font-size:13.5px;margin-top:12px}
.offline{background:var(--amb);color:#fff;text-align:center;padding:7px;font:700 12.5px inherit;
 letter-spacing:.03em}
.dot.off{background:#c9702a;animation:none}
.dot.att{background:#c9a32a;animation:none}
.frm{display:grid;gap:10px;max-width:520px}
.frm label{font:700 11px inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.frm input,.frm select{padding:11px 13px;border:1px solid var(--line);border-radius:9px;font:15px inherit;width:100%}
.frm button{border:0;background:var(--acc);color:#fff;border-radius:9px;padding:13px 18px;
 font:700 14.5px inherit;cursor:pointer;justify-self:start}
.ok{background:var(--grnbg);border:1px solid #bfe3ce;color:var(--grn);border-radius:9px;
 padding:10px 13px;font-size:13.5px;margin-top:12px}
table.ut{width:100%;border-collapse:collapse;font-size:13.5px}
table.ut th{text-align:left;font:700 11px inherit;letter-spacing:.06em;text-transform:uppercase;
 color:var(--ink3);padding:9px 11px;border-bottom:1px solid var(--line)}
table.ut td{padding:9px 11px;border-bottom:1px solid var(--line)}

/* ── pezzi mancanti e colore di stato della marca ──
   giallo = assemblata tutta, verde = saldata tutta. Il colore dice a che punto
   è la marca, non a che punto è la scheda che si sta guardando. */
.mk.st-ass{background:var(--ambbg)}
.mk.st-sald{background:var(--grnbg)}
.mk.incompleta{box-shadow:inset 4px 0 0 var(--red)}
.mk button.warn{color:var(--amb);font-size:16px;line-height:1;padding:9px 10px}
.mk .cod{min-width:88px}
.mk .dsc{flex:1 1 70px}
.ld.manca{background:var(--redbg);color:#7d1a20}
.alert.manca{background:var(--redbg);border:1px solid #f2c9cb;color:#7d1a20}
.alert.manca b.tg{background:var(--red);color:#fff}
.alert.manca button.ris{margin-left:10px;border:1px solid #e3b6b8;background:#fff;color:var(--grn);
  border-radius:7px;padding:5px 10px;font:700 12px inherit;cursor:pointer}
