:root{--bg:#f6f1ea;--card:#fffdf9;--ink:#2b2118;--mut:#7a6a5a;--br:#3b2a1a;--acc:#8a5a2b;--line:#e4d9cc;
 --spoil:#b5651d;--backslab:#4a6fa5;--clean:#3f8f5a;--other:#7d6b9e}
*{box-sizing:border-box}body{margin:0;font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
.top{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--br);color:#f6f1ea;position:sticky;top:0;z-index:5}
.brand{font-weight:800;font-size:18px}.brand span{color:#e0b07a}.who{margin-left:auto;font-size:13px;opacity:.85}
button{font:inherit;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:7px 12px;cursor:pointer;color:var(--ink)}
button.primary{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}button.ghost{background:transparent}
.top button.ghost{color:#f6f1ea;border-color:#6b5440}button.sm{padding:2px 7px;font-size:12px}
.hidden{display:none!important}.muted{color:var(--mut)}.pad{padding:16px}.err{color:#b00020;font-weight:600}
main{max-width:1150px;margin:0 auto;padding:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px}
.login{max-width:360px;margin:40px auto;display:grid;gap:12px}
.signup{max-width:460px}
.signup h3{margin:8px 0 0;font-size:15px}
.master-totals{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:8px 0 12px}
.master-table{width:100%;border-collapse:collapse}
.master-table th,.master-table td{text-align:left;padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.master-row{cursor:pointer}
.master-row:hover{background:#faf5ee}
.master-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.master-dl dt{font-size:12px;color:var(--mut)}
.master-dl dd{margin:0;font-weight:650}
.master-detail{margin-top:12px}
.master-tools{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:12px}
.master-totals{grid-template-columns:repeat(5,1fr)}
.co-badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.04em;border-radius:6px;padding:1px 6px;vertical-align:middle}
.co-test{background:#f3d27a;color:#3b2a1a}
.co-friend{background:#d7ead8;color:#1d4a28}
.friend-codes{margin:8px 0 0;padding-left:18px}
@media(max-width:760px){.master-tools{grid-template-columns:1fr}.master-totals{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.master-totals{grid-template-columns:1fr 1fr}.signup{max-width:none}}
label{display:grid;gap:4px;font-size:13px;color:var(--mut)}input,select,textarea{font:inherit;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);width:100%}
.big{font-size:18px;padding:14px 16px;border-radius:12px;font-weight:700}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.tile{display:grid;text-align:left;padding:12px 14px;border-left:6px solid var(--other);border-radius:12px}
.tile.on{outline:3px solid var(--acc)}.tile .big{font-size:30px;padding:0;line-height:1}.tile .nm{font-weight:700}.tile .sm{font-size:12px;color:var(--mut)}
.t-spoil{--tc:var(--spoil)}.t-backslab{--tc:var(--backslab)}.t-clean{--tc:var(--clean)}.t-other{--tc:var(--other)}
.tile{border-left-color:var(--tc)}.badge{display:inline-block;background:var(--tc);color:#fff;border-radius:6px;padding:0 6px;font-size:12px;font-weight:600}
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 12px}.bar select{width:auto}.bar #new{margin-left:auto}
.seg{display:flex}.seg button{border-radius:0}.seg button:first-child{border-radius:8px 0 0 8px}.seg button:last-child{border-radius:0 8px 8px 0}.seg .on{background:var(--br);color:#fff}
.day{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:10px}
.day h3{margin:4px 0 6px;font-size:15px}.cnt{background:var(--line);border-radius:10px;padding:0 8px;font-size:12px}
.day.warn{border-color:#e0a050;background:#fff6ea}.empty{margin:4px 0;font-size:13px}
.drop.over{outline:3px dashed var(--acc);outline-offset:-3px}
.job{display:grid;grid-template-columns:70px 1fr auto;gap:10px;padding:8px;border-top:1px solid var(--line);border-left:5px solid var(--tc);cursor:grab;border-radius:4px}
.job:hover{background:#faf5ee}.job.dragging{opacity:.4}.jt{font-weight:700}.addr{font-weight:700}.cl,.meta{font-size:13px;color:var(--mut)}.ds{font-size:13px}
.s-Done{opacity:.6}.s-Cancelled{opacity:.45;text-decoration:line-through}.s-Inprogress .st{color:#c05600;font-weight:700}
.mv{display:flex;gap:4px;align-items:start}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.ch{font-weight:700;text-align:center;color:var(--mut)}
.cc{background:var(--card);border:1px solid var(--line);border-radius:10px;min-height:120px;padding:6px}.cc.today{border:2px solid var(--acc)}.cc.past{opacity:.6}
.cd{font-size:12px;font-weight:700;color:var(--mut)}.chip{font-size:12px;background:var(--tc);color:#fff;border-radius:6px;padding:3px 5px;margin-top:4px;cursor:grab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
dialog{border:none;border-radius:14px;padding:0;max-width:560px;width:calc(100% - 20px)}dialog::backdrop{background:#0006}
.jf{display:grid;gap:10px;padding:18px}.jf h2{margin:0}.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
fieldset{border:1px solid var(--line);border-radius:8px;display:flex;flex-wrap:wrap;gap:12px}.ck{display:flex;gap:6px;align-items:center;color:var(--ink);font-size:15px}.ck input{width:auto}
.hint{font-size:12px;color:var(--mut);margin:-4px 0 0}.btns{display:flex;gap:8px;justify-content:flex-end}.log{font-size:13px;background:#f3ece3;border-radius:8px;padding:8px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--br);color:#fff;padding:10px 18px;border-radius:20px;z-index:20}
/* operator */
.op{max-width:560px;margin:0 auto}.opg h2{font-size:22px;margin:14px 4px 8px}
.opj{background:var(--card);border:1px solid var(--line);border-left:8px solid var(--tc);border-radius:14px;padding:14px;margin-bottom:12px}
.opt{font-weight:700;font-size:16px}.opa{display:block;font-size:19px;font-weight:800;color:var(--br);margin:6px 0;text-decoration:none}
.opd{font-size:15px}.opm{font-size:14px;color:var(--mut);margin-top:4px}.opn{font-size:14px;background:#f3ece3;border-radius:8px;padding:4px 8px;margin-top:6px}
.opb{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.opb .note{grid-column:1/-1}
.start{background:#e9f0fb;border-color:#4a6fa5}.done{background:#3f8f5a;color:#fff;border-color:#3f8f5a}.start:disabled{opacity:.5}
.donebar{grid-column:1/-1;text-align:center;font-weight:700;color:#3f8f5a;font-size:18px}
.opj.s-Done{opacity:.75}
@media (max-width:700px){.tiles{grid-template-columns:repeat(2,1fr)}.job{grid-template-columns:52px 1fr}.mv{grid-column:2}.cal{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.chip{font-size:10px}.cc{min-height:80px;padding:3px}}
/* ===== ServiceM8-style theme (look & layout only; no SM8 logo/branding) ===== */
:root{--sm-nav:#2c3440;--sm-side:#363f4c;--sm-blue:#1a8ad4;--sm-bg:#eef1f4;--sm-line:#d9dee4;--sm-ink:#2a3038;--sm-mut:#7a8592;
 --q-quote:#f39c12;--q-wo:#2f8fd8;--q-uns:#e74c3c;--q-comp:#3cb371}
body.admin,body.operator{background:var(--sm-bg);color:var(--sm-ink);font-family:"Helvetica Neue",Helvetica,Arial,system-ui,sans-serif}
body.admin .top,body.operator .top{background:var(--sm-nav);color:#fff;padding:0 16px;height:48px}
body.admin .brand span,body.operator .brand span{color:#8cc8f2}
body.admin main{max-width:none;padding:0;margin:0}
.sm-layout{display:grid;grid-template-columns:190px 1fr;min-height:calc(100vh - 48px)}
.sm-side{background:var(--sm-side);padding:8px 0;display:flex;flex-direction:column}
.sm-nav{display:flex;gap:10px;align-items:center;background:none;border:none;border-left:4px solid transparent;border-radius:0;color:#cfd6df;padding:11px 14px;text-align:left;font-size:14px}
.sm-nav .ic{width:20px;text-align:center}.sm-nav.on{background:#2a313b;border-left-color:var(--sm-blue);color:#fff;font-weight:600}
.sm-nav:hover:not(.soon){background:#2f3742;color:#fff}.sm-nav.soon{opacity:.4;cursor:default}
.sm-main{padding:14px 18px;overflow:auto}
.sm-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.sm-head h1{font-size:20px;margin:0 12px 0 0;font-weight:600}.sm-head #new{margin-left:auto}
.sm-btn{background:#fff;border:1px solid var(--sm-line);border-radius:4px;padding:6px 12px;color:var(--sm-ink)}
.sm-btn.primary,.jobcard .primary{background:var(--sm-blue);border-color:var(--sm-blue);color:#fff;font-weight:600}
.admin .seg button{border-color:var(--sm-line)}.admin .seg .on{background:var(--sm-blue);color:#fff;border-color:var(--sm-blue)}
.qtabs{display:flex;gap:0;border-bottom:2px solid var(--sm-line);margin-bottom:8px}
.qtabs button{background:none;border:none;border-bottom:3px solid transparent;border-radius:0;margin-bottom:-2px;padding:8px 14px;color:var(--sm-mut);display:flex;gap:6px;align-items:center}
.qtabs button span:last-child{background:#dde3e9;border-radius:10px;padding:0 7px;font-size:12px;color:var(--sm-ink)}
.qtabs .on{color:var(--sm-ink);font-weight:600;border-bottom-color:var(--sm-blue)}
.qtabs .on.q-quote{border-bottom-color:var(--q-quote)}.qtabs .on.q-wo{border-bottom-color:var(--q-wo)}.qtabs .on.q-uns{border-bottom-color:var(--q-uns)}.qtabs .on.q-comp{border-bottom-color:var(--q-comp)}
.qdot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#aaa;flex:none}
.qdot.q-quote{background:var(--q-quote)}.qdot.q-wo{background:var(--q-wo)}.qdot.q-uns{background:var(--q-uns)}.qdot.q-comp{background:var(--q-comp)}
.qpill{color:#fff;border-radius:3px;padding:2px 7px;font-size:12px;font-weight:600;white-space:nowrap}
.qpill.q-quote{background:var(--q-quote)}.qpill.q-wo{background:var(--q-wo)}.qpill.q-uns{background:var(--q-uns)}.qpill.q-comp{background:var(--q-comp)}
.filters{display:flex;gap:8px;align-items:center;margin:6px 0 10px}.filters select{width:auto;padding:5px 8px;border-radius:4px}
table.jt{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--sm-line);font-size:14px}
.jt th{text-align:left;font-weight:600;color:var(--sm-mut);font-size:12px;text-transform:uppercase;padding:8px;border-bottom:1px solid var(--sm-line);background:#f7f9fa}
.jt td{padding:8px;border-bottom:1px solid #edf0f3;vertical-align:top}.jr{cursor:pointer}.jr:hover{background:#eaf4fc}
.jn{font-weight:600;color:var(--sm-blue);white-space:nowrap}.sub{font-size:12px;color:var(--sm-mut)}.unal{color:var(--q-uns);font-size:13px}.inprog{color:#d35400;font-weight:600}
/* dispatch */
.drange{font-weight:600;margin-left:6px}
.dwrap{display:grid;grid-template-columns:1fr;gap:12px}
.dgrid{display:grid;background:#fff;border:1px solid var(--sm-line)}
.dh{background:#f7f9fa;font-size:12px;font-weight:600;color:var(--sm-mut);padding:6px;border-bottom:1px solid var(--sm-line);border-left:1px solid var(--sm-line);text-align:center}
.dh.today{background:#e3f1fb;color:var(--sm-blue)}
.dname{padding:8px;font-weight:600;font-size:13px;border-bottom:1px solid var(--sm-line);background:#fafbfc}
.dcell{min-height:64px;border-left:1px solid var(--sm-line);border-bottom:1px solid var(--sm-line);padding:3px}.dcell.today{background:#f4faff}
.dcell.over{background:#d8ecfa;outline:2px dashed var(--sm-blue);outline-offset:-2px}
.dchip{background:#e8f3fc;border-left:4px solid var(--q-wo);border-radius:3px;padding:3px 5px;font-size:12px;margin-bottom:3px;cursor:grab;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.dchip.q-comp{border-left-color:var(--q-comp);background:#e9f7ef}.dchip.q-quote{border-left-color:var(--q-quote);background:#fdf3e3}.dchip.inprog{background:#fff0e0}
.dchip .sub{font-size:11px}.dragging{opacity:.4}
.dside{background:#fff;border:1px solid var(--sm-line);padding:8px;align-self:start}.dside h3{font-size:14px;margin:2px 0 8px}
.uj{border:1px solid var(--sm-line);border-radius:4px;padding:6px;margin-bottom:6px;font-size:13px;cursor:grab;background:#fdfdfd}.uj:hover{background:#eaf4fc}
/* job card */
dialog.jobcard{max-width:920px;border-radius:6px}
.jc-top{display:flex;align-items:center;gap:16px;padding:12px 16px;color:#fff;background:var(--q-wo)}
.jc-top.q-quote{background:var(--q-quote)}.jc-top.q-uns{background:var(--q-uns)}.jc-top.q-comp{background:var(--q-comp)}
.jc-no{font-size:20px;font-weight:700}.jc-q{font-size:13px;opacity:.9}.jc-st{color:#fff;margin-left:auto;font-size:12px}.jc-st select{padding:5px;min-width:220px}
.jc-x{background:none;border:none;color:#fff;font-size:20px}
.jc-body{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:6px 16px 0}.jc-col{display:grid;gap:8px;align-content:start}
.jc h4{margin:10px 0 0;font-size:12px;text-transform:uppercase;color:var(--sm-mut);border-bottom:1px solid var(--sm-line);padding-bottom:4px}
.jc .err{padding:0 16px}.jc-foot{padding:10px 16px;border-top:1px solid var(--sm-line);background:#f7f9fa}
.jc input,.jc select,.jc textarea{border-radius:4px;border-color:var(--sm-line)}
.staffs{border:none;padding:0;display:grid;gap:4px}.av{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--sm-blue);color:#fff;font-size:12px;font-weight:700;flex:none}
.diary{display:grid;gap:6px;max-height:180px;overflow:auto}.de{display:flex;gap:8px;font-size:13px}.de.sys .av{background:#9aa5b1}.de small{color:var(--sm-mut)}
/* operator / mobile */
body.operator main{padding:0;max-width:560px}
.mob{min-height:100vh;background:var(--sm-bg)}
.mob-bar{background:var(--sm-blue);color:#fff;padding:14px 16px 12px;position:relative}.mob-title{font-size:22px;font-weight:700}.mob-sub{font-size:13px;opacity:.85}
.mob-bar.det.q-comp{background:var(--q-comp)}.mob-bar.det.q-quote{background:var(--q-quote)}
.mback{background:none;border:none;color:#fff;padding:0 0 6px;font-size:16px}
.mob-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;background:#fff;border-bottom:1px solid var(--sm-line)}
.mob-tabs button{border:none;border-radius:0;background:none;padding:12px;color:var(--sm-mut);border-bottom:3px solid transparent;font-weight:600}.mob-tabs .on{color:var(--sm-blue);border-bottom-color:var(--sm-blue)}
.mob-sec{padding:14px 16px 6px;font-size:13px;font-weight:700;text-transform:uppercase;color:var(--sm-mut)}
.mrow{display:grid;grid-template-columns:58px 1fr 18px;gap:10px;background:#fff;border-bottom:1px solid var(--sm-line);padding:12px 14px;cursor:pointer}
.mtime{display:grid;align-content:start;text-align:center}.mtime b{font-size:16px}.mtime small{color:var(--sm-mut);font-size:12px}
.mcl{display:flex;gap:6px;align-items:center;font-weight:700}.maddr{font-size:15px;margin-top:2px}.mdesc{font-size:13px;color:var(--sm-mut);margin-top:2px}
.mst{font-size:12px;color:var(--q-wo);margin-top:4px;font-weight:600}.mst.inprog{color:#d35400}.mst.done{color:var(--q-comp);background:none;border:none}
.chev{color:#b5bec8;font-size:26px;align-self:center}
.mcard{display:block;position:relative;background:#fff;margin:10px 10px 0;border-radius:8px;padding:12px 14px;color:inherit;text-decoration:none;border:1px solid var(--sm-line)}
.mcard.link .chev{position:absolute;right:12px;top:18px}.mlbl{font-size:12px;text-transform:uppercase;color:var(--sm-mut);font-weight:600}.mval{font-size:16px;margin-top:2px}.mval.big{font-weight:700;color:var(--sm-blue);padding-right:20px}
.mnote{margin-top:10px;width:100%;border-color:var(--sm-line);color:var(--sm-blue);font-weight:600}
.mactions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 10px 30px;position:sticky;bottom:0;background:linear-gradient(transparent,var(--sm-bg) 30%)}
.mbtn{font-size:18px;font-weight:700;padding:16px;border-radius:8px}.mbtn.start{background:#fff;border:2px solid var(--sm-blue);color:var(--sm-blue)}.mbtn.start:disabled{opacity:.5}
.mbtn.complete{background:var(--q-comp);border-color:var(--q-comp);color:#fff}.mactions .donebar{grid-column:1/-1}
@media (max-width:700px){.sm-layout{grid-template-columns:1fr}.sm-side{flex-direction:row;overflow:auto}.dwrap,.jc-body{grid-template-columns:1fr}}
.dcell,.dh{min-width:0;overflow:hidden}
/* invoicing */
.jt.inv input{padding:5px 7px;border-radius:4px;border-color:var(--sm-line);font-size:13px}.jt.inv .iamt{width:110px}.jt.inv .isel{width:auto}
.warnt{color:var(--q-quote)}.sm-btn:disabled{opacity:.5;cursor:default}
/* ---- thick separators: 2px mid-grey between jobs, 4px dark between days (Alex 10/10) */
.jt td{border-bottom:2px solid #9aa3ab}
.jt tr.dayhdr td{background:#2f3a44;color:#fff;font-weight:700;font-size:14px;padding:7px 10px;border-top:4px solid #1d252c;border-bottom:2px solid #1d252c}
.jt tr.dayhdr .cnt{background:#fff;color:#2f3a44;margin-left:6px}
.dchip{margin-bottom:0;border-bottom:2px solid #9aa3ab;border-radius:0}.dchip+.dchip{margin-top:3px}
.dh{border-left:4px solid #1d252c;border-bottom:4px solid #1d252c;background:#2f3a44;color:#fff;font-weight:700}
.dh.today{background:#1b6fb0;color:#fff}
.dcell{border-left:4px solid #1d252c;border-bottom:2px solid #9aa3ab}
.dname{border-bottom:2px solid #9aa3ab}
.dside .uj{border-bottom:2px solid #9aa3ab}
.mrow{border-bottom:2px solid #9aa3ab}
.mob-sec.mday{background:#2f3a44;color:#fff;border-top:4px solid #1d252c;padding:9px 16px;margin-top:6px}
.mob-sec.mday span{background:#fff;color:#2f3a44;border-radius:10px;padding:0 8px;margin-left:6px}
/* ---- job photos */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px;margin:6px 0}
.pth{position:relative;aspect-ratio:1;background:#e8ecef;border-radius:6px;overflow:hidden;cursor:zoom-in}
.pth img{width:100%;height:100%;object-fit:cover;display:block}.pth.perr{background:#f6dcdc}
.pdel{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border-radius:50%;border:none;background:rgba(0,0,0,.6);color:#fff;font-size:12px;cursor:pointer}
.pprog{position:relative;height:22px;background:#e8ecef;border-radius:11px;overflow:hidden;margin:6px 0}
.pprog div{height:100%;background:#2b88d8;transition:width .2s}.pprog span{position:absolute;inset:0;text-align:center;font-size:12px;line-height:22px;font-weight:600}
.padd{display:inline-block;cursor:pointer;margin-top:4px}
.pview{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pview img{max-width:100vw;max-height:88vh;object-fit:contain}.pview .pcap{color:#ddd;font-size:13px;margin-top:8px}
.pview .px{position:absolute;top:10px;right:12px;background:none;border:none;color:#fff;font-size:26px;cursor:pointer}
/* ---- email photos dialog */
.emdlg{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:flex-end;justify-content:center}
.embox{background:#fff;width:min(480px,100%);border-radius:14px 14px 0 0;padding:16px;display:grid;gap:8px}
.embox h3{margin:0}.embox .mbtn{display:block;text-align:center;text-decoration:none;padding:12px;border-radius:8px;font-weight:700;border:1px solid var(--sm-line);background:#fff;color:inherit}
.embox .mbtn.complete{background:var(--q-comp);border-color:var(--q-comp);color:#fff}
@media(min-width:700px){.emdlg{align-items:center}.embox{border-radius:14px}}
.emthumbs{display:flex;gap:6px;overflow-x:auto}.emthumbs img{height:90px;border-radius:6px}
/* ---- phone admin (<=760px): hamburger menu + one-day dispatch agenda */
.sm-burgerbar{display:none}
@media (max-width:760px){
  html,body{overflow-x:hidden}
  .sm-layout{grid-template-columns:1fr;position:relative}
  .sm-burgerbar{display:flex;align-items:center;gap:10px;background:var(--sm-side);color:#fff;padding:0 8px;min-height:48px}
  .sm-burger{min-width:44px;min-height:44px;font-size:22px;background:none;border:none;color:#fff}
  .sm-side{display:none}
  .navopen .sm-side{display:flex;flex-direction:column;position:absolute;top:48px;left:0;right:0;z-index:50;box-shadow:0 8px 20px rgba(0,0,0,.3)}
  .navopen .sm-nav{min-height:48px;font-size:16px}
  .sm-main{padding:8px;overflow-x:hidden}
  .sm-head{flex-wrap:wrap}
  .sm-btn,.qtabs button,select{min-height:44px}
}
.mdisp{max-width:100%}
.mdh{position:sticky;top:0;z-index:10;background:var(--sm-bg);padding-bottom:6px;border-bottom:4px solid #1d252c}
.mdh-row{display:flex;align-items:center;gap:6px}.mdh-row .sm-btn{min-width:44px;min-height:44px;font-size:18px}
.mdh-date{flex:1;text-align:center;line-height:1.2}.mdh-date b{display:block;font-size:17px}
.mstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:6px}
.mstrip button{min-height:56px;padding:2px 0;border:1px solid var(--sm-line);border-radius:6px;background:#fff;display:flex;flex-direction:column;align-items:center;line-height:1.1}
.mstrip button small{font-size:11px;color:var(--sm-mut)}.mstrip button b{font-size:15px}
.mstrip button span{font-size:11px;background:var(--sm-blue);color:#fff;border-radius:8px;padding:0 6px;margin-top:2px}.mstrip button span.zero{background:#c8ced5}
.mstrip button.today{border-color:var(--sm-blue)}.mstrip button.on{background:#2f3a44;color:#fff;border-color:#1d252c}.mstrip button.on small{color:#cfd6df}
.mgrp{background:#2f3a44;color:#fff;font-weight:700;padding:9px 12px;border-top:4px solid #1d252c;margin-top:10px;border-radius:2px}
.mgrp .cnt{background:#fff;color:#2f3a44;margin-left:6px}
.mdc{background:#fff;border-left:6px solid var(--q-wo);border-bottom:2px solid #9aa3ab;padding:10px 12px;cursor:pointer}
.mdc.q-comp{border-left-color:var(--q-comp)}.mdc.q-quote{border-left-color:var(--q-quote)}
.mdc-top{display:flex;align-items:center;gap:8px}.mdc-time{font-size:20px}.mdc-no{font-weight:700;color:var(--sm-blue)}.mdc-top .qpill{margin-left:auto}
.mdc-cl{font-weight:700;margin-top:4px}
.mdc-addr{display:block;min-height:44px;line-height:22px;padding:4px 0;color:var(--sm-blue);font-weight:600;text-decoration:none;word-break:break-word}
.mdc-desc{color:var(--sm-ink);word-break:break-word}
.mdc-foot{display:flex;align-items:center;gap:8px;margin-top:6px}.mdc-foot .sub{flex:1}.mdc-move{min-height:44px;min-width:88px}
.msheet .row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.msheet input{min-height:44px;width:100%}.msheet .ck{min-height:44px;display:flex;align-items:center;gap:8px}
.msheet .ck input{width:24px;height:24px;min-height:0;margin:0}.msheet .staffs{display:grid;gap:4px;border:none;padding:0}
.adminback{display:block;color:var(--sm-blue);background:#fff;padding:10px 14px;min-height:44px;width:100%;text-align:left;font-weight:600;border-bottom:1px solid var(--sm-line)}
.pocand{margin:4px 0;padding:4px 6px;border:1px solid #ddd;border-radius:6px}.pocand .usepo{margin-left:6px;padding:2px 8px}#polk{display:block;margin-top:4px}
/* job-list search (ServiceM8-style) */
.sbar{position:relative;display:flex;align-items:center;margin:8px 0 10px;max-width:520px}
.sbar input{width:100%;height:36px;padding:0 34px 0 32px;border:1px solid #cfd6dd;border-radius:4px;background:#fff;font-size:15px;box-sizing:border-box;-webkit-appearance:none}
.sbar input:focus{outline:none;border-color:#2b7de9;box-shadow:0 0 0 2px rgba(43,125,233,.15)}
.sbar input::-webkit-search-cancel-button{display:none}
.sbar-ic{position:absolute;left:9px;font-size:14px;opacity:.55;pointer-events:none}
.sbar-x{position:absolute;right:4px;width:28px;height:28px;border:0;border-radius:50%;background:#e7ebef;color:#555;font-size:13px;cursor:pointer}
@media (max-width:700px){.sbar{max-width:none}.sbar input{font-size:16px;height:40px}}
/* ===== mobile pass (13/10/2026): <=760px phones ===== */
@media (max-width:760px){
  body{-webkit-text-size-adjust:100%}
  input,select,textarea{font-size:16px!important;max-width:100%}
  .sm-layout{align-content:start;grid-auto-rows:auto}
  .sm-burgerbar{position:sticky;top:0;z-index:40;align-self:start}
  .navopen .sm-side{position:fixed;top:48px;max-height:calc(100dvh - 48px);overflow:auto}
  .sbar{position:sticky;top:48px;z-index:30;background:var(--sm-bg);margin:0 -8px 8px;padding:6px 8px;max-width:none}
  .sm-head h1{font-size:22px}
  /* tabs: one row, swipe sideways */
  .qtabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .qtabs::-webkit-scrollbar{display:none}
  .qtabs button{flex:0 0 auto;white-space:nowrap;min-height:44px;padding:8px 12px}
  .filters{display:flex;flex-wrap:wrap;gap:8px}.filters select{flex:1 1 140px}
  .filters .muted.sub,.filters .sub.muted{display:none}
  .sm-btn,button,.btn{min-height:44px}
  /* tables -> stacked job cards */
  .jt,.jt tbody{display:block;width:100%}
  .jt thead{display:none}
  .jt tr.dayhdr{display:block}.jt tr.dayhdr td{display:block;border-radius:2px}
  .jt tr.jr{display:grid;grid-template-columns:14px auto 1fr auto;gap:2px 8px;align-items:start;background:#fff;
    border-left:6px solid var(--q-wo);border-bottom:2px solid #9aa3ab;padding:10px 12px;margin:0}
  .jt tr.jr td{display:block;padding:0;border:0;min-width:0;word-break:break-word}
  .jt tr.jr td:nth-child(1){grid-column:1;grid-row:1;padding-top:5px}
  .jt tr.jr td:nth-child(2){grid-column:2;grid-row:1;font-weight:700;font-size:16px}
  .jt tr.jr td:nth-child(3){grid-column:1 / -1;grid-row:2}
  .jt tr.jr td:nth-child(3) b{font-size:15px}
  .jt tr.jr td:nth-child(3) .sub{font-size:14px;color:var(--sm-ink);font-weight:600}
  .jt tr.jr td:nth-child(4){grid-column:1 / -1;grid-row:3}
  .jt tr.jr td:nth-child(5){grid-column:3;grid-row:1;text-align:right;font-weight:600}
  .jt tr.jr td:nth-child(5) .sub{display:inline;margin-left:4px}
  .jt tr.jr td:nth-child(6){grid-column:1 / 4;grid-row:4;color:var(--sm-mut);font-size:14px}
  .jt tr.jr td:nth-child(7){grid-column:4;grid-row:1 / 5;align-self:start}
  .jt tr.jr td:nth-child(n+8){grid-column:1 / -1}
  /* invoices: stack every cell; checkbox top-left */
  .jt.inv tr.jr{grid-template-columns:32px 1fr}
  .jt.inv tr.jr td{grid-column:2!important;grid-row:auto!important;text-align:left!important}
  .jt.inv tr.jr td:first-child{grid-column:1!important;grid-row:1 / 9!important}
  .jt.inv .isel{width:24px;height:24px}
  .jt.inv input.idesc,.jt.inv input.iamt{width:100%;min-height:44px;margin-top:4px}
  .filters #inum,.filters #icsv,.filters #imark{flex:1 1 100%}
  /* job card / modal: full screen, one column */
  dialog#dlg,dialog.jobcard{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0;padding:0}
  .jc{display:flex;flex-direction:column;height:100%}
  .jc-body{overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch}
  .jc-top{position:sticky;top:0;z-index:5;display:grid!important;grid-template-columns:1fr auto;gap:6px;align-items:center;padding:8px 12px}
  .jc-top .jc-st{grid-column:1 / -1;grid-row:2;margin:0}.jc-top .jc-x{grid-column:2;grid-row:1}
  .jc-top .jc-no{display:inline;font-size:20px}.jc-top .jc-q{display:inline;margin-left:8px}
  .jc-x{min-width:44px;min-height:44px;font-size:20px}
  .jc .row{display:grid;grid-template-columns:1fr!important;gap:8px}
  .jc label{display:block;width:100%}
  .jc input,.jc select,.jc textarea{width:100%;box-sizing:border-box;min-height:44px}
  .jc input[type=checkbox],.jc input[type=radio]{width:24px;height:24px;min-height:0}
  #findpo,#emailph,.jc button.btn,.jc .sm-btn{width:100%;min-height:48px;font-size:16px}
  .pocand .usepo{display:block;width:100%;margin:6px 0 0}
  .jc-foot,.jc .actions{position:sticky;bottom:0;background:#fff;padding:8px;box-shadow:0 -2px 8px rgba(0,0,0,.12);display:flex;gap:8px}
  .jc-foot button,.jc .actions button{flex:1;min-height:48px}
}
/* invoices: Remove / Restore + Undo toast */
.jt.inv .iremove,.jt.inv .irestore{white-space:nowrap;color:#b3261e;border-color:#e2b4b0;background:#fff}
.jt.inv .irestore{color:var(--sm-blue);border-color:var(--sm-line)}
.toast-undo{margin-left:10px;min-height:36px;padding:4px 14px;border:1px solid #fff;border-radius:4px;background:transparent;color:#fff;font-weight:700;cursor:pointer}
#toast{pointer-events:auto}
@media (max-width:760px){.jt.inv .iremove,.jt.inv .irestore{width:100%;min-height:44px;margin-top:6px}.toast-undo{min-height:44px}}
.jt.inv .iremove.arm{background:#b3261e;color:#fff;border-color:#b3261e}
.qpill.mixed{background:#f59e0b;color:#fff;margin-left:6px;font-size:11px;white-space:nowrap}
.splitbox{margin:8px 0;padding:8px 10px;border:1px solid #f3c47a;background:#fff8ec;border-radius:6px}
.splitbox .ck{display:flex;gap:8px;align-items:center;min-height:40px}
#splitbtn.arm{background:#b3261e;color:#fff;border-color:#b3261e}
@media (max-width:760px){#splitbtn,#splitundo{width:100%;min-height:48px}}
.conf{font-size:11px;font-weight:700;border-radius:3px;padding:1px 6px;color:#fff;margin-left:4px}.conf-high{background:#2e9d5b}.conf-medium{background:#d98a00}.conf-low{background:#9aa3ab}
.headbtns{display:flex;gap:8px;flex-wrap:wrap}
/* Over PO note (never blocks the price) */
.overpo{display:inline-block;background:#fff1e0;color:#b45309;border:1px solid #f59e0b;border-radius:6px;padding:1px 6px;font-size:12px;font-weight:600;margin-top:3px}
.opo .emailsup{margin-top:3px;font-size:12px;padding:2px 6px}
/* Invoices: monthly totals */
.minvstrip{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px}
.mcard{flex:1 1 180px;border:1px solid #d6dde6;border-radius:8px;padding:6px 10px;background:#f8fafc;font-size:13px}
.mcard.cur{border-color:#2563eb;background:#eff6ff}
.mcard .mn{font-weight:700;margin-bottom:2px}
tr.mhead td{background:#eef2f7;font-size:13px;padding:6px 8px}
@media (max-width:760px){ .mcard{flex:1 1 45%} table.jt.inv tr.mhead{display:block} table.jt.inv tr.mhead td{display:block;width:auto} }
.mall{flex-basis:100%;font-size:13px}.mall summary{cursor:pointer;color:#2563eb}.mall .mrow{padding:2px 0;border-bottom:1px solid #eef2f7}

.mdc-unsch{color:#b91c1c}.sm-btn.arm,.btn.arm{background:#fee2e2;border-color:#ef4444;color:#b91c1c}
/* Floating "Done today" card */
.donepill{position:relative;max-width:min(380px,calc(100vw - 24px));background:#fff;border:1px solid #cfd8e3;border-radius:22px;box-shadow:0 4px 16px rgba(0,0,0,.18);font-size:14px;overflow:hidden}
.donepill.open{border-radius:12px}
.dp-head{display:flex;align-items:center;gap:6px;width:100%;padding:9px 14px;background:#15803d;color:#fff;border:0;font:inherit;cursor:pointer;white-space:nowrap}
.dp-tick{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#fff;color:#15803d;font-weight:700;font-size:12px}
.dp-car{margin-left:auto;padding-left:8px}
.dp-body{max-height:min(50vh,360px);overflow:auto}
.dp-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:start;width:100%;text-align:left;padding:8px 12px;border:0;border-bottom:1px solid #eef2f7;background:#fff;font:inherit;cursor:pointer}
.dp-row:hover{background:#f0fdf4}
.dp-no{color:#2563eb;font-weight:700}.dp-main small{display:block;color:#64748b}.dp-amt{font-weight:600;white-space:nowrap}
.dp-foot{padding:7px 12px;background:#f8fafc}
@media (max-width:760px){.fabwrap{right:10px;bottom:calc(10px + env(safe-area-inset-bottom))}.fabwrap:has(.donepill.open){left:10px}.fabwrap .donepill.open{flex:1;max-width:none}}
.fabwrap{position:fixed;right:16px;bottom:16px;z-index:15;display:flex;align-items:flex-end;gap:8px;pointer-events:none}
.fabwrap>*{pointer-events:auto}
.hubdocbtn{display:flex;align-items:center;gap:6px;flex:none;height:40px;padding:0 14px;border-radius:20px;color:#1d252c;font:inherit;font-size:14px;font-weight:600;background:#fff;border:1px solid #cfd8e3;box-shadow:0 4px 16px rgba(0,0,0,.18);text-decoration:none;cursor:pointer}
.hubdocbtn:hover{background:#f0fdf4}
.rb-l{white-space:nowrap}
@media (max-width:760px){.fabwrap:has(.donepill.open) .hubdocbtn{display:none}.hubdocbtn{padding:0 11px}}
.rdlg{border:0;border-radius:12px;padding:16px;width:min(440px,calc(100vw - 20px));box-shadow:0 10px 40px rgba(0,0,0,.3)}
.rdlg h3{margin:0 0 10px}.rdlg label{display:block;margin:8px 0}.rdlg input:not([type=checkbox]){width:100%;box-sizing:border-box}
.rdlg .row{display:flex;gap:10px}.rdlg .row label{flex:1}.rdlg .btns{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.rrow{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid #eef2f7}
.jrc{margin-top:6px}
.rbpill .dp-head{background:#b45309}.rbpill .dp-tick{background:#fff;font-size:11px}.rbpill .dp-row:hover{background:#fffbeb}
.dp-grp{padding:6px 12px;background:#fef3c7;color:#92400e;font-weight:600;font-size:13px}
@media (max-width:760px){.fabwrap{flex-direction:column;align-items:flex-end}.fabwrap:has(.donepill.open){align-items:stretch}.fabwrap .donepill.open{flex:none}}
.rblines{max-height:min(40vh,240px);overflow-y:auto;border-radius:16px}
.rblines .rb-line{border-bottom:1px solid rgba(255,255,255,.25)}.rblines .rb-line:last-child{border-bottom:0}
.rb-t{overflow:hidden;text-overflow:ellipsis;min-width:0}.rb-a{margin-left:auto;padding-left:8px}
.rb-csv{background:#92400e;justify-content:center}
.rb-line{cursor:pointer}.rb-a{margin-left:auto;padding-left:8px}
.rb-done{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;margin:-4px -6px -4px 6px;border-radius:50%;border:1.5px solid rgba(255,255,255,.85);background:transparent;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.rb-done:hover,.rb-done:focus-visible{background:#fff;color:#b45309}
.ts-wrap{padding:0 16px 24px;max-width:820px}
.ts-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 12px}.ts-nav b{min-width:200px;text-align:center}
.ts-day{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;margin-bottom:8px}
.ts-dl{display:flex;align-items:baseline;gap:6px;margin-bottom:6px}.ts-h{margin-left:auto;font-weight:700;color:#15803d}
.ts-in{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.ts-in label{display:flex;flex-direction:column;font-size:12px;color:#64748b;margin:0}
.ts-in input,.ts-note{width:100%;box-sizing:border-box;padding:7px 8px;border:1px solid #cfd8e3;border-radius:6px;font:inherit;font-size:15px;min-width:0}
.ts-note{margin-top:6px}
.ts-tot{display:flex;justify-content:space-between;padding:12px;background:#f0fdf4;border-radius:10px;font-size:16px;margin:4px 0 10px}
.ts-form .btns,.ts-card .btns{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.ts-form .btns span{margin-right:auto}
.ts-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:12px;margin-bottom:12px}.ts-card h3{margin:0 0 8px}
.ts-t td,.ts-t th{padding:5px 8px}a.sm-btn{text-decoration:none;display:inline-flex;align-items:center}
@media (max-width:760px){.ts-wrap{padding:0 8px 24px}.ts-t{font-size:13px}.ts-card{overflow-x:auto}}
.ts-lunch{align-self:end;font-size:12px;color:#64748b;padding-bottom:9px}
.tsmailto{align-self:center;color:#2563eb}
.ts-clock{display:flex;flex-direction:column;gap:10px;margin:0 0 14px}
.ts-go{width:100%;min-height:72px;font-size:22px;font-weight:800;border:0;border-radius:16px;color:#fff;letter-spacing:.01em}
.ts-go.on{background:#1f7a4d}.ts-go.off{background:#9a3412}.ts-go:disabled{opacity:.65}
.ts-break{display:flex;gap:8px}.ts-mini{flex:1;min-height:52px;font-size:17px;font-weight:700;border-radius:12px;border:1px solid #eadfd3;background:#fffdf9;color:#3b2a1a}
.ts-live{margin:0;font-size:16px;font-weight:700}
.ts-privacy{font-size:14px;line-height:1.4;color:#5c4e42;margin:0}
.ts-consent{background:#fffbeb;border:1px solid #fcd34d;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
.ts-consent p{margin:0;font-size:16px;line-height:1.4}
.ts-add{width:100%;min-height:48px;margin:0 0 12px}
.ts-entry{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:12px;margin:0 0 10px}
.ts-entry .ts-dl{margin-top:6px}
.ts-when{margin:0 0 4px;font-size:18px;font-weight:700}
.ts-badge{display:inline-flex;align-items:center;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:3px 8px}
.ts-badge.clock{background:#dcfce7;color:#166534}.ts-badge.manual{background:#ffedd5;color:#9a3412}.ts-badge.week{background:#e2e8f0;color:#334155}
.ts-loc,.ts-stamp{font-size:14px;line-height:1.35;margin:4px 0}
.ts-loc a{display:inline-flex;align-items:center;min-height:44px;font-weight:700}
.ts-man{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:12px;margin:0 0 12px}
.ts-man label,.ts-filter{display:flex;flex-direction:column;gap:4px;font-size:13px;color:#64748b}
.ts-man input,.ts-man select,.ts-filter select{font:inherit;font-size:16px;min-height:44px;padding:8px;border:1px solid #cfd8e3;border-radius:8px;color:#1e293b}
.ts-machine{background:#fffdf9;border:1px solid #eadfd3;border-radius:14px;padding:12px;margin:0 0 12px}
.ts-machine p{margin:0 0 8px}
.ts-fleet{display:flex;flex-direction:column;gap:8px}
.ts-fleet .ts-mini{width:100%;text-align:left;padding:12px 14px}
.ts-soon{color:#7a6a5a;font-size:14px;margin:4px 0}
.ts-prestart{font-size:15px;margin:4px 0}
.ts-keep{background:#f8fafc;border-radius:10px;padding:8px 10px}
.ts-keep p{margin:0 0 4px}
.ts-filter{margin:0 0 10px}
@media (max-width:760px){
  .ts-go{min-height:76px;font-size:24px}
  .ts-in{grid-template-columns:1fr 1fr}
  .ts-entry .tsedit,.ts-entry .tslegacy,.ts-add{width:100%}
}

.qpill.ip{background:var(--q-comp);font-size:11px;padding:1px 6px;vertical-align:1px}.qpill.ip.sm{font-size:10px;padding:0 5px}.qpill.ip.onbar{box-shadow:0 0 0 1px #fff}
.pstack{display:inline-flex;flex-direction:column;align-items:flex-start;gap:3px;vertical-align:top}.mdc-top .pstack{margin-left:auto;align-items:flex-end}.mdc-top .pstack .qpill{margin-left:0}
.ptop{display:flex;justify-content:flex-end;margin-bottom:3px}.jc-top .ptop,.mob-bar .ptop{justify-content:flex-start;margin:3px 0}
@media (max-width:760px){.jt tr.jr .pstack{align-items:flex-end}}
.ptop .qpill.ip.sm{padding:1px 6px;font-size:11px}
/* ---- Home screen */
.home{max-width:980px}.hhead h1{font-size:22px;margin:0;font-weight:600}.hhead{margin-bottom:12px}
.hstats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.hstat{display:grid;text-align:left;background:#fff;border:1px solid var(--sm-line);border-left:5px solid var(--q-wo);border-radius:6px;padding:10px 12px}
.hstat b{font-size:26px;line-height:1.1}.hstat span{font-size:13px;color:var(--sm-mut)}
.hstat.ip{border-left-color:var(--q-comp)}.hstat.q-comp{border-left-color:var(--q-comp)}.hstat.q-uns{border-left-color:var(--q-uns)}.hstat.q-quote{border-left-color:var(--q-quote)}
.hbtns{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.hbtn{display:flex;align-items:center;gap:10px;background:var(--sm-blue);border:none;color:#fff;font-weight:600;font-size:16px;border-radius:6px;padding:16px 14px;min-height:56px}
.hbtn .ic{font-size:20px;width:22px;text-align:center}
.hsec{background:#fff;border:1px solid var(--sm-line);border-radius:6px;margin-bottom:12px}
.hsec-h{font-weight:700;padding:10px 12px;border-bottom:1px solid var(--sm-line);background:#f7f9fb}.hsec-h small{font-weight:400;color:var(--sm-mut);margin-left:4px}
.hrow{display:grid;grid-template-columns:58px 1fr auto;gap:10px;padding:10px 12px;border-top:1px solid var(--sm-line);cursor:pointer;align-items:start}.hrow:first-of-type{border-top:none}
.hrow:hover{background:#f4f8fc}.htime{display:grid}.htime small{color:var(--sm-mut);font-size:12px}.hcl{font-weight:700}.hcl .jn{font-weight:400;color:var(--sm-blue);font-size:13px}
.home .pstack{align-items:flex-end}
@media (max-width:760px){.hstats{grid-template-columns:repeat(2,1fr)}.hbtns{grid-template-columns:repeat(2,1fr)}.hrow{grid-template-columns:48px 1fr auto}}
.phlink{font-size:13px;color:var(--sm-blue);margin-left:8px;white-space:nowrap}
.phicon{text-decoration:none;font-size:13px;margin-left:4px}
.phicon{text-decoration:none;font-size:13px;margin-left:4px}
.mob-tabs{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr}.mob-tabs button{padding:12px 2px;font-size:14px;white-space:nowrap;min-width:0}
/* ---- Safety / incidents / SWMS */
.hbtn.inc{background:var(--q-uns)}.incbtn{color:var(--q-uns);font-weight:600}
.incbox{max-width:640px;width:100%;max-height:90vh;overflow:auto;text-align:left}
.incform{display:grid;gap:10px}.incrow{padding:6px 0;border-bottom:1px solid var(--sm-line)}.incrow .mlbl{font-size:12px;color:var(--sm-mut);text-transform:uppercase}
.inchead{display:flex;align-items:center;gap:10px}.inchead h3{margin:0}.incacts{margin:6px 0}.incadd{display:grid;grid-template-columns:1fr 110px 140px auto;gap:6px;margin:6px 0}
.inchist{margin:10px 0}.inchist summary{cursor:pointer;color:var(--sm-blue)}
.swlist{display:grid;gap:8px;max-width:640px}.switem{display:grid;grid-template-columns:32px 1fr 20px;align-items:center;gap:10px;text-align:left;background:#fff;border:1px solid var(--sm-line);border-radius:6px;padding:14px}
.switem b{display:block;font-size:16px}.switem small{color:var(--sm-mut)}.swic{font-size:22px}
@media (max-width:760px){.incadd{grid-template-columns:1fr 1fr}}
/* Clients screen + job Supervisor card */
.clgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;padding:0 16px 24px}
.clcard{background:#fff;border:1px solid var(--sm-line);border-radius:10px;padding:12px 14px}
.cl-h{display:flex;justify-content:space-between;align-items:center;gap:8px}.cl-h h3{margin:0;font-size:17px}
.cl-off{margin:4px 0 6px}.cl-off a{color:var(--sm-blue);text-decoration:none}
.cl-k{font-size:11px;text-transform:uppercase;font-weight:700;color:var(--sm-mut);margin:10px 0 2px;letter-spacing:.04em}
.ct{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 0;border-top:1px solid #eef1f5}
.ct-who{min-width:0}.ct-who .sub{word-break:break-word}.ct-src{font-size:11px}
.ct-btns,.sup-btns{display:flex;gap:6px;flex-shrink:0}.ct-btns a,.sup-btns a{text-decoration:none}
.supcard:empty{display:none}
.sup{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#f1f6ff;border:1px solid #cfe0ff;border-radius:8px;padding:8px 10px;margin:6px 0 8px}
.sup-who{display:flex;flex-direction:column}.sup-who b{font-size:15px}.sup.none{background:#f8fafc;border-color:#e3e8ef;display:block}
.mcard .sup{margin:8px 0 0}.mcard .sup-btns a{padding:10px 14px;font-size:15px}
@media (max-width:760px){.clgrid{grid-template-columns:1fr;padding:0 10px 20px}.ct-btns a,.ct-btns button{padding:9px 12px}}
/* Inbox (owner only) */
.nbadge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:#dc2626;color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;margin-left:auto}
.ibar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:0 16px 8px}
.qtab{background:#fff;border:1px solid var(--sm-line);border-radius:16px;padding:5px 12px;display:inline-flex;gap:6px;align-items:center;cursor:pointer}
.qtab.on{background:var(--sm-blue);color:#fff;border-color:var(--sm-blue)}
.ibun{margin-left:8px;font-size:13px}
.ilist{padding:0 16px 24px}
.irow{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--sm-line);border-radius:8px;margin-bottom:6px;padding:9px 12px}
.irow.unread{border-left:4px solid var(--sm-blue)}.irow.unread .isubj,.irow.unread .ifrom{font-weight:800}
.imain{flex:1;min-width:0;color:inherit;text-decoration:none}
.itop{display:flex;gap:8px;align-items:center}.ifrom{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.idate{margin-left:auto;font-size:12px;color:var(--sm-mut);white-space:nowrap}
.isubj{margin-top:2px;font-weight:500}.isnip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iatt{font-size:12px}
.ibld{font-size:10px;font-weight:800;text-transform:uppercase;padding:2px 6px;border-radius:4px;background:#e5e7eb;color:#374151}
.ibld.b-orbit{background:#dbeafe;color:#1e40af}.ibld.b-torsion{background:#fee2e2;color:#991b1b}.ibld.b-silkwood{background:#dcfce7;color:#166534}
.iside{display:flex;flex-direction:column;gap:4px;align-items:flex-end;flex-shrink:0}.ijob{font-size:12px;padding:4px 8px}
.hstat.q-inbox b{color:#dc2626}
.import-banner{background:#f1f6ff;border:1px solid #cfe0ff;border-radius:8px;padding:10px 12px;margin:0 0 12px}
.import-banner .row,.ireview .row{display:flex;flex-wrap:wrap;gap:8px}
.import-banner label,.ireview label{display:flex;flex-direction:column;font-size:12px;gap:2px;flex:1;min-width:140px}
.ireview label.ck,.import-banner label.ck{flex-direction:row;align-items:center;min-width:0;flex:none;font-size:14px;margin:4px 0}
.import-banner input,.ireview input,.ireview select,.ireview textarea{font:inherit;padding:6px 8px}
.ireview textarea{width:100%;margin-top:6px}
.iwarn{color:#9a3412;background:#fff7ed;border:1px solid #fdba74;border-radius:6px;padding:6px 8px;margin:6px 0;font-size:13px}
.ibulk{cursor:pointer;align-items:flex-start}
.iimported .isubj{color:var(--sm-mut)}
.sm-head .headbtns{margin-left:auto}
@media (max-width:760px){.ilist,.ibar{padding-left:8px;padding-right:8px}.irow{flex-direction:column}.iside{flex-direction:row;align-self:stretch;justify-content:flex-end;flex-wrap:wrap}}

/* ===== iPad / tablet (3/11/2026). Phone (<=760px) and desktop mouse layouts unchanged except where noted. ===== */
/* Safe areas (notch / home bar / Add-to-Home-Screen with black-translucent status bar) */
.top{padding-top:calc(10px + env(safe-area-inset-top));padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}
.sm-main{min-width:0;padding-right:calc(18px + env(safe-area-inset-right));padding-bottom:calc(14px + env(safe-area-inset-bottom))}
.sm-side{padding-left:env(safe-area-inset-left);padding-bottom:env(safe-area-inset-bottom)}
.mactions{padding-bottom:calc(30px + env(safe-area-inset-bottom))}
html{-webkit-text-size-adjust:100%}
/* Touch devices (iPad, phones): 44px targets, 16px inputs so iOS doesn't zoom, no sticky hover tint */
@media (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important}
  input:not([type=checkbox]):not([type=radio]),select{min-height:44px}
  .sm-btn,.qtab,.mnote,.mbtn,.hbtn,.hstat,.sm-nav,.jc-x,.mback,.sbar-x,.top button,dialog .btns button,.mob-tabs button,.dlg-btn{min-height:44px}
  .sm-btn,a.sm-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px}
  .ct-btns .sm-btn,.ct-btns a,.sup-btns a,.iside .sm-btn{min-width:44px}
  input[type=checkbox],input[type=radio]{width:22px;height:22px}
  label.ck{min-height:44px;display:flex;align-items:center;gap:8px}
  .jr td{padding-top:12px;padding-bottom:12px}
  .dchip{padding:6px 6px;min-height:36px}
  .sm-nav:hover:not(.soon),.jr:hover,.hrow:hover,.uj:hover,.dp-row:hover{background:inherit}
  .sm-nav.on:hover{background:#2a313b}
  .touchhint{display:block}
}
.touchhint{display:none;font-size:12px;color:var(--sm-mut);margin:6px 0}
/* Tablet portrait (iPad 768/810/820/834): side menu becomes an icon rail with short labels; content gets the room */
@media (min-width:761px) and (max-width:1023px){
  .sm-layout{grid-template-columns:84px 1fr}
  .sm-side{position:sticky;top:0;align-self:start;max-height:100dvh;overflow-y:auto}
  .sm-nav{flex-direction:column;gap:2px;padding:8px 4px;font-size:11px;line-height:1.15;text-align:center;justify-content:center;position:relative;border-left-width:3px}
  .sm-nav .ic{width:auto;font-size:19px}
  .sm-nav .nbadge{position:absolute;top:4px;right:8px;margin:0;min-width:16px;line-height:16px;font-size:10px}
  .sm-main{padding-left:14px}
  .sm-head{flex-wrap:wrap}
  .jt{font-size:14px}
  .clgrid{grid-template-columns:1fr 1fr}
  dialog.jobcard{width:calc(100vw - 24px);max-width:calc(100vw - 24px)}
}
/* All tablets: dialogs fit the screen and scroll inside; operator (Patrick) view uses the extra width */
@media (min-width:761px) and (max-width:1400px) and (pointer:coarse){
  dialog,dialog.jobcard{max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain}
  dialog.jobcard .jc-foot{position:sticky;bottom:0;background:#fff;z-index:2;padding-bottom:calc(10px + env(safe-area-inset-bottom))}
  body.operator main{max-width:760px;margin:0 auto}
  .dgrid .dname{font-size:14px}
}
/* Dispatch week grid: never squash day columns below a readable width; scroll sideways inside the board instead */
@media (min-width:761px) and (max-width:1180px){
  .dwrap{min-width:0}
  .dgrid-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .dgrid-scroll>.dgrid{min-width:820px}
}
.dwrap{grid-template-columns:minmax(0,1fr)}.dboard{min-width:0}
@media (pointer:coarse){
  .seg button,dialog .btn,.rb-done,.dp-head{min-height:44px}
  .rb-done{min-width:44px}
  a.phicon,a.phlink,.ct-card a,.sup a{display:inline-flex;align-items:center;min-height:44px;padding:0 6px}
}
@media (pointer:coarse){.touchhint{display:block}}

/* ===================== CLEAN MOCKUP (3/11/2026) ===================== */
/* Calm palette: neutral UI; colour only for status. Unallocated = red, In progress = green, Done = grey-blue. */
:root{--sm-nav:#ffffff;--sm-side:#f4f5f7;--sm-blue:#2f4a66;--sm-bg:#f7f8fa;--sm-line:#e3e6ea;--sm-ink:#1f2933;--sm-mut:#6b7684;
  --q-wo:#5b6b7d;--q-quote:#b7791f;--q-uns:#9aa3ad;--q-comp:#6f86a3;--st-red:#d64545;--st-green:#2e9e5b;--st-amber:#c27c0e}
.top{background:#fff;color:var(--sm-ink);border-bottom:1px solid var(--sm-line);box-shadow:none}
.brand,.brand span,body.admin .brand span,body.operator .brand span{color:var(--sm-ink)}.brand span{font-weight:500;color:var(--sm-mut)!important}
.who{color:var(--sm-mut)}.top button.ghost,#logout{color:var(--sm-ink);border-color:var(--sm-line);background:#fff}
.sm-btn.primary,button.primary{background:var(--sm-ink);border-color:var(--sm-ink);color:#fff}
.seg .on{background:var(--sm-ink);color:#fff}
.qpill.ip,.qpill.ip.sm{background:var(--st-green)!important;color:#fff}
.unal,.at-row.red .at-n{color:var(--st-red)}.inprog{color:var(--st-green)}.mst.inprog{color:var(--st-green)}
.qpill.q-alert{background:var(--st-red)}.qdot.q-alert{background:var(--st-red)}
.dchip{background:#fff;border-left-color:var(--q-wo)}.dchip.inprog{background:#eaf7ef;border-left-color:var(--st-green)}.dchip.q-comp{background:#f0f3f7}
.jc-top,.jc-top.q-comp,.jc-top.q-quote,.jc-top.q-uns{background:#fff;color:var(--sm-ink);border-bottom:1px solid var(--sm-line)}
.jc-top .jc-x{color:var(--sm-ink)}.jc-top .qpill.ip.onbar{box-shadow:none}
.mob-bar,.mob-bar.det.q-comp,.mob-bar.det.q-quote{background:#fff;color:var(--sm-ink);border-bottom:1px solid var(--sm-line)}.mback{color:var(--sm-blue)}
.mob-tabs .on{color:var(--sm-ink);border-bottom-color:var(--sm-ink)}
.mbtn.start{background:#fff;color:var(--sm-ink);border:1px solid var(--sm-line)}.mbtn.complete{background:var(--sm-ink);border-color:var(--sm-ink)}
.hbtn{background:#fff;color:var(--sm-ink);border:1px solid var(--sm-line)}.hbtn.inc{background:#fff;color:var(--st-red);border-color:#f0c4c4}
.incbtn{color:var(--st-red)}
.sm-burgerbar{background:#fff;color:var(--sm-ink);border-bottom:1px solid var(--sm-line)}.sm-burger{color:var(--sm-ink)}
/* side menu */
.sm-side{border-right:1px solid var(--sm-line);padding:8px 6px;gap:1px}
.sm-nav{color:#3a4550;border-left:none;border-radius:6px;padding:9px 10px}
.sm-nav.on{background:#fff;color:var(--sm-ink);font-weight:600;box-shadow:0 0 0 1px var(--sm-line)}
.sm-nav:hover:not(.soon){background:#e9ecf0;color:var(--sm-ink)}
.sm-gh{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:6px;padding:9px 10px;margin-top:8px;color:var(--sm-mut);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;text-align:left}
.sm-gh .ic{width:20px;text-align:center;font-size:14px}.sm-gh .car{margin-left:auto;font-size:11px}
.sm-grp:not(.open) .sm-gi{display:none}
.sm-gi .sm-nav{padding-left:18px}
.sm-nav .nbadge{background:var(--st-red)}
/* tablet icon strip: groups become small headings + icons */
@media (min-width:761px) and (max-width:1023px){
  .sm-side{padding:6px 4px}
  .sm-gh{flex-direction:column;gap:0;padding:6px 2px;font-size:9.5px;text-align:center;justify-content:center;border-top:1px solid var(--sm-line);border-radius:0}
  .sm-gh .ic{display:none}.sm-gh .car{margin:0}
  .sm-gi .sm-nav{padding-left:4px}
  .sm-nav{border-radius:8px}
}
/* phone burger menu */
@media (max-width:760px){ .navopen .sm-side{background:#fff} .sm-gh{min-height:44px} }
/* home: needs attention */
.attn .at-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:none;border-top:1px solid var(--sm-line);background:#fff;text-align:left;cursor:pointer;font-size:15px;border-radius:0}
.attn details.at-row{display:block;padding:0}.attn summary{display:flex;align-items:center;gap:12px;padding:12px;list-style:none;cursor:pointer;min-height:44px}
.attn summary::-webkit-details-marker{display:none}.attn details[open] .car{transform:rotate(90deg)}
.attn .hsec-h+.at-row,.attn .hsec-h+details{border-top:none}
.at-n{min-width:34px;text-align:center;font-weight:700;font-size:18px;color:var(--sm-ink)}.at-row.amber .at-n{color:var(--st-amber)}
.at-t{flex:1}.car{color:var(--sm-mut)}.dupw{color:var(--st-amber);font-weight:600}
.at-list{padding:0 12px 10px 58px}.at-j{padding:9px 0;border-top:1px dashed var(--sm-line);font-size:14px;cursor:pointer}.at-j:first-child{border-top:none}
.opbtns{grid-template-columns:1fr 1fr!important;margin-bottom:12px}
.nopo{color:var(--st-amber)}
/* job dialog: key facts + tabs */
.jc-facts{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:1px;background:var(--sm-line);border-bottom:1px solid var(--sm-line)}
.kf{background:#fafbfc;padding:10px 14px;display:grid;gap:2px;align-content:start;min-width:0}.kf small{font-size:11px;color:var(--sm-mut);text-transform:uppercase;letter-spacing:.04em}
.kf b{font-size:14px;overflow-wrap:anywhere}.kf a{color:var(--sm-ink);text-decoration:none}
.jc-tabs{display:flex;gap:4px;padding:6px 12px 0;border-bottom:1px solid var(--sm-line);background:#fff;overflow-x:auto;position:sticky;top:0;z-index:3}
.jc-tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:10px 12px;color:var(--sm-mut);font-weight:600;white-space:nowrap}
.jc-tabs button.on{color:var(--sm-ink);border-bottom-color:var(--sm-ink)}
.jc-body.tabbed{display:block;padding:0}.jc-pane{padding:12px 16px}.jc-pane[hidden]{display:none}
.jc-body2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.safebtns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
@media (max-width:900px){.jc-facts{grid-template-columns:1fr 1fr}.kf-addr{grid-column:1/-1}.jc-body2{grid-template-columns:1fr;gap:0}}
.safecard .mnote{display:block;width:100%;margin-top:6px}.safecard .incbtn{color:var(--st-red)}
/* global search */
.gsearch{position:relative;flex:1;max-width:460px;margin-left:16px}
.gsearch input{width:100%;padding:8px 12px;border:1px solid var(--sm-line);border-radius:8px;background:var(--sm-bg);font-size:14px}
.gres{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--sm-line);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.12);max-height:70vh;overflow:auto;z-index:60}
.gr{display:grid;gap:2px;width:100%;text-align:left;border:none;border-top:1px solid var(--sm-line);border-radius:0;background:#fff;padding:10px 12px}.gr:first-child{border-top:none}
.gr:hover{background:var(--sm-bg)}.gr-a{font-weight:600;color:var(--sm-ink)}.gr-m{font-size:12px;color:var(--sm-mut)}.gr.none{color:var(--sm-mut);font-size:14px}
@media (max-width:760px){.top{flex-wrap:wrap}.gsearch{order:5;flex-basis:100%;max-width:none;margin:6px 0 0}.who{display:none}}
@media (max-width:760px){#logout{margin-left:auto}}
@media (max-width:760px){.top{flex-wrap:nowrap;gap:8px;padding-left:10px;padding-right:10px}.brand{font-size:16px}
 .gsearch{order:0;flex:1;flex-basis:auto;margin:0;min-width:0}.gsearch input{padding:6px 10px;min-height:36px}#logout{margin-left:0;padding:6px 10px}
 .gres{position:fixed;top:52px;left:8px;right:8px}}
.top{z-index:45}#logout{white-space:nowrap}
.qpill:not([class*="q-"]):not(.ip){background:#8a96a3;color:#fff}
.gr-done{justify-self:start;font-size:11px;font-weight:600;color:#fff;background:var(--q-comp);border-radius:3px;padding:1px 6px;margin-top:2px}
/* revenue chart (home, Alex only) */
.revsec .hsec-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rv-seg{margin-left:auto}.rv-seg button{padding:4px 10px;font-size:12px}
.rv-wrap{padding:12px 12px 0}.rv-svg{width:100%;height:auto;display:block;max-height:280px}
.rv-g{stroke:var(--sm-line);stroke-width:1}.rv-y{font-size:10px;fill:var(--sm-mut);text-anchor:end}
.rv-x{font-size:11px;fill:var(--sm-mut);text-anchor:middle}.rv-v{font-size:10px;fill:var(--sm-ink);text-anchor:middle;font-weight:600}
.rv-b rect{fill:#5b7a99}.rv-b.sheet rect{fill:#a9bccf}.rv-b.cur rect{fill:#5b7a99;opacity:.55}
.rv-note{padding:6px 12px 12px;margin:0;line-height:1.45}
/* profit chart */
.rv-h{flex-wrap:wrap;gap:6px}.rv-ctl{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.rv-ctl .rv-seg{margin-left:0}
.rv-b.pos rect{fill:#3f7d58}.rv-b.neg rect{fill:#c0504d}.rv-b.cur rect{opacity:.45}
.rv-b rect.inc{fill:#5b7a99}.rv-b rect.exp{fill:#d9a066}.rv-g.zero{stroke:#888;stroke-width:1.2}
.rv-v.negt,.negt{fill:#b03a37;color:#b03a37}.rv-key .k{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 4px 0 10px;vertical-align:-1px}
.rv-key .k.inc{background:#5b7a99}.rv-key .k.exp{background:#d9a066}
/* Xero actions (#inum Send to Xero on ready tab, #ixero on numbered tab, Check Xero): brand blue */
.sm-btn.xero,.sm-btn.primary.xero{background:#13B5EA;color:#fff;border-color:#0e9ccb}
.sm-btn.xero:hover:not(:disabled),.sm-btn.primary.xero:hover:not(:disabled){background:#0e9ccb;border-color:#0c87b0;color:#fff}
.sm-btn.xero:disabled,.sm-btn.primary.xero:disabled{opacity:.5;cursor:default}
/* profit line chart */
.rv-line{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.rv-line.net{stroke:#6b7c8c}
.rv-line.inc{stroke:#5b7a99}.rv-line.exp{stroke:#d9a066}
.rv-b.pos .rv-dot{fill:#3f7d58}.rv-b.neg .rv-dot{fill:#c0504d}.rv-dot{stroke:#fff;stroke-width:1.5}
.rv-dot.inc{fill:#5b7a99}.rv-dot.exp{fill:#d9a066}.rv-b.cur .rv-dot{opacity:.55}
.rv-g.zero{stroke:#555;stroke-width:1.6}
.rv-ghost{fill:none;stroke-width:1.8;stroke-dasharray:5 4;opacity:.45}.rv-ghost.net{stroke:#6b7c8c}.rv-ghost.inc{stroke:#5b7a99}.rv-ghost.exp{stroke:#d9a066}
.rv-gdot{fill:#9aa6b2;opacity:.6}.rv-gdot.income{fill:#5b7a99}.rv-gdot.expenses{fill:#d9a066}
.rv-key .ln{display:inline-block;width:18px;border-top:2.5px solid #6b7c8c;margin:0 4px 0 10px;vertical-align:3px}.rv-key .ln.gh{border-top:2px dashed #6b7c8c;opacity:.5}

/* ---- SWMS online signing (preview) */
.swh{margin:18px 0 8px;font-size:17px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.switem.swsign{grid-template-columns:1fr;gap:10px;padding:12px 14px}
.swopen{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:center;text-align:left;background:none;border:0;padding:4px 0;min-height:48px;font:inherit;color:inherit}
.swopen b{display:block;font-size:16px}.swopen small{color:var(--sm-mut)}
.swst{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.swpill{display:inline-block;padding:5px 10px;border-radius:999px;font-size:13px;font-weight:700;background:#eef1f5;color:#44505f;white-space:nowrap}
.swpill.sw-ok{background:#e3f5e8;color:#16723a}.swpill.sw-due{background:#fff1d6;color:#8a5300}.swpill.sw-exp{background:#fde4e4;color:#a61b1b}
.swpill[data-swsig]{cursor:pointer}
.swbtn{min-height:48px;padding:10px 18px;border-radius:8px;border:1px solid var(--sm-line);background:#fff;font:inherit;font-weight:700;font-size:16px;color:inherit}
.swbtn.primary{background:var(--sm-blue);border-color:var(--sm-blue);color:#fff}.swbtn.wide{display:block;width:100%;margin-top:8px;text-align:left}
.swremind{display:grid;grid-template-columns:36px 1fr 20px;gap:10px;align-items:center;width:100%;text-align:left;border-radius:8px;padding:14px;margin:10px 0;border:2px solid;font:inherit;min-height:64px}
.swremind .ic{font-size:24px;text-align:center}.swremind b{display:block;font-size:16px}.swremind small{display:block;opacity:.85}
.swremind.sw-exp{background:#fde4e4;border-color:#e7a3a3;color:#7d1313}.swremind.sw-due{background:#fff1d6;border-color:#f0c470;color:#6b4100}
.swsignov .embox{max-width:560px}
.swsh{display:flex;flex-direction:column;padding:10px 12px;background:#f4f6f9;border-radius:8px}.swsh b{font-size:17px}.swsh small{color:var(--sm-mut)}
.swstep{display:grid;grid-template-columns:30px 1fr;gap:10px;align-items:start}.swstep .n{width:28px;height:28px;border-radius:50%;background:var(--sm-blue);color:#fff;display:grid;place-items:center;font-weight:700}
.swck{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--sm-line);border-radius:8px;background:#fff;min-height:56px;font-size:15px}
.swck input{width:28px;height:28px;flex:none}
.swsel{width:100%;min-height:48px;font-size:16px;margin-top:6px;border-radius:8px;border:1px solid var(--sm-line);padding:0 10px;background:#fff}
.sigpad{position:relative;margin-top:8px;border:2px dashed #9aa7b8;border-radius:10px;background:#fff;height:190px}
.sigpad canvas{width:100%;height:100%;display:block;touch-action:none;border-radius:10px}
.sigline{position:absolute;left:16px;right:16px;bottom:38px;border-bottom:1px solid #c5ccd6;color:#9aa7b8;font-size:14px;pointer-events:none;padding-bottom:2px}
.inked .sigline{color:transparent}
.sigclr{position:absolute;top:8px;right:8px;min-height:40px;padding:6px 14px;border-radius:8px;border:1px solid var(--sm-line);background:#fff;font-weight:700}
.swname{display:flex;flex-direction:column;gap:4px;margin-top:10px;font-weight:700;font-size:14px}.swname input{min-height:48px;font-size:17px;padding:0 12px;border-radius:8px;border:1px solid var(--sm-line)}
.swfoot{display:grid!important;grid-template-columns:1fr 2fr;gap:10px}.swfoot .mbtn{min-height:56px}.swfoot .mbtn:disabled{opacity:.45}
.swtablewrap{overflow-x:auto;background:#fff;border:1px solid var(--sm-line);border-radius:6px;max-width:100%}
.swtable{border-collapse:collapse;width:100%;font-size:14px}.swtable th,.swtable td{padding:10px;border-bottom:1px solid var(--sm-line);text-align:left;vertical-align:middle}
.swtable th{background:#f4f6f9;font-size:13px;white-space:nowrap}.swtable tr.superseded{opacity:.55}.swlog .swbtn{min-height:44px;font-size:14px;padding:8px 12px;white-space:nowrap}
.sigimg{background:#fff;border:1px solid var(--sm-line);border-radius:8px;padding:10px;text-align:center}.sigimg img{max-width:100%;height:auto}
.sigdl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}.sigdl dt{color:var(--sm-mut)}.sigdl dd{margin:0;font-weight:600}
/* SWMS signed downloads (admin) */
.swdl { display: grid; gap: 8px; margin-bottom: 14px; }
.swdlrow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 12px; border: 1px solid #dde2ea; border-radius: 10px; background: #fff; }
.swdlt { flex: 1 1 180px; display: flex; flex-direction: column; }
.swdljob { flex: 1 1 200px; max-width: 340px; min-height: 40px; font-size: 15px; border-radius: 8px; border: 1px solid #c9d0db; padding: 0 8px; }
.swdlrow .swbtn { min-height: 40px; }
.swacts { white-space: nowrap; } .swacts .swbtn + .swbtn { margin-left: 6px; }
.swdlbtns { flex-wrap: wrap; gap: 8px; } .swdlbtns a.mbtn { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.swph { color: #8a2a1a; background: #fde4e4; border-radius: 8px; padding: 8px 10px; margin: 8px 0; font-size: 14px; line-height: 1.35; }
.swframe { width: 100%; height: 210px; border: 1px solid #e4d9cc; border-radius: 8px; background: #fff; margin-top: 8px; }
.swpeople { display: none; }
.swperson { background: #fffdf9; border: 1px solid #e4d9cc; border-radius: 14px; padding: 12px 14px; }
.swperson > b { display: block; font-size: 18px; margin-bottom: 4px; }
.swprow { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 0; border-top: 1px solid #eadfd3; }
.swprow > span:first-child { font-weight: 700; }
body.operator .swremind { margin: 4px 16px 12px; width: calc(100% - 32px); }
@media (max-width: 760px) {
  .swpeople { display: grid; gap: 10px; }
  .swtablewrap.team { display: none; }
}
@media (max-width: 600px) { .swdljob, .swdlrow .swbtn { flex: 1 1 100%; max-width: none; } .swacts { white-space: normal; } .swacts .swbtn { display: block; margin: 4px 0 0 !important; } }

/* Check Xero */
.xc{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.xc .xc-btn{padding:2px 8px;font-size:12px}
.qpill.xc-ok,.jt .qpill.xc-ok,.kf .qpill.xc-ok{background:#16a34a!important}.qpill.xc-draft,.jt .qpill.xc-draft,.kf .qpill.xc-draft{background:#d97706!important}.qpill.xc-none,.jt .qpill.xc-none{background:#6b7280!important}.qpill.xc-multi,.jt .qpill.xc-multi,.kf .qpill.xc-multi{background:#7c3aed!important}.qpill.xc-wait,.jt .qpill.xc-wait,.kf .qpill.xc-wait{background:#0ea5e9!important}
.xc-ago{font-size:11px}

/* v47 scrollfix: one scroll area for the job card body on phones */
.jc-scroll{display:contents}
@media (max-width:760px){
  dialog.jobcard{height:100dvh;max-height:100dvh;overflow:hidden}
  dialog.jobcard .jc{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}
  dialog.jobcard .jc-top{position:static;flex:0 0 auto}
  dialog.jobcard .jc-foot{position:static;flex:0 0 auto;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  dialog.jobcard .jc-scroll{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
  dialog.jobcard .jc-scroll .jc-body{overflow:visible;flex:none;min-height:0}
  dialog.jobcard .jc-scroll .jc-tabs{position:sticky;top:0}
  .kf{padding:8px 12px}
  .kf-xero{display:flex!important;flex-wrap:wrap;align-items:center;gap:6px}
  .kf-xero{grid-column:1/-1}.kf-xero small{margin-right:2px}.kf-xero b,.kf-xero .xc{display:contents}.kf-xero .xc-ago{margin-right:4px}
  .kf-xero .xc{flex-wrap:wrap}
  .jc .kf-xero .sm-btn.xc-btn{width:auto;min-height:32px;padding:4px 10px;font-size:13px}
}

/* ===== Phone cream / coffee (6 Nov 2026). Layout and handlers unchanged; this is the approved phone look. ===== */
:root{--bg:#f6f1ea;--cream:#f6f1ea;--card:#fffdf9;--ink:#2b2118;--mut:#7a6a5a;--br:#3b2a1a;--acc:#8a5a2b;--line:#e4d9cc;--caramel:#8a5a2b}
body,body.admin,body.operator{background:var(--cream);color:var(--ink)}
.mark{width:26px;height:26px;margin-right:8px;vertical-align:-6px;flex:none}
.top,body.admin .top,body.operator .top{background:#142033;color:#f6f1ea;border-bottom:none;box-shadow:none;height:auto;min-height:56px;padding:10px 16px}
.brand,body.admin .brand,body.operator .brand{color:#f6f1ea;display:flex;align-items:center;gap:8px}
.brand span,body.admin .brand span,body.operator .brand span{color:#e7c59a!important;font-weight:650;margin-left:0}
.top button.ghost,.top #logout,body.admin .top #logout,body.operator .top #logout{color:#f6f1ea;border-color:#8a7058;background:transparent}
.who{color:#eadccb}
.top button.ghost,#logout{color:#f6f1ea;border-color:#8a7058;background:transparent}
.top .gsearch input{background:#fffdf9;color:#2b2118;border-color:transparent}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.mrow:focus-visible,.qw-type:focus-visible,.qw-preset:focus-visible{
  outline:3px solid #c4894a;outline-offset:2px}
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

body.operator{background:#f6f1ea}
body.operator main{max-width:560px;margin:0 auto;padding:0;background:#f6f1ea}
body.operator .mob{min-height:100vh;background:#f6f1ea;padding-bottom:calc(88px + env(safe-area-inset-bottom));color:#2b2118}
body.operator:has(.mob-bar.det) .top{display:none}
body.operator .adminback{display:block;width:100%;text-align:left;color:#f6f1ea;background:#3b2a1a;min-height:44px;padding:10px 16px;font-weight:700;border:none}
body.operator .mob-intro{padding:8px 16px 4px}
body.operator .mob-kicker,body.operator .mob-date{font-size:15px;color:#5c4e42}
body.operator .mob-hello{font-size:28px;line-height:1.15;margin:12px 0 0;font-weight:750;letter-spacing:-.02em}
body.operator .mob-count{font-size:32px;line-height:1.15;font-weight:800;margin:2px 0 0;letter-spacing:-.03em}
body.operator .mob-seg{display:flex;background:#efe6da;border-radius:999px;padding:4px;margin:16px 0 8px;width:100%}
body.operator .mob-seg button{flex:1;border:none;background:transparent;border-radius:999px;min-height:44px;font-weight:700;color:#5c4e42}
body.operator .mob-seg button.on{background:#fffdf9;color:#2b2118;box-shadow:0 1px 2px rgba(59,42,26,.12)}
body.operator .mob-bar{background:transparent;color:#2b2118;border:none;padding:8px 16px 0}
body.operator .mob-bar .mob-title{font-size:28px;font-weight:800;letter-spacing:-.02em}
body.operator .mob-bar .mob-sub{color:#7a6a5a;opacity:1}
body.operator .mob-bar.det{display:flex;align-items:center;gap:4px;background:#f6f1ea;padding:8px 8px 0;position:sticky;top:0;z-index:6}
body.operator .mob-bar.det .mback{color:#3b2a1a;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0}
body.operator .mob-bar.det .mob-title{font-size:18px;font-weight:700}
body.operator .mob-bar.det .mic,body.operator .mback svg,body.operator .mbtn svg,body.operator .op-photo svg,body.operator .mob-tabs svg{width:22px;height:22px;display:block}
body.operator .mob-list{padding-top:8px}
body.operator .mrow.opj{display:block;background:#fffdf9;border:1px solid #eadfd3;border-left:1px solid #eadfd3;border-radius:18px;padding:14px 16px 16px;margin:0 16px 12px;box-shadow:none;cursor:pointer}
body.operator .mrow .chev,body.operator .mrow .qdot{display:none}
body.operator .mtime{display:flex;align-items:baseline;gap:6px;text-align:left;margin:0 0 2px}
body.operator .mtime b{font-size:14px;font-weight:700}
body.operator .mtime small{color:#7a6a5a;font-size:13px}
body.operator .mcl{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:2px}
body.operator .maddr{font-size:16px;font-weight:650;color:#2b2118;margin-top:2px}
body.operator .mdesc{font-size:15px;color:#5c4e42;margin-top:1px}
body.operator .mrow .mst,body.operator .mrow .mst.inprog,body.operator .mrow .mst.done{font-size:16px;font-weight:650;color:#3b2a1a;margin-top:8px;background:none}
body.operator .mrow .mst .sub{font-weight:500;color:#7a6a5a}
body.operator .mob-sec.mday{background:transparent;color:#7a6a5a;border:none;border-top:none;padding:14px 16px 2px;margin:0;text-transform:none;font-size:14px;font-weight:700}
body.operator .mob-sec.mday span{background:#efe6da;color:#3b2a1a}
body.operator .mob-tabs{position:fixed;z-index:30;left:50%;bottom:0;transform:translateX(-50%);width:min(560px,100%);
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:unset;background:#fffdf9;border-top:1px solid #eadfd3;border-bottom:none;
  padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -6px 18px rgba(59,42,26,.05)}
body.operator .mob-tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;padding:8px 0 10px;
  border:none;border-bottom:none;border-radius:0;background:transparent;color:#7a6a5a;font-size:11px;font-weight:650;position:relative}
body.operator .mob-tabs button.on{color:#3b2a1a;border-bottom-color:transparent}
body.operator .mob-tabs .mic{display:grid;place-items:center;width:28px;height:24px}
body.operator .toast{bottom:calc(78px + env(safe-area-inset-bottom));z-index:40}
body.operator .mob-menu{padding:12px 0 8px}
body.operator .mob-more{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:calc(100% - 32px);margin:0 16px 10px;min-height:56px;
  padding:12px 14px;border-radius:16px;background:#fffdf9;border:1px solid #eadfd3;text-align:left;font-weight:700}
body.operator .mob-more small{color:#7a6a5a;font-weight:500}
body.operator .mob-more.incbtn{color:#9a3412}
body.operator .op-photo{display:flex;align-items:center;justify-content:center;gap:8px;width:calc(100% - 32px);margin:-4px 16px 14px;min-height:48px;
  border-radius:14px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;font-weight:700}
body.operator button.viewphotos,button.viewphotos{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:14px;font-weight:750;background:#fffdf9;color:#3b2a1a;border:1px solid #8a5a2b}
body.operator .mactions button.viewphotos{width:100%}
body.operator .mob-list button.viewphotos{width:calc(100% - 32px);margin:0 16px 10px}
button.sm-btn.viewphotos{min-height:44px;width:auto;margin:0 8px 8px 0}
button.viewphotos svg{width:22px;height:22px;display:block}
.pgal{position:fixed;inset:0;z-index:80;background:#f6f1ea;color:#2b2118;display:flex;flex-direction:column;overflow:auto}
.pgal[hidden]{display:none !important}
.pgal-bar{display:flex;align-items:center;gap:4px;position:sticky;top:0;background:#f6f1ea;padding:calc(8px + env(safe-area-inset-top)) 8px 8px;z-index:1}
.pgal-bar .mob-title{font-size:22px;font-weight:800;letter-spacing:-.02em}
.pgal-bar .mob-sub{color:#7a6a5a;font-size:13px}
.pgal-x{min-width:44px;min-height:44px;border:none;background:transparent;color:#3b2a1a;display:inline-flex;align-items:center;justify-content:center;padding:0}
.pgal-x svg{width:22px;height:22px}
.pgal-body{padding:4px 16px 28px}
.pgal-ret{margin:0 0 12px;color:#5c4e42;font-size:14px}
.pgal .pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pgal .pth{display:block;width:100%;padding:0;border:1px solid #eadfd3;background:#efe6da;border-radius:14px;overflow:hidden;aspect-ratio:1;cursor:zoom-in}
.pgal .pth img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.pgal .pth.perr{display:grid;place-items:center;padding:8px;font-size:13px;color:#7a6a5a}
.pgal [data-cloudexport]{width:100%;min-height:48px;margin:0 0 12px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;font-weight:700;border-radius:12px}
.pgal .pview{background:#3b2a1a}
.pgal .pview .px{color:#f6f1ea;min-width:44px;min-height:44px}
.pgal .pview .pcap{color:#eadccb}
[data-photo-grid]{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 12px}
[data-photo-grid] .pth{display:block;width:100%;padding:0;border:1px solid #eadfd3;background:#efe6da;border-radius:12px;overflow:hidden;aspect-ratio:1;cursor:zoom-in}
[data-photo-grid] .pth img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
[data-photo-grid] .pth.perr{display:grid;place-items:center;padding:8px;font-size:12px;color:#7a6a5a;cursor:default}
.pview{touch-action:none;z-index:1000}
.pview .pnav{position:absolute;top:50%;transform:translateY(-50%);min-width:48px;min-height:48px;border:none;border-radius:24px;background:rgba(255,255,255,.16);color:#fff;font-size:28px;line-height:1;cursor:pointer}
.pview .pp{left:8px}
.pview .pn{right:8px}
.pview .px{z-index:2;min-width:44px;min-height:44px}
.jc-pane [data-photo-grid],.mcard [data-photo-grid]{margin-top:8px}
@media(min-width:700px){[data-photo-grid]{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}
body.operator .det-body{padding:8px 16px 12px}
body.operator .typepill{display:inline-block;background:#8a5a2b;color:#fff;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:6px;padding:4px 8px}
body.operator .det-lot{font-size:34px;line-height:1.1;margin:10px 0 4px;letter-spacing:-.03em}
body.operator .det-addr{margin:0 0 8px;font-size:16px;color:#3b2a1a}
body.operator .det-facts{margin:8px 0 12px}
body.operator .det-facts>div{padding:12px 0;border-top:1px solid #eadfd3}
body.operator .det-facts dt{font-size:13px;color:#7a6a5a;font-weight:600}
body.operator .det-facts dd{margin:2px 0 0;font-size:18px;font-weight:750}
body.operator .det-facts .scope dd{font-size:16px;font-weight:550;white-space:pre-wrap}
body.operator .mcard{background:#fffdf9;border:1px solid #eadfd3;border-radius:16px;margin:0 0 10px;padding:12px 14px}
body.operator .mnote{min-height:48px;border-radius:12px;background:#fffdf9;border:1px solid #eadfd3;color:#3b2a1a;font-weight:700}
body.operator .mactions{display:flex;flex-direction:column;gap:10px;padding:8px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#f6f1ea 28%)}
body.operator .mbtn,body.operator a.mbtn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;border-radius:14px;font-size:18px;font-weight:750;text-decoration:none;box-sizing:border-box}
body.operator .mbtn.start,body.operator #emailph.mbtn{background:#8a5a2b;border-color:#8a5a2b;color:#fff}
body.operator .mbtn.start:disabled{opacity:.55}
body.operator .mbtn.complete{background:#3b2a1a;border-color:#3b2a1a;color:#fff}
body.operator a.mbtn.outline,body.operator .mbtn.outline{background:#fffdf9;color:#3b2a1a;border:1px solid #eadfd3}
body.operator a.mcard.mbtn{margin:0;padding:0 14px}
body.operator .donebar{padding:12px;border-radius:14px;background:#fffdf9;border:1px solid #eadfd3}
body.operator #newquote{width:100%;min-height:48px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;border-radius:12px}

/* Guided quote: three steps, same fields and ids */
dialog.jobcard:has(.qw){max-width:520px;background:#f6f1ea}
.qw{background:#f6f1ea;color:#2b2118}
.qw .jc-top,.qw .jc-top.q-quote{background:#3b2a1a;color:#f6f1ea;border:none}
.qw .jc-top .jc-x{color:#f6f1ea}
.qw .jc-no{font-size:22px}
.qw .qw-body{background:#f6f1ea}
.qw-steps{display:flex;gap:8px;margin:0 0 8px}
.qw-phase{flex:1;font-size:13px;font-weight:700;color:#7a6a5a}
.qw-phase.on,.qw-phase.done{color:#3b2a1a}
.qw-phase b{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#efe6da;margin-right:4px;font-size:12px}
.qw-phase.on b,.qw-phase.done b{background:#8a5a2b;color:#fff}
.qw-bar{height:4px;background:#efe6da;border-radius:4px;margin:0 0 14px;overflow:hidden}
.qw-bar>span{display:block;height:100%;background:#8a5a2b}
.qw-native{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.qw-types{display:grid;gap:8px;margin:8px 0}
.qw-type{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:10px 14px;border-radius:14px;border:1px solid #eadfd3;background:#fffdf9;font-weight:750;text-align:left}
.qw-type.on{border-color:#8a5a2b;background:#fbf6ef}
.qw-tick{width:22px;height:22px;border-radius:50%;border:2px solid #c8b8a6;flex:none;box-sizing:border-box}
.qw-type.on .qw-tick{border-color:#8a5a2b;background:#8a5a2b radial-gradient(circle,#fff 0 3px,transparent 3.5px)}
.qw-hours input{font-size:28px;font-weight:800;min-height:56px}
.qw-presets{display:flex;flex-direction:column;gap:8px}
.qw-preset{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid #eadfd3;background:#fffdf9;min-height:52px}
.qw-preset.on,.qw-preset:has(input:checked){border-color:#8a5a2b;background:#fbf6ef}
.qw-preset input{width:22px;height:22px;margin-top:2px;flex:none}
.qw-preset b{display:block}
.qw-preset small{display:block;color:#7a6a5a;font-weight:500}
.qw-labh{margin:16px 0 8px}
.qw-yn{display:grid;grid-template-columns:1fr 1fr;background:#efe6da;border-radius:12px;padding:4px;gap:4px}
.qw-ynbtn{min-height:44px;border:none;background:transparent;border-radius:10px;font-weight:750;color:#5c4e42}
.qw-ynbtn.on{background:#fffdf9;color:#2b2118}
.qw-extra{margin:8px 0;background:#fffdf9;border:1px solid #eadfd3;border-radius:12px;padding:8px 12px}
.qw-extra summary{min-height:44px;display:flex;align-items:center;font-weight:700;cursor:pointer}
.qw .jc-foot{display:flex;flex-wrap:wrap;gap:8px;background:#f6f1ea;border:none}
.qw .jc-foot #qwnext,.qw .jc-foot #qwaccept{order:1;flex:1 1 100%;min-height:52px;border-radius:12px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;font-size:17px}
.qw .jc-foot #qwsave{order:2;flex:1 1 100%;min-height:44px;background:transparent;border:none;color:#7a6a5a}
.qw .jc-foot #qwback{order:3;min-height:44px}
.qw input,.qw select,.qw textarea{border-color:#eadfd3;border-radius:12px;background:#fff}
@media (max-width:760px){
  .qw .jc-foot{position:sticky;bottom:0}
  dialog.jobcard:has(.qw){width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0}
}


/* ---- Quotes wizard (Nov 2026) */
.qw .qw-body{padding:12px 16px}.qw-steps{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.qw-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:#eef1f5;color:#445}
.qw-dot.on{background:var(--q-quote);color:#fff}.qw-dot.done{background:#3cb371;color:#fff}
.qw-line{flex:1;height:2px;background:#dde2ea;min-width:12px;max-width:40px}
.qw-pane label{display:block;margin:10px 0}.qw-sum{background:#fff8ef;border:1px solid #f0d9a8;border-radius:10px;padding:12px}
.qw-line-row,.qw-total{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed #f0d9a8}
.qw-total{border-bottom:0;font-size:18px;margin-top:6px}
.row.gap{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

.qw-presets{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.qw-preset{padding:6px 8px;border:1px solid var(--sm-line);border-radius:8px;background:#fff}
.qw-builder{margin-top:10px;padding:8px;border:1px dashed #cfd8e3;border-radius:8px}
.qw-machrate{border:1px solid var(--sm-line);border-radius:8px;padding:8px 10px;margin:8px 0}
.qw-machrate legend{font-weight:600;padding:0 4px}
.cloudret{margin:8px 16px;padding:8px 10px;border:1px solid var(--sm-line);border-radius:8px;background:#fff}

/* Team chat and job chat. Cream page, coffee bubbles, caramel send. */
.nav-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#8a5a2b;color:#fff;font-size:11px;font-weight:750;line-height:1}
.nav-badge[hidden]{display:none !important}
.sm-nav .nav-badge{margin-left:auto}
body.operator .mob-tabs .nav-badge{position:absolute;top:4px;right:4px}
.jc-tabs .nav-badge,.job-switch .nav-badge{margin-left:6px}
.chat-screen{display:flex;flex-direction:column;min-height:0;height:calc(100dvh - 150px);background:#f6f1ea;color:#2b2118;overflow:hidden}
.chat-head,.chat-compose,.chat-pending{flex:0 0 auto}
.sm-main .chat-screen{height:calc(100dvh - 130px)}
body.operator .mob:has(.chat-screen){padding-bottom:0}
body.operator .chat-screen{height:calc(100dvh - 64px - 78px - env(safe-area-inset-bottom))}
body.operator .job-chat .chat-screen{height:calc(100dvh - 168px - env(safe-area-inset-bottom))}
.jc-pane[data-pane="chat"] .chat-screen{height:min(62vh,560px)}
.chat-head{padding:8px 16px 4px}
.chat-head h2{margin:0;font-size:22px;letter-spacing:-.02em}
.chat-head p{margin:2px 0 0;color:#7a6a5a;font-size:14px}
.chat-log{flex:1 1 auto;overflow-y:auto;padding:8px 12px 12px;display:flex;flex-direction:column;gap:8px;-webkit-overflow-scrolling:touch}
.chat-log>:first-child{margin-top:auto}
.chat-empty{color:#7a6a5a;text-align:center;margin:28px 16px}
.chat-msg{max-width:min(86%,420px);background:#fffdf9;border:1px solid #eadfd3;border-radius:16px 16px 16px 6px;padding:8px 12px 10px}
.chat-msg.mine{align-self:flex-end;background:#3b2a1a;color:#f6f1ea;border-color:#3b2a1a;border-radius:16px 16px 6px 16px}
.chat-meta{font-size:12px;color:#7a6a5a;margin-bottom:2px}
.chat-msg.mine .chat-meta{color:#e7c59a}
.chat-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.35}
.chat-pic{display:block;margin-top:6px;padding:0;border:none;background:transparent;border-radius:12px;overflow:hidden;max-width:220px}
.chat-pic img{display:block;width:100%;max-height:180px;object-fit:cover;border-radius:12px;background:#efe6da}
.chat-del{margin-top:4px;border:none;background:transparent;color:#8a5a2b;font-size:13px;padding:4px 0;min-height:32px}
.chat-msg.mine .chat-del{color:#e7c59a}
.chat-pending{display:flex;align-items:center;gap:8px;padding:6px 12px}
.chat-pending[hidden]{display:none !important}
.chat-pending img{width:48px;height:48px;object-fit:cover;border-radius:8px}
.chat-clear{min-height:36px;background:#efe6da;border-color:#eadfd3}
.chat-compose{display:flex;gap:8px;align-items:flex-end;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#fffdf9;border-top:1px solid #eadfd3}
.chat-compose textarea{flex:1;font-size:16px;border-radius:12px;border:1px solid #eadfd3;padding:10px 12px;min-height:44px;max-height:120px;resize:none;background:#fff;color:#2b2118}
.chat-send,.chat-attach{min-width:52px;min-height:44px;border-radius:12px}
.chat-send{background:#8a5a2b;border-color:#8a5a2b;color:#fff;font-weight:750}
.chat-attach{background:#efe6da;border-color:#eadfd3;color:#3b2a1a;font-size:22px;font-weight:700}
.chat-denied{padding:24px 16px}
.chat-denied p{color:#5c4e42}
.job-chat[hidden],.det-body[hidden],.mactions[hidden]{display:none !important}
.job-switch{display:flex;gap:8px;padding:8px 16px 0}
.job-switch button{flex:1;border:none;border-radius:999px;background:#efe6da;min-height:44px;font-weight:750;color:#5c4e42}
.job-switch button.on{background:#3b2a1a;color:#f6f1ea}
.job-switch button.on .nav-badge{background:#e7c59a;color:#3b2a1a}
.chat-view{position:fixed;inset:0;z-index:90;background:#3b2a1a;display:flex;flex-direction:column;align-items:center;justify-content:center}
.chat-view img{max-width:100%;max-height:calc(100dvh - 72px);object-fit:contain}
.chat-view-x{position:absolute;top:8px;left:8px;color:#f6f1ea;background:transparent;border:none;min-height:44px;font-weight:700}
@media (max-width:760px){
  dialog.jobcard .jc-pane[data-pane="chat"] .chat-screen{height:calc(100dvh - 210px)}
  .chat-compose{padding-bottom:calc(8px + env(safe-area-inset-bottom))}
}
.invitef{display:grid;gap:10px;margin:0 0 14px}
.invitef h2{margin:0;font-size:18px}
.invite-note{margin:0 0 12px}
.inviterow{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;background:#fff;border:1px solid var(--sm-line);border-radius:8px;padding:12px;margin:0 0 8px}
.inviteacts{display:flex;gap:6px;flex-wrap:wrap}
.invite-link{font-size:12px;word-break:break-all;color:var(--sm-mut);margin:6px 0 0;user-select:all}
.invite-who{margin:0 0 4px}
@media (max-width:760px){
  .inviterow{flex-direction:column}
  .inviteacts{width:100%}
  .inviteacts button{flex:1;min-height:44px}
}

/* Compliance: fleet registration / COI, and admin-only policies. */
.comp-help{color:#5c4e42;font-size:14px;line-height:1.4;margin:0 0 12px}
.comp-list{display:grid;gap:10px;max-width:720px}
.comp-card{background:#fffdf9;border:1px solid #eadfd3;border-radius:16px;padding:12px 14px}
.comp-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.comp-top b{font-size:18px;letter-spacing:-.02em}
.comp-lines{display:grid;gap:6px;margin-top:8px}
.comp-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.comp-line .lbl{min-width:58px;color:#7a6a5a;font-weight:750}
.comp-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.comp-add{margin-left:auto}
.comp-form{display:grid;gap:10px;max-width:560px}
.comp-form h2{margin:0;font-size:22px}
.comp-form label{color:#5c4e42;font-weight:650}
.comp-check{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:750}
.comp-check input{width:22px;height:22px}
.comp-banner{margin:8px 0 12px}
body.operator .comp-list{padding:0 16px 12px}
body.operator .comp-help.pad-note{padding:4px 16px 8px}
body.operator .comp-banner{margin:8px 16px 12px}
.ps-sec{margin:18px 0 0;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#8a7564}
.ps-row{border:0;margin:0;padding:10px 0;border-top:1px solid #eadfd3;display:grid;gap:6px}
.ps-row legend{font-weight:750;padding:0}
.ps-crit{display:inline-block;margin-left:8px;font-size:11px;font-weight:750;letter-spacing:0;text-transform:none;color:#7d1313}
.ps-choices{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.ps-choices label{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #eadfd3;border-radius:12px;background:#fff;font-weight:650}
.ps-choices input{position:absolute;opacity:0;inset:0}
.ps-choices label:has(input:checked){background:#3b2a1a;color:#f6f1ea;border-color:#3b2a1a}
.ps-fail:has(input:checked){background:#7d1313;border-color:#7d1313}
.ps-note input{min-height:44px}
/* Optimise order. Cream sheet, coffee type, caramel approve. Addresses only. */
.route-open{min-height:44px;font-weight:750}
body.admin .mdisp .route-open{display:block;width:calc(100% - 24px);margin:10px 12px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;border-radius:12px}
.route-ov{position:fixed;inset:0;z-index:80;background:#f6f1ea;color:#2b2118;overflow:auto;display:flex;justify-content:center}
.route-sheet{width:min(520px,100%);padding:8px 16px calc(28px + env(safe-area-inset-bottom))}
.route-top{display:flex;align-items:flex-start;gap:8px;position:sticky;top:0;background:#f6f1ea;padding:8px 0 12px;z-index:1}
.route-top h2{margin:0;font-size:28px;letter-spacing:-.03em;line-height:1.1}
.route-x{min-width:44px;min-height:44px;border:none;background:transparent;color:#3b2a1a;font-size:22px;padding:0}
.route-pick{display:grid;gap:10px;background:#fffdf9;border:1px solid #eadfd3;border-radius:16px;padding:12px}
.route-pick label{color:#5c4e42;font-weight:650}
.route-pick input,.route-pick select{min-height:48px;border-radius:12px;border:1px solid #eadfd3;background:#fff;color:#2b2118}
.route-return{display:flex;align-items:center;gap:10px;min-height:44px;color:#2b2118;font-weight:700}
.route-return input{width:22px;height:22px;min-height:0}
.route-go,.route-approve{min-height:52px;border-radius:14px;background:#8a5a2b;border-color:#8a5a2b;color:#fff;font-weight:750;font-size:17px}
.route-reject{min-height:48px;border-radius:14px;background:transparent;border:1px solid #eadfd3;color:#3b2a1a;font-weight:700}
.route-actions{display:grid;gap:8px;margin-top:8px}
.route-kicker{margin:16px 0 8px;font-weight:800;letter-spacing:-.02em}
.route-depot{display:flex;flex-direction:column;margin:4px 0;font-size:15px}
.route-depot span{color:#7a6a5a;font-size:13px}
.route-leg{margin:0 8px 0 22px;padding:2px 0 2px 12px;border-left:2px solid #e7c59a;color:#5c4e42;font-size:14px}
.route-stop{display:grid;grid-template-columns:44px 1fr auto;gap:8px;align-items:center;background:#fffdf9;border:1px solid #eadfd3;border-radius:16px;padding:8px;margin:6px 0}
.route-stop.dragging{opacity:.45}
.route-handle{min-width:44px;min-height:44px;border:none;border-radius:12px;background:#efe6da;color:#3b2a1a;font-weight:800;touch-action:none}
.route-stop-main b{display:block;font-size:16px}
.route-nudges{display:grid;gap:4px}
.route-nudge{min-width:44px;min-height:36px;border-radius:10px;border:1px solid #eadfd3;background:#fffdf9;color:#3b2a1a;font-weight:800}
.route-totals{background:#fffdf9;border:1px solid #eadfd3;border-radius:16px;padding:12px;margin:12px 0;display:grid;gap:8px}
.route-totals div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.route-totals span{color:#7a6a5a}
.route-totals b{font-size:18px}
.route-save{color:#3f6b45;font-weight:750;margin:0}
.route-note{color:#7a6a5a;font-size:14px;margin:4px 0}
.route-warn,.route-error{background:#fff6ea;border:1px solid #e0a050;border-radius:12px;padding:10px 12px;color:#6b3a12}
.route-skip{color:#5c4e42;font-size:14px}
.run-stop{display:inline-block;background:#efe6da;color:#3b2a1a;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:3px 8px;margin:0 0 6px}
.run-note{margin:8px 0 0;color:#5c4e42;font-weight:700}
/* CallUp wordmark. Organisation name sits under it. No picture logo shipped. */
.brand,body.admin .brand,body.operator .brand{flex:0 0 auto;flex-direction:column;align-items:flex-start;gap:1px;line-height:1.05;min-width:0}
.brand .wordmark,body.admin .brand .wordmark,body.operator .brand .wordmark{color:#f7f4ef!important;font-weight:800;font-size:20px;letter-spacing:-0.045em;line-height:1}
.brand .wordmark span{color:#f0b429!important;font-weight:800;display:inline!important}
.brand .orgline,body.admin .brand .orgline,body.operator .brand .orgline{display:flex!important;align-items:center;gap:4px;overflow:visible;white-space:nowrap;font-size:11px;font-weight:650;letter-spacing:0;color:#e7d7b8!important}
.orglogo{height:14px;width:auto;display:block;border-radius:2px}
.login-brand{display:grid;gap:2px;justify-items:start;margin-bottom:2px}
.login-brand .wordmark{color:#142033;font-size:36px;font-weight:800;letter-spacing:-0.045em;line-height:1}
.login-brand .wordmark span{color:#c47a12}
.login-brand .orgline{display:flex;align-items:center;gap:6px;color:#5c4e42;font-size:15px;font-weight:700;margin:4px 0 0}
.login .powered{margin-top:4px}
.powered{font-size:12px;color:#7a6a5a;margin:0}
.mob-brandline{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.mob-brandline .wordmark{color:#142033;font-size:15px;font-weight:800;letter-spacing:-0.04em}
.mob-brandline .wordmark span{color:#c47a12}
.mob-brandline .orgbit{font-size:12px;font-weight:650;color:#5c4e42}
.det-powered{margin:4px 0 8px}
@media (max-width:760px){
  .top,body.admin .top,body.operator .top{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-areas:"mark search out" "org org org";
    align-items:center;column-gap:8px;row-gap:1px}
  .brand,body.admin .brand,body.operator .brand{display:contents}
  .brand .wordmark{grid-area:mark}
  .brand .orgline,body.admin .brand .orgline,body.operator .brand .orgline{grid-area:org;padding:0 0 2px}
  .top .gsearch{grid-area:search;margin:0;max-width:none;min-width:0;flex:none}
  .top #logout{grid-area:out;margin-left:0}
}

.leave-banner,.leave-warn{background:#fff6ea;border:1px solid #e0a050;border-radius:10px;padding:8px 12px;margin:0 0 12px;color:#6b3a12}
.leave-banner p{margin:2px 0}
.leave-kicker{font-weight:750}
.leave-chip{display:block;font-size:11px;color:#6b3a12;background:#fff6ea;border-radius:3px;padding:2px 4px;margin:0 0 3px}
.dchip.on-leave,.mdc.on-leave{box-shadow:inset 0 0 0 2px #c47b2b}
.lv-wrap{padding:0 16px 28px;max-width:720px}
.lv-form,.lv-card{background:#fff;border:1px solid #eadfd3;border-radius:12px;padding:12px;margin:0 0 12px}
.lv-wrap h2,.lv-form h2{font-size:18px;margin:12px 0 8px}
.lv-form label,.lv-decide label{display:block;margin:8px 0;font-weight:650}
.lv-form input,.lv-form select,.lv-form textarea,.lv-decide textarea{display:block;width:100%;margin-top:4px;font:16px/1.35 system-ui,sans-serif}
.lv-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lv-card .qpill{display:inline-block;margin-top:4px}
.lv-cert-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.lv-cert-row .sm-btn{min-height:44px}

/* Reimbursement claims */
.rc-owed { width: 100%; border-collapse: collapse; margin: 6px 0; }
.rc-owed th, .rc-owed td { text-align: left; padding: 6px 8px; border-bottom: 1px solid rgba(0,0,0,.08); }
.rc-filter { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0 10px; }
.rc-paidwith { border: 0; padding: 0; margin: 4px 0; display: flex; gap: 14px; flex-wrap: wrap; }
.rc-paidwith legend { font-weight: 600; margin-bottom: 4px; }
.rc-decide .btns { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }

/* Service due pop-up (in-app; no push notifications in this build) */
dialog.comp-alert { max-width: 420px; border: 0; border-radius: 12px; padding: 18px; box-shadow: 0 10px 30px rgba(0,0,0,.25); }
dialog.comp-alert::backdrop { background: rgba(0,0,0,.35); }
dialog.comp-alert h2 { margin: 0 0 8px; font-size: 1.1rem; }
