*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:#0b0b0f;color:#eee}a{color:#d4af37}
header{background:#2a0a4a;border-bottom:3px solid #d4af37;padding:10px 14px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
header b{color:#d4af37;font-size:1.1em}header nav a{margin-right:12px;text-decoration:none}main{padding:12px;max-width:1000px;margin:auto}
.card{background:#1a1424;border:1px solid #3d2a5c;border-radius:10px;padding:12px;margin:10px 0}
input,select,textarea,button{width:100%;padding:11px;margin:5px 0;font-size:16px;border-radius:8px;border:1px solid #5b3d8a;background:#120d1a;color:#eee}
input[type=checkbox]{width:auto}
button,.btn{background:#6a2bb3;border:1px solid #d4af37;color:#fff;font-weight:600;cursor:pointer}
button.small,.btn{width:auto;padding:6px 10px;font-size:14px;border-radius:8px;text-decoration:none;display:inline-block;margin:3px 2px}
button.danger{background:#5a1a24;border-color:#e5484d}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row>*{flex:1;min-width:140px}.row>.btn,.row>button.small{flex:0}
.actions{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.actions form{margin:0}
.overdue{border-left:6px solid #e5484d;background:#2a1018}.soon{border-left:6px solid #d4af37}.done{opacity:.6;border-left:6px solid #3a9}.archived{opacity:.45;border-style:dashed}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#3d2a5c;margin-right:4px}.pri{background:#d4af37;color:#000}
.red{color:#ff6b6b;font-weight:700}img.ph{max-width:100%;max-height:260px;border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:6px;border-bottom:1px solid #3d2a5c;text-align:left;vertical-align:top}
.scroll{overflow-x:auto}h1,h2{color:#d4af37}.err{color:#ff6b6b}.ok{color:#3c9}.muted{color:#999;font-size:13px}
button:disabled{opacity:.5;cursor:not-allowed}
.docs .doc{padding:8px 0;border-bottom:1px solid #3d2a5c}.docs .doc:last-of-type{border-bottom:0}.docname{font-weight:600;word-break:break-word}
.docform{margin-top:8px;padding-top:8px;border-top:1px dashed #5b3d8a}.docform small{display:block}
/* vendor-link / approval flow */
.card.await{border:1px solid #d4af37;border-left:6px solid #d4af37;background:#1a1424;color:#f3f0f7}
.tag.st-vendor_completed{background:#d4af37;color:#000;font-weight:bold}
.tag.st-scheduled{background:#1d2c55;color:#cfe0ff;border:1px solid #5b7bd0}
.tag.st-complete{background:#123a22;color:#bdf0cb;border:1px solid #3a9}
.awaitc{color:#f0c94a;font-weight:bold}
.vdone{background:#120d1a;border:1px solid #d4af37;border-left:4px solid #d4af37;border-radius:6px;padding:6px 8px;margin:6px 0;color:#f3f0f7}
.card.await .muted,.vdone .muted{color:#c9c2d4}
.actions.approve form.row{display:flex;gap:6px;flex-wrap:wrap}
.actions.approve input{flex:1;min-width:180px}
.vlink{width:100%;font-family:monospace;font-size:13px}
.vend .desc{white-space:pre-wrap;font-size:1.05em}
.tag.bc{background:#5c0f14;color:#ffd7d9;border:1px solid #e5484d;font-weight:bold}.tag.bc-settled{background:#123a22;color:#bdf0cb;border-color:#3a9}.tag.bc-waived{background:#333;color:#ddd;border-color:#777}
.bcform{margin:6px 0}.bcform summary{cursor:pointer;color:#ff9aa0;font-weight:600}
.resend{gap:4px}.resend input{flex:2;min-width:160px;margin:3px 0}.resend button{flex:0}
.completed>summary{cursor:pointer;list-style:none}.completed>summary h2{display:inline}.completed>summary::before{content:'▸ ';color:#d4af37}.completed[open]>summary::before{content:'▾ '}
.doneitem{border-left:6px solid #3a9}.facts{display:grid;grid-template-columns:max-content 1fr;gap:3px 10px;margin:6px 0;font-size:14px}.facts dt{color:#c9c2d4;font-weight:600}.facts dd{margin:0;color:#f3f0f7;word-break:break-word}
img.thumb{max-width:160px;max-height:120px;border-radius:6px;border:1px solid #3d2a5c}.timeline summary{cursor:pointer;color:#d4af37}.timeline ol{margin:6px 0;padding-left:20px;font-size:13px;color:#e6e1ee}
.phase{color:#d4af37;font-size:1em;margin:14px 0 4px;border-bottom:1px solid #3d2a5c;padding-bottom:3px}
.trade{padding:8px 0;border-bottom:1px solid #2a1f38}.trade .tname{color:#f3f0f7}.trade .tvendor{margin:3px 0;font-size:14px;color:#e6e1ee}.hiddentrade{opacity:.55}
.tedit summary{cursor:pointer;color:#d4af37;font-size:14px}.tedit form{margin:4px 0}.newv{display:flex;flex-wrap:wrap;gap:4px}.newv input{flex:1;min-width:130px;margin:2px 0}
/* house plans & selections */
.plans .pdoc{padding:8px 0;border-bottom:1px solid #2a1f38}.plans .pdoc.inh{border-left:3px solid #5b7bd0;padding-left:8px}.tag.inhtag{background:#1d2c55;color:#cfe0ff}
.plans details summary{cursor:pointer;color:#d4af37;font-size:14px}.pupload form{margin-top:6px}.pupload>summary{font-size:16px;font-weight:600}
fieldset.vis{border:1px solid #3d2a5c;border-radius:8px;margin:6px 0}fieldset.vis label{display:block;margin:3px 0}.tradechecks{display:flex;flex-wrap:wrap;gap:2px 14px;padding-left:20px}.tradechecks label{display:inline-block;font-size:14px}
.btn.big{font-size:16px;padding:10px 14px}.pview h2{margin:4px 0 8px}
iframe.pdfv{width:100%;height:80vh;border:1px solid #3d2a5c;border-radius:8px;background:#fff;margin-top:8px}img.pimg{max-width:100%;height:auto;border-radius:8px;margin-top:8px}
@media (max-width:700px){iframe.pdfv{height:65vh}.plans .pdoc .btn.big{display:block;width:100%;text-align:left}}
.vtrades .tag{margin:2px 3px 2px 0}
fieldset.vis:not(:has(input[value=trades]:checked)) .tradechecks{display:none}

.tag.st-behind{background:#5a1010;color:#ffd6d6;border:1px solid #e5484d;font-weight:bold}.ultbox{display:inline-block;margin:4px 0}.ultbox summary{cursor:pointer;list-style:none}.ultbox[open]{display:block;border:1px solid #e5484d;border-radius:8px;padding:8px;margin:6px 0}

/* ---------- ProjectTrack 2.0 ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}
.tile{border-radius:8px;padding:8px;border:1px solid #444;background:#1e1b24;font-size:.9em}
.tile b{display:block}
.s-red{background:#4a1414;border-color:#e5484d;color:#ffd6d6}
.s-yellow{background:#4a3d0f;border-color:#e2b93b;color:#fff3c4}
.s-green{background:#123d22;border-color:#30a46c;color:#d3f9e0}
.s-grey{background:#2a2830;border-color:#555;color:#bbb}
.s-blocked{background:#2a2830;border:1px dashed #e5484d;color:#bbb}
.pbar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:#2a2830;margin:4px 0;min-width:120px}
.pbar .pg{background:#30a46c}.pbar .py{background:#e2b93b}.pbar .pr{background:#e5484d}
.w0{width:0%}.w5{width:5%}.w10{width:10%}.w15{width:15%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w35{width:35%}.w40{width:40%}.w45{width:45%}.w50{width:50%}.w55{width:55%}.w60{width:60%}.w65{width:65%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w85{width:85%}.w90{width:90%}.w95{width:95%}.w100{width:100%}
.rad{display:block;margin:3px 0}.rad input{width:auto;margin-right:6px}
.tform{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tform select,.tform input{width:auto}
.prev{border:1px solid #555;border-radius:8px;padding:8px;margin:6px 0;background:#15131a;white-space:pre-wrap;font-size:.9em}
.copy{width:100%;font-family:monospace}
.inl{display:inline-block;margin:0 4px}
.num{text-align:right;white-space:nowrap}
.tag.lct-active{background:#123d22;color:#d3f9e0}.tag.lct-closed{background:#4a3d0f;color:#fff3c4}.tag.lct-archived{background:#2a2830;color:#bbb}
.tag.rq-pending{background:#4a3d0f;color:#fff3c4}.tag.rq-approved{background:#123d22;color:#d3f9e0}.tag.rq-declined{background:#4a1414;color:#ffd6d6}
.tag.ch-recorded{background:#2a2830;color:#ddd}.tag.ch-entered{background:#123d22;color:#d3f9e0}
/* CC upper management + approver picker: one tappable row per contact, box left of the name */
.ccup{flex:1 1 100%;min-width:0;width:100%;margin:6px 0}.ccup summary{cursor:pointer;padding:8px 0}
fieldset.ccup{border:0;padding:0}fieldset.ccup legend{padding:0 0 4px}
.ccrow{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:48px;padding:10px 12px;margin:6px 0;border:1px solid #3d2a5c;border-radius:8px;background:#120d1a;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ccrow input[type=checkbox],.ccrow input[type=radio]{flex:0 0 auto;width:24px;height:24px;min-width:0;margin:1px 0 0;padding:0;accent-color:#d4af37}
.ccrow .cct{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;line-height:1.3}
.ccrow .ccmeta,.ccrow .ccmail{display:block;font-size:13px;color:#c9c2d4}
.ccrow:has(input:checked){border-color:#d4af37;background:#21182e}
.row>form.resend:has(.ccup),.row>.ultbox:has(.ccup),.actions>form.resend:has(.ccup),.actions>.ultbox:has(.ccup){flex:1 1 100%;min-width:0;width:100%}
.resend>.ultbox{flex:1 1 100%}.ultbox label:has(>input[type=checkbox]){display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:6px 0;cursor:pointer}.ultbox label>input[type=checkbox]{flex:0 0 auto;width:24px;height:24px;margin:1px 0 0;padding:0;min-width:0}
@media (max-width:600px){.resend>button,.resend>button.small{flex:1 1 100%;width:100%;padding:12px;font-size:16px;margin:6px 0}}
.req{border-left:3px solid #e2b93b;padding-left:8px;margin:6px 0}
.thumbs{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.thumb{width:72px;height:72px;object-fit:cover;border-radius:6px}
/* billing / sign-up */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.billnote{margin:6px 0 10px}
.tag.bl-active{background:#123d22;color:#d3f9e0}.tag.bl-trial{background:#1d2c55;color:#cfe0ff}.tag.bl-past_due{background:#4a3d0f;color:#fff3c4}
.tag.bl-canceled,.tag.bl-unpaid,.tag.bl-paused,.tag.bl-incomplete{background:#4a1414;color:#ffd6d6}
.offscreen{position:fixed;left:-9999px;top:0;opacity:0}
.share div{margin:.15rem 0}.share code{word-break:break-all}
input.locked{background:#eef6ee;font-weight:bold;letter-spacing:.05em}
.trialbox{border-left:4px solid #2a7}
/* t238: sale stages, closings, vendor board, weekly update */
.stg{display:inline-block;padding:2px 9px;border-radius:10px;font-size:12px;font-weight:bold;text-decoration:none;white-space:nowrap}
.stg.st1{background:#2b3342;color:#d6deea;border:1px solid #66748c}.stg.st2{background:#123a22;color:#bdf0cb;border:1px solid #3a9}
.stg.st3{background:#1d2c55;color:#cfe0ff;border:1px solid #5b7bd0}.stg.st4{background:#4a3a10;color:#ffe9a8;border:1px solid #d4af37}
.stagecounts{display:flex;flex-wrap:wrap;gap:6px}
.stagefilter{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-block;padding:6px 10px;border-radius:14px;border:1px solid #555;font-size:13px;text-decoration:none}.chip.on{outline:2px solid #d4af37}
.stagecard h2{margin:6px 0}.stagecard .steps{display:flex;gap:4px;list-style:none;padding:0;margin:0 0 6px;font-size:12px}
.stagecard .steps li{flex:1;text-align:center;padding:4px 2px;border-radius:6px;background:#2a2a2a;color:#999}.stagecard .steps li.done{background:#123a22;color:#bdf0cb}.stagecard .steps li.cur{background:#d4af37;color:#000;font-weight:bold}
.stagecard .prompt{border:2px solid #d4af37;border-radius:8px;padding:10px;margin:6px 0}.stagecard .prompt form{margin-top:8px}
button.go{background:#1f7a3a;color:#fff;font-weight:bold}
.jobhead .jobcounts{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}
.cnt{display:inline-block;padding:5px 10px;border-radius:14px;background:#2a2a2a;font-size:13px;text-decoration:none;white-space:nowrap}.cnt.red{background:#5a1717;color:#ffd4d4}.cnt.add{background:#1f7a3a;color:#fff}
h3.grp{border-bottom:2px solid #444;padding-bottom:4px;margin:14px 0 6px}h3.grp.red{border-color:#c33;color:#ff8a8a}
.warnbox{border:2px solid #c33}.warnbox ul{margin:0;padding-left:18px}.warnrow td{background:#3a1414}
table.closings{width:100%}table.closings td,table.closings th{padding:6px 4px;vertical-align:top}
.vboard summary{cursor:pointer;line-height:1.8}.vcounts{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.vitems{list-style:none;padding:0;margin:0 0 8px}.vitems li{padding:6px 0;border-bottom:1px solid #333}.vitems li.b-behind{border-left:4px solid #c33;padding-left:8px}.vitems li.b-scheduled{border-left:4px solid #5b7bd0;padding-left:8px}
pre.weekly{white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.45}
@media (max-width:600px){.stagecard .steps{font-size:11px}.jobhead{font-size:14px}table.closings{font-size:14px}}
@media print{header,nav,.noprint,.flash{display:none!important}body{background:#fff;color:#000}pre.weekly{border:0;color:#000;background:#fff}}
header nav{flex:1 1 100%;min-width:0;max-width:100%;line-height:1.9}header nav a{display:inline-block;white-space:nowrap}
/* t242: items handled by the PM / ACM */
.asg{font-weight:700;letter-spacing:.03em}.asg-pm{background:#1f5fbf;color:#fff}.asg-acm{background:#0f7b6c;color:#fff}.asgboard{border-left:4px solid #1f5fbf}
/* t243: closing prioritization – job header facts, BFR / Walked badges, Closings table (cards at phone width) */
.tag.bfr{background:#3b2a00;color:#ffd98a;border:1px solid #d4af37;font-weight:bold}.tag.walked{background:#123a22;color:#bdf0cb;border:1px solid #3a9;font-weight:bold}
.jobfacts{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;align-items:center}.jobfacts .tag{margin:0}
.jobfacts .fact{display:inline-block;padding:4px 9px;border-radius:12px;background:#24202c;border:1px solid #3d3450;font-size:13px;white-space:nowrap}.jobfacts .fact small{color:#aaa}
fieldset.closingfields{border:1px solid #3d3450;border-radius:8px;padding:8px 10px;margin:10px 0}fieldset.closingfields legend{font-weight:bold;padding:0 6px}
fieldset.closingfields label{display:block;flex:1 1 180px}fieldset.closingfields label.check{display:flex;align-items:center;gap:6px;padding-top:18px}
table.cl2 tr.soonrow td{background:#3a1414}table.cl2 tr.soonrow td.h{box-shadow:inset 4px 0 0 #e5484d}
table.cl2 tr.behindrow td.h{box-shadow:inset 4px 0 0 #ff8a00}table.cl2 tr.behindrow:not(.soonrow) td{background:#33230d}
table.cl2 tr.tbdrow td{font-style:italic}table.cl2 tr.tbdrow td.h{font-style:normal}
.legend .lg{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:middle}.legend .lg.soon{background:#e5484d}.legend .lg.behind{background:#ff8a00}
@media (max-width:600px){
 table.cl2,table.cl2 tbody,table.cl2 tr,table.cl2 td{display:block;width:auto}table.cl2 thead{display:none}
 table.cl2 tr{border:1px solid #3d3450;border-radius:8px;margin:0 0 8px;padding:6px 8px;display:flex;flex-wrap:wrap;gap:2px 12px}
 table.cl2 tr.soonrow{border:2px solid #e5484d;background:#3a1414}table.cl2 tr.behindrow{border-left:5px solid #ff8a00}table.cl2 tr.behindrow:not(.soonrow){background:#33230d}
 table.cl2 td{padding:2px 0;background:none!important;box-shadow:none!important;font-size:14px}table.cl2 td.h{flex:1 1 100%;font-size:15px}
 table.cl2 td[data-l]::before{content:attr(data-l) " ";color:#aaa;font-size:12px}
 .jobfacts .fact{font-size:12px;padding:3px 8px}
}
.tag.orient{background:#4a2a0a;color:#ffd2a1;border:1px solid #ff8a00;font-weight:bold}.tag.orient-ok{background:#123a22;color:#bdf0cb;border:1px solid #3a9}
/* t244 Welcome Home */
.tag.wh{background:#10324a;color:#bfe3ff;border:1px solid #3b8fd0}.tag.wty{background:#2c2346;color:#dacdff;border:1px solid #7d68c9}
.tag.whsoon{background:#4a2a0a;color:#ffd2a1;border:1px solid #ff8a00;font-weight:bold}.tag.whover{background:#3a1414;color:#ffc9c9;border:1px solid #e5484d;font-weight:bold}
.whcard{border-left:4px solid #3b8fd0}.whcard h3{margin:.8em 0 .3em}.whform .row label{flex:1 1 150px}.whform textarea{width:100%;box-sizing:border-box}
.whst{display:inline-block;padding:1px 7px;border-radius:9px;font-size:.88em;background:#26303a}.whst-closed{background:#123a22;color:#bdf0cb}.whst-held{background:#173a2a;color:#bdf0cb}.whst-sched{background:#10324a;color:#bfe3ff}.whst-over{background:#3a1414;color:#ffc9c9}.whst-todo{background:#3a3014;color:#ffe9a8}
.whlist{margin:.3em 0;padding-left:1.2em}.whlist li{margin:.2em 0;overflow-wrap:anywhere}.whadd summary{display:inline-block;margin:.4em 0}.whadd form{margin-top:.5em}.whadd textarea,.whadd select{width:100%;box-sizing:border-box}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:.2em 0 .6em}.tabs .btn.cur{outline:2px solid #3b8fd0;font-weight:bold}
.whform .chk+small,.whform small.muted{display:block;margin:.2em 0 .5em}
/* Oct 26 PM: newest-first items, Behind summary, sort toggle, Scheduled-for date, CO / on hold badges, legacy inspections */
.behindsum{margin:.4em 0;padding:8px 10px;border-radius:8px;background:#1f2a22;font-size:14px;overflow-wrap:anywhere}.behindsum.red{background:#3a1515;color:#ffd4d4}.behindsum a{white-space:nowrap}
.sorttoggle{display:flex;gap:6px;align-items:center;margin:.4em 0;font-size:14px}.sorttoggle a{padding:4px 12px;border-radius:14px;background:#2a2a2a;text-decoration:none}.sorttoggle a.on{background:#3b8fd0;color:#fff;font-weight:bold}
.tag.sched{background:#16324a;color:#cfe6ff}.tag.sched.passed{background:#5a1717;color:#ffd4d4}
.stform{flex-wrap:wrap;align-items:center;gap:6px}.stform .schedfor{flex:1 1 100%;max-width:100%;box-sizing:border-box;display:flex;align-items:center;gap:4px;font-size:13px;margin:0}.stform .schedfor input{flex:1 1 auto;width:auto;min-width:0;max-width:100%;margin:0}.stform.needdate .schedfor{outline:2px solid #3b8fd0;border-radius:6px;padding:2px 4px}
.tag.co-pend{background:#4a2a0a;color:#ffd2a1;border:1px solid #ff8a00}.tag.co-ok{background:#123a22;color:#bdf0cb;border:1px solid #3a9}.tag.cc-ok{background:#123a22;color:#bdf0cb}
.tag.onhold{background:#4a1d4a;color:#f5c9f5;border:1px solid #c060c0;font-weight:bold}.holdgrp{border-left:4px solid #c060c0}
.coflags summary h2.inl{display:inline;font-size:1.05em}.coflags form label{display:block;margin:.4em 0}
.tag.legacy{background:#333;color:#bbb;border:1px dashed #777}.legacy{opacity:.8}
/* underground utilities block (4 services × 2 steps) */
.ugrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;border-top:1px solid #333}
.ugrow.done .ugname b::after{content:' ✓';color:#4caf50}
.ugname{flex:1 1 150px;min-width:0;overflow-wrap:anywhere}
.ugsteps{display:flex;gap:6px;flex:0 1 auto;flex-wrap:wrap}
.ugstep{display:inline-flex;align-items:center;gap:4px;margin:0;padding:6px 8px;border:1px solid #555;border-radius:8px;background:#222;white-space:nowrap}
.ugstep label{display:inline-flex;align-items:center;gap:6px;margin:0;cursor:pointer}
.ugstep input[type=checkbox]{width:20px;height:20px;margin:0}
.ugstep.on{border-color:#4caf50;background:#1d3320}
.ugstep.lock{opacity:.55}.ugstep.lock label{cursor:not-allowed}
.ugstep.saving{opacity:.6}
.ughint{flex-basis:100%}
.uglegacy{margin-top:8px}
/* meter requests on the meter board */
.mreqs{display:grid;gap:6px;margin:0 0 10px}
.mreq{padding:6px 8px;border:1px solid #444;border-radius:8px;overflow-wrap:anywhere}
.mreq.prompt{border-color:#e0a800;background:#2d2610}
.mreq form.inline{display:inline;margin:0}
select.meterpick[hidden]{display:none}
/* underground: 3rd step Passed */
.ugarr{align-self:center;color:#888}
.ugstep.pass{flex-wrap:wrap;white-space:normal}
.ugstep.pass .ugextra{flex-basis:100%;font-size:.85em}
.ugstep.pass .ugextra input{display:block;width:100%;max-width:100%;margin:4px 0}
.ugconfirm{font-size:.85em}
.ugwho{display:block;color:#8fd19e;overflow-wrap:anywhere;margin-top:4px}
[hidden]{display:none!important}
.ugrow.done{background:#1d3320;border-radius:8px;padding-left:6px;padding-right:6px}
/* Oct 26 PM: several vendors per trade – Primary / alt / inactive tags, add-vendor form, per-job vendors */
.tag.primary{background:#d4af37;color:#000}.tag.alt{background:#444}.tag.inactive{background:#5a2a2a}
tr.inactivev td{opacity:.6}
h2 .addv{margin-left:8px;vertical-align:middle}
.addvendor label{display:block;margin:6px 0}.addvendor input:not([type=checkbox]),.addvendor textarea,.addvendor select{width:100%;box-sizing:border-box}.addvendor .row label{flex:1 1 160px}.addvendor label.chk{display:flex;gap:8px;align-items:center}
.jobvendor{align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid #333;padding:6px 0}.jobvendor .jvtrade{flex:1 1 140px}.jobvendor select{flex:2 1 180px;max-width:100%}
/* Oct 26 5 PM: 52-step trade checklist – collapsible phases, numbered steps, trade → vendor, linked steps */
details.phase{border:1px solid #3a3742;border-radius:8px;margin:8px 0;background:#18161d}
details.phase>summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px;cursor:pointer;list-style:none;min-height:44px}
details.phase>summary::-webkit-details-marker{display:none}
details.phase>summary::before{content:'▸';color:#aaa}details.phase[open]>summary::before{content:'▾'}
details.phase>summary .phcount{color:#bbb;font-size:.85em}
details.phase>summary .pbar{flex:1 1 100%;min-width:0;height:8px;margin:2px 0 0}
details.phase.done>summary b::after{content:' ✓';color:#30a46c}
details.phase>.tiles{padding:0 8px 8px;margin:0}
details.phase.legacy{border-style:dashed}
.tile.step summary{cursor:pointer}
.tile.step .stepno{display:inline-block;min-width:1.6em;padding:0 4px;margin-right:4px;border-radius:4px;background:#2c2934;color:#ddd;font-size:.8em;text-align:center;float:left}
.tile.step b{display:inline}
.tile.step .ttrade{color:#a9a3b8}
.tile.linked{border-style:dashed}
.tag.link{background:#23304a;color:#9ec1ff;border:1px solid #3d5687}
.tag.confirm{background:#4a3b12;color:#f3d27a;border:1px solid #806420}
.tbody{margin-top:6px}.tbody p{margin:4px 0}.tlink{font-size:.85em;color:#ccc}
.tadd{display:inline-block;margin:4px 0}
.stagehint{margin:4px 0;color:#ccc}
@media (max-width:480px){details.phase>.tiles{grid-template-columns:1fr}}
/* Oct 26 6 PM: house specs + planned start */
.jobspecs{margin:6px 0}.jobspecs small{opacity:.8;overflow-wrap:anywhere}
.startchip{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:10px;background:#e0ecff;color:#1d4ed8;font-size:13px;font-weight:600;white-space:nowrap}
.startchip.past{background:#eee;color:#666}.startsm{color:#1d4ed8;font-weight:600}
fieldset.specs{border:1px solid rgba(128,128,128,.4);border-radius:8px;padding:8px;margin:8px 0;min-width:0}fieldset.specs legend{font-weight:600;padding:0 4px}
.specgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 10px}.specgrid label{min-width:0}.specgrid input{width:100%;box-sizing:border-box}
.upstarts .uplist{list-style:none;margin:0;padding:0}.upstarts .uplist li{padding:6px 0;border-top:1px solid rgba(128,128,128,.3)}.upstarts .uplist li:first-child{border-top:0}
@media (max-width:420px){.specgrid{grid-template-columns:1fr 1fr}}
/* Oct 27: several vendor emails – pick who gets each send (nothing pre-selected) + take photo / upload */
fieldset.pickto,fieldset.contacts,fieldset.photopick{border:1px solid rgba(128,128,128,.4);border-radius:8px;padding:8px;margin:8px 0;min-width:0}
fieldset.pickto legend,fieldset.contacts legend,fieldset.photopick legend{font-weight:600;padding:0 4px}
fieldset.pickto label.chk{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:10px 4px;min-height:44px;border-top:1px solid rgba(128,128,128,.25);overflow-wrap:anywhere}
fieldset.pickto label.chk:first-of-type{border-top:0}fieldset.pickto label.chk input{width:22px;height:22px;margin:0}
fieldset.pickto .muted{opacity:.8}.tag.sentb{background:#23304a;color:#9ec1ff;border:1px solid #3d5687}
.crow{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin:6px 0;padding-top:6px;border-top:1px solid rgba(128,128,128,.25)}
.crow select,.crow input{width:100%;box-sizing:border-box;min-width:0}
.ccard{border-top:1px solid rgba(128,128,128,.3);padding:8px 0}.ccard .row{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}.ccard .row>*{width:100%;box-sizing:border-box;min-width:0}
.ccard.inactivev{opacity:.55}.addcontact h3{margin:0 0 4px}
ul.prevsends,ul.sendlist{margin:4px 0;padding-left:18px;overflow-wrap:anywhere}.needto:disabled{opacity:.45;cursor:not-allowed}
.pprow{display:flex;flex-wrap:wrap;gap:8px}.ppbtn{position:relative;flex:1 1 140px;min-height:44px;display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;overflow:hidden}
.ppbtn input.ppin{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.ppbtn:focus-within{outline:2px solid #9ec1ff;outline-offset:2px}
.ppcount{display:block;margin-top:6px;overflow-wrap:anywhere}.ppthumb{width:44px;height:44px;object-fit:cover;border-radius:4px;margin:2px 4px 0 0;vertical-align:middle}
.ppclear{margin-left:6px}
/* Oct 27: vendor "Can't complete yet – blocked" */
.tag.st-blocked{background:#4a1d00;color:#ffe0c2;border:1px solid #ff8a3d;font-weight:bold}.tag.bytag{font-weight:normal;max-width:100%;white-space:normal}
.tag.fixfor{background:#2a2350;color:#e3dcff;border:1px solid #8b7cf6}
.item.blocked,.blocked.card{border-left:6px solid #ff8a3d;background:rgba(255,138,61,.06)}
.blockban{border:2px solid #ff8a3d;background:rgba(255,138,61,.10);border-radius:8px;padding:10px;margin:8px 0}.blockban .bbhead{font-weight:bold;color:#ffb27a;margin-bottom:4px}
.blockban .bbmeta{opacity:.85;margin:4px 0}.blockban .bbfail{margin:6px 0 6px 18px;padding:0}.blockban .bbfail li{margin:4px 0}.blockban .bbact{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:flex-start}
.blockban .bbact form{margin:0}.blockban .bbprompt{margin:8px 0;padding:8px;border-radius:6px}.blockban details textarea{width:100%}
.blocksum{border:2px solid #ff8a3d;background:rgba(255,138,61,.10);border-radius:8px;padding:8px 10px;margin:8px 0}.blocksum a{color:#ffb27a}
.jobcounts .cnt.blk{color:#ffb27a;border-color:#ff8a3d}
.blockform{border:2px solid #ff8a3d}.blockform textarea,.blockform input[type=text],.blockform select{width:100%;box-sizing:border-box}.blockform .bbfailin summary{cursor:pointer}
.fixform{border:2px solid #8b7cf6}
/* CC-optional: per-send "CC me" box and daily email usage line */
.ccme{display:block;margin:.6em 0;line-height:1.4}
.ccme input{margin-right:.4em}
.ccme.small{display:inline-block;margin:0 .5em;font-size:.9em}
.mailused{margin:.4em 0 .8em;font-size:.95em}
.mailused.red{color:#b00020}
/* Oct 28 batch: start reminders, calendar invite, Welcome Home page, Start-up step */
.upstarts .uplist li.soon{background:rgba(255,180,0,.12);border-left:3px solid #f0b400;padding-left:8px}.tag.startsoon{background:#4a3a08;color:#ffe08a}.startsoonline{margin:.2em 0 .5em;color:#ffe08a}
.invfs{border:1px solid rgba(128,128,128,.4);border-radius:8px;padding:6px 10px;margin:8px 0}.invfs legend{font-size:.95em}.invfs .row label{flex:1 1 120px}.invline{color:#bfe3ff}details.invsend{margin:4px 0}
.whsteps{list-style:none;padding:0;margin:.5em 0}.whsteps li{padding:6px 0;border-top:1px solid rgba(128,128,128,.3)}.whsteps li.ok{color:#bdf0cb}.whdates{margin:.3em 0}
.suform .sudate{display:block;margin:2px 0 6px 26px;font-size:.92em}.suform .sudate input{max-width:180px}
/* Oct 29: closing process */
.cflow .cfclose{font-size:1.15em}.cflow .cfstep{border-top:1px solid #3d2a5c;padding:8px 0}.cflow h3.inl{display:inline;font-size:1em}
.tag.cf-completed{background:#1f5f3a;color:#d9ffe6}.tag.cf-scheduled{background:#1d2c55;color:#cfe0ff}.tag.cf-not_scheduled{background:#444}.tag.cf-declined{background:#555;color:#ddd}
.tag.orient{background:#0f4c5c;color:#d6f6ff}.cfwarn{margin:4px 0}.cfdash .row{display:block;padding:4px 0;border-bottom:1px solid #2a2a3a}
.cfalert{border:1px solid #d4af37}

select.subpick[hidden]{display:none}
.tag.ity{font-weight:bold}.tag.ity-repair{background:#fde7d6;color:#8a3d00}.tag.ity-delivery{background:#d8eef7;color:#0b5a7a}.tag.ity-process{background:#e3efd3;color:#3d5a1a}.tag.ity-missing{background:#f5dcec;color:#7a1a5a}.tag.ity-removal{background:#fbd9d6;color:#b3261e}
/* Nov 3: EPO log */
.tag.epo-received{background:#1d2c55;color:#cfe0ff;border:1px solid #5b7bd0}
.tag.epo-approved{background:#123a22;color:#bdf0cb;border:1px solid #3a9}
.tag.epo-rejected{background:#4a1515;color:#ffd0d0;border:1px solid #c55}
.tag.epo-paid{background:#d4af37;color:#000;font-weight:bold}
.epotot{margin:.3em 0}
/* Nov 7: back charge log, bulk list, weekly reports */
.bck{font-weight:600}.bck-delay{background:#fff3cd;color:#6b4e00}.bck-damage{background:#fde2e1;color:#8a1c14}.bck-cleaning{background:#e3f2fd;color:#0b4a7a}
table.bctot tr.tot td{border-top:2px solid #999}table.bulk td{vertical-align:top}table.bulk textarea{min-width:14em}
table.wrep{border-collapse:collapse;width:100%;margin:.5em 0}table.wrep th,table.wrep td{border:1px solid #ccc;padding:4px 6px;vertical-align:top;font-size:.92em}
.wcomment{white-space:normal;border-left:3px solid #ccc;padding-left:.6em}
@media print{table.wrep th,table.wrep td{border:1px solid #000}.wreport a{color:#000;text-decoration:none}}
