:root{--brand:#233a88;--brand-600:#1b2d6b;--brand-400:#3d55a8;--brand-100:#e8ecf7;--red:#c0392b;--red-tint:#c0392b12;--green:#2e7d32;--green-tint:#2e7d321a;--warn:#9a6700;--warn-strong:#7a5200;--warn-tint:#9a67001a;--blue:#2160c4;--accent:var(--brand);--on-accent:#fff;--link:var(--brand);--link-hover:var(--brand-400);--bg:#f4f6fa;--panel:#fff;--border:#d9dfe9;--text:#1e2430;--muted:#667085;--fg:var(--text);--qe-chrome:#eaeef5;--qe-chrome-border:#c2cbd9;--qe-btn-hover:#dde4ef;--qe-btn-active-bg:#dbe4f8;--qe-btn-active-border:var(--brand-400);--qe-titlebar:var(--brand);--status-measured:#2e9e4f;--status-partial:#d6a017;--status-empty:#aab4c4;--font:"Segoe UI", Tahoma, Arial, Helvetica, sans-serif;--fs-2xs:10px;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;--fs-xl:20px;--fs-2xl:26px;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-pill:999px;--sp-1:4px;--sp-2:6px;--sp-3:8px;--sp-4:10px;--sp-5:12px;--sp-6:16px;--sp-7:24px;--sp-8:32px;--t-fast:.12s;--t-slow:.2s;--ease:cubic-bezier(.2, 0, .2, 1)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-theme=black]{--brand:#c9ccd1;--brand-600:#9a9ea6;--brand-400:#e2e4e7;--brand-100:#202329;--on-accent:#14171a;--red:#e8674f;--red-tint:#e8674f1f;--green:#6cc46c;--green-tint:#6cc46c24;--warn:#e6a94a;--warn-strong:#f0b95e;--warn-tint:#e6a94a24;--blue:var(--brand-400);--link:var(--brand);--link-hover:var(--brand-400);--bg:#000;--panel:#0d0f13;--border:#23262c;--text:#e9eaec;--muted:#9aa0aa;--qe-chrome:#0d0f13;--qe-chrome-border:#23262c;--qe-btn-hover:#1a1d22;--qe-btn-active-bg:#202329;--qe-btn-active-border:var(--brand);--qe-titlebar:#16181c;--status-measured:#4cc472;--status-partial:#e6b93c;--status-empty:#495260}[data-theme=gold]{--brand:#d39f02;--brand-600:#a67d02;--brand-400:#e8b92e;--brand-100:#2b2210;--on-accent:#14110a;--red:#e8674f;--red-tint:#e8674f1f;--green:#6cc46c;--green-tint:#6cc46c24;--warn:#e6a94a;--warn-strong:#f0b95e;--warn-tint:#e6a94a24;--blue:var(--brand-400);--link:var(--brand);--link-hover:var(--brand-400);--bg:#14110a;--panel:#1c170d;--border:#332c1c;--text:#f0ece2;--muted:#b3a488;--qe-chrome:#1c170d;--qe-chrome-border:#332c1c;--qe-btn-hover:#241d10;--qe-btn-active-bg:#2b2210;--qe-btn-active-border:var(--brand);--qe-titlebar:#201908;--status-measured:#4cc472;--status-partial:#e6b93c;--status-empty:#6b5f47}[data-theme=pink]{--brand:#b83280;--brand-600:#8f2566;--brand-400:#bb3f84;--brand-100:#f8dcea;--red:#c0392b;--red-tint:#c0392b12;--green:#2e7d32;--green-tint:#2e7d321a;--warn:#9a6700;--warn-strong:#7a5200;--warn-tint:#9a67001a;--blue:#2160c4;--link:var(--brand);--link-hover:var(--brand-400);--bg:#fdf3f6;--panel:#fff;--border:#f0d7e0;--text:#1e2430;--muted:#7d5d6a;--qe-chrome:#f7e4ec;--qe-chrome-border:#e8c2d3;--qe-btn-hover:#f2d3e0;--qe-btn-active-bg:#f8dcea;--qe-btn-active-border:var(--brand-400);--qe-titlebar:var(--brand);--status-measured:#2e9e4f;--status-partial:#d6a017;--status-empty:#aab4c4}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text)}a{color:var(--link);text-underline-offset:2px;text-decoration:underline}a:hover{color:var(--link-hover)}a:focus-visible{outline:2px solid var(--link);outline-offset:2px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark],[data-theme=black],[data-theme=gold]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}#app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{background:var(--qe-chrome);border-bottom:1px solid var(--qe-chrome-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;display:flex}.app-brand{align-items:center;gap:12px;min-width:0;display:flex}.app-brand-home{font:inherit;text-align:left;cursor:pointer;border-radius:var(--r-md);background:0 0;border:none;margin:0;padding:0}.app-brand-home:hover .app-header h1{color:var(--link-hover,var(--brand))}.app-brand-home:hover .app-logo{opacity:.85}.app-logo{flex-shrink:0;width:auto;height:52px;display:block}.app-header h1{font-size:var(--fs-lg);letter-spacing:.06em;color:var(--brand);white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:700;display:none;overflow:hidden}@media (width<=620px){.app-logo{height:38px}}.app-header .tagline{font-size:var(--fs-xs);color:var(--muted);margin:0}.app-header-actions{align-items:center;gap:8px;display:flex}.brand-logos{flex-wrap:wrap;gap:16px;margin:12px 0 4px;display:flex}.brand-logo{flex-direction:column;flex:200px;gap:6px;display:flex}.brand-logo-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}.brand-logo-preview{border:1px solid var(--border);border-radius:var(--r-md);justify-content:center;align-items:center;height:72px;display:flex}.brand-logo-preview img{object-fit:contain;max-width:90%;max-height:52px}.brand-logo-preview.is-light{background:#fff}.brand-logo-preview.is-dark{background:#1c2029}.brand-logo input[type=file]{font-size:var(--fs-sm)}.brand-logo button{margin:0}.brand-password{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:4px;margin-top:14px;padding-top:12px;display:flex}.brand-password .hint{margin:0}.brand-password button{margin:4px 0 0}.lock-screen{z-index:60;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lock-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);flex-direction:column;gap:10px;width:min(360px,90vw);padding:28px 24px;display:flex;box-shadow:0 10px 40px #0000001f}.lock-box h2{font-size:var(--fs-lg);letter-spacing:.04em;color:var(--brand);margin:0 0 4px}.lock-box .award-field{width:100%}.lock-box input{width:100%;margin:0}.lock-box button{margin:4px 0 0}.lock-box .hint{min-height:16px;margin:0}.lock-logo{align-self:flex-start;width:auto;height:58px}.lock-company-name{display:none}.who-gate-box{width:min(420px,90vw)}.who-gate-list{flex-direction:column;gap:6px;max-height:50vh;display:flex;overflow-y:auto}.who-gate-item{text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);width:100%;color:var(--fg);cursor:pointer;align-items:center;gap:8px;margin:0;padding:10px 12px;display:flex}.who-gate-item:hover:not(:disabled){border-color:var(--muted)}.who-gate-item:disabled{opacity:.6;cursor:default}.who-gate-name{font-size:var(--fs-md);flex:1}.who-gate-role{font-size:var(--fs-xs);color:var(--muted)}.who-gate-pin{font-size:var(--fs-xs);color:var(--muted);border:1px solid var(--border);border-radius:var(--r-sm);padding:1px 6px}.screen{flex:1;min-height:0;display:none}.screen.active{flex-direction:column;display:flex}#screen-root{opacity:1;flex-direction:column;flex:1;min-height:0;transition:opacity .11s;display:flex}#screen-root.nav-fade-out{opacity:0}.workspace-layout{flex:1;min-height:0;display:flex}.workspace-sheetnav{border-right:none;flex-shrink:0;width:220px;min-width:160px;max-width:560px;overflow-y:auto}.workspace-resizer{cursor:col-resize;background:var(--border);flex-shrink:0;width:5px;position:relative}.workspace-resizer:hover,.workspace-resizer.dragging{background:var(--brand-400)}.workspace-canvas-area{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow-y:auto}.workspace-rightpanel{border-left:none;flex-shrink:0;width:280px;min-width:220px;max-width:640px;overflow-y:auto}.status-bar{background:var(--qe-chrome);border-top:1px solid var(--qe-chrome-border);color:var(--text);font-size:var(--fs-xs);flex-shrink:0;justify-content:space-between;align-items:center;padding:4px 14px;display:flex}.status-bar-right{color:var(--muted)}.status-save-failed{color:var(--red);font-weight:600}@media (width<=900px){.workspace-layout{flex-direction:column}.workspace-sheetnav,.workspace-rightpanel{border:none;border-bottom:1px solid var(--border);width:100%}}input[type=text],input[type=number],input[type=search],input[type=date],input[type=email],input[type=tel],input[type=url],input[type=password],input[type=month],input[type=time],input:not([type]),textarea{border:1px solid var(--border);border-radius:var(--r-sm);font-size:var(--fs-md);background:var(--panel);color:var(--text);padding:4px 8px;font-family:inherit}input[type=text],input[type=number],input:not([type]){width:100%}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert()opacity(.7)}[data-theme=dark] input[type=search]::-webkit-search-cancel-button{filter:invert()opacity(.7)}[data-theme=black] input[type=date]::-webkit-calendar-picker-indicator{filter:invert()opacity(.7)}[data-theme=black] input[type=search]::-webkit-search-cancel-button{filter:invert()opacity(.7)}[data-theme=gold] input[type=date]::-webkit-calendar-picker-indicator{filter:invert()opacity(.7)}[data-theme=gold] input[type=search]::-webkit-search-cancel-button{filter:invert()opacity(.7)}select{border:1px solid var(--border);border-radius:var(--r-sm);font-size:var(--fs-md);background:var(--panel);color:var(--text);padding:4px 8px;font-family:inherit}input:focus,select:focus,textarea:focus{border-color:var(--brand-400)}label{font-size:var(--fs-sm);margin-bottom:8px;display:block}button{background:var(--brand);color:var(--on-accent);border:1px solid var(--brand);border-radius:var(--r-md);font-size:var(--fs-md);cursor:pointer;margin-right:8px;padding:8px 16px;font-family:inherit;transition:background .12s,border-color .12s,color .12s}button:hover{background:var(--brand-400);border-color:var(--brand-400)}button:active{background:var(--brand-600);border-color:var(--brand-600)}button.secondary{color:var(--text);border:1px solid var(--border);background:0 0}button.secondary:hover{border-color:var(--brand-400);color:var(--brand);background:var(--brand-100)}button:disabled{background:var(--border);color:var(--muted);cursor:not-allowed;border-color:#0000}button:disabled:hover{background:var(--border);color:var(--muted);border-color:#0000}.hint{font-size:var(--fs-xs);color:var(--muted)}.status{font-size:var(--fs-sm);color:var(--muted);margin-left:8px}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-right:6px;display:inline-block}.status-dot.measured{background:var(--status-measured)}.status-dot.partial{background:var(--status-partial)}.status-dot.empty{background:var(--status-empty)}.status-dot.damaged{background:var(--red);box-shadow:0 0 0 2px var(--red-tint)}.sheet-nav-item-damaged .sheet-nav-name{color:var(--red);font-style:italic}.project-card-damaged{border-color:var(--red);opacity:.85}.project-card-damaged .project-card-name{color:var(--red)}.empty-note{font-size:var(--fs-sm);color:var(--muted);padding:10px 0}.welcome-screen{padding:32px 24px 60px;overflow-y:auto}.welcome-inner{width:100%;max-width:900px;margin:0 auto}.project-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:14px 0;display:grid}.project-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;overflow:hidden}.project-card:hover{border-color:var(--brand-400)}.project-card-thumb{background:var(--qe-chrome);width:100%;height:110px;color:var(--muted);font-size:var(--fs-xs);border-bottom:1px solid var(--border);justify-content:center;align-items:center;display:flex}.project-card-thumb img{object-fit:cover;width:100%;height:100%;display:block}.project-card-body{padding:8px 10px}.project-card-name{font-size:var(--fs-md);font-weight:700}.project-card-meta{font-size:var(--fs-xs);color:var(--muted);margin-top:2px}.project-card-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;padding:0 10px 8px;display:flex}.bid-stage-select{flex:0 auto;min-width:6.5rem;max-width:100%}.project-card-actions .secondary{flex:none}.project-card-delete{font-size:var(--fs-xs);padding:2px 6px}.welcome-actions{margin:16px 0}.new-project-form{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);max-width:640px;margin-top:12px;padding:14px 16px}.form-grid{grid-template-columns:repeat(4,1fr);gap:10px 16px;display:grid}.storage-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);max-width:720px;margin-top:24px;padding:14px 16px}.storage-sublist{flex-direction:column;gap:2px;margin:6px 0;display:flex}.storage-row{border-bottom:1px solid var(--border);font-size:var(--fs-md);grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:6px 4px;display:grid}.storage-row:last-child{border-bottom:none}.storage-row-header{border-bottom:1px solid var(--border);font-weight:600}.storage-row span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dashboard-screen{padding:24px 24px 60px;overflow-y:auto}.dashboard-inner{max-width:1100px;margin:0 auto}.estimate-summary-screen{padding:24px 24px 60px;overflow-y:auto}.dash-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:14px;display:flex}.dash-name{font-size:var(--fs-xl);margin:0 0 4px}.dash-meta-row{align-items:center;gap:10px;display:flex}.dash-meta{font-size:var(--fs-sm);color:var(--muted)}.dash-activity{font-size:var(--fs-xs);color:var(--muted);margin-top:4px;display:block}.dash-header-actions{flex-wrap:wrap;gap:8px;display:flex}.dash-cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:16px 0;display:grid}.dash-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.dash-card-label{font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px}.dash-card-value{font-size:var(--fs-xl);font-weight:700}.dash-card-lines{font-size:var(--fs-md);line-height:1.6}.dash-card-sub{font-size:var(--fs-xs);color:var(--muted);margin-top:2px}.dash-progress-bar{background:var(--qe-chrome);border-radius:var(--r-sm);height:6px;margin-top:8px;overflow:hidden}.dash-progress-fill{background:var(--blue);border-radius:var(--r-sm);height:100%}.dash-chart-section,.dash-sheets-section,.dash-code-section{margin:24px 0}.dash-chart-section h3,.dash-sheets-section h3,.dash-code-section h3{font-size:var(--fs-md);margin:0 0 10px}.dash-chart{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px}.dash-code-table{border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);width:100%;font-size:var(--fs-sm);overflow:hidden}.dash-code-table th,.dash-code-table td{text-align:right;border-bottom:1px solid var(--border);padding:8px 12px}.dash-code-table th:first-child,.dash-code-table td:first-child{text-align:left;font-weight:700}.dash-code-table th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--qe-chrome);font-weight:400}.dash-code-table tbody tr:last-child td{border-bottom:none}.dash-bar-row{align-items:center;gap:10px;padding:6px 0;display:flex}.dash-bar-label{width:60px;font-size:var(--fs-sm);flex-shrink:0}.dash-bar-track{background:var(--qe-chrome);border-radius:var(--r-sm);flex:1;height:14px;overflow:hidden}.dash-bar-fill{border-radius:var(--r-sm);height:100%}.dash-bar-count{text-align:right;width:26px;font-size:var(--fs-sm);color:var(--muted);flex-shrink:0}.dash-sheets-row{gap:12px;padding-bottom:6px;display:flex;overflow-x:auto}.dash-sheet-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;flex:0 0 160px;overflow:hidden}.dash-sheet-card:hover{border-color:var(--brand-400)}.dash-sheet-thumb{background:var(--qe-chrome);width:100%;height:90px;color:var(--muted);font-size:var(--fs-xs);border-bottom:1px solid var(--border);justify-content:center;align-items:center;display:flex}.dash-sheet-thumb img{object-fit:cover;width:100%;height:100%;display:block}.dash-sheet-name{font-size:var(--fs-sm);padding:6px 8px 2px;font-weight:700}.dash-sheet-meta{font-size:var(--fs-xs);color:var(--muted);align-items:center;gap:6px;padding:0 8px 8px;display:flex}.es-controls{align-items:center;gap:12px;margin:16px 0 12px;display:flex}.es-controls label{font-size:var(--fs-sm);align-items:center;gap:6px;display:flex}.es-table{border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);width:100%;font-size:var(--fs-sm);overflow:hidden}.es-table th,.es-table td{text-align:right;border-bottom:1px solid var(--border);padding:8px 12px}.es-table th:first-child,.es-table td:first-child{text-align:left;font-weight:700}.es-table th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--qe-chrome);font-weight:400}.es-table tbody tr:hover{background:var(--qe-btn-hover)}.es-row-clickable{cursor:pointer}.es-row-clickable:hover td:first-child{color:var(--blue);text-decoration:underline}.es-grand-row td{border-top:2px solid var(--border);background:var(--qe-chrome);border-bottom:none;font-weight:700}.es-swatch{border-radius:var(--r-sm);vertical-align:middle;width:10px;height:10px;margin-right:6px;display:inline-block}.es-finishes-section{margin-top:16px}.es-finishes-section h3{margin:0 0 2px}.es-finishes-table{border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);width:100%;font-size:var(--fs-sm);margin:10px 0 16px;overflow:hidden}.es-finishes-table caption{text-align:left;font-size:var(--fs-sm);caption-side:top;padding:6px 2px;font-weight:700}.es-finishes-table th,.es-finishes-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px}.es-finishes-table th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--qe-chrome);font-weight:400}.es-finishes-table tbody tr:hover{background:var(--qe-btn-hover)}.library-screen{padding:24px 24px 60px;overflow-y:auto}.library-inner{max-width:1200px;margin:0 auto}.library-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:10px;display:flex}.library-header h2{margin:0}.editable-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);margin-top:14px}.editable-table th,.editable-table td{border:1px solid var(--border);text-align:left;padding:4px 8px}.editable-table th{background:var(--qe-chrome);font-weight:700}.editable-table td input,.editable-table td select{font-size:var(--fs-sm);width:100%;margin:0;padding:4px}.editable-table .lib-updated{font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}.editable-table .lib-delete{color:var(--muted);font-size:var(--fs-sm);background:0 0;margin:0;padding:2px 8px}.editable-table .lib-delete:hover{color:var(--red);background:0 0}.recipe-block{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);align-items:flex-start;gap:10px;margin-top:10px;padding:10px 12px;display:flex}.recipe-summary{cursor:pointer;flex:1}.recipe-summary-main{align-items:center;gap:8px;font-weight:700;display:flex}.recipe-category{font-size:var(--fs-xs);color:var(--muted);background:var(--qe-chrome);border-radius:var(--r-sm);padding:1px 6px;font-weight:400}.recipe-parent-type{font-size:var(--fs-xs);color:var(--blue);font-weight:400}.recipe-summary-sub{font-size:var(--fs-sm);color:var(--muted);margin-top:4px}.recipe-block-editing{flex-direction:column;padding:14px 16px}.recipe-edit-form{width:100%}.recipe-edit-form label{font-size:var(--fs-sm);margin-bottom:8px;display:block}.recipe-edit-form label input,.recipe-edit-form label select{width:100%;margin-top:2px;display:block}.recipe-components-table{margin-top:10px}.recipe-components-table .rcp-c-preview{color:var(--muted);text-align:right;font-family:monospace}.rcp-add-component{margin-top:8px}.recipe-edit-actions{align-items:center;gap:8px;margin-top:14px;display:flex}.workspace-screen{flex-direction:column;flex:1;min-height:0;display:flex}.project-bar{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.project-bar-name{font-size:var(--fs-lg);font-weight:700}.project-bar-meta{font-size:var(--fs-sm);color:var(--muted);margin-left:10px}.project-bar-actions{gap:8px;display:flex}.sheet-nav-header{font-size:var(--fs-sm);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 12px;font-weight:700;display:flex}.sheet-nav-list{padding:6px}.sheet-nav-item{border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sm);align-items:flex-start;padding:6px 8px;display:flex}.sheet-nav-item:hover{background:var(--qe-btn-hover)}.sheet-nav-item.active{background:var(--qe-btn-active-bg)}.sheet-nav-name{white-space:normal;word-break:break-word;flex:1;line-height:1.35}.status-dot{margin-top:4px}#sheetNavNewBtn{margin:8px 12px}.sheet-nav-actions{flex-shrink:0;gap:2px;margin-left:4px;display:none}.sheet-nav-item:hover .sheet-nav-actions{display:flex}.sheet-nav-icon-btn{color:var(--muted);font-size:var(--fs-sm);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:none;margin:0;padding:1px 4px}.sheet-nav-icon-btn:hover{background:var(--qe-btn-active-bg);color:var(--text)}.sheet-nav-item-editing{cursor:default}.sheet-nav-item-editing:hover{background:0 0}.sheet-nav-edit{flex-direction:column;gap:4px;width:100%;display:flex}.sheet-nav-edit input{font-size:var(--fs-sm);padding:4px 6px}.sheet-nav-edit-btns{gap:6px;margin-top:2px;display:flex}.sheet-nav-edit-btns button{font-size:var(--fs-xs);flex:1;margin:0;padding:4px 6px}.canvas-toolbar{background:var(--qe-chrome);border-bottom:1px solid var(--qe-chrome-border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px 6px;padding:6px 10px;display:flex}.canvas-toolbar .canvas-zoom-group{align-items:center;gap:6px;margin-left:auto;display:flex}.canvas-toolbar .tool-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);margin:0;padding:4px 12px}.canvas-toolbar .tool-btn+.tool-btn{margin-left:-1px}.canvas-toolbar .tool-btn:hover{background:var(--qe-btn-hover)}.canvas-toolbar .tool-btn.active{background:var(--brand);border-color:var(--brand);color:var(--on-accent);z-index:1;font-weight:600;position:relative}.canvas-toolbar button.secondary{color:var(--text);background:0 0;border:1px solid #0000;margin:0;padding:4px 12px}.canvas-toolbar button.secondary:hover{background:var(--qe-btn-hover)}.canvas-toolbar button.secondary:disabled{color:var(--muted);opacity:.5;background:0 0}.canvas-sep{background:var(--qe-chrome-border);align-self:center;width:1px;height:20px;margin:2px 6px}.canvas-dim-wrap{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.canvas-dim-wrap label{align-items:center;gap:4px;display:flex}.canvas-dim-input{background:var(--qe-btn-bg,transparent);width:56px;color:var(--text);border:1px solid var(--qe-chrome-border);border-radius:var(--r-sm);padding:3px 6px;font-size:12px}.canvas-dim-input:focus{border-color:var(--accent,#4a90d9);outline:none}.canvas-dim-unit{opacity:.8}.canvas-print-wrap{position:relative}.canvas-print-dropdown{z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);min-width:220px;padding:6px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 6px 20px #00000040}.canvas-scale-wrap{position:relative}.canvas-scale-dropdown{z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);min-width:220px;max-height:360px;padding:6px;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto;box-shadow:0 6px 20px #00000040}.canvas-scale-group-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:6px 8px 4px;font-weight:600}.canvas-scale-option{text-align:left;width:100%;color:var(--text);border-radius:var(--r-sm);font-size:var(--fs-md);background:0 0;border:none;margin:0;padding:6px 8px;display:block}.canvas-scale-option:hover{background:var(--qe-btn-hover)}.canvas-scale-option-active{background:var(--qe-btn-active-bg);font-weight:600}.canvas-scale-empty{font-size:var(--fs-sm);color:var(--muted);max-width:260px;padding:10px 8px}.canvas-scale-status{font-size:var(--fs-sm);color:var(--text);padding:6px 8px 4px;font-weight:600}.canvas-scale-status-unset{color:var(--muted);font-weight:400}.canvas-scale-divider{background:var(--border);height:1px;margin:4px 2px}.canvas-scale-action{text-align:left;width:100%;color:var(--text);border-radius:var(--r-sm);font-size:var(--fs-md);background:0 0;border:none;margin:0;padding:6px 8px;font-weight:600;display:block}.canvas-scale-action:hover{background:var(--qe-btn-hover)}.canvas-scale-action:disabled{opacity:.5}.canvas-scale-calib-active{padding:4px 8px 6px}.canvas-scale-calib-status{font-size:var(--fs-sm);margin-bottom:6px}.canvas-scale-calib-label{font-size:var(--fs-sm);margin-bottom:6px;display:block}.canvas-scale-calib-label input{width:100%;margin-top:2px}.canvas-scale-calib-btns{gap:6px;display:flex}.canvas-scale-calib-btns .canvas-scale-action{text-align:center;border:1px solid var(--border);flex:1}.canvas-scale-verify-result{border-radius:var(--r-sm);font-size:var(--fs-2xs);margin-top:8px;padding:8px 9px;line-height:1.45}.canvas-scale-verify-agrees,.canvas-scale-verify-close{background:var(--green-tint);color:var(--text)}.canvas-scale-verify-disagrees{background:var(--red-tint);border-left:3px solid var(--red);color:var(--text)}.canvas-scale-verify-result .canvas-scale-action{border:1px solid var(--border);text-align:center;margin-top:6px}.canvas-scale-system-toggle{background:var(--input-bg,#00000026);border-radius:var(--r-md);gap:4px;margin:4px 8px 6px;padding:2px;display:flex}.canvas-scale-sys-btn{text-align:center;color:var(--muted);border-radius:var(--r-sm);font-size:var(--fs-sm);background:0 0;border:none;flex:1;margin:0;padding:4px 6px;font-weight:600}.canvas-scale-sys-btn:hover{color:var(--text)}.canvas-scale-sys-active{background:var(--qe-btn-active-bg);color:var(--text)}.konva-host{background:var(--bg);-webkit-user-select:none;user-select:none;flex:1;min-width:0;min-height:0;position:relative}.canvas-ruler-bar{pointer-events:none;z-index:4;display:none;position:absolute}.canvas-ruler-h{width:100%;left:0}.canvas-ruler-v{height:100%;top:0}.canvas-empty-state{font-size:var(--fs-md);color:var(--muted);text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-empty-state button{margin:12px auto 0;display:block}.canvas-upload-mount{background:var(--bg);display:none;position:absolute;inset:0;overflow-y:auto}.upload-panel{max-width:560px;margin:32px auto;padding:0 16px 40px}.upload-panel h3{font-size:var(--fs-lg);margin:0 0 6px}.upload-block{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);margin:14px 0;padding:12px 14px}.upload-block label{margin-bottom:8px}.upload-block input[type=file]{font-size:var(--fs-sm);margin:6px 0 10px;display:block}.upload-candidates{margin-top:14px}.upload-candidates-actions{z-index:5;background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;padding:10px 0;display:flex;position:sticky;top:-1px}.upload-candidates-list{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:12px;display:grid}.upload-candidate{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-xs);cursor:pointer;flex-direction:column;gap:4px;padding:6px;display:flex}.upload-candidate:hover{border-color:var(--brand-400)}.upload-candidate img{object-fit:cover;border-radius:var(--r-sm);background:var(--qe-chrome);width:100%;height:90px}.upload-candidate input[type=checkbox]{margin-right:4px}.up-cand-thumb{cursor:zoom-in}.upload-preview-modal{z-index:200;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.upload-preview-backdrop{background:#000000b8;position:absolute;inset:0}.upload-preview-content{z-index:1;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;gap:8px;max-width:92vw;max-height:92vh;padding:10px;display:flex;position:relative}.upload-preview-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.upload-preview-caption{font-size:var(--fs-md);font-weight:600}.upload-preview-img{object-fit:contain;border-radius:var(--r-sm);transform-origin:50%;will-change:transform;max-width:88vw;max-height:80vh}.upload-preview-content{overflow:hidden}.folder-browser{border:1px solid var(--border);border-radius:var(--r-md);background:var(--qe-chrome);margin-top:10px;padding:10px}.folder-browser-path{font-size:var(--fs-sm);word-break:break-all;margin-bottom:6px;font-weight:700}.folder-browser-list{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);max-height:220px;margin-bottom:8px;overflow-y:auto}.folder-browser-item{font-size:var(--fs-md);cursor:pointer;border-bottom:1px solid var(--border);padding:6px 10px}.folder-browser-item:hover{background:var(--qe-btn-hover)}.folder-browser-item:last-child{border-bottom:none}.recent-scans{margin-bottom:16px}.recent-scans-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:4px;font-weight:600}.recent-scan-item{text-align:left;background:var(--panel);width:100%;color:var(--text);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;margin-bottom:4px;padding:8px 10px;display:block}.recent-scan-item:hover{border-color:var(--brand-400)}.recent-scan-name{font-size:var(--fs-md);font-weight:600;display:block}.recent-scan-meta{font-size:var(--fs-xs);color:var(--muted);margin-top:2px;display:block}.upload-dropzone{border:1px dashed var(--border);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--muted);text-align:center;margin:4px 0 8px;padding:10px}.upload-dropzone-active{border-color:var(--brand);color:var(--text);background:var(--qe-btn-hover)}.upload-dropzone-big{border-width:2px;flex-direction:column;align-items:center;gap:6px;padding:18px 12px;display:flex}.upload-dropzone-big strong{color:var(--text);font-size:var(--fs-md)}.upload-dropzone-big .upload-hint{margin:0}.upload-drop-list{font-size:var(--fs-sm);color:var(--muted);margin:4px 0 8px}.rfq-outfiles{border:1px dashed var(--border);border-radius:var(--r-md);margin:8px 0;padding:8px}[data-drop].is-drop-over{outline:2px dashed var(--brand);outline-offset:2px;background:var(--qe-btn-hover);border-radius:var(--r-sm)}.order-files{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.rfq-outfiles-list{flex-wrap:wrap;gap:6px;display:flex}.rfq-outfiles-list:empty{display:none}.rfq-outfiles-do{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.rfq-outfiles-picker{border-top:1px solid var(--border);max-height:260px;margin-top:8px;padding-top:8px;overflow-y:auto}.rfq-jobfile-group{margin-bottom:8px}.rfq-jobfile-head{font-size:var(--fs-sm);color:var(--muted);margin-bottom:2px}.rfq-jobfile{font-size:var(--fs-sm);align-items:center;gap:6px;padding:2px 0;display:flex}.rfq-jobfile span{overflow-wrap:anywhere}.upload-btn-row{flex-wrap:wrap;gap:6px;margin:4px 0;display:flex}.upload-hint{margin-left:0;display:block}.upload-progress-wrap{border-radius:var(--r-sm);background:var(--qe-chrome);height:6px;margin:6px 0;overflow:hidden}.upload-progress-bar{background:var(--brand);width:0%;height:100%;transition:width .3s}.file-checklist{border:1px solid var(--border);border-radius:var(--r-md);margin-top:10px;padding:8px}.file-checklist-list{max-height:240px;margin-top:6px;overflow-y:auto}.file-checklist-item{font-size:var(--fs-sm);border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:4px 2px;display:flex}.file-checklist-item:last-child{border-bottom:none}.file-checklist-item label{overflow-wrap:anywhere;flex:1}.file-checklist-flag{white-space:nowrap;color:var(--muted);margin-left:auto}.scan-notes{margin-top:10px}.scan-note{font-size:var(--fs-sm);border-radius:var(--r-md);background:var(--qe-chrome);color:var(--text);margin-bottom:6px;padding:6px 8px}.scan-note-good{background:#3ca04626}.scan-note-bad{background:#c83c3c26}.scan-note-info{background:#3c64c826}.upload-candidates-heading{font-size:var(--fs-md);margin:16px 0 4px}.rp-section{border-bottom:1px solid var(--border);padding:14px 16px}.rp-section h3{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin:0 0 10px}.rp-readout{font-size:var(--fs-sm);margin-bottom:6px}.rp-readout span{font-weight:700}.rp-item-row{border-radius:var(--r-sm);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.rp-item-row:hover{background:var(--qe-btn-hover)}.rp-item-row-selected{outline:1px solid var(--blue);background:#2160c426}.rp-color-picker{vertical-align:middle;gap:4px;margin-left:6px;display:inline-flex}.rp-color-dot{cursor:pointer;border:2px solid #0000;border-radius:50%;flex-shrink:0;width:16px;height:16px;padding:0}.rp-color-dot-active{border-color:var(--text,#222);box-shadow:inset 0 0 0 1px #fff}.rp-color-custom{border-radius:var(--r-sm);cursor:pointer;vertical-align:middle;background:0 0;border:none;width:20px;height:20px;margin-left:6px;padding:0}.rp-item-swatch{border-radius:var(--r-sm);flex-shrink:0;width:12px;height:12px}.rp-item-swatch-circle{border-radius:50%}.rp-item-swatch-square{border-radius:0}.rp-item-swatch-triangle{clip-path:polygon(50% 0%,0% 100%,100% 100%);border-radius:0}.rp-item-swatch-diamond{clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);border-radius:0}.rp-item-swatch-star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);border-radius:0}.rp-item-swatch-cross{clip-path:polygon(35% 0%,65% 0%,65% 35%,100% 35%,100% 65%,65% 65%,65% 100%,35% 100%,35% 65%,0% 65%,0% 35%,35% 35%);border-radius:0}.rp-item-text{flex:1;min-width:0}.rp-item-code{font-size:var(--fs-sm);font-weight:700}.rp-item-location{font-size:var(--fs-2xs);color:var(--muted);background:var(--qe-chrome);border-radius:var(--r-sm);margin-left:4px;padding:1px 4px;font-weight:400}.rp-item-qty{font-size:var(--fs-xs);color:var(--muted)}.rp-item-delete{font-size:var(--fs-sm);margin:0;padding:2px 8px}.results-table{font-size:var(--fs-xs);border-collapse:collapse;margin-top:8px}.results-table td{border-bottom:1px solid var(--border);padding:2px 6px}.dash-card-bid{border-color:var(--brand)}.dash-card-bid .dash-card-value{color:var(--brand);font-weight:700}.dash-warnings{flex-direction:column;gap:6px;margin:8px 0 4px;display:flex}.dash-warning{border-radius:var(--r-sm);font-size:var(--fs-md);border-left:3px solid var(--red);background:var(--red-tint);padding:8px 10px}.dash-warning-warn{border-left-color:var(--warn);background:var(--warn-tint)}.dash-pricing-section,.dash-scope-section,.dash-snapshot-section{margin-top:24px}.dash-pricing-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px 14px;margin-bottom:10px;display:grid}.dash-pricing-grid label{font-size:var(--fs-sm);flex-direction:column;gap:4px;display:flex}.dash-pricing-grid input,.dash-pricing-grid select{width:100%}.dash-buildup{max-width:460px;margin-top:12px}.dash-buildup-subtotal td{border-top:1px solid var(--border);font-weight:600}.dash-buildup-total td{border-top:2px solid var(--brand);font-weight:700;font-size:var(--fs-lg);color:var(--brand)}.dash-buildup-add td{color:var(--muted)}.dash-scope-label{font-size:var(--fs-sm);flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.dash-scope-label textarea{resize:vertical;width:100%;font-family:inherit;font-size:var(--fs-md)}.input-invalid{background:var(--red-tint);border-color:var(--red)!important}.project-card-lock{font-size:var(--fs-xs);color:var(--red);margin-top:4px;font-weight:600}.ws-readonly-banner{z-index:9999;background:var(--red);color:var(--on-accent);font-size:var(--fs-md);text-align:center;letter-spacing:.01em;padding:8px 12px;font-weight:600;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 8px #00000040}.cost-hint-warn{color:var(--red);font-weight:600}.canvas-split-row{flex:1;min-height:0;display:flex}.canvas-ref-resizer{cursor:col-resize;background:var(--border);flex:0 0 6px;width:6px}.canvas-ref-resizer:hover{background:var(--brand)}.canvas-ref-pane{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;flex:none;min-width:220px;display:flex}.canvas-ref-pane-bar{font-size:var(--fs-sm);background:var(--qe-chrome);border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:4px 8px;font-weight:600;display:flex}.canvas-ref-pane-bar span{flex:1}.canvas-ref-pane-bar button{font-size:var(--fs-xs);margin:0;padding:2px 8px}.canvas-ref-frame{border:0;flex:1;width:100%;display:block}.dash-audit-changes{font-size:var(--fs-xs);color:var(--muted);margin-top:4px;line-height:1.5}.es-bid-bar{margin:12px 0}.es-bid-row{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-lg);flex-wrap:wrap;gap:24px;padding:12px 16px;font-weight:600;display:flex}.es-bid-label{font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;font-weight:400;display:block}.es-bid-total{color:var(--brand);font-size:var(--fs-xl)}.es-bid-extra{font-size:var(--fs-sm);color:var(--muted);border-left:3px solid var(--border);margin-top:6px;padding:8px 16px}.es-role-alternate{color:var(--warn);font-weight:600}.es-role-allowance{color:var(--blue);font-weight:600}.rp-item-role{font-size:var(--fs-2xs);letter-spacing:.04em;border-radius:var(--r-sm);vertical-align:middle;padding:1px 4px;font-weight:700}.rp-item-role-alt{background:var(--status-partial);color:var(--text)}.rp-item-role-allow{background:var(--blue);color:var(--on-accent)}.storage-snapshot-list{border-left:2px solid var(--border);margin:2px 0 8px 14px}.storage-snapshot{font-size:var(--fs-sm);color:var(--muted);grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:4px 8px;display:grid}.storage-snapshot button{font-size:var(--fs-xs);margin:0;padding:2px 8px}.cand-uncertain{text-align:center;background:var(--status-partial);min-width:14px;color:var(--text);border-radius:var(--r-sm);font-size:var(--fs-2xs);cursor:help;padding:0 4px;font-weight:700;display:inline-block}.project-search-row{align-items:center;gap:10px;margin:0 0 10px;display:flex}.project-search{max-width:460px;font-size:var(--fs-md);flex:1;margin:0;padding:8px 10px}.project-search-count{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}.recent-scan-search{width:100%;font-size:var(--fs-sm);margin:4px 0 6px;padding:6px 8px}.folder-browser-controls{align-items:center;gap:8px;margin:6px 0;display:flex}.folder-browser-controls button{flex:none;margin:0}.folder-browser-filter{min-width:0;font-size:var(--fs-sm);flex:1;margin:0;padding:6px 8px}.folder-browser-count{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.storage-toggle{text-align:left;align-items:center;gap:8px;width:100%;margin:0;padding:8px 12px;font-weight:600;display:flex}.storage-toggle-caret{font-size:var(--fs-xs);opacity:.8}.storage-toggle .status{margin-left:auto;font-weight:400}.storage-body{padding-top:10px}.hub-tabs{border-bottom:1px solid var(--border);gap:4px;margin:0 0 12px;display:flex}.hub-tab{font-weight:600;font-size:var(--fs-md);color:var(--muted);border-radius:var(--r-md) var(--r-md) 0 0;background:0 0;border:1px solid #0000;border-bottom-width:2px;margin:0;padding:8px 16px}.hub-tab:hover{background:var(--qe-btn-hover);color:var(--text)}.hub-tab.active{color:var(--brand);border-bottom-color:var(--brand);background:0 0}.bid-stage-badge{border-radius:var(--r-lg);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--border);margin-right:6px;padding:1px 8px;font-weight:700;display:inline-block}.bid-stage-badge.stage-draft{color:var(--muted)}.bid-stage-badge.stage-submitted{color:var(--warn);border-color:var(--warn)}.bid-stage-badge.stage-won{color:var(--green);border-color:var(--green)}.bid-stage-badge.stage-lost,.bid-stage-badge.stage-no_bid{color:var(--muted);opacity:.7}.bid-stage-select,.job-status-select{font-size:var(--fs-xs);max-width:120px;margin:0;padding:4px 6px}.job-baseline{border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--muted);justify-content:space-between;align-items:baseline;margin-top:8px;padding-top:8px;display:flex}.job-baseline strong{font-size:var(--fs-lg);color:var(--text)}.job-summary-row{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.job-summary-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;flex:200px;gap:2px;min-width:0;padding:12px 14px;display:flex}.job-summary-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.job-summary-card strong{font-size:var(--fs-xl)}.job-summary-card .hint{font-size:var(--fs-xs);margin:2px 0 0}.submittal-add{flex-wrap:wrap;gap:8px;margin:10px 0 4px;display:flex}.submittal-add input{font-size:var(--fs-md);margin:0;padding:8px}.submittal-add #subTitle,.submittal-add #subMfr{flex:1;min-width:180px}.submittal-add #subNumber{width:70px}.submittal-add #subCode,.submittal-add #subSpec{width:120px}.submittal-add button{margin:0}.submittal-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.submittal-row{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);border-left:3px solid var(--border);align-items:flex-start;gap:12px;padding:10px 12px;display:flex}.submittal-row.is-approved{opacity:.72;border-left-color:var(--green)}.submittal-row.is-flagged,.submittal-row.is-overdue{border-left-color:var(--red)}.submittal-main{flex:1;min-width:0}.submittal-title{font-weight:600;font-size:var(--fs-md)}.submittal-number{min-width:26px;color:var(--muted);margin-right:6px;display:inline-block}.submittal-rev{font-size:var(--fs-2xs);color:var(--muted);margin-left:6px}.submittal-meta{font-size:var(--fs-xs);color:var(--muted);margin-top:4px}.submittal-code{border:1px solid var(--border);border-radius:var(--r-md);margin-right:6px;padding:0 6px;font-weight:600;display:inline-block}.submittal-state{font-weight:600}.submittal-files{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.submittal-file{font-size:var(--fs-xs);border:1px solid var(--border);border-radius:var(--r-lg);align-items:center;gap:4px;padding:2px 4px 2px 8px;display:inline-flex}.submittal-file-kind{color:var(--muted);font-size:var(--fs-2xs)}.submittal-file-del{font-size:var(--fs-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;margin:0;padding:0 4px;line-height:1}.submittal-file-del:hover{color:var(--red)}.submittal-add-file{font-size:var(--fs-xs);border-radius:var(--r-lg);border:1px dashed var(--border);color:var(--muted);cursor:pointer;background:0 0;margin:0;padding:2px 8px}.submittal-add-file:hover{color:var(--fg);border-color:var(--muted)}.submittal-actions{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.submittal-quick{gap:4px;display:flex}.submittal-quick-btn{font-size:var(--fs-xs);cursor:pointer;border:1px solid var(--border);border-radius:var(--r-lg);color:var(--muted);background:0 0;margin:0;padding:4px 8px}.submittal-quick-btn:hover{color:var(--fg);border-color:var(--muted)}.submittal-quick-btn.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.quote-rollup{margin:10px 0 4px}.variance-over{color:var(--red);font-weight:600}.variance-under{color:var(--green)}.quote-rollup-total td{border-top:2px solid var(--border);font-weight:700}.quote-package{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--r-md);background:var(--panel);padding:10px 12px}.quote-package.is-awarded{border-left-color:var(--green)}.quote-package-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.quote-package-title{font-weight:600;font-size:var(--fs-md);margin-right:6px}.quote-package-actions{flex-shrink:0;gap:6px;display:flex}.quote-package-actions button{font-size:var(--fs-xs);margin:0;padding:4px 8px}.level-sheet{margin-top:10px;overflow-x:auto}.level-empty{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.level-empty .hint{margin:0}.level-actions{align-items:center;gap:10px;margin-top:6px;display:flex}.lv-table{border-collapse:collapse;font-size:var(--fs-sm);min-width:100%}.lv-table th,.lv-table td{border:1px solid var(--border);vertical-align:middle;white-space:nowrap;padding:4px 8px}.lv-table thead th{background:var(--bg);text-align:left;font-weight:600}.lv-table th.lv-supplier.is-best .lv-supplier-name{color:var(--green)}.lv-supplier-name{display:block}.lv-files{align-items:center;gap:4px;margin-top:2px;display:inline-flex}.lv-file{font-size:var(--fs-md);opacity:.75;line-height:1;text-decoration:none}.lv-file:hover{opacity:1}.lv-file-add{border:1px solid var(--border);color:var(--muted);font-size:var(--fs-xs);border-radius:var(--r-sm);cursor:pointer;background:0 0;padding:1px 4px;font-weight:400;line-height:1}.lv-file-add:hover{border-color:var(--brand);color:var(--brand);background:0 0}.equip-edit-row{background:var(--brand-100);display:block}.equip-edit-row .submittal-add{margin:0 0 6px}.equip-edit-row input,.equip-edit-row select{flex:1;min-width:110px}.equip-edit-row .hint{margin:4px 0 0}.eq-date{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;align-items:center;gap:4px;display:flex}.eq-date input{min-width:130px}.equip-billed{text-align:right;margin-top:4px}.equip-billed strong{font-size:var(--fs-md);display:block}.equip-accrued-label{font-size:var(--fs-2xs);color:var(--muted);display:block}.qq-file{margin-bottom:8px}.qq-file label{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.qq-file .hint{margin:0}.lv-item{text-align:left;white-space:normal;min-width:190px}.lv-desc{font-weight:500}.lv-qty{color:var(--muted);margin-left:6px}.lv-item .submittal-file-del{float:right}.lv-cell{text-align:right;position:relative}.lv-price{text-align:right;font-variant-numeric:tabular-nums;width:92px;color:inherit;border-radius:var(--r-sm);background:0 0;border:1px solid #0000;padding:2px 4px}.lv-price:hover{border-color:var(--border)}.lv-price:focus{border-color:var(--brand);background:var(--panel)}.lv-cell.is-cheapest{background:var(--green-tint)}.lv-cell.is-cheapest .lv-price{color:var(--green);font-weight:600}.lv-cell.is-awarded{box-shadow:inset 0 0 0 2px var(--green)}.lv-cell.is-nobid .lv-price::placeholder{color:var(--muted);font-style:italic}.lv-over{font-size:var(--fs-2xs);color:var(--muted);line-height:1.2;display:block}.lv-partial{font-size:var(--fs-2xs);color:var(--red);font-weight:400;line-height:1.2;display:block}.lv-totals td{border-top:2px solid var(--text);font-weight:600}.lv-totals .lv-cell.is-partial{color:var(--muted);font-weight:400}.lv-award{text-align:left}.lv-award select{font-size:var(--fs-sm);max-width:150px;padding:2px 4px}.lv-verdict{font-size:var(--fs-sm);border-left:3px solid var(--green);background:var(--green-tint);margin-top:8px;padding:8px 10px}.qq-form{background:var(--brand-100);border-radius:var(--r-sm);padding:10px}.qq-table input{width:100%;font-size:var(--fs-sm);padding:4px}.qq-table input[readonly]{color:var(--muted);background:0 0;border-color:#0000}.qq-table td{padding:4px}.qq-table th{font-size:var(--fs-xs)}.qq-nobid{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.qq-nobid input{width:auto}.qq-form .submittal-add{margin:0 0 8px}.qq-form .hint{margin:8px 0 0}.quote-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);margin-top:8px}.quote-table td{border-top:1px solid var(--border);vertical-align:middle;padding:4px 6px}.quote-table tr.is-awarded{background:#2e7d3212}.quote-table tr.quote-edit-row{background:var(--brand-100)}.quote-table tr.quote-edit-row td{padding:8px 6px}.quote-edit-row .submittal-add{margin:0}.quote-edit-row input,.quote-edit-row select{flex:1;min-width:110px}.quote-edit-row .hint{margin:6px 0 0}.submittal-row.is-editing{background:var(--brand-100);border-left-color:var(--brand)}.submittal-row.is-editing .submittal-add{margin:0}.submittal-row.is-editing .submittal-add input{flex:1;min-width:110px}.submittal-row.is-editing .hint{margin:6px 0 0}.quote-supplier{font-weight:600}.quote-amount{text-align:right;white-space:nowrap;width:110px}.quote-amount.is-low{color:var(--green);font-weight:700}.quote-pending{color:var(--muted);font-style:italic;font-size:var(--fs-xs)}.quote-lead{color:var(--muted);white-space:nowrap}.quote-files{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.quote-row-actions{text-align:right;white-space:nowrap;width:110px}.quote-row-actions button{margin-left:4px}.equip-row{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);border-left:3px solid var(--border);align-items:flex-start;gap:12px;padding:10px 12px;display:flex}.equip-row.is-back{opacity:.65}.equip-row.is-out{border-left-color:var(--blue)}.equip-row.is-overdue{border-left-color:var(--red)}.equip-flag{background:var(--red);color:var(--on-accent);border-radius:var(--r-md);font-size:var(--fs-2xs);margin-left:6px;padding:1px 8px;font-weight:700;display:inline-block}.equip-back{font-size:var(--fs-2xs);color:var(--muted);margin-left:6px}.equip-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.equip-accrued{font-size:var(--fs-md);white-space:nowrap;font-weight:700}.mat-order-picked-up-by{width:160px;font-size:var(--fs-xs);border-radius:var(--r-sm);padding:3px 6px}.on-rent-banner{border:1px solid var(--border);border-left:3px solid var(--blue);border-radius:var(--r-md);background:var(--panel);margin:14px 0;padding:12px 14px}.on-rent-banner.has-overdue{border-left-color:var(--red)}.on-rent-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.on-rent-accrued{font-size:var(--fs-sm);color:var(--muted)}.on-rent-list{margin:8px 0 0;padding:0;list-style:none}.on-rent-list li{font-size:var(--fs-sm);align-items:baseline;gap:8px;padding:2px 0;display:flex}.on-rent-list li.is-overdue .on-rent-link{color:var(--red);font-weight:600}.on-rent-link{color:var(--text);font-size:var(--fs-sm);cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;text-decoration:underline}.on-rent-meta{color:var(--muted);font-size:var(--fs-xs)}.cost-table{margin:8px 0 4px}.cost-table .equip-flag{margin-left:6px}.inv-status{font-size:var(--fs-xs);margin:0;padding:4px 6px}.stale-server-banner{z-index:9999;border-radius:var(--r-md);background:var(--red);max-width:720px;color:var(--on-accent);font-size:var(--fs-md);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;line-height:1.5;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0000004d}.stale-server-banner button{font-size:var(--fs-sm);background:#fff3;border:1px solid #fff6;margin:0;padding:4px 10px}.cost-uncoded td:first-child{color:var(--muted);font-style:italic}.cost-uncoded{background:#00000008}.job-spent{border-top:1px dashed var(--border);font-size:var(--fs-xs);color:var(--muted);justify-content:space-between;align-items:baseline;margin-top:4px;padding-top:4px;display:flex}.job-spent strong{font-size:var(--fs-md);color:var(--text)}.job-summary-spend strong{color:var(--text)}.co-heading{font-size:var(--fs-md);border-top:1px solid var(--border);margin:16px 0 4px;padding-top:12px}.co-totals-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.co-totals{font-size:var(--fs-md);flex-wrap:wrap;gap:16px;margin:8px 0 10px;display:flex}.co-total-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);display:block}.co-total-current{font-weight:700;font-size:var(--fs-lg)}.co-total-pending{color:var(--muted);font-style:italic}.job-co-note{color:var(--muted)}.job-status-filter{flex-wrap:wrap;gap:6px;margin:10px 0 4px;display:flex}.job-status-chip{font-size:var(--fs-sm);cursor:pointer;color:var(--muted);border:1px solid var(--border);border-radius:var(--r-lg);background:0 0;margin:0;padding:4px 12px}.job-status-chip:hover{color:var(--text);border-color:var(--muted)}.job-status-chip.is-on{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.job-status-n{opacity:.75;margin-left:4px}.job-view-toggle{gap:6px;margin:10px 0 4px;display:flex}.job-view-btn{font-size:var(--fs-sm);cursor:pointer;color:var(--muted);border:1px solid var(--border);border-radius:var(--r-lg);background:0 0;margin:0;padding:4px 12px}.job-view-btn:hover{color:var(--text);border-color:var(--muted)}.job-view-btn.is-on{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.project-grid.is-list-view{grid-template-columns:1fr}.project-grid.is-list-view .project-card{cursor:pointer}.job-scope-tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.job-scope-tag{font-size:var(--fs-2xs);border:1px solid var(--border);border-radius:var(--r-md);color:var(--muted);padding:1px 8px;display:inline-block}.job-scope-bar{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;gap:4px;margin:0 0 14px;padding:10px 14px;display:flex}.job-scope-line{font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.job-scope-line .job-summary-label{min-width:96px;margin:0}.job-scope-line button{font-size:var(--fs-xs);margin:0;padding:4px 10px}.job-scope-notes{color:var(--muted);font-style:italic}.job-scope-editor{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);margin:-8px 0 14px;padding:12px 14px}.hub-tab-badge{border-radius:var(--r-md);background:var(--brand-100);min-width:18px;color:var(--brand);font-size:var(--fs-xs);text-align:center;margin-left:8px;padding:1px 6px;font-weight:700;display:inline-block}.hub-tab-badge.is-alert{background:var(--red);color:var(--on-accent)}.hub-tab.active .hub-tab-badge{color:var(--on-accent);background:#ffffff40}.ins-lead{font-size:var(--fs-sm);color:var(--muted);align-items:center;gap:6px;width:auto;margin:0;display:flex}.ins-lead input{width:62px;margin:0;padding:4px 8px}.jobs-side{max-height:var(--list-h);flex-direction:column;flex:0 0 290px;gap:14px;margin:14px 0;display:flex;position:sticky;top:0;overflow-y:auto}.jobs-layout .jobs-side .out-panel{flex:none;max-height:none;margin:0;position:static;overflow:visible}@media (width<=900px){.jobs-side{flex:auto;width:100%;max-height:none;position:static;overflow:visible}}.task-row{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);border-left:3px solid var(--border);flex-wrap:wrap;align-items:flex-start;gap:10px;padding:8px 12px;display:flex}.task-tick{width:auto;margin:0;padding-top:1px}.task-tick input{cursor:pointer;width:auto;margin:0}.task-main{flex:1;min-width:0}.task-text{font-size:var(--fs-md)}.task-meta{align-items:baseline;gap:8px;margin-top:2px;display:flex}.task-when{font-size:var(--fs-xs);color:var(--muted)}.task-actions{align-items:flex-start;gap:6px;display:flex}.task-actions button{margin:0}.task-edit-form{flex-basis:100%}.task-row.is-done{opacity:.55}.task-row.is-done .task-text{text-decoration:line-through}.task-row.is-soon{border-left-color:var(--warn)}.task-row.is-soon .task-when{color:var(--warn);font-weight:600}.task-row.is-overdue{border-left-color:var(--red)}.task-row.is-overdue .task-when{color:var(--red);font-weight:600}.task-share-box{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg);margin:4px 0 8px;padding:8px 10px}.task-share-list{flex-wrap:wrap;gap:4px 16px;display:flex}.task-share-item{font-size:var(--fs-sm);cursor:pointer;align-items:center;gap:6px;display:flex}.task-share-item input{cursor:pointer;width:auto;margin:0}.con-item .inv-item-title{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.con-role{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.04em;border-radius:var(--r-md);background:var(--brand-100);color:var(--brand);padding:1px 8px;font-weight:700}.con-reach{font-size:var(--fs-sm);flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-top:4px;display:flex}.con-reach a{word-break:break-all}.con-phone{align-items:baseline;gap:4px;display:inline-flex}.con-phone-kind{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}.con-ext{font-size:var(--fs-xs);color:var(--muted)}.con-unsorted{font-size:var(--fs-2xs);border-radius:var(--r-md);background:var(--warn-tint);color:var(--warn);cursor:help;padding:1px 8px;font-weight:600}.con-item .submittal-add input{min-width:90px}.con-edit-form{flex-basis:100%;margin-top:8px}.jobs-left{max-height:var(--list-h);flex-direction:column;flex:0 0 250px;gap:14px;margin:14px 0;display:flex;position:sticky;top:0;overflow-y:auto}.jobs-layout .jobs-left .out-panel{flex:none;max-height:none;margin:0;position:static;overflow:visible}@media (width<=900px){.jobs-left{flex:auto;width:100%;max-height:none;position:static;overflow:visible}}.order-panel-item{border-radius:var(--r-md);font-size:var(--fs-sm);background:var(--bg);border-left:3px solid #0000;padding:4px 8px}.order-panel-line{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.order-panel-who{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.order-panel-when{font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}.order-panel-what{font-size:var(--fs-xs);color:var(--muted);margin:1px 0 4px}.order-panel-item.is-slow{border-left-color:var(--warn)}.order-panel-item.is-slow .order-panel-when{color:var(--warn);font-weight:700}.order-panel-item.is-late{border-left-color:var(--red)}.order-panel-item.is-late .order-panel-when{color:var(--red);font-weight:700}.order-expected{font-size:var(--fs-2xs);border-radius:var(--r-md);background:var(--brand-100);color:var(--brand);padding:1px 8px;font-weight:600}.order-expected.is-late{background:var(--red-tint);color:var(--red)}.order-panel-got{font-size:var(--fs-xs);border-radius:var(--r-lg);border:1px dashed var(--border);color:var(--muted);cursor:pointer;background:0 0;margin:0;padding:2px 10px}.order-panel-got:hover{color:var(--brand);border-color:var(--brand)}.order-panel-got:disabled{opacity:.5;cursor:default}.task-panel{flex:0 0 250px}.task-panel-groups{flex-direction:column;gap:10px;margin-top:4px;display:flex}.task-panel-job{cursor:pointer;font-size:var(--fs-sm);color:var(--brand);text-align:left;background:0 0;border:none;align-items:baseline;gap:6px;width:100%;margin:0;padding:0;font-weight:700;display:flex}.task-panel-job:hover{text-decoration:underline}.task-panel-no{font-size:var(--fs-2xs);color:var(--muted);font-weight:600}.task-panel-list{flex-direction:column;gap:1px;margin:4px 0 0;padding:0;list-style:none;display:flex}.task-panel-item{font-size:var(--fs-sm);border-radius:var(--r-md);border-left:3px solid #0000;justify-content:space-between;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.task-panel-text{min-width:0}.task-panel-when{font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}.task-panel-item.is-soon{border-left-color:var(--warn)}.task-panel-item.is-soon .task-panel-when{color:var(--warn);font-weight:700}.task-panel-item.is-overdue{border-left-color:var(--red)}.task-panel-item.is-overdue .task-panel-when{color:var(--red);font-weight:700}.ins-panel{flex:0 0 250px}.ins-panel-list{flex-direction:column;gap:1px;margin:4px 0 8px;padding:0;list-style:none;display:flex}.ins-panel-row{border-radius:var(--r-md);font-size:var(--fs-sm);border-left:3px solid #0000;justify-content:space-between;align-items:baseline;gap:8px;padding:4px 8px;display:flex}.ins-panel-row.is-clickable{cursor:pointer}.ins-panel-row.is-clickable:hover{background:var(--brand-100)}.ins-panel-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ins-panel-state{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font-weight:700}.ins-panel-row.is-bad{border-left-color:var(--red)}.ins-panel-row.is-bad .ins-panel-state{color:var(--red)}.ins-panel-row.is-warn{border-left-color:var(--warn)}.ins-panel-row.is-warn .ins-panel-state{color:var(--warn)}.ins-panel-row.is-ok{border-left-color:var(--green)}.ins-panel-row.is-ok .ins-panel-state{color:var(--muted)}.ins-panel-warn{font-size:var(--fs-xs);color:var(--warn);margin:0 0 8px;font-weight:600}.ins-filter{margin:4px 0 2px}.ins-summary{margin:0 0 10px}.ins-summary .hint{margin:0}.ins-chip-btn.is-bad{color:var(--red);border-color:var(--red-tint)}.ins-chip-btn.is-warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 35%, transparent)}.ins-chip-btn.is-ok{color:var(--green);border-color:#2e7d324d}.ins-chip-btn.is-on,.ins-chip-btn.is-bad.is-on,.ins-chip-btn.is-warn.is-on,.ins-chip-btn.is-ok.is-on{background:var(--brand);border-color:var(--brand);color:var(--on-accent)}.ins-item.needs{border-left:3px solid var(--red)}.ins-item.is-retired{opacity:.55}.ins-covs{flex-wrap:wrap;gap:8px;margin:6px 0;display:flex}.ins-cov{font-size:var(--fs-sm);border-radius:var(--r-md);background:var(--bg);border-left:3px solid var(--border);align-items:baseline;gap:6px;padding:4px 10px;display:flex}.ins-cov-name{color:var(--muted);font-size:var(--fs-xs)}.ins-cov-when{font-size:var(--fs-xs)}.ins-cov.is-bad{border-left-color:var(--red);background:var(--red-tint)}.ins-cov.is-bad .ins-cov-when{color:var(--red);font-weight:600}.ins-cov.is-warn{border-left-color:var(--warn);background:var(--warn-tint)}.ins-cov.is-warn .ins-cov-when{color:var(--warn);font-weight:600}.ins-cov.is-ok{border-left-color:var(--green)}.ins-cov.is-ok .ins-cov-when{color:var(--muted)}.ins-w9{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.04em;border-radius:var(--r-md);background:var(--border);color:var(--muted);padding:1px 8px;font-weight:700}.ins-w9.is-ok{color:var(--green);background:#2e7d321f}.ins-w9.is-bad{background:var(--red-tint);color:var(--red)}.ins-edit-form{flex-basis:100%;margin-top:8px}.job-tabs{border-bottom:2px solid var(--border);flex-wrap:wrap;gap:4px;margin:14px 0 16px;padding-bottom:0;display:flex}.job-tab{color:var(--muted);border-radius:var(--r-md) var(--r-md) 0 0;font-size:var(--fs-md);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;align-items:center;gap:8px;margin:0 0 -2px;padding:8px 14px;font-weight:600;display:flex}.job-tab:hover{color:var(--text);background:var(--brand-100)}.job-tab.active{background:var(--panel);color:var(--brand);border-color:var(--border);border-bottom:2px solid var(--panel)}.job-tab-badge{border-radius:var(--r-md);background:var(--brand-100);min-width:18px;color:var(--brand);font-size:var(--fs-xs);text-align:center;padding:1px 6px;font-weight:700}.job-tab-badge.is-alert{background:var(--red);color:var(--on-accent)}.job-tab.active .job-tab-badge{background:var(--brand);color:var(--on-accent)}.job-tab.active .job-tab-badge.is-alert{background:var(--red)}.job-pane{margin-top:0}.order-sheet-bar{align-items:center;gap:12px;margin:10px 0 4px;display:flex}.order-sheet-bar button,.order-sheet-bar .hint{margin:0}.order-sheet{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);margin:8px 0 14px;padding:12px 14px}.order-sheet-head{flex-wrap:wrap;gap:12px;margin-bottom:10px;display:flex}.order-sheet-head .award-field{flex:1;min-width:150px}.order-sheet-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.order-sheet-table th{text-align:left;font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:4px 6px;font-weight:600}.order-sheet-table td{padding:4px}.order-sheet-table input{font-size:var(--fs-md);width:100%;margin:0;padding:6px 8px}.order-sheet-table td:nth-child(3){width:90px}.order-sheet-table td:nth-child(4){width:120px}.order-sheet-table td:last-child{width:30px}.order-sheet-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding-top:10px;display:flex}.order-sheet-actions .hint{flex:1;margin:0}.order-sheet-actions button{margin:0}.order-list{flex-direction:column;gap:10px;margin-top:8px;display:flex}.order-block{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);border-left:3px solid var(--brand-400);padding:10px 12px}.order-block.is-back{border-left-color:var(--green)}.order-block.is-cancelled{opacity:.55}.order-block-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.order-date{font-weight:700;font-size:var(--fs-md);margin-right:8px}.order-supplier{font-weight:600;font-size:var(--fs-md);color:var(--brand)}.order-from-inventory{color:var(--blue)}.pf-onhand{color:var(--muted);font-size:var(--fs-sm);white-space:nowrap}.order-line-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.order-line-table td{border-top:1px solid var(--border);padding:4px 6px}.order-line-mat{font-weight:600}.order-line-desc{color:var(--muted)}.order-line-qty{text-align:right;width:60px;font-weight:700}.order-line-unit{width:90px;color:var(--muted)}.mat-drops{font-size:var(--fs-2xs);color:var(--muted);display:block}.order-shipto{font-size:var(--fs-sm);color:var(--text);background:var(--brand-100);border-radius:var(--r-md);margin-bottom:10px;padding:6px 8px}.order-shipto-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:8px;font-weight:700}.order-invoices{border-top:1px dashed var(--border);flex-direction:column;align-items:flex-start;gap:4px;margin-top:8px;padding-top:8px;display:flex}.order-invoice{font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.order-invoice-no{font-weight:600}button.order-invoice-no{color:var(--brand);font-size:var(--fs-sm)}button.order-invoice-no:hover{color:var(--text)}.equip-row.is-just-changed,.order-block.is-just-changed{box-shadow:inset 3px 0 0 var(--brand);background:var(--brand-100);transition:background .4s}.order-invoice-total{font-size:var(--fs-xs);color:var(--muted)}.person-pin-host{z-index:500;background:#00000059;justify-content:center;align-items:flex-start;padding-top:18vh;display:flex;position:fixed;inset:0}.person-pin-host .ask-form{background:var(--panel,var(--bg));min-width:260px;box-shadow:0 8px 30px #0000004d}.ask-form{border:1px solid var(--border);border-left:3px solid var(--brand);border-radius:var(--r-md);background:var(--bg);margin:8px 0 2px;padding:10px 12px}.ask-form-title{font-size:var(--fs-md);margin:0 0 4px}.ask-form-hint{margin:0 0 8px}.ask-form-fields{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.ask-field,.ask-field input,.ask-field select{margin:0}.ask-field-wide{flex:100%}.ask-field-wide textarea{width:100%;margin:0;font-family:inherit}.ask-form-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.ask-form-actions button{margin:0}.order-inv-form{border:1px solid var(--border);border-left:3px solid var(--brand);border-radius:var(--r-md);background:var(--bg);margin:8px 0 2px;padding:10px 12px}.order-inv-fields{align-items:flex-end}.order-inv-fields .award-field{margin:0}.order-inv-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.order-inv-actions button,.order-invoices button{margin:0}.job-details-editor{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);margin:-4px 0 14px;padding:12px 14px}.job-details-editor .award-field{flex:1;min-width:150px}.job-details-editor .jd-address{flex:2 260px}.job-details-editor .submittal-add{align-items:flex-end}.job-scope-picker{flex-wrap:wrap;gap:4px 14px;margin:6px 0 10px;display:flex}.job-scope-check{font-size:var(--fs-sm);align-items:center;gap:4px;width:auto;margin:0;display:flex}.job-scope-check input{width:auto;margin:0}.job-scope-add{background:var(--bg);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;padding:8px 10px;display:flex}.job-scope-add input[type=text]{flex:220px;margin:0}.scope-growth-bar{border:1px solid var(--blue);border-left:3px solid var(--blue);border-radius:var(--r-md);font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:12px;margin:8px 0 10px;padding:10px 14px;display:flex}.scope-growth-bar button{font-size:var(--fs-sm);margin:0;padding:4px 12px}.rp-item-row-editing{outline:2px solid var(--blue);outline-offset:-2px;background:#2160c40f}.job-clear-filter{font-size:var(--fs-xs);margin:0 0 0 6px;padding:4px 10px}.sov-table{font-size:var(--fs-xs);margin:8px 0 4px}.sov-table td,.sov-table th{padding:4px 8px}.sov-desc{min-width:200px}.sov-in{width:88px;font-size:var(--fs-xs);text-align:right;margin:0;padding:4px}.sov-pct{width:56px}.sov-recon{border-radius:var(--r-md);font-size:var(--fs-sm);margin:8px 0;padding:8px 12px}.sov-recon.is-ok{border:1px solid var(--border);color:var(--muted)}.sov-recon.is-off{border:1px solid var(--red);border-left:3px solid var(--red)}.sov-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:6px;display:flex}.sov-actions button{margin:0}.rp-optional{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-left:4px}.dash-code-table tr.is-done{opacity:.6}.mat-in{width:74px}.mat-pct{width:52px}.award-dialog{background:var(--panel);color:var(--fg);border:1px solid var(--border);border-radius:var(--r-md);width:calc(100% - 40px);max-width:620px;padding:16px 20px;box-shadow:0 12px 40px #00000059}.award-dialog::backdrop{background:#00000073}.award-dialog h3{font-size:var(--fs-lg);margin:0 0 6px}.award-dialog .hint{margin:0 0 10px}.award-label{font-size:var(--fs-sm);margin-top:12px;font-weight:600;display:block}.award-wide{width:100%;font-size:var(--fs-md);margin:0 0 4px;padding:8px}.award-row{flex-wrap:wrap;gap:12px;margin:12px 0 2px;display:flex}.award-row label,.award-field{font-size:var(--fs-sm);color:var(--muted);flex-direction:column;gap:4px;display:flex}.award-row input,.award-field input{font-size:var(--fs-md);color:var(--fg);margin:0;padding:8px}.award-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;display:flex}.award-actions button{margin:0}.pw-signin-log{font-size:var(--fs-sm);color:var(--muted);margin:4px 0 10px}.pw-signin-log summary{cursor:pointer;color:var(--fg)}.pw-signin-log .hint{margin:8px 0 0}.pw-log-table{border-collapse:collapse;width:100%;font-size:var(--fs-xs);margin-top:8px}.pw-log-table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:3px 8px 3px 0}.inv-add-bar{margin:10px 0}.inv-new-form{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);margin-top:8px;padding:14px 16px}.inv-qty-row{flex-wrap:wrap;gap:12px;margin:4px 0 8px;display:flex}.inv-qty-row label{font-size:var(--fs-sm);color:var(--muted);flex-direction:column;gap:4px;display:flex}.inv-qty-row input,.inv-qty-row select{font-size:var(--fs-md);margin:0;padding:8px}.inv-qty-row input{width:130px}.inv-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.inv-item{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 14px}.inv-item.is-out{opacity:.65}.inv-item-main{align-items:flex-start;gap:14px;display:flex}.inv-photo{flex-shrink:0;position:relative}.inv-photo-box{border:1px dashed var(--border);border-radius:var(--r-sm);background:var(--bg);cursor:pointer;justify-content:center;align-items:center;width:112px;height:112px;margin:0;padding:0;display:flex;overflow:hidden}.inv-photo-box:hover{border-color:var(--muted)}.inv-photo-box img{object-fit:cover;width:100%;height:100%;display:block}.inv-photo-icon{color:var(--muted);font-size:40px;line-height:1}.inv-photo-plus{font-size:48px;font-weight:300}.inv-photo-remove{width:24px;height:24px;line-height:1;font-size:var(--fs-sm);border-radius:var(--r-pill);border:1px solid var(--border);background:var(--panel);color:var(--muted);margin:0;padding:0;position:absolute;top:-6px;right:-6px}.inv-photo-remove:hover{color:var(--red);border-color:var(--red)}.inv-item-id{flex:1;min-width:0}.inv-item-name{font-weight:700;font-size:var(--fs-md)}.inv-item-sub{font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.inv-item-note{font-size:var(--fs-xs);color:var(--muted);margin-top:4px;font-style:italic}.inv-where{border:1px solid var(--border);border-radius:var(--r-sm);padding:1px 6px}.inv-cond{color:var(--red)}.inv-item-qty{text-align:right;flex-shrink:0;min-width:96px}.inv-item-qty strong{font-size:var(--fs-xl);line-height:1.1;display:block}.inv-unit{font-size:var(--fs-xs);color:var(--muted)}.inv-flag{font-size:var(--fs-2xs);color:var(--red);margin-top:2px;display:block}.inv-flag-bad{max-width:150px}.inv-item-actions{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.inv-item-actions button{font-size:var(--fs-xs);margin:0;padding:4px 10px}.inv-move-form{margin-top:8px}.inv-history{margin-top:10px}.inv-history th,.inv-history td{text-align:left}.inv-history th.num,.inv-history td.num{text-align:right}.inv-history td button{font-size:var(--fs-xs);margin:0;padding:2px 8px}.inv-cats{margin-bottom:2px}.inv-group{margin-bottom:4px}.inv-group-head{border-bottom:1px solid var(--border);align-items:baseline;gap:8px;margin-bottom:6px;padding-bottom:4px;display:flex}.inv-group-head h4{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--fg);margin:0}.inv-group-count{font-size:var(--fs-xs);color:var(--muted)}.inv-edit-form{margin-top:8px}.inv-edit-form .inv-new-form{margin-top:0}.jobs-layout{align-items:flex-start;gap:16px;display:flex}.jobs-layout .jobs-main{flex:1;min-width:0}.jobs-layout .project-grid{min-width:0}.jobs-main .inv-add-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.jobs-main .inv-add-bar .hint{margin:0}.out-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);flex:0 0 290px;max-height:calc(100vh - 60px);margin:14px 0;padding:12px 14px;position:sticky;top:0;overflow-y:auto}@media (width<=900px){.jobs-layout{flex-direction:column}.out-panel{flex:auto;width:100%;max-height:none;position:static}}.out-panel-head{flex-direction:column;gap:2px;margin-bottom:6px;display:flex}.out-panel-head h3{font-size:var(--fs-md);margin:0}.out-panel-count{font-size:var(--fs-xs);color:var(--muted)}.out-panel-kinds{font-size:var(--fs-xs);color:var(--muted);margin:0 0 6px}.out-panel-alert{font-size:var(--fs-xs);color:var(--red);margin:0 0 8px;font-weight:600}.out-job{border-top:2px solid var(--border);margin-top:10px;padding-top:10px}.out-job:first-child{border-top:none;margin-top:0;padding-top:0}.out-job-name{color:var(--blue);font-size:var(--fs-sm);cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;font-weight:700}.out-job-name:hover{text-decoration:underline}.out-job-meta{font-size:var(--fs-2xs);color:var(--muted);display:block}.out-items{margin:4px 0 0;padding:0;list-style:none}.out-items li{font-size:var(--fs-xs);padding:4px 0}.out-kind{font-size:var(--fs-2xs);color:var(--muted);border:1px solid var(--border);border-radius:var(--r-sm);margin-right:4px;padding:0 4px;display:inline-block}.out-desc{color:var(--fg)}.out-items li.is-overdue .out-desc{color:var(--red);font-weight:600}.out-meta{color:var(--muted);font-size:var(--fs-2xs);margin-top:1px;display:block}.welcome-inner{--list-h:max(280px, calc(100vh - 330px))}.list-scroll{max-height:var(--list-h);overscroll-behavior:contain;min-height:200px;padding-right:4px;overflow-y:auto}.project-grid.list-scroll{margin-bottom:4px}.hub-sticky{z-index:4;background:var(--bg);padding-top:4px;position:sticky;top:0}.list-scroll .inv-group-head{z-index:2;background:var(--bg);position:sticky;top:0}.jobs-layout .out-panel{max-height:var(--list-h);margin-top:0}@media (width<=900px){.jobs-layout .out-panel{max-height:var(--list-h)}}@media (height<=620px){.welcome-inner{--list-h:none}.list-scroll{max-height:none;overflow-y:visible}.hub-sticky{position:static}}.scope-dates{flex-direction:column;gap:2px;margin:4px 0 0;display:flex}.scope-date-row{font-size:var(--fs-xs);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.scope-date-when{color:var(--fg)}.scope-date-editor{flex-direction:column;gap:6px;margin:8px 0;display:flex}.scope-date-edit{border:1px solid var(--border);border-radius:var(--r-md);flex-wrap:wrap;align-items:flex-end;gap:8px;padding:6px 8px;display:flex}.scope-date-edit .job-scope-tag{align-self:center;min-width:92px}.scope-date-edit input{font-size:var(--fs-sm);margin:0;padding:6px 8px}.scope-date-edit .sdNote{flex:1;min-width:140px}.card-scope-dates{font-size:var(--fs-2xs);color:var(--muted);flex-direction:column;gap:1px;margin-top:4px;display:flex}.card-scope-dates strong{color:var(--fg);font-weight:600}.btn-warn{border-color:var(--red);color:var(--red)}.btn-warn:hover{background:var(--red);color:var(--on-accent)}.sup-contact{min-width:210px;font-size:var(--fs-xs);text-align:right;flex-direction:column;flex-shrink:0;gap:2px;display:flex}.sup-contact a{color:var(--link);word-break:break-all;text-decoration:none}.sup-contact a:hover{text-decoration:underline}.sup-brands{color:var(--muted);font-style:italic}.sup-edit-form{margin-top:8px}.sup-edit-form .inv-new-form{margin-top:0}@media (width<=760px){.sup-contact{text-align:left;min-width:0}.inv-item.sup-item .inv-item-main{flex-wrap:wrap}}.sup-bulk-bar{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0;padding:8px 12px;display:flex}.sup-bulk-bar button{font-size:var(--fs-sm);margin:0;padding:4px 12px}.sup-bulk-count{font-size:var(--fs-sm);color:var(--muted)}.sup-pick{flex-shrink:0;align-items:center;padding-top:2px;display:flex}.sup-pick input{width:auto;margin:0}.sup-pick input:disabled{opacity:.35}.mail-list{font-family:monospace;font-size:var(--fs-sm);resize:vertical;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px}.welcome-inner.hide-tools .welcome-actions,.welcome-inner.hide-tools .storage-panel{display:none!important}.sub-line{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.sub-pill{font-size:var(--fs-2xs);border-radius:var(--r-md);border:1px solid var(--border);color:var(--muted);white-space:nowrap;padding:1px 6px}.sub-blocked{border-color:var(--red);color:var(--red);font-weight:600}.sub-waiting{border-color:var(--brand-400);color:var(--brand)}.sub-ok{border-color:var(--status-measured);color:var(--status-measured)}.submittal-row.is-just-changed{box-shadow:inset 3px 0 0 var(--brand);background:var(--brand-100);transition:background .4s}.meet-line{font-size:var(--fs-xs);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:4px;display:flex}.meet-when{color:var(--muted)}.meet-line.is-soon .meet-when{color:var(--brand);border:1px solid var(--brand-400);border-radius:var(--r-md);background:var(--brand-100);padding:1px 6px;font-weight:600}.meet-time{color:var(--fg)}.meet-where{color:var(--muted);font-style:italic}.job-meeting-editor{margin:4px 0 2px}.meet-next{color:var(--muted);margin-left:4px}.meet-next.is-soon{color:var(--brand);font-weight:600}.crew-line{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.crew-pill{font-size:var(--fs-2xs);border-radius:var(--r-md);border:1px solid var(--border);color:var(--fg);white-space:nowrap;padding:1px 6px}.crew-scope{color:var(--muted);margin-right:4px}.quote-rank{font-size:var(--fs-2xs);border:1px solid var(--border);border-radius:var(--r-md);color:var(--muted);margin-left:6px;padding:0 4px}.quote-rank.is-cheapest{border-color:var(--status-measured);color:var(--status-measured)}.quote-rank.is-dearest{border-color:var(--status-partial);color:var(--status-partial)}.quote-over{font-size:var(--fs-2xs);color:var(--muted);font-weight:400;display:block}.quote-spread{color:var(--muted)}.quote-note{font-size:var(--fs-xs);color:var(--muted);margin-top:2px;font-style:italic}.quote-material{font-size:var(--fs-2xs);border-radius:var(--r-md);border:1px solid var(--brand-400);color:var(--brand);background:var(--brand-100);margin-right:6px;padding:1px 8px;display:inline-block}.report-screen{padding:24px 24px 60px;overflow-y:auto}.report-inner{width:100%;max-width:1100px;margin:0 auto}.rep-toolbar{align-items:center;gap:10px;margin-bottom:14px;display:flex}.rep-toolbar .hint{margin:0}.rep-head{border-bottom:2px solid var(--text);margin-bottom:16px;padding-bottom:8px}.rep-head h1{font-size:var(--fs-xl);margin:0}.rep-sub{color:var(--muted);font-size:var(--fs-md)}.rep-date{color:var(--muted);font-size:var(--fs-sm);margin-top:2px}.rep-cards{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.rep-card{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);flex:1;min-width:150px;padding:10px 12px}.rep-card-label{font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;display:block}.rep-card strong{font-size:var(--fs-xl);margin:2px 0;display:block}.rep-card-hint{font-size:var(--fs-xs);color:var(--muted);display:block}.rep-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);margin-bottom:16px}.rep-table th,.rep-table td{border-bottom:1px solid var(--border);text-align:left;padding:4px 8px}.rep-table thead th{background:var(--bg);font-weight:600}.rep-table tfoot td{border-top:2px solid var(--text);font-weight:600}.rep-table .r{text-align:right;font-variant-numeric:tabular-nums}.rep-num{font-size:var(--fs-2xs);color:var(--muted);display:block}.rep-closed,.rep-unit{color:var(--muted)}.rep-alerts .rep-alert-n{font-weight:700;font-size:var(--fs-lg);text-align:right;width:44px}.rep-clear{font-size:var(--fs-md);border-left:3px solid var(--green);background:var(--green-tint);padding:8px 10px}.rep-two{flex-wrap:wrap;gap:24px;display:flex}.rep-foot{font-size:var(--fs-xs);color:var(--muted);border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.report-screen h2{font-size:var(--fs-lg);margin:20px 0 6px}.report-screen h3{font-size:var(--fs-sm);color:var(--muted);text-transform:uppercase;margin:12px 0 4px}@media print{.no-print,.app-header,.stale-server-banner{display:none!important}:root,[data-theme=dark]{--bg:#fff;--panel:#fff;--text:#000;--fg:#000;--muted:#444;--border:#999;--green:#1b5e20;--green-tint:#eef5ee;--red:#a11;--brand:#000;--link:#000;--link-hover:#000}body{color:#000;background:#fff}#app,#screen-root,.screen,.report-screen{height:auto!important;display:block!important;overflow:visible!important}.report-screen{padding:0}.report-inner{max-width:none}.rep-card{break-inside:avoid}.rep-table{break-inside:auto}.rep-table thead{display:table-header-group}.rep-table tr{break-inside:avoid}h2{break-after:avoid}a{color:var(--link);text-decoration:none}@page{margin:12mm}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-theme=dark]{--brand:#6c8ade;--brand-600:#4a68bd;--brand-400:#7f99e4;--brand-100:#24304f;--red:#e8674f;--red-tint:#e8674f1f;--green:#6cc46c;--green-tint:#6cc46c24;--warn:#e6a94a;--warn-strong:#f0b95e;--warn-tint:#e6a94a24;--blue:#6f9bec;--link:var(--brand-400);--link-hover:#a3b6ee;--bg:#14171f;--panel:#1c2029;--border:#303845;--text:#e6e9ef;--muted:#98a2b3;--qe-chrome:#1c2029;--qe-chrome-border:#303845;--qe-btn-hover:#262c38;--qe-btn-active-bg:#24304f;--qe-btn-active-border:var(--brand);--qe-titlebar:#1b2745;--status-measured:#4cc472;--status-partial:#e6b93c;--status-empty:#495260}.app-logo-dark,[data-theme=dark] .app-logo-light{display:none}[data-theme=dark] .app-logo-dark{display:block}[data-theme=dark] .app-header h1{color:var(--brand-400)}[data-theme=dark] .lock-logo.app-logo-light,.lock-logo.app-logo-dark{display:none}[data-theme=dark] .lock-logo.app-logo-dark{display:block}.workspace-resizer:after{content:"";position:absolute;inset:0 -3px}input[type=range]{accent-color:var(--brand)}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert()opacity(.7)}[data-theme=dark] input[type=search]::-webkit-search-cancel-button{filter:invert()opacity(.7)}:where(button,input,select,textarea,a,summary,[tabindex]):focus-visible{outline:2px solid var(--brand-400);outline-offset:1px;z-index:1;position:relative}.project-card-address{font-size:var(--fs-sm);color:var(--text);margin-top:2px;line-height:1.35}.hub-action{font-size:var(--fs-sm);color:var(--muted);border:1px solid var(--border);border-radius:var(--r-md);background:0 0;align-self:center;margin:0 0 4px auto;padding:4px 14px;font-weight:600}.hub-action:hover{background:var(--qe-btn-hover);color:var(--text)}.submittal-actions select,.submittal-actions>button{font-size:var(--fs-xs);margin:0;padding:4px 8px}.inv-move-form .submittal-add input[type=number]{width:100px}.inv-move-form .submittal-add input[type=text]{flex:1;min-width:130px}.inv-group+.inv-group{margin-top:14px}.out-items li+li{border-top:1px dotted var(--border)}.list-scroll:after{content:"";height:1px;display:block}.rep-two>div{flex:1;min-width:240px}@media print{:root,[data-theme=dark]{--bg:#fff;--panel:#fff;--text:#000;--fg:#000;--muted:#444;--border:#999;--green:#1b5e20;--green-tint:#eef5ee;--red:#a11;--brand:#000;--link:#000;--link-hover:#000}}.ws-screen{padding:20px 22px 60px;overflow-y:auto}.ws-inner{width:100%;max-width:1400px;margin:0 auto}.ws-won{color:var(--green);font-weight:600}.ws-timeline{gap:8px;padding:4px 0 10px;display:flex;overflow-x:auto}.ws-rev{text-align:left;background:var(--panel);min-width:150px;color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;flex:none;padding:7px 10px}.ws-rev:hover{border-color:var(--brand);background:var(--panel)}.ws-rev.is-on{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.ws-rev.is-won{border-left:3px solid var(--green)}.ws-rev-date{color:var(--muted);font-size:11px;display:block}.ws-rev-label{font-size:12px;font-weight:600;display:block}.ws-rev-total{font-variant-numeric:tabular-nums;font-size:13px;display:block}.ws-rev-warn{color:var(--red);font-size:10px;display:block}.ws-revhead{flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0;display:flex}.ws-revhead .wsLabel{flex:1;min-width:180px}.ws-revhead .wsNote{flex:2;min-width:200px}.bill-settings{flex-wrap:wrap;align-items:center;gap:14px;margin:0 0 12px;font-size:13px;display:flex}.bill-settings label{align-items:center;gap:5px;display:flex}.bill-settings input[type=text]{width:60px}.bill-draft{border:1px solid var(--border);background:var(--panel);border-radius:6px;margin-bottom:16px;padding:12px 14px}.bill-draft-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.bill-draft-head strong{margin-right:6px}.bill-table{border-collapse:collapse;width:100%;font-size:13px}.bill-table td{padding:3px 4px}.bill-table td.r{text-align:right;white-space:nowrap}.bill-table td.bill-sub{color:var(--muted);padding-left:22px}.bill-table tr.bill-rule td{border-top:1px solid var(--border);font-weight:600}.bill-table tr.bill-due td{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px 4px;font-size:14px}.bill-row .bill-amount{margin-left:auto;font-weight:600}.bill-row .bill-status{font-size:12px}.bill-header{flex-basis:100%;margin-top:6px}.bill-header summary{cursor:pointer;font-size:12px;font-weight:600}.bill-header-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px 14px;margin-top:8px;display:grid}.bill-header-grid label{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.bill-header-grid input{width:100%}.bill-from-job{background:var(--bg);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;gap:26px;margin:8px 0 10px;padding:8px 11px;font-size:12px;display:flex}.bill-from-job .lab{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);flex-basis:100%;font-size:10px}.bill-waiver{border-top:1px solid var(--border);flex-basis:100%;margin-top:10px;padding-top:10px}.bill-waiver .hint{margin:3px 0 6px}.bill-panel-list{margin:0}.bill-panel-item{flex-wrap:wrap;align-items:baseline;gap:8px;padding:3px 0;display:flex}.bill-panel-when{color:var(--brand);font-size:11px;font-weight:600}.bill-panel-item.is-overdue .bill-panel-when{color:var(--red)}.bill-panel-date{color:var(--muted);font-size:10px}.sc-group{border:1px solid var(--border);background:var(--panel);border-radius:10px;margin-bottom:12px;overflow:hidden}.sc-group.is-flagged{border-color:var(--red)}.sc-group-head{background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 14px;display:flex}.sc-group-name{font-size:14px;font-weight:650}.sc-group-meta{color:var(--muted);align-items:baseline;gap:10px;font-size:12px;display:flex}.sc-group-due{color:var(--brand);font-weight:650}.sc-group-flag{text-transform:uppercase;letter-spacing:.04em;color:var(--red);border:1px solid var(--red);border-radius:9px;padding:0 6px;font-size:10px}.sc-item+.sc-item{border-top:1px solid var(--border)}.sc-summary{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:0;grid-template-columns:14px minmax(0,1fr) 110px 38px 130px;align-items:center;gap:10px;margin:0;padding:10px 14px;display:grid}.sc-summary:hover{background:var(--brand-100)}.sc-summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.sc-caret{border-left:5px solid var(--muted);border-top:4px solid #0000;border-bottom:4px solid #0000;justify-self:center;width:0;height:0;transition:transform .12s}.sc-item.is-open .sc-caret{transform:rotate(90deg)translate(-1px)}.sc-where{align-items:baseline;gap:8px;min-width:0;display:flex}.sc-job{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.sc-scope{color:var(--muted);white-space:nowrap;font-size:11px}.sc-report-flag{text-transform:uppercase;letter-spacing:.04em;color:var(--warn);border:1px solid var(--warn);border-radius:9px;padding:0 6px;font-size:10px}.sc-report-status{margin:8px 0 0}.sc-report-due-flag{color:var(--warn);margin-left:6px;font-weight:650}.sc-report-auto-warn{color:var(--warn);margin:8px 0 0}.sc-bar{background:var(--border);border-radius:3px;height:6px;overflow:hidden}.sc-bar>span{background:var(--brand);border-radius:3px;height:100%;display:block}.sc-item.is-uninsured .sc-bar>span{background:var(--red)}.sc-pct{color:var(--muted);text-align:right;font-size:11px}.sc-state{color:var(--muted);text-align:right;font-size:12px}.sc-state.is-due{color:var(--brand);font-weight:650}.sc-state.is-over{color:var(--red);font-weight:650}.sc-state.is-done{color:var(--green)}.sc-item.is-open{background:var(--bg)}.sc-body{padding:4px 14px 14px 38px}.sc-warn{color:var(--red);background:var(--red-tint);border:1px solid var(--red);border-radius:6px;margin:0 0 10px;padding:7px 10px;font-size:12px;font-weight:600}.sc-money{background:var(--border);border:1px solid var(--border);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:1px;margin:0 0 12px;display:grid;overflow:hidden}.sc-money>div{background:var(--panel);padding:7px 10px}.sc-money dt{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 2px;font-size:10px}.sc-money dd{font-variant-numeric:tabular-nums;margin:0;font-size:14px}.sc-money-key{background:var(--brand-100)!important}.sc-money-key dt{color:var(--brand)}.sc-money-key dd{color:var(--brand);font-weight:700}.sc-over-note{margin:-6px 0 12px}.sc-do{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;display:flex}.sc-slider{color:var(--muted);flex:240px;align-items:center;gap:9px;font-size:12px;display:flex}.sc-slider input[type=range]{flex:auto;min-width:120px}.sc-pct-out{text-align:right;min-width:38px;color:var(--text);font-variant-numeric:tabular-nums;font-weight:650}.sc-do-buttons{flex-wrap:wrap;gap:8px;display:flex}.sc-do-buttons button[disabled]{opacity:.45;cursor:not-allowed}.sc-inline{background:var(--panel);border:1px solid var(--brand);border-radius:8px;max-height:min(52vh,440px);margin:0 0 12px;padding:12px 14px;overflow-y:auto}.sc-inline h4{margin:0 0 6px;font-size:13px}.sc-inline-fields{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:8px 0;display:grid}.sc-inline-fields label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.sc-inline-fields label.wide{grid-column:1/-1}.sc-inline-fields input,.sc-inline-fields select{width:100%;margin:0}.sc-inline-sum{color:var(--muted);min-height:1.2em;margin:6px 0 0;font-size:12px}.sc-inline-buttons{background:var(--panel);gap:8px;margin-top:10px;padding:8px 0 2px;display:flex;position:sticky;bottom:0;box-shadow:0 -6px 6px -6px #00000040}.sc-dialog{background:var(--panel);color:var(--fg);border:1px solid var(--brand);border-radius:var(--r-md);width:calc(100% - 40px);max-width:600px;max-height:calc(100vh - 80px);padding:16px 20px;overflow-y:auto;box-shadow:0 12px 40px #00000059}.sc-dialog::backdrop{background:#00000073}.sc-dialog h4{font-size:var(--fs-lg);margin:0 0 8px}.sc-dialog .sc-inline-fields{margin-top:10px}.sc-way{gap:8px;margin-top:4px;display:flex}.sc-way-btn{text-align:left;cursor:pointer;color:var(--muted);border:1px solid var(--border);background:0 0;border-radius:6px;flex-direction:column;flex:1 1 0;gap:1px;margin:0;padding:7px 10px;font-size:12px;display:flex}.sc-way-btn small{opacity:.8;font-size:10px}.sc-way-btn:hover{border-color:var(--muted);color:var(--text)}.sc-way-btn.active{background:var(--brand-100);border-color:var(--brand);color:var(--brand);font-weight:650}.sc-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;margin-bottom:8px;display:flex}.sc-tab{cursor:pointer;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;margin:0;padding:6px 11px;font-size:12px}.sc-tab:hover{color:var(--text)}.sc-tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:650}.sc-tab-n{opacity:.7}.sc-section{min-height:40px}.sc-table{border-collapse:collapse;width:100%;font-size:12px}.sc-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--border);font-size:10px}.sc-table td,.sc-table th{padding:4px 6px}.sc-table tfoot th{border-top:1px solid var(--border);text-transform:none;color:var(--text);border-bottom:0;font-size:11px}.sc-table .r{text-align:right;font-variant-numeric:tabular-nums}.sc-minus{color:var(--red)}.sc-contact{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:0;display:grid}.sc-contact dt{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:10px}.sc-contact dd{margin:2px 0 0;font-size:13px}.row-x{color:var(--muted);cursor:pointer;background:0 0;border:0;margin:0;padding:0 5px;font-size:13px;line-height:1.4}.row-x:hover{color:var(--red)}.sc-foot{border-top:1px solid var(--border);gap:14px;margin-top:12px;padding-top:9px;display:flex}.link-btn{cursor:pointer;color:var(--muted);background:0 0;border:0;margin:0;padding:0;font-size:12px;text-decoration:underline}.link-btn:hover{color:var(--text)}.link-btn.danger:hover{color:var(--red)}@media (width<=720px){.sc-summary{grid-template-columns:14px minmax(0,1fr) 110px}.sc-bar,.sc-pct{display:none}.sc-body{padding-left:14px}}.bill-due-note{color:var(--muted);font-size:12px}.bill-due-note.is-soon{color:var(--brand);font-weight:600}.bill-due-note.is-overdue,.meet-next.is-overdue{color:var(--red);font-weight:600}.bill-row-files{flex-wrap:wrap;flex-basis:100%;gap:5px;margin-top:5px;display:flex}.bill-sent{border:1px solid var(--status-measured);color:var(--status-measured);border-radius:9px;margin-left:8px;padding:1px 7px;font-size:10px}.bill-timeline-wrap{border:1px solid var(--border);background:var(--panel);border-radius:8px;margin-bottom:18px;padding:14px 16px}.bill-timeline-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.bill-timeline-head h3{margin:0}.bill-timeline-filters{flex-wrap:wrap;gap:6px;display:flex}.bill-timeline-filter-btn{border:1px solid var(--border);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:14px;padding:3px 11px;font-size:11px;font-weight:600}.bill-timeline-filter-btn:hover{color:var(--text);border-color:var(--brand)}.bill-timeline-filter-btn.is-active{background:var(--brand);border-color:var(--brand);color:var(--on-accent,#fff)}.bill-timeline{flex-direction:column;gap:2px;max-height:520px;margin-top:10px;display:flex;overflow-y:auto}.bill-timeline-item{cursor:pointer;border-radius:6px;align-items:flex-start;gap:10px;padding:8px 8px 8px 4px;display:flex}.bill-timeline-item:hover,.bill-timeline-item:focus-visible{background:var(--bg);outline:none}.bill-timeline-item+.bill-timeline-item{border-top:1px solid var(--border)}.bill-timeline-dot{background:var(--muted);border-radius:50%;flex:none;width:9px;height:9px;margin-top:6px}.bill-timeline-invoice .bill-timeline-dot{background:var(--blue)}.bill-timeline-order .bill-timeline-dot{background:var(--warn)}.bill-timeline-application .bill-timeline-dot{background:var(--green)}.bill-timeline-change_order .bill-timeline-dot{background:var(--brand)}.bill-timeline-body{flex:auto;min-width:0}.bill-timeline-row1{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.bill-timeline-kind{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:10px;font-weight:700}.bill-timeline-title{font-weight:600}.bill-timeline-amount{white-space:nowrap;margin-left:auto;font-weight:700}.bill-timeline-amount.is-in{color:var(--green)}.bill-timeline-amount.is-out{color:var(--text)}.bill-timeline-row2{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:2px;font-size:11px;display:flex}.bill-timeline-status{border:1px solid var(--border);border-radius:9px;padding:0 7px}.bill-timeline-flag{color:var(--red);font-weight:600}.mail-warning{background:var(--brand-100);border:1px solid var(--brand-400);border-radius:6px;max-width:640px;margin:10px 0;padding:9px 12px;font-size:12px;line-height:1.5}.mail-warning code{font-size:11px}.ws-readonly{background:var(--red-tint);border:1px solid var(--red);color:var(--text);border-radius:6px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;padding:9px 12px;font-size:13px;display:flex}.ws-readonly button{flex:none}.ws-totals{background:var(--bg);border-radius:4px;flex-wrap:wrap;gap:18px;margin-bottom:10px;padding:8px 10px;font-size:13px;display:flex}.ws-totals strong{font-size:15px}.ws-warn{color:var(--red)}.ws-table{border-collapse:collapse;width:100%;font-size:12px}.ws-table th,.ws-table td{border-bottom:1px solid var(--border);text-align:left;padding:3px 5px}.ws-table th{color:var(--muted);font-size:11px;font-weight:600}.ws-table .r,.ws-table td.r{text-align:right}.ws-table input,.ws-table select{width:100%;padding:2px 4px;font-size:12px}.ws-table input.r{text-align:right;font-variant-numeric:tabular-nums}.ws-table .wsLoc{margin-top:2px}.ws-total{font-variant-numeric:tabular-nums;white-space:nowrap}.ws-unpriced{color:var(--red);font-size:11px}.ws-credit{font-variant-numeric:tabular-nums}.ws-actions{align-items:center;gap:8px;margin:8px 0 18px;display:flex}.ws-added td{background:var(--green-tint)}.ws-removed td{color:var(--muted);text-decoration:line-through}.ws-dialog{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:6px;width:90vw;max-width:900px;padding:16px}.ws-dialog::backdrop{background:#00000073}.guide{border:1px solid var(--border);border-left:3px solid var(--brand);background:var(--panel);border-radius:4px;margin:10px 0 14px}.guide>summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:8px;padding:9px 12px;list-style:none;display:flex}.guide>summary::-webkit-details-marker{display:none}.guide-q{background:var(--brand);width:17px;height:17px;color:var(--on-accent);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.guide-title{font-size:13px;font-weight:600}.guide-sub{color:var(--muted);font-size:12px}.guide[open]>summary{border-bottom:1px solid var(--border)}.guide-body{padding:12px;font-size:13px}.guide-lead{margin:0 0 12px}.guide-cols{flex-wrap:wrap;gap:26px;display:flex}.guide-cols>div{flex:1;min-width:260px}.guide-cols h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-size:11px}.guide-cols ol{margin:0;padding-left:18px}.guide-cols li{margin-bottom:6px}.guide code{background:var(--bg);border-radius:3px;padding:1px 4px;font-size:12px}.guide-table{border-collapse:collapse;width:100%;font-size:12px}.guide-table th,.guide-table td{border-bottom:1px solid var(--border);text-align:left;padding:3px 6px}.guide-table th{color:var(--muted);font-size:11px;font-weight:600}.guide-table .r{text-align:right}.guide-watch{border-left:3px solid var(--brand);background:var(--brand-100);margin-top:12px;padding:8px 10px;font-size:12px}.photo-add{flex-wrap:wrap;align-items:flex-end;gap:10px;margin:10px 0 8px;display:flex}.photo-add label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.photo-add label.wide{flex:260px}.photo-add input,.photo-add select{width:100%;margin:0}.photo-add button{margin:0}.photo-drop{text-align:center;cursor:pointer;color:var(--muted);border:1px dashed var(--border);border-radius:8px;margin-bottom:8px;padding:14px;font-size:12px}.photo-drop:hover{border-color:var(--brand);color:var(--brand)}.photo-drop.is-over{border-color:var(--brand);background:var(--brand-100);color:var(--brand)}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;display:grid}.photo-tile{margin:0}.photo-open{cursor:pointer;background:var(--bg);border:1px solid var(--border);aspect-ratio:4/3;border-radius:8px;width:100%;margin:0;padding:0;display:block;overflow:hidden}.photo-open:hover{border-color:var(--brand)}.photo-open:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.photo-open img{object-fit:cover;width:100%;height:100%;display:block}.photo-nothumb{height:100%;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:15px;font-weight:650;display:flex}.photo-nothumb small{font-size:10px;font-weight:400}.photo-tile figcaption{color:var(--muted);flex-direction:column;gap:1px;margin-top:4px;font-size:11px;display:flex}.photo-when{color:var(--text)}.photo-tile.no-date .photo-when{color:var(--muted);font-style:italic}.photo-note{color:var(--text)}.photo-viewer{z-index:1200;background:#0c101aeb;grid-template-rows:auto 1fr auto;grid-template-columns:56px 1fr 56px;align-items:center;display:grid;position:fixed;inset:0}.photo-viewer-bar{color:var(--on-accent);flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;display:flex}.photo-viewer-title{flex-direction:column;font-size:12px;display:flex}.photo-viewer-title span{opacity:.75}.photo-viewer-title em{opacity:.8;font-style:italic}.photo-viewer-tools{align-items:center;gap:8px;display:flex}.photo-viewer-n{opacity:.7;font-size:12px}.photo-viewer-btn{cursor:pointer;color:var(--on-accent);background:#ffffff24;border:1px solid #ffffff47;border-radius:6px;margin:0;padding:4px 10px;font-size:12px;text-decoration:none}.photo-viewer-btn:hover{background:#ffffff42}.photo-viewer-btn.danger:hover{background:var(--red);border-color:var(--red)}.photo-viewer-img{grid-column:2;justify-content:center;align-self:stretch;align-items:center;min-width:0;min-height:0;padding:4px;display:flex;overflow:hidden}.photo-viewer-img img{object-fit:contain;transform-origin:50%;will-change:transform;background:#000;border-radius:4px;max-width:100%;max-height:78vh}.photo-viewer-img.is-zoomed{-webkit-user-select:none;user-select:none}.photo-zoom-level[disabled]{opacity:.55;cursor:default}.photo-nav{cursor:pointer;height:64px;color:var(--on-accent);background:0 0;border:0;margin:0;padding:0;font-size:34px;line-height:1}.photo-nav:hover:not([disabled]){color:var(--brand-400)}.photo-nav[disabled]{opacity:.2;cursor:default}.photo-viewer-note{text-align:center;color:var(--on-accent);opacity:.85;grid-column:1/-1;margin:0;padding:6px 14px 10px;font-size:12px}.photo-viewer-edit{grid-column:1/-1;padding:0 14px 12px}.photo-edit-form{background:var(--panel);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;padding:12px 14px;display:grid}.photo-edit-form label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.photo-edit-form label.wide{grid-column:1/-1}.photo-edit-form input,.photo-edit-form select{width:100%;margin:0}.photo-edit-buttons{grid-column:1/-1;gap:8px;display:flex}@media (width<=720px){.photo-viewer{grid-template-columns:34px 1fr 34px}.photo-nav{font-size:26px}}.rep-uninsured{color:var(--red);background:var(--red-tint);border:1px solid var(--red);border-radius:6px;margin:0 0 10px;padding:8px 12px;font-weight:600}.rep-note{color:var(--muted);margin:0 0 8px;font-size:12px}.rep-table td.rep-late{color:var(--red);font-weight:600}.rep-activity-row{cursor:pointer}.rep-activity-row:hover td{background:var(--bg)}.rep-table td.rep-in{color:var(--green);font-weight:600}@media print{.rep-activity-row{cursor:default}}.cost-est{white-space:nowrap}.cost-budget{width:96px;margin:0;padding:3px 6px;font-size:12px}.cost-frozen{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:10px;display:block}.cost-budget-add{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:10px 0 4px;padding:10px 12px;display:flex}.cost-budget-add label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.cost-budget-add input,.cost-budget-add button{margin:0}.job-budget{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin:8px 0 14px;padding:12px 14px}.job-budget-set{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.job-budget-set label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.job-budget-set input{width:140px;margin:0}.job-budget-set button{margin:0}.job-budget-figures{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-top:12px;display:grid}.job-budget-figures dt{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:2px;font-size:10px}.job-budget-figures dd{font-variant-numeric:tabular-nums;margin:0;font-size:16px}.job-budget-figures .is-over dt,.job-budget-figures .is-over dd{color:var(--red);font-weight:650}.job-budget-figures .job-budget-none dd{color:var(--muted)}.job-budget .hint{margin:10px 0 0}.cost-codes-fold{margin-top:6px}.cost-codes-fold>summary{cursor:pointer;color:var(--muted);padding:4px 0;font-size:12px}.cost-codes-fold>summary:hover{color:var(--brand)}.bill-chase-row{background:var(--bg);border-radius:6px;flex-wrap:wrap;align-items:baseline;gap:12px;margin:6px 0 0;padding:6px 10px;font-size:12px;display:flex}.bill-chase-row.needs-chasing{background:var(--red-tint);border:1px solid var(--red)}.bill-late{color:var(--red)}.bill-expected{color:var(--brand)}.bill-nodate,.bill-chase-asked{color:var(--muted)}.bill-chase-note{color:var(--text);font-style:italic}.bill-expected-form,.bill-chase-form{background:var(--panel);border:1px solid var(--brand);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;width:100%;margin-top:8px;padding:10px 12px;display:grid}.bill-expected-form label,.bill-chase-form label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.bill-expected-form label.wide,.bill-chase-form label.wide{grid-column:1/-1}.bill-expected-form input,.bill-chase-form input,.bill-chase-form textarea{width:100%;margin:0}.bill-chase-form h4{grid-column:1/-1;margin:0;font-size:13px}.bill-chase-form textarea{font:inherit;font-size:12px}.bill-chase-form-buttons{grid-column:1/-1;gap:8px;display:flex}.bill-expected-form button{align-self:end;margin:0}.bill-panel-no{color:var(--muted);font-weight:400}.bill-row.just-changed{animation:1.6s ease-out bill-just-changed}@keyframes bill-just-changed{0%{background:var(--brand-100);box-shadow:0 0 0 2px var(--brand)}to{background:0 0;box-shadow:0 0 0 2px #0000}}@media (prefers-reduced-motion:reduce){.bill-row.just-changed{background:var(--brand-100);animation:none}}.js-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1.4fr) minmax(0,1.4fr) minmax(0,.8fr);align-items:baseline;gap:8px;padding:8px 10px;font-size:12px;display:grid}.js-row.is-asked{background:var(--brand-100)}.js-pick{cursor:pointer;align-items:baseline;gap:8px;display:flex}.js-pick input{margin:0}.js-trades{flex-wrap:wrap;gap:4px;margin-left:6px;display:inline-flex}.js-contact{color:var(--muted)}.js-noemail{color:var(--red)}.js-brands{color:var(--muted)}.rfq-row{border:1px solid var(--border);background:var(--panel);border-radius:8px;margin-bottom:8px;overflow:hidden}.rfq-row.is-open{background:var(--bg)}.rfq-summary{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:0;border-radius:0;grid-template-columns:14px minmax(0,1fr) 170px 120px;align-items:center;gap:10px;margin:0;padding:10px 14px;display:grid}.rfq-summary:hover{background:var(--brand-100)}.rfq-summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.rfq-row.is-open .sc-caret{transform:rotate(90deg)translate(-1px)}.rfq-title{flex-direction:column;min-width:0;display:flex}.rfq-meta{color:var(--muted);font-size:11px}.rfq-state{color:var(--muted);text-align:right;font-size:12px}.rfq-best{text-align:right;font-variant-numeric:tabular-nums}.rfq-body{padding:4px 14px 14px 38px}.rfq-suppliers{margin-bottom:12px}.rfq-sup{border-radius:6px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:6px 10px;font-size:12px;display:grid}.rfq-sup.is-cheapest{background:var(--green-tint)}.rfq-sup.is-partial{background:var(--red-tint)}.rfq-sup-name{flex-direction:column;display:flex}.rfq-sup-total{text-align:right;font-variant-numeric:tabular-nums}.rfq-tag{text-transform:uppercase;letter-spacing:.03em;border-radius:9px;margin-left:6px;padding:0 6px;font-size:10px}.rfq-tag.is-ok{color:var(--green);border:1px solid var(--green)}.rfq-tag.is-warn{color:var(--red);border:1px solid var(--red)}.rfq-over{color:var(--muted);margin-left:6px}.rfq-sup-do{gap:6px;display:flex}.rfq-sup-do button{margin:0}.rfq-add-sup{margin-top:8px}.rfq-add-sup select{max-width:280px;margin:0}.rfq-table{border-collapse:collapse;width:100%;font-size:12px}.rfq-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--border);font-size:10px}.rfq-table td,.rfq-table th{padding:4px 6px}.rfq-table .r{text-align:right;font-variant-numeric:tabular-nums}.rfq-table tfoot th{border-top:1px solid var(--border);text-transform:none;color:var(--text);border-bottom:0;font-size:12px}.rfq-desc{color:var(--muted);font-size:10px;display:block}.rfq-price-input{text-align:right;width:78px;margin:0;padding:2px 5px;font-size:12px}.rfq-price.is-cheapest .rfq-price-input{background:var(--green-tint);border-color:var(--green)}.rfq-mixed{background:var(--green-tint);border-radius:6px;margin:10px 0 0;padding:8px 10px;font-size:12px}.rfq-foot{border-top:1px solid var(--border);gap:14px;margin-top:12px;padding-top:9px;display:flex}.rfq-preview-box{margin-top:10px}.rfq-preview-text{white-space:pre-wrap;background:var(--panel);border:1px solid var(--border);border-radius:6px;margin:4px 0 0;padding:10px 12px;font-size:11px}.js-bar{align-items:center;gap:14px;margin:8px 0 6px;display:flex}.js-all{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.js-all input,.rfq-add-sup button{margin:0}.rfq-lines{margin-bottom:12px}.rfq-lines>summary{cursor:pointer;color:var(--muted);padding:4px 0;font-size:12px}.rfq-lines>summary:hover{color:var(--brand)}.rfq-edit-table{border-collapse:collapse;width:100%;font-size:12px}.rfq-edit-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:2px 4px;font-size:10px}.rfq-edit-table td{padding:2px 4px}.rfq-edit-table .r{text-align:right}.rfq-edit-table input{width:100%;margin:0;padding:2px 5px;font-size:12px}.rfq-edit-table input.num{text-align:right}.rfq-edit-table input.short{width:72px}.rl-add{margin:6px 8px 0 0}.rfq-foot>button:first-child{margin:0}.rfq-sup.is-waiting{background:var(--bg)}.rfq-sup-files{margin-top:3px;display:block}.rfq-received-form{background:var(--panel);border:1px solid var(--brand);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;width:100%;margin-top:8px;padding:10px 12px;display:grid}.rfq-received-form label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.rfq-received-form label.wide{grid-column:1/-1}.rfq-received-form input{width:100%;margin:0}.rfq-received-buttons{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.rfq-received-buttons button{margin:0}.who-am-i{align-items:center;gap:6px;font-size:12px;display:flex}.who-am-i-label{color:var(--muted)}.who-am-i select{max-width:200px;margin:0}.who-am-i.is-unset select{border-color:var(--brand);background:var(--brand-100)}.person-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:8px 10px;font-size:12px;display:grid}.person-who{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.person-own{color:var(--green)}.person-do{align-items:baseline;gap:6px;display:flex}.person-do button{margin:0}.person-form{grid-column:1/-1}.person-mail-form{background:var(--panel);border:1px solid var(--brand);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:6px;padding:10px 12px;display:grid}.person-mail-form label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.person-mail-form input{width:100%;margin:0}.person-mail-buttons{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.person-mail-buttons button{margin:0}.doc-send-form{background:var(--panel);border:1px solid var(--brand);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;width:100%;margin-top:8px;padding:12px 14px;display:grid}.doc-send-form h4{grid-column:1/-1;margin:0;font-size:13px}.doc-send-form label{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.doc-send-form label.wide{grid-column:1/-1}.doc-send-form input,.doc-send-form textarea{width:100%;margin:0}.doc-send-form textarea{font:inherit;font-size:12px}.doc-send-files{color:var(--muted);grid-column:1/-1;margin:0;font-size:11px}.doc-send-buttons{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.doc-send-buttons button{margin:0}.doc-send-who{flex-direction:column;grid-column:1/-1;gap:4px;display:flex}.doc-send-who-head{color:var(--muted);font-size:11px}.doc-send-contact{cursor:pointer;align-items:baseline;gap:8px;padding:2px 0;font-size:12px;display:flex}.doc-send-contact input{margin:0}.doc-send-contact .hint{display:block}.order-supplier-email{margin-top:2px;font-size:11px;display:block}.order-supplier-email.is-found{color:var(--green)}.order-supplier-email.is-missing{color:var(--muted)}.signature-row{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0 4px;display:flex}.signature-label{color:var(--muted);font-size:11px}.signature-preview{border:1px solid var(--border);background:#fff;border-radius:4px;max-width:240px;max-height:46px;padding:4px 8px}.signature-row button{margin:0}.toast-host{right:var(--sp-6);bottom:var(--sp-6);z-index:9999;gap:var(--sp-3);pointer-events:none;flex-direction:column;max-width:min(420px,100vw - 32px);display:flex;position:fixed}.toast{pointer-events:auto;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--panel);color:var(--text);border:1px solid var(--border);border-left:4px solid var(--muted);border-radius:var(--r-md);font-size:var(--fs-md);animation:toast-in var(--t-slow) var(--ease);line-height:1.4;display:flex;box-shadow:0 6px 24px #00000029}.toast-error{border-left-color:var(--red)}.toast-ok{border-left-color:var(--green)}.toast-info{border-left-color:var(--brand)}.toast-text{white-space:pre-wrap;word-break:break-word;flex:auto}.toast-x{padding:0 var(--sp-1);color:var(--muted);font-size:var(--fs-lg);cursor:pointer;background:0 0;border:0;flex:none;margin:-4px -4px 0 0;line-height:1}.toast-x:hover{color:var(--text);background:0 0}.toast.is-going{opacity:0;transition:opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease);transform:translateY(4px)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.sc-adj-files{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.sc-adj-photo{border:1px solid var(--border);border-radius:6px;width:64px;height:64px;display:block;position:relative;overflow:hidden}.sc-adj-photo:hover{border-color:var(--brand)}.sc-adj-photo:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.sc-adj-photo img{object-fit:cover;width:100%;height:100%;display:block}.sc-adj-file-del{opacity:0;background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:50%;width:18px;height:18px;padding:0;font-size:12px;line-height:1;transition:opacity .1s;position:absolute;top:2px;right:2px}.sc-adj-photo:hover .sc-adj-file-del,.sc-adj-file-del:focus-visible{opacity:1}.sc-adj-file-del:hover{color:var(--red);border-color:var(--red)}.sc-adj-do{white-space:nowrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.doc-photo{border:1px solid var(--border);border-radius:6px;flex:none;width:56px;height:56px;display:block;position:relative;overflow:hidden}.doc-photo:hover{border-color:var(--brand)}.doc-photo:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.doc-photo img{object-fit:cover;width:100%;height:100%;display:block}.doc-photo .submittal-file-del{opacity:0;background:var(--bg);border:1px solid var(--border);border-radius:50%;width:17px;height:17px;padding:0;font-size:11px;line-height:1;transition:opacity .1s;position:absolute;top:2px;right:2px}.doc-photo:hover .submittal-file-del,.doc-photo .submittal-file-del:focus-visible{opacity:1}.order-waiting{color:var(--muted);font-size:var(--fs-2xs);margin-left:6px}.order-waiting.is-due{color:var(--warn-strong);background:var(--warn-tint);border-radius:9px;padding:0 6px}.rfq-chase.is-due,.rfq-chase-all.is-due,.mat-order-chase.is-due{color:var(--warn-strong);border-color:var(--warn)}.calc-refused{background:var(--red-tint);border-left:3px solid var(--red);font-size:var(--fs-xs);border-radius:4px;padding:8px 10px;line-height:1.45}.calc-warning{background:var(--warn-tint);color:var(--warn-strong);font-size:var(--fs-2xs);border-radius:4px;margin-bottom:6px;padding:6px 9px;line-height:1.45}.canvas-hint{color:var(--muted);font-size:var(--fs-2xs);white-space:nowrap;cursor:help;align-self:center;padding:0 4px}@media print{.toast-host{display:none}}.bid-worklist{border:1px solid var(--border);border-left:3px solid var(--warn,#d98324);background:var(--panel-2,#ffffff08);border-radius:8px;margin:0 0 14px;padding:10px 12px}.bid-worklist-head{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.bid-worklist-items{flex-direction:column;gap:2px;display:flex}.bid-worklist-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:flex-start;gap:8px;padding:6px 8px;display:flex}.bid-worklist-item:hover{background:var(--hover,#ffffff0f)}.bid-worklist-icon{flex:none;line-height:1.4}.bid-worklist-text{flex-direction:column;min-width:0;display:flex}.bid-worklist-project{font-weight:600}.bid-worklist-why{font-size:var(--fs-xs);opacity:.85}.bid-worklist-item.urgency-overdue{border-left:3px solid var(--danger,#d64545)}.bid-worklist-item.urgency-soon{border-left:3px solid var(--warn,#d98324)}.bid-worklist-item.urgency-waiting{border-left:3px solid var(--accent,#1e4fd8)}.bid-worklist-item.urgency-dormant{border-left:3px solid var(--muted,#7a8194)}.bid-recipients{max-width:760px}.bid-recipient-list{flex-direction:column;gap:8px;margin:10px 0;display:flex}.bid-recipient{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.bid-recipient.is-focused{border-color:var(--accent,#1e4fd8)}.bid-recipient.outcome-lost{opacity:.6}.bid-recipient-main{flex:260px;min-width:0}.bid-recipient-name{align-items:center;gap:6px;font-weight:600;display:flex}.bid-recipient-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;gap:4px;display:flex}.bid-recipient-actions .secondary{font-size:var(--fs-xs);flex:none;padding:2px 6px}.bid-remind{color:var(--accent,#1e4fd8)}.js-search{flex:180px;min-width:140px}.js-trade{flex:0 auto;max-width:180px}.js-group-head{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin:12px 0 4px;font-weight:600}.js-group-head:first-child{margin-top:0}.job-scope-tag.is-match{background:var(--accent,#1e4fd8);color:#fff;border-color:#0000}.hub-ask{margin:0 0 14px}.hub-ask .ask-panel{border:1px solid var(--border);background:var(--panel-2,#ffffff08);border-radius:8px;padding:12px 14px}.hub-ask .ask-title{margin-bottom:4px;font-weight:600}.hub-ask .ask-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.project-card-chase.is-due{border-color:var(--warn,#d98324);color:var(--warn,#d98324);font-weight:600}.rfq-picker{border:1px solid var(--border);background:var(--panel-2,#ffffff08);border-radius:8px;margin:8px 0 4px}.rfq-picker-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:8px;display:flex}.rfq-trade{font-size:var(--fs-xs);border:1px solid var(--border);color:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:3px 8px}.rfq-trade.is-on{background:var(--accent,#1e4fd8);color:#fff;border-color:#0000}.rfq-pick-search{flex:140px;min-width:120px}.rfq-picker-list{max-height:320px;padding:4px;overflow:auto}.rfq-pick-row{cursor:pointer;border-radius:6px;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:5px 6px;display:grid}.rfq-pick-row:hover{background:var(--hover,#ffffff0f)}.rfq-pick-row.is-picked{background:var(--hover,#ffffff14)}.rfq-pick-row input:disabled{cursor:not-allowed}.rfq-pick-row:has(input:disabled){opacity:.55;cursor:not-allowed}.rfq-pick-main{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.rfq-pick-contact{font-size:var(--fs-xs);opacity:.8;text-align:right}.rfq-picker-do{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex}.project-grid{align-items:stretch}.project-card{flex-direction:column;display:flex}.project-card-body{flex:auto;padding:12px 14px}.project-card-actions{margin-top:auto}.project-card-name{line-height:1.3}.project-card-address{margin-top:4px}.project-card-meta{margin-top:3px}.job-figure{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:10px;padding-top:9px;display:flex}.job-figure>span{font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.job-figure>strong{font-size:var(--fs-lg);color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}.job-figure .job-co-note{font-size:var(--fs-2xs);color:var(--muted)}.job-scope-tag{background:var(--qe-btn-hover,#ffffff0d);border-color:#0000;padding:2px 8px;line-height:1.5}.card-danger{color:var(--muted);cursor:pointer;font-size:var(--fs-md);border-radius:var(--r-md);background:0 0;border:1px solid #0000;padding:3px 8px;line-height:1}.card-danger:hover,.card-danger:focus-visible{color:var(--red);border-color:var(--red);background:var(--red-tint)}.bid-worklist-why,.job-status-n,.rfq-pick-contact,.storage-toggle-caret,.js-group-head{opacity:1;color:var(--muted)}.welcome-inner{max-width:1560px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.hub-tabs{margin-bottom:8px}.project-search-row{margin-bottom:6px}.job-status-filter{margin:6px 0 2px}.app-header{padding:8px 20px}.project-card-body{flex-direction:column;display:flex}.job-figure{margin-top:auto}.crew-pill{background:var(--qe-btn-hover,#ffffff0d);border-radius:var(--r-pill);font-size:var(--fs-2xs);align-items:center;gap:6px;padding:2px 8px 2px 2px;display:inline-flex}.crew-pill .crew-scope{background:var(--panel);color:var(--muted);border-radius:var(--r-pill);padding:1px 7px}.job-scope-tag,.sub-pill,.crew-pill,.meet-line.is-soon .meet-when{font-size:var(--fs-2xs);border-radius:var(--r-pill);white-space:nowrap;border:1px solid #0000;padding:2px 8px;line-height:1.5}.job-scope-tag,.crew-pill,.sub-pill{background:var(--qe-btn-hover,#ffffff0f);color:var(--muted)}.sub-blocked{background:var(--red-tint);color:var(--red);border-color:#0000;font-weight:600}.sub-waiting{background:var(--brand-100);color:var(--brand-400);border-color:#0000;font-weight:400}.sub-ok{background:var(--green-tint);color:var(--green);border-color:#0000}.sub-warn{background:var(--warn-tint);color:var(--warn);border-color:#0000;font-weight:600}.meet-line.is-soon .meet-when{background:var(--brand-100);color:var(--brand-400);border-color:#0000;font-weight:600}.jobs-main .project-grid.list-scroll{min-height:0;max-height:none;padding-right:0;overflow:visible}.jobs-layout{align-items:flex-start}.jobs-layout .jobs-side,.jobs-layout>.out-panel{margin-top:0}.jobs-main .inv-add-bar{margin-bottom:10px}.jobs-side{flex:0 0 250px}.jobs-layout>.out-panel,.jobs-layout .out-panel{flex-basis:250px}.out-panel.is-empty{padding:8px 12px}.out-panel.is-empty .out-panel-head h3{font-size:var(--fs-sm);display:inline}.out-panel.is-empty .out-panel-count,.out-panel.is-empty .out-panel-kinds{margin-left:6px;display:inline}.out-panel.is-empty .empty-note,.out-panel.is-empty .out-panel-empty{display:none}.jobs-layout{padding-top:4px}.jobs-layout>.jobs-main,.jobs-layout>.jobs-side,.jobs-layout>.out-panel,.jobs-main>:first-child,.jobs-side>:first-child,.jobs-layout>.out-panel>:first-child,.jobs-main .inv-add-bar{margin-top:0}.welcome-inner.is-wide{max-width:1560px}.jobs-layout .jobs-side,.jobs-layout>.out-panel{scrollbar-gutter:stable;max-height:calc(100vh - 24px);position:sticky;top:8px;overflow-y:auto}.project-card{transition:background-color 90ms,border-color 90ms}.project-card:hover{background:var(--qe-btn-hover,#ffffff0a)}.project-card :focus-visible,.hub-tab:focus-visible,.rfq-trade:focus-visible{outline:2px solid var(--brand-400);outline-offset:1px}.job-figure>strong,.job-baseline strong,.job-spent strong,.out-panel-count{font-variant-numeric:tabular-nums}.submittal-add>input,.submittal-add>select{width:auto}.submittal-add>input[type=text]{flex:150px;min-width:120px}.submittal-add>input[type=date]{flex:none;width:auto}.submittal-add>select{flex:none;min-width:110px}.submittal-add #eqDesc{flex:2 220px}.submittal-add #eqRate{flex:0 0 90px;min-width:0}.submittal-add #rfqTitle{flex:2 240px}.job-summary-card{max-width:340px}.hub-expanded{margin:4px 0 24px}.exp-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.exp-title{font-size:var(--fs-lg);margin:0}.exp-count{font-size:var(--fs-xs);color:var(--muted)}.exp-search{flex:200px;max-width:320px;margin:0}.exp-group{font-size:var(--fs-xs);color:var(--muted);align-items:center;gap:6px;display:flex}.exp-group input{width:auto;margin:0}.exp-actions{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);opacity:.6;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.exp-actions.is-on{opacity:1;border-color:var(--brand-400)}.exp-picked{font-size:var(--fs-xs);color:var(--muted)}.exp-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.exp-table th,.exp-table td{text-align:left;border-bottom:1px solid var(--border);padding:7px 10px}.exp-th{background:var(--bg);z-index:1;position:sticky;top:0}.exp-th .exp-sort{cursor:pointer;color:var(--muted);font:inherit;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;background:0 0;border:0;align-items:center;gap:4px;margin:0;padding:0;display:inline-flex}.exp-th.is-sorted .exp-sort{color:var(--text)}.exp-arrow{font-size:8px}.is-right{text-align:right}.exp-td.is-right{font-variant-numeric:tabular-nums}.exp-td.is-wide{max-width:320px}.exp-row:hover{background:var(--qe-btn-hover,#ffffff0a)}.exp-row.is-picked{background:var(--brand-100)}.exp-pick{width:34px}.exp-pick input{width:auto;margin:0}.exp-group-head td{border-bottom-color:#0000;padding-top:14px}.exp-group-head .task-panel-job{font-weight:600}.out-panel-head{position:relative}.out-panel-expand{color:var(--muted);cursor:pointer;font-size:var(--fs-md);border-radius:var(--r-sm);background:0 0;border:1px solid #0000;padding:2px 6px;line-height:1;position:absolute;top:-2px;right:-2px}.out-panel-expand:hover,.out-panel-expand:focus-visible{color:var(--text);border-color:var(--border);background:var(--qe-btn-hover,#ffffff0f)}.job-card-chips{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.job-card-chips:empty{margin:0;display:none}.job-card-chips>.crew-line,.job-card-chips>.meet-line,.job-card-chips>.sub-line{gap:4px;margin:0}.pane-head-row{align-items:center;gap:8px;display:flex}.pane-head-row .out-panel-expand{margin-left:auto;position:static}.order-sent,.order-unsent{font-size:var(--fs-2xs);border-radius:var(--r-pill);white-space:nowrap;padding:2px 8px}.order-sent{background:var(--green-tint);color:var(--green)}.order-unsent{background:var(--qe-btn-hover,#ffffff0f);color:var(--muted)}.submittal-chase.is-due{border-color:var(--warn,#d98324);color:var(--warn,#d98324);font-weight:600}.equip-invoices{font-size:var(--fs-xs);flex-direction:column;gap:3px;margin:6px 0 0;padding:0;list-style:none;display:flex}.equip-invoices li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.photo-canvas-wrap{display:inline-flex;position:relative}.photo-canvas{pointer-events:none;position:absolute;inset:0}.photo-canvas.is-drawing{pointer-events:auto;cursor:crosshair}.photo-viewer.is-marking .photo-viewer-img img{cursor:default!important}.photo-mark-bar{flex-wrap:wrap;grid-column:1/-1;justify-content:center;align-items:center;gap:8px;padding:8px 14px;display:flex}.photo-mark-tools,.photo-mark-colours{gap:4px;display:flex}.photo-mark-tool{color:var(--on-accent);border:1px solid var(--border);border-radius:var(--r-sm);font-size:var(--fs-sm);cursor:pointer;background:0 0;padding:3px 9px}.photo-mark-tool.is-on{background:var(--brand);border-color:var(--brand)}.photo-mark-colour{cursor:pointer;border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0}.photo-mark-colour.is-on{border-color:var(--on-accent)}.photo-mark-hint{color:var(--on-accent);opacity:.7;text-align:center;flex-basis:100%}.con-pick{margin:8px 0}.con-pick-head{font-size:var(--fs-sm);color:var(--muted);margin-bottom:4px;display:block}.con-pick-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;max-height:260px;display:grid;overflow-y:auto}.con-pick-photo{border-radius:var(--r-sm);cursor:pointer;border:2px solid #0000;display:block;position:relative;overflow:hidden}.con-pick-photo img{object-fit:cover;width:100%;height:72px;display:block}.con-pick-photo input{z-index:1;position:absolute;top:4px;left:4px}.con-pick-photo:has(input:checked){border-color:var(--brand)}.con-pick-cap{overflow-wrap:anywhere;padding:2px 3px;font-size:10px;display:block}.con-pick-mark{color:var(--brand)}.con-pick-noimg{background:var(--qe-chrome);height:72px;padding:4px;font-size:10px;display:block}.con-sent{font-size:var(--fs-sm);color:var(--muted);padding:0 0 4px}.sublib-layout{grid-template-columns:190px 1fr;align-items:start;gap:12px;display:grid}.sublib-cats{flex-direction:column;gap:2px;display:flex}.sublib-cat{text-align:left;color:var(--text);border-radius:var(--r-sm);font-size:var(--fs-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:space-between;gap:8px;padding:5px 8px;display:flex}.sublib-cat:hover{background:var(--qe-btn-hover)}.sublib-cat.is-on{background:var(--qe-chrome);border-color:var(--border);font-weight:600}.sublib-cat span{color:var(--muted)}.sublib-cat-add{color:var(--muted);margin-top:6px}.sublib-pick{border:1px solid var(--border);border-radius:var(--r-md);margin:8px 0;padding:10px}.sublib-pick-find{width:100%;margin-bottom:8px}.sublib-pick-list{max-height:320px;overflow-y:auto}.sublib-pick-one{text-align:left;border-radius:var(--r-sm);cursor:pointer;width:100%;color:var(--text);background:0 0;border:1px solid #0000;padding:5px 8px;display:block}.sublib-pick-one:hover{background:var(--qe-btn-hover);border-color:var(--border)}.sublib-pick-one .hint{display:block}.doc-viewer .photo-viewer-img img{max-height:78vh}.submittal-file-mark{color:var(--brand);cursor:pointer;font-size:var(--fs-sm);background:0 0;border:0;padding:0 4px}.subreq-box{border:1px solid var(--border);border-radius:var(--r-md);margin:8px 0}.subreq-head{font-size:var(--fs-sm);color:var(--muted);border-bottom:1px solid var(--border);padding:6px 10px}.subreq-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:6px 10px;display:flex}.subreq-row:last-child{border-bottom:none}.subreq-row.is-due{background:var(--red-tint)}.subreq-row.is-done{opacity:.6}.subreq-what{flex:1;min-width:0}.subreq-what .hint{display:block}.subreq-when{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}.subreq-do{align-items:center;gap:4px;display:flex}.calc-breakdown{margin-top:8px}.calc-breakdown-head{font-size:var(--fs-sm);color:var(--muted);margin-bottom:3px}.calc-breakdown-table tr{cursor:pointer}.calc-breakdown-table tr:hover{background:var(--qe-btn-hover)}.calc-zone-row.is-on{background:var(--qe-chrome);font-weight:600}.calc-zone-share{color:var(--muted);text-align:right}.status-needs-scale{color:var(--red);font-weight:600}.rp-drawn{background:var(--qe-chrome);border:1px solid var(--border);border-radius:var(--r-md);flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;padding:8px 10px;display:flex}.rp-drawn strong{font-size:20px;line-height:1.1}.rp-drawn span,.rp-drawn.is-empty{color:var(--muted);font-size:var(--fs-sm)}.rp-drawn.is-blocked{color:var(--red);border-color:var(--red);background:var(--red-tint);font-weight:600}.rp-more>summary{cursor:pointer;color:var(--muted);font-size:var(--fs-sm);list-style:revert;padding:4px 0}.rp-more>summary:hover{color:var(--text)}#canvasScaleBtn.needs-scale{background:var(--red);border-color:var(--red);color:var(--on-accent);font-weight:600}.rp-drawn.is-stale{border-color:var(--brand)}.admin-screen{padding:24px 24px 60px;overflow-y:auto}.admin-inner{width:100%;max-width:900px;margin:0 auto}.admin-head{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-head h2{font-size:var(--fs-lg);margin:0}.admin-card{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel,var(--bg));margin-bottom:14px;padding:14px 16px}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-toolbar .hint{flex:100%;margin:0 0 6px}.admin-roster{flex-direction:column;gap:12px;display:flex}.admin-person{border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel,var(--bg));padding:12px 14px}.admin-person-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.admin-person-head strong{font-size:var(--fs-md)}.admin-pin-state{color:var(--muted);font-size:var(--fs-sm)}.admin-is-admin{margin-left:auto}.admin-person-perms{flex-wrap:wrap;gap:24px;margin-top:8px;display:flex}.admin-perm-group{min-width:220px}.admin-perm-title{font-size:var(--fs-sm);color:var(--muted);margin-bottom:4px;display:block}.admin-perm-checks{flex-wrap:wrap;gap:6px 14px;display:flex}.admin-check{font-size:var(--fs-sm);white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.admin-check input[type=checkbox]{margin:0}.rp-stale{flex-basis:100%;font-weight:600;color:var(--brand)!important}.admin-jobs-group{flex:260px;min-width:260px}.admin-jobs-mode{flex-wrap:wrap;gap:14px;margin-bottom:6px;display:flex}.admin-jobs-picker{flex-direction:column;gap:6px;display:flex}.adm-jobs-filter{font-size:var(--fs-sm);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text);padding:4px 8px}.admin-jobs-list{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);flex-direction:column;gap:3px;max-height:180px;padding:6px 10px;display:flex;overflow-y:auto}.adm-job-check-row{white-space:normal}
