*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--color-bg:#fafbfc;--color-surface:#fff;--color-border:#e5e7eb;--color-border-strong:#cbd5e1;--color-text:#0f172a;--color-muted:#4b5563;--color-faint:#94a3b8;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-soft:#eff6ff;--color-success:#166534;--color-success-bg:#ecfdf5;--color-success-border:#86efac;--color-warn:#854d0e;--color-warn-bg:#fefce8;--color-warn-border:#fde68a;--color-danger:#b91c1c;--color-danger-hover:#991b1b;--color-danger-bg:#fef2f2;--color-danger-border:#fecaca;--color-neutral:#475569;--color-neutral-bg:#f1f5f9;--color-neutral-border:#e2e8f0;--color-overdue-bg:var(--color-danger-bg);--color-overdue-border:#ef4444;--color-rush-bg:#fff7ed;--color-rush-border:#f97316;--color-ready-bg:var(--color-success-bg);--color-ready-border:var(--color-success-border);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-pill:9999px;--shadow-card:0 1px 2px #0f172a0a, 0 4px 12px #0f172a0f;--shadow-hover:0 4px 12px #0f172a14, 0 12px 28px #0f172a1a;--shadow-modal:0 20px 60px #0f172a33;--control-height:44px;--control-radius:var(--radius-sm);font-size:16px}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);min-height:100vh}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 var(--space-5);z-index:100;justify-content:space-between;align-items:center;height:64px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:var(--space-5);display:flex}.header-right{align-items:center;gap:var(--space-3);display:flex}.app-header h1{white-space:nowrap;font-size:1.15rem;font-weight:700}.app-main{padding:var(--space-4) var(--space-5);flex:1}.demo-banner{color:#1e3a8a;padding:.5rem var(--space-5);text-align:center;background:#eff6ff;border-bottom:1px solid #bfdbfe;font-size:.85rem}.file-uploads-disabled{color:var(--color-text-muted,#6b7280);margin:.5rem 0 0;font-size:.85rem;font-style:italic}.tab-nav{gap:var(--space-1);height:64px;display:flex}.tab{padding:0 var(--space-3);cursor:pointer;color:var(--color-muted);align-items:center;gap:var(--space-2);min-height:var(--control-height);background:0 0;border:none;font-family:inherit;font-size:.95rem;font-weight:500;transition:color .15s,background .15s;display:flex;position:relative}.tab:after{content:"";left:var(--space-3);right:var(--space-3);background:0 0;border-radius:2px;height:2px;transition:background .15s;position:absolute;bottom:-1px}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary)}.tab.active:after{background:var(--color-primary)}.tab-glyph{font-size:1.05rem;line-height:1}.badge-count{background:var(--color-danger);color:#fff;border-radius:var(--radius-pill);text-align:center;min-width:20px;padding:2px 8px;font-size:.72rem;font-weight:700}.role-select{border:1px solid var(--color-border);border-radius:var(--control-radius);padding:0 var(--space-3);height:var(--control-height);background:var(--color-surface);cursor:pointer;color:var(--color-text);font-family:inherit;font-size:.95rem}.btn{border-radius:var(--control-radius);padding:0 var(--space-4);min-height:var(--control-height);cursor:pointer;justify-content:center;align-items:center;gap:var(--space-2);white-space:nowrap;border:none;font-family:inherit;font-size:.95rem;font-weight:600;transition:background .15s,transform 50ms,box-shadow .15s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{color:var(--color-text);background:#e5e7eb}.btn-secondary:hover{background:#d1d5db}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:var(--color-danger-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.job-board{flex-direction:column;gap:.75rem;display:flex}.board-toolbar{align-items:center;gap:1rem;display:flex}.search-input{border:1px solid var(--color-border);border-radius:var(--control-radius);padding:0 var(--space-3);height:var(--control-height);background:var(--color-surface);width:320px;color:var(--color-text);font-family:inherit;font-size:.95rem}.search-input:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.toggle-done{color:var(--color-muted);cursor:pointer;align-items:center;font-size:.875rem;display:flex}.table-wrap{overflow-x:auto}.jobs-table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-card);overflow:hidden}.jobs-table thead{border-bottom:2px solid var(--color-border);background:#f8fafc}.jobs-table th{padding:var(--space-3) var(--space-4);text-align:left;color:var(--color-muted);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;font-size:.78rem;font-weight:600}.jobs-table th:hover{color:var(--color-text)}.jobs-table th.sorted{color:var(--color-primary)}.jobs-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle;font-size:.95rem}.jobs-table tbody tr:last-child td{border-bottom:none}.jobs-table tbody tr:hover{background:#f8fafc}.row-overdue{border-left:3px solid var(--color-overdue-border);background:var(--color-overdue-bg)!important}.row-rush{border-left:3px solid var(--color-rush-border);background:var(--color-rush-bg)!important}.overdue-text{color:var(--color-danger);font-weight:600}.empty-row{text-align:center;color:var(--color-muted);padding:2rem!important}.job-id-btn{color:var(--color-primary);cursor:pointer;font-weight:600;font-size:inherit;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.stage-select{border:1px solid var(--color-border);border-radius:var(--control-radius);padding:0 var(--space-3);cursor:pointer;background:var(--color-surface);min-height:36px;color:var(--color-text);font-family:inherit;font-size:.9rem}.assigned-input{background:0 0;border:1px solid #0000;border-radius:5px;width:100%;min-width:80px;padding:.25rem .4rem;font-size:.85rem}.assigned-input:hover,.assigned-input:focus{border-color:var(--color-border);background:var(--color-surface);outline:none}.operator-input{border-radius:var(--control-radius);padding:0 var(--space-3);cursor:pointer;width:100%;min-width:120px;min-height:36px;font-size:.9rem;font-family:var(--font);color:var(--color-text);background:0 0;border:1px solid #0000}.operator-input:hover,.operator-input:focus{border-color:var(--color-border);background:var(--color-surface);outline:2px solid var(--color-primary);outline-offset:-1px;cursor:text}.form-grid .operator-input{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;padding:.45rem .6rem;font-size:.9rem}.form-grid .operator-input:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.operator-dropdown{z-index:9999;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;max-height:220px;margin-top:2px;position:absolute;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.operator-option{cursor:pointer;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .75rem;font-size:.875rem;display:flex}.operator-option:hover{background:#eff6ff}.operator-option.operator-selected{background:#dbeafe}.operator-option.operator-clear{color:var(--color-muted);border-bottom:1px solid var(--color-border);font-style:italic}.operator-option.operator-empty{color:var(--color-muted);justify-content:center;font-style:italic}.op-name{color:var(--color-text);font-weight:500}.op-role{color:var(--color-muted);white-space:nowrap;font-size:.75rem}.op-meta{align-items:center;gap:.4rem;font-size:.72rem;display:inline-flex}.op-level-pill{text-transform:capitalize;border:1px solid #0000;border-radius:9999px;padding:1px 8px;font-size:.68rem;font-weight:600;display:inline-block}.op-load{color:var(--color-muted);font-weight:600}.op-dim-text{color:var(--color-muted)}.stage-updated-cell{color:var(--color-muted);white-space:nowrap;font-size:.82rem}.customers-page{flex-direction:column;gap:.75rem;display:flex}.today-plan{gap:var(--space-4);flex-direction:column;padding-bottom:96px;display:flex}.plan-review{gap:var(--space-3);flex-direction:column;display:flex}.plan-review-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.plan-review-title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.plan-review-sub{margin:var(--space-1) 0 0;color:var(--color-muted);font-size:.95rem;line-height:1.5}.plan-review-summary{gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.plan-list{gap:var(--space-3);flex-direction:column;display:flex}.plan-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);box-shadow:var(--shadow-card);cursor:pointer;flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex}.plan-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.plan-card-overdue{border-left:4px solid var(--color-overdue-border)}.plan-card-head{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.plan-card-job{align-items:center;gap:var(--space-3);flex-wrap:wrap;min-width:0;display:flex}.plan-card-id{color:var(--color-primary);letter-spacing:.01em;font-size:1.25rem;font-weight:700}.plan-card-customer{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:500;overflow:hidden}.plan-card-meta{justify-content:space-between;gap:var(--space-3);color:var(--color-muted);flex-wrap:wrap;font-size:.95rem;display:flex}.plan-card-due{font-weight:500}.plan-card-controls{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.plan-card-control{gap:var(--space-1);flex-direction:column;display:flex}.plan-card-control-label{color:var(--color-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:600}.plan-card-controls .stage-select,.plan-card-controls .operator-input{min-height:44px;font-size:.95rem}.plan-card-controls .operator-input{border:1px solid var(--color-border);background:var(--color-surface)}.plan-apply-result{gap:var(--space-2);flex-direction:column;display:flex}.apply-success{background:var(--color-success-bg);border:1px solid var(--color-success-border);color:var(--color-success);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:.95rem}.apply-failure{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:.95rem}.print-bar{margin:var(--space-4) calc(-1 * var(--space-5)) 0;padding:var(--space-3) var(--space-5);background:var(--color-surface);border-top:1px solid var(--color-border);justify-content:flex-end;align-items:center;gap:var(--space-3);z-index:90;display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px #0f172a0f}.print-bar-secondary{color:var(--color-primary);cursor:pointer;padding:var(--space-2) var(--space-3);text-underline-offset:3px;background:0 0;border:none;font-family:inherit;font-size:.95rem;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.print-bar-secondary:hover:not(:disabled){color:var(--color-primary-hover)}.print-bar-secondary:disabled{color:var(--color-faint);cursor:not-allowed;text-decoration:none}@media (width<=720px){.plan-card-controls{grid-template-columns:1fr}}.floor-view{flex-direction:column;gap:.75rem;display:flex}.floor-toolbar{justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.floor-compact-btn.active{background:var(--color-primary-soft);color:var(--color-primary);border-color:var(--color-primary)}.floor-toast{border-radius:var(--radius-md);color:#92400e;background:#fffbeb;border:1px solid #f59e0b;border-left-width:4px;padding:.55rem .85rem;font-size:.88rem;animation:.2s toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.floor-job-card--compact{padding:.3rem .55rem}.floor-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.85rem;display:grid}.floor-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.floor-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.floor-card-orphan{background:#fafafa;border-style:dashed}.floor-card-header{border-bottom:1px solid var(--color-border);background:#f8fafc;justify-content:space-between;align-items:center;padding:.55rem .85rem;display:flex}.floor-card-header h3{font-size:.95rem;font-weight:700}.floor-card-meta{color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:.5rem;font-size:.72rem;display:inline-flex}.floor-card-count{background:var(--color-primary-soft);color:var(--color-primary);border-radius:var(--radius-pill);min-width:28px;height:28px;padding:0 var(--space-2);justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:inline-flex}.floor-card-body{flex-direction:column;flex:1;gap:.45rem;min-height:60px;padding:.55rem;display:flex}.floor-empty{color:var(--color-muted);text-align:center;padding:var(--space-3) 0;justify-content:center;align-items:center;gap:var(--space-2);margin:0 auto;font-size:.9rem;display:inline-flex}.floor-card-body--drag-over{background:var(--color-primary-soft);outline:2px dashed var(--color-primary);outline-offset:-3px;border-radius:var(--radius-sm)}.floor-job-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-border);cursor:grab;font-family:var(--font);color:var(--color-text);border-radius:6px;flex-direction:column;gap:.2rem;padding:.45rem .55rem;font-size:.85rem;transition:box-shadow .15s,opacity .1s;display:flex}.floor-job-card--dragging{opacity:.4;cursor:grabbing}.floor-job-card:hover{box-shadow:0 2px 8px #00000014}.floor-job-rush{border-left-color:var(--color-rush-border);background:var(--color-rush-bg)}.floor-job-overdue{border-left-color:var(--color-overdue-border);background:var(--color-overdue-bg)}.floor-job-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;display:flex}.floor-job-id{color:var(--color-primary);font-size:.78rem;font-weight:700}.floor-job-customer{color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;overflow:hidden}.floor-job-due{color:var(--color-muted);font-size:.75rem}.floor-job-assignee{font-size:.8rem;font-weight:500}.operators-page{gap:var(--space-4);flex-direction:column;display:flex}.operators-page-head{gap:var(--space-1);flex-direction:column;display:flex}.operators-page-title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.operators-page-sub{color:var(--color-muted);margin:0;font-size:.95rem;line-height:1.5}.matrix-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.matrix-toolbar-actions{gap:.5rem;display:flex}.matrix-legend{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.75rem;display:flex}.matrix-legend-item{align-items:center;gap:.3rem;display:inline-flex}.matrix-legend-swatch{border-radius:4px;width:14px;height:14px;display:inline-block}.skill-matrix-wrap{background:var(--color-surface);border-radius:8px;overflow-x:auto;box-shadow:0 1px 3px #0000000f}.skill-matrix{border-collapse:separate;border-spacing:0;width:100%;min-width:720px}.skill-matrix thead th{text-align:center;color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--color-border);z-index:2;white-space:nowrap;background:#f8fafc;padding:.6rem .75rem;font-size:.78rem;font-weight:600;position:sticky;top:0}.skill-matrix thead th.machine-th-actions{font-size:.7rem}.skill-matrix thead th.machine-th-name{text-align:left;min-width:180px}.machine-th-kind{color:var(--color-muted);margin-top:2px;font-size:.65rem;font-weight:500}.skill-matrix tbody td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:.4rem .5rem}.skill-matrix tbody tr:last-child td{border-bottom:none}.skill-matrix .op-cell{text-align:left;white-space:nowrap;background:var(--color-surface);z-index:1;border-right:1px solid var(--color-border);min-width:180px;position:sticky;left:0}.skill-matrix .op-cell-name{font-weight:600;display:block}.skill-matrix .op-cell-role{color:var(--color-muted);font-size:.75rem;display:block}.skill-matrix .skill-cell-td{text-align:center;padding:.3rem}.skill-cell{cursor:pointer;-webkit-user-select:none;user-select:none;text-transform:capitalize;min-width:86px;font-size:.78rem;font-weight:600;font-family:var(--font);border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:.35rem .5rem;transition:filter .15s,transform 50ms;display:inline-flex}.skill-cell:hover{filter:brightness(.95)}.skill-cell:active{transform:scale(.97)}.skill-cell:disabled{cursor:not-allowed;opacity:.5}.skill-level-none{color:#9ca3af;background:#f3f4f6;border-color:#e5e7eb}.skill-level-trainee{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.skill-level-qualified{color:#166534;background:#dcfce7;border-color:#86efac}.skill-level-trainer{color:#1e40af;background:#dbeafe;border-color:#93c5fd}.matrix-empty{text-align:center;color:var(--color-muted);padding:2.5rem 1rem;font-size:.95rem}.matrix-empty p{margin-bottom:.75rem}.matrix-empty-actions{gap:.5rem;display:inline-flex}.machine-actions-btn{color:var(--color-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:.75rem}.machine-actions-btn:hover{background:var(--color-bg);color:var(--color-text)}.customer-info-box{color:var(--color-text);background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;flex-wrap:wrap;gap:1.5rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.file-section{border-top:1px solid var(--color-border);padding:1rem 1.25rem}.file-section h4{text-transform:uppercase;letter-spacing:.04em;color:var(--color-muted);margin-bottom:.6rem;font-size:.78rem;font-weight:600}.file-list{flex-direction:column;gap:.4rem;margin-bottom:.5rem;display:flex}.file-item{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;gap:.65rem;padding:.35rem .5rem;display:flex}.file-item:hover{background:#f8fafc}.file-thumb{object-fit:cover;cursor:pointer;border-radius:4px;flex-shrink:0;max-width:60px;height:44px}.file-icon{cursor:pointer;flex-shrink:0;font-size:1.6rem}.file-name{cursor:pointer;word-break:break-all;flex:1;font-size:.875rem;font-weight:500}.file-name:hover{color:var(--color-primary);text-decoration:underline}.file-size{color:var(--color-muted);white-space:nowrap;flex-shrink:0;font-size:.75rem}.file-drop-zone{border:2px dashed var(--color-border);text-align:center;color:var(--color-muted);cursor:pointer;border-radius:8px;padding:.85rem 1rem;font-size:.875rem;line-height:1.6;transition:border-color .15s,background .15s,color .15s}.file-drop-zone:hover,.file-drop-zone.drag-over{border-color:var(--color-primary);color:var(--color-primary);background:#eff6ff}.modal-preview{max-width:900px}.file-preview-body{background:#000;justify-content:center;align-items:center;min-height:300px;padding:1rem;display:flex}.file-preview-img{object-fit:contain;max-width:100%;max-height:70vh}.badge{align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);white-space:nowrap;letter-spacing:.01em;padding:4px 12px;font-size:.78rem;font-weight:600;display:inline-flex}.priority-normal{background:var(--color-neutral-bg);color:var(--color-neutral)}.priority-rush{color:#9a3412;background:#fed7aa}.chip{align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);white-space:nowrap;border:1px solid #0000;padding:4px 12px;font-size:.85rem;font-weight:600;display:inline-flex}.chip-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-border)}.chip-warn{background:var(--color-warn-bg);color:var(--color-warn);border-color:var(--color-warn-border)}.chip-danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border)}.chip-neutral{background:var(--color-neutral-bg);color:var(--color-neutral);border-color:var(--color-neutral-border)}.status-active{color:#1e40af;background:#dbeafe}.status-hold{color:#854d0e;background:#fef9c3}.status-done{color:#065f46;background:#d1fae5}.stage-select.stage-received{background:#f3f4f6}.stage-select.stage-prepress{background:#ede9fe}.stage-select.stage-printing{background:#dbeafe}.stage-select.stage-finishing{background:#fef9c3}.stage-select.stage-ready{background:#dcfce7}.stage-select.stage-delivered{background:#d1fae5}.stage-select.stage-hold{background:#fee2e2}.stage-received{color:#374151;background:#f3f4f6}.stage-prepress{color:#5b21b6;background:#ede9fe}.stage-printing{color:#1e40af;background:#dbeafe}.stage-finishing{color:#854d0e;background:#fef9c3}.stage-ready{color:#166534;background:#dcfce7}.stage-delivered{color:#065f46;background:#d1fae5}.stage-hold{color:#991b1b;background:#fee2e2}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;padding:var(--space-4);background:#0f172a80;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:600px;max-height:90vh;box-shadow:var(--shadow-modal);overflow-y:auto}.modal-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:1.25rem;font-weight:700}.close-btn{cursor:pointer;color:var(--color-muted);background:0 0;border:none;border-radius:4px;padding:.2rem .4rem;font-size:1.1rem}.close-btn:hover{background:var(--color-bg);color:var(--color-text)}.form-grid{gap:var(--space-4);padding:var(--space-5);grid-template-columns:1fr 1fr;display:grid}.form-grid label{color:var(--color-muted);text-transform:uppercase;letter-spacing:.03em;flex-direction:column;gap:.3rem;font-size:.8rem;font-weight:600;display:flex}.form-grid label.full-width{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--color-border);font-size:.9rem;font-family:var(--font);background:var(--color-surface);color:var(--color-text);border-radius:6px;padding:.45rem .6rem}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.modal-footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.modal-actions{gap:var(--space-2);display:flex}.meta-info{color:var(--color-muted);flex-direction:column;gap:.1rem;font-size:.75rem;display:flex}.at-risk-view{max-width:800px}.at-risk-view h2{margin-bottom:1.25rem;font-size:1.3rem;font-weight:700}.risk-section{margin-bottom:1.75rem}.risk-section h3{align-items:center;gap:.5rem;margin-bottom:.6rem;font-size:1rem;font-weight:700;display:flex}.risk-count{color:#991b1b;background:#fee2e2;border-radius:9999px;padding:1px 8px;font-size:.75rem}.risk-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.risk-item{background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.75rem 1rem;transition:box-shadow .15s;display:flex}.risk-item:hover{box-shadow:0 2px 8px #00000014}.risk-product{color:var(--color-muted);font-size:.85rem}.risk-due{color:var(--color-danger);font-size:.8rem;font-weight:600}.risk-assigned{color:var(--color-muted);background:var(--color-bg);border-radius:9999px;padding:2px 8px;font-size:.8rem}.empty-msg{color:var(--color-muted);font-size:.9rem}.loading{text-align:center;color:var(--color-muted);padding:3rem;font-size:1rem}.error-msg{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;margin-bottom:.75rem;padding:.65rem 1rem;font-size:.875rem}.warn-msg{color:#854d0e;background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;margin:.5rem 1.25rem 0;padding:.65rem 1rem;font-size:.85rem;line-height:1.4}.empty-state{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-7) var(--space-5);text-align:center;align-items:center;gap:var(--space-3);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.empty-state-icon{margin-bottom:var(--space-2);font-size:3rem;line-height:1}.empty-state-title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.empty-state-description{color:var(--color-muted);max-width:460px;margin:0;font-size:1rem;line-height:1.55}.empty-state-action{margin-top:var(--space-3);gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.calendar-view{flex-direction:column;gap:.75rem;display:flex}.cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.cal-nav{align-items:center;gap:.4rem;display:flex}.cal-nav-title{text-align:center;min-width:180px;font-size:1rem;font-weight:700}.cal-nav-btn{background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:6px;padding:.3rem .65rem;font-size:.875rem}.cal-nav-btn:hover{background:var(--color-bg)}.cal-view-toggle{border:1px solid var(--color-border);border-radius:6px;display:flex;overflow:hidden}.cal-view-toggle button{background:var(--color-surface);cursor:pointer;font-size:.875rem;font-family:var(--font);border:none;padding:.3rem .85rem}.cal-view-toggle button.active{background:var(--color-primary);color:#fff}.cal-dow-headers{border:1px solid var(--color-border);background:#f8fafc;border-bottom:none;border-radius:8px 8px 0 0;grid-template-columns:repeat(7,1fr);display:grid}.cal-dow-header{text-align:center;color:var(--color-muted);text-transform:uppercase;padding:.4rem;font-size:.72rem;font-weight:600}.cal-month-grid{border:1px solid var(--color-border);background:var(--color-border);border-radius:0 0 8px 8px;grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.cal-day-cell{background:var(--color-surface);flex-direction:column;gap:.2rem;min-height:110px;padding:.35rem;display:flex;position:relative}.cal-day-cell.other-month{background:#fafafa}.cal-day-cell.other-month .cal-day-num{opacity:.35}.cal-day-cell.is-today{outline:2px solid var(--color-primary);outline-offset:-2px;background:#eff6ff}.cal-day-num{text-align:right;color:var(--color-muted);font-size:.72rem;font-weight:600}.cal-day-num.today-num{color:var(--color-primary);font-weight:700}.cal-chip{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;text-align:left;border:none;border-left:3px solid #0000;border-radius:4px;width:100%;padding:2px 5px;font-size:.68rem;font-weight:600;display:block;overflow:hidden}.cal-chip:hover{opacity:.8}.cal-chip-rush{border-left-color:var(--color-rush-border)!important}.cal-chip-overdue{background:var(--color-overdue-bg)!important;color:var(--color-danger)!important;border-left-color:var(--color-overdue-border)!important}.cal-chip-done{opacity:.4}.cal-more-btn{color:var(--color-primary);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-size:.7rem;font-weight:500}.cal-more-btn:hover{text-decoration:underline}.cal-popover{z-index:150;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;min-width:180px;max-width:240px;padding:.4rem;position:absolute;top:100%;left:0;box-shadow:0 8px 24px #0000001f}.cal-popover-job{cursor:pointer;border-radius:4px;align-items:center;gap:.4rem;padding:.3rem .4rem;font-size:.8rem;display:flex}.cal-popover-job:hover{background:var(--color-bg)}.cal-week-wrap{overflow-x:auto}.cal-week-board{background:var(--color-border);border:1px solid var(--color-border);border-radius:8px;grid-template-columns:repeat(7,1fr);gap:1px;display:grid;overflow:hidden}.cal-week-col{background:var(--color-surface);flex-direction:column;display:flex}.cal-week-col-header{text-align:center;border-bottom:1px solid var(--color-border);background:#f8fafc;padding:.5rem}.cal-week-col-header.is-today{color:var(--color-primary);background:#eff6ff}.cal-week-col-day-name{text-transform:uppercase;color:var(--color-muted);font-size:.7rem;font-weight:600}.cal-week-col-day-num{font-size:1.1rem;font-weight:700}.cal-week-col-header.is-today .cal-week-col-day-num{color:var(--color-primary)}.cal-week-col-body{flex-direction:column;flex:1;gap:.35rem;min-height:300px;padding:.4rem;display:flex}.cal-card{background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-left:3px solid #0000;border-radius:6px;flex-direction:column;gap:.2rem;padding:.45rem .55rem;transition:box-shadow .15s;display:flex}.cal-card:hover{box-shadow:0 2px 8px #00000014}.cal-card-rush{border-left-color:var(--color-rush-border);background:var(--color-rush-bg)}.cal-card-overdue{border-left-color:var(--color-overdue-border);background:var(--color-overdue-bg)}.cal-card-done{opacity:.45}.cal-card-job-id{color:var(--color-primary);font-size:.78rem;font-weight:700}.cal-card-customer{color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;overflow:hidden}.cal-card-badges{flex-wrap:wrap;gap:.25rem;margin-top:.1rem;display:flex}.cal-no-jobs{color:var(--color-muted);text-align:center;padding:.75rem 0;font-size:.75rem;font-style:italic}@media (width<=800px){.cal-week-board{min-width:700px}}.incident-log{border-top:1px solid var(--color-border);margin-top:1.5rem;padding-top:1.25rem}.incident-log-title{color:var(--color-text);margin:0 0 .75rem;font-size:.9rem;font-weight:700}.incident-list{flex-direction:column;gap:.5rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.incident-item{border-radius:var(--radius-sm);background:#fffbeb;border:1px solid #fde68a;border-left:3px solid #f59e0b;padding:.5rem .65rem}.incident-body{color:var(--color-text);white-space:pre-wrap;margin-bottom:.2rem;font-size:.88rem;display:block}.incident-meta{color:var(--color-muted);align-items:center;gap:.35rem;font-size:.75rem;display:flex}.incident-author{color:var(--color-text)}.incident-empty{color:var(--color-muted);margin:0 0 .75rem;font-size:.85rem;font-style:italic}.incident-add{flex-direction:row;align-items:flex-end;gap:.5rem;display:flex}.incident-textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font);resize:vertical;box-sizing:border-box;flex:1;min-height:60px;padding:.45rem .6rem;font-size:.88rem}.incident-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.btn-quick-add-customer{background:var(--color-primary-soft);color:var(--color-primary);border:1px dashed var(--color-primary);border-radius:var(--radius-pill);cursor:pointer;align-items:center;gap:.3rem;margin-top:.4rem;padding:.3rem .65rem;font-size:.8rem;font-weight:600;transition:background .12s;display:inline-flex}.btn-quick-add-customer:hover:not(:disabled){background:#dbeafe}.btn-quick-add-customer:disabled{opacity:.6;cursor:not-allowed}
