:root{
  color-scheme:light dark;
  /* Zapro brand (Nov 2026 rebrand): blue #028FDC, green #77D549. No navy. */
  --brand:#028FDC; --brand-green:#77D549;
  --accent:#028FDC; --accent-ink:#0272B0; --accent-soft:#E3F3FC; --focus:#028FDC;
  --ink:#111418; --muted:#5F6670; --line:#E3E6EA; --bg:#F5F6F8; --card:#fff;
  --amber:#F5B000; --amber-d:#A87900; --green:#77D549; --green-d:#3B8A17; --red:#D63B3B; --blue:#0277B8;
  --go:#77D549; --go-ink:#0B2200; --clock-on-ink:#0B2200;
  --clock-off:linear-gradient(160deg,#16A3EE,#027DC2); --clock-on:linear-gradient(160deg,#86DE5A,#62C335); --hero:linear-gradient(135deg,#0A9AE8,#0279BE);
  --chrome:#fff; --chrome-ink:#111418; --chrome2:#EEF1F4; --chrome-line:#E3E6EA; --chrome-muted:#5F6670;
  --zwhite-rgb:255,255,255; --zink-rgb:17,20,24;
  --r:14px; --shadow:0 1px 2px rgba(17,20,24,.05),0 4px 14px rgba(17,20,24,.05);
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Inter,Helvetica,Arial,sans-serif;
  color:var(--ink); background:var(--bg); -webkit-text-size-adjust:100%;
  --zbFFF:#FFF;
  --zlE9EDF2:#E9EDF2;
  --zbEEF2F7:#EEF2F7;
  --zf424242:#424242;
  --zbFFF3D6:#FFF3D6;
  --zf7A5600:#7A5600;
  --zbE8F5E2:#E8F5E2;
  --zf2B6B0B:#2B6B0B;
  --zbFDE7E7:#FDE7E7;
  --zf9E2323:#9E2323;
  --zf414141:#414141;
  --zlCBD7DD:#CBD7DD;
  --zbE6EAF0:#E6EAF0;
  --zf6B4B00:#6B4B00;
  --zlF3D58C:#F3D58C;
  --zbE8EDF3:#E8EDF3;
  --zbE3E9F1:#E3E9F1;
  --zbE0F2D7:#E0F2D7;
  --zbDDE3EA:#DDE3EA;
  --zlFFF:#FFF;
  --zlE1E6ED:#E1E6ED;
  --zbE5E3DF:#E5E3DF;
  --zf565656:#565656;
  --zf000:#000;
  --zlE6E6E6:#E6E6E6;
  --zf6A7686:#6A7686;
  --zbE3F4FD:#E3F4FD;
  --zf176C9A:#176C9A;
  --zlCCE6BF:#CCE6BF;
  --zlF5C4C4:#F5C4C4;
  --zlF5DE9F:#F5DE9F;
  --zlC3E5F7:#C3E5F7;
  --zbF4F7FA:#F4F7FA;
  --zbFFF6DB:#FFF6DB;
  --zlF1DFA6:#F1DFA6;
  --zbFFF1F0:#FFF1F0;
  --zlF5C2BE:#F5C2BE;
  --zf7A2E27:#7A2E27;
  --zf5FC232:#5FC232;
  --zbFFF1D6:#FFF1D6;
  --zlF3C56B:#F3C56B;
  --zf5A3A00:#5A3A00;
  --zf7A4A00:#7A4A00;
  --zl9AABB5:#9AABB5;
  --zbFFF4D1:#FFF4D1;
  --zbEDE7FB:#EDE7FB;
  --zf4B2A9A:#4B2A9A;
  --zbF6F8FB:#F6F8FB;
  --zlC9D6DD:#C9D6DD;
  --zfB45309:#B45309;
  --zbFFF8E1:#FFF8E1;
  --zbFFF0C2:#FFF0C2;
  --zbFFE7B0:#FFE7B0;
  --zf6B4A00:#6B4A00;
  --zbFFF8E8:#FFF8E8;
  --zf8A6500:#8A6500;
  --zbFFF8E6:#FFF8E6;
  --zlF3D27A:#F3D27A;
  --zf8A5A00:#8A5A00;
  --zbE3F3FC:#E3F3FC;
  --zf1A6C99:#1A6C99;
  --zlF1B8B8:#F1B8B8;
  --zf028FDC:#028FDC;
  --zfD99100:#D99100;
  --zb97A8B2:#97A8B2;
  --zf214F0B:#214F0B;
  --zbFFF6DC:#FFF6DC;
  --zf5C4300:#5C4300;
  --zbFFE9C2:#FFE9C2;
  --zf6B4300:#6B4300;
  --zbDDF3F1:#DDF3F1;
  --zf0D5F57:#0D5F57;
  --zbF5F7FA:#F5F7FA;
  --zbF4F6F9:#F4F6F9;
  --zf5A6676:#5A6676;
  --zlE3E8EE:#E3E8EE;
  --zbFFF1C9:#FFF1C9;
  --zlF2DE9F:#F2DE9F;
  --zbF1F6FF:#F1F6FF;
  --zbDCF1FC:#DCF1FC;
  --zf465B66:#465B66;
  --zbF7F9FC:#F7F9FC;
  --zlEEF1F5:#EEF1F5;
  --zb5AC1FA:#5AC1FA;
  --zlDADCE0:#DADCE0;
  --zbF8FAFC:#F8FAFC;
  --zbF5F8FC:#F5F8FC;
  --zbE9EDF3:#E9EDF3;
  --zlB9CCD6:#B9CCD6;
  --zl9FB7C4:#9FB7C4;
  --zbEEF4FC:#EEF4FC;
  --zbF2F5F9:#F2F5F9;
  --zbF2F4F8:#F2F4F8;
  --zlB9C7CF:#B9C7CF;
  --zlECEFF3:#ECEFF3;
  --zbEEF3FB:#EEF3FB;
  --zlF2F4F7:#F2F4F7;
  --zbF0F2F5:#F0F2F5;
  --zf313131:#313131;
  --zbE6ECF4:#E6ECF4;
  --zf255A0B:#255A0B;
  --zbFFFBF0:#FFFBF0;
  --zbF3F8FF:#F3F8FF;
  --zbFFF4D6:#FFF4D6;
  --zbE9F6E3:#E9F6E3;
  --zbFDE9E9:#FDE9E9;
  --zlCFEBFA:#CFEBFA;
  --zbAAB8C0:#AAB8C0;
  --zbE4F3DD:#E4F3DD;
  --zbCBD7DD:#CBD7DD;
  --zf7A5A00:#7A5A00;
  --zf6B7280:#6B7280;
  --zbE7EBF0:#E7EBF0;
  --zbEEF1F5:#EEF1F5;
  --zbFFEFC2:#FFEFC2;
  --zbFFE08A:#FFE08A;
  --zbFAFBFC:#FAFBFC;
  --zbF1F5FB:#F1F5FB;
  --zf5B6878:#5B6878;
  --zbA3B4BD:#A3B4BD;
  --zlF5DFA6:#F5DFA6;
  --zbEEF4FD:#EEF4FD;
  --zlCFEAF8:#CFEAF8;
  --zl9AAEB9:#9AAEB9;
  --zlC4D1D8:#C4D1D8;
  --zbF6F8FA:#F6F8FA;
  --zbEAF7F0:#EAF7F0;
  --zlD2EAC7:#D2EAC7;
  --zbFFFCF2:#FFFCF2;
  --zbF2FBF5:#F2FBF5;
  --zbF1F3F6:#F1F3F6;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
/* v37: overflow-x on BOTH html and body made body its own scroll box, so the sticky header scrolled away (Shia, Nov 10).
   The page (viewport) keeps hiding sideways overflow; body clips without becoming a scroller. */
html{overflow-x:hidden;scroll-padding-top:calc(var(--toph,64px) + 8px)}
body{overflow-x:clip}
body{padding-bottom:calc(76px + var(--safe-b))}
body.no-tabs{padding-bottom:0}
img{max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--blue)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:-999px;top:0;background:var(--zbFFF);padding:8px 12px;z-index:99}
.skip:focus{left:8px}
.muted{color:var(--muted)} .small{font-size:.85rem} .center{text-align:center}
.hidden,[hidden]{display:none!important}

/* header */
.top{position:sticky;top:0;z-index:20;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:calc(10px + var(--safe-t)) 16px 10px;min-height:56px}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.25rem;letter-spacing:.2px}
.brand img{border-radius:8px}
.brand small{font-weight:600;font-size:.9rem;color:#AFC8D6;border-left:1px solid #424242;padding-left:9px;margin-left:2px}
.who{background:var(--chrome2);border:1px solid #3B3B3B;color:#fff;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;max-width:46vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

main{max-width:760px;margin:0 auto;padding:14px 14px 24px;outline:none}
h1{font-size:1.5rem;margin:.2em 0 .3em} h2{font-size:1.12rem;margin:1.2em 0 .5em} h3{font-size:1rem;margin:.2em 0}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:16px;margin:0 0 12px;border:1px solid var(--zlE9EDF2)}
.row{display:flex;align-items:center;gap:10px}
.row.between{justify-content:space-between}
.grow{flex:1;min-width:0}
.stack>*+*{margin-top:10px}
.pill{display:inline-flex;align-items:center;gap:5px;background:var(--zbEEF2F7);color:var(--zf424242);border-radius:999px;padding:3px 9px;font-size:.78rem;font-weight:600;white-space:nowrap}
.pill.warn{background:var(--zbFFF3D6);color:var(--zf7A5600)}.pill.ok{background:var(--zbE8F5E2);color:var(--zf2B6B0B)}.pill.bad{background:var(--zbFDE7E7);color:var(--zf9E2323)}.pill.live{background:var(--zbE8F5E2);color:var(--zf2B6B0B)}
.pill.live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.3}}

/* forms */
label.f{display:block;font-size:.84rem;font-weight:600;color:var(--zf414141);margin:0 0 5px}
.field{margin-bottom:12px}
input[type=text],input[type=email],input[type=number],input[type=tel],input[type=password],input[type=date],input[type=datetime-local],input[type=search],select,textarea{
  width:100%;min-height:48px;border:1.5px solid var(--zlCBD7DD);border-radius:11px;padding:10px 12px;background:var(--zbFFF);font-size:16px}
textarea{min-height:76px;resize:vertical}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#5B6878 50%),linear-gradient(135deg,#5B6878 50%,transparent 50%);background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(2,143,220,.22)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 16px;border-radius:12px;border:1.5px solid var(--zlCBD7DD);background:var(--zbFFF);font-weight:700;cursor:pointer;text-decoration:none;color:var(--ink);font-size:1rem}
.btn:active{transform:translateY(1px)}
.btn.block{display:flex;width:100%}
.btn.big{min-height:62px;font-size:1.2rem;border-radius:16px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.go{background:var(--go);border-color:var(--go);color:var(--go-ink)}
.btn.stop{background:var(--red);border-color:var(--red);color:#fff}
.btn.amber{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.ghost{background:transparent;border-color:transparent;color:var(--blue);min-height:40px;padding:6px 10px}
.btn.sm{min-height:38px;padding:6px 12px;font-size:.9rem;border-radius:10px}
.btn[disabled]{opacity:.55;pointer-events:none}
.btn-row{display:flex;gap:10px}.btn-row>*{flex:1}
.seg{display:flex;background:var(--zbE6EAF0);border-radius:11px;padding:3px;gap:3px}
.seg button{flex:1;border:0;background:transparent;border-radius:9px;padding:9px 6px;font-weight:700;font-size:.88rem;color:var(--zf414141);cursor:pointer}
.seg button[aria-pressed=true]{background:var(--zbFFF);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* login */
.login{min-height:calc(100vh - 120px);display:flex;align-items:center;justify-content:center}
.login-card{width:100%;max-width:380px;background:var(--zbFFF);border-radius:20px;box-shadow:var(--shadow);padding:26px 22px;text-align:center}
.login-card h1{margin-top:10px}
.login-card form{text-align:left;margin-top:18px}
.pin{letter-spacing:.4em;font-size:1.3rem!important;text-align:center}
.err{color:var(--red);font-weight:600;min-height:1.3em;font-size:.92rem}

/* clock */
.clock-card{border-radius:18px;padding:18px;margin-bottom:12px;color:#fff;background:var(--clock-off);box-shadow:var(--shadow)}
.clock-card.on{background:var(--clock-on);color:var(--clock-on-ink)}
.clock-card .lbl{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;opacity:.85}
.timer{font-size:3rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.5px;line-height:1.1;margin:6px 0 4px}
.clock-card .job{font-size:1.1rem;font-weight:700}
.clock-card .sub{opacity:.9;font-size:.92rem;margin-top:2px}
.clock-card .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.clock-card .pill{background:rgba(var(--zwhite-rgb),.16);color:#fff}
.outbox{background:var(--zbFFF3D6);color:var(--zf6B4B00);border:1px solid var(--zlF3D58C);border-radius:12px;padding:10px 12px;font-weight:600;font-size:.9rem;margin-bottom:12px}

/* lists */
.list{list-style:none;margin:0;padding:0}
.list>li{padding:12px 0;border-top:1px solid var(--line)}
.list>li:first-child{border-top:0}
.list.tap>li{cursor:pointer}
.ent{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:start}
.ent .t{font-weight:700}
.ent .h{font-weight:800;font-variant-numeric:tabular-nums;text-align:right}
.ent .d{color:var(--muted);font-size:.86rem;grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.ent a{font-size:.86rem}
.day-h{display:flex;justify-content:space-between;align-items:baseline;margin:16px 2px 6px;font-weight:800}
.day-h span:last-child{font-variant-numeric:tabular-nums}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.kpi{background:var(--zbFFF);border-radius:var(--r);padding:12px;box-shadow:var(--shadow);border:1px solid var(--zlE9EDF2)}
.kpi b{display:block;font-size:1.5rem;font-variant-numeric:tabular-nums}
.kpi span{font-size:.78rem;color:var(--muted);font-weight:600}
.bar{height:8px;border-radius:99px;background:var(--zbE8EDF3);overflow:hidden;margin-top:6px}
.bar i{display:block;height:100%;background:var(--accent)}
.sum-row{padding:10px 0;border-top:1px solid var(--line)}
.sum-row:first-child{border-top:0}
.person{display:flex;gap:12px;align-items:flex-start}
.avatar{width:42px;height:42px;border-radius:50%;background:var(--zbE3E9F1);color:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}
.avatar.on{background:var(--zbE0F2D7);color:var(--zf2B6B0B);box-shadow:0 0 0 2px var(--green)}
.empty{text-align:center;color:var(--muted);padding:22px 10px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.toolbar .grow{min-width:120px}
.range{display:flex;align-items:center;gap:6px}
.range b{flex:1;text-align:center;font-size:.95rem}
.filters{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:10px 0}
.filters select{min-height:42px;font-size:15px;padding:6px 28px 6px 10px;background-position:calc(100% - 15px) 17px,calc(100% - 10px) 17px}

/* gallery */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.grid button{padding:0;border:0;background:var(--zbDDE3EA);aspect-ratio:1;border-radius:10px;overflow:hidden;cursor:pointer;position:relative}
.grid img{width:100%;height:100%;object-fit:cover;display:block}
.grid .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.65));color:#fff;font-size:.7rem;padding:12px 5px 4px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shoot{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 10px}
.shoot .wide{grid-column:1/-1}
.filebtn{position:relative;overflow:hidden}
.filebtn input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.preview{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}
.preview img,.preview video{aspect-ratio:1;object-fit:cover;border-radius:8px;width:100%;display:block;background:#242424}
.pv{position:relative;border-radius:8px;overflow:hidden}
.pv .prog{position:absolute;left:4px;right:4px;bottom:4px;height:5px;border-radius:3px;background:rgba(var(--zwhite-rgb),.55);display:none}
.pv .prog b{display:block;height:100%;width:0;background:#F5A623;border-radius:3px;transition:width .2s}
.pv.up .prog{display:block}.pv.ok .prog b{background:#5FC232}.pv.fail .prog b{background:#D64545}
.pv.fail{outline:3px solid #D64545;outline-offset:-3px}
.pv .dur{bottom:12px}
.play{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:rgba(0,0,0,.55);box-shadow:0 0 0 2px rgba(var(--zwhite-rgb),.85);pointer-events:none}
.play::after{content:"";position:absolute;left:13px;top:10px;border-left:11px solid var(--zlFFF);border-top:7px solid transparent;border-bottom:7px solid transparent}
.dur{position:absolute;right:5px;top:5px;background:rgba(0,0,0,.65);color:#fff;font-size:.68rem;font-weight:700;padding:1px 5px;border-radius:5px;pointer-events:none}
.pv .dur{top:auto}
.grid .vph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:#242424;font-size:1.6rem}
.lightbox video{width:100%;border-radius:10px;background:#000;max-height:62vh;display:block}
.lightbox{margin-top:34px}
.lightbox img{width:100%;border-radius:10px;background:#111;max-height:62vh;object-fit:contain}

/* map */
.map{height:320px;border-radius:var(--r);overflow:hidden;border:1px solid var(--zlE1E6ED);background:var(--zbE5E3DF);z-index:0}
.gpin{background:none;border:0}
.gpin svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
.gmap-toggle{display:flex;background:var(--zbFFF);border-radius:2px;box-shadow:0 1px 4px rgba(0,0,0,.3);overflow:hidden}
.gmap-toggle button{border:0;background:var(--zbFFF);color:var(--zf565656);font:500 13px Roboto,Arial,sans-serif;padding:0 12px;height:34px;cursor:pointer}
.gmap-toggle button.on{color:var(--zf000);font-weight:600}
.gmap-toggle button+button{border-left:1px solid var(--zlE6E6E6)}
.gmap-embed{border-radius:var(--r);overflow:hidden;border:1px solid var(--zlE1E6ED);background:var(--zbE5E3DF);margin:0 0 14px;height:240px}
.gmap-embed iframe{display:block;width:100%;height:100%;border:0}

/* tabs */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--zbFFF);border-top:1px solid var(--line);display:flex;padding:6px 6px calc(6px + var(--safe-b));box-shadow:0 -4px 16px rgba(0,0,0,.06)}
.tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;color:var(--zf6A7686);font-size:.72rem;font-weight:700;padding:6px 2px;border-radius:10px;min-height:52px;justify-content:center}
.tabs a svg{width:24px;height:24px}
.tabs a[aria-current=page]{color:var(--accent-ink);background:var(--accent-soft)}
.tabs a[aria-current=page] svg{color:var(--accent)}

/* sheet */
.sheet-wrap{position:fixed;top:0;left:0;right:0;height:100%;height:var(--vvh,100dvh);transform:translateY(var(--vvt,0px));z-index:50;display:flex;align-items:flex-end;justify-content:center;overscroll-behavior:contain}
.sheet-bg{position:absolute;inset:0;background:rgba(10,18,30,.5)}
.sheet{position:relative;background:var(--zbFFF);width:100%;max-width:560px;max-height:92vh;max-height:calc(var(--vvh,100dvh) - 10px);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scroll-padding:16px 0 24px;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + var(--safe-b));animation:up .18s ease-out}
.sheet h2{margin-top:0}
.sheet .x{position:absolute;right:10px;top:10px}
@keyframes up{from{transform:translateY(30px);opacity:.6}}
@media (min-width:700px){.sheet-wrap{align-items:center}.sheet{border-radius:20px}}

.toast{position:fixed;left:50%;bottom:calc(90px + var(--safe-b));transform:translateX(-50%) translateY(20px);background:#1E1E1E;color:#fff;padding:11px 16px;border-radius:12px;font-weight:600;font-size:.92rem;opacity:0;pointer-events:none;transition:.2s;z-index:60;max-width:92vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}
.toast.bad{background:var(--red)}

/* job section tabs */
.jobtabs{margin:0 0 12px}
.jobtabs a{flex:1;text-align:center;text-decoration:none;border-radius:9px;padding:10px 4px;font-weight:700;font-size:.86rem;color:var(--zf414141);display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}
.jobtabs a[aria-current=page]{background:var(--zbFFF);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.badge{display:inline-flex;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:.72rem;align-items:center;justify-content:center}
/* materials */
.matsum{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.matsum b{white-space:nowrap}.matsum span{flex:1;color:var(--muted);font-size:.88rem}.matsum i{font-style:normal;font-size:1.4rem;color:var(--muted)}
.shopcard{border-left:4px solid var(--amber)}
.matcounts{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.pill.info{background:var(--zbE3F4FD);color:var(--zf176C9A)}
.mats>li:first-child{border-top:0;padding-top:2px}
.mat{display:flex;flex-direction:column;gap:8px}
.mat-main{all:unset;display:flex;flex-direction:column;gap:3px;cursor:pointer;width:100%;box-sizing:border-box}
div.mat-main{cursor:default}
.mat-main .qty{font-weight:800;white-space:nowrap;margin-left:10px}
.mat-main b{font-weight:700}
.mat-act{display:flex;gap:8px;align-items:center}
.mat-act .btn{flex:1}
.usedq{color:var(--green-d)}
select.st{flex:1;width:auto;min-height:40px;padding:6px 30px 6px 12px;border-radius:999px;font-weight:700;font-size:16px;border:1.5px solid transparent;background-position:calc(100% - 18px) 17px,calc(100% - 13px) 17px}
select.st-in_stock{background-color:var(--zbE8F5E2);color:var(--zf2B6B0B);border-color:var(--zlCCE6BF)}
select.st-need_buy{background-color:var(--zbFDE7E7);color:var(--zf9E2323);border-color:var(--zlF5C4C4)}
select.st-ordered{background-color:var(--zbFFF3D6);color:var(--zf7A5600);border-color:var(--zlF5DE9F)}
select.st-received{background-color:var(--zbE3F4FD);color:var(--zf176C9A);border-color:var(--zlC3E5F7)}
.stseg{flex-wrap:wrap}.stseg button{flex:1 1 40%}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.chip{border:1.5px solid var(--zlCBD7DD);background:var(--zbFFF);border-radius:999px;padding:8px 12px;font-weight:600;font-size:.88rem;cursor:pointer;color:var(--ink)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.totals{background:var(--zbF4F7FA);border-radius:10px;padding:8px 10px;margin:0 0 10px;line-height:1.5}
.shop-job{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);padding-bottom:8px;margin-bottom:4px;border-bottom:2px solid var(--line)}
.small-row{margin:0 0 12px}

@media (min-width:700px){
  main{padding:22px}
  .tabs{max-width:760px;margin:0 auto;border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0}
  .grid{grid-template-columns:repeat(5,1fr)}
}
@media (max-width:360px){.filters{grid-template-columns:1fr 1fr}.kpi b{font-size:1.25rem}.timer{font-size:2.5rem}}

/* access codes */
.jobtabs a{font-size:.8rem;padding:10px 3px;gap:3px}
.codes>li{display:flex;flex-direction:column;gap:6px}
.code-label{font-size:1.02rem}
.code-loc{color:var(--zf414141)}
.code-line{display:flex;align-items:center;gap:8px}
.code-val{flex:1;min-width:0;font:800 2rem/1.15 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;background:var(--zbFFF6DB);border:1px solid var(--zlF1DFA6);border-radius:12px;padding:10px 14px;color:var(--ink);overflow-wrap:anywhere;user-select:all;-webkit-user-select:all}
.code-val.shown{color:var(--ink)}
.code-val.long{font-size:1.35rem;letter-spacing:.02em}
.code-label{font-size:1.05rem}
.copybtn{flex:none;min-height:52px;padding:0 14px;font-weight:700}
.offline-note{background:var(--zbFFF1F0);border-color:var(--zlF5C2BE);color:var(--zf7A2E27);margin-bottom:10px}
.code-foot{gap:8px;align-items:center}
.code-foot .btn.sm{min-height:34px;padding:4px 10px}
.code-in{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.1rem}
.codelog>li{padding:9px 0}
.codelog .row{gap:8px;align-items:flex-start}
.nowrap{white-space:nowrap}

/* ---------- plans & docs ---------- */
.jobtabs{flex-wrap:wrap}
.jobtabs a{flex:1 1 auto}
.docs-head{margin:4px 0 2px}
.doc-cat{font-size:.95rem;margin:16px 2px 6px}
.list.docs{padding:2px 12px}
.docrow{display:flex;align-items:center;gap:6px}
.doc-open{flex:1;min-width:0;display:flex;align-items:center;gap:12px;background:none;border:0;padding:4px 0;text-align:left;color:var(--ink);font:inherit;cursor:pointer}
.doc-txt{display:flex;flex-direction:column;min-width:0;gap:2px}
.doc-name{font-size:1rem;line-height:1.25;word-break:break-word}
.doc-acts{display:flex;gap:2px;flex:0 0 auto}
.doc-acts .btn.sm{min-width:40px;min-height:40px;padding:4px 8px;font-size:1.05rem}
.dbadge{flex:0 0 auto;width:42px;height:50px;border-radius:7px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:7px;font-size:.66rem;font-weight:800;letter-spacing:.02em;color:#fff;background:#6A7686;position:relative}
.dbadge::before{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 11px 11px 0;border-color:transparent var(--bg) rgba(255,255,255,.45) transparent}
.dbadge.pdf{background:#D64545}.dbadge.img{background:#028FDC}.dbadge.cad{background:#1B1B1B}.dbadge.xls{background:#3D7B1E}.dbadge.doc{background:#2B7197}
.list.upl>li{padding:12px 0}
.uplrow input.upl-name{flex:1;min-width:0}
.uplrow select.upl-cat{flex:0 0 42%;min-width:0}
.uplrow .prog{display:none;height:6px;border-radius:3px;background:var(--zbE6EAF0);margin-top:8px;overflow:hidden}
.uplrow .prog b{display:block;height:100%;width:0;background:#F5A623;transition:width .2s}
.uplrow.up .prog{display:block}.uplrow.ok .prog b{background:#5FC232}.uplrow.fail .prog b{background:#D64545}
.uplrow.fail .upl-st{color:#D64545;font-weight:700}.uplrow.ok .upl-st{color:var(--zf5FC232);font-weight:800}
body.dv-open{overflow:hidden}
.docview{position:fixed;inset:0;z-index:60;background:#212121;display:flex;flex-direction:column;color:#fff}
.dv-top{display:flex;align-items:center;gap:6px;padding:calc(8px + var(--safe-t)) 8px 8px;background:var(--accent);flex:0 0 auto}
.dv-title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.dv-title b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.98rem}
.dv-title span{font-size:.75rem;color:#B8C8D1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-btn{flex:0 0 auto;min-width:44px;height:44px;border-radius:10px;border:1px solid #3B3B3B;background:var(--chrome2);color:#fff;font-size:1.15rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;padding:0 8px}
.dv-scroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overscroll-behavior:contain}
.dv-pages{padding:8px;box-sizing:content-box;margin:0 auto}
.dv-page{position:relative;width:100%;background:var(--zbFFF);margin:0 0 10px;box-shadow:0 2px 10px rgba(0,0,0,.35)}
.dv-page canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.dv-img{display:block;width:100%;height:auto;background:var(--zbFFF);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.dv-msg{color:#DCE6EC;text-align:center;padding:40px 16px}
.dv-msg a{color:#fff}
.dv-zoom{position:absolute;right:12px;bottom:calc(14px + var(--safe-b));display:flex;align-items:center;gap:6px;background:rgba(var(--zink-rgb),.85);border-radius:14px;padding:5px;font-weight:700;font-size:.85rem}
.dv-zoom span{min-width:46px;text-align:center}

/* ---------- v6: checklist, paid lunch, employee section ---------- */
.tabs.t7{padding-left:2px;padding-right:2px}
.tabs.t7 a{font-size:.62rem;padding:6px 0;letter-spacing:-.01em;min-width:0}
.tabs.t7 a svg{width:22px;height:22px}
.tabs a{position:relative}
.tbadge{position:absolute;top:2px;right:calc(50% - 22px);min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--red);color:#fff;font-size:.66rem;font-style:normal;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--zbFFF)}
.jobtabs{display:grid;grid-template-columns:repeat(3,1fr)}
.jobtabs a{font-size:.8rem;padding:10px 2px}
.clock-card.lunch{background:linear-gradient(160deg,#E89A00,#B86E00)}
.btn.lunchbtn{background:var(--zbFFF1D6);border-color:var(--zlF3C56B);color:var(--zf5A3A00)}
.pill.lunch{background:var(--zbFFF1D6);color:var(--zf7A4A00)}
.clbtn{justify-content:space-between}
.cl-head .cl-prog{font-size:1.1rem}
.cl-bar{margin-top:8px}
.cl-list li.cl-item{display:flex;gap:12px;align-items:flex-start;padding:12px 2px}
.cl-box{flex:0 0 auto;width:34px;height:34px;border-radius:9px;border:2px solid var(--zl9AABB5);background:var(--zbFFF);color:#fff;font-size:1.25rem;font-weight:900;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:1px}
.cl-item.done .cl-box{background:var(--green);border-color:var(--green)}
.cl-item.done .cl-text{color:var(--muted);text-decoration:line-through;text-decoration-color:#A9B8C0}
.cl-text{font-weight:600;line-height:1.3}
.cl-who{color:var(--green-d);margin-top:3px;font-weight:600}
.cl-note{margin-top:4px;background:var(--zbF4F7FA);border-radius:8px;padding:6px 8px}
.cl-acts{display:flex;gap:4px;margin-top:6px;margin-left:-8px}
.cl-acts .btn{min-height:34px;padding:4px 8px;font-size:.8rem}
.cl-move{display:flex;flex-direction:column;gap:2px}
.cl-thumb{display:block;margin-top:6px;border:0;padding:0;background:none;cursor:pointer}
.cl-thumb img{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.sheet-img{display:block;max-width:100%;max-height:60vh;margin:8px auto;border-radius:10px}
.rb-prev{display:block;max-width:100%;max-height:220px;margin-top:8px;border-radius:10px;border:1px solid var(--line)}
.hub{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.hub-tile{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--ink);margin:0;min-height:104px}
.hub-tile .hub-ic{font-size:1.6rem;line-height:1.2}
.hub-tile b{font-size:.98rem}
.hub-tile > span:last-child{font-size:.8rem;color:var(--muted)}
.hub-tile .badge{margin-right:3px}
.job-pills{gap:6px;flex-wrap:wrap;margin-top:5px}
.rule h3{margin:0;font-size:1.08rem}
.rule-body{margin-top:6px;line-height:1.5}
.rule-body p{margin:.35em 0}
.rule-body ul,.rule-body ol{margin:.3em 0;padding-left:1.25em}
.rule-body li{margin:.2em 0}
.rule-body h4{margin:.7em 0 .2em;font-size:.95rem}
ul.tools li.tool-li{display:flex;align-items:center;gap:8px;padding:9px 0}
ul.tools li.tool-li::before{content:"🔧";font-size:.9rem}
.reqcard{background:var(--zbFFF4D1);border-color:var(--zlF3C56B)}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:10px}
.cal-h{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted)}
.cal-c{min-height:48px;border-radius:7px;background:var(--zbF4F7FA);padding:2px 3px;display:flex;flex-direction:column;gap:2px;font-size:.72rem}
.cal-c.empty{background:transparent}
.cal-c.today{box-shadow:inset 0 0 0 2px var(--accent)}
.cal-c > span{font-weight:700;color:var(--zf414141)}
.cal-w{display:inline-block;font-style:normal;font-size:.6rem;font-weight:800;border-radius:4px;padding:1px 3px;text-align:center;background:var(--zbE0F2D7);color:var(--zf2B6B0B)}
.cal-w.t-sick{background:var(--zbFDE7E7);color:var(--zf9E2323)}
.cal-w.t-unpaid{background:var(--zbE6EAF0);color:var(--zf424242)}

/* ---------- v7: weekly hours, lunch per person, who can see ---------- */
.tabs.t6{padding-left:2px;padding-right:2px}
.tabs.t6 a{font-size:.66rem;padding:6px 0;min-width:0;letter-spacing:-.01em}
.pill.vis{background:var(--zbEDE7FB);color:var(--zf4B2A9A)}
.cl-text .pill.vis,.rule h3 .pill.vis{vertical-align:middle;font-size:.72rem}
.wk-link{display:block;text-decoration:none;color:var(--ink);font-size:.92rem}
.wh-card{padding:10px 8px;overflow-x:auto}
table.wh{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.9rem}
table.wh th{font-size:.7rem;color:var(--muted);font-weight:700;text-align:right;padding:4px 4px 8px;text-transform:uppercase;letter-spacing:.02em}
table.wh th:first-child,table.wh td:first-child{text-align:left}
table.wh td{text-align:right;padding:10px 4px;border-top:1px solid var(--line);white-space:nowrap}
table.wh td.wh-name{white-space:normal;max-width:9.5em}
table.wh td.wh-name b{display:block;line-height:1.2}
table.wh td.wh-name .small{display:block;line-height:1.25;margin-top:2px}
table.wh td.wh-name .pill.live{padding:2px 4px;vertical-align:middle}
table.wh tbody tr{cursor:pointer}
table.wh tbody tr:active{background:var(--zbF6F8FB)}
table.wh .wh-paid{font-weight:800}
table.wh tfoot td{border-top:2px solid var(--zlC9D6DD);font-weight:700}
.wh-ot{color:var(--zfB45309);font-weight:800}
.kpis.k4{grid-template-columns:repeat(4,1fr);gap:6px}
.kpis.k4 .kpi{padding:9px 6px}.kpis.k4 .kpi b{font-size:1.15rem}
.wd-day{padding:10px 0;border-top:1px solid var(--line)}
.wd-day.off{opacity:.55}
.wd-ents{margin:4px 0 0;padding-left:18px;font-size:.85rem;color:var(--zf414141)}
.visf .vis-people{display:flex;flex-direction:column;gap:2px;margin-top:8px;background:var(--zbF6F8FB);border-radius:10px;padding:6px 10px}
.visf .vis-people[hidden]{display:none}
.vis-p{display:flex;align-items:center;gap:10px;padding:8px 0;font-weight:600}
.vis-p input{width:22px;height:22px;flex:none}
.vis-p span:nth-child(2){flex:1}
.visf .vis-hint{margin:6px 0 0}

/* ---------- v8: schedule ---------- */
.sw-actions{margin-bottom:12px}
.sw-actions .btn{flex:1}
.sw-card{padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch}
table.sw{border-collapse:separate;border-spacing:0;width:100%;font-size:.7rem;table-layout:fixed;min-width:510px}
table.sw th,table.sw td{border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:0;vertical-align:top;width:63px}
table.sw thead th{padding:6px 2px;font-size:.72rem;color:var(--muted);text-align:center;line-height:1.2}
table.sw thead th span{font-size:.95rem;color:var(--ink);font-weight:800}
table.sw .sw-name{position:sticky;left:0;z-index:2;background:var(--zbFFF);width:68px;border-left:0;padding:8px 6px;text-align:left;box-shadow:2px 0 4px rgba(0,0,0,.06)}
table.sw tbody .sw-name b{display:block;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.sw tbody .sw-name span{display:block;color:var(--muted);font-weight:600;font-size:.7rem}
table.sw tbody tr:last-child th,table.sw tbody tr:last-child td{border-bottom:0}
table.sw .today{background:var(--zbFFF8E1)}
table.sw thead th.today span{color:var(--accent-ink)}
.swc{display:flex;flex-direction:column;gap:3px;width:100%;min-height:62px;border:0;background:transparent;padding:4px 2px;cursor:pointer;font:inherit;color:inherit;text-align:left}
.swc:active{background:var(--zbEEF2F7)}
.sh{display:block;background:var(--zbEEF2F7);background:color-mix(in srgb,var(--c,#028FDC) 12%,var(--zbFFF));border-left:3px solid var(--c,#028FDC);border-radius:5px;padding:3px 2px 3px 3px;line-height:1.25;font-weight:600;letter-spacing:-.02em;overflow:hidden;overflow-wrap:anywhere}
.sh b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem}
.sh.warn{background:var(--zbFFF0C2);box-shadow:inset 0 0 0 1.5px #E0A100}
.off{display:block;background:repeating-linear-gradient(135deg,var(--zbFFE7B0) 0 6px,var(--zbFFF3D6) 6px 12px);color:var(--zf6B4A00);border-radius:5px;padding:3px 4px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.off.pend{background:var(--zbFFF8E8);border:1px dashed #D9A300;color:var(--zf8A6500)}
.cell-add{display:block;text-align:center;color:#A9B9C2;font-size:1.2rem;font-weight:700;padding-top:12px}
.sw-legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.78rem;color:var(--muted);margin:-2px 2px 10px}
.sw-legend span{display:inline-flex;align-items:center;gap:5px}
.sw-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.sw-warnbox{background:var(--zbFFF8E6);border-color:var(--zlF3D27A)}
.sched-warn{color:var(--zf8A5A00);font-weight:600;margin:6px 0 0}
.sched-hint{color:var(--zf2B6B0B);font-weight:600;margin:6px 0 0}
.sched-card .list>li:first-child{border-top:0}
.msh{display:flex;flex-direction:column;gap:3px}
.msh .pill{align-self:flex-start;margin-bottom:2px}
.msh-job{font-weight:700}
.msh-note{color:var(--zf424242)}
.sd-h{margin-bottom:.4em}
.off-card{background:var(--zbFFF3D6);border-color:var(--zlF3D27A);color:var(--zf6B4A00);font-weight:600}
.pill.info{background:var(--zbE3F3FC);color:var(--zf1A6C99)}
.btn.stop-o{color:var(--red);border-color:var(--zlF1B8B8)}
.dchks{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:6px 0 12px}
.dchk{position:relative}
.dchk input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.dchk span{display:block;text-align:center;border:1.5px solid var(--zlCBD7DD);border-radius:10px;padding:6px 0;font-size:.72rem;line-height:1.25;color:var(--muted)}
.dchk span b{font-size:.95rem;color:var(--ink)}
.dchk input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff}
.dchk input:checked+span b{color:#fff}
.dchk input:disabled+span{opacity:.35}
.dchk input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.wh-sched{display:block;color:var(--zf1A6C99);font-weight:600}
.wh-sched.over{color:var(--red)}
@media (min-width:700px){table.sw{font-size:.8rem} table.sw th,table.sw td{width:auto}}

/* ---------- v9: job schedule ---------- */
.sched-toggle{margin:0 0 10px}
.jm-toggle{margin:0 0 10px;max-width:220px}
.jm-toggle button{padding:6px}
.st-scheduled{--sc:var(--zf028FDC)}.st-in_progress{--sc:var(--zf5FC232)}.st-on_hold{--sc:var(--zfD99100)}.st-done{--sc:#7A8796}
.pill.jst{background:color-mix(in srgb,var(--sc) 14%,var(--zbFFF));color:color-mix(in srgb,var(--sc) 75%,var(--zf000))}
.sw-legend i.st-scheduled,.sw-legend i.st-in_progress,.sw-legend i.st-on_hold,.sw-legend i.st-done{background:var(--sc)}
.jw-card,.jm-card{padding:8px 6px}
.jw{position:relative;padding-bottom:4px}
.jw+.jw{border-top:1px solid var(--line);margin-top:2px;padding-top:2px}
.jw-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;margin-bottom:4px;position:relative;z-index:1}
.jw-head{margin-bottom:6px}
.jw-d{text-align:center;font-size:.7rem;color:var(--muted);line-height:1.2;padding:2px 0}
.jw-d span{font-size:.95rem;color:var(--ink);font-weight:800}
.jw-d.today span{color:var(--accent-ink)}
.jw-d.out span{color:#B4C1C8;font-weight:600}
.jw-m .jw-d{padding:1px 0}.jw-m .jw-d span{font-size:.78rem}
.jw-m .jw-d.today span{background:var(--accent);color:#fff;border-radius:999px;padding:0 5px}
.jw-dow{margin-bottom:0}.jw-dow div{text-align:center;font-size:.68rem;font-weight:700;color:var(--muted)}
.jw-today{position:absolute;top:0;bottom:0;background:var(--zbFFF8E1);border-radius:8px;z-index:0}
.jw-none{margin:10px 4px 6px;text-align:center}
.jbar{display:flex;flex-direction:column;gap:2px;align-items:flex-start;min-width:0;border:0;border-radius:8px;padding:5px 6px;cursor:pointer;font:inherit;text-align:left;color:#fff;background:var(--sc);box-shadow:0 1px 2px rgba(0,0,0,.15)}
.jbar.st-on_hold{background:repeating-linear-gradient(135deg,#D99100 0 8px,#C88400 8px 16px)}
.jbar.st-done{background:var(--zb97A8B2)}
.jbar.cl{border-top-left-radius:2px;border-bottom-left-radius:2px}.jbar.cr{border-top-right-radius:2px;border-bottom-right-radius:2px}
.jbar b{display:block;max-width:100%;font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jbar b span{font-weight:600;opacity:.9}
.jbar em{font-style:normal;font-size:.68rem;opacity:.95;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.jbar.cpt{padding:2px 4px;border-radius:5px;gap:1px}.jbar.cpt b{font-size:.64rem}
.jbar.cpt .cdot{width:15px;height:15px;font-size:.5rem}
.jbar:active{filter:brightness(.92)}
.cdots{display:inline-flex;gap:2px;flex-wrap:nowrap;overflow:hidden;max-width:100%;vertical-align:middle}
.cdot{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:rgba(var(--zwhite-rgb),.92);color:var(--accent);font-style:normal;font-size:.58rem;font-weight:800;flex:none}
.cdot.none{width:auto;padding:0 6px;border-radius:999px;background:rgba(var(--zwhite-rgb),.25);color:#fff;font-weight:600}
.jsched-card .cdot,.myjobs .cdot{background:var(--accent);color:#fff}
.chk-line{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-weight:600}
.chk-line input{width:22px;height:22px}
.sc-days li{padding:7px 0}
.sc-warn{margin:6px 0 0;padding-left:18px}.sc-warn li{margin:3px 0}
.myjobs li{display:flex;flex-direction:column;gap:3px}

/* ---------- v10: crew Jobs tab, job page, location-based photos ---------- */
.locline .loc{border-radius:12px;padding:10px 12px;margin:0 0 10px;font-size:.92rem;line-height:1.35}
.locline .loc.ok{background:var(--zbE8F5E2);color:var(--zf214F0B)}
.locline .loc.info{background:var(--zbE3F3FC);color:var(--zf414141)}
.locline .loc.warn{background:var(--zbFFF3D6);color:var(--zf6B4B00)}
.locline .loc .small{margin-top:2px;color:inherit;opacity:.8}
.linkbtn{background:none;border:0;padding:2px 4px;margin:0;font:inherit;font-weight:800;color:var(--blue);text-decoration:underline;cursor:pointer}
.qcap .shoot{margin-bottom:0}
.tabs.t5 a{font-size:.72rem}

/* v11: CRM + job money (owner only) */
.tabs.t8{padding-left:1px;padding-right:1px}
.tabs.t8 a{font-size:.56rem;padding:6px 0;letter-spacing:-.02em;min-width:0}
.tabs.t8 a svg{width:21px;height:21px}
.tabs.t8 .tbadge{right:calc(50% - 20px)}
.jobtabs a.jt-money{grid-column:1/-1;background:var(--zbFFF6DC);color:var(--zf5C4300)}
.jobtabs a.jt-money[aria-current=page]{background:var(--zbFFF);color:var(--ink)}
.jobtabs a.jt-money .small{font-weight:600}
.crmtabs{grid-template-columns:repeat(4,1fr)!important;display:grid}
.crmtabs a{font-size:.8rem;padding:10px 2px}
.chips.hscroll{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}
.chips.hscroll::-webkit-scrollbar{display:none}
.chips.hscroll .chip{flex:0 0 auto;padding:7px 11px}
.stage-h{display:flex;align-items:center;gap:8px;margin:16px 0 8px}
.pill.stg{font-weight:700}
.s-lead{background:var(--zbEEF2F7);color:var(--zf424242)}.s-quote_needed{background:var(--zbFFF3D6);color:var(--zf7A5600)}.s-quote_sent{background:var(--zbE3F4FD);color:var(--zf176C9A)}
.s-approved{background:var(--zbE8F5E2);color:var(--zf2B6B0B)}.s-denied{background:var(--zbFDE7E7);color:var(--zf9E2323)}.s-in_progress{background:var(--zbFFE9C2);color:var(--zf6B4300)}
.s-completed{background:var(--zbDDF3F1);color:var(--zf0D5F57)}.s-invoiced{background:var(--zbEDE7FB);color:var(--zf4B2A9A)}.s-paid{background:#5FC232;color:#fff}
.late{color:var(--red);font-weight:600}
.pos{color:var(--green-d)}.neg{color:var(--red)}
.strike{text-decoration:line-through;color:var(--muted)}
.todo-sum{border-left:4px solid var(--amber)}
.card.todo{border-left:4px solid var(--amber);padding-top:12px;padding-bottom:12px}
.card.todo.over{border-left-color:var(--red)}
.todo-ic{font-size:1.4rem;line-height:1.2}
.btn-row.wrap{flex-wrap:wrap}.btn-row.wrap>*{flex:0 0 auto}
.money-top .mt-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}
.money-top .mt-grid>div{background:var(--zbF5F7FA);border-radius:10px;padding:8px 10px}
.money-top .mt-grid span{display:block;font-size:.75rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.money-top .mt-grid b{font-size:1.2rem}
.mrows{margin-top:8px}
.mrow{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid var(--line);width:100%;background:none;border-left:0;border-right:0;border-bottom:0;font:inherit;color:inherit;text-align:left}
button.mrow{cursor:pointer}button.mrow span::after{content:" ✎";color:var(--muted);font-size:.8em}
.mrow.tot{font-weight:700}
.mrow span{color:var(--zf414141)}
.qline{display:grid;grid-template-columns:4.5em 1fr auto;gap:6px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.qline input[data-k=d]{grid-column:1/-1}
.qline input{min-width:0;padding:9px 8px}
.list.ev li{padding:8px 0}
.printdoc header img{display:block}
.pd-to{margin:16px 0}
.pd-t{width:100%;border-collapse:collapse;font-size:.9rem}
.pd-t th{text-align:left;border-bottom:2px solid var(--ink);padding:6px 4px;font-size:.78rem;text-transform:uppercase}
.pd-t td{border-bottom:1px solid var(--line);padding:7px 4px;vertical-align:top}
.pd-t th:nth-child(n+2),.pd-t td:nth-child(n+2){text-align:right;white-space:nowrap}
.pd-tot{margin:12px 0 0 auto;max-width:280px}
.pd-tot .row{padding:4px 0}.pd-tot .big{font-size:1.15rem;border-top:2px solid var(--ink);margin-top:4px;padding-top:8px}
.pd-notes{white-space:pre-wrap;font-size:.9rem;margin-top:16px}
@media print{
  .tabs,header.top,#tabs,.noprint,#toast,.skip{display:none!important}
  main#view{padding:0!important}
  body{background:var(--zbFFF)!important}
  .printdoc{box-shadow:none!important;border:0!important;margin:0!important}
}

/* ---------- v12 chat ---------- */
.stack{display:flex;flex-direction:column;gap:8px}
.tbadge.mention{background:#1A6C99;color:#fff}
.chrow{display:flex;gap:12px;align-items:center;text-decoration:none;color:inherit;padding:12px 14px}
.chrow .grow{min-width:0;display:flex;flex-direction:column;gap:3px}
.chrow.unread b{color:var(--accent)}
.chrow .ellip,.ellip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.chav{flex:0 0 42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--zbEEF2F7);font-weight:800;font-size:1.05rem;color:var(--zf424242)}
.chav.team{background:var(--zbFFF4D1)}.chav.job{background:var(--zbE3F3FC)}
.cbadge{font-style:normal;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--red);color:#fff;font-size:.72rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.cbadge.mention{background:#1A6C99;color:#fff}
.chat-head{display:flex;gap:10px;align-items:center;position:sticky;top:0;z-index:5;background:var(--bg,var(--zbF4F6F9));padding:6px 0 10px;margin-top:-6px}
.chat-head>a:first-child{font-size:1.8rem;line-height:1;text-decoration:none;color:var(--accent);padding:0 8px 4px 2px}
.chat-head .grow{min-width:0}.chat-head b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-msgs{display:flex;flex-direction:column}
#chatList{display:flex;flex-direction:column;gap:2px}
.msg{display:flex;flex-direction:column;align-items:flex-start;margin-top:10px;max-width:100%}
.msg.cont{margin-top:2px}.msg.cont .cwho{display:none}
.msg.mine{align-items:flex-end}
.msg .cwho{font-size:.74rem;font-weight:700;color:var(--zf5A6676);margin:0 0 2px 10px}
.msg .bub{position:relative;max-width:82%;background:var(--zbFFF);border:1px solid var(--zlE3E8EE);border-radius:16px 16px 16px 4px;padding:8px 11px 6px;box-shadow:0 1px 2px rgba(0,0,0,.05);overflow-wrap:anywhere;cursor:pointer}
.msg.mine .bub{background:var(--zbFFF1C9);border-color:var(--zlF2DE9F);border-radius:16px 16px 4px 16px}
.msg.tagged .bub{border:2px solid #1A6C99;background:var(--zbF1F6FF)}
.msg.del .bub{background:transparent;box-shadow:none;border-style:dashed;cursor:default}
.msg.flash .bub{animation:flash 1.6s ease-out}
@keyframes flash{0%,40%{box-shadow:0 0 0 4px rgba(242,169,0,.6)}100%{box-shadow:0 1px 2px rgba(0,0,0,.05)}}
.msg .txt{font-size:.98rem;line-height:1.35}
.msg .mt{display:block;text-align:right;font-size:.66rem;color:#7A8594;margin-top:2px}
.at{color:var(--zf1A6C99);font-weight:700}.at.me{background:var(--zbDCF1FC);border-radius:4px;padding:0 2px}
.rq{display:block;width:100%;text-align:left;border:0;border-left:3px solid #F2A900;background:rgba(var(--zink-rgb),.05);border-radius:6px;padding:4px 8px;margin:0 0 6px;font-size:.8rem;color:var(--zf465B66);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cmedia{position:relative;display:block;border:0;padding:0;background:#1B1B1B;border-radius:12px;overflow:hidden;width:220px;max-width:100%;aspect-ratio:4/3;cursor:pointer}
.cmedia img{width:100%;height:100%;object-fit:cover;display:block}
.cmedia .vph{display:flex;align-items:center;justify-content:center;height:100%;font-size:2rem}
.cmedia .play{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:rgba(0,0,0,.55)}
.cmedia .play::after{content:"";position:absolute;left:17px;top:13px;border-left:14px solid var(--zlFFF);border-top:9px solid transparent;border-bottom:9px solid transparent}
.cmedia .dur{position:absolute;right:6px;bottom:6px;background:rgba(0,0,0,.6);color:#fff;font-size:.7rem;padding:1px 6px;border-radius:6px}
.savedto{display:block;font-size:.72rem;margin:4px 0 2px;color:var(--zf2B6B0B);text-decoration:none;font-weight:700}
.voice{display:flex;align-items:center;gap:6px;min-width:230px}
.voice audio{height:36px;width:200px;max-width:60vw}
body.chat-open{padding-bottom:calc(76px + 68px + var(--safe-b))}
.composer{position:fixed;left:0;right:0;bottom:calc(65px + var(--safe-b));z-index:29;background:var(--zbFFF);border-top:1px solid var(--line);padding:7px 8px;box-shadow:0 -3px 12px rgba(0,0,0,.06)}
body.kb .tabs{display:none}
body.kb .composer{padding-bottom:7px}
.composer .crow{display:flex;align-items:flex-end;gap:6px;max-width:760px;margin:0 auto}
.composer textarea{flex:1;min-height:42px;max-height:120px;resize:none;border:1.5px solid var(--zlCBD7DD);border-radius:21px;padding:9px 14px;font:inherit;font-size:16px;line-height:1.3}
.cbtn{flex:0 0 42px;height:42px;border-radius:50%;border:1.5px solid var(--zlCBD7DD);background:var(--zbFFF);font-size:1.15rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.cbtn.send{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:800}
.cbtn.sm{flex-basis:30px;height:30px;font-size:.85rem}
.crow.rec{align-items:center}.crow.rec b{font-variant-numeric:tabular-nums}
.recdot{width:12px;height:12px;border-radius:50%;background:var(--red,#D33);animation:pulse 1.2s infinite;flex:0 0 auto}
.replybar{display:flex;align-items:center;gap:8px;max-width:760px;margin:0 auto 6px;font-size:.82rem;background:var(--zbF4F6F9);border-left:3px solid #F2A900;border-radius:6px;padding:5px 6px 5px 9px}
.atpop{position:absolute;left:8px;right:8px;bottom:100%;margin:0 auto 4px;max-width:520px;list-style:none;padding:4px;background:var(--zbFFF);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.18);max-height:260px;overflow:auto;z-index:31}
.atpop.up{bottom:auto;top:-4px;transform:translateY(-100%)}
.atpop button{display:block;width:100%;text-align:left;border:0;background:none;padding:10px 10px;border-radius:8px;font:inherit;cursor:pointer}
.atpop button:hover,.atpop button:focus{background:var(--accent-soft)}
.cprev{background:#1B1B1B;border-radius:12px;overflow:hidden;margin:0 0 10px;text-align:center}
.cprev img,.cprev video{max-width:100%;max-height:38vh;display:block;margin:0 auto}
.grid button .chatchip{position:absolute;left:5px;top:5px;background:rgba(var(--zwhite-rgb),.9);border-radius:999px;font-size:.7rem;padding:1px 5px}

/* ---------- v24: ☰ drawer, Home tiles, slim bar, address sheet ---------- */
.top-l{display:flex;align-items:center;gap:6px;min-width:0}
.menu-btn{flex:0 0 auto;width:44px;height:44px;margin-left:-8px;border-radius:12px;border:0;background:transparent;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.menu-btn:active{background:var(--chrome2)}
a.brand{color:#fff;text-decoration:none;min-width:0}
.brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
.tabs a,.tabs .tab-more{flex:1;min-width:0}
.tabs .tab-more{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;color:var(--zf6A7686);font:inherit;font-size:.72rem;font-weight:700;padding:6px 2px;border-radius:10px;min-height:52px;cursor:pointer}
.tabs .tab-more svg{width:24px;height:24px}
.tabs .tab-more[aria-current=page]{color:var(--accent-ink);background:var(--accent-soft)}
.tabs .tab-more[aria-current=page] svg{color:var(--accent)}
.tbadge.ok{background:var(--green)}
.tbadge.dot{min-width:10px;width:10px;height:10px;padding:0;top:6px;right:calc(50% - 16px)}
/* drawer */
.drawer-wrap{position:fixed;inset:0;z-index:55}
.drawer-bg{position:absolute;inset:0;background:rgba(10,18,30,.5);opacity:0;transition:opacity .2s}
.drawer{position:absolute;top:0;bottom:0;left:0;width:min(84vw,330px);background:var(--zbFFF);box-shadow:6px 0 30px rgba(0,0,0,.25);transform:translateX(-102%);transition:transform .22s ease-out;display:flex;flex-direction:column;overflow:hidden}
.drawer-wrap.open .drawer{transform:none}
.drawer-wrap.open .drawer-bg{opacity:1}
body.dr-open{overflow:hidden}
.dr-head{display:flex;align-items:center;gap:10px;background:var(--accent);color:#fff;padding:calc(14px + var(--safe-t)) 12px 14px 16px}
.dr-head .avatar{background:var(--accent);color:#fff}
.dr-head .small{color:#AFC8D6}
.dr-x{width:44px;height:44px;border:0;border-radius:12px;background:var(--chrome2);color:#fff;font-size:1.1rem;cursor:pointer;flex:0 0 auto}
.dr-list{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 8px calc(16px + var(--safe-b));flex:1}
.dr-a{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:6px 10px;border-radius:12px;color:var(--ink);text-decoration:none;font-weight:700;font-size:1rem;position:relative;border:0;background:transparent;font-family:inherit;cursor:pointer;text-align:left}
.dr-a:active{background:var(--zbEEF2F7)}
.dr-a[aria-current=page]{background:var(--accent-soft)}
.dr-ic{width:30px;text-align:center;font-size:1.25rem;flex:0 0 auto}
.dr-l{flex:1;min-width:0}
.dr-l small{font-size:.75rem}
.dr-a .tbadge{position:static;box-shadow:none;margin-left:auto;flex:0 0 auto}
.dr-a .tbadge.dot{margin-right:6px}
.dr-sep{margin:10px 10px 4px;padding-top:10px;border-top:1px solid var(--line);font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dr-out{color:var(--red)}
/* home */
.home-hi h1{font-size:1.35rem;margin:.1em 0 0}
.home-hi p{margin:.15em 0 12px;font-size:.92rem}
.hgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hgrid.sm{grid-template-columns:repeat(3,1fr);gap:8px}
.htile{position:relative;display:flex;flex-direction:column;gap:3px;justify-content:flex-start;min-height:112px;padding:14px 12px 12px;background:var(--zbFFF);border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.05);color:var(--ink);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:transform .08s}
.htile:active{transform:scale(.97);background:var(--zbF7F9FC)}
.htile .ht-ic{font-size:1.9rem;line-height:1.1;margin-bottom:4px}
.htile b{font-size:1.05rem;line-height:1.2}
.htile b small{font-size:.7rem}
.htile .ht-s{font-size:.8rem;color:var(--muted);line-height:1.25}
.htile.wide{grid-column:1/-1;min-height:96px;flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 12px;background:var(--accent);color:#fff;border-color:var(--accent)}
.htile.wide .ht-ic{margin:0;font-size:2.2rem}
.htile.wide b{font-size:1.35rem}
.htile.wide .ht-st{flex-basis:100%;font-size:.92rem;font-weight:700}
.htile.wide .ht-st.ht-off{color:#FFD45C}
.htile.wide.on{background:var(--green-d);border-color:var(--green-d)}
.htile.wide.on .ht-st{color:#fff}
.htile.sm{min-height:92px;padding:12px 6px 10px;align-items:center;text-align:center;justify-content:center}
.htile.sm .ht-ic{font-size:1.55rem;margin-bottom:2px}
.htile.sm b{font-size:.8rem;font-weight:700;hyphens:manual;overflow-wrap:anywhere}
.htile .tbadge{top:10px;right:10px;min-width:22px;height:22px;font-size:.78rem;box-shadow:0 0 0 2px var(--zbFFF)}
.htile.sm .tbadge{top:6px;right:6px;min-width:19px;height:19px;font-size:.7rem}
.htile .tbadge.dot{min-width:12px;width:12px;height:12px}
.hmore{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 2px 8px}
@media (min-width:600px){.hgrid{grid-template-columns:repeat(3,1fr)}.hgrid.sm{grid-template-columns:repeat(5,1fr)}}
/* address link + sheet */
.addr-link{display:inline;border:0;background:none;padding:2px 0;margin:0;font:inherit;color:var(--blue);text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(30,111,217,.35);text-underline-offset:2px;-webkit-tap-highlight-color:rgba(30,111,217,.15);overflow-wrap:anywhere}
.addr-link.big{font-size:1rem;font-weight:600}
.small .addr-link,.muted .addr-link{font-size:inherit}
.leaflet-popup-content .addr-link{font-size:.85rem}
.asheet-wrap{position:fixed;inset:0;z-index:58;display:flex;align-items:flex-end;justify-content:center}
.asheet-bg{position:absolute;inset:0;background:rgba(10,18,30,.5);opacity:0;transition:opacity .18s}
.asheet{position:relative;width:100%;max-width:520px;padding:10px 10px calc(10px + var(--safe-b));transform:translateY(100%);transition:transform .2s ease-out}
.asheet-wrap.open .asheet{transform:none}
.asheet-wrap.open .asheet-bg{opacity:1}
.as-head{background:var(--zbFFF);border-radius:16px 16px 0 0;padding:14px 16px 12px;text-align:center;border-bottom:1px solid var(--line)}
.as-addr{font-weight:700;font-size:1rem;-webkit-user-select:text;user-select:text;overflow-wrap:anywhere}
.as-addr.sel{background:var(--accent-soft);border-radius:6px}
.as-list{background:var(--zbFFF);border-radius:0 0 16px 16px;overflow:hidden}
.as-btn{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;padding:8px 18px;border:0;border-top:1px solid var(--zlEEF1F5);background:var(--zbFFF);color:var(--ink);font:inherit;font-size:1.05rem;font-weight:700;text-decoration:none;cursor:pointer;text-align:left}
.as-list .as-btn:first-child{border-top:0}
.as-btn:active{background:var(--zbEEF2F7)}
.as-ic{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;flex:0 0 auto;font-weight:900;color:#fff}
.as-waze{background:#33B7FF;color:#1F1F1F}
.as-apple{background:linear-gradient(135deg,var(--zb5AC1FA),#64C734)}
.as-apple::after{content:'';width:10px;height:10px;border-radius:50%;background:var(--zbFFF);box-shadow:0 0 0 3px #FF3B30}
.as-google{background:var(--zbFFF);color:#42B5F4;border:1.5px solid var(--zlDADCE0)}
.as-cancel{margin-top:8px;border-radius:16px;justify-content:center;border:0;color:var(--blue)}

/* ---------- v25: desktop & tablet layout (phone ≤ 767 px unchanged) ---------- */
.side{display:none}
@media screen and (min-width:768px){
  :root{--sw:84px}
  body{padding-bottom:0}
  body.chat-open{padding-bottom:84px}
  #tabs,.tabs,#menuBtn,.menu-btn{display:none!important}
  .side{display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;width:var(--sw);z-index:40;background:var(--accent);color:#fff;border-right:1px solid #151515}
  .side[hidden]{display:none!important}
  header.top{margin-left:var(--sw);padding:10px 24px;min-height:60px}
  header.top .brand img,header.top .brand>span{display:none}
  header.top .brand small{border:0;padding:0;margin:0;color:#fff;font-size:1.2rem;font-weight:800;max-width:60vw}
  body.no-tabs header.top{margin-left:0}
  body.no-tabs header.top .brand img,body.no-tabs header.top .brand>span{display:inline}
  body.no-tabs header.top .brand small{font-size:.9rem;font-weight:600;color:#AFC8D6;border-left:1px solid #424242;padding-left:9px;margin-left:2px}
  main{margin-left:var(--sw);max-width:none;padding:22px 24px 40px}
  main>*{max-width:980px;margin-left:auto;margin-right:auto}
  .who{max-width:30vw;cursor:pointer}
  .sd-brand{display:flex;align-items:center;justify-content:center;gap:10px;height:60px;flex:0 0 auto;color:#fff;text-decoration:none;font-weight:800;font-size:1.25rem;border-bottom:1px solid #323232}
  .sd-brand img{border-radius:8px}
  .sd-brand span{display:none}
  .sd-list{flex:1;overflow-y:auto;padding:8px 6px 16px;scrollbar-width:thin;scrollbar-color:#424242 transparent}
  .sd-a{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;padding:8px 2px;border-radius:12px;border:0;background:transparent;color:#C9DAE4;text-decoration:none;font:inherit;font-size:.66rem;font-weight:700;cursor:pointer;text-align:center;line-height:1.15}
  .sd-ic{font-size:1.35rem;line-height:1.2}
  .sd-l{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sd-l small{display:none}
  .sd-a:hover{background:var(--chrome2);color:#fff}
  .sd-a[aria-current=page]{background:var(--accent);color:#fff}
  .sd-a .tbadge{position:absolute;top:4px;right:10px;box-shadow:0 0 0 2px var(--chrome)}
  .sd-sep{margin:8px 8px 6px;border-top:1px solid #323232;font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#7F9DAD;text-align:center;padding-top:6px}
  .sd-sep:empty{padding-top:0}
  .sd-out{color:#FFB4B4}
  .toast{bottom:28px;left:calc(50% + var(--sw) / 2)}
  .composer{left:var(--sw);bottom:0}
  /* address sheet: a centred dialog */
  .asheet-wrap{align-items:center}
  .asheet{transform:translateY(16px) scale(.98);opacity:0;transition:transform .16s ease-out,opacity .16s;max-width:420px}
  .asheet-wrap.open .asheet{transform:none;opacity:1}
  .as-head{border-radius:16px 16px 0 0}
}
@media screen and (min-width:1024px){
  :root{--sw:236px}
  body.chat-open{padding-bottom:0}
  .sd-brand{justify-content:flex-start;padding:0 20px}
  .sd-brand span{display:inline}
  .sd-list{padding:10px 10px 18px}
  .sd-a{flex-direction:row;gap:12px;min-height:38px;padding:6px 12px;font-size:.95rem;text-align:left;border-radius:10px}
  .sd-ic{width:26px;text-align:center;font-size:1.15rem;flex:0 0 auto}
  .sd-l{flex:1;min-width:0}
  .sd-l small{display:inline;font-size:.7rem}
  .sd-a .tbadge{position:static;margin-left:auto;flex:0 0 auto;box-shadow:none}
  .sd-a .tbadge.dot{margin-right:4px}
  .sd-sep{text-align:left;margin:10px 12px 4px;font-size:.7rem}
  main{padding:24px 28px 48px}
  main>*{max-width:1400px}
  /* wide pages fill the 1400 px container; form-like pages stay readable */
  body[data-pg=clock] main>*,body[data-pg=quote] main>*,body[data-pg=pick] main>*,body[data-pg=photos] main>*,body[data-pg=crew] main>*,body[data-pg=shop] main>*{max-width:980px}
  h1{font-size:1.65rem}
  /* Home: 5 big tiles per row, 7 small */
  .home-hi{display:flex;align-items:baseline;gap:14px}
  .home-hi p{margin:0}
  .hgrid{grid-template-columns:repeat(5,1fr);gap:14px}
  .hgrid.sm{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px}
  .htile{min-height:132px;padding:18px 16px 14px}
  .htile.wide{grid-column:span 2}
  /* sheets / forms: centred dialogs */
  .sheet{max-width:620px;max-height:86vh;max-height:calc(var(--vvh,100dvh) - 60px);padding:24px 24px 22px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
  .sheet-wrap{padding:0 0 0 var(--sw)}
  .asheet-wrap{padding-left:var(--sw)}
  .kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
  .hub{grid-template-columns:repeat(4,1fr)}
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  /* wide tables */
  .dtable-wrap{padding:0;overflow-x:auto}
  table.dtable{width:100%;border-collapse:collapse;font-size:.92rem}
  table.dtable th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--zbF8FAFC);white-space:nowrap;position:sticky;top:0}
  table.dtable td{padding:11px 14px;border-top:1px solid var(--zlEEF1F5);vertical-align:middle}
  table.dtable tbody tr:first-child td{border-top:0}
  table.dtable tbody tr[data-go],table.dtable tbody tr[data-u]{cursor:pointer}
  table.dtable tbody tr[data-go]:hover,table.dtable tbody tr[data-u]:hover{background:var(--zbF5F8FC)}
  table.dtable tr:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
  table.dtable .show-md{display:none}
  table.dtable .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
  table.dtable .job-pills{gap:5px;flex-wrap:wrap}
  table.dtable .addr-link{text-align:left}
  table.dtable .avatar.sm,.avatar.sm{width:32px;height:32px;font-size:.8rem}
  table.dtable.ts td{padding:9px 12px;font-size:.88rem}
  table.dtable.ts .ts-gps div{white-space:nowrap;line-height:1.9}
  table.dtable .nowrap{white-space:nowrap}
  body[data-pg=time] #tsb ~ *,body[data-pg=time] .btn-row{max-width:620px;margin-left:0}
  body[data-pg=time] .filters{grid-template-columns:repeat(3,minmax(0,260px))}
  .th-sort{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
  .th-sort:hover{color:var(--ink)}
  .th-sort:focus-visible{outline:3px solid var(--focus);border-radius:4px}
  .th-sort i::after{content:'↕';opacity:.35;font-style:normal}
  th[aria-sort=ascending] .th-sort i::after{content:'↑';opacity:1}
  th[aria-sort=descending] .th-sort i::after{content:'↓';opacity:1}
  th.num .th-sort{flex-direction:row-reverse}
  .dt-foot{margin:0;padding:10px 14px;border-top:1px solid var(--line)}
  .wh-card{padding:14px 18px}
  table.wh th,table.wh td{padding:10px 12px}
  /* timesheets: date bar + filters on one row */
  body[data-pg=time] .range{max-width:520px;margin:0 0 10px}
  body[data-pg=time] .filters{max-width:900px}
  /* CRM: board */
  .pv-row{margin:0 0 12px;gap:14px}
  .pv-seg{flex:0 0 auto;width:220px}
  .board{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;align-items:flex-start}
  .bcol{flex:1 1 210px;min-width:200px;background:var(--zbE9EDF3);border-radius:14px;padding:8px;min-height:200px}
  .bcol.empty{flex:0 1 128px;min-width:116px}
  .bcol-h{display:flex;flex-direction:column;gap:3px;padding:4px 4px 8px}
  .bcol-h .pill{align-self:flex-start}
  .bcards{display:flex;flex-direction:column;gap:8px}
  .bcard{background:var(--zbFFF);border-radius:11px;padding:10px 11px;border:1px solid var(--zlE1E6ED);box-shadow:0 1px 2px rgba(0,0,0,.05);cursor:pointer;font-size:.9rem;overflow-wrap:anywhere}
  .bcard:hover{border-color:var(--zlB9CCD6);box-shadow:0 3px 10px rgba(0,0,0,.1)}
  .bcard .bc-hint{margin-top:4px;color:var(--zf414141)}
  .bcard .bc-foot{margin-top:6px;gap:6px;flex-wrap:wrap}
  .bcard .addr-link{text-align:left}
  .bempty{text-align:center;margin:14px 0}
  /* job page: section list on the left, the open section on the right */
  .jp{display:grid;grid-template-columns:330px minmax(0,1fr);gap:22px;align-items:start}
  .jp-side{position:sticky;top:84px}
  .jp-side>p:first-child{margin-top:0}
  .jp-side .jobtabs{display:flex!important;flex-direction:column;gap:2px;padding:6px}
  .jp-side .jobtabs a{flex:0 0 auto;justify-content:flex-start;text-align:left;padding:11px 12px;font-size:.92rem;white-space:normal}
  .jp-side .jobtabs a:hover{background:rgba(var(--zwhite-rgb),.6)}
  .jp-side .jobtabs a[aria-current=page]:hover{background:var(--zbFFF)}
  .jp-body>h2:first-child,.jp-body>div:first-child>h2:first-child,.jp-body>.row:first-child h2{margin-top:0}
  .jb-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:14px;grid-auto-flow:row dense}
  .jb-overview>*{grid-column:1/-1}
  .jb-overview>a.matsum{grid-column:auto;margin-bottom:12px}
  .jb-overview>:empty{display:none}
  .jb-overview .gmap-embed{height:300px}
  .jb-chat{display:flex;flex-direction:column;min-height:calc(100vh - 134px);background:var(--zbFFF);border:1px solid var(--zlE9EDF2);border-radius:var(--r);box-shadow:var(--shadow);padding:0 18px}
  .jb-chat .chat-msgs{flex:1;padding:12px 0}
  .money2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
  .money2 .mcol>.row:first-child h2,.money2 .mcol>h2:first-child{margin-top:0}
  /* chat: two panes */
  .chat2{display:grid;grid-template-columns:340px minmax(0,1fr);gap:20px;align-items:start}
  .chat2-l{position:sticky;top:84px;max-height:calc(100vh - 110px);overflow-y:auto;padding:2px 6px 8px 2px;scrollbar-width:thin}
  .chat2-l .chrow{margin-bottom:8px}
  .chat2-l .chrow:hover{border-color:var(--zlB9CCD6)}
  .chat2-l .chrow[aria-current=page]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
  .chat2-l h2{font-size:1rem}
  .chat2-r{min-width:0;min-height:calc(100vh - 134px);display:flex;flex-direction:column;background:var(--zbFFF);border:1px solid var(--zlE9EDF2);border-radius:var(--r);box-shadow:var(--shadow);padding:0 18px}
  .chat2-r .chat-head{top:60px;background:var(--zbFFF);margin:0 -18px;padding:12px 18px;border-bottom:1px solid var(--line);border-radius:var(--r) var(--r) 0 0}
  .chat2-r .chat-head>a:first-child{display:none}
  .chat2-r .chat-msgs{flex:1;padding:12px 0}
  .chat2-r .composer,.jb-chat .composer{position:sticky;bottom:0;left:auto;right:auto;margin:0 -18px;border-radius:0 0 var(--r) var(--r);padding:10px 14px}
  .composer .crow{max-width:none}
  /* live: people on the left, a big map beside them */
  .live-grid{display:grid;grid-template-columns:400px minmax(0,1fr);gap:22px;align-items:start}
  .live-l .kpis{grid-template-columns:repeat(3,1fr)}
  .live-r>h2:first-child{margin-top:0}
  .live-r .map{height:560px}
  /* schedule: the week fills the width */
  table.sw{font-size:.86rem}
  table.sw .sw-name{width:120px}
  table.sw td .swc{min-height:64px}
  /* materials: a row per item */
  .list.mats>li.mat{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 14px}
  .gmap-embed{height:300px}
  /* hover states */
  .btn:hover{border-color:var(--zl9FB7C4);background:var(--zbF7F9FC)}
  .btn.primary:hover{background:#313131;border-color:#313131}
  .btn.go:hover{background:var(--green-d);border-color:var(--green-d)}
  .btn.amber:hover{background:#0280C6}
  .btn.stop:hover{background:#BD2F2F}
  .btn.ghost:hover{background:var(--zbEEF4FC)}
  .list.tap>li:hover{background:var(--zbF7F9FC)}
  .list.tap>li{border-radius:8px}
  .htile:hover,.hub-tile:hover,a.card:hover{border-color:var(--zlB9CCD6);box-shadow:0 4px 16px rgba(0,0,0,.1)}
  .chip:hover,.seg button:hover{filter:brightness(.97)}
  .as-btn:hover{background:var(--zbF2F5F9)}
  .addr-link:hover{text-decoration:underline}
}
@media screen and (min-width:1024px) and (max-width:1279px){
  table.dtable .hide-md{display:none}
  .board{flex-wrap:wrap;overflow-x:visible}
  .bcol{flex:1 1 200px}
  .bcol.empty{flex:1 1 120px;min-height:0}
  table.dtable .show-md{display:inline}
  table.dtable div.show-md{display:block}
  .jb-overview{grid-template-columns:minmax(0,1fr)}
  .jb-overview>a.matsum{grid-column:1/-1}
  table.dtable.ts .ts-gps div{white-space:normal;line-height:1.5;margin:2px 0}
  table.dtable.ts .ts-gps .pill{font-size:.7rem}
  table.dtable.ts td{padding:8px 9px}
  table.dtable th{padding:10px 9px}
  table.dtable td{padding:10px 9px}
  .hgrid{grid-template-columns:repeat(4,1fr)}
  .jp{grid-template-columns:290px minmax(0,1fr)}
  .chat2{grid-template-columns:290px minmax(0,1fr)}
  .live-grid{grid-template-columns:340px minmax(0,1fr)}
}
@media print{ .side{display:none!important} header.top,main{margin-left:0!important} main>*{max-width:none!important} }

/* ===== v27 polish ===== */
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* lunch: a thin line icon instead of the 🍔 */
.ic-lunch{display:inline-block;width:1.05em;height:1.05em;vertical-align:-.17em;margin-right:.32em;flex:0 0 auto;opacity:.9}
.btn .ic-lunch{width:1.15em;height:1.15em;margin-right:.4em;opacity:1}
.pill .ic-lunch{margin-right:.25em}

/* smooth screen changes: a short fade; nothing for reduced motion */
@keyframes pgin{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes pgfade{from{opacity:0}to{opacity:1}}
.pg-in{animation:pgin .14s ease-out both}
body[data-pg=chat] .pg-in,.jp-body.pg-in{animation-name:pgfade}
main#view{min-height:calc(100vh - 140px)}
@media (prefers-reduced-motion:reduce){.pg-in{animation:none!important}.sk{animation:none!important}}
/* skeleton placeholders while a screen loads */
@keyframes skm{0%{background-position:100% 0}100%{background-position:0 0}}
.sk{display:block;border-radius:7px;background:linear-gradient(90deg,var(--zbE6EAF0) 25%,var(--zbF2F4F8) 45%,var(--zbE6EAF0) 65%);background-size:300% 100%;animation:skm 1.3s ease-in-out infinite;margin:5px 0}
.skc .sk-row{padding:9px 0;border-top:1px solid var(--zlEEF1F5)}.skc .sk-row:first-child{border-top:0}
.sk-grid .sk-tile{aspect-ratio:1;margin:0;border-radius:10px}
.sk-htile{min-height:104px;margin:0;border-radius:16px}
.sk-page{padding-top:4px}

/* all-jobs section pages */
.ap-top{display:flex;flex-direction:column;gap:2px;margin:0 0 10px}
.ap-back{font-size:.92rem;text-decoration:none;font-weight:600;align-self:flex-start;padding:2px 0}
.ap-h{font-size:1.35rem;margin:2px 0 0;display:flex;align-items:center;gap:8px}
.ap-bar{display:flex;gap:8px;margin:0 0 12px;position:sticky;top:calc(56px + var(--safe-t));z-index:5;background:var(--bg);padding:6px 0;margin-top:-6px}
.ap-sel{flex:0 1 52%;min-width:0}
.ap-sel select{min-height:42px;border-radius:999px;font-weight:700;font-size:15px;padding:6px 30px 6px 14px;background-color:var(--zbFFF);border-color:var(--zlCBD7DD);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.ap-q{flex:1 1 48%;min-width:0}
.ap-q input{width:100%;min-height:42px;border-radius:999px;border:1.5px solid var(--zlCBD7DD);padding:6px 14px 6px 36px;font-size:16px;background:var(--zbFFF) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6878' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m20 20-4.2-4.2'/%3E%3C/svg%3E") no-repeat 12px 50%/17px 17px;-webkit-appearance:none;appearance:none}
.ap-body{transition:opacity .12s}
.ap-body.ap-dim{opacity:.5;pointer-events:none}
.ap-job{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);padding:2px 0 9px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.ap-job .grow{display:flex;flex-direction:column;min-width:0}
.ap-job b{font-size:1rem}
.ap-job i{font-style:normal;color:var(--muted);font-size:1.3rem;line-height:1}
.ap-job:hover b{text-decoration:underline}
.ap-n{white-space:nowrap}
.ap-gh{padding-bottom:4px;margin-bottom:-8px;border-bottom-left-radius:0;border-bottom-right-radius:0}
.ap-gh .ap-job{border-bottom:0;margin:0;padding-bottom:6px}
.ap-grp > ul.card{border-top-left-radius:0;border-top-right-radius:0}
.ap-one{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px 0 10px}
.ap-tot summary{cursor:pointer;padding:2px 0}
.ap-tot ul{margin-top:8px}
.ap-bar2{margin:2px 0 8px}
.ap-cl li{padding:0!important}
.ap-cli{display:flex;align-items:flex-start;gap:10px;padding:9px 2px;text-decoration:none;color:var(--ink)}
.ap-box{flex:0 0 22px;height:22px;border:2px solid var(--zlB9C7CF);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:.8rem;color:#fff;margin-top:1px}
.ap-cl li.done .ap-box{background:var(--green);border-color:var(--green)}
.ap-cl li.done .grow{color:var(--muted)}
.grid button .jobchip{position:absolute;right:5px;top:5px;background:rgba(var(--zink-rgb),.78);color:#fff;border-radius:999px;font-size:.66rem;font-weight:700;padding:2px 7px;max-width:calc(100% - 34px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pickjob li{padding:0!important}
.pj-row{display:flex;align-items:center;gap:10px;width:100%;padding:13px 4px;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit;color:var(--ink)}
.pj-row:hover{background:var(--zbF4F6F9)}
.pj-row input[type=file]{position:absolute;opacity:0;width:1px;height:1px}
.ap-nomatch{margin-top:8px}

/* address sheet: native-style, with the real map app icons */
.asheet .as-card{background:var(--zbFFF);border-radius:16px;overflow:hidden;box-shadow:0 10px 30px rgba(10,18,30,.18)}
.asheet .as-head{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 14px;background:var(--zbFFF);border-radius:0;border-bottom:1px solid var(--zlECEFF3);text-align:left}
.as-pin{flex:0 0 36px;height:36px;border-radius:50%;background:var(--zbEEF3FB);color:var(--blue);display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
.as-ht{min-width:0;flex:1}
.as-name{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:none;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.asheet .as-addr{font-weight:700;font-size:1rem;line-height:1.3;color:var(--ink)}
.as-sec{padding:4px 0}
.as-sec + .as-sec{border-top:6px solid var(--zlF2F4F7)}
.as-row{display:flex;align-items:center;gap:14px;width:100%;min-height:60px;padding:10px 18px;border:0;background:var(--zbFFF);color:var(--ink);font:inherit;text-decoration:none;text-align:left;cursor:pointer;position:relative}
.as-row + .as-row::before{content:'';position:absolute;top:0;left:72px;right:0;border-top:1px solid var(--zlECEFF3)}
.as-row:active,.as-row:hover{background:var(--zbF5F7FA)}
.as-appic{width:40px;height:40px;flex:0 0 40px;border-radius:9.5px;box-shadow:0 0 0 .5px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.1);object-fit:cover;background:var(--zbFFF)}
.as-ri{width:40px;height:40px;flex:0 0 40px;border-radius:9.5px;background:var(--zbF0F2F5);color:var(--zf313131);display:inline-flex;align-items:center;justify-content:center}
.as-rl{flex:1;display:flex;flex-direction:column;min-width:0}
.as-rl b{font-size:1.02rem;font-weight:600}
.as-rl small{font-size:.8rem;color:var(--muted);margin-top:1px}
.as-go{color:#B4C0C7;display:inline-flex}
.as-cancel{display:block;width:100%;min-height:54px;margin-top:8px;border:0;border-radius:16px;background:var(--zbFFF);color:var(--blue);font:inherit;font-size:1.05rem;font-weight:700;cursor:pointer;box-shadow:0 10px 30px rgba(10,18,30,.18)}
.as-cancel:hover{background:var(--zbF5F7FA)}
@media screen and (min-width:1024px){
  .ap-bar{top:0}
  .ap-sel{flex:0 0 320px}.ap-q{flex:0 1 380px}
  .allpg .ap-grp{break-inside:avoid}
}
.grid button .jobchip{left:5px;right:auto;max-width:calc(100% - 52px)}
.grid button:has(.jobchip) .chatchip{left:auto;right:5px}
.grid button.is-vid:has(.jobchip) .chatchip{top:auto;bottom:24px}

/* ---------- v13: several people on a job ---------- */
.crew-chips .chip{min-height:40px}
.tm-list{margin:.5em 0 0}
.tm-list>li.tm-row{display:flex;align-items:center;gap:10px;padding:9px 0}
.tm-list>li.tm-row:first-child{border-top:0}
.tm-av{position:relative;flex:0 0 38px;width:38px;height:38px;border-radius:50%;background:var(--zbE6ECF4);color:var(--zf424242);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem}
.tm-av.on{background:var(--zbE0F2D7);color:var(--zf2B6B0B);box-shadow:0 0 0 2px var(--green)}
.tm-av i{position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px var(--zbFFF)}
.tm-txt{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px}
.tm-txt>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.tm-when{flex-basis:100%}
.tm-on{color:var(--green-d);font-weight:700}
.tm-acts{display:flex;gap:2px;flex:0 0 auto}
.tm-acts .btn.sm{min-width:42px;min-height:42px;padding:4px 8px;font-size:1.05rem;text-decoration:none}
.tm-with{margin-top:4px;color:var(--zf424242)}
.tm-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);vertical-align:middle;margin-left:1px}
.who-card{border-left:4px solid var(--blue)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* ---------- v13: 📁 Documents + quote items ---------- */
.doc-pills{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.bizdocs .docrow{flex-wrap:wrap}
.doc-read{font-size:.85rem!important;min-width:auto!important;white-space:nowrap}
@media (max-width:520px){.bizdocs .doc-acts{width:100%;justify-content:flex-end;padding-left:46px}}
.qsum{border-left:4px solid var(--green)}
.qs-line{margin:.45em 0 .2em;line-height:1.4}
.qs-tot{font-size:1.05rem;white-space:nowrap}
.qs-more summary{cursor:pointer;color:var(--blue);font-weight:600;font-size:.9rem;padding:4px 0}
.qs-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.qs-tbl{width:100%;border-collapse:collapse;font-size:.85rem;margin-top:4px}
table.qs-tbl th{font-size:.7rem;color:var(--muted);text-transform:uppercase;text-align:left;padding:4px 4px 6px}
table.qs-tbl td{border-top:1px solid var(--line);padding:7px 4px;vertical-align:top}
table.qs-tbl .num{text-align:right;white-space:nowrap}
.qs-totals{margin:.5em 0 0;text-align:right}
/* review screen ("Check these items") */
.qr-check{border-radius:10px;padding:8px 10px;margin:0 0 10px;background:var(--zbEEF2F7)}
.qr-check:empty{display:none}
.qr-check.good{background:var(--zbE8F5E2);color:var(--zf255A0B)}
.qr-check.bad{background:var(--zbFFF3D6);color:var(--zf6B4B00)}
.qr-tbl{display:flex;flex-direction:column;gap:8px}
.qr-row{display:grid;grid-template-columns:1fr 1fr 1fr 42px;gap:6px;align-items:end;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--zbFFF)}
.qr-row .qd{grid-column:1/-1;width:100%;min-height:44px;resize:vertical;font:inherit;font-size:.95rem}
.qr-row.warn{border-color:#E8B33A;background:var(--zbFFFBF0)}
.qr-row.warn .qa{border-color:#E8B33A}
.qr-c{display:flex;flex-direction:column;gap:2px;min-width:0}
.qr-c span{font-size:.7rem;color:var(--muted);font-weight:700;text-transform:uppercase}
.qr-c input{width:100%;min-width:0;text-align:right}
.qr-row .qx{min-height:44px}
.qr-h{display:none}
.qr-tots{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin-bottom:12px}
.qr-tots .field{margin:0}
.qr-tots input{width:100%}
.sheet.wide{max-width:560px}
@media (min-width:760px){
  .sheet.wide{max-width:920px}
  .qr-tbl{gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
  .qr-row{grid-template-columns:minmax(0,1fr) 80px 120px 130px 44px;align-items:center;border:0;border-top:1px solid var(--line);border-radius:0;padding:6px 8px}
  .qr-row:first-child{border-top:0}
  .qr-row .qd{grid-column:auto;min-height:40px}
  .qr-c span{display:none}
  .qr-h{display:grid;background:var(--zbF6F8FB);font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;padding:8px}
  .qr-h span:nth-child(n+2){text-align:right}
  .qr-tots{grid-template-columns:repeat(4,1fr)}
}

/* v28.1 */
#qrAdd,#qrPdf{flex:0 0 auto;width:auto}

/* ---------- v29 phone bottom bar: round camera in the middle; pushed sub-pages with a ← back ---------- */
.tabs .tab-cam{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;border:0;background:transparent;color:var(--zf6A7686);font:inherit;font-size:.72rem;font-weight:700;padding:0 2px 7px;min-height:52px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tab-cam .cam-c{width:58px;height:58px;margin-top:-30px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 5px var(--zbFFF),0 6px 18px rgba(0,0,0,.24);transition:transform .12s ease}
.tab-cam .cam-c svg{width:28px;height:28px}
.tab-cam:active .cam-c{transform:scale(.92)}
.tab-cam:focus-visible{outline:0}
.tab-cam:focus-visible .cam-c{outline:3px solid var(--accent);outline-offset:3px}
.back-btn{flex:0 0 auto;width:44px;height:44px;margin-left:-8px;border-radius:12px;border:0;background:transparent;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.back-btn[hidden]{display:none}
.back-btn:active{background:var(--chrome2)}
@media (max-width:767px){
  body.subpg #menuBtn{display:none}
  body.subpg .brand img,body.subpg .brand>span{display:none}
  body.subpg a.brand{pointer-events:none}
  body.subpg .brand small{border:0;padding:0;margin:0;color:#fff;font-size:1.12rem;font-weight:800;max-width:58vw}
  body.subpg .pg-back-p,body.subpg a.pg-back{display:none!important}
  body.subpg .ap-top{margin-top:2px}
}
.navsnap{position:fixed;inset:0;z-index:15;overflow:hidden;pointer-events:none;background:var(--bg)}
.navsnap.under{animation:navUnder .2s cubic-bezier(.2,.7,.3,1) both}
.navsnap.out{animation:navOut .2s cubic-bezier(.33,0,.67,1) both;box-shadow:-10px 0 28px rgba(0,0,0,.14)}
body.nav-anim{overflow-x:clip}
main#view.nav-in{position:relative;z-index:16;background:var(--bg);animation:navIn .2s cubic-bezier(.2,.7,.3,1) both;box-shadow:-10px 0 28px rgba(0,0,0,.14)}
main#view.nav-back-in{animation:navBackIn .2s cubic-bezier(.2,.7,.3,1) both}
@keyframes navIn{from{transform:translate3d(100%,0,0)}to{transform:none}}
@keyframes navUnder{from{transform:none;opacity:1}to{transform:translate3d(-28%,0,0);opacity:.55}}
@keyframes navOut{from{transform:none}to{transform:translate3d(100%,0,0)}}
@keyframes navBackIn{from{transform:translate3d(-28%,0,0);opacity:.55}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.navsnap{display:none}main#view.nav-in,main#view.nav-back-in{animation:none!important}}
/* camera save sheet */
.cam-sh h2{margin:0 0 12px;font-size:1.15rem}
.cam-top{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.cam-th{position:relative;flex:0 0 108px;height:108px;border-radius:14px;overflow:hidden;background:var(--zbE6EAF0)}
.cam-th img,.cam-th video{width:100%;height:100%;object-fit:cover;display:block}
.cam-th .play{position:absolute;inset:0;margin:auto}
.cam-th .prog{position:absolute;left:0;right:0;bottom:0;height:5px;background:rgba(var(--zink-rgb),.18);display:none}
.cam-th.up .prog{display:block}
.cam-th .prog b{display:block;height:100%;width:0;background:var(--green);transition:width .25s}
.cam-th.ok::after{content:'';position:absolute;inset:0;border-radius:14px;box-shadow:inset 0 0 0 3px var(--green)}
.cam-th.fail::after{content:'';position:absolute;inset:0;border-radius:14px;box-shadow:inset 0 0 0 3px var(--red)}
.cam-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.cam-job{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;border:1px solid var(--line);background:var(--zbFFF);border-radius:12px;padding:10px 12px;font:inherit;color:var(--ink);cursor:pointer;min-height:48px}
.cam-job b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.cam-chg{color:var(--blue);font-weight:700;font-size:.85rem;flex:0 0 auto}
.cam-job.need{border-color:var(--amber);background:var(--zbFFF8E1)}
.cam-ok{display:flex;align-items:center;gap:8px;color:var(--green-d);font-weight:600;margin:2px 0 12px}
.cam-ok svg{flex:0 0 auto}
.cam-acts{display:flex;gap:10px}
.cam-acts .filebtn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.cam-acts .filebtn svg{width:22px;height:22px}
.cam-acts #camFin{flex:0 0 32%}
@media (min-width:1024px){ .sd-cam .sd-l{white-space:nowrap} }

@media (max-width:767px){
  body:not(.no-tabs):not(.chat-open){padding-bottom:calc(98px + var(--safe-b))}
  /* in an open chat the composer sits right above the bar, so the camera stays inside the bar there */
  body.chat-open .tab-cam{justify-content:center;padding-bottom:6px}
  body.chat-open .tab-cam .cam-c{width:46px;height:30px;margin-top:0;border-radius:15px;box-shadow:none}
  body.chat-open .tab-cam .cam-c svg{width:22px;height:22px}
}
.cam-job:disabled{cursor:default;opacity:1;color:var(--ink)}

/* ---------- v30: 🔔 notifications ---------- */
.top-r{display:flex;align-items:center;gap:6px;flex:0 0 auto;min-width:0}
.bell-btn{position:relative;flex:0 0 auto;width:42px;height:42px;border-radius:12px;border:0;background:transparent;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.bell-btn:hover,.bell-btn:active,.bell-btn[aria-current]{background:var(--chrome2)}
.bell-btn .tbadge{top:3px;right:2px;box-shadow:0 0 0 2px var(--chrome)}
.nf-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 12px}
.nf-head h1{font-size:1.35rem;margin:0}
.nf-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.nf-acts .btn,.nf-head>.btn{min-height:38px;padding:6px 12px;font-size:.88rem}
.nf-h{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 4px 8px;font-weight:800}
.nf-list{list-style:none;padding:0;overflow:hidden}
.nf{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border-top:1px solid var(--line);cursor:pointer;position:relative}
.nf:first-child{border-top:0}
.nf:hover{background:var(--zbF7F9FC)}
.nf.unread{background:var(--zbF3F8FF)}
.nf-ic{flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:var(--zbEEF2F7);display:flex;align-items:center;justify-content:center;font-size:1.05rem;font-weight:800;color:var(--zf1A6C99)}
.nf-ic.k-late,.nf-ic.k-remind_in,.nf-ic.k-remind_out{background:var(--zbFFF4D6)}
.nf-ic.k-clock_in{background:var(--zbE9F6E3)}.nf-ic.k-clock_out{background:var(--zbFDE9E9)}
.nf-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.nf-t b{font-size:.98rem;line-height:1.25}
.nf-b{font-size:.9rem;color:var(--zf424242);line-height:1.35;overflow-wrap:break-word}
.nf-w{font-size:.78rem;color:var(--muted);margin-top:2px}
.nf-dot{position:absolute;right:14px;top:18px;width:9px;height:9px;border-radius:50%;background:var(--blue)}
.nf.unread .nf-t{padding-right:16px}
.nf-banner{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);border:1.5px solid var(--zlCFEBFA);background:var(--zbF3F8FF)}
.nf-banner .grow{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.nf-bell{display:inline-flex;width:38px;height:38px;border-radius:50%;background:var(--accent);color:#fff;align-items:center;justify-content:center;flex:0 0 auto}
.nf-bell svg{width:20px;height:20px}
.nf-bell.big{width:56px;height:56px;margin:0 auto 10px}.nf-bell.big svg{width:28px;height:28px}
.nf-go{font-size:1.6rem;color:var(--muted)}
.nf-empty{display:flex;flex-direction:column;align-items:center;gap:6px}
.nf-empty b{color:var(--ink)}
.nfs-top .row.wrap{flex-wrap:wrap}
.nfs-top .btn.big{min-height:52px}
.nfs-state{display:flex;align-items:center;gap:9px;font-size:1.02rem}
.nfs-dot{width:11px;height:11px;border-radius:50%;background:var(--zbAAB8C0);flex:0 0 auto}
.nfs-state.on .nfs-dot{background:var(--green);box-shadow:0 0 0 4px var(--zbE4F3DD)}
.nfs-state.bad .nfs-dot{background:var(--red)}
.nfs-state.warn .nfs-dot{background:var(--amber)}
.nfs-steps{margin:10px 0 8px;padding-left:22px;line-height:1.5}
.nfs-steps li{margin:3px 0}
.nfs-list{padding:0;overflow:hidden}
.nfs-t,.nfs-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line);cursor:pointer}
.nfs-t:first-child{border-top:0}
.nfs-t .grow,.nfs-row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.card.stack .nfs-row{padding:6px 0;border:0}
.nfs-row select{min-height:42px;border-radius:10px;border:1.5px solid var(--zlCBD7DD);background:var(--zbFFF);padding:6px 10px;font-weight:700;max-width:46%}
input.sw{appearance:none;-webkit-appearance:none;flex:0 0 auto;width:50px;height:30px;border-radius:999px;background:var(--zbCBD7DD);position:relative;cursor:pointer;transition:background .15s;margin:0}
input.sw::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--zbFFF);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
input.sw:checked{background:var(--green)}
input.sw:checked::after{transform:translateX(20px)}
@media (prefers-reduced-motion:reduce){input.sw,input.sw::after{transition:none}}
.nfs-adv summary,.nfs-help summary{cursor:pointer;padding:4px 0}
.nfs-adv input{min-height:40px;border-radius:10px;border:1.5px solid var(--zlCBD7DD);padding:6px 10px;font-size:.8rem;min-width:0;width:100%}
.nfs-adv .row{margin:6px 0}
.nfs-devs li{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.nfs-devs li:first-child{border-top:0}
.nfs-help p{margin:.6em 0;line-height:1.45}
@media (min-width:1024px){
  .nf-list,.nfs-list,.nfs-top,.nf-banner,.nfs-help,.card.stack,.nfs-devs,.nf-empty{max-width:760px}
  .nf-head{max-width:760px}
}
.nf-head h1{min-width:0}
.nf-acts{flex-wrap:nowrap}
@media (max-width:420px){.nf-acts .btn{padding:6px 10px;font-size:.82rem}}
@media (min-width:1024px){.nfs-row select{max-width:240px}}
.nf-ic .ic-lunch{width:20px;height:20px;color:var(--zf7A5A00)}

/* v31 geofence */
.pill.gf{display:inline-flex;align-items:center;gap:4px}
.gf-ic{flex:none;vertical-align:-2px;margin-right:2px}
.gf-line{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:4px}
.gf-line>.gf-ic{color:var(--muted,var(--zf6B7280))}
.gf-note{display:flex;gap:6px;align-items:flex-start;margin:.2em 2px .9em;line-height:1.35}
.gf-note .gf-ic,.nfs-gfnote .gf-ic{margin-top:2px}
.nfs-gfnote{display:flex;gap:6px;align-items:flex-start;margin:.5em 4px 0;line-height:1.4}
.ts-gps .gf-line{margin-top:6px}

/* ---------- v32: search everywhere ---------- */
.srch-btn{position:relative;flex:0 0 auto;width:42px;height:42px;border-radius:12px;border:0;background:transparent;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.srch-btn svg{width:22px;height:22px;flex:0 0 auto}
.srch-btn:hover,.srch-btn:active{background:var(--chrome2)}
.srch-btn .sb-l,.srch-btn .sb-k{display:none}
.srch-btn[hidden]{display:none}
@media screen and (min-width:768px){
  header.top{gap:16px}
  .top-r{flex:1 1 auto;justify-content:flex-end}
  .srch-btn{width:auto;flex:0 1 360px;min-width:180px;height:40px;margin-right:auto;margin-left:8px;justify-content:flex-start;gap:10px;padding:0 10px 0 12px;border-radius:10px;background:var(--chrome2);border:1px solid #3B3B3B;color:#AFC8D6;font-size:.9rem}
  .srch-btn:hover{border-color:#476B7F;color:#fff;background:#2D2D2D}
  .srch-btn svg{width:18px;height:18px}
  .srch-btn .sb-l{display:block;flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .srch-btn .sb-k{display:inline-block;font:600 .72rem/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:#AFC8D6;border:1px solid #424242;border-radius:6px;padding:4px 6px;background:var(--accent)}
}
body.srch-on{overflow:hidden}
.srch-wrap{position:fixed;inset:0;z-index:70;display:flex;justify-content:center;align-items:stretch}
.srch-wrap[hidden]{display:none}
.srch-bg{position:absolute;inset:0;background:rgba(10,20,36,.5);opacity:0;transition:opacity .14s}
.srch{position:relative;display:flex;flex-direction:column;width:100%;height:100%;background:var(--bg);transform:translateY(10px);opacity:0;transition:transform .16s ease-out,opacity .14s}
.srch-wrap.open .srch{transform:none;opacity:1}
.srch-wrap.open .srch-bg{opacity:1}
@media (prefers-reduced-motion:reduce){.srch,.srch-bg{transition:none}}
.srch-top{display:flex;align-items:center;gap:8px;padding:calc(10px + var(--safe-t)) 12px 10px;background:var(--accent)}
.srch-box{position:relative;flex:1;display:flex;align-items:center;min-width:0}
.srch-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:19px;height:19px;color:var(--muted);pointer-events:none;display:flex}
.srch-ic svg{width:19px;height:19px}
.srch-box input{width:100%;min-height:44px;border:0;border-radius:12px;padding:8px 38px 8px 40px;font-size:16px;background:var(--zbFFF);color:var(--ink);-webkit-appearance:none;appearance:none;outline:none}
.srch-box input::-webkit-search-cancel-button{display:none}
.srch-box input:focus{box-shadow:0 0 0 3px rgba(255,184,0,.55)}
.srch-clr{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:50%;border:0;background:var(--zbE7EBF0);color:var(--muted);font-size:1.2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.srch-clr[hidden]{display:none}
.srch-x{flex:0 0 auto;border:0;background:transparent;color:#fff;font-weight:600;font-size:1rem;padding:10px 4px 10px 6px;cursor:pointer}
.srch-esc{display:none}
.srch-chips{display:flex;gap:6px;overflow-x:auto;padding:10px 12px 6px;scrollbar-width:none;flex:0 0 auto;border-bottom:1px solid var(--line);background:var(--bg)}
.srch-chips::-webkit-scrollbar{display:none}
.srch-chips[hidden]{display:none}
.sr-chip{flex:0 0 auto;border:1px solid var(--zlCBD7DD);background:var(--zbFFF);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;color:var(--ink);cursor:pointer;white-space:nowrap}
.sr-chip b{font-weight:700;color:var(--muted);margin-left:2px}
.sr-chip[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.sr-chip[aria-selected=true] b{color:#fff}
.srch-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 12px calc(24px + var(--safe-b));transition:opacity .12s}
.srch-body.busy{opacity:.6}
.sr-g{background:var(--zbFFF);border-radius:var(--r);box-shadow:var(--shadow);margin:10px 0;overflow:hidden}
.sr-gh{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 6px;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.sr-n{background:var(--zbEEF1F5);border-radius:999px;padding:2px 8px;font-size:.72rem;color:var(--ink)}
.srch-body>.sr-gh{padding-left:4px}
.sr-it{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:transparent;padding:10px 14px;min-height:56px;cursor:pointer;border-top:1px solid var(--zlEEF1F5);color:var(--ink)}
.sr-g .sr-gh+.sr-it{border-top:0}
.sr-rec{background:var(--zbFFF);border-radius:12px;margin:6px 0;border:0;min-height:48px;box-shadow:var(--shadow)}
.sr-it:hover,.sr-it.act{background:var(--zbFFF6DB)}
.sr-it:active{background:var(--zbFFEFC2)}
.sr-ic{flex:0 0 36px;width:36px;height:36px;border-radius:10px;background:var(--zbEEF2F7);color:var(--zf424242);display:flex;align-items:center;justify-content:center}
.sr-ic svg{width:19px;height:19px}
.sr-th{flex:0 0 36px;width:36px;height:36px;border-radius:8px;object-fit:cover;background:var(--zbEEF2F7)}
.sr-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.sr-tx b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-sub{font-size:.82rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-snip{font-size:.84rem;color:var(--zf414141);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sr-it mark{background:var(--zbFFE08A);color:inherit;border-radius:3px;padding:0 1px}
.sr-tag{flex:0 0 auto;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--zbEEF1F5);border-radius:999px;padding:3px 8px}
.sr-tag.bad{background:var(--zbFDE7E7);color:var(--red)}
.sr-tag.info{background:var(--zbE3F3FC);color:var(--blue)}
.sr-go{flex:0 0 auto;color:#A3B4BD;font-style:normal;font-size:1.2rem}
.sr-all{display:block;width:100%;border:0;border-top:1px solid var(--zlEEF1F5);background:var(--zbFAFBFC);color:var(--blue);font-weight:700;font-size:.88rem;padding:11px 14px;text-align:left;cursor:pointer}
.sr-all:hover{background:var(--zbF1F5FB)}
.sr-link{border:0;background:none;color:var(--blue);font-weight:700;font-size:.78rem;text-transform:none;letter-spacing:0;cursor:pointer;padding:2px 4px}
.sr-empty{text-align:center;color:var(--muted);padding:34px 18px 20px;max-width:420px;margin:0 auto}
.sr-empty b{display:block;color:var(--ink);font-size:1.05rem;margin:8px 0 6px}
.sr-empty p{margin:0;font-size:.9rem;line-height:1.45}
.sr-big{display:inline-flex;width:52px;height:52px;border-radius:50%;background:var(--zbE7EBF0);color:var(--zf5B6878);align-items:center;justify-content:center}
.sr-big svg{width:26px;height:26px}
.sr-cap{text-align:center;color:var(--muted);font-size:.82rem;margin:4px 0 0}
.sr-load{display:flex;justify-content:center;gap:6px;padding:30px}
.sr-load i{width:8px;height:8px;border-radius:50%;background:var(--zbA3B4BD);animation:srdot 1s infinite ease-in-out}
.sr-load i:nth-child(2){animation-delay:.15s}.sr-load i:nth-child(3){animation-delay:.3s}
@keyframes srdot{0%,80%,100%{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:none}}
.srch-foot{display:none}
@media screen and (min-width:768px){
  .srch-wrap{align-items:flex-start;padding:9vh 20px 20px}
  .srch{width:min(680px,100%);height:auto;max-height:78vh;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px rgba(10,20,36,.35);background:var(--zbFFF);transform:translateY(-8px) scale(.985)}
  .srch-top{background:var(--zbFFF);padding:10px 12px;border-bottom:1px solid var(--line)}
  .srch-box input{background:var(--zbFFF);font-size:1.05rem;min-height:46px}
  .srch-box input:focus{box-shadow:none}
  .srch-x{display:none}
  .srch-esc{display:inline-block;font:600 .72rem/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:5px 7px;background:var(--zbF5F7FA)}
  .srch-chips{background:var(--zbFFF)}
  .srch-body{padding:0 8px 8px;background:var(--zbFFF);min-height:120px}
  .sr-g{box-shadow:none;border-radius:0;margin:0;background:transparent}
  .sr-g+.sr-g{border-top:1px solid var(--line)}
  .sr-gh{padding:12px 10px 4px}
  .sr-it{border-top:0;border-radius:10px;min-height:50px;padding:8px 10px}
  .sr-rec{box-shadow:none;margin:0}
  .sr-all{border:0;background:transparent;border-radius:10px;padding:8px 10px 10px 58px}
  .srch-foot{display:flex;gap:18px;justify-content:flex-end;padding:8px 14px;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted);background:var(--zbFAFBFC)}
  .srch-foot kbd{font:600 .7rem/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:2px 5px;margin-right:3px;background:var(--zbFFF);color:var(--ink)}
}
/* list filters (v32) */
.lf{position:relative;display:block;margin:0 0 12px}
.lf-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted);pointer-events:none;display:flex}
.lf-ic svg{width:17px;height:17px}
.lf input{width:100%;min-height:42px;border-radius:999px;border:1.5px solid var(--zlCBD7DD);padding:6px 14px 6px 36px;font-size:16px;background:var(--zbFFF);-webkit-appearance:none;appearance:none}
.lf input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,0,0,.08)}
@media screen and (min-width:1024px){.lf{max-width:420px}}
.chat2-l .lf{margin:4px 0 10px}
.jp-main{min-width:0}
.jp-main>.lf{margin-bottom:12px}
.sr-flash{animation:srflash 2.2s ease-out}
@keyframes srflash{0%,30%{box-shadow:0 0 0 3px #FFB800;background-color:var(--zbFFF6DB)}100%{box-shadow:0 0 0 0 rgba(255,184,0,0)}}
@media (prefers-reduced-motion:reduce){.sr-flash{animation:none;box-shadow:0 0 0 3px #FFB800}}

/* ---------- v33: export · office clock · history · requests · sign-off · employee docs ---------- */
.v33i{display:inline-flex;width:1.05em;height:1.05em;vertical-align:-.16em;margin-right:.35em}
.v33i svg{width:100%;height:100%}
h2 .v33i{margin-right:.3em}
.x-btns .btn{display:inline-flex;align-items:center;justify-content:center}
.cl-exp,.ap-exp{display:inline-flex;align-items:center}
.ap-top .ap-exp{margin-left:auto}
.live-row{margin-top:6px}
.live-ob{display:inline-flex;align-items:center;padding:6px 12px}
.e-flags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.e-flags:empty{display:none}
.e-issue{background:var(--zbFFF8E6);border-color:var(--zlF5DFA6);padding:12px 14px;display:block;color:var(--ink);text-decoration:none}
.e-issue.info{background:var(--zbEEF4FD);border-color:var(--zlCFEAF8)}
.e-brk{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.e-brow{display:grid;grid-template-columns:1fr auto 1fr auto;gap:6px;align-items:center}
.e-brow input{min-width:0;width:100%}
.e-tools{margin-top:10px;flex-wrap:wrap}
.e-hist{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.e-hist summary{cursor:pointer;font-weight:700;display:flex;align-items:center;gap:4px;list-style:none}
.e-hist summary::-webkit-details-marker{display:none}
.e-hist summary .hn{color:var(--muted);font-weight:600}
.hist{list-style:none;margin:10px 0 0;padding:0 0 0 14px;border-left:2px solid var(--line)}
.hist li{position:relative;margin:0 0 12px}
.hist li::before{content:"";position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--zbFFF);border:2px solid var(--zl9AAEB9)}
.hist-h{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-size:.9rem}
.hist-h .muted{font-size:.8rem}
.hist-d{display:flex;flex-direction:column;gap:2px;font-size:.84rem;margin-top:3px}
.hist-d i{font-style:normal;color:var(--muted);display:inline-block;min-width:4.6em}
.hist-d s{color:var(--zf9E2323);text-decoration-thickness:1px}
.co-issue{margin:4px 0 14px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--zbFAFBFC)}
.co-issue summary{cursor:pointer;font-weight:700}
.co-issue .chips{margin-top:10px}
.ts-tabs{margin:0 0 12px}
.ts-tabs .badge{margin-left:4px;font-style:normal}
.treq{border-left:4px solid var(--amber)}
.treq.approved{border-left-color:var(--green)} .treq.declined{border-left-color:var(--red)} .treq.cancelled{border-left-color:var(--zlC4D1D8);opacity:.85}
.treq-diff{display:flex;flex-direction:column;gap:4px;margin:10px 0;padding:10px 12px;background:var(--zbF6F8FA);border-radius:10px;font-size:.92rem}
.treq-diff div{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
.treq-diff i{font-style:normal;color:var(--muted);min-width:4.2em}
.treq-diff s{color:var(--zf9E2323)}
.treq-diff b{color:var(--green-d)}
.treq-why{margin:6px 0;font-style:italic}
.treq .btn-row{margin-top:8px}
.linkbtn{background:none;border:0;color:var(--blue);padding:0;cursor:pointer;font-weight:600;text-decoration:underline}
.so-head{display:flex;gap:14px;align-items:flex-start;background:var(--hero);color:#fff;border:0}
.so-head h1{margin:0 0 4px;color:#fff}
.so-head .muted{color:#C9DCE6;margin:0}
.so-ic{flex:0 0 44px;height:44px;border-radius:12px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center}
.so-ic .v33i{width:24px;height:24px;margin:0}
.so-day{padding:10px 0;border-bottom:1px solid var(--line)}
.so-day:first-child{padding-top:0}
.so-day.off b:first-child{color:var(--muted);font-weight:600}
.so-ents{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;font-size:.88rem}
.so-ents li{display:flex;gap:10px;align-items:baseline}
.so-ents li>span:first-child{min-width:8.6em;font-variant-numeric:tabular-nums;color:var(--muted)}
.so-tot{padding-top:10px;font-size:1.02rem}
.so-acts{margin:4px 0 12px}
.so-card .so-list li{padding:10px 0;display:block}
.so-mine{display:flex;flex-direction:column;gap:2px;background:var(--zbEAF7F0);border-color:var(--zlD2EAC7)}
.mh-acts{margin:0 0 10px}
.wh-so{margin-top:3px;font-size:.7rem;padding:2px 7px;align-self:flex-start}
.todo-card{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--ink);background:var(--zbFFF8E6);border-color:var(--zlF5DFA6)}
.todo-card span{font-size:.85rem;color:var(--zf7A5600)}
.pp-head{display:flex;gap:14px;align-items:center;margin:0 0 12px}
.avatar.big{width:56px;height:56px;font-size:1.2rem}
.pp-tabs{margin:0 0 14px}
.pp-clock{display:block}
.pp-so .pill{font-size:.78rem}
.ed-list li{display:flex;gap:12px;align-items:center}
.ed-ic{font-size:1.5rem;line-height:1}
.ed-list .row.between{flex-wrap:wrap;gap:4px 8px}
.ed-top{flex-wrap:wrap;gap:8px}
.ed-req{border-left:4px solid var(--blue)}
.ed-req.todo{border-left-color:var(--amber);background:var(--zbFFFCF2)}
.ed-pick .btn{cursor:pointer;text-align:center}
.sheet-img{display:block;max-height:60vh;margin:0 auto 10px;border-radius:10px;object-fit:contain}
@media (min-width:1024px){
  .so-days,.so-head,.so-acts{max-width:760px}
  .ed-list li{padding:12px 4px}
}
/* ---------- v34: grouped clock actions · live today total ---------- */
.clock-actions{display:flex;flex-direction:column;gap:8px;padding:10px;margin-bottom:14px;border-radius:16px;background:var(--card,var(--zbFFF));box-shadow:var(--shadow)}
.clock-actions>*+*{margin-top:0}
@media (min-width:700px){.clock-actions{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:stretch}.clock-actions .btn{margin:0;height:100%}}
.clock-card .today-tot{margin-top:10px;font-size:1.05rem;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 6px}
.clock-card .today-tot b{font-size:1.35rem;font-variant-numeric:tabular-nums}
.clock-card .today-tot small{opacity:.8;font-size:.8rem}
.live-tot{color:var(--ink,inherit);font-variant-numeric:tabular-nums}

/* v35: sheets stay still on iPhone */
html.locked,html.locked body{overscroll-behavior:none}
.sheet-bg{touch-action:none}
.sheet.swap{animation:none}
.sheet.frozen{flex:none}
.asheet-wrap,.drawer,.srch-wrap{overscroll-behavior:contain}
/* iOS zooms the page when a field under 16px gets focus: every field in the app is 16px+ */
input,select,textarea{font-size:16px}
input[type=time],input[type=month]{width:100%;min-height:48px;border:1.5px solid var(--zlCBD7DD);border-radius:11px;padding:10px 12px;background:var(--zbFFF)}
input[type=time],input[type=date],input[type=datetime-local],input[type=month]{font-size:16px;min-height:48px;-webkit-appearance:none;appearance:none;background-color:var(--zbFFF);text-align:left;min-width:0}
.sheet input,.sheet select,.sheet textarea,.asheet input,.srch-box input{font-size:16px!important}
.filters select,.ap-sel select,.nfs-adv input{font-size:16px}
input::-webkit-date-and-time-value{text-align:left;min-height:1.3em}
.e-brk{min-height:48px}
.e-brow input{padding-left:8px;padding-right:6px}
.e-iss-acts{margin-top:6px;flex-wrap:wrap}
.e-issue.done{background:var(--zbF2FBF5);border-color:var(--zlCCE6BF)}
.e-iss-st{margin-top:4px;color:var(--zf2B6B0B)}
/* v35: lunch on the weekly review */
.so-dh{align-items:center;gap:8px}
.so-dr{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.so-lunch{display:inline-flex;align-items:center;gap:4px;font-size:.84rem;font-weight:600;color:var(--zf7A5600);background:var(--zbFFF4D1);border-radius:999px;padding:2px 9px;white-space:nowrap}
.so-lunch.none{color:var(--muted);background:var(--zbF1F3F6);font-weight:500}
.so-lunch .ic-lunch{width:1em;height:1em}
.so-el{white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.so-kpis .kpi span{white-space:nowrap}
.so-hrs{margin-top:3px;color:var(--ink)}
.so-hrs .linkbtn{margin-left:4px}
.mr-it{display:block;color:inherit;text-decoration:none;margin-bottom:10px}
.mr-it .small{margin-top:3px}
.mr-why{color:var(--ink)}
.sheet{overflow-x:hidden}
.sheet .btn-row>.field,.sheet .field{min-width:0}
.sheet input[type=datetime-local],.sheet input[type=date],.sheet input[type=time]{width:100%;max-width:100%;min-width:0}

/* ---------- v36: first paint while the app loads ----------
   Logged out: the loading card sits centred on the full screen (no empty sidebar gap).
   Logged in on this device: the sidebar and a Home skeleton show at once, so the screen is full from the first frame. */
.boot-sk{display:none}
html.boot-in #boot{display:block;min-height:0}
html.boot-in #boot .login-card{display:none}
html.boot-in #boot .boot-sk{display:block}
@media screen and (min-width:768px){
  body.no-tabs main{margin-left:0}
  html.boot-in body.no-tabs main,html.boot-in body.no-tabs header.top{margin-left:var(--sw)}
  html.boot-in .side[hidden]{display:flex!important}
}

/* v36: very long words or pasted links (notes, receipt descriptions, names) wrap instead of pushing a sheet or list row off the screen */
#sheetBody,#view li,#view p{overflow-wrap:anywhere}
#sheetBody table,#sheetBody table *,#view li table *{overflow-wrap:normal}

/* v36: the "More" heading on Home lines up with the tiles on very wide screens (it sat ~110 px to the left at 1920) */
@media screen and (min-width:768px){ main>h2.hmore{margin-left:auto;margin-right:auto} }

/* v36: on desktop, cards line up with the headings above them (they ignored the page's centred column, so headings sat
   ~85 px right of their cards on Time off, Reimbursements, Shopping list, Templates, ...). Pages that left-align on purpose keep it. */
@media screen and (min-width:768px){ main>.card:not(.stack):not(.nf-banner):not(.nf-empty):not(.nfs-help):not(.nfs-devs):not(.nfs-top):not(.nfs-list):not(.nf-list),main>.seg.sched-toggle,main>.matcounts{margin-left:auto;margin-right:auto} }

/* ===== Rebrand (preview v36): chrome, logo, light/dark ===== */
.top{background:var(--chrome);color:var(--chrome-ink);border-bottom:1px solid var(--chrome-line)}
.top .srch-btn,.top .bell-btn,.top .menu-btn,.top .back-btn{color:var(--chrome-ink)}
.brand{color:var(--chrome-ink);text-decoration:none}
.brand .logo-wide{height:30px;width:auto;border-radius:0;display:block}
.brand>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.brand small{color:var(--chrome-muted);border-left:1px solid var(--chrome-line)}
.who{background:var(--chrome2);border:1px solid var(--chrome-line);color:var(--chrome-ink)}
.logo-d{display:none!important}
.dr-head{background:var(--chrome);color:var(--chrome-ink);border-bottom:1px solid var(--chrome-line)}
.dr-x{background:var(--chrome2);color:var(--chrome-ink)}
.srch-top{background:var(--chrome);border-bottom:1px solid var(--chrome-line)}
.dv-top{background:#000}.dv-btn{background:#1A1A1A;border-color:#333}
.htile.wide.on{background:var(--go);border-color:var(--go);color:var(--go-ink)}
.clock-card.on .lbl,.clock-card.on .sub{opacity:.85}
.login-card .login-logo{display:block;width:210px;max-width:70%;height:auto;margin:0 auto 4px}
.login-card h1{font-size:1.2rem;margin-top:6px;letter-spacing:.02em}
.sd-brand img{border-radius:8px}
@media screen and (min-width:768px){
  .side{background:var(--chrome);color:var(--chrome-ink);border-right:1px solid var(--chrome-line)}
  .sd-brand{color:var(--chrome-ink);border-bottom:1px solid var(--chrome-line)}
  .sd-a{color:var(--chrome-muted)} .sd-a:hover{color:var(--chrome-ink)} .sd-a[aria-current=page]{color:#fff}
  .sd-sep{border-top-color:var(--chrome-line);color:var(--chrome-muted)}
  .srch-btn{background:var(--chrome2);border:1px solid var(--chrome-line);color:var(--chrome-muted)}
  header.top .brand small{color:var(--chrome-ink)}
}

/* v36: owner's own clock card on Live */
a.clock-card.live-me{display:block;text-decoration:none;color:#fff}
a.clock-card.live-me.on{color:var(--clock-on-ink)}
.live-me .timer{font-size:2.3rem;margin:4px 0 2px}
.live-me-go{font-weight:800;font-size:.9rem}
@media screen and (prefers-color-scheme: dark){
:root:not([data-theme=light]){
  color-scheme:dark;
  --accent:#028FDC; --accent-ink:#5CC0F5; --accent-soft:#1A1A1A; --focus:#3AAEEE;
  --ink:#F3F4F6; --muted:#9BA1A8; --line:#262626; --bg:#000; --card:#111;
  --amber:#F5B000; --amber-d:#F5C451; --green:#77D549; --green-d:#8FE063; --red:#F05252; --blue:#45B4F0;
  --chrome:#000; --chrome-ink:#fff; --chrome2:#1A1A1A; --chrome-line:#1F1F1F; --chrome-muted:#9BA1A8;
  --zwhite-rgb:24,24,24; --zink-rgb:255,255,255;
  --shadow:0 0 0 1px #1C1C1C;
  --zbFFF:#131313;
  --zlE9EDF2:#313131;
  --zbEEF2F7:#1B1B1B;
  --zf424242:#D3D3D3;
  --zbFFF3D6:#2E2511;
  --zf7A5600:#F5E2B7;
  --zbE8F5E2:#1C2816;
  --zf2B6B0B:#CEF1BD;
  --zbFDE7E7:#270F0F;
  --zf9E2323:#E1A3A3;
  --zf414141:#D4D4D4;
  --zlCBD7DD:#363C3F;
  --zbE6EAF0:#1F1F1F;
  --zf6B4B00:#F6E5BE;
  --zlF3D58C:#574A2C;
  --zbE8EDF3:#1E1E1E;
  --zbE3E9F1:#202020;
  --zbE0F2D7:#1F2E18;
  --zbDDE3EA:#242424;
  --zlFFF:#2B2B2B;
  --zlE1E6ED:#343434;
  --zbE5E3DF:#252525;
  --zf565656:#C8C8C8;
  --zf000:#E6E6E6;
  --zlE6E6E6:#343434;
  --zf6A7686:#B5B5B5;
  --zbE3F4FD:#212121;
  --zf176C9A:#A5D1E8;
  --zlCCE6BF:#374531;
  --zlF5C4C4:#472828;
  --zlF5DE9F:#52472A;
  --zlC3E5F7:#263C48;
  --zbF4F7FA:#181818;
  --zbFFF6DB:#2B2510;
  --zlF1DFA6:#4F472B;
  --zbFFF1F0:#181818;
  --zlF5C2BE:#492A28;
  --zf7A2E27:#E0B9B6;
  --zf5FC232:#A7D891;
  --zbFFF1D6:#2E2411;
  --zlF3C56B:#604F2F;
  --zf5A3A00:#F7E6C6;
  --zf7A4A00:#F5DCB7;
  --zl9AABB5:#454B4F;
  --zbFFF4D1:#302912;
  --zbEDE7FB:#212121;
  --zf4B2A9A:#B6A5DE;
  --zbF6F8FB:#171717;
  --zlC9D6DD:#353C40;
  --zfB45309:#EFBE98;
  --zbFFF8E1:#29230F;
  --zbFFF0C2:#362E15;
  --zbFFE7B0:#3E3218;
  --zf6B4A00:#F6E5BE;
  --zbFFF8E8:#261F0E;
  --zf8A6500:#F4E1AF;
  --zbFFF8E6:#27200F;
  --zlF3D27A:#5C4F2E;
  --zf8A5A00:#F4DCAF;
  --zbE3F3FC:#222222;
  --zf1A6C99:#A6D0E6;
  --zlF1B8B8:#4A2B2B;
  --zf028FDC:#87C9EE;
  --zfD99100:#EECD89;
  --zb97A8B2:#4F4F4F;
  --zf214F0B:#D8F2CB;
  --zbFFF6DC:#2B2410;
  --zf5C4300:#F7E9C5;
  --zbFFE9C2:#362A15;
  --zf6B4300:#F6E1BE;
  --zbDDF3F1:#172A29;
  --zf0D5F57:#C3F0EC;
  --zbF5F7FA:#181818;
  --zbF4F6F9:#181818;
  --zf5A6676:#BEBEBE;
  --zlE3E8EE:#333333;
  --zbFFF1C9:#332B13;
  --zlF2DE9F:#51482B;
  --zbF1F6FF:#171717;
  --zbDCF1FC:#242424;
  --zf465B66:#C0CBD0;
  --zbF7F9FC:#161616;
  --zlEEF1F5:#303030;
  --zb5AC1FA:#515151;
  --zlDADCE0:#373737;
  --zbF8FAFC:#161616;
  --zbF5F8FC:#171717;
  --zbE9EDF3:#1D1D1D;
  --zlB9CCD6:#384145;
  --zl9FB7C4:#40484D;
  --zbEEF4FC:#191919;
  --zbF2F5F9:#191919;
  --zbF2F4F8:#191919;
  --zlB9C7CF:#3B4145;
  --zlECEFF3:#313131;
  --zbEEF3FB:#191919;
  --zlF2F4F7:#2F2F2F;
  --zbF0F2F5:#1B1B1B;
  --zf313131:#DCDCDC;
  --zbE6ECF4:#1E1E1E;
  --zf255A0B:#D4F2C5;
  --zbFFFBF0:#181818;
  --zbF3F8FF:#171717;
  --zbFFF4D6:#2E2611;
  --zbE9F6E3:#1B2815;
  --zbFDE9E9:#260E0E;
  --zlCFEBFA:#243A46;
  --zbAAB8C0:#454545;
  --zbE4F3DD:#1D2A17;
  --zbCBD7DD:#323232;
  --zf7A5A00:#F5E4B7;
  --zf6B7280:#B7B7B7;
  --zbE7EBF0:#1F1F1F;
  --zbEEF1F5:#1B1B1B;
  --zbFFEFC2:#362D15;
  --zbFFE08A:#4F421E;
  --zbFAFBFC:#161616;
  --zbF1F5FB:#191919;
  --zf5B6878:#BDBDBD;
  --zbA3B4BD:#484848;
  --zlF5DFA6:#504529;
  --zbEEF4FD:#191919;
  --zlCFEAF8:#253A45;
  --zl9AAEB9:#444B4F;
  --zlC4D1D8:#383E41;
  --zbF6F8FA:#171717;
  --zbEAF7F0:#1C1C1C;
  --zlD2EAC7:#35432E;
  --zbFFFCF2:#171717;
  --zbF2FBF5:#181818;
  --zbF1F3F6:#1A1A1A;
}
  :root:not([data-theme=light]) .logo-l{display:none!important}
  :root:not([data-theme=light]) .logo-d{display:block!important}
}
:root[data-theme=dark]{
  color-scheme:dark;
  --accent:#028FDC; --accent-ink:#5CC0F5; --accent-soft:#1A1A1A; --focus:#3AAEEE;
  --ink:#F3F4F6; --muted:#9BA1A8; --line:#262626; --bg:#000; --card:#111;
  --amber:#F5B000; --amber-d:#F5C451; --green:#77D549; --green-d:#8FE063; --red:#F05252; --blue:#45B4F0;
  --chrome:#000; --chrome-ink:#fff; --chrome2:#1A1A1A; --chrome-line:#1F1F1F; --chrome-muted:#9BA1A8;
  --zwhite-rgb:24,24,24; --zink-rgb:255,255,255;
  --shadow:0 0 0 1px #1C1C1C;
  --zbFFF:#131313;
  --zlE9EDF2:#313131;
  --zbEEF2F7:#1B1B1B;
  --zf424242:#D3D3D3;
  --zbFFF3D6:#2E2511;
  --zf7A5600:#F5E2B7;
  --zbE8F5E2:#1C2816;
  --zf2B6B0B:#CEF1BD;
  --zbFDE7E7:#270F0F;
  --zf9E2323:#E1A3A3;
  --zf414141:#D4D4D4;
  --zlCBD7DD:#363C3F;
  --zbE6EAF0:#1F1F1F;
  --zf6B4B00:#F6E5BE;
  --zlF3D58C:#574A2C;
  --zbE8EDF3:#1E1E1E;
  --zbE3E9F1:#202020;
  --zbE0F2D7:#1F2E18;
  --zbDDE3EA:#242424;
  --zlFFF:#2B2B2B;
  --zlE1E6ED:#343434;
  --zbE5E3DF:#252525;
  --zf565656:#C8C8C8;
  --zf000:#E6E6E6;
  --zlE6E6E6:#343434;
  --zf6A7686:#B5B5B5;
  --zbE3F4FD:#212121;
  --zf176C9A:#A5D1E8;
  --zlCCE6BF:#374531;
  --zlF5C4C4:#472828;
  --zlF5DE9F:#52472A;
  --zlC3E5F7:#263C48;
  --zbF4F7FA:#181818;
  --zbFFF6DB:#2B2510;
  --zlF1DFA6:#4F472B;
  --zbFFF1F0:#181818;
  --zlF5C2BE:#492A28;
  --zf7A2E27:#E0B9B6;
  --zf5FC232:#A7D891;
  --zbFFF1D6:#2E2411;
  --zlF3C56B:#604F2F;
  --zf5A3A00:#F7E6C6;
  --zf7A4A00:#F5DCB7;
  --zl9AABB5:#454B4F;
  --zbFFF4D1:#302912;
  --zbEDE7FB:#212121;
  --zf4B2A9A:#B6A5DE;
  --zbF6F8FB:#171717;
  --zlC9D6DD:#353C40;
  --zfB45309:#EFBE98;
  --zbFFF8E1:#29230F;
  --zbFFF0C2:#362E15;
  --zbFFE7B0:#3E3218;
  --zf6B4A00:#F6E5BE;
  --zbFFF8E8:#261F0E;
  --zf8A6500:#F4E1AF;
  --zbFFF8E6:#27200F;
  --zlF3D27A:#5C4F2E;
  --zf8A5A00:#F4DCAF;
  --zbE3F3FC:#222222;
  --zf1A6C99:#A6D0E6;
  --zlF1B8B8:#4A2B2B;
  --zf028FDC:#87C9EE;
  --zfD99100:#EECD89;
  --zb97A8B2:#4F4F4F;
  --zf214F0B:#D8F2CB;
  --zbFFF6DC:#2B2410;
  --zf5C4300:#F7E9C5;
  --zbFFE9C2:#362A15;
  --zf6B4300:#F6E1BE;
  --zbDDF3F1:#172A29;
  --zf0D5F57:#C3F0EC;
  --zbF5F7FA:#181818;
  --zbF4F6F9:#181818;
  --zf5A6676:#BEBEBE;
  --zlE3E8EE:#333333;
  --zbFFF1C9:#332B13;
  --zlF2DE9F:#51482B;
  --zbF1F6FF:#171717;
  --zbDCF1FC:#242424;
  --zf465B66:#C0CBD0;
  --zbF7F9FC:#161616;
  --zlEEF1F5:#303030;
  --zb5AC1FA:#515151;
  --zlDADCE0:#373737;
  --zbF8FAFC:#161616;
  --zbF5F8FC:#171717;
  --zbE9EDF3:#1D1D1D;
  --zlB9CCD6:#384145;
  --zl9FB7C4:#40484D;
  --zbEEF4FC:#191919;
  --zbF2F5F9:#191919;
  --zbF2F4F8:#191919;
  --zlB9C7CF:#3B4145;
  --zlECEFF3:#313131;
  --zbEEF3FB:#191919;
  --zlF2F4F7:#2F2F2F;
  --zbF0F2F5:#1B1B1B;
  --zf313131:#DCDCDC;
  --zbE6ECF4:#1E1E1E;
  --zf255A0B:#D4F2C5;
  --zbFFFBF0:#181818;
  --zbF3F8FF:#171717;
  --zbFFF4D6:#2E2611;
  --zbE9F6E3:#1B2815;
  --zbFDE9E9:#260E0E;
  --zlCFEBFA:#243A46;
  --zbAAB8C0:#454545;
  --zbE4F3DD:#1D2A17;
  --zbCBD7DD:#323232;
  --zf7A5A00:#F5E4B7;
  --zf6B7280:#B7B7B7;
  --zbE7EBF0:#1F1F1F;
  --zbEEF1F5:#1B1B1B;
  --zbFFEFC2:#362D15;
  --zbFFE08A:#4F421E;
  --zbFAFBFC:#161616;
  --zbF1F5FB:#191919;
  --zf5B6878:#BDBDBD;
  --zbA3B4BD:#484848;
  --zlF5DFA6:#504529;
  --zbEEF4FD:#191919;
  --zlCFEAF8:#253A45;
  --zl9AAEB9:#444B4F;
  --zlC4D1D8:#383E41;
  --zbF6F8FA:#171717;
  --zbEAF7F0:#1C1C1C;
  --zlD2EAC7:#35432E;
  --zbFFFCF2:#171717;
  --zbF2FBF5:#181818;
  --zbF1F3F6:#1A1A1A;
}
:root[data-theme=dark] .logo-l{display:none!important}
:root[data-theme=dark] .logo-d{display:block!important}

/* rebrand: header logo visibility (after the theme blocks) */
a.brand{color:var(--chrome-ink)}
body.subpg .brand small{color:var(--chrome-ink)}
body.subpg .brand .logo-wide{display:none!important}
@media screen and (min-width:768px){
  body:not(.no-tabs) header.top .brand .logo-wide{display:none!important}
  body.no-tabs header.top .brand small{color:var(--chrome-muted);border-left-color:var(--chrome-line)}
}

body[data-pg=login] header.top .brand .logo-wide{display:none!important}
a.clock-card.live-me .timer{color:inherit}
body[data-pg=login] header.top{display:none}
body[data-pg=login] .login{min-height:calc(100vh - 40px)}
body[data-pg=home] header.top .brand small{display:none}
.srch-btn .sb-k{color:var(--chrome-muted)!important;border-color:var(--chrome-line)!important;background:transparent!important}
.cl-item.done .cl-box,.ap-cl li.done .ap-box{color:var(--go-ink)}

/* v37: a decline without a reason is flagged on the field */
.why-bad{border-color:var(--red)!important;box-shadow:0 0 0 3px rgba(240,82,82,.18)!important}

/* v37: exports and print are always light (paper), even when the phone is in dark mode */
.printdoc{background:#fff!important;color:#14181F!important;--ink:#14181F;--muted:#5B6878;--line:#E1E6ED;color-scheme:light;border-radius:12px}
.printdoc .muted{color:#5B6878!important}
.printdoc .pd-logo{height:40px;width:auto;display:block}
@media print{ :root{color-scheme:light} html,body{background:#fff!important;color:#14181F!important} .printdoc{border-radius:0} }

/* v37: the wide sidebar on computers shows the real logo (icon only when the sidebar is narrow) */
.sd-brand .sd-wide{display:none;height:34px;width:auto;border-radius:0!important}
@media screen and (min-width:1024px){
  .sd-brand>.sd-icon,.sd-brand>span{display:none!important}
  .sd-brand>.sd-wide-l{display:block}
}
@media screen and (min-width:1024px) and (prefers-color-scheme: dark){
  :root:not([data-theme=light]) .sd-brand>.sd-wide-l{display:none}
  :root:not([data-theme=light]) .sd-brand>.sd-wide-d{display:block}
}

/* v37: header stays on top while scrolling (phone, desktop, home-screen app); one-row page tabs stick under it */
header.top{position:sticky;position:-webkit-sticky;top:0;z-index:30}
.ts-tabs,.pp-tabs{position:sticky;position:-webkit-sticky;top:var(--toph,64px);z-index:15;box-shadow:0 0 0 6px var(--bg),0 6px 6px -2px var(--bg)}
@media screen and (min-width:768px){ .jp-side{top:calc(var(--toph,64px) + 14px)} }

/* ===== v37b (Nov 10) ===== */
/* App shell on phones: the header and the tab bar stay put and only the page area scrolls, like a native app.
   v37's sticky header + pinning the whole page under every sheet made iPhone Safari mis-draw sheets ("Schedule crew" froze),
   blurred the top edge while scrolling, and let the whole layout bounce like a web page (Shia, Nov 10). */
@media screen and (max-width:767px){
  html,body{height:100%;overflow:hidden;overscroll-behavior:none}
  body{display:flex;flex-direction:column;padding-bottom:0!important}
  header.top{position:relative;position:relative;flex:none;top:auto}
  main#view{flex:1 1 auto;min-height:0;width:100%;max-width:none;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;scroll-padding-top:8px;padding-bottom:calc(98px + var(--safe-b))}
  body.no-tabs main#view{padding-bottom:calc(24px + var(--safe-b))}
  body.chat-open main#view{padding-bottom:calc(76px + 68px + var(--safe-b))}
  html.locked main#view{overflow:hidden}
  .ts-tabs,.pp-tabs,.ap-bar{top:-14px}
  .chat-head{top:-14px}
  body[data-pg=login] .login{min-height:calc(100% - 40px)}
  /* no web-page feel on taps: no grey tap flash, no long-press text pick on buttons and tiles */
  a,button,.htile,.chip,.tabs a,.dr-a{-webkit-tap-highlight-color:transparent}
  button,.btn,.chip,.tabs,.htile,.dr-a,.seg button,.cal-d,header.top{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
}
/* Menu fills the whole screen height, safe area included */
.drawer-wrap{top:0;bottom:auto;height:100%;height:100lvh}
.drawer{height:100%;box-sizing:border-box;padding-bottom:var(--safe-b)}
/* Header: crisp logo at whole pixels, nothing soft on it */
header.top,header.top *{filter:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.brand .logo-wide{width:130px;height:36px}
@media screen and (max-width:360px){.brand .logo-wide{width:108px;height:30px}}
/* Job page title: street address, job # small under it */
#pageTitle.pt2{display:flex;flex-direction:column;line-height:1.1;min-width:0}
#pageTitle .pt-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#pageTitle .pt-s{font-size:.72rem;font-weight:600;opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Owner's own clock on top of Home */
.hgrid.own-clock{grid-template-columns:1fr;margin:0 0 12px}
.hgrid.own-clock .htile{min-height:84px}
/* Month calendar for job days */
.cal-pick{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px}
.cal-se{display:flex;align-items:center;gap:6px;margin:0 0 8px}
.cal-se>span{color:var(--muted)}
.cal-f{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);border-radius:12px;padding:7px 10px;font:inherit;cursor:pointer;text-align:left}
.cal-f small{font-size:.7rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.cal-f b{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.cal-f.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.cal-q{margin:0 0 8px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.cal-q .chip{justify-content:center;text-align:center;padding-left:4px;padding-right:4px;white-space:nowrap;font-size:.85rem;min-height:40px}
.cal-hd{display:flex;align-items:center;justify-content:space-between;margin:2px 0 6px}
.cal-hd b{font-size:1.05rem}
.cal-hd .btn{min-width:44px;min-height:40px;font-size:1.2rem}
.cal-wk,.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-wk span{text-align:center;font-size:.72rem;font-weight:800;color:var(--muted);padding:2px 0}
.cal-d,.cal-x{min-height:44px;border-radius:10px}
.cal-d{border:0;background:transparent;color:var(--ink);font:inherit;font-weight:700;font-size:1rem;cursor:pointer;padding:0;position:relative}
.cal-d.past{color:var(--muted);opacity:.55}
.cal-d.td{box-shadow:inset 0 0 0 2px var(--accent)}
.cal-d.in{background:var(--accent-soft);color:var(--accent-ink)}
.cal-d.in.skip{background:transparent;color:var(--muted);text-decoration:line-through}
.cal-d.s,.cal-d.e,.cal-d.in.skip.s,.cal-d.in.skip.e{background:var(--accent);color:#fff;opacity:1;text-decoration:none}
.cal-d:active{transform:scale(.94)}
.cal-hint{margin:8px 2px 0}
.js-see{display:inline-block;margin-top:8px}

.sj-row{margin:-4px 0 12px;flex-wrap:wrap}
.sj-row .btn{flex:0 1 auto}

/* ===== v37d (Nov 10) ===== */
/* iOS 27 home-screen app. black-translucent is gone (index.html), so the app starts below the status bar, which takes the page
   colour (theme-color), and the layout reaches the bottom of the screen. Without that tag iOS counts the status bar in 100vh/100lvh
   (WebKit bug 316008), so nothing in the installed app is sized by lvh/vh any more: the menu is 100% of the screen the app gets. */
@media (display-mode: standalone){
  .drawer-wrap{height:100%}
}
/* One-time tip for icons added before v37d (iOS reads the status-bar setting only when the icon is added) */
.readd{border:1.5px solid var(--accent);background:var(--card);border-radius:16px;padding:12px 14px;margin:0 0 12px}
.readd>b{display:block;font-size:1rem;margin:0 0 4px}
.readd .nowrap{white-space:nowrap;font-weight:700}
.readd ol{margin:.4em 0 .6em;padding-left:1.25em}
.readd li{margin:.15em 0}
.readd .row{gap:8px;justify-content:flex-end}


/* ===== v37e (Nov 10) ===== */
/* iOS 26/27 "scroll edge effect": in a home-screen app (and Safari) iOS draws a soft grey blur under the status bar unless a
   position:fixed element touching the top edge declares a solid colour; then iOS paints the status-bar strip that colour and drops
   the blur (WebKit WKWebView _shouldHideTopScrollPocket = has a visible fixed colour extension at the top). The phone shell's header
   is position:relative (v37b), so iOS found nothing and blurred using the page grey (#F5F6F8) over the white header.
   Fix: (1) an empty fixed strip at the top that declares the header colour and paints nothing (11px > WebKit's 10px "thin" cut-off,
   >=90% wide, opacity 1, frontmost); (2) on phones the page root is the header colour and the grey lives on the scrolling area, so even
   the fallback colour matches the header. Nothing here needs the icon to be added again. */
.ios-top-edge{display:none}
@supports (-webkit-touch-callout:none){
  @media screen and (max-width:767px){
    .ios-top-edge{display:block;position:fixed;top:0;left:0;right:0;height:11px;margin:0;padding:0;border:0;outline:0;box-shadow:none;
      z-index:2147483647;pointer-events:none;background-color:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent;transition:none}
    .ios-top-edge.pulse{height:12px}
  }
}
@media print{.ios-top-edge{display:none!important}}
@media screen and (max-width:767px){
  :root,html,body{background:var(--chrome)}
  main#view{background:var(--bg)}
  body[data-pg=login]{background:var(--bg)}
}

/* v37f: My clock — time since clock-in + today's total, big and live (Shia, Nov 10) */
.clock-card .since{font-size:1rem;font-weight:700;opacity:.9;margin:-2px 0 6px}
.clock-card .clk-nums{display:flex;gap:10px;margin:10px 0 12px}
.clock-card .clk-num{flex:1 1 0;min-width:0;background:rgba(0,0,0,.16);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:1px}
.clock-card .clk-num small{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;opacity:.88}
.clock-card .clk-num b{font-size:2rem;line-height:1.1;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.clock-card .clk-num span{font-size:.82rem;opacity:.9}
.clock-card .clk-num i{font-style:normal;font-variant-numeric:tabular-nums}
.htile.wide .ht-nums{flex-basis:100%;display:flex;gap:8px;margin-top:2px}
.htile.wide .ht-num{flex:1 1 0;min-width:0;background:rgba(0,0,0,.16);border-radius:12px;padding:7px 10px;display:flex;flex-direction:column}
.htile.wide .ht-num b{font-size:1.6rem;line-height:1.1;font-weight:800;font-variant-numeric:tabular-nums}
.htile.wide .ht-num small{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.9}
.htile.wide .ht-today{flex-basis:100%;font-size:.9rem;opacity:.95}
.htile.wide .ht-today b{font-variant-numeric:tabular-nums}

/* ===== v38: OnSite — tasks, requests, notes, contacts, undo, offline pill, far map ===== */
.ob-pill{display:inline-flex;align-items:center;gap:2px;padding:4px 9px;margin-right:4px;border-radius:999px;background:var(--amber,#f59e0b);color:#111;font-weight:700;font-size:.82rem;text-decoration:none;white-space:nowrap}
.ob-pill[hidden]{display:none}
.undo-bar{position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px 10px 16px;border-radius:14px;background:#111827;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.25);font-weight:600}
.undo-bar .btn{background:#fff;color:#111827;border-color:#fff;min-width:92px}
@media (min-width:768px){.undo-bar{left:auto;right:24px;bottom:24px;width:360px}}
@media (prefers-color-scheme:dark){.undo-bar{background:#f3f4f6;color:#111827}.undo-bar .btn{background:#111827;color:#fff;border-color:#111827}}
.tk-seg{display:flex;gap:6px;margin:12px 0 4px;flex-wrap:wrap}
.tk-seg button{flex:1;min-height:44px;border-radius:12px;border:1px solid var(--line,#d0d5dd);background:var(--card,#fff);color:inherit;font:inherit;font-weight:600;padding:6px 8px}
.tk-seg button[aria-pressed="true"]{background:var(--ink,#111827);color:var(--card,#fff);border-color:var(--ink,#111827)}
.list.tasks li.task{display:flex;gap:12px;align-items:flex-start}
.tk-box{flex:none;width:30px;height:30px;margin-top:1px;border-radius:9px;border:2px solid var(--line,#98a2b3);background:transparent;color:#fff;font-weight:800;font-size:1rem;line-height:1;cursor:pointer}
.task.done .tk-box{background:#16a34a;border-color:#16a34a}
.task.done .tk-t{text-decoration:line-through;opacity:.6}
.tk-note{margin-top:3px;white-space:pre-wrap}
.tk-doneby{margin-top:3px;color:#15803d}
.tk-late{color:var(--red,#d92d20);font-weight:600}
.task .grow[role=button]{cursor:pointer;min-width:0}
.jnotes li{display:block}
.jn-body{white-space:normal;overflow-wrap:anywhere;line-height:1.45}
.jn-meta{margin-top:4px}
.jn-act{margin-top:6px}
.jcontact{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.jcontact .grow{min-width:0;flex:1 1 160px}
.jc-act{display:flex;gap:6px}
.jc-act .btn{min-height:40px}
.jct{border:1px solid var(--line,#e4e7ec);border-radius:12px;padding:8px 10px 10px;margin-bottom:8px}
.mr-why{color:var(--muted,#667085)}
.far-map{height:300px;border-radius:14px;overflow:hidden;margin-bottom:6px;background:var(--line,#e4e7ec)}
.pf-dl{display:grid;gap:8px}
.app-ver{opacity:.75}
@media (prefers-color-scheme:dark){.tk-doneby{color:#4ade80}.jct{border-color:rgba(255,255,255,.14)}}

#pfF,#pfT,#mrD,#tkD{min-width:0;max-width:100%;width:100%;box-sizing:border-box}
.btn-row>.field{min-width:0}

/* v38b: login / boot screen — the wide ZAPRO logo with the app name "OnSite" under it */
.login-card .login-logo.login-wide{width:240px;max-width:78%;margin:4px auto 2px}
.login-card h1.login-app{font-size:1.65rem;font-weight:800;letter-spacing:.01em;margin:10px 0 2px;color:var(--ink,inherit)}

/* v38b: quote upload view (owner only) */
.qv-up .qv-btn{position:relative;cursor:pointer}
.qv-up .qv-btn.busy{opacity:.6;pointer-events:none}
.qv{padding-bottom:10px}
.qv-head{gap:10px;align-items:flex-start;margin-bottom:10px}
.qv-fn{overflow-wrap:anywhere}
.qv-acts{display:flex;gap:6px;flex-shrink:0}
.qv-err{background:rgba(245,176,0,.13);color:inherit;border-radius:10px;padding:10px 12px;line-height:1.4}
.qv-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 10px}
.qv-tile{border:1px solid var(--line,#e3e6ea);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;min-width:0}
.qv-tile .qv-k{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;opacity:.7}
.qv-tile b{font-size:1.05rem;font-variant-numeric:tabular-nums}
.qv-tile.big b{font-size:1.35rem}
.qv-tile.pr b{color:var(--green-d,#2e8b3a)}
.qv-disc{border:1px solid var(--line,#e3e6ea);border-radius:12px;padding:6px 10px 8px;margin:0 0 10px}
.qv-disc h3,.qv-sec summary{font-size:.95rem}
.qv-disc h3{margin:.3em 0}
.qv-disc li{padding:6px 0;gap:8px;align-items:baseline}
.qv-dv{color:var(--red,#c0392b);white-space:nowrap;font-variant-numeric:tabular-nums}
.qv-sec{border-top:1px solid var(--line,#e3e6ea);padding:6px 0}
.qv-sec summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px;padding:4px 0;list-style:none}
.qv-sec summary::-webkit-details-marker{display:none}
.qv-sec summary::before{content:'▸';display:inline-block;width:1em;transition:transform .15s}
.qv-sec[open] summary::before{transform:rotate(90deg)}
.qv-st{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums}
.qv-items li{padding:7px 0;border-bottom:1px solid var(--line,#eef0f2)}
.qv-items li:last-child{border-bottom:0}
.qv-amt{white-space:nowrap;font-variant-numeric:tabular-nums}
.qv-calc,.qv-pf{margin-top:2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.qv-pf{color:var(--green-d,#2e8b3a)}
.qv-mk{font-weight:600}
.qv-dl .qv-amt{color:var(--red,#c0392b)}
.qv-tot{border:1px solid var(--line,#e3e6ea);border-radius:12px;padding:8px 12px;margin:4px 0 8px;font-variant-numeric:tabular-nums}
.qv-tot .row{padding:3px 0}
.qv-grand{border-top:1px solid var(--line,#e3e6ea);margin-top:4px;padding-top:7px!important;font-size:1.15rem}
.qv-meta{margin:0 0 6px;opacity:.85}
.qv-chk{margin:.6em 0 0}
:root[data-theme=dark] .qv-err{background:rgba(255,170,0,.14)}
@media screen and (prefers-color-scheme: dark){:root:not([data-theme=light]) .qv-err{background:rgba(255,170,0,.14)}}
/* v38b: tasks search + category chips + category editor */
.tk-top{gap:8px}.tk-top #tkNew{flex:1}
.tk-find{margin:10px 0 6px}.tk-find input{width:100%}
.tk-chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tk-chips::-webkit-scrollbar{display:none}
.tk-chips .chip{flex-shrink:0;white-space:nowrap}
.tc-list .tc-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line,#eef0f2)}
.tc-row .tc-in{min-width:0}
.tc-ic{font-size:1.2rem;width:1.6em;text-align:center}
.tc-n{min-width:1.4em;text-align:center}


/* ===== v38c (Nov 10): keyboard open → no bottom tab bar (Shia: the bar rode up above the keyboard under the message box) =====
   body.kb is set by app.js while a typing field is focused or the visible viewport is clearly shorter than the screen.
   --kbh = how far the keyboard reaches into the layout viewport (0 when iOS has panned the page up for it). */
body.kb .tabs,body.kb #tabs{display:none!important}
@media screen and (max-width:767px){
  body.kb .composer{bottom:var(--kbh,0px)!important;padding-bottom:7px}
  body.kb main#view{padding-bottom:calc(var(--kbh,0px) + 24px)}
  body.kb.chat-open main#view{padding-bottom:calc(var(--kbh,0px) + 84px)}
  body.kb .undo-bar{bottom:calc(var(--kbh,0px) + 12px)}
  body.kb .toast{bottom:calc(var(--kbh,0px) + 16px)}
  body.kb.chat-open .toast{bottom:calc(var(--kbh,0px) + 84px)}
}

/* v38c (Shia, Nov 10): a job's section tabs on phones. Overview keeps the full job card + tab grid; every other section shows one slim
   "‹ Job name" line (back to Overview) and the sections as one row of scrollable chips, staying at the top while the section scrolls. */
.jp-slim{display:none}
@media screen and (max-width:767px){
  .jp-focus .jp-side>.card,.jp-focus .jp-side>.jp-all{display:none}
  .jp-focus .jp-side{position:sticky;position:-webkit-sticky;top:-14px;z-index:14;background:var(--bg);margin-top:-14px;padding-top:12px;box-shadow:0 6px 6px -4px var(--bg)}
  .jp-focus .jp-slim{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 0 6px;text-decoration:none;color:var(--ink);font-size:1.08rem}
  .jp-focus .jp-slim span{font-size:1.9rem;line-height:1;color:var(--accent);padding:0 4px 3px 0}
  .jp-focus .jp-slim b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .jp-focus .jobtabs{display:flex!important;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:4px;padding:4px;margin:0 0 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  .jp-focus .jobtabs::-webkit-scrollbar{display:none}
  .jp-focus .jobtabs a,.jp-focus .jobtabs a.jt-money{flex:0 0 auto;grid-column:auto;padding:8px 12px;font-size:.84rem;border-radius:999px;min-height:36px}
  .jp-focus .jobtabs a.jt-money .small{display:none}
}

/* ---- v39: emoji picker, employee color, Labels & icons, quote → materials ---- */
.emo{display:inline-flex;flex:none}
.emo-btn{display:inline-flex;align-items:center;gap:2px;min-width:52px;height:44px;padding:0 8px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font-size:1.35rem;line-height:1;cursor:pointer}
.emo-btn .emo-car{font-size:.7rem;color:var(--muted)}
.emo-btn[aria-expanded="true"]{outline:2px solid var(--focus,#2563eb);outline-offset:1px}
.emo-pop{flex-basis:100%;width:100%;margin:6px 0 4px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow)}
.emo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:4px}
.emo-opt{height:42px;border:0;border-radius:10px;background:transparent;font-size:1.45rem;cursor:pointer}
.emo-opt:active,.emo-opt:hover{background:var(--accent-soft,rgba(0,0,0,.06))}
.emo-own{gap:6px;margin-top:8px;align-items:center}
.emo-own .emo-free{min-width:0;font-size:1rem}
.tc-list .tc-row,.lb-list .lb-row{flex-wrap:wrap}
.lb-list{margin:0}
.lb-list .lb-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}
.lb-list .lb-row:last-child{border-bottom:0}
.lb-row .lb-in{min-width:0;flex:1 1 8em}
.lb-g>summary{cursor:pointer;padding:2px 0;list-style-position:inside}
.lb-save{padding-top:6px}
.lb-top{gap:8px;align-items:center}
.v39-col{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.v39-sw{width:36px;height:36px;border-radius:50%;border:2px solid var(--line);padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);background:var(--card);font-size:1rem}
.v39-sw[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 2px var(--card) inset}
.v39-sw.own{position:relative;overflow:hidden;background:conic-gradient(#ef4444,#f59e0b,#22c55e,#06b6d4,#3b82f6,#a855f7,#ef4444)}
.v39-sw.own input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0;padding:0}
.v39-qsync{gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0 10px;padding:8px 10px;border-radius:12px;background:var(--accent-soft,rgba(37,99,235,.08))}
.v39-qsync .small{flex:1 1 12em}
.v39-syn,.v39-miss{font-size:.72rem;white-space:nowrap}

/* ---- v39b: Money from the P&L · Materials filters, bulk status, export ---- */
.v39b-pl .v39b-src{line-height:1.35}
.v39b-pl .mt-grid b[data-v39b="cust"],.v39b-pl .mt-grid b[data-v39b="profit"]{font-size:1.3rem}
.v39b-choice{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--zbF5F7FA)}
.v39b-choice.ask{display:block;border:1.5px solid var(--amber,#f59e0b);background:transparent}
.v39b-secs{margin-top:10px}.v39b-secs summary{cursor:pointer;padding:4px 0}
button.mrow.v39b-manual{padding:5px 0}button.mrow.v39b-manual span,button.mrow.v39b-manual b{color:var(--muted)}
.v39b-src{margin:0 0 10px;color:var(--ink)}
.v39b-miss{border:1.5px solid var(--amber,#f59e0b)}
.v39b-q{margin:0 0 8px}
.v39b-chips{margin:0 0 8px}.v39b-chips .chip{display:inline-flex;align-items:center;gap:6px;min-height:38px}
.v39b-n{display:inline-block;min-width:1.5em;padding:1px 6px;border-radius:999px;background:var(--zbF5F7FA);color:var(--ink);font-size:.78rem;font-weight:700;text-align:center}
.chip.on .v39b-n{background:rgba(255,255,255,.25);color:#fff}
.v39b-tools{margin:0 0 10px}
.list.mats>li.mat.v39b-selrow{display:flex;flex-direction:row;align-items:center;gap:10px}
.mats li.v39b-selrow .mat-main{flex:1;min-width:0}
.v39b-ck{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 34px;cursor:pointer}
.v39b-ck input{width:22px;height:22px;accent-color:var(--accent)}
.list.mats>li.mat.v39b-on{background:var(--zbF5F7FA);border-radius:10px;box-shadow:inset 3px 0 0 var(--accent)}
.v39b-selecting #v39bList{margin-bottom:150px}
.v39b-bulk{position:fixed;left:50%;transform:translateX(-50%);width:min(560px,calc(100% - 16px));z-index:31;background:var(--zbFFF);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px rgba(0,0,0,.22);padding:10px 12px}
.v39b-bst{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.v39b-xbtns{display:grid;gap:8px}
.v39b-pdfnote{margin:.4em 0 .6em}

/* v39c: company info on the export sheet */
.v39c-from{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin:0 0 12px}
.v39c-from .grow{min-width:0}.v39c-from b{display:block}.v39c-l{display:block;line-height:1.35;overflow-wrap:anywhere}
#lbCo b{white-space:normal}

/* v40a: service calls */
.v40a-bar{margin:10px 0}
.v40a-new{white-space:nowrap}
.v40a-rem{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;border:1.5px solid #e5484d;background:rgba(229,72,77,.08);margin:0 0 10px;padding:12px 14px}
.v40a-rem b{display:block;color:#c4262c}
.v40a-rem .small{display:block;opacity:.85}
.v40a-rem-ic{font-size:1.4rem}
.v40a-rem i{font-style:normal;font-size:1.3rem;opacity:.6}
.v40a-q{margin:10px 0}
.v40a-q > b{display:block;margin:0 0 6px}
.v40a-q .seg{display:flex;flex-wrap:wrap}
.v40a-q .seg button{flex:1 1 auto}
.v40a-ask{border:1.5px solid var(--amber-d,#b7791f)}
.v40a-chk{display:flex;align-items:center;gap:8px;margin:10px 0 0;font-size:.95rem}
.v40a-chk input{width:20px;height:20px}
.v40a-big{font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;margin:.2em 0 .1em;letter-spacing:.5px}
.v40a-ml li{display:flex;align-items:center;gap:10px;justify-content:space-between}
.v40a-tbl{width:100%;border-collapse:collapse;margin-top:8px}
.v40a-tbl td{padding:8px 0;border-bottom:1px solid var(--line,rgba(127,127,127,.2));vertical-align:top}
.v40a-tbl td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}
.v40a-tot td{font-size:1.15rem;font-weight:800;border-bottom:0}
.v40a-amt{white-space:nowrap}
[data-theme=dark] .v40a-rem b{color:#ff8a8e}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .v40a-rem b{color:#ff8a8e}}

/* v40b: travel, edited amounts, service call running card */
.v40b-amt{font-weight:700;font-variant-numeric:tabular-nums;color:inherit;text-decoration:none;padding:2px 0;min-height:32px}
.v40b-ed{display:block;margin-top:3px;font-weight:400;white-space:nowrap}
.v40b-ed .pill{font-size:.7rem;padding:1px 6px}
.v40b-undo{font-size:1.05rem;padding:2px 6px;min-width:32px;min-height:32px}
.v40b-run{border:2px solid #2f9e44;background:rgba(47,158,68,.08);margin:0 0 12px}
.v40b-run-t{font-size:1.15rem;font-weight:700;margin:.35em 0 0}
.v40b-run-clk{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;margin:.1em 0;letter-spacing:.5px}
.v40b-clk .pill{font-size:.72rem}

/* ===== v40c: hourly jobs, completed jobs folded, company documents ===== */
.v40c-done > summary { cursor: pointer; padding: 2px 0; list-style: none; }
.v40c-done > summary::-webkit-details-marker { display: none; }
.v40c-done > summary::before { content: '▸'; display: inline-block; width: 1.1em; transition: transform .15s; color: var(--muted, #6b7685); }
.v40c-done[open] > summary::before { transform: rotate(90deg); }
.v40c-done .list { margin-top: 8px; }
.v40c-done li b, .v40c-done td b { opacity: .85; }
.v40c-fixed > summary { cursor: pointer; padding: 4px 0; }
.v40c-fixed-in { margin-top: 10px; }
.v40c-er.off .v40c-h, .v40c-er.billed { opacity: .6; }
.v40c-billed > summary { cursor: pointer; margin-top: 8px; }
.v40c-dates .field { margin-bottom: 6px; }
.v40c-dates input[type=date] { min-width: 0; width: 100%; }
.v40c-sum .mrows { margin: 0; }
.v40c-due { display: block; border-left: 4px solid var(--amber, #e8a33d); padding: 10px 12px; }
.v40c-due.soon, .v40c-due.bad { border-left-color: var(--red, #d64545); }
.v40c-due.bad { background: color-mix(in srgb, var(--red, #d64545) 9%, var(--card, #fff)); }
.v40c-due-a { gap: 10px; align-items: center; color: inherit; text-decoration: none; }
.v40c-due-a .grow { display: flex; flex-direction: column; min-width: 0; }
.v40c-due-a .small { color: var(--muted, #6b7685); }
.v40c-ack { margin: 6px 0 0 34px; }
.v40c-fgrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 700px) { .v40c-fgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.v40c-f { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 12px; color: inherit; text-decoration: none; min-height: 92px; }
.v40c-f b { font-size: .95rem; line-height: 1.25; overflow-wrap: anywhere; }
.v40c-fe { font-size: 1.6rem; line-height: 1.2; }
.v40c-doc.expired b { color: var(--red, #d64545); }
.v40c-doc .pill { flex: none; white-space: nowrap; }
.v40c-soon { border-left: 4px solid var(--amber, #e8a33d); }
.v40c-pdf { display: block; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer; padding: 18px 14px; }
.v40c-days { display: flex; flex-wrap: wrap; gap: 8px; }
.v40c-day { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.v40c-flist .lb-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.v40c-flist .lb-in { min-width: 0; flex: 1 1 8em; }
.v40c-bill a { font-weight: 600; }
.v40c-jb .seg { margin-top: 4px; }

/* ===== v40d: service call mode on the regular clock ===== */
.v40d-tg{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:4px 0 14px;padding:12px 14px;border:2px dashed var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit;cursor:pointer}
.v40d-tg-ic{font-size:1.6rem;line-height:1}
.v40d-tg-tx{flex:1;min-width:0}
.v40d-tg-tx b{display:block;font-size:1.05rem}
.v40d-tg-tx small{display:block;color:var(--muted);font-size:.8rem;line-height:1.3;margin-top:2px}
.v40d-tg-sw{flex:0 0 auto;width:46px;height:28px;border-radius:14px;background:var(--line);position:relative;transition:background .15s}
.v40d-tg-sw::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.v40d-tg.on{border-style:solid;border-color:#E8590C;background:rgba(232,89,12,.08)}
.v40d-tg.on .v40d-tg-sw{background:#E8590C}
.v40d-tg.on .v40d-tg-sw::after{transform:translateX(18px)}
.v40d-mode{border:3px solid #E8590C;background:linear-gradient(160deg,rgba(232,89,12,.14),rgba(232,89,12,.05));border-radius:18px;padding:14px 14px 12px;margin:0 0 14px;color:var(--ink)}
.v40d-mode-h{font-size:.98rem;line-height:1.35}
.v40d-mode-h b:first-of-type{color:#C2410C}
.v40d-mode-t{font-size:2.6rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.5px;margin:.1em 0 0;line-height:1.1}
.v40d-mode-s{margin:.2em 0 10px;font-size:.85rem;color:var(--muted)}
.v40d-mode-l{margin:8px 0 0;text-align:center;font-size:.85rem}
.v40d-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#E8590C;margin-right:6px;vertical-align:1px;animation:v40dPulse 1.6s ease-in-out infinite}
@keyframes v40dPulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion: reduce){.v40d-dot{animation:none}}
.btn.v40d-end{background:#E8590C;border-color:#E8590C;color:#fff}
.btn.v40d-start{background:var(--card);border:2px solid #E8590C;color:#C2410C}
.v40d-others{margin:0 0 12px}
.v40d-others .list>li{display:flex;align-items:center;gap:8px}
.v40d-rt button{display:flex;flex-direction:column;align-items:center;line-height:1.2}
.v40d-rt button small{font-size:.66rem;font-weight:600;color:#C2410C}
.v40d-mrow{display:flex;gap:6px;margin:0 0 6px}
.v40d-mrow input{min-width:0}
.v40d-mn{flex:1 1 auto}
.v40d-mq{flex:0 0 62px}
.v40d-mp{flex:0 0 78px}
.v40d-mx{flex:0 0 36px;border:1px solid var(--line);background:transparent;border-radius:10px;color:var(--muted);font-size:.9rem;cursor:pointer}
.v40d-endbtns{flex-wrap:wrap}
@media screen and (prefers-color-scheme: dark){:root:not([data-theme=light]) .v40d-mode-h b:first-of-type,:root:not([data-theme=light]) .btn.v40d-start,:root:not([data-theme=light]) .v40d-rt button small{color:#FF9A5C}}
:root[data-theme=dark] .v40d-mode-h b:first-of-type,:root[data-theme=dark] .btn.v40d-start,:root[data-theme=dark] .v40d-rt button small{color:#FF9A5C}

/* v40d: time card + tappable groups */
[data-grp] > .day-h{cursor:pointer;-webkit-user-select:none;user-select:none}
[data-grp] > .day-h > span:first-child::before{content:'▾ ';color:var(--muted)}
[data-grp].v40d-fold > .day-h > span:first-child::before{content:'▸ '}
[data-grp].v40d-fold > .card{display:none}
.v40d-gr{cursor:pointer;border-radius:10px;padding:4px 6px;margin:0 -6px}
.v40d-gr.on{background:var(--accent-soft,rgba(2,143,220,.1));outline:2px solid var(--accent)}
.v40d-gbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:8px 12px;border-radius:12px;background:var(--accent-soft,rgba(2,143,220,.1));font-size:.9rem}
.v40d-wk{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.v40d-wk .btn{min-width:44px}
.v40d-esvc{margin:2px 0 12px}

.v40d-kpis a.kpi{color:inherit;text-decoration:none;cursor:pointer}
.v40d-kpis a.kpi span{color:var(--muted)}
.v40d-plink{color:inherit;text-decoration:none}
.v40d-plink span{color:var(--muted)}

/* ===== v40e: simpler Home, one Needs-you card, More in the menu, tappable rows ===== */
.v40e-hi{margin:4px 0 10px}.v40e-hi h1{font-size:1.25rem;margin:0}.v40e-hi p{margin:2px 0 0;font-size:.9rem}
.v40e-atc{padding:4px 14px}
.v40e-at{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 0;color:var(--ink);text-decoration:none;border-top:1px solid var(--line);-webkit-tap-highlight-color:transparent}
.v40e-at:first-child{border-top:0}
.v40e-at:active{opacity:.6}
.v40e-at-ic{font-size:1.15rem;width:1.6em;text-align:center}
.v40e-at-n{min-width:1.6em;padding:1px 7px;border-radius:999px;background:var(--red,#d64545);color:#fff;font-size:.8rem;text-align:center}
.v40e-at i,.v40e-bill-a i{font-style:normal;color:var(--muted);font-size:1.3rem;line-height:1}
.v40e-todc{padding:2px 14px}.v40e-tod{cursor:pointer}.v40e-tod:active{opacity:.6}
.v40e-grid{margin-top:12px}
.v40e-allbtn{margin:12px 0 4px}
details.v40e-more{margin:8px 0}
details.v40e-more>summary{cursor:pointer;color:var(--muted);font-size:.92rem;font-weight:600;padding:6px 0;list-style:none}
details.v40e-more>summary::-webkit-details-marker{display:none}
details.v40e-more>summary::before{content:'▸ ';display:inline-block;transition:transform .15s}
details.v40e-more[open]>summary::before{content:'▾ '}
details.v40e-dmore>summary{list-style:none}details.v40e-dmore>summary::-webkit-details-marker{display:none}
details.v40e-dmore>summary::after{content:'▸';margin-left:auto;color:var(--muted);font-size:1rem}
details.v40e-dmore[open]>summary::after{content:'▾'}
.v40e-gh{font-size:.72rem!important;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 0 2px 10px}
.v40e-bill-a{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;width:100%}
.v40e-bill-a:active{opacity:.6}
.v40e-bill-ic{display:inline-flex;align-items:center;justify-content:center;border:0!important;background:none!important;font-size:1.1rem}
.v40e-review{border:2px solid var(--amber,#e0a100)}
.v40e-shsvc,.v40d-esvc{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.v40e-tap{cursor:pointer;-webkit-tap-highlight-color:transparent}
.v40e-tap:active{opacity:.6}
.v40e-chev::after{content:' ›';color:var(--muted);font-weight:400}

li[data-id] .job-pills .pill{cursor:pointer}
.v40e-mc .pill,#moneyCard .mt-grid>div,#moneyCard .mrow{cursor:pointer;-webkit-tap-highlight-color:transparent}
.v40e-mc .pill:active,#moneyCard .mt-grid>div:active,#moneyCard .mrow:active,li[data-id] .job-pills .pill:active{opacity:.6}
#moneyCard .mrow>span::after{content:' ›';color:var(--muted)}
.v40e-flash{animation:v40eFl 1.2s ease}
@keyframes v40eFl{0%{background:var(--accent-soft,#fff3c4)}100%{background:transparent}}

/* ===== v40f: job stages, milestone bills, quote builder ===== */
.v40f-stage{margin:.5em 0 .2em}
.v40f-strow{gap:6px;align-items:center;flex-wrap:nowrap}
.v40f-st{display:inline-flex;align-items:center;gap:.3em;border-radius:999px;padding:.28em .75em;font-size:.86rem;font-weight:600;line-height:1.2;background:var(--v40f-bg,#e8eef6);color:var(--v40f-fg,#1d3a5c);border:1px solid transparent;white-space:nowrap}
.v40f-st.sm{font-size:.74rem;padding:.12em .55em}
button.v40f-st{cursor:pointer;font:inherit;font-weight:600;font-size:.92rem;padding:.45em .9em;min-height:40px;max-width:100%;overflow:hidden;text-overflow:ellipsis;-webkit-tap-highlight-color:transparent}
button.v40f-st:active{transform:scale(.97);filter:brightness(.95)}
button.v40f-st:disabled{cursor:default}
.v40f-nx{font-weight:500;opacity:.7;font-size:.84em}
.v40f-pick{min-height:40px;padding:0 .7em}
.st-created{--v40f-bg:#eef0f3;--v40f-fg:#3b4654}
.st-approved{--v40f-bg:#e3f1ff;--v40f-fg:#0b5394}
.st-ordering{--v40f-bg:#fff3d6;--v40f-fg:#7a5200}
.st-started,.st-roughing{--v40f-bg:#ffe9d9;--v40f-fg:#8a3d00}
.st-rough_done{--v40f-bg:#e2f6e5;--v40f-fg:#1e6b2b}
.st-waiting_finish{--v40f-bg:#f1e8ff;--v40f-fg:#5b2d99}
.st-finishing{--v40f-bg:#e6f4f6;--v40f-fg:#0d5f6b}
.st-completed{--v40f-bg:#d9f2df;--v40f-fg:#14532d}
@media (prefers-color-scheme:dark){
 .st-created{--v40f-bg:#2b3138;--v40f-fg:#d2d9e2}.st-approved{--v40f-bg:#16324d;--v40f-fg:#a9d4ff}.st-ordering{--v40f-bg:#3d3112;--v40f-fg:#ffd98a}
 .st-started,.st-roughing{--v40f-bg:#41270f;--v40f-fg:#ffc59a}.st-rough_done{--v40f-bg:#173a20;--v40f-fg:#9ee3ab}.st-waiting_finish{--v40f-bg:#2f2245;--v40f-fg:#d7c0ff}
 .st-finishing{--v40f-bg:#103a40;--v40f-fg:#9fe2ec}.st-completed{--v40f-bg:#173d24;--v40f-fg:#a6ecb8}
}
.v40f-ms a.v40f-bl{white-space:nowrap}
.v40f-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--amber,#e6a100);vertical-align:middle}
.v40f-svc{margin-top:.5em}.v40f-svc summary{cursor:pointer;padding:.2em 0}
.v40f-fl{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 8px;margin:0 0 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.v40f-fl::-webkit-scrollbar{display:none}
.v40f-fl button{flex:0 0 auto;border:1px solid var(--line,#d8dee6);background:var(--card,#fff);color:inherit;border-radius:999px;padding:.32em .75em;font:inherit;font-size:.82rem;white-space:nowrap;cursor:pointer}
.v40f-fl button span{opacity:.6;margin-left:.15em}
.v40f-fl button[aria-pressed="true"]{background:var(--blue,#028fdc);border-color:var(--blue,#028fdc);color:#fff}
.v40f-fl button[aria-pressed="true"] span{opacity:.85}
.v40f-picklist li{display:flex;align-items:center;gap:8px;padding:.55em .2em}
.v40f-picklist li[aria-current="true"]{font-weight:600}
.v40f-undo{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;gap:10px;background:#1f2732;color:#fff;border-radius:12px;padding:.7em .9em;box-shadow:0 6px 24px rgba(0,0,0,.25);font-size:.92rem;max-width:520px;margin:0 auto}
.v40f-undo .linkbtn{color:#7fd0ff;font-weight:700}
.v40f-tbl{width:100%;border-collapse:collapse}.v40f-tbl td{padding:.35em 0;border-bottom:1px solid var(--line,#e3e8ee)}.v40f-tbl td.num{text-align:right;white-space:nowrap}.v40f-tbl tr.tot td{border-bottom:0;font-size:1.05rem;padding-top:.55em}
.v40f-sum .row{padding:.2em 0}
.v40f-g2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
.v40f-qh .field,.v40f-g2 .field{margin-bottom:8px}
.v40f-sech{gap:8px;align-items:center}
.v40f-lines li{padding:.5em .1em}
.v40f-prof{display:flex;justify-content:space-between;gap:8px;margin-top:.6em;padding:.5em .6em;border-radius:10px;background:var(--soft,#f3f6f9);font-size:.9rem}
@media (prefers-color-scheme:dark){.v40f-prof{background:rgba(255,255,255,.06)}.v40f-fl button{background:transparent;border-color:rgba(255,255,255,.18)}}
.v40f-lc{background:var(--soft,#f3f6f9);border-radius:8px;padding:.45em .6em;margin:.2em 0 .8em}
@media (prefers-color-scheme:dark){.v40f-lc{background:rgba(255,255,255,.06)}}
.v40f-ql .list li{padding:.45em .1em}

.v40f-ms{margin:.45em 0 0;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.v40f-bls{display:contents}
a.v40f-bl{display:inline-flex;align-items:center;gap:4px;padding:.15em .55em;border-radius:999px;border:1px solid var(--line,#d8dee6);color:inherit;text-decoration:none;font-size:.78rem;white-space:nowrap}
a.v40f-bl.sent,a.v40f-bl.paid{opacity:.7}
@media (prefers-color-scheme:dark){a.v40f-bl{border-color:rgba(255,255,255,.18)}}
.v40f-qh .field{display:block;margin:0 0 8px}
.v40f-qh .field .f,.v40f-g2 .field .f{display:block;font-size:.8rem;margin:0 0 3px}
.v40f-qh input,.v40f-g2 input{width:100%;box-sizing:border-box;min-width:0}
.v40f-g2>*{min-width:0}
.v40f-qh h1{margin-bottom:6px!important}

button.v40f-st{font-size:1rem;min-height:44px;padding:.5em 1em}
.v40f-st.big{font-size:1rem;padding:.5em 1em}
.v40f-stage{margin:.55em 0 .35em}
.v40e-tod .row .v40f-st{margin-left:auto}

/* v40g: 🚗 alternate side parking banner + 🔐 My account */
.v40g-asp{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;border:1px solid var(--line);border-left:5px solid var(--blue);background:var(--card);padding:.75em .9em;margin:10px 0;line-height:1.35;font-size:.95rem}
.v40g-asp i{font-style:normal;color:var(--muted);font-size:1.2rem}
.v40g-asp.warn{border-left-color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,var(--card))}
.v40g-asp.now{border-left-color:var(--red);background:color-mix(in srgb,var(--red) 12%,var(--card))}
.v40g-asp.ok{border-left-color:var(--green);background:color-mix(in srgb,var(--green) 10%,var(--card))}
.v40g-none{display:block;margin:6px 0 10px;text-align:left}
.v40g-st{margin:.4em 0 .8em;font-weight:600}.v40g-st.ok{color:var(--green-d)}.v40g-st.warn{color:var(--amber-d)}
.v40g-rules{list-style:none;padding:0;margin:0 0 12px}
.v40g-rules li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:.6em 0;border-bottom:1px solid var(--line)}
.v40g-rules li .small{grid-column:1/-1}
.v40g-more{margin-top:12px}.v40g-more summary{cursor:pointer;color:var(--muted);font-size:.9rem}
.v40g-er{padding:.7em;margin:0 0 10px}.v40g-er select{max-width:9.5em}.v40g-er input[type=time]{width:7.4em}
.v40g-dchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.v40g-dchips label{position:relative}.v40g-dchips input{position:absolute;opacity:0;inset:0;margin:0}
.v40g-dchips span{display:inline-block;min-width:2.9em;text-align:center;padding:.4em .5em;border:1px solid var(--line);border-radius:999px;font-size:.88rem}
.v40g-dchips input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff);font-weight:700}
.v40g-dchips input:focus-visible+span{outline:2px solid var(--focus)}
.v40g-acc h3{margin:0 0 .5em}
.v40g-li{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:.5em 0;border-bottom:1px solid var(--line)}
.v40g-li:last-of-type{margin-bottom:10px}
.v40g-qr{background:#fff;border-radius:12px;padding:10px;width:220px;max-width:70vw;margin:6px auto 10px}.v40g-qr svg{display:block;width:100%;height:auto}
.v40g-key{word-break:break-all;font-size:.95rem}
.v40g-steps{padding-left:1.3em;margin:.3em 0 .8em}
.v40g-bk{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:.6em 0 1em}.v40g-bk code{font-size:1.05rem;letter-spacing:.04em}
.v40g-van{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}.v40g-van h3{margin:0 0 .3em}
.v40g-face{display:grid;gap:2px;width:100%;text-align:left;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.6em .8em;margin:6px 0;cursor:pointer}
.v40g-face:active{background:var(--accent-soft)}

/* v40h: 📅 calendar */
.v40h-one { display: inline-block; padding: 4px 0; font-weight: 600; text-decoration: none; }
.v40h-note { margin: 12px 0 8px; }
.v40h-more summary { cursor: pointer; color: var(--muted, #6b7280); font-size: .9rem; padding: 6px 0; }
a.btn.v40h-g, a.btn.v40h-i { text-align: center; text-decoration: none; }

/* ---------- v40i: app name "OnSite" in the header + login (small app mark, no wide company logo) ---------- */
header.top .brand .v40i-mark{display:block!important;width:28px;height:28px;border-radius:7px;flex:0 0 auto}
header.top .brand .v40i-name{display:none;font-weight:800;font-size:1.3rem;letter-spacing:.01em;color:var(--chrome-ink);white-space:nowrap}
body[data-pg=home] header.top .brand .v40i-name,body.no-tabs header.top .brand .v40i-name,body[data-pg=login] header.top .brand .v40i-name{display:inline}
body.no-tabs header.top .brand small{display:none}
body.subpg header.top .brand .v40i-mark{display:none!important}
.login-card .v40i-lmark{display:block;width:64px;height:64px;border-radius:15px;margin:6px auto 0}
.chat-hdr[hidden]{display:none!important}
.chat-hdr{position:relative;color:inherit}
.chat-hdr svg{width:22px;height:22px}
/* the round camera sits 30px above the bar: keep the last card clear of it */
main#view{padding-bottom:calc(122px + var(--safe-b))}
/* ---------- v40i: 📦 OnHand stock on Materials ---------- */
.v40i-st{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:transparent;border:0;border-top:1px dashed var(--line);margin:6px 0 0;padding:6px 0 4px;font:inherit;color:inherit;cursor:pointer}
.v40i-nums{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.84rem}
.v40i-nums b{font-weight:800}
.v40i-ok .v40i-to{color:var(--green-d,var(--green))}
.v40i-part .v40i-to,.v40i-out .v40i-to{color:var(--red)}
.v40i-loc{font-size:.8rem;color:var(--muted)}
.v40i-nf{color:var(--muted);font-style:italic}
.v40i-sum{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;text-align:left;position:relative;padding-right:30px;cursor:pointer;font:inherit;color:inherit;margin:0 0 10px;border:1px solid var(--line)}
.v40i-sum-t{font-size:1rem}
.v40i-sum i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;color:var(--muted);font-size:1.4rem}
.v40i-exp{border-left:4px solid var(--amber);display:flex;flex-direction:column;gap:3px;margin:0 0 10px}
.v40i-soon{color:var(--amber-d,var(--amber));margin:0 0 8px}
.v40i-off{margin:0 0 10px}
.v40i-big{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0 12px}
.v40i-big>div{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center;display:flex;flex-direction:column;gap:2px}
.v40i-big b{font-size:1.5rem}
.v40i-big-to b{color:var(--red)}
.v40i-big-ok b{color:var(--green-d,var(--green))}
.v40i-locs li,.v40i-list li{display:flex;align-items:center;gap:10px}
.v40i-locs li{padding:8px 0}
.v40i-locs .grow,.v40i-row .grow{display:flex;flex-direction:column;min-width:0}
.v40i-row{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;padding:8px 0;font:inherit;color:inherit;text-align:left;cursor:pointer}
.v40i-rq{white-space:nowrap;text-align:right}
.v40i-h{font-size:.95rem;margin:14px 0 4px}
.v40i-one{margin:0 0 10px}
.v40i-how{margin-top:10px;display:inline-block}
.v40i-cant{margin:0 0 10px}

/* v40j: 🔒 Face ID for money screens */
.v40j-lock { text-align: center; padding: 18px 6px 8px; }
.v40j-lock .v40j-ic { font-size: 44px; line-height: 1; margin-bottom: 6px; }
.v40j-lock h2 { margin: 0 0 16px; }
.v40j-lock .v40j-pinl { display: inline-block; margin-top: 14px; }
.v40j-lock .v40j-pin { text-align: left; margin-top: 14px; }
.v40j-lock .err { min-height: 1.2em; margin: 10px 0 0; }
.v40j-row { display: flex; flex-direction: column; gap: 2px; text-decoration: none; color: inherit; }

/* ===== v40k: 📦 Inventory (OnHand) · 🚐 Vehicles · 🕒 service call times ===== */
.v40k-seg{display:flex;background:var(--zbE6EAF0);border-radius:11px;padding:3px;gap:3px;margin:4px 0 10px}
.v40k-seg a{flex:1;text-align:center;border-radius:9px;padding:9px 6px;font-weight:700;font-size:.9rem;color:var(--zf414141);text-decoration:none}
.v40k-seg a[aria-current=page]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.v40k-bar{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.v40k-bar .ap-q input{width:100%}
.v40k-fl{display:flex;gap:6px;align-items:center}
.v40k-fl label{flex:1;min-width:0}.v40k-fl select{width:100%;min-width:0;font-size:.9rem;padding:8px 6px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink)}
.v40k-lowb{white-space:nowrap}.v40k-lowb.on{background:var(--zbFFF3D6);border-color:var(--amber);color:var(--zf7A5600)}
.v40k-cnt{margin:6px 2px}
.v40k-row{display:flex;gap:10px;align-items:center;width:100%;text-align:left;background:none;border:0;padding:2px 0;color:inherit;font:inherit;cursor:pointer}
.v40k-row .grow{min-width:0}.v40k-row .grow b{display:block;overflow-wrap:anywhere}.v40k-row .grow .small{display:block;overflow-wrap:anywhere}
.v40k-q{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:52px;text-align:right}.v40k-q b{font-size:1.05rem}
.v40k-row.low .v40k-q b{color:var(--red)}
li:has(> .v40k-row.low){box-shadow:inset 3px 0 0 var(--amber)}
.v40k-st li{display:flex;gap:10px;align-items:center}.v40k-st li .grow .small{display:block}
.v40k-st li.low{background:var(--zbFFF3D6)}
.v40k-sq{display:flex;flex-direction:column;align-items:flex-end;text-align:right}.v40k-lowt{color:var(--red);font-weight:700}
.v40k-tot{margin:8px 2px}
.v40k-acts{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 4px}.v40k-acts .btn{padding:10px 4px;font-size:.88rem;white-space:nowrap}
.v40k-say{font-size:1.15rem;font-weight:700;line-height:1.35;margin:4px 0 8px;overflow-wrap:anywhere}
.v40k-jobuse{margin-top:12px;display:flex;flex-direction:column;gap:6px;align-items:center}
.v40k-mv li{display:flex;gap:8px}
.v40k-dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:.6em 0 0}.v40k-dl dt{color:var(--muted,#6b7280);font-size:.88rem}.v40k-dl dd{margin:0;overflow-wrap:anywhere}
.v40k-gps,.v40k-cam,.v40k-tc{margin-top:10px}
.v40k-vrow,.v40k-vdoc{text-decoration:none;color:inherit;gap:8px}
.v40k-t{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:4px;color:var(--ink)}.v40k-t b{font-weight:700}.v40k-t-w{flex-basis:100%;color:var(--muted,#6b7280)}
.v40k-pp li{display:flex;gap:8px}
.v40k-unl{margin:6px 0 4px}

/* v40l: readable text on the pressed stage filter in dark mode (was white on light blue, 2.3:1) */
@media (prefers-color-scheme: dark) { .v40f-fl button[aria-pressed="true"] { background: #0b6aa6; border-color: #0b6aa6; color: #fff; } }
[data-theme=dark] .v40f-fl button[aria-pressed="true"] { background: #0b6aa6; border-color: #0b6aa6; color: #fff; }
/* v40l: "Not clocked in" on the blue Home clock tile was yellow on blue (2.5:1); pale yellow reads better */
.htile.wide .ht-st.ht-off { color: #FFF1BF; }

/* v40l: owner taps a crew name on a job to open that person ("anything showing info opens its detail") */
.tm-name { color: inherit; text-decoration: none; }
.tm-name b { text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 30%, transparent); text-underline-offset: 3px; }

/* ===== v40m: fast Inventory · moves · places · OnHand jobs · type-ahead Use · scan ===== */
.v40k-seg.v40m-seg{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.v40k-seg.v40m-seg::-webkit-scrollbar{display:none}
.v40k-seg.v40m-seg a{flex:1 0 auto;white-space:nowrap;padding:9px 10px}
.v40m-scan{min-width:46px;min-height:42px;padding:0 10px;border-radius:999px;font-size:1.15rem;flex:0 0 auto}
.v40m-qrow{display:flex;gap:8px;align-items:center}
.v40m-qrow .ap-q{flex:1 1 auto}
.v40k-bar .v40m-scan{margin-left:6px}
.v40m-acts{margin:4px 0 6px;gap:8px}
.v40m-none b{opacity:.75}
.v40m-mv .v40k-row{align-items:flex-start}
.v40m-ic{flex:0 0 26px;font-size:1.05rem;line-height:1.4}
.v40m-said{display:block;font-style:italic;overflow-wrap:anywhere}
.v40m-dates{gap:8px;margin-top:6px}
.v40m-dates label{display:flex;align-items:center;gap:6px;flex:1 1 0;min-width:0}
.v40m-dates input{flex:1 1 auto;min-width:0;min-height:38px;border-radius:10px;border:1.5px solid var(--zlCBD7DD);background:var(--zbFFF);color:var(--ink);padding:4px 8px;font-size:15px}
.v40m-shelf{font-size:1rem;margin:2px 0 6px}
.v40m-jobuse{margin:10px 0}
.v40m-jobuse .v40k-list{margin-top:6px}

.v40m-prac{display:flex;flex-direction:column;gap:2px;background:#FFF4D6;border:1.5px solid #E8B93A;color:#4A3500;padding:10px 12px;margin:0 0 10px}
.v40m-prac .small{color:#6B5200}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .v40m-prac{background:#3A2E0A;border-color:#8A6A12;color:#FFE7A3}:root:not([data-theme=light]) .v40m-prac .small{color:#F2D78A}}
:root[data-theme=dark] .v40m-prac{background:#3A2E0A;border-color:#8A6A12;color:#FFE7A3}:root[data-theme=dark] .v40m-prac .small{color:#F2D78A}
.v40m-spin{width:34px;height:34px;margin:14px auto;border-radius:50%;border:4px solid var(--zlCBD7DD);border-top-color:var(--ink);animation:v40mSp 0.9s linear infinite}
@keyframes v40mSp{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.v40m-spin{animation:none}}

.v40m-tall{min-height:58vh}

/* ===== v40n (Nov 11): 🏠 Home is the main menu — big buttons on top, every screen in plain rows below ===== */
.v40n-hi{margin-bottom:10px}
.v40n-clk{min-height:0!important;padding:12px 14px!important}
.v40n-clk .ht-ic{font-size:1.7rem!important}
.v40n-clk .ht-num{padding:5px 10px!important}
.v40n-clk .ht-num b{font-size:1.35rem!important}
.v40n-tiles{margin-top:12px}
.v40n-tiles .htile{min-height:104px;padding:13px 12px 11px}
.v40n-tiles .ht-ic{font-size:1.85rem}
.v40n-tiles b{font-size:1.08rem}
.v40n-n{font-weight:600}
.v40n-n.warn{color:var(--amber-d);font-weight:800}
.v40n-n.ok{color:var(--green-d);font-weight:800}
@media (max-width:599px){.v40n-tiles.odd .htile:last-child{grid-column:1/-1;min-height:64px;flex-direction:row;align-items:center;gap:4px 12px;flex-wrap:wrap}.v40n-tiles.odd .htile:last-child .ht-ic{margin:0}}
.v40n-edit{margin:16px 0 4px;text-align:center}
.v40n-edit .btn{min-height:48px}
#v40eAttn .hmore{margin-top:16px}
.v40n-sec .hmore{margin-top:16px}
.v40n-g{padding:2px 14px}
.v40n-r{display:flex;align-items:center;gap:12px;min-height:54px;padding:8px 0;color:var(--ink);text-decoration:none;border-top:1px solid var(--line);-webkit-tap-highlight-color:transparent}
.v40n-r:first-child{border-top:0}
.v40n-r:active{opacity:.6}
.v40n-r .grow{font-size:1.02rem;font-weight:600;min-width:0}
.v40n-ic{font-size:1.35rem;width:1.7em;text-align:center;flex:0 0 auto}
.v40n-r i{font-style:normal;color:var(--muted);font-size:1.4rem;line-height:1}
.v40n-b{display:contents}
.v40n-b .tbadge{position:static;box-shadow:none;flex:0 0 auto;min-width:22px;height:22px;font-size:.78rem}
.v40n-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.v40n-pk{display:flex;align-items:center;gap:8px;min-height:50px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;font-weight:600}
.v40n-pk input{width:22px;height:22px;flex:0 0 auto}
@media screen and (min-width:768px){.v40n-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:0 16px;align-items:start}}
@media screen and (prefers-color-scheme: dark){:root:not([data-theme=light]) .v40n-n.warn{color:var(--amber)}:root:not([data-theme=light]) .v40n-n.ok{color:var(--green)}}
:root[data-theme=dark] .v40n-n.warn{color:var(--amber)}
:root[data-theme=dark] .v40n-n.ok{color:var(--green)}

/* v40o: Item picker (stock type-ahead + 📷 in the box) */
.v40o-pk{display:flex;gap:8px;align-items:center}
.v40o-pk input{flex:1 1 auto;min-width:0}
.v40o-cam{min-width:52px;min-height:48px;padding:0 10px;font-size:1.25rem;flex:0 0 auto;border-radius:12px}
.v40o-box{margin:-6px 0 12px;border:1.5px solid var(--line);border-radius:14px;background:var(--card);max-height:min(50vh,420px);overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;box-shadow:var(--shadow)}
.v40o-box .list{margin:0;padding:0 12px}
.v40o-box .list>li{padding:0;border-top:1px solid var(--line)}
.v40o-box .list>li:first-child{border-top:0}
.v40o-box .list>li>button{min-height:56px;padding:8px 0}
.v40o-h{font-size:.78rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);padding:10px 12px 2px;border-top:1px solid var(--line)}
.v40o-box>.v40o-h:first-child{border-top:0}
.v40o-p{margin:0;padding:10px 12px}
.v40o-free b{color:var(--accent)}
.v40o-spin{display:inline-block;width:16px;height:16px;vertical-align:-3px;margin:0 6px 0 0}
.v40o-tag{display:flex;gap:8px;align-items:center;margin:-6px 0 12px;padding:8px 10px;border-radius:12px;background:var(--accent-soft);border:1px solid var(--line)}
.v40o-tag .grow{flex:1 1 auto;min-width:0}.v40o-tag .small{display:block;overflow-wrap:anywhere}
.v40o-x{min-width:44px;min-height:44px;padding:0;flex:0 0 auto}
.v40o-take{min-height:44px;margin:0 0 6px}
.v40o-prac{margin:0 0 12px;border-radius:10px}
.v40o-prac{display:block}

/* ===== v40p: 💵 To bill · 🔗 OnHand link · one Settings · editable bottom bar ===== */
.v40p-seg{flex-wrap:wrap}
.v40p-seg button{min-height:48px}
.v40p-n{display:inline-flex;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--red);color:#fff;font-weight:800;align-items:center;justify-content:center}
.v40p-go{width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit}
.v40p-list{margin:0;padding:0}
.v40p-row{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-bottom:1px solid var(--line);list-style:none}
.v40p-row:last-child{border-bottom:0}
.v40p-a{display:flex;align-items:flex-start;gap:10px;text-decoration:none;color:inherit;min-height:56px}
.v40p-a .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.v40p-t{font-size:1.02rem;overflow-wrap:anywhere}
.v40p-s,.v40p-m{overflow-wrap:anywhere}
.v40p-rv{color:var(--amber-d,#8A5A00);font-weight:700}
.v40p-ic{font-size:1.4rem;line-height:1.2;flex:0 0 auto}
.v40p-amt{flex:0 0 auto;font-size:1.05rem;white-space:nowrap;padding-left:6px}
.v40p-lock{color:var(--muted)}
.v40p-mk{align-self:flex-end;min-height:48px;padding:0 16px}
.v40p-unl{width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit}
.v40p-oh .v40p-ohh{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.v40p-oh .v40p-ohh .grow{display:flex;flex-direction:column;min-width:0}
.v40p-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.v40p-tb{min-height:52px;display:flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700}
.v40p-pick{width:100%;min-height:56px;background:transparent;border:0;font:inherit;color:inherit;text-align:left;padding:8px 0;cursor:pointer}
.v40p-pick .grow{display:flex;flex-direction:column}
.v40p-free{display:flex;align-items:center;gap:10px;padding:10px 0}
.v40p-free .grow{display:flex;flex-direction:column;min-width:0}
.v40p-add{min-height:48px;white-space:nowrap}
.v40p-sec{margin-bottom:6px}
.v40p-srow{width:100%;min-height:58px;background:transparent;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:8px;text-decoration:none}
.v40p-srow .grow{display:flex;flex-direction:column}
.v40p-ol{margin:0;padding:0}
.v40p-ord{display:flex;align-items:center;gap:6px;min-height:56px;border-bottom:1px solid var(--line);list-style:none}
.v40p-ck{display:flex;align-items:center;gap:8px;min-height:52px;cursor:pointer}
.v40p-ck input{width:24px;height:24px}
.v40p-mv{min-width:48px;min-height:48px;padding:0}
.v40p-fix{color:var(--muted);padding-left:6px;gap:10px}
.v40p-prev{position:static!important;box-shadow:none;margin:0 0 10px;border:1px solid var(--line);border-radius:14px;pointer-events:none}
/* bottom bar: two equal halves, the camera exactly in the middle whatever the count */
.tabs.v40p-bar{gap:0}
.tabs.v40p-bar .v40p-half{flex:1 1 0;display:flex;min-width:0}
.tabs.v40p-bar .v40p-half a{flex:1 1 0;min-width:0;padding:6px 1px;font-size:.68rem}
.tabs.v40p-bar .v40p-half a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tabs.v40p-bar .tab-cam{flex:0 0 68px}
.v40p-bi{font-size:1.3rem;line-height:24px;height:24px}
.tbadge.bill{background:#0E8A4A}
.v40p-ufix{display:flex;flex-direction:column;justify-content:center;min-height:48px;padding:6px 12px;border:1px solid var(--line);border-radius:12px;background:var(--accent-soft)}
.v40p-ufix b{font-size:1.05rem}
.v40p-warn{background:#FFF4D6;border:1.5px solid #E8B93A;color:#4A3500;border-radius:14px;padding:10px 12px;margin:8px 0 12px;display:flex;flex-direction:column;gap:8px}
.v40p-warn[hidden]{display:none}
.v40p-wt{margin:0;font-weight:800;font-size:1.05rem}
.v40p-wb{min-height:54px;text-align:left;justify-content:flex-start;white-space:normal}
.v40p-wb.on{outline:3px solid var(--accent);background:var(--accent-soft)}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .v40p-warn{background:#3A2E0A;border-color:#8A6A12;color:#FFE7A3}:root:not([data-theme=light]) .v40p-rv{color:#FFC861}}
:root[data-theme=dark] .v40p-warn{background:#3A2E0A;border-color:#8A6A12;color:#FFE7A3}
:root[data-theme=dark] .v40p-rv{color:#FFC861}

/* v40q: tap-to-swap editors (bottom bar, big buttons, Home rows) */
.v40q-seg{display:flex;gap:8px;margin:0 0 10px}
.v40q-seg button{flex:1;min-height:52px;font-size:1.05rem;font-weight:700;border-radius:14px;border:2px solid var(--line);background:transparent;color:inherit}
.v40q-seg button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}
.v40q-bar{display:flex;align-items:stretch;gap:4px;padding:6px;border:1px solid var(--line);border-radius:16px;margin:0 0 6px}
.v40q-slot,.v40q-cam{flex:1 1 0;min-width:0;min-height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:12px;border:2px dashed var(--line);background:transparent;color:inherit;font-size:.72rem;font-weight:600;padding:4px 2px;cursor:pointer}
.v40q-slot span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.v40q-slot svg{width:24px;height:24px}
.v40q-slot small{font-size:.6rem;color:var(--muted);font-weight:500}
.v40q-slot.on{border:3px solid var(--accent);background:var(--accent-soft)}
.v40q-cam{flex:0 0 60px;border:0;cursor:default;color:var(--muted)}
.v40q-cam .cam-c svg{width:26px;height:26px}
.v40q-say{margin:4px 0 10px;font-weight:700;min-height:1.4em}
.v40q-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.v40q-it{min-height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:14px;border:1.5px solid var(--line);background:transparent;color:inherit;font-size:.82rem;font-weight:600;padding:6px 4px;cursor:pointer;text-align:center}
.v40q-it svg{width:24px;height:24px}
.v40q-it small{font-size:.66rem;color:var(--muted)}
.v40q-it.in{background:var(--accent-soft)}
.v40q-it:disabled{opacity:.45;cursor:default}
.v40q-ed{margin:0 0 10px;padding:10px 12px}
.v40q-ed h3{margin:0 0 8px;font-size:1rem}
.v40q-ed[hidden]{display:none}
.v40q-edr{gap:8px;align-items:center;flex-wrap:nowrap}
.v40q-edr input{min-height:48px;font-size:1.05rem}
.v40q-edr .btn{min-width:48px;min-height:48px}
.v40q-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.v40q-tile{position:relative;min-height:76px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;border-radius:14px;border:1.5px solid var(--line);background:transparent;color:inherit;padding:8px 10px 8px 36px;text-align:left;cursor:pointer;font-size:.95rem}
.v40q-tile.on{border:3px solid var(--accent);background:var(--accent-soft)}
.v40q-ti{font-size:1.4rem}
.v40q-no{position:absolute;left:8px;top:8px;width:22px;height:22px;border-radius:11px;background:var(--line);font-size:.75rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.v40q-add{border-style:dashed;color:var(--muted);align-items:center;padding-left:10px;cursor:default;font-size:1.4rem}
.v40q-add small{font-size:.7rem}
.v40q-rows{display:flex;flex-direction:column;gap:8px}
.v40q-row{min-height:60px;display:flex;align-items:center;gap:10px;border-radius:14px;border:1.5px solid var(--line);background:transparent;color:inherit;padding:8px 12px 8px 40px;position:relative;font-size:1.05rem;text-align:left;cursor:pointer}
.v40q-row.on{border:3px solid var(--accent);background:var(--accent-soft)}
.v40q-row .v40q-no{top:auto}
.chip.v40q-billchip .v40p-n{font-weight:800}

/* v40q: 🧾 activity log + 📷 scan history + type the model # */
.v40q-log{margin:0;padding:0}
.v40q-log li{list-style:none;border-bottom:1px solid var(--line)}
.v40q-ld{padding:10px 4px 4px;font-weight:800;font-size:.85rem;color:var(--muted);border-bottom:0!important}
.v40q-lr{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;padding:8px 4px;background:transparent;border:0;color:inherit;text-align:left;font:inherit;cursor:pointer}
.v40q-lr .grow{display:flex;flex-direction:column;min-width:0}
.v40q-lr .grow b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v40q-lr .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v40q-lk{font-size:1.3rem;width:28px;text-align:center;flex:0 0 28px}
.v40q-lr.bad b{color:var(--red,#C0392B)}
.v40q-kv{margin:0;padding:0}
.v40q-kv li{list-style:none;display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid var(--line);word-break:break-word}
.v40q-kv li b{font-size:.8rem;color:var(--muted)}
.v40q-scans li{list-style:none;padding:10px 0;border-bottom:1px solid var(--line)}
.v40q-scans li.hit{background:var(--accent-soft)}
.v40q-sph{width:72px;height:96px;object-fit:cover;border-radius:10px;border:1px solid var(--line);flex:0 0 72px;display:flex;align-items:center;justify-content:center;font-size:1.6rem}
.v40q-type{margin:12px 0 6px}
.v40q-type input{min-height:52px;font-size:1.1rem}
.v40q-type .btn{min-height:52px;min-width:76px}

/* v40q (Shia's desktop, 2:51 PM): in a column box the search's flex-basis became its HEIGHT (380 px blank under the search). Search, 📷 and filters stack tight. */
.v40k-bar > .ap-q{flex:0 0 auto!important}
@media (min-width: 900px){
  .v40k-bar{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}
  .v40k-bar > .ap-q{grid-column:1}
  .v40k-bar > .v40m-scan{grid-column:2;margin-left:0!important;min-width:132px;min-height:42px}
  .v40k-bar > .v40m-scan::after{content:" Scan";font-weight:700}
  .v40k-bar > .v40k-fl{grid-column:1 / -1}
}

.v40q-ipick{display:grid;gap:8px;padding:8px 0}
