:root{--bg:#f7f7f7;--surface:#fff;--surface-sunken:#f0f0f0;--border:#e0e0e0;--border-strong:#c4c4c4;--text:#1a1a1a;--text-muted:#666;--text-faint:#999;--primary:#f15b2d;--primary-hover:#d14a1f;--primary-soft:#fdece4;--primary-contrast:#1a1a1a;--danger:#c41e3a;--danger-soft:#fbe7ea;--ok:#1e8a5f;--ok-soft:#e3f6ed;--warning:#b8860b;--warning-soft:#fbf3d9;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-pill:999px;--shadow-sm:0 1px 2px #0000000f, 0 1px 1px #0000000a;--shadow-md:0 6px 16px #0000001a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#121212;--surface:#1e1e1e;--surface-sunken:#171717;--border:#333;--border-strong:#4a4a4a;--text:#f0f0f0;--text-muted:#a8a8a8;--text-faint:#787878;--primary:#ff7a4d;--primary-hover:#ff9269;--primary-soft:#ff7a4d29;--primary-contrast:#121212;--danger:#ff6b7a;--danger-soft:#ff6b7a29;--ok:#3fbf8a;--ok-soft:#3fbf8a29;--warning:#e0ac4a;--warning-soft:#e0ac4a29;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 6px 20px #0006}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0}#root{flex-direction:column;min-height:100svh;display:flex}.app{background:var(--bg);flex-direction:column;width:100%;max-width:720px;min-height:100svh;margin:0 auto;display:flex}.app__header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);padding-top:calc(var(--space-3) + env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--surface);z-index:10;display:flex;position:sticky;top:0}.app__brand{align-items:center;gap:var(--space-2);background:0 0;border:none;min-width:0;margin:0;padding:0;display:flex}.app__brand img{flex-shrink:0;display:block}.app__header h2{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:600;overflow:hidden}.page{padding:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));gap:var(--space-4);flex-direction:column;flex:1;display:flex}.page-header{gap:var(--space-1);flex-direction:column;display:flex}.page-header__title{margin:0;font-size:20px;font-weight:700}.page-header__subtitle{color:var(--text-muted);font-size:13px}.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-sm);gap:var(--space-3);flex-direction:column;display:flex}.section__header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.section__title{align-items:center;gap:var(--space-2);color:var(--text);margin:0;font-size:14px;font-weight:600;display:flex}.link-row{text-align:left;flex-direction:row;justify-content:space-between;width:100%}.link-row span{align-items:center;gap:var(--space-2);font-size:14px;font-weight:600;display:flex}.link-row svg:last-child,.section__title svg{color:var(--text-muted);flex-shrink:0}h1{margin:0 0 var(--space-3);font-size:20px}h3{margin:var(--space-4) 0 var(--space-2);align-items:center;gap:var(--space-2);font-size:14px;font-weight:600;display:flex}h3 svg{color:var(--text-muted)}h4{margin:0;font-size:13px}p{margin:0}.field{margin-bottom:var(--space-3);display:block}.field:last-child{margin-bottom:0}label{color:var(--text-muted);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.03em;font-size:12px;font-weight:600;display:block}input,textarea,select{width:100%;margin-top:var(--space-1);text-transform:none;letter-spacing:normal;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:9px 11px;font-size:15px;font-weight:400;transition:border-color .12s;display:block}input:focus,textarea:focus,select:focus{border-color:var(--primary);outline:none}.input-with-icon{position:relative}.input-with-icon svg{color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.input-with-icon input{padding-left:34px}button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:500;transition:background-color .12s,border-color .12s,transform 50ms;display:inline-flex}button:active{transform:scale(.98)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}button svg{flex-shrink:0}button.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast);font-weight:600}button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}button.ghost{color:var(--text-muted);padding:var(--space-2) 4px;background:0 0;border:none}button.ghost:hover{color:var(--text)}button.danger{color:var(--danger);border-color:var(--danger);background:0 0}button.danger:hover{background:var(--danger-soft)}button.icon-only{border-radius:var(--radius-sm);padding:8px}.button-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.button-row.stacked{flex-direction:column}.button-row.stacked>button{justify-content:center;width:100%}button.back-link{padding:var(--space-1) 0;color:var(--text-muted);background:0 0;border:none;font-size:13px;font-weight:500}button.back-link:hover{color:var(--text)}.action-grid{gap:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}.action-card{align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);text-align:center;box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.action-card svg{color:var(--primary);width:26px;height:26px}.action-card span{white-space:normal;font-size:13px;font-weight:600}.banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);font-size:13px;display:flex}.banner svg{flex-shrink:0;margin-top:1px}.banner--error{background:var(--danger-soft);color:var(--danger)}.banner--ok{background:var(--ok-soft);color:var(--ok)}.banner--neutral{background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border)}.banner--warning{background:var(--warning-soft);color:var(--warning)}.sync-status-banner{padding:var(--space-4);font-size:15px;font-weight:600}.sync-status-banner strong{font-size:16px;display:block}.sync-status-banner div>div{opacity:.85;font-size:13px;font-weight:400}.status-pill{border-radius:var(--radius-pill);background:var(--border);color:var(--text-muted);white-space:nowrap;align-items:center;gap:4px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.status-pill--draft{background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border)}.status-pill--ready_to_submit,.status-pill--syncing{background:var(--warning-soft);color:var(--warning)}.status-pill--synced{background:var(--ok-soft);color:var(--ok)}.status-pill--sync_error{background:var(--danger-soft);color:var(--danger)}.status-pill--sync-ok{background:var(--ok-soft);color:var(--ok)}.status-pill--sync-stale{background:var(--warning-soft);color:var(--warning)}.status-pill--sync-down{background:var(--danger-soft);color:var(--danger)}.status-pill--sync-unknown{background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border)}.job-list{gap:var(--space-2);flex-direction:column;display:flex}.job-card{text-align:left;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);content-visibility:auto;contain-intrinsic-size:0 84px;display:flex}.job-card__body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.job-card__top{align-items:center;gap:var(--space-2);display:flex}.job-card__number{font-size:14px;font-weight:700}.job-card__customer,.job-card__address{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.job-card__chevron{color:var(--text-faint);flex-shrink:0}.sync-pill{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-sunken);color:var(--text-muted);flex-shrink:0;align-items:center;gap:6px;padding:7px 12px;font-size:12px;font-weight:600;display:flex}.sync-pill svg{flex-shrink:0}.sync-pill--online svg{color:var(--ok)}.sync-pill--offline svg{color:var(--danger)}.sync-pill__badge{background:var(--primary);color:var(--primary-contrast);border-radius:var(--radius-pill);padding:1px 7px;font-size:11px}.bundle-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bundle-list__row{align-items:stretch;gap:var(--space-2);display:flex}.bundle-list__item{justify-content:space-between;align-items:center;gap:var(--space-2);text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3);flex:1;display:flex}.bundle-list__meta{flex-direction:column;gap:2px;min-width:0;display:flex}.bundle-list__date{font-size:13px;font-weight:500}.bundle-list__amount{color:var(--text-muted);font-size:12px}.bundle-list__row button.danger{width:auto;padding:var(--space-2);flex-shrink:0}.empty-state{color:var(--text-muted);padding:var(--space-3);text-align:center;border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:13px}.info-list{gap:var(--space-2);flex-direction:column;display:flex}.info-row{align-items:center;gap:var(--space-2);color:var(--text);font-size:14px;display:flex}.info-row svg{color:var(--text-faint);flex-shrink:0}.info-row--muted{color:var(--text-muted);font-size:13px}.measurements-grid{gap:0 var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}.slope-tabs{gap:var(--space-1);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px;display:flex}.slope-tab{color:var(--text-muted);background:0 0;border:none;flex:1;font-weight:500}.slope-tab--active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);font-weight:600}.photo-capture__actions{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.photo-capture__add{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);align-items:center;gap:6px;padding:10px 14px;font-size:14px;font-weight:500;display:inline-flex}.photo-capture__add svg{color:var(--primary)}.photo-capture__grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.photo-thumb{border-radius:var(--radius-sm);aspect-ratio:1;border:1px solid var(--border);padding:0;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-thumb__badge{color:#fff;background:#000000a6;border-radius:6px;justify-content:center;align-items:center;gap:3px;padding:3px 4px;font-size:10px;font-weight:600;display:flex;position:absolute;bottom:4px;left:4px;right:4px}.photo-thumb__badge--muted{background:#c41e3ad9}.photo-overlay{z-index:100;background:#0a0f16;flex-direction:column;display:flex;position:fixed;inset:0}.photo-overlay__header{padding:var(--space-3);padding-top:calc(var(--space-3) + env(safe-area-inset-top));justify-content:space-between;display:flex}.photo-overlay__header button{color:#fff;background:#ffffff1a;border-color:#ffffff26}.photo-overlay__header button.primary{background:var(--primary);border-color:var(--primary)}.photo-overlay__image-wrap{flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:auto}.photo-overlay__image-wrap img{max-width:100%;max-height:100%}.photo-pin{background:var(--danger);color:#fff;width:28px;height:28px;box-shadow:var(--shadow-md);border:2px solid #fff;border-radius:50%;padding:0;font-weight:700;position:absolute;transform:translate(-50%,-50%)}.photo-pin--active{outline:3px solid #ffd54f}.photo-overlay__pin-editor{background:var(--surface);padding:var(--space-3);border-top:1px solid var(--border)}.tag-chips{margin-bottom:var(--space-2);flex-wrap:wrap;gap:6px;display:flex}.tag-chip{padding:7px 12px;font-size:12px}.tag-chip--selected{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}.photo-overlay__hint{color:#ffffffb3;text-align:center;padding:var(--space-2);padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom));font-size:12px}.table-scroll{overflow-x:auto}.materials-editor table{border-collapse:collapse;width:100%;min-width:420px;font-size:13px}.materials-editor td,.materials-editor th{padding:var(--space-1);text-align:left}.materials-editor th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding-bottom:var(--space-2);font-size:11px;font-weight:600}.materials-editor td:last-child button{padding:6px}.budget-summary{margin-top:var(--space-2);color:var(--text-muted);flex-direction:column;gap:2px;font-size:13px;display:flex}.budget-summary__total{color:var(--text);margin-top:4px;font-size:17px;font-weight:700}.review-slope{align-items:baseline;gap:var(--space-2);border-bottom:1px solid var(--border);padding:6px 0;font-size:14px;display:flex}.review-slope:last-child{border-bottom:none}.review-slope strong{min-width:56px}.diagnostics-table{border-collapse:collapse;width:100%;min-width:360px;font-size:13px}.diagnostics-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding-bottom:var(--space-2);font-size:11px}.diagnostics-table td{border-top:1px solid var(--border);padding:var(--space-2) 4px;text-align:left}.error-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.error-list li{align-items:flex-start;gap:var(--space-2);background:var(--danger-soft);color:var(--danger);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:13px;display:flex}.error-list svg{flex-shrink:0;margin-top:2px}.log-tail{flex-direction:column;gap:4px;max-height:260px;margin:0;padding:0;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;list-style:none;display:flex;overflow-y:auto}.log-tail__error{color:var(--danger)}.jobnimbus-budget{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);background:var(--surface);box-shadow:var(--shadow-sm)}.jobnimbus-budget__status{background:var(--warning-soft);color:var(--warning);border-radius:var(--radius-pill);margin-left:var(--space-2);padding:2px 8px;font-size:11px;font-weight:600}.jobnimbus-budget__hint{color:var(--text-muted);font-size:12px}.jobnimbus-budget__totals{gap:var(--space-3);flex-wrap:wrap;font-size:13px;display:flex}.jobnimbus-budget__totals strong{color:var(--text)}.jobnimbus-budget__table{border-collapse:collapse;width:100%;min-width:320px;font-size:12px}.jobnimbus-budget__table th{text-align:left;text-transform:uppercase;color:var(--text-muted);padding-bottom:4px;font-size:10px}.jobnimbus-budget__table td{text-align:left;border-top:1px solid var(--border);padding:3px 4px}.jobnimbus-budget__loading{color:var(--text-muted);align-items:center;gap:var(--space-2);font-size:13px;display:flex}.confirm-dialog__backdrop{z-index:200;padding:var(--space-4);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-5);text-align:center;width:100%;max-width:340px}.confirm-dialog__icon{background:var(--danger-soft);width:44px;height:44px;color:var(--danger);border-radius:50%;display:flex}.confirm-dialog__icon--neutral{background:var(--primary-soft);color:var(--primary);margin:0 auto var(--space-3);justify-content:center;align-items:center}.confirm-dialog__title{margin:0 0 var(--space-2);font-size:16px}.confirm-dialog__message{color:var(--text-muted);margin:0 0 var(--space-4);font-size:14px}.confirm-dialog__actions{gap:var(--space-2);display:flex}.confirm-dialog__actions button{flex:1;justify-content:center}.confirm-dialog__actions button.danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}.confirm-dialog__actions button.danger:hover{background:var(--danger);opacity:.9}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
