/* Cash Geeks CRM v2 - styles. Plain system fonts on purpose (Allie 2026-09-17: very simple, easy-to-read fonts). */

:root{
  --bg:#F2F5F3; --surface:#FFFFFF; --surface-2:#F7F9F8; --line:#DDE4E0; --line-strong:#C3CEC8;
  --ink:#15201B; --ink-2:#46544D; --ink-3:#6B7972;
  --brand:#2B8636; --brand-fill:#63B946; --brand-soft:#E5F4E1; --on-brand:#0D1F10;
  --ab:#2E62C9; --ab-soft:#E4ECFB; --dispo:#0B807C; --dispo-soft:#DCF1EF; --bc:#7B45C4; --bc-soft:#EFE6FA;
  --ok:#24803A; --ok-soft:#E2F3E5; --warn:#9A5A08; --warn-soft:#FCEFD8; --bad:#BC2F26; --bad-soft:#FBE5E3;
  --soon:#7A6200; --soon-soft:#FBF1BF; --mkt:#C24E0A; --mkt-soft:#FDE3D2;
  --onb:#3F5BA9; --onb-soft:#E6EAF8; --show:#9A3A86; --show-soft:#F7E3F2;
  --side:#14201A; --side-ink:#DCE6E0; --side-dim:#8FA399; --side-line:#26362E; --side-active:#22332A;
  --shadow:0 1px 2px rgba(21,32,27,.06),0 8px 24px -12px rgba(21,32,27,.18);
  --display:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
:root[data-theme="dark"],body[data-cg="dark"]{
  --bg:#0F1613; --surface:#17211C; --surface-2:#1C2822; --line:#2A3932; --line-strong:#3B4E44;
  --ink:#E8EFEA; --ink-2:#B6C4BC; --ink-3:#8C9C93;
  --brand:#86D46E; --brand-soft:#1D3322;
  --ab:#93B5F6; --ab-soft:#1B2A47; --dispo:#62D1CB; --dispo-soft:#12322F; --bc:#C6A6F3; --bc-soft:#2B1F42;
  --ok:#83D293; --ok-soft:#183222; --warn:#F0B45A; --warn-soft:#392910; --bad:#F38B83; --bad-soft:#3D1B18;
  --soon:#F2D45C; --soon-soft:#3B3210; --mkt:#F7A06B; --mkt-soft:#432212;
  --onb:#A7B6F0; --onb-soft:#1F2847; --show:#E69AD3; --show-soft:#3E1A37;
  --side:#0A100D; --side-line:#1D2A24; --side-active:#18251F;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 28px -14px rgba(0,0,0,.7);
}
body[data-cg="light"]{
  --bg:#F2F5F3; --surface:#FFFFFF; --surface-2:#F7F9F8; --line:#DDE4E0; --line-strong:#C3CEC8;
  --ink:#15201B; --ink-2:#46544D; --ink-3:#6B7972;
  --brand:#2B8636; --brand-fill:#63B946; --brand-soft:#E5F4E1; --on-brand:#0D1F10;
  --ab:#2E62C9; --ab-soft:#E4ECFB; --dispo:#0B807C; --dispo-soft:#DCF1EF; --bc:#7B45C4; --bc-soft:#EFE6FA;
  --ok:#24803A; --ok-soft:#E2F3E5; --warn:#9A5A08; --warn-soft:#FCEFD8; --bad:#BC2F26; --bad-soft:#FBE5E3;
  --soon:#7A6200; --soon-soft:#FBF1BF; --mkt:#C24E0A; --mkt-soft:#FDE3D2;
  --onb:#3F5BA9; --onb-soft:#E6EAF8; --show:#9A3A86; --show-soft:#F7E3F2;
  --side:#14201A; --side-ink:#DCE6E0; --side-dim:#8FA399; --side-line:#26362E; --side-active:#22332A;
  --shadow:0 1px 2px rgba(21,32,27,.06),0 8px 24px -12px rgba(21,32,27,.18);
  --display:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--brand-fill);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:.005em}
.num{font-variant-numeric:tabular-nums}

/* ---------- shell ---------- */
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100%}
.side{background:var(--side);color:var(--side-ink);padding:18px 12px 24px;position:sticky;top:env(safe-area-inset-top,0px);align-self:start;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:18px}
.brand{display:flex;align-items:center;gap:8px;padding:2px 8px 0}
.brand svg{flex:none}
.brand img.logo{flex:none;display:block;width:170px;max-width:100%;height:auto}   /* the real logo in the side menu (G 2026-10-18) */
.wordmark{font-family:var(--display);font-weight:700;font-size:22px;line-height:1;letter-spacing:-.01em}
.wordmark b{color:#6CC24A;font-weight:700}.wordmark i{color:#C9D3CD;font-style:normal}
.wordmark small{display:block;font-family:var(--body);font-size:9px;font-weight:600;letter-spacing:.22em;color:#6CC24A;margin-top:3px}
.v2{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.12em;background:#6CC24A;color:#0D1F10;padding:3px 7px;border-radius:3px}
.navgroup{display:flex;flex-direction:column;gap:2px}
.navlabel{font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--side-dim);padding:0 10px 6px}
.nav{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;color:var(--side-ink);padding:8px 10px;border-radius:6px;font-weight:500;font-size:14.5px}
.nav:hover{background:var(--side-active)}
.nav.on{background:var(--side-active);box-shadow:inset 3px 0 0 #6CC24A;color:#fff}
.nav .ct{margin-left:auto;font-size:12px;font-weight:600;color:var(--side-dim);font-variant-numeric:tabular-nums}
.nav .sub{display:block;font-size:11.5px;font-weight:400;color:var(--side-dim);line-height:1.2}
.flow{position:relative}
.flow::before{content:"";position:absolute;left:17px;top:22px;bottom:22px;width:2px;background:var(--side-line)}
.dot{width:16px;height:16px;border-radius:50%;flex:none;border:3px solid var(--side);position:relative;z-index:1}
.dot.ab{background:#5B8DEB}.dot.dispo{background:#2FB5AF}.dot.bc{background:#A678E8}.dot.ok{background:#6CC24A}
.ico{width:16px;text-align:center;flex:none;opacity:.75;font-size:13px}

.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:12px clamp(16px,3vw,32px);background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:env(safe-area-inset-top,0px);z-index:20;flex-wrap:wrap}
.search{flex:1 1 220px;min-width:0;display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px 12px;color:var(--ink-3)}
.search input{border:0;background:none;outline:0;width:100%;min-width:0;color:var(--ink)}
.viewas{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-3)}
.viewas select{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 8px;color:var(--ink)}
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:var(--surface);border-radius:7px;padding:8px 13px;font-weight:600;font-size:14px;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn.primary{background:var(--brand-fill);border-color:var(--brand-fill);color:var(--on-brand)}
.btn .drafttag{font-weight:400;font-size:12px;opacity:.85}
.btn.primary:hover{filter:brightness(1.05)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn.ghost{border-color:transparent;background:none;color:var(--ink-2)}
.btn.stage-ab{background:var(--ab);border-color:var(--ab);color:var(--surface)}
.btn.stage-dispo{background:var(--dispo);border-color:var(--dispo);color:var(--surface)}
.btn.stage-bc{background:var(--bc);border-color:var(--bc);color:var(--surface)}
.mockbar{background:var(--warn-soft);color:var(--warn);font-size:13px;font-weight:500;padding:7px clamp(16px,3vw,32px);border-bottom:1px solid var(--line)}
.view{padding-inline:clamp(16px,3vw,32px);padding-block:24px 56px;display:flex;flex-direction:column;gap:22px;max-width:1900px;width:100%}   /* was 1500px: the list tables left a blank strip on the right (Allie 2026-09-24) */

/* ---------- atoms ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px}
.card>.hd{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line)}
.card>.hd h3{font-size:17px;font-weight:600}
.card>.hd .r{margin-left:auto;display:flex;gap:8px;align-items:center}
.card>.bd{padding:14px 16px}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.muted{color:var(--ink-3)}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}
.chip.ab{background:var(--ab-soft);color:var(--ab);border-color:transparent}
.chip.dispo{background:var(--dispo-soft);color:var(--dispo);border-color:transparent}
.chip.bc{background:var(--bc-soft);color:var(--bc);border-color:transparent}
.chip.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.chip.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.chip.bad{background:var(--bad-soft);color:var(--bad);border-color:transparent}
.chip.soon{background:var(--soon-soft);color:var(--soon);border-color:transparent}
.chip.mkt{background:var(--mkt-soft);color:var(--mkt);border-color:transparent}
.chip.onb{background:var(--onb-soft);color:var(--onb);border-color:transparent}   /* Onboarding on the Dispo sheet */
.chip.show{background:var(--show-soft);color:var(--show);border-color:transparent} /* Showing on the Dispo sheet */
.av{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:10.5px;font-weight:700;color:#fff;background:hsl(var(--h) 42% 40%);flex:none;letter-spacing:.02em}
.av.lg{width:32px;height:32px;font-size:12.5px}
.who{display:inline-flex;align-items:center;gap:6px;font-weight:500;white-space:nowrap}
.linkish{background:none;border:0;padding:0;text-align:left;font-weight:600;color:var(--ink)}
.linkish:hover{color:var(--brand);text-decoration:underline}
.pagehead{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.pagehead h1{font-size:34px;font-weight:700;line-height:1.05}
.pagehead p{margin:4px 0 0;color:var(--ink-2);max-width:65ch}
.pagehead .r{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}

/* ---------- home ---------- */
.flowstrip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.fs{position:relative;padding:16px 18px 16px 26px;border:0;background:none;text-align:left;display:flex;flex-direction:column;gap:3px;border-right:1px solid var(--line)}
.fs:last-child{border-right:0}
.fs:hover{background:var(--surface-2)}
.fs::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c)}
.fs::after{content:"";position:absolute;right:-9px;top:50%;width:16px;height:16px;background:var(--surface);border-top:1px solid var(--line);border-right:1px solid var(--line);transform:translateY(-50%) rotate(45deg);z-index:2}
.fs:hover::after{background:var(--surface-2)}
.fs:last-child::after{display:none}
.fs .nm{font-family:var(--display);font-weight:600;font-size:16px;color:var(--c)}
.fs .big{font-family:var(--display);font-weight:700;font-size:32px;line-height:1}
.fs .big small{font-family:var(--body);font-size:13px;font-weight:500;color:var(--ink-3);margin-left:6px}
.fs .ln{font-size:13px;color:var(--ink-2)}
.cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:22px;align-items:start}
.att{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-bottom:1px solid var(--line)}
.att:last-child{border-bottom:0}
.att .bar{width:4px;align-self:stretch;border-radius:2px;background:var(--warn);flex:none}
.att.bad .bar{background:var(--bad)}
.att .tx{flex:1;min-width:0}
.att .tx .why{color:var(--ink-2);font-size:14px}
.att .meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.cl{display:flex;gap:12px;align-items:center;padding:11px 16px;border-bottom:1px solid var(--line)}
.cl:last-child{border-bottom:0}
.datebox{width:46px;flex:none;text-align:center;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--surface-2)}
.datebox b{display:block;font-size:10px;letter-spacing:.12em;background:var(--ink);color:var(--surface);padding:1px 0;font-weight:600}
.datebox span{display:block;font-family:var(--display);font-weight:700;font-size:20px;line-height:1.25}
.feed{display:flex;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line)}
.feed:last-child{border-bottom:0}
.feed p{margin:2px 0 0;color:var(--ink-2);font-size:14px}
.score{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.score div{background:var(--surface);padding:12px 16px}
.score b{display:block;font-family:var(--display);font-size:22px;font-weight:700}

/* ---------- lists ---------- */
.filters{display:flex;gap:6px;flex-wrap:wrap}
.fbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 13px;font-size:13.5px;font-weight:500;color:var(--ink-2)}
.fbtn.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.scroll{overflow-x:auto}
table.list{width:100%;min-width:940px;border-collapse:collapse}
table.list th{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
table.list td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}
table.list tr:last-child td{border-bottom:0}
table.list tbody tr{cursor:pointer}
table.list tbody tr:hover{background:var(--surface-2)}
.addr{font-family:var(--display);font-weight:600;font-size:17px;line-height:1.15}
.sub{font-size:12.5px;color:var(--ink-3)}
.latest-cell{max-width:300px;font-size:14px;color:var(--ink-2)}
.latest-cell .sub{display:flex;align-items:center;gap:5px;margin-top:3px}
.stale{width:7px;height:7px;border-radius:50%;background:var(--bad);display:inline-block}
.fresh{width:7px;height:7px;border-radius:50%;background:var(--ok);display:inline-block}
.funnel{display:flex;gap:4px}
.funnel span{font-size:12.5px;font-weight:600;padding:1px 7px;border-radius:4px;background:var(--dispo-soft);color:var(--dispo)}

/* ---------- deal page ---------- */
.crumb{background:none;border:0;padding:0;color:var(--ink-3);font-weight:500;font-size:14px;align-self:flex-start}
.crumb:hover{color:var(--ink)}
.snap{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.snap-top{display:flex;gap:16px;align-items:flex-start;padding:18px 20px 14px;flex-wrap:wrap}
.snap-top h1{font-size:38px;font-weight:700;line-height:1}
.snap-top .where{color:var(--ink-2);margin-top:5px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.snap-top .r{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:0 20px 16px}
.step{border-radius:8px;padding:9px 12px;border:1px solid var(--line);background:var(--surface-2);min-width:0}
.step .t{display:flex;align-items:center;gap:6px;font-family:var(--display);font-weight:600;font-size:15px;color:var(--ink-3)}
.step .s{font-size:12.5px;color:var(--ink-3);margin-top:1px}
.step.done .t{color:var(--ink-2)}
.step.active{border-color:var(--c);background:var(--surface)}
.step.active .t{color:var(--c)}
.step.current{background:var(--c);border-color:var(--c)}
.step.current .t,.step.current .s{color:var(--surface)}
.step .here{margin-left:auto;font-family:var(--body);font-size:10px;font-weight:700;letter-spacing:.12em}
.three{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr);border-top:1px solid var(--line)}
.three>div{padding:15px 20px;border-right:1px solid var(--line);min-width:0}
.three>div:last-child{border-right:0}
.three .big{font-size:16.5px;line-height:1.4;margin:6px 0 8px}
.three .by{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-3);flex-wrap:wrap}
.upd{display:flex;gap:6px;margin-top:11px}
.upd input{flex:1;min-width:0;border:1px solid var(--line);border-radius:7px;padding:7px 10px;background:var(--surface-2)}
.flag{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:5px 0}
.flag i{font-style:normal;width:18px;height:18px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px;font-weight:700;flex:none;margin-top:1px}
.flag.bad i{background:var(--bad-soft);color:var(--bad)}.flag.warn i{background:var(--warn-soft);color:var(--warn)}.flag.ok i{background:var(--ok-soft);color:var(--ok)}
.strip{display:flex;border-top:1px solid var(--line);background:var(--surface-2);overflow-x:auto}
.strip>div{padding:11px 20px;border-right:1px solid var(--line);flex:1 0 auto;min-width:132px}
.strip>div:last-child{border-right:0}
.strip b{display:block;font-family:var(--display);font-size:19px;font-weight:700;line-height:1.2}
.strip .dn{color:var(--ink-3)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto}
.tab{background:none;border:0;padding:10px 16px;font-weight:600;color:var(--ink-3);border-bottom:3px solid transparent;white-space:nowrap;display:flex;gap:7px;align-items:center}
.tab:hover{color:var(--ink)}
.tab.on{color:var(--ink);border-bottom-color:var(--c,var(--brand-fill))}
.tab .pip{width:8px;height:8px;border-radius:50%;background:var(--c)}
.dealbody{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}
.stack{display:flex;flex-direction:column;gap:18px;min-width:0}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1px;background:var(--line)}
.fact{background:var(--surface);padding:12px 16px;min-width:0}
.fact b{display:block;font-size:16.5px;font-weight:600;margin-top:2px;overflow-wrap:anywhere}
.fact .sub{margin-top:2px}
.fact.miss b{color:var(--bad);font-weight:500}
.chk{display:flex;gap:11px;align-items:flex-start;padding:10px 16px;border-bottom:1px solid var(--line);width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left}
.chk:last-child{border-bottom:0}
.chk:hover{background:var(--surface-2)}
.box{width:20px;height:20px;border-radius:5px;border:2px solid var(--line-strong);flex:none;display:grid;place-items:center;font-size:13px;font-weight:700;color:transparent;margin-top:1px}
.chk.done .box{background:var(--ok);border-color:var(--ok);color:var(--surface)}
.chk.done .lbl{color:var(--ink-3);text-decoration:line-through}
.chk.cur{background:var(--brand-soft)}
.chk .lbl{flex:1;min-width:0}
.prog{height:6px;border-radius:3px;background:var(--line);overflow:hidden;width:120px}
.prog i{display:block;height:100%;background:var(--ok)}
.person{display:flex;gap:10px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line)}
.person:last-child{border-bottom:0}
.person .acts{margin-left:auto;display:flex;gap:4px}
.iconbtn{width:30px;height:30px;border-radius:6px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;font-size:13px}
.offer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px 16px;border-bottom:1px solid var(--line);align-items:center}
.offer:last-child{border-bottom:0}
.offer .amt{font-family:var(--display);font-weight:700;font-size:21px}
.fun4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line)}
.fun4 div{background:var(--surface);padding:12px 16px}
.fun4 b{display:block;font-family:var(--display);font-size:26px;font-weight:700;line-height:1.1}
.empty{padding:26px 20px;text-align:center;color:var(--ink-3)}
.empty h3{color:var(--ink-2);font-size:18px;margin-bottom:4px}
.tl{display:flex;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line)}
.tl:last-child{border-bottom:0}
.tl time{width:92px;flex:none;font-size:12.5px;color:var(--ink-3);padding-top:2px}
table.plain{width:100%;border-collapse:collapse;min-width:520px}
table.plain th,table.plain td{padding:9px 16px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}
table.plain th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
table.plain td.r,table.plain th.r{text-align:right}

/* ---------- panel + toast ---------- */
.scrim{position:fixed;inset:0;background:rgba(10,16,13,.5);z-index:40;display:flex;justify-content:flex-end}
.panel{background:var(--surface);width:min(540px,100%);height:100%;overflow-y:auto;display:flex;flex-direction:column;box-shadow:-20px 0 40px -20px rgba(0,0,0,.4)}
.panel .ph{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;position:sticky;top:0;background:var(--surface);z-index:1}
.panel .ph h2{font-size:24px}
.panel .pb{padding:18px 22px;display:flex;flex-direction:column;gap:22px;flex:1}
.panel .pf{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;position:sticky;bottom:0;background:var(--surface)}
.sect h3{font-size:16px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.sect h3 span{width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--surface);display:grid;place-items:center;font-family:var(--body);font-size:12px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.fld.full{grid-column:1/-1}
.fld label{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.fld input,.fld select{border:1px solid var(--line-strong);border-radius:7px;padding:9px 10px;background:var(--surface);width:100%;min-width:0}
.fld .hint{font-size:12.5px;color:var(--ink-3)}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{border:1px solid var(--line-strong);background:var(--surface);border-radius:7px;padding:8px 12px;font-weight:500;font-size:14px}
.seg button.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.note{background:var(--brand-soft);border-radius:8px;padding:11px 14px;font-size:14px;color:var(--ink-2)}
#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:8px;font-weight:500;font-size:14px;z-index:60;max-width:calc(100% - 32px);box-shadow:var(--shadow)}
.about li{margin-bottom:9px;max-width:72ch}
.about ol,.about ul{padding-left:20px;margin:0}

@media (max-width:1100px){.dealbody{grid-template-columns:minmax(0,1fr)}.cols{grid-template-columns:minmax(0,1fr)}}
/* Phone and tablet (G 2026-10-17, "optimize the mobile version"): the menu is a bar with the logo and a Menu
   button; the button drops the whole menu down over the page (every screen, with its count), a pick or a tap
   outside closes it. Before this the menu was a sideways strip that hid most of itself off the right edge. */
.menubtn{display:none}
.menuscrim{display:none}
@media (max-width:860px){
  .app{display:block}
  .app.sidehidden>.side{display:flex}
  .side{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:0;overflow:visible;padding:8px 12px}
  .brand{flex:1 1 auto;padding:0}.wordmark small{display:none}.brand img.logo{width:124px}
  .menubtn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--side-line);background:none;color:var(--side-ink);border-radius:8px;padding:7px 12px;font-weight:600;font-size:14.5px;min-height:38px}
  .menubtn span{font-size:16px;line-height:1}
  .app.menuopen .menubtn{background:var(--side-active);color:#fff}
  .side .navgroup{display:none;width:100%;flex-direction:column;gap:2px}
  .side .navgroup.flow::before{display:none}
  .app.menuopen .side .navgroup{display:flex;margin-top:10px}
  .app.menuopen .side{box-shadow:0 14px 34px rgba(0,0,0,.35);padding-bottom:14px;max-height:100vh;max-height:100dvh;overflow-y:auto}
  .nav{padding:10px 10px;font-size:16px}.navlabel{display:block}
  .sidehide,.sideshow{display:none !important}
  .menuscrim{position:fixed;inset:0;z-index:35;background:rgba(10,16,14,.4)}
  .app.menuopen .menuscrim{display:block}
  .top{position:static}
  .flowstrip{grid-template-columns:repeat(2,minmax(0,1fr))}.fs::after{display:none}.fs{border-bottom:1px solid var(--line)}
  .three{grid-template-columns:minmax(0,1fr)}.three>div{border-right:0;border-bottom:1px solid var(--line)}
  .stepper{grid-template-columns:repeat(2,minmax(0,1fr))}
  .score{grid-template-columns:repeat(2,minmax(0,1fr))}
  .snap-top h1{font-size:30px}.pagehead h1{font-size:28px}
  .grid2{grid-template-columns:minmax(0,1fr)}
  .viewas span{display:none}
}
@media (prefers-reduced-motion:no-preference){.btn,.nav,.fbtn,.tab{transition:background .12s,border-color .12s,color .12s}}

/* ---------- v2 design passes 3-9 ---------- */

/* ===== revision 2 additions ===== */
body{font-size:15.5px}
.stepper{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
.lead{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.lead>div{padding:16px 20px 18px;border-right:1px solid var(--line);min-width:0}
.lead>div:last-child{border-right:0}
.lead-big{font-family:var(--display);font-weight:700;font-size:30px;line-height:1.08;margin:6px 0 6px;overflow-wrap:anywhere}
.lead-big.md{font-size:23px;line-height:1.15}
.lead-sub{font-size:14px;color:var(--ink-2)}
.days{display:inline-flex;align-items:baseline;gap:5px;font-family:var(--display);font-weight:700;font-size:17px;padding:2px 11px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);margin-left:8px;vertical-align:middle;white-space:nowrap}
.days.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.days.bad{background:var(--bad-soft);color:var(--bad);border-color:transparent}
.days.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.runway{height:8px;border-radius:4px;background:var(--line);margin-top:10px;overflow:hidden}
.runway i{display:block;height:100%;background:var(--c,var(--brand-fill))}
.runway-lbl{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-3);margin-top:4px}
.callrow{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
/* HOA estoppel needed? (2026-10-16): the block under the title company, and the "not answered" chip that is a button */
.lead .estop{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.lead .estop .lead-sub{margin-top:4px}
.lead .estop .esthint{margin-top:8px;padding:8px 10px;border-radius:8px;background:var(--surface-2)}
.lead .estop .esthint .eyebrow{display:block;margin-bottom:2px}
button.chip.estask{cursor:pointer;font-family:inherit;line-height:inherit;background:var(--warn-soft);color:var(--warn);border-color:transparent}
button.chip.estask:hover{text-decoration:underline}
.fu{display:flex;gap:9px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}
.fu:last-child{border-bottom:0}
.fu .nm{font-weight:600}
.fu .acts{margin-left:auto;display:flex;gap:4px;flex:none}

.latest2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line);background:var(--surface-2)}
.lane{padding:14px 20px 16px;border-right:1px solid var(--line);min-width:0}
.lane:last-child{border-right:0}
.lane-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lane p{margin:7px 0 6px;font-size:15.5px;line-height:1.45}
.bot{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--ink);color:var(--surface);font-size:11px;font-weight:700;flex:none}
.bot.lg{width:32px;height:32px;font-size:13px}

.dealgrid{display:grid;grid-template-columns:minmax(300px,370px) minmax(0,1fr) 300px;gap:20px;align-items:start}
.todo-add{display:flex;gap:6px;padding:10px 16px;border-top:1px solid var(--line)}
.todo-add input{flex:1;min-width:0;border:1px solid var(--line);border-radius:7px;padding:7px 10px;background:var(--surface-2)}
.chk .due{flex:none;font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.chk .due.warn{color:var(--warn);font-weight:600}.chk .due.bad{color:var(--bad);font-weight:600}
.donefold{padding:9px 16px;border-top:1px solid var(--line);background:none;border-left:0;border-right:0;border-bottom:0;width:100%;text-align:left;color:var(--ink-3);font-weight:500;font-size:14px}
.donefold:hover{color:var(--ink)}

.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(204px,1fr);gap:12px;overflow-x:auto;padding:14px 16px 16px;align-items:start}
.bcol{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;min-width:0}
.bcol-h{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-family:var(--display);font-weight:600;font-size:15.5px}
.bcol-h .n{margin-left:auto;font-family:var(--body);font-size:12.5px;font-weight:600;color:var(--ink-3)}
.bcol-h small{display:block;font-family:var(--body);font-weight:400;font-size:12px;color:var(--ink-3)}
.bcol-b{display:flex;flex-direction:column;gap:8px;padding:10px}
.bcard{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 11px;display:flex;flex-direction:column;gap:5px;text-align:left;width:100%}
button.bcard:hover{border-color:var(--ink-3)}
.bcard .nm{font-weight:600;line-height:1.2}
.bcard .amt{font-family:var(--display);font-weight:700;font-size:20px;line-height:1.1}
.bcard .ln{font-size:13px;color:var(--ink-2)}
.bcard .acts{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}
.bcard.best{border-color:var(--ok);box-shadow:inset 0 0 0 1px var(--ok)}
.bcol-empty{font-size:13px;color:var(--ink-3);padding:6px 2px}
.viewtog{display:inline-flex;border:1px solid var(--line-strong);border-radius:7px;overflow:hidden}
.viewtog button{border:0;background:var(--surface);padding:6px 12px;font-weight:600;font-size:13.5px;color:var(--ink-2)}
.viewtog button.on{background:var(--ink);color:var(--surface)}

.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.tile{position:relative;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:15px 16px 14px 20px;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.tile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--c)}
button.tile:hover{border-color:var(--ink-3)}
.tile .nm{font-family:var(--display);font-weight:600;font-size:16.5px;color:var(--c)}
.tile .big{font-family:var(--display);font-weight:700;font-size:40px;line-height:1}
.tile .big small{font-family:var(--body);font-size:13.5px;font-weight:500;color:var(--ink-3);margin-left:7px}
.tile .kv{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;color:var(--ink-2);border-top:1px dashed var(--line);padding-top:5px;margin-top:5px}
.tile .kv b{color:var(--ink);font-variant-numeric:tabular-nums}
.spark{display:inline-flex;align-items:flex-end;gap:2px;height:20px;vertical-align:middle}
.spark i{display:block;width:6px;background:var(--line-strong);border-radius:1px}
.spark i:last-child{background:var(--ink)}
.sdot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--ok);margin-right:6px}
.sdot.off{background:var(--bad)}.sdot.near{background:var(--warn)}

.ws-h{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ws-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;padding:9px 16px;border-bottom:1px solid var(--line)}
.ws-row:last-child{border-bottom:0}
.ws-row .was{font-size:12.5px;color:var(--ink-3)}
.tri{display:inline-flex;border:1px solid var(--line-strong);border-radius:7px;overflow:hidden}
.tri button{border:0;border-right:1px solid var(--line);background:var(--surface);padding:6px 10px;font-size:13px;font-weight:500;color:var(--ink-2)}
.tri button:last-child{border-right:0}
.tri button.on.req{background:var(--ok);color:var(--surface)}
.tri button.on.later{background:var(--ink-3);color:var(--surface)}
.tri button.on.no{background:var(--bad);color:var(--surface)}
.savebar{position:sticky;bottom:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;box-shadow:var(--shadow)}
textarea.copybox{width:100%;min-height:120px;border:1px solid var(--line-strong);border-radius:8px;padding:10px;background:var(--surface-2);font-size:13px}
.lockbox{border:1px dashed var(--line-strong);border-radius:10px;padding:14px 16px;color:var(--ink-3);font-size:14px}
.pathpick{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px} /* four paths since 2026-10-12 */
.pathpick button{border:1px solid var(--line-strong);background:var(--surface);border-radius:9px;padding:11px 12px;text-align:left;display:flex;flex-direction:column;gap:2px}
.pathpick button b{font-family:var(--display);font-size:16px}
.pathpick button span{font-size:12.5px;color:var(--ink-3)}
.pathpick button.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);background:var(--surface-2)}
.miss-list li{margin-bottom:8px;max-width:74ch}

@media (max-width:1280px){.dealgrid{grid-template-columns:minmax(280px,340px) minmax(0,1fr)}.dealgrid>.col-c{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}}
@media (max-width:1100px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  .lead,.latest2{grid-template-columns:minmax(0,1fr)}
  .lead>div,.lane{border-right:0;border-bottom:1px solid var(--line)}
  .dealgrid{grid-template-columns:minmax(0,1fr)}
  .dealgrid>.col-c{order:-1;display:flex;flex-direction:column}
  .stepper{grid-auto-flow:row}
  .pathpick{grid-template-columns:minmax(0,1fr)}
  .ws-row{grid-template-columns:minmax(0,1fr)}
  .lead-big{font-size:26px}
}
@media (max-width:520px){.tiles{grid-template-columns:minmax(0,1fr)}}

.dealgrid.two{grid-template-columns:minmax(0,1fr) 300px}
.span2{grid-column:span 2}
@media (max-width:1280px){.dealgrid.two{grid-template-columns:minmax(0,1fr)}.dealgrid.two>.col-c{grid-column:auto}}
@media (max-width:860px){.span2{grid-column:auto}}

/* ===== revision 3: plain, easy-to-read type ===== */
body{font-size:16px;line-height:1.5}
h1,h2,h3{letter-spacing:0}
.eyebrow,table.list th,table.plain th,.navlabel{text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:600}
.navlabel{font-size:12.5px}
.sub{font-size:13.5px}
.chip{font-size:13px}
.nav{font-size:15.5px}.nav .sub{font-size:12.5px}
.wordmark{letter-spacing:0;font-size:21px}
.pagehead h1{font-size:32px;letter-spacing:-.01em}
.snap-top h1{font-size:34px;letter-spacing:-.01em}
.addr{font-size:17px;font-weight:700;line-height:1.25}
.lead-big{font-size:27px;letter-spacing:-.01em}.lead-big.md{font-size:21px;line-height:1.25}
.lead-sub{font-size:14.5px}
.days{font-size:15.5px}
.tile .big{font-size:38px}.tile .nm{font-size:16px;font-weight:700}.tile .kv{font-size:14.5px}
.card>.hd h3{font-size:17.5px;font-weight:700}
.bcol-h{font-size:16px;font-weight:700}.bcol-h small{font-size:13px}
.bcard .ln{font-size:14px}.bcard .amt{font-size:20px}
.fact b{font-size:16.5px}
.strip b{font-size:18px}
.step .t{font-size:15.5px;font-weight:700}.step .s{font-size:13.5px}
.step .here{letter-spacing:0;font-size:12.5px;font-weight:700}
.tab{font-size:15.5px}
.btn{font-size:15px}.btn.sm{font-size:14px}
.fbtn{font-size:14.5px}
.latest-cell{font-size:15px}
.mockbar{font-size:14px}
.help{font-size:14.5px;color:var(--ink-2);margin:0;max-width:80ch}
.help{display:none}   /* the explanation paragraphs under screens and sheets are hidden (G 2026-10-17: "there a lot of verbiage and explanation... we dont need any of that"); the words stay in the code so they can come back */
button.step{text-align:left;font:inherit;color:inherit;cursor:pointer}
button.step:hover{border-color:var(--c)}
.step.open{background:var(--c);border-color:var(--c)}
.step.open .t,.step.open .s{color:var(--surface)}
.step.open.viewing{box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--c)}
.guard{border-top:1px solid var(--line);background:var(--warn-soft)}
.guard-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:12px 20px 0}
.guard-h b{font-size:16px}
.guard-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:10px 20px 16px}
.gcell{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-width:0;border-left:5px solid var(--line-strong)}
.gcell.ok{border-left-color:var(--ok)}.gcell.warn{border-left-color:var(--warn)}.gcell.bad{border-left-color:var(--bad)}
.gcell b{display:block;font-size:18px;line-height:1.25;margin:2px 0 3px}
.gcell.bad b{color:var(--bad)}.gcell.warn b{color:var(--warn)}.gcell.ok b{color:var(--ok)}
.gcell p{margin:0;font-size:14px;color:var(--ink-2);line-height:1.4}
@media (max-width:1100px){.guard-g{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  .search{flex:1 1 100%}
  .board{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:minmax(0,1fr);overflow-x:visible}
  .bcol.empty .bcol-b{display:none}.bcol.empty .bcol-h{border-bottom:0}
  .guard-g{grid-template-columns:minmax(0,1fr)}
}

/* ===== revision 4: the Dispo sheet ===== */
.callout{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:var(--brand-soft);border:1px solid var(--line);border-radius:10px;padding:13px 16px}
.callout>div{flex:1 1 320px;min-width:0}
.auditbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:14.5px}
.sheetwrap{overflow-x:auto;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)} /* the whole sheet shows; the page scrolls, never a box inside it (Allie 2026-10-06) */
table.sheet{border-collapse:separate;border-spacing:0;font-size:14px;width:max-content;min-width:100%}
table.sheet th,table.sheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 9px;vertical-align:middle;background:var(--surface);white-space:nowrap}
table.sheet thead{position:sticky;top:0;z-index:5}
table.sheet th{font-weight:600;font-size:13px;text-align:center;white-space:normal;min-width:86px;max-width:124px;line-height:1.25;background:var(--surface-2)}
table.sheet th.band{background:color-mix(in srgb,var(--b) 16%,var(--surface));font-size:14.5px;font-weight:700;text-align:center;border-bottom:2px solid var(--b);white-space:nowrap;max-width:none} /* centred over their columns (Allie 2026-10-09) */
table.sheet th.band .own{font-weight:500;font-size:12.5px;color:var(--ink-2);margin-left:8px}
table.sheet .fz{position:sticky;z-index:3}
table.sheet .fz1{left:0;min-width:132px;width:132px}
table.sheet .fz2{left:132px;min-width:204px;box-shadow:2px 0 0 var(--line-strong);text-align:left;white-space:normal}
table.sheet thead .fz{z-index:6;background:var(--surface-2)}
table.sheet th.corner{text-align:center;font-size:14.5px;font-weight:700;vertical-align:middle}
table.sheet th.step{min-width:74px;max-width:110px} /* short step headings keep the columns narrow (Allie 2026-10-09) */
table.sheet thead.floating tr.colhead th{box-shadow:0 3px 6px color-mix(in srgb,var(--ink) 14%,transparent)} /* the header rows ride along as the page scrolls */
table.sheet td.num{text-align:center}
table.sheet td.wrap{white-space:normal;min-width:150px;max-width:230px;line-height:1.3}
table.sheet tbody tr:hover td{background-image:linear-gradient(color-mix(in srgb,var(--ink) 4%,transparent),color-mix(in srgb,var(--ink) 4%,transparent))}
table.sheet tr.grp td .gnote{font-weight:500;color:var(--ink-2)}
/* Dispo tab sub-views: Marketing set-up | Buyers and offers */
.subtabs{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 14px}
/* Dispo > Offers: TJ's follow-up sheet. A band per property, a line per buyer, tinted by where they are. */
table.offers{table-layout:fixed;width:100%}   /* fixed: the property band's colspan must not squeeze the columns; no min-width - it fits the window (Allie 2026-09-24) */
table.offers tbody tr{cursor:default}
table.offers tbody tr:hover{background:inherit}
table.offers td{padding:9px 12px;vertical-align:top}
table.offers tr.oprop td{background:color-mix(in srgb,var(--b) 14%,var(--surface));border-top:2px solid var(--b);border-bottom:1px solid var(--b);padding:9px 12px}
table.offers .oprop-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
/* the property's summary (type, price, days on market, buyers, offers): its own line under the address, each fact
   spaced out, instead of wrapping beside the chip (G 2026-10-19: "all jumbled up") */
table.offers .oprop-facts{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 0;margin-top:5px;font-size:13px}
table.offers .oprop-facts .of{white-space:nowrap}
table.offers .oprop-facts .sep{margin:0 12px;color:var(--ink-3)}
table.offers tr.oprop.collapsed td{border-bottom:2px solid var(--b)}
table.offers .oprop-h .acts{display:flex;gap:4px;flex:none}
/* the six facts TJ works off, one labelled line under the address of every band (G 2026-10-19) */
table.offers .oprop-info{display:flex;gap:4px 18px;flex-wrap:wrap;margin-top:6px;font-size:13px}
table.offers .oprop-info .oi{display:inline-flex;gap:6px;align-items:baseline;min-width:0}
table.offers .oprop-info .oi .eyebrow{white-space:nowrap}
table.offers .oprop-info .oi b{font-weight:600;overflow-wrap:anywhere}
table.offers .oname .nm{font-weight:700;font-size:15px;white-space:normal}
table.offers .oname .onm{display:flex;justify-content:space-between;align-items:flex-start;gap:6px}table.offers .oname .onm .bx{flex:none}   /* the × beside the name (G 2026-10-19) */
table.offers .ophone{white-space:nowrap}
table.offers .ophone a{font-weight:600;color:var(--ink)}
table.offers .ophone .linkish.small{display:block;margin-top:2px}
table.offers .olog{overflow-wrap:anywhere}
table.offers .oline{font-size:13.5px;line-height:1.35;padding:1px 0}
table.offers .oline b{display:inline-block;min-width:54px;margin-right:6px;color:var(--ink-2);font-weight:600}
table.offers .oline.next b{color:inherit}
table.offers .oacts .acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
table.offers tr.orow.t-won td{background:var(--ok-soft)}
table.offers tr.orow.t-offer td{background:var(--warn-soft)}
table.offers tr.orow.t-passed td{background:var(--bad-soft)}
table.offers tr.orow.t-passed .nm,table.offers tr.orow.t-passed .olog{color:var(--ink-2)}
.olegend{display:inline-flex;gap:6px;align-items:center;margin-left:auto}
.olegend i{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid var(--line-strong);margin-left:8px}
.olegend i.t-won{background:var(--ok-soft)}.olegend i.t-offer{background:var(--warn-soft)}.olegend i.t-passed{background:var(--bad-soft)}
table.sheet td.sc{padding:0;text-align:center;min-width:74px}
table.sheet td.sc button{display:block;width:100%;min-height:38px;border:0;background:none;padding:6px 8px;font-variant-numeric:tabular-nums}
table.sheet td.sc button:hover{background:color-mix(in srgb,var(--brand-fill) 20%,transparent)}
table.sheet td.sc.done{background:color-mix(in srgb,var(--ok) 13%,var(--surface));position:relative}
table.sheet td.sc.done>button[data-act="check"]{padding-right:22px}
table.sheet td.sc button.scmore{position:absolute;right:2px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:18px;height:18px;min-height:0;padding:0;border-radius:4px;color:var(--ink-3);opacity:.5;font-size:13px;line-height:1}
table.sheet td.sc:hover button.scmore,table.sheet td.sc button.scmore:focus-visible{opacity:1;color:var(--ink);background:var(--surface)}
table.sheet td.sc.na{color:var(--ink-3);background:var(--surface-2)}
table.sheet td.sc.hold{background:var(--warn-soft);color:var(--warn);font-weight:600}
table.sheet td.sc.due{background:color-mix(in srgb,var(--warn) 9%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 50%,transparent)}
table.sheet td.flagcell{background:var(--warn-soft)}
table.sheet tr.grp td{background:var(--surface-2);color:var(--ink);font-weight:700;font-size:13.5px;padding:7px 10px;border-right:0;border-top:2px solid var(--line-strong);border-bottom:1px solid var(--line-strong)} /* a light band, not a black bar (Allie 2026-10-09: easier to read) */
.donefold.phase{display:flex;gap:8px;align-items:center;font-weight:600;color:var(--ink);font-size:15px}
.donefold.phase>span.num{margin-left:auto;color:var(--ink-3);font-weight:500}
.donefold.phase.cur{background:var(--brand-soft)}
@media (max-width:860px){table.sheet .fz1{position:static}table.sheet .fz2{left:0;min-width:150px}}

/* ===== revision 5: Dispo overview rows ===== */
.dsec>.hd .r{flex:1;justify-content:flex-end;text-align:right}
.drow{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(240px,1fr) minmax(240px,1.2fr);gap:14px 20px;align-items:start;padding:15px 16px;border-bottom:1px solid var(--line)}
.drow:last-child{border-bottom:0}
.dz{min-width:0}
.mini{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mini b{display:block;font-size:22px;line-height:1.15;font-weight:700}
.mini .sub{display:block}
.seg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:6px}
.sg{border:1px solid var(--line);border-radius:7px;padding:6px 2px;text-align:center;background:var(--surface-2);font-size:12.5px;line-height:1.2;color:var(--ink-2);min-width:0}
.sg span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sg b{display:block;font-size:15px;color:var(--ink);margin-top:2px}
.sg:hover{border-color:var(--ink-3)}
.sg.done{background:var(--ok-soft);border-color:transparent;color:var(--ok)}.sg.done b{color:var(--ok)}
.sg.part{background:color-mix(in srgb,var(--ok) 7%,var(--surface))}
.sg.cur{background:var(--surface);border-color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn);color:var(--warn)}
.sg.na{opacity:.5}
.sg.open{outline:2px solid var(--ink);outline-offset:1px}
.need{display:flex;flex-direction:column;gap:5px}
.needbtn{display:flex;gap:8px;align-items:center;width:100%;text-align:left;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:7px 9px;font-size:14.5px;min-width:0}
button.needbtn:hover{border-color:var(--ink-3)}
.needbtn .box{width:18px;height:18px;border-radius:4px;border:2px solid var(--line-strong);flex:none;display:grid;place-items:center;font-size:12px;font-weight:700;color:transparent}
.needbtn .lbl{flex:1;min-width:0}
.needbtn .when{flex:none;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.needbtn.done{background:var(--ok-soft);border-color:transparent}.needbtn.done .box{background:var(--ok);border-color:var(--ok);color:var(--surface)}
.needbtn.hold{background:var(--warn-soft);border-color:transparent}.needbtn.hold .when{color:var(--warn);font-weight:600}
.needbtn.na{opacity:.55;background:var(--surface-2)}
.drawer{grid-column:1/-1;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:12px 14px}
.drawer-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}
.stepgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px}
.bystep{display:grid;grid-template-columns:minmax(200px,300px) minmax(0,1fr);gap:12px;align-items:center;padding:11px 16px;border-bottom:1px solid var(--line)}
.bystep:last-child{border-bottom:0}
.bs-l{display:flex;gap:8px;align-items:center;min-width:0}
.bs-r{display:flex;gap:8px;flex-wrap:wrap}
.bs-item{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:4px 5px 4px 10px;background:var(--surface-2)}
@media (max-width:1180px){.drow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:700px){.drow,.bystep{grid-template-columns:minmax(0,1fr)}.seg{grid-template-columns:repeat(4,minmax(0,1fr))}.dsec>.hd .r{display:none}}

.dz.wide{grid-column:1/-1}
.seg{gap:6px}
.sg{padding:7px 9px;text-align:left;font-size:13.5px}
.sg span{white-space:normal;overflow:visible}
.sg b{font-size:15px;margin-top:1px}
.sg i{display:block;height:5px;border-radius:3px;background:var(--line);margin-top:6px;overflow:hidden}
.sg u{display:block;height:100%;background:var(--ok);text-decoration:none}
.sg.cur u{background:var(--warn)}
@media (max-width:1180px){.drow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.seg{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:700px){.drow{grid-template-columns:minmax(0,1fr)}.seg{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ===== revision 6: Coming Soon as a phone reference ===== */
.drow.soonrow{grid-template-columns:minmax(220px,1.15fr) minmax(190px,.85fr) minmax(280px,1.4fr) minmax(220px,1.1fr)}
.phonefacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px;margin-top:4px}
.phonefacts div{min-width:0}
.phonefacts span{display:block;font-size:13px;color:var(--ink-3)}
.phonefacts b{display:block;font-size:15.5px;font-weight:600;overflow-wrap:anywhere}
.preshop{border:1px solid var(--line);border-radius:7px;padding:6px 9px;background:var(--surface-2)}
@media (max-width:1180px){.drow.soonrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:700px){.drow.soonrow{grid-template-columns:minmax(0,1fr)}}

/* ===== revision 7: On hold ===== */
.drow.holdrow{grid-template-columns:minmax(220px,1.15fr) minmax(190px,.85fr) minmax(280px,1.4fr) minmax(200px,1fr);background:color-mix(in srgb,var(--warn) 5%,var(--surface))}
.need .btn{justify-content:center}
@media (max-width:1180px){.drow.holdrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:700px){.drow.holdrow{grid-template-columns:minmax(0,1fr)}}

.told{display:flex;gap:4px;align-items:flex-start;margin-top:8px;flex-wrap:wrap}.told span{flex:1 1 160px;min-width:0}

/* ---------- v2 live app additions (2026-09-17) ---------- */
@media (prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:light}}
.bootscreen,.signin{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}
.bootbox{text-align:center;color:var(--ink-2)}
.bootbox .wordmark i,.signbox .wordmark i.dk{color:var(--ink)}
.bootbox p{margin:10px 0 0}
.signbox{width:min(400px,100%);padding:26px 24px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.signbox h1{font-size:26px}
.signbox .brand{padding:0}
.signbox .brand img.logo{width:200px}   /* the logo on the sign-in and reset pages (G 2026-10-18) */
.bootbox img.logo{display:block;width:220px;max-width:100%;height:auto;margin:0 auto 4px}   /* and on the loading screen; its src is /v2/img/ because the root page has no img folder */
.signbox .btn{justify-content:center;padding:11px 13px;font-size:15px}
.linkish.small{font-size:13.5px;font-weight:500;color:var(--ink-2);align-self:flex-start}
.formerr{background:var(--bad-soft);color:var(--bad);border-radius:8px;padding:10px 12px;font-size:14px;font-weight:500}
.fld textarea{border:1px solid var(--line-strong);border-radius:7px;padding:9px 10px;background:var(--surface);width:100%;min-width:0;resize:vertical}
.fld.missing input,.fld.missing select,.fld.missing textarea{border-color:var(--bad);background:var(--bad-soft)}
.fld .req{font-size:11px;font-weight:600;color:var(--bad);margin-left:4px}
.fld .later{font-size:11px;font-weight:500;color:var(--ink-3);margin-left:4px}
.fld .needby{font-size:11px;font-weight:600;color:var(--warn);margin-left:4px}
a.btn,a.nav{text-decoration:none}
a.nav{color:var(--side-ink)}
.mebtn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 12px 4px 4px;font-weight:600;font-size:14px}
.mockbar.bad{background:var(--bad-soft);color:var(--bad)}
.mockbar.ok{background:var(--ok-soft);color:var(--ok)}
.mockbar .linkish{color:inherit;text-decoration:underline}
.searchdrop{position:sticky;top:64px;z-index:19;margin:8px clamp(16px,3vw,32px) 0;max-height:60vh;overflow:auto;box-shadow:var(--shadow)}
.sres{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:10px 16px}
.sres:last-child{border-bottom:0}
.sres:hover{background:var(--surface-2)}
.sres b{font-size:16px}
#toast.bad{background:var(--bad);color:#fff}
#toast .undo{margin-left:14px;background:transparent;border:1px solid rgba(255,255,255,.55);color:inherit;border-radius:6px;padding:3px 11px;font-weight:600;font-size:13px;cursor:pointer}
#toast .undo:hover{background:rgba(255,255,255,.14)}
.panel.wide{width:min(720px,100%)}
.menu{position:fixed;right:16px;top:60px;z-index:50;min-width:220px;padding:6px;box-shadow:var(--shadow)}
.menu button,.menu a{display:block;width:100%;text-align:left;background:none;border:0;padding:9px 12px;border-radius:6px;font-weight:500;color:var(--ink);text-decoration:none}
.menu button:hover,.menu a:hover{background:var(--surface-2)}
.inline-edit{display:flex;gap:6px;flex-wrap:wrap;align-items:flex-end;margin-top:8px}
.inline-edit .fld{flex:1 1 160px}
.pickrow{display:flex;gap:10px;align-items:center;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:9px 4px}
.pickrow:hover{background:var(--surface-2)}
.kvlist{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;font-size:14.5px}
.kvlist b{font-variant-numeric:tabular-nums;text-align:right}
.v1note{font-size:13px;color:var(--ink-3)}
.v1note a{color:var(--ink-2);font-weight:600}
.skeleton{padding:40px 16px;text-align:center;color:var(--ink-3)}
@media (max-width:860px){.searchdrop{top:0;position:static}.mebtn>span:not(.av){display:none}.mebtn{padding:4px}}

/* rows with a small "who and by when" button beside the checklist row */
.chkrow{display:flex;align-items:stretch;border-bottom:1px solid var(--line)}
.chkrow:last-child{border-bottom:0}
.chkrow>.chk{flex:1;min-width:0;border-bottom:0}
.chkrow>.rowmore{align-self:center;margin-right:10px;flex:none;width:26px;height:26px;color:var(--ink-3)}
/* To-dos (2026-10-12): the property leads the row; the filter rows are labelled */
.todofilters{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.todofilters .row{display:flex;align-items:flex-start;gap:12px}
.todofilters .row>.eyebrow{flex:none;width:44px;padding-top:8px}
.chkrow.todo>.taddr{flex:none;width:210px;min-width:0;padding:10px 12px 10px 16px;border:0;border-right:1px solid var(--line);background:none;text-align:left;display:flex;flex-direction:column;gap:2px;color:var(--ink)}
.chkrow.todo>.taddr b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chkrow.todo>.taddr .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chkrow.todo>button.taddr:hover{background:var(--surface-2)}
.card>.hd .addr{display:inline;padding:0;border:0;background:none;text-align:left;color:var(--ink)}
.card>.hd .addr h3{display:inline}
@media (max-width:700px){.chkrow.todo{flex-wrap:wrap}.chkrow.todo>.taddr{width:100%;border-right:0;border-bottom:1px dashed var(--line);padding-bottom:6px}}
.chkrow>.rowaddr{align-self:center;margin-right:14px;flex:none;max-width:38%;font-size:14px;color:var(--ink-2);text-align:right}
/* fact grids: hairlines drawn per cell, so an odd number of facts never leaves a grey hole */
.facts{gap:0;background:none;overflow:hidden}
.fact{box-shadow:1px 0 0 0 var(--line),0 1px 0 0 var(--line)}
.todo-add select,.todo-add input[type="date"]{border:1px solid var(--line);border-radius:7px;padding:7px 8px;background:var(--surface-2);min-width:0}
.todo-add{flex-wrap:wrap}
.todo-add input[type="text"]{flex:1 1 220px}
.picked{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:var(--surface-2)}
.pickres{border:1px solid var(--line);border-radius:7px;margin-top:4px;max-height:220px;overflow:auto}
.pickres:empty{display:none}
.picknew{margin-top:6px;font-size:14px}
.picknew summary{cursor:pointer;color:var(--ink-2);font-weight:500}
.picknew .grid2{margin:8px 0}
.lead a.btn,.person a.iconbtn,.fu a.iconbtn{color:var(--ink);text-decoration:none}
.person a{color:inherit}
.bcard a{color:var(--ink-2)}
table.list tr.grp td{background:var(--surface-2);color:var(--ink);font-weight:700;font-size:13.5px;padding:8px 14px;border-top:2px solid var(--line-strong);border-bottom:1px solid var(--line-strong);cursor:default} /* the bands on a buyer's Offers and showings: Bought / Made an offer / Looked (G 2026-10-29) */
table.list tr.grp td .gnote{font-weight:500;color:var(--ink-2);margin-left:6px}
table.list tbody tr.grp:hover{background:var(--surface-2)}
table.list td select{border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px;background:var(--surface)}
/* the live tracker has 8 phases (Prep was added in front of the sheet's 7) */
.seg{grid-template-columns:repeat(8,minmax(0,1fr))}
@media (max-width:1180px){.seg{grid-template-columns:repeat(4,minmax(0,1fr))}}
#panelform{display:flex;flex-direction:column;gap:22px}
#panelform .sect .chk{border:1px solid var(--line);border-radius:8px;margin-bottom:6px}
.pathpick button small{display:block;font-weight:400;color:var(--ink-2);margin-top:3px}

.stepper.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:860px){.stepper.n3,.stepper.n4{grid-template-columns:repeat(2,minmax(0,1fr))}.step .here{display:none}}
.iconbtn.bell{position:relative}
.iconbtn .badge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--bad);color:#fff;font-size:10.5px;font-weight:700;display:grid;place-items:center}
.menu.alerts{width:min(380px,calc(100vw - 24px));max-height:70vh;overflow:auto}
.menu .alertrow{display:flex;flex-direction:column;gap:2px;white-space:normal;border-bottom:1px solid var(--line);border-radius:0}
.menu .alertrow.unread{background:var(--brand-soft)}
.menu .alertrow b{font-weight:600}

/* ===== revision 7 (Allie 2026-09-18): Marketing now as an info overview + the binder bucket ===== */
.drow.nowrow{grid-template-columns:minmax(220px,1.15fr) minmax(210px,1fr) minmax(200px,.95fr) minmax(230px,1.05fr)}
@media (max-width:1180px){.drow.nowrow,.drow.soonrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:700px){.drow.nowrow,.drow.soonrow{grid-template-columns:minmax(0,1fr)}}
.nextstep{display:flex;gap:8px;align-items:baseline;justify-content:space-between;border-bottom:1px dashed var(--line);padding:5px 0;font-size:14.5px}
.nextstep:last-of-type{border-bottom:0}
.nextstep b{font-weight:600;min-width:0}
.nextstep .sub{flex:none}

/* ===== revision 8 (Allie 2026-09-18): title reps on the New property form ===== */
.repgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;margin-top:4px}
.repcard{display:flex;gap:9px;align-items:flex-start;text-align:left;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:8px 10px;font-size:14.5px;min-width:0}
.repcard:hover{border-color:var(--ink-3)}
.repcard .box{width:18px;height:18px;border-radius:4px;border:2px solid var(--line-strong);flex:none;display:grid;place-items:center;font-size:12px;font-weight:700;color:transparent;margin-top:1px}
.repcard.on{background:var(--ok-soft);border-color:transparent}.repcard.on .box{background:var(--ok);border-color:var(--ok);color:var(--surface)}

/* ===== revision 9 (Allie 2026-09-18): intake document drop zones ===== */
.dropgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.dropzone{border:2px dashed var(--line-strong);border-radius:8px;padding:10px 12px;min-height:74px;cursor:pointer;background:var(--surface);display:flex;flex-direction:column;gap:4px;font-size:14px;min-width:0}
.dropzone:hover,.dropzone.over{border-color:var(--ok);background:var(--ok-soft)}
.dropzone.has{border-style:solid;border-color:var(--ok)}
.dropfile{display:flex;gap:6px;align-items:baseline;justify-content:space-between;font-size:13px;min-width:0}
.dropfile span{overflow-wrap:anywhere;min-width:0}

/* revision 10 (2026-09-21): the filed-document link on a checklist row */
.chkrow a.iconbtn{color:var(--ink);text-decoration:none}

/* revision 11 (2026-09-21): the Work screens - Contacts and Calls and texts */
.pager{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);flex-wrap:wrap}
.pager .btn[disabled]{opacity:.45}
.seg .ct{opacity:.65;font-weight:500;margin-left:4px}
.repcard b{font-weight:600}

/* revision 12 (2026-09-21): Payout tracker and Buyer trends */
.mtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.mtile{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.mtile b.num{display:block;font-family:var(--display);font-weight:700;font-size:23px;line-height:1.15;margin-top:3px}
.mtile.big b.num{font-size:29px}
.mtile.ok b.num{color:var(--ok)}
.mtile.bad b.num{color:var(--bad)}
.fsel{border:1px solid var(--line-strong);background:var(--surface);border-radius:7px;padding:6px 10px;font-size:14px;color:var(--ink)}
/* progress bars on the Payout tracker and Contracts screens. (Was .band, which collided with the Dispo sheet's th.band and broke that table's header rows, 9/23.) */
.pbar{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.pbar .lbl{min-width:108px;font-size:13.5px;color:var(--ink-2)}
.pbar .bar{flex:1;height:10px;background:var(--line);border-radius:999px;overflow:hidden}
.pbar .bar i{display:block;height:100%;background:var(--ok);border-radius:999px}

/* revision 13 (2026-09-22): AB Closing, the outstanding-work view */
/* the hover card on the AB and BC Closing lists (2026-10-18): the open checklist steps beside the pointer when the mouse rests on an address; takes no mouse events so the address under it still opens */
.peek{position:fixed;z-index:55;width:min(360px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:10px 14px 8px;pointer-events:none;font-size:13.5px}
.peek .pk-h{display:flex;flex-direction:column;gap:1px;padding-bottom:7px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.peek .pk-h b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.peek .eyebrow{margin:8px 0 2px}
.peek .pk-i{display:flex;gap:8px;align-items:flex-start;padding:4px 0;border-bottom:1px dashed var(--line)}
.peek .pk-i:last-child{border-bottom:0}
.peek .pk-i .box{flex:none;color:var(--ink-3)}
.peek .pk-i .lbl{flex:1;min-width:0;line-height:1.35}
.peek .pk-i .due{flex:none;font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.peek .pk-i .due.warn{color:var(--warn);font-weight:600}.peek .pk-i .due.bad,.peek .pk-i.late .lbl{color:var(--bad);font-weight:600}
.peek .pk-i .av{flex:none}
.peek .pk-done{padding:6px 0 4px}
.peek .pk-more{padding:6px 0 2px}
@media (hover:none){.peek{display:none}}
.todo{font-size:13.5px;padding:3px 0;border-bottom:1px dashed var(--line)}
.todo:last-child{border-bottom:0}
.todo.late{color:var(--bad);font-weight:600}
.docs{display:flex;flex-wrap:wrap;gap:5px}
.doc{font-size:12.5px;border:1px solid var(--line-strong);border-radius:999px;padding:2px 9px;color:var(--ink-3);white-space:nowrap}
.doc.ok{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.doc.half{border-color:var(--warn);color:var(--warn)}

/* revision 14 (2026-09-22): AB Closing tabs; From title items tick when they come in */
.abtabs{margin-top:4px}
button.doc{background:var(--surface);cursor:pointer;font:inherit;font-size:12.5px;line-height:inherit}
button.doc:hover{border-color:var(--ink-2);color:var(--ink)}
button.doc:focus-visible{outline:2px solid var(--brand-fill);outline-offset:1px}
.payoff .eyebrow{display:block;margin-bottom:3px}

/* ---------- Calls and texts: team colors and one conversation (Allie 2026-09-22) ----------
   "color-coordinate our team members so it's more apparent who on the team is interacting with that
   contact". One color per team member (js/views-contacts.js teamIndex); --tmN is the ink, --tmN-soft
   the fill. Each pair is at least 4.5:1 in both themes. */
:root,body[data-cg="light"]{
  --tm0:#B04E0A;--tm0-soft:#FDEBDC; --tm1:#A82B73;--tm1-soft:#FBE4F1; --tm2:#4347BD;--tm2-soft:#E7E8FB; --tm3:#0B7454;--tm3-soft:#DBF2E8;
  --tm4:#80590C;--tm4-soft:#F6EBD2; --tm5:#AE2A37;--tm5-soft:#FBE3E6; --tm6:#0A6891;--tm6-soft:#DCEEF7; --tm7:#7337AF;--tm7-soft:#EFE5FA;
}
:root[data-theme="dark"],body[data-cg="dark"]{
  --tm0:#F5A866;--tm0-soft:#3A2412; --tm1:#F08BC6;--tm1-soft:#3A1830; --tm2:#A9ADF7;--tm2-soft:#232548; --tm3:#5FD3AE;--tm3-soft:#10302A;
  --tm4:#E3BE6B;--tm4-soft:#33280F; --tm5:#F48A95;--tm5-soft:#3D1A1E; --tm6:#6CC3EE;--tm6-soft:#12303F; --tm7:#C9A2F2;--tm7-soft:#2C1F42;
}
.tm-0{--tmc:var(--tm0);--tmc-soft:var(--tm0-soft)} .tm-1{--tmc:var(--tm1);--tmc-soft:var(--tm1-soft)} .tm-2{--tmc:var(--tm2);--tmc-soft:var(--tm2-soft)} .tm-3{--tmc:var(--tm3);--tmc-soft:var(--tm3-soft)}
.tm-4{--tmc:var(--tm4);--tmc-soft:var(--tm4-soft)} .tm-5{--tmc:var(--tm5);--tmc-soft:var(--tm5-soft)} .tm-6{--tmc:var(--tm6);--tmc-soft:var(--tm6-soft)} .tm-7{--tmc:var(--tm7);--tmc-soft:var(--tm7-soft)}
.chip.tm{background:var(--tmc-soft);color:var(--tmc);border-color:transparent}
.chip.tm i{width:8px;height:8px;border-radius:50%;background:var(--tmc);display:inline-block;flex:none}
.chip.tm-line{font-weight:500}
.chip.tm-line i{width:8px;height:8px;border-radius:50%;background:var(--tmc);display:inline-block;flex:none} /* a line with an owner carries their colour dot (Allie 2026-10-12) */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wholine{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.arrow{color:var(--ink-3);font-weight:600}
/* the conversation: opens at the newest message (column-reverse), keeps its place on redraw */
.thread{display:flex;flex-direction:column-reverse;gap:12px;max-height:calc(100vh - 330px);min-height:320px;overflow-y:auto;padding:18px 16px;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.msg{display:flex;flex-direction:column;gap:4px;max-width:min(560px,82%)}
.msg.in{align-self:flex-start}
.msg.out{align-self:flex-end;align-items:flex-end}
.msg .bubble{padding:9px 13px;border-radius:16px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.4;color:var(--ink)}
.msg.in .bubble{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:5px}
.msg.out .bubble{background:var(--tmc-soft,var(--brand-soft));border-bottom-right-radius:5px}
.msg .meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}
.msg .meta .chip{font-size:12px;padding:1px 8px}
.msg.ev{align-self:center;max-width:min(640px,94%)}
.evcard{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:flex;flex-direction:column;gap:6px}
.evtext{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.dayline{align-self:center;font-size:13px;font-weight:600;color:var(--ink-3);padding:2px 12px;background:var(--surface);border:1px solid var(--line);border-radius:999px}
.thread-start{align-self:center;text-align:center;padding:4px 0}
.sub.bad{color:var(--bad)}
@media (max-width:640px){.thread{max-height:calc(100vh - 260px);padding:14px 10px}.msg{max-width:92%}}
.nowrap{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.sub .bad{color:var(--bad);font-weight:600}
/* Link-buttons (✆ Call, ✉ Text, @ Email) never had a text color and fell back to the browser's link
   blue, which is unreadable in the dark theme (found 2026-09-22 on the conversation page). */
a.btn{color:var(--ink);text-decoration:none}
/* Allie 2026-09-22: "you can keep the background white on the dark mode too" - the conversation box
   keeps the light look (white page, light bubbles, light team colors) when the CRM is in the dark theme. */
:root[data-theme="dark"] .thread,body[data-cg="dark"] .thread{
  color-scheme:light;
  --surface:#FFFFFF; --surface-2:#F7F9F8; --line:#DDE4E0; --line-strong:#C3CEC8; --ink:#15201B; --ink-2:#46544D; --ink-3:#6B7972;
  --brand:#2B8636; --brand-soft:#E5F4E1; --bad:#BC2F26; --ok:#24803A;
  --tm0:#B04E0A;--tm0-soft:#FDEBDC; --tm1:#A82B73;--tm1-soft:#FBE4F1; --tm2:#4347BD;--tm2-soft:#E7E8FB; --tm3:#0B7454;--tm3-soft:#DBF2E8;
  --tm4:#80590C;--tm4-soft:#F6EBD2; --tm5:#AE2A37;--tm5-soft:#FBE3E6; --tm6:#0A6891;--tm6-soft:#DCEEF7; --tm7:#7337AF;--tm7-soft:#EFE5FA;
  color:var(--ink);
}
/* Calls and texts: which kind at a glance (Allie 2026-09-22: "make the icon ... bigger so it's more
   apparent if its a message or phone call"). Blue = text, green = call, amber = voicemail. */
.ctype{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;flex:none;vertical-align:middle}
.ctype svg{width:20px;height:20px}
.ctype.sm{width:28px;height:28px}.ctype.sm svg{width:15px;height:15px}
.ctype-sms{background:var(--ab-soft);color:var(--ab)}
.ctype-call{background:var(--ok-soft);color:var(--ok)}
.ctype-voicemail{background:var(--warn-soft);color:var(--warn)}
.evhead{display:flex;align-items:center;gap:8px}
:root[data-theme="dark"] .thread,body[data-cg="dark"] .thread{--ab:#2E62C9;--ab-soft:#E4ECFB;--ok-soft:#E2F3E5;--warn:#9A5A08;--warn-soft:#FCEFD8}

/* revision 15 (2026-09-22): buyer cards, the buyer table, removing a card */
.bcard .nmlink{font:inherit;color:inherit;text-align:left;padding:0}
.bcard .nmlink:hover{text-decoration:underline}
.bcard .ln.chips{display:flex;gap:4px;flex-wrap:wrap;margin:2px 0}
.bcard .acts{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.btn.ghost.danger{color:var(--bad);border-color:var(--line-strong)}
.btn.ghost.danger:hover{border-color:var(--bad);background:var(--bad-soft,transparent)}
.netrow{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px dashed var(--line);font-size:14.5px}
.netrow:last-child{border-bottom:0}
.netrow.strong{font-weight:700;border-top:1px solid var(--line-strong);border-bottom:0;margin-top:2px;padding-top:7px}
.netrow .sub{font-weight:400}

/* revision 16 (2026-09-22): lines that line up. A row of facts no longer ends in a stray outlined
   box, long fields run the full width, the key-date strip shares the columns above it, and a row of
   small buttons wraps instead of overflowing (a texting extension can inject its own button there). */
.fact.wide{grid-column:1/-1}
/* the compact sheet on Marketing key facts (Allie 2026-10-14: "make it more compact and easier to look at") */
.kvs{padding:4px 16px 12px}
.kvg{padding:8px 0 2px}.kvg+.kvg{border-top:1px solid var(--line)}
.kvh{font-size:13px;font-weight:700;color:var(--ink-2);margin-bottom:4px}
.kvr{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px 14px}
.kv{min-width:0;padding:2px 0}.kv.wide{grid-column:1/-1}
.kv .kl{display:block;font-size:12.5px;color:var(--ink-3);line-height:1.3}
.kv b{display:block;font-size:14.5px;font-weight:600;line-height:1.35;overflow-wrap:anywhere;white-space:pre-line}
.kv b.nil{color:var(--ink-3);font-weight:400}
.kv.miss b{color:var(--bad);font-weight:500}
.kv .ks{display:block;font-size:12.5px;color:var(--ink-3);line-height:1.3}
.hdlks{display:inline-flex;gap:10px;margin-right:4px}.hdlk{font-size:13px;font-weight:600;color:var(--brand);text-decoration:none;white-space:nowrap}.hdlk:hover{text-decoration:underline}
/* The key-facts cards (Purchase / Our contract with the seller, Marketing, Sale). Yousra 2026-10-29, 930 Cedar
   St: "the little button where we can edit the marketing key facts is hidden". With the links, the inventory
   chip and button and the missing chip all in the header, the row squeezed the title onto two lines and the
   Edit button into the corner (on a narrower window it was pushed past the card's edge). The header wraps
   instead: the title keeps one line, the right-hand bits drop to a second row when they do not fit, and the
   Edit button never shrinks and is drawn in the brand colour so it can be found at a glance. */
.factcard>.hd{flex-wrap:wrap;row-gap:6px}.factcard>.hd h3{white-space:nowrap}.factcard>.hd .r{flex-wrap:wrap;justify-content:flex-end;row-gap:6px;min-width:0}
.factcard>.hd .btn.editfacts{flex:none;border-color:var(--brand);color:var(--brand);font-weight:700}.factcard>.hd .btn.editfacts:hover{background:var(--brand-soft)}
/* only horizontal dividers: a vertical one next to a half-empty last row read as an empty box */
.facts .fact{box-shadow:0 1px 0 0 var(--line)}
.facts .fact:last-child{box-shadow:none}
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));overflow-x:auto}
.strip>div{border-right:1px solid var(--line);min-width:0}
.person .acts,.callrow{flex-wrap:wrap;min-width:0}
.person .acts{justify-content:flex-end}
.iconbtn{min-width:30px;width:auto;padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}
/* ---- Marketing tab (js/marketing.js, 2026-09-22) ---- */
.mk-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:6px}
.mk-tiles.small{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.mk-tile{position:relative;border:3px solid transparent;box-shadow:0 0 0 1px var(--line);border-radius:10px;overflow:hidden;background:var(--surface-2)}
.mk-tile img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--surface-2)}
.mk-tile.on{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok)}
.mk-tile.cover::after{content:"★ cover";position:absolute;top:8px;left:8px;padding:3px 9px;border-radius:999px;background:var(--brand-fill);color:#fff;font-size:12px;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.35)}
.mk-tile.gen{border-style:dashed}
.mk-lbl{font-size:12px;padding:5px 8px 0;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mk-tools{display:flex;gap:4px;padding:5px 6px 7px;flex-wrap:wrap}
.mk-tools .btn.sm{padding:3px 7px;font-size:12px}
.mk-busybar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:10px;padding:10px 18px;border-radius:999px;background:var(--brand);color:#fff;font-size:14px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.28);max-width:calc(100vw - 32px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mk-busybar .dot{width:10px;height:10px;border-radius:50%;background:#fff;flex:none;animation:mk-pulse 1.1s ease-in-out infinite}
@keyframes mk-pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.mk-row{border-top:1px solid var(--line);padding:12px 0}
.mk-row:last-child{padding-bottom:0}
.mk-row-h{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.mk-text{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:10px;background:var(--surface-2)}
.mk-text-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.mk-text textarea.copybox{width:100%;box-sizing:border-box;font-family:inherit;font-size:14px;line-height:1.4;resize:vertical}
.mk-lists{margin-top:8px;max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface)}
.mk-listrow{display:flex;align-items:center;gap:6px;font-size:13px;padding:2px 0}
.mk-listrow input{width:auto;margin:0}
.mk-listrow input.excl{accent-color:var(--bad)}
.mk-log{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:10px;background:var(--surface-2)}
.mk-log>div{display:flex;gap:8px;padding:3px 0;font-size:14px}
.mk-log .ic{flex:none;width:22px}

/* ===== 2026-09-23 density pass (Allie: "very buffered and has big margins ... I want a more compact view
   naturally between all the pages"). Same layout, less air: smaller paddings, gaps and headline sizes. ===== */
body{font-size:15px;line-height:1.42}
.card>.hd{padding:9px 14px}.card>.bd{padding:10px 14px}.card>.hd h3{font-size:16px}
.pagehead{gap:12px}.pagehead h1{font-size:26px}.pagehead p{font-size:14px;margin-top:2px}
.snap-top{padding:11px 16px 8px;gap:12px}.snap-top h1{font-size:27px}.snap-top .where{margin-top:3px}
.stepper{padding:0 16px 10px;gap:5px}.step .t{font-size:14px}
.lead>div{padding:9px 16px 11px}.lead-big{font-size:22px;margin:3px 0 4px}.lead-big.md{font-size:18px}.lead-sub{font-size:13.5px}
.days{font-size:14.5px;padding:1px 9px}
.lane{padding:9px 16px 10px}
.stack{gap:12px}.dealgrid{gap:14px}.cols{gap:14px}
.tabs .tab{padding:8px 13px;font-size:14.5px}
.drow{padding:9px 14px;gap:8px 16px}
.fs{padding:10px 14px 10px 22px}.fs .nm{font-size:15px}
.tiles{gap:10px}.tile{padding:10px 12px 10px 16px}.tile .big{font-size:30px}
.phonefacts{gap:3px 12px}.phonefacts b{font-size:14.5px}.phonefacts span{font-size:12.5px}
.linkgrid{display:flex;flex-direction:column;gap:3px;margin-top:4px}.linkgrid .linkish{font-size:14.5px}
.auditbar{padding:7px 12px;font-size:14px}
.note{padding:8px 12px}.help{font-size:13.5px}
.addr{font-size:16px}.btn{font-size:14px}.btn.sm{font-size:13px}
.sect h3{font-size:15px;margin-bottom:8px}

/* Dispo Overview as compact tables (Allie 2026-09-23: "line-by-line... all of our marketing now properties on one screen") */
.dsec.ov>.hd{padding:7px 12px;gap:8px;flex-wrap:wrap}.dsec.ov>.hd .sub{font-size:13px}
table.ov{width:100%;border-collapse:collapse;font-size:14px}   /* no min-width: the list fits the window, long cells wrap (Allie 2026-09-24: "make sure that everything fits into my page") */
table.ov th{font-size:12.5px;font-weight:600;color:var(--ink-3);text-align:left;padding:5px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
table.ov td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
table.ov td.num{white-space:nowrap}
table.ov tr:last-child td{border-bottom:0}
table.ov .ovaddr{white-space:normal;min-width:180px;max-width:360px}
table.ov .ovaddr .addr{font-size:15px;line-height:1.2}
table.ov .zip{margin-left:6px;color:var(--ink-2);font-weight:600;font-size:14px}
table.ov .ovsub{display:flex;gap:4px;flex-wrap:wrap;align-items:center;margin-top:1px;font-size:12.5px;color:var(--ink-3)}
table.ov .chip{font-size:11.5px;padding:0 7px;line-height:18px}
table.ov .lks{display:flex;gap:4px;flex-wrap:wrap}
table.ov .lks .chip.lk{text-decoration:none;color:var(--ink);background:var(--surface-2);border:1px solid var(--line)}
table.ov .lks .chip.lk:hover{border-color:var(--brand)}
table.ov .acts{display:flex;gap:4px}
table.ov .btn.sm{padding:3px 9px}

/* Phone width: a list table is a stack of cards (G 2026-10-17). UI.labelCells tags every cell with its column
   heading (data-l) and marks the dash-only cells; here each row becomes a card and each cell a line with the
   heading in front. The first cell (the property or the name) is the card's title line. */
@media (max-width:700px){
  table[data-cards]{display:block;min-width:0 !important;width:100%;font-size:14.5px}
  table[data-cards] thead,table[data-cards] colgroup{display:none}
  table[data-cards] tbody{display:block}
  table[data-cards] tr{display:block;padding:10px 2px;border-bottom:1px solid var(--line)}
  table[data-cards] tr:last-child{border-bottom:0}
  table[data-cards] td{display:flex;gap:10px;align-items:baseline;padding:3px 0;border:0;white-space:normal;max-width:none;min-width:0;width:auto;line-height:1.35}
  table[data-cards] td.lo,table[data-cards] td.lo2{display:flex}
  table[data-cards] td.num,table[data-cards] td .num,table[data-cards] td.ophone{white-space:normal}
  table[data-cards] td>span,table[data-cards] td>b{display:inline}
  .main{overflow-x:clip}   /* the page can never grow wider than the phone (a cell that will not wrap used to stretch the whole screen) */
  table[data-cards] td::before{content:attr(data-l);flex:0 0 36%;color:var(--ink-3);font-size:12.5px;font-weight:600;line-height:1.3}
  table[data-cards] td[data-l=""]::before{content:none}
  table[data-cards] td[data-l=""]{display:block;margin-bottom:4px}
  table[data-cards] td.cardempty{display:none}
  table[data-cards] td>*{min-width:0}
  table[data-cards] .lks,table[data-cards] .acts,table[data-cards] .docs{justify-content:flex-start}
  table[data-cards] .pblock{display:block}
  .scroll:has(>table[data-cards]){overflow-x:visible}
}
/* AB Closing and BC Closing lists as compact tables (Allie 2026-09-24), sharing the Dispo Overview's table.ov */
table.ov td.wrap{white-space:normal;max-width:340px}
table.ov .ophone{white-space:nowrap}
table.ov .todo{display:inline;padding:0;background:none;border:0;font-size:13.5px}
table.ov .todo.late{color:var(--bad);font-weight:600}
table.ov .docs{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:center}
table.ov .doc{font-size:11.5px;padding:0 6px;line-height:18px}
table.ov .payoff{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}
table.ov .prog{display:inline-block;height:5px}
table.ov .days{font-size:12.5px;padding:0 7px;margin-left:4px}
/* on a laptop the least-needed column of each list is hidden and type steps down a notch, so the whole
   table fits without sideways scrolling (Allie 2026-09-24) */
@media (max-width:1440px){table.ov .lo{display:none}table.ov{font-size:13.5px}table.ov th,table.ov td{padding:4px 8px}table.ov .ovaddr .addr{font-size:14.5px}table.ov .pblock b{font-size:13.5px}table.ov .pblock .sub{font-size:12px}table.ov .chip{font-size:11px;padding:0 6px}}
@media (max-width:1180px){table.ov .lo2{display:none}}

/* role selector on the People card (Allie 2026-09-24) */
.person .rolesel{font-size:12px;padding:1px 4px;margin-left:8px;border-radius:5px;color:var(--ink-2);vertical-align:middle}

/* stacked person / title-company block in the closing lists (Allie 2026-09-24) */
table.ov .pblock{display:flex;flex-direction:column;line-height:1.25;white-space:normal}
table.ov .pblock .num{white-space:nowrap}
table.ov .pblock b{font-size:14px}
table.ov .pblock .sub{font-size:12.5px}
table.ov .pblock .sub i{font-style:normal;color:var(--ink-3)}
table.ov .pblock+.pblock{margin-top:5px;padding-top:4px;border-top:1px dashed var(--line)}

/* revision (2026-09-30): the People box - the pencil turns on Edit and Remove per person, and Add sits
   at the bottom */
.person.editing{flex-wrap:wrap}
.person.editing>div:first-child{flex:1 1 0}
.person .pedit{flex-basis:100%;display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.padd{padding:10px 16px;border-top:1px solid var(--line)}
.btn.sm.ghost.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}

/* revision (2026-10-01): Delete, step back, cancel a sale */
.btn.danger:not(.ghost){background:var(--bad);border-color:var(--bad);color:#fff}
.btn.danger:not(.ghost):hover{filter:brightness(1.06)}

/* revision (2026-10-01 pm): a tighter property page. Dispo's four lead cells sit side by side, the
   buyer card's remove is an X in its corner with the other buttons in one row, hints live on hover. */
.lead.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.lead.four{grid-template-columns:repeat(2,minmax(0,1fr))}.lead.four>div:nth-child(2){border-right:0}.lead.four>div:nth-child(-n+2){border-bottom:1px solid var(--line)}}
.leadhd{display:flex;justify-content:space-between;align-items:center;gap:8px}
.leadhd .btn{padding:2px 8px;font-size:12.5px}
.bcard .nmrow{display:flex;justify-content:space-between;align-items:flex-start;gap:6px}
/* the choice list after an offer is accepted (ticket 2026-10-09) */
.choices{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.choices .btn.wide{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 14px;white-space:normal;height:auto}
.choices .btn .sub{font-weight:400;font-size:12.5px;line-height:1.3}.choices .btn.primary .sub{color:inherit;opacity:.9}
/* a buyer's notes (Allie 2026-10-13): the newest note is one clickable line; the panel lists them all, newest first */
.bcard .ln.note,.notecell .ln.note{background:none;border:0;padding:0;font:inherit;font-size:13px;color:var(--ink-2);text-align:left;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.bcard .ln.note:hover,.notecell .ln.note:hover{color:var(--ink);text-decoration:underline}
.ln.note .stamp{font-size:11.5px;font-weight:600;color:var(--ink-3);margin-right:5px}
.notecell{max-width:260px}
.bnotes-h{margin:12px 0 4px}
.bnotes{display:flex;flex-direction:column;gap:6px}
.bnote{border-top:1px solid var(--line);padding-top:6px}
.bnote .stamp{font-size:11.5px;font-weight:600;color:var(--ink-3)}
.bnote .txt{white-space:pre-wrap;font-size:14px;line-height:1.35}
.bnote .nacts{display:flex;gap:12px;margin-top:3px}.bnote .nacts .linkish.small{font-size:12px;color:var(--ink-3)}.bnote .nacts .linkish.small:hover{color:var(--ink)}
.bnote.editing textarea{width:100%;margin-top:4px;font:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink)}
/* comps (Allie 2026-10-14): one per line on the Marketing key facts card, their own panel to add, change or remove */
.kv .cdet{font-weight:400;color:var(--ink-2)}
.kv .cact{margin-top:3px}.kv .cact .linkish.small{font-size:12.5px;color:var(--ink-3)}.kv .cact .linkish.small:hover{color:var(--ink)}
.bnote.comp .cl{font-size:13px;color:var(--ink-2);line-height:1.35}
.bnote.comp.editing{background:var(--surface-2,transparent);border-left:3px solid var(--brand);padding-left:8px}
.pasterow{display:flex;gap:6px}.pasterow input{flex:1;min-width:0}
.sect .nacts{display:flex;gap:12px;margin-top:8px}
.bx{border:0;background:none;color:var(--ink-3);font-size:18px;line-height:1;padding:0 3px;border-radius:5px;cursor:pointer}
.bx:hover{color:var(--bad);background:var(--bad-soft,transparent)}
table.list .tnm{display:flex;justify-content:space-between;align-items:flex-start;gap:6px}table.list .tnm .bx{flex:none}
.bcard .acts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;margin-top:5px;padding-top:7px;border-top:1px solid var(--line)}
.bcard .acts .btn{grid-column:span 2;padding:3px 4px;font-size:12.5px;text-align:center;justify-content:center;white-space:nowrap;min-width:0}
/* two or four buttons: halves. five: three on top, two halves under. one: full width. */
.bcard .acts .btn:first-child:nth-last-child(2),.bcard .acts .btn:first-child:nth-last-child(2)~.btn,
.bcard .acts .btn:first-child:nth-last-child(4),.bcard .acts .btn:first-child:nth-last-child(4)~.btn,
.bcard .acts .btn:first-child:nth-last-child(5)~.btn:nth-child(n+4){grid-column:span 3}
.bcard .acts .btn:only-child{grid-column:1/-1}
/* a long label takes its own line; the rest share the line under it */
.bcard .acts .btn.btn.btn.wide{grid-column:1/-1}
.bcard .acts .btn.btn.btn.wide~.btn{grid-column:span 3}
.bcard .acts .btn.btn.btn.wide+.btn:last-child{grid-column:1/-1}
.hinti{font-size:13px;color:var(--ink-3);font-weight:400;cursor:help}
/* hide / show the side menu (Allie 2026-10-02): an inward arrow at the bottom right of the menu,
   and a small tab at the bottom left of the screen to bring it back */
.sidehide{position:sticky;bottom:0;align-self:flex-end;margin-top:auto;flex:none;width:30px;height:30px;border-radius:7px;border:1px solid var(--side-line);background:var(--side);color:var(--side-dim);font-size:17px;line-height:1;cursor:pointer}
.sidehide:hover{background:var(--side-active);color:#fff}
.sideshow{display:none;position:fixed;left:0;bottom:18px;z-index:30;width:24px;height:46px;border:0;border-radius:0 8px 8px 0;background:var(--side);color:var(--side-ink);font-size:17px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.28)}
.sideshow:hover{background:var(--side-active);color:#fff;width:28px}
.app.sidehidden{grid-template-columns:minmax(0,1fr)}
.app.sidehidden>.side{display:none}
.app.sidehidden>.sideshow{display:block}
@media (max-width:860px){.sidehide{position:static;margin-top:0;align-self:center}}
/* Payout tracker, sheet layout (Allie 2026-10-05): one block of three columns per property, like the
   2026 Properties tab. The label column and the three header rows stay put while the rest scrolls. */
.ptwrap{overflow-x:auto;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)} /* the whole sheet shows; the page scrolls, never a box inside it (Allie 2026-10-06) */
table.ptsheet{border-collapse:separate;border-spacing:0;font-size:13px;width:max-content}
table.ptsheet th,table.ptsheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:3px 6px;background:var(--surface);white-space:nowrap;vertical-align:top;text-align:left}
table.ptsheet td{min-width:48px}
table.ptsheet td.num{text-align:right;font-variant-numeric:tabular-nums}
table.ptsheet td.blk{min-width:84px}
table.ptsheet .blk{border-left:2px solid var(--ink-2)}
table.ptsheet th.lab{position:sticky;left:0;z-index:3;min-width:118px;max-width:140px;white-space:normal;font-weight:600;font-size:13px;background:var(--surface-2);box-shadow:2px 0 0 var(--line-strong);text-align:left}
table.ptsheet thead th{position:sticky;z-index:4;background:var(--surface-2);text-align:center;font-weight:600}
table.ptsheet thead th.lab{z-index:6}
table.ptsheet thead tr.hst th{top:0;height:30px;padding:3px 8px}
table.ptsheet thead tr.had th{top:30px;height:34px;font-size:13px;font-weight:700;background:var(--surface)}
table.ptsheet thead tr.had th.lab{background:var(--surface-2)}
table.ptsheet thead tr.hsub th{top:64px;font-size:12px;color:var(--ink-2);border-bottom:2px solid var(--line-strong)}
table.ptsheet .cap{display:block;font-size:11px;color:var(--ink-3);text-align:left;line-height:1.2}
table.ptsheet tr.est td,table.ptsheet tr.est th.lab{background:color-mix(in srgb,var(--warn) 9%,var(--surface))}
table.ptsheet tr.calc td{background:var(--surface-2)}
table.ptsheet tr.band th,table.ptsheet tr.band td{background:var(--surface-2);font-weight:700;font-size:12.5px;color:var(--ink-2);border-top:2px solid var(--line-strong)}
table.ptsheet tr.pay th.lab{font-weight:500;color:var(--ink-3);text-align:right;padding-right:12px}
table.ptsheet tr.pay td{padding-top:3px;padding-bottom:3px}
table.ptsheet .pdesc{display:block;max-width:104px;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--ink-3);text-align:left;line-height:1.25}
table.ptsheet tr.tot td,table.ptsheet tr.tot th.lab{border-top:2px solid var(--line-strong);background:var(--surface-2)}
table.ptsheet tr.big td b{font-size:15px}
table.ptsheet .chip{font-size:12px}
table.ptsheet td.ed{cursor:pointer}
table.ptsheet tr:hover td.ed{background:color-mix(in srgb,var(--brand-fill) 14%,var(--surface))}
table.ptsheet .add{color:var(--ink-3);font-size:12px;opacity:0}
table.ptsheet tr:hover td.ed .add,table.ptsheet td.ed:focus .add{opacity:1}
.ptitle{font-size:16px;font-weight:700;margin:18px 2px 8px}.ptitle .sub{font-weight:400;font-size:13px;margin-left:8px}
/* 2026-10-06 (Allie): the tracker is three tabs with a year strip; the sheet gets grouped headings,
   a Total block pinned on the right, a Needs attention mark, and the + add always faintly there. */
.ptabs{margin:4px 0 10px}.ptabs .tab{font-size:15px}
.ptyears{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.ptyears .lbl{font-size:12.5px;color:var(--ink-3);margin-right:4px}
table.ptsheet .add{opacity:.55}
table.ptsheet tr.band th.lab{text-align:left;color:var(--ink);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase}
table.ptsheet tr.hst th.blk{border-top:3px solid var(--line-strong)}
table.ptsheet tr.hst th.blk.t-ab{border-top-color:var(--ab)}table.ptsheet tr.hst th.blk.t-soon{border-top-color:var(--soon)}table.ptsheet tr.hst th.blk.t-mkt{border-top-color:var(--mkt)}
table.ptsheet tr.hst th.blk.t-bc{border-top-color:var(--bc)}table.ptsheet tr.hst th.blk.t-ok{border-top-color:var(--ok)}table.ptsheet tr.hst th.blk.t-bad{border-top-color:var(--bad)}
table.ptsheet th.attn{background:var(--warn-soft)!important}
table.ptsheet .attnlist{display:block;max-width:260px;white-space:normal;font-size:11px;font-weight:500;line-height:1.25;color:var(--warn);text-align:left;margin-top:3px}
table.ptsheet thead tr.hst th{height:auto}
.ptscroll{overflow-x:auto;overflow-y:hidden;height:18px;margin:0 0 2px;border-radius:8px 8px 0 0;scrollbar-color:var(--line-strong) var(--surface-2)}.ptscroll-in{height:1px} /* a little thicker, always drawn (Allie 2026-10-09) */
.ptscroll::-webkit-scrollbar{height:12px}.ptscroll::-webkit-scrollbar-track{background:var(--surface-2);border-radius:6px}.ptscroll::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:6px;border:2px solid var(--surface-2)}.ptscroll::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}
table.ptsheet .tcol{position:sticky;right:0;z-index:2;min-width:118px;text-align:right;font-variant-numeric:tabular-nums;background:var(--surface-2);border-left:2px solid var(--line-strong);box-shadow:-2px 0 0 var(--line-strong)}
table.ptsheet thead th.tcol{z-index:5;text-align:center}
table.ptsheet tr.tot td.tcol b{font-size:14px}
/* the Payout tracker page: one line per property, totals pinned under it */
.ptsumwrap{overflow-x:auto;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
table.ptsum{border-collapse:separate;border-spacing:0;font-size:13px;min-width:1120px;width:100%}
table.ptsum th,table.ptsum td{border-bottom:1px solid var(--line);padding:6px 8px;background:var(--surface);white-space:nowrap;vertical-align:top;text-align:left}
table.ptsum thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);font-weight:600;font-size:12.5px;color:var(--ink-2);border-bottom:2px solid var(--line-strong)}
table.ptsum td.num,table.ptsum th.num{text-align:right;font-variant-numeric:tabular-nums}
table.ptsum tfoot td{position:sticky;bottom:0;z-index:3;background:var(--surface-2);font-weight:700;border-top:2px solid var(--line-strong);border-bottom:0}
table.ptsum tfoot tr.est td{bottom:33px;font-weight:600;color:var(--ink-2);border-top:1px solid var(--line-strong)}
table.ptsum tr.est td{color:var(--ink-2)}table.ptsum tr.est td.num{font-style:italic}
table.ptsum td.ed{cursor:pointer}table.ptsum tr:hover td.ed{background:color-mix(in srgb,var(--brand-fill) 14%,var(--surface))}
table.ptsum .kind{display:block;font-size:11.5px;color:var(--ink-3)}
/* a figure typed over the worked-out one (2026-10-16): said beside it, with the CRM's own figure when they differ */
table.ptsum .kind.typed,table.ptsheet .pdesc.typed{color:var(--brand);font-weight:600}


/* compact buyer cards (Allie 2026-10-05): about half the height, so ten people fit in a column */
.bcol-b{gap:6px;padding:8px}
.bcard.cmp{padding:6px 8px;gap:2px}
.bcard.cmp .nmrow{align-items:baseline;gap:6px}
.bcard.cmp .nm{flex:1 1 auto;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bcard.cmp .ph{flex:none;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.bcard.cmp .ln{font-size:12.5px;line-height:1.3}
.bcard.cmp .one,.bcard.cmp .ln.one{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.bcard.cmp .ln.meta{display:flex;align-items:center;gap:4px;flex-wrap:wrap;color:var(--ink-3)}
.bcard.cmp .ln.meta .chip,.bcard.cmp .ln.offer .chip{font-size:11px;padding:0 6px;line-height:1.5}
.bcard.cmp .ln.offer{display:flex;align-items:baseline;gap:6px;min-width:0}
.bcard.cmp .ln.offer .amt{font-size:15.5px;flex:none}
.bcard.cmp .ln.offer .chip{flex:none}
.bcard.cmp .acts{display:flex;flex-wrap:wrap;gap:2px 4px;margin-top:3px;padding-top:0;border-top:0}
.bcard.cmp .acts .btn,.bcard.cmp .acts .btn.btn.btn.wide{flex:0 1 auto;grid-column:auto;padding:2px 7px;font-size:12px;min-width:0}
label.tick{display:flex;align-items:center;gap:8px;font-weight:500;cursor:pointer}
label.tick input{width:17px;height:17px;flex:none}

/* All in tile: what it is made of (Allie 2026-10-05: expenses in red, credits in green) */
.mtile.allin .ailine{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--ink-2);margin-top:3px}
.mtile.allin .ailine.bad{color:var(--bad)}
.mtile.allin .ailine.ok{color:var(--ok)}
.mtile.allin{grid-column:span 2}
.mtile.allin .ailine span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:560px){.mtile.allin{grid-column:auto}}
/* the search box under each Sheet layout title: type an address, keep only that property's block */
.search.ptfind{flex:none;max-width:440px;margin:0 2px 10px;background:var(--surface)}
.ptnone{color:var(--ink-2)}
/* Payout tracker, compact (Allie 2026-10-05): the accounts in the Payout Tracker sheet's colours, and
   the working behind a figure on hover instead of in a column of its own */
.acct{display:inline-block;padding:0 6px;border-radius:5px;font-weight:600;line-height:1.5;white-space:nowrap}
.acct.a1820{background:color-mix(in srgb,#7c3aed 18%,var(--surface));color:color-mix(in srgb,#7c3aed 72%,var(--ink))}
.acct.a1812{background:color-mix(in srgb,#16a34a 20%,var(--surface));color:color-mix(in srgb,#15803d 74%,var(--ink))}
.acct.acard{background:color-mix(in srgb,#2563eb 18%,var(--surface));color:color-mix(in srgb,#1d4ed8 72%,var(--ink))}
.pttip{position:relative;cursor:help;border-bottom:1px dotted var(--ink-3);outline:0}
.pttip .pop{display:none;position:absolute;z-index:8;top:calc(100% + 5px);left:0;min-width:190px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);box-shadow:0 6px 18px rgba(0,0,0,.18);font-size:12.5px;font-weight:400;color:var(--ink);text-align:left;white-space:nowrap;cursor:default}
.pttip .pop>span{display:flex;justify-content:space-between;gap:14px;line-height:1.6}
.pttip:hover .pop,.pttip:focus .pop,.pttip:focus-within .pop{display:block}
/* ---- a name is a link to its contact; the contact opens in a pop-up (Allie 2026-10-05) ---- */
.linkish.whol{cursor:pointer;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.linkish.whol:hover{text-decoration-color:currentColor}
.linkish.whol.nocontact{text-decoration-style:dashed}
.cscrim{position:fixed;inset:0;background:rgba(10,16,13,.5);z-index:36;display:flex;align-items:flex-start;justify-content:center;padding:28px 16px}
.cmodal{background:var(--bg,var(--surface));width:min(1080px,100%);max-height:calc(100vh - 56px);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px -20px rgba(0,0,0,.5)}
.cmhead{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
.cmbody{overflow-y:auto;padding:16px}
.cmbody .snap h1{font-size:26px}
details.chist>summary{cursor:pointer;list-style:none}details.chist>summary::-webkit-details-marker{display:none}
details.chist>summary h3::before{content:"▸ ";color:var(--ink-3)}details.chist[open]>summary h3::before{content:"▾ "}
@media (max-width:640px){.cscrim{padding:0}.cmodal{max-height:100vh;height:100vh;border-radius:0}}

/* Buyers who said no sit at the bottom, dimmed, still there to review (Allie 2026-10-07) */
.bcard.inactive { opacity: .62; }
tr.inactive > td { opacity: .62; }
/* The Not interested switch in the Buyers header (TJ 2026-10-14): dark = shown, with the count */
.bshow{display:inline-flex;gap:6px;flex-wrap:wrap}
.bshow .fbtn{padding:4px 10px;font-size:12.5px;cursor:pointer}
.bshow .fbtn .n{font-weight:600;opacity:.8}
.bshow .fbtn:not(.on){color:var(--ink-3)}

/* ---- Report a problem (Allie 2026-10-08): the bubble in the corner, its panel, the pointer, the Issues page ---- */
#isbubble{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:35;width:36px;height:36px;border-radius:50%;border:2px solid var(--brand);background:var(--surface);color:var(--brand);font-weight:800;font-size:19px;line-height:1;cursor:pointer;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;padding:0;font-family:var(--body)}
#isbubble:hover{background:var(--brand);color:#fff}
#isbubble[hidden]{display:none}
#isbubble.sent{background:var(--ok);border-color:var(--ok);color:#fff}
#ispanel .scrim{z-index:55}
#ispanel .panel{width:min(520px,100%)}
#isform{display:flex;flex-direction:column;gap:18px}
.iswhere{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.iswhere .btn{align-self:flex-start;margin-top:2px}
.isseg{display:flex;flex-wrap:wrap;gap:6px}
.isopt{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13.5px;font-weight:500;cursor:pointer;background:var(--surface);color:var(--ink-2)}
.isopt.on,.isopt:has(input:checked){background:var(--ink);color:var(--surface);border-color:var(--ink)}
.isopt input{margin:0;accent-color:var(--brand)}
.ischeck{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;cursor:pointer}
.ischeck input{width:auto;flex:none;margin:0;accent-color:var(--brand)}
.isshot{margin-top:6px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface-2);max-width:280px}
.isshot img{display:block;width:100%;height:auto}
.isshot .sub{padding:8px 10px}
body.ispicking #ispanel,body.ispicking #isbubble{display:none}
body.ispicking,body.ispicking *{cursor:crosshair!important}
#ishl{position:fixed;pointer-events:none;z-index:70;border:3px solid #E0332A;border-radius:6px;box-shadow:0 0 0 9999px rgba(10,16,13,.16);transition:left .05s,top .05s,width .05s,height .05s}
#istip{position:fixed;left:50%;top:14px;transform:translateX(-50%);z-index:71;background:var(--ink);color:var(--surface);padding:9px 14px;border-radius:8px;font-weight:600;font-size:14px;box-shadow:var(--shadow);pointer-events:none;max-width:calc(100% - 32px);text-align:center}
.isrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;text-align:left;padding:11px 16px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);cursor:pointer;font:inherit}
.isrow:hover{background:var(--surface-2)}
.isrow:last-child{border-bottom:0}
.isrow b{font-weight:600}
.isrow .sub{display:block;margin-top:2px;white-space:normal}
.isdetail{display:flex;flex-direction:column;gap:14px}
.isdetail .kv{display:grid;grid-template-columns:190px minmax(0,1fr);gap:8px 14px;font-size:14px;align-items:start}
.isdetail .kv>span:nth-child(odd){color:var(--ink-3)}
.isdetail pre{white-space:pre-wrap;font:inherit;margin:0;background:var(--surface-2);border-radius:8px;padding:10px 12px}
.isdetail code{font-size:13px;background:var(--surface-2);padding:2px 6px;border-radius:5px}
.isdetail img.shot{max-width:100%;border:1px solid var(--line);border-radius:8px;display:block}
.iscrumbs{list-style:none;margin:0;padding:0;font-size:13.5px}
.iscrumbs li{display:flex;gap:10px;padding:4px 0;border-bottom:1px dashed var(--line)}
.iscrumbs li:last-child{border-bottom:0}
.iscrumbs li>span:first-child{color:var(--ink-3);flex:none;width:72px;font-variant-numeric:tabular-nums}
@media (max-width:700px){.isdetail .kv{grid-template-columns:1fr}.isdetail .kv>span:nth-child(odd){margin-top:4px}#isbubble{right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px))}}

/* the fold chevron on cards (Allie 2026-10-09) */
.foldbtn { font-size: 15px; line-height: 1; padding: 4px 9px; }

/* click-a-Missing (Allie 2026-10-09): the red Missing is the way in; the opened field flashes */
.missfix { color: var(--bad); font-weight: 600; text-decoration: underline dotted; text-underline-offset: 3px; cursor: pointer; }
.missfix:hover { text-decoration-style: solid; }
.fld.flashfix { animation: flashfix 2.4s ease-out; border-radius: 8px; }
@keyframes flashfix { 0%, 55% { box-shadow: 0 0 0 3px var(--bad); } 100% { box-shadow: 0 0 0 3px transparent; } }

/* de-staging alert at the top of a property (Allie 2026-10-10) */
.destage{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 20px 14px;padding:12px 16px;border-radius:10px;border:1px solid var(--line)}
.destage.warn{background:var(--warn-soft);border-color:var(--warn)}
.destage.bad{background:var(--bad-soft);border-color:var(--bad)}
.destage b{font-size:15px}
.destage p{margin:2px 0 0}
.destage-b{display:flex;gap:8px;flex-wrap:wrap}
/* grouped search (Allie 2026-10-10) */
.sgrp{position:sticky;top:0;z-index:1;background:var(--surface-2);padding:6px 16px;font-weight:600;font-size:13px;border-bottom:1px solid var(--line)}

/* buyer board: + per column, the inline add box, the accepted strip (Allie 2026-10-10) */
.bcol-r{display:flex;align-items:center;gap:6px}
.bcol-add{border:1px solid var(--line);background:var(--surface);border-radius:6px;width:26px;height:26px;font-size:17px;line-height:1;cursor:pointer;color:var(--ink-2)}
.bcol-add:hover,.bcol-add.on{background:var(--surface-2);color:var(--ink)}
.bcol-addbox{padding:6px;border-bottom:1px solid var(--line);margin-bottom:6px}
.bcol-addbox input{width:100%}
.bcol-hit{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:7px 4px;cursor:pointer}
.bcol-hit:hover:not([disabled]){background:var(--surface-2)}
.bcol-hit[disabled]{cursor:default;opacity:.75}
.bcol-hit.new{color:var(--brand,#2f7d32)}
.accstrip{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:12px 16px 0;padding:10px 14px;border-radius:10px;background:var(--ok-soft,#e8f5e9);border:1px solid var(--ok,#4caf50)}
.accstrip .nm{font-weight:600}
.accstrip .acts{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.pbfilters{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px;align-items:center}
.chipbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 11px;font-size:13px;cursor:pointer}
.chipbtn.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.pbdiv{padding:10px 4px 4px;font-weight:600;font-size:13px;color:var(--ink-3);border-top:1px solid var(--line);margin-top:6px}

/* Payout tracker activity log (Allie 2026-10-12) */
.plogbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.plogbar input[type=search]{flex:1 1 260px;min-width:200px}
table.plog td{vertical-align:top}
table.plog tr.pold td{opacity:.75}

/* ---- rentals we keep (Allie 2026-10-12) ---- */
:root{--rent:#9A5418;--rent-soft:#F7E8D8}
:root[data-theme="dark"],body[data-cg="dark"]{--rent:#EBB27C;--rent-soft:#3A2614}
body[data-cg="light"]{--rent:#9A5418;--rent-soft:#F7E8D8}
.dot.rent{background:#D08A4A}
.chip.rent{background:var(--rent-soft);color:var(--rent);border-color:transparent}
/* Closed properties on the Payout tracker (Allie 2026-10-14): the type of sale coloured as the sheet colours it - CG owned green (the ok tone), JV purple */
:root{--jv:#5B2D9E;--jv-soft:#EDE4FA}
:root[data-theme="dark"],body[data-cg="dark"]{--jv:#C9B3F2;--jv-soft:#2C1D4A}
body[data-cg="light"]{--jv:#5B2D9E;--jv-soft:#EDE4FA}
.chip.jv{background:var(--jv-soft);color:var(--jv);border-color:transparent}
table.ptsum.closed{min-width:1080px}
table.ptsum.closed tfoot td{bottom:0}
.btn.stage-rent{background:var(--rent);border-color:var(--rent);color:var(--surface)}
table.ptsheet tr.hst th.blk.t-rent{border-top-color:var(--rent)}
.stepper.n2{grid-template-columns:repeat(2,minmax(0,1fr))}

/* ---------- the Funds forecast tab (Allie 2026-10-13) ---------- */
/* ---- the Funds forecast page (2026-10-14) ---- */
.fxverdict{display:flex;gap:18px;align-items:stretch;flex-wrap:wrap;padding:16px 18px;margin-top:14px;border-left:5px solid var(--line-strong)}
.fxverdict.ok{border-left-color:var(--ok)}.fxverdict.warn{border-left-color:var(--warn)}.fxverdict.bad{border-left-color:var(--bad)}
.fxv-main{display:flex;gap:12px;align-items:flex-start;flex:1 1 420px;min-width:0}
.fxv-main>b{font-family:var(--display);font-size:20px;line-height:1.25;display:block}
.fxv-main p{margin:5px 0 0;color:var(--ink-2);font-size:14.5px}.fxv-main p.sub{color:var(--ink-3)}
.fxv-dot{flex:none;width:14px;height:14px;border-radius:50%;background:var(--ink-3);margin-top:6px}
.fxverdict.ok .fxv-dot{background:var(--ok)}.fxverdict.warn .fxv-dot{background:var(--warn)}.fxverdict.bad .fxv-dot{background:var(--bad)}
.fxverdict.ok .fxv-main>b{color:var(--ok)}.fxverdict.warn .fxv-main>b{color:var(--warn)}.fxverdict.bad .fxv-main>b{color:var(--bad)}
.fxv-side{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}
.fxpill{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-width:170px;display:flex;flex-direction:column;gap:2px}
.fxpill.p20{border-color:color-mix(in srgb,#7c3aed 45%,var(--line))}.fxpill.p12{border-color:color-mix(in srgb,#16a34a 40%,var(--line))}
.fxpill b.num{font-family:var(--display);font-size:24px;font-weight:700;line-height:1.1}
.fxpill .sub{white-space:normal}
.fxpull{margin:8px 2px 0}
.mtiles.fxk{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-top:14px}
.mtile.warn b.num{color:var(--warn)}
.fxok{color:var(--ok)}.fxwarn{color:var(--warn)}.fxbad{color:var(--bad);font-weight:600}
.fxflags{list-style:none;margin:0;padding:6px 16px 10px;display:flex;flex-direction:column;gap:7px}
.fxflags li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.4}
.fxflags li .dot{flex:none;width:9px;height:9px;border-radius:50%;margin-top:7px;background:var(--ink-3)}
.fxflags li.bad .dot{background:var(--bad)}.fxflags li.warn .dot{background:var(--warn)}.fxflags li.note .dot{background:var(--line-strong)}
.fxflags li.bad{color:var(--ink)}.fxflags li.note{color:var(--ink-3)}.fxflags li.stale{color:var(--ink-3)}
.fxflags .addr{font-size:14px}
.fxcard{container-type:inline-size;--fxbuy:var(--bad);--fxsell:var(--ok);--fxwhat:var(--warn)}
.fxcard>.hd{flex-wrap:wrap}.fxcard>.hd .r{flex-wrap:wrap;row-gap:4px}.fxcard>.hd h3 .sub{font-weight:400;margin-left:6px}
.fxbody{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
@container (min-width:1360px){.fxbody{grid-template-columns:minmax(0,1fr) 330px}.fxrail{border-left:1px solid var(--line);border-top:0;max-height:calc((100cqw - 330px) * .47 + 24px);overflow-y:auto}}
.fxchart{padding:8px 10px 4px;position:relative;min-width:0}
.fxchart svg{width:100%;height:auto;aspect-ratio:1000/470;display:block}
.fxchart .g{stroke:var(--line);stroke-width:1}
.fxchart .g.w{opacity:.55}
.fxchart .g.z{stroke:var(--ink);stroke-width:1.5}
.fxchart .g.today{stroke:var(--ink-3);stroke-width:1.2;stroke-dasharray:3 3;opacity:1}
.fxchart .t{font:11.5px var(--body);fill:var(--ink-3)}
.fxchart .t.b{font-weight:700;fill:var(--ink-2)}
.fxchart .t.buf{fill:#7c3aed}
.fxchart .bufl{stroke:#7c3aed;stroke-width:1.2;stroke-dasharray:4 6;opacity:.75}
.fxchart .line{fill:none;stroke:#7c3aed;stroke-width:2.4;stroke-linejoin:miter;stroke-linecap:butt}
.fxchart .zone.a{fill:#7c3aed;opacity:.06}.fxchart .zone.b{fill:var(--warn);opacity:.11}.fxchart .zone.c{fill:var(--bad);opacity:.14}
body[data-cg="dark"] .fxchart .zone.a,:root[data-theme="dark"] .fxchart .zone.a{opacity:.14}body[data-cg="dark"] .fxchart .zone.b,:root[data-theme="dark"] .fxchart .zone.b{opacity:.17}body[data-cg="dark"] .fxchart .zone.c,:root[data-theme="dark"] .fxchart .zone.c{opacity:.2}
.fxchart .ring{fill:var(--surface);stroke-width:2}.fxchart .ring.warn{stroke:var(--warn)}.fxchart .ring.bad{stroke:var(--bad)}
.fxchart .chip{fill:var(--surface);stroke-width:1;stroke-opacity:.5}
.fxchart .fxlbl.bad .chip{fill:var(--bad-soft);stroke:var(--bad);stroke-opacity:1;stroke-width:1.5}
.fxchart .fxlbl.warn .chip{fill:var(--warn-soft);stroke:var(--warn);stroke-opacity:1;stroke-width:1.5}
.fxchart .l{font:700 12px var(--body);fill:var(--ink)}
.fxchart .l.l2{font:500 11px var(--body);fill:var(--ink-3)}
.fxchart .l.l2 .amt{font-weight:700}.fxchart .l.l2 .aft{font-weight:600;fill:var(--ink-2)}.fxchart .l.l2 .aft.warn{fill:var(--warn)}.fxchart .l.l2 .aft.bad{fill:var(--bad)}
.fxchart .l.l3{font:700 11px var(--body)}.fxchart .l.l3.bad{fill:var(--bad)}.fxchart .l.l3.warn{fill:var(--warn)}
.fxchart .l.l1 .amt{font-weight:700}
.fxchart .fxmk,.fxchart .fxlbl{cursor:pointer}
.fxchart .fxmk:hover path,.fxchart .fxmk.is-hot path{stroke:var(--ink);stroke-width:2}
.fxchart .fxlbl:hover .chip,.fxchart .fxlbl.is-hot .chip{stroke-opacity:1;stroke-width:1.8}
.fxnote{padding:4px 8px 6px;font-size:13px;color:var(--ink-2)}
.fxrail{border-top:1px solid var(--line);min-width:0}
.fxrail-h{padding:9px 14px 6px;font-size:12.5px;color:var(--ink-3)}
table.fxrailt{width:100%;border-collapse:collapse}
table.fxrailt td{padding:7px 8px;border-top:1px solid var(--line);vertical-align:top;font-size:13.5px}
table.fxrailt tr.same td{border-top:0;padding-top:0}
table.fxrailt tr{cursor:pointer}table.fxrailt tr:hover td,table.fxrailt tr.is-hot td{background:var(--surface-2)}
table.fxrailt td.d{white-space:nowrap;font-weight:600;color:var(--ink-2);width:58px;padding-left:14px}
table.fxrailt td.g{width:18px;padding-left:0;padding-right:0}
table.fxrailt td.a b{display:block;line-height:1.25}
table.fxrailt td.m{text-align:right;white-space:nowrap;padding-right:14px}
table.fxrailt td.m b{font-variant-numeric:tabular-nums}
table.fxrailt tr.bad td.m .sub.bad{color:var(--bad);font-weight:700}table.fxrailt tr.warn td.m .sub.warn{color:var(--warn);font-weight:600}
table.fxrailt tr.bad{box-shadow:inset 3px 0 0 var(--bad)}table.fxrailt tr.warn{box-shadow:inset 3px 0 0 var(--warn)}
.fxkey{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink-2);margin-right:4px;white-space:nowrap}
.fxkey i{display:inline-block;width:18px;height:3px;border-radius:2px}
.fxkey i.dash{height:0;border-top:2px dashed #7c3aed;width:18px}
i.fxtri{display:inline-block;width:0;height:0;border:0;border-radius:0;overflow:visible;border-left:6px solid transparent;border-right:6px solid transparent;background:none}
i.fxtri.down{border-top:10px solid var(--fxbuy)}i.fxtri.up{border-bottom:10px solid var(--fxsell)}
i.fxtri.down.sell{border-top-color:var(--fxsell)}i.fxtri.up.buy{border-bottom-color:var(--fxbuy)}i.fxtri.what,i.fxtri.hollow{border-top-color:var(--fxwhat);border-bottom-color:var(--fxwhat);opacity:.85}
table.fxrailt i.fxtri{border-left-width:5px;border-right-width:5px;margin-top:4px}table.fxrailt i.fxtri.down{border-top-width:9px}table.fxrailt i.fxtri.up{border-bottom-width:9px}
.fxchart path.mk{stroke:var(--surface);stroke-width:1.5}.fxchart path.mk.buy{fill:var(--fxbuy)}.fxchart path.mk.sell{fill:var(--fxsell)}.fxchart path.mk.what{fill:var(--fxwhat)}
.fxchart path.mk.hollow{fill:var(--surface);stroke:var(--fxwhat);stroke-width:2}
.fxchart .scen{fill:none;stroke:var(--fxwhat);stroke-width:1.5;stroke-dasharray:3 2}.fxchart .scendot{fill:var(--fxwhat)}
.fxchart .lead{fill:none;stroke-width:1.25}
.fxtip{position:fixed;z-index:60;max-width:330px;background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:10px;box-shadow:var(--shadow,0 8px 24px rgba(0,0,0,.18));padding:10px 12px;font-size:13px;pointer-events:none}
.fxtip b{font-size:14px}.fxtip .sub{margin-top:2px}
.fxtipt{width:100%;border-collapse:collapse;margin-top:6px}
.fxtipt td{padding:2px 0;vertical-align:top}.fxtipt td.num{text-align:right;padding-left:14px;white-space:nowrap}
.fxtipt tr.tot td{border-top:1px solid var(--line);font-weight:700;padding-top:4px}
.fxtipt tr.neg td{color:var(--bad);font-weight:700}
.fxscbar{border-color:var(--warn)}.fxscbar>.hd{background:var(--warn-soft)}
.fxscn{color:var(--warn)}
table.fxtbl td{vertical-align:top}
table.fxtbl b.big{font-size:17px}
table.list tr.fxsc td{background:var(--warn-soft)}
table.list tr.fxsc:hover td{background:var(--warn-soft)}
.fxdate,.fxsel,.fxamt{border:1px solid var(--line-strong);border-radius:6px;padding:5px 7px;background:var(--surface);color:var(--ink);font:inherit;font-size:13.5px}
.fxdate.sc,.fxsel.sc,.fxamt.sc{border-color:var(--warn);background:var(--warn-soft)}
.fxamt{width:112px}.fxsel{max-width:220px}
.fxloan{margin-top:5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fxhand{margin-top:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fxbreak{max-width:300px;line-height:1.35}
.fxchips{display:flex;flex-wrap:wrap;gap:4px}.fxchips .chip{font-weight:500}
table.fxtl td.fxout{color:var(--bad)}table.fxtl td.fxin{color:var(--ok)}
table.list tr.fxneg td{background:var(--bad-soft)}table.list tr.fxneg td b{color:var(--bad)}
table.list tr.fxlow td b{color:var(--warn)}
table.list tr.fxpaid td{color:var(--ink-3)}
table.list tr.fxwhatif td{background:var(--warn-soft)}
@media (max-width:700px){.fxverdict{padding:14px}.fxv-main>b{font-size:17px}.fxpill{min-width:140px;flex:1}.fxchart{padding:4px 2px;overflow-x:auto}.fxchart svg{min-width:860px}}   /* a phone scrolls the chart sideways, like the tables, instead of shrinking it */

/* ---- All entries: the ledger on the Payout tracker, and the accountant's login (Allie 2026-10-14) ---- */
.plbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.plbar.plbar2{border-top:1px solid var(--line);padding-top:10px}
.plbar .search.plq{flex:1 1 320px;max-width:none;margin:0}
.plbar .fin{border:1px solid var(--line-strong);background:var(--surface);border-radius:7px;padding:6px 10px;font-size:14px;color:var(--ink);width:150px}
.plbar .fin.amt{width:104px}
.plbar .lbl{font-size:12.5px;color:var(--ink-3)}
.plbar .grp{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.mtiles.pltot{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:12px 0 14px}
table.pledger{min-width:1080px}
table.pledger td{vertical-align:top}
table.pledger td.amt,table.pledger th.amt{text-align:right;white-space:nowrap}
table.pledger td.amt b.in{color:var(--ok)}
table.pledger tbody tr{cursor:default}
table.pledger tr.pold td{opacity:.7}
table.pledger tr.grp td{background:var(--surface-2);font-weight:700;color:var(--ink);padding-top:9px;padding-bottom:9px}
table.pledger tr.grp td .sub{font-weight:400;margin-left:10px}
table.pledger tr.grp:hover td{background:var(--surface-2)}
mark.hit{background:#FFE88A;color:inherit;padding:0 3px;border-radius:3px}
:root[data-theme=dark] mark.hit{background:#7A5D00}
.top .search.acctnote{display:inline-flex;align-items:center;color:var(--ink-3);font-size:13.5px;background:none;border:0}
.side .nav .vo{font-weight:400;font-size:12px;color:var(--ink-3);margin-left:auto}

/* ---- Vendors tab on the Payout tracker (Allie 2026-10-14) ---- */
table.vendors{min-width:980px}
table.vendors tbody tr.vrow{cursor:pointer}
table.vendors tr.vrow.open td{background:var(--surface-2)}
table.vendors td.amt,table.vendors th.amt{text-align:right;white-space:nowrap}
table.vendors .vcaret{display:inline-block;width:16px;color:var(--ink-3)}
table.vendors tr.vdet td{padding:0 14px 14px 30px;background:var(--surface-2)}
table.vendors tr.vdet:hover td{background:var(--surface-2)}
.vjobs{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.vjob{background:var(--surface);border:1px solid var(--line);border-radius:8px}
.vjobhd{display:flex;gap:12px;align-items:baseline;padding:9px 14px;border-bottom:1px solid var(--line);font-size:14.5px}
table.vlines{min-width:860px}
.plqnote{flex:1 1 320px}
/* the inventory sheets for agents and cash buyers (2026-10-14) */
.invsheets{display:flex;flex-direction:column;gap:8px}
.invsheet{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px;cursor:pointer}
.invsheet input{width:16px;height:16px;margin:0}
.invsheet .hdlk{margin-left:2px}
.invbar{margin-top:-4px}
table.inv{width:100%;border-collapse:collapse;font-size:13.5px}
table.inv th{font-size:12.5px;font-weight:600;color:var(--ink-3);text-align:left;padding:5px 8px;border-bottom:1px solid var(--line)}
table.inv td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}

/* ---- Ask the CRM: the assistant drawer (G 2026-10-18; js/assistant.js) ---- */
.aibtn{padding:6px 11px;font-size:13.5px;gap:5px;border-color:var(--brand);color:var(--brand)}
.aibtn:hover{background:var(--brand-soft)}
.aidrawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--surface);border-left:1px solid var(--line);box-shadow:-20px 0 40px -20px rgba(0,0,0,.35);z-index:38;display:flex;flex-direction:column}
.aidrawer[hidden]{display:none}
.aidrawer .aihd{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
.aidrawer .aihd>div{flex:1;min-width:0;display:flex;flex-direction:column}
.aidrawer .aihd b{font-size:16px}
.aidrawer .aihd .sub{font-size:12.5px;color:var(--ink-3)}
.aidrawer .aimsgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}
.aim{max-width:92%;padding:9px 12px;border-radius:12px;font-size:14.5px;line-height:1.45;overflow-wrap:anywhere}
.aim.mine{align-self:flex-end;background:var(--ink);color:var(--surface);border-bottom-right-radius:4px;white-space:pre-wrap}
.aim.ai{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:4px}
.aim.ai p{margin:0}.aim.ai p+p,.aim.ai p+ul,.aim.ai p+ol,.aim.ai ul+p,.aim.ai ol+p{margin-top:8px}
.aim.ai ul,.aim.ai ol{margin:0;padding-left:20px}.aim.ai li{margin:2px 0}
.aim.ai code{font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 4px}
.aim.ai a{color:var(--brand);font-weight:600}
.aim.aidid{align-self:flex-start;font-size:13px;color:var(--ok);background:var(--ok-soft);padding:5px 10px}
.aim.aierr{align-self:flex-start;font-size:13.5px;color:var(--bad);background:var(--bad-soft)}
.aim.aiwait{align-self:flex-start;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:8px}
.aim.aiask{align-self:stretch;max-width:none;background:var(--brand-soft);border:1px solid var(--brand)}
.aim.aiask b{display:block;margin-bottom:4px}
.aim.aiask .sub{font-size:12.5px;color:var(--ink-3);margin-top:6px}
.aim.aiask .aibtns{display:flex;gap:8px;margin-top:10px}
.aihello{color:var(--ink-2);font-size:14px}.aihello p{margin:0 0 10px}
.aistart{display:flex;flex-wrap:wrap;gap:6px}
.aistart .chip{cursor:pointer;white-space:normal;text-align:left;font-weight:500;padding:5px 11px}
.aistart .chip:hover{border-color:var(--brand);color:var(--brand)}
.aidrawer .aiform{display:flex;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);align-items:flex-end}
.aidrawer .aiform textarea{flex:1;min-width:0;resize:none;border:1px solid var(--line-strong);border-radius:8px;padding:9px 10px;font:inherit;font-size:14.5px;background:var(--surface);color:var(--ink);max-height:140px}
.aidrawer .aiform textarea:disabled{background:var(--surface-2);color:var(--ink-3)}
.dots{display:inline-flex;gap:3px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:ai-dot 1.1s infinite ease-in-out}
.dots i:nth-child(2){animation-delay:.18s}.dots i:nth-child(3){animation-delay:.36s}
@keyframes ai-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
body.aiopen #isbubble{right:calc(min(420px,100%) + 18px)}
@media (min-width:1200px){body.aiopen .main{padding-right:min(420px,100%)}}
@media (max-width:700px){.aidrawer{width:100%;z-index:45}.aibtn .ailbl{display:none}body.aiopen #isbubble{display:none}}

/* the compose box under a conversation (G 2026-10-18) */
.compose{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}
.compose .fromrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px}
.compose .fromrow label{font-weight:600}
.compose select{border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px;background:var(--surface);color:var(--ink);max-width:100%}
.compose .row{display:flex;gap:8px;align-items:flex-end}
.compose textarea{flex:1;min-width:0;min-height:54px;border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;resize:vertical;font:inherit;font-size:14.5px;background:var(--surface);color:var(--ink)}

/* the cash-buyer fields on a contact (G 2026-10-18) */
.bfgroup{border-top:1px solid var(--line)}
.bfrow{display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr) auto;gap:10px 14px;align-items:start;padding:7px 0;border-bottom:1px solid var(--line)}
.bfrow:last-child{border-bottom:0}
.bflabel{font-weight:600;font-size:13.5px;padding-top:3px}
.bflabel code{font-weight:400}
.bfval{min-width:0;font-size:14px}
.bfopts{display:flex;flex-wrap:wrap;gap:6px}
.chip.bfopt{cursor:pointer;background:var(--surface);color:var(--ink-2)}
.chip.bfopt.on{font-weight:600}
.chip.bfopt.legacy.on{background:var(--surface-2);color:var(--ink-2);border-style:dashed}
.chip.bfopt[disabled]{cursor:default}
.bfctl{display:flex;gap:4px;flex-wrap:wrap}
.bfoptrow{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.bfoptrow input{flex:1;min-width:0;border:1px solid var(--line-strong);border-radius:6px;padding:6px 8px;background:var(--surface);color:var(--ink)}
.bfoptrow select{border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px;background:var(--surface);color:var(--ink)}
.bfoptrow .dot{width:16px;height:16px;border-radius:50%;flex:none;border:1px solid var(--line)}
@media (max-width:720px){.bfrow{grid-template-columns:1fr}.bfctl{grid-column:1}}
/* Before contract tab on the Payout tracker (G 2026-10-20) */
table.prelist tr.pregrp td{background:var(--surface-2)}table.prelist tr.pregrp.hit td{background:color-mix(in srgb,var(--warn) 12%,var(--surface-2))}
table.prelist tr.pregrp .sub{margin-left:8px}table.prelist tr.pregrp .kind{display:inline;margin-left:8px;font-size:11.5px;color:var(--ink-3)}
table.prelist tr.pregrp .prewhere{display:inline-flex;gap:8px;align-items:center;margin-left:12px;flex-wrap:wrap}
.callout.prematch{margin:0 0 12px;border-color:var(--warn)}
details.predone>summary{cursor:pointer;list-style:none}details.predone>summary::-webkit-details-marker{display:none}details.predone>summary h3::before{content:"\25B8";display:inline-block;width:16px;color:var(--ink-3)}details.predone[open]>summary h3::before{content:"\25BE"}
/* a package's other addresses (G 2026-10-23): one box per property on + New property and Purchase facts */
.pkgrow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0;background:var(--surface-2)}
.pkgrow-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.pkgrow .pickres{position:relative}
.pkgaddrs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:2px 0 4px;font-size:13.5px;color:var(--ink-2)}
/* ---- smrtPhone's Chrome extension (G 2026-10-29, from Dispo › Offers: "the send text is blurring with the interested button") ----
   The team runs smrtPhone's click-to-call extension. On every page it rewrites each phone link (tel:) into its own
   click-to-call link and appends a second link right after it, " Send Text" (an <a class="smrtphoneText"
   data-extension="smrtPhone">). The CRM never renders that link, so it wore whatever its parent wore. In the Offers
   sheet's phone column (fixed 160px, never wraps) it ran out of the cell under the next column, where the where-they-are
   chip painted over it ("Senc"). Census 10/29 of every tel: link v2 renders: the Offers column was the one overflow; the
   property page's compact buyer cards (the link crowds the name) and the ✆ ✉ icon rows beside a person (plain text
   between two buttons) just looked rough. The rules below give the injected link a place everywhere a phone number can
   appear; with the extension off nothing matches and nothing changes. v1's three tel: links sit in wrapping rows. */
a.smrtphoneText[data-extension="smrtPhone"]{display:inline-block;margin-left:6px;font-size:12px;font-weight:500;line-height:1.3;color:var(--brand);white-space:nowrap;vertical-align:baseline}
/* the Offers sheet's phone column: its own line under the number, above "call and text history" */
table.offers .ophone a.smrtphoneText[data-extension="smrtPhone"]{display:block;margin:1px 0 0;font-weight:500}
/* the ✆ ✉ icon rows beside a person (follow-up card, lenders, people on the property): dressed like the buttons it lands between */
.acts a.smrtphoneText[data-extension="smrtPhone"]{display:inline-flex;align-items:center;height:30px;margin:0;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font-size:12.5px;color:var(--ink)}
/* the compact buyer cards on the property page: smaller and tighter so the name keeps its room */
.bcard.cmp .nmrow a.smrtphoneText[data-extension="smrtPhone"]{flex:none;margin-left:4px;font-size:11.5px}

/* ===== the dashboard's goal, the four quarters and the Level 10 scorecard (G 2026-11-09) =====
   One accent, the brand green. A status colour always has its words beside it. Everything recolours through the
   tokens, so dark mode needs no rules of its own. (The goal bar and the year's chart came off 2026-11-10, G.) */
.l10wait{padding:22px 16px;color:var(--ink-3)}
.l10hero{display:flex;gap:12px 28px;align-items:flex-end;flex-wrap:wrap;padding:14px 16px 14px}
.l10fig{display:flex;flex-direction:column;gap:2px;min-width:0}
.l10big{font-family:var(--display);font-size:clamp(40px,4.6vw,92px);font-weight:700;line-height:1;letter-spacing:-.01em}
.l10of{font-size:15px;color:var(--ink-2);font-weight:500}
.l10verdict{display:inline-flex;align-items:center;font-weight:700;font-size:15px;margin-top:3px}
.l10verdict.ok{color:var(--ok)}.l10verdict.warn{color:var(--warn)}.l10verdict.bad{color:var(--bad)}
.l10stats{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.l10stat{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:7px 12px;min-width:112px;display:flex;flex-direction:column;gap:1px;text-align:left;font:inherit;color:inherit}
.l10stat span{font-size:12.5px;color:var(--ink-3);font-weight:600}
.l10stat b{font-family:var(--display);font-size:20px;font-weight:700;line-height:1.15;white-space:nowrap}
.l10stat b small{font-family:var(--body);font-size:12.5px;font-weight:500;color:var(--ink-3)}
button.l10stat:hover{border-color:var(--ink-3)}
.l10leg{display:flex;gap:5px 18px;flex-wrap:wrap;padding:8px 16px 12px;font-size:12.5px;color:var(--ink-3)}
.l10leg>span{display:inline-flex;align-items:center;gap:6px}
.l10leg .k{display:inline-block;width:18px;height:0;border-top:2.5px solid var(--brand)}
.l10leg .sdot{margin-right:0}
.l10leg.grid{border-top:1px solid var(--line);padding-bottom:9px}
.l10flags{display:flex;gap:6px 16px;flex-wrap:wrap;padding:0 16px 12px}
.l10flag{font-size:13.5px;font-weight:600;color:var(--warn)}
.l10qs{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:10px}
/* the goal card: the year on the left, the quarter we are in on the right (stacked on a narrow screen) */
.l10top{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);align-items:start}
.l10top .l10hero{align-items:flex-start;flex-direction:column}.l10top .l10stats{margin-left:0}
.l10cur{padding:14px 16px 14px 0}.l10cur .l10q{width:100%}
/* where every property stands, under the year and the quarter in the same card */
.l10goal .tiles{padding:14px 16px 16px;border-top:1px solid var(--line);gap:10px}
.l10goal .tile{padding:10px 12px 10px 16px}.l10goal .tile .big{font-size:28px}
.l10goal .tile .kv b{white-space:nowrap;overflow-wrap:normal}.l10top .l10flags{padding:4px 0 0}
.l10q{--c:var(--line-strong);position:relative;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px 10px 16px;display:flex;flex-direction:column;gap:3px;overflow:hidden;font:inherit;color:inherit}
.l10q::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--c)}
.l10q.hit{--c:var(--ok)}.l10q.miss{--c:var(--ink-3)}.l10q.now{--c:var(--brand-fill)}
.l10q:hover{border-color:var(--ink-3)}
.l10q.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.l10q .nm{font-family:var(--display);font-weight:700;font-size:16px}
.l10q .nm small{font-family:var(--body);font-size:13px;font-weight:500;color:var(--ink-3);margin-left:4px}
.l10q .big{font-family:var(--display);font-weight:700;font-size:26px;line-height:1.1}
.l10q .big small{font-family:var(--body);font-size:13.5px;font-weight:600;color:var(--ink-3);margin-left:6px}
.l10q .meter{position:relative;height:8px;border-radius:4px;background:var(--brand-soft);margin:5px 0 3px}
.l10q .meter i{display:block;height:100%;border-radius:4px;background:var(--brand)}
.l10q .meter b{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;background:var(--ink);border-radius:1px}
.l10q .mo{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:2px 0 1px}
.l10q .mo>span{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.l10q .mo i{font-style:normal;font-size:12px;font-weight:600;color:var(--ink-3)}
.l10q .mo b{font-size:14px;font-variant-numeric:tabular-nums;min-height:1.25em}
.l10q .mo em{font-style:normal;font-size:12px;color:var(--ink-3);min-height:1.25em}
.l10q .lk{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;color:var(--ink-2);border-top:1px dashed var(--line);padding-top:4px;margin-top:3px}
.l10q .lk b{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
table.l10grid{min-width:900px;border-collapse:separate;border-spacing:0}
table.l10grid th,table.l10grid td{padding:7px 2px;text-align:center;font-size:13.5px;white-space:nowrap}
table.l10grid th.m,table.l10grid td.m{text-align:left;position:sticky;left:0;z-index:1;background:var(--surface);min-width:214px;max-width:290px;white-space:normal;padding-left:14px;border-right:1px solid var(--line)}
table.l10grid td.m b{display:block;font-weight:600;font-size:14px;line-height:1.25}
table.l10grid td.m .by{display:flex;align-items:center;gap:4px 10px;flex-wrap:wrap;margin-top:3px}
table.l10grid td.m .who{font-size:12.5px;color:var(--ink-3)}
table.l10grid td.m .tgt{font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
table.l10grid td.m .who .av{width:18px;height:18px;font-size:8.5px}
table.l10grid th.w b{display:block;font-size:12.5px;color:var(--ink-2)}
table.l10grid th.w span{display:block;font-size:12px;font-weight:500;color:var(--ink-3)}
table.l10grid .w.now{background:var(--brand-soft)}
table.l10grid td.w.off{background:var(--bad-soft)}
/* the Quarter column stays pinned on the right like the names on the left: once typed numbers widen the weeks past a laptop's width, the weeks scroll between the two */
table.l10grid th.t,table.l10grid td.t{text-align:right;padding-right:14px;font-weight:700;border-left:1px solid var(--line);position:sticky;right:0;z-index:1;background:var(--surface)}
.l10cell{display:inline-flex;align-items:center;border:0;background:none;padding:2px 4px;border-radius:5px;font:inherit;color:inherit;font-weight:600;font-variant-numeric:tabular-nums}
.l10cell:hover{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-strong)}
.l10cell.add{color:var(--ink-3);font-weight:500}
/* a typed weekly value is free text: a sentence is cut to the column (the whole of it is in the hover and in the box that opens) */
.l10cell .tx{display:inline-block;max-width:6ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.l10cell.ro:hover{background:none;box-shadow:none}
table.l10grid .sdot{width:7px;height:7px;margin-right:4px;flex:none}
.l10now{border-top:1px solid var(--line)}
.l10now h4{margin:0;padding:10px 14px 0;font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
table.l10grid tr.exp td{padding-top:3px;padding-bottom:5px;color:var(--ink-3)}
table.l10grid tr.exp td.m span{font-size:13px;font-weight:500;font-style:italic;padding-left:10px}
table.l10grid tr.exp .l10cell{font-weight:500;font-style:italic;border-bottom:1px dashed var(--brand);border-radius:0;padding:0 2px}
table.l10grid tr.exp td.t{font-weight:500;font-style:italic}
.l10lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.l10lists.one{grid-template-columns:minmax(0,1fr)}
table.l10list{min-width:0}
table.l10list td{padding:7px 14px}table.l10list th{padding:7px 14px}
table.l10list td:first-child,table.l10list td.r{white-space:nowrap}table.l10list td:first-child{color:var(--ink-2)}
.l10now table.plain td .l10cell{font-size:15px;padding-left:0}
.l10st{display:inline-flex;align-items:center;white-space:nowrap;font-weight:600}
.l10blist{display:flex;flex-direction:column}
.l10brow{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}
.l10brow:last-child{border-bottom:0}
.l10brow b.num{white-space:nowrap}
.l10bsub{margin:0;color:var(--ink-2)}
.l10wrap{container-type:inline-size;display:flex;flex-direction:column;gap:inherit;min-width:0}
@container (max-width:900px){.l10top{grid-template-columns:minmax(0,1fr)}.l10cur{padding:0 16px 14px}.l10qs{grid-template-columns:repeat(2,minmax(0,1fr))}.l10stats{margin-left:0}.l10lists{grid-template-columns:minmax(0,1fr)}}
@container (max-width:460px){.l10qs{grid-template-columns:minmax(0,1fr)}}
@media (max-width:700px){
  table.l10list td,table.l10list th{padding:7px 10px}table.l10list td:first-child{white-space:normal}
  .l10hero{padding:12px 12px 2px}.l10stats{width:100%}.l10stat{min-width:0;flex:1 1 128px}
  table.l10grid{min-width:0}table.l10grid .far{display:none}
  table.l10grid th.t,table.l10grid td.t{padding-right:10px}table.l10grid tr.exp td.t{white-space:normal}
  /* laid out by rule, not by what is typed in it: three weeks and the Quarter column always fit a phone, and a long
     value is cut (the whole of it is on hover and in its box) */
  table.l10grid{table-layout:fixed;width:100%}table.l10grid th.m{width:31%}table.l10grid th.t{width:22%}
  table.l10grid th.w,table.l10grid td.w{overflow:hidden;text-overflow:ellipsis}table.l10grid .l10cell{max-width:100%;overflow:hidden}table.l10grid .l10cell .tx{max-width:100%}
  table.l10list td.r{white-space:normal}
  table.l10grid th.m,table.l10grid td.m{min-width:124px;max-width:150px;padding-left:10px}table.l10grid td.m .who{display:none}table.l10grid td.m .by{margin-top:1px}
  table.l10grid td.m b{font-size:13px}
  .l10now table.plain{min-width:0}.l10now .ph{display:none}.l10now table.plain th,.l10now table.plain td{padding:8px 10px}
}
