
:root{--blue:#0309F6;--mag:#D200D6;--red:#D1030A;--orange:#E8590C;--green:#0F8A4B;
--ink:#14152B;--ink2:#4A4D68;--muted:#7A7D96;--line:#E4E5EF;--bg:#F5F6FB;--card:#fff;
--blue-soft:#ECEDFF;--mag-soft:#FCEBFC;--red-soft:#FDECEC;--orange-soft:#FFF0E6;--green-soft:#E7F6EE;
--r:14px;--shadow:0 1px 2px rgba(20,21,43,.06),0 2px 8px rgba(20,21,43,.05);
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);-webkit-text-size-adjust:100%}
body{font-size:15px;line-height:1.4}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--blue)}
[hidden]{display:none!important}
:focus-visible{outline:3px solid rgba(3,9,246,.45);outline-offset:2px;border-radius:8px}
.muted{color:var(--muted)}.small{font-size:13px}
h1,h2,h3{margin:0;line-height:1.2}
.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;font-weight:600;display:inline-flex;align-items:center;gap:6px;justify-content:center;text-decoration:none;color:var(--ink);white-space:nowrap}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.primary:hover{background:#0007d0}
.btn.mag{background:var(--mag);border-color:var(--mag);color:#fff}
.btn.ghost{background:transparent}
.btn.big{padding:13px 18px;font-size:16px;width:100%}
.btn:disabled{opacity:.5;cursor:default}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#0309F6 0%,#4a05e8 50%,#D200D6 100%)}
.login-card{background:#fff;border-radius:20px;padding:24px;width:100%;max-width:420px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.logo-row{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.logo-row h1{font-size:22px}
.logo-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--mag));color:#fff;display:inline-grid;place-items:center;font-weight:800;font-size:20px;flex:none}
.login-card .logo-mark{width:46px;height:46px;font-size:26px;border-radius:12px}
.mock-note{background:var(--blue-soft);color:#1a1e9e;border-radius:10px;padding:8px 12px;font-size:13px;margin:0 0 14px}
.login label{display:block;font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:10px}
.login input{display:block;width:100%;margin-top:4px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:16px}
.roles{border:0;padding:0;margin:6px 0 16px}
.roles legend{font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:6px}
.role-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.role-opt{border:2px solid var(--line);border-radius:12px;padding:10px;text-align:left;background:#fff}
.role-opt b{display:block;font-size:14px}.role-opt span{font-size:12px;color:var(--muted)}
.role-opt[aria-pressed=true]{border-color:var(--blue);background:var(--blue-soft)}

/* header */
.top{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.top-row{display:flex;align-items:center;gap:10px;padding:10px 14px;max-width:1500px;margin:0 auto}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-weight:800;font-size:17px;flex:none}
.brand .logo-mark{width:30px;height:30px;font-size:17px;border-radius:9px}
.brand-sub{font-weight:600;color:var(--ink2)}
.div-switch{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:3px;margin-left:auto}
.div-switch button{border:0;background:transparent;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;color:var(--ink2);white-space:nowrap}
.div-switch button[aria-pressed=true]{background:var(--blue);color:#fff}
.div-switch button[data-div=FS][aria-pressed=true]{background:var(--mag)}
.div-switch button[data-div=ALL][aria-pressed=true]{background:linear-gradient(90deg,var(--blue),var(--mag))}
.me{border:0;background:transparent;display:flex;align-items:center;gap:8px;padding:2px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.me-name{font-size:13px;font-weight:600;text-align:left;line-height:1.15}
.me-name small{display:block;font-weight:500;color:var(--muted)}
.me-menu{position:fixed;right:12px;top:58px;z-index:40;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 30px rgba(0,0,0,.15);padding:12px;width:230px}
.me-menu p{margin:0 0 6px}
.me-menu .role-opt{width:100%;margin-bottom:6px;padding:8px 10px}
.me-menu #logout{width:100%;margin-top:4px}
.tabs{display:none;gap:4px;padding:0 14px;max-width:1500px;margin:0 auto;overflow-x:auto}
.tabs button{border:0;background:transparent;padding:10px 12px;font-weight:600;color:var(--ink2);border-bottom:3px solid transparent;white-space:nowrap}
.tabs button[aria-current=page]{color:var(--blue);border-bottom-color:var(--blue)}
.bottom-tabs{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom)}
.bottom-tabs button{flex:1;border:0;background:transparent;padding:7px 2px 8px;font-size:11px;font-weight:600;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}
.bottom-tabs button .ic{font-size:19px;line-height:1}
.bottom-tabs button[aria-current=page]{color:var(--blue)}
.view{max-width:1500px;margin:0 auto;padding:14px 14px 90px;outline:none}
.page-head{flex-wrap:wrap;display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:2px 0 12px}
.page-head h2{font-size:21px}
.page-head p{margin:2px 0 0}

/* tiles */
.tiles{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;margin:0 -14px 8px;padding-left:14px;padding-right:14px;scroll-snap-type:x proximity;scrollbar-width:none}
.tiles::-webkit-scrollbar,.chips::-webkit-scrollbar{display:none}
.tile{flex:0 0 auto;min-width:118px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;text-align:left;box-shadow:var(--shadow);scroll-snap-align:start}
.tile .n{font-size:24px;font-weight:800;display:block;line-height:1.1}
.tile .l{font-size:12px;color:var(--ink2);font-weight:600}
.tile.money .n{color:var(--mag)}
.tile .late{display:block;font-size:11px;color:var(--red);font-weight:700;margin-top:2px}
.tile .late.ok{color:var(--muted);font-weight:500}

/* stage chips (mobile) */
.chips{display:flex;gap:6px;overflow-x:auto;margin:4px -14px 10px;padding:2px 14px 4px;scrollbar-width:none;scroll-snap-type:x proximity}
.chip{flex:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;white-space:nowrap;display:flex;gap:6px;align-items:center;scroll-snap-align:start}
.chip .c{background:var(--bg);border-radius:999px;padding:0 7px;font-size:12px}
.chip .c.red{background:var(--red);color:#fff}
.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.chip[aria-pressed=true] .c{background:rgba(255,255,255,.2);color:#fff}
.stage-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--ink2);margin:0 0 10px}
.swipe-hint{font-size:12px;color:var(--muted);margin:-4px 0 8px}

/* source tag */
.src{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--ink2);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 6px;white-space:nowrap}
.src i{font-style:normal;width:14px;height:14px;border-radius:4px;display:inline-grid;place-items:center;font-size:9px;font-weight:800;color:#fff}
.src.cc i{background:#1f6feb}.src.gc i{background:#4285F4}.src.qb i{background:#2CA01C}.src.man i{background:#8b8ea8}.src.blue i{background:#3F51B5}

/* job cards */
.list{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.jc{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:11px 12px;box-shadow:var(--shadow);text-align:left;width:100%;min-width:0;display:block;position:relative;border-left:4px solid var(--blue)}
.jc.FS{border-left-color:var(--mag)}
.jc:hover{border-color:#c9cbe0}
.jc .r1{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;min-width:0}
/* v84 (Nathan 1:59 PM Nov 9 "single line address... whatever fits in one line"): the card face's address never
   wraps to a second line and never grows the card — it clips with an ellipsis instead. flex:1 1 auto + min-width:0
   is what lets a flex child (r1's only child now) actually shrink below its own text width to clip. */
.jc .cust{font-weight:700;font-size:15px;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* same pass: a CSS Grid track sized "1fr" (no explicit floor) takes its MINIMUM width from its item's own
   min-content size — and a white-space:nowrap text's min-content IS its full unwrapped width, so one long
   no-address-found card title (the fallback case above) used to blow the whole grid/column wider than the
   phone's own viewport instead of actually clipping (found live, phone-size, on "Request for Quote – Berman
   Subdivision, Lots 4 & 5 – Wallkill, NY" — no street-address pattern in it, so shortAddr() correctly falls back
   to the raw text, and it needs the grid itself, not just the card, to have an explicit minmax(0,…) floor). Every
   card grid below (.list, .col-body, .mine-grid) now opts out of that with minmax(0,1fr) so .jc (min-width:0 too,
   belt-and-suspenders) and its address really do clip to one line at any width, including the one card in ~640
   whose title has no address in it at all. */
.jc .amt{font-weight:800;font-size:15px;white-space:nowrap}
.jc .amt.none{color:var(--muted);font-weight:500;font-size:13px}
.jc .what{font-size:13px;color:var(--ink2);margin:2px 0 7px}
.jc .r3{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px}
.badge{font-size:11px;font-weight:700;border-radius:6px;padding:2px 6px;white-space:nowrap}
.badge.SC{background:var(--blue-soft);color:var(--blue)}
.badge.FS{background:var(--mag-soft);color:#a200a6}
.who{display:inline-flex;align-items:center;gap:4px;color:var(--ink2);font-weight:600}
.who .avatar{width:20px;height:20px;font-size:10px}
.days{margin-left:auto;font-weight:700;color:var(--ink2);white-space:nowrap;border-radius:6px;padding:2px 6px;background:var(--bg)}
.days.warn{color:var(--orange);background:var(--orange-soft)}
.days.late{color:#fff;background:var(--red)}
.town{color:var(--muted)}

/* kanban */
.board{display:none}
.col{background:#EEEFF7;border-radius:var(--r);padding:8px;min-width:262px;width:262px;flex:none;display:flex;flex-direction:column;max-height:calc(100vh - 290px)}
.col-head{padding:4px 4px 8px;}
.col-head .t{display:flex;align-items:center;gap:6px;font-weight:700;font-size:14px}
.col-head .t .num{color:var(--muted);font-weight:600}
.col-head .t .lc{margin-left:auto;font-size:11px;color:var(--red);font-weight:700}
.col-head .meta{display:flex;gap:6px;align-items:center;margin-top:5px;flex-wrap:wrap}
.col-head .sum{font-size:12px;color:var(--ink2);font-weight:600}
.col-body{overflow-y:auto;display:grid;gap:8px;align-content:start;padding:2px;grid-template-columns:minmax(0,1fr)}
.col-empty{font-size:12px;color:var(--muted);text-align:center;padding:16px 0}
.stepnum{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#fff;font-size:11px;font-weight:800;color:var(--ink2);flex:none}

/* sheet */
.sheet-wrap{position:fixed;inset:0;z-index:50}
.sheet-backdrop{position:absolute;inset:0;background:rgba(14,15,35,.45)}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:92vh;overflow-y:auto;background:#fff;border-radius:20px 20px 0 0;padding:0 16px 0;animation:up .2s ease-out}
@keyframes up{from{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}
.sheet-top{position:sticky;top:0;background:#fff;padding:10px 0 10px;z-index:2;border-bottom:1px solid var(--line);margin-bottom:12px}
.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 10px}
.sheet-title-row{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.sheet h2{font-size:20px}
.x{border:0;background:var(--bg);border-radius:50%;width:34px;height:34px;font-size:18px;flex:none}
.sheet .sub{color:var(--ink2);font-size:14px;margin-top:3px}
.kv{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}
.sec{margin:16px 0}
.sec h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}
.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.actions .btn{padding:10px 6px;font-size:14px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:start;padding:0 0 12px;position:relative}
.timeline li::before{content:"";position:absolute;left:10px;top:20px;bottom:0;width:2px;background:var(--line)}
.timeline li:last-child::before{display:none}
.timeline .dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);background:#fff;display:grid;place-items:center;font-size:11px;font-weight:800;color:var(--muted);position:relative;z-index:1}
.timeline li.done .dot{background:var(--blue);border-color:var(--blue);color:#fff}
.timeline li.done::before{background:var(--blue)}
.timeline li.cur .dot{border-color:var(--mag);color:var(--mag);box-shadow:0 0 0 4px var(--mag-soft)}
.timeline .nm{font-weight:600;font-size:14px}
.timeline li.todo .nm{color:var(--muted);font-weight:500}
.timeline .dt{font-size:12px;color:var(--ink2);text-align:right;white-space:nowrap}
.timeline .nm .src{margin-left:6px;vertical-align:1px}
.photos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.ph{aspect-ratio:1;border-radius:10px;background:repeating-linear-gradient(135deg,#eef0fa 0 10px,#e6e8f6 10px 20px);display:grid;place-items:center;font-size:11px;color:var(--muted);text-align:center;padding:4px}
.note{background:var(--bg);border-radius:10px;padding:9px 11px;font-size:14px;margin-bottom:6px}
.note .when{font-size:11px;color:var(--muted);display:block;margin-bottom:2px}
.next-bar{position:sticky;bottom:0;background:#fff;padding:12px 0 calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);margin-top:12px}

/* generic cards / rows */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px}
.grid2{display:grid;gap:12px}
.row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row .main{flex:1;min-width:0}
.row .t{font-weight:600}
.row .s{font-size:13px;color:var(--ink2)}
.row .right{text-align:right;white-space:nowrap;font-weight:700}
.rowbtn{all:unset;display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);width:100%;cursor:pointer;box-sizing:border-box}
.rowbtn:focus-visible{outline:3px solid rgba(3,9,246,.45)}
.search{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:16px;background:#fff;margin-bottom:10px}
.pill{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--bg);color:var(--ink2);white-space:nowrap}
.pill.red{background:var(--red-soft);color:var(--red)}
.pill.orange{background:var(--orange-soft);color:var(--orange)}
.pill.green{background:var(--green-soft);color:var(--green)}
.pill.blue{background:var(--blue-soft);color:var(--blue)}

/* service calls */
.sc-hero{background:linear-gradient(120deg,var(--blue),#3a2cf0 60%,var(--mag));color:#fff;border-radius:18px;padding:18px;margin-bottom:12px}
.sc-hero h2{font-size:20px}.sc-hero p{margin:6px 0 12px;opacity:.92;font-size:14px}
.sc-hero .btn{background:#fff;color:var(--blue);border-color:#fff}
.sc-stats{display:flex;gap:14px;margin-top:12px;flex-wrap:wrap}
.sc-stats div{font-size:12px;opacity:.9}.sc-stats b{display:block;font-size:20px}
.linked{font-size:12px;opacity:.85;margin-top:8px;overflow-wrap:anywhere}

/* schedule */
.week-nav{display:flex;gap:8px;align-items:center}
.week{display:grid;gap:10px}
.day{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.day h3{font-size:13px;padding:8px 12px;background:var(--bg);border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.day.today h3{background:var(--blue);color:#fff}
.day .evs{padding:8px;display:grid;gap:6px;align-content:start}
.ev{all:unset;box-sizing:border-box;cursor:pointer;display:block;border-radius:9px;padding:7px 9px;font-size:13px;background:var(--blue-soft);border-left:4px solid var(--blue)}
.ev.FS{background:var(--mag-soft);border-left-color:var(--mag)}
.ev.svc{background:#EEF7FF;border-left-color:#4285F4}
.ev.billed{outline:2px solid #3F51B5}
.ev .tm{font-weight:700;font-size:12px;color:var(--ink2)}
.ev .ti{font-weight:600}
.ev .sm{font-size:12px;color:var(--ink2)}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink2);margin-bottom:10px;align-items:center}
.legend span{display:inline-flex;align-items:center;gap:5px}
.sw{width:12px;height:12px;border-radius:3px;display:inline-block}

/* tasks */
.task{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line)}
.task:last-child{border-bottom:0}
.task input{width:22px;height:22px;margin:1px 0 0;accent-color:var(--blue);flex:none}
.task .main{flex:1;min-width:0}
.task.checked .t{text-decoration:line-through;color:var(--muted)}
.task .open{border:0;background:var(--bg);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--blue)}
.group-h{display:flex;justify-content:space-between;align-items:center;margin:16px 0 6px}
.group-h h3{font-size:15px}

/* billing */
.bill-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.bt{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px;box-shadow:var(--shadow)}
.bt .l{font-size:12px;color:var(--ink2);font-weight:600;display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.bt .n{font-size:19px;font-weight:800;display:block;margin-top:2px}
.bt .c{font-size:12px;color:var(--muted)}
.bt.unpaid .n{color:var(--mag)}

.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;font-weight:600;opacity:0;pointer-events:none;transition:.2s;z-index:60;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}
.empty{text-align:center;color:var(--muted);padding:30px 10px}

@media (max-width:640px){
  .top-row{flex-wrap:wrap;gap:8px;padding:8px 12px 10px}
  .me{margin-left:auto}
  .me-name{display:none}
  .div-switch{order:3;width:100%;margin-left:0}
  .div-switch button{flex:1;padding:7px 6px}
}
@media (min-width:900px){
  body{font-size:14px}
  .tabs{display:flex}
  .bottom-tabs{display:none}
  .view{padding:18px 20px 40px}
  .tiles{display:grid;grid-template-columns:repeat(7,1fr);margin:0 0 14px;padding:0;overflow:visible}
  .tile{min-width:0}
  .chips,.swipe-hint,.stage-info,.m-list{display:none}
  .board{display:flex;gap:10px;overflow-x:auto;padding-bottom:10px;align-items:flex-start}
  .sheet-wrap{display:grid;place-items:center}
  .sheet{position:relative;width:min(640px,94vw);max-height:88vh;border-radius:20px;bottom:auto}
  .grab{display:none}
  .grid2{grid-template-columns:1.2fr 1fr}
  .week{grid-template-columns:repeat(6,1fr);align-items:start}
  .day .evs{min-height:220px}
  .toast{bottom:30px}
  .me-menu{top:56px}
}

/* v1 real-data additions */
.err{color:var(--red);font-size:13px;min-height:1em;margin:4px 0}
.badge.SuperClean{background:var(--mag-soft);color:#9a009d}.badge.FiberSeal{background:var(--blue-soft);color:var(--blue)}.badge.none{background:#eee;color:#555}
.jc.FiberSeal{border-left:4px solid var(--blue)}.jc.SuperClean{border-left:4px solid var(--mag)}
.jc .ev{font-size:12.5px;color:var(--ink2);margin:3px 0 4px;line-height:1.35;display:block;background:none;padding:0;border:0}
.jc .who2{font-size:13px;color:var(--ink2)}
.pill.man{background:#f1f1f6;color:#4A4D68}
.searchbar{display:flex;gap:8px;margin:6px 0 10px}.searchbar input{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;background:#fff}
.evlist{list-style:none;margin:0;padding:0}.evlist li{display:flex;gap:8px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}.evlist li:last-child{border-bottom:0}.evlist .k{flex:0 0 74px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
.stage-pick{display:flex;flex-wrap:wrap;gap:6px}.stage-pick button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 11px;font-size:13px;font-weight:600}.stage-pick button[aria-pressed=true]{background:var(--blue);border-color:var(--blue);color:#fff}
.more{display:block;width:100%;margin:8px 0}
.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl td,.tbl th{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left}
.linkbox{word-break:break-all;background:var(--blue-soft);padding:10px;border-radius:10px;font-size:13px;margin:8px 0}
.foot-note{font-size:12px;color:var(--muted);margin:14px 2px}

/* Oct 26: Service Calls in place + team roles */
[hidden]{display:none!important}
body.one-tab .view{padding-bottom:24px}
body.one-tab .sc{padding-bottom:24px}
.team-tbl td{vertical-align:top}
.team-tbl .t-act{white-space:nowrap}
.role-sel{padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;max-width:100%}
.role-help{grid-column:1/-1;margin:0}
.linkcard{margin-top:10px;display:grid;gap:6px;justify-items:start}
@media (max-width:720px){.team-tbl,.team-tbl tbody,.team-tbl tr,.team-tbl td{display:block;width:100%}.team-tbl tr:first-child{display:none}.team-tbl tr{border-bottom:1px solid var(--line);padding:10px 0}.team-tbl td{border:0;padding:3px 0}.team-tbl .t-act{white-space:normal}}
.top-row .me{margin-left:auto}

/* Oct 26: assignments + My dashboard */
.pill.who{background:var(--mag-soft);color:#8a008d}
.who-f{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:0 4px 0 10px;font-size:13px;color:var(--ink2);font-weight:600;flex:none}
.who-f select{border:0;background:transparent;font:inherit;font-weight:700;color:var(--ink);padding:9px 4px;max-width:46vw}
.who-f.on{border-color:var(--blue);background:var(--blue-soft)}.who-f.on select{color:var(--blue)}
@media (max-width:600px){.searchbar{flex-wrap:wrap}.searchbar input{min-width:100%}.who-f{width:100%}.who-f select{flex:1;max-width:none}}
.mine-sec{margin:4px 0 18px}
.mine-sec h3{display:flex;align-items:center;gap:8px;font-size:15px;margin:0 0 8px;color:var(--ink)}
.mine-sec h3 .stepnum{width:22px;height:22px;border-radius:50%;background:var(--blue);color:#fff;display:inline-grid;place-items:center;font-size:12px;font-weight:800;flex:none}
.mine-sec h3 .num{background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:1px 8px;font-size:12px}
.mine-grid{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){.mine-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.mine-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mine-empty{background:#fff;border:1px dashed #c9cbe0;border-radius:var(--r);padding:36px 16px;text-align:center;color:var(--ink2);font-weight:600}
.mine-empty .ic{font-size:34px;margin-bottom:6px}
.assign-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.assign-row select{flex:1;min-width:200px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;font-weight:600;background:#fff;color:var(--ink)}
.assign-row select:focus{outline:2px solid var(--blue);outline-offset:1px}

/* Oct 26: measurements hand-off + portal schedule */
.pill.ready{background:var(--mag);color:#fff}
.pill.sent{background:var(--green-soft);color:var(--green)}
.pill.sched{background:var(--blue-soft);color:var(--blue)}
.ready-box{background:linear-gradient(135deg,var(--blue-soft),var(--mag-soft));border:1px solid #e3c6f0;border-radius:var(--r);padding:12px;margin:0 0 14px}
.ready-box h3{margin:0 0 2px;font-size:16px;display:flex;gap:8px;align-items:center}
.ready-box h3 .num{background:var(--mag);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px}
.ready-box p{margin:0 0 10px}
.mi-sec.ready{background:var(--mag-soft);border-radius:12px;padding:10px 12px}
.mi-lab{display:block;font-size:12px;font-weight:700;color:var(--ink2);margin:10px 0 4px;text-transform:uppercase;letter-spacing:.03em}
#mi-notes{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;font-size:15px;resize:vertical;background:#fff}
.mi-line{display:flex;gap:6px;margin-bottom:6px}
.mi-line input{border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;font-size:15px;background:#fff;min-width:0}
.mi-line .mi-d{flex:1}.mi-line .mi-v{width:92px;flex:none}
.mi-x{border:1px solid var(--line);background:#fff;border-radius:10px;width:40px;flex:none;color:var(--muted);font-size:14px}
.mi-add{margin-top:2px}
.mi-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.mi-actions .btn{flex:1;min-width:150px;padding:11px 14px}
.mi-status{font-size:13px;font-weight:700;margin:0 0 6px;color:var(--ink2)}.mi-status.sent{color:var(--green)}.mi-status.done{color:var(--blue)}
.mi-notes-ro{white-space:pre-wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:6px 0;font-size:14px}
.mi-tbl{width:100%;border-collapse:collapse;font-size:14px;margin:6px 0;background:#fff;border-radius:10px;overflow:hidden}
.mi-tbl th,.mi-tbl td{border-bottom:1px solid var(--line);padding:7px 9px;text-align:left}.mi-tbl th{font-size:12px;color:var(--muted)}
.mi-tbl td:last-child,.mi-tbl th:last-child{width:90px;white-space:nowrap;font-weight:700}
.sched-cur{color:var(--blue)}
.sched-row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
.sched-row label{display:flex;flex-direction:column;font-size:12px;font-weight:700;color:var(--ink2);gap:4px}
.sched-row input{border:1px solid var(--line);border-radius:10px;padding:9px 10px;font:inherit;font-size:15px;background:#fff}
.chips.sf{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.srows{display:grid;gap:8px}
.srow{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);display:flex;gap:10px;align-items:center;padding:10px 12px;border-left:4px solid var(--blue)}
.sinfo{flex:1;min-width:0;text-align:left;background:none;border:0;padding:0;display:flex;flex-direction:column;gap:3px;color:var(--ink);font:inherit}
.sinfo .cust{font-weight:700;font-size:15px}.sinfo .r3{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:3px}
.sset{display:flex;gap:6px;align-items:center;flex:none}
.sset input{border:1px solid var(--line);border-radius:10px;padding:8px;font:inherit;font-size:14px;background:#fff}
.sset .s-time{width:108px}
@media (max-width:700px){.srow{flex-direction:column;align-items:stretch}.sset{flex-wrap:wrap}.sset .s-date{flex:1;min-width:140px}.sset .s-save{flex:1}}
.mi-actions .btn{white-space:normal;line-height:1.2}
@media (max-width:600px){.mi-actions{flex-direction:column-reverse}.mi-actions .btn{width:100%}}

/* ---- Tasks + Conversation (talk.js, Oct 26) ---- */
.tbadge{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 5px;border-radius:999px;background:var(--mag);color:#fff;font-size:11px;font-weight:800;text-align:center;margin-left:6px;vertical-align:1px}
#bottom-tabs .ic{position:relative}
#bottom-tabs .ic .tbadge{position:absolute;top:-6px;right:-14px;margin:0;font-size:10px;min-width:16px;height:16px;line-height:16px;padding:0 4px}
.msg-dot{display:inline-flex;align-items:center;gap:2px;margin-left:6px;font-size:13px;vertical-align:1px}
.msg-dot i{font-style:normal;background:var(--mag);color:#fff;border-radius:999px;font-size:10px;font-weight:800;padding:0 5px;line-height:15px}
.tk-box{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px;margin:0 0 14px}
.tk-box h3{font-size:16px;display:flex;align-items:center;gap:8px;margin:0 0 10px}
.tk-box h3 .num,.tk-sec h3 .num{background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}
.tk-box h3 .num.mag{background:var(--mag);color:#fff}
.tk-msgs{border-color:#f0c4f1;background:linear-gradient(0deg,#fff,#fff) padding-box}
.tk-list{display:flex;flex-direction:column;gap:8px}
.tk-none{margin:4px 0}
.tk-row{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff}
.tk-row.od{border-color:#f3b7b9;background:var(--red-soft)}
.tk-row.done{opacity:.6}
.tk-row.done .tk-title{text-decoration:line-through}
.tk-check{flex:0 0 28px;width:28px;height:28px;border-radius:8px;border:2px solid var(--blue);background:#fff;color:#fff;font-weight:900;font-size:16px;display:grid;place-items:center;padding:0}
.tk-check[aria-pressed="true"],.tk-check.ro:not(:empty){background:var(--blue);border-color:var(--blue)}
.tk-check.ro{border-color:var(--line)}
.tk-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left;background:none;border:0;padding:0;color:inherit}
.tk-title{font-weight:700;font-size:15px;overflow-wrap:anywhere}
.tk-sub,.tk-note{font-size:13px;color:var(--ink2);overflow-wrap:anywhere;white-space:pre-wrap}
.tk-meta{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:12px;color:var(--muted)}
.tk-due{font-weight:700;color:var(--blue)}
.tk-due.od{color:var(--red)}
.tk-who{font-weight:600;color:var(--ink2)}
.tk-edit,.tk-del{background:none;border:0;color:var(--blue);font-weight:700;font-size:13px;padding:4px 6px}
.tk-del{color:var(--muted);font-weight:600;font-size:12px;margin-left:auto}
.tk-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.tk-sec h3{display:flex;align-items:center;gap:8px}
.btn.sm{padding:7px 12px;font-size:14px}
.btn.danger{color:var(--red);border-color:#f3b7b9;background:#fff}
.tk-form{display:flex;flex-direction:column;gap:10px;border:1px solid var(--blue-soft);background:#f8f8ff;border-radius:12px;padding:12px;margin:0 0 10px}
.tk-form label,.tk-filters label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;color:var(--ink2)}
.tk-form input,.tk-form select,.tk-form textarea,.tk-filters select,.tk-composer textarea,.tk-ment{font:inherit;font-size:16px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:#fff;color:var(--ink);width:100%}
.tk-f-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tk-f-btns{display:flex;gap:8px;flex-wrap:wrap}
.tk-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:0 0 12px}
.tk-filters label{min-width:140px}
.tk-filters label.tk-od{flex-direction:row;align-items:center;gap:6px;min-width:0;padding-bottom:10px}
.tk-filters label.tk-od input{width:18px;height:18px}
.tk-msg{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px;width:100%}
.tk-mtop{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tk-mtop b{font-size:14px}
.tk-n{margin-left:auto;background:var(--mag);color:#fff;border-radius:999px;font-size:11px;font-weight:800;padding:1px 7px}
.pill.mag{background:var(--mag-soft);color:var(--mag)}
.tk-mlast{font-size:13px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-when{font-size:11px;color:var(--muted)}
.tk-msgs-list{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto;padding:2px 2px 6px;margin-bottom:8px}
.tk-m{max-width:88%;align-self:flex-start;background:var(--bg);border-radius:14px 14px 14px 4px;padding:8px 11px}
.tk-m.mine{align-self:flex-end;background:var(--blue-soft);border-radius:14px 14px 4px 14px}
.tk-mh{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:12px}
.tk-mh b{font-size:13px}
.tk-role{color:var(--mag);font-weight:700;font-size:11px}
.tk-mb{font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}
.tk-at{color:var(--mag);font-weight:700}
.tk-composer{display:flex;flex-direction:column;gap:8px}
.tk-composer textarea{resize:vertical;min-height:52px}
.tk-crow{display:flex;gap:8px;align-items:center}
.tk-mention{display:flex;align-items:center;gap:4px;flex:1;min-width:0;color:var(--mag);font-weight:800}
.tk-ment{font-size:15px;padding:8px}
.tk-crow .btn{flex:0 0 auto;padding:10px 20px}
.talk-box .tk-sec{margin:0}
.talk-box .tk-sec h3{font-size:15px;margin-bottom:8px}
@media (min-width:900px){.tk-m{max-width:75%}}

.tk-dash{margin:12px 0;border:1px solid #e3e3f0;border-radius:12px;background:#fff;padding:6px 12px}
.tk-dash>summary{cursor:pointer;font-weight:700;padding:8px 0;list-style:revert}
.tk-dash>summary .c{background:#0309F6;color:#fff;border-radius:10px;padding:1px 8px;font-size:12px;margin-left:4px}

/* + New project (Oct 26) */
.newproj-line{display:flex;align-items:center;gap:12px;width:100%;margin:2px 0 14px;padding:12px 14px;border:2px dashed var(--blue);border-radius:var(--r);background:var(--blue-soft);color:var(--ink);text-align:left;cursor:pointer;font:inherit}
.newproj-line .np-plus{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--blue);color:#fff;font-size:22px;font-weight:800;flex:none}
.newproj-line b{display:block;font-size:16px;color:var(--blue)}
.newproj-line small{display:block;font-size:12.5px;color:var(--ink2)}
.newproj-line:active{transform:scale(.99)}
.np-form{padding:4px 16px 18px}
.np-g{border:1px solid var(--line);border-radius:12px;padding:10px 12px 12px;margin:0 0 12px}
.np-g legend{font-weight:800;font-size:14px;padding:0 6px;color:var(--ink)}
.np-f{display:flex;flex-direction:column;gap:4px;margin:6px 0;flex:1;min-width:0}
.np-f label{font-size:13px;font-weight:600;color:var(--ink2)}
.np-f input,.np-f select,.np-g textarea,#np-add{font:inherit;font-size:16px;padding:10px 12px;border:1px solid #d6d8ea;border-radius:10px;background:#fff;width:100%;box-sizing:border-box}
.np-row{display:flex;gap:10px;flex-wrap:wrap}
.np-row .np-s{flex:0 0 140px}.np-row .np-z{flex:0 0 110px}
.np-g .req{color:var(--mag)}
.np-div{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.np-dv{display:flex;align-items:center;gap:8px;border:2px solid var(--line);border-radius:12px;padding:12px;font-weight:700;cursor:pointer}
.np-dv input{width:18px;height:18px}
.np-dv.np-FiberSeal:has(input:checked){border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.np-dv.np-SuperClean:has(input:checked){border-color:var(--mag);background:var(--mag-soft);color:#8a008d}
.np-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.np-chip{display:inline-flex;align-items:center;gap:6px;background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:5px 6px 5px 12px;font-weight:700;font-size:14px}
.np-chip small{font-weight:600;color:var(--ink2)}
.np-chip button{border:0;background:#fff;color:var(--ink2);width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1}
.np-go{display:flex;gap:8px;justify-content:flex-end;position:sticky;bottom:0;background:#fff;padding:10px 0 4px}
.np-go .btn.primary{min-width:170px}
.np-ex{border:1px solid var(--mag);background:var(--mag-soft);border-radius:12px;padding:10px 12px;margin:0 0 10px;font-size:14px}
.np-ex-go{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.pill.np-pill{background:var(--blue-soft);color:var(--blue)}
.np-form .err{color:var(--red);font-weight:600;min-height:1em}
@media (max-width:560px){.np-div{grid-template-columns:1fr}.np-row .np-s,.np-row .np-z{flex:1 1 40%}}

/* Division colors (Nathan 1:25 PM): two colors only, the same for every login. SuperClean / vacuum = magenta, FiberSeal / waterproofing = royal blue. */
.jc,.srow{border-left-width:6px}
.jc.SuperClean,.srow.SuperClean{border-left:6px solid #D200D6}
.jc.FiberSeal,.srow.FiberSeal{border-left:6px solid #0309F6}
.jc.none,.jc:not(.SuperClean):not(.FiberSeal),.srow.none{border-left:6px solid #B9BCCF}
.jc.SuperClean .ev{background:var(--mag-soft);border-left-color:#D200D6}
.jc.FiberSeal .ev{background:var(--blue-soft);border-left-color:#0309F6}
.badge.SuperClean{background:#D200D6;color:#fff}
.badge.FiberSeal{background:#0309F6;color:#fff}
.div-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:0 0 10px;font-size:13px;font-weight:700;color:var(--ink2)}
.div-legend .dl-i{display:inline-flex;align-items:center;gap:6px}
.div-legend i{display:inline-block;width:6px;height:18px;border-radius:3px}
.div-legend .SuperClean i{background:#D200D6}.div-legend .FiberSeal i{background:#0309F6}

/* Invoiced / Estimate done – not sent (Oct 26) */
.sent-tiles .tile{border-left:4px solid #D200D6}
.sent-tiles .tile.alert .n{color:#D200D6}
.sent-tiles .tile.on{border-color:#0309F6;box-shadow:0 0 0 2px rgba(3,9,246,.25)}
.sent-list{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px;margin:0 0 14px;box-shadow:var(--shadow)}
.sent-list .sl-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px}
.sent-list .list{margin-top:8px}
@media (min-width:900px){.tiles.sent-tiles{grid-template-columns:repeat(4,1fr)}}

/* Dashboard: move jobs column to column (Oct 26, 2:21 PM) */
.jc[draggable="true"]{cursor:grab}
.jc.dragging{opacity:.45}
body.jdrag .col-body{min-height:120px;border-radius:12px;transition:background .15s}
.col-body.drop-on{outline:2px dashed #0309F6;outline-offset:-2px;background:rgba(3,9,246,.06)}
.pill.moved{background:rgba(210,0,214,.10);color:#9a009e}
.pill.reset{background:#fff;border:1px solid #0309F6;color:#0309F6;cursor:pointer;font-weight:700}
.pill.reset:hover{background:#0309F6;color:#fff}

/* Oct 26: phone notifications (bell + panel) */
.push-bell{border:0;background:transparent;line-height:0;padding:7px 8px;margin-left:auto;margin-right:4px;cursor:pointer;position:relative;border-radius:10px}
.push-bell:not(.on)::after{content:"";position:absolute;top:5px;right:6px;width:8px;height:8px;border-radius:50%;background:#D200D6;border:2px solid #fff}
.push-bell.on{opacity:.75}
.me-menu #push-menu{width:100%;margin-bottom:6px}
.push-panel{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.35);display:flex;align-items:flex-start;justify-content:center;padding:70px 14px 14px}
.push-panel[hidden]{display:none}
.push-card{background:#fff;border-radius:16px;max-width:380px;width:100%;padding:16px 16px 12px;box-shadow:0 16px 40px rgba(0,0,0,.25)}
.push-card h3{margin:0 0 8px;color:#0309F6}
.push-card p{margin:0 0 10px}
.push-steps{margin:0 0 8px;padding-left:20px}.push-steps li{margin-bottom:6px}
.push-sample{background:#f4f4ff;border-left:4px solid #D200D6;border-radius:8px;padding:8px 10px}
.push-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:6px}

/* Oct 26: language picker in the account menu */
.me-lang{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 8px}.me-lang .small{width:100%}
.me-lang .btn.on{border-color:#0309F6;color:#0309F6;font-weight:700;background:#f1f2ff}

/* Billed (Oct 29): Suppli-recorded invoices, red UNSENT flag */
.bl-filters{display:flex;gap:10px;margin:4px 0 12px;flex-wrap:wrap}
.bl-f{flex:1 1 150px;max-width:260px;background:#fff;border:2px solid var(--line);border-radius:var(--r);padding:12px 14px;text-align:left;box-shadow:var(--shadow)}
.bl-f .n{display:block;font-size:30px;font-weight:800;line-height:1.05}.bl-f .l{display:block;font-weight:700}.bl-f .s{display:block;font-size:13px;color:var(--muted)}
.bl-f.on{border-color:var(--blue);background:var(--blue-soft)}
.bl-f.red .n{color:var(--red)}.bl-f.red.on{border-color:var(--red);background:var(--red-soft)}
.bl-list{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}
.bl-row{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;background:#fff;border:1px solid var(--line);border-left:6px solid var(--green);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow)}
.bl-row.is-unsent{border-left-color:var(--red);background:#fffafa}
.bl-main{min-width:0;flex:1}.bl-top{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.bl-num{font-size:18px}.bl-amt{font-size:20px;font-weight:800}.bl-cust{font-weight:600;margin-top:2px}.bl-addr{margin:2px 0}
.bl-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}
.bl-st{font-weight:800;border-radius:999px;padding:5px 12px;font-size:14px;white-space:nowrap}
.bl-st.unsent{background:var(--red);color:#fff;letter-spacing:.04em}.bl-st.sent{background:var(--green-soft);color:var(--green)}
.bl-open{font-size:13px;padding:6px 10px}
.bl-empty{background:#fff;border-radius:var(--r);padding:22px;text-align:center;color:var(--muted);box-shadow:var(--shadow)}
@media(max-width:560px){.bl-row{flex-direction:column}.bl-side{flex-direction:row;align-items:center;align-self:stretch;justify-content:space-between}}

/* View as (Oct 29): read-only banner */
.va-bar{position:sticky;top:0;z-index:200;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--red);color:#fff;padding:10px 14px;font-weight:700;font-size:16px}
.va-bar .va-role{font-weight:500;opacity:.9}.va-bar .btn{background:#fff;color:var(--red);border-color:#fff;font-weight:800;padding:7px 16px}
.va-btn{border-color:var(--blue);color:var(--blue)}
body.viewing-as dialog[open]::before{content:"👁 Viewing as someone else · read-only (Exit at the top)";display:block;position:sticky;top:0;z-index:5;background:var(--red);color:#fff;font-weight:700;font-size:14px;padding:8px 12px;margin:-1px -1px 8px;border-radius:10px}

/* Nov 10 (Nathan 8:23 AM "the old cards, the old projects, don't have the summary"): a full-screen overlay for
   an old job's Office/Customer summary preview (ojSumOpen(), app.js) — same .ssum content block summary.js
   already renders for a new project, just given somewhere to sit on top of everything else. */
.oj-sumview{position:fixed;inset:0;z-index:9000;background:#F7F8FC;overflow:auto;-webkit-overflow-scrolling:touch}
.oj-sumtop{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;padding:10px 14px;background:#fff;border-bottom:1px solid #E4E5EF}
@media print{.oj-sumtop{display:none}}

/* Nov 10 (Submit-work photo picker fix, Nathan 12:45 PM 73 Duelk Ave): camera/gallery shortcut next to Submit work, and a flash to draw
   the eye to it when Submit work is tapped with no photo on file yet. */
.sw-addph{ display:inline-flex; gap:6px; margin-left:6px; flex-wrap:wrap; }
.sw-ph-btn{ display:inline-flex; align-items:center; cursor:pointer; font-size:13px; padding:6px 10px; }
.submit-work-cta{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.submit-work-cta.sw-flash{ animation:sw-flash-anim 1.1s ease-in-out 2; border-radius:10px; }
@keyframes sw-flash-anim{ 0%,100%{ background:transparent; } 50%{ background:rgba(255,196,0,0.35); } }

/* Nov 10 soft switch off CompanyCam: "Show old CompanyCam jobs" toggle (admin/office) */
.ss-oldtog-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:8px 0 10px}
.ss-oldtog{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:6px 12px;border:1px solid #d0d5dd;border-radius:999px;background:#fff;color:#344054;font:inherit;font-size:14px;cursor:pointer}
.ss-oldtog .sw{position:relative;width:34px;height:20px;border-radius:10px;background:#d0d5dd;flex:none;transition:background .15s}
.ss-oldtog .sw i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.ss-oldtog.on{border-color:#0309F6;color:#0309F6}
.ss-oldtog.on .sw{background:#0309F6}.ss-oldtog.on .sw i{left:16px}
.ss-oldtog .c{min-width:22px;padding:1px 7px;border-radius:999px;background:#f2f4f7;font-size:12px;font-weight:600;text-align:center}
.ss-oldtog-note{font-size:12px}
