:root{--bg:#0f172a;--bg-sidebar:#131c2e;--bg-card:#1a2540;--bg-cell:#1e2d42;--bg-hover:#243350;--text:#e2e8f0;--text-dim:#94a3b8;--text-muted:#64748b;--accent:#818cf8;--accent-hover:#6366f1;--accent-subtle:#818cf81a;--accent-border:#818cf847;--accent2:#10b981;--accent2-hover:#059669;--accent2-subtle:#10b9811a;--danger:#fb7185;--danger-subtle:#fb71851a;--danger-border:#fb718540;--weekend:#f87171;--holiday:#f43f5e;--border:#e2e8f00f;--border-hover:#e2e8f01c;--shadow-sm:0 1px 3px #0000004d,0 1px 2px #00000026;--shadow-md:0 4px 16px #00000059,0 2px 4px #0003;--shadow-lg:0 8px 32px #00000080,0 3px 8px #00000040;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--t:150ms cubic-bezier(0.4,0,0.2,1);--t-spring:250ms cubic-bezier(0.34,1.56,0.64,1);--sidebar-w:200px;--nav-h:60px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f172a;background:var(--bg);color:#e2e8f0;color:var(--text);font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5}:focus-visible{border-radius:2px;outline:2px solid #818cf8;outline:2px solid var(--accent);outline-offset:2px}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.4}button:disabled:hover{box-shadow:none!important;transform:none!important}.app-container{display:flex;min-height:100dvh;width:100%}.sidebar{background:#131c2e;background:var(--bg-sidebar);border-right:1px solid #e2e8f00f;border-right:1px solid var(--border);display:flex;flex-direction:column;height:100%;left:0;padding:20px 0 12px;position:fixed;top:0;width:200px;width:var(--sidebar-w);z-index:50}.brand{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#818cf8,#a78bfa 50%,#10b981);background:linear-gradient(135deg,var(--accent) 0,#a78bfa 50%,var(--accent2) 100%);-webkit-background-clip:text;background-clip:text;font-size:15px;font-weight:800;letter-spacing:-.03em;padding:0 16px 24px}.sidebar a,.sidebar button:not(.logout){align-items:center;background:#0000;border:1px solid #0000;border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;display:flex;font-family:inherit;font-size:13px;font-weight:500;gap:9px;margin:1px 8px;padding:9px 12px;text-align:left;text-decoration:none;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),border-color var(--t);width:calc(100% - 16px)}.nav-icon{flex-shrink:0;font-size:14px;opacity:.65;transition:opacity .15s cubic-bezier(.4,0,.2,1);transition:opacity var(--t)}.nav-label{flex:1 1;font-size:13px;font-weight:500}.sidebar a:hover,.sidebar button:not(.logout):hover{background:#818cf81a;background:var(--accent-subtle);border-color:#0000;color:#e2e8f0;color:var(--text)}.sidebar a:hover .nav-icon{opacity:1}.sidebar a.active{background:#818cf81f;border-color:#818cf847;border-color:var(--accent-border);color:#818cf8;color:var(--accent);font-weight:600}.sidebar a.active .nav-icon{opacity:1}.sidebar a.active .nav-label{font-weight:600}.sidebar .logout{align-items:center;background:#0000;border:1px solid #0000;border-radius:6px;border-radius:var(--radius-sm);color:#fb7185;color:var(--danger);cursor:pointer;display:flex;font-family:inherit;font-size:13px;font-weight:500;gap:9px;margin:auto 8px 4px;padding:9px 12px;transition:background .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),border-color var(--t);width:calc(100% - 16px)}.sidebar .logout:hover{background:#fb71851a;background:var(--danger-subtle);border-color:#fb718540;border-color:var(--danger-border);color:#fb7185;color:var(--danger)}.main{flex:1 1;margin-left:200px;margin-left:var(--sidebar-w);min-width:0;padding:24px}.page-header{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172ae0;border-bottom:1px solid #e2e8f00f;border-bottom:1px solid var(--border);display:flex;margin:-24px -24px 24px;padding:10px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:40}.page-header-title{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.login-page{align-items:center;background:#0f172a;background:var(--bg);background-image:radial-gradient(ellipse at 20% 50%,#6366f114 0,#0000 60%),radial-gradient(ellipse at 80% 20%,#10b9810d 0,#0000 50%);display:flex;justify-content:center;min-height:100dvh}.login-form{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:20px;border-radius:var(--radius-xl);box-shadow:0 8px 32px #00000080,0 3px 8px #00000040,inset 0 1px 0 #ffffff0a;box-shadow:var(--shadow-lg),inset 0 1px 0 #ffffff0a;padding:40px;width:360px}.login-form h2{font-size:22px;font-weight:800;letter-spacing:-.03em;margin-bottom:28px;text-align:center}.login-form input{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:10px;border-radius:var(--radius-md);color:#e2e8f0;color:var(--text);font-family:inherit;font-size:14px;margin-bottom:10px;padding:11px 14px;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t);width:100%}.login-form input:focus{border-color:#818cf8;border-color:var(--accent);box-shadow:0 0 0 3px #818cf826;outline:none}.login-form input::placeholder{color:#64748b;color:var(--text-muted)}.login-form button{background:#10b981;background:var(--accent2);border:none;border-radius:10px;border-radius:var(--radius-md);box-shadow:0 2px 10px #10b9814d,inset 0 1px 0 #ffffff1f;color:#fff;cursor:pointer;font-family:inherit;font-size:15px;font-weight:700;letter-spacing:-.01em;padding:12px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t);width:100%}.login-form button:hover{background:#059669;background:var(--accent2-hover);box-shadow:0 5px 18px #10b98166;transform:translateY(-1px)}.login-form button:active{transform:translateY(0) scale(.98)}.error-box{background:#fb71851a;background:var(--danger-subtle);border:1px solid #fb718540;border:1px solid var(--danger-border);border-radius:10px;border-radius:var(--radius-md);color:#fb7185;color:var(--danger);font-size:13px;font-weight:500;margin-bottom:14px;padding:10px 14px;text-align:center}.page{max-width:100%;width:100%}.page h2{font-size:22px;font-weight:800;letter-spacing:-.03em;margin-bottom:20px}.dashboard{max-width:100%;width:100%}.header{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:16px}.header h1{font-size:28px;font-weight:800;letter-spacing:-.04em}.header-right{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.nav-buttons{display:flex;gap:4px}.nav-buttons button{align-items:center;background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:50%;color:#e2e8f0;color:var(--text);cursor:pointer;display:flex;font-size:13px;font-weight:700;height:32px;justify-content:center;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.34,1.56,.64,1);transition:background var(--t),color var(--t),border-color var(--t),transform var(--t-spring);width:32px}.nav-buttons button:hover{background:#818cf8;background:var(--accent);border-color:#818cf8;border-color:var(--accent);color:#fff;transform:scale(1.1)}.nav-buttons button:active{transform:scale(.92)}.holidays-bar{background:#f43f5e0f;border:1px solid #f43f5e24;border-radius:6px;border-radius:var(--radius-sm);display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;padding:9px 12px}.holiday-tag{background:#f43f5e24;border-radius:4px;color:#f43f5e;color:var(--holiday);font-size:11px;font-weight:600;padding:2px 8px}.legend{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);display:flex;flex-wrap:wrap;gap:14px;margin-bottom:14px;padding:9px 14px}.legend-item{align-items:center;color:#64748b;color:var(--text-muted);display:flex;font-size:11px;font-weight:500;gap:6px}.legend-color{border-radius:2px;flex-shrink:0;height:8px;width:8px}.legend-lavorate{background:#4ade80}.legend-straordinario{background:#fb923c}.legend-reperibilita{background:#facc15}.legend-trasferta{background:#38bdf8}.legend-permesso{background:#c084fc}.workers-list{display:flex;flex-direction:column;gap:8px;width:100%}.worker-row{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);box-shadow:0 1px 3px #0000004d,0 1px 2px #00000026;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t)}.worker-row:hover{border-color:#818cf847;border-color:var(--accent-border);box-shadow:0 0 0 1px #818cf81a,0 4px 16px #00000059,0 2px 4px #0003;box-shadow:0 0 0 1px var(--accent-subtle),var(--shadow-md)}.worker-info{align-items:center;background:#ffffff05;border-bottom:1px solid #e2e8f00f;border-bottom:1px solid var(--border);display:flex;gap:10px;padding:8px 12px}.worker-checkbox{accent-color:#818cf8;accent-color:var(--accent);cursor:pointer;flex-shrink:0;height:15px;width:15px}.worker-code{font-feature-settings:"tnum";background:#818cf81a;background:var(--accent-subtle);border-radius:4px;color:#818cf8;color:var(--accent);flex-shrink:0;font-size:10.5px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.05em;padding:2px 7px}.worker-name{color:#e2e8f0;color:var(--text);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.days-grid{-webkit-overflow-scrolling:touch;display:flex;flex-direction:row;flex-wrap:nowrap;gap:2px;overflow-x:auto;padding:6px;scrollbar-width:none}.days-grid::-webkit-scrollbar{display:none}.day-cell{align-items:center;background:#1e2d42;background:var(--bg-cell);border-radius:6px;border-radius:var(--radius-sm);cursor:pointer;display:flex;flex:1 0 44px;flex-direction:column;justify-content:flex-start;max-width:62px;min-height:60px;min-width:44px;overflow:hidden;padding:4px 2px 3px;position:relative;transition:background .15s cubic-bezier(.4,0,.2,1),transform .12s cubic-bezier(.34,1.56,.64,1);transition:background var(--t),transform .12s cubic-bezier(.34,1.56,.64,1)}.day-cell:before{background:#0000;border-radius:0 0 1px 1px;content:"";height:2px;left:0;position:absolute;right:0;top:0}.day-cell:hover{background:#243350;background:var(--bg-hover);transform:translateY(-1px)}.day-cell:active{transform:scale(.95);transition-duration:80ms}.day-label{color:#64748b;color:var(--text-muted);font-size:9px;font-weight:600;letter-spacing:.04em;line-height:1;margin-top:2px;text-transform:uppercase}.day-num{font-feature-settings:"tnum";font-size:13px;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.3}.day-holiday{color:#f43f5e;color:var(--holiday);font-size:7px;font-weight:700;line-height:1;overflow:hidden;text-overflow:ellipsis}.day-status{font-size:9.5px;font-weight:800;letter-spacing:.01em;line-height:1;margin-top:1px}.day-status.stato-r{color:#f59e0b}.day-status.stato-altro{color:#fb7185;color:var(--danger)}.hours-display{font-feature-settings:"tnum";display:flex;flex-wrap:wrap;font-size:8.5px;font-variant-numeric:tabular-nums;font-weight:700;gap:1px;justify-content:center;margin-top:2px}.hour-lavorate{color:#4ade80}.hour-straordinario{color:#fb923c}.hour-reperibilita{color:#facc15}.hour-trasferta{color:#38bdf8}.hour-permesso{color:#c084fc}.hour-cantiere{color:#818cf8;color:var(--accent);display:block;font-size:8px;margin-top:1px}.day-cell.lavorato{background:#818cf814}.day-cell.lavorato:before{background:#818cf8;background:var(--accent)}.day-cell.weekend .day-label,.day-cell.weekend .day-num{color:#f87171;color:var(--weekend)}.day-cell.weekend{background:#f8717212}.day-cell.holiday{background:#f43f5e1a;border:1px solid #f43f5e26}.day-cell.holiday:before{background:#f43f5e;background:var(--holiday)}.day-cell.holiday .day-holiday,.day-cell.holiday .day-label,.day-cell.holiday .day-num{color:#f43f5e;color:var(--holiday)}.day-cell.r{background:#fbbf241a}.day-cell.r:before{background:#fbbf24}.day-cell.r .day-status{color:#f59e0b;font-weight:800}.day-cell.ts{background:#a78bfa1a}.day-cell.ts:before{background:#a78bfa}.day-cell.ts .day-status{color:#a78bfa;font-size:10px;font-weight:800}.day-cell.f{background:#10b9811a}.day-cell.f:before{background:#10b981;background:var(--accent2)}.day-cell.f .day-status{color:#10b981;color:var(--accent2);font-size:10px;font-weight:800}.day-cell.pioggia{background:#38bdf81a}.day-cell.pioggia:before{background:#38bdf8}.day-cell.pioggia .day-status{color:#38bdf8;font-weight:800}.day-cell.a,.day-cell.m,.day-cell.p{background:#fb71851a}.day-cell.a:before,.day-cell.m:before,.day-cell.p:before{background:#fb7185;background:var(--danger)}.day-cell.a .day-status,.day-cell.m .day-status,.day-cell.p .day-status{color:#fb7185;color:var(--danger);font-size:10px;font-weight:800}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000bf;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:100}@keyframes modal-in{0%{opacity:0;transform:scale(.93) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-box{animation:modal-in .22s cubic-bezier(.34,1.56,.64,1);background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:20px;border-radius:var(--radius-xl);box-shadow:0 8px 32px #00000080,0 3px 8px #00000040,inset 0 1px 0 #ffffff0a;box-shadow:var(--shadow-lg),inset 0 1px 0 #ffffff0a;padding:28px;width:min(380px,100%)}.modal-box h3{font-size:17px;font-weight:700;letter-spacing:-.02em;margin-bottom:3px}.modal-date{color:#64748b;color:var(--text-muted);font-size:13px;margin-bottom:18px}.form-fields{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.form-field{display:flex;flex-direction:column;gap:5px}.form-field label{color:#94a3b8;color:var(--text-dim);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.form-field input,.form-field select,.form-fields input,.form-fields select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);font-family:inherit;font-size:14px;padding:9px 10px;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t);width:100%}.form-field input:focus,.form-field select:focus,.form-fields input:focus,.form-fields select:focus{border-color:#818cf8;border-color:var(--accent);box-shadow:0 0 0 3px #818cf824;outline:none}.modal-actions{display:flex;gap:8px;margin-top:18px}@keyframes popover-in{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.quick-popover{animation:popover-in .22s cubic-bezier(.34,1.56,.64,1);background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:20px;border-radius:var(--radius-xl);box-shadow:0 8px 32px #00000080,0 3px 8px #00000040,inset 0 1px 0 #ffffff0a;box-shadow:var(--shadow-lg),inset 0 1px 0 #ffffff0a;padding:20px;width:min(320px,calc(100vw - 32px))}.quick-popover-header{align-items:baseline;display:flex;gap:8px;justify-content:space-between;margin-bottom:14px}.quick-popover-header span:first-child{font-size:15px;font-weight:700;letter-spacing:-.02em}.quick-stato-buttons{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:14px}.stato-btn{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:11px;font-weight:800;letter-spacing:.03em;min-height:30px;padding:5px 10px;transition:all .15s cubic-bezier(.4,0,.2,1);transition:all var(--t)}.stato-btn.active{background:#818cf8;background:var(--accent);border-color:#818cf8;border-color:var(--accent);box-shadow:0 2px 8px #818cf84d;color:#fff}.stato-btn:hover:not(.active){background:#243350;background:var(--bg-hover);border-color:#e2e8f01c;border-color:var(--border-hover);color:#e2e8f0;color:var(--text)}.quick-cantiere-info{align-items:center;background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);display:flex;justify-content:space-between;margin-top:10px;padding:8px 11px}.quick-cantiere-label{color:#64748b;color:var(--text-muted);font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.quick-cantiere-value{color:#818cf8;color:var(--accent);font-size:12px;font-weight:600}.quick-cantiere-value.custom{color:#94a3b8;color:var(--text-dim);font-style:italic;font-weight:400}@keyframes slide-up{0%{opacity:0;transform:translateX(-50%) translateY(24px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.bulk-panel{animation:slide-up .22s cubic-bezier(.34,1.56,.64,1);bottom:24px;left:50%;position:fixed;transform:translateX(-50%);z-index:200}.bulk-panel-content{align-items:center;background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 8px 32px #00000080,0 3px 8px #00000040;box-shadow:var(--shadow-lg);display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px;white-space:nowrap}.bulk-panel-content>span{color:#818cf8;color:var(--accent);font-size:13px;font-weight:700}.bulk-panel-content input,.bulk-panel-content select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);font-family:inherit;font-size:13px;padding:6px 10px}.bulk-ore-field{align-items:center;color:#94a3b8;color:var(--text-dim);display:flex;font-size:12px;font-weight:600;gap:6px}.bulk-ore-field input{width:64px}.btn-save{background:#10b981;background:var(--accent2);border:none;border-radius:10px;border-radius:var(--radius-md);box-shadow:0 2px 8px #10b98140;color:#fff;cursor:pointer;flex:1 1;font-family:inherit;font-size:14px;font-weight:700;letter-spacing:-.01em;padding:10px 16px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t)}.btn-save:hover{background:#059669;background:var(--accent2-hover);box-shadow:0 4px 14px #10b98161;transform:translateY(-1px)}.btn-save:active{transform:translateY(0) scale(.97)}.btn-cancel{background:#0000;border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:10px;border-radius:var(--radius-md);color:#94a3b8;color:var(--text-dim);cursor:pointer;flex:1 1;font-family:inherit;font-size:14px;font-weight:500;padding:10px 16px;transition:background .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),border-color var(--t),color var(--t)}.btn-cancel:hover{background:#243350;background:var(--bg-hover);color:#e2e8f0;color:var(--text)}.btn-secondary{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:500;padding:9px 14px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),transform var(--t)}.btn-secondary:hover{background:#243350;background:var(--bg-hover);color:#e2e8f0;color:var(--text);transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0) scale(.97)}.btn-small{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:600;padding:4px 10px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),color var(--t)}.btn-small:hover{background:#243350;background:var(--bg-hover);color:#e2e8f0;color:var(--text);transform:translateY(-1px)}.btn-small:active{transform:translateY(0) scale(.97)}.btn-danger{background:#fb71851a;background:var(--danger-subtle);border:1px solid #fb718540;border:1px solid var(--danger-border);border-radius:6px;border-radius:var(--radius-sm);color:#fb7185;color:var(--danger);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;padding:9px 14px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),transform var(--t)}.btn-danger:hover{background:#fb7185;background:var(--danger);color:#fff;transform:translateY(-1px)}.btn-danger:active{transform:translateY(0) scale(.97)}.btn-small.btn-danger{font-size:11.5px;padding:4px 10px}.btn-small.btn-danger:hover{background:#fb7185;background:var(--danger);color:#fff}.quick-mode-btn{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;padding:6px 12px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),border-color var(--t),box-shadow var(--t)}.quick-mode-btn.active{border-color:#818cf847;border-color:var(--accent-border);box-shadow:0 0 0 3px #818cf812}.quick-mode-btn.active,.quick-mode-btn:hover{background:#818cf81a;background:var(--accent-subtle);color:#818cf8;color:var(--accent)}.btn-bulk{background:#10b981;background:var(--accent2);border:none;border-radius:6px;border-radius:var(--radius-sm);box-shadow:0 2px 8px #10b98140;color:#fff;cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;padding:6px 12px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t)}.btn-bulk:hover{background:#059669;background:var(--accent2-hover);box-shadow:0 4px 12px #10b98159;transform:translateY(-1px)}.btn-bulk:active{transform:translateY(0) scale(.97)}.btn-remove{background:#fb71851a;background:var(--danger-subtle);border:1px solid #fb718540;border:1px solid var(--danger-border);border-radius:6px;border-radius:var(--radius-sm);color:#fb7185;color:var(--danger);cursor:pointer;font-family:inherit;font-size:11px;font-weight:700;padding:5px 9px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),transform var(--t)}.btn-remove:hover{background:#fb7185;background:var(--danger);color:#fff;transform:translateY(-1px)}.btn-remove:active{transform:scale(.97)}.btn-reset{background:#0000;border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:12px;padding:5px 12px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t)}.btn-reset:hover{background:#243350;background:var(--bg-hover);color:#e2e8f0;color:var(--text)}.btn-copy-prev{align-items:center;background:#0000;border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;display:inline-flex;font-family:inherit;font-size:12px;font-weight:500;gap:5px;margin-bottom:14px;padding:5px 11px;transition:all .15s cubic-bezier(.4,0,.2,1);transition:all var(--t)}.btn-copy-prev:hover{background:#243350;background:var(--bg-hover);color:#e2e8f0;color:var(--text)}.btn-copy-prev:disabled{cursor:not-allowed;opacity:.35}.settings-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.settings-actions button:not(.btn-secondary):not(.btn-danger):not(.btn-small){background:#10b981;background:var(--accent2);border:none;border-radius:6px;border-radius:var(--radius-sm);box-shadow:0 2px 8px #10b98138;color:#fff;cursor:pointer;font-family:inherit;font-size:14px;font-weight:700;padding:10px 16px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t)}.settings-actions button:not(.btn-secondary):not(.btn-danger):not(.btn-small):hover{background:#059669;background:var(--accent2-hover);box-shadow:0 4px 12px #10b98159;transform:translateY(-1px)}.settings-actions button:not(.btn-secondary):not(.btn-danger):not(.btn-small):active{transform:translateY(0) scale(.98)}.form-box{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);box-shadow:0 1px 3px #0000004d,0 1px 2px #00000026;box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:16px}.form-box input,.form-box select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);flex:1 1;font-family:inherit;font-size:14px;min-width:140px;padding:10px 12px;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t)}.form-box input:focus,.form-box select:focus{border-color:#818cf8;border-color:var(--accent);box-shadow:0 0 0 3px #818cf81f;outline:none}.form-box input::placeholder{color:#64748b;color:var(--text-muted)}.form-box button{background:#10b981;background:var(--accent2);border:none;border-radius:6px;border-radius:var(--radius-sm);box-shadow:0 2px 8px #10b98133;color:#fff;cursor:pointer;font-family:inherit;font-size:14px;font-weight:700;padding:10px 20px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t)}.form-box button:hover{background:#059669;background:var(--accent2-hover);box-shadow:0 4px 12px #10b98152;transform:translateY(-1px)}.form-box button:active{transform:translateY(0) scale(.98)}.filters{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:12px 14px}.filters input,.filters select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);font-family:inherit;font-size:14px;padding:8px 12px;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t)}.filters input:focus,.filters select:focus{border-color:#818cf8;border-color:var(--accent);box-shadow:0 0 0 3px #818cf81f;outline:none}.filters button{background:#10b981;background:var(--accent2);border:none;border-radius:6px;border-radius:var(--radius-sm);box-shadow:0 2px 8px #10b98133;color:#fff;cursor:pointer;font-family:inherit;font-size:14px;font-weight:700;padding:8px 16px;transition:background .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),transform var(--t),box-shadow var(--t)}.filters button:hover{background:#059669;background:var(--accent2-hover);box-shadow:0 4px 12px #10b98152;transform:translateY(-1px)}.ore-field .ore-stepper{align-items:stretch;background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);display:flex;overflow:hidden}.ore-stepper input{-moz-appearance:textfield;background:#0000;border:none;color:#e2e8f0;color:var(--text);flex:1 1;font-family:inherit;font-size:14px;font-weight:600;min-width:0;padding:8px 2px;text-align:center}.ore-stepper input::-webkit-inner-spin-button,.ore-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ore-stepper input:focus{outline:none}.ore-step{align-items:center;background:#ffffff08;border:none;color:#94a3b8;color:var(--text-dim);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;font-weight:700;justify-content:center;padding:0;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t);width:32px}.ore-step:first-child{border-right:1px solid #e2e8f01c;border-right:1px solid var(--border-hover)}.ore-step:last-child{border-left:1px solid #e2e8f01c;border-left:1px solid var(--border-hover)}.ore-step:hover{background:#818cf8;background:var(--accent);color:#fff}.ore-step:active{background:#6366f1;background:var(--accent-hover)}.data-table{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-collapse:collapse;border-radius:10px;border-radius:var(--radius-md);box-shadow:0 1px 3px #0000004d,0 1px 2px #00000026;box-shadow:var(--shadow-sm);overflow:hidden;width:100%}.data-table td,.data-table th{border-bottom:1px solid #e2e8f00f;border-bottom:1px solid var(--border);padding:11px 14px;text-align:left}.data-table th{background:#ffffff05;color:#64748b;color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.data-table tbody tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#818cf80a}.data-table button{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:12px;font-weight:600;margin-right:4px;padding:4px 10px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),border-color var(--t),transform var(--t)}.data-table button:hover{background:#818cf8;background:var(--accent);border-color:#818cf8;border-color:var(--accent);color:#fff;transform:translateY(-1px)}.data-table button:active{transform:translateY(0) scale(.97)}.code{font-feature-settings:"tnum";background:#818cf81a;background:var(--accent-subtle);border-radius:4px;color:#818cf8;color:var(--accent);font-size:11px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.02em;padding:2px 7px}.cantieri-section{border-top:1px solid #e2e8f00f;border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.cantieri-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.cantieri-header span{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.btn-add-cantiere{background:#10b9811a;background:var(--accent2-subtle);border:1px solid #10b98140;border-radius:6px;border-radius:var(--radius-sm);color:#10b981;color:var(--accent2);cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:700;padding:4px 10px;transition:background .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),transform .15s cubic-bezier(.4,0,.2,1);transition:background var(--t),color var(--t),transform var(--t)}.btn-add-cantiere:hover{background:#10b981;background:var(--accent2);color:#fff;transform:translateY(-1px)}.btn-add-cantiere:active{transform:scale(.97)}.cantiere-row{align-items:center;display:flex;gap:8px;margin-bottom:8px}.cantiere-row select{flex:1 1}.cantiere-row input,.cantiere-row select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);font-family:inherit;font-size:13px;padding:7px 10px;transition:border-color .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t)}.cantiere-row input{width:80px}.settings-section{background:#1a2540;background:var(--bg-card);border:1px solid #e2e8f00f;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);box-shadow:0 1px 3px #0000004d,0 1px 2px #00000026;box-shadow:var(--shadow-sm);margin-bottom:20px;padding:22px}.settings-section h3{border-bottom:1px solid #e2e8f00f;border-bottom:1px solid var(--border);font-size:16px;font-weight:700;letter-spacing:-.02em;margin-bottom:16px;padding-bottom:12px}.settings-row{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.settings-row label{color:#94a3b8;color:var(--text-dim);flex-shrink:0;font-size:13px;font-weight:500;width:180px}.settings-row input,.settings-row select{background:#1e2d42;background:var(--bg-cell);border:1px solid #e2e8f01c;border:1px solid var(--border-hover);border-radius:6px;border-radius:var(--radius-sm);color:#e2e8f0;color:var(--text);flex:1 1;font-family:inherit;font-size:14px;max-width:300px;padding:9px 12px;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1);transition:border-color var(--t),box-shadow var(--t)}.settings-row input:focus,.settings-row select:focus{border-color:#818cf8;border-color:var(--accent);box-shadow:0 0 0 3px #818cf81f;outline:none}.settings-row input[type=number]{max-width:100px;width:100px}.backup-list{margin-top:16px}.backup-list table{margin-top:8px}.backup-info{color:#94a3b8;color:var(--text-dim);font-size:13px;line-height:1.65;margin-top:10px}.message{color:#818cf8;color:var(--accent);font-size:13px;font-weight:600;margin-top:8px}.no-workers-box{background:#1a2540;background:var(--bg-card);border:2px dashed #e2e8f01c;border:2px dashed var(--border-hover);border-radius:10px;border-radius:var(--radius-md);line-height:1.9;padding:56px 48px}.loading,.no-workers-box{color:#64748b;color:var(--text-muted);text-align:center}.loading{font-size:14px;padding:48px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{animation:shimmer 1.6s infinite;background:linear-gradient(90deg,#1e2d42 25%,#243350 50%,#1e2d42 75%);background:linear-gradient(90deg,var(--bg-cell) 25%,var(--bg-hover) 50%,var(--bg-cell) 75%);background-size:200% 100%;border-radius:6px;border-radius:var(--radius-sm);height:20px;margin-bottom:8px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (max-width:768px){.sidebar{border-right:none;border-top:1px solid #e2e8f00f;border-top:1px solid var(--border);bottom:0;flex-direction:row;height:60px;height:var(--nav-h);left:0;overflow:hidden;padding:0;top:auto;width:100%}.brand{display:none}.sidebar a,.sidebar button:not(.logout){align-items:center;background:#0000;border:none;border-radius:0;flex:1 1;flex-direction:column;gap:2px;justify-content:center;margin:0;min-height:60px;min-height:var(--nav-h);padding:6px 4px;width:auto}.nav-icon{font-size:18px;opacity:1}.nav-label{font-size:9px;font-weight:600;letter-spacing:.01em}.sidebar a.active{background:#818cf81a;background:var(--accent-subtle);border:none;box-shadow:inset 0 2px 0 #818cf8;box-shadow:inset 0 2px 0 var(--accent)}.sidebar a.active,.sidebar a.active .nav-label{color:#818cf8;color:var(--accent)}.sidebar .logout{align-items:center;border:none;border-radius:0;flex:0 0 56px;flex-direction:column;font-size:0;gap:2px;justify-content:center;margin:0;min-height:60px;min-height:var(--nav-h);padding:6px 4px;width:56px}.sidebar .logout .nav-icon{font-size:18px}.sidebar .logout .nav-label{font-size:9px;font-weight:600}.main{margin-left:0;padding:16px 16px 72px;padding-bottom:calc(var(--nav-h) + 12px);width:100%}.page-header{margin:-16px -16px 16px;padding:10px 16px}.header h1{font-size:22px}.header-right{gap:4px}.days-grid{padding:4px;scroll-snap-type:x proximity}.day-cell{flex:0 0 44px;min-height:58px;min-width:44px;scroll-snap-align:start}.login-form{max-width:360px;padding:32px 24px;width:92%}.form-box{flex-direction:column}.form-fields{grid-template-columns:1fr}.modal-overlay{align-items:flex-end;padding:0}.modal-box{animation:modal-in-bottom .22s cubic-bezier(.34,1.56,.64,1);border-radius:20px 20px 0 0;border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:90dvh;overflow-y:auto;width:100%}@keyframes modal-in-bottom{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.quick-popover{max-width:none;width:100%}.settings-row{align-items:flex-start;flex-direction:column}.settings-row label{width:100%}.settings-row input,.settings-row select{max-width:100%;width:100%}.bulk-panel{animation:slide-up-mobile .22s cubic-bezier(.34,1.56,.64,1);bottom:68px;bottom:calc(var(--nav-h) + 8px);left:8px;right:8px;transform:none;width:auto}@keyframes slide-up-mobile{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}@media (max-width:480px){.legend,.worker-code{display:none}}
/*# sourceMappingURL=main.563538af.css.map*/