:root{--bg0: #0b0d10;--bg1: #12151b;--bg2: #181c25;--bg3: #1f2433;--brd: #2a3040;--acc: #00c2ff;--acd: rgba(0,194,255,.08);--tx: #cdd6e8;--tx2: #6b7d96;--tx3: #404d61;--green: #00e676;--orange: #ffb300;--red: #ff4d4d;--purple: #b388ff;--mono: "IBM Plex Mono", monospace;--sans: "IBM Plex Sans", sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;font-family:var(--sans);-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;background:var(--bg0);color:var(--tx);overflow:hidden;overscroll-behavior:none}.app{display:flex;flex-direction:column;height:100%;height:100dvh}.header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg1);border-bottom:1px solid var(--brd);flex-shrink:0}.header-logo{width:30px;height:30px;background:var(--acc);border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700;color:#000;flex-shrink:0}.header-title{flex:1;font-size:15px;font-weight:700}.header-sub{font-family:var(--mono);font-size:10px;color:var(--tx3)}.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0}.login-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:32px 24px;gap:24px}.login-logo{width:72px;height:72px;background:var(--acc);border-radius:18px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:24px;font-weight:700;color:#000}.login-title{font-size:22px;font-weight:700;text-align:center}.login-sub{font-size:13px;color:var(--tx2);text-align:center;margin-top:-12px}.login-form{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}input,select,textarea{background:var(--bg2);border:1px solid var(--brd);border-radius:10px;color:var(--tx);font-size:16px;padding:14px 16px;width:100%;outline:none;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--acc)}.btn{background:var(--bg2);border:1px solid var(--brd);border-radius:10px;color:var(--tx);font-size:14px;font-weight:600;padding:14px 20px;cursor:pointer;transition:.15s;display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px}.btn:active{opacity:.7;transform:scale(.98)}.btn-primary{background:var(--acc);color:#000;border-color:var(--acc)}.btn-green{background:var(--green);color:#000;border-color:var(--green)}.btn-danger{background:#ff4d4d1a;color:var(--red);border-color:#ff4d4d4d}.btn-block{width:100%}.date-selector{display:flex;overflow-x:auto;padding:12px 16px;gap:8px;background:var(--bg1);border-bottom:1px solid var(--brd);-webkit-overflow-scrolling:touch;scrollbar-width:none}.date-selector::-webkit-scrollbar{display:none}.date-chip{flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:8px 14px;border-radius:10px;border:1px solid var(--brd);background:var(--bg2);cursor:pointer;transition:.15s;min-width:52px}.date-chip.active{border-color:var(--acc);background:var(--acd)}.date-chip.has-orders:after{content:"";width:5px;height:5px;border-radius:50%;background:var(--acc);display:block;margin-top:3px}.date-chip-day{font-family:var(--mono);font-size:9px;font-weight:600;text-transform:uppercase;color:var(--tx3)}.date-chip.active .date-chip-day{color:var(--acc)}.date-chip-num{font-family:var(--mono);font-size:20px;font-weight:700;line-height:1}.date-chip.active .date-chip-num{color:var(--acc)}.lavoro-list{padding:12px 16px;display:flex;flex-direction:column;gap:10px}.lavoro-card{background:var(--bg2);border:1px solid var(--brd);border-left:4px solid var(--acc);border-radius:12px;padding:16px;cursor:pointer;transition:.15s;-webkit-user-select:none}.lavoro-card:active{opacity:.8;transform:scale(.99)}.lavoro-card.consegnato{border-left-color:var(--green);opacity:.7}.lavoro-cliente{font-size:17px;font-weight:700;margin-bottom:4px;display:flex;align-items:center;gap:8px}.lavoro-info{font-family:var(--mono);font-size:11px;color:var(--tx2);display:flex;flex-direction:column;gap:3px}.lavoro-badge{font-family:var(--mono);font-size:9px;padding:2px 8px;border-radius:20px;font-weight:600}.badge-pronto{background:#00e6761a;color:var(--green);border:1px solid rgba(0,230,118,.2)}.badge-fase{background:#ffb3001a;color:var(--orange);border:1px solid rgba(255,179,0,.2)}.badge-consegnato{background:#b388ff1a;color:var(--purple);border:1px solid rgba(179,136,255,.2)}.badge-default{background:var(--bg3);color:var(--tx3);border:1px solid var(--brd)}.dettaglio-wrap{display:flex;flex-direction:column;height:100%;overflow:hidden}.dettaglio-header{padding:16px;background:var(--bg1);border-bottom:1px solid var(--brd);flex-shrink:0}.dettaglio-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px;display:flex;flex-direction:column;gap:12px}.dettaglio-footer{padding:16px;background:var(--bg1);border-top:1px solid var(--brd);display:flex;flex-direction:column;gap:10px;flex-shrink:0}.info-row{display:flex;flex-direction:column;gap:2px;padding:12px 14px;background:var(--bg3);border-radius:10px}.info-label{font-family:var(--mono);font-size:9px;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px}.info-value{font-size:14px;color:var(--tx);line-height:1.4}.foto-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.foto-thumb{aspect-ratio:1;border-radius:8px;object-fit:cover;width:100%;cursor:pointer}.foto-upload-btn{aspect-ratio:1;border-radius:8px;border:2px dashed var(--brd);background:var(--bg3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;font-size:24px;color:var(--tx3);font-family:var(--mono);font-size:10px}.nota-box{background:#00c2ff0f;border:1px solid rgba(0,194,255,.15);border-radius:10px;padding:12px 14px;font-family:var(--mono);font-size:12px;color:var(--tx2);line-height:1.7;white-space:pre-wrap}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;gap:12px;text-align:center}.empty-icon{font-size:52px;opacity:.4}.empty-title{font-size:16px;font-weight:600;color:var(--tx2)}.empty-sub{font-size:13px;color:var(--tx3);line-height:1.6}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--bg2);border:1px solid var(--brd);border-radius:100px;padding:10px 20px;font-size:13px;font-weight:600;box-shadow:0 8px 32px #0006;z-index:9999;animation:toastIn .2s ease;white-space:nowrap}.toast.ok{border-color:var(--green);color:var(--green)}.toast.err{border-color:var(--red);color:var(--red)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.spinner{width:36px;height:36px;border:3px solid var(--brd);border-top-color:var(--acc);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.img-viewer{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f2;z-index:9999;display:flex;align-items:center;justify-content:center}.img-viewer img{max-width:100%;max-height:100%;object-fit:contain}.img-viewer-close{position:absolute;top:16px;right:16px;background:#ffffff1a;border:none;color:#fff;width:40px;height:40px;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}*{scrollbar-width:none}*::-webkit-scrollbar{display:none}.reparto-card{background:var(--bg2);border:2px solid var(--brd);border-radius:16px;padding:24px 20px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.reparto-card:active{transform:scale(.97);opacity:.8}.reparto-card .rep-icon{font-size:48px}.reparto-card .rep-name{font-size:18px;font-weight:700}.reparto-card .rep-sub{font-family:var(--mono);font-size:11px;color:var(--tx3)}.fase-btn{background:var(--bg2);border:2px solid var(--brd);border-radius:14px;padding:20px 16px;cursor:pointer;transition:.15s;display:flex;align-items:center;gap:14px;width:100%}.fase-btn:active{opacity:.7;transform:scale(.98)}.fase-btn .fase-icon{font-size:32px;flex-shrink:0}.fase-btn .fase-text{text-align:left}.fase-btn .fase-title{font-size:16px;font-weight:700;margin-bottom:2px}.fase-btn .fase-sub{font-family:var(--mono);font-size:11px;color:var(--tx3)}.ordine-item{background:var(--bg2);border:1px solid var(--brd);border-radius:12px;padding:14px 16px;cursor:pointer;transition:.15s}.ordine-item:active{opacity:.8}.ordine-item.selected{border-color:var(--acc);background:var(--acd)}.reg-row{background:var(--bg3);border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px}.counter-wrap{display:flex;align-items:center;gap:0;border:1px solid var(--brd);border-radius:12px;overflow:hidden;background:var(--bg2)}.counter-btn{background:none;border:none;color:var(--tx);font-size:24px;width:56px;height:56px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.1s}.counter-btn:active{background:var(--bg3)}.counter-val{font-family:var(--mono);font-size:28px;font-weight:700;min-width:80px;text-align:center;color:var(--acc)}.zincatura-badge-inviato{background:#ffb3001a;color:var(--orange);border:1px solid rgba(255,179,0,.2)}.zincatura-badge-rientrato{background:#00e6761a;color:var(--green);border:1px solid rgba(0,230,118,.2)}.bottom-tabs{display:flex;background:var(--bg1);border-top:1px solid var(--brd);flex-shrink:0}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px;font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.3px;color:var(--tx3);cursor:pointer;border-top:2px solid transparent;transition:.15s}.bottom-tab.active{color:var(--acc);border-top-color:var(--acc)}.bottom-tab .tab-icon{font-size:20px}.screen{display:flex;flex-direction:column;min-height:100vh;background:#0f172a;color:#e5e7eb}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:#1e293b;border-bottom:3px solid #334155;position:sticky;top:0;z-index:10}.topbar .title{font-size:20px;font-weight:700}.topbar .title-small{font-size:14px;font-weight:600;opacity:.85}.topbar .link{background:transparent;color:#93c5fd;border:none;font-size:14px;cursor:pointer;padding:4px 8px}.topbar .link.tiny{font-size:11px;opacity:.8;padding:0}.content{flex:1;padding:12px;overflow-y:auto}.empty{text-align:center;padding:40px 20px;opacity:.6;font-size:14px}.error{background:#7f1d1d;color:#fecaca;padding:8px 12px;border-radius:6px;font-size:13px;margin:8px 0}.reparti-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));padding:4px 0}.reparto-tile{background:#1e293b;border:2px solid;border-radius:10px;padding:14px 12px;text-align:left;color:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px}.reparto-dot{width:18px;height:18px;border-radius:50%;margin-bottom:4px}.reparto-nome{font-size:16px;font-weight:700}.reparto-sub{font-size:12px;opacity:.7}.reparto-meta{font-size:10px;opacity:.55;margin-top:4px}.filtri{display:flex;gap:6px;overflow-x:auto;padding:8px 12px;background:#1e293b;border-bottom:1px solid #334155;-webkit-overflow-scrolling:touch}.pill{padding:6px 12px;border:1.5px solid;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer}.pill.active{font-weight:700}.lavoro-card{width:100%;text-align:left;background:#1e293b;border:1px solid #334155;border-left:5px solid;border-radius:8px;padding:12px;margin-bottom:10px;color:inherit;cursor:pointer;display:block}.lavoro-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.urgenza-badge{display:inline-block;padding:3px 8px;border:1px solid;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px}.urgenza-badge.big{padding:6px 14px;font-size:13px}.data-target{font-size:12px;font-weight:600;opacity:.85}.data-target.big{font-size:14px;opacity:1}.lavoro-titolo{font-size:14px;font-weight:700;margin-bottom:4px;line-height:1.3}.lavoro-cli{font-size:12px;opacity:.8;margin-bottom:4px}.lavoro-sched{font-size:12px;font-weight:700;margin-bottom:4px}.lavoro-noteprod{font-size:12px;background:#422006;color:#fde68a;border-radius:6px;padding:5px 8px;margin-bottom:4px;white-space:pre-wrap}.lavoro-meta{font-size:11px;opacity:.55}.note-prod-box{background:#422006;color:#fde68a;border:1px solid #92400e;border-radius:8px;padding:10px 12px;margin:4px 0 10px;font-size:14px;white-space:pre-wrap}.note-prod-box .lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;opacity:.85}.sched-box{background:#0f172a;border:1px solid #1e3a5f;border-radius:8px;padding:10px 12px;margin:4px 0 10px;font-size:14px}.sched-box .lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;opacity:.7}.card-detail{background:#1e293b;border-radius:10px;padding:16px}.urgenza-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.art-title{font-size:18px;font-weight:700;margin:0 0 4px;word-break:break-all}.art-desc{font-size:14px;opacity:.9;margin-bottom:8px;line-height:1.4}.art-master-desc{font-size:12px;opacity:.65;margin-bottom:12px;padding:6px 10px;background:#0f172a;border-radius:6px}.art-master-desc .lbl{opacity:.7}.detail-row{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px}.detail-row .lbl{min-width:110px;opacity:.6;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.detail-row .val{flex:1;word-break:break-word}.section-title{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;opacity:.55;margin:10px 0 4px}.section-divider{height:1px;background:#ffffff14;margin:14px 0 6px}.note-box{background:#0f172a;padding:10px;border-radius:6px;font-size:13px;white-space:pre-wrap}.form-row{display:flex;flex-direction:column;gap:4px;margin:8px 0}.form-row label{font-size:11px;opacity:.7;text-transform:uppercase;letter-spacing:.5px}.form-row input,.form-row textarea{background:#0f172a;border:1px solid #334155;color:#e5e7eb;padding:8px 10px;border-radius:6px;font-size:14px}.primary-btn{width:100%;background:#16a34a;color:#fff;border:none;padding:14px;border-radius:8px;font-size:16px;font-weight:700;margin-top:14px;cursor:pointer}.primary-btn:disabled{opacity:.5}.esito-ok{background:#14532d;color:#bbf7d0;padding:12px 14px;border-radius:8px;font-size:15px;font-weight:600}.esito-warn-intro{font-size:13px;opacity:.8;margin:4px 0 8px}.esito-warn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.esito-warn-list li{background:#78350f;color:#fde68a;padding:10px 12px;border-radius:6px;font-size:14px;line-height:1.35;border-left:4px solid #f59e0b}@media (min-width: 820px){.screen{max-width:900px;margin:0 auto;border-left:1px solid #1e293b;border-right:1px solid #1e293b}.topbar{border-radius:0}.reparti-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible{outline:2px solid var(--acc, #00c2ff);outline-offset:2px}::selection{background:#00c2ff40}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.bottom-tabs{position:fixed;bottom:0;left:0;right:0;z-index:90;display:flex;background:var(--bg1, #12151b);border-top:1px solid var(--brd, #2a3040);padding-bottom:env(safe-area-inset-bottom,0)}.bottom-tabs button{flex:1;padding:12px 0;background:transparent;border:none;color:var(--tx2, #6b7d96);font-size:14px;font-weight:700;cursor:pointer}.bottom-tabs button.active{color:var(--acc, #00c2ff)}.screen .content{padding-bottom:64px}.cal-gruppo{margin-bottom:14px}.cal-giorno{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--tx2, #6b7d96);padding:8px 2px 6px}.cal-giorno.oggi{color:var(--acc, #00c2ff)}.cal-giorno.ritardo{color:#ff4d4d}.cal-count{background:var(--bg3, #1f2433);border-radius:10px;padding:1px 8px;font-size:11px;color:var(--tx2, #6b7d96)}.cal-task{background:var(--bg2, #181c25);border:1px solid var(--brd, #2a3040);border-left-width:4px;border-left-style:solid;border-radius:10px;padding:11px 13px;margin-bottom:8px}.cal-task.late{border-color:#ff4d4d80;background:#ff4d4d0d}.cal-task.done{opacity:.55}.cal-task-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.cal-ora{font-family:monospace;font-size:13px;font-weight:800;color:var(--acc, #00c2ff)}.cal-fase{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.cal-risorsa{font-size:11px;color:var(--tx2, #6b7d96)}.cal-task-art{font-size:15px;font-weight:700;margin-bottom:3px}.cal-task-cli{font-size:12.5px;color:var(--tx2, #6b7d96)}.cal-task-note{font-size:12.5px;color:#ffd740;margin-top:4px}.cal-fatto{margin-top:9px;width:100%}.cal-done-label{margin-top:8px;font-size:13px;font-weight:700;color:#22c55e}.cal-task-custom{margin-top:5px;padding:6px 9px;border-radius:7px;font-size:13px;font-weight:600;line-height:1.45;background:#ff6b9d1a;border:1px solid rgba(255,107,157,.35);color:#ff8fb3}.cal-task-tech{margin-top:4px;font-size:12px;color:#9ecbff;line-height:1.4}.cal-giorno.noplan{color:#b388ff}.cal-task.noplan{background:#b388ff0f;border-color:#b388ff4d}.screen{background:var(--bg0, #0b0d10);color:var(--tx, #cdd6e8)}.topbar.rep-header{background:linear-gradient(135deg,color-mix(in srgb,var(--rep, #00c2ff) 22%,var(--bg1, #12151b)),var(--bg1, #12151b) 65%);border-bottom:3px solid var(--rep, #00c2ff);padding:16px}.rep-kicker{font-family:var(--mono, monospace);font-size:10px;font-weight:700;letter-spacing:2px;color:var(--rep, #00c2ff);opacity:.9;margin-bottom:2px}.topbar .title{display:flex;align-items:center;gap:9px;font-size:22px}.rep-dot{width:13px;height:13px;border-radius:50%;background:var(--rep, #00c2ff);box-shadow:0 0 10px var(--rep, #00c2ff);flex-shrink:0}.topbar .link{color:var(--tx2, #6b7d96)}.topbar .link.big{font-size:20px}.topbar .link.tiny{color:var(--rep, #00c2ff)}.stat-strip{display:flex;gap:8px;padding:10px 14px;background:var(--bg1, #12151b);border-bottom:1px solid var(--brd, #2a3040);position:sticky;top:0;z-index:5}.stat{flex:1;display:flex;flex-direction:column;align-items:center;background:var(--bg2, #181c25);border:1px solid var(--brd, #2a3040);border-radius:10px;padding:7px 4px}.stat-n{font-family:var(--mono, monospace);font-size:20px;font-weight:800;line-height:1.1}.stat-l{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--tx2, #6b7d96)}.stat .stat-n{color:var(--rep, #00c2ff)}.stat.bad{border-color:#ff4d4d73;background:#ff4d4d12}.stat.bad .stat-n{color:#ff4d4d}.stat.ok .stat-n{color:#00e676}.stat.dim .stat-n{color:#b388ff}.lavoro-card,.reparto-tile,.card-detail{background:var(--bg2, #181c25);border-color:var(--brd, #2a3040);border-radius:12px;transition:transform .12s ease,box-shadow .12s ease}.lavoro-card{border-left-width:5px;box-shadow:0 4px 14px -8px #0009}.lavoro-card:active{transform:scale(.985)}.reparto-tile{padding:18px 14px;box-shadow:0 6px 18px -10px #000000b3}.reparto-tile:active{transform:scale(.97)}.reparto-nome{font-size:18px}.filtri{background:var(--bg1, #12151b);border-bottom-color:var(--brd, #2a3040)}.pill{font-size:12.5px;padding:7px 14px}.cal-task{background:var(--bg2, #181c25);border-color:var(--brd, #2a3040);border-radius:12px;box-shadow:0 4px 14px -8px #0009}.cal-giorno.oggi{color:var(--rep, #00c2ff)}.cal-fatto{background:linear-gradient(135deg,#16a34a,#15803d);box-shadow:0 4px 14px -6px #16a34a80;border-radius:10px}.arrivo-box summary{cursor:pointer;list-style:none}.arrivo-box summary::-webkit-details-marker{display:none}.cal-giorno.arrivo{color:var(--tx2, #6b7d96)}.cal-task.arrivo{opacity:.8;border-style:dashed;box-shadow:none}.cal-task-fase-att{display:inline-block;margin-top:5px;font-family:var(--mono, monospace);font-size:11.5px;font-weight:700;color:var(--orange, #ffb300);background:#ffb30014;border:1px solid rgba(255,179,0,.3);border-radius:6px;padding:3px 8px}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:48px 28px}.empty-state .empty-icon{font-size:56px;opacity:.85}.empty-state .empty-title{font-size:17px;font-weight:700;color:var(--tx, #cdd6e8)}.empty-state .empty-sub{font-size:13.5px;color:var(--tx2, #6b7d96);line-height:1.6;max-width:420px}.bottom-tabs{background:var(--bg1, #12151b);border-top-color:var(--brd, #2a3040)}.bottom-tabs button.active{color:var(--rep, var(--acc, #00c2ff))}.bottom-tabs button{font-size:15px;padding:13px 0}.primary-btn{border-radius:10px;font-size:17px}.error{border-radius:8px}
