:root{--bg:#f5f7fb;--card:#fff;--text:#0f172a;--muted:#64748b;--line:#dbe3ef;--blue:#0f62fe;--blue2:#eaf2ff;--green:#0f8a43;--greenBg:#eaf8ef;--amber:#a16207;--amberBg:#fff7dd;--shadow:0 18px 45px rgba(15,23,42,.08);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#fff 0,#f3f6fb 36%,#edf2f8 100%);color:var(--text)}button,input,textarea{font:inherit}.splash,.loginShell{min-height:100dvh;display:grid;place-items:center;padding:24px}.loader{width:42px;height:42px;border-radius:999px;border:4px solid #d8e2ef;border-top-color:var(--blue);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loginCard{width:min(460px,100%);background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:28px;padding:30px;box-shadow:var(--shadow)}.brandMark{width:52px;height:52px;border-radius:18px;background:linear-gradient(135deg,var(--blue),#083a99);color:white;display:grid;place-items:center;font-weight:900;letter-spacing:.08em}.loginCard h1,.topBar h1{margin:.45rem 0 .25rem;font-size:clamp(1.65rem,6vw,2.4rem)}.muted,.tinyNote{color:var(--muted)}.tinyNote{font-size:.85rem}.loginForm{display:grid;gap:14px;margin-top:22px}.loginForm label{display:grid;gap:7px;font-weight:700}.loginForm input,.chatForm input,textarea{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding:14px 15px;color:var(--text);outline:none}.loginForm input:focus,.chatForm input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(15,98,254,.12)}.checkRow{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;font-weight:600!important;color:var(--muted)}.checkRow input{width:auto}.primaryButton,.secondaryButton,.chatForm button{border:0;border-radius:15px;padding:14px 18px;font-weight:800;cursor:pointer}.primaryButton,.chatForm button{background:linear-gradient(135deg,var(--blue),#084cdf);color:#fff;box-shadow:0 10px 20px rgba(15,98,254,.2)}.primaryButton:disabled{opacity:.55;cursor:not-allowed}.secondaryButton{background:#fff;border:1px solid var(--line);color:#1e293b}.errorText{color:#b42318;background:#fff1f0;border:1px solid #ffd5d2;padding:10px;border-radius:12px}.appShell{width:min(1440px,100%);margin:0 auto;padding:clamp(14px,3vw,28px);min-height:100dvh}.topBar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:18px 4px 22px}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-weight:900;color:var(--blue);font-size:.78rem;margin:0}.userBox{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.85);border:1px solid var(--line);padding:9px 10px;border-radius:999px}.userBox button{border:0;background:#eef4ff;color:#0f3c8a;border-radius:999px;padding:8px 12px;font-weight:800}.layout{display:grid;grid-template-columns:370px 1fr;gap:18px}.sidebar,.detailPane{min-width:0}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#e8eef7;padding:6px;border-radius:18px;margin-bottom:12px}.tabs button{border:0;background:transparent;border-radius:14px;padding:12px;font-weight:900;color:var(--muted)}.tabs button.active{background:#fff;color:var(--text);box-shadow:0 6px 14px rgba(15,23,42,.08)}.woList{display:grid;gap:12px}.woCard,.emptyCard,.card{background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:22px;box-shadow:0 8px 24px rgba(15,23,42,.05)}.woCard{width:100%;text-align:left;padding:16px;cursor:pointer}.woCard.selected{border-color:var(--blue);box-shadow:0 0 0 4px rgba(15,98,254,.12)}.woTop{display:flex;justify-content:space-between;align-items:center;gap:10px}.woCard h3{margin:10px 0 4px;font-size:1rem}.woCard p{margin:0 0 8px;color:#334155}.woCard small{color:var(--muted)}.status{font-size:.74rem;font-weight:900;border-radius:999px;padding:6px 9px;white-space:nowrap}.status-scheduled{background:#edf2f7;color:#334155}.status-dispatched{background:var(--amberBg);color:var(--amber)}.status-arrived{background:var(--blue2);color:#084cdf}.status-ready-for-review,.status-completed{background:var(--greenBg);color:var(--green)}.emptyCard,.card{padding:18px}.detailHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.detailHeader h2{margin:4px 0;font-size:clamp(1.4rem,4vw,2rem)}.detailHeader p:last-child{margin:.25rem 0;color:var(--muted)}.actionGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}.statusLine,.successLine{padding:11px 13px;border-radius:14px;margin:10px 0;font-weight:700}.statusLine{background:#eef4ff;color:#0f3c8a}.successLine{background:var(--greenBg);color:var(--green)}.infoGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card h3{margin:0 0 12px}.card p,.card li{line-height:1.45}.card ul{margin:0;padding-left:20px}.assistantGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.chatCard,.noteCard{display:flex;flex-direction:column;min-height:420px}.chatBox{flex:1;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:4px}.msg{display:flex}.msg span{max-width:88%;border-radius:18px;padding:12px 14px;line-height:1.38}.msgAi span{background:var(--blue2);color:#0f2d66;border-bottom-left-radius:6px}.msgUser{justify-content:flex-end}.msgUser span{background:#f1f5f9;color:#0f172a;border-bottom-right-radius:6px}.chatForm{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:12px}textarea{min-height:300px;resize:vertical;line-height:1.45}.noteCard .primaryButton{margin-top:10px}@media (max-width:980px){.layout{grid-template-columns:1fr}.sidebar{order:1}.detailPane{order:2}.woList{grid-template-columns:repeat(2,minmax(0,1fr))}.assistantGrid{grid-template-columns:1fr}}@media (max-width:640px){.appShell{padding:12px}.topBar{align-items:flex-start}.userBox{flex-direction:column;align-items:flex-end;border-radius:18px}.woList{grid-template-columns:1fr}.detailHeader{flex-direction:column}.actionGrid{grid-template-columns:1fr}.infoGrid{grid-template-columns:1fr}.loginCard{padding:22px;border-radius:24px}.chatCard,.noteCard{min-height:auto}.chatBox{max-height:320px}.primaryButton,.secondaryButton,.chatForm button{min-height:48px}}

.errorBanner { background:#fff1f2; color:#9f1239; border:1px solid #fecdd3; border-radius:16px; padding:12px 14px; margin:12px 0; font-size:14px; }
.errorBanner strong { color:#881337; }
.emptyCard h3 { margin:0 0 8px; }
.finishButton{margin-top:10px;width:100%;}

/* v2.2 updates */
html[data-theme="dark"]{--bg:#08111f;--card:#101b2d;--text:#eef5ff;--muted:#9fb0c7;--line:#26364d;--blue:#61a5ff;--blue2:#132b4d;--green:#52d681;--greenBg:#0f3321;--amber:#f8c555;--amberBg:#3a2b08;--shadow:0 18px 45px rgba(0,0,0,.35)}
html[data-theme="dark"] body{background:radial-gradient(circle at top,#15243a 0,#0b1424 42%,#070d18 100%);color:var(--text)}
html[data-theme="dark"] .loginCard,html[data-theme="dark"] .userBox,html[data-theme="dark"] .woCard,html[data-theme="dark"] .emptyCard,html[data-theme="dark"] .card{background:rgba(16,27,45,.94);border-color:var(--line)}
html[data-theme="dark"] .loginForm input,html[data-theme="dark"] .chatForm input,html[data-theme="dark"] textarea{background:#0b1424;border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .secondaryButton{background:#0b1424;color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .tabs{background:#0c1728}html[data-theme="dark"] .tabs button.active{background:#17263d;color:var(--text)}
html[data-theme="dark"] .woCard p,html[data-theme="dark"] .msgUser span{color:var(--text)}
html[data-theme="dark"] .msgUser span{background:#1b2b43}html[data-theme="dark"] .msgAi span{background:var(--blue2);color:#dbeafe}
html[data-theme="dark"] .userBox button{background:#17263d;color:#dbeafe}
html[data-theme="dark"] .status-scheduled{background:#1b2b43;color:#cbd5e1}
html[data-theme="dark"] .errorText{background:#391311;border-color:#7f1d1d;color:#fecaca}
html[data-theme="dark"] .statusLine{background:#102846;color:#bfdbfe}
html[data-theme="dark"] .mapButton{background:#102846;color:#dbeafe;border-color:#2f5f9d}
.themeLink{margin-top:12px;border:0;background:transparent;color:var(--blue);font-weight:900;cursor:pointer;padding:8px 0}.themeLink:hover{text-decoration:underline}
.sectionLabel{font-size:.76rem;text-transform:uppercase;letter-spacing:.12em;font-weight:900;color:var(--muted);padding:6px 4px 10px;border-bottom:2px solid var(--line);margin-bottom:12px}.detailPane{border-left:3px solid var(--blue);padding-left:18px}.editingMarker{display:flex;align-items:center;gap:12px;margin-bottom:12px;color:var(--blue);font-weight:900;text-transform:uppercase;letter-spacing:.1em;font-size:.76rem}.editingMarker:before,.editingMarker:after{content:"";height:2px;background:var(--blue);opacity:.65;flex:1}.editingMarker span{white-space:nowrap}.detailActions{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.mapButton{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid #bcd4ff;background:#eef4ff;color:#0f3c8a;border-radius:999px;padding:9px 12px;font-size:.85rem;font-weight:900;white-space:nowrap}.mapButton:before{content:"📍";margin-right:6px}.collapsibleCard{padding:0;overflow:hidden}.collapsibleCard summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px;font-weight:900}.collapsibleCard summary::-webkit-details-marker{display:none}.collapsibleCard summary span:before{content:"▸";display:inline-block;margin-right:8px;transition:transform .18s ease;color:var(--blue)}.collapsibleCard[open] summary span:before{transform:rotate(90deg)}.collapsibleCard summary small{color:var(--muted);font-weight:800}.collapsibleBody{border-top:1px solid var(--line);padding:16px 18px 18px}
@media (max-width:980px){.detailPane{border-left:0;border-top:3px solid var(--blue);padding-left:0;padding-top:16px}.editingMarker{margin-top:2px}.detailActions{align-items:flex-start}.sectionLabel{margin-top:4px}}
@media (max-width:640px){.editingMarker span{font-size:.7rem}.detailActions{width:100%}.mapButton{width:100%;border-radius:14px}.collapsibleCard summary{align-items:flex-start;flex-direction:column}}

/* v2.3 fixes */
.brandMark{background:transparent!important;box-shadow:none;overflow:hidden;border:1px solid var(--line)}
.brandMark img{width:100%;height:100%;object-fit:contain;display:block;border-radius:inherit;background:#fff}
.brandHeader{display:flex;align-items:center;gap:14px;min-width:0}
.brandHeader img{width:52px;height:52px;object-fit:contain;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:0 8px 22px rgba(15,23,42,.08)}
.noteItem{margin-bottom:12px}.noteItem small{display:block;margin-top:4px;color:var(--muted);font-size:.78rem;font-weight:800}.noteItem:last-child{margin-bottom:0}
html[data-theme="dark"] .woTop span,html[data-theme="dark"] .woCard h3,html[data-theme="dark"] .detailHeader h2,html[data-theme="dark"] .detailHeader p,html[data-theme="dark"] .card h3{color:var(--text)}
html[data-theme="dark"] .woCard small,html[data-theme="dark"] .tinyNote,html[data-theme="dark"] .muted,html[data-theme="dark"] .noteItem small{color:var(--muted)}
html[data-theme="dark"] .eyebrow,html[data-theme="dark"] .sectionLabel,html[data-theme="dark"] .editingMarker{color:var(--blue)}
html[data-theme="dark"] .brandHeader img,html[data-theme="dark"] .brandMark img{background:#fff;border-color:#2b3a53}
html[data-theme="dark"] .primaryButton,html[data-theme="dark"] .chatForm button{color:#fff}
html[data-theme="dark"] .secondaryButton,html[data-theme="dark"] .tabs button,html[data-theme="dark"] .userBox span{color:var(--text)}
@media (max-width:640px){.brandHeader img{width:44px;height:44px}.brandHeader{gap:10px}}

/* v3.1 updates */
.scheduleStamp{font-weight:900;color:var(--text);white-space:nowrap}
.scheduleDetail{font-weight:800;color:var(--blue)!important;margin-top:6px!important}
.documentList{list-style:none;margin:0!important;padding:0!important;display:grid;gap:12px}.documentList li{padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:rgba(248,250,252,.72)}.documentList a{font-weight:900;color:var(--blue);text-decoration:none}.documentList a:hover{text-decoration:underline}.documentList small{display:block;margin-top:4px;color:var(--muted);font-weight:700;font-size:.78rem;line-height:1.35}
html[data-theme="dark"] .documentList li{background:#0b1424;border-color:var(--line)}
html[data-theme="dark"] .scheduleStamp,html[data-theme="dark"] .scheduleDetail{color:var(--text)!important}
@media (max-width:640px){.woTop{align-items:flex-start}.scheduleStamp{font-size:.92rem}}


/* v3.2 updates */
.secondaryButton:disabled,.completeButton:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.25)}
.completeHint{margin:-2px 0 12px;text-align:right}
html[data-theme="dark"] .secondaryButton:disabled,html[data-theme="dark"] .completeButton:disabled{opacity:.45}
@media (max-width:640px){.completeHint{text-align:left;margin-top:0}}

/* v3.4 updates */
.chatBox{scroll-behavior:smooth;}
.noteItem div{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;}
.partRow{border:1px solid var(--line);border-radius:16px;padding:12px;margin-bottom:12px;background:rgba(248,250,252,.72)}
.partFields{display:grid;grid-template-columns:1.1fr 1.4fr .55fr 1fr;gap:8px;align-items:end}
.partFields label{display:grid;gap:5px;font-size:.78rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.partFields input{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700}
.partActions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.smallButton{padding:9px 12px;border-radius:12px;font-size:.85rem}.dangerButton{border:1px solid #fecaca;background:#fff1f2;color:#b42318;border-radius:12px;padding:9px 12px;font-weight:900;cursor:pointer}
.addPartForm{border-top:1px solid var(--line);padding-top:14px;margin-top:12px}.addPartForm h4{margin:0 0 10px}.addPartForm .secondaryButton{margin-top:10px;width:100%}
html[data-theme="dark"] .partRow,html[data-theme="dark"] .documentList li{background:#0b1424}html[data-theme="dark"] .partFields input{background:#0b1424;color:var(--text);border-color:var(--line)}html[data-theme="dark"] .dangerButton{background:#3a1217;color:#fecdd3;border-color:#7f1d1d}
@media (max-width:760px){.partFields{grid-template-columns:1fr 1fr}.partActions{justify-content:stretch}.partActions button{flex:1}}
@media (max-width:480px){.partFields{grid-template-columns:1fr}}

/* v3.6 parts summary + full-screen parts panel */
.partsSummary{display:grid;gap:12px}.partsSummaryTop{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.partsSummaryTop strong{display:block;font-size:1.05rem}.partsSummaryTop small{display:block;color:var(--muted);font-weight:800;margin-top:3px}.pendingBadge{display:inline-flex;align-items:center;border-radius:999px;background:var(--amberBg);color:var(--amber);font-weight:900;font-size:.72rem;padding:5px 8px;white-space:nowrap}.partsPreview{list-style:none!important;margin:0!important;padding:0!important;display:grid;gap:8px}.partsPreview li{border:1px solid var(--line);border-radius:12px;padding:9px 10px;background:rgba(248,250,252,.72)}.partsPreview span{display:block;color:var(--text);font-weight:700}.partsPreview small{display:block;color:var(--muted);font-size:.78rem;font-weight:800;margin-top:2px}.partsSummary .secondaryButton{width:100%}
.modalBackdrop{position:fixed;inset:0;z-index:1000;background:rgba(2,6,23,.56);display:flex;align-items:stretch;justify-content:flex-end;padding:16px}.partsPanel{width:min(760px,100%);background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:auto;padding:18px}.partsPanelHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:14px}.partsPanelHeader h2{margin:4px 0 4px}.partsLookupBox{border:1px solid var(--line);border-radius:18px;padding:14px;margin-bottom:14px;background:rgba(248,250,252,.55)}.partsLookupBox h3{margin:0 0 10px}.partSearchForm{display:grid;grid-template-columns:1fr auto;gap:8px}.partSearchForm input,.partEditFields input{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none}.lookupResults{display:grid;gap:8px;margin-top:10px;max-height:260px;overflow:auto}.lookupResult{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--text);padding:10px;text-align:left;cursor:pointer}.lookupResult strong,.lookupResult span,.lookupResult small{display:block}.lookupResult strong{color:var(--blue)}.lookupResult span{font-weight:800;margin-top:2px}.lookupResult small{color:var(--muted);font-size:.78rem;margin-top:3px}.lookupResult.selected{border-color:var(--blue);box-shadow:0 0 0 3px rgba(15,98,254,.12)}.selectedPartBox{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;display:grid;gap:10px}.partsListPanel{display:grid;gap:10px}.partCompactRow{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:rgba(248,250,252,.72)}.partCompactRow.expanded{box-shadow:0 0 0 3px rgba(15,98,254,.08)}.partRowHeader{width:100%;border:0;background:transparent;color:var(--text);display:flex;justify-content:space-between;align-items:flex-start;gap:12px;text-align:left;padding:13px;cursor:pointer}.partRowHeader strong,.partRowHeader span,.partRowHeader small{display:block}.partRowHeader strong{color:var(--blue);font-size:1rem}.partRowHeader span{font-weight:800;margin-top:2px}.partRowHeader small{color:var(--muted);font-weight:800;margin-top:3px}.partRowMeta{display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:.8rem;font-weight:900;color:var(--muted)}.partExpanded{border-top:1px solid var(--line);padding:13px}.partDetailsGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.partDetailsGrid div{border:1px solid var(--line);border-radius:12px;padding:9px 10px}.partDetailsGrid dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:900}.partDetailsGrid dd{margin:3px 0 0;font-weight:800;overflow-wrap:anywhere}.partEditFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.partEditFields.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.partEditFields label{display:grid;gap:5px;font-size:.76rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.partEditFields input[readonly]{opacity:.72;background:#f8fafc}.partActions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-top:12px}
html[data-theme="dark"] .partsPreview li,html[data-theme="dark"] .partsLookupBox,html[data-theme="dark"] .partCompactRow{background:#0b1424}html[data-theme="dark"] .lookupResult,html[data-theme="dark"] .partSearchForm input,html[data-theme="dark"] .partEditFields input{background:#0b1424;color:var(--text);border-color:var(--line)}html[data-theme="dark"] .partEditFields input[readonly]{background:#101b2d}html[data-theme="dark"] .modalBackdrop{background:rgba(0,0,0,.72)}
@media (max-width:760px){.modalBackdrop{padding:0}.partsPanel{border-radius:0;width:100%;height:100dvh}.partsPanelHeader{position:sticky;top:0;background:var(--card);z-index:2}.partSearchForm{grid-template-columns:1fr}.partEditFields,.partEditFields.compact,.partDetailsGrid{grid-template-columns:1fr}.partRowHeader{align-items:stretch}.partRowMeta{flex-direction:column;align-items:flex-end}.partsSummaryTop{flex-direction:column}.partActions{justify-content:stretch}.partActions button{flex:1 1 150px}}

/* v3.7 schedule/date + parts preview + status workflow */
.partsMoreButton{width:100%;border:0;background:transparent;color:var(--muted);font-weight:900;font-size:1rem;text-align:left;padding:8px 0;cursor:pointer}
.partsMoreButton:hover{color:var(--blue)}
.actionGrid button:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.2)}
html[data-theme="dark"] .partsMoreButton{color:var(--muted)}
html[data-theme="dark"] .partsMoreButton:hover{color:var(--blue)}

/* v4.7 return visit safety */
.status-return-visit{background:var(--amberBg);color:var(--amber)}
.infoBanner{background:#eef4ff;color:#0f3c8a;border:1px solid #bfdbfe;border-radius:16px;padding:12px 14px;margin:12px 0;font-size:14px;line-height:1.4}
.infoBanner strong{color:#0f2d66}
html[data-theme="dark"] .infoBanner{background:#0b1f3a;color:#bfdbfe;border-color:#1d4ed8}
html[data-theme="dark"] .infoBanner strong{color:#dbeafe}


/* v4.8 return visit override */
.returnVisitButton{border-color:#facc15;background:#fffbeb;color:#92400e}
.returnVisitButton:hover{background:#fef3c7}
html[data-theme="dark"] .returnVisitButton{background:#332508;color:#fde68a;border-color:#a16207}
@media (max-width:980px){.actionGrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.actionGrid{grid-template-columns:1fr}}
.partSearchForm select,.partEditFields select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none}.partSearchForm select:focus,.partEditFields select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(15,98,254,.12)}html[data-theme="dark"] .partSearchForm select,html[data-theme="dark"] .partEditFields select{background:#0b1424;color:var(--text);border-color:var(--line)}

.versionBadge { font-size: 0.72rem; font-weight: 700; color: var(--muted); vertical-align: middle; }
.partEditFields select { width: 100%; min-height: 54px; border-radius: 16px; border: 1px solid var(--border); background: var(--card); color: var(--text); padding: 0 14px; font: inherit; font-weight: 700; }
.selectedPartBox .partEditFields label { display: block; }

/* v5.4 workflow/lookup/biometric updates */
.threeTabs{grid-template-columns:repeat(3,1fr)}
.historySearchForm{display:grid;grid-template-columns:1fr auto;gap:8px;margin:10px 0 8px}
.historySearchForm input{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding:13px 14px;color:var(--text);outline:none}
.historySearchForm input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(15,98,254,.12)}
.lookupBanner{background:#f8fafc;color:#334155;border:1px solid var(--line);border-radius:16px;padding:12px 14px;margin:12px 0;font-size:14px;line-height:1.4;font-weight:700}
.statusAction.completedAction,.statusAction.completedAction:disabled,.primaryButton.completedAction:disabled,.secondaryButton.completedAction:disabled{background:linear-gradient(135deg,var(--green),#0a6f35)!important;color:#fff!important;border-color:transparent!important;opacity:1!important;filter:none!important;box-shadow:0 10px 20px rgba(15,138,67,.18)}
.biometricButton{width:100%;margin-top:12px}
html[data-theme="dark"] .historySearchForm input{background:#0b1424;border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .lookupBanner{background:#0b1424;color:var(--text);border-color:var(--line)}
@media (max-width:640px){.historySearchForm{grid-template-columns:1fr}.threeTabs{grid-template-columns:1fr}}

/* v5.5 AI closeout quick replies and completion recommendation */
.quickReplies{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 2px}.quickReplyButton{border:1px solid var(--line);background:#fff;color:#1e293b;border-radius:999px;padding:9px 12px;font-weight:800;cursor:pointer}.quickReplyButton:active{transform:translateY(1px)}.aiRecommendation{display:inline-flex;align-items:center;gap:6px;background:#fff7dd;color:#7c4a03;border:1px solid #fde68a;border-radius:999px;padding:8px 12px;margin:4px 0 10px}.recommendedAction:not(:disabled){box-shadow:0 0 0 4px rgba(15,138,67,.14);border-color:#0f8a43!important}.recommendedAction.returnVisitButton:not(:disabled){background:#eaf8ef;color:#0f8a43;border-color:#0f8a43}
html[data-theme="dark"] .quickReplyButton{background:#132238;color:var(--text);border-color:var(--line)}html[data-theme="dark"] .aiRecommendation{background:#2a2109;color:#fde68a;border-color:#7c4a03}

/* v5.6 documents upload */
.documentsCard{display:grid;gap:12px}
.documentUploadForm{border-top:1px solid var(--line);padding-top:12px;margin-top:2px;display:grid;gap:10px}
.documentUploadForm label{display:grid;gap:6px;font-size:.76rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.documentUploadForm input[type="text"],.documentUploadForm input:not([type]){width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700}
.documentUploadForm input[type="file"]{width:100%;border:1px dashed var(--line);border-radius:12px;background:rgba(248,250,252,.72);padding:10px;color:var(--text);text-transform:none;letter-spacing:normal;font-weight:700}
.documentUploadForm input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(15,98,254,.12)}
html[data-theme="dark"] .documentUploadForm input[type="text"],html[data-theme="dark"] .documentUploadForm input:not([type]),html[data-theme="dark"] .documentUploadForm input[type="file"]{background:#0b1424;color:var(--text);border-color:var(--line)}

/* v5.7 document expansion cleanup */
.documentsHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}
.documentsHeader h3{margin:0 0 4px}
.documentsHeader .secondaryButton{white-space:nowrap}
.documentsExpandedBody{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:12px}
@media (max-width:640px){.documentsHeader{align-items:flex-start;flex-direction:column}.documentsHeader .secondaryButton{width:100%}}

/* v6.0 AI audit + time correction */
.timeCard{margin:12px 0;display:grid;gap:12px}.timeHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.timeHeader h3{margin:0 0 4px}.timeGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}.timeGrid div{border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:rgba(248,250,252,.72)}.timeGrid dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:900}.timeGrid dd{margin:4px 0 0;font-weight:900;color:var(--text);overflow-wrap:anywhere}.timeCorrectionForm{border-top:1px solid var(--line);padding-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.timeCorrectionForm label{display:grid;gap:6px;font-size:.76rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.timeCorrectionForm input,.timeCorrectionForm select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700}.timeCorrectionForm button,.timeCorrectionForm .tinyNote{grid-column:1/-1}.aiAuditCard{display:grid;gap:12px}.auditExpanded{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:10px}.auditLog{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:rgba(248,250,252,.72)}.auditLog summary{cursor:pointer;padding:11px 12px;font-weight:900;color:var(--blue)}.auditLog pre{white-space:pre-wrap;overflow:auto;max-height:420px;margin:0;padding:12px;border-top:1px solid var(--line);font-size:.78rem;line-height:1.42;background:#0b1220;color:#dbeafe}
html[data-theme="dark"] .timeGrid div,html[data-theme="dark"] .auditLog{background:#0b1424;border-color:var(--line)}html[data-theme="dark"] .timeCorrectionForm input,html[data-theme="dark"] .timeCorrectionForm select{background:#0b1424;color:var(--text);border-color:var(--line)}
@media (max-width:760px){.timeHeader{flex-direction:column}.timeHeader .secondaryButton{width:100%}.timeGrid,.timeCorrectionForm{grid-template-columns:1fr}}


/* v6.1 workflow button time display */
.actionGrid .statusAction{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;line-height:1.15;min-height:58px;text-align:center;white-space:normal}
.actionGrid .actionLabel{display:block;font-weight:900}
.actionGrid .actionTime{display:block;font-size:.72rem;font-weight:800;line-height:1;color:rgba(15,23,42,.58)}
.actionGrid .completedAction .actionTime{color:rgba(255,255,255,.84)}
.actionGrid .actionTimeEmpty{visibility:hidden}
.timeCard{margin:8px 0 12px}

/* v6.2 customer actions + compact time correction + offline mode */
.contactActions{margin:7px 0 6px}.contactActionsCompact{display:flex;flex-direction:column;gap:5px}.contactPhoneRow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:.82rem;line-height:1.25}.contactPhoneLabel{font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.contactPhoneNumber{font-weight:900;color:var(--text)}.contactMiniLink{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--panel);color:var(--primary);border-radius:999px;padding:3px 8px;font-size:.74rem;font-weight:900;text-decoration:none;line-height:1.2}.contactEmpty{font-size:.78rem;color:var(--muted);font-weight:800}.compactTimeCard{background:transparent;border:0;box-shadow:none;padding:0}.compactTimeCard>.secondaryButton{width:auto}.compactTimeCard .timeCorrectionForm{margin-top:10px}.offlineBanner{display:flex;align-items:center;gap:10px;justify-content:space-between;background:#fff7dd;border:1px solid #fde68a;color:#7c4a03;border-radius:16px;padding:10px 12px;margin:0 0 14px;line-height:1.35}.offlineBanner span{flex:1}.offlineBanner button{border:1px solid #f59e0b;background:#fff;color:#7c4a03;border-radius:999px;padding:8px 11px;font-weight:900;white-space:nowrap}html[data-theme="dark"] .contactMiniLink{background:#0b1424;color:#7dabff}html[data-theme="dark"] .offlineBanner{background:#2a2109;color:#fde68a;border-color:#7c4a03}html[data-theme="dark"] .offlineBanner button{background:#0b1424;color:#fde68a;border-color:#7c4a03}@media (max-width:640px){.contactPhoneRow{gap:6px}.offlineBanner{align-items:flex-start;flex-direction:column}.offlineBanner button{width:100%}.compactTimeCard>.secondaryButton{width:100%}}

/* v6.4 customer sign-off + tools page */
.fourTabs{grid-template-columns:repeat(4,1fr)}
.signoffCard{margin:12px 0;display:grid;gap:12px}
.signoffForm{border-top:1px solid var(--line);padding-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.signoffForm label{display:grid;gap:6px;font-size:.76rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.signoffForm input,.signoffForm select,.signoffForm textarea,.toolCard input{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700}
.signoffForm textarea{min-height:110px;resize:vertical;line-height:1.42}
.signoffForm input:focus,.signoffForm select:focus,.signoffForm textarea:focus,.toolCard input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(15,98,254,.12)}
.wideField{grid-column:1/-1}
.acceptanceBox,.locationStatus{grid-column:1/-1;border:1px solid var(--line);border-radius:14px;padding:12px;background:rgba(248,250,252,.78);display:grid;gap:8px}
.acceptanceBox strong,.locationStatus strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.acceptanceBox p,.locationStatus p{margin:0;line-height:1.5}
.locationStatus .secondaryButton{justify-self:start;padding:8px 12px;min-height:0}
html[data-theme="dark"] .acceptanceBox,html[data-theme="dark"] .locationStatus{background:#0b1424;border-color:var(--line)}
.signatureBlock{display:grid;gap:8px}.signatureHeader{display:flex;align-items:center;justify-content:space-between;gap:10px}.signatureHeader .secondaryButton{padding:8px 12px;min-height:0}.signatureCanvas{width:100%;height:180px;background:#fff;border:1px dashed var(--line);border-radius:16px;touch-action:none;display:block}.toolsPane{border-left:3px solid var(--blue);padding-left:18px}.toolsGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.toolCard{display:grid;gap:12px}.toolCard label{display:grid;gap:6px;font-size:.76rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.toolResult{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:16px;background:rgba(248,250,252,.72);padding:12px}.toolResult span{color:var(--muted);font-weight:800}.toolResult strong{font-size:1.25rem;color:var(--blue);text-align:right}
html[data-theme="dark"] .signoffForm input,html[data-theme="dark"] .signoffForm select,html[data-theme="dark"] .signoffForm textarea,html[data-theme="dark"] .toolCard input{background:#0b1424;color:var(--text);border-color:var(--line)}html[data-theme="dark"] .toolResult{background:#0b1424;border-color:var(--line)}
html[data-theme="dark"] .signatureCanvas{background:#fff;border-color:#64748b}
.setupCard{border-left:3px solid var(--amber)}
.woTech{display:block;margin-top:4px;font-weight:900;color:var(--blue)}
.calJobTech{display:block;margin-top:4px;font-weight:900;color:var(--blue)}
.techFilter{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:6px 6px 6px 14px;background:var(--card);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);font-size:.7rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}
.techFilter select{flex:1;min-width:0;appearance:none;-webkit-appearance:none;border:0;border-radius:999px;background:var(--blue2);color:var(--text);padding:9px 34px 9px 14px;font-size:.88rem;font-weight:800;text-transform:none;letter-spacing:normal;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230f62fe' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:14px;transition:box-shadow .15s ease}
.techFilter select:hover{box-shadow:0 0 0 2px rgba(15,98,254,.15)}
.techFilter select:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(15,98,254,.3)}
html[data-theme="dark"] .techFilter select{background-color:#16243c;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2361a5ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}
.setupSteps{margin:10px 0 0;padding-left:20px;display:grid;gap:8px;color:var(--text);font-size:.9rem;line-height:1.45}
.setupSteps code{background:var(--blue2);padding:2px 6px;border-radius:6px;font-size:.84rem}
.dangerButton{color:#b42318;border-color:#f0c2bd}
html[data-theme="dark"] .dangerButton{color:#ff9b91;border-color:#5c2b26}
@media (max-width:980px){.toolsPane{border-left:0;border-top:3px solid var(--blue);padding-left:0;padding-top:16px}.toolsGrid{grid-template-columns:1fr}}
@media (max-width:760px){.signoffForm{grid-template-columns:1fr}}
@media (max-width:640px){.fourTabs{grid-template-columns:repeat(2,1fr)}}
/* v6.5 layout refinements */
.mainTabs{grid-template-columns:repeat(3,1fr)}
.toolsBar{background:#eef4ff;border:1px solid var(--line);border-radius:18px;padding:5px;margin:0 0 12px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px}
.toolsBar button{border:0;background:transparent;border-radius:12px;padding:9px 4px;font-size:.82rem;font-weight:900;color:var(--muted);cursor:pointer;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:420px){.toolsBar button{font-size:.76rem;padding:9px 2px;letter-spacing:-.01em}}
.toolsBar button.active{background:#fff;color:var(--text);box-shadow:0 6px 14px rgba(15,23,42,.08)}
.brandHeader h1{margin:.15rem 0 .05rem}
.signoffCard{margin-top:18px}
html[data-theme="dark"] .toolsBar{background:#0c1728;border-color:#22324a}
html[data-theme="dark"] .toolsBar button{color:var(--muted)}
html[data-theme="dark"] .toolsBar button.active{background:#17263d;color:var(--text)}

/* v6.6 tools, parts, and sign-off cleanup */
.partsPanelHeader .muted{display:none}
.signoffButtonOnly{padding:0;background:transparent;border:0;box-shadow:none}.signoffButtonOnly .secondaryButton{width:100%;min-height:48px}.signoffCard .documentsHeader>h3{margin:0}.toolsGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.eolToolCard,.networkToolCard{grid-column:1/-1}.toolSubgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.toolSubgrid h4{margin:0 0 10px;color:var(--text)}.resistorSelectGrid,.toolMiniForm{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.toolMiniForm{grid-template-columns:2fr 1fr 1fr auto;align-items:end}.scanForm{grid-template-columns:1.5fr .75fr .75fr .85fr .75fr auto}.toolCard select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700}.toolResult.stacked{align-items:flex-start;flex-direction:column}.toolResult.stacked strong{text-align:left}.resistorSwatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.resistorSwatches span{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:900;color:var(--muted)}.resistorSwatches i{display:inline-block;width:18px;height:18px;border-radius:999px;border:1px solid var(--line)}.presetPills{display:flex;flex-wrap:wrap;gap:7px}.presetPills button{border:1px solid var(--line);background:var(--panel);color:var(--blue);border-radius:999px;padding:7px 10px;font-weight:900;cursor:pointer}.toolList{margin:0;padding-left:18px}.toolList li{margin:5px 0}.wifiQuality{display:grid;gap:6px}.wifiQuality span{font-size:.82rem;font-weight:800;color:var(--muted);line-height:1.35}.toolMiniForm button{min-height:43px;white-space:nowrap}html[data-theme="dark"] .toolCard select{background:#0b1424;color:var(--text);border-color:var(--line)}html[data-theme="dark"] .presetPills button{background:#0b1424;border-color:var(--line);color:#7dabff}
@media (max-width:980px){.toolsGrid,.toolSubgrid,.resistorSelectGrid,.toolMiniForm,.scanForm{grid-template-columns:1fr}.eolToolCard,.networkToolCard{grid-column:auto}.toolMiniForm button{width:100%}}

/* v6.7 collapsible tools */
.toolDisclosure{display:block;padding:0;overflow:hidden}
.toolDisclosure summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:900;color:var(--text);user-select:none}
.toolDisclosure summary::-webkit-details-marker{display:none}
.toolDisclosure summary span{font-size:1rem;line-height:1.2}
.toolDisclosure summary small{font-size:.74rem;line-height:1.2;color:var(--muted);font-weight:900;text-align:right}
.toolDisclosure summary::after{content:'+';display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--line);border-radius:999px;color:var(--blue);font-size:1.15rem;line-height:1;flex:0 0 auto;background:rgba(15,98,254,.06)}
.toolDisclosure[open] summary{border-bottom:1px solid var(--line)}
.toolDisclosure[open] summary::after{content:'−'}
.toolCardBody{padding:14px 18px 18px;display:grid;gap:12px}
.toolCardBody .toolSubgrid{margin:0}
html[data-theme="dark"] .toolDisclosure summary::after{background:#0b1424;border-color:var(--line)}
@media (max-width:640px){.toolDisclosure summary{align-items:flex-start;flex-direction:column}.toolDisclosure summary::after{position:absolute;right:18px;top:14px}.toolDisclosure summary{position:relative;padding-right:58px}.toolDisclosure summary small{text-align:left}.toolCardBody{padding:12px 14px 16px}}

/* v6.9 Alarm.com diagnostics */
.alarmcomCard{display:grid;gap:12px}
.alarmcomForm{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.alarmcomForm input{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding:12px 13px;color:var(--text);outline:none;font-weight:700}
.alarmcomForm input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(15,98,254,.12)}
.alarmcomPill{font-size:.74rem;font-weight:900;border-radius:999px;padding:7px 10px;white-space:nowrap;border:1px solid transparent}
.alarmcomPill.ok{background:var(--greenBg);color:var(--green)}
.alarmcomPill.trouble{background:#fff1f0;color:#b42318;border-color:#ffd5d2}
.alarmcomResults{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:8px}
.alarmcomResults h4{margin:6px 0 0;font-size:.9rem;color:var(--text)}
.alarmcomList{margin:0;padding-left:20px;display:grid;gap:5px}
.alarmcomList li{line-height:1.35}
html[data-theme="dark"] .alarmcomForm input{background:#0b1424;color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .alarmcomPill.trouble{background:#341313;color:#fecaca;border-color:#7f1d1d}
@media (max-width:640px){.alarmcomForm{grid-template-columns:1fr}.alarmcomForm button{width:100%}.alarmcomCard .documentsHeader{align-items:flex-start}}
/* v6.9 Alarm.com address matching */
.alarmcomCandidates{display:grid;gap:8px;border:1px solid var(--line);border-radius:14px;padding:10px;background:var(--soft)}
.alarmcomCandidate{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;font-size:.88rem}
.miniButton{padding:8px 10px;font-size:.8rem;border-radius:10px;white-space:nowrap}
@media (max-width:640px){.alarmcomCandidate{grid-template-columns:1fr}.miniButton{width:100%}}
/* v8.2 Alarm.com current troubles only */
.compactAlarmcomForm{grid-template-columns:auto;justify-content:start}
.compactAlarmcomForm .secondaryButton{width:auto}
@media (max-width:640px){.compactAlarmcomForm{grid-template-columns:1fr}.compactAlarmcomForm .secondaryButton{width:100%}}

/* v8.3 UI cleanup and responsive tightening */
.loginBrand{display:flex;align-items:center;gap:14px;margin:0 0 8px}
.loginBrand h1{margin:0;font-size:clamp(1.9rem,7vw,2.4rem)}
.appShell{overflow-x:hidden}
.layout{grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:14px;max-width:100%}
.sidebar,.detailPane,.woList,.woCard{min-width:0;max-width:100%}
.woCard{overflow:hidden;word-break:normal;overflow-wrap:anywhere}
.woTop{min-width:0;align-items:flex-start}.scheduleStamp{min-width:0;overflow-wrap:anywhere}
.woCard h3,.woCard p,.woCard small{overflow-wrap:anywhere;word-break:normal}
.alarmcomTroubleDisclosure{border:1px solid var(--line);border-radius:16px;background:rgba(248,250,252,.72);overflow:hidden}
.alarmcomTroubleDisclosure summary{list-style:none;cursor:pointer;padding:13px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:900;user-select:none}
.alarmcomTroubleDisclosure summary::-webkit-details-marker{display:none}
.alarmcomTroubleDisclosure summary small{color:var(--muted);font-size:.75rem;font-weight:900;white-space:nowrap}
.alarmcomTroubleDisclosure summary::after{content:'+';display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);border-radius:999px;color:var(--blue);background:rgba(15,98,254,.06);flex:0 0 auto}
.alarmcomTroubleDisclosure[open] summary{border-bottom:1px solid var(--line)}
.alarmcomTroubleDisclosure[open] summary::after{content:'−'}
.alarmcomTroubleDisclosure .alarmcomList{padding:12px 18px 14px 28px;background:rgba(255,255,255,.7)}
.alarmcomTroublesEmpty h4{margin:6px 0 4px}
html[data-theme="dark"] .alarmcomTroubleDisclosure{background:#0b1424;border-color:var(--line)}
html[data-theme="dark"] .alarmcomTroubleDisclosure .alarmcomList{background:#0b1424}
@media (max-width:1180px){.layout{grid-template-columns:1fr}.sidebar{order:1}.detailPane{order:2}.woList{grid-template-columns:repeat(2,minmax(0,1fr))}.detailPane{width:100%}}
@media (max-width:720px){.woList{grid-template-columns:1fr}.topBar{gap:10px}.brandHeader h1{font-size:clamp(1.7rem,7vw,2.2rem)}.alarmcomTroubleDisclosure summary{align-items:flex-start}.alarmcomTroubleDisclosure summary small{display:none}}


/* v8.4 work order card, Alarm.com tabs, and mobile overlap fixes */
.woTop{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px}
.scheduleStamp{white-space:normal!important;line-height:1.25;min-width:0;max-width:100%;padding-right:4px}
.woTop .status{justify-self:end;align-self:start;position:static;max-width:100%}
.woCard h3{line-height:1.25}
.alarmcomSubtabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#e8eef7;border-radius:14px;padding:5px;margin:4px 0 8px}
.alarmcomSubtabs button{border:0;background:transparent;color:var(--muted);font-weight:900;border-radius:11px;padding:10px 8px;cursor:pointer;font-size:.86rem}
.alarmcomSubtabs button.active{background:#fff;color:var(--text);box-shadow:0 4px 10px rgba(15,23,42,.08)}
.alarmcomEquipmentDisclosure .alarmcomList li{font-size:.92rem}
@media (max-width:640px){
  .woCard{padding:14px}
  .woTop{grid-template-columns:minmax(0,1fr) auto!important}
  .scheduleStamp{font-size:.88rem;padding-right:6px}
  .woTop .status{font-size:.7rem;padding:5px 8px}
  .alarmcomSubtabs{grid-template-columns:1fr}
}
html[data-theme="dark"] .alarmcomSubtabs{background:#0c1728}
html[data-theme="dark"] .alarmcomSubtabs button.active{background:#17263d;color:var(--text)}

/* v9.2 miscellaneous calendar appointments */
.miscAppointmentCard {
  border-left: 4px solid #7c3aed;
}
.miscAppointmentCard h3 {
  overflow-wrap: anywhere;
}


/* v9.7: Larger multi-line AI interview input for easier review before sending. */
.chatForm{grid-template-columns:minmax(0,1fr) auto;align-items:end}
.chatInput{min-height:160px;max-height:360px;resize:vertical;line-height:1.5;padding:14px 15px}
.chatForm button{align-self:end;min-height:52px}
.chatInputHint{grid-column:1/-1;margin:0 2px;color:var(--muted);font-size:.8rem;line-height:1.35}
@media (max-width:640px){.chatForm{grid-template-columns:1fr}.chatInput{min-height:180px}.chatForm button{width:100%}}

/* v9.8: Today-tab map with numbered pins for all assigned appointments. */
.todayMapCard{background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:20px;padding:12px;margin:0 0 14px;box-shadow:0 8px 24px rgba(15,23,42,.05);overflow:hidden}
.todayMapHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.todayMapHeader>div{display:grid;gap:2px;min-width:0}
.todayMapHeader strong{font-size:.98rem}
.todayMapHeader small{color:var(--muted);font-size:.78rem;line-height:1.3}
.mapToggleButton{padding:8px 10px;border-radius:11px;font-size:.78rem;white-space:nowrap}
.todayJobMap{height:300px;width:100%;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#e8eef7;z-index:0}
.todayMapStatus{margin:9px 2px 2px;color:var(--text);font-size:.82rem;font-weight:800;line-height:1.35}
.todayMapHint{margin:3px 2px 0;color:var(--muted);font-size:.76rem;line-height:1.35}
.todayJobMarkerShell{background:transparent!important;border:0!important}
.todayJobMarker{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:var(--blue);color:#fff;border:3px solid #fff;box-shadow:0 4px 12px rgba(15,23,42,.35);font-weight:900;font-size:.84rem}
.todayJobMarker.selected{background:var(--green);transform:scale(1.12)}
.todayMapPopup{display:grid;gap:5px;min-width:190px;line-height:1.3}
.todayMapPopup span{font-weight:800}
.todayMapPopup small{color:#475569}
.todayMapPopup>div{display:flex;gap:7px;margin-top:4px}
.todayMapPopup button,.todayMapPopup a{border:0;border-radius:9px;padding:7px 9px;font:inherit;font-size:.78rem;font-weight:900;text-decoration:none;cursor:pointer}
.todayMapPopup button{background:var(--blue);color:#fff}
.todayMapPopup a{background:#eef4ff;color:#0f3c8a}
html[data-theme="dark"] .todayMapCard{background:rgba(14,24,40,.94)}
html[data-theme="dark"] .todayJobMap{background:#0c1728}
@media (max-width:1180px){.todayJobMap{height:340px}}
@media (max-width:640px){.todayMapHeader{align-items:flex-start}.todayMapHeader{flex-direction:column}.mapToggleButton{width:100%}.todayJobMap{height:320px}}

/* v9.10: Note attribution header — the author/date/time line leads each note in a
   contrasting colour with a divider, so techs can tell where one note ends and the
   next begins instead of reading them as one run-on block. */
.noteItem{margin-bottom:0;padding:12px 0 14px;border-top:1px solid var(--line)}
.noteItem:first-child{border-top:0;padding-top:2px}
.noteItem:last-child{padding-bottom:0}
.noteItem small.noteMeta{display:block;margin:0 0 6px;color:var(--blue);font-size:.79rem;font-weight:900;letter-spacing:.02em;line-height:1.3}
html[data-theme="dark"] .noteItem small.noteMeta{color:var(--blue)}

/* v9.10: iOS Safari fails to paint children that are positioned with transforms (every
   Leaflet tile and marker) inside an ancestor that combines border-radius with
   overflow:hidden — the map renders as an empty grey rounded box. Giving the map its
   own compositing layer and isolation restores it, and is a no-op elsewhere. */
.todayJobMap{-webkit-transform:translateZ(0);transform:translateZ(0);isolation:isolate}
.todayMapCard{-webkit-transform:translateZ(0);transform:translateZ(0)}
.todayJobMap .leaflet-pane,.todayJobMap .leaflet-tile,.todayJobMap .leaflet-marker-icon{will-change:transform}

/* v9.12: Central Station card — signal history and on-test controls. */
.csCard .csControls{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:10px 0}
.csHoursLabel{display:grid;gap:4px;font-size:.78rem;font-weight:800;color:var(--muted)}
.csHoursLabel select{border:1px solid var(--line);border-radius:11px;padding:9px 10px;background:#fff;color:var(--text);font:inherit}
html[data-theme="dark"] .csHoursLabel select{background:#0b1424;color:var(--text)}
.csSignalList{list-style:none;margin:0;padding:0;display:grid;gap:0}
.csSignal{padding:10px 0;border-top:1px solid var(--line)}
.csSignal:first-child{border-top:0}
.csSignal .csSignalWhen{display:block;color:var(--blue);font-weight:900;font-size:.76rem;margin-bottom:3px}
.csSignal small{display:block;color:var(--muted);font-size:.76rem;line-height:1.35}
.csSignal div{line-height:1.35;overflow-wrap:anywhere}
/* A signal that arrived while the account was suppressed is easy to misread as a real
   event, so mark it clearly. */
.csSignal.onTest{opacity:.72}
.csSignal.onTest .csSignalWhen{color:var(--amber)}
@media (max-width:640px){.csCard .csControls{width:100%}.csCard .csControls button{flex:1}}
.csOnTest{background:var(--amberBg);border:1px solid var(--amber);border-radius:14px;padding:10px 12px;margin:10px 0;display:grid;gap:6px}
.csOnTest strong{color:var(--amber);display:block;font-size:.9rem}
.csOnTest small{color:var(--muted);display:block;font-size:.74rem;line-height:1.3;overflow-wrap:anywhere}

.documentCaptureRow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.documentCaptureRow button{min-height:48px}
.documentUploadForm .checkRow{display:flex;align-items:center;gap:10px;text-transform:none;letter-spacing:normal;font-size:.82rem;font-weight:700;color:var(--muted)}
.documentUploadForm .checkRow input{width:auto;min-width:20px;min-height:20px}
#documentSelectionSummary{margin:0;overflow-wrap:anywhere}

.appBanner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-radius:16px;padding:12px 14px;margin:0 0 10px;border:1px solid var(--line);background:var(--card);box-shadow:0 6px 16px rgba(15,23,42,.05)}
.appBanner strong{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;border-radius:999px;padding:5px 10px;white-space:nowrap}
.appBanner span{flex:1;min-width:180px;font-weight:700}
.appBanner button{border:0;border-radius:12px;padding:10px 16px;font-weight:800;cursor:pointer;min-height:44px}
.appBannerUpdate{border-color:#bcd4ff;background:var(--blue2)}
.appBannerUpdate strong{background:var(--blue);color:#fff}
.appBannerUpdate span{color:#0f3c8a}
.appBannerUpdate button{background:var(--blue);color:#fff}
.appBannerSchedule{border-color:#ffe6a8;background:var(--amberBg)}
.appBannerSchedule strong{background:var(--amber);color:#fff}
.appBannerSchedule span{color:var(--amber)}
.appBannerSchedule button{background:#fff;border:1px solid var(--line);color:#1e293b}
html[data-theme="dark"] .appBannerUpdate{background:rgba(15,98,254,.16);border-color:rgba(15,98,254,.4)}
html[data-theme="dark"] .appBannerUpdate span{color:#cfe0ff}
html[data-theme="dark"] .appBannerSchedule{background:rgba(161,98,7,.18);border-color:rgba(161,98,7,.45)}
html[data-theme="dark"] .appBannerSchedule span{color:#f6d68a}
html[data-theme="dark"] .appBannerSchedule button{background:#0b1424;color:var(--text)}

.pushCard{margin-bottom:12px;padding:14px}
.pushRow{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pushRow strong{display:block;margin-bottom:4px}
.pushRow p{margin:0}
.pushButtons{display:flex;gap:8px;flex-wrap:wrap}
.pushButtons button{min-height:44px;padding:10px 16px}
.pushOn,.pushOff{font-size:.7rem;font-weight:900;border-radius:999px;padding:3px 9px;margin-left:6px;vertical-align:middle}
.pushOn{background:var(--greenBg);color:var(--green)}
.pushOff{background:#edf2f7;color:#64748b}
html[data-theme="dark"] .pushOff{background:rgba(148,163,184,.18);color:#cbd5e1}
@media (max-width:640px){.pushRow{flex-direction:column}.pushButtons{width:100%}.pushButtons button{flex:1}}


.csAccountList{list-style:none;margin:10px 0;padding:0;display:grid;gap:8px}
.csAccountList li{border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:rgba(248,250,252,.72);display:grid;gap:3px}
.csAccountList li.csAccountOn{border-color:#ffd9a8;background:var(--amberBg)}
.csAccountTop{display:flex;align-items:center;justify-content:space-between;gap:10px}
.csAccountTop strong{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere}
.csAccountList small{color:var(--muted);font-size:.8rem;overflow-wrap:anywhere}
.csTag{font-size:.68rem;font-weight:900;border-radius:999px;padding:4px 9px;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}
.csTag.on{background:var(--amber);color:#fff}
.csTag.off{background:#e2e8f0;color:#475569}
.alarmcomPill.warn{background:var(--amberBg);color:var(--amber)}
html[data-theme="dark"] .csAccountList li{background:rgba(15,23,42,.5)}
html[data-theme="dark"] .csAccountList li.csAccountOn{background:rgba(161,98,7,.2);border-color:rgba(161,98,7,.5)}
html[data-theme="dark"] .csTag.off{background:rgba(148,163,184,.2);color:#cbd5e1}
.csAccountBtn{margin-top:6px;justify-self:start;border:1px solid var(--line);background:#fff;color:#1e293b;border-radius:12px;padding:9px 14px;font-weight:800;min-height:44px;cursor:pointer}
.csAccountBtn:disabled{opacity:.55;cursor:not-allowed}
html[data-theme="dark"] .csAccountBtn{background:#0b1424;color:var(--text)}
.paymentCard{display:grid;gap:10px}
.paymentRow{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.paymentSelectLabel{flex:1;min-width:200px;display:grid;gap:6px;font-size:.74rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.paymentSelectLabel select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 11px;color:var(--text);font-weight:700;text-transform:none;letter-spacing:normal;min-height:48px}
.paymentRow button{min-height:48px}
html[data-theme="dark"] .paymentSelectLabel select{background:#0b1424;color:var(--text);border-color:var(--line)}
@media (max-width:640px){.paymentRow{flex-direction:column;align-items:stretch}.paymentRow button{width:100%}}
.signoffHeaderButtons{display:flex;gap:8px;flex-wrap:wrap}
.signoffHeaderButtons button{min-height:44px}
.signoffButtonOnly{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.signoffOverlay{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.signoffModal{width:min(760px,100%);background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:0 24px 60px rgba(15,23,42,.28);margin:auto 0;display:grid;gap:12px}
.signoffModalHead h3{margin:0 0 4px}
.signoffModalHead p{margin:0}
.signoffModal .signoffForm{margin:0}
.signoffSkip{width:100%;min-height:48px}
html[data-theme="dark"] .signoffOverlay{background:rgba(2,6,23,.72)}
@media (max-width:640px){.signoffOverlay{padding:8px}.signoffModal{border-radius:18px;padding:14px}}
.offlineBannerTop{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.offlineBannerTop span{flex:1;min-width:180px}
.offlineFailures{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.offlineFailures li{display:grid;gap:4px;border:1px solid var(--line);border-radius:12px;padding:10px;background:rgba(255,255,255,.6)}
.offlineFailures li div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.offlineFailures small{color:var(--muted);overflow-wrap:anywhere}
.offlineFailures .linkButton{justify-self:start;padding:6px 0}
.offlineTagBlocked{font-size:.66rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:3px 8px;background:#fff1f0;color:#b42318}
.offlineTagRetry{font-size:.66rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:3px 8px;background:var(--amberBg);color:var(--amber)}
.offlineBannerBlocked{border-color:#ffd5d2}
html[data-theme="dark"] .offlineFailures li{background:rgba(15,23,42,.5)}
.calendarPane{display:grid;gap:12px}
.calNav{display:flex;gap:8px}
.calNav button{min-height:44px;min-width:52px}
.calCard{display:grid;gap:8px}
.calWeekdays,.calGrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.calWeekdays span{text-align:center;font-size:.7rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.calCell{position:relative;aspect-ratio:1;border:1px solid var(--line);border-radius:10px;background:var(--card);display:flex;align-items:center;justify-content:center;font-weight:800;cursor:pointer;padding:0;color:var(--text)}
.calBlank{border:0;background:transparent;cursor:default}
.calDayNum{font-size:.9rem}
.calHasJobs{background:var(--blue2);border-color:#bcd4ff;color:#0f3c8a}
.calToday{outline:2px solid var(--blue);outline-offset:-2px}
.calSelected{background:var(--blue);color:#fff;border-color:var(--blue)}
.calCount{position:absolute;top:3px;right:5px;font-size:.62rem;font-weight:900;background:var(--blue);color:#fff;border-radius:999px;padding:1px 5px}
.calSelected .calCount{background:#fff;color:var(--blue)}
.calDayList{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.calJob{width:100%;text-align:left;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--card);display:grid;gap:3px;cursor:pointer;color:var(--text);min-height:48px}
.calJob span{color:#334155}
.calJob small{color:var(--muted)}
html[data-theme="dark"] .calCell,html[data-theme="dark"] .calJob{background:#0b1424}
html[data-theme="dark"] .calHasJobs{background:rgba(15,98,254,.22);color:#cfe0ff}
html[data-theme="dark"] .calJob span{color:#cbd5e1}
/* With no work order list beside it, the calendar takes the full width. */
.layout:has(.calendarPane){grid-template-columns:1fr}
.equipmentCard{display:grid;gap:12px}
.equipCapturedList{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.equipCapturedList li{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:rgba(248,250,252,.72)}
.equipCapturedList li span{font-weight:700;overflow-wrap:anywhere}
.linkButton{border:0;background:transparent;color:var(--blue);font-weight:800;cursor:pointer;padding:4px 6px;white-space:nowrap}
.equipReview{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:12px}
.equipReading{border:1px solid var(--line);border-radius:16px;padding:12px;display:grid;gap:10px;background:rgba(248,250,252,.72)}
.equipReadingTop{display:flex;align-items:center;justify-content:space-between;gap:10px}
.equipConfidence{font-size:.72rem;font-weight:900;border-radius:999px;padding:5px 9px;white-space:nowrap}
.equipConfidence-high{background:var(--greenBg);color:var(--green)}
.equipConfidence-medium{background:var(--amberBg);color:var(--amber)}
.equipConfidence-low{background:#fff1f0;color:#b42318}
.equipWarn{margin:0;font-size:.82rem;font-weight:700;color:var(--amber);background:var(--amberBg);border-radius:12px;padding:8px 10px}
.equipFieldGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.equipFieldGrid label{display:grid;gap:6px;font-size:.72rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.equipFieldGrid input{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 11px;color:var(--text);outline:none;text-transform:none;letter-spacing:normal;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.equipFieldGrid input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(15,98,254,.12)}
.noteCorrectionRow{display:flex;gap:8px;margin-top:10px}
.noteCorrectionRow input{flex:1;min-width:0;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;color:var(--text);min-height:48px}
.noteCorrectionRow button{min-height:48px;white-space:nowrap}
html[data-theme="dark"] .noteCorrectionRow input{background:#0b1424;color:var(--text)}

/* v9.60 van inventory */
.vanControls{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin-bottom:12px}
.vanControls input{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding:12px 14px;color:var(--text);outline:none}
.vanControls input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(15,98,254,.12)}
.vanToggle{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--muted);white-space:nowrap}
.vanToggle input{width:auto}
.vanSwitch{display:grid;gap:6px;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;font-weight:900;color:var(--muted)}
.vanSwitch select{border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px 12px;color:var(--text);font-weight:700;text-transform:none;letter-spacing:normal}
.vanList{display:grid;gap:8px}
.vanRow{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:16px;padding:12px 14px;background:#fff}
.vanRow.isOut{border-color:#ffd5d2;background:#fff1f0}
.vanRowMain{display:grid;gap:3px;min-width:0}
.vanRowMain strong{font-size:.95rem}
.vanDesc{color:#334155;font-size:.9rem;overflow-wrap:anywhere}
.vanWhere,.vanCommitted{color:var(--muted);font-size:.8rem}
.vanRowCount{display:flex;align-items:center;gap:8px;white-space:nowrap}
.vanQty{font-size:1.35rem;font-weight:900;font-variant-numeric:tabular-nums}
.vanFlag{font-size:.7rem;font-weight:900;border-radius:999px;padding:5px 9px;text-transform:uppercase;letter-spacing:.06em}
.vanFlag.out{background:#fff1f0;color:#b42318}
.vanFlag.short{background:#fff7dd;color:var(--amber)}
.vanFlag.unmapped{background:#eef2f7;color:var(--muted)}
.vanRow.isShort{border-color:#f0d08a;background:var(--amberBg)}
.vanRow.isUnmapped{opacity:.72}
.vanSection{font-size:.74rem;text-transform:uppercase;letter-spacing:.12em;font-weight:900;color:var(--muted);margin:16px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.vanSection:first-child{margin-top:0}
.vanAlt{color:var(--muted);font-size:.78rem}
.vanOf{color:var(--muted);font-size:.8rem;font-weight:700;margin-left:2px}
.vanQty.vanUnknown{color:var(--muted)}
html[data-theme="dark"] .vanRow.isShort{background:#3a2b08;border-color:#6b5310}
html[data-theme="dark"] .vanFlag.short{background:#3a2b08;color:var(--amber)}
html[data-theme="dark"] .vanFlag.unmapped{background:#17263d;color:var(--muted)}
html[data-theme="dark"] .vanControls input,html[data-theme="dark"] .vanSwitch select,html[data-theme="dark"] .vanRow{background:#0b1424;border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .vanRow.isOut{background:#391311;border-color:#7f1d1d}
html[data-theme="dark"] .vanDesc{color:#cbd5e1}
html[data-theme="dark"] .vanFlag.out{background:#391311;color:#fecaca}
@media (max-width:640px){.vanControls{grid-template-columns:1fr}.vanToggle{justify-content:flex-start}.vanRow{align-items:flex-start}.vanSwitch{width:100%}.vanSwitch select{width:100%}}
