
:root{color-scheme:light;
  --bg:#FFFFFF;--surface:#FFFFFF;--surface-2:#E5EAE8;--ink:#101A1D;--ink-2:#4B5A5F;--ink-3:#7D8C90;--line:#D5DDDB;
  --eps:#E0AE00;--eps-soft:#FFF4CC;--thames:#1565D8;--thames-soft:#DDE9FB;--hot:#E3170A;--hotb:#9B1010;
  --go:#1D7A4C;--go-soft:#DDF1E6;--wait:#A36A0E;--wait-soft:#FBF0DC;--btn:#101A1D;--btn-ink:#FFFFFF;
  --f:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;--fc:"Barlow Condensed","Barlow",system-ui,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
.linkb{background:none;border:0;padding:4px 0;color:var(--thames);font-weight:700;font-size:15px;text-decoration:underline;cursor:pointer;text-align:left}
body{background:var(--bg);color:var(--ink);font-family:var(--f);font-size:16px;line-height:1.4;font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{margin:0;text-wrap:balance}
:focus-visible{outline:3px solid var(--thames);outline-offset:2px}
.wrap{max-width:520px;margin:0 auto;padding-inline:16px;padding-block:0 110px}
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--bg);display:flex;align-items:center;gap:10px;padding:14px 0 10px;border-bottom:1px solid var(--line);margin-bottom:14px}
.bar h1{font-family:var(--fc);font-size:26px;font-weight:700;letter-spacing:.01em;margin-right:auto}
.bar .sub{font-size:13px;color:var(--ink-2);font-weight:600}
.back{background:none;border:0;font-weight:700;font-size:16px;padding:6px 8px 6px 0;cursor:pointer;color:var(--ink)}
.demo{font-size:12px;color:var(--ink-3);border:1px dashed var(--line);border-radius:6px;padding:3px 8px;background:none;cursor:pointer}
.note{font-size:13px;color:var(--ink-2);background:var(--surface-2);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--surface-2);padding:4px;border-radius:12px;margin-bottom:14px}
.tabs button{border:0;background:none;padding:10px 6px;border-radius:9px;font-weight:700;font-size:15px;cursor:pointer;color:var(--ink-2)}
.tabs button[aria-current="page"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.drow{display:flex;justify-content:space-between;gap:10px;align-items:center;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--co);border-radius:12px;padding:12px 14px;text-align:left;width:100%;cursor:pointer}
.drow>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.drow span{font-size:13.5px;color:var(--ink-2)}
.dr{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.list{display:flex;flex-direction:column;gap:12px}
.job{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;text-align:left;cursor:pointer;width:100%;border-left:6px solid var(--co)}
.job:hover{border-color:var(--ink-3);border-left-color:var(--co)}
.co>span:first-child{background:var(--co);color:var(--coi);padding:3px 8px;border-radius:5px}
.co{font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);display:flex;align-items:center;gap:8px;justify-content:space-between}
.eta{font-family:var(--fc);font-size:30px;font-weight:700;line-height:1.05}
.desc{font-size:19px;font-weight:600}
.etarow{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}
.when{font-size:13.5px;color:var(--ink-2);font-weight:600;margin-top:-2px}
.cd{font-size:13px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}
.cd.soon{background:var(--wait-soft);color:var(--wait)}.cd.late{background:var(--hotb);color:#fff}
.job.hot{border:3px solid var(--hotb);border-left:6px solid var(--hotb);box-shadow:0 0 0 1px var(--hotb)}.job.hot:hover{border-color:var(--hotb)}.job.hot .cd{background:var(--hotb);color:#fff}
.addr{color:var(--ink-2);line-height:1.35}
.price{font-weight:600}
.client{display:flex;gap:6px;flex-wrap:wrap;font-weight:600}
.client span{color:var(--ink-2);font-weight:500}
.pill{font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:none;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}
.pill.go{background:var(--go-soft);color:var(--go)}.pill.wait{background:var(--wait-soft);color:var(--wait)}.pill.act{background:var(--thames-soft);color:var(--thames)}
.done .eta,.done .desc{color:var(--ink-3)}
.sec{font-size:12.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:18px 0 8px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.sq{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;color:var(--ink)}
.sq b{font-size:20px;line-height:1}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:15px 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-weight:700;font-size:17px;cursor:pointer;text-align:center}
.btn.main{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}
.btn.go{background:var(--go);color:#fff;border-color:var(--go)}
.btn:disabled{opacity:.45;cursor:default}
.two{display:flex;gap:8px}.two:empty{display:none}.two .btn{flex:1}
.btn.sm2{padding:11px 10px;font-size:15px}
.btns{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.dock{position:fixed;left:0;right:0;bottom:0;background:linear-gradient(to top,var(--bg) 70%,transparent);padding:18px 16px calc(14px + env(safe-area-inset-bottom,0px));z-index:9}
.dock .in{max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:8px}
.lines{display:flex;flex-direction:column}
.line{display:grid;grid-template-columns:1fr 110px 36px;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.line:first-child{border-top:0}
.line input{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:10px;min-width:0;width:100%}
.line .amt{text-align:right}
.x{background:none;border:0;font-size:20px;color:var(--ink-3);cursor:pointer}
.tot{display:flex;justify-content:space-between;font-weight:700;font-size:20px;padding-top:10px;border-top:2px solid var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chipb{border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:8px 12px;font-weight:600;font-size:14px;cursor:pointer}
.line2{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}
.ln{display:flex;justify-content:space-between;align-items:center;gap:8px}
.cname{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 10px;font-weight:700}.ln b{font-size:16px}
.lc{display:flex;align-items:center;gap:10px}
.qty{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.qty button{border:0;background:var(--surface-2);width:36px;height:40px;font-size:20px;font-weight:700;cursor:pointer}
.qty span{min-width:30px;text-align:center;font-weight:700}
.pr{display:flex;align-items:center;gap:4px;flex:1;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:0 10px;min-width:0}
.pr input{border:0;background:none;padding:10px 0;width:100%;min-width:0;outline:none}
.la{font-weight:700;min-width:74px;text-align:right}
textarea{font:inherit}
.rpt{background:#f5f6f7;border-radius:10px;padding:10px 12px}.rpt small{font-size:10.5px;letter-spacing:.08em;color:#888;font-weight:700}.rpt p{margin:4px 0 0;white-space:pre-wrap;color:#222;font-size:13px}
.lbl{font-size:13px;font-weight:600;color:var(--ink-2)}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--surface-2);padding:4px;border-radius:12px}
.seg button{border:0;background:none;padding:10px;border-radius:9px;font-weight:700;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.msg{background:#E9E9EB;color:#111;border-radius:18px 18px 18px 4px;padding:10px 14px;font-size:15px;white-space:pre-wrap;max-width:92%}
.msg a{color:#0A64D8}
.field{display:flex;flex-direction:column;gap:5px}
.field input,.field textarea{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 12px;width:100%}
.log{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--ink-2)}
.log div{display:flex;gap:10px}.log time{min-width:44px;color:var(--ink-3);font-weight:600}
.big{font-family:var(--fc);font-size:44px;font-weight:700;text-align:center;line-height:1}
.center{text-align:center;color:var(--ink-2)}
.pay3{display:flex;flex-direction:column;gap:10px}
.pay3 .btn{justify-content:flex-start;padding:16px}
.pay3 .btn small{display:block;font-weight:500;font-size:13px;color:var(--ink-2);margin-top:2px}
.pay3 .btn span{text-align:left}
.ico{width:38px;height:38px;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;font-weight:800;flex:none}
/* customer phone preview */
.scrim>div{width:min(380px,100%)}
.scrim{position:fixed;inset:0;background:rgba(5,12,14,.55);z-index:30;display:grid;place-items:center;padding:16px}
.phone{width:min(380px,100%);max-height:88vh;overflow:auto;background:#fff;color:#16181a;border-radius:28px;border:8px solid #111;box-shadow:0 20px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;color-scheme:light}
.phone .top{padding:10px 14px;font-size:12px;color:#666;background:#f4f4f5;text-align:center;border-bottom:1px solid #e5e5e5}
.phone .hd{padding:18px 18px 12px;color:var(--pi);background:var(--pc)}
.phone .hd b{font-size:19px;display:block}.phone .hd span{font-size:13px;opacity:.85}
.phone .bd{padding:16px 18px;display:flex;flex-direction:column;gap:10px;font-size:15px}
.phone .it{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:6px 0}
.phone .tt{display:flex;justify-content:space-between;font-weight:700;font-size:18px;padding-top:4px}
.phone .pb{border:0;border-radius:12px;padding:14px;font-weight:700;font-size:16px;cursor:pointer;background:var(--pc);color:var(--pi)}
.phone .pb.alt{background:#fff;color:#16181a;border:1px solid #ccc}
.doc{padding:18px;display:flex;flex-direction:column;gap:12px;font-size:13.5px}
.dtop{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.logo{font-weight:800;font-size:15px;padding:10px 12px;border-radius:8px;letter-spacing:.02em}
.dtitle{text-align:right;display:flex;flex-direction:column}.dtitle b{font-size:22px;letter-spacing:.06em}.dtitle span{color:#555;font-weight:600}
.from,.meta>div,.pi{display:flex;flex-direction:column;gap:1px;font-size:12.5px;color:#444}.from b{color:#111;font-size:14px}
.meta{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #eee;padding-top:10px}.meta small{font-size:10.5px;letter-spacing:.08em;color:#888;font-weight:700;margin-top:4px}.meta b{color:#111}
.jobd{font-weight:700;font-size:14.5px}
.doc table.itbl{width:100%;border-collapse:collapse;font-size:12.5px}.doc table.itbl th{text-align:left;font-size:10.5px;letter-spacing:.06em;color:#888;text-transform:uppercase;border-bottom:1px solid #ddd;padding:4px 0}.doc table.itbl td{padding:6px 0;border-bottom:1px solid #f0f0f0}.doc table.itbl th:not(:first-child),.doc table.itbl td:not(:first-child){text-align:right;padding-left:8px}
.sums{display:flex;flex-direction:column;gap:3px;align-self:flex-end;min-width:60%}.sums>div{display:flex;justify-content:space-between;gap:16px;color:#444}.sums .tt{color:#111;font-weight:800;font-size:16px;border-top:2px solid #111;padding-top:5px}
.pi{background:#f5f6f7;border-radius:10px;padding:12px}.pi b{color:#111}
.phone .sm{font-size:12.5px;color:#666}
.phone .ok{background:#e6f5ec;color:#16633d;border-radius:12px;padding:12px;font-weight:700;text-align:center}
.closep{margin-top:12px;background:#fff;color:#111;border:0;border-radius:999px;padding:10px 20px;font-weight:700;cursor:pointer}
.toast{position:fixed;left:50%;top:calc(14px + env(safe-area-inset-top,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:11px 18px;border-radius:12px;z-index:50;font-weight:600;font-size:15px;max-width:calc(100% - 32px);box-shadow:0 6px 20px rgba(0,0,0,.2)}
@media (prefers-reduced-motion:no-preference){.toast{animation:tin .2s ease-out}@keyframes tin{from{transform:translate(-50%,-10px);opacity:0}}}

html,body{margin:0;min-height:100%}
body{padding-top:env(safe-area-inset-top,0px)}
img{max-width:100%}
.login{max-width:420px;margin:0 auto;padding:40px 16px;display:flex;flex-direction:column;gap:14px}
.login img{width:230px}
.login h1{font-family:var(--fc);font-size:30px}
.err{color:var(--hotb);font-weight:600;font-size:14px}
.form{display:flex;flex-direction:column;gap:12px}
.form .field input,.form .field select,.form .field textarea{font-size:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
select{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 12px;width:100%}
.field select{background:var(--bg)}
.who{font-size:13px;color:var(--ink-2);font-weight:600}
.staff{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.staff:last-child{border-bottom:0}
.staff div{display:flex;flex-direction:column}
.staff span{font-size:13.5px;color:var(--ink-2)}
.mini{padding:8px 12px;font-size:14px;width:auto}
.spin{padding:40px 0;text-align:center;color:var(--ink-3)}
.eng-h{font-family:var(--fc);font-size:20px;margin:18px 0 8px}
a.btn{text-decoration:none;color:inherit}a.btn.main{color:var(--btn-ink)}

.brandbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0 4px}
.brandbar img{height:34px;width:auto;max-width:70%}
.card,.job,.drow{box-shadow:0 1px 3px rgba(16,26,29,.06)}
.tabs{background:#EEF1F3}

.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ph{position:relative;display:flex;flex-direction:column;gap:4px}
.ph img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:block;background:var(--surface-2)}
.phs{font-size:12px;display:flex;gap:5px;align-items:center;color:var(--ink-2);font-weight:600}
.phs input{width:18px;height:18px;margin:0}
.phx{position:absolute;top:4px;right:4px;background:rgba(255,255,255,.92);border:0;border-radius:14px;min-width:28px;height:28px;font-size:17px;font-weight:700;line-height:1;cursor:pointer;padding:0 6px}
.phx.arm{background:var(--hotb);color:#fff;font-size:12px}
.phadd{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border:2px dashed var(--line);border-radius:10px;font-weight:700;color:var(--ink-2);cursor:pointer;text-align:center;padding:6px;font-size:14px}

.ack{font-size:13.5px;font-weight:700;padding:5px 10px;border-radius:8px;align-self:flex-start;margin-top:2px}
.ack.ok{background:var(--go-soft);color:var(--go)}
.ack.mid{background:var(--wait-soft);color:var(--wait)}
.ack.no{background:#FDECEA;color:var(--hotb)}
.ack.new{background:var(--go);color:#fff}

.rfb{border:1px solid var(--line);background:var(--surface);border-radius:999px;width:34px;height:34px;font-size:18px;font-weight:700;cursor:pointer;line-height:1;color:var(--ink)}
.rfb.spin{animation:rot .6s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}
.ptr{position:fixed;top:calc(8px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%,-40px);opacity:0;background:var(--ink);color:#fff;padding:7px 14px;border-radius:999px;font-weight:700;font-size:14px;z-index:60;transition:opacity .15s;pointer-events:none}

.wrow{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.wrow:last-child{border-bottom:0}
.wrow>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.wrow span{font-size:13px;color:var(--ink-2)}
.stat{gap:2px;padding:12px}.stat b{font-size:20px}
.tabs button{font-size:14px;padding:10px 4px}

.brow{display:flex;justify-content:space-between;gap:10px}.brow.tot2{border-top:2px solid var(--ink);padding-top:6px;margin-top:4px;font-size:17px}

.tabs{display:flex!important;flex-wrap:wrap;overflow:visible}.tabs button{flex:1 1 auto;white-space:nowrap;padding:9px 10px}
.seg4{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#EEF1F3;padding:4px;border-radius:12px}
.seg4 button{border:0;background:none;padding:9px 2px;border-radius:9px;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--ink-2)}
.seg4 button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.grid3>div{display:flex;flex-direction:column}.grid3 b{font-size:16px}
.barx{height:6px;background:var(--surface-2);border-radius:3px;margin:2px 0 8px;overflow:hidden}.barx i{display:block;height:100%;background:var(--thames);border-radius:3px}
.pill.late2{background:#FDECEA;color:var(--hotb)}
.loc{font-size:13.5px;font-weight:700;padding:5px 10px;border-radius:8px;align-self:flex-start;margin-top:2px;background:#E8F1FD;color:#0B4FA8}
.loc.old{background:#F1F2F4;color:var(--ink-2)}
.loc.none{background:#F1F2F4;color:var(--ink-3);font-weight:600}
.loccard{gap:8px;border:1.5px solid #1565D8;margin-bottom:12px}
.tloc{gap:10px}
.trow{display:flex;justify-content:space-between;align-items:center;gap:10px}
.trow div{display:flex;flex-direction:column}
.trow span{font-size:13.5px;color:#0B4FA8;font-weight:600}
.trow.old span{color:var(--ink-3)}
.rep{font-size:13px;font-weight:700;padding:4px 10px;border-radius:8px;align-self:flex-start;background:#F3EEFF;color:#5B2DB3}
.hrep{font-size:13px;color:var(--ink-2);font-weight:400;margin-top:2px;white-space:normal}
.card.hint{gap:8px;border:1.5px solid #5B2DB3;margin:4px 0 8px}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:#EEF1F3;padding:4px;border-radius:12px}
.seg3 button{border:0;background:none;padding:11px 2px;border-radius:9px;font-weight:800;font-size:14px;cursor:pointer;color:var(--ink-2)}
.seg3 button[aria-pressed="true"]{background:var(--ink);color:#fff}
.stat.good b{color:var(--go)}.stat.bad b{color:var(--hotb)}
.matwarn{border:1.5px solid var(--hotb)}
.daynav{display:flex;align-items:center;gap:8px;margin:4px 0 8px}.daynav .btn{width:48px;flex:none;font-size:22px;padding:0}
.daynav label{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px}
.daynav label b{font-size:17px}.daynav input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.schedgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;align-items:start}
.scol{gap:8px}.shead{display:flex;justify-content:space-between;align-items:baseline}.shead b{font-size:17px}
.st{font-size:13.5px;font-weight:700;padding:5px 10px;border-radius:8px;align-self:flex-start}
.st.busy{background:#FDF1DC;color:#8A5300}.st.way{background:#E8F1FD;color:#0B4FA8}.st.next{background:#F1F2F4;color:var(--ink-2)}.st.free{background:var(--go-soft);color:var(--go)}
.slist{display:flex;flex-direction:column;gap:6px}
.srow{display:flex;align-items:center;gap:10px;text-align:left;width:100%;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--co);border-radius:10px;padding:9px 10px;cursor:pointer}
.srow .t{font-weight:800;font-size:14px;min-width:66px}.srow .b{flex:1;display:flex;flex-direction:column;min-width:0}.srow .b span{font-size:13px;color:var(--ink-2)}
.srow .pill{font-size:11px}.srow.done{opacity:.55}
.loc.site{background:#FDF1DC;color:#8A5300}
.trow span.lbl{font-size:12px;color:var(--ink-3);font-weight:500}
.pills{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px}
.mrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.mrow>div{display:flex;flex-direction:column;gap:2px;min-width:0}.mrow span{font-size:13px;color:var(--ink-2)}
.mrow .btn.mini{flex:none}
.tcount{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--thames);color:#fff;font-size:11px;line-height:18px;text-align:center}
.tcount.od{background:var(--hot)}
.tstrip{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:#EEF4FD;border:1.5px solid var(--thames);color:var(--ink);border-radius:12px;padding:11px 14px;margin:0 0 12px;font-size:15px;cursor:pointer}
.tstrip span{margin-left:auto;color:var(--thames);font-weight:700}.tstrip.od{background:#FDECEA;border-color:var(--hotb)}.tstrip.od span{color:var(--hotb)}
.tlist{display:flex;flex-direction:column;gap:8px}
.tcard{display:flex;gap:10px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}
.tcard.od{border-color:var(--hotb);border-width:1.5px}.tcard.done{opacity:.6}.tcard.done .tb b{text-decoration:line-through}
.tchk{flex:none;width:30px;height:30px;border-radius:50%;border:2px solid var(--ink-3);background:#fff;font-weight:900;color:#fff;cursor:pointer;font-size:16px}
.tcard.done .tchk{background:var(--go);border-color:var(--go)}
.tb{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.tb b{font-size:16px}.tb span{font-size:13px;color:var(--ink-2)}.tb p{margin:2px 0;font-size:14px;white-space:pre-wrap}
.odt{color:var(--hotb);font-weight:700}
.tph{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.tph img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.tick2{display:flex;gap:8px;align-items:center;font-size:15px}
.ebar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:4px 0 10px}
.egrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px;align-items:start}
.egrp{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 1px 3px rgba(16,26,29,.06)}
.egrp.hot{border:2px solid var(--hotb)}.egrp.late{border:2px solid var(--hot)}
.ehead{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;background:none;border:0;padding:14px;text-align:left;cursor:pointer}
.el{display:flex;flex-direction:column;gap:3px;min-width:0}.el b{font-size:18px}.est{font-size:14px;font-weight:700;color:var(--ink-2)}
.er{display:flex;flex-direction:column;align-items:center;min-width:44px}.er b{font-size:22px;line-height:1}.chev{font-size:12px;color:var(--ink-3);margin-top:2px}
.ebody{padding:0 10px 12px}
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.tbox{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;cursor:pointer;min-height:110px;box-shadow:0 1px 3px rgba(16,26,29,.06)}
.tbox.od{border:2px solid var(--hotb)}
.tbh{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px}.tbh b{font-size:16px}
.tcount.zero{background:var(--surface-2);color:var(--ink-3)}
.tprev{font-size:13px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tprev i{font-style:normal;color:var(--ink-3)}
.findc{gap:8px;border:1.5px solid #5B2DB3;margin-bottom:12px}
.findres{display:flex;flex-direction:column;gap:6px}
.jchip{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#EEF4FD;border:1px solid var(--thames);border-radius:10px;padding:8px 10px;font-weight:700;font-size:14px}
.crow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.crow:first-child{border-top:0;padding-top:2px}
.crow>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.crow span{font-size:13.5px;color:var(--ink-2)}
.cbtn{display:flex;gap:6px;align-items:center;flex:none}
.rtag{font-weight:700;font-size:12px!important;align-self:flex-start;padding:1px 8px;border-radius:999px;background:var(--surface-2)}
.r-tenant{background:#E8F1FD;color:#0B4FA8!important}.r-landlord{background:#F3EEFF;color:#5B2DB3!important}.r-agent{background:#FDF1DC;color:#8A5300!important}
.xc{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;font-size:14px}
.xnew{gap:4px;border:1.5px dashed var(--line);margin:6px 0}
.tochip[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
/* stop iPhone zooming in: 16px inputs, no double-tap zoom, nothing wider than the screen */
html{-webkit-text-size-adjust:100%;touch-action:manipulation}
button,a,.ehead,.job,.drow,.srow,.tbox{touch-action:manipulation}
input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important}
.egrid{grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr))}
.schedgrid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.tgrid{grid-template-columns:repeat(auto-fill,minmax(min(160px,45%),1fr))}
/* never let a card push the page wider than the phone (iPhone kept the page stuck wider) */
.wrap{width:100%;box-sizing:border-box}
.egrid>*,.egrp,.ebody,.list>*,.job,.tlist>*,.schedgrid>*{min-width:0;max-width:100%}
.ebody .job{box-sizing:border-box}
.co{flex-wrap:wrap;min-width:0}.co>span:first-child{white-space:normal;min-width:0;overflow-wrap:anywhere}
.job .desc,.job .addr,.job .client,.drow b,.drow span{overflow-wrap:anywhere}
@media (max-width:700px){.egrid,.schedgrid{grid-template-columns:minmax(0,1fr)}}
/* hard stop: nothing inside the app may widen the page (iPhone home-screen apps get stuck wider otherwise) */
html,body{width:100%}
.wrap{overflow-x:clip}
.egrp *,.job *{max-width:100%}
.pills{flex-shrink:1;min-width:0}
/* completed › unpaid rows */
.urow{gap:8px;border-left:5px solid var(--co,var(--line));padding:12px 14px}
.ubody{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;background:none;border:0;padding:0;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer}
.ubody>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.ubody span{font-size:13.5px;color:var(--ink-2)}
.ubody .dr{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0;text-align:right}
.ubtn{display:flex;gap:8px;flex-wrap:wrap}
/* contact edit */
.cedit{display:flex;flex-direction:column;gap:8px;padding:8px 0 10px;border-bottom:1px solid var(--line)}
