:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--border:#dde1e7;--border-strong:#c3c9d2;--text:#1b1f24;--muted:#5d6673;--accent:#2557c7;--accent-hover:#1d47a6;--accent-soft:#e6edfb;--accent-contrast:#fff;--danger:#b42318;--danger-soft:#fdecea;--ok:#18794e;--ok-soft:#e5f4ec;--warn:#8a5a00;--warn-soft:#fff4d6;--ai:#6941c6;--ai-soft:#f1ecfc;--radius:8px;--radius-sm:6px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#111418;--surface:#191d23;--surface-2:#20252d;--border:#2c333d;--border-strong:#3c4552;--text:#e6e9ee;--muted:#9aa4b2;--accent:#6d9bff;--accent-hover:#8cb0ff;--accent-soft:#1d2a45;--accent-contrast:#0b1220;--danger:#ff8a80;--danger-soft:#3a1d1b;--ok:#5fd39a;--ok-soft:#15301f;--warn:#f3c25b;--warn-soft:#33290f;--ai:#b69cff;--ai-soft:#2a2140;--shadow:0 1px 2px #0006}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100vh}a{color:var(--accent)}a:hover{color:var(--accent-hover)}h1{margin:0 0 6px;font-size:20px;line-height:1.25}h2{margin:20px 0 8px;font-size:15px}h3{margin:0;font-size:14px}p{margin:0 0 8px}code{font-family:var(--mono);background:var(--surface-2);overflow-wrap:anywhere;border-radius:4px;padding:0 4px;font-size:.92em}pre{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);max-width:100%;margin:6px 0;padding:8px 10px;font-size:12.5px;overflow-x:auto}pre code{overflow-wrap:normal;background:0 0;padding:0}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus{outline:none}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}label.btn:has(.file-input){position:relative}.file-input{opacity:0;cursor:pointer;width:calc(100% + 2px);height:calc(100% + 2px);min-height:0;margin:0;padding:0;font-size:16px;position:absolute;top:-1px;left:-1px}label.btn:has(:focus-visible){outline:3px solid var(--accent);outline-offset:2px}dialog{max-width:none;max-height:none;color:inherit;border:0;margin:0;padding:0}dialog.tech-viewer,dialog.tech-sheet{width:100%;height:100%}dialog::backdrop{background:0 0}.muted{color:var(--muted)}.small{font-size:12.5px}.hint{color:var(--muted);margin:4px 0 0;font-size:12px}.error{color:var(--danger)}.ok{color:var(--ok)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row>input{flex:180px;min-width:0}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:0;padding:7px 9px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--accent);outline-offset:1px}textarea{resize:vertical}.select{max-width:100%;padding:5px 8px}label{font-weight:550}.btn{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-weight:550;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2);color:var(--text)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-contrast)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2)}.btn-danger-ghost{color:var(--danger)}.btn-sm{padding:4px 9px;font-size:13px}.btn-block{width:100%}.badge{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:600}.banner{border-bottom:1px solid var(--border);overflow-wrap:anywhere;padding:8px 16px;font-size:13px}.banner-warn{background:var(--warn-soft);color:var(--warn)}.banner-error{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);border:none;margin-top:6px}.banner-ok{background:var(--ok-soft);color:var(--ok);border-radius:var(--radius-sm);border:none;margin-bottom:12px}.settings .banner-error{margin:0 0 12px}.toggle{cursor:pointer;align-items:center;gap:6px;font-weight:500;display:inline-flex}.toggle input{margin:0}@keyframes pulse{50%{opacity:.35}}@keyframes spin{to{transform:rotate(360deg)}}.field-row{gap:4px;margin:12px 0;display:grid}.key-status{font-family:var(--mono);color:var(--ok)}.label-like{font-weight:550}.jn-voice{justify-items:center;gap:8px;padding:16px 0 4px;display:grid}.jn-mic{border:2px solid var(--accent);background:var(--accent-soft);min-width:220px;min-height:56px;color:var(--accent);font:inherit;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:0 24px;font-size:17px;font-weight:650;display:inline-flex}.jn-mic:disabled{opacity:.6;cursor:wait}.jn-mic.on{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.jn-mic-dot{background:currentColor;border-radius:50%;width:12px;height:12px}.jn-mic.on .jn-mic-dot{animation:1s infinite pulse}.jn-text{resize:vertical;width:100%;min-height:150px;font-size:16px;line-height:1.45}.jn-pickers label.btn{cursor:pointer}.jn-items{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.jn-item{align-content:start;gap:2px;display:grid;position:relative}.jn-item img,.jn-doc{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);width:100%}.jn-doc{color:var(--muted);place-items:center;font-size:13px;font-weight:700;display:grid}.jn-item-name{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);overflow:hidden}.jn-item-status{color:var(--muted);overflow-wrap:anywhere}.jn-remove{color:#fff;cursor:pointer;background:#101828a6;border:none;border-radius:50%;width:28px;height:28px;font-size:18px;line-height:1;position:absolute;top:4px;right:4px}.site-banner{z-index:15;padding:6px 12px;padding-top:max(6px, env(safe-area-inset-top));text-align:center;overflow-wrap:anywhere;font-size:13px;line-height:1.3;position:sticky;top:0}.site-banner-test{color:#fff;background:repeating-linear-gradient(135deg,#c2410c 0 14px,#9a3412 14px 28px)}.site-banner-dev{background:var(--surface-2);color:var(--muted);border-bottom:1px solid var(--border)}.site-banner-error{background:var(--danger);color:#fff}.moved-strip{top:var(--site-banner-h,0px);z-index:14;text-align:center;border-radius:0;margin:0;position:sticky}html,body{background:var(--bg)}.tech{max-width:640px;min-height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);flex-direction:column;margin:0 auto;font-size:16px;display:flex}.tech-center{text-align:center;justify-content:center;align-items:center;gap:12px;padding:24px}.tech-logo{border-radius:16px}.tech-bar{z-index:2;background:var(--surface);border-bottom:1px solid var(--border);padding:calc(10px + env(safe-area-inset-top)) 16px 8px;gap:6px;display:grid;position:sticky;top:0}.tech-bar-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.tech-title{margin:0;font-size:20px}.tech-who{color:var(--muted);font-size:14px}.tech-who-switch{color:var(--accent);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;margin:-13px -6px;padding:13px 6px;font-weight:600}.tech-who-switch:focus-visible{outline:3px solid var(--accent);outline-offset:-10px;border-radius:8px}.tech-icon-btn{border:1px solid var(--border);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);cursor:pointer;border-radius:999px;font-size:22px;line-height:1}.tech-icon-btn:disabled{opacity:.6}.spin{animation:1s linear infinite tech-spin;display:inline-block}@keyframes tech-spin{to{transform:rotate(360deg)}}.tech-days{align-items:center;gap:8px;display:flex}.tech-day-label{text-align:center;border-radius:var(--radius-sm);background:var(--bg);flex:1;place-items:center;min-height:44px;font-weight:600;display:grid;position:relative}.tech-day-label input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.tech-fresh{color:var(--muted);font-size:13px}.tech-fresh.is-offline{color:var(--warn);background:var(--warn-soft);border-radius:var(--radius-sm);padding:4px 8px;font-weight:550}.tech-main{flex:1;padding:12px 16px 24px}.tech-empty{text-align:center;margin-top:32px}.tech-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tech-card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow);gap:3px;padding:12px 14px;text-decoration:none;display:grid}.tech-card:hover{color:var(--text)}.tech-card:active{background:var(--accent-soft)}.tech-card.is-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tech-card-top{align-items:center;gap:6px;display:flex}.tech-time{margin-right:auto;font-weight:650}.tech-card-customer{font-size:17px;font-weight:600}.tech-card-addr{color:var(--muted)}.tech-card-desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tech-card-nbr{color:var(--muted);font-size:13px}.tech-card-crew{color:var(--text);font-weight:600}.pill{background:var(--surface-2,var(--bg));color:var(--text);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.pill-type{color:var(--muted);background:0 0}.pill-accent{background:var(--accent-soft);color:var(--accent)}.pill-ok{background:var(--ok-soft);color:var(--ok)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.tech-bar-job{gap:4px}.tech-job-title{margin:2px 0 0;font-size:20px}.tech-job{align-content:start;gap:10px;display:grid}.tech-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.tech-section h2{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-size:13px}.tech-section p{margin:0 0 6px}.tech-addr{font-size:16px}.tech-pre{white-space:pre-wrap;overflow-wrap:anywhere}.tech-lines{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tech-lines li{gap:8px;display:flex}.tech-line-qty{min-width:2.5em;font-weight:650}.tech-line-desc{flex:1;min-width:0}.tech-line-amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.tech-lines-total{text-align:right;margin:10px 0 4px;font-weight:650}.tech-price{align-items:center;gap:4px;display:flex}.tech-price input{width:6.5em;min-height:44px;font-size:16px}.tech-remove-choice{gap:8px;width:100%;display:grid}.tech-remove-choice .btn{white-space:normal;overflow-wrap:anywhere;min-width:0}.tech-line-desc{overflow-wrap:anywhere}.tech-thumbs{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.tech-thumb{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;width:100%;padding:0;display:block;position:relative;overflow:hidden}.tech-thumb img{object-fit:cover;width:100%;height:100%;display:block}.tech-thumb-wait{width:100%;height:100%;color:var(--muted);text-align:center;place-items:center;padding:4px;font-size:12px;display:grid}.tech-viewer-wait{color:#ddd;font:inherit;background:0 0;border:none;place-self:center}.tech-thumb-tag{color:#fff;background:#0009;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:600;position:absolute;bottom:4px;left:4px}.tech-docs{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tech-docs a{overflow-wrap:anywhere}.tech-viewer{z-index:20;color:#fff;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#000;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);display:grid;position:fixed;inset:0}.tech-viewer-bar{justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;display:flex}.tech-viewer-bar .muted{color:#bbb}.tech-viewer-name{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13px;overflow:hidden}.tech-viewer-bar>button{flex:none}.tech-viewer-img{object-fit:contain;touch-action:pan-y pinch-zoom;width:100%;height:100%;min-height:0}.tech-foot{background:var(--surface);border-top:1px solid var(--border);padding:10px 16px calc(10px + env(safe-area-inset-bottom));position:sticky;bottom:0}.tech-foot .btn-block{place-items:center;min-height:50px;font-size:16px;text-decoration:none;display:grid}.tech-foot-hint{text-align:center;margin:8px 0}.tech-review{border-radius:var(--radius);background:var(--ai-soft);gap:8px;margin:12px 0;padding:12px;display:grid}.tech-msg{overflow-wrap:anywhere;border-radius:14px;max-width:90%;padding:8px 12px}.tech-msg-reviewer{background:var(--surface);border-bottom-left-radius:4px;justify-self:start}.tech-msg-tech{background:var(--accent);color:var(--accent-contrast);border-bottom-right-radius:4px;justify-self:end}.tech-checks{gap:2px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.tech-checks .ok{color:var(--ok)}.tech-checks .bad{color:var(--warn);font-weight:550}.tech-reply{gap:8px;display:flex}.tech-reply input{flex:1;min-height:40px;font-size:16px}.tech-pick{gap:8px;margin:0;padding:0;list-style:none;display:grid}.tech-pick .btn{min-height:48px;font-size:16px}.tech-check{background:var(--ok-soft);width:64px;height:64px;color:var(--ok);border-radius:50%;place-items:center;font-size:34px;display:grid}.tech-split{grid-template-columns:300px minmax(0,1fr);height:100dvh;display:grid}@media (width>=1100px){.tech-split{grid-template-columns:340px minmax(0,1fr)}}.tech-compact .tech{max-width:none}.tech-compact .tech-main{padding:14px 24px 28px}dialog.tech-drawer{background:#00000059;width:100%;height:100%;position:fixed;inset:0}.tech-drawer-panel{background:var(--bg);border-right:1px solid var(--border);width:min(340px,86vw);height:100%;animation:.18s ease-out tech-drawer-in;overflow-y:auto;box-shadow:4px 0 24px #00000040}.tech-drawer-panel .tech{max-width:none;min-height:100%;margin:0}.tech-drawer-panel .tech-bar{position:static}.tech-drawer-panel .tech-day-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:15px;overflow:hidden}@keyframes tech-drawer-in{0%{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){.tech-drawer-panel{animation:none}}.tech-pane{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.tech-pane .tech{max-width:none;min-height:100%;margin:0}.tech-pane-list{border-right:1px solid var(--border)}.tech-pane-detail{background:var(--bg)}.tech-pane-detail .tech .tech-back{display:none}.tech-pane-list .tech-days{gap:6px}.tech-pane-list .tech-day-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:15px;overflow:hidden}.tech-pane-detail .tech-main{padding:16px 24px 32px}.tech-card.is-selected{background:var(--accent-soft);border-color:var(--accent)}.tech-job.is-two-col{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:12px}.tech-job-col{align-content:start;gap:10px;min-width:0;display:grid}.tech .btn,.tech .btn-sm{justify-content:center;align-items:center;min-height:44px;padding:10px 14px;font-size:15px;display:inline-flex}.tech .small{font-size:14px}.tech-quick{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:6px;display:grid}.tech-quick .btn{text-decoration:none}.tech-summary{margin:0 0 8px}.tech-error{justify-content:space-between;align-items:center;gap:8px;display:flex}.tech-skeleton{background:linear-gradient(90deg, var(--surface) 0%, var(--bg) 50%, var(--surface) 100%);background-size:200% 100%;height:112px;animation:1.2s linear infinite tech-shimmer}@keyframes tech-shimmer{to{background-position:-200% 0}}.tech-lines .pill{margin-left:6px}.pill-tax.is-taxable{color:var(--accent);background:var(--accent-soft);border-color:#0000}.tech-edit-lines{gap:10px;margin:0 0 8px;padding:0;list-style:none;display:grid}.tech-edit-line{border-bottom:1px solid var(--border);gap:8px;padding:10px 0;display:grid}.tech-edit-line:last-child{border-bottom:none}.tech-edit-line.is-removed .tech-edit-desc{opacity:.6;text-decoration:line-through}.tech-edit-line.is-new .tech-edit-desc strong{color:var(--accent)}.tech-edit-desc{overflow-wrap:anywhere}.tech-edit-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tech-stepper{align-items:center;gap:4px;display:inline-flex}.tech-stepper .btn{min-width:44px;padding:0;font-size:20px}.tech-stepper input{text-align:center;width:64px;min-height:44px;font-size:16px}.tech-tax{min-height:44px;padding:0 8px;font-size:16px}.tech-item-search input{width:100%;min-height:44px;font-size:16px}.tech-item-results{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.tech-item{text-align:left;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;cursor:pointer;gap:2px;padding:10px 12px;display:grid}.tech-item:active{background:var(--accent-soft)}.tech-status .tech-undo{margin-top:6px}.tech-visits{gap:8px;margin:0;padding:0;list-style:none;display:grid}.tech-visit{text-align:left;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;cursor:pointer;gap:2px;padding:10px 12px;display:grid}.tech-visit-top{flex-wrap:wrap;align-items:center;gap:6px;display:flex}a.tech-visit{color:inherit;text-decoration:none}.tech-visit-go{color:var(--muted);margin-left:auto;font-size:20px;line-height:1}.tech-visit-notes{margin:6px 4px 0;font-size:15px}.tech-sign{background:var(--bg);color:var(--text)}.tech-sign-body{grid-template-rows:auto auto auto minmax(220px,1fr) auto auto auto;gap:10px;min-height:0;padding:0 12px;display:grid;overflow-y:auto}.tech-sign-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:30dvh;padding:10px 12px;font-size:15px;overflow-y:auto}.tech-sign-summary p{margin:0 0 6px}.tech-sign-summary ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.tech-sign-summary li{justify-content:space-between;gap:12px;display:flex}.tech-sign-summary li span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}.tech-sign-total{text-align:right;font-weight:600;margin:8px 0 0!important}.tech-sign-hint{color:var(--muted);margin:0}.tech-sign-wrap{min-height:220px;position:relative}.tech-sign-pad{border:1px solid var(--border);border-radius:var(--radius);touch-action:none;background:#fff;width:100%;height:100%;min-height:220px;display:block}.tech-sign-line{pointer-events:none;color:#5d6673;border-bottom:2px solid #8a93a0;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:28%;left:16px;right:16px}.tech-sign-x{padding-bottom:2px;font-size:26px;line-height:1}.tech-sign-here{padding-bottom:4px;font-size:15px}.tech-sign-why{text-align:right;color:var(--muted);margin:0;font-size:14px}.tech-sign-name{color:var(--muted);gap:4px;font-size:14px;display:grid}.tech-sign-name input{min-height:44px;font-size:16px}.tech-draft-pill{justify-self:start}.pill-error{background:var(--danger-soft);color:var(--danger)}.tech-no-signal{justify-items:center;gap:12px;max-width:30em;margin-inline:auto;display:grid}.tech-no-signal p{margin:0}.tech-file-title{overflow-wrap:anywhere}.tech-file-actions{margin-bottom:0}.tech-file-name{overflow-wrap:anywhere;font-weight:600}.tech-job.is-pdf{grid-template-rows:auto minmax(0,1fr)}.tech-file-frame{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;width:100%;height:max(60dvh,100dvh - 220px)}.tech-doc-row{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.tech-waiting-jobs{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tech-waiting-job{border:1px solid var(--border);border-radius:var(--radius-sm);gap:6px;padding:10px 12px;display:grid}.tech-waiting-job-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.tech-waiting-job-head strong{overflow-wrap:anywhere;min-width:0}.tech-waiting-items{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tech-waiting-items li{gap:2px;display:grid}.tech-history-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.tech-history-head h2{margin:0}.tech-history-title{margin:14px 0 6px;font-size:15px}.tech-history-amt{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.tech-history-lines{gap:6px;margin:6px 4px 0;padding:0;font-size:15px;list-style:none;display:grid}.tech-history-line{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.tech-history-link{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:inherit;gap:4px;min-height:44px;margin:-4px -4px 8px;padding:10px 12px;text-decoration:none;display:grid}.tech-history-link:active,.tech-visit:active{background:var(--accent-soft)}.tech-history-link-top{align-items:center;gap:8px;display:flex}.tech-history-link-top h2{margin:0}.tech-history-filter{grid-auto-columns:1fr;width:100%;margin:4px 0 12px;display:grid}.tech-history-filter button{white-space:nowrap;padding:0 6px}.tech-history-count{opacity:.75;font-weight:500}.tech-history-kept{white-space:nowrap;color:var(--ok,var(--muted))}.tech-history-kept:before{content:"✓ "}.tech-record{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:10px}.tech-record-main{gap:3px;min-width:0;display:grid}.tech-record-top{align-items:baseline;gap:8px;display:flex}.tech-record .tech-visit-go{margin-left:0}.tech-facts{grid-template-columns:max-content 1fr;gap:4px 14px;margin:8px 0 0;display:grid}.tech-facts dt{color:var(--muted)}.tech-facts dd{font-variant-numeric:tabular-nums;margin:0}.tech-owes{color:var(--warn);font-weight:650}.tech-update{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:50;font:inherit;background:var(--accent,#2563eb);color:#fff;border:0;border-radius:999px;padding:12px 20px;font-weight:600;position:fixed;transform:translate(-50%);box-shadow:0 6px 20px #00000040}.tech-foot-row{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px;display:grid}.tech-foot-row .btn-block{white-space:normal;text-align:center;min-height:52px;padding:6px 8px;line-height:1.2}.tech-remove-choice .btn{white-space:normal;text-align:center;height:auto}.tech-sheet-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:4px;display:grid}.tech-sheet-actions .btn{min-height:50px}.tech-sheet-body:focus{outline:none}.tech-checklist{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tech-checklist li{align-items:baseline;gap:8px;display:flex}.tech-checklist li>span{text-align:center;width:1.4em;font-weight:700}.tech-checklist .ok>span{color:var(--ok)}.tech-checklist .bad{color:var(--warn);font-weight:550}.tech-quote input,.tech-quote select{min-height:44px;font-size:16px}.tq-lines{gap:10px;margin:0 0 10px;padding:0;list-style:none;display:grid}.tq-line{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);gap:6px;padding:10px;display:grid}.tq-line-top{align-items:center;gap:6px;display:flex}.tq-desc{min-width:0;font:inherit;resize:none;flex:1;min-height:44px;padding:9px 10px;font-size:16px;font-weight:550;overflow:hidden}.tech-quote input::placeholder{color:var(--text);opacity:1}.tq-remove{width:44px;min-height:44px;color:var(--danger);flex:none;font-size:22px}.tq-line-nums{grid-template-columns:1fr 1.3fr auto;align-items:end;gap:8px;display:grid}.tq-num{color:var(--muted);white-space:nowrap;gap:2px;min-width:0;font-size:13px;display:grid}.tq-num input,.tq-num select{width:100%;color:var(--text)}.tq-amt{font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end;padding-bottom:10px;font-weight:600}.tq-total{border-top:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:12px;margin-top:10px;padding-top:10px;display:flex}.tq-total strong{font-variant-numeric:tabular-nums;font-size:20px}.tq-row{grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 8px;display:grid}.tq-picks{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tq-pick{text-align:left;white-space:normal;justify-content:space-between;gap:8px;display:flex}.tq-preview{background:var(--surface-2);border-radius:var(--radius-sm);max-height:40vh;padding:10px;font-size:14px;overflow:auto}.tq-check{align-items:center;gap:8px;min-height:44px;margin-top:4px;font-weight:550;display:flex}.tq-check input{width:22px;height:22px;min-height:0}.tech-sheet{z-index:40;background:#00000073;align-items:end;display:grid;position:fixed;inset:0}.tech-sheet-body{background:var(--surface);padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;justify-self:center;gap:10px;width:min(640px,100%);max-height:90vh;display:grid;overflow:auto}.tech-sheet-body h2,.tech-section .tech-sheet-body h2{text-transform:none;letter-spacing:0;color:var(--text);margin:0;font-size:20px}.tech-sheet-body input,.tech-sheet-body .btn{min-height:44px;font-size:16px}.btn.btn-danger{color:var(--danger);border-color:var(--danger)}.tq-acu-send{border:1px solid var(--border);border-radius:var(--radius-sm);margin:12px 0;padding:12px}.tq-acu-send h3,.tq-send-or{margin:0 0 6px;font-size:1rem}.tq-send-or{margin-top:16px}.tech-pay-form{gap:8px;margin-top:8px;display:grid}.tech-pay-form .btn,.tq-acu-send .btn{white-space:normal;overflow-wrap:anywhere;height:auto;min-height:44px}.tech-bar-actions{align-items:center;gap:8px;display:flex}a.tech-icon-btn{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.has-site-banner .tech{min-height:calc(100dvh - var(--site-banner-h,0px))}.has-site-banner .tech-bar{top:var(--site-banner-h,0px);padding-top:10px}.has-site-banner .tech-split{height:calc(100dvh - var(--site-banner-h,0px))}.has-site-banner .tech-pane .tech{min-height:100%}.has-site-banner .tech-pane .tech-bar{top:0}.pill-new{background:var(--ok-soft);color:var(--ok);font-weight:650}.tech-new-alert{left:50%;top:calc(10px + env(safe-area-inset-top));z-index:45;border-radius:var(--radius-sm);background:var(--surface,var(--bg));width:min(560px,100% - 24px);color:inherit;border:2px solid var(--ok);gap:6px;padding:12px 14px;display:grid;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #00000047}.tech-new-alert ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.tech-new-alert-job{text-align:left;width:100%;min-height:44px;font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:inherit;cursor:pointer;align-items:center;gap:8px;padding:8px 10px;font-size:15px;display:flex}.tech-new-alert-job span:first-child{overflow-wrap:anywhere;flex:1;min-width:0}.tech-new-alert-go{color:var(--muted);font-size:22px}.tech-new-alert>.btn{justify-self:end}.tech .btn{white-space:normal;text-align:center;overflow-wrap:anywhere}.tech-job{grid-template-columns:minmax(0,1fr)}.tech-edit-line,.tech-edit-controls>*{min-width:0}.tech-edit-controls .tech-tax{max-width:100%}.tech-price input{min-height:44px;font-size:16px}.tech-day-label:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}.tech-viewer:not(.tech-sign) :focus-visible{outline-color:#fff}.tech-review-log{gap:8px;display:grid}.tech-profile-summary{margin:8px 0 0}.tech-profile-notes{gap:4px;margin:0;padding-left:18px;font-size:15px;display:grid}.tech-profile-door{gap:6px;margin:6px 4px 0;font-size:15px;display:grid}.tech-profile-door h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:6px 0 0;font-size:13px}.tech-profile-facts{gap:4px;margin:0;display:grid}.tech-profile-facts>div{grid-template-columns:minmax(84px,30%) 1fr;gap:8px;display:grid}.tech-profile-facts dt{color:var(--muted)}.tech-profile-facts dd{margin:0}.tech-profile-unsure{border-radius:var(--radius-sm);background:var(--warn-soft);margin-top:10px;padding:8px 12px}.tech-profile-unsure .tech-history-title{color:var(--warn);margin-top:4px}.tech-profile-unsure ul{gap:4px;margin:0 0 4px;padding-left:18px;display:grid}.tq-fold{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin:0 0 12px;padding:0 12px}.tq-fold>summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-height:44px;padding:10px 0;display:flex}.tq-fold-title{font-weight:600}.tq-fold-sum{overflow-wrap:anywhere}.tq-fold[open]>summary{border-bottom:1px solid var(--border);margin-bottom:8px}.tech-toggle{align-items:center;gap:10px;min-height:44px;font-size:16px;display:flex}.tech-toggle input{width:22px;height:22px;min-height:0;accent-color:var(--accent);margin:0}.tech-job.is-drop{outline:3px dashed var(--accent);outline-offset:-3px;background:var(--accent-soft)}.drop-hint{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:50;pointer-events:none;background:var(--accent);color:#fff;text-align:center;border-radius:999px;max-width:calc(100vw - 32px);padding:10px 16px;font-weight:600;position:fixed;transform:translate(-50%);box-shadow:0 4px 16px #0003}.tech-capture.is-drop .tech-main{outline:3px dashed var(--accent);outline-offset:-6px}.share-picker-thumbs{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.share-picker-thumbs img,.share-picker-thumbs .jn-doc{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);place-items:center;width:100%;display:grid}.tech-viewer-share{min-width:88px}.tech-viewer-count{text-align:center;margin:0 0 8px}li.is-drop>.tech-card{outline:3px dashed var(--accent);outline-offset:-3px;background:var(--accent-soft)}.mic-help-steps{gap:8px;margin:8px 0 12px;padding-left:22px;font-size:16px;line-height:1.35;display:grid}.tech-markup{grid-template-rows:auto minmax(0,1fr) auto}.mk-stage{place-items:center;min-height:0;display:grid;overflow:hidden}.mk-canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;display:block}.mk-tools,.mk-text{gap:8px;padding:8px 12px;display:grid}.mk-text{grid-template-columns:1fr auto auto;align-items:center}.mk-text input{min-height:44px;font-size:16px}.mk-row{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.mk-row .btn-sm{white-space:nowrap;min-width:44px;min-height:44px;padding:4px 7px}.mk-row .mk-tool{color:#fff;background:#222;border-color:#444;flex:1 1 0;min-width:0;padding:4px 2px}.mk-row .mk-tool.is-on{color:#000;background:#fff;border-color:#fff}.mk-color{cursor:pointer;border:3px solid #555;border-radius:50%;flex:none;width:44px;height:44px;padding:0}.mk-color.is-on{border-color:#fff;box-shadow:0 0 0 2px #2557c7}.mk-row .mk-undo{margin-left:auto}.mk-row:last-child{flex-wrap:nowrap}.mk-hint{color:#bbb;text-align:center;margin:0}.tech-markup .btn:not(.btn-primary):not(.mk-tool):not(.is-on){color:#fff;background:#222;border-color:#444}.tech-markup .mk-discard{color:#ffb4b4!important}.jn-markup{justify-self:stretch;min-height:44px;font-size:16px}.tech-markup .btn-sm{min-height:44px;font-size:16px}.tech-viewer-actions{gap:8px;display:flex}.has-site-banner .tech-drawer-panel .tech-bar,.tech-drawer-panel .tech-bar{padding-top:calc(10px + env(safe-area-inset-top))}.tech-card-top{flex-wrap:wrap}.tech-time,.tech-card-top .pill{white-space:nowrap}:is(.tech-pane-detail,.tech-compact) .tech-quick{flex-wrap:wrap;display:flex}:is(.tech-pane-detail,.tech-compact) .tech-quick .btn{min-width:110px;padding-inline:20px}:is(.tech-pane-detail,.tech-compact) .tech-ask-review{justify-self:start;width:auto;padding-inline:24px}:is(.tech-pane-detail,.tech-compact) .tech-foot-row{justify-content:flex-end;gap:10px;display:flex}:is(.tech-pane-detail,.tech-compact) .tech-foot-row>.btn{flex:0 auto;width:auto;min-width:170px;padding-inline:24px}:is(.tech-pane-detail,.tech-compact) .tech-foot-row>.btn:first-child:not(:only-child){margin-right:auto}:is(.tech-pane-list,.tech-drawer-panel) .tech-time{flex-basis:100%}@media (width>=700px){dialog.tech-sign{border-radius:18px;width:min(760px,100% - 48px);height:min(900px,100dvh - 48px);margin:auto;padding:8px 12px 12px;inset:0;box-shadow:0 20px 60px #00000059}dialog.tech-sign::backdrop{background:#00000073}.tech-sign>.tech-viewer-bar:last-child{justify-content:flex-end}.tech-sign>.tech-viewer-bar:last-child .btn{min-width:140px;min-height:48px}}@media (width>=1100px){dialog.tech-sign{width:min(1040px,100% - 64px);height:min(700px,100dvh - 64px)}.tech-sign-body{grid-template-rows:auto auto minmax(260px,1fr) auto auto auto;grid-template-columns:minmax(280px,34%) minmax(0,1fr);column-gap:20px}.tech-sign-body>*{grid-column:2}.tech-sign-body>.tech-sign-hint:first-child{grid-column:1/-1}.tech-sign-body>.tech-sign-summary{grid-area:2/1/span 5;align-self:stretch;max-height:none}}:is(.tech-pane-detail,.tech-compact) .tech-quote[data-testid=tq-describe] .tech-main{max-width:880px}:is(.tech-pane-detail,.tech-compact) .tech-quote[data-testid=tq-describe] .jn-text{min-height:34dvh}:is(.tech-pane-detail,.tech-compact) .tech-quote .tech-review .jn-text{min-height:88px}:is(.tech-pane-detail,.tech-compact) .tech-quote .tq-line-nums{grid-template-columns:minmax(90px,140px) minmax(120px,180px) 1fr}@media (width>=1100px){.tech-pane-detail .tech-quote[data-testid=tq-review] .tech-main{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-content:start;column-gap:16px;display:grid}.tech-pane-detail .tech-quote[data-testid=tq-review] .tech-main>*{grid-column:1}.tech-pane-detail .tech-quote[data-testid=tq-review] .tech-main>.tech-review{grid-area:1/2/span 12;align-self:start;max-height:calc(100dvh - 260px);margin:0;position:sticky;top:0;overflow-y:auto}}.mode-switch{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;grid-template-columns:1fr 1fr;gap:2px;margin:8px 0 4px;padding:3px;display:grid}.mode-switch a{min-height:36px;color:var(--muted);border-radius:999px;place-items:center;font-weight:650;text-decoration:none;display:grid}.mode-switch a.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.seg{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);grid-auto-flow:column;gap:2px;padding:3px;display:inline-grid}.seg button{border-radius:calc(var(--radius) - 2px);min-height:36px;color:var(--muted);font:inherit;background:0 0;border:0;padding:0 14px;font-weight:600}.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.sales-tools{align-items:center;gap:8px;margin:8px 0 4px;display:flex}.sales-search{flex:1 1 0;width:0;min-width:0}.sales-tools .seg{flex:none}.sales-summary-text{-webkit-line-clamp:8;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sales-summary-text.open{display:block}.sales-when{margin-left:auto}.sales-summary .tech-pre{margin:0}.sales-dl{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;display:grid}.sales-dl dt{color:var(--muted)}.sales-dl dd{overflow-wrap:anywhere;margin:0}.sales-quotes{gap:8px;margin:0 0 12px;padding:0;list-style:none;display:grid}.sales-quote{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:10px;padding:10px 12px;display:flex}.sales-quote-main{flex:1;gap:3px;min-width:0;display:grid}.sales-quote-actions{gap:6px;display:flex}.sales-quote-actions .btn{place-items:center;min-width:44px;min-height:40px;text-decoration:none;display:grid}.sales-picked{justify-content:space-between;align-items:center;gap:10px;display:flex}.sales-matches{gap:6px;margin:8px 0;padding:0;list-style:none;display:grid}.sales-match{text-align:left;justify-content:space-between;display:flex}.sales-new-customer{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-top:8px;padding:10px 12px}.sales-new-customer h3{margin:0 0 4px}.sales-new-customer .field-row{margin:8px 0}.sales-nc-row{grid-template-columns:minmax(0,1fr) 4.5em 6.5em;gap:8px;display:grid}.sales-nc-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.sales-pick{margin:0;padding:0;list-style:none}.sales-pick-row{align-items:flex-start;font-weight:400}.tq-open-opp{margin-top:6px}[aria-disabled=true].btn{opacity:.5;pointer-events:none}@media (width>=900px){.sales{max-width:760px;margin:0 auto}}:is(.tech-pane,.tech-compact) .sales{max-width:none;margin:0}.tech-pane-detail .sales .tech-bar-row>a.btn-ghost[href="#/sales"]{display:none}.tech-pane-list .sales .tech-bar{position:sticky;top:0}:is(.tech-pane-detail,.tech-compact) .sales .tech-foot{justify-content:flex-end;display:flex}:is(.tech-pane-detail,.tech-compact) .sales .tech-foot .btn-block{width:auto;min-width:240px;padding-inline:28px}:is(.tech-pane-detail,.tech-compact) .sales .tech-section .btn-block{width:auto;min-width:220px;padding-inline:24px}:is(.tech-pane-detail,.tech-compact) .sales .sales-quote-actions .btn{min-width:64px}@media (width>=1100px){.tech-pane-detail .sales .tech-job:has(>[data-testid=opp-summary]){grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start;column-gap:12px}.tech-pane-detail .sales .tech-job:has(>[data-testid=opp-summary])>*{grid-column:1}.tech-pane-detail .sales .tech-job:has(>[data-testid=opp-summary])>:has([data-testid=opp-quotes]){grid-area:1/2/span 6}}.sales-quote-sign{place-items:center;margin-top:12px;text-decoration:none;display:grid}.tech-capture .btn,.tech-capture .jn-pickers label.btn{min-height:44px;padding:8px 14px;font-size:16px}.tech-capture .tech-bar .btn-ghost{margin-left:-10px;padding:8px 10px}.tech-capture input,.tech-capture textarea{font-size:16px}.tech-capture .tech-reply input{min-height:44px}.tech-capture .row-actions{gap:8px}.tech-capture .cap-draft{border-radius:var(--radius-sm);background:var(--ok-soft);color:var(--ok);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 8px;margin:0 0 4px;padding:2px 4px 2px 12px;font-size:14px;display:flex}.tech-capture .cap-draft.is-warn{background:var(--warn-soft);color:var(--warn);padding:8px 12px;font-weight:550}.tech-capture .cap-draft>span:first-child{flex:180px;padding:6px 0}.tech-capture .cap-draft-discard{color:var(--danger);margin-left:auto}.tech-capture .cap-draft-actions{gap:8px;margin-left:auto;padding:4px 0;display:flex}.tech-capture .cap-danger,.tech-capture .cap-danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.tech-capture .cap-recs{gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.tech-capture .cap-rec{border-radius:var(--radius-sm);background:var(--warn-soft);color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px 8px 12px;display:flex}.tech-capture .cap-rec-text{overflow-wrap:anywhere;flex:180px;gap:2px;display:grid}.tech-capture .cap-rec-text .small{color:var(--warn);font-size:13px}.tech-capture .cap-rec-actions{gap:6px;margin-left:auto;display:flex}.tech-capture .jn-remove{background:0 0;place-items:center;width:44px;height:44px;padding:0;display:grid;top:0;right:0}.tech-capture .jn-remove span{color:#fff;background:#101828b3;border-radius:50%;place-items:center;width:30px;height:30px;font-size:20px;line-height:1;display:grid}.tech-capture .jn-preparing img{opacity:.6}.tech-capture .cap-proposal{border-radius:var(--radius);background:var(--ai-soft);gap:6px;margin:4px 0 12px;padding:12px;display:grid}.tech-capture .cap-proposal>h2,.tech-capture .cap-proposal>p{margin:0}.tech-capture .cap-proposal-text{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:var(--radius-sm);background:var(--surface);padding:10px 12px;font-size:16px;line-height:1.45}.tech-capture .tech-foot .btn-block{white-space:normal;text-align:center;line-height:1.25}.tech-capture .cap-foot-split{grid-template-columns:1fr 1fr;gap:8px;display:grid}.tech-capture .cap-foot-split.is-single{grid-template-columns:1fr}.tech-capture .tech-foot .cap-foot-split .btn-block{min-height:56px;font-size:17px;font-weight:600}.tech-capture .jn-talk{justify-content:center;align-items:center;gap:10px;display:flex}.tech-capture .jn-talk.on{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.tech-capture .jn-talk .jn-mic-dot{background:var(--danger);border-radius:50%;flex:none;width:12px;height:12px}.tech-capture .jn-talk.on .jn-mic-dot{animation:1s infinite pulse}.tech-capture .cap-existing{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin:0 0 8px;padding:0 12px}.tech-capture .cap-existing>summary{cursor:pointer;align-items:center;min-height:44px;font-weight:550;display:flex}.tech-capture .cap-existing>p{max-height:40dvh;margin:0 0 12px;overflow-y:auto}.tech-capture .cap-adds{margin:0 0 4px}.tech-capture textarea::placeholder{color:var(--muted);opacity:1;font-style:italic}:is(.tech-pane-detail,.tech-compact) .tech-capture .jn-text{min-height:40dvh}:is(.tech-pane-detail,.tech-compact) .tech-capture .cap-foot-split,:is(.tech-pane-detail,.tech-compact) .tech-capture .cap-foot-split.is-single{justify-content:flex-end;gap:10px;display:flex}:is(.tech-pane-detail,.tech-compact) .tech-capture .tech-foot .cap-foot-split .btn-block{width:auto;min-width:200px;padding-inline:28px}:is(.tech-pane-detail,.tech-compact) .tech-capture .tech-foot:has(>.btn-block){justify-content:flex-end;display:flex}:is(.tech-pane-detail,.tech-compact) .tech-capture .tech-foot>.btn-block{width:auto;min-width:240px}@media (width>=1100px){.tech-pane-detail .tech-capture:not(.tech-quote) .jobnotes{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-content:start;column-gap:16px;display:grid}.tech-pane-detail .tech-capture .jobnotes>*{grid-column:1}.tech-pane-detail .tech-capture .jobnotes>.cap-existing{grid-area:1/2/span 8;align-self:start;max-height:calc(100dvh - 240px);margin:0;overflow-y:auto}.tech-pane-detail .tech-capture .jobnotes>.cap-existing>p{max-height:none}.tech-pane-detail .tech-capture:not(.tech-quote) .jn-text{min-height:45dvh}}
