/* NORMATIVE STYLESHEET — flattened from the approved mockup, cascade order preserved.
   Rules may be reorganized ONLY if verify/gate.mjs still passes. */

* { box-sizing:border-box; margin:0; }
@font-face { font-family:'Inter'; src:url('fonts/Inter-Regular.woff2') format('woff2'); font-weight:400; }
@font-face { font-family:'Inter'; src:url('fonts/Inter-Medium.woff2') format('woff2'); font-weight:500; }
@font-face { font-family:'Inter'; src:url('fonts/Inter-SemiBold.woff2') format('woff2'); font-weight:600; }
@font-face { font-family:'Inter'; src:url('fonts/Inter-Bold.woff2') format('woff2'); font-weight:700; }
@font-face { font-family:'Inter'; src:url('fonts/Inter-ExtraBold.woff2') format('woff2'); font-weight:800; }
:root {
  /* Navy system Phase 2: the Jobs/Quotes mockup variables resolve to design tokens */
  --page:var(--ds-canvas); --surface:var(--ds-surface); --ink:var(--ds-ink); --ink2:var(--ds-ink-2); --ink3:var(--ds-ink-3); --faint:var(--ds-ink-3);
  --line:var(--ds-line); --hair:var(--ds-hair); --accent:var(--ds-action); --accent-ink:var(--ds-ink); --accent-soft:var(--ds-sel-bg);
  --red:var(--ds-st-late); --red-ink:var(--ds-st-late-ink); --amber-ink:var(--ds-st-route-ink); --green-ink:var(--ds-st-done-ink); --chrome:var(--ds-chrome);
}
body { background:var(--ds-canvas); font-family:var(--ds-font); -webkit-font-smoothing:antialiased; color:var(--ink); font-size:var(--ds-text-base); padding:0 0 60px; }
.frame { width:1480px; margin:28px auto; border-radius:var(--ds-r-lg); overflow:hidden; background:var(--page); box-shadow:none; }
.cap { width:1480px; margin:38px auto 0; font-size:var(--ds-text-md); color:var(--ds-ink-2); }
.cap b { font-size:var(--ds-text-md); }
.av { display:inline-grid; place-items:center; width:20px; height:20px; border-radius:var(--ds-r-full); color:var(--ds-action-fg); font-size:var(--ds-text-av); font-weight:var(--ds-w-semi); vertical-align:-5px; letter-spacing:.02em; flex:none; }
.h1,.h5,.h9,.h13{background:var(--ds-av-1)}.h2,.h6,.h10{background:var(--ds-av-2)}.h3,.h7,.h11{background:var(--ds-av-3)}.h4,.h8,.h12{background:var(--ds-av-4)}
/* chrome: navy system (Phase 1). Top bar metrics come from app.css; the stage bar
   is navy with folder tabs (D6). */
.top { background:var(--ds-chrome); color:var(--ds-chrome-fg-2); display:flex; align-items:center; gap:var(--ds-s-4); padding:0 var(--ds-gutter); height:52px; min-height:0; }
.logo { font-weight:var(--ds-w-semi); letter-spacing:.14em; font-size:var(--ds-text-base); color:var(--ds-chrome-fg); } .logo span { color:var(--ds-chrome-fg-2); }
.top nav { display:flex; gap:var(--ds-s-1); font-size:var(--ds-text-base); font-weight:var(--ds-w-medium); color:var(--ds-chrome-dim); }
.top nav a { padding:6px 11px; border-radius:var(--ds-r-md); } .top nav a.on { background:var(--ds-chrome-raise); color:var(--ds-chrome-fg); }
.top .sr { margin-left:auto; display:flex; align-items:center; gap:8px; background:var(--ds-chrome-field); border:1px solid var(--ds-chrome-edge); color:var(--ds-chrome-fg-3); font-size:var(--ds-text-base); padding:7px 12px; border-radius:var(--ds-r-md); width:290px; }
.top .sr .k { margin-left:auto; font-size:var(--ds-text-caps); border:1px solid var(--ds-chrome-edge); border-radius:var(--ds-r-sm); padding:1px 5px; }
.top .usr { font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); }
.bar { background:var(--ds-chrome); display:flex; align-items:center; gap:2px; padding:0 16px; margin-top:-1px; padding-top:1px; }
.tab { position:relative; display:flex; align-items:center; gap:8px; padding:14px 14px 13px; font-size:var(--ds-text-base); font-weight:var(--ds-w-medium); color:var(--ds-chrome-fg-2); }
.tab b { font-size:var(--ds-text-sm); font-weight:var(--ds-w-regular); color:var(--ds-chrome-fg-3); font-variant-numeric:tabular-nums; }
.tab.on { color:var(--ds-chrome-fg); } .tab.on b { color:var(--ds-chrome-fg-2); }
.attn { font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); padding:2.5px 9px; border-radius:var(--ds-r-full); }
.attn.late, .attn.stuck { background:var(--ds-st-late-bg); color:var(--ds-ink-2); border:0; }
.attn.flag { background:var(--ds-st-route-bg); color:var(--ds-ink-2); border:0; }
.bar .right { margin-left:auto; display:flex; gap:8px; align-items:center; padding-right:8px; }
.bar .scope { color:var(--ds-chrome-fg-3); font-size:var(--ds-text-sm); margin-right:6px; }
/* chrome controls (.cselect / .cbtn): chrome-field fill, 1px chrome-edge line */
.bar .fld { background:var(--ds-chrome-field); border:1px solid var(--ds-chrome-edge); color:var(--ds-chrome-fg-2); font-size:var(--ds-text-base); padding:6px 12px; border-radius:var(--ds-r-md); }
.bar .fld:last-child { width:196px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* table — full tabs */
.lhead, .jrow { display:grid; grid-template-columns:48px minmax(0,1fr) 110px 80px 92px 104px 118px 142px 42px 72px 82px; column-gap:13px; }
.lhead { padding:10px 24px 8px; font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:.06em; color:var(--faint); border-bottom:1px solid var(--line); background:var(--surface); }
.lhead .rh { text-align:right; }
.list { background:var(--surface); }
.jrow { row-gap:4px; padding:13px 24px 14px; min-height:78px; align-content:center; box-shadow:inset 0 -1px 0 var(--hair); background:var(--surface); cursor:pointer; align-items:baseline; }
.jrow:hover { background:var(--ds-paper-hover); }
.jrow.x { box-shadow:inset 3px 0 0 var(--red), inset 0 -1px 0 var(--hair); }
.jrow.w { box-shadow:inset 3px 0 0 var(--ds-st-route), inset 0 -1px 0 var(--hair); }
.jrow.sel { background:var(--ds-surface); box-shadow:inset 3px 0 0 var(--accent); }
.c-num { font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); color:var(--ink3); font-variant-numeric:tabular-nums; }
.c-title { display:flex; align-items:baseline; gap:6px; min-width:0; font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); letter-spacing:-.011em; }
.c-title .tt2 { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.c-title .site { flex:0 1 auto; min-width:110px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink3); font-weight:var(--ds-w-regular); font-size:var(--ds-text-base); }
.c-tech { display:flex; flex-direction:column; gap:3px; font-size:var(--ds-text-base); color:var(--ink2); }
.c-tech > span { display:flex; align-items:center; gap:6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.c-date { font-size:var(--ds-text-base); color:var(--ink2); white-space:nowrap; font-variant-numeric:tabular-nums; }
.c-date i { display:block; margin-top:2px; font-style:normal; font-size:11px; color:var(--faint); }
.c-st { font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); color:var(--ink2); line-height:1.3; position:relative; padding-left:14px; }
.c-st .sub { display:block; font-weight:var(--ds-w-regular); font-size:11px; color:var(--ink3); margin-top:1px; }
.c-st.mut { color:var(--faint); font-weight:var(--ds-w-regular); }
.c-st.fail { color:var(--red-ink); } .c-st.warn { color:var(--amber-ink); } .c-st.ok { color:var(--green-ink); }
.c-st.fail::before, .c-st.warn::before, .c-st.ok::before { content:""; position:absolute; left:0; top:5px; width:6px; height:6px; border-radius:var(--ds-r-full); }
.c-st.fail::before { background:var(--red); } .c-st.warn::before { background:var(--ds-st-route); } .c-st.ok::before { background:var(--ds-st-done); }
.c-m { text-align:right; font-variant-numeric:tabular-nums; font-size:var(--ds-text-base); color:var(--ink2); white-space:nowrap; }
.c-m.mut { color:var(--faint); }
.c-out { grid-column:2 / 12; font-size:var(--ds-text-base); line-height:1.5; color:var(--ink2); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.foot { padding:11px 24px 13px; font-size:var(--ds-text-sm); color:var(--faint); background:var(--surface); border-top:1px solid var(--hair); }
.jobs-list-warning { padding:9px 24px; border-bottom:1px solid var(--ds-st-route-bd); background:var(--ds-st-route-bg); color:var(--ds-st-route-ink); font-size:var(--ds-text-sm); }
/* Not Complete tab: own column set, compact rows */
.pend .lhead, .pend .jrow { grid-template-columns:48px minmax(0,1fr) 110px 300px 220px 90px; }
.pend .jrow { min-height:0; padding:12px 24px 13px; cursor:default; }
.pend .c-pending-time, .pend .c-pending-status { min-width:0; }
.pend .c-pending-time > .c-st, .pend .c-pending-status > .c-st {
  display:block; min-width:0; overflow:hidden; text-overflow:ellipsis;
}
.pend .pending-empty { display:block; padding-left:0; line-height:1.25; }
/* console — vertical stack: review panes, full-width gallery, full-width actions */
.con { background:var(--ds-surface); padding:12px 24px 20px; box-shadow:inset 3px 0 0 var(--accent); border-bottom:1px solid var(--line); }
.conbar { display:flex; gap:18px; align-items:center; font-size:var(--ds-text-base); padding:0 0 11px; flex-wrap:wrap; }
.conbar a { font-weight:var(--ds-w-semi); text-decoration:none; color:var(--accent-ink); }
.conbar .m2 { color:var(--ink3); }
.cards { display:flex; gap:16px; align-items:stretch; min-width:0; }
.card { background:var(--surface); border:1px solid var(--ds-line); border-radius:var(--ds-r-lg); box-shadow:none; }
.card.msg { flex:1; min-width:0; display:flex; flex-direction:column; }
.card.msg .msgbody { flex:1; }
.card.bill { flex:0 1 560px; min-width:440px; }
.card.bill.side { flex:none; width:100%; }
.cards:has(.side) { flex-direction:column-reverse; }
.cards:has(.side) .card.msg { width:100%; }
.side .billbody, .side2 .billbody { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); column-gap:28px; padding:2px 20px 14px; }
.side .billbody .srow, .side2 .billbody .srow { display:block; padding:0; }
.side .billbody .srow > span:first-child, .side2 .billbody .srow > span:first-child { display:block; margin-bottom:3px; }
.msghead { padding:16px 22px 12px; border-bottom:1px solid var(--hair); }
.msghead .subj { font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); letter-spacing:-.012em; }
.msghead .byline { margin-top:4px; font-size:var(--ds-text-base); color:var(--ink2); }
.msghead .byline a { color:var(--accent-ink); font-weight:var(--ds-w-semi); text-decoration:none; }
.msgbody { padding:15px 22px 6px; font-size:var(--ds-text-base); line-height:1.6; color:var(--ds-ink); }
.msgbody p { margin:0 0 10px; }
.more { color:var(--accent-ink); font-weight:var(--ds-w-semi); white-space:nowrap; }
.attach { padding:6px 22px 15px; }
.attach .ak { font-size:var(--ds-text-caps); letter-spacing:.08em; font-weight:var(--ds-w-semi); color:var(--faint); margin-bottom:7px; }
.seg { display:inline-flex; border:1px solid var(--line); border-radius:var(--ds-r-md); overflow:hidden; vertical-align:-4px; margin:0 2px; }
.seg span, .seg button { padding:2px 10px; font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); color:var(--ink3); }
.seg button { appearance:none; border:0; border-radius:0; background:transparent; font-family:inherit; }
.seg .on { background:var(--accent-soft); color:var(--accent-ink); }
.billhead { display:flex; align-items:center; gap:10px; padding:15px 20px 9px; font-weight:var(--ds-w-semi); font-size:var(--ds-text-sm); letter-spacing:.03em; color:var(--ink); }
.billbody { padding:0 20px 14px; font-size:var(--ds-text-base); }
.bsec { font-size:var(--ds-text-caps); letter-spacing:.08em; font-weight:var(--ds-w-semi); color:var(--faint); margin:13px 0 5px; }
.btbl { width:100%; border-collapse:collapse; font-size:var(--ds-text-base); }
.btbl th { text-align:left; font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); padding:4px 0 4px 14px; color:var(--faint); border-bottom:1px solid var(--line); }
.btbl td { padding:6px 0 6px 14px; vertical-align:top; border-bottom:1px solid var(--hair); color:var(--ds-ink); }
.btbl th:first-child, .btbl td:first-child { padding-left:0; }
.btbl .r { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.totals { width:100%; border-collapse:collapse; font-size:var(--ds-text-base); }
.totals td { padding:4.5px 0; color:var(--ds-ink); } .totals .r { text-align:right; font-variant-numeric:tabular-nums; }
.totals .grand td { color:var(--ink); font-weight:var(--ds-w-semi); border-top:1px solid var(--line); padding-top:8px; font-size:var(--ds-text-md); }
.srow { display:grid; grid-template-columns:88px 1fr; column-gap:12px; padding:5px 0; font-size:var(--ds-text-base); align-items:baseline; }
.srow > span:first-child { font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:.06em; text-transform:uppercase; color:var(--faint); }
.dot { display:inline-block; width:7px; height:7px; border-radius:var(--ds-r-full); margin-right:6px; vertical-align:1px; }
.dot.g{background:var(--ds-st-done)}.dot.p{background:var(--accent)}.dot.a{background:var(--ds-st-route)}.dot.r{background:var(--red)}.dot.k{background:var(--ds-st-sched)}
.mut2 { font-size:11px; color:var(--ink3); }
.srcbadge { font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); border-radius:var(--ds-r-sm); padding:2px 7px; display:block; width:max-content; margin:3px 0 0; background:var(--ds-st-done-bg); color:var(--green-ink); }
.verify { font-size:11px; font-weight:var(--ds-w-semi); border-radius:var(--ds-r-md); padding:4px 10px; margin-left:auto; background:var(--ds-st-done-bg); color:var(--green-ink); }
.notefield { font-size:var(--ds-text-base); border-radius:var(--ds-r-lg); padding:9px 13px; margin-top:9px; background:var(--page); border:1px solid var(--line); color:var(--faint); }
/* full-width gallery band */
.card.gal { margin-top:14px; padding:14px 20px 16px; }
.galhead { display:flex; align-items:center; gap:9px; font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:.08em; color:var(--faint); margin-bottom:10px; }
.galhead span { color:var(--ink2); }
.galhead a { margin-left:auto; font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); color:var(--accent-ink); text-decoration:none; letter-spacing:0; }
.galrow { display:grid; grid-template-columns:repeat(9, 1fr); gap:10px; }
.gt { aspect-ratio:16/10; border-radius:var(--ds-r-lg); box-shadow:none; }
.gt.p1 { background:var(--ds-thumb); }
.gt.p2 { background:var(--ds-thumb); }
.gt.p3 { background:var(--ds-thumb); }
.gt.p4 { background:var(--ds-thumb); }
.gt.p5 { background:var(--ds-thumb); }
.gt.more { display:grid; place-items:center; font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); background:var(--ds-thumb); color:var(--ink3); box-shadow:inset 0 0 0 1px var(--ds-line); }
.jobs-redesign .gt img, .jobs-redesign .pthumb img { width:100%; height:100%; object-fit:cover; display:block; }
.jobs-redesign .gt img[hidden], .jobs-redesign .pthumb img[hidden], .photo-image-error[hidden] { display:none; }
.photo-image-error { display:block; padding:12px; font-size:var(--ds-text-sm); color:var(--ds-ink-2); }
.photo-refresh-status { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; padding:8px 0; font-size:var(--ds-text-sm); color:var(--ds-ink-2); }
/* full-width action bar */
.card.acts { margin-top:14px; padding:13px 20px; display:flex; gap:9px; align-items:center; flex-wrap:wrap; }
.xbtn { border-radius:var(--ds-r-lg); padding:8px 16px; height:36px; display:inline-flex; align-items:center; font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); white-space:nowrap; border:1px solid var(--ds-field); background:var(--surface); color:var(--ds-ink); box-shadow:none; }
.xbtn.primary { background:var(--accent); border-color:var(--accent); color:var(--ds-action-fg); box-shadow:var(--ds-e-primary); }
.xbtn.ghost { background:var(--accent-soft); border-color:transparent; color:var(--accent-ink); box-shadow:none; }
.keys { margin-left:auto; font-size:var(--ds-text-sm); white-space:nowrap; color:var(--faint); }
.keys b { font-weight:var(--ds-w-semi); border-radius:var(--ds-r-sm); padding:0 5px; font-size:var(--ds-text-caps); border:1px solid var(--ds-field); color:var(--ink3); }
/* ===== adversarial round: nothing stretches to fill a container ===== */
/* B1: technician never clips mid-glyph */
.c-tech { min-width:0; }
.c-tech > span { min-width:0; max-width:100%; }
/* B3: full-width billing = line items left, totals right */
.split { display:grid; grid-template-columns:minmax(0,1fr) 400px; column-gap:40px; align-items:start; }
.rcol .bsec:first-child { margin-top:13px; }
.notefield { max-width:560px; }
/* B2: action bar hugs its buttons */
.card.acts { width:max-content; max-width:100%; }
.conbar .keys { margin-left:0; }
/* M4/M5/M6: rebalanced grid — tech and status columns fit, site yields before title */
.lhead, .jrow { grid-template-columns:48px minmax(0,1fr) 152px 82px 100px 108px 122px 160px 42px 68px 78px; column-gap:11px; }
.pend .lhead, .pend .jrow { grid-template-columns:48px minmax(320px,1fr) 240px 300px 200px; column-gap:13px; }
.c-title .tt2 { flex:1 1 auto; }
.c-title .site { flex:0 1 auto; min-width:0; }
.c-st .sub { font-size:var(--ds-text-caps); }
/* M7: headers register with the dot gutter */
.frame:not(.pend) .lhead span:nth-child(n+5):nth-child(-n+8),
.jobs-redesign:not(.pend) .lhead span:nth-child(n+5):nth-child(-n+8) { padding-left:14px; }
/* M8: structural labels readable */
.lhead, .btbl th, .bsec, .galhead, .foot { color:var(--ink3); }
/* M9: photo tiles are a fixed size; the card fits them */
.card.gal { width:max-content; max-width:100%; }
.galrow { display:grid; gap:8px; }
.gt { width:176px; aspect-ratio:16/10; }
/* M10: fact strip shrink-wraps */
.side .billbody, .side2 .billbody { grid-template-columns:repeat(4, max-content); column-gap:64px; }
/* M11: follow-up pins to the bottom as a real footer */
.card.msg .msgbody { flex:0 1 auto; }
.card.msg .attach { margin-top:auto; border-top:1px solid var(--hair); padding-top:14px; }
/* M12: status rail and selection rail differ in geometry, not just hue */
.jrow { position:relative; }
.jrow.x, .jrow.w { box-shadow:inset 0 -1px 0 var(--hair); }
.jrow.x::before, .jrow.w::before { content:""; position:absolute; left:0; top:7px; bottom:7px; width:4px; border-radius:0 var(--ds-r-block) var(--ds-r-block) 0; }
.jrow.x::before { background:var(--red); } .jrow.w::before { background:var(--ds-st-route); }
/* M14: both search fields share a right edge and a width */
.bar .fld:last-child { width:290px; }
/* M17: tertiary actions are plain text */
.xbtn.ghost { background:transparent; }
.galrow[style] { display:grid; gap:8px; }
.c-title .tt2 { flex:0 1 auto; flex-shrink:1; }
.c-title .site { flex:0 1 auto; flex-shrink:4; }
/* ===== v8: owner corrections ===== */
/* flush full-width photo strip — no card, no header, no gaps */
.gstrip { display:grid; gap:0; margin-top:14px; border-radius:var(--ds-r-lg); overflow:hidden; }
.gstrip .gt { height:150px; width:auto; aspect-ratio:auto; border-radius:0; box-shadow:none; }
.gstrip .gt.more { box-shadow:inset 1px 0 0 var(--ds-line); }
/* action bar spans the console */
.card.acts { width:auto; max-width:none; }
/* technician = initials only, scales to any crew size */
.c-tech { flex-direction:row; gap:4px; align-items:center; flex-wrap:wrap; }
.c-tech .av { width:22px; height:22px; font-size:var(--ds-text-av); }
/* conversation panel */
.cards.convrow { flex-direction:row; align-items:stretch; }
.card.conv { flex:1; min-width:0; display:flex; flex-direction:column; }
.card.factcol { flex:0 0 400px; min-width:0; }
.card.factcol .billbody { display:block; padding:2px 20px 14px; }
.card.billfull { width:100%; margin-top:16px; }
.convhead { display:flex; align-items:baseline; gap:12px; padding:15px 20px 11px; border-bottom:1px solid var(--hair); }
.convhead b { font-size:var(--ds-text-md); letter-spacing:-.008em; }
.convcount { margin-left:auto; font-size:var(--ds-text-sm); color:var(--ink3); font-weight:var(--ds-w-semi); }
.convsec { font-size:var(--ds-text-caps); letter-spacing:.08em; font-weight:var(--ds-w-semi); color:var(--faint); padding:13px 20px 0; }
.convcard { padding:8px 20px 13px; }
.convcard.reply { background:var(--ds-surface); border-top:1px solid var(--hair); border-bottom:1px solid var(--hair); }
.convsubj { font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); line-height:1.35; }
.convmeta { font-size:var(--ds-text-sm); color:var(--ink3); margin-top:3px; }
.convtext { font-size:var(--ds-text-base); line-height:1.55; color:var(--ds-ink); margin-top:8px; }
.convlink { margin-top:8px; font-size:var(--ds-text-base); }
.convlink a { color:var(--accent-ink); font-weight:var(--ds-w-semi); text-decoration:none; }
.convempty { font-size:var(--ds-text-base); color:var(--ink3); padding:9px 20px 14px; margin:0; }
/* reclaim title width from the narrower technician column */
.lhead, .jrow { grid-template-columns:48px minmax(0,1fr) 96px 82px 100px 108px 122px 160px 42px 68px 78px; }
.pend .lhead, .pend .jrow { grid-template-columns:48px minmax(0,1fr) 110px 300px 220px; }
/* avatar initials must not clip inside the row */
.c-tech { align-self:center; }
.c-tech .av { vertical-align:0; line-height:1; }
/* photo tiles keep real photo proportions while staying flush and full width */
.gstrip .gt { height:auto; aspect-ratio:4/3; max-height:220px; }
/* the facts rail is content-sized, not stretched to the conversation panel */
.card.factcol { align-self:flex-start; }
.c-tech .av { display:inline-grid; place-items:center; overflow:visible; text-overflow:clip; white-space:nowrap; flex:none; }
/* Owner correction: completed-workflow rows do not repeat job status in its
   own column. Give that space to technician and completed date/time instead. */
.lhead, .jrow {
  grid-template-columns:48px minmax(0,1fr) 152px 120px 108px 122px 160px 42px 68px 78px;
  column-gap:11px;
}
.c-out { grid-column:2 / 11; }
.frame:not(.pend) .lhead span:nth-child(n+5):nth-child(-n+7),
.jobs-redesign:not(.pend) .lhead span:nth-child(n+5):nth-child(-n+7) { padding-left:14px; }
/* production BRAND_LOGO (index.html:1031), production sizing (.blogo app.css:1312) */
/* .blogo — use the production BRAND_LOGO markup + app.css:1312 rule as-is */

/* Production integration: neutralize legacy console controls without changing
   the approved measurements or the existing action handlers. */
.top { border:0; font-variant-numeric:normal; }
.jobs-redesign { line-height:normal; font-variant-numeric:normal; }
.top .logo .blogo {
  font-weight:var(--ds-w-regular); letter-spacing:normal; color:var(--ds-chrome-fg);
}
.jobs-redesign .bar .tab {
  appearance:none; border:0; background:transparent; border-radius:0;
  font-family:inherit; cursor:pointer; line-height:normal; text-align:start;
}
.jobs-redesign .bar .tab { height:var(--ds-tab-h); }
.jobs-redesign .bar .tab:focus-visible { outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:-3px; }
.jobs-redesign .fld { appearance:auto; font-family:inherit; }
.jobs-redesign .card.billfull > .drail,
.jobs-redesign .card.billfull .thread-panel { display:none; }
.jobs-redesign .card.acts .actrow,
.jobs-redesign .card.acts .btns { display:contents; }
.jobs-redesign .card.acts .grow { display:none; }
.jobs-redesign .card.billfull > .dleft { overflow:visible; }
.jobs-redesign .card.billfull .card.acts { margin:14px 0 0; border-left:0; border-right:0; border-bottom:0; border-radius:0 0 var(--ds-r-lg) var(--ds-r-lg); }
.jobs-redesign .jrow:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.jobs-redesign .jobs-billing-slot { margin-top:16px; }
.jobs-redesign .jobs-billing-empty { width:100%; }
.jobs-redesign .jobs-billing-empty .billbody { padding:16px 20px 20px; }
.jobs-redesign .jobs-billing-empty p { margin:0 0 12px; color:var(--ink3); }
.jobs-redesign .jobs-secondary-workflow:empty { display:none; }
.jobs-redesign .jobs-billing-slot .bill-shade {
  position:static; inset:auto; z-index:auto; display:block; padding:0;
  width:100%; background:transparent; backdrop-filter:none;
}
.jobs-redesign .jobs-billing-slot .bill-modal {
  width:100%; max-width:none; max-height:none; border-radius:var(--ds-r-lg);
}
.jobs-redesign .jobs-billing-slot .bill-scroll { max-height:none; }
.jobs-redesign .jobs-billing-slot .bill-actions {
  position:static; width:100%; border-radius:0 0 var(--ds-r-lg) var(--ds-r-lg);
}

/* Production Jobs workspace. Stateful notes and Billing controllers still own
   every field and action; this sheet only gives their existing DOM the approved
   queue-and-console presentation. */
.jobs-redesign { min-width:1180px; max-width:100%; background:var(--page); }
.jobs-redesign .bar { min-height:var(--ds-sub-h); height:auto; flex-wrap:nowrap; }
.jobs-redesign .lhead { align-items:normal; }
.jobs-redesign .bar .tab,
.jobs-redesign .bar .right,
.jobs-redesign .bar .fld { flex:none; white-space:nowrap; }
.jobs-redesign .bar .tab { min-height:var(--ds-tab-h); height:auto; }
.jobs-redesign .bar .fld { min-height:32px; height:auto; }
.jobs-redesign [data-jobs-needs-notes] { cursor:pointer; }
.jobs-redesign [data-jobs-needs-notes]:hover {
  color:var(--ds-chrome-fg); background:var(--ds-chrome-raise); border-color:var(--ds-chrome-edge);
}
/* pressed chrome control: the one chrome active style (raised fill), white label */
.jobs-redesign [data-jobs-needs-notes][aria-pressed="true"] {
  color:var(--ds-chrome-fg); background:var(--ds-chrome-raise); border-color:var(--ds-chrome-fg-2);
  box-shadow:none;
}
.jobs-redesign [data-jobs-needs-notes]:focus-visible {
  outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:var(--ds-focus-off);
}
.jobs-redesign .list { min-width:0; }
.jobs-redesign .con-title,
.jobs-redesign .con-job { color:var(--accent-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .con-meta { color:var(--ink3); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.jobs-redesign .conlink {
  appearance:none; border:0; border-radius:var(--ds-r-sm); background:transparent;
  min-height:24px; padding:3px 6px; display:inline-flex; align-items:center;
  color:var(--accent-ink); font:var(--ds-w-semi) var(--ds-text-base)/normal var(--ds-font);
  cursor:pointer;
}
.jobs-redesign .conlink:hover { background:var(--accent-soft); }
.jobs-redesign .conbar .keys { margin-left:auto; }
.jobs-redesign .jobs-review-workspace {
  align-items:stretch; min-height:670.5px; height:auto;
}
.jobs-redesign .jobs-notes-workflow { flex:1 1 856px; min-width:0; display:flex; }
.jobs-redesign .jobs-notes-panel { flex:1 1 auto; min-width:0; height:auto; overflow:hidden; }
.jobs-redesign .jobs-notes-panel > .lifestrip,
.jobs-redesign .jobs-notes-panel > .dhead,
.jobs-redesign .jobs-legacy-rail,
.jobs-redesign .jobs-notes-panel .thread-scroll { display:none; }
.jobs-redesign .jobs-notes-body { padding:16px 22px; overflow:auto; }
.jobs-redesign .cc-worknotes { margin:0 0 var(--ds-s-3); padding:0 var(--ds-s-6) var(--ds-s-3); border-bottom:1px solid var(--ds-line); }
.jobs-redesign .cc-worknotes-bar { display:flex; align-items:center; justify-content:space-between; gap:var(--ds-s-3); min-height:var(--ds-control-h); }
.jobs-redesign .cc-worknotes-bar-copy { display:flex; align-items:baseline; gap:var(--ds-s-3); min-width:0; }
.jobs-redesign .cc-worknotes-bar h3 { flex:none; margin:0; color:var(--ds-ink); font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); white-space:nowrap; }
.jobs-redesign .cc-worknotes-summary { min-width:0; color:var(--ds-ink-3); font-size:var(--ds-text-sm); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.jobs-redesign .cc-worknotes-refresh-failure { margin:var(--ds-s-1) 0 0; color:var(--ds-ink-2); font-size:var(--ds-text-sm); }
.jobs-redesign .cc-worknotes-bar > .cc-worknotes-toggle { flex:none; padding:var(--ds-s-1) var(--ds-s-3); border:1px solid var(--ds-line); border-radius:var(--ds-r-md); background:var(--ds-surface); color:var(--ds-ink-2); font-size:var(--ds-text-sm); font-weight:var(--ds-w-medium); cursor:pointer; }
.jobs-redesign .cc-worknotes-bar > .cc-worknotes-toggle:hover,
.jobs-redesign .cc-worknotes-all-toggle:hover { background:var(--ds-paper-hover); }
.jobs-redesign .cc-worknotes .cc-worknotes-retry { padding:0; border:0; background:transparent; color:var(--ds-ink-2); font:inherit; cursor:pointer; text-decoration:underline; }
.jobs-redesign .cc-worknotes-intro { margin:0 0 var(--ds-s-2); color:var(--ds-ink-3); font-size:var(--ds-text-sm); }
.jobs-redesign .cc-worknotes-card { margin-block:var(--ds-s-2); padding:var(--ds-s-2) var(--ds-s-3); border-inline-start:var(--ds-s-1) solid var(--ds-line); border-radius:var(--ds-r-sm); background:var(--ds-canvas); }
.jobs-redesign .cc-worknotes-this { border-inline-start-color:var(--ds-selection); }
.jobs-redesign .cc-worknotes-card h4 { margin:0; color:var(--ds-ink); font-size:var(--ds-text-sm); line-height:var(--ds-lh-sm); font-weight:var(--ds-w-semi); }
.jobs-redesign .cc-worknotes-copy { margin-block-start:var(--ds-s-2); margin-block-end:0; }
.jobs-redesign .cc-worknotes-copy > strong { display:block; color:var(--ds-ink-2); font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); }
.jobs-redesign .cc-worknotes-text { display:block; color:var(--ds-ink-2); white-space:pre-wrap; overflow-wrap:anywhere; }
.jobs-redesign .cc-worknotes-clamped { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:4; overflow:hidden; }
.jobs-redesign .cc-worknotes-open .cc-worknotes-clamped { display:block; -webkit-line-clamp:unset; }
.jobs-redesign .cc-worknotes-card .cc-worknotes-toggle { margin-block-start:var(--ds-s-1); padding:0; border:0; background:transparent; box-shadow:none; color:var(--ds-ink-2); font-size:var(--ds-text-sm); cursor:pointer; text-decoration:underline; }
.jobs-redesign .cc-worknotes-all-toggle { display:inline-flex; align-items:center; margin-block:var(--ds-s-2); padding:var(--ds-s-1) var(--ds-s-2); border:1px solid var(--ds-line); border-radius:var(--ds-r-md); background:var(--ds-surface); color:var(--ds-ink); font-size:var(--ds-text-sm); font-weight:var(--ds-w-medium); cursor:pointer; }
.jobs-redesign .cc-worknotes-all[hidden] { display:none; }
.jobs-redesign .notes-refresh-toolbar {
  display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  padding:12px 22px 0; flex:none;
}
.jobs-redesign .notes-refresh-toolbar button { min-height:32px; }
.jobs-redesign .jobs-notes-body .editform { padding:0; }
.jobs-redesign .jobs-notes-body .rtedit { min-height:280px; max-height:none; }
.jobs-redesign .jobs-notes-panel > .jobs-legacy-action {
  margin-top:auto; border-top:1px solid var(--hair); padding:14px 22px 15px;
}
.jobs-redesign .jobs-notes-panel > .jobs-legacy-action .actrow { display:none; }
.jobs-redesign .jobs-notes-panel > .jobs-legacy-action .qneed {
  display:block; margin:0; padding:0; border:0; background:transparent;
}
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="side"] {
  flex:0 0 560px; min-width:440px; height:auto; margin-top:0; align-self:stretch;
}
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] {
  width:100%; min-height:508px; height:auto; margin-top:16px; display:flex; overflow:visible;
}
.jobs-redesign .jobs-billing-slot.jobs-billing-compact[data-jobs-billing-layout="full"] {
  min-height:253px;
}
.jobs-redesign .jobs-billing-loading { color:var(--ink3); padding-top:8px; }
.jobs-redesign .jobs-billing-slot .bill-modal {
  border:0; border-radius:var(--ds-r-lg); box-shadow:none; height:auto; min-height:100%;
  display:flex; flex-direction:column;
}
.jobs-redesign .jobs-billing-slot .bill-scroll { min-height:0; overflow:visible; }
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-head {
  flex:0 0 auto; min-height:75px; height:auto; overflow:visible;
}
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-scroll {
  flex:0 0 auto; width:auto; min-height:431px; height:auto; margin:0 20px; padding:0;
  display:grid; grid-template-columns:minmax(0,1fr) 400px;
  column-gap:40px; align-items:start; font-size:var(--ds-text-base); color:var(--ink);
  border-color:var(--ink);
}
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-main {
  grid-column:1;
}
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-summary {
  grid-column:2;
}
.jobs-redesign .jobs-billing-slot .bill-note-section { margin-top:18px; }
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-actions:not(.bill-recovery-actions) { display:none; }
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="side"] .bill-actions:not(.bill-recovery-actions) { display:none; }
.jobs-redesign .jobs-billing-slot.jobs-billing-compact[data-jobs-billing-layout="full"] .bill-scroll {
  min-height:0;
  padding-bottom:20px;
}
/* The pre-notes review is a dense companion to the editable notes draft. It
   keeps the same fields and values, but does not inherit the large standalone
   Billing-modal spacing or duplicate its action row. */
.jobs-redesign .bill-prepared-review-modal .bill-head { padding:12px 18px; }
.jobs-redesign .bill-prepared-review-modal .bill-head h2 { font-size:var(--ds-text-md); }
.jobs-redesign .bill-prepared-review-modal .bill-scroll { padding:10px 18px 12px; }
.jobs-redesign .bill-prepared-review-modal .bill-section { margin-bottom:10px; }
.jobs-redesign .bill-prepared-review-modal .bill-section-head { margin-bottom:4px; }
.jobs-redesign .bill-prepared-review-modal .bill-title { margin-bottom:4px; font-size:var(--ds-text-caps); }
.jobs-redesign .bill-prepared-review-modal .bill-title-line .bill-title { margin-bottom:0; }
.jobs-redesign .bill-prepared-review-modal .bill-edit-badge { min-height:17px; padding:2px 6px; font-size:var(--ds-text-av); }
.jobs-redesign .bill-prepared-review-modal .bill-edit-guidance { margin-top:2px; font-size:var(--ds-text-caps); }
.jobs-redesign .bill-prepared-review-modal .bill-labor,
.jobs-redesign .bill-prepared-review-modal .bill-table,
.jobs-redesign .bill-prepared-review-modal .bill-totals { font-size:var(--ds-text-sm); }
.jobs-redesign .bill-prepared-review-modal .bill-labor th,
.jobs-redesign .bill-prepared-review-modal .bill-table th { padding:5px 7px; font-size:var(--ds-text-caps); }
.jobs-redesign .bill-prepared-review-modal .bill-labor td,
.jobs-redesign .bill-prepared-review-modal .bill-table td { padding:5px 7px; }
.jobs-redesign .bill-prepared-review-modal .bill-input { width:64px; padding:4px 6px; }
.jobs-redesign .bill-prepared-review-modal .bill-rate .bill-input { width:72px; }
.jobs-redesign .bill-prepared-review-modal .bill-period { width:120px; padding:3px 5px; }
.jobs-redesign .bill-prepared-review-modal .bill-evidence { padding:5px 7px; font-size:var(--ds-text-caps); }
.jobs-redesign .bill-prepared-review-modal .bill-totals td { padding:3px 0 3px 12px; }
.jobs-redesign .bill-prepared-review-modal .bill-note-section { margin-top:10px; }
.jobs-redesign .bill-prepared-review-modal .bill-note { min-height:42px; height:42px; padding:6px 8px; }
.jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="side"] .bill-modal {
  min-width:0;
}
.jobs-redesign .convframe { display:none; }
.jobs-redesign .convcard:not(.reply) { min-height:82.5px; }
.jobs-redesign .conbar { height:30px; }
.jobs-redesign .con:has(.jobs-billing-slot[data-jobs-billing-layout="full"]) .card.conv {
  height:211.5px; overflow:auto;
}
.jobs-redesign .con:has([data-jobs-reopen]) .card.conv {
  height:259.2px; overflow:auto;
}
.jobs-redesign .con:has([data-jobs-reopen]) [data-jobs-reopen] {
  position:sticky; left:24px; z-index:1;
}
.jobs-redesign .thread-alert {
  margin:10px 20px 0; padding:9px 11px; border-radius:var(--ds-r-lg);
  background:var(--ds-st-late-bg); color:var(--red-ink); font-size:var(--ds-text-sm);
}
.jobs-redesign .xbtn {
  appearance:none; font-family:inherit; line-height:normal; cursor:pointer; text-align:start;
}
.jobs-redesign .xbtn.primary { width:253.3px; }
.jobs-redesign .xbtn.ghost { width:187.1px; }
.jobs-redesign .xbtn:disabled { opacity:.48; cursor:not-allowed; }
.jobs-redesign .xbtn:focus-visible,
.jobs-redesign .conlink:focus-visible,
.jobs-redesign .seg button:focus-visible {
  outline:2px solid var(--accent); outline-offset:2px;
}
.jobs-redesign .gstrip .gt[type="button"] {
  appearance:none; padding:0; border:0; cursor:pointer; font-size:var(--ds-text-base);
}
.jobs-redesign .gstrip .gt { font-size:var(--ds-text-base); width:100%; min-width:0; }
.jobs-redesign .seg {
  display:inline-flex; padding:0;
  font-size:var(--ds-text-base); color:var(--ink2);
}
.jobs-redesign .jobs-legacy-action .seg button {
  min-height:24px; padding:3px 10px; font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); cursor:pointer;
}
.jobs-redesign .jobs-legacy-action .seg button:hover { background:var(--ds-sel-bg); color:var(--accent-ink); }
/* Final Not Complete queue contract. Keep this after the preserved mockup
   cascade so the six rendered cells always share one explicit grid. */
.jobs-redesign.pend .lhead,
.jobs-redesign.pend .jrow {
  grid-template-columns:48px minmax(220px,1.5fr) 90px minmax(150px,.8fr) minmax(130px,.7fr) 65px 65px minmax(170px,1fr);
  column-gap:13px;
}
@media (max-width:980px) {
  /* app.css already wraps navigation and search here; undo the fixed mockup
     height so those rows occupy real space instead of covering the Jobs tabs. */
  .top { height:auto; min-height:52px; }
}
@media (max-width:1599px) {
  .jobs-redesign { width:100%; min-width:0; max-width:100%; overflow-x:auto; overflow-y:visible; }
  .jobs-redesign .bar,
  .jobs-redesign .lhead,
  .jobs-redesign .list,
  .jobs-redesign > .foot { min-width:0; }
  .jobs-redesign:not(.pend) .lhead,
  .jobs-redesign:not(.pend) .jrow { min-width:1180px; }
  .jobs-redesign .bar {
    max-width:100%; overflow:visible; flex-wrap:wrap;
  }
  .jobs-redesign .bar .right {
    flex:1 0 100%; min-width:0; margin-left:0; padding:0 0 8px;
    justify-content:flex-start;
  }
  .jobs-redesign.pend { overflow-x:hidden; }
}
@media (max-width:899px) {
  /* Keep every workflow lane and filter discoverable instead of hiding them
     beyond the viewport. The rows may still pan as a data table, while the
     control bar and selected console fit the viewport. */
  .jobs-redesign .bar {
    min-width:0; max-width:100%; overflow:visible; flex-wrap:wrap;
    padding-bottom:8px;
    position:sticky; left:0; width:100%; z-index:2;
  }
  .jobs-redesign .bar .right {
    flex:1 0 100%; min-width:0; margin-left:0; padding:0;
    justify-content:flex-start;
  }
  .jobs-redesign .bar .scope { display:none; }
  .jobs-redesign .bar .fld:last-child { width:180px; }
  .jobs-redesign:not(.pend) .list,
  .jobs-redesign:not(.pend) > .foot { min-width:0; }
  .jobs-redesign:not(.pend) .lhead,
  .jobs-redesign:not(.pend) .jrow { min-width:1180px; }
  .jobs-redesign .con {
    width:100%; min-width:0; padding:12px 16px 20px;
  }
  .jobs-redesign .conbar { height:auto; }
  .jobs-redesign .conbar .keys { display:none; }
  .jobs-redesign .cards.convrow,
  .jobs-redesign .jobs-review-workspace { flex-direction:column; }
  .jobs-redesign .card.factcol,
  .jobs-redesign .jobs-notes-workflow,
  .jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="side"] {
    width:100%; min-width:0; flex:0 0 auto;
  }
  .jobs-redesign .jobs-review-workspace { min-height:0; }
  /* The desktop CC minimum must not squeeze the manually reviewed To field. */
  .jobs-redesign .ifrow { grid-template-columns:minmax(0,1fr); }
  .jobs-redesign .ifield { min-width:0; }
  .jobs-redesign .ifrow .ifield:last-child > label { min-width:30px; }
  .jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-scroll {
    display:block; width:auto; min-height:0; margin:0; padding:0 16px 18px;
  }
  .jobs-redesign .jobs-billing-slot[data-jobs-billing-layout="full"] .bill-summary {
    margin-top:18px;
  }
  .jobs-redesign .gstrip {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
  .jobs-redesign.pend .lhead { display:none; }
  .jobs-redesign.pend .jrow {
    grid-template-columns:48px minmax(0,1fr) minmax(150px, .65fr);
    grid-template-areas:
      "pending-num pending-title pending-status"
      ". pending-time pending-time"
      ". pending-tech pending-hours";
    column-gap:12px; row-gap:8px; align-items:center;
  }
  .jobs-redesign.pend .jrow > .c-num { grid-area:pending-num; align-self:start; padding-top:2px; }
  .jobs-redesign.pend .jrow > .c-title { grid-area:pending-title; }
  .jobs-redesign.pend .jrow > .c-tech { grid-area:pending-tech; }
  .jobs-redesign.pend .jrow > .c-pending-time { grid-area:pending-time; }
  .jobs-redesign.pend .jrow > .c-pending-status { grid-area:pending-status; }
  .jobs-redesign.pend .jrow > .c-pending-hours { grid-area:pending-hours; text-align:right; }
  .jobs-redesign.pend .c-pending-hours::before {
    content:"Hrs "; color:var(--faint); font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi);
    letter-spacing:.05em; text-transform:uppercase;
  }
}
@media (max-width:599px) {
  .jobs-redesign.pend .jrow {
    grid-template-columns:38px minmax(0,1fr) auto;
    grid-template-areas:
      "pending-num pending-title pending-title"
      ". pending-status pending-status"
      ". pending-time pending-time"
      ". pending-tech pending-hours";
    padding:13px 14px 14px; column-gap:9px;
  }
  .jobs-redesign.pend .c-title {
    align-items:flex-start; flex-direction:column; gap:2px;
  }
  .jobs-redesign.pend .c-title .site { width:100%; }
  .jobs-redesign.pend .foot { padding-left:14px; padding-right:14px; }
}
/* Scheduling handoff addition; the protected planning styles below remain. */
.jobs-redesign .planning-schedule{display:block;min-height:32px;margin-top:4px;padding:4px 0;font-weight:var(--ds-w-semi)}

/* Pending and Progress are read-only planning views of literal Simpro stages. */
.jobs-redesign .bar { height:auto; min-height:var(--ds-sub-h); flex-wrap:wrap; }
.jobs-redesign.pend .jrow { cursor:pointer; align-items:start; }
.jobs-redesign.pend .c-title { min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:3px; }
.jobs-redesign .planning-snippet { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:var(--ds-text-sm); line-height:1.45; color:var(--ink2); white-space:normal; overflow-wrap:anywhere; }
.jobs-redesign .c-planning-materials { display:block; min-width:0; font-size:var(--ds-text-sm); line-height:1.45; overflow-wrap:anywhere; }
.jobs-redesign .c-planning-materials .sub { display:block; color:var(--faint); margin-top:3px; }
.jobs-redesign .planning-console { min-width:0; width:100%; }
.jobs-redesign .planning-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(220px,.7fr) minmax(0,1fr); gap:24px; padding:20px 0; }
.jobs-redesign .planning-grid > section { min-width:0; overflow-wrap:anywhere; }
.jobs-redesign .planning-grid h3 { font-size:var(--ds-text-md); margin:0 0 12px; }
.jobs-redesign .planning-grid h4 { font-size:var(--ds-text-sm); margin:16px 0 6px; }
.jobs-redesign .planning-copy { white-space:pre-wrap; font-size:var(--ds-text-base); line-height:1.6; overflow-wrap:anywhere; }
.jobs-redesign .planning-scope details { margin-top:18px; }
.jobs-redesign .planning-scope summary { cursor:pointer; margin-bottom:10px; font-weight:var(--ds-w-semi); }
.jobs-redesign .planning-facts dl { margin:0; }
.jobs-redesign .planning-facts dl > div { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:7px 0; border-bottom:1px solid var(--line); font-size:var(--ds-text-sm); }
.jobs-redesign .planning-facts dt { color:var(--ink2); }
.jobs-redesign .planning-facts dd { margin:0; text-align:right; }
.jobs-redesign .planning-freshness { font-size:11px; line-height:1.5; color:var(--ink2); }
.jobs-redesign .planning-material-table { width:100%; border-collapse:collapse; font-size:var(--ds-text-sm); table-layout:fixed; }
.jobs-redesign .planning-material-table th, .jobs-redesign .planning-material-table td { text-align:left; padding:8px 4px; border-bottom:1px solid var(--line); vertical-align:top; overflow-wrap:anywhere; }
.jobs-redesign .planning-material-table th:last-child, .jobs-redesign .planning-material-table td:last-child { width:42px; text-align:right; }
.jobs-redesign .planning-material-table .sub { display:block; font-size:var(--ds-text-caps); color:var(--ink2); padding-top:3px; }
@media (max-width:1199px) {
  .jobs-redesign.pend .lhead { display:none; }
  .jobs-redesign.pend .jrow {
    grid-template-columns:40px minmax(0,1fr) minmax(100px,.6fr);
    grid-template-areas:"pending-num pending-title pending-status" ". pending-time pending-tech" ". planning-materials planning-est" ". planning-materials planning-act";
    column-gap:12px; row-gap:8px; padding:14px 18px;
  }
  .jobs-redesign.pend .jrow > .c-num { grid-area:pending-num; }
  .jobs-redesign.pend .jrow > .c-title { grid-area:pending-title; }
  .jobs-redesign.pend .jrow > .c-tech { grid-area:pending-tech; }
  .jobs-redesign.pend .jrow > .c-pending-time { grid-area:pending-time; }
  .jobs-redesign.pend .jrow > .c-pending-status { grid-area:pending-status; }
  .jobs-redesign.pend .jrow > .c-planning-materials { grid-area:planning-materials; }
  .jobs-redesign.pend .jrow > .c-planning-est { grid-area:planning-est; }
  .jobs-redesign.pend .jrow > .c-planning-act { grid-area:planning-act; }
  .jobs-redesign.pend .c-planning-est::before, .jobs-redesign.pend .c-planning-act::before { content:attr(data-label) " "; font-size:var(--ds-text-caps); color:var(--ink2); }
  .jobs-redesign .planning-grid { grid-template-columns:minmax(0,1fr) minmax(200px,.7fr); }
  .jobs-redesign .planning-materials { grid-column:1/-1; }
}
@media (max-width:599px) {
  .jobs-redesign.pend .jrow { grid-template-columns:38px minmax(0,1fr); grid-template-areas:"pending-num pending-title" ". pending-status" ". pending-time" ". pending-tech" ". planning-est" ". planning-act" ". planning-materials"; padding:14px; }
  .jobs-redesign.pend .c-planning-est, .jobs-redesign.pend .c-planning-act { text-align:left; }
  .jobs-redesign .planning-grid { grid-template-columns:minmax(0,1fr); gap:24px; }
  .jobs-redesign .planning-console .conbar { flex-wrap:wrap; gap:8px; }
}

/* Van time on site, under the Simpro labour hours in the Jobs list. No grid change: it is a second line in the same cell. */
.jobs-redesign .c-m .c-onsite,.c-m .c-onsite{display:block;font-variant-numeric:tabular-nums;margin-top:1px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-medium);letter-spacing:0;color:var(--ink3,var(--ds-ink-3));white-space:nowrap}
.jobs-redesign .c-m .c-onsite.flag,.c-m .c-onsite.flag{color:var(--ds-st-route-ink);font-weight:var(--ds-w-semi)}

/* Edit a job's basics inside the Job details panel. */
.jobs-redesign .planning-edit{float:right;margin-top:-26px;font-size:var(--ds-text-sm)}
.jobs-redesign .planning-editform{display:grid;gap:8px;margin:4px 0 12px;padding:10px;border:1px solid var(--line,var(--ds-line));border-radius:var(--ds-r-lg);background:var(--ds-canvas)}
.jobs-redesign .planning-editform label{display:grid;gap:3px;font-size:11px;font-weight:var(--ds-w-semi);color:var(--ink2,var(--ds-ink-2))}
.jobs-redesign .planning-editform input,.jobs-redesign .planning-editform select{font:inherit;font-size:var(--ds-text-base);font-weight:var(--ds-w-regular);padding:6px 8px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ink,var(--ds-ink));min-width:0}
.jobs-redesign .planning-editactions{display:flex;gap:12px;align-items:center}
.jobs-redesign .planning-editactions .primary{font-weight:var(--ds-w-semi)}

/* Asset test progress (Pending, Progress, Completed rows and the opened job's Assets section).
   One block per asset, grouped by type: green pass, red fail, outlined not tested. */
@media (min-width:1200px) {
  .jobs-redesign.pend .lhead,
  .jobs-redesign.pend .jrow {
    grid-template-columns:48px minmax(0,2.1fr) 80px minmax(120px,.55fr) minmax(142px,.6fr) 196px 54px 54px minmax(0,1fr);
    column-gap:12px;
  }
  .jobs-redesign.pend .lhead > span { white-space:nowrap; }
}
@media (max-width:1199px) {
  .jobs-redesign.pend .jrow > .c-assets { grid-column:2 / -1; }
  .jobs-redesign.pend .jrow > .c-assets:empty { display:none; }
}
.jobs-redesign .c-assets { display:flex; flex-direction:column; gap:5px; min-width:0; padding-top:2px; }
.jobs-redesign .ap-grp { display:flex; flex-direction:column; gap:5px; min-width:0; }
.jobs-redesign .ap-row { display:flex; align-items:center; gap:6px; min-width:0; }
.jobs-redesign .ap-lbl { flex:none; width:72px; font-size:11px; color:var(--ink2); white-space:nowrap; line-height:12px; overflow:hidden; text-overflow:ellipsis; }
.jobs-redesign .ap-seg { display:flex; flex-wrap:wrap; gap:3px; max-width:190px; }
.jobs-redesign .ap-seg i { display:block; width:12px; height:12px; border-radius:var(--ds-r-block); background:var(--surface); box-shadow:inset 0 0 0 1.5px var(--ds-idle); }
.jobs-redesign .ap-seg i.ap-p { background:var(--ds-ok,var(--ds-st-done)); box-shadow:none; }
.jobs-redesign .ap-seg i.ap-f { background:var(--ds-bad,var(--ds-st-late)); box-shadow:none; }
.jobs-redesign .ap-seg.lg { max-width:none; }
.jobs-redesign .ap-seg.lg i { width:16px; height:14px; }
.jobs-redesign .ap-sub { font-size:11px; color:var(--ink3); white-space:nowrap; font-variant-numeric:tabular-nums; }
.jobs-redesign .jrow.sel .ap-sub { color:var(--ink2); }
/* Completed: blocks sit on the second line, before the outcome sentence. */
.jobs-redesign .c-out.ap-out { display:flex; align-items:center; gap:10px; min-width:0; -webkit-line-clamp:unset; }
.jobs-redesign .c-out.ap-out .ap-out-grp { flex:none; }
.jobs-redesign .c-out.ap-out .ap-out-txt { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* Opened Pending / Progress job: Assets section after the three planning sections. */
.jobs-redesign .ap-section { border-top:1px solid var(--line); padding-top:18px; }
.jobs-redesign .ap-head { display:flex; align-items:flex-start; gap:16px; margin-bottom:10px; }
.jobs-redesign .ap-head h3 { font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); margin:0; }
.jobs-redesign .ap-sum { margin-left:auto; display:flex; align-items:center; gap:14px; font-size:var(--ds-text-base); color:var(--ink2); white-space:nowrap; }
.jobs-redesign .ap-sum .ap-lbl { width:80px; text-align:right; }
.jobs-redesign .ap-tbl { width:100%; border-collapse:collapse; table-layout:fixed; font-size:var(--ds-text-base); }
.jobs-redesign .ap-tbl th { text-align:left; font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:.06em; text-transform:uppercase; color:var(--ink2); padding:6px 12px 6px 0; border-bottom:1px solid var(--line); }
.jobs-redesign .ap-tbl td { padding:8px 12px 8px 0; border-bottom:1px solid var(--line); vertical-align:top; color:var(--ink); line-height:1.35; overflow-wrap:anywhere; }
.jobs-redesign .ap-tbl tr.ap-grow td { padding:16px 0 6px; border-bottom:1px solid var(--line); font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); color:var(--ink); }
.jobs-redesign .ap-tbl tr.ap-grow .ap-seg { display:inline-flex; vertical-align:-2px; margin-left:10px; }
.jobs-redesign .ap-tbl tr.ap-hasnote td { border-bottom:0; padding-bottom:2px; }
.jobs-redesign .ap-tbl tr.ap-note td { padding:0 12px 10px 0; }
.jobs-redesign .ap-tbl td .sub { display:block; font-size:11px; color:var(--ink2); margin-top:2px; }
.jobs-redesign .ap-tbl .ap-when, .jobs-redesign .ap-tbl .ap-dur { font-variant-numeric:tabular-nums; white-space:nowrap; }
.jobs-redesign .ap-tbl .ap-dash { color:var(--ink2); }
.jobs-redesign .ap-tnote { display:flex; gap:10px; align-items:baseline; font-size:var(--ds-text-base); color:var(--ink2); line-height:1.5; }
.jobs-redesign .ap-tnote .k { flex:none; font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:.06em; text-transform:uppercase; color:var(--ink2); }
.jobs-redesign .ap-pill { display:inline-flex; align-items:center; height:22px; margin-top:-3px; padding:0 9px; border-radius:var(--ds-r-full); font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); white-space:nowrap; }
.jobs-redesign .ap-pill.ap-ok { background:var(--ds-ok-soft,var(--ds-st-done-bg)); color:var(--ds-ok-pill-ink,var(--ds-st-done-ink)); }
.jobs-redesign .ap-pill.ap-bad { background:var(--ds-bad-soft,var(--ds-st-late-bg)); color:var(--ds-bad-ink,var(--ds-st-late-ink)); }
.jobs-redesign .ap-untested { color:var(--ink2); white-space:nowrap; }
.jobs-redesign .ap-untested::before { content:""; display:inline-block; width:6px; height:6px; border-radius:var(--ds-r-full); background:var(--ds-idle,var(--ds-st-sched)); margin-right:7px; vertical-align:1px; }
@media (max-width:899px) {
  .jobs-redesign .ap-head { flex-wrap:wrap; }
  .jobs-redesign .ap-sum { margin-left:0; flex-wrap:wrap; white-space:normal; }
  .jobs-redesign .ap-section { overflow-x:auto; }
  .jobs-redesign .ap-tbl { min-width:880px; }
}

/* Pending/Progress: long titles stay inside the title column (ellipsis), never over Schedule/Status. */
.jobs-redesign.pend .c-title > * { max-width:100%; }

/* Job status chip in its Simpro colour (Pending/Progress). */
.jobs-redesign .st-chip { display:inline-block; width:fit-content; max-width:100%; padding:2px 8px; border-radius:var(--ds-r-md); font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); line-height:1.4; white-space:normal; }

/* ---- Navy system Phase 1 (2026-09-24): Jobs stage bar = navy folder tabs (D6).
   The active tab opens into the list below it, so it takes that surface's colour
   (the white list header until Phase 2 moves the Jobs list onto paper). The
   8px inverse fillets at its feet join it to the page. Controls sit at the right
   on the tab baseline. When the bar wraps, the control row goes first so the
   tab row always touches the page (below 900px the tabs wrap, see below). ---- */
.jobs-redesign .bar { align-items:flex-end; padding-left:calc(var(--ds-gutter) - var(--ds-s-3)); padding-right:var(--ds-gutter); }
.jobs-redesign .bar .right { align-self:center; padding-right:0; }
.jobs-redesign .bar .tab {
  height:var(--ds-tab-h); min-height:var(--ds-tab-h); padding:0 var(--ds-s-3);
  border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0;
}
.jobs-redesign .bar .tab:hover:not(.on) { color:var(--ds-chrome-fg); }
.jobs-redesign .bar .tab.on { background:var(--ds-surface); color:var(--ds-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .bar .tab.on b { color:var(--ds-ink-2); }
.jobs-redesign .bar .tab.on::before,
.jobs-redesign .bar .tab.on::after { content:""; position:absolute; bottom:0; width:8px; height:8px; }
.jobs-redesign .bar .tab.on::before { left:-8px; border-bottom-right-radius:var(--ds-r-lg); box-shadow:4px 4px 0 4px var(--ds-surface); }
.jobs-redesign .bar .tab.on::after { right:-8px; border-bottom-left-radius:var(--ds-r-lg); box-shadow:-4px 4px 0 4px var(--ds-surface); }
@media (max-width:1599px) {
  .jobs-redesign .bar .right { order:-1; padding:var(--ds-s-2) 0; }
}
/* Narrow: the tabs wrap onto several rows, so a folder tab cannot open into the page;
   the active tab takes the one chrome active style (raised fill) instead. */
@media (max-width:899px) {
  .jobs-redesign .bar .tab { border-radius:var(--ds-r-md); }
  .jobs-redesign .bar .tab.on { background:var(--ds-chrome-raise); color:var(--ds-chrome-fg); }
  .jobs-redesign .bar .tab.on b { color:var(--ds-chrome-fg-2); }
  .jobs-redesign .bar .tab.on::before,
  .jobs-redesign .bar .tab.on::after { display:none; }
}

/* ==== Navy system Phase 2 (2026-09-24): Jobs list, open job, shared editor ====
   Standard: docs/design-system/README.md sections 5-6 + reference/jobs.html.
   Paper is the page (D5); the open job is ONE white band with a 3px navy rail (D8,
   principle 7); status = glyph in the state colour + ink-2 word (D14); buttons D17;
   fields D22c; Saira only on the open job title (D3). Presentation only. */
.jobs-redesign, .quotes-queue {
  --st-g-sched:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");
  --st-g-route:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Cpath d='M6 2.75a3.25 3.25 0 0 1 0 6.5z'/%3E%3C/svg%3E");
  --st-g-done:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cmask id='m'%3E%3Crect width='12' height='12' fill='%23fff'/%3E%3Cpath d='M3.7 6.1 5.3 7.7 8.4 4.4' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Ccircle cx='6' cy='6' r='5.5' mask='url%28%23m%29'/%3E%3C/svg%3E");
  --st-g-late:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cmask id='m'%3E%3Crect width='12' height='12' fill='%23fff'/%3E%3Cpath d='M6 3.2v3.3' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3Ccircle cx='6' cy='8.6' r='.85' fill='%23000'/%3E%3C/mask%3E%3Ccircle cx='6' cy='6' r='5.5' mask='url%28%23m%29'/%3E%3C/svg%3E");
  --st-g-warn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Cpath d='M6 3.7v2.6' stroke='%23000' stroke-width='1.4' stroke-linecap='round'/%3E%3Ccircle cx='6' cy='8.1' r='.8'/%3E%3C/svg%3E");
  --st-g-review:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Ccircle cx='6' cy='6' r='1.5'/%3E%3C/svg%3E");
  font-family:var(--ds-font); font-feature-settings:var(--ds-features); color:var(--ds-ink);
}
/* the stage bar's active folder tab now opens into paper */
.jobs-redesign .bar .tab.on { background:var(--ds-surface); }
.jobs-redesign .bar .tab.on::before { box-shadow:4px 4px 0 4px var(--ds-surface); }
.jobs-redesign .bar .tab.on::after { box-shadow:-4px 4px 0 4px var(--ds-surface); }
@media (max-width:899px) { .jobs-redesign .bar .tab.on { background:var(--ds-chrome-raise); } }

/* list on paper: header 40px caps, rows on 0.5px rules */
.jobs-redesign { background:var(--ds-canvas); }
.jobs-redesign .lhead { min-height:var(--ds-lhead-h); align-items:center; padding-top:0; padding-bottom:0; background:var(--ds-surface); border-bottom:1px solid var(--ds-line); color:var(--ds-ink-3); font-size:var(--ds-text-caps); line-height:var(--ds-lh-caps); font-weight:var(--ds-w-semi); letter-spacing:var(--ds-track-caps); }
.jobs-redesign .list { background:var(--ds-surface); }
.jobs-redesign > .foot, .jobs-redesign .foot { background:var(--ds-canvas); }
.jobs-redesign .jrow { background:transparent; box-shadow:inset 0 -0.5px 0 var(--ds-rule); font-variant-numeric:var(--ds-nums); }
.jobs-redesign .jrow.x, .jobs-redesign .jrow.w { box-shadow:inset 0 -0.5px 0 var(--ds-rule); }
.jobs-redesign .jrow.x::before { background:var(--ds-st-late); }
.jobs-redesign .jrow.w::before { background:var(--ds-st-route); }
.jobs-redesign .jrow:hover { background:var(--ds-paper-hover); }
.jobs-redesign .jrow:focus-visible { outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:calc(-1 * var(--ds-focus-w)); }
.jobs-redesign .jrow.sel, .jobs-redesign .jrow.sel:hover { background:var(--ds-surface); box-shadow:inset 3px 0 0 var(--ds-selection), inset 0 1px 0 var(--ds-line); }
.jobs-redesign .c-num { font-size:var(--ds-text-base); font-weight:var(--ds-w-regular); color:var(--ds-ink-2); }
.jobs-redesign .c-title { font-size:var(--ds-text-md); font-weight:var(--ds-w-semi); letter-spacing:var(--ds-track-tight); color:var(--ds-ink); }
.jobs-redesign .c-title .site { font-size:var(--ds-text-base); font-weight:var(--ds-w-regular); letter-spacing:var(--ds-track-base); color:var(--ds-ink-2); }
/* D3: the open job's title is the record title */
.jobs-redesign .jrow.sel .c-title .tt2 { font-family:var(--ds-display); font-size:var(--ds-text-d2); line-height:var(--ds-lh-d2); font-weight:var(--ds-display-weight); letter-spacing:var(--ds-display-track); }
.jobs-redesign .c-tech, .jobs-redesign .c-date, .jobs-redesign .c-m { font-size:var(--ds-text-base); color:var(--ds-ink); }
.jobs-redesign .c-date i { font-size:var(--ds-text-sm); color:var(--ds-ink-3); }
.jobs-redesign .c-m.mut, .jobs-redesign .c-st.mut { color:var(--ds-ink-3); font-weight:var(--ds-w-regular); }
.jobs-redesign .c-out { font-size:var(--ds-text-base); line-height:var(--ds-lh-base); color:var(--ds-ink-2); }
.jobs-redesign .foot { font-size:var(--ds-text-sm); color:var(--ds-ink-3); border-top:0; }
.jobs-redesign .c-m .c-onsite { font-size:var(--ds-text-caps); color:var(--ds-ink-3); }
.jobs-redesign .c-m .c-onsite.flag { color:var(--ds-st-route-ink); font-weight:var(--ds-w-semi); }
/* status: 12px glyph in the state colour, word in ink-2 (D14) */
.jobs-redesign .c-st { font-size:var(--ds-text-sm); font-weight:var(--ds-w-medium); letter-spacing:var(--ds-track-sm); color:var(--ds-ink-2); padding-left:18px; }
.jobs-redesign .c-st .sub { font-size:var(--ds-text-sm); font-weight:var(--ds-w-regular); color:var(--ds-ink-3); }
.jobs-redesign .c-st.fail, .jobs-redesign .c-st.warn, .jobs-redesign .c-st.ok { color:var(--ds-ink-2); }
.jobs-redesign .c-st.fail::before, .jobs-redesign .c-st.warn::before, .jobs-redesign .c-st.ok::before { top:2px; width:12px; height:12px; border-radius:0; -webkit-mask:var(--g) center / 12px 12px no-repeat; mask:var(--g) center / 12px 12px no-repeat; }
.jobs-redesign .c-st.fail::before { --g:var(--st-g-late); background:var(--ds-st-late); }
.jobs-redesign .c-st.warn::before { --g:var(--st-g-warn); background:var(--ds-st-route); }
.jobs-redesign .c-st.ok::before { --g:var(--st-g-done); background:var(--ds-st-done); }
.jobs-redesign .dot.g { background:var(--ds-st-done); } .jobs-redesign .dot.p { background:var(--ds-st-site); } .jobs-redesign .dot.a { background:var(--ds-st-route); } .jobs-redesign .dot.r { background:var(--ds-st-late); } .jobs-redesign .dot.k { background:var(--ds-st-sched); }
/* avatars: 24px ink tints, ink-2 initials 10/600 (6.14) */
.jobs-redesign .av, .quotes-queue .av { width:24px; height:24px; color:var(--ds-ink-2); font-size:var(--ds-text-av); font-weight:var(--ds-w-semi); letter-spacing:.03em; }
.jobs-redesign .c-tech .av { width:24px; height:24px; font-size:var(--ds-text-av); } /* per-technician colours are set inline by jobs.js (shared with the Schedules board); kept */
.jobs-redesign .jobs-list-warning { margin:var(--ds-s-3) var(--ds-gutter); padding:var(--ds-s-2) var(--ds-s-3); border:0; border-radius:var(--ds-r-md); background:var(--ds-tint); color:var(--ds-ink-2); font-size:var(--ds-text-base); }
.jobs-redesign .jobs-list-saved { margin:var(--ds-s-2) var(--ds-gutter) 0; color:var(--ds-ink-3); font-size:var(--ds-text-sm); }
.jobs-redesign .st-chip { border-radius:var(--ds-r-sm); font-weight:var(--ds-w-medium); }

/* the open job: one white band on the list grid, 3px navy rail, 1px lines */
.jobs-redesign .con { background:var(--ds-surface); box-shadow:inset 3px 0 0 var(--ds-selection), inset 0 -1px 0 var(--ds-line); border-bottom:0; }
.jobs-redesign .conbar { font-size:var(--ds-text-base); }
.jobs-redesign .con-title, .jobs-redesign .con-job, .jobs-redesign .conbar a { color:var(--ds-ink); font-weight:var(--ds-w-medium); text-decoration:underline; text-decoration-color:var(--ds-field); text-underline-offset:3px; }
.jobs-redesign .con-meta, .jobs-redesign .conbar .m2, .jobs-redesign .keys { color:var(--ds-ink-3); font-size:var(--ds-text-sm); }
.jobs-redesign .conlink { color:var(--ds-ink); border-radius:var(--ds-r-md); }
.jobs-redesign .conlink:hover { background:var(--ds-paper-hover); }
/* D8: no card inside the white band: panels become sections under a 1px line */
.jobs-redesign .con .card { background:transparent; border:0; border-radius:0; box-shadow:inset 0 1px 0 var(--ds-line); }
.jobs-redesign .con .jobs-billing-slot .bill-modal { background:transparent; border:0; border-radius:0; box-shadow:none; }
.jobs-redesign .con .gstrip { border-radius:var(--ds-r-lg); }
.jobs-redesign .gt.more { background:var(--ds-thumb); color:var(--ds-ink-2); box-shadow:inset 0 0 0 1px var(--ds-line); }
/* notes stage strip */
.jobs-redesign .life { background:transparent; border-bottom:1px solid var(--ds-line); }
.jobs-redesign .life .st { color:var(--ds-ink-3); font-size:var(--ds-text-sm); font-weight:var(--ds-w-medium); }
.jobs-redesign .life .st.cur { color:var(--ds-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .life .st .d { background:var(--ds-field); box-shadow:none; }
.jobs-redesign .life .st.cur .d { background:var(--ds-ink); }
.jobs-redesign .life .sep { background:var(--ds-line); }

/* D19 action bar: paper, soft top edge; status and labels ink; the one primary */
.jobs-redesign .card.acts { background:var(--ds-canvas); border:0; border-radius:0; box-shadow:var(--ds-e-bar); min-height:var(--ds-actionbar-h); padding:var(--ds-s-3) var(--ds-gutter); gap:var(--ds-s-2); position:sticky; bottom:0; z-index:3; }
.jobs-redesign .con .card.acts { box-shadow:var(--ds-e-bar); }

/* buttons (D17): secondary = white + 1px field line; primary = navy; quiet = text */
.jobs-redesign .xbtn, .quotes-queue .xbtn { height:var(--ds-control-h); padding:0 var(--ds-s-3); border:1px solid var(--ds-field); border-radius:var(--ds-r-md); background:var(--ds-surface); color:var(--ds-ink); font-size:var(--ds-text-base); font-weight:var(--ds-w-medium); box-shadow:none; }
.jobs-redesign .xbtn:hover, .quotes-queue .xbtn:hover { background:var(--ds-paper-hover); border-color:var(--ds-ink-3); }
.jobs-redesign .xbtn.primary, .quotes-queue .xbtn.primary { width:auto; height:var(--ds-primary-h); padding:0 var(--ds-s-5); background:var(--ds-action); border-color:var(--ds-action); color:var(--ds-action-fg); font-weight:var(--ds-w-semi); box-shadow:var(--ds-e-primary); }
.jobs-redesign .xbtn.primary:hover, .quotes-queue .xbtn.primary:hover { background:var(--ds-action-hover); border-color:var(--ds-action-hover); }
.jobs-redesign .xbtn.primary:active, .quotes-queue .xbtn.primary:active { background:var(--ds-action-press); border-color:var(--ds-action-press); box-shadow:var(--ds-e-primary-press); transform:translateY(0.5px); }
.jobs-redesign .xbtn.ghost, .quotes-queue .xbtn.ghost { width:auto; border-color:transparent; background:transparent; color:var(--ds-ink-2); padding:0 var(--ds-s-2); }
.jobs-redesign .xbtn.ghost:hover, .quotes-queue .xbtn.ghost:hover { background:var(--ds-paper-hover); color:var(--ds-ink); border-color:transparent; }
.jobs-redesign .xbtn:disabled, .quotes-queue .xbtn:disabled { opacity:1; background:var(--ds-disabled-bg); border-color:var(--ds-disabled-bd); color:var(--ds-disabled-fg); box-shadow:none; transform:none; }
.jobs-redesign .xbtn.primary:disabled, .quotes-queue .xbtn.primary:disabled { background:var(--ds-disabled-primary-bg); border-color:var(--ds-disabled-primary-bg); color:var(--ds-disabled-primary-fg); }
.jobs-redesign .xbtn.ghost:disabled, .quotes-queue .xbtn.ghost:disabled { background:transparent; border-color:transparent; }
.jobs-redesign .xbtn:focus-visible, .jobs-redesign .conlink:focus-visible, .jobs-redesign .seg button:focus-visible,
.quotes-queue .xbtn:focus-visible { outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:var(--ds-focus-off); }
/* segmented yes/no: one control, the pressed segment is a quiet fill */
.jobs-redesign .seg { border:1px solid var(--ds-field); border-radius:var(--ds-r-md); }
.jobs-redesign .seg span, .jobs-redesign .seg button { color:var(--ds-ink-2); font-weight:var(--ds-w-medium); }
.jobs-redesign .seg .on { background:var(--ds-tag-bg); color:var(--ds-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .jobs-legacy-action .seg button:hover { background:var(--ds-paper-hover); color:var(--ds-ink); }
.jobs-redesign .jobs-notes-panel > .jobs-legacy-action { border-top:1px solid var(--ds-line); }
.jobs-redesign .qneed-q { font-weight:var(--ds-w-semi); color:var(--ds-ink); }
.jobs-redesign .qneed-hint { color:var(--ds-ink-3); font-size:var(--ds-text-sm); }

/* shared email editor (Jobs notes + Quote customer email): fields D22c, label above 12/500 ink-2 */
.jobs-redesign .editform label, .quotes-queue .editform label,
.jobs-redesign .recipient-field-head label, .quotes-queue .recipient-field-head label { color:var(--ds-ink-2); font-size:var(--ds-text-sm); font-weight:var(--ds-w-medium); letter-spacing:0; text-transform:none; }
.jobs-redesign .recipient-fields .recipient-site-caption, .quotes-queue .recipient-fields .recipient-site-caption { color:var(--ds-ink-2); font-size:var(--ds-text-sm); }
.jobs-redesign .recipient-fields .recipient-site-caption span, .quotes-queue .recipient-fields .recipient-site-caption span { color:var(--ds-ink-3); }
.jobs-redesign .recipient-fields .recipient-site-caption strong, .quotes-queue .recipient-fields .recipient-site-caption strong { color:var(--ds-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .recipient-fields .recipient-entry-hint, .quotes-queue .recipient-fields .recipient-entry-hint { color:var(--ds-ink-3); font-size:var(--ds-text-sm); }
.jobs-redesign .recipient-fields .recipient-error, .quotes-queue .recipient-fields .recipient-error { color:var(--ds-st-late-ink); font-weight:var(--ds-w-medium); }
.jobs-redesign .recipient-fields .site-contact-select, .quotes-queue .recipient-fields .site-contact-select, .quotes-queue .inline-editor[data-mode="email"] .site-contact-select { border:1px solid var(--ds-field); border-radius:var(--ds-r-md); background:var(--ds-surface); color:var(--ds-ink); font-size:var(--ds-text-base); }
.jobs-redesign .recipient-fields .site-contact-select:focus-visible, .quotes-queue .recipient-fields .site-contact-select:focus-visible { outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:var(--ds-focus-off); }
.jobs-redesign .rtbar, .quotes-queue .rtbar { border-color:var(--ds-field); background:var(--ds-canvas); }
.jobs-redesign .rtbar .rtsep, .quotes-queue .rtbar .rtsep { background:var(--ds-line); }
.jobs-redesign .rtedit, .quotes-queue .rtedit { border-color:var(--ds-field); color:var(--ds-ink); }
.jobs-redesign .rtedit p, .quotes-queue .rtedit p { color:var(--ds-ink); }
.jobs-redesign .linkb, .quotes-queue .linkb { color:var(--ds-ink-2); }
/* D7: the customer email preview is ONE flat framed thumbnail */
.jobs-redesign .mailcard, .quotes-queue .mailcard { background:var(--ds-surface); border:1px solid var(--ds-line); border-radius:var(--ds-r-md); box-shadow:none; }
.jobs-redesign .mailfoot, .quotes-queue .mailfoot { background:var(--ds-canvas); border-top:1px solid var(--ds-line); }
.jobs-redesign .previewnote, .quotes-queue .previewnote { background:var(--ds-tint); color:var(--ds-ink-2); border-bottom:1px solid var(--ds-line); }
.jobs-redesign .thread-alert { border-radius:var(--ds-r-md); background:var(--ds-tint); color:var(--ds-ink-2); }

/* billing section (Send to billing) inside the open job */
.jobs-redesign .bill-head { border-bottom:1px solid var(--ds-line); }
.jobs-redesign .bill-head h2, .jobs-redesign .bill-prepared-review-modal .bill-head h2 { font-size:var(--ds-text-md); line-height:var(--ds-lh-md); font-weight:var(--ds-w-semi); letter-spacing:var(--ds-track-tight); color:var(--ds-ink); }
.jobs-redesign .bill-site { font-size:var(--ds-text-base); font-weight:var(--ds-w-semi); color:var(--ds-ink); }
.jobs-redesign .bill-address, .jobs-redesign .bill-class, .jobs-redesign .bill-contact span { font-size:var(--ds-text-sm); color:var(--ds-ink-2); }
.jobs-redesign .bill-contact strong { color:var(--ds-ink); font-weight:var(--ds-w-semi); }
.jobs-redesign .bill-cap, .jobs-redesign .bill-title, .jobs-redesign .bill-prepared-review-modal .bill-title { font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); letter-spacing:0; text-transform:none; color:var(--ds-ink-3); }
.jobs-redesign .bill-edit-guidance, .jobs-redesign .bill-prepared-review-modal .bill-edit-guidance, .jobs-redesign .bill-taxwhy { font-size:var(--ds-text-sm); font-weight:var(--ds-w-regular); color:var(--ds-ink-3); }
.jobs-redesign .bill-edit-badge, .jobs-redesign .bill-prepared-review-modal .bill-edit-badge { min-height:0; height:18px; padding:0 6px; border:0; border-radius:var(--ds-r-sm); background:var(--ds-tint); color:var(--ds-ink-2); font-size:var(--ds-text-caps); font-weight:var(--ds-w-medium); letter-spacing:0; text-transform:none; }
.jobs-redesign .bill-edit-badge.editable { background:var(--ds-st-site-bg); color:var(--ds-ink-2); }
.jobs-redesign .bill-labor th, .jobs-redesign .bill-table th, .jobs-redesign .bill-prepared-review-modal .bill-labor th, .jobs-redesign .bill-prepared-review-modal .bill-table th { background:transparent; color:var(--ds-ink-3); font-size:var(--ds-text-caps); font-weight:var(--ds-w-semi); letter-spacing:var(--ds-track-caps); border-bottom:1px solid var(--ds-line); }
.jobs-redesign .bill-labor td, .jobs-redesign .bill-table td { background:transparent; color:var(--ds-ink); border-bottom:0.5px solid var(--ds-rule); font-variant-numeric:var(--ds-nums); }
.jobs-redesign .bill-table tfoot td, .jobs-redesign .bill-labor tfoot td { background:transparent; font-weight:var(--ds-w-semi); border-top:1px solid var(--ds-line); }
.jobs-redesign .bill-labor td strong, .jobs-redesign .bill-table td strong, .jobs-redesign .bill-labor td b, .jobs-redesign .bill-table td b { font-weight:var(--ds-w-semi); }
/* Labor period select sits under the technician name (the 5px top margin assumes it); inline it ran into long names */
.jobs-redesign .bill-labor .bill-period { display:block; }
.jobs-redesign .bill-totals td { color:var(--ds-ink-2); font-variant-numeric:var(--ds-nums); }
.jobs-redesign .bill-totals tr:last-child td { color:var(--ds-ink); font-weight:var(--ds-w-semi); border-top:1px solid var(--ds-field); }
.jobs-redesign .bill-evidence { background:var(--ds-canvas); color:var(--ds-ink-3); font-size:var(--ds-text-sm); border-radius:var(--ds-r-md); }
.jobs-redesign .bill-input, .jobs-redesign .bill-select, .jobs-redesign .bill-note, .jobs-redesign .bill-editor { background:var(--ds-surface); border:1px solid var(--ds-field); border-radius:var(--ds-r-md); color:var(--ds-ink); box-shadow:none; }
.jobs-redesign .bill-input:focus, .jobs-redesign .bill-select:focus, .jobs-redesign .bill-note:focus { border-color:var(--ds-line); box-shadow:none; outline:var(--ds-focus-w) solid var(--ds-focus); outline-offset:var(--ds-focus-off); }
.jobs-redesign .bill-add, .jobs-redesign .bill-add.bill-add-primary { height:var(--ds-control-h); padding:0 var(--ds-s-3); background:var(--ds-surface); border:1px solid var(--ds-field); border-radius:var(--ds-r-md); color:var(--ds-ink); font-size:var(--ds-text-base); font-weight:var(--ds-w-medium); box-shadow:none; }
.jobs-redesign .bill-add:hover { background:var(--ds-paper-hover); border-color:var(--ds-ink-3); }
/* Inter's tabular hyphen widens names ("no-hot-water"): titles and prose use proportional figures */
.jobs-redesign .c-title, .jobs-redesign .c-out, .jobs-redesign .con-meta { font-variant-numeric:normal; }
/* Pending/Progress: the scope snippet under the title is body text, not a second title */
.jobs-redesign .planning-snippet { font-weight:var(--ds-w-regular); letter-spacing:var(--ds-track-base); color:var(--ds-ink-2); }
.jobs-redesign .planning-grid h3 { font-weight:var(--ds-w-semi); letter-spacing:var(--ds-track-tight); color:var(--ds-ink); }
.jobs-redesign .planning-facts dt, .jobs-redesign .planning-freshness { color:var(--ds-ink-3); }
.jobs-redesign .planning-facts dl > div, .jobs-redesign .planning-material-table th, .jobs-redesign .planning-material-table td { border-bottom-color:var(--ds-line); }

/* Owner 2026-09-25 (V1 white workspace): the open job is a tray in the page tone holding white cards. */
.jobs-redesign .jrow.sel,.jobs-redesign .jrow.sel:hover,.jobs-redesign .con{background:var(--ds-canvas)}
.jobs-redesign .con .card:not(.acts){background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-float)}
.jobs-redesign .card.acts{background:var(--ds-surface)}

/* Audit jobs-tab-billing-sent: the photo strip is a fixed eight-track grid of 4:3
   thumbnails (two tracks on phones), so a job with one or two photos no longer
   stretches each tile across half the console. Photos are shown whole inside the
   tile (portrait shots letterbox on the placeholder tone instead of being cropped
   to a thin slice); the lightbox still opens the full image. */
.jobs-redesign .gstrip { grid-template-columns:repeat(8,minmax(0,1fr)); border-radius:0; overflow:visible; }
.jobs-redesign .gstrip .gt { aspect-ratio:4/3; height:auto; max-height:none; overflow:hidden; background:var(--ds-thumb); }
.jobs-redesign .gstrip .gt:first-child { border-top-left-radius:var(--ds-r-lg); border-bottom-left-radius:var(--ds-r-lg); }
.jobs-redesign .gstrip .gt:last-child { border-top-right-radius:var(--ds-r-lg); border-bottom-right-radius:var(--ds-r-lg); }
.jobs-redesign .gstrip .gt img { object-fit:contain; }
@media (max-width:899px) {
  .jobs-redesign .gstrip { border-radius:var(--ds-r-lg); overflow:hidden; }
  .jobs-redesign .gstrip .gt:first-child, .jobs-redesign .gstrip .gt:last-child { border-radius:0; }
}
