:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color-scheme:light dark;color:#1a1a1a;background:#f5f5f5}@media (prefers-color-scheme: dark){:root{color:#e5e5e5;background:#1a1a1a}}*{box-sizing:border-box}body{margin:0;padding:0}.nav{background:#fff;border-bottom:1px solid #e0e0e0;position:sticky;top:0;z-index:100}@media (prefers-color-scheme: dark){.nav{background:#242424;border-bottom-color:#333}}.nav-inner{max-width:1200px;margin:0 auto;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem}.nav-title{font-weight:600;font-size:1.05rem}.nav-links{display:flex;gap:.25rem;flex-wrap:wrap}.nav-link{text-decoration:none;color:#666;padding:.4rem .8rem;border-radius:6px;font-size:.95rem}.nav-link:hover{background:#f0f0f0;color:#333}.nav-link.active{background:#e8f0ff;color:#1a5fc7;font-weight:500}@media (prefers-color-scheme: dark){.nav-link{color:#999}.nav-link:hover{background:#333;color:#ccc}.nav-link.active{background:#1a3052;color:#79a8e8}}.container{max-width:1200px;margin:0 auto;padding:1.5rem}h1{margin:0 0 1rem;font-size:1.5rem;font-weight:600}h2{margin:1.5rem 0 .75rem;font-size:1.15rem;font-weight:600}h3{margin:0 0 .75rem;font-size:1rem;font-weight:600}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem;flex-wrap:wrap}.page-header h1{margin:0}.back-link{margin:0 0 1rem;font-size:.9rem}.back-link a{color:#1a5fc7;text-decoration:none}.back-link a:hover{text-decoration:underline}@media (prefers-color-scheme: dark){.back-link a{color:#79a8e8}}.page-header-actions{display:flex;gap:.5rem;flex-wrap:wrap}.quote-totals{max-width:26rem;margin-left:auto}.quote-totals .totals-row{display:flex;justify-content:space-between;padding:.25rem 0;font-variant-numeric:tabular-nums}.quote-totals .totals-rule{border-top:1px solid #cbd5e1;margin-top:.25rem;padding-top:.5rem;font-weight:600}.quote-totals .totals-grand{border-top:2px solid #0f172a;margin-top:.25rem;padding-top:.5rem;font-weight:700;font-size:1.05rem}@media (prefers-color-scheme: dark){.quote-totals .totals-rule{border-top-color:#475569}.quote-totals .totals-grand{border-top-color:#e2e8f0}}.quote-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.quote-express{display:inline-flex;align-items:center;gap:.4rem;-webkit-user-select:none;user-select:none}.quote-express input[type=checkbox]{width:1.05rem;height:1.05rem}.quote-line-notes{margin-top:.5rem;padding-top:.5rem;border-top:1px solid #e2e8f0;font-size:.85rem}.btn-link{display:inline-block;padding:.45rem .9rem;border:1px solid #1a5fc7;border-radius:.35rem;color:#1a5fc7;text-decoration:none;font-size:.9rem}.btn-link:hover{background:#1a5fc7;color:#fff}@media (prefers-color-scheme: dark){.btn-link{border-color:#79a8e8;color:#79a8e8}.btn-link:hover{background:#79a8e8;color:#0f172a}.quote-line-notes{border-top-color:#475569}}@media (max-width: 640px){.quote-totals{max-width:none}.quote-actions{gap:.6rem}}.card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.25rem;margin-bottom:1rem}@media (prefers-color-scheme: dark){.card{background:#242424;border-color:#333}}.card.empty{text-align:center;color:#999;padding:2rem}.warning-card{border-left:4px solid #f0ad4e;background:#fff8e8}.success-card{border-left:4px solid #28a745;background:#e8f7ec}.error-card{border-left:4px solid #dc3545;background:#fdecee;color:#c0202e}@media (prefers-color-scheme: dark){.warning-card{background:#3d2f1a;color:#f0c473}.success-card{background:#1a3d24;color:#7ad19a}.error-card{background:#3d1a1f;color:#f08a9a}}.status-list{list-style:none;padding:0;margin:0}.status-list li{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #eee}.status-list li:last-child{border-bottom:none}@media (prefers-color-scheme: dark){.status-list li{border-bottom-color:#333}}.label{color:#666;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em}.value{font-weight:600;font-variant-numeric:tabular-nums}.value.ok{color:#28a745}@media (prefers-color-scheme: dark){.label{color:#999}}.meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem 1.5rem}.meta-grid>div .label{margin-bottom:.25rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid #eee}@media (prefers-color-scheme: dark){th,td{border-bottom-color:#333}}th{font-weight:600;color:#666;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}@media (prefers-color-scheme: dark){th{color:#999}}th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}.quote-items th,.quote-items td,.quote-items th.num,.quote-items td.num{text-align:center}.quote-items tfoot td{font-weight:700;border-top:2px solid #0f172a;white-space:nowrap}@media (prefers-color-scheme: dark){.quote-items tfoot td{border-top-color:#e2e8f0}}tr.clickable{cursor:pointer}tr.clickable:hover{background:#f8f8f8}@media (prefers-color-scheme: dark){tr.clickable:hover{background:#2a2a2a}}tr.row-warning{background:#fff8e8}@media (prefers-color-scheme: dark){tr.row-warning{background:#3d2f1a}}.mono{font-family:SF Mono,Consolas,monospace;font-size:.85rem}.mono.small{font-size:.78rem}.muted{color:#999}.center{text-align:center}.error{color:#dc3545}.small{font-size:.85rem}.status{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em}.status-quote{background:#e8f0ff;color:#1a5fc7}.status-accepted{background:#e8f7ec;color:#1a7d3a}.status-in_progress{background:#fff4d6;color:#946000}.status-dispatched{background:#efe8ff;color:#5a30a8}.status-invoiced{background:#ddd;color:#555}@media (prefers-color-scheme: dark){.status-quote{background:#1a3052;color:#79a8e8}.status-accepted{background:#1a3d24;color:#7ad19a}.status-in_progress{background:#3d2f0c;color:#e3b75a}.status-dispatched{background:#2d1a52;color:#b894e8}.status-invoiced{background:#333;color:#aaa}}input[type=text],input[type=email],select,textarea{width:100%;padding:.55rem .7rem;border:1px solid #ccc;border-radius:6px;background:#fff;color:inherit;font-size:.95rem;font-family:inherit}@media (prefers-color-scheme: dark){input[type=text],input[type=email],select,textarea{background:#1a1a1a;border-color:#444}}input[type=file]{font-size:.9rem}.search{margin-bottom:1rem}.inline-form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.inline-form input{flex:1;min-width:200px}.radio-group{display:flex;flex-direction:column;gap:.5rem;margin:.5rem 0}.radio-group label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.btn{display:inline-block;padding:.55rem 1.1rem;border:1px solid #ccc;background:#fff;color:inherit;border-radius:6px;cursor:pointer;font-size:.95rem;font-family:inherit;font-weight:500}.btn:hover:not(:disabled){background:#f5f5f5}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:#1a5fc7;color:#fff;border-color:#1a5fc7}.btn.primary:hover:not(:disabled){background:#1751a8}@media (prefers-color-scheme: dark){.btn{background:#2a2a2a;border-color:#444}.btn:hover:not(:disabled){background:#333}}.button-row{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem;flex-wrap:wrap}.btn-copy{background:none;border:none;color:inherit;font-family:inherit;font-size:inherit;cursor:pointer;padding:0;text-align:left}.btn-copy:hover{text-decoration:underline}.dropzone{border:2px dashed #ccc;border-radius:8px;padding:2rem;text-align:center;background:#fafafa;margin:1rem 0}.dropzone.dragging{border-color:#1a5fc7;background:#e8f0ff}.dropzone.disabled{opacity:.5}.dropzone p{margin:0 0 1rem;color:#666}@media (prefers-color-scheme: dark){.dropzone{background:#1f1f1f;border-color:#444}.dropzone.dragging{background:#1a3052;border-color:#79a8e8}.dropzone p{color:#aaa}}.bulk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#f0f4fa;border:1px solid #d8e1ee;border-radius:6px;margin-bottom:.75rem}.bulk-bar strong{font-weight:600;font-size:.9rem}.bulk-bar select,.bulk-bar input{padding:.3rem .5rem;font-size:.9rem}@media (prefers-color-scheme: dark){.bulk-bar{background:#1e2a3d;border-color:#2c3a52}}.dxf-grid-wrap{overflow-x:auto;margin:0 -.5rem;padding:0 .5rem}.dxf-grid{width:100%;border-collapse:collapse;font-size:.88rem}.dxf-grid th,.dxf-grid td{padding:.45rem .5rem;border-bottom:1px solid #e0e0e0;vertical-align:top;text-align:left}.dxf-grid th{font-weight:600;font-size:.82rem;color:#555;background:#fafafa;position:sticky;top:0}.dxf-grid td.num,.dxf-grid th.num{text-align:right;font-variant-numeric:tabular-nums}.dxf-grid select,.dxf-grid input[type=text],.dxf-grid input[type=number]{padding:.25rem .4rem;font-size:.85rem;border:1px solid #ccc;border-radius:4px;background:#fff;color:inherit}.dxf-grid tr.row-skip td{background:#fafafa;color:#999}.dxf-grid tr.row-skip td.mono{color:#aaa}@media (prefers-color-scheme: dark){.dxf-grid th{background:#1f1f1f;color:#aaa;border-bottom-color:#333}.dxf-grid td{border-bottom-color:#333}.dxf-grid select,.dxf-grid input[type=text],.dxf-grid input[type=number]{background:#2a2a2a;border-color:#444;color:#e5e5e5}.dxf-grid tr.row-skip td{background:#1f1f1f;color:#666}}.btn-danger{background:transparent;border:1px solid #d8a4a4;color:#b03030;padding:.25rem .6rem;border-radius:4px;font-size:.82rem;cursor:pointer}.btn-danger:hover:not(:disabled){background:#fdecec}.btn-danger:disabled{opacity:.5;cursor:not-allowed}@media (prefers-color-scheme: dark){.btn-danger{border-color:#6a3838;color:#e88a8a}.btn-danger:hover:not(:disabled){background:#3d1f1f}}@media (max-width: 640px){.container{padding:1rem}table{font-size:.78rem}th,td{padding:.4rem .3rem}.nav-inner{padding:.5rem 1rem}.nav-title{font-size:.95rem}.nav-link{padding:.3rem .6rem;font-size:.85rem}.meta-grid{grid-template-columns:1fr 1fr}h1{font-size:1.25rem}.parts-table th:last-child,.parts-table td:last-child{display:none}}.part-preview-cell{position:relative}.part-preview-trigger{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:2px;border:1px solid #ccc;border-radius:4px;background:#fff;color:#444;cursor:pointer}.part-preview-trigger:hover{background:#f5f5f5;border-color:#999}.part-preview-trigger[aria-expanded=true]{background:#e8eef9;border-color:#1a5fbb;color:#1a5fbb}.part-preview-popover{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;width:380px;max-width:calc(100vw - 1.5rem);max-height:calc(100vh - 2rem);overflow-y:auto;background:#fff;border:1px solid #bbb;border-radius:6px;box-shadow:0 6px 20px #0000002e}.part-preview-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border-bottom:1px solid #eee}.part-preview-close{border:0;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:#666;padding:0 .25rem}.part-preview-close:hover{color:#000}.part-preview-body{padding:.75rem}.part-preview-svg-host{display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #eee;border-radius:4px;padding:.5rem;min-height:200px;overflow:hidden}.part-preview-svg-host svg{display:block;max-width:100%;max-height:320px;height:auto;width:auto}@media (prefers-color-scheme: dark){.part-preview-trigger{background:#2a2a2a;border-color:#444;color:#ccc}.part-preview-trigger:hover{background:#333;border-color:#666}.part-preview-trigger[aria-expanded=true]{background:#1a3050;border-color:#4a8fff;color:#4a8fff}.part-preview-popover{background:#1f1f1f;border-color:#444;box-shadow:0 6px 20px #0009}.part-preview-header{border-bottom-color:#333}.part-preview-close{color:#aaa}.part-preview-close:hover{color:#fff}.part-preview-svg-host{background:#fff;border-color:#444}}@media (max-width: 640px){.part-preview-popover{width:calc(100vw - 1.5rem);max-width:380px}.part-preview-trigger{width:36px;height:36px}}.kpi-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin:1rem 0}.kpi-tile{border:1px solid #e5e7eb;border-radius:8px;padding:.75rem 1rem;text-align:center;background:#fff;font:inherit;cursor:pointer}.kpi-tile:hover{filter:brightness(.97)}.kpi-tile.kpi-zero{opacity:.55}.kpi-tile.kpi-active{outline:2px solid #1a5fc7;outline-offset:1px;opacity:1}.kpi-filter-bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.5rem 0;padding:.45rem .75rem;border:1px solid #bcd5ff;border-radius:6px;background:#eaf2ff;font-size:.85rem}.kpi-filter-clear{border:1px solid #1a5fc7;border-radius:4px;background:#fff;color:#1a5fc7;padding:.2rem .6rem;font-size:.8rem;cursor:pointer}@media (prefers-color-scheme: dark){.kpi-tile:hover{filter:brightness(1.15)}.kpi-tile.kpi-active{outline-color:#79a8e8}.kpi-filter-bar{background:#1a3052;border-color:#34558a;color:#ddd}.kpi-filter-clear{background:#242424;color:#79a8e8;border-color:#4a8fff}}.kpi-value{font-size:2rem;font-weight:700;line-height:1.1}.kpi-label{font-size:.75rem;letter-spacing:.05em;color:#555;margin-top:.25rem}.kpi-red:not(.kpi-zero){background:#fff1f0;border-color:#f7c4c1}.kpi-red:not(.kpi-zero) .kpi-value{color:#c0392b}.kpi-amber:not(.kpi-zero){background:#fff8e1;border-color:#f1d68a}.kpi-amber:not(.kpi-zero) .kpi-value{color:#946000}.kpi-neutral .kpi-value{color:#1a5fc7}@media (prefers-color-scheme: dark){.kpi-tile{background:#242424;border-color:#333}.kpi-label{color:#aaa}.kpi-red:not(.kpi-zero){background:#3d1a1f;border-color:#6a3838}.kpi-red:not(.kpi-zero) .kpi-value{color:#f08a9a}.kpi-amber:not(.kpi-zero){background:#3d2f0c;border-color:#6a5520}.kpi-amber:not(.kpi-zero) .kpi-value{color:#e3b75a}.kpi-neutral .kpi-value{color:#79a8e8}}.priority-cell{cursor:pointer;position:relative}.priority-cell:hover .priority-text{text-decoration:underline}.special-cell-input{width:4.5rem;background:transparent;border:1px solid transparent;border-radius:4px;padding:2px 4px;font:inherit;font-size:.85rem;color:inherit;text-align:right}.special-cell-input:hover{border-color:#00000026}.special-cell-input:focus{outline:none;border-color:#1a5fc7;background:#ffffffb3}.special-cell-input:disabled{opacity:.6;cursor:wait}.date-cell-input{background:transparent;border:1px solid transparent;border-radius:4px;padding:2px 4px;font:inherit;font-size:.85rem;color:inherit;width:8.5rem}.date-cell-input:hover{border-color:#00000026}.date-cell-input:focus{outline:none;border-color:#1a5fc7;background:#ffffffb3}.date-cell-input:disabled{opacity:.6;cursor:wait}.jobtrak-table tr.row-busy{cursor:wait}.jobtrak-table tr.row-busy td{pointer-events:none;opacity:.85}.jobtrak-table tr.row-busy td.stage-cell{position:relative}.jobtrak-table tr.row-busy td.stage-cell:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid rgba(0,0,0,.2);border-top-color:#1a5fc7;border-radius:50%;animation:jt-spin .8s linear infinite}.jobtrak-table tr.row-busy td.stage-cell .stage-cell-content{visibility:hidden}@keyframes jt-spin{to{transform:rotate(360deg)}}.warn-chip{display:inline-block;margin-left:.5rem;padding:.1rem .5rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;background:#ff8f1f;color:#000;border:1px solid #946000;border-radius:999px;cursor:pointer;white-space:nowrap}.warn-chip:hover:not(:disabled){background:#ffa53d}.warn-chip:disabled{opacity:.6;cursor:wait}.chip{display:inline-block;padding:.05rem .5rem;font-size:.7rem;letter-spacing:.04em;border-radius:999px;background:#eee;color:#555;white-space:nowrap}.chip-sm{padding:.05rem .4rem;font-size:.65rem}.chip-express{background:#fff1f0;color:#c0392b;font-weight:700}@media (prefers-color-scheme: dark){.chip{background:#333;color:#ccc}.chip-express{background:#3d1a1f;color:#f08a9a}}.jobs-toolbar{display:flex;align-items:center;gap:1rem;margin:.5rem 0;flex-wrap:wrap}.jobs-toolbar .search{flex:1 1 280px;margin:0}.jt-tabs{display:flex;gap:2px;margin:1rem 0 0}.jt-tab{background:#2c2c2c;color:#ccc;border:0;padding:.55rem 1.1rem;font:inherit;font-weight:600;letter-spacing:.05em;cursor:pointer;border-top-left-radius:4px;border-top-right-radius:4px}.jt-tab:hover{background:#3a3a3a;color:#fff}.jt-tab.active{background:#1a5fc7;color:#fff}.jt-tab-count{display:inline-block;margin-left:.5rem;padding:.05rem .5rem;font-size:.75rem;background:#ffffff2e;border-radius:999px}@media (prefers-color-scheme: light){.jt-tab{background:#e8edf2;color:#555}.jt-tab:hover{background:#d8e0e8;color:#1a5fc7}.jt-tab.active{background:#1a5fc7;color:#fff}}.jobs-table-wrap{overflow-x:auto;border:1px solid #e5e7eb;border-radius:6px;background:#fff}@media (prefers-color-scheme: dark){.jobs-table-wrap{background:#242424;border-color:#333}}.jobtrak-table{width:100%;border-collapse:collapse;font-size:.9rem}.jobtrak-table th{background:#f7f9fc;text-align:left;font-weight:600;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:#555;padding:.5rem .6rem;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:1}.jobtrak-table td{padding:.55rem .6rem;border-bottom:1px solid #d8dfeb;border-right:1px solid #eef0f4;vertical-align:middle}.jobtrak-table td:last-child{border-right:none}.jobtrak-table th{border-right:1px solid #e5e7eb}.jobtrak-table th:last-child{border-right:none}.jobtrak-table tbody tr:not([class*=row-]):hover td{background:#f9fbff}.jobtrak-table .nowrap{white-space:nowrap}.jobtrak-table .stage-col{text-align:center;min-width:56px}.jobtrak-table .status-col{font-weight:700;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;min-width:110px}.jobtrak-table .notes-cell{font-size:.82rem}.notes-cell-clickable{cursor:pointer;max-width:220px}.notes-preview{display:inline-block;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.notes-add-hint{color:#aaa;font-weight:600}.notes-cell-clickable:hover .notes-add-hint{color:#1a5fc7}.notes-more-chip{display:inline-block;margin-left:.35rem;padding:0 .35rem;border-radius:8px;background:#e5e7eb;color:#555;font-size:.7rem;font-weight:600}.notes-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:60;display:flex;align-items:center;justify-content:center;padding:1rem;cursor:default}.notes-modal{background:#fff;border:1px solid #d5d9e0;border-radius:10px;box-shadow:0 8px 30px #00000040;width:min(480px,94vw);max-height:80vh;overflow-y:auto;padding:.9rem 1rem;text-align:left;white-space:normal}.notes-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.notes-close{border:none;background:none;font-size:1rem;color:#777;cursor:pointer;padding:.2rem .4rem}.notes-list{list-style:none;margin:0 0 .75rem;padding:0}.notes-list li{padding:.35rem .5rem;border-bottom:1px solid #eee;font-size:.88rem}.notes-list li:last-child{border-bottom:none}.notes-input{width:100%;box-sizing:border-box;font:inherit;font-size:.9rem;padding:.45rem .55rem;border:1px solid #c9cdd4;border-radius:6px;resize:vertical}.notes-btn-row{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.notes-add-btn{border:1px solid #1a5fc7;border-radius:6px;background:#1a5fc7;color:#fff;padding:.35rem .9rem;font-size:.85rem;cursor:pointer}.notes-add-btn:disabled{opacity:.5;cursor:default}.notes-fix-btn{border:1px solid #c9cdd4;border-radius:6px;background:none;color:#777;padding:.35rem .7rem;font-size:.8rem;cursor:pointer}@media (prefers-color-scheme: dark){.notes-more-chip{background:#3a3a3a;color:#bbb}.notes-modal{background:#242424;border-color:#444}.notes-list li{border-bottom-color:#353535}.notes-input{background:#1c1c1c;border-color:#444;color:#ddd}.notes-fix-btn{border-color:#444;color:#999}}@media (prefers-color-scheme: dark){.jobtrak-table th{background:#1f1f1f;color:#ccc;border-bottom-color:#333;border-right-color:#2c2c2c}.jobtrak-table td{border-bottom-color:#353535;border-right-color:#2a2a2a}.jobtrak-table tbody tr:not([class*=row-]):hover td{background:#2c2c2c}}.job-link{color:#1a5fc7;cursor:pointer;font-weight:600;text-decoration:none}.job-link:hover{text-decoration:underline}@media (prefers-color-scheme: dark){.job-link{color:#79a8e8}}.stage-cell{text-align:center;cursor:pointer;font-weight:600;-webkit-user-select:none;user-select:none;position:relative;min-width:56px}.stage-cell.cell-readonly{cursor:default}.stage-cell-content{display:inline-block;min-width:1.2em}.cell-empty{background:transparent;color:transparent}.cell-empty:hover{background:#0000000a}.cell-readonly.cell-empty:hover{background:transparent}.cell-done{background:#0000000f;color:#1a7d3a}.cell-done:hover{background:#0000001a}@media (prefers-color-scheme: dark){.cell-empty:hover{background:#ffffff0d}.cell-done{background:#ffffff14;color:#7ad19a}.cell-done:hover{background:#ffffff1f}}.jobtrak-table tr.row-overdue td{background:#ff2d2d;color:#000}.jobtrak-table tr.row-due-today td{background:#ff8f1f;color:#000}.jobtrak-table tr.row-due-tomorrow td{background:#5dade2;color:#000}.jobtrak-table tr.row-due-2 td{background:#85c1e9;color:#000}.jobtrak-table tr.row-due-3 td{background:#aed6f1;color:#000}.jobtrak-table tr.row-due-4 td{background:#d6eaf8;color:#000}.jobtrak-table tr.row-archived td{background:#c8eac8;color:#000}.jobtrak-table tr.row-dispatch td{background:#fff3a8;color:#000}.jobtrak-table tr[class*=row-] .muted{color:#000;opacity:.7}.jobtrak-table tr[class*=row-] .job-link{color:#000;text-decoration:underline}.jobtrak-table tr[class*=row-] td.cell-empty:hover{background:#0000001f}.jobtrak-table tr[class*=row-] td.cell-done{background:#0000001f;color:#000}.jobtrak-table tbody tr[class*=row-] td.cell-entered{background:transparent}.jobtrak-table tr[class*=row-] *,.jobtrak-table tr[class*=row-] .chip,.jobtrak-table tr[class*=row-] .chip-express,.jobtrak-table tr[class*=row-] .chip-exp-warn{color:#000}.chip-exp-warn{background:#fff8e1;color:#946000;font-weight:700}@media (prefers-color-scheme: dark){.chip-exp-warn{background:#3d2f0c;color:#e3b75a}}.due-overdue{color:#c0392b;font-weight:600}.due-today{color:#946000;font-weight:600}.stage-popover{background:#fff;border:1px solid #d0d7e2;border-radius:6px;box-shadow:0 6px 20px #0000002e;padding:.35rem;display:flex;flex-direction:column;gap:.2rem;z-index:1000;min-width:130px}.stage-popover button{background:transparent;border:1px solid transparent;border-radius:4px;padding:.35rem .6rem;font:inherit;font-size:.85rem;text-align:center;cursor:pointer;white-space:nowrap}.stage-popover-opt:hover{background:#eaf2ff;border-color:#bcd5ff}.stage-popover-opt.selected{background:#1a5fc7;color:#fff;border-color:#1a5fc7}.stage-popover-clear{color:#946000;font-size:.8rem}.stage-popover-cancel{color:#777;font-size:.8rem}@media (prefers-color-scheme: dark){.stage-popover{background:#2a2a2a;border-color:#444}.stage-popover-opt:hover{background:#1a3052;border-color:#4a8fff}.stage-popover-opt.selected{background:#1a5fc7;color:#fff}.stage-popover-cancel{color:#999}}@media (max-width: 600px){.kpi-tiles{grid-template-columns:repeat(3,1fr);gap:.4rem;margin:.5rem 0}.kpi-tile{padding:.5rem .4rem}.kpi-value{font-size:1.4rem}.kpi-label{font-size:.6rem;line-height:1.1}.page-header{flex-wrap:wrap;gap:.5rem}.page-header h1{font-size:1.4rem}.jobtrak-table{font-size:.82rem}.jobtrak-table th,.jobtrak-table td{padding:.4rem .45rem}.stage-cell{min-width:50px}}:root{--xero-blue: #4285F4;--xero-blue-deep: #1C5FE3;--xero-blue-soft: #E8F0FE;--xero-navy: #1A2138;--xero-text: #1A2138;--xero-text-muted: #6B7A90;--xero-bg: #F4F6F9;--xero-card: #FFFFFF;--xero-border: #E0E6EC;--xero-border-strong: #C9D2DD;--xero-row-hover: #F5F8FB;--glass-bg-default: rgba(255, 255, 255, .78);--glass-bg-hover: rgba(255, 255, 255, .95);--glass-bg-primary: rgba(232, 240, 254, .85);--glass-bg-primary-hover: rgba(212, 240, 251, .95);--glass-border: rgba(28, 95, 227, .18);--glass-border-primary: rgba(66, 133, 244, .45);--glass-shadow: 0 1px 2px rgba(20, 30, 50, .05), 0 6px 16px rgba(20, 30, 50, .06);--glass-shadow-hover: 0 2px 4px rgba(20, 30, 50, .08), 0 10px 24px rgba(28, 95, 227, .12);--glass-inset: inset 0 1px 0 rgba(255, 255, 255, .85);--glass-blur: blur(18px) saturate(180%)}body{background:linear-gradient(180deg,#f4f7fa,#e8eef5) fixed;color:var(--xero-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.nav{background:#ffffffeb;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--xero-border)}.nav-title{color:var(--xero-navy);font-weight:700;letter-spacing:-.01em}.nav-link{color:var(--xero-text-muted);font-weight:500}.nav-link:hover{background:var(--xero-blue-soft);color:var(--xero-blue-deep)}.nav-link.active{background:transparent;color:var(--xero-blue-deep);position:relative}.nav-link.active:after{content:"";position:absolute;left:.6rem;right:.6rem;bottom:-2px;height:3px;background:var(--xero-blue);border-radius:2px}h1,h2,h3{color:var(--xero-navy)}.card{background:var(--xero-card);border:1px solid var(--xero-border);border-radius:8px;box-shadow:0 1px 3px #141e320a}.btn,.btn-link,.warn-chip,.stage-popover button,.jt-tab{backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease}.btn{background:var(--glass-bg-default);border:1px solid var(--glass-border);color:var(--xero-blue-deep);border-radius:4px;padding:.45rem .85rem;font-size:.875rem;font-weight:500;line-height:1.2;box-shadow:var(--glass-shadow),var(--glass-inset)}.btn:hover:not(:disabled){background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),var(--glass-inset);border-color:#4285f473;transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn.primary{background:var(--glass-bg-primary);border:1px solid var(--glass-border-primary);color:var(--xero-blue-deep);font-weight:600;box-shadow:0 1px 2px #1c5fe31a,0 6px 16px #1c5fe31a,inset 0 1px #ffffffb3}.btn.primary:hover:not(:disabled){background:var(--glass-bg-primary-hover);border-color:#4285f4a6;box-shadow:0 2px 4px #1c5fe324,0 10px 24px #1c5fe32e,inset 0 1px #fffc}.btn-danger{background:#dc3545d9;border:1px solid rgba(220,53,69,.5);color:#fff;border-radius:6px;box-shadow:0 1px 2px #a028322e,0 4px 12px #a0283224,inset 0 1px #ffffff40}.btn-danger:hover:not(:disabled){background:#dc3545f2}.jt-tabs{border-bottom:1px solid var(--xero-border);margin-bottom:0}.jt-tab{background:#f4f6f999;color:var(--xero-text-muted);border:0;border-radius:0;padding:.65rem 1rem;font-size:.875rem;font-weight:500;position:relative;box-shadow:none}.jt-tab:hover{background:#e8f0fe99;color:var(--xero-blue-deep)}.jt-tab.active{background:transparent;color:var(--xero-blue-deep);font-weight:600}.jt-tab.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--xero-blue);border-radius:2px 2px 0 0}.jt-tab-count{background:#1c5fe31a;color:var(--xero-blue-deep);font-weight:600}.warn-chip{background:#ff8f1feb;border:1px solid rgba(148,96,0,.45);color:#fff;box-shadow:0 1px 2px #78460033,0 4px 12px #78460026,inset 0 1px #ffffff4d}.warn-chip:hover:not(:disabled){background:#ffa53df2}.stage-popover{background:#ffffffeb;border:1px solid var(--xero-border-strong);box-shadow:0 8px 28px #141e322e;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.stage-popover-opt{background:var(--glass-bg-default);border:1px solid var(--glass-border);color:var(--xero-text)}.stage-popover-opt:hover{background:var(--xero-blue-soft);border-color:var(--xero-blue);color:var(--xero-blue-deep)}.stage-popover-opt.selected{background:var(--glass-bg-primary);color:#fff;border-color:var(--glass-border-primary);box-shadow:inset 0 1px #ffffff4d}.jobtrak-table th{background:#fafbfc;color:var(--xero-text-muted);border-right-color:var(--xero-border);border-bottom-color:var(--xero-border)}.jobtrak-table td{border-bottom-color:var(--xero-border);border-right-color:#f0f2f5}.jobtrak-table tbody tr:not([class*=row-]):hover td{background:var(--xero-row-hover)}.jobs-table-wrap{background:var(--xero-card);border-color:var(--xero-border);box-shadow:0 1px 3px #141e320a}.job-link{color:var(--xero-blue-deep)}.kpi-tile{background:#ffffffd9;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-color:var(--xero-border);box-shadow:var(--glass-shadow)}input[type=text],input[type=email],input[type=number],input[type=date],input[type=search],input[type=tel],input[type=url],input[type=password],select,textarea,.search,.dxf-grid select,.dxf-grid input[type=text],.dxf-grid input[type=number]{background:var(--xero-card);border:1px solid var(--xero-border);color:var(--xero-text);border-radius:4px;transition:border-color .15s ease,box-shadow .15s ease}input[type=text]::placeholder,input[type=email]::placeholder,input[type=number]::placeholder,input[type=search]::placeholder,textarea::placeholder,.search::placeholder{color:var(--xero-text-muted);opacity:1}input[type=text]:focus,input[type=email]:focus,input[type=number]:focus,input[type=date]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=url]:focus,input[type=password]:focus,select:focus,textarea:focus,.search:focus{outline:none;border-color:var(--xero-blue);box-shadow:0 0 0 3px #4285f42e}.date-cell-input:focus,.special-cell-input:focus{border-color:var(--xero-blue);box-shadow:0 0 0 2px #4285f433}@media (prefers-color-scheme: dark){body{color:var(--xero-text);background:linear-gradient(180deg,#f4f7fa,#e8eef5) fixed}.card,.jobs-table-wrap{background:var(--xero-card);border-color:var(--xero-border)}.jobtrak-table th{background:#fafbfc;color:var(--xero-text-muted)}.jobtrak-table td{border-bottom-color:var(--xero-border);border-right-color:#f0f2f5}.jobtrak-table tbody tr:not([class*=row-]):hover td{background:var(--xero-row-hover)}.nav{background:#ffffffeb;border-bottom-color:var(--xero-border)}.nav-link{color:var(--xero-text-muted)}input[type=text],input[type=email],input[type=number],input[type=date],input[type=search],input[type=tel],input[type=url],input[type=password],select,textarea,.search,.dxf-grid select,.dxf-grid input[type=text],.dxf-grid input[type=number]{background:var(--xero-card);border-color:var(--xero-border);color:var(--xero-text)}input::placeholder,textarea::placeholder{color:var(--xero-text-muted)}.muted{color:var(--xero-text-muted)}}.assistant-fab{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .85rem;font:inherit;font-size:.875rem;font-weight:600;letter-spacing:.02em;color:#fff;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);border-radius:999px;box-shadow:inset 0 1px #ffffff4d,0 1px 3px #0000001a;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .05s ease;margin-left:.5rem}.assistant-fab:hover{background:#ffffff47;border-color:#ffffff8c}.assistant-fab:active{transform:translateY(.5px)}.assistant-fab-icon{font-size:1rem;line-height:1}.hal-eye{width:9px;height:9px;border-radius:50%;background:#ff1a1a;box-shadow:0 0 4px #ff1a1ad9,0 0 8px #ff3c3c8c,inset 0 0 2px #ffc8c899;animation:hal-pulse 1.6s ease-in-out infinite;flex-shrink:0}@keyframes hal-pulse{0%,to{background:#c00000;box-shadow:0 0 3px #c000008c,0 0 5px #c000004d;transform:scale(.9)}50%{background:#ff3030;box-shadow:0 0 6px #ff3c3cf2,0 0 14px #ff5050a6,0 0 22px #ff646459;transform:scale(1.15)}}.assistant-panel{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:100vw;background:#ffffffd9;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-left:1px solid var(--xero-border);box-shadow:-8px 0 28px #141e321a;display:flex;flex-direction:column;transform:translate(100%);transition:transform .25s ease;z-index:1000}.assistant-panel.open{transform:translate(0)}.assistant-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--xero-border);background:#fff9}.assistant-title{font-weight:700;color:var(--xero-navy);display:inline-flex;align-items:center;gap:.4rem}.assistant-icon{color:var(--xero-blue);font-size:1.1rem}.assistant-header-actions{display:inline-flex;align-items:center;gap:.4rem}.assistant-new{background:transparent;border:1px solid var(--xero-border);color:var(--xero-blue-deep);font-size:.8rem;font-weight:600;padding:.3rem .65rem;border-radius:4px;cursor:pointer;line-height:1}.assistant-new:hover:not(:disabled){background:var(--xero-blue-soft);border-color:var(--xero-blue)}.assistant-new:disabled{opacity:.5;cursor:not-allowed}.assistant-close{background:transparent;border:0;color:var(--xero-text-muted);font-size:1.4rem;line-height:1;cursor:pointer;width:2rem;height:2rem;border-radius:4px}.assistant-close:hover{background:var(--xero-blue-soft);color:var(--xero-blue-deep)}.assistant-body{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.6rem}.assistant-empty{color:var(--xero-text-muted);font-size:.9rem}.assistant-empty p{margin:0 0 .5rem}.assistant-mockup-note{font-size:.8rem}.assistant-msg{max-width:85%;padding:.6rem .8rem;border-radius:10px;font-size:.9rem;line-height:1.4;white-space:pre-wrap;word-wrap:break-word}.assistant-msg-user{align-self:flex-end;background:var(--glass-bg-primary);border:1px solid var(--glass-border-primary);color:var(--xero-blue-deep)}.assistant-msg-assistant{align-self:flex-start;background:#fffffff2;border:1px solid var(--xero-border);color:var(--xero-text);box-shadow:0 1px 2px #141e320a}.assistant-typing{display:inline-flex;align-items:center;gap:4px;padding:.7rem .85rem}.assistant-dot{width:6px;height:6px;border-radius:50%;background:var(--xero-text-muted);animation:assistant-blink 1.2s infinite}.assistant-dot:nth-child(2){animation-delay:.2s}.assistant-dot:nth-child(3){animation-delay:.4s}@keyframes assistant-blink{0%,60%,to{opacity:.3}30%{opacity:1}}.assistant-suggestions{display:flex;flex-wrap:wrap;gap:.4rem;padding:.6rem 1rem 0;border-top:1px solid var(--xero-border);background:#ffffff80}.assistant-chip{font:inherit;font-size:.78rem;padding:.3rem .65rem;background:var(--glass-bg-default);border:1px solid var(--glass-border);border-radius:999px;color:var(--xero-blue-deep);cursor:pointer;transition:background .15s ease,border-color .15s ease}.assistant-chip:hover:not(:disabled){background:var(--xero-blue-soft);border-color:#4285f473}.assistant-chip:disabled{opacity:.5;cursor:not-allowed}.assistant-input-row{display:flex;gap:.5rem;padding:.75rem 1rem 1rem;background:#ffffff80;border-top:1px solid var(--xero-border)}.assistant-input{flex:1;resize:none;font:inherit;font-size:.9rem;padding:.5rem .65rem;background:var(--xero-card);border:1px solid var(--xero-border);border-radius:6px;color:var(--xero-text)}.assistant-input:focus{outline:none;border-color:var(--xero-blue);box-shadow:0 0 0 3px #4285f42e}.assistant-send{align-self:flex-end}@media (max-width: 600px){.assistant-panel{width:100vw}.assistant-fab{padding:.35rem .65rem}.assistant-fab-icon{display:none}}.nav{background:linear-gradient(135deg,#4285f4f2,#1c5fe3f2);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid rgba(28,95,227,.55);box-shadow:0 4px 12px #1c5fe32e,inset 0 1px #fff3}.nav-title{color:#fff;font-size:1.575rem;font-weight:600;letter-spacing:.02em}.nav-link{color:#fff;font-weight:600;letter-spacing:.02em}.nav-link:hover{background:#ffffff2e;color:#fff}.nav-link.active{background:#ffffff1a;color:#fff}.nav-link.active:after{background:#fff}h1{color:#4285f4}@media (prefers-color-scheme: dark){h1{color:#4285f4}}
