/*bolt-v:69.31.17*/@font-face{font-family:"Montserrat";src:url("montserrat.woff2") format("woff2");font-weight:400 800;font-display:swap}
:root{
  --ink:#0a0a0a;--ink2:#262626;--muted:#6b6b6b;--line:#e6e6e6;--line2:#d4d4d4;--bg:#f5f5f4;--card:#fff;
  --accent:#1d4ed8;--accent-soft:#e8eefc;
  --wa:#16a34a;--sms:#2563eb;--call:#ea580c;--email:#7c3aed;
  --st-new:#737373;--st-scheduled:#1d4ed8;--st-enroute:#7c3aed;--st-inprogress:#d97706;--st-done:#16a34a;--st-invoiced:#0a0a0a;
  --danger:#dc2626;--warn:#b45309;
  --r:14px;--r-sm:10px;--shadow:0 1px 2px rgba(0,0,0,.05),0 4px 16px rgba(0,0,0,.05);
  --font:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --bottom-h:64px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.skip{position:absolute;left:-999px;top:0;background:#fff;padding:8px 12px;z-index:100}
.skip:focus{left:8px;top:8px}
[hidden]{display:none!important}
/* layout */
.app{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:var(--ink);color:#fff;display:flex;flex-direction:column;padding:22px 14px 16px;z-index:20}
.brand{padding:0 8px 18px;border-bottom:1px solid #262626;margin-bottom:12px}
.brand img{width:150px;height:auto;display:block}
.brand-sub{display:block;margin-top:6px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#a3a3a3;font-weight:600}
.side-nav{display:flex;flex-direction:column;gap:2px;overflow:auto}
.side-nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;text-decoration:none;color:#d4d4d4;font-weight:500;font-size:14px}
.side-nav a:hover{background:#1c1c1c;color:#fff}
.side-nav a.active{background:#fff;color:var(--ink);font-weight:700}
.side-nav svg{width:19px;height:19px;flex:none}
.nav-badge{margin-left:auto;background:var(--accent);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px;min-width:20px;text-align:center}
.side-nav a.active .nav-badge{background:var(--ink);color:#fff}
.side-foot{margin-top:auto;padding:12px 8px 0;border-top:1px solid #262626;font-size:12px;color:#a3a3a3}
.side-foot p{margin:8px 0 0}
.main-col{margin-left:236px;min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;gap:10px;padding:14px 28px;background:rgba(245,245,244,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.topbar h1{font-size:20px;margin:0;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mob-logo{display:none;border-radius:8px}
.proto-pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1.5px dashed currentColor;border-radius:999px;padding:3px 9px;white-space:nowrap}
.topbar .proto-pill{color:var(--muted)}
main{padding:22px 28px 40px;flex:1;outline:none;max-width:1400px;width:100%}
.bottom-nav{display:none}
.icon-btn{background:none;border:0;padding:6px;border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.icon-btn svg{width:22px;height:22px}
.icon-btn:hover{background:rgba(0,0,0,.06)}

/* generic */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.pad{padding:18px}
.row{display:flex;align-items:center;gap:10px}
.wrap{flex-wrap:wrap}
.grow{flex:1;min-width:0}
.muted{color:var(--muted)}
.small{font-size:13px}
.tiny{font-size:12px}
.strong{font-weight:700}
.right{text-align:right}
.mt{margin-top:14px}.mt2{margin-top:22px}.mb{margin-bottom:14px}
h2{font-size:17px;margin:0 0 10px;font-weight:700;letter-spacing:-.01em}
h3{font-size:13px;margin:0 0 8px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:11px;border:1.5px solid var(--ink);background:var(--ink);color:#fff;font-weight:600;font-size:14px;padding:10px 16px;cursor:pointer;text-decoration:none;white-space:nowrap;min-height:42px}
.btn:hover{background:#262626}
.btn svg{width:18px;height:18px}
.btn.secondary{background:#fff;color:var(--ink);border-color:var(--line2)}
.btn.secondary:hover{border-color:var(--ink)}
.btn.ghost{background:transparent;color:var(--ink);border-color:transparent}
.btn.ghost:hover{background:rgba(0,0,0,.05)}
.btn.accent{background:var(--accent);border-color:var(--accent)}
.btn.accent:hover{background:#1e40af}
.btn.danger{background:#fff;color:var(--danger);border-color:#f3c4c4}
.btn.sm{padding:6px 11px;font-size:13px;min-height:34px;border-radius:9px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.seg{display:inline-flex;background:#ebebea;border-radius:11px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;padding:7px 13px;border-radius:9px;font-weight:600;font-size:13px;cursor:pointer;color:var(--ink2);white-space:nowrap}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line2);background:#fff;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip svg{width:15px;height:15px}
.chip .count{opacity:.6;font-weight:500}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 9px;white-space:nowrap;letter-spacing:.01em}
.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.st-new{color:var(--st-new);background:#f0f0f0}
.st-scheduled{color:var(--st-scheduled);background:#e8eefc}
.st-enroute{color:var(--st-enroute);background:#f1ebfe}
.st-inprogress{color:var(--st-inprogress);background:#fdf3e1}
.st-done{color:var(--st-done);background:#e6f6ec}
.st-invoiced{color:#fff;background:var(--ink)}
.st-draft{color:#525252;background:#f0f0f0}
.st-sent{color:var(--accent);background:var(--accent-soft)}
.st-approved{color:#0d9488;background:#e0f5f2}
.st-paid{color:var(--st-done);background:#e6f6ec}
.st-declined{color:var(--danger);background:#fde8e8}
.urg-emergency{color:#fff;background:var(--danger)}
.urg-high{color:#b45309;background:#fdf0dc}
.urg-normal{color:#404040;background:#efefef}
.urg-low{color:#525252;background:#f5f5f5;border:1px solid var(--line)}
.ch{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;flex:none;color:#fff}
.ch svg{width:18px;height:18px}
.ch.sm{width:24px;height:24px;border-radius:7px}
.ch.sm svg{width:14px;height:14px}
.ch-whatsapp{background:var(--wa)}.ch-sms{background:var(--sms)}.ch-call{background:var(--call)}.ch-email{background:var(--email)}
.ch-label{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.avatar{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex:none}
.empty{padding:40px 20px;text-align:center;color:var(--muted)}
.notice{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1.5px dashed var(--line2);border-radius:var(--r-sm);padding:11px 13px;font-size:13px;color:var(--ink2)}
.notice svg{width:18px;height:18px;flex:none;margin-top:1px}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.search{position:relative;flex:1;min-width:180px}
.search input{width:100%;padding:10px 12px 10px 38px;border:1.5px solid var(--line2);border-radius:11px;background:#fff}
.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted)}
/* forms */
label.f{display:block;font-size:12.5px;font-weight:600;color:var(--ink2);margin-bottom:12px}
label.f>span{display:block;margin-bottom:5px}
.inp,label.f input:not([type=checkbox]):not([type=radio]),label.f select,label.f textarea{width:100%;border:1.5px solid var(--line2);border-radius:10px;padding:9px 11px;background:#fff;font-size:15px;font-weight:500}
label.f textarea{min-height:90px;resize:none;line-height:1.45}
.inp:focus,label.f input:focus,label.f select:focus,label.f textarea:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px rgba(10,10,10,.08)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 12px}
.check{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:500;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--ink)}
/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.stat{padding:14px 16px}
.stat .v{font-size:22px;font-weight:800;letter-spacing:-.02em}
.stat .l{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
/* inbox */
.inbox{display:grid;grid-template-columns:minmax(300px,390px) 1fr;gap:18px;align-items:start}
.req-list{overflow:hidden}
.req{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);cursor:pointer;text-decoration:none;color:inherit;position:relative}
.req:last-child{border-bottom:0}
.req:hover{background:#fafafa}
.req.sel{background:#f4f4f4}
.req.sel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ink)}
.req.done{opacity:.55}
.req-top{display:flex;align-items:baseline;gap:8px}
.req-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.req-time{font-size:12px;color:var(--muted);flex:none}
.req-issue{font-size:13.5px;font-weight:600;margin-top:1px}
.req-sum{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px}
.req-tags{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}
.detail{padding:0;overflow:hidden}
.detail-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center}
.detail-body{padding:18px 20px}
.ai-card{border:1.5px solid var(--ink);border-radius:var(--r);padding:16px;background:#fff}
.ai-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;margin-bottom:10px}
.ai-title svg{width:18px;height:18px}
.ai-sum{font-size:15px;font-weight:500;margin:0 0 14px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.fields .k{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.fields .v{font-weight:600;font-size:14px;word-break:break-word}
.match{display:flex;gap:10px;align-items:center;margin-top:14px;padding:10px 12px;background:var(--bg);border-radius:10px;font-size:13.5px}
.action-bar{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.bubble-wrap{background:#efeae2;border-radius:12px;padding:14px;margin-top:8px}
.bubble{background:#fff;border-radius:10px 10px 10px 2px;padding:9px 12px;max-width:90%;font-size:14.5px;box-shadow:0 1px 1px rgba(0,0,0,.08);white-space:pre-wrap}
.bubble.out{background:#d9fdd3;margin-left:auto;border-radius:10px 10px 2px 10px}
.bubble .meta{display:block;text-align:right;font-size:11px;color:var(--muted);margin-top:3px}
.sms-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:8px}
.sms-wrap .bubble{background:#e9e9eb;box-shadow:none;border-radius:16px 16px 16px 4px}
.sms-wrap .bubble.out{background:#2563eb;color:#fff;border-radius:16px 16px 4px 16px}
.email-box{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:8px}
.email-box .eh{padding:10px 14px;background:#fafafa;border-bottom:1px solid var(--line);font-size:13px}
.email-box .eb{padding:14px;white-space:pre-wrap;font-size:14px}
.transcript{margin-top:8px;border:1px solid var(--line);border-radius:12px;padding:6px 14px}
.tline{display:grid;grid-template-columns:62px 1fr;gap:8px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:14px}
.tline:last-child{border-bottom:0}
.tline b{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding-top:2px}
.tline.ai b{color:var(--ink)}
.rec{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);margin-top:8px}
.rec .bar{flex:1;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--ink) 0 0,#ddd 0)}
/* schedule */
.sched-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.date-nav{display:flex;align-items:center;gap:4px}
.date-label{font-weight:700;font-size:16px;min-width:0;padding:0 6px;white-space:nowrap}
.tray{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;margin-bottom:12px;border:1.5px dashed var(--line2);border-radius:var(--r-sm);background:#fff}
.tray-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.tray .jchip{cursor:grab}
.board-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r);background:#fff;box-shadow:var(--shadow)}
.board{display:grid;min-width:100%}
.b-head{position:sticky;top:0;background:#fff;z-index:3;border-bottom:1px solid var(--line);padding:10px 10px;font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:8px;min-width:0}
.b-head .tdot{width:10px;height:10px;border-radius:50%;flex:none}
.b-head .sub{font-weight:500;color:var(--muted);font-size:12px;margin-left:auto}
.b-time{position:sticky;left:0;background:#fff;z-index:4;border-right:1px solid var(--line)}
.b-time div{height:var(--hh);font-size:11px;color:var(--muted);text-align:right;padding:2px 8px 0 0;border-top:1px solid var(--line)}
.b-col{position:relative;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px var(--hh));min-width:0}
.b-col.drop{background-color:var(--accent-soft)}
.b-corner{position:sticky;left:0;top:0;z-index:5;background:#fff;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.jblock{position:absolute;left:4px;right:4px;border-radius:9px;padding:6px 8px;font-size:12.5px;line-height:1.3;cursor:pointer;overflow:hidden;border:1px solid rgba(0,0,0,.08);border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 11%,#fff);text-align:left}
.jblock:hover{box-shadow:0 3px 10px rgba(0,0,0,.12);z-index:2}
.jblock .t{font-weight:700;font-size:11.5px;color:var(--ink2)}
.jblock .n{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jblock .d{color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jblock .pill{margin-top:4px;font-size:10.5px;padding:2px 7px}
.jblock.dragging,.jchip.dragging{opacity:.4}
.now-line{position:absolute;left:0;right:0;height:2px;background:var(--danger);z-index:1}
.now-line::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--danger)}
.week{display:grid}
.w-head{padding:10px;font-weight:700;font-size:13px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:2}
.w-head.today{color:var(--accent)}
.w-tech{padding:10px;font-weight:700;font-size:13px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;position:sticky;left:0;background:#fff;z-index:1;border-right:1px solid var(--line)}
.w-cell{border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;min-height:84px;display:flex;flex-direction:column;gap:5px}
.w-cell.drop{background:var(--accent-soft)}
.w-cell.today{background:#fafbff}
.jchip{display:block;width:100%;text-align:left;border:1px solid rgba(0,0,0,.08);border-left:3px solid var(--c);background:color-mix(in srgb,var(--c) 10%,#fff);border-radius:7px;padding:4px 7px;font-size:12px;line-height:1.25;cursor:pointer}
.jchip b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tray .jchip{width:auto;max-width:260px}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:12px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
/* list rows */
.list{overflow:hidden}
.lrow{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;cursor:pointer}
.lrow:last-child{border-bottom:0}
.lrow:hover{background:#fafafa}
.lrow .t1{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrow .t2{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrow .amt{font-weight:700;text-align:right;white-space:nowrap}
.cust-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:18px;align-items:start}
.contact{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.contact:last-child{border-bottom:0}
.kv{display:grid;grid-template-columns:120px 1fr;gap:8px 12px;font-size:14px}
.kv .k{color:var(--muted);font-weight:600;font-size:13px}
.hist{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;align-items:center}
.hist:last-child{border-bottom:0}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}
.tabs button{background:none;border:0;padding:10px 12px;font-weight:600;font-size:14px;color:var(--muted);border-bottom:2.5px solid transparent;cursor:pointer;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}
/* doc editor */
.doc-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
.doc-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:16px}
.doc-head img{width:130px;height:auto}
.items-head,.item{display:grid;grid-template-columns:minmax(0,1fr) 70px 100px 54px 96px 32px;gap:8px;align-items:center}
.items-head{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:0 0 6px;border-bottom:1px solid var(--line)}
.item{padding:8px 0;border-bottom:1px solid var(--line)}
.item input[type=text],.item input[type=number]{width:100%;border:1.5px solid transparent;border-radius:8px;padding:7px 8px;background:#fafafa;font-weight:500}
.item input:focus{border-color:var(--ink);background:#fff;outline:none}
.item .lt{text-align:right;font-weight:700}
.item .tx{display:flex;justify-content:center}
.item .tx input{width:18px;height:18px;accent-color:var(--ink)}
.item .lbl{display:none}
.presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.totals{font-size:14.5px}
.totals .tr{display:flex;justify-content:space-between;padding:6px 0}
.totals .tr.big{font-size:19px;font-weight:800;border-top:1.5px solid var(--ink);margin-top:6px;padding-top:10px}
.sticky-side{position:sticky;top:84px}
.log{font-size:13px;padding:9px 0;border-bottom:1px solid var(--line)}
.log:last-child{border-bottom:0}
.locked{color:var(--st-done);font-weight:700;display:inline-flex;gap:5px;align-items:center}
.locked svg{width:14px;height:14px}
/* sheet */
.sheet-back{position:fixed;inset:0;background:rgba(10,10,10,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .15s ease}
.sheet{background:#fff;border-radius:18px;width:100%;max-width:560px;max-height:min(88vh,860px);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.25);animation:pop .18s ease}
.sheet.wide{max-width:720px}
.sheet-h{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.sheet-h h2{margin:0;flex:1;font-size:17px}
.sheet-b{padding:18px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.sheet-f{padding:14px 18px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{transform:translateY(12px);opacity:0}}
/* chips input */
.tagbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1.5px solid var(--line2);border-radius:10px;padding:6px 8px;background:#fff;min-height:44px}
.tagbox:focus-within{border-color:var(--ink)}
.tagbox input{border:0!important;outline:none;flex:1;min-width:140px;padding:5px 4px!important;box-shadow:none!important;font-size:15px}
.tag{display:inline-flex;align-items:center;gap:4px;background:#f0f0f0;border-radius:999px;padding:4px 6px 4px 10px;font-size:13px;font-weight:600;max-width:100%}
.tag span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag button{border:0;background:#d9d9d9;border-radius:50%;width:18px;height:18px;line-height:1;cursor:pointer;padding:0;font-size:12px;flex:none}
.tag.bad{background:#fde8e8;color:var(--danger)}
.suggest{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 12px}
.suggest button{border:1.5px dashed var(--line2);background:#fff;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:600;cursor:pointer}
.chan-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.chan-pick label{display:flex;flex-direction:column;align-items:center;gap:6px;border:1.5px solid var(--line2);border-radius:12px;padding:10px 6px;cursor:pointer;font-size:13px;font-weight:600;text-align:center}
.chan-pick input{position:absolute;opacity:0;pointer-events:none}
.chan-pick label.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink) inset}
.preview{background:var(--bg);border-radius:12px;padding:12px;font-size:13.5px;white-space:pre-wrap}
/* templates */
.tpl{display:flex;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.tpl:last-child{border-bottom:0}
.tpl:hover{background:#fafafa}
.switch{position:relative;width:42px;height:24px;flex:none}
.switch input{opacity:0;width:100%;height:100%;position:absolute;margin:0;cursor:pointer;z-index:1}
.switch span{position:absolute;inset:0;background:#d4d4d4;border-radius:999px;transition:.15s}
.switch span::after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch input:checked+span{background:var(--ink)}
.switch input:checked+span::after{transform:translateX(18px)}
.ph-chips{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 12px}
.ph-chips button{font-family:ui-monospace,Menlo,monospace;font-size:12px;border:1px solid var(--line2);background:#fafafa;border-radius:6px;padding:3px 7px;cursor:pointer}
/* qb */
.qb-row{display:grid;grid-template-columns:28px 92px minmax(0,1fr) 110px 110px 150px;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-size:14px}
.qb-row:last-child{border-bottom:0}
.qb-row.head{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;background:#fafafa}
.qb-row input{width:18px;height:18px;accent-color:var(--ink)}
.warn-tag{color:var(--warn);font-weight:700;font-size:12px}
/* settings */
.conn{display:flex;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.conn:last-child{border-bottom:0}
.conn .ic{width:40px;height:40px;border-radius:11px;background:var(--bg);display:flex;align-items:center;justify-content:center;flex:none}
.conn .ic svg{width:20px;height:20px}
.more-list .lrow svg{width:20px;height:20px}
.toast-in{animation:pop .2s ease}
#toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,520px)}
.toast{pointer-events:auto;background:var(--ink);color:#fff;border-radius:12px;padding:11px 14px;font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.25);display:flex;gap:10px;align-items:flex-start;width:100%}
.toast small{display:block;color:#a3a3a3;font-size:12px;margin-top:2px}
.toast a{color:#fff;font-weight:700;margin-left:auto;white-space:nowrap}
.toast svg{width:18px;height:18px;flex:none;margin-top:1px}

/* responsive */
@media (max-width:1100px){
  .doc-grid{grid-template-columns:1fr}
  .sticky-side{position:static}
  .cust-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
  .sidebar{display:none}
  .main-col{margin-left:0}
  .topbar{background:var(--ink);color:#fff;border-bottom:0;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top))}
  .topbar h1{font-size:18px}
  .topbar .proto-pill{color:#bdbdbd;font-size:10px;padding:2px 8px}
  .mob-logo{display:block}
  .back-btn{color:#fff;margin-left:-6px}
  .back-btn:hover{background:rgba(255,255,255,.12)}
  .back-btn:not([hidden])+.topbar-title .mob-logo{display:none}
  main{padding:14px 14px calc(var(--bottom-h) + 28px + env(safe-area-inset-bottom))}
  .bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);height:calc(var(--bottom-h) + env(safe-area-inset-bottom))}
  .bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:#8a8a8a;font-size:10.5px;font-weight:600;position:relative}
  .bottom-nav a svg{width:23px;height:23px}
  .bottom-nav a.active{color:var(--ink)}
  .bottom-nav a.active svg{stroke-width:2.3}
  .bottom-nav .nav-badge{position:absolute;top:6px;left:calc(50% + 6px);font-size:10px;padding:0 5px;min-width:17px;margin:0}
  .inbox{grid-template-columns:1fr}
  .inbox.has-sel .req-list-wrap{display:none}
  .inbox:not(.has-sel) .detail-wrap{display:none}
  .detail-head{padding:14px 16px}
  .detail-body{padding:16px}
  #toast{bottom:calc(var(--bottom-h) + 14px + env(safe-area-inset-bottom))}
  .sheet-back{align-items:flex-end;padding:0}
  .sheet{border-radius:18px 18px 0 0;max-height:92vh;max-width:none}
  .sheet-f{padding-bottom:max(14px,env(safe-area-inset-bottom))}
  .sheet-f .btn{flex:1}
}
@media (max-width:640px){
  body{font-size:15px}
  .grid2,.grid3{grid-template-columns:1fr}
  .grid2.keep{grid-template-columns:1fr 1fr}
  .fields{grid-template-columns:1fr 1fr;gap:10px 12px}
  .stats{grid-template-columns:1fr 1fr;gap:10px}
  .stat{padding:12px}
  .stat .v{font-size:19px}
  .items-head{display:none}
  .item{grid-template-columns:1fr 1fr 1fr;grid-template-areas:"d d d" "q p t" "x l r";gap:6px 8px;padding:12px 0}
  .item .c-d{grid-area:d}.item .c-q{grid-area:q}.item .c-p{grid-area:p}.item .tx{grid-area:x;justify-content:flex-start;align-items:center;gap:6px}.item .lt{grid-area:l;align-self:center}.item .rm{grid-area:r;justify-self:end}
  .item .lbl{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:2px}
  .item .tx .lbl{display:inline;margin:0}
  .qb-row{grid-template-columns:24px minmax(0,1fr) auto;grid-template-areas:"c m a" "c s s";gap:3px 10px}
  .qb-row.head{display:none}
  .qb-row .q-c{grid-area:c}.qb-row .q-m{grid-area:m}.qb-row .q-a{grid-area:a;text-align:right;font-weight:700}.qb-row .q-s{grid-area:s;font-size:12.5px}
  .qb-row .q-t,.qb-row .q-d{display:none}
  .kv{grid-template-columns:100px 1fr}
  .doc-head img{width:100px}
  .sched-tools .seg{order:3}
  .chan-pick label{font-size:12px}
  h2{font-size:16px}
}
@media (min-width:641px){ .qb-row .q-mob{display:none} }

.role-btn{display:inline-flex;align-items:center;gap:4px;border:1.5px solid var(--line2);background:#fff;border-radius:999px;padding:5px 8px 5px 12px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;max-width:46vw;overflow:hidden;text-overflow:ellipsis}
.role-btn svg{width:15px;height:15px;flex:none}
.proto-strip{display:none}
@media (max-width:900px){
  .role-btn{background:#1f1f1f;border-color:#333;color:#fff;font-size:12px;padding:4px 6px 4px 10px}
  .topbar .proto-pill{display:none}
  .proto-strip{display:block;background:#fef9c3;color:#713f12;font-size:11.5px;font-weight:600;text-align:center;padding:5px 10px;line-height:1.3}
}

.inbox>div{min-width:0}
main svg,.sheet svg{width:18px;height:18px;flex:none}
.match svg{width:18px;height:18px;flex:none}
.b-head{white-space:nowrap}
.b-head .sub{white-space:nowrap}
.b-head .nm{overflow:hidden;text-overflow:ellipsis}
.doc-quick{display:none}
@media (max-width:1100px){.doc-quick{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 16px}}
.exp-tools{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:6px}

@media (min-width:901px){.app{background:linear-gradient(to right,var(--ink) 236px,transparent 236px)}}

/* ===== field app (technician job page) ===== */
.fv{max-width:720px;margin:0 auto;padding-bottom:84px}
.fv h3{margin:0;font-size:15px}
.fv-head{padding:16px;margin-bottom:12px}
.fv-title{font-size:20px;font-weight:800;letter-spacing:-.01em;margin-top:2px;line-height:1.2}
.fv-cust{margin-top:10px;font-size:14.5px;line-height:1.45}
.fv-cust span{color:var(--ink2)}
.fv-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.bigbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:66px;border-radius:14px;border:1.5px solid var(--line2);background:#fff;text-decoration:none;font-size:12.5px;font-weight:700;color:var(--ink)}
.bigbtn svg{width:24px;height:24px}
.bigbtn:active{transform:scale(.97);background:#f4f4f4}
.bigbtn.wa{background:#16a34a;border-color:#16a34a;color:#fff}
.fv-notes{margin-top:12px;background:#fafaf9;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13.5px;display:grid;gap:6px}
.fv-notes b{display:inline-block;min-width:78px;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.sec-h h3{display:flex;align-items:center;gap:8px}
.sec-h h3 svg{width:19px;height:19px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.step{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border-radius:14px;border:1.5px solid var(--line2);background:#fafafa;color:#a3a3a3;font-weight:700;cursor:pointer;min-height:92px;justify-content:center}
.step .step-ic{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#ececec}
.step .step-ic svg{width:19px;height:19px}
.step .step-l{font-size:14px}
.step .step-t{font-size:11.5px;font-weight:600}
.step.next{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.step.next .step-ic{background:#fff;color:var(--ink)}
.step.done{background:#ecfdf3;border-color:#a7e3bd;color:#166534}
.step.done .step-ic{background:#16a34a;color:#fff}
.step[disabled]{cursor:default}
.step.next:active{transform:scale(.97)}
.timerline{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:14px}
.timerline svg{width:17px;height:17px;flex:none}
.timerline b{font-variant-numeric:tabular-nums}
.tagrow{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.tagseg{display:inline-flex;background:#ebebea;border-radius:12px;padding:3px;gap:2px}
.tagseg button{border:0;background:transparent;border-radius:9px;padding:8px 12px;font-weight:700;font-size:13px;cursor:pointer;color:var(--ink2);min-height:38px}
.tagseg button.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15);color:var(--ink)}
.addrow{display:grid;grid-template-columns:1.4fr 1fr;gap:8px;margin-bottom:12px}
.bigadd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:84px;border-radius:14px;background:var(--ink);color:#fff;font-weight:800;font-size:15px;cursor:pointer;text-align:center;padding:8px}
.bigadd small{font-weight:600;font-size:11.5px;opacity:.75}
.bigadd svg{width:26px;height:26px}
.bigadd.alt{background:#fff;color:var(--ink);border:1.5px solid var(--line2)}
.bigadd:active{transform:scale(.98)}
.bigadd.plate{min-height:72px;background:#fff;color:var(--ink);border:1.5px dashed var(--line2);flex-direction:row;gap:12px}
.bigadd.plate img{width:64px;height:48px;object-fit:cover;border-radius:8px}
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.mthumb{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:0;padding:0;background:#222;cursor:pointer}
.mthumb img,.mthumb video{width:100%;height:100%;object-fit:cover;display:block}
.mthumb .vplay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff}
.mthumb .vplay svg{width:34px;height:34px;fill:#fff;filter:drop-shadow(0 1px 4px rgba(0,0,0,.6))}
.mtag{position:absolute;left:6px;bottom:6px;font-size:10.5px;font-weight:800;color:#fff;background:rgba(0,0,0,.65);border-radius:6px;padding:2px 6px;letter-spacing:.02em}
.mtag.t-before{background:#b45309}.mtag.t-after{background:#15803d}.mtag.t-during{background:#1d4ed8}
/* v69.25.0: any file on a job: file tile (type badge + name + size), File button, file sheet */
.addrow.fa6250-3{grid-template-columns:1.25fr 1fr 1fr}
.addrow.fa6250-3 .bigadd small{font-size:11px;line-height:1.2}
.mthumb.fa6250-tile{background:#f4f4f5;border:1.5px solid var(--line2,#e4e4e7);color:var(--ink,#0a0a0a);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 6px;text-align:center;font-family:inherit}
.fa6250-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:38px;height:42px;border-radius:8px;color:#fff;flex:none}
.fa6250-badge svg{width:16px;height:16px}
.fa6250-badge b{font-size:10.5px;font-weight:800;letter-spacing:.03em;line-height:1}
.fa6250-badge.big{width:60px;height:68px;border-radius:12px}.fa6250-badge.big svg{width:24px;height:24px}.fa6250-badge.big b{font-size:12.5px}
.fa6250-nm{flex:none;font-size:12px;font-weight:700;line-height:1.2;max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.fa6250-sz{flex:none;font-size:10.5px;color:var(--muted,#71717a);font-weight:600}
.mthumb.fa6250-tile .mint{font-size:0;gap:0;padding:4px;border-radius:50%;top:5px;right:5px}.mthumb.fa6250-tile .mint svg{width:12px;height:12px}
.fa6250-sheet{display:flex;align-items:center;gap:14px}
.fa6250-sheet-nm{word-break:break-word}
@media (min-width:900px){.mthumb.fa6250-tile{gap:6px}.fa6250-badge{width:56px;height:62px;border-radius:11px}.fa6250-badge svg{width:22px;height:22px}.fa6250-badge b{font-size:12px}.fa6250-nm{font-size:14px}.fa6250-sz{font-size:12px}}
.rp-file6250{text-decoration:none;color:inherit}.rp-file6250 .pill{min-width:48px;text-align:center}
.mview{width:100%;max-height:60vh;object-fit:contain;background:#111;border-radius:12px;display:block}
.missing{opacity:.25}
.recbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:64px;border-radius:16px;border:2px solid #dc2626;background:#fff;color:#dc2626;font-weight:800;font-size:15.5px;cursor:pointer;margin-bottom:10px}
.recbtn svg{width:24px;height:24px}
.recbtn.on{background:#dc2626;color:#fff}
.recbtn b{font-variant-numeric:tabular-nums}
.recdot{width:14px;height:14px;border-radius:50%;background:#fff;animation:recp 1s infinite}
@keyframes recp{50%{opacity:.25}}
.vnote{border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-top:10px;background:#fafaf9}
.vnote audio{width:100%;margin-top:8px;height:40px}
.vnote textarea,.sumbox{width:100%;border:1.5px solid var(--line2);border-radius:12px;padding:10px 12px;font-size:15px;resize:none;background:#fff;line-height:1.45}
.eqmini{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.eqmini:last-of-type{margin-bottom:12px}
.eqmini svg{width:16px;height:16px;color:var(--muted)}
.btn.big{min-height:52px;font-size:15px;border-radius:14px}
.btn.ai{margin-top:10px;background:#fff;color:var(--ink);border:1.5px solid var(--ink)}
.pill.ai-demo{background:#f3e8ff;color:#6b21a8}
.cklist{display:grid;gap:6px}
.ck{display:flex;align-items:center;gap:12px;min-height:50px;border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:8px 12px;text-align:left;font-size:14.5px;font-weight:600;cursor:pointer}
.ck .box{width:26px;height:26px;border-radius:8px;border:2px solid var(--line2);display:flex;align-items:center;justify-content:center;flex:none}
.ck .box svg{width:17px;height:17px}
.ck.on{border-color:#a7e3bd;background:#f0fdf4}
.ck.on .box{background:#16a34a;border-color:#16a34a;color:#fff}
.prow{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.prow.tot{border-bottom:0;margin-bottom:8px}
.pamt{min-width:76px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;font-size:14px}
.qty{display:flex;align-items:center;border:1.5px solid var(--line2);border-radius:12px;overflow:hidden}
.qty button{width:40px;height:40px;border:0;background:#f5f5f4;font-size:20px;font-weight:700;cursor:pointer}
.qty span{min-width:30px;text-align:center;font-weight:800}
.pbrow{min-height:60px}
.pbadd{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;flex:none;font-weight:800;font-size:13px}
.pbadd svg{width:20px;height:20px}
.pbadd.in{background:#16a34a}
.search-in{width:100%;border:1.5px solid var(--line2);border-radius:12px;padding:12px 14px;font-size:16px}
.sigpad{position:relative;border:2px dashed var(--line2);border-radius:14px;background:#fff;height:200px;touch-action:none}
.sigpad canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.sigx{position:absolute;left:14px;bottom:34px;font-size:12px;color:#a3a3a3;pointer-events:none;border-bottom:1px solid #d4d4d4;width:calc(100% - 28px);padding-bottom:4px}
.sigsum{font-size:13px;background:#fafaf9;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px;max-height:120px;overflow:auto}
.sigshow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:8px;background:#fff}
.sigshow img{width:150px;height:50px;object-fit:contain}
.tl{display:grid;gap:0}
.tl-i{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.tl-i:last-child{border-bottom:0}
.tl-ic{width:30px;height:30px;border-radius:50%;background:#f0f0ef;display:flex;align-items:center;justify-content:center;flex:none}
.tl-ic svg{width:15px;height:15px}
.tl-t{font-weight:700}
.tl-s{font-size:12.5px;color:var(--muted);margin-top:1px}
.tl-w{font-size:11.5px;color:var(--muted);white-space:nowrap;margin-left:auto;padding-left:6px}
.finbar{position:sticky;bottom:0;z-index:5;padding:10px 0 4px;background:linear-gradient(to top,var(--bg) 70%,rgba(245,245,244,0))}
.finbar .btn{width:100%;min-height:56px;font-size:16px}
.techpick{display:flex;gap:8px;flex-wrap:wrap}
.tp{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:999px;border:1.5px solid var(--line2);background:#fff;font-weight:700;font-size:14px;cursor:pointer;min-height:48px}
.tp .avatar{width:34px;height:34px;font-size:12px}
.tp.on{border-color:var(--ink);background:var(--ink);color:#fff}
.fieldsum{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1.5px solid var(--line2);background:#fafaf9;border-radius:12px;padding:10px 12px;margin:4px 0 14px;cursor:pointer}
.fieldsum>svg{width:20px;height:20px;flex:none}
.actgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.actgrid button{min-height:46px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;font-weight:700;font-size:13.5px;cursor:pointer}
.actgrid button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.jobcard{padding:14px 16px;margin-bottom:12px;cursor:pointer}
.jobcard.live{border:2px solid #d97706}
.jc-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.jc-acts .btn:first-child:nth-last-child(3){grid-column:1/-1}
/* equipment */
.pm-over{background:#fde8e8;color:#b91c1c}.pm-soon{background:#fff4e0;color:#b45309}.pm-ok{background:#f0f0ef;color:#525252}
.danger-t{color:#b91c1c;font-weight:700}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.02em}
.pstats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:14px}
.pstats div{background:#f5f5f4;border-radius:12px;padding:8px 6px;text-align:center}
.pstats b{display:block;font-size:19px}
.pstats span{font-size:11px;color:var(--muted);font-weight:600}
.pstats .bad{background:#fde8e8;color:#b91c1c}
.pstats .bad span{color:#b91c1c}
.eqlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.eqcard{text-align:left;padding:12px 14px;cursor:pointer;font:inherit;color:inherit;width:100%}
.eqcard.gone{opacity:.6;background:#fafaf9}
.eqmeta{display:flex;justify-content:space-between;gap:8px;font-size:13px;margin-top:6px;color:var(--ink2);flex-wrap:wrap}
.eqfacts{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-top:8px;flex-wrap:wrap}
.eqfacts b{color:var(--ink)}
.eqpics{display:flex;gap:8px;overflow-x:auto;margin-bottom:12px}
.eqpics img{height:150px;border-radius:12px;object-fit:cover;flex:none;max-width:85%}
.maint-banner{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:14px;text-decoration:none;color:inherit;font-size:14px}
.maint-banner>svg{width:18px;height:18px;flex:none;color:var(--muted)}
.seg a{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:9px;text-decoration:none;font-weight:700;font-size:13.5px;color:var(--ink2)}
.seg a.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15);color:var(--ink)}
.segc{background:#b91c1c;color:#fff;border-radius:999px;padding:0 7px;font-size:11px}
@media (max-width:900px){
  .finbar{bottom:calc(var(--bottom-h) + env(safe-area-inset-bottom));margin:0 -14px;padding:10px 14px 8px}
  .fv{padding-bottom:20px}
}
@media (max-width:380px){
  .fv-acts{grid-template-columns:repeat(2,1fr)}
  .tagseg button{padding:8px 9px}
}

.item-c{border:1.5px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;background:#fff}
.item-c.done{border-color:#a7e3bd;background:#f6fef9}
.item-c.notdone{border-color:#f5c2c2;background:#fffafa}
.item-c .icon-btn{flex:none;cursor:pointer}
.dn{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.dn button{display:flex;align-items:center;justify-content:center;gap:6px;min-height:46px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;font-weight:800;font-size:14px;cursor:pointer}
.dn button svg{width:17px;height:17px}
.dn button.on.ok{background:#16a34a;border-color:#16a34a;color:#fff}
.dn button.on.no{background:#dc2626;border-color:#dc2626;color:#fff}
.why{margin-top:10px}
.itpics{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:8px}

.portal-strip{display:flex;gap:8px;align-items:center;background:#111;color:#fff;border-radius:12px;padding:10px 12px;font-size:13px;margin-bottom:12px}
.portal-strip svg{width:16px;height:16px;flex:none}
.portal-head{padding:18px;margin-bottom:12px}
.portal-head img{display:block;height:auto}
.portal h3{margin:0}

/* ===== live app: auth, sync state, uploads ===== */
body.auth-mode .sidebar,body.auth-mode .bottom-nav,body.auth-mode .proto-strip,body.auth-mode #roleBtn,body.auth-mode #netState{display:none!important}
body.auth-mode .main-col{margin-left:0}
.auth{min-height:70vh;display:flex;align-items:flex-start;justify-content:center;padding-top:4vh}
.auth-card{width:100%;max-width:420px;padding:24px}
.auth-card img{display:block;height:auto;margin-bottom:8px}
.auth-card h1{font-size:22px;margin:10px 0 2px}
.auth-card input{width:100%;border:1.5px solid var(--line2);border-radius:12px;padding:12px 14px;font-size:16px;margin-top:4px;background:#fff}
.auth-err{background:#fde8e8;color:#991b1b;border-radius:10px;padding:10px 12px;font-size:14px;margin-bottom:12px;font-weight:600}
.net{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:#e8f5ec;color:#166534;white-space:nowrap}
.net-saving{background:#eef2ff;color:#3730a3}.net-offline,.net-error{background:#fde8e8;color:#991b1b}
@media (max-width:900px){.net{background:rgba(255,255,255,.14);color:#d1fae5}.net-saving{color:#c7d2fe}.net-offline,.net-error{color:#fecaca}}
#upbar{position:fixed;left:12px;right:12px;top:calc(env(safe-area-inset-top) + 64px);z-index:80;display:none;background:#0a0a0a;color:#fff;border-radius:14px;padding:10px 14px;box-shadow:0 10px 30px rgba(0,0,0,.3)}
#upbar.on{display:block}
#upbar .upl{font-size:13px;font-weight:700;margin-bottom:6px}
#upbar .upt{height:6px;background:#333;border-radius:4px;overflow:hidden}
#upbar .upt span{display:block;height:100%;background:#22c55e;transition:width .2s}
.linkbox{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line2);border-radius:12px;padding:8px 8px 8px 12px;font-size:13px;word-break:break-all;background:#fafaf9}
.linkbox span{flex:1}
.btn.wa-btn{background:#16a34a;border-color:#16a34a;color:#fff}
.conn .grow{min-width:0}.conn .mono{word-break:break-all;overflow-wrap:anywhere}

/* v3: team, invites, profile, join */
.av-img{overflow:hidden;background:#e5e5e5}
.av-img img{width:100%;height:100%;object-fit:cover;display:block}
.team-row{align-items:flex-start}
.team-row .pill{font-size:11px;vertical-align:1px}
.mt-s{margin-top:8px}
.link-sm{color:var(--ink);font-weight:600;text-decoration:underline}
.role-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.role-pick button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;border:1.5px solid var(--line2);background:#fff;border-radius:12px;padding:10px 11px;min-height:64px;font:inherit;color:var(--ink);cursor:pointer}
.role-pick button b{font-size:14px}
.role-pick button span{font-size:11.5px;color:var(--muted);line-height:1.3}
.role-pick button.on{border-color:var(--ink);background:var(--ink);color:#fff}
.role-pick button.on span{color:#d4d4d4}
.share-stack{display:grid;gap:10px;margin-top:12px}
.share-stack .btn[disabled]{opacity:.45}
.pm-wrap{overflow-x:auto;margin:0 -4px}
table.pm{width:100%;border-collapse:collapse;font-size:12.5px}
table.pm th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;padding:6px 3px;text-align:center}
table.pm td{padding:8px 3px;border-top:1px solid var(--line);text-align:center;vertical-align:middle}
table.pm td:first-child{text-align:left;font-weight:600;padding-right:6px;min-width:120px}
.pm-yes{display:inline-flex;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;align-items:center;justify-content:center}
.pm-yes svg{width:13px;height:13px}
.pm-no{color:#a3a3a3;font-weight:700}
.pm-part{font-size:10.5px;color:var(--ink2);line-height:1.2;display:inline-block;max-width:70px}
.prof-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.prof-head .big{font-size:19px;font-weight:700}
.doc-list{display:grid;gap:8px}
.doc-chip{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:#fff}
.doc-chip img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex:none}
.doc-chip .doc-ic{width:44px;height:44px;border-radius:8px;background:#f4f4f5;display:inline-flex;align-items:center;justify-content:center;flex:none}
.doc-chip a{display:flex;flex-direction:column;color:var(--ink);text-decoration:none;min-width:0}
.doc-chip a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.join-card .opt-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px;border-top:1px solid var(--line);padding-top:14px}
.join-up{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.join-up .inp{padding:8px 10px;border:1.5px solid var(--line2);border-radius:10px;font-size:15px;background:#fff}
.danger-t{color:#b91c1c}
.linkbtn{background:none;border:0;padding:0;font:inherit;font-size:inherit;cursor:pointer}
table.pm th{font-size:10px;letter-spacing:0;padding:6px 2px}
table.pm td:first-child{min-width:0;width:38%}
.pm-part{max-width:62px;font-size:10px}

/* ===== v4 (Oct 7): HCP-style light sidebar, Create, groups, Home, Pipeline, COI, time clock, subs ===== */
:root{--side-w:248px;--side-mini:72px}
@media (min-width:901px){.app{background:none}}
.sidebar{background:#fff;color:var(--ink);border-right:1px solid var(--line);width:var(--side-w);padding:16px 12px 12px;transition:width .18s}
.main-col{margin-left:var(--side-w);transition:margin-left .18s}
.brand{display:flex;align-items:center;gap:8px;padding:0 6px 12px;border-bottom:0;margin-bottom:6px}
.brand img.brand-full{width:132px;height:auto}
.brand img.brand-mini{display:none;width:34px;height:34px;border-radius:9px}
.brand .side-toggle{margin-left:auto;color:var(--muted)}
.brand .side-toggle svg{width:20px;height:20px}
.side-create{padding:0 2px 10px}
.create-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:var(--ink);color:#fff;border:0;border-radius:11px;padding:11px 14px;font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.create-btn:hover{background:#262626}
.create-btn svg{width:19px;height:19px;stroke-width:2.6}
.create-btn.wide{margin-bottom:12px}
.side-nav{gap:1px;flex:1;min-height:0;padding-bottom:8px}
.side-nav a,.nav-gh{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:9px;text-decoration:none;color:#3f3f3f;font-weight:600;font-size:14px;background:none;border:0;width:100%;text-align:left;cursor:pointer;white-space:nowrap}
.side-nav a:hover,.nav-gh:hover{background:#f2f2f1;color:var(--ink)}
.side-nav a.active{background:var(--ink);color:#fff;font-weight:700}
.side-nav a.active .nav-badge{background:#fff;color:var(--ink)}
.side-nav svg,.nav-gh svg{width:19px;height:19px;flex:none}
.side-nav .lbl{flex:1;overflow:hidden;text-overflow:ellipsis}
.nav-sep{height:1px;background:var(--line);margin:7px 8px}
.nav-gh .chev{margin-left:auto;display:inline-flex;transition:transform .15s;color:var(--muted)}
.nav-gh .chev svg{width:16px;height:16px}
.nav-grp.open .nav-gh .chev{transform:rotate(180deg)}
.nav-grp.has-active>.nav-gh{color:var(--ink)}
.nav-gi{display:none;padding:1px 0 4px}
.nav-grp.open .nav-gi{display:block}
.side-nav a.sub{padding-left:41px;font-weight:500;font-size:13.5px}
.side-nav a.sub svg{display:none}
.side-foot{margin-top:0;padding:8px 2px 0;border-top:1px solid var(--line);color:var(--ink);display:flex;flex-direction:column;gap:1px}
.side-foot a{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:9px;text-decoration:none;font-weight:600;font-size:14px;color:#3f3f3f}
.side-foot a:hover{background:#f2f2f1}
.side-foot a.active{background:var(--ink);color:#fff}
.side-foot svg{width:19px;height:19px}
.side-foot .side-me .lbl{display:flex;flex-direction:column;line-height:1.2;overflow:hidden}
.side-foot .side-me small{font-size:11px;color:var(--muted);font-weight:500}
.side-foot .side-me.active small{color:#d4d4d4}
.side-foot .avatar{flex:none}
body.side-mini .sidebar{width:var(--side-mini);padding:16px 10px 12px}
body.side-mini .main-col{margin-left:var(--side-mini)}
body.side-mini .brand{flex-direction:column;padding:0 0 10px}
body.side-mini .brand img.brand-full{display:none}
body.side-mini .brand img.brand-mini{display:block}
body.side-mini .brand .side-toggle{margin:4px 0 0}
body.side-mini .lbl,body.side-mini .nav-gh .chev,body.side-mini .side-nav .nav-badge{display:none}
body.side-mini .side-nav a,body.side-mini .nav-gh,body.side-mini .side-foot a{justify-content:center;padding:10px 0}
body.side-mini .nav-gi{display:none!important}
body.side-mini .create-btn{padding:11px 0}
.menu-btn{display:none}
@media (max-width:900px){
  .sidebar{display:none}
  .main-col,body.side-mini .main-col{margin-left:0}
  .menu-btn{display:inline-flex;color:#fff;margin-left:-6px}
  .back-btn:not([hidden])~.menu-btn{display:none}
  .back-btn:not([hidden])~.topbar-title .mob-logo{display:none}
  .menu-btn~.topbar-title .mob-logo{display:none}
}
.fab{display:none}
@media (max-width:900px){
  .fab{display:flex;position:fixed;right:16px;bottom:calc(var(--bottom-h) + env(safe-area-inset-bottom) + 14px);width:56px;height:56px;border-radius:50%;background:var(--ink);color:#fff;border:0;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.28);z-index:29;cursor:pointer}
  .fab svg{width:26px;height:26px;stroke-width:2.6}
  body.auth-mode .fab{display:none}
}
/* mobile menu (More + hamburger sheet) */
.mobmenu{padding:6px}
.mobmenu a,.mobmenu .nav-gh{display:flex;align-items:center;gap:12px;padding:12px 12px;border-radius:10px;text-decoration:none;color:var(--ink);font-weight:600;font-size:15px;background:none;border:0;width:100%;text-align:left}
.mobmenu svg{width:20px;height:20px;flex:none}
.mobmenu a.active{background:var(--ink);color:#fff}
.mobmenu a.sub{padding-left:44px;font-weight:500}
.mobmenu a.sub svg{display:none}
.mobmenu .nav-sep{height:1px;background:var(--line);margin:6px 8px}
.mobmenu .nav-gh .chev{margin-left:auto}
.mobmenu .nav-gh .chev svg{width:16px;height:16px}
.mobmenu .nav-gi{display:none}.mobmenu .nav-grp.open .nav-gi{display:block}
.mobmenu .nav-grp.open .nav-gh .chev{transform:rotate(180deg)}
.mobmenu .lbl{flex:1}
.create-list .lrow{padding:12px 14px}
.create-list .ch svg{width:18px;height:18px}
/* generic */
.sec-t{font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;margin:18px 2px 8px}
.pad0{padding:14px 16px 0;margin:0}
input.search{flex:1;min-width:180px;padding:10px 12px;border:1.5px solid var(--line2);border-radius:11px;background:#fff}
.warn{color:var(--danger)!important}
.stat .s{font-size:12.5px;color:var(--muted);margin-top:2px;font-weight:500}
a.stat{text-decoration:none;color:inherit;transition:border-color .12s,transform .12s}
a.stat:hover{border-color:var(--ink)}
.kv{grid-template-columns:150px 1fr;padding:7px 0;border-bottom:1px solid var(--line)}
.kv:last-of-type{border-bottom:0}
.kv>span{color:var(--muted);font-weight:600;font-size:13px}
.kv b{font-weight:600;word-break:break-word}
.kv.col{display:block}.kv.col>span{display:block;margin-bottom:6px}
.wording{white-space:pre-line;background:#f7f7f6;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13.5px;margin-bottom:8px}
.filechip{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1.5px solid var(--line);border-radius:11px;text-decoration:none;font-size:13.5px;font-weight:600;margin:0 0 8px;background:#fff}
.filechip:hover{border-color:var(--ink)}
.filechip svg{width:18px;height:18px;flex:none}
.filechip.big small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.filebtn{cursor:pointer}
.selbig{width:100%;padding:11px 12px;border:1.5px solid var(--line2);border-radius:11px;background:#fff;font-weight:600}
.ckline{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;margin:12px 0 4px;cursor:pointer}
.ckline input{width:18px;height:18px;accent-color:var(--ink)}
.warnbox{border-color:#fca5a5;background:#fef2f2;color:#991b1b}
/* coming soon */
.soon{position:relative;max-width:640px}
.soon-badge{display:inline-block;background:var(--ink);color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;margin-bottom:8px}
.soon-list{margin:8px 0 0;padding-left:20px}
.soon-list li{margin:6px 0;font-size:14px}
/* home */
.home-hello{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.home-hello h2{margin:0;font-size:22px;letter-spacing:-.01em}
.home-stats{grid-template-columns:repeat(4,1fr)}
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:14px}
.emp{display:flex;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.emp:last-child{border-bottom:0}
.emp .avatar{width:36px;height:36px;font-size:12px;flex:none}
.techmap{height:320px;border-radius:12px;overflow:hidden;background:#eef0ee;margin-top:10px;z-index:0;position:relative}
.tmark span{display:flex;width:30px;height:30px;border-radius:50%;color:#fff;font-size:11px;font-weight:800;align-items:center;justify-content:center;border:2.5px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.tasks .hist svg{width:18px;height:18px;flex:none}
.tasks .hist{text-decoration:none;color:inherit}
@media (max-width:1100px){.home-stats{grid-template-columns:repeat(2,1fr)}.home-grid{grid-template-columns:1fr}}
@media (max-width:640px){.home-stats{gap:10px}.home-stats .stat{padding:12px}.home-stats .v{font-size:20px}.techmap{height:240px}}
/* pipeline */
.pipe{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.pcol{flex:0 0 250px;background:#ececeb;border-radius:14px;padding:10px;scroll-snap-align:start;display:flex;flex-direction:column;max-height:calc(100vh - 190px)}
.pcol-h{display:flex;justify-content:space-between;align-items:baseline;gap:6px;padding:2px 4px 10px;font-size:13.5px}
.pcol-h span{font-size:12px;color:var(--muted);font-weight:600}
.pcol-b{overflow-y:auto;display:flex;flex-direction:column;gap:8px}
.pcard{display:flex;flex-direction:column;gap:2px;background:#fff;border-radius:11px;padding:10px 12px;text-decoration:none;color:inherit;border:1px solid var(--line);font-size:13.5px}
.pcard:hover{border-color:var(--ink)}
.pcard span{color:var(--ink2)}.pcard small{color:var(--muted);font-size:12px}
.pempty{padding:8px 4px}
/* time clock */
.tc-row{padding:10px 0;border-bottom:1px solid var(--line)}
.tc-row:last-of-type{border-bottom:0}
.tc-nums{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}
.tc-nums.three{grid-template-columns:repeat(3,1fr)}
.tc-nums>div{background:#f5f5f4;border-radius:11px;padding:9px 12px}
.tc-nums span{display:block;font-size:11.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.tc-nums b{font-size:19px;letter-spacing:-.01em}
.tc-bill{background:#fafaf9;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:10px;display:flex;flex-direction:column;gap:5px}
.tc-audit{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line2);display:flex;flex-direction:column;gap:3px}
.clockbar{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:14px;border-left:5px solid var(--line2)}
.clockbar.on{border-left-color:#16a34a}
.wk-r{padding:8px 0;border-bottom:1px solid var(--line);gap:10px}
.wk-r.today{font-weight:700}
.wk-r.tot{border-bottom:0}
.weeknav{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:3px}
.weeknav b{font-size:14px;padding:0 6px;white-space:nowrap}
.ta-wrap{overflow-x:auto;padding:0}
table.ta{width:100%;border-collapse:collapse;font-size:13.5px}
.ta th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.ta th small{font-weight:600;color:var(--ink2)}
.ta th.today{color:var(--ink)}
.ta td{padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.ta tr:last-child td{border-bottom:0}
.ta-name{display:inline-flex;align-items:center;gap:8px;font-weight:700;text-decoration:none}
.dot-on{display:inline-block;width:8px;height:8px;border-radius:50%;background:#16a34a}
.rate-in{width:96px;padding:7px 9px;border:1.5px solid var(--line2);border-radius:9px}
/* COI */
.coi-steps{display:flex;gap:6px;margin:14px 0 10px;flex-wrap:wrap}
.coi-steps .cs{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted);background:#f2f2f1;border-radius:999px;padding:4px 10px 4px 4px}
.coi-steps .cs span{display:inline-flex;width:20px;height:20px;border-radius:50%;background:#fff;align-items:center;justify-content:center;font-size:11px;border:1px solid var(--line2)}
.coi-steps .cs span svg{width:12px;height:12px}
.coi-steps .cs.done{background:var(--ink);color:#fff}
.coi-steps .cs.done span{background:#fff;color:var(--ink);border-color:#fff}
.sharebox{background:#f7f7f6;border:1px dashed var(--line2);border-radius:10px;padding:9px 11px;word-break:break-all;margin-bottom:10px}
.sendrow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sendrow .btn{padding:10px 8px;text-decoration:none}
@media (max-width:420px){.sendrow{grid-template-columns:1fr}}
/* subs + profit */
.sub-row{padding:10px 0;border-bottom:1px solid var(--line)}
.sub-row .amt{font-weight:800}
.pf-r{padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}
.pf-tot{border-bottom:0;font-size:16px;padding-top:10px}
.pf-tot b{font-size:18px}
.pf-tot.neg b{color:var(--danger)}
.seg.wrap{flex-wrap:wrap}
/* insights bars */
.bars{display:flex;align-items:flex-end;gap:12px;height:180px;margin-top:14px}
.bar-c{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}
.bar-pair{flex:1;display:flex;align-items:flex-end;gap:4px;width:100%;justify-content:center}
.bar{display:block;width:40%;max-width:26px;border-radius:5px 5px 0 0;min-height:2px}
.bar.rev,.lg.rev{background:var(--ink)}.bar.cost,.lg.cost{background:#bdbdbb}
.lg{display:inline-block;width:10px;height:10px;border-radius:3px;margin:0 4px 0 10px;vertical-align:-1px}
.bar-c small{font-size:11.5px;color:var(--muted);font-weight:600}
@media (max-width:640px){.kv{grid-template-columns:110px 1fr}.grid3{grid-template-columns:1fr}.weeknav b{font-size:13px}}

/* Materials (v5) */
.mat-top{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.mat-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.mat-tools input.search{flex:1 1 260px}
.mat-tools select{padding:9px 10px;border:1.5px solid var(--line2);border-radius:11px;background:#fff;font:inherit;font-size:14px;max-width:240px;min-height:42px}
.mat-tools .chip{min-height:38px}
.mat-count{margin:4px 2px 8px}
.mat-list .lrow{align-items:flex-start}
.mat-row .mat-t1{white-space:normal;line-height:1.3}
.mat-row .mat-t2{white-space:normal;line-height:1.35;margin-top:2px}
.mat-row .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--ink)}
.mat-best{text-align:right;flex:none;min-width:84px}
.mat-best .tiny{white-space:nowrap}
.mat-row{border-bottom:1px solid var(--line)}.mat-row:last-child{border-bottom:0}
.mat-row .lrow{border-bottom:0}
.mat-row.open>.lrow{background:#fafafa}
.mat-detail{padding:4px 16px 16px;background:#fafafa}
.mat-latest{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;padding:8px 0 10px}
.mat-tab{width:100%;border-collapse:collapse;font-size:14px;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.mat-tab td{padding:8px 10px;border-bottom:1px solid var(--line)}
.mat-tab tr:last-child td{border-bottom:0}
.mat-tab td.r{text-align:right;white-space:nowrap}
.mat-tab tr.best td{font-weight:700}
.mat-tag{display:inline-block;font-size:11px;font-weight:700;background:var(--ink);color:#fff;border-radius:999px;padding:1px 8px;margin-left:4px;vertical-align:1px}
.mat-more{text-align:center;margin:14px 0 24px}
@media (max-width:600px){.mat-tools select{flex:1 1 45%;max-width:none}.mat-tools input.search{flex-basis:100%}}

.mat-th{flex:none;border-radius:8px;object-fit:cover;background:#f2f2f0;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;letter-spacing:.02em}
.mat-th svg{width:18px;height:18px;opacity:.5}
.mat-big{display:block;max-width:220px;max-height:220px;border-radius:10px;margin:6px 0 4px;background:#fff;border:1px solid var(--line);object-fit:contain}
.mat-van{display:inline-block;font-size:11px;font-weight:700;border:1px solid var(--ink);border-radius:999px;padding:0 7px;line-height:17px;vertical-align:1px;color:var(--ink)}
.mat-van.bought{border-color:var(--line2);color:var(--muted)}
.mat-acts{display:flex;gap:8px;flex-wrap:wrap}
.mat-seg{margin-bottom:14px}
.jm-card .lrow{padding:10px 12px}
.jm-card .mat-t1,#pk-res .mat-t1,#van-box .mat-t1{white-space:normal;line-height:1.3}
.jm-card .t2,#pk-res .t2{white-space:normal}

/* v43 Materials picture tiles */
.mat-tools.mt-tiles select,.mat-tools.mt-tiles .chip{display:none}
.mt-bar{display:flex;align-items:center;gap:10px;margin:4px 0 10px}
.mt-bar .mat-count{margin:0}
.mt-view button{display:inline-flex;align-items:center;gap:6px}
.mt-view svg{width:15px;height:15px}
.mt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
@media(min-width:700px){.mt-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}}
@media(min-width:1150px){.mt-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(min-width:1400px){.mt-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
.sheet .mt-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.mt-tile{display:flex;flex-direction:column;align-items:stretch;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px 8px 10px;cursor:pointer;font:inherit;color:inherit;min-width:0;transition:box-shadow .15s,border-color .15s}
.mt-tile:hover{border-color:var(--line2);box-shadow:0 2px 10px rgba(0,0,0,.06)}
.mt-tile:active{transform:scale(.985)}
.mt-img{display:block;width:100%;aspect-ratio:1/1;object-fit:contain;background:#fff;border-radius:10px}
.mt-ph{display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800;letter-spacing:.03em}
.mt-name{font-weight:700;font-size:14px;line-height:1.25;margin-top:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.5em}
.mt-sub{font-size:12px;color:var(--muted);margin-top:3px}
.mt-sub b{color:var(--ink);font-weight:700}
.mt-sec{margin:6px 2px 8px}
.mt-crumb{display:flex;align-items:center;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.mt-crumb .btn{display:inline-flex;align-items:center;gap:4px}
.mt-crumb .btn svg{width:16px;height:16px}
.mt-path{font-size:14px;color:var(--muted);min-width:0}
.mt-path a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.mt-hero{display:flex;gap:14px;align-items:center;margin:0 0 12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px}
.mt-hero .mt-img{width:110px;flex:none}
.mt-hero .t1{font-weight:800;font-size:16px;line-height:1.25}
.mt-imgw{display:block;position:relative}
.mt-imgw.bad .mt-img{visibility:hidden}
.mt-imgw.bad::after{content:attr(data-ini);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800;border-radius:10px;background:hsl(var(--h),30%,93%);color:hsl(var(--h),35%,32%)}
.mt-hero .mt-imgw{width:110px;flex:none}.mt-hero .mt-imgw .mt-img{width:100%}
.mt-ph svg{width:38%;height:38%;opacity:.55}
.mt-imgw.bad::after{content:'';background:hsl(var(--h),22%,95%)}

/* v44 sort/filter + supplier bills */
.lf-top{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.lf-top .search{width:100%;max-width:none}
.lf-bar{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lf-btn{display:flex;align-items:center;justify-content:center;gap:7px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:#fff;font:inherit;font-size:14px;font-weight:600;color:inherit;cursor:pointer;min-width:0}
.lf-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lf-btn.on{background:#111;color:#fff;border-color:#111}
.lf-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.lf-chip{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 6px 0 11px;border-radius:15px;border:1px solid #111;background:#f4f4f4;font:inherit;font-size:13px;font-weight:600;color:#111;cursor:pointer}
.lf-chip svg{width:14px;height:14px}
.lf-chip.clear{border-color:transparent;background:none;text-decoration:underline;padding:0 6px}
.lf-sum{font-size:13px;color:#555;margin:2px 2px 10px}
/* v69.16.0: invoice review (card on the invoice, chip on each row, one-line filter with counts) */
.rv616-card{padding:10px 12px}
.rv616-top{display:flex;align-items:center;gap:8px;min-height:32px}
.rv616-h{font-size:14px}
.rv616-next{display:inline-flex;align-items:center;gap:2px;padding:6px 8px;min-height:36px}
.rv616-next svg{width:16px;height:16px}
.rv616-seg{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#f1f1f1;border-radius:11px;padding:3px;margin-top:6px}
.rv616-b{border:0;background:transparent;border-radius:9px;min-height:40px;padding:4px 2px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink2);cursor:pointer;line-height:1.15}
.rv616-b.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.14)}
.rv616-b.rv616-reviewed.on{background:#e8f0fe;color:#1d4ed8}
.rv616-b.rv616-approved.on{background:#e7f6ec;color:#15803d}
.rv616-b.rv616-fix.on{background:#fdecec;color:#b42318}
.rv616-note{display:flex;align-items:flex-start;gap:8px;margin-top:8px;padding:8px 10px;border-radius:9px;background:#fff4f4;border:1px solid #f5c2c2;font-size:13.5px}
.rv616-chg{display:flex;align-items:center;gap:6px;margin-top:6px;color:#9a5b00}
.rv616-chg svg{width:14px;height:14px;flex:none}
.rv616-by{margin-top:6px}
.rv616-hist{display:inline}
.rv616-hist summary{display:inline;cursor:pointer;text-decoration:underline;margin-left:4px}
.rv616-hist ul{margin:6px 0 0;padding-left:18px}
.rv616-hist li{margin:3px 0}
.pill.rv616{background:#f1f1f1;color:#666}
.pill.rv616.sm{font-size:10.5px;padding:2px 7px}
.pill.rv616-reviewed{background:#e8f0fe;color:#1d4ed8}
.pill.rv616-approved{background:#e7f6ec;color:#15803d}
.pill.rv616-fix{background:#fdecec;color:#b42318}
.rv616-rc{margin-top:3px;text-align:right}
.rv616-fil{display:flex;gap:6px;overflow-x:auto;margin:0 0 8px;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.rv616-fil::-webkit-scrollbar{display:none}
.rv616-f{flex:none;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 11px;border-radius:16px;border:1px solid #ddd;background:#fff;font:inherit;font-size:13px;font-weight:600;color:#333;cursor:pointer}
.rv616-f b{font-weight:800;color:#111}
.rv616-f.on{border-color:#111;background:#111;color:#fff}.rv616-f.on b{color:#fff}
.rv616-f-fix b{color:#b42318}
.lf-opts{display:flex;flex-direction:column}
.lf-opt{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 4px;border:0;border-bottom:1px solid var(--line);background:none;font:inherit;font-size:15px;text-align:left;color:inherit;cursor:pointer}
.lf-opt.on{font-weight:700}
.lf-opt svg{width:18px;height:18px}
.lf-h{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#666;margin:16px 0 8px}
.lf-h:first-child{margin-top:0}
.lf-h b{text-transform:none;letter-spacing:0;color:#111}
.lf-pills{display:flex;flex-wrap:wrap;gap:6px}
.lf-link{border:0;background:none;padding:0 4px;font:inherit;font-size:13px;text-decoration:underline;color:#111;cursor:pointer;text-transform:none;letter-spacing:0}
.lf-clist{margin-top:8px}
.lf-clist .lrow{cursor:pointer;gap:8px}
.lf-clist .lrow.sel,#sb-jlist .lrow.sel{background:#f4f4f4}
.lf-more{padding:10px 14px}
.lf-tb{margin-bottom:8px}
.lf-tabs{overflow-x:auto;white-space:nowrap}
.sb-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:18px;margin-bottom:10px;border:2px dashed #cfcfcf;border-radius:14px;cursor:pointer;text-align:center}
.sb-drop svg{width:26px;height:26px}
.sb-reading{display:flex;flex-direction:column;align-items:center;gap:14px;padding:36px 0;color:#444}
.sb-spin{width:34px;height:34px;border:3px solid #e5e5e5;border-top-color:#111;border-radius:50%;animation:sbspin .8s linear infinite}
@keyframes sbspin{to{transform:rotate(360deg)}}
.sb-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.sb-prev{width:72px;height:72px;object-fit:cover;object-position:top;border-radius:10px;border:1px solid var(--line);flex:none}
.sb-ok{color:#11733a;display:flex;align-items:center;gap:4px}
.sb-ok svg{width:14px;height:14px}
.sb-pdf{display:inline-flex;align-items:center;justify-content:center;background:#fdecec;color:#b42318;font-weight:800;font-size:11px;border-radius:9px;flex:none}
.sb-job{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid #111;border-radius:12px;background:#fafafa}
.sb-lines{margin:6px 0 4px;font-size:13px}
.sb-lines summary{cursor:pointer;font-weight:600;padding:6px 0}
.sb-line{display:flex;gap:10px;padding:5px 0;border-bottom:1px solid var(--line)}
.sb-big{width:100%;max-height:340px;object-fit:contain;border-radius:12px;border:1px solid var(--line);margin-bottom:12px;background:#fafafa}
.pill.st-overdue{background:#fdecec;color:#b42318}
@media (min-width:901px){.lf-top{flex-direction:row;align-items:center}.lf-top .search{max-width:360px}.lf-bar{display:flex}.lf-btn{min-width:150px}}

/* v45 emailed supplier bills */
.sb-badge{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:9px;background:#c62828;color:#fff;font-size:11px;line-height:18px;text-align:center;font-weight:700}
.sb-unh{display:flex;align-items:center;gap:6px;color:#c62828}.sb-unh svg{width:18px;height:18px}
.sb-unm{border:1.5px solid #c62828}
.notice.warn{background:#fff7e0;border-color:#e0b400}
.notice .btn.sm{margin-left:auto;flex:none}

/* v46 service contracts */
.ct-badge{background:#111;color:#fff;gap:6px}
.ct-badge svg{width:13px;height:13px}
.ct-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.ct-bar a{color:inherit}
.ct-home h3 svg{width:17px;height:17px;vertical-align:-3px;margin-right:4px}
.ct-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:12px 0 4px}
.ct-kpis a{display:flex;flex-direction:column;gap:2px;background:#f6f6f4;border-radius:12px;padding:10px 12px;text-decoration:none;color:var(--ink)}
.ct-kpis a b{font-size:20px;letter-spacing:-.01em}
.ct-kpis a span{font-size:12px;color:var(--ink2);font-weight:600}
.ct-kpis a.bad b{color:var(--danger)}
.ct-tabs{overflow-x:auto;flex-wrap:nowrap}
.ct-tabs .chip{text-decoration:none;color:inherit}
.ct-tabs .chip.on{color:#fff}
.ct-visit .btn{flex:none;align-self:center}
.ct-hint a{color:inherit;font-weight:700}
.coi-chain{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.coi-chain .pill svg{width:12px;height:12px}
.coi-arr{color:var(--ink3,#999);font-size:12px}

/* ===== v47: single ☰ navigation on phones, left drawer, swipe-back hint, 3D map ===== */
.bottom-nav{display:none!important}
@media (max-width:900px){
  :root{--bottom-h:0px}
  .back-btn:not([hidden])~.menu-btn{display:inline-flex}
  .topbar{gap:4px}
  .topbar .back-btn,.topbar .menu-btn{flex:none}
  .topbar-title{min-width:0}
  .topbar-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
.sheet-back.drawer{justify-content:flex-start;align-items:stretch;padding:0;animation:fade .18s ease}
.sheet-back.drawer .sheet{width:min(86vw,340px);max-width:340px;height:100%;max-height:none;border-radius:0 18px 18px 0;animation:drawerIn .22s cubic-bezier(.2,.8,.2,1);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.sheet-back.drawer .sheet-b{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1}
@keyframes drawerIn{from{transform:translateX(-100%)}to{transform:none}}
.drawer-foot{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}
.mobmenu a{position:relative}
.mobmenu a .nav-badge{margin-left:auto}
.swipe-hint{position:fixed;left:6px;top:50%;width:40px;height:40px;border-radius:50%;background:rgba(10,10,10,.82);color:#fff;display:flex;align-items:center;justify-content:center;z-index:80;opacity:0;pointer-events:none;transition:opacity .15s,background .15s;transform:translate(0,-50%)}
.swipe-hint svg{width:22px;height:22px}
.swipe-hint.go{background:#0a0a0a}
.techmap.techmap3d{background:#f4f2ee}
.techmap3d .maplibregl-ctrl-attrib{font-size:10px}
.m47-tech{width:30px;height:30px;border-radius:50%;border:2.5px solid #fff;color:#fff;font:700 11px/25px system-ui,-apple-system,sans-serif;text-align:center;box-shadow:0 3px 10px rgba(0,0,0,.3);cursor:pointer}
.m47-pin{--c:#0a0a0a;position:relative;border:0;background:var(--c);color:#fff;border-radius:16px;padding:6px 10px;font:700 12px/1 system-ui,-apple-system,sans-serif;box-shadow:0 4px 12px rgba(0,0,0,.28);cursor:pointer;white-space:nowrap;margin-bottom:8px}
.m47-pin::after{content:'';position:absolute;left:50%;bottom:-6px;width:10px;height:10px;background:var(--c);transform:translateX(-50%) rotate(45deg);border-radius:0 0 3px 0}
.m47-pin span{position:relative;z-index:1}

.tm-edit{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--ink);border:1.5px solid var(--line2);border-radius:999px;padding:5px 10px;flex:none}
.tm-edit svg{width:14px;height:14px}
.acc-list{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.acc-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.acc-row:last-child{border-bottom:0}
.acc-row input{width:20px;height:20px;flex:none;accent-color:#0a0a0a}
.acc-row.changed{background:#fff8e6}
.acc-row input:disabled+span{color:var(--muted)}

/* v48: time clock, taps, payroll, Samsara */
.steps .step{min-height:104px}
.steps .step .step-l{font-size:15px}
.steps-note{display:flex;gap:6px;align-items:center;margin:0 2px 8px}
.steps-note svg{width:13px;height:13px;flex:none}
.punch-busy{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 70px);transform:translateX(-50%);z-index:9999;background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;display:flex;gap:10px;align-items:center;font-weight:600;font-size:14px;box-shadow:var(--shadow)}
.punch-busy .spin{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin48 .8s linear infinite}
@keyframes spin48{to{transform:rotate(360deg)}}
.clock48{margin-bottom:12px}
.clock48 .clk-dot{width:12px;height:12px;border-radius:50%;background:#c7c7c7;flex:none}
.clock48.on .clk-dot{background:var(--st-done)}
.clock48.lunch .clk-dot{background:var(--warn)}
.clock48 .clk-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.clock48 .clk-btns .btn{min-height:56px;font-size:16px;justify-content:center}
.clock48 .clk-btns .btn:only-child{grid-column:1/-1}
.btn.danger-b{background:var(--danger);border-color:var(--danger);color:#fff}
.tap48{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line)}
.tap48:first-of-type{border-top:0}
.tap48 .tap-t{font-weight:700;font-size:13px;min-width:58px;font-variant-numeric:tabular-nums}
.tap48.void{opacity:.5}
.tap48.void .tap-t{text-decoration:line-through}
.tap48.far .tap-t{color:var(--danger)}
.tap48 a.tiny{display:inline-flex;gap:3px;align-items:center}
.tap48 a.tiny svg{width:12px;height:12px}
.tap-who{margin-top:6px}
.danger-t{color:var(--danger)}
.pay-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 4px}
.pay-grid.sm{grid-template-columns:repeat(4,1fr);margin:8px 0}
.pay-grid>div{background:#f6f6f6;border-radius:10px;padding:8px 9px;display:flex;flex-direction:column;gap:2px;min-width:0}
.pay-grid span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-grid b{font-size:15px;font-variant-numeric:tabular-nums}
.pay-grid .gross{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center;background:var(--accent-soft)}
.acc48{border-top:1px solid var(--line);margin-top:8px}
.acc48>summary{list-style:none;cursor:pointer;padding:10px 2px;font-weight:600;font-size:14px;display:flex;align-items:center;gap:6px}
.acc48>summary::-webkit-details-marker{display:none}
.acc48>summary::after{content:'';margin-left:auto;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s}
.acc48[open]>summary::after{transform:rotate(-135deg)}
.acc48.flags>summary{color:var(--danger)}
.acc48 summary svg{width:15px;height:15px}
.flag48{font-size:13px;padding:5px 0;display:flex;gap:6px;align-items:flex-start}
.flag48 svg{width:14px;height:14px;flex:none;color:var(--danger);margin-top:2px}
.flag48.loc svg,.flag48.info svg{color:var(--warn)}
.flags48{margin-top:8px;background:#fff6f6;border-radius:10px;padding:6px 10px}
.pad-s{padding:4px 2px}
.steps48{padding-left:20px;margin:8px 0 12px}
.steps48 li{margin:3px 0}
.m48-truck{display:flex;align-items:center;gap:6px;background:#0a84ff;color:#fff;border-radius:999px;padding:4px 10px 4px 4px;font-size:12px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.25);border:2px solid #fff;cursor:pointer;white-space:nowrap}
.m48-truck .tk-ic{width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center}
.m48-truck svg{width:14px;height:14px}
.pay48-edit{border-top:1px solid var(--line);margin-top:14px}
.tap48 .pill{white-space:normal;max-width:100%;line-height:1.3;height:auto}
.pay-grid.sm b{font-size:13.5px;white-space:nowrap}
.pay-grid b{white-space:nowrap}

/* ===== v49: bottom tab bar back on phones (no More), + opens Create ===== */
@media (max-width:900px){
  body.has-bn49{--bottom-h:62px}
  :root{--bottom-h:0px}
  body.has-bn49 .bottom-nav{display:grid!important}
  .bottom-nav[hidden]{display:none!important}
  .bottom-nav{z-index:40;box-shadow:0 -1px 0 rgba(0,0,0,.02)}
  .bottom-nav a,.bottom-nav .bn-plus{-webkit-tap-highlight-color:transparent;min-height:48px}
  .bottom-nav a.active{color:var(--ink)}
  .bottom-nav a.active::before{content:'';position:absolute;top:0;left:28%;right:28%;height:3px;border-radius:0 0 3px 3px;background:var(--ink)}
  .bn-plus{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;color:var(--ink);font-family:inherit;font-size:10.5px;font-weight:600;line-height:1.2;cursor:pointer;padding:0}
  .bn-plus-c{width:34px;height:28px;border-radius:10px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center}
  .bn-plus-c svg{width:20px;height:20px;stroke-width:2.6}
  body.has-bn49 .fab{display:none!important}
  body.auth-mode .bottom-nav{display:none!important}
}
.loc49{text-align:left}
.loc49-ic{width:48px;height:48px;border-radius:50%;background:#fdecea;color:#c62828;display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.loc49-ic svg{width:26px;height:26px}
.loc49-steps{margin:0;padding-left:20px;font-size:14.5px;line-height:1.45}
.loc49-steps li{margin-bottom:6px}

/* ===== v50 hiring / onboarding ===== */
.hire50-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line, #e5e5e5); color: inherit; text-decoration: none; }
.hire50-row:last-child { border-bottom: 0; }
.hire50-row svg { width: 18px; height: 18px; flex: none; opacity: .5; }
.hire50-pills { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 4px; }
.hire50-chk { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line, #eee); color: inherit; text-decoration: none; }
.hire50-chk:last-child { border-bottom: 0; }
.hire50-chk > svg { width: 18px; height: 18px; opacity: .5; flex: none; }
.hire50-dot { width: 22px; height: 22px; border-radius: 50%; border: 2px solid #111; flex: none; display: inline-flex; align-items: center; justify-content: center; }
.hire50-dot.done { background: #111; color: #fff; }
.hire50-dot svg { width: 13px; height: 13px; }
.hire50-s2, .hire50-home { border: 2px solid #111; }
.hire50-s2.overdue, .hire50-home.overdue { border-color: #b00020; background: #fff6f7; }
.hire50-home h2 { display: flex; align-items: center; gap: 8px; font-size: 16px; }
.hire50-home h2 svg { width: 18px; height: 18px; }
.txt-bad { color: #b00020; }
.kv50 { display: grid; grid-template-columns: 34% 66%; gap: 6px 10px; font-size: 14px; margin: 0; }
.kv50 dt { color: #666; } .kv50 dd { margin: 0; word-break: break-word; }
.linkbtn { background: none; border: 0; padding: 0 2px; font: inherit; font-size: 13px; font-weight: 700; text-decoration: underline; color: inherit; cursor: pointer; }
.rv50 { background: #fff3c4; padding: 0 4px; border-radius: 4px; font-family: ui-monospace, monospace; }
.share50 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.share50 .btn { justify-content: center; }
.sig50 { border: 1.5px dashed #888; border-radius: 10px; background: #fafafa; touch-action: none; }
.sig50 canvas { display: block; width: 100%; height: 140px; touch-action: none; }
.chk50 { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; margin: 10px 0; }
.chk50 input { width: 20px; height: 20px; flex: none; margin: 0; accent-color: #111; }
.pdf50 { width: 100%; height: 65vh; border: 1px solid #ccc; border-radius: 8px; background: #fff; }
.img50 { max-width: 100%; height: auto; border-radius: 8px; display: block; }
.err50:empty { display: none; }

/* v51: email status + price changes */
.mail51{padding:10px 0;border-top:1px solid var(--line)}
.mail51:first-of-type{border-top:0}
.pill.st-bad{background:#fde8e8;color:#b42318}
.pc51{display:flex;gap:10px;padding:12px 14px;border-top:1px solid var(--line);align-items:flex-start}
.card .pc51:first-child{border-top:0}
.pc51.on{background:#f5f5f5}
.pc51-chk{padding-top:2px}
.pc51-chk input{width:20px;height:20px}
.pc51 .t1{font-weight:600}
.txt-bad{color:#b42318}
.pc51-link{display:inline-flex}
/* v52 */
.code52 { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; background: #f1f1f1; border-radius: 6px; padding: 2px 6px; word-break: break-all; display: inline-block; margin: 2px 0; }
#set-stripe textarea { width: 100%; }
.cust-grid > * { min-width: 0; } /* v52: settings grid no longer overflows at 390px */

/* v53: one-step receipt / COI upload, all-jobs picker */
.vh53{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;pointer-events:none}
.snap53{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:22px 16px;border:2px dashed var(--line,#d4d4d4);border-radius:16px;background:#fafafa;cursor:pointer;min-height:120px;margin-bottom:6px}
.snap53 svg{width:34px;height:34px}
.snap53 b{font-size:17px}
.snap53 span{font-size:13px;color:var(--muted,#666);max-width:280px}
.snap53:active{background:#f0f0f0}
#ex53-pick,#cq-pick{display:flex;flex-direction:column}
#ex53-pick[hidden],#cq-pick[hidden]{display:none}
.filebtn{position:relative;cursor:pointer}
.att53{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line,#ddd);border-radius:14px;background:#fff}
.att53 img{width:64px;height:64px;object-fit:cover;border-radius:10px;background:#eee}
.att53 .grow{min-width:0}.att53 b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.more53{margin:10px 0 4px;border-top:1px solid var(--line,#e5e5e5);padding-top:8px}
.more53>summary{cursor:pointer;font-weight:600;padding:8px 0;list-style:none;display:flex;align-items:center;gap:6px}
.more53>summary::-webkit-details-marker{display:none}
.more53>summary::before{content:'+';display:inline-flex;width:20px;height:20px;border-radius:50%;background:#eee;align-items:center;justify-content:center;font-weight:700}
.more53[open]>summary::before{content:'–'}
.jp53 .jp53-cur{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line,#d4d4d4);border-radius:12px;background:#fff;font:inherit;text-align:left;cursor:pointer;color:inherit}
.jp53 .jp53-cur svg{width:18px;height:18px;flex:none}
.jp53 .jp53-lbl{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.jp53-panel{margin-top:8px;border:1px solid var(--line,#ddd);border-radius:12px;padding:8px;background:#fff}
.jp53-panel[hidden]{display:none}
.jp53-q{width:100%;min-height:42px;padding:8px 12px;border:1px solid var(--line,#ccc);border-radius:10px;font:inherit;font-size:16px;margin-bottom:6px;box-sizing:border-box}
.jp53-list{max-height:320px;overflow:auto;-webkit-overflow-scrolling:touch}
.jp53-list .lrow{cursor:pointer;padding:10px 8px}
.jp53-list .lrow.sel{background:#f2f2f2;border-radius:10px}
.ocr53 .items53{border-top:1px solid var(--line,#eee);padding-top:6px;font-size:14px}
.ocr53 .items53 .row{gap:10px;padding:3px 0}
.ex53 .kv{margin-bottom:12px}

.tscroll53{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.tscroll53 table{min-width:100%}

/* v53: file inputs that used the hidden attribute stay in the layout (visually hidden) so iPhone Safari always opens the picker from their label */
label input[type=file][hidden]{display:block!important;position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;pointer-events:none}
label:has(> input[type=file]){position:relative}

.rm53{width:34px;height:34px;margin:2px 0 6px 6px;vertical-align:middle;border:1px solid var(--line,#ddd);border-radius:50%;background:#fff}
.rm53 svg{width:16px;height:16px}

/* v53: segmented period picker (Insights, Reports) overflowed 390px by 4px */
#view .seg{max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
#view .seg::-webkit-scrollbar{display:none}

/* v54: night on-call */
.nights54{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:10px}
.night54{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;border:1px solid var(--line,#e3e3e3);border-radius:10px;background:#fff;color:#111;font:inherit;cursor:pointer;min-width:0;min-height:58px}
.night54 .d{font-size:10px;color:#666;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.night54 .w{font-size:12px;font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.night54 .b{font-size:10px;color:#666;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.night54 .sw{font-size:9px;font-weight:700;text-transform:uppercase;background:#111;color:#fff;border-radius:6px;padding:0 4px}
.night54 .pay{font-size:10px;color:#166534}
.night54.tonight{border:2px solid #000;background:#f4f4f4}
.night54.swapped .w{text-decoration:underline}
.btn.go54{background:#000;color:#fff;border-color:#000;min-height:68px;font-size:21px;font-weight:800;border-radius:16px;margin:4px 0 6px;justify-content:center}
.btn.go54[disabled]{opacity:.6}
a.tban54{display:block;background:#000;color:#fff;text-decoration:none;border-color:#000}
a.tban54 .tiny{color:#bbb;letter-spacing:.06em;font-weight:700}
a.oncall54{display:flex;gap:8px;align-items:center;color:inherit;text-decoration:none;font-size:14px}
a.oncall54 svg,a.tban54 svg{width:18px;height:18px}
.leg54{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line,#eee)}
.leg54:first-of-type{border-top:0}
.leg54 .n{width:28px;height:28px;border-radius:50%;background:#000;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.leg54 .grow{min-width:0}
a.nc54{display:block;color:inherit;text-decoration:none}
a.nc54 .small svg{width:14px;height:14px;vertical-align:-2px}
a.nc54.warn54{border:2px solid #b00020}
.vanopt54{align-items:flex-start;padding:6px 0}
.nj54 .t1 svg{width:16px;height:16px;vertical-align:-3px}
a.notice{color:inherit;text-decoration:none}

/* v58: file uploads are big black buttons, chosen file name shown under them */
.fpwrap{display:block;margin-bottom:12px}
.fpwrap>.fp-lab{display:block;font-size:12.5px;font-weight:600;color:var(--ink2);margin-bottom:5px}
.btn.filepick{position:relative;display:flex;min-height:54px;font-size:15.5px;font-weight:700;border-radius:14px;-webkit-tap-highlight-color:transparent}
.btn.filepick b{font-weight:700;overflow:hidden;text-overflow:ellipsis}
.fp-name{margin-top:7px;font-size:13.5px;font-weight:500;color:var(--muted,#666);word-break:break-all}
.fp-name.has{color:var(--ink);font-weight:700}
.filepick:focus-within,.snap53:focus-within,.sb-drop:focus-within,.bigadd:focus-within,.filebtn:focus-within{outline:3px solid var(--ink,#000);outline-offset:3px}
.snap53{border:0;background:var(--ink,#0a0a0a);color:#fff}
.snap53 span{color:rgba(255,255,255,.78)}
.snap53:active{background:#262626}
.sb-drop{border:0;background:var(--ink,#0a0a0a);color:#fff}
.sb-drop .muted,.sb-drop .tiny{color:rgba(255,255,255,.78)}
.sb-drop:active{background:#262626}
.bigadd.plate{background:var(--ink,#0a0a0a);color:#fff;border:0}

/* v60: sign-in codes + authenticator setup */
.v60-or{display:flex;align-items:center;gap:10px;margin:18px 0 12px;color:var(--ink2,#555);font-size:13px}
.v60-or:before,.v60-or:after{content:"";flex:1;height:1px;background:var(--line2,#ddd)}
.v60-choices{display:grid;gap:10px}
.v60-choices .btn{justify-content:center}
.v60-links{display:flex;flex-direction:column;gap:12px;margin-top:16px;font-size:14px}
.v60-links a{color:var(--ink,#000);font-weight:600;text-decoration:underline;text-underline-offset:3px;padding:2px 0}
.v60-code{font-size:26px!important;letter-spacing:.32em;text-align:center;font-variant-numeric:tabular-nums;padding:12px 8px!important}
.v60-code.bk{letter-spacing:.12em}
.v60-qrwrap{display:flex;justify-content:center;margin:6px 0 14px}
.v60-qr{width:min(240px,70vw);height:auto;border:1px solid var(--line2,#ddd);border-radius:10px;background:#fff}
.v60-key{display:flex;align-items:center;gap:8px;margin:6px 0 4px;flex-wrap:wrap}
.v60-key code{font-size:15px;font-weight:700;letter-spacing:.06em;background:#f4f4f4;border-radius:8px;padding:8px 10px;word-break:break-all;flex:1;min-width:0}
.v60-bk{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.v60-bk code{font-size:16px;font-weight:700;letter-spacing:.06em;background:#f4f4f4;border-radius:8px;padding:9px;text-align:center}
.v60-btns{display:flex;flex-wrap:wrap;gap:8px}
.notice.ok{background:#ecfdf3;border-color:#86d3a5;border-style:solid}

main svg.v60-qr,.sheet svg.v60-qr,svg.v60-qr{width:min(240px,68vw)!important;height:auto!important;flex:none}
.v60-setup .btn,.v60-choices .btn,.v60-btns .btn{white-space:normal;height:auto;min-height:44px;text-align:center;line-height:1.25}

/* v61: staff 2-step */
.v61-opts .btn{margin-top:8px}
.v61-hint{margin:6px 2px 10px}
.v61-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.v61-acts:empty{display:none}
.v61-row .t2 .pill{margin-left:4px}
.v61-big{font-size:36px;font-weight:800;letter-spacing:4px;text-align:center;margin:14px 0;font-variant-numeric:tabular-nums;user-select:all}
#set-security .ckline{align-items:flex-start}
#set-security .ckline input{margin-top:3px}

/* v62: time card, time off, my schedule, requests */
.tc62-head{display:grid;grid-template-columns:minmax(84px,1fr) minmax(0,1.6fr) 64px;gap:8px;padding:8px 0 4px;border-bottom:1px solid var(--line)}
.tc62-head span:last-child{text-align:right}
.tc62-row{display:grid;grid-template-columns:minmax(84px,1fr) minmax(0,1.6fr) 64px;gap:2px 8px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:13px}
.tc62-head+.tc62-row{border-top:0}
.tc62-row.off{color:var(--muted)}
.tc62-row.to{border-top:1px dashed var(--line);padding-top:6px}
.tc62-d{font-weight:600;white-space:nowrap}
.tc62-io{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.tc62-h{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tc62-sub{grid-column:2/4}
.tc62-flag{color:#b42318;padding:0 0 8px;display:flex;gap:6px;align-items:flex-start}
.tc62-flag svg,.tc62-warn svg{width:14px;height:14px;flex:none;margin-top:1px}
.tc62-warn{color:#b42318;display:flex;gap:6px;align-items:flex-start}
.tc62-sig.signed{border-left:4px solid #16a34a}
.tc62-sig.stale{border-left:4px solid #dc2626;background:#fff7f7}
.tc62-sig.unsigned{border-left:4px solid #d4d4d4}
.tc62-sig .pill svg{width:12px;height:12px;margin-right:3px;vertical-align:-1px}
.tc62-link{text-decoration:none;color:inherit}
.tc62-link svg{width:18px;height:18px;flex:none}
.tc62-links .lrow>svg{width:18px;height:18px;flex:none;color:var(--muted)}
.pill.to62{background:#eef2ff;color:#3730a3}
.to62-chip{font-size:11px;font-weight:700;background:#eef2ff;color:#3730a3;border-radius:6px;padding:3px 6px;margin:2px 2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.to62-tag{font-size:10px;font-weight:700;background:#eef2ff;color:#3730a3;border-radius:999px;padding:1px 6px;margin-left:6px}
.to62-strip{align-items:flex-start}
.ms62.today{box-shadow:inset 3px 0 0 #2563eb}
.ms62.offday{background:#fafaff}
.ms62-off{display:flex;align-items:center;gap:6px;background:#eef2ff;color:#3730a3;border-radius:10px;padding:8px 10px;margin-top:8px;font-size:13px}
.ms62-off svg{width:15px;height:15px;flex:none}
.ms62-job{display:flex;align-items:center;gap:10px;padding:10px 0 10px 10px;border-top:1px solid var(--line);text-decoration:none;color:inherit;border-left:3px solid var(--c);margin-top:8px;border-radius:2px}
.ms62-job .t1{font-weight:600;font-size:14px}
.ms62-job .t2{font-size:12px;color:var(--muted)}
.ms62-job .grow{min-width:0}
.ms62-job .t1,.ms62-job .t2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ms62-t{width:62px;flex:none;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.rq62 .t1{display:flex;align-items:center;gap:6px}
.dot62{width:8px;height:8px;border-radius:50%;background:#2563eb;display:inline-block;flex:none}
.rq62-note{white-space:pre-wrap;background:#f6f6f6;border-radius:10px;padding:10px;margin:10px 0}
.msg62{background:#f3f4f6;border-radius:12px;padding:8px 10px;margin:8px 0;max-width:88%}
.msg62.office{background:#eaf2ff;margin-left:auto}
.msg62.sys{background:transparent;border:1px dashed var(--line)}
.msg62 .small{white-space:pre-wrap;word-break:break-word}
@media (max-width:420px){.tc62-row,.tc62-head{grid-template-columns:78px minmax(0,1fr) 58px;gap:2px 6px}.tc62-row{font-size:12.5px}}
.tc62-row.today .tc62-d{color:#2563eb}
.b62g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.b62g .f span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-grid.rq62-g{grid-template-columns:repeat(2,minmax(0,1fr))}
.b-head .to62-tag{flex:none}

/* ===== v63: punch clock (FingerCheck-style) ===== */
.p63{max-width:520px;margin:0 auto;text-align:center;display:flex;flex-direction:column;gap:12px;padding-top:4px}
.p63-who{display:flex;align-items:center;justify-content:center;gap:8px;font-size:15px;color:var(--ink2)}
.p63-clock{font-weight:800;line-height:.95;letter-spacing:-.035em;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";display:flex;align-items:baseline;justify-content:center;gap:2px;margin-top:2px}
.p63-hm{font-size:clamp(64px,21vw,112px)}
.p63-s{font-size:clamp(26px,8vw,44px);color:var(--muted);font-weight:700}
.p63-ap{font-size:clamp(18px,5.5vw,28px);font-weight:700;margin-left:6px;letter-spacing:0}
.p63-date{font-size:16px;font-weight:600;color:var(--muted);margin-top:-4px}
.p63-st{display:flex;align-items:center;gap:12px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 14px;font-size:16px}
.p63-st b{font-size:17px}
.p63-wk{font-size:13.5px;color:var(--muted);margin-top:1px}
.p63-wk:empty{display:none}
.p63-dot{width:14px;height:14px;border-radius:50%;background:#c7c7c7;flex:none;box-shadow:0 0 0 4px rgba(0,0,0,.05)}
.p63-in .p63-dot,.c63-in .p63-dot{background:#16a34a;box-shadow:0 0 0 4px rgba(22,163,74,.18);animation:p63pulse 2s ease-in-out infinite}
.p63-lunch .p63-dot,.c63-lunch .p63-dot{background:#d97706;box-shadow:0 0 0 4px rgba(217,119,6,.18)}
.p63-in .p63-st{border-color:#86efac;background:#f0fdf4}
.p63-lunch .p63-st{border-color:#fcd34d;background:#fffbeb}
@keyframes p63pulse{50%{box-shadow:0 0 0 7px rgba(22,163,74,.08)}}
.p63-btns{display:grid;gap:12px;margin-top:2px}
.p63-btn,.c63-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;border:0;border-radius:20px;color:#fff;font-family:inherit;font-weight:800;letter-spacing:.05em;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:transform .06s,box-shadow .06s,filter .1s;user-select:none;-webkit-user-select:none}
.p63-btn{min-height:96px;font-size:27px;box-shadow:0 6px 0 rgba(0,0,0,.22),0 10px 24px rgba(0,0,0,.12)}
.p63-btns.two .p63-btn{min-height:84px;font-size:24px}
.p63-btn svg{width:34px;height:34px;stroke-width:2.6}
.p63-btn:active,.c63-btn:active{transform:translateY(4px);box-shadow:0 2px 0 rgba(0,0,0,.22)}
.p63-go{background:#16a34a}.p63-stop{background:#dc2626}.p63-lunch{background:#d97706}
.p63-btn.busy,.c63-btn.busy{filter:saturate(.4) brightness(.92);pointer-events:none}
.p63-btn.busy span::after,.c63-btn.busy span::after{content:'…'}
.p63-log{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 12px;font-size:13px;color:var(--ink2)}
.p63-log span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.p63-log i{color:var(--warn);font-style:normal}
.p63-note{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;color:var(--muted)}
.p63-note svg{width:15px;height:15px;flex:none}
/* card at the top of My jobs / My time */
.c63{padding:0;margin-bottom:14px;overflow:hidden;border:2px solid var(--line)}
.c63.c63-in{border-color:#86efac}.c63.c63-lunch{border-color:#fcd34d}
.c63-head{display:flex;align-items:center;gap:12px;padding:14px 14px 10px;text-decoration:none;color:inherit}
.c63-head>svg{width:18px;height:18px;color:var(--muted);flex:none}
.c63-st{font-weight:800;font-size:19px;line-height:1.2}
.c63-sub{font-size:13px;color:var(--muted)}
.c63-time{font-weight:800;font-size:30px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.c63-time small{font-size:13px;font-weight:700;margin-left:3px;letter-spacing:0}
.c63-btns{display:grid;gap:10px;padding:0 14px 14px}
.c63-btns.two{grid-template-columns:1fr 1fr}
.c63-btn{min-height:64px;font-size:18px;box-shadow:0 4px 0 rgba(0,0,0,.2)}
.c63-btn svg{width:24px;height:24px;stroke-width:2.6}
.c63-btns.two .c63-btn{font-size:16px;gap:8px;letter-spacing:.02em}
/* full-screen result */
.p63ov{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:24px;padding-bottom:calc(24px + env(safe-area-inset-bottom));color:#fff;animation:p63in .16s ease-out;-webkit-tap-highlight-color:transparent}
.p63ov.p63ov-ok{background:#15803d}.p63ov.p63ov-err{background:#b91c1c}.p63ov.p63ov-warn{background:#b45309}.p63ov.p63ov-ask{background:rgba(10,10,10,.92)}
.p63ov.bye{opacity:0;transition:opacity .17s}
@keyframes p63in{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}
.p63ov-in{width:100%;max-width:420px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.p63ov-ic{width:120px;height:120px;display:flex;align-items:center;justify-content:center}
.p63ov-ic svg{width:120px;height:120px}
.p63ov.p63ov-err .p63ov-ic svg,.p63ov.p63ov-warn .p63ov-ic svg{width:96px;height:96px;stroke-width:2.4}
.p63ov.p63ov-ask .p63ov-ic{display:none}
.p63ov .ck{stroke-dasharray:40;stroke-dashoffset:40;animation:p63ck .35s .08s ease-out forwards}
@keyframes p63ck{to{stroke-dashoffset:0}}
.p63ov-t{font-size:30px;font-weight:800;line-height:1.15}
.p63ov-big{font-size:56px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.p63ov-sub{font-size:16px;line-height:1.5;opacity:.95}
.p63ov-loc{display:inline-flex;align-items:center;gap:5px;font-size:14px;opacity:.9}
.p63ov-loc svg{width:15px;height:15px}
.p63ov-bar{width:160px;height:5px;border-radius:5px;background:rgba(255,255,255,.3);overflow:hidden;margin-top:14px}
.p63ov-bar i{display:block;height:100%;background:#fff;transform-origin:left;animation:p63bar linear forwards}
@keyframes p63bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.p63ov-okbtn{margin-top:18px;min-width:180px;min-height:56px;border-radius:16px;border:0;background:#fff;color:var(--ink);font-family:inherit;font-weight:800;font-size:18px;cursor:pointer}
.p63ov-two{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;width:100%;margin-top:22px}
.p63ov-two button{min-height:72px;border-radius:18px;border:0;font-family:inherit;font-weight:800;font-size:19px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}
.p63ov-two svg{width:24px;height:24px}
.p63ov-no{background:#3f3f46;color:#fff}.p63ov-yes{background:#dc2626;color:#fff}
.p63-sw{position:fixed;left:-9999px;top:0;opacity:0;pointer-events:none}
/* sidebar entry */
.side-nav a.side-punch63{background:#16a34a;color:#fff;font-weight:700;margin-bottom:6px}
.side-nav a.side-punch63:hover{background:#15803d;color:#fff}
.side-nav a.side-punch63.sp-in{background:#1c1c1c;color:#fff;box-shadow:inset 3px 0 0 #22c55e}
.side-nav a.side-punch63.sp-lunch{background:#1c1c1c;color:#fff;box-shadow:inset 3px 0 0 #f59e0b}
.side-nav a.side-punch63.active{outline:2px solid #fff;outline-offset:-2px}
/* bottom bar: raised center Punch */
@media (max-width:900px){
  .bottom-nav a.bn-punch{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px;padding-bottom:5px;text-decoration:none;color:var(--ink);font-size:10.5px;font-weight:800;position:relative;overflow:visible}
  .bottom-nav a.bn-punch::before{display:none!important}
  .bn-punch-c{width:56px;height:56px;margin-top:-22px;border-radius:50%;background:#16a34a;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(22,163,74,.45),0 0 0 4px #fff}
  .bn-punch-c svg{width:28px!important;height:28px!important;stroke-width:2.6}
  .bn-p-in .bn-punch-c{background:var(--ink);box-shadow:0 4px 12px rgba(0,0,0,.3),0 0 0 4px #fff,inset 0 0 0 3px #22c55e}
  .bn-p-lunch .bn-punch-c{background:#d97706;box-shadow:0 4px 12px rgba(217,119,6,.4),0 0 0 4px #fff}
  .bottom-nav a.bn-punch.active .bn-punch-c{transform:scale(1.04)}
  .bottom-nav{overflow:visible}
  body.pg-punch63 .proto-strip{display:none}
  body.pg-punch63 main{padding-top:10px}
}
@media (max-width:380px), (max-height:760px){
  .p63{gap:9px}
  .p63-btn{min-height:84px;font-size:24px}
  .p63-btns.two .p63-btn{min-height:74px;font-size:21px}
  .p63ov-big{font-size:48px}
}
.p63ov.p63ov-warn,.p63ov.p63ov-err,.p63ov.p63ov-ok,.p63ov.p63ov-ask{color:#fff}
.p63-st b{display:block}
.p63-since{font-size:15px;color:var(--ink2)}
.c63-btns.two .c63-btn{font-size:15px;letter-spacing:.01em;white-space:nowrap}
@media (max-width:400px){.c63-btns.two .c63-btn svg{display:none}}

/* v64: certificate expiry */
.pill.exp64{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.pill.exp64 svg{width:13px;height:13px}
.pill.exp64-ok{background:#eef6ee;color:#1f6b2a}
.pill.exp64-soon{background:#fff3d6;color:#8a5200}
.pill.exp64-out{background:#fdecec;color:#b42318}
.exp64row{margin-top:4px}
.exp64head{margin:8px 0 2px}

/* v65 Vans */
.v65-al{display:flex;gap:10px;align-items:flex-start;background:#fff1f0;border:1.5px solid #f2b8b5;border-radius:var(--r-sm);padding:11px 13px;margin-bottom:10px;color:#5c1410}
.v65-al>svg{width:20px;height:20px;flex:none;color:#c62828;margin-top:1px}
.v65-al.done{background:#fafafa;border-color:var(--line);color:var(--ink2)}
.v65-al.done>svg{color:#9e9e9e}
.v65-al b{display:block;font-size:14px;line-height:1.3}
.v65-home{background:#fff1f0;border:1.5px solid #f2b8b5;color:#5c1410}
.v65-home>svg:first-child{color:#c62828}
.v65-bar{align-items:center;gap:8px;margin:2px 0 10px}
.v65-van .v65-top{display:flex;gap:10px;align-items:center}
.v65-ic{width:38px;height:38px;border-radius:10px;background:#eef3ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex:none}
.v65-ic svg{width:22px;height:22px}
.v65-name{font-weight:700;font-size:17px;text-transform:capitalize;line-height:1.2}
.v65-st{font-size:12px;font-weight:700;padding:5px 9px;border-radius:999px;white-space:nowrap;flex:none;max-width:52%;overflow:hidden;text-overflow:ellipsis}
.v65-st.v65-go{background:#e6f6ec;color:#17803d}
.v65-st.v65-warn{background:#fff4d6;color:#8a5a00}
.v65-st.v65-off{background:#f0f0ef;color:#555}
.v65-where{display:flex;gap:8px;align-items:flex-start;margin-top:12px;font-size:14px;line-height:1.35}
.v65-where>svg{width:18px;height:18px;flex:none;color:#c62828;margin-top:1px}
.v65-lbl{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#777;margin:14px 0 6px}
.v65-ppl{display:flex;flex-direction:column;gap:6px}
.v65-p{display:flex;align-items:center;gap:8px;font-size:14px;flex-wrap:wrap}
.v65-dot{width:9px;height:9px;border-radius:50%;flex:none;background:#bbb}
.v65-dot.v65-ok{background:#17a34a}.v65-dot.v65-warn{background:#e0a400}
.v65-w{padding:2px 0}
.v65-w-alert{color:#b71c1c;font-weight:600}.v65-w-moved{color:#17803d}
.v65-rules ul{margin:6px 0 0;padding-left:18px}.v65-rules li{margin:4px 0}
.v65-tg{display:flex;gap:10px;align-items:center;margin:12px 0 6px;font-size:14px}
.v65-tg input{width:20px;height:20px;flex:none}
.v65-hrs{gap:6px;align-items:center}.v65-hrs input{width:70px}
.v65-days{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.v65-days label{display:flex;align-items:center;gap:4px;font-size:13px;border:1px solid var(--line2);border-radius:8px;padding:5px 8px}
.v65-pick{display:flex;flex-direction:column;gap:2px}
.v65-pick label{display:flex;gap:10px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line);font-size:15px}
.v65-pick input{width:20px;height:20px;flex:none}
.v65-sl{margin:4px 0}

/* v65.6 open instantly: update bar + snapshot notes */
#upd656{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom));z-index:80;background:#0a0a0a;color:#fff;border:0;border-radius:999px;padding:10px 18px;font:700 13px/1.2 inherit;font-family:inherit;box-shadow:0 6px 24px rgba(0,0,0,.25);cursor:pointer;white-space:nowrap}
@media (max-width:900px){#upd656{bottom:calc(var(--bottom-h) + 14px + env(safe-area-inset-bottom))}}
.net.net656{max-width:62vw;overflow:hidden;text-overflow:ellipsis}

/* v65.7 full-screen team map */
.mapfs{position:fixed;inset:0;z-index:10050;background:#f4f2ee;display:flex;flex-direction:column;overscroll-behavior:contain;touch-action:none}
.mapfs[hidden]{display:none}
.mapfs-bar{display:flex;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top,0px) + 8px) calc(env(safe-area-inset-right,0px) + 12px) 8px calc(env(safe-area-inset-left,0px) + 16px);background:#fff;border-bottom:1px solid var(--line);flex:0 0 auto}
.mapfs-bar .grow{flex:1;min-width:0}
.mapfs-t{font-weight:800;font-size:17px;line-height:1.2;color:var(--ink)}
.mapfs-n{font-size:12.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapfs-x{width:46px;height:46px;flex:0 0 46px;border-radius:50%;border:0;background:#0a0a0a;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.mapfs-x svg{width:22px;height:22px}
.mapfs-body{flex:1 1 auto;position:relative;min-height:0}
.mapfs-body>div{position:absolute!important;inset:0;height:auto!important;margin:0!important;border-radius:0!important}
.mapfs .maplibregl-ctrl-bottom-right,.mapfs .maplibregl-ctrl-bottom-left,.mapfs .leaflet-bottom{margin-bottom:env(safe-area-inset-bottom,0px)}
.mapfs .maplibregl-ctrl-top-right{margin-right:env(safe-area-inset-right,0px)}
html.mapfs-open,body.mapfs-open{overflow:hidden!important;overscroll-behavior:none}
body.mapfs-open #toast{z-index:10060}
body.mapfs-open #upbar{z-index:10060}
.mapfs-ctl .mapfs-btn{display:flex;align-items:center;justify-content:center;color:#0a0a0a}
.mapfs-ctl .mapfs-btn svg{width:17px;height:17px}
.mapfs-lb{position:absolute;top:10px;right:10px;z-index:500;width:34px;height:34px;border-radius:8px;border:2px solid rgba(0,0,0,.2);background:#fff;color:#0a0a0a;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mapfs-head{cursor:pointer;align-items:center}
.mapfs-hint{display:inline-flex;margin-left:8px;color:var(--muted)}
.mapfs-hint svg{width:16px;height:16px}
.techmap-hold{background:#f4f2ee}

/* v65.8 WhatsApp · AI drafts */
.pill.wa658{background:#dcfce7;color:#166534;display:inline-flex;align-items:center;gap:4px;font-weight:700}
.pill.wa658 svg{width:12px;height:12px}
.pill.wa658-new{background:#fee2e2;color:#991b1b;font-weight:700}
.wa658-note .pill.wa658{margin-left:4px;vertical-align:middle}
.wa658-strip{text-decoration:none;color:inherit}
.wa658-thread{display:flex;flex-direction:column;gap:8px;background:#efeae2;border-radius:12px;padding:10px;max-height:none}
.wa658-row{display:flex}
.wa658-row.out{justify-content:flex-end}
.wa658-row .bubble{max-width:86%;white-space:normal;word-wrap:break-word;overflow-wrap:anywhere}
.wa658-row .bubble .meta{display:block;text-align:right;font-size:11px;opacity:.6;margin-top:4px}
.wa658-txt{white-space:pre-wrap}
.wa658-img{display:block;max-width:100%;width:240px;max-height:320px;object-fit:cover;border-radius:8px;margin-bottom:4px;background:#ddd}
.wa658-row audio{display:block;width:240px;max-width:100%;height:40px;margin:4px 0}
.wa658-vn{display:flex;align-items:center;gap:6px;font-size:13px}
.wa658-vn svg{width:16px;height:16px}
.wa658-tr{margin-top:4px;font-size:13px;line-height:1.35}
.wa658-file{display:inline-flex;align-items:center;gap:6px}
.wa658-file svg{width:16px;height:16px}

/* v65.9: WhatsApp-style media tiles, full-screen viewer, reply box */
.wa658-row .bubble.wa659-mb{padding:4px 4px 6px}
.wa659-mb .wa659-cap{padding:5px 7px 0}
.wa659-mb .meta{padding:0 6px}
.wa659-mb .wa659-fail{margin:6px 6px 0}
.wa659-media{position:relative;display:block;border:0;padding:0;margin:0;border-radius:8px;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent;max-width:100%;font:inherit;color:#fff}
.wa659-vid{background:#1f2c33;height:auto}
.wa659-poster{position:absolute;inset:0;background:#1f2c33 center/cover no-repeat}
.wa659-vid:not(.has-poster) .wa659-poster{background-image:linear-gradient(160deg,#2a3942,#1a242a)}
.wa659-play{position:absolute;left:50%;top:50%;width:54px;height:54px;margin:-27px 0 0 -27px;border-radius:50%;background:rgba(11,20,26,.55);display:flex;align-items:center;justify-content:center;box-shadow:0 1px 6px rgba(0,0,0,.25)}
.wa659-play svg{width:28px;height:28px;margin-left:3px;color:#fff}
.wa659-dur{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:4px;padding:16px 8px 5px;background:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0));font-size:11.5px;font-weight:600;color:#fff;text-align:left}
.wa659-dur svg{width:15px;height:15px;flex:0 0 auto}
.wa659-dur b{font-weight:600}
.wa659-ph{width:260px;background:#d9d9d9}
.wa659-ph img{display:block;width:100%;height:auto;max-height:340px;min-height:80px;object-fit:cover}
.wa659-media:focus-visible{outline:3px solid #25d366;outline-offset:2px}
.wa659-fail{display:flex;gap:6px;align-items:flex-start;margin-top:6px;font-size:12.5px;line-height:1.35;color:#991b1b}
.wa659-fail svg{width:15px;height:15px;flex:0 0 auto;margin-top:1px}
.wa658-row .bubble.wa659-failed{background:#fde8e8}
.wa659-reply{margin-top:10px}
.wa659-rbox{display:flex;align-items:flex-end;gap:8px;background:#efeae2;border-radius:28px;padding:6px}
.wa659-rbox textarea{flex:1;min-width:0;border:0;border-radius:22px;background:#fff;padding:10px 14px;font:inherit;font-size:15px;line-height:1.35;resize:none;min-height:44px;max-height:132px;box-shadow:0 1px 1px rgba(0,0,0,.06);outline:none;color:var(--ink)}
.wa659-rbox textarea:focus{box-shadow:0 0 0 2px #25d366}
.wa659-rbox textarea:disabled{background:#f4f4f4;color:#888}
.wa659-send{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:0;background:#00a884;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.wa659-send svg{width:20px;height:20px}
.wa659-send:disabled{background:#b8c2c0;cursor:default}
.wa659-send.busy{opacity:.7}
.wa659-rnote{margin:6px 6px 0;line-height:1.35}
/* v65.9.1: Tab's suggested reply label above the Reply box */
.wa6591-sg{margin:0 6px 6px;font-size:12px;line-height:1.3;color:#8a8a8a;font-weight:500}
html.wa659-lb-open,body.wa659-lb-open{overflow:hidden}
.wa659-lb{position:fixed;inset:0;z-index:10080;background:#000;display:flex;flex-direction:column;overscroll-behavior:contain}
.wa659-lb-bar{flex:0 0 auto;display:flex;align-items:center;padding:calc(env(safe-area-inset-top,0px) + 8px) 8px 8px}
.wa659-lb-x{width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.wa659-lb-x svg{width:24px;height:24px}
.wa659-lb-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 0 calc(env(safe-area-inset-bottom,0px) + 8px)}
.wa659-lb-stage video,.wa659-lb-stage img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;background:#000}
.wa659-lb-stage video{width:100%;height:100%}

/* v65.9.2: WhatsApp receipts on the office's replies */
.wa6592-tk { font-weight: 800; letter-spacing: -.32em; margin-right: .38em; color: #8696a0; }
.wa6592-tk.rd { color: #34b7f1; }

/* v65.9.5: one sign-in for staff and customers */
.v6595 .v6595-who{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);border-radius:12px;padding:10px 12px;margin:10px 0 12px;font-size:14px;min-width:0}
.v6595 .v6595-who span{display:flex;align-items:center;gap:8px;min-width:0}
.v6595 .v6595-who span b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.v6595 .v6595-who svg{width:18px;height:18px;flex:none}
.v6595 .v6595-who a{font-weight:700;font-size:14px;flex:none}
.v6595 .v6595-alt{text-align:center;margin:14px 0 0;font-size:13px}
.v6595 .v6595-alt a{color:var(--muted,#6b7280);text-decoration:underline;text-underline-offset:2px}
.v6595 .v6595-alt:empty{display:none}
.v6595 .v6595-new{text-align:center;margin-top:10px}
.v6595 .v6595-big svg{width:40px;height:40px;margin:6px 0 0}
.v6595 #authForm .btn.big{margin-top:6px}
/* v66: pay rates, crews, cost per guy, overhead, E-ZPass, warranty */
.v66 .v66-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}
.v66 .v66-kpis>div{background:var(--bg);border-radius:12px;padding:10px;min-width:0}
.v66 .v66-kpis span{display:block;font-size:11px;color:var(--muted);line-height:1.25}
.v66 .v66-kpis b{display:block;font-size:18px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v66-sum .row,.v66-cats .row,.v66-det .row{padding:5px 0;border-bottom:1px solid var(--line);gap:8px;align-items:baseline}
.v66-sum .pf-tot{border-bottom:0;font-size:15px}
.v66-cats{margin-bottom:8px}
.v66-ph{text-align:right;flex:none}.v66-ph b{display:block;font-size:20px;line-height:1.1}.v66-ph span{font-size:11px;color:var(--muted)}
.v66-bar{background:var(--bg);border-radius:10px;padding:8px 10px;margin-top:8px}
.v66-det{margin-top:8px}.v66-det summary{cursor:pointer;padding:4px 0}
.v66-miss{color:#b45309;margin-top:6px}
.v66-verify{display:inline-block;font-size:10px;font-weight:700;color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;padding:0 5px;white-space:nowrap;vertical-align:1px}
.v66-wc{gap:6px;margin-bottom:6px;align-items:center}
.v66-wc input{min-width:0;padding:10px 8px;border:1px solid var(--line2);border-radius:10px;font:inherit;font-size:15px;background:#fff}
.v66-wc .v66-wcc{width:62px;flex:none}.v66-wc .v66-wcr{width:84px;flex:none}.v66-wc .v66-wcn{flex:1}
.v66-acts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.v66-it{align-items:center}.v66-it .t2{overflow-wrap:anywhere}
.v66-amt{text-align:right;margin-left:8px;flex:none}.v66-amt b{display:block;white-space:nowrap}.v66-amt span{font-size:11px;color:var(--muted)}
.v66-off{opacity:.55}
.v66-now{font-weight:700;white-space:nowrap}
.v66-pay .f{margin-bottom:8px}
.v66-pay .grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.v66-it .grow{min-width:0}.v66-it .pill{display:inline-block;margin-top:4px;max-width:100%;white-space:normal}
.v66-mypay{display:flex;gap:10px;align-items:flex-start;margin-top:12px}.v66-mypay>svg{flex:none;margin-top:2px}.v66-mypay-r{font-size:26px;font-weight:800;line-height:1.15}
.v66-mem .v65-top{align-items:center}
.v66-pl{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;margin:8px 0 4px;color:var(--ink2)}
.v66-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.v66-row>svg{flex:none;width:18px;height:18px}
.v66-row .grow{min-width:0;overflow-wrap:anywhere}
.v66-wpill{background:var(--ink);color:#fff;margin-right:6px}
.v66-war{border:1.5px solid var(--ink)}
.v66-ez .lrow{align-items:center}.v66-ez .t2{overflow-wrap:anywhere}
.v66-ez .lrow>b{flex:none;margin-left:8px}
.v66-it .grow .t1{white-space:normal;overflow-wrap:anywhere}
@media (max-width:420px){.v66 .v66-kpis b{font-size:16px}.v66-acts .btn{flex:1 1 auto}}

/* v66.1: MPI approvals (office side) */
.v661-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0 0 12px}
.v661-sb{font:inherit;border:1px solid var(--line,#e3e3e3);background:var(--card,#fff);color:inherit;border-radius:14px;padding:10px 6px;cursor:pointer;text-align:center;min-width:0}
.v661-sb b{display:block;font-size:22px;line-height:1.1}
.v661-sb span{display:block;font-size:11px;font-weight:600;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v661-sb.on{background:#000;color:#fff;border-color:#000}
.v661-list{padding:0;overflow:hidden}
.v661-row{display:block;width:100%;text-align:left;font:inherit;color:inherit;background:none;border:0;border-bottom:1px solid var(--line,#eee);padding:12px 14px;cursor:pointer}
.v661-row:last-child{border-bottom:0}
.v661-row:hover{background:rgba(0,0,0,.03)}
.v661-r1{display:flex;align-items:baseline;gap:10px;min-width:0}
.v661-ad{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v661-amt{white-space:nowrap}
.v661-r2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}
.v661-vc{display:inline-flex;align-items:center;gap:3px;font-weight:700}
.v661-vc svg{width:14px;height:14px}
.v661-note{margin-top:6px;overflow-wrap:anywhere}
.v661-why{margin-top:4px}
.v661-st{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:3px 9px;border:1px solid currentColor;white-space:nowrap}
.v661-approved{background:#000;color:#fff;border-color:#000}
.v661-rejected{border-style:dashed}
.v661-question{background:#ececec;color:#000;border-color:#ececec}
.v661-ev{padding:10px 0;border-bottom:1px solid var(--line,#eee)}
.v661-ev:last-child{border-bottom:0}
.v661-evn{margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}
.v661-tr{margin-top:6px;background:rgba(0,0,0,.05);border-radius:10px;padding:8px 10px}
.v661-ip{margin-top:4px;overflow-wrap:anywhere}
@media (max-width:520px){.v661-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.v661-tb input.search{flex:1 1 100%}.v661-tb .btn{flex:1 1 auto}.v661-tb .grow{display:none}}

/* v66.2: one sign-in screen: password field with Show, and the text-code option */
.v662-pw{position:relative}.v662-pw input{padding-right:68px}.v662-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;font:inherit;font-size:13px;font-weight:700;color:var(--ink,#111);padding:8px 10px;cursor:pointer}.v662-code{margin-top:10px}.v662-hint{text-align:center;margin:10px 0 0}

/* v66.3: media marked internal (staff only) */
.mint{position:absolute;right:6px;top:6px;display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;color:#fff;background:#b91c1c;border-radius:6px;padding:2px 6px}

/* v66.4 in-app camera */
body.cam664-on{overflow:hidden}
.cam664{position:fixed;inset:0;z-index:10000;background:#000;color:#fff;display:flex;flex-direction:column;justify-content:space-between;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}
.cam664-v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}
.cam664-v.mirror{transform:scaleX(-1)}
.cam664-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.cam664-flash.go{animation:cam664f .25s ease-out}
@keyframes cam664f{0%{opacity:.85}100%{opacity:0}}
.cam664-top{position:relative;display:flex;align-items:center;justify-content:space-between;padding:calc(10px + env(safe-area-inset-top,0px)) 12px 10px;background:linear-gradient(rgba(0,0,0,.55),rgba(0,0,0,0))}
.cam664-ib{width:48px;height:48px;border-radius:50%;border:0;background:rgba(0,0,0,.45);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.cam664-ib svg{width:26px;height:26px}
.cam665-tr{display:flex;gap:10px;align-items:center}
.cam665-torch[hidden]{display:none}
.cam665-torch.on{background:#fff;color:#000}
.cam664.recording .cam664-ib[data-cam="flip"]{opacity:.35;pointer-events:none}
.cam664-timer{display:flex;align-items:center;gap:6px;background:#e11d2a;color:#fff;border-radius:999px;padding:6px 12px;font-weight:800;font-size:16px;font-variant-numeric:tabular-nums}
.cam664-timer[hidden]{display:none}
.cam664-timer small{font-weight:600;opacity:.85;font-size:12px}
.cam664-dot{width:9px;height:9px;border-radius:50%;background:#fff;animation:cam664b 1s steps(2) infinite}
@keyframes cam664b{50%{opacity:.2}}
.cam664-msg{position:absolute;left:0;right:0;top:45%;text-align:center;font-weight:700;font-size:15px;opacity:.9}
.cam664-msg[hidden]{display:none}
.cam664-bot{position:relative;padding:8px 18px calc(18px + env(safe-area-inset-bottom,0px));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.6))}
.cam664-hint{text-align:center;font-weight:700;font-size:14px;margin-bottom:12px;text-shadow:0 1px 3px rgba(0,0,0,.8)}
.cam664.recording .cam664-hint{color:#ff6b74}
.cam664-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
.cam664-done{justify-self:end;min-height:48px;padding:0 18px;border-radius:999px;border:0;background:#fff;color:#000;font-weight:800;font-size:15px;cursor:pointer}
.cam664-shut{width:80px;height:80px;border-radius:50%;border:5px solid #fff;background:transparent;padding:5px;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent}
.cam664-shut span{display:block;width:100%;height:100%;border-radius:50%;background:#fff;transition:transform .15s,background .15s,border-radius .15s}
.cam664-shut.press span{transform:scale(.88)}
.cam664.recording .cam664-shut{border-color:#e11d2a}
.cam664.recording .cam664-shut span{background:#e11d2a;transform:scale(.55);border-radius:10px}
button.bigadd{border:0;font-family:inherit;width:100%}

.cam664-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none;min-height:0}
.cam664-strip::-webkit-scrollbar{display:none}
.cam664-th{position:relative;flex:none;width:62px;height:62px;border-radius:10px;overflow:visible;border:2px solid #fff;background:#222}
.cam664-th img,.cam664-th video{width:100%;height:100%;object-fit:cover;border-radius:8px;display:block}
.cam664-dur{position:absolute;left:3px;bottom:3px;display:flex;align-items:center;gap:2px;background:rgba(0,0,0,.65);border-radius:6px;padding:1px 4px;font-size:10.5px;font-weight:800}
.cam664-dur svg{width:9px;height:9px}
.cam664-del{position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;border:2px solid #fff;background:#000;color:#fff;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer}
.cam664-del svg{width:14px;height:14px}
.cam664-del::before{content:"";position:absolute;inset:-8px}
.cam664-strip{padding-top:10px;padding-right:10px}
.cam664-count{justify-self:start;font-size:12.5px;font-weight:700;max-width:96px;line-height:1.2}
.cam664.recording .cam664-done,.cam664.recording [data-cam="close"]{opacity:.35;pointer-events:none}

/* ===== v66.6: tech job flow (added items, time fixes, access check) ===== */
.v666-pend { flex-wrap: wrap; background: #f4f4f4; border-left: 3px solid #111; padding-left: 10px !important; border-radius: 6px; }
.v666-under { flex-basis: 100%; }
.v666-flag { display: inline-flex; max-width: 100%; align-items: center; gap: 5px; margin-top: 4px; font-size: 11.5px; font-weight: 700; color: #111; background: #fff; border: 1.5px dashed #111; border-radius: 999px; padding: 2px 9px 2px 7px; }
.v666-flag svg { width: 13px; height: 13px; flex: none; }
.v666-rv { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.v666-qty span { min-width: 34px; text-align: center; }
.v666-rm { margin: 6px 0 10px; line-height: 1.5; }
.v666-addbtn { margin-top: 8px; }
.v666-note { display: flex; gap: 10px; align-items: flex-start; text-decoration: none; color: inherit; border: 1.5px solid #111; }
.v666-accline { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; margin: 2px 0 10px; padding: 7px 10px; border-radius: 8px; background: #f2f2f2; color: #111; }
.v666-accline svg { width: 16px; height: 16px; flex: none; }
.v666-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.v666-fix { border: 1px solid #d6d6d6; border-radius: 10px; padding: 10px 12px; margin: 10px 0 0; background: #fafafa; }
.v666-tr { display: grid; grid-template-columns: 88px 1fr auto; gap: 6px; font-size: 13px; padding: 3px 0; }
.v666-pill { background: #fff; border: 1px solid #111; color: #111; }
.v666-pill.on { background: #111; color: #fff; }
.v666-job { margin-top: 12px; }
.v666-job a, .v666-item a, .v666-dayjob a { color: #111; }
.v666-item { border-top: 1px solid #e6e6e6; padding: 10px 0; }
.v666-item:first-of-type { border-top: 0; }
.v666-dayjob { display: flex; align-items: center; gap: 10px; border-top: 1px solid #e6e6e6; padding: 10px 0; }
.v666-tgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.v666-tgrid .f small { display: block; margin-top: 3px; }
.v666-tin { width: 100%; min-width: 0; }
.v666-adm { display: flex; padding: 5px 0; }
.v666-acc { text-align: center; }
.v666-acc-q { font-weight: 600; margin: 0 0 14px; }
.v666-accbtn { min-height: 64px; font-size: 20px; font-weight: 800; letter-spacing: .2px; border-radius: 14px; margin-bottom: 18px; }
.v666-acc-l { margin-bottom: 8px; }
.v666-who { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-bottom: 10px; }
.v666-who .chip { min-height: 40px; padding: 0 12px; }
.v666-who .chip.on { background: #111; color: #fff; border-color: #111; }
.v666-accn { width: 100%; margin-bottom: 10px; }
.v666-acc-sub { margin-bottom: 8px; }
@media (max-width: 380px) { .v666-tgrid { grid-template-columns: 1fr 1fr; } .v666-tr { grid-template-columns: 76px 1fr auto; } }
/* ===== v66.7: line-item prices toggle (invoice page + Send sheet) ===== */
.v667-box{border:1px solid var(--line,#e3e3e3);border-radius:12px;padding:10px 12px;background:#fafafa}
.v667-pt{align-items:flex-start;gap:10px;margin:0}
.v667-pt input{margin-top:3px;flex:0 0 auto}

/* ===== v66.8: No charge close-out + Wasted time report ===== */
.nc668-pill{background:#111;color:#fff}
.nc668-stk{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px}
.nc668-badge{display:inline-flex;align-items:center;background:#111;color:#fff;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:700;letter-spacing:.01em}
.nc668-card{border:1.5px solid #111}
.nc668-card .mt-s,.nc668-month .mt-s,.mt-s{margin-top:6px}
.nc668-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}
.nc668-kv>div{background:#f5f5f4;border-radius:10px;padding:8px 10px}
.nc668-kv .k{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.nc668-kv .v{font-size:17px;font-weight:800;margin-top:2px}
.nc668-rows{margin-top:8px;border-top:1px solid var(--line)}
.nc668-rows .row{padding:6px 0;border-bottom:1px solid var(--line)}
.nc668-reasons{display:flex;flex-wrap:wrap;gap:8px}
.nc668-reasons .chip{padding:9px 14px;font-size:14px}
.nc668-plan{background:#fafafa;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.nc668-bad{color:#b91c1c;font-weight:600}
.mb-s{margin-bottom:6px}
.nc668-month{display:flex;align-items:center;gap:8px;padding:8px 10px}
.nc668-month .icon-btn[disabled]{opacity:.3}
.nc668-next svg{transform:rotate(180deg)}
.nc668-mlabel{position:relative;text-align:center;font-size:16px;cursor:pointer}
.nc668-mlabel input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}
.nc668-stats{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}
.nc668-tbl{padding:4px 0;overflow:hidden}
.nc668-tr{display:grid;grid-template-columns:1fr 46px 64px 86px;gap:6px;align-items:center;padding:11px 14px;font-size:14px;border-bottom:1px solid var(--line)}
.nc668-tr>span:not(:first-child){text-align:right}
.nc668-th{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding-top:8px;padding-bottom:8px}
.nc668-tot{font-weight:800;border-bottom:0}
.nc668-det summary{cursor:pointer;list-style:none}
.nc668-det summary::-webkit-details-marker{display:none}
.nc668-det summary>span:first-child::before{content:"›";display:inline-block;margin-right:6px;transition:transform .15s;color:var(--muted)}
.nc668-det[open] summary>span:first-child::before{transform:rotate(90deg)}
.nc668-job{display:flex;gap:10px;align-items:flex-start;padding:9px 14px 9px 28px;background:#fafafa;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;font-size:13.5px}
.nc668-job .right{text-align:right;white-space:nowrap}
.pad-s{padding:10px 14px 4px}
@media (max-width:380px){.nc668-tr{grid-template-columns:1fr 38px 58px 78px;padding:10px 10px;font-size:13.5px}}

/* v67: Start WhatsApp chat sheet + Delete my account */
.wa67-chips{display:flex;flex-wrap:wrap;gap:6px}
.wa67-chips .chip{min-height:36px}
.wa67-fields label.f{margin-bottom:10px}
.wa67-p.bad{border-color:#b00020!important}
.wa67-err{display:block;color:#b00020;font-size:12px;font-weight:600;min-height:0;margin-top:3px}
.wa67-err:empty{display:none}
.wa67-bad{color:#b00020;font-weight:600}
.wa67-prev{background:#efeae2;border-radius:14px;padding:12px}
.wa67-bub{background:#d9fdd3;border-radius:10px 10px 2px 10px;padding:9px 11px;font-size:14px;line-height:1.4;max-width:92%;margin-left:auto;color:#111;box-shadow:0 1px 1px rgba(0,0,0,.08);overflow-wrap:anywhere}
.wa67-hole{background:#fff3cd;color:#7a5a00;border-radius:4px;padding:0 4px;font-weight:600;font-size:12px}
.wa67-recent .small{margin:4px 0}
.wa67-closed{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.wa67-start svg{width:15px;height:15px}
.v67-delbtn{color:#b00020!important;border-color:#e7b7bf!important}
.v67-drow{align-items:flex-start;gap:10px}

/* v67.2: app-review demo account banner */
#demoBar{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#fde68a;color:#422006;font:600 12px/1.3 Montserrat,system-ui,sans-serif;text-align:center;padding:6px 10px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -1px 0 rgba(0,0,0,.12);pointer-events:none}
.proto-strip.demo672{background:#fde68a!important;color:#422006!important;font-weight:700}
.lf-top{position:relative}
.lf672-dd{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:60;background:#fff;border:1px solid var(--line,#e6e6e6);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.14);max-height:60vh;overflow:auto;-webkit-overflow-scrolling:touch}
.lf672-it{display:block;padding:10px 12px;border-bottom:1px solid var(--line,#eee);color:inherit;text-decoration:none}
.lf672-it:active,.lf672-it:hover,.lf672-it:focus{background:#f5f5f5;outline:none}
.lf672-it .t1{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lf672-it .t2{font-size:12px;color:var(--muted,#6b6b6b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lf672-none{padding:12px;color:var(--muted,#6b6b6b);font-size:13px}
.lf672-all{display:block;width:100%;padding:11px 12px;border:0;background:#fafafa;font:700 13px Montserrat,system-ui,sans-serif;color:var(--ink,#0a0a0a);text-align:center;border-radius:0 0 12px 12px;cursor:pointer}

/* v67.3: punch details, pause reasons, hours per job, missing Start/Finish, invoice sent states, live connections */
.pill.st-notsent{background:#fef3c7;color:#92400e}
.pill.st-zero{background:#f1f5f9;color:#475569}
.pill.st-notinv{background:#fef3c7;color:#92400e}
.pill.st-notinv .dot{background:#d97706}
.tap673{cursor:pointer;border-radius:10px}
.tap673:hover,.tap673:focus-visible{background:rgba(37,99,235,.06);outline:none}
.tap673:focus-visible{box-shadow:0 0 0 2px #2563eb}
.p673-why{font-weight:600}
.p673-reasons{display:grid;gap:8px;margin:6px 0 10px}
.p673-r.on{border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.25)}
.p673-open{border:1px solid var(--line,#e6e6e6);border-radius:12px;padding:10px 12px;margin-bottom:8px;background:#fffbeb}
.p673-grid{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:start}
.p673-k{font-size:12px;font-weight:700;color:var(--muted,#6b6b6b);text-transform:uppercase;letter-spacing:.04em;padding-top:2px}
.p673-v{font-size:14px;min-width:0;overflow-wrap:anywhere}
.p673-map{height:190px;border-radius:12px;overflow:hidden;margin-bottom:6px;background:#eef2f7;border:1px solid var(--line,#e6e6e6)}
.j673-map{height:200px;border-radius:12px;overflow:hidden;margin:10px 0 4px;background:#eef2f7;border:1px solid var(--line,#e6e6e6)}
.j673-map.empty{height:auto}
.h673-row{padding:8px 0;border-top:1px solid var(--line,#e6e6e6)}
.h673-h{font-size:17px;white-space:nowrap}
.h673-tot{padding:10px 0 2px;border-top:2px solid var(--ink,#0a0a0a);margin-top:4px;font-size:15px}
.g673-n{cursor:pointer;display:flex;gap:10px;align-items:center;background:#fff7ed;border:1px solid #fed7aa;color:#7c2d12}
.g673-n svg{width:20px;height:20px;flex:none}
.g673-day{border-top:1px solid var(--line,#e6e6e6)}
.g673-day:first-child{border-top:0}
.g673-h{font-size:12px;font-weight:700;padding:10px 12px 4px;color:var(--muted,#6b6b6b);display:flex;align-items:center;gap:6px}
.s673{display:flex;gap:10px;align-items:center}
.s673 svg{width:20px;height:20px;flex:none}
.s673.warn{background:#fffbeb;border:1px solid #fde68a;color:#78350f}
.s673.ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#14532d}
.c673{align-items:center}
.c673 .pill{white-space:nowrap}
.m673 span{display:block;width:18px;height:18px;border-radius:50%;border:3px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.45)}
.m673-job span{width:34px;height:34px;border:3px solid #dc2626;background:rgba(220,38,38,.12);box-shadow:none}
.crew673-b{display:flex;gap:10px;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a}
.crew673-b.split{background:#fffbeb;border-color:#fde68a;color:#78350f}
.crew673-b svg{width:20px;height:20px;flex:none}
.crew673-ask{margin:-4px 0 10px;align-items:center}
.crew673-row{padding:8px 0;border-top:1px solid var(--line,#e6e6e6)}
.c673r{padding:6px 0;border-top:1px solid var(--line,#e6e6e6);align-items:center;gap:8px}

/* v67.4 inbox read/unread */
.req.read674 .req-name{font-weight:600}
.req.read674 .req-issue{font-weight:500}
.req.unread674 .req-name{font-weight:800}
.req.unread674 .req-issue{font-weight:700;color:var(--ink)}
.req.unread674 .req-sum{color:var(--ink2)}
.req.unread674 .req-time{color:#0a66ff;font-weight:700}
.req.unread674::after{content:"";position:absolute;right:10px;top:50%;width:9px;height:9px;margin-top:-4px;border-radius:50%;background:#0a66ff}
.req.unread674{padding-right:28px}
.req[data-rd674]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.rd674-bar{display:flex;justify-content:flex-end;margin-bottom:8px}
.rd674-menu .lrow{width:100%;background:none;border:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
.lg674 i{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 3px 0 6px;vertical-align:middle}

/* v67.8 how-to videos */
.v678-sec{margin-bottom:18px}
.v678-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.v678-card{display:flex;flex-direction:column;text-align:left;background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;overflow:hidden;padding:0;cursor:pointer;font:inherit;color:inherit}
.v678-card:hover{border-color:#bdbdbd}
.v678-thumb{position:relative;aspect-ratio:16/10;background:#111;display:flex;align-items:center;justify-content:center;overflow:hidden}
.v678-thumb img{width:100%;height:100%;object-fit:cover}
.v678-ph{color:#777}
.v678-play{position:absolute;width:44px;height:44px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;display:flex;align-items:center;justify-content:center}
.v678-dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.7);color:#fff;font-size:12px;padding:1px 6px;border-radius:6px}
.v678-meta{padding:10px 12px 12px}
.v678-meta .t1{font-weight:700}
.v678-meta .t2{font-size:13px;color:var(--muted);margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.v678-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.v678-player{background:#000;border-radius:12px;overflow:hidden;display:flex;justify-content:center}
.v678-player video{width:100%;max-height:68vh;display:block;background:#000}
.v678-note{background:#fdf6e7;border-radius:8px;padding:8px 10px;white-space:pre-wrap}
.v678-roles{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:6px}
.v678-roles label{display:flex;align-items:center;gap:6px}
@media (max-width:600px){.v678-grid{grid-template-columns:1fr 1fr;gap:10px}.v678-roles{grid-template-columns:1fr}}

/* v67.9: boxes are fixed. No text box anywhere can be dragged bigger (David: "all these boxes should just be fixed") */
textarea{resize:none !important;overflow-y:auto}
textarea:not([rows]){min-height:84px}
.v678-note textarea,#v678n{min-height:96px;max-height:96px}
img{-webkit-user-drag:none}
/* v67.9: access question before On my way */
.v679-acc-why{margin:-6px 0 12px}
.v679-acc-call{display:flex;gap:8px;justify-content:center;margin:0 0 14px}
.v679-acc-call .btn{flex:1}
.v679-accopts{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}
.v679-acco{display:flex;align-items:center;gap:10px;width:100%;min-height:54px;padding:10px 14px;border:2px solid var(--line2);border-radius:14px;background:#fff;font-size:17px;font-weight:700;text-align:left;cursor:pointer}
.v679-acco svg{width:22px;height:22px;flex:none}
.v679-acco.on{border-color:var(--ink);background:var(--ink);color:#fff}
.v679-accwho{margin:0 0 6px}
.v666-accbtn[disabled]{opacity:.45}
.v666-accline.v679-unreached{background:#fff4e5;color:#8a4b00}
.v666-accline.v679-notneeded{background:#f2f2f2;color:#444}
/* v67.9: expenses = reimbursement, materials used = separate */
.v679-exp-why{margin:0 0 10px;line-height:1.45}
.v679-jm-why{margin:4px 0 6px}
.v679-exp-note{align-items:flex-start}
/* v67.9: Finish needs summary + After photo */
.v679-fin-p{margin:0 0 10px}
.v679-need{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#fdecec;color:#8a1c1c;font-weight:600;margin:0 0 8px}
.v679-need svg{width:20px;height:20px;flex:none}
.v679-need.ok{background:#eaf7ee;color:#14532d}
.v679-fin-btns{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.v679-flash{outline:4px solid #f59e0b !important;outline-offset:3px;transition:outline .3s}
/* v67.9: What's next? */
.v679-nx-p{margin:0 0 12px}
.v679-nxs{display:flex;flex-direction:column;gap:8px}
.v679-nx{display:flex;align-items:center;gap:12px;width:100%;min-height:62px;padding:10px 14px;border:2px solid var(--line2);border-radius:14px;background:#fff;text-align:left;cursor:pointer}
.v679-nx>svg:first-child{width:24px;height:24px;flex:none}
.v679-nx>svg:last-child{width:18px;height:18px;flex:none;opacity:.5}
.v679-nx b{display:block;font-size:17px}
.v679-nx small{display:block;font-size:13px;color:var(--muted,#666);margin-top:2px}
.v679-nx:first-child{border-color:var(--ink)}
.v679-nx.dis{opacity:.5;cursor:default}
.v679-now{align-items:center}
/* v67.9: monthly check */
.v679-rc{text-align:center}
.v679-rc-ic svg{width:44px;height:44px;margin:6px auto 2px;display:block}
.v679-rc-b{margin-top:10px}
.v679-rc-to{margin-top:4px}
.v679-sess{display:flex;align-items:center;gap:8px;padding:10px 4px 0}
.v679-sess svg{width:16px;height:16px;flex:none}

/* v68.0: push notifications */
.p68-card{border:1.5px solid #f3d27a;background:#fffaf0}
.p68-ic{flex:none;width:36px;height:36px;border-radius:10px;background:#fff3d6;color:#9a6b00;display:flex;align-items:center;justify-content:center}
.p68-ic svg{width:20px;height:20px}
.p68-ic.on{background:#e7f6ec;color:#1f7a3f}
.p68-hint{background:#f6f6f4;border-radius:8px;padding:8px 10px;line-height:1.45}
.p68-hint svg{width:14px;height:14px;vertical-align:-2px}
.p68-sw{position:relative;flex:none;width:48px;height:28px;display:inline-block;cursor:pointer}
.p68-sw input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}
.p68-sw span{position:absolute;inset:0;border-radius:14px;background:#cfcfcf;transition:background .15s}
.p68-sw span::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.p68-sw input:checked+span{background:#1f9d55}
.p68-sw input:checked+span::after{transform:translateX(20px)}
.p68-sw input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.p68-bell{display:inline-flex;vertical-align:-3px;color:#1f7a3f}
.p68-bell svg{width:16px;height:16px}
.p68-bell.off{color:#a3a3a3}
.p68-legend{display:flex;align-items:center;gap:4px;margin:-4px 0 6px}
.p68-legend svg{width:13px;height:13px;color:#1f7a3f}
/* v68.0 (David's screenshot, Oct 14 9:03 PM): text boxes take the full width of their card; the review header never clips its pill */
textarea{max-width:100%;box-sizing:border-box}
textarea:not([class]):not([cols]){width:100%}
#v678n{display:block;width:100%;border:1.5px solid var(--line2);border-radius:10px;padding:9px 11px;background:#fff;font-size:15px;line-height:1.45;margin-top:6px}
#v678n:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px rgba(10,10,10,.08)}
.v680-rev-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.v680-rev-h b{flex:1 1 auto;min-width:0}
.v680-rev-h .pill{flex:none;white-space:nowrap;max-width:100%}
.sheet .card,.sheet-b{min-width:0;max-width:100%}
.sheet-b{overflow-x:hidden}
.v678-note{overflow-wrap:anywhere;word-break:break-word;max-width:100%;box-sizing:border-box}
.v680-unseen{background:#fff3d6;color:#8a5a00}
.v678-tags .v680-unseen,.sec-t .v680-newcount.st-new{color:#8a5300;background:#fff1d1}
.sec-t .v680-newcount{text-transform:none;letter-spacing:0;font-size:12px;vertical-align:1px;margin-left:4px}

/* v68.1 Set up this phone (first open) */
.s681{position:fixed;inset:0;z-index:9990;background:var(--bg);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;display:flex;justify-content:center;padding:calc(env(safe-area-inset-top,0px) + 22px) 18px calc(env(safe-area-inset-bottom,0px) + 22px)}
body.s681-open{overflow:hidden}
.s681-in{width:100%;max-width:440px;display:flex;flex-direction:column;min-height:100%}
.s681-logo{display:block;height:auto;width:110px;margin:4px 0 14px}
.s681 h1{font-size:26px;line-height:1.15;margin:0 0 8px;font-weight:800;letter-spacing:-.01em}
.s681-lead{margin:0 0 16px;color:var(--ink2);font-size:15px;line-height:1.45}
.s681-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}
.s681-row{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.s681-ic{flex:0 0 40px;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}
.s681-ic svg{width:22px;height:22px}
.s681-row .grow{min-width:0;flex:1}
.s681-rt{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.s681-rt b{font-size:15.5px}
.s681-d{font-size:13.5px;color:var(--muted);margin-top:3px;line-height:1.4}
.s681-help{font-size:13px;line-height:1.45;margin-top:8px;padding:8px 10px;border-radius:var(--r-sm);background:#fff7ed;color:#7c2d12;overflow-wrap:anywhere}
.s681-help svg{width:14px;height:14px;vertical-align:-2px}
.s681-st{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.s681-st svg{width:14px;height:14px;stroke-width:3}
.s681-st.on{background:#dcfce7;color:#15803d}
.s681-st.no{background:#fee2e2;color:#b91c1c}
.s681-st.wait{background:#fef3c7;color:#92400e}
.s681-st.na{background:#f1f1f0;color:var(--muted)}
.s681-st.ask{background:var(--accent-soft);color:var(--accent)}
.s681-row.s681-done .s681-help{background:#f0fdf4;color:#14532d}
.s681-foot{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:6px}
.s681-go{width:100%;min-height:54px;font-size:17px}
.s681-skip{background:none;border:0;color:var(--muted);font:inherit;font-size:14.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px;padding:12px 16px;min-height:44px;cursor:pointer}
.s681-skip[hidden]{display:none}
.s681 h1:focus{outline:none}
/* v68.2 AI suggests the work summary */
.ai682-draft{margin-top:10px;border:1.5px solid #c4b5fd;background:#faf5ff;border-radius:14px;padding:12px;box-sizing:border-box;max-width:100%}
.ai682-dh{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px;color:#5b21b6}
.ai682-dh svg{width:18px;height:18px;flex:none}
.ai682-ns{margin-left:auto;font-size:12px;font-weight:700;color:#92400e;background:#fef3c7;border-radius:999px;padding:2px 9px;white-space:nowrap}
.ai682-ta{width:100%;box-sizing:border-box;min-height:120px;background:#fff;border:1.5px solid #ddd6fe;border-radius:10px;padding:10px;font:inherit;line-height:1.45;resize:vertical}
.ai682-heard{margin-top:6px;overflow-wrap:anywhere}
.ai682-tip{margin:8px 0}
.ai682-btns{display:flex;gap:8px;flex-wrap:wrap}
.ai682-btns .btn{min-height:46px}
.ai682-btns .grow{flex:1 1 140px}
.ai682-again{margin-top:8px}
.ai682-err{display:flex;gap:8px;align-items:flex-start;margin-top:8px;padding:10px 12px;border-radius:10px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;overflow-wrap:anywhere}
.ai682-err svg{width:16px;height:16px;flex:none;margin-top:2px}
.pill.ai682-pill{background:#ede9fe;color:#5b21b6;white-space:nowrap}
.ai682-today{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ai682-today>div{background:#f8fafc;border-radius:10px;padding:8px;text-align:center;min-width:0}
.ai682-today b{display:block;font-size:20px}
.ai682-today span{display:block;font-size:11px;color:#64748b;line-height:1.2}
@media (max-width:420px){.ai682-today{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ai682-bar{height:8px;border-radius:99px;background:#e2e8f0;overflow:hidden}
.ai682-bar i{display:block;height:100%;background:#7c3aed}
.ai682-days{margin-top:10px;display:grid;gap:4px}
.ai682-days .row{gap:8px;flex-wrap:wrap}

/* v69.2 Mail in */
#m69-card .m69-row{padding:8px 0;border-top:1px solid var(--line)}#m69-card .m69-row:first-child{border-top:0}#m69-card .m69-subj,#m69-card .m69-from,#m69-card .m69-what{overflow-wrap:anywhere;word-break:break-word}#m69-card .m69-what .btn{margin-left:6px}

/* v69.4.1 duplicate-invoice warning */
.notice.dup694{flex-wrap:wrap}.dup694 .grow{min-width:200px}.dup694-btns{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto;align-items:center}.notice .dup694-btns .btn.sm{margin-left:0}
.dup694-gb{display:flex;gap:6px;align-items:flex-start;margin-top:6px;padding:6px 8px;border-radius:8px;background:#eef6ff;color:#1e3a8a}.dup694-gb svg{width:14px;height:14px;flex:none;margin-top:1px}.dup694-gb a{color:inherit;font-weight:600}
.dup694-cmp{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.dup694-cr{border:1px solid var(--line);border-radius:10px;padding:9px 10px;min-width:0;overflow-wrap:anywhere}.dup694-cr .pill{margin-left:4px}
@media (max-width:420px){.dup694-cmp{grid-template-columns:1fr}}
.dup694-card .dup694-why{display:flex;gap:8px;align-items:flex-start;padding:11px 14px 6px;color:#78350f}.dup694-card .dup694-why svg{width:16px;height:16px;flex:none;margin-top:1px}.dup694-card .dup694-gb{margin:0 14px 6px}
.dup694-card .lrow:last-child{border-bottom:1px solid var(--line)}.dup694-act{padding:8px 14px 10px;justify-content:flex-end}.dup694-intro{margin:0 0 12px}
/* v69.4 supplier lists */
.rfq-head,.rfq-line{display:grid;grid-template-columns:64px minmax(0,1fr) 200px 36px;gap:8px;align-items:center}
.rfq-head{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3,#777);margin:12px 0 6px}
.rfq-line{margin-bottom:8px}
.rfq-line input,.rfq-line textarea{width:100%;min-width:0;box-sizing:border-box;border:1.5px solid var(--line2,#ddd);border-radius:10px;padding:10px 10px;font:inherit;font-size:15px;background:#fff;color:inherit}
.rfq-line input:focus,.rfq-line textarea:focus{outline:none;border-color:var(--ink,#111)}
.rfq-line .rfq-q{text-align:center;font-weight:700}
.rfq-line .rfq-it{resize:none;overflow:hidden;line-height:1.35;min-height:42px;display:block}
.rfq-line .rfq-pt{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px}
.rfq-line .rfq-x{width:36px;height:36px;color:#888}
.rfq-acts{display:flex;flex-wrap:wrap;gap:8px}
.rfq-acts .btn{flex:1 1 auto}
.rfq-prev{width:100%;height:70vh;border:1px solid var(--line,#e5e5e5);border-radius:12px;background:#f2f2f2}
.rfq-sup .rfq-se{flex:1 1 220px;min-width:0;box-sizing:border-box;border:1.5px solid var(--line2,#ddd);border-radius:10px;padding:9px 10px;font:inherit;font-size:15px;margin-left:30px}
.rfq-pk input[type=checkbox],.rfq-sup input[type=checkbox]{width:20px;height:20px;flex:0 0 auto;accent-color:#111}
@media (max-width:640px){
 .rfq-head{display:none}
 .rfq-line{grid-template-columns:58px minmax(0,1fr) 34px;grid-template-areas:"q it x" "q pt x";row-gap:6px;padding-bottom:10px;border-bottom:1px solid var(--line,#eee);margin-bottom:10px}
 .rfq-line .rfq-q{grid-area:q;height:100%}
 .rfq-line .rfq-it{grid-area:it}
 .rfq-line .rfq-pt{grid-area:pt}
 .rfq-line .rfq-x{grid-area:x}
 .rfq-acts .btn{flex:1 1 calc(50% - 8px)}
 .rfq-acts .btn:first-child{flex-basis:100%}
 .rfq-sup .rfq-se{margin-left:30px;flex-basis:100%}
}

/* v69.4.3: employee details (FingerCheck fields) */
.req694 { color: var(--danger, #c62828); font-weight: 700; }
.emp694 .f > span .req694 { margin-left: 2px; }
.e694-dup { color: #9a6200; font-weight: 600; }
.emp694-miss { margin-left: 4px; }
.emp694-card dl.kv { margin: 0; }
.emp694-edit { border-top: 1px solid var(--line, #e5e5e5); margin-top: 14px; padding-top: 2px; }
.emp694-defs textarea { width: 100%; }
.welcome694 .grow { min-width: 0; }
.mid694 .chk50 span { white-space: nowrap; }

/* v69.4.4: supplier run (job time), rider's own day clock */
.sup6944{background:#fff7e6;border:1px solid #f5c26b;border-radius:10px;padding:8px 10px;margin:10px 0 6px}
.sup6944b{margin-top:8px}
.crew6944-in{border-color:#f5c26b}

/* v69.4.6: Ref codes on invoices */
.ref46{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.02em;line-height:1;border:1.5px solid var(--ink,#111);border-radius:6px;padding:3px 6px;background:#fff;color:#111;white-space:nowrap;vertical-align:middle}
.ref46-sm{font-size:11px;padding:2px 5px;margin-right:2px}
.ref46-lg{font-size:13px;padding:4px 8px}
.ref46-sug{border-style:dashed;color:#555}
.ref46-rev{border-color:#d08a00;color:#8a5a00;background:#fff7e6}
.ref46-none{border-color:#c8c8c8;color:#888}
.ref46-h{margin-top:6px}
.ref46-btn{background:none;border:0;padding:0;cursor:pointer}
.ref46-btn:focus-visible{outline:2px solid #000;outline-offset:2px;border-radius:6px}
.ref46-bar{align-items:center;flex-wrap:wrap;row-gap:6px;overflow:visible}
.ref46-lbl{font-weight:700;margin-right:2px;cursor:help}
.ref46-pick{display:grid;gap:8px}
.ref46-opt{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line,#ddd);border-radius:10px;padding:10px 12px;background:#fff;cursor:pointer;font:inherit;color:inherit}
.ref46-opt b{font-size:18px;min-width:22px;text-align:center}
.ref46-opt span{flex:1}
.ref46-opt.on{border-color:#111;box-shadow:inset 0 0 0 1px #111}
/* v69.31.0: sections, hover, pressed (black) state; the sheet closes ~1 s after the tap */
.ref46-sec{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#555;margin:6px 0 -2px}
.ref46-sec:first-child{margin-top:0}
.ref46-sec .tiny{text-transform:none;letter-spacing:0;font-weight:500}
.ref46-opt b{min-width:44px}
.ref46-opt{transition:background-color .12s,color .12s,border-color .12s}
@media (hover:hover){.ref46-opt:not(:disabled):hover{background:#f1f1f1;border-color:#111}}
.ref46-opt:not(:disabled):active{background:#e2e2e2}
.ref46-opt.pressed,.ref46-opt.pressed:hover{background:#111;border-color:#111;color:#fff;box-shadow:none}
.ref46-opt.pressed .icon,.ref46-opt.pressed svg{color:#fff;stroke:#fff}
.ref46-pick.busy .ref46-opt:disabled{opacity:.45;cursor:default}
.ref46-lsec{font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#555;margin-top:4px}
.ref46-log{display:grid;gap:4px}
.ref46-legend{display:grid;gap:4px;font-size:13px;margin:6px 0}
.ref46-set .chips{flex-wrap:wrap;overflow:visible;row-gap:6px}
.ref46-set .chip .lnk{background:none;border:0;color:inherit;font-weight:800;font-size:16px;line-height:1;padding:0 0 0 6px;cursor:pointer}

/* v69.4.8: auto sign-out warning */
.idle6948{position:fixed;inset:0;z-index:10050;background:rgba(10,10,10,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.idle6948-box{background:var(--card,#fff);color:var(--ink,#111);border-radius:16px;max-width:420px;width:100%;padding:22px 20px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.idle6948-box h2{margin:6px 0 6px}.idle6948-box p{margin:0 0 16px}
.idle6948-ic svg{width:34px;height:34px}
.del6948{border-top:1px solid var(--line,#e5e5e5);margin-top:16px;padding-top:4px}

/* v69.4.9 estimate visits + supplier quotes */
.ev49-pill{background:#eef4ff;color:#1d4ed8}
.ev49-pill svg{width:12px;height:12px;vertical-align:-2px;margin-right:3px}
.pill.sm{font-size:11px;padding:2px 7px}
.ev49-card{border-left:4px solid #1d4ed8}
.ev49-badge{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13px;color:#1d4ed8;background:#eef4ff;border-radius:999px;padding:4px 10px}
.ev49-badge svg{width:14px;height:14px}
.ev49-list{display:grid;gap:6px}
.ev49-row{display:flex;gap:10px;align-items:center;padding:9px 10px;border:1px solid var(--line,#e5e5e5);border-radius:10px;color:inherit;text-decoration:none}
.ev49-row:hover{background:#fafafa}
.ev49-tb .btn svg,.qr49-bar .btn svg{width:15px;height:15px}
.qr49-line{display:grid;grid-template-columns:70px 1.6fr 1.2fr 1fr 36px;gap:8px;align-items:end;margin-bottom:6px}
.qr49-line .f{margin:0}
.qr49-line .icon-btn{margin-bottom:4px}
.qr49-items{display:grid;gap:6px}
.qr49-it{padding:8px 10px;background:#fafafa;border-radius:8px;font-size:14px}
.mono{font-family:Menlo,Consolas,monospace;font-size:13px}
.qr49-sups{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.qr49-sup{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line,#e5e5e5);border-radius:10px;cursor:pointer;font-size:14px}
.qr49-sup input{width:20px;height:20px;flex:none}
.qr49-sup.dis{opacity:.65;cursor:default}
.qr49-cmp{display:grid;gap:0;border:1px solid var(--line,#e5e5e5);border-radius:10px;overflow:hidden}
.qr49-tr{display:grid;grid-template-columns:1.4fr .8fr 1fr 1fr 1.6fr;gap:10px;align-items:center;padding:10px 12px;border-top:1px solid var(--line,#e5e5e5);font-size:14px}
.qr49-tr:first-child{border-top:0}
.qr49-th{background:#0a0a0a;color:#fff;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
.qr49-ord{background:#f0fdf4}
.qr49-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.qr49-in{color:#15803d;font-weight:700}
.qr49-lead{color:#b45309;font-weight:600}
.qr49-best{background:#dcfce7;color:#166534}
.qr49-fast{background:#e0f2fe;color:#075985}
.qr49-rep{border-top:1px solid var(--line,#e5e5e5);padding:8px 0}
.qr49-rep summary{cursor:pointer;font-size:14px}
.qr49-body{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:13px;background:#fafafa;border-radius:8px;padding:10px;max-height:340px;overflow:auto;margin:8px 0}
.qr49-tagrow{margin-top:4px;display:flex;gap:4px;flex-wrap:wrap}
@media (max-width:760px){
 .qr49-line{grid-template-columns:64px 1fr 36px;grid-template-areas:"q i x" "m m m" "n n n"}
 .qr49-line .qr49-q{grid-area:q}.qr49-line .qr49-i{grid-area:i}.qr49-line .qr49-m{grid-area:m}.qr49-line .qr49-n{grid-area:n}.qr49-line .icon-btn{grid-area:x}
 .qr49-line{padding-bottom:8px;border-bottom:1px dashed var(--line,#e5e5e5)}
 .qr49-th{display:none}
 .qr49-tr{grid-template-columns:1fr 1fr;gap:6px 10px}
 .qr49-tr>span:first-child{grid-column:1/-1}
 .qr49-tr>span[data-l]::before{content:attr(data-l);display:block;font-size:11px;color:#777;text-transform:uppercase;letter-spacing:.05em}
 .qr49-act{grid-column:1/-1;justify-content:flex-start}
}

/* v69.5.0 Building Monitor */
.mon-tabs .chip{font-size:15px;padding:8px 14px}
.mon-site{display:flex;align-items:center;gap:6px;font-weight:700;font-size:16px;margin:0 0 10px}.mon-site svg{width:18px;height:18px}
.mon-alert{display:flex;gap:12px;align-items:center;background:#fdecec;border:2px solid #d92d20;border-radius:14px;padding:12px 14px;margin:0 0 10px;color:#5a0b06}
.mon-at{display:flex;gap:8px;align-items:center;font-weight:800;font-size:18px}.mon-at svg{width:20px;height:20px;flex:none;color:#d92d20}
.mon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.mon-card{display:block;background:var(--card,#fff);border:1px solid var(--line,#e5e5e5);border-left:10px solid #9aa0a6;border-radius:14px;padding:12px 14px;color:inherit;text-decoration:none;min-width:0}
.mon-card.lv-green{border-left-color:#16a34a}.mon-card.lv-red{border-left-color:#d92d20;background:#fff6f5}.mon-card.lv-gray{border-left-color:#9aa0a6;opacity:.85}
.mon-n{font-weight:700;font-size:15px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mon-v{font-size:38px;font-weight:800;line-height:1.1;margin:4px 0 2px;letter-spacing:-.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mon-v.xl{font-size:56px}
.mon-u{font-size:15px;font-weight:600;margin-left:6px;color:#555;letter-spacing:0}
.mon-spark{display:block;width:100%;height:38px;margin-top:6px;fill:#2563eb;stroke:#2563eb}.lv-red .mon-spark{fill:#d92d20;stroke:#d92d20}.lv-gray .mon-spark{fill:#9aa0a6;stroke:#9aa0a6}
.mon-nodata{font-size:12px;color:#888;display:flex;align-items:center;height:38px}
.mon-foot{margin-top:4px;color:#666}
.mon-learn{display:inline-block;margin-top:6px;font-size:12px;font-weight:700;background:#fff4d6;color:#7a5200;border-radius:999px;padding:3px 9px}.mon-learn.ok{background:#e7f6ec;color:#11622f}.mon-learn.warn{background:#fdecec;color:#8a1c12;margin-left:4px}
.mon-hero{border-left:12px solid #9aa0a6;border-radius:14px;background:var(--card,#fff);border-top:1px solid var(--line,#e5e5e5);border-right:1px solid var(--line,#e5e5e5);border-bottom:1px solid var(--line,#e5e5e5);padding:14px 16px}
.mon-hero.lv-green{border-left-color:#16a34a}.mon-hero.lv-red{border-left-color:#d92d20;background:#fff6f5}
.mon-chart{display:block;width:100%;height:auto}.mon-chart.mon-nodata{height:120px;justify-content:center}
.mon-bar{fill:#2563eb}.mon-line{fill:none;stroke:#2563eb;stroke-width:2.5}.mon-exp{fill:none;stroke:#f59e0b;stroke-width:2.5;stroke-dasharray:6 4}.mon-lim{stroke:#d92d20;stroke-dasharray:4 4;stroke-width:1.5}
.mon-grid-l{stroke:#eee;stroke-width:1}.mon-ax{font-size:11px;fill:#777}
.mon-key-exp{display:inline-block;width:18px;border-top:3px dashed #f59e0b;vertical-align:middle;margin-right:4px}
.mon-h{font-weight:800;font-size:18px;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mon-pill{font-size:12px;font-weight:700;border-radius:999px;padding:3px 9px;background:#e8f0fe;color:#1a4fb4}.mon-pill.green{background:#e7f6ec;color:#11622f}.mon-pill.red{background:#fdecec;color:#8a1c12}.mon-pill.gray{background:#eee;color:#555}
.mon-step{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line,#eee)}.mon-step:first-of-type{border-top:0}
.mon-sn{flex:none;width:32px;height:32px;border-radius:50%;background:#111;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:16px}
.mon-st{font-size:16px;line-height:1.35;margin-bottom:2px}
.mon-dev{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line,#eee);color:inherit;text-decoration:none}.mon-dev:first-of-type{border-top:0}
.mon-dot{flex:none;width:14px;height:14px;border-radius:50%;background:#9aa0a6}.mon-dot.green{background:#16a34a}.mon-dot.red{background:#d92d20}
.mon-tok{background:#f6f7f9;border-radius:12px;padding:10px 12px;margin:0 0 10px}
.mon-code{display:block;font-size:13px;word-break:break-all;background:#fff;border:1px solid #ddd;border-radius:8px;padding:8px;margin-top:4px;user-select:all}
.mon-start{display:block;text-align:center;color:inherit;text-decoration:none}.mon-big{font-size:28px;font-weight:800;margin-bottom:4px}
.mon-rangebar{align-items:center}
@media (max-width:600px){.mon-grid{grid-template-columns:1fr 1fr;gap:10px}.mon-v{font-size:30px}.mon-v.xl{font-size:44px}.mon-card{padding:10px 10px 10px 12px;border-left-width:8px}.mon-u{font-size:13px;margin-left:4px}}
@media (max-width:360px){.mon-grid{grid-template-columns:1fr}}
.mon-xl{font-size:22px;font-weight:800;letter-spacing:1px}
.mon-adv summary{cursor:pointer;font-size:15px}
.mon-tok .mon-code{color:#111}
@media (max-width:600px){.mon-dev{flex-wrap:wrap}.mon-dev>.grow{min-width:0;flex:1 1 60%}.mon-dev>.row{width:100%;padding-left:22px}}

/* v69.6.0 Record check */
.chk696-top{margin:0 0 14px}
.btn.chk696-big{width:100%;min-height:64px;font-size:20px;font-weight:800;border-radius:16px;background:#16a34a;border-color:#16a34a;gap:12px}
.btn.chk696-big svg{width:26px;height:26px}
@media (min-width:900px){.btn.chk696-big{width:auto;min-width:320px;padding:0 32px}}
.chk696-step{font-weight:800;font-size:17px;margin:2px 0 10px;display:flex;align-items:center;gap:10px;justify-content:space-between}
.chk696-in{width:100%;font-size:19px!important;min-height:54px;padding:10px 14px;border:1.5px solid var(--line2);border-radius:12px;background:#fff}
.chk696-money{font-weight:800;font-size:24px!important}
.chk696-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.chk696-cust{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;min-height:60px;cursor:pointer}
.chk696-cust:hover{border-color:var(--ink)}
.chk696-cust .grow{display:flex;flex-direction:column;min-width:0}
.chk696-cust .grow b{font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chk696-cust .tiny{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chk696-owe{display:flex;flex-direction:column;align-items:flex-end;font-weight:800;color:#b91c1c;white-space:nowrap}
.chk696-owe small{font-weight:600;color:var(--muted);font-size:11px}
.chk696-who{display:flex;align-items:center;gap:12px;background:#f0fdf4;border:1.5px solid #bbf7d0;border-radius:12px;padding:10px 14px;margin-bottom:12px}
.chk696-who .grow{display:flex;flex-direction:column;min-width:0}
.chk696-who b{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chk696-ph{width:100%;min-height:54px;font-size:16px}
.chk696-ph svg{width:22px;height:22px}
.chk696-thumb{display:flex;align-items:center;gap:12px;margin:4px 0 8px}
.chk696-thumb img{max-width:160px;max-height:90px;border-radius:8px;border:1px solid var(--line)}
.chk696-invs{display:flex;flex-direction:column;gap:8px}
.chk696-inv{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.chk696-inv.on{border-color:#16a34a;background:#f0fdf4}
.chk696-inv .grow{min-width:0}
.chk696-cb{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;cursor:pointer}
.chk696-cb input{width:26px;height:26px;accent-color:#16a34a;cursor:pointer}
.chk696-amt{width:118px;flex:none;font-size:18px;font-weight:700;min-height:48px;padding:8px 10px;border:1.5px solid var(--line2);border-radius:10px;text-align:right;background:#fff}
.chk696-sum{margin-top:14px;border-radius:12px;padding:12px 14px;border:2px solid var(--line2)}
.chk696-sumrow{display:flex;justify-content:space-between;font-size:16px}
.chk696-sumrow b{font-size:18px}
.chk696-msg{margin-top:6px;font-weight:800;font-size:16px}
.chk696-sum.good{border-color:#16a34a;background:#f0fdf4}.chk696-sum.good .chk696-msg{color:#15803d}
.chk696-sum.bad{border-color:#fca5a5;background:#fef2f2}.chk696-sum.bad .chk696-msg{color:#b91c1c}
.chk696-sum.warn{border-color:#fcd34d;background:#fffbeb}.chk696-sum.warn .chk696-msg{color:#b45309}
#chk696-save{font-size:17px;min-height:52px}
#chk696-save.off,#chk696-save:disabled{opacity:.45}

/* v69.7.0 Auto-invoice */
.ai7-status{border-left:6px solid #a3a3a3}
.ai7-status.ai7-on{border-left-color:#16a34a}.ai7-status.ai7-shadow{border-left-color:#d97706}
.ai7-big{display:flex;align-items:center;gap:10px;font-size:20px;margin-bottom:4px}.ai7-big svg{width:26px;height:26px;flex:0 0 auto}
.ai7-on .ai7-big b{color:#16a34a}.ai7-shadow .ai7-big b{color:#b45309}.ai7-off .ai7-big b{color:#525252}
.ai7-h{font-size:18px;margin:18px 0 8px;display:flex;align-items:center;gap:8px}
.ai7-n{display:inline-block;min-width:28px;padding:2px 8px;border-radius:14px;background:#e5e5e5;text-align:center;font-size:15px}.ai7-n.red{background:#dc2626;color:#fff}
.ai7-rev{border-left:6px solid #dc2626}
.ai7-amt{font-size:20px;font-weight:700;white-space:nowrap}
.ai7-why{margin:8px 0 10px;padding-left:20px;color:#b91c1c;font-size:15px;line-height:1.35}.ai7-why li{margin:2px 0}
.ai7-log .ai7-why{font-size:13px;margin:4px 0 0}
.ai7-log .right{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.ai7-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.ai7-c{border-radius:12px;padding:10px;text-align:center;background:#f5f5f5}.ai7-c b{display:block;font-size:28px;line-height:1.1}.ai7-c span{font-size:13px}
.ai7-c.g b{color:#16a34a}.ai7-c.r b{color:#dc2626}.ai7-c.n b{color:#737373}
.ai7-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ai7-mb{border:2px solid #d4d4d4;background:#fff;border-radius:12px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:inherit;font:inherit}
.ai7-mb b{font-size:20px}.ai7-mb span{font-size:12px;color:#737373}
.ai7-mb.on.ai7-off{border-color:#525252;background:#f5f5f5}.ai7-mb.on.ai7-shadow{border-color:#d97706;background:#fffbeb}.ai7-mb.on.ai7-on{border-color:#16a34a;background:#f0fdf4}
.ai7-set h2{display:flex;align-items:center;gap:8px}.ai7-set h2 svg{width:22px;height:22px}
.ai7-banner{border-left:6px solid #16a34a}.ai7-banner.bad{border-left-color:#dc2626}.ai7-banner svg{width:20px;height:20px}
.ai7-note svg{width:20px;height:20px;flex:0 0 auto}
.ai7-how ul{padding-left:20px;margin:8px 0}
/* v69.8.0 Direct X-420 */
.x698-cert{background:#f6f7f9;border-radius:10px;padding:8px 10px;line-height:1.4}
.x698-warn{background:#fff6e5;border:1px solid #f2d39a;border-radius:10px;padding:8px 10px}
.x698-vals{border-top:1px solid #eee;padding-top:10px}
.x698-v{display:flex;gap:8px;align-items:baseline;padding:5px 0;border-bottom:1px solid #f2f2f2;font-size:14px}.x698-v:last-child{border-bottom:0}.x698-v .grow{min-width:0;overflow-wrap:anywhere}
.x698-valve{border-top:1px solid #eee;padding-top:10px}
.linkish{background:none;border:0;padding:0;color:var(--accent,#1a4fb4);text-decoration:underline;font:inherit;cursor:pointer}
#mon-x420 input{max-width:100%;box-sizing:border-box}

/* ===== v69.9.0: Home (h699), invoice sections (sec699), price-change badges (pc699) ===== */
.h699{max-width:1240px}
.h699-hello{margin:0 0 14px}
.h699-hello h2{font-size:24px;font-weight:800;letter-spacing:-.02em}
.h699-body{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;align-items:start}
.h699-main,.h699-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.h699-main>*,.h699-side>*{margin:0!important}
.h699 .card{border-radius:var(--r)}
.h699-needs{padding:16px 16px 6px}
.h699-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.h699-h h3,.h699-today h3{margin:0;font-size:16px;font-weight:800;letter-spacing:-.01em;text-transform:none;color:var(--ink)}
.h699-n{background:var(--ink);color:#fff;font-size:12px;font-weight:700;border-radius:999px;padding:1px 8px;min-width:22px;text-align:center}
.h699-list{display:flex;flex-direction:column}
.h699-list>.h699-it{display:flex;align-items:center;gap:12px;background:transparent!important;border:0!important;border-top:1px solid var(--line)!important;border-radius:0!important;padding:12px 2px!important;margin:0!important;font-size:14px;color:var(--ink2);text-decoration:none}
.h699-list>.h699-it:first-child{border-top:0!important}
.h699-list>.h699-it>svg{width:20px;height:20px;flex:none;color:var(--muted)}
.h699-list>.notice.warn>svg,.h699-list>.notice.bad>svg{color:var(--warn)}
.h699-list>a.h699-it:hover{background:#fafafa!important}
.h699-list .h699-it .btn.sm{flex:none}
.h699-list .hist{display:flex;align-items:center;gap:12px}
.h699-ok{display:flex;align-items:center;gap:10px;padding:10px 2px 12px;color:var(--st-done);font-weight:600;font-size:14px}
.h699-ok svg{width:20px;height:20px}
.h699-today{padding:16px}
.h699-sub{font-size:13px;font-weight:600;color:var(--muted);margin-left:6px}
.h699-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
.h699-stats .hcard{padding:13px 14px;text-decoration:none;color:inherit}
.h699-stats .stat .l{font-size:11px}
.h699-stats .stat .v{font-size:22px;margin-top:2px}
.h699-grid{grid-template-columns:1fr!important;gap:14px!important}
.h699-side .techmap{height:260px}
@media (max-width:1100px){.h699-body{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .h699-hello h2{font-size:21px}
  .h699-needs,.h699-today{padding:14px 14px 4px}
  .h699-stats .stat .v{font-size:20px}
}
/* invoice editor: sections */
.sec699-h{display:flex;align-items:baseline;gap:8px;margin:16px 0 4px;padding:8px 2px 6px;border-bottom:2px solid var(--ink)}
.sec699-h>span:first-child{font-weight:800;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.sec699-h b{margin-left:auto;font-size:14px}
.sec699-h.mat{margin-top:22px}
.sec699-note{margin:8px 0 6px}
.sec699-empty{margin:8px 2px}
.sec699-mv{grid-column:1/-1;justify-self:start;background:none;border:0;padding:2px 0 0;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer}
.sec699-mv:hover{text-decoration:underline}
.totals .sec699-tr{color:var(--muted);font-size:13px}
/* price changes in the material list / price book */
.pc699-b{display:inline-block;margin:3px 0 2px;padding:2px 8px;border-radius:999px;background:#f3f4f6;color:var(--ink2);font-size:11.5px;font-weight:600;line-height:1.5}
.pc699-b.open{background:#fff4e0;color:#8a4b00}
.pc699-b a{color:inherit;text-decoration:underline}
.pc699-chips{margin:0 0 10px}
.chk699-nav{cursor:pointer}

/* v69.10.0: View as (owner) — sticky bar while viewing as someone, the picker, Settings activity */
:root{--imp6910h:calc(42px + env(safe-area-inset-top,0px))}
#imp6910{position:fixed;left:0;right:0;top:0;z-index:60;height:var(--imp6910h);box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:0 12px;padding-top:env(safe-area-inset-top,0px);background:#b45309;color:#fff;font-weight:600;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,.18)}
#imp6910 .imp6910-t{flex:1;min-width:0;display:flex;align-items:center;gap:8px}
#imp6910 .imp6910-t>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#imp6910 .imp6910-t svg{width:18px;height:18px;flex:none}
#imp6910 .imp6910-o{color:#fff;opacity:.9;font-size:12.5px;font-weight:500;white-space:nowrap}
#imp6910 .imp6910-x{flex:none;background:#fff;color:#b45309;border:0;border-radius:999px;padding:6px 16px;font:inherit;font-weight:700;font-size:13px;cursor:pointer}
body.imp6910-on{padding-top:var(--imp6910h)}
body.imp6910-on .topbar{top:var(--imp6910h)}
body.imp6910-on .sidebar{top:var(--imp6910h)}
@media (max-width:900px){body.imp6910-on .topbar{padding-top:10px}}
.imp6910-q{width:100%;box-sizing:border-box;padding:11px 14px;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:16px;margin-bottom:6px;background:#fff}
.imp6910-gh{margin:14px 2px 6px;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
button.imp6910-pick{width:100%;text-align:left;background:none;border:0;font:inherit;color:inherit;cursor:pointer}
button.imp6910-pick.busy{opacity:.5}
.imp6910-b{flex:none;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#f3f4f6;color:var(--ink2)}
.imp6910-row .t2{white-space:normal}
.imp6910-log{display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.imp6910-lr{padding:6px 0;border-top:1px solid var(--line)}
.imp6910-lr:first-child{border-top:0}

/* v69.10.1: the "Live ·" strip is gone (removed from index.html; hidden here too in case an old page is still open); real mode warnings are a small chip in Settings */
.proto-strip{display:none!important}
.chip6101{display:inline-block;margin:0 0 12px;padding:4px 10px;border-radius:999px;background:#fef3c7;color:#713f12;font-size:12px;font-weight:700;line-height:1.3}

/* v69.10.3: My list (owner) */
.ml6103{max-width:760px;padding-bottom:84px}
.ml6103-tabs{display:flex;gap:6px;background:#ececeb;border-radius:12px;padding:4px;margin-bottom:12px}
.ml6103-tab{flex:1;border:0;background:transparent;border-radius:9px;padding:10px 8px;font:inherit;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;position:relative}
.ml6103-tab b{font-size:12px;background:#dcdcda;color:var(--ink2);border-radius:999px;padding:1px 7px}
.ml6103-tab.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.ml6103-tab.on b{background:var(--ink);color:#fff}
.ml6103-dot{width:8px;height:8px;border-radius:50%;background:var(--danger);display:inline-block}
.ml6103-q{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;margin-bottom:14px}
.ml6103-q input{flex:1;min-width:0;border:0;outline:none;font:inherit;font-size:16px;padding:8px 0;background:transparent}
.ml6103-q .btn{flex:none}
.ml6103-mic{flex:none}
.ml6103-mic.on{color:#fff;background:var(--danger);border-radius:50%}
.ml6103-sec{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:4px 2px 8px}
.ml6103-autos{padding:4px 14px;margin-bottom:16px}
.ml6103-list{padding:0;margin-bottom:12px;overflow:hidden}
.ml6103-row{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-top:1px solid var(--line)}
.ml6103-row:first-child{border-top:0}
.ml6103-ck{flex:none;width:26px;height:26px;border-radius:8px;border:2px solid var(--line2);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin-top:1px}
.ml6103-ck svg{width:16px;height:16px;stroke-width:3}
.ml6103-ck.on{background:var(--st-done);border-color:var(--st-done);color:#fff}
.ml6103-bulb{flex:none;width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:#ca8a04}
.ml6103-bulb svg{width:20px;height:20px}
.ml6103-main{min-width:0;cursor:pointer}
.ml6103-t{font-weight:600;font-size:15px;line-height:1.3;color:var(--ink);word-break:break-word}
.ml6103-row.done .ml6103-t{color:var(--muted);text-decoration:line-through}
.ml6103-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:5px}
.ml6103-n{font-size:13px;color:var(--muted);margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line}
.ml6103-due{font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 8px;background:#f0f0ef;color:var(--ink2);white-space:nowrap}
.ml6103-due.soon{background:#fef3c7;color:#92400e}
.ml6103-due.today{background:#ffedd5;color:#9a3412}
.ml6103-due.over{background:#fee2e2;color:#b91c1c}
.ml6103-tag{font-size:11.5px;color:var(--accent);font-weight:600}
.ml6103-st{font-size:11px}
.ml6103-st.st-idea{background:#f0f0ef;color:var(--ink2)}
.ml6103-st.st-planning{background:var(--accent-soft);color:var(--accent)}
.ml6103-st.st-building{background:#fef3c7;color:#92400e}
.ml6103-st.st-done{background:#dcfce7;color:#166534}
.ml6103-st.st-dropped{background:#f0f0ef;color:var(--muted)}
.ml6103-open{flex:none;align-self:center}
.ml6103-fold{display:flex;align-items:center;gap:6px;border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--muted);padding:8px 2px;cursor:pointer}
.ml6103-fold svg{width:16px;height:16px}
.ml6103-foot{margin-top:14px}
.ml6103 .ml6103-fab{display:flex;position:fixed;right:24px;bottom:24px;width:56px;height:56px;border-radius:50%;background:var(--ink);color:#fff;border:0;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.28);z-index:29;cursor:pointer}
.ml6103 .ml6103-fab svg{width:26px;height:26px;stroke-width:2.6}
@media (max-width:900px){.ml6103 .ml6103-fab{right:16px;bottom:calc(var(--bottom-h) + env(safe-area-inset-bottom) + 14px)}}
.ml6103-home{display:flex;align-items:center;gap:8px;margin:2px -16px -6px;padding:11px 16px;border-top:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink2);text-decoration:none}
.ml6103-home>svg{width:16px;height:16px;flex:none;color:var(--muted)}
.ml6103-home>span:first-of-type{flex:1}
.ml6103-home:hover{background:#fafafa}
.ml6103-menu{text-decoration:none;color:inherit}
.ml6103-cnt{font-size:11px;background:var(--ink);color:#fff;border-radius:999px;padding:1px 7px;margin-left:4px;vertical-align:1px}
.ml6103-tok{align-items:center;margin-bottom:10px}
.ml6103-tok code{display:block;word-break:break-all;font-size:12px;margin-top:4px;user-select:all}
#set-ml6103 code{font-size:11.5px;word-break:break-all}
.ml6103-live{font-size:10px;letter-spacing:.04em;background:#dcfce7;color:#166534;border-radius:999px;padding:1px 6px;margin-left:4px;vertical-align:1px}
.ml6103-more{display:flex;align-items:center;gap:6px;width:100%;border:0;border-top:1px solid var(--line);background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--muted);padding:11px 2px;cursor:pointer}
.ml6103-more svg{width:16px;height:16px}

/* v69.11.0 Español */
.es6911-seg{display:inline-flex;gap:6px;flex-wrap:wrap}.es6911-sum{margin:6px 0 2px}.es6911-sum .pill{font-size:11px}.es6911-orig-box{background:var(--bg2,#f6f6f4);font-size:14px}.es6911-team{padding:10px 0 4px;border-top:1px solid var(--line,#e7e5e4)}.v6911-es{background:#fff3cd;color:#7a5a00}
/* v69.11.6: Rates & policy costs moved into Settings (collapsed, advanced) */
.set-rates66>summary{list-style:none;cursor:pointer}.set-rates66>summary::-webkit-details-marker{display:none}.set-rates66>summary h2{display:flex;align-items:center;gap:6px;margin:0 0 2px}.set-rates66>summary h2::after{content:'';margin-left:auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);opacity:.5;transition:transform .15s}.set-rates66[open]>summary h2::after{transform:rotate(45deg)}.set-rates66[open]>summary{margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--line,#e7e5e4)}.v66-rlink{display:flex;align-items:center;gap:6px}.v66-rlink svg{width:14px;height:14px}
/* v69.11.8: My list "Go there →" */
.ml6103-row{flex-wrap:wrap}
.ml6103-go{flex:1 0 100%;display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:-2px 0 0 38px;min-width:0}
.ml6103-row .ml6103-go{max-width:calc(100% - 38px)}
.ml6103 .btn.ml6103-gobtn{background:var(--accent);border-color:var(--accent);color:#fff;min-height:36px;padding:7px 14px;font-size:13.5px;border-radius:10px}
.ml6103 .btn.ml6103-gobtn:hover{filter:brightness(1.08)}
.ml6103 .btn.ml6103-gobtn:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}
.ml6103-row.done .ml6103-gobtn{background:#fff;color:var(--accent)}
.ml6103-where{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.ml6103-where svg{width:13px;height:13px;flex:none}
@media (max-width:600px){.ml6103 .btn.ml6103-gobtn{min-height:40px;padding:8px 16px;font-size:14px}}
.go61108{animation:go61108 2.4s ease-out}
@keyframes go61108{0%,35%{box-shadow:0 0 0 3px var(--accent)}100%{box-shadow:0 0 0 3px transparent}}

/* v69.11.10: notifications prompt on app open (bottom sheet on phones) */
.n61110{position:fixed;inset:0;z-index:10001;background:rgba(10,10,10,.5);display:flex;align-items:flex-end;justify-content:center;animation:n61110f .18s ease}
body.n61110-open{overflow:hidden}
.n61110-sheet{background:var(--card);width:100%;max-width:480px;max-height:92vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border-radius:22px 22px 0 0;padding:26px 22px calc(env(safe-area-inset-bottom,0px) + 16px);box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:n61110u .24s cubic-bezier(.2,.8,.2,1);text-align:center}
@media (min-width:700px){.n61110{align-items:center}.n61110-sheet{border-radius:22px;padding-bottom:20px}}
@keyframes n61110f{from{opacity:0}to{opacity:1}}
@keyframes n61110u{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
.n61110-ic{width:64px;height:64px;border-radius:20px;margin:0 auto 14px;background:#fff3d6;color:#9a6b00;display:flex;align-items:center;justify-content:center}
.n61110-ic svg{width:32px;height:32px}
.n61110-ic.on{background:#dcfce7;color:#15803d}
.n61110 h2{font-size:23px;line-height:1.2;margin:0 0 8px;font-weight:800;letter-spacing:-.01em}
.n61110 h2:focus{outline:none}
.n61110-why{margin:0 auto 18px;max-width:360px;color:var(--ink2);font-size:16px;line-height:1.45}
.n61110-steps{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px;text-align:left}
.n61110-steps li{display:flex;align-items:center;gap:10px;background:var(--bg);border-radius:14px;padding:11px 12px;font-size:15px;line-height:1.35}
.n61110-num{flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center}
.n61110-sic{flex:0 0 22px;color:var(--accent);display:flex}
.n61110-sic svg{width:22px;height:22px}
.n61110-st{flex:1;min-width:0;overflow-wrap:anywhere}
.n61110-note{margin:0 0 14px;font-size:13px;color:var(--muted)}
.n61110-msg{margin:-6px auto 14px;max-width:360px;font-size:14px;color:var(--muted);line-height:1.4}
.n61110-btns{display:flex;flex-direction:column;align-items:center;gap:4px}
.n61110-go{width:100%;min-height:56px;font-size:17.5px;justify-content:center}
.n61110-go svg{width:20px;height:20px}
.n61110-later{background:none;border:0;color:var(--muted);font:inherit;font-size:15px;font-weight:600;padding:12px 18px;min-height:46px;cursor:pointer}
/* v69.11.12: Reports (job report builder, P&L per job, company P&L, ready-made reports) */
.rp612-tabs{gap:2px}
.rp612-tabs .rp612-tab{padding:10px 12px;font-weight:600;font-size:14px;color:var(--muted);border-bottom:2.5px solid transparent;white-space:nowrap;text-decoration:none}
.rp612-tabs .rp612-tab.on{color:var(--ink);border-bottom-color:var(--ink)}
.rp612-frow{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end}
.rp612-frow .f{margin:0;flex:1 1 140px;min-width:0}
.rp612-frow .f select,.rp612-frow .f input{width:100%}
.rp612-range{margin-top:8px}
.rp612-acts{gap:6px;margin-top:10px}
.rp612-colpick{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 14px}
.rp612-colpick .row{grid-column:1/-1;gap:6px}
.rp612-cg .ckline{display:flex;gap:6px;align-items:center;margin:5px 0;font-size:14px}
.rp612-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:12px}
.rp612-stats .stat .v{font-size:20px}
.rp612-stats .stat .v small{font-size:12px;color:var(--muted);font-weight:600}
.rp612-tw{max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}
.rp612-t{border-collapse:separate;border-spacing:0;font-size:13.5px;min-width:100%}
.rp612-t th{position:sticky;top:0;background:var(--card,#fff);z-index:2;cursor:pointer;user-select:none}
.rp612-t th.on{color:var(--ink)}
.rp612-t th.r,.rp612-t td.r{text-align:right}
.rp612-t td:first-child,.rp612-t th:first-child{position:sticky;left:0;background:var(--card,#fff);z-index:1;font-weight:700}
.rp612-t th:first-child{z-index:3}
.rp612-t tbody tr{cursor:pointer}
.rp612-t tbody tr:hover td{background:#f7f7f7}
.rp612-t tfoot td{position:sticky;bottom:0;background:#f3f3f3;border-top:2px solid var(--ink);padding:10px 12px;white-space:nowrap}
.rp612-t td.rp612-wrap{white-space:normal;min-width:180px;max-width:280px}
.rp612-t tr.rp612-sub td{white-space:normal;padding-top:0;font-size:12px;color:var(--muted);cursor:default}
.rp612-chip{display:inline-block;background:#f1f1f1;border-radius:6px;padding:2px 6px;margin:2px 2px 2px 0}
.rp612-neg{color:var(--danger,#c0262d)}
.rp612-warn{color:var(--warn,#b45309);font-weight:700;margin-left:2px}
.rp612-plt td{cursor:default}
.rp612-plt tbody tr{cursor:default}
.rp612-plt tr.ind td.rp612-pl{padding-left:24px;font-weight:500}
.rp612-plt tr.rp612-ph td{background:#fafafa;padding-top:14px}
.rp612-plt tr.tot td{border-top:1px solid var(--ink)}
.rp612-plt tr.grand td{border-top:2px solid var(--ink);background:#f6f6f6;font-size:14.5px}
.rp612-plt tr.net td{border-bottom:3px double var(--ink)}
.rp612-plt td.rp612-pl{white-space:normal;min-width:170px}
.rp612-stmt .rp612-sl{padding:7px 0;border-bottom:1px solid var(--line);gap:10px;align-items:baseline;font-size:14px}
.rp612-stmt .rp612-sl.ind{padding-left:12px}
.rp612-stmt .rp612-sl.hd{border-bottom:0;padding-top:4px}
.rp612-stmt .rp612-sl.tot{border-top:1px solid var(--ink);border-bottom:0}
.rp612-stmt .rp612-sl.grand{border-top:2px solid var(--ink);border-bottom:3px double var(--ink);font-size:16px}
.rp612-stmt .rp612-sl.note{border-bottom:0;padding-top:0}
.rp612-stmt .rp612-sep{height:10px}
.rp612-stmt b{white-space:nowrap}
.rp612-gaps summary{cursor:pointer;display:flex;gap:6px;align-items:center}
.rp612-gaps summary svg{width:16px;height:16px}
.rp612-gaps ul{margin:8px 0 0;padding-left:18px}
.rp612-gaps li{margin:4px 0}
.rp612-load{display:flex;gap:8px;align-items:center;color:var(--muted)}
.rp612-tile .t2{white-space:normal}
.print-only{display:none}
@media (max-width:600px){.rp612-frow .f{flex:1 1 46%}.rp612-t{font-size:13px}.rp612-t td,.rp612-t th{padding:9px 9px}}
@media print{
  body.rp612-printing .sidebar,body.rp612-printing .topbar,body.rp612-printing .bottom-nav,body.rp612-printing .rp612-noprint,body.rp612-printing .rp612-gaps,body.rp612-printing .toast,body.rp612-printing #sheetRoot{display:none!important}
  body.rp612-printing main#view{margin:0!important;padding:0!important;max-width:none!important}
  body.rp612-printing .print-only{display:block;margin:0 0 8px}
  body.rp612-printing .rp612-tw{max-height:none;overflow:visible;box-shadow:none;border:0}
  body.rp612-printing .rp612-t{font-size:10px}
  body.rp612-printing .rp612-t th,body.rp612-printing .rp612-t td,body.rp612-printing .rp612-t tfoot td{position:static;padding:4px 6px}
  body.rp612-printing .card{box-shadow:none;border:1px solid #ddd}
}
.rp612-spin{width:18px;height:18px;border-width:2px;display:inline-block}
.rp612-tile .ch{background:#111}
.rp612-tabs .rp612-tab{padding:10px 10px}
.rp612-t td.rp612-tx{white-space:normal;min-width:110px;max-width:160px;line-height:1.3}
.rp612-t th{white-space:normal;min-width:64px;vertical-align:bottom;line-height:1.25}
.rp612-t th:first-child{min-width:0}

/* v69.11.13: Ask for a report (AI) */
.rp613-ask{border:1.5px solid #111}
.rp613-h{display:flex;align-items:center;gap:7px;font-size:15px;margin-bottom:8px}
.rp613-h svg{width:18px;height:18px}
.rp613-ask textarea{display:block;width:100%;box-sizing:border-box;resize:none;min-height:64px;max-height:140px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:16px;line-height:1.35;background:#fff;color:inherit}
.rp613-row{display:flex;gap:8px;align-items:center;margin-top:8px}
.rp613-mic svg,.rp613-go svg{width:17px;height:17px}
.rp613-mic.on{background:#d92d20;border-color:#d92d20;color:#fff}
.rp613-stop{width:12px;height:12px;border-radius:2px;background:#fff;display:inline-block;margin-right:2px}
.rp613-live{margin-top:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rp613-redd{width:9px;height:9px;border-radius:5px;background:#d92d20;display:inline-block;animation:rp613b 1s infinite}
@keyframes rp613b{50%{opacity:.25}}
.rp613-err{margin-top:8px;color:#b42318}
.rp613-ex{margin-top:8px;display:flex;flex-wrap:nowrap;gap:6px;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}
.rp613-ex::-webkit-scrollbar{display:none}
.rp613-chip{flex:0 0 auto;white-space:nowrap;border:1px solid var(--line);background:#f6f6f6;border-radius:14px;padding:5px 10px;font:inherit;font-size:12.5px;color:inherit;cursor:pointer}
.rp613-heard{margin-top:6px}
.rp613-res .rp613-rh{gap:8px;align-items:flex-start}
.rp613-res .tiny svg{width:13px;height:13px;vertical-align:-2px}
.rp613-sum{font-weight:700;font-size:15px;margin-top:3px;line-height:1.35}
.rp613-dot{color:var(--muted);font-weight:400}
.rp613-cols{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.rp613-c{font-size:12px;font-weight:600;background:#f1f1f1;border-radius:10px;padding:3px 8px}
.rp613-warn{margin-bottom:0}
.rp613-cur{margin:-2px 0 8px;display:flex;align-items:center;gap:6px}
.rp613-cur svg{width:15px;height:15px}
.rp613-acts{margin:0 0 10px}
.rp613-jobpick{display:flex;margin-top:0}
.rp613-jobpick .f{margin:0;flex:1 1 auto;min-width:0}
.rp613-jobpick .f select{width:100%}
.rp613-gt td:first-child{font-weight:600}
/* v69.11.13: filters folded behind one button on every list/report screen */
.fc613-hide{display:none !important}
.fc613-bar{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;margin:0}
.fc613-host>.fc613-bar{display:flex;margin-bottom:6px}
.fc613-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 10px 0 11px;border:1px solid var(--line);border-radius:17px;background:#fff;font:inherit;font-size:13.5px;font-weight:600;color:inherit;cursor:pointer;white-space:nowrap}
.fc613-btn svg{width:15px;height:15px;flex:0 0 auto}
.fc613-btn.on{border-color:#111}
.fc613-btn.open{background:#111;border-color:#111;color:#fff}
.fc613-n{min-width:18px;height:18px;border-radius:9px;background:#111;color:#fff;font-size:11.5px;line-height:18px;text-align:center;padding:0 5px}
.fc613-btn.open .fc613-n{background:#fff;color:#111}
.fc613-chev{display:inline-flex;transition:transform .15s}
.fc613-chev svg{width:14px;height:14px}
.fc613-btn.open .fc613-chev{transform:rotate(180deg)}
.fc613-clear{border:0;background:none;font:inherit;font-size:13px;text-decoration:underline;color:var(--muted);cursor:pointer;padding:4px 2px}
.fc613-blk:not(.fc613-hide){animation:fc613in .14s ease-out}
@keyframes fc613in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.rp612-filters.fc613-host{padding-top:10px;padding-bottom:10px}
.rp612-filters.fc613-host .rp612-range{margin-top:2px}
.rp612-filters .fc613-blk{margin-top:6px;margin-bottom:6px}
.rp612-filters .rp613-jobpick{margin-top:4px}
.req-list-wrap>.toolbar .fc613-bar{margin-left:auto}
.mat-tools .fc613-bar{flex:0 0 auto}
.mat-tools.mt-tiles .fc613-bar{display:none}
#view>.chips+.fc613-bar,#view>.fc613-bar{margin-bottom:10px}
.v678>.fc613-bar{margin-bottom:10px}
/* v69.11.13: list screens (Jobs, Invoices, Estimates, Expenses): search, sort and filter on one slim line on a phone */
@media (max-width:900px){
  .lf-top{flex-direction:row;align-items:center;gap:6px}
  .lf-top .search{flex:1 1 auto;min-width:0;width:auto}
  .lf-bar{display:flex;gap:6px;flex:0 0 auto}
  .lf-btn{height:40px;padding:0 10px;gap:5px;font-size:13px}
  .lf-btn[data-action="lfSort"] span{max-width:78px}
}
/* v69.11.14 QuickBooks Desktop sync */
.qbd-tabs{overflow-x:auto;flex-wrap:nowrap;white-space:nowrap}
.qbd-tabs .rp612-tab{padding:10px 8px;font-size:14px}
.qbd-cm input[type=search],.lrow input[type=search]{height:40px;padding:0 12px;border:1px solid var(--line,#ddd);border-radius:10px;font:inherit;font-size:16px;background:#fff;min-width:0}
.qbd-bad{color:#b42318}
.qbd-warn{border:1.5px solid #f59e0b;background:#fffbeb}
.qbd-row .qbd-ck{flex:0 0 22px;width:22px;height:22px;margin:2px 4px 0 0;color:var(--muted)}
.qbd-row .qbd-ck svg{width:18px;height:18px}
.qbd-cj{word-break:break-word;line-height:1.3}
.qbd-bar{position:sticky;bottom:calc(env(safe-area-inset-bottom,0px) + 72px);z-index:5;padding:8px 0;background:linear-gradient(transparent,var(--bg,#fff) 30%)}
.qbd-bar .btn{width:100%;justify-content:center}
.qbd-cands{display:flex;flex-direction:column;gap:6px}
.qbd-cand{justify-content:flex-start;text-align:left;white-space:normal}
.qbd-pw{font:700 24px/1.3 ui-monospace,Menlo,Consolas,monospace;letter-spacing:1px;margin-top:6px;word-break:break-all;user-select:all}
.qbd-kv>div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid var(--line,#eee)}
.qbd-kv>div>span{color:var(--muted)}
.qbd-kv>div>b{text-align:right;word-break:break-word;font-weight:600}
.qbd-steps{padding-left:20px;margin:0}
.qbd-steps li{margin:4px 0}
.qbd-setcard{text-decoration:none;color:inherit}

/* v69.11.18: job checklists (Shutdown) + Policies */
.cl618-ban{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;border-radius:12px;padding:12px 14px;margin:0 0 10px;border:2px solid;font:inherit;cursor:pointer}
.cl618-ban svg{width:24px;height:24px;flex:none;margin-top:1px}
.cl618-ban b{font-size:16px;line-height:1.25;display:block}
.cl618-ban .small{margin-top:2px;opacity:.9}
.cl618-ban.no{background:#fde8e8;border-color:#d92d20;color:#8a1c12}
.cl618-ban.ok{background:#e7f6ec;border-color:#1f9d55;color:#14532d;cursor:default}
.cl618-card h2{display:flex;align-items:center;gap:6px;font-size:17px}
.cl618-card h2 svg{width:20px;height:20px}
.cl618-rules{border:2px solid #d92d20;border-radius:12px;margin:10px 0;overflow:hidden}
.cl618-rh{background:#d92d20;color:#fff;padding:8px 12px;font-size:14px}
.cl618-rh b{text-transform:uppercase;letter-spacing:.02em;margin-right:4px}
.cl618-it{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-top:1px solid var(--line,#e5e7eb)}
.cl618-rules .cl618-it:first-of-type{border-top:0}
.cl618-box{flex:none;width:34px;height:34px;border-radius:8px;border:2px solid #9ca3af;background:#fff;display:grid;place-items:center;padding:0;cursor:pointer;color:#fff}
.cl618-box svg{width:22px;height:22px}
.cl618-it.on .cl618-box{background:#1f9d55;border-color:#1f9d55}
.cl618-box:disabled{cursor:default;opacity:.85}
.cl618-t{font-weight:700;font-size:15px;line-height:1.3}
.cl618-it.rule .cl618-t{text-transform:uppercase;font-size:14px;letter-spacing:.01em}
.cl618-n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#d92d20;color:#fff;font-size:12px;margin-right:2px}
.cl618-d{font-size:13px;color:var(--muted,#4b5563);line-height:1.35;margin-top:2px}
.cl618-by{font-size:12px;color:#14532d;margin-top:4px;font-weight:600}
.cl618-note{font-size:13px;background:#f3f4f6;border-radius:6px;padding:4px 8px;margin-top:4px}
.cl618-th{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.cl618-th img{width:56px;height:56px;object-fit:cover;border-radius:6px;display:block}
.cl618-gate{background:#fff7d6;border:2px solid #e3b200;border-radius:12px;padding:12px;margin:10px 0}
.cl618-gate.ok{background:#e7f6ec;border-color:#1f9d55}
.cl618-gt{font-weight:800;text-transform:uppercase;font-size:15px;margin-bottom:4px}
.cl618-sign{width:100%;justify-content:center;margin-top:10px;min-height:48px;font-size:16px}
.cl618-sign.wait{opacity:.6}
.cl618-sec{border-top:1px solid var(--line,#e5e7eb);padding:6px 0}
.cl618-sec summary{cursor:pointer;padding:8px 2px;font-size:15px;list-style-position:inside}
.cl618-sec.stop summary{color:#b42318}
.cl618-sec ul{margin:4px 0 8px 18px;padding:0}
.cl618-sec li{margin:4px 0;font-size:14px}
.cl618-addrow{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:0 0 10px}
.cl618-type{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted,#4b5563);flex:1 1 160px;max-width:260px}
.cl618-type select{min-height:38px}
.cl618-add{min-height:38px}
.linkbtn{background:none;border:0;padding:0;color:var(--accent,#1d4ed8);text-decoration:underline;font:inherit;cursor:pointer}
.cl618-pick{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.cl618-pk{width:72px;height:72px;padding:0;border:3px solid transparent;border-radius:10px;overflow:hidden;background:#eee;cursor:pointer}
.cl618-pk img{width:100%;height:100%;object-fit:cover;display:block}
.cl618-pk.on{border-color:#1f9d55;box-shadow:0 0 0 2px #1f9d55}
.cl618-cam{width:72px;height:72px;border:2px dashed #9ca3af;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;gap:2px;cursor:pointer;color:var(--muted,#4b5563)}
.cl618-cam svg{width:22px;height:22px}
.cl618-pill{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;vertical-align:middle;white-space:nowrap}
.cl618-prow{margin-top:3px}
.cl618-pill.no{background:#fde8e8;color:#b42318;border:1px solid #f5b5ae}
.cl618-pill.ok{background:#e7f6ec;color:#14532d;border:1px solid #a7dfbb}
.cl618-pol{line-height:1.5;font-size:15px;overflow-wrap:anywhere}
.cl618-pol h1{font-size:20px;margin:0 0 8px}
.cl618-pol h1,.cl618-pol h2,.cl618-pol h3,.cl618-pol h4{text-transform:none;letter-spacing:0;color:var(--ink,#0a0a0a)}
.cl618-pol>h2:first-child{font-size:20px;margin-top:0}
.cl618-pol h2{font-size:18px;margin:18px 0 6px}
.cl618-pol h3{font-size:16px;margin:14px 0 4px}
.cl618-pol h4{font-size:15px;margin:12px 0 4px}
.cl618-pol ul,.cl618-pol ol{padding-left:20px;margin:6px 0}
.cl618-pol li{margin:3px 0}
.cl618-pol hr{border:0;border-top:1px solid var(--line,#e5e7eb);margin:14px 0}
.cl618-tw{overflow-x:auto;margin:8px 0}
.cl618-tw table{border-collapse:collapse;font-size:13px;min-width:100%}
.cl618-tw th,.cl618-tw td{border:1px solid var(--line,#e5e7eb);padding:4px 6px;text-align:left;vertical-align:top}
.cl618-tw th{background:#f3f4f6}
.cl618-lg button{min-width:84px}
.cl618-draft{background:#fff7d6}

/* v69.11.19: Connect WhatsApp number (Meta) + Message templates */
.wm61119-box{background:var(--bg2,transparent)}
.wm61119-warn{border-color:#d97706;background:rgba(217,119,6,.08)}
.wm61119-ol{margin:4px 0 0 18px;padding:0;line-height:1.45}
.wm61119-ol li{margin:4px 0}
.wm61119-steps{display:flex;flex-direction:column;gap:6px}
.wm61119-step{display:flex;gap:8px;align-items:flex-start;line-height:1.35}
.wm61119-step svg{flex:0 0 18px;width:18px;height:18px;margin-top:1px}
.wm61119-step.ok svg{color:#16a34a}
.wm61119-step.bad svg{color:#dc2626}
.wm61119-badtxt{color:#dc2626}
.wm61119-tpls{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto;padding:2px 0}
/* v69.12.0 Phone AI */
.pa612-st.off{background:#f5f5f4}
.pa612-em{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.pa612-ic{display:flex;width:22px;color:var(--muted)}.pa612-ic.em{color:#dc2626}.pa612-ic svg{width:20px;height:20px}
.pa612-kv{margin:8px 0}.pa612-kv>div{font-size:15px}
.pa612-tx .bubble{max-width:85%}
.pa612-seg{margin:4px 0 8px}
/* v69.12.3 (David, Oct 21 8:15 PM, TestFlight video): in the App Store / TestFlight app (html.bolt-native, see bn61123Detect in script.js)
   the bottom tab bar lifted when a list was scrolled, with the list showing underneath it. Inside the wrapper only:
   - no rubber-band overscroll of the page (it dragged the fixed bar with it);
   - the bar gets its own compositing layer, so WebKit keeps it pinned while the page scrolls;
   - the bar's background continues below its bottom edge, so even if the native view moves the bar, nothing shows under it.
   Safari, the Home Screen app, Android Chrome and computers don't get the class and are unchanged. */
html.bolt-native,html.bolt-native body{overscroll-behavior-y:none}
@media (max-width:900px){
  html.bolt-native .bottom-nav{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}
  html.bolt-native .bottom-nav::after{content:"";position:absolute;left:0;right:0;top:100%;height:240px;background:inherit;pointer-events:none}
}
/* v69.13.0: Settings cards closed + read-only until Edit (FingerCheck style) */
.ro613-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--card);border:1px solid #ddd;border-radius:var(--r);padding:13px 14px;margin:0 0 8px;font:inherit;color:inherit;cursor:pointer;min-height:58px;-webkit-tap-highlight-color:transparent}
.ro613-row:active{background:#f4f4f4}
.ro613-row>svg{width:18px;height:18px;flex:none;color:var(--muted)}
.ro613-row.on{margin-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent;background:#fafafa}
.ro613-row .grow{min-width:0;display:flex;flex-direction:column;gap:2px}
.ro613-ic{flex:none;width:34px;height:34px;border-radius:10px;background:#f2f2f2;display:inline-flex;align-items:center;justify-content:center;color:var(--ink2)}
.ro613-ic svg{width:18px;height:18px}
.ro613-t{font-weight:700;font-size:15px;line-height:1.25}
.ro613-s{font-size:12.5px;color:var(--muted);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ro613-s.ro613-ok{color:#15803d;font-weight:600}
.ro613-s.ro613-warn{color:#a16207;font-weight:600}
.ro613-shut{display:none!important}
.ro613-row.on+.ro613-card{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}
.ro613-row.on+.ro613-card>h2:first-of-type,.ro613-row.on+.ro613-card>.row:first-of-type h2{font-size:14px;color:var(--muted)}
.ro613-det>summary{display:none}
.ro613-bar{display:flex;align-items:center;gap:10px;justify-content:space-between;margin:-2px 0 12px;padding:0 0 10px;border-bottom:1px solid var(--line)}
.ro613-mode{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted)}
.ro613-mode svg{width:15px;height:15px}
.ro613-mode.on{color:var(--accent)}
.ro613-bar .btn{min-width:88px}
.ro613-h{display:none!important}
.ro613-cur{pointer-events:none;opacity:1!important}
.ro613-ro input[data-ro613]:not([type=checkbox]):not([type=radio]),.ro613-ro select[data-ro613],.ro613-ro textarea[data-ro613]{background:transparent!important;border-color:transparent!important;color:var(--ink)!important;opacity:1!important;-webkit-text-fill-color:var(--ink);padding-left:0!important;padding-right:0!important;box-shadow:none!important;cursor:default;appearance:none;-webkit-appearance:none;min-height:0}
.ro613-ro input[data-ro613]::placeholder,.ro613-ro textarea[data-ro613]::placeholder{color:var(--muted)!important;-webkit-text-fill-color:var(--muted)}
.ro613-ro input[type=checkbox][data-ro613],.ro613-ro input[type=radio][data-ro613]{opacity:.8}
.ro613-ro textarea[data-ro613]{resize:none}
.ro613-ro input[type=file][data-ro613]{display:none}
.ro613-edit{box-shadow:0 0 0 2px var(--accent-soft)}
.ro613-foot{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom,0px));z-index:5;display:flex;gap:10px;justify-content:flex-end;margin:14px -14px -14px;padding:12px 14px;background:var(--card);border-top:1px solid var(--line);border-radius:0 0 var(--r) var(--r)}
.ro613-foot .btn{flex:1;max-width:180px}
@media (min-width:900px){.ro613-foot{bottom:0}.ro613-page .st617-sec,.ro613-page{max-width:none}}
/* v69.17.0: Send — pick several phone numbers / emails on file, add one right there */
.rcp617{border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.rcp617-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px;font-size:13px}
.rcp617-h>span:first-child{color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:11.5px}
.rcp617-h .rcp617-n{margin-left:auto}
.rcp617-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:9px;cursor:pointer;min-height:44px}
.rcp617-row+.rcp617-row{border-top:1px solid var(--line)}
.rcp617-row.on{background:var(--accent-soft)}
.rcp617-row input[type=checkbox]{width:20px;height:20px;flex:none;accent-color:var(--accent)}
.rcp617-row .grow{min-width:0;display:flex;flex-direction:column}
.rcp617-row b{font-size:14.5px;overflow-wrap:anywhere}
.rcp617-row small{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.rcp617-row .icon-btn{flex:none}
.rcp617-new{display:inline-block;background:var(--st-new);color:#fff;border-radius:999px;padding:0 7px;font-size:11px;font-weight:700}
.rcp617-none{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;margin:2px 0 8px;border-radius:9px;background:#fff7e6;border:1px solid #f1c27d;font-size:13px}
.rcp617-none svg{width:16px;height:16px;flex:none;margin-top:1px;color:var(--warn)}
.rcp617-add{display:flex;gap:8px;margin-top:8px}
.rcp617-add input{flex:1;min-width:0;height:42px;border:1.5px solid var(--line2);border-radius:10px;padding:0 12px;font-size:16px;background:#fff}
.rcp617-add .btn{flex:none;height:42px}
.rcp617-err{color:var(--danger);margin-top:5px;font-weight:600}
.rcp617-save{margin-top:10px;font-size:13.5px}
.rcp617-save span{overflow-wrap:anywhere}
.rcp617-em{margin-top:12px}
.rcp617-tc{display:flex;gap:4px;flex:none}
.rcp617-tc button{border:1.5px solid var(--line2);background:#fff;border-radius:999px;min-width:44px;height:32px;padding:0 10px;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--ink)}
.rcp617-tc button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.rcp617-more{display:block;margin:4px 0 4px 6px;min-height:36px;font-size:14px;font-weight:600}

/* v69.27.0: Send sheet — error in the sheet, result panel, editable message */
.snd627-err{display:flex;gap:8px;align-items:flex-start;background:#fdecec;border:1px solid #f3b4b4;color:#8a1c1c;border-radius:12px;padding:10px 12px;margin:0 0 12px;font-size:14px;line-height:1.35}
.snd627-err svg{flex:none;width:18px;height:18px;margin-top:1px}
.snd627 textarea{width:100%;min-height:180px;font:inherit;line-height:1.4;resize:vertical}
.snd627 .f{margin-bottom:10px}
.snd627-tip{margin-top:-2px}
.snd627-res{border-radius:14px;padding:16px;border:1px solid var(--line,#e3e6ea);overflow-wrap:anywhere}
.snd627-res.ok{background:#eaf7ef;border-color:#9fd8b3}
.snd627-res.bad{background:#fdecec;border-color:#f3b4b4}
.snd627-res.wait{background:#f4f6f9}
.snd627-big{display:flex;gap:8px;align-items:center;font-size:20px;margin-bottom:8px}
.snd627-big svg{width:24px;height:24px}
.snd627-res.ok .snd627-big{color:#14743a}.snd627-res.bad .snd627-big{color:#a11d1d}

/* v69.18.0: invoice → job card (photos), payment reminders */
.im618-job{display:flex;align-items:center;gap:12px;margin:2px 0 14px;padding:12px 14px;border:1px solid var(--line,#e5e5e5);border-radius:12px;text-decoration:none;color:inherit;background:var(--card,#fff)}
.im618-job:hover{border-color:#999}
.im618-job>svg{width:20px;height:20px;flex:0 0 auto;color:#888}
.im618-ic{flex:0 0 auto;width:38px;height:38px;border-radius:10px;background:#f2f2f2;display:flex;align-items:center;justify-content:center}
.im618-ic svg{width:20px;height:20px}
.im618-tx{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.im618-k{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#777;font-weight:600}
.im618-ti{font-size:14px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.im618-ths{display:flex;gap:6px;margin:6px 0 2px;overflow:hidden;max-width:100%}
.im618-th{width:54px;height:54px;border-radius:8px;overflow:hidden;background:#222;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px;flex:0 0 auto}
.im618-th img{width:100%;height:100%;object-fit:cover;display:block}
.im618-th svg{width:22px;height:22px}
.im618-more{background:#eee;color:#333}
.pr618 h2 svg{width:18px;height:18px;vertical-align:-3px}
.pr618-h{display:flex;gap:8px;padding:7px 0;border-top:1px solid var(--line,#eee)}
.pr618-h svg{width:15px;height:15px;color:#777}
.pr618-log svg{width:15px;height:15px;vertical-align:-2px}
#set-payrem618 h2 svg{width:18px;height:18px;vertical-align:-3px}
@media (max-width:600px){.im618-ic{display:none}.im618-job{gap:8px;padding:12px}.im618-th{width:48px;height:48px}}

/* v69.19.0: check photos */
.chk619{border:1px dashed #d4d4d4;border-radius:12px;padding:10px 12px;margin:10px 0;background:#fafafa}
.chk619-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}.chk619-h svg{width:16px;height:16px}
.chk619-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:8px}
.chk619-th{position:relative;border-radius:10px;overflow:hidden;background:#fff;border:1px solid #e5e5e5}
.chk619-th img{display:block;width:100%;height:86px;object-fit:cover}
.chk619-side{display:flex}.chk619-side button{flex:1;border:0;border-top:1px solid #e5e5e5;background:#fff;font:inherit;font-size:12px;padding:6px 0;cursor:pointer;color:#525252}
.chk619-side button+button{border-left:1px solid #e5e5e5}.chk619-side button.on{background:#0a0a0a;color:#fff;font-weight:600}
.chk619-x{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:13px;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:16px;line-height:26px;cursor:pointer}
.chk619-btns{display:flex;gap:8px;flex-wrap:wrap}.chk619-tip{margin-top:6px}
.chk619-pdf{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:86px;color:#525252;font-size:12px}.chk619-pdf.sm{height:auto;font-size:10px;font-weight:700}
.chk619-row{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}
.chk619-mini{width:44px;height:30px;padding:0;border:1px solid #e5e5e5;border-radius:6px;overflow:hidden;background:#fff;cursor:pointer}.chk619-mini img{width:100%;height:100%;object-fit:cover;display:block}
.chk619-chip{display:flex;align-items:center;justify-content:flex-end;gap:3px;font-size:11px;font-weight:500;color:#737373;margin-top:2px}.chk619-chip svg{width:12px;height:12px}
.chk619-big{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.chk619-fig{margin:0;border:1px solid #e5e5e5;border-radius:10px;overflow:hidden;background:#fff}.chk619-fig img{display:block;width:100%;max-height:260px;object-fit:contain;background:#f5f5f5}
.chk619-fig figcaption{padding:6px 10px;font-size:13px}

/* v69.20.0: quick wins */
.qw-home{cursor:pointer}
.qw-btn{margin-left:auto}
.qw-btn + .role-btn{margin-left:6px}
.qw-snip{font-size:12px;color:#525252;margin-top:3px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qw-lbl{font-weight:600;color:#737373}
.qw-snip mark{background:#fef08a;color:inherit;padding:0 1px;border-radius:2px}
@media (max-width:900px){.topbar-title h1.qw-jt{line-height:1.15;min-width:0}.topbar-title h1.qw-jt .qw-sub{display:block;font-size:12px;font-weight:500;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

/* v69.21.0: outside techs */
.ot621-pill{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;font-size:11px;padding:1px 6px;border-radius:999px;font-weight:600;vertical-align:1px}
.ot621-card .dot,.ot621-card + * .dot{width:10px;height:10px;border-radius:5px;flex:none;margin-right:2px}
.lrow .dot{width:10px;height:10px;border-radius:5px;flex:none}
.ot621-sec{border:1px dashed #d4d4d4;border-radius:12px;padding:10px 12px;margin:12px 0 4px;background:#fafafa}
.ot621-sec-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}.ot621-sec-h svg{width:16px;height:16px}
.ot621-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.ot621-th{position:relative;border-radius:10px;overflow:hidden;background:#fff;border:1px solid #e5e5e5}
.ot621-th img{display:block;width:100%;height:86px;object-fit:cover}
.ot621-side{display:block;text-align:center;font-size:12px;padding:5px 0;border-top:1px solid #e5e5e5;color:#525252}
.ot621-x{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:13px;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:16px;line-height:26px;cursor:pointer}
.ot621-btns{display:flex;gap:8px;flex-wrap:wrap}
.ot621-pdf{display:flex;align-items:center;justify-content:center;height:86px;color:#525252;font-size:12px;font-weight:700}
.ot621-big{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.ot621-fig{margin:0;border:1px solid #e5e5e5;border-radius:10px;overflow:hidden;background:#fff}.ot621-fig img{display:block;width:100%;max-height:240px;object-fit:contain;background:#f5f5f5}
.ot621-fig figcaption{padding:6px 10px;font-size:13px}
.ot621-tap{cursor:pointer}
.ot621-card .list .lrow{padding-left:0;padding-right:0}

/* v69.22.0: change log */
.chg622-t{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}
.chg622-t svg{width:18px;height:18px}.chg622-ch{display:inline-flex;transition:transform .15s}.chg622-ch.open{transform:rotate(180deg)}
.chg622-b{margin-top:10px;border-top:1px solid #eee}
.chg622-r{padding:9px 0;border-bottom:1px solid #f1f1f1}.chg622-r:last-child{border-bottom:0}
.chg622-h{margin-bottom:3px}.chg622-f{color:#525252}.chg622-old{color:#737373;text-decoration:line-through;text-decoration-color:#c4c4c4}

/* v69.26.0: QuickBooks update emails */
.qbn626 .qbn626-ic{background:#2ca01c}.qbn626 .switch{flex:none}
.qbn626-sec{margin-top:12px;border-top:1px solid #eee;padding-top:8px}
.qbn626-to{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:14px}.qbn626-to svg{width:16px;height:16px;flex:none;color:#525252}
.qbn626-r{display:flex;align-items:flex-start;gap:8px;padding:7px 0;border-bottom:1px solid #f3f3f3;color:inherit;text-decoration:none;font-size:14px}.qbn626-r:last-child{border-bottom:0}
.qbn626-h svg{width:14px;height:14px;vertical-align:-2px}

/* v69.23.0: address on top of invoices/estimates · discount row · review Previous */
.ad623-bar{display:flex;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;color:var(--ink);border-left:4px solid var(--ink)}
.ad623-bar svg{width:20px;height:20px;flex:none;color:var(--ink2)}
.ad623-bar .ad623-a{font-weight:800;font-size:16px;line-height:1.25}
.ad623-bar:hover .ad623-a{text-decoration:underline}
.dc623-tr{color:#15803d;font-weight:600}
.dc623-tr .dc623-edit{color:inherit;text-decoration:underline dotted;font-weight:600;font-size:inherit}
.dc623-kind{margin-top:2px}
.dc623-after{margin-top:6px}
.rv623-prev{display:inline-flex;align-items:center;gap:2px;padding:6px 8px;min-height:36px;margin-left:4px}
.rv623-prev svg{width:16px;height:16px}
@media (max-width:600px){.ad623-bar .ad623-a{font-size:15px}.rv616-top{flex-wrap:wrap;row-gap:2px}.rv623-prev{padding:6px 4px}}

/* v69.24.0: My profile in one compact column (David, Oct 22: stretched on a big screen) + "confirm it's you" choices */
.prof6924{max-width:600px;margin:0 auto}
.prof6924 .card.pad{padding:16px 18px}
.prof6924 .card h2{margin-bottom:10px}
.prof6924 .f{margin-bottom:12px}
.v6924-seg{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 14px}
.v6924-seg button{border:1px solid var(--line2);background:var(--card,#fff);color:var(--ink);border-radius:999px;padding:7px 13px;min-height:36px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.v6924-seg button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.v6924-seg button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.v6924-lead{margin-top:-4px}
.v6924-why{margin:0 0 10px}
.v6924-tip{margin:-4px 0 12px}
.v6924-tip a,.v6924-pick+p a{color:var(--ink);font-weight:600}
.v6924-new{border-top:1px solid var(--line);margin-top:4px;padding-top:14px}
.v6924-sent{align-items:flex-start}
.v662-code svg{margin-right:6px;vertical-align:-3px}

/* v69.28.0: Invoices top cards are filter buttons; paid line on Collected rows */
.nv628-stat{display:block;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:box-shadow .15s,border-color .15s}
.nv628-stat:hover{border-color:var(--line2)}
.nv628-stat:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.nv628-stat.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);background:linear-gradient(0deg,var(--accent-soft),var(--card) 70%)}
.nv628-stat.on .l{color:var(--accent)}
.nv628-hint{font-size:11px;color:var(--muted);margin-top:4px;font-weight:500}
.nv628-stat.on .nv628-hint{color:var(--accent);font-weight:600}
.nv628-paid{color:var(--st-done);font-weight:600;margin-top:3px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.nv628-paid svg{width:13px;height:13px;flex:none}

/* v69.29.0: Labor card on the invoice page (review) */
.lab629-card{padding:10px 12px}
.lab629-top{display:flex;align-items:center;gap:6px;min-height:28px}
.lab629-top>svg{width:16px;height:16px;color:var(--ink2)}
.lab629-h{font-size:14px}
.lab629-job{color:var(--ink2);text-decoration:underline}
.lab629-none{margin-top:4px}
.lab629-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:6px;margin-top:6px}
.lab629-sum>div{background:#f6f6f6;border-radius:9px;padding:6px 8px}
.lab629-sum .k{font-size:11.5px;color:var(--ink2)}
.lab629-sum .v{font-size:16px;font-weight:700;line-height:1.25}
.lab629-rows{margin-top:6px}
.lab629-r{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid #eee;font-size:14px}
.lab629-r:first-child{border-top:0}
.lab629-av{width:26px;height:26px;font-size:11px;flex:none}
.lab629-n{min-width:0;overflow:hidden;text-overflow:ellipsis}
.lab629-hh{white-space:nowrap;font-variant-numeric:tabular-nums}
.lab629-c{white-space:nowrap;min-width:76px;text-align:right;font-variant-numeric:tabular-nums}
.lab629-live{font-size:10.5px;padding:1px 6px}
.lab629-foot{margin-top:6px;display:flex;flex-wrap:wrap;gap:2px 8px}
.v6937-rem{margin:10px 0 6px}.v6937-dev{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* v69.31.8: desktop uses the screen width sensibly (content column centered, up to 1400px); phone layout unchanged */
@media (min-width:901px){main#view{margin-left:auto;margin-right:auto}}
/* v69.31.8: picture lightbox (invoice page job card thumbnails) */
.lb6938{position:fixed;inset:0;z-index:10050;background:rgba(10,10,10,.92);display:flex;align-items:center;justify-content:center;touch-action:pan-y}
.lb6938-st{position:absolute;inset:48px 64px;display:flex;align-items:center;justify-content:center}
.lb6938-st img,.lb6938-st video{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;background:#000}
.lb6938 button{position:absolute;z-index:2;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:999px;width:46px;height:46px;font-size:30px;line-height:44px;cursor:pointer;padding:0}
.lb6938 button:hover{background:rgba(255,255,255,.28)}
.lb6938-x{top:12px;right:12px}.lb6938-p{left:12px;top:50%;margin-top:-23px}.lb6938-n{right:12px;top:50%;margin-top:-23px}
.lb6938-c{position:absolute;bottom:14px;left:0;right:0;text-align:center;color:#fff;font-size:13px;opacity:.85}
body.lb6938-on{overflow:hidden}
@media (max-width:600px){.lb6938-st{inset:56px 8px}.lb6938-p,.lb6938-n{top:auto;bottom:6px;margin-top:0}}
.im618-th[data-action]{cursor:zoom-in}
.nt6938-open{font-weight:600;font-size:12px;margin-left:6px;text-decoration:none}
.fv-cust a.nt6938-c{color:inherit;text-decoration:none}.fv-cust a.nt6938-c:hover{text-decoration:underline}
a.hist{color:inherit;text-decoration:none}

/* v69.31.9: Send screen photo picker + remove a saved email */
.ph6939{margin-top:14px}.ph6939 h3 .tiny{font-weight:500;margin-left:6px}
.ph6939-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin:8px 0}
.ph6939-t{position:relative;display:block;border:2px solid var(--line);border-radius:10px;overflow:hidden;aspect-ratio:1/1;cursor:pointer;opacity:.45;background:#f3f3f3}
.ph6939-t.on{border-color:var(--ink);opacity:1}
.ph6939-t img{width:100%;height:100%;object-fit:cover;display:block}
.ph6939-t input{position:absolute;top:6px;left:6px;width:20px;height:20px;z-index:1;margin:0}
.ph6939-t small{position:absolute;bottom:4px;left:4px;background:#b45309;color:#fff;font-size:10px;font-weight:700;border-radius:6px;padding:1px 6px}
.ph6939-v{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.rcp617-tc .rcp6939-x{min-width:0;padding:0 8px;font-size:16px;line-height:1;color:var(--muted);background:none;border-color:transparent}
.rcp617-tc .rcp6939-x:hover{color:#b91c1c}
/* v69.31.9 H: drag To/CC chips + chip menu */
#sheetRoot .tagbox .tag{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.tg6939-ghost{position:fixed;z-index:10060;pointer-events:none;transform:translate(-50%,-60%);box-shadow:0 6px 18px rgba(0,0,0,.25);opacity:.95}
.tg6939-src{opacity:.35}
body.tg6939-dragging{cursor:grabbing}
#sheetRoot [data-tagbox].tg6939-over{outline:2px dashed var(--ink);outline-offset:2px;background:rgba(0,0,0,.03)}
.tg6939m{position:fixed;z-index:10070;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:4px;min-width:150px;display:flex;flex-direction:column}
.tg6939m button{background:none;border:0;text-align:left;padding:10px 12px;font-size:14px;border-radius:7px;cursor:pointer;color:inherit}
.tg6939m button:hover{background:rgba(0,0,0,.06)}

/* v69.31.10: customer search in Change bill-to + a filter box above customer drop-downs */
.bill6931-list{max-height:min(44vh,400px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.bill6931-list .lrow.hi6931{background:#f2f2f2}
.bill6931-list .lrow .t2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bill6931-list .lrow .grow{min-width:0}
.cs6931-f{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.cs6931-f .cs6931-q{flex:1 1 auto;min-width:0;width:100%;padding:8px 10px;border:1.5px solid var(--line2);border-radius:10px;background:#fff;font-size:15px}
.cs6931-f .cs6931-n:empty{display:none}
.cs6931-f .cs6931-n{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
@media (max-width:900px){.cs6931-f .cs6931-q{font-size:16px}.bill6931-list{max-height:40vh}}
/* v69.31.16: full-screen sensor chart */
.mfs-tap{position:relative;cursor:zoom-in;-webkit-tap-highlight-color:transparent}.mfs-tap:active{opacity:.85}
.mfs-tapic{position:absolute;top:0;right:0;width:30px;height:30px;border-radius:8px;background:rgba(255,255,255,.9);border:1px solid #e3e6ea;color:#2563eb;display:flex;align-items:center;justify-content:center}.mfs-tapic svg{width:16px;height:16px}
.mfs-taphint{margin-top:6px}
html.mfs-open,body.mfs-open{overflow:hidden;overscroll-behavior:none}
.mfs-ov{position:fixed;inset:0;z-index:10100;background:#fff;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top,0px) + 8px) calc(env(safe-area-inset-right,0px) + 10px) calc(env(safe-area-inset-bottom,0px) + 8px) calc(env(safe-area-inset-left,0px) + 10px);gap:8px;color:#111;overscroll-behavior:contain}
.mfs-top{display:flex;align-items:center;gap:10px}.mfs-ttl{min-width:0}.mfs-name{font-weight:700;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mfs-x{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid #e3e6ea;background:#f5f7fa;color:#111;display:flex;align-items:center;justify-content:center;cursor:pointer}.mfs-x svg{width:22px;height:22px}
.mfs-chips{display:flex;gap:6px;flex-wrap:wrap}
.mfs-plot{position:relative;flex:1;min-height:180px}
.mfs-cv{position:absolute;inset:0;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:crosshair}
.mfs-tip{position:absolute;top:4px;left:4px;pointer-events:none;background:#111827;color:#fff;border-radius:10px;padding:6px 10px;font-size:13px;line-height:1.3;box-shadow:0 4px 14px rgba(0,0,0,.18);white-space:nowrap;display:flex;flex-direction:column;z-index:2}
.mfs-tip b{font-size:16px}.mfs-tip .mfs-sub{opacity:.8;font-size:12px}.mfs-tip .mfs-when{opacity:.9}
.mfs-load{position:absolute;right:6px;top:6px;font-size:12px;color:#555;background:rgba(255,255,255,.85);padding:2px 8px;border-radius:10px}
.mfs-navw{height:52px;flex:none}.mfs-nav{width:100%;height:100%;display:block;border-radius:8px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.mfs-ctl{display:flex;align-items:center;gap:6px}.mfs-ctl .btn{min-width:40px;height:40px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center}.mfs-ctl .btn svg{width:18px;height:18px;margin:0}
.mfs-win{text-align:center;color:#333;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}
.mfs-hint{text-align:center}
@media (max-height:480px){.mfs-ov{gap:4px}.mfs-hint{display:none}.mfs-navw{height:40px}.mfs-name{font-size:15px}.mfs-x{width:38px;height:38px}}
