/* ═══════════════════════════════════════════════════════════════
   HRHS design system — the product stylesheet.
   Ported from the approved prototype set (hrhs-system.css in the design
   folder); every token and component below was settled there. Do not
   restyle here what a comp settled — change the comp, then port.
   ═══════════════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  /* Surface */
  --page:#F1F4F9; --card:#FFF; --tint:#F7F9FC;
  --line:#E4EAF3; --line-soft:#EEF2F8;

  /* Ink */
  --ink:#0A1A2F; --ink-2:#3D5069; --muted:#7488A1; --faint:#9AABC0;

  /* Brand */
  --green:#0BFF84;        /* fill only — never text on light */
  --go:#0A7A4B;           /* legible green: text, dots, focus */
  --go-bed:#E6F7EF;

  /* Earned status */
  --gold:#C9A227; --gold-bed:#FBF4E2; --gold-line:#E7D6A6;

  /* Caveat */
  --warn-bed:#FFF7E8; --warn-line:#F0DFB8; --warn-ink:#8A5A05; --warn-deep:#6E4704;

  /* Geometry */
  --r:18px; --r-tile:14px; --r-chip:8px;
  --shell:1240px;
  --dock:calc(74px + env(safe-area-inset-bottom));

  --lift:0 1px 2px rgba(10,26,47,.05),0 10px 28px -14px rgba(10,26,47,.22);
  --lift2:0 2px 6px rgba(10,26,47,.07),0 22px 48px -20px rgba(10,26,47,.3);
}

*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--page);color:var(--ink);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}
.mono{font-family:'IBM Plex Mono',monospace}

/* ── Masthead ───────────────────────────────────────────────── */
.mast{background:var(--ink);position:sticky;top:0;z-index:40}
.mast__in{max-width:var(--shell);margin:0 auto;padding:0 32px;height:68px;
  display:flex;align-items:center;gap:36px}
.mast__logo{font-weight:800;font-size:24px;letter-spacing:-.045em;color:var(--green);flex:0 0 auto}
.mast__logo span{color:#fff}
.mast__nav{display:flex;gap:24px;font-size:14.5px;font-weight:500;color:#B9C6D8}
.mast__nav a:hover,.mast__nav a[aria-current]{color:#fff}
.mast__right{margin-left:auto;display:flex;gap:12px;align-items:center}
.mast__icon{width:40px;height:40px;border-radius:11px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.05);display:grid;place-items:center;color:#C7D3E3;position:relative}
.mast__icon i{position:absolute;top:8px;right:9px;width:7px;height:7px;border-radius:50%;
  background:var(--green);border:2px solid var(--ink)}
.mast__pill{background:var(--green);color:var(--ink);font-weight:700;font-size:14px;
  padding:9px 19px;border-radius:99px;box-shadow:0 4px 18px rgba(11,255,132,.3);flex:0 0 auto}
.burger{display:none;width:44px;height:44px;border:0;background:transparent;
  flex-direction:column;justify-content:center;gap:5px;align-items:flex-end}
.burger i{display:block;height:2px;width:22px;background:#fff;border-radius:2px}

/* ── Community strip ────────────────────────────────────────── */
.strip{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:var(--hrhs-hdr-h,74px);z-index:35}
.strip__in{max-width:var(--shell);margin:0 auto;padding:0 32px;min-height:64px;
  display:flex;align-items:center;gap:24px}
.cswitch{display:inline-flex;align-items:center;gap:11px;border:1px solid var(--line);
  background:var(--card);border-radius:12px;padding:7px 13px 7px 8px;min-height:46px;flex:0 0 auto}
.cswitch:hover{background:var(--tint);border-color:#D4DEEC}
.ctile{border-radius:9px;flex:0 0 auto;display:grid;place-items:center;color:#fff;
  font-weight:800;letter-spacing:-.02em;
  background:linear-gradient(135deg,hsl(206 46% 22%),hsl(220 52% 34%))}
.cswitch .ctile{width:32px;height:32px;font-size:12.5px}
.cswitch__t{text-align:left;line-height:1.2;min-width:0}
.cswitch__t b{display:block;font-size:14.5px;font-weight:700;letter-spacing:-.015em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.cswitch__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:10.5px;
  color:var(--muted);margin-top:2px}
.cswitch__go{color:var(--faint);font-size:12px}

.snav{display:flex;gap:22px;font-size:14.5px;font-weight:500;color:var(--ink-2);
  align-items:center;align-self:stretch;min-width:0}
.snav a{display:flex;align-items:center;border-bottom:2px solid transparent;
  margin-bottom:-1px;white-space:nowrap}
.snav a:hover{color:var(--ink)}
.snav a[aria-current]{color:var(--ink);font-weight:600;border-bottom-color:var(--go)}
.strip__right{margin-left:auto;display:flex;align-items:center;gap:10px;flex:0 0 auto}
.rolechip{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  background:var(--tint);border:1px solid var(--line);border-radius:7px;padding:5px 9px;
  color:var(--muted);white-space:nowrap}
.rolechip--board{background:var(--ink);border-color:var(--ink);color:#fff}

/* ── Shell ──────────────────────────────────────────────────── */
.wrap{max-width:var(--shell);margin:0 auto;padding:24px 32px 90px}
.wrap--narrow{max-width:860px}
.split{display:grid;grid-template-columns:1fr 340px;gap:24px;align-items:start}
.split--wide{grid-template-columns:minmax(0,1fr) 400px}
.split--even{grid-template-columns:420px minmax(0,1fr)}
/* Data tables size to the column they sit in, not to the window. A table
   inside a 400px rail on a 2400px screen is still a 400px table. */
.rows{container-type:inline-size}

/* ── Page head ──────────────────────────────────────────────── */
.phead{display:flex;align-items:flex-end;gap:18px;margin-bottom:20px;flex-wrap:wrap}
.phead__t{flex:1;min-width:0}
.phead h1{margin:0;font-size:28px;font-weight:800;letter-spacing:-.035em;line-height:1.15}
.phead p{margin:6px 0 0;font-size:14.5px;color:var(--ink-2);max-width:62ch}
.phead__acts{display:flex;gap:9px;flex:0 0 auto}

/* ── Proof strip ────────────────────────────────────────────── */
.proofcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--lift);overflow:hidden;margin-bottom:22px}
.proof{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft)}
.proof__i{background:var(--card);padding:17px 22px}
.proof__n{font-size:22px;font-weight:800;letter-spacing:-.03em;line-height:1.1}
.proof__n em{font-style:normal;color:var(--faint);font-size:15px;font-weight:600}
.proof__n small{font-size:13px;font-weight:600;color:var(--go)}
.proof__l{font-size:11.5px;color:var(--muted);margin-top:3px}

/* ── Section card ───────────────────────────────────────────── */
.sec{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--lift);padding:24px 28px;margin-bottom:20px}
.sec--flush{padding:0;overflow:hidden}
.sec__hd{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:15px}
.sec--flush .sec__hd{padding:20px 24px 0;margin-bottom:14px}
.sec__t{font-size:18px;font-weight:700;letter-spacing:-.024em;margin:0}
.sec__n{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--faint);flex:0 0 auto}
.sec p{margin:0 0 14px;color:var(--ink-2);font-size:15px;line-height:1.65}
.sec p:last-child{margin-bottom:0}
.eyebrow{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;
  color:var(--go);margin-bottom:6px}
.eyebrow--quiet{color:var(--muted)}

/* ── Rail ───────────────────────────────────────────────────── */
.rail{position:sticky;top:190px;display:flex;flex-direction:column;gap:16px}
.rcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--lift);padding:20px}
.rcard__hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}
.rcard__t{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.rcard__n{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--faint)}
.rlink{font-size:13.5px;font-weight:600;color:var(--go);display:inline-flex;
  align-items:center;gap:5px;margin-top:14px}

/* ── Badges ─────────────────────────────────────────────────── */
.bdg{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;
  border-radius:7px;padding:5px 9px;line-height:1;white-space:nowrap}
.bdg--now{background:var(--green);color:#062B18;box-shadow:0 2px 10px rgba(11,255,132,.4)}
.bdg--now .beacon{width:7px;height:7px;border-radius:50%;background:#062B18;position:relative;flex:0 0 auto}
.bdg--now .beacon::after{content:"";position:absolute;inset:-3px;border-radius:50%;
  border:1.5px solid rgba(6,43,24,.5);animation:pulse 2s ease-out infinite}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}70%{transform:scale(1.5);opacity:0}100%{opacity:0}}
.bdg--rated{background:var(--gold-bed);border:1px solid var(--gold-line);color:var(--ink)}
.bdg--ink{background:var(--ink);color:var(--green)}
.bdg--quiet{background:var(--tint);border:1px solid var(--line);color:var(--muted)}
.bdg--go{background:var(--go-bed);color:var(--go)}
.bdg--warn{background:var(--warn-bed);border:1px solid var(--warn-line);color:var(--warn-ink)}

/* ── Buttons ────────────────────────────────────────────────── */
.btn{height:48px;padding:0 20px;border-radius:13px;border:0;font-size:14.5px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:inherit}
.btn--go{background:var(--green);color:var(--ink);box-shadow:0 4px 18px rgba(11,255,132,.36)}
.btn--dark{background:var(--ink);color:#fff}
.btn--out{background:var(--card);border:1px solid var(--line);color:var(--ink)}
.btn--out:hover{background:var(--tint)}
.btn--sm{height:40px;padding:0 15px;border-radius:11px;font-size:13.5px}
.btn--xs{height:34px;padding:0 12px;border-radius:9px;font-size:12.5px;font-weight:600}
.btn--full{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}
.acts{display:flex;gap:9px;flex-wrap:wrap}
.acts--t{margin-top:14px}

/* ── Chips ──────────────────────────────────────────────────── */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-size:13px;font-weight:500;color:var(--ink-2);background:var(--tint);
  border:1px solid var(--line-soft);border-radius:9px;padding:7px 11px}
.chip--lead{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}
.fchip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);
  background:var(--card);border-radius:999px;padding:8px 14px;font-size:13.5px;
  font-weight:600;color:var(--ink-2);font-family:inherit;min-height:40px}
.fchip[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.fchip em{font-style:normal;font-family:'IBM Plex Mono',monospace;font-size:11.5px;opacity:.55}

/* ── Empty / locked / caveat ────────────────────────────────── */
.empty{border:1px dashed var(--line);border-radius:14px;padding:26px 22px;
  text-align:center;background:var(--tint)}
.empty__t{font-size:15px;font-weight:600;margin-bottom:5px}
.empty__p{font-size:13.5px;color:var(--muted);line-height:1.55;max-width:46ch;margin:0 auto 16px}
.empty__p:last-child{margin-bottom:0}
.locked{border:1px dashed var(--line);border-radius:13px;padding:15px;text-align:center;background:var(--tint)}
.locked__n{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--faint);letter-spacing:2px}
.locked__l{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.45}
.deadnote{font-size:12.5px;line-height:1.55;color:var(--warn-ink);background:var(--warn-bed);
  border:1px solid var(--warn-line);border-radius:11px;padding:12px 14px;margin:14px 0 0}
.deadnote b{color:var(--warn-deep)}
.deadnote code{font-family:'IBM Plex Mono',monospace;font-size:11px;
  background:rgba(0,0,0,.05);padding:1px 4px;border-radius:4px}

/* ── Forms ──────────────────────────────────────────────────── */
.fld{margin-bottom:20px}
.fld:last-child{margin-bottom:0}
.fld__l{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.13em;
  color:var(--muted);margin-bottom:9px;display:flex;align-items:baseline;gap:7px}
.fld__opt{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--faint);
  text-transform:none;letter-spacing:0;margin-left:auto}
.in,.ta,.sel{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;
  font-size:15px;font-family:inherit;color:var(--ink);background:var(--card);outline:0;line-height:1.55}
.ta{min-height:150px;resize:vertical;font-family:'IBM Plex Mono',monospace;font-size:13.5px;line-height:1.7}
.in:focus,.ta:focus,.sel:focus{border-color:#B9C9DD;box-shadow:0 0 0 3px rgba(11,255,132,.14)}
.in::placeholder,.ta::placeholder{color:var(--faint)}
.hint{font-size:12.5px;color:var(--muted);margin:9px 0 0;line-height:1.5}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}

.check{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--line);
  border-radius:13px;background:var(--card);margin-bottom:10px;text-align:left;width:100%;
  font-family:inherit}
.check:last-of-type{margin-bottom:0}
.check__box{width:22px;height:22px;border-radius:7px;border:1.5px solid #C6D2E1;flex:0 0 auto;
  display:grid;place-items:center;margin-top:1px;background:var(--card);color:transparent;
  font-size:12px;font-weight:800}
.check[aria-checked="true"] .check__box{background:var(--go);border-color:var(--go);color:#fff}
.check__t{flex:1;min-width:0;font-size:14px;line-height:1.55;color:var(--ink-2)}
.check__t b{display:block;color:var(--ink);font-size:14.5px;font-weight:600;margin-bottom:2px}

/* ── Stepper ────────────────────────────────────────────────── */
.steps{display:flex;gap:0;margin-bottom:24px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--lift);overflow:hidden}
.step{flex:1;padding:15px 20px;display:flex;gap:12px;align-items:center;
  border-right:1px solid var(--line-soft);min-width:0}
.step:last-child{border-right:0}
.step__n{width:28px;height:28px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  font-size:12.5px;font-weight:800;background:var(--tint);border:1px solid var(--line);color:var(--muted)}
.step__t{min-width:0}
.step__t b{display:block;font-size:14px;font-weight:600;letter-spacing:-.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step__t span{display:block;font-size:11.5px;color:var(--muted);margin-top:1px}
.step[data-s="done"] .step__n{background:var(--go-bed);border-color:var(--go);color:var(--go)}
.step[data-s="now"]{background:var(--tint)}
.step[data-s="now"] .step__n{background:var(--ink);border-color:var(--ink);color:var(--green)}
.step[data-s="now"] .step__t b{font-weight:700}

/* ── Capacity meter ─────────────────────────────────────────
   One number, one bar. Used for homes-on-your-plan wherever it appears. */
.cap{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.cap__n{font-size:30px;font-weight:800;letter-spacing:-.035em;line-height:1}
.cap__d{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--muted)}
.capbar{height:8px;background:var(--line);border-radius:99px;overflow:hidden;
  margin-top:12px;display:flex}
.capbar i{display:block;height:100%;background:var(--go)}
.capbar i:first-child{border-radius:99px 0 0 99px}
.capbar i:last-child{border-radius:0 99px 99px 0}
.capbar i.soft{background:var(--go-bed)}
.caplegend{display:flex;gap:15px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-top:10px}
.caplegend span{display:inline-flex;align-items:center;gap:6px}
.caplegend i{width:10px;height:10px;border-radius:3px;display:block}

/* ── Data rows / roster ─────────────────────────────────────── */
.rows{border-top:1px solid var(--line-soft)}
.row{display:grid;align-items:center;gap:14px;padding:13px 24px;
  border-bottom:1px solid var(--line-soft);width:100%;text-align:left;
  background:var(--card);border-left:0;border-right:0;border-top:0;font-family:inherit}
.row:hover{background:var(--tint)}
.row[aria-selected="true"]{background:var(--go-bed)}
.row--head{background:var(--tint);border-bottom:1px solid var(--line);
  font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted);padding-top:9px;padding-bottom:9px}
.row--head:hover{background:var(--tint)}
.row__addr{min-width:0}
.row__addr b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row__addr span{display:block;font-family:'IBM Plex Mono',monospace;font-size:11px;
  color:var(--muted);margin-top:2px}
.row__who{font-size:13.5px;color:var(--ink-2);min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row__who span{color:var(--faint)}
.row__go{color:var(--faint);font-size:15px}
.avatars{display:flex}
.av{width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-size:10.5px;font-weight:700;border:2px solid var(--card);
  margin-left:-8px;flex:0 0 auto}
.av:first-child{margin-left:0}
.av--empty{background:var(--tint);border:1.5px dashed #C6D2E1;color:var(--faint)}

/* ── Attention list ─────────────────────────────────────────── */
.att{display:flex;gap:14px;align-items:flex-start;padding:15px 0;border-bottom:1px solid var(--line-soft)}
.att:first-of-type{padding-top:0}
.att:last-of-type{border-bottom:0;padding-bottom:0}
.att__ic{width:36px;height:36px;border-radius:10px;background:var(--tint);border:1px solid var(--line);
  display:grid;place-items:center;flex:0 0 auto;font-size:15px}
.att__t{flex:1;min-width:0}
.att__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em;line-height:1.35}
.att__t span{display:block;font-size:13px;color:var(--muted);margin-top:3px;line-height:1.45}
.att__a{flex:0 0 auto;display:flex;gap:7px}

/* ── Announcements / events ─────────────────────────────────── */
.ann{display:block;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.ann:first-of-type{padding-top:0}
.ann:last-of-type{border-bottom:0;padding-bottom:0}
.ann__w{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--faint)}
.ann h4{margin:3px 0 0;font-size:14.5px;font-weight:600;letter-spacing:-.01em;line-height:1.35}
.ann__dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--go);
  vertical-align:middle;margin-left:7px}
.ev{display:flex;gap:13px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.ev:first-of-type{padding-top:0}
.ev:last-of-type{border-bottom:0;padding-bottom:0}
.ev__d{flex:0 0 auto;width:46px;text-align:center;border:1px solid var(--line);
  border-radius:11px;padding:5px 0;background:var(--tint)}
.ev__d .m{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted)}
.ev__d .n{font-size:17px;font-weight:800;letter-spacing:-.03em;line-height:1.1}
.ev__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em}
.ev__t span{display:block;font-size:12.5px;color:var(--muted);margin-top:1px}

/* ── Vendor rows ────────────────────────────────────────────── */
.vrow{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.vrow:first-of-type{padding-top:0}
.vrow:last-of-type{border-bottom:0;padding-bottom:0}
.vtile{width:36px;height:36px;border-radius:10px;flex:0 0 auto;display:grid;place-items:center;
  color:#fff;font-weight:800;font-size:12px;letter-spacing:-.02em}
.vrow__t{flex:1;min-width:0}
.vrow__t b{display:block;font-size:14px;font-weight:600;letter-spacing:-.01em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vrow__t span{display:block;font-size:11.5px;color:var(--muted);margin-top:1px}
.vrow__st{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--ink-2);flex:0 0 auto}
.vrow__st .st{color:var(--gold)}

/* ── Group job ──────────────────────────────────────────────── */
.job{padding:18px 0}
.job+.job{border-top:1px solid var(--line-soft)}
.job:first-of-type{padding-top:2px}
.job:last-of-type{padding-bottom:0}
.job__hd{display:flex;gap:14px;align-items:flex-start;margin-bottom:12px}
.job__t{flex:1;min-width:0}
.job__t h3{margin:0;font-size:16.5px;font-weight:700;letter-spacing:-.02em;line-height:1.3}
.job__t .who{font-size:13.5px;color:var(--muted);margin-top:3px}
.job__price{flex:0 0 auto;text-align:right}
.job__price b{font-family:'IBM Plex Mono',monospace;font-size:17px;font-weight:600;letter-spacing:-.02em}
.job__price span{display:block;font-size:11px;color:var(--muted);margin-top:1px}
.bar{height:7px;background:var(--line);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--go);border-radius:99px}
.bar--thin i{background:var(--faint)}
.bar__l{display:flex;justify-content:space-between;gap:12px;margin-top:8px;
  font-size:12.5px;color:var(--muted)}
.bar__l b{color:var(--ink);font-weight:600}
.bar__l .mono{font-size:11.5px}

/* ── Street glyphs ──────────────────────────────────────────── */
/* ── Proximity ──────────────────────────────────────────────
   A street is a set of homes, not a shape. The old row of house glyphs
   implied a one-sided linear street with houses in a knowable order — wrong
   for a cul-de-sac, a court or anything with two sides, and it invited the
   reader to count positions and work out which neighbour was which, which is
   the one thing the privacy rule promises it won't show. Proportion only. */
.prox{border:1px solid var(--line);border-radius:14px;overflow:hidden}
.prox__r{padding:16px 18px;border-bottom:1px solid var(--line-soft)}
.prox__r:last-child{border-bottom:0}
.prox__r--soft{background:var(--tint)}
.prox__hd{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}
.prox__where{font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.prox__n{margin-left:auto;flex:0 0 auto;font-size:19px;font-weight:800;letter-spacing:-.03em}
.prox__n em{font-style:normal;color:var(--faint);font-size:13px;font-weight:600}
.prox__cap{font-size:13.5px;color:var(--ink-2);margin:9px 0 0;line-height:1.5}
.prox__cap b{color:var(--ink);font-weight:600}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:14px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:11px;height:11px;border-radius:3px;display:block}
.street__line{font-size:15.5px;line-height:1.6;color:var(--ink-2);margin:0;max-width:58ch}
.street__line b{color:var(--ink);font-weight:700}
.privacy{display:flex;gap:7px;align-items:flex-start;font-size:12px;color:var(--muted);
  margin-top:12px;line-height:1.45}
.privacy svg{flex:0 0 auto;margin-top:1px}

/* ── Ring ───────────────────────────────────────────────────── */
.ring{display:flex;gap:15px;align-items:center}
.ring__t b{display:block;font-size:16px;font-weight:700;letter-spacing:-.02em}
.ring__t span{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}

/* ── History ────────────────────────────────────────────────── */
.hist{list-style:none;margin:16px 0 0;padding:0;border-top:1px solid var(--line-soft)}
.hist li{display:flex;gap:14px;padding:12px 2px;border-bottom:1px solid var(--line-soft);
  font-size:14.5px;color:var(--ink-2);align-items:baseline}
.hist .yr{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--faint);flex:0 0 62px}
.hist b{color:var(--ink);font-weight:600}

/* ── Pinned ─────────────────────────────────────────────────── */
.pin{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--go);
  border-radius:var(--r);box-shadow:var(--lift);padding:18px 24px;margin-bottom:20px;
  display:flex;gap:16px;align-items:flex-start}
.pin__t{flex:1;min-width:0}
.pin h3{margin:0 0 4px;font-size:17px;font-weight:700;letter-spacing:-.02em}
.pin__m{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--muted);flex:0 0 auto}
.pin p{font-size:14.5px;margin:6px 0 0;color:var(--ink-2);line-height:1.55}

/* ── Linktree rows (mobile-first action stack) ──────────────── */
.stack{display:none;padding:14px 16px 4px}
.lnk{display:flex;align-items:center;gap:13px;width:100%;background:var(--card);
  border:1px solid var(--line);border-radius:14px;padding:14px 15px;margin-bottom:9px;
  box-shadow:var(--lift);text-align:left;min-height:60px;font-family:inherit}
.lnk:active{transform:scale(.985)}
.lnk__ic{width:40px;height:40px;border-radius:11px;background:var(--tint);
  border:1px solid var(--line-soft);display:grid;place-items:center;flex:0 0 auto;font-size:17px}
.lnk__t{flex:1;min-width:0}
.lnk__t b{display:block;font-size:15px;font-weight:600;letter-spacing:-.01em}
.lnk__t span{display:block;font-size:12.5px;color:var(--muted);margin-top:1px}
.lnk__go{color:var(--faint);font-size:18px;flex:0 0 auto}
.lnk--go{background:var(--green);border-color:var(--green);box-shadow:0 4px 18px rgba(11,255,132,.34)}
.lnk--go .lnk__ic{background:rgba(6,43,24,.12);border-color:transparent}
.lnk--go .lnk__t span{color:#0A5B36}
.lnk--go .lnk__go{color:#0A5B36}

/* ── Dock ───────────────────────────────────────────────────── */
.dock{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-top:1px solid var(--line);
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));gap:9px}
.dock button{height:52px;border-radius:14px;font-size:15px;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:8px;border:0;font-family:inherit}
.dock__2nd{flex:1;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.dock__1st{flex:1.25;background:var(--green);color:var(--ink);box-shadow:0 4px 16px rgba(11,255,132,.36)}

/* ── Sheet / drawer ─────────────────────────────────────────── */
.ov{position:fixed;inset:0;background:rgba(10,26,47,.45);backdrop-filter:blur(3px);
  opacity:0;pointer-events:none;transition:opacity .24s ease;z-index:200}
.ov.on{opacity:1;pointer-events:auto}
.sh{position:fixed;left:0;right:0;bottom:0;z-index:210;background:var(--card);
  border-radius:22px 22px 0 0;box-shadow:0 -10px 46px rgba(10,26,47,.3);
  transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);
  max-height:92vh;display:flex;flex-direction:column}
.sh.on{transform:translateY(0)}
@media (min-width:760px){
  /* pointer-events: a closed sheet is centered and invisible — without this
     it silently swallows every click on whatever sits behind it. Found by
     the completeness pass; opacity:0 does not stop pointer events. */
  .sh{left:50%;right:auto;bottom:auto;top:50%;width:min(560px,94vw);border-radius:20px;
    transform:translate(-50%,-46%) scale(.97);opacity:0;pointer-events:none;max-height:86vh;
    transition:transform .24s ease,opacity .24s ease}
  .sh.on{transform:translate(-50%,-50%) scale(1);opacity:1;pointer-events:auto}
  .sh__grip{display:none}
}
.sh__grip{padding:10px 0 2px;display:grid;place-items:center;flex:0 0 auto}
.sh__grip i{width:38px;height:4px;border-radius:4px;background:#D6DFEC;display:block}
.sh__hd{display:flex;align-items:flex-start;gap:12px;padding:14px 22px 15px;
  border-bottom:1px solid var(--line-soft);flex:0 0 auto}
.sh__hd h3{margin:0;font-size:18px;font-weight:700;letter-spacing:-.024em}
.sh__hd p{margin:3px 0 0;font-size:13px;color:var(--muted);line-height:1.45}
.sh__x{margin-left:auto;width:34px;height:34px;border-radius:10px;border:1px solid var(--line);
  background:var(--card);color:var(--ink-2);font-size:17px;display:grid;place-items:center;flex:0 0 auto}
.sh__body{overflow-y:auto;padding:22px;flex:1 1 auto;-webkit-overflow-scrolling:touch}
.sh__ft{flex:0 0 auto;border-top:1px solid var(--line);background:var(--card);
  padding:14px 22px calc(14px + env(safe-area-inset-bottom));display:flex;gap:10px}

/* ── Auth / consent shell (pre-account, no app chrome) ──────── */
/* 640, not 560. A sign-in box is 400–480 because it holds two fields; this
   screen carries a household card, three fields, a three-record disclosure,
   two consent choices and a caveat, and at 560 every one of those wrapped a
   line earlier than it needed to.
   align-items:start rather than centre: a card taller than the viewport gets
   its top clipped and unreachable under centring. */
.auth{min-height:100vh;display:grid;justify-items:center;align-items:start;
  padding:44px 20px 80px}
.authcard{width:100%;max-width:640px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--lift2);overflow:hidden}
.authcard__hd{background:var(--ink);padding:30px 36px;color:#fff}
.authcard__hd .mast__logo{font-size:20px;margin-bottom:16px}
.authcard__hd h1{margin:0;font-size:25px;font-weight:800;letter-spacing:-.035em;line-height:1.2}
.authcard__hd p{margin:8px 0 0;font-size:14.5px;color:#B9C6D8;line-height:1.55}
.authcard__b{padding:30px 36px}
.authcard__ft{border-top:1px solid var(--line);padding:22px 36px;background:var(--tint)}
.authlogo{font-weight:800;font-size:20px;letter-spacing:-.045em;color:var(--green)}
.authlogo span{color:#fff}

/* What this click creates — the disclosure */
.creates{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:6px}
.creates__hd{background:var(--tint);padding:11px 16px;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.13em;color:var(--muted);border-bottom:1px solid var(--line)}
.creates__i{display:flex;gap:13px;padding:14px 16px;border-bottom:1px solid var(--line-soft);
  align-items:flex-start}
.creates__i:last-child{border-bottom:0}
.creates__n{width:22px;height:22px;border-radius:50%;background:var(--go-bed);color:var(--go);
  font-size:11px;font-weight:800;display:grid;place-items:center;flex:0 0 auto;margin-top:1px}
.creates__t{flex:1;min-width:0;font-size:13.5px;color:var(--muted);line-height:1.5}
.creates__t b{display:block;color:var(--ink);font-size:14.5px;font-weight:600;margin-bottom:2px}

/* ── Prototype index ────────────────────────────────────────── */
.map{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.mapcard{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--go);
  border-radius:var(--r);box-shadow:var(--lift);padding:20px 22px;
  transition:box-shadow .22s ease,transform .22s ease;display:block}
.mapcard:hover{box-shadow:var(--lift2);transform:translateY(-3px)}
.mapcard--todo{border-left-color:var(--line);opacity:.72}
.mapcard__n{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--faint);
  letter-spacing:.1em;text-transform:uppercase}
.mapcard h3{margin:7px 0 6px;font-size:17.5px;font-weight:700;letter-spacing:-.024em}
.mapcard p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.55}
.mapcard__m{margin-top:12px;display:flex;gap:7px;flex-wrap:wrap}

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width:1040px){
  .split,.split--wide,.split--even{grid-template-columns:1fr}
  .rail{position:static}
}
@media (max-width:860px){
  :root{--r:16px}
  body{padding-bottom:var(--dock)}
  .mast__in{padding:0 16px;height:66px;gap:14px}
  .mast__nav{display:none}
  .mast__pill{display:none}
  .burger{display:flex}
    .strip{top:var(--hrhs-hdr-h,66px)}
  .strip__in{padding:0;min-height:0;flex-direction:column;align-items:stretch;gap:0}
  .cswitch{border:0;border-bottom:1px solid var(--line);border-radius:0;
    padding:13px 16px;min-height:0;width:100%}
  .cswitch .ctile{width:40px;height:40px;font-size:14px;border-radius:11px}
  .cswitch__t{flex:1}
  .cswitch__t b{font-size:16px;max-width:none}
  .cswitch__go{margin-left:auto}
  .snav{gap:7px;overflow-x:auto;padding:10px 16px;-webkit-overflow-scrolling:touch;
    background:rgba(241,244,249,.94);border-bottom:1px solid var(--line)}
  .snav::-webkit-scrollbar{display:none}
  .snav a{flex:0 0 auto;border:1px solid var(--line);background:var(--card);border-radius:99px;
    padding:8px 15px;font-size:13.5px;font-weight:600;color:var(--ink-2);min-height:38px;margin:0}
  .snav a[aria-current]{background:var(--ink);color:#fff;border-color:var(--ink);
    border-bottom-color:var(--ink)}
  .strip__right{display:none}

  .wrap{padding:14px 16px 30px}
  .sec{padding:20px 18px;margin-bottom:12px}
  .sec--flush .sec__hd{padding:18px 18px 0}
  .row{padding:13px 18px}
  .phead h1{font-size:23px}
  .proof__i{padding:12px 6px;text-align:center}
  .proof__n{font-size:17px}
  .proof__n em{font-size:12px}
  .proof__l{font-size:9.5px;line-height:1.3}
  .steps{flex-direction:column}
  .step{border-right:0;border-bottom:1px solid var(--line-soft)}
  .step:last-child{border-bottom:0}
  .frow{grid-template-columns:1fr}
  .stack{display:block}
  .dock{display:flex}
  .no-dock{padding-bottom:0}
  .no-dock .dock{display:none}
  .authcard__hd,.authcard__b,.authcard__ft{padding-left:20px;padding-right:20px}
  .auth{padding:20px 14px 40px}
}
@media (max-width:520px){
  .proof{grid-template-columns:repeat(2,1fr)}
  .phead__acts{width:100%}
  .phead__acts .btn{flex:1}
}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ── State switching ────────────────────────────────────────
   body-qualified deliberately: raises these to (0,1,1) so they outrank any
   single-class component rule regardless of source order. Same fix the
   profile mockup documents for .thin-only. */
/* ── State switching ────────────────────────────────────────
   These rules only ever HIDE. They never re-declare display on a visible
   element, because doing so silently overrides whatever the component set —
   a .seats flex row became a block column, and four .snav flex navs went with
   it, all at higher specificity and with nothing in the markup to show why.
   Hiding only means a component keeps its own display and no .is-flex escape
   hatch is needed anywhere. */

/* Established vs first week */
body.state-live .new-only{display:none}
body.state-new  .live-only{display:none}

/* Persona. Resident is the default. */
body.state-res    .board-only,
body.state-tenant .board-only{display:none}
body.state-board  .res-only{display:none}

/* Vote eligibility, where a page distinguishes owner from tenant. */
body.state-res    .tenant-only,
body.state-board  .tenant-only{display:none}
body.state-tenant .owner-only,
body.state-board  .owner-only{display:none}

/* ── Scope switching, permissions rows, system feedback ─────────
   The shared components the completeness pass added (see the two review
   documents). Identical to the prototype block, minus prototype plumbing. */
.ctile--me{border-radius:50%}
.scope{display:flex;gap:13px;align-items:center;width:100%;padding:14px 16px;
  border:1px solid var(--line);border-radius:13px;background:var(--card);margin-bottom:10px;
  text-align:left;font-family:inherit;text-decoration:none}
.scope:last-of-type{margin-bottom:0}
.scope[aria-current="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.scope .ctile{width:40px;height:40px;font-size:13px;border-radius:11px}
.scope__t{flex:1;min-width:0}
.scope__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.012em}
.scope__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);margin-top:3px}
.scope__now{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--go);flex:0 0 auto}
.sw{width:44px;height:26px;border-radius:99px;background:#CBD6E4;flex:0 0 auto;position:relative;border:0;padding:0;transition:background .18s ease}
.sw i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(10,26,47,.3);transition:transform .18s ease}
.sw[aria-checked="true"]{background:var(--go)}
.sw[aria-checked="true"] i{transform:translateX(18px)}
.sw[disabled]{opacity:.35;cursor:not-allowed}
.perm{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.perm:last-of-type{border-bottom:0}
.perm__t{flex:1;min-width:0}
.perm__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em}
.perm__t span{display:block;font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.45}

/* Failure is its own color. Amber is a caveat about a kind of claim; this
   is "that didn't work". It appears only on failure — not a second accent. */
:root{--bad:#B3261E;--bad-bed:#FBEDEB;--bad-line:#F0C9C4}
.split > *{min-width:0}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);opacity:0;pointer-events:none;
  background:var(--ink);color:#fff;border-radius:13px;padding:13px 16px 13px 18px;font-size:14px;font-weight:600;
  box-shadow:var(--lift2);z-index:300;display:flex;gap:16px;align-items:center;max-width:min(480px,92vw);
  transition:transform .22s ease,opacity .22s ease}
.toast.on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.toast button{color:var(--green);font-weight:700;background:transparent;border:0;font-family:inherit;font-size:14px;padding:0;flex:0 0 auto}
@media (max-width:860px){.toast{bottom:calc(var(--dock) + 12px)}.no-dock .toast{bottom:24px}}
.is-bad,.in.is-bad,.ta.is-bad,.sel.is-bad{border-color:var(--bad);box-shadow:0 0 0 3px rgba(179,38,30,.12)}
.ferr,.sec p.ferr{font-size:12.5px;color:var(--bad);margin:7px 0 0;font-weight:500;line-height:1.45}
.notice{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:13px;
  padding:13px 15px;background:var(--card);margin-bottom:18px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.notice b{color:var(--ink);display:block;font-weight:600;margin-bottom:1px}
.notice--bad{background:var(--bad-bed);border-color:var(--bad-line);color:#7E2A20}
.notice--bad b{color:var(--bad)}
.notice--warn{background:var(--warn-bed);border-color:var(--warn-line);color:var(--warn-ink)}
.notice--warn b{display:block;margin-bottom:2px}
.notice__ic{flex:0 0 auto;font-size:16px;margin-top:1px}
.notice__t{flex:1;min-width:0}
.notice__a{flex:0 0 auto;display:flex;gap:7px}
@media (max-width:560px){.notice{flex-wrap:wrap}.notice__a{width:100%}}
.btn.is-busy{pointer-events:none;position:relative;color:transparent!important}
.btn.is-busy::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;
  border:2px solid var(--ink);border-right-color:transparent;animation:hrhs-spin .8s linear infinite}
.btn--dark.is-busy::after{border-color:#fff;border-right-color:transparent}
@keyframes hrhs-spin{to{transform:rotate(360deg)}}
.why{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);
  background:var(--card);color:var(--muted);font-size:11px;font-weight:700;font-family:inherit;padding:0;
  vertical-align:middle;margin-left:5px;line-height:1}
.why:hover{color:var(--go);border-color:var(--go)}


/* ═══════════════════════════════════════════════════════════════
   PAGE COMPONENTS (4.70.1) — the per-surface pieces from the design
   folder's prototypes, one copy for every rebuilt template. Job rows
   (jobs), bid rows + timeline + kv + photos + stars (job detail), pro
   rows (saved pros), notification/conversation rows + thread bubbles
   (inbox). Ported verbatim minus the mockup state classes.
   ═══════════════════════════════════════════════════════════════ */
/* ── from jobs.html ── */
.jrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start;padding:18px 24px;
  border-bottom:1px solid var(--line-soft);background:var(--card);width:100%;text-align:left;border-left:0;border-right:0;border-top:0;font-family:inherit}
.jrow:hover{background:var(--tint)}
.jrow:last-of-type{border-bottom:0}
.jrow h3{margin:0;font-size:16px;font-weight:700;letter-spacing:-.02em;line-height:1.3}
.jrow__w{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);margin-top:4px}
.jrow__s{font-size:13.5px;color:var(--ink-2);margin-top:8px;line-height:1.5}
.jrow__s b{color:var(--ink);font-weight:600}
.jrow__r{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.jrow__n{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink-2)}
@media (max-width:860px){.jrow{padding:16px 18px}}
@media (max-width:560px){.jrow{grid-template-columns:1fr}.jrow__r{flex-direction:row;align-items:center}}
/* ── from job-detail.html ── */
/* Bid rows. Sorted by whatever the chips say; the price is mono because it
   is a machine fact, the name is not. */
.bidrow{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:14px;align-items:start;
  padding:18px 0;border-bottom:1px solid var(--line-soft)}
.bidrow:first-of-type{padding-top:4px}
.bidrow:last-of-type{border-bottom:0;padding-bottom:0}
.bidrow--lead{background:var(--go-bed);margin:0 -28px;padding-left:28px;padding-right:28px;
  border-bottom:1px solid #CFEBDD}
@media (max-width:860px){.bidrow--lead{margin:0 -18px;padding-left:18px;padding-right:18px}}
.bidrow__nm{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bidrow__nm b{font-size:15.5px;font-weight:700;letter-spacing:-.02em}
.bidrow__meta{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);margin-top:4px}
.bidrow__meta .st{color:var(--gold)}
.bidrow__msg{font-size:14px;color:var(--ink-2);line-height:1.55;margin:9px 0 0}
.bidrow__a{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}
.bidrow__p{text-align:right}
.bidrow__p b{display:block;font-family:'IBM Plex Mono',monospace;font-size:20px;font-weight:600;letter-spacing:-.02em}
.bidrow__p span{display:block;font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap}
@media (max-width:560px){.bidrow{grid-template-columns:44px minmax(0,1fr)}.bidrow__p{grid-column:2;text-align:left;margin-top:6px}
  .bidrow__p b{display:inline}.bidrow__p span{display:inline;margin-left:8px}}
.tl{list-style:none;margin:0;padding:0}
.tl li{display:flex;gap:13px;padding:12px 0;border-bottom:1px solid var(--line-soft);font-size:14px;color:var(--ink-2);line-height:1.5}
.tl li:last-child{border-bottom:0}
.tl b{display:block;color:var(--ink);font-weight:600;font-size:14.5px;margin-bottom:1px}
.tl__n{flex:0 0 24px;height:24px;border-radius:50%;background:var(--tint);border:1px solid var(--line);
  color:var(--muted);font-size:11px;font-weight:700;display:grid;place-items:center;margin-top:1px}
.tl li[data-s="done"] .tl__n{background:var(--go-bed);border-color:var(--go);color:var(--go)}
.tl li[data-s="now"] .tl__n{background:var(--ink);border-color:var(--ink);color:var(--green)}
.photos{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
.ph{width:96px;height:72px;border-radius:10px;background:linear-gradient(135deg,hsl(206 30% 84%),hsl(214 26% 72%));border:1px solid var(--line)}
.stars{display:flex;gap:6px;margin:12px 0 4px}
.stars button{width:44px;height:44px;border-radius:11px;border:1px solid var(--line);background:var(--card);
  font-size:20px;color:#C6D2E1;font-family:inherit}
.stars button[aria-pressed="true"]{color:var(--gold);border-color:var(--gold-line);background:var(--gold-bed)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 16px;font-size:14.5px;color:var(--ink-2);margin-top:6px}
.kv dt{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-top:3px}
.kv dd{margin:0}
@media (max-width:560px){.kv{grid-template-columns:1fr}.kv dt{padding-top:6px}}
/* ── from saved-pros.html ── */
.pro{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:start;padding:18px 0;border-bottom:1px solid var(--line-soft)}
.pro:first-of-type{padding-top:0}
.pro:last-of-type{border-bottom:0;padding-bottom:0}
.pro__nm{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pro__nm b{font-size:16px;font-weight:700;letter-spacing:-.02em}
.pro__meta{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);margin-top:4px}
.pro__meta .st{color:var(--gold)}
.pro__x{font-size:13.5px;color:var(--ink-2);margin:8px 0 0;line-height:1.5}
.pro__a{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}
.pro__r{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
@media (max-width:560px){.pro{grid-template-columns:52px minmax(0,1fr)}.pro__r{grid-column:2;flex-direction:row;align-items:center}}
/* ── from inbox.html ── */
.nrow{display:flex;gap:14px;align-items:flex-start;padding:16px 20px;border-bottom:1px solid var(--line-soft);width:100%;text-align:left;background:var(--card);border-left:3px solid transparent;border-right:0;border-top:0;font-family:inherit}
.nrow:hover{background:var(--tint)}
.nrow--job{border-left-color:var(--go)}
.nrow--unread .nrow__t b::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--go);vertical-align:middle;margin-left:8px}
.nrow__ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;background:var(--tint);border:1px solid var(--line);font-size:16px}
.nrow__t{flex:1;min-width:0}
.nrow__eb{font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.nrow__t b{display:block;font-size:15px;font-weight:600;letter-spacing:-.012em;line-height:1.35}
.nrow__t p{margin:4px 0 0;font-size:13.5px;color:var(--muted);line-height:1.5}
.nrow__w{flex:0 0 auto;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--faint);padding-top:2px}
.conv{display:flex;gap:12px;align-items:flex-start;padding:14px 18px;width:100%;text-align:left;
  background:var(--card);border:0;border-bottom:1px solid var(--line-soft);font-family:inherit}
.conv:hover{background:var(--tint)}
.conv[aria-selected="true"]{background:var(--go-bed);box-shadow:inset 3px 0 0 var(--go)}
.conv__av{width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:700}
.conv__av--v{border-radius:12px}
.conv__av--p{border-radius:50%}
.conv__t{flex:1;min-width:0}
.conv__eb{font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:3px}
.conv__hd{display:flex;align-items:baseline;gap:9px}
.conv__hd b{font-size:14.5px;font-weight:600;letter-spacing:-.012em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv__hd span{margin-left:auto;flex:0 0 auto;font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--faint)}
.conv__p{font-size:13px;color:var(--muted);margin:3px 0 0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.conv--unread .conv__hd b{font-weight:700}
.conv--unread .conv__p{color:var(--ink-2)}
.conv--unread .conv__hd b::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--go);vertical-align:middle;margin-left:7px}
.thread{display:flex;flex-direction:column;min-height:560px}
.thread__hd{display:flex;align-items:center;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line);flex:0 0 auto}
.thread__hd b{font-size:16px;font-weight:700;letter-spacing:-.02em;display:block}
.thread__hd span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.thread__b{flex:1 1 auto;padding:20px 22px;display:flex;flex-direction:column;gap:16px}
.msg{display:flex;gap:11px;align-items:flex-start;max-width:78%}
.msg__av{width:32px;height:32px;border-radius:10px;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700}
.msg__b{background:var(--tint);border:1px solid var(--line-soft);border-radius:14px 14px 14px 4px;padding:11px 14px;font-size:14.5px;line-height:1.55;color:var(--ink)}
.msg__w{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--faint);margin-top:6px;display:block}
.msg--me{align-self:flex-end;flex-direction:row-reverse}
.msg--me .msg__av{border-radius:50%}
.msg--me .msg__b{background:var(--ink);border-color:var(--ink);color:#fff;border-radius:14px 14px 4px 14px}
.msg--me .msg__w{text-align:right}
@media (max-width:860px){.msg{max-width:94%}}
.sysrow{align-self:center;max-width:90%;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);
  background:var(--tint);border:1px solid var(--line-soft);border-radius:99px;padding:6px 14px}
.bidcard{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-top:9px;background:var(--card)}
.bidcard__t{flex:1;min-width:0}
.bidcard__t b{display:block;font-size:13.5px;font-weight:600}
.bidcard__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);margin-top:2px}
.bidcard__n{font-family:'IBM Plex Mono',monospace;font-size:16px;font-weight:600}
.compose{flex:0 0 auto;border-top:1px solid var(--line);padding:14px 22px;display:flex;gap:10px;align-items:flex-end;background:var(--card)}
.compose .in{flex:1;min-height:46px}
.iconbtn{width:46px;height:46px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);display:grid;place-items:center;flex:0 0 auto;font-size:17px}


/* ═══════════════════════════════════════════════════════════════
   BOARD & ROSTER COMPONENTS (0.4.0) — household rows and detail,
   member rows, admin rows with capability chips, neighbor rows and
   the sharing panel. Ported from the community prototypes, minus
   mockup state classes. Shipped in the host stylesheet so the
   companion's screens render from the same single source of truth.
   ═══════════════════════════════════════════════════════════════ */
/* ── from households.html (board/roster components) ── */
/* Same fix as the setup roster: the list column is 400px, so the viewport
   never tells this row how much space it actually has. */
.row--hh{grid-template-columns:minmax(120px,1fr) auto 112px;gap:10px}
.row--hh .col-go{display:none}
.hhlist{max-height:none}
.detail{position:sticky;top:190px}
@media (max-width:1040px){.detail{position:static}}
.mem{display:flex;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.mem:last-of-type{border-bottom:0}
.mem__av{width:38px;height:38px;border-radius:50%;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-size:13px;font-weight:700;flex:0 0 auto}
.mem__t{flex:1;min-width:0}
.mem__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em}
.mem__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:11px;
  color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ── from admins.html (board/roster components) ── */
.adm{display:flex;gap:15px;align-items:flex-start;padding:18px 0;
  border-bottom:1px solid var(--line-soft)}
.adm:first-of-type{padding-top:2px}
.adm:last-of-type{border-bottom:0;padding-bottom:0}
.adm__av{width:46px;height:46px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  color:#fff;font-size:15px;font-weight:700}
.adm__t{flex:1;min-width:0}
.adm__nm{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.adm__nm b{font-size:16px;font-weight:700;letter-spacing:-.02em}
.adm__where{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);margin-top:5px}
.adm__caps{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cap-chip{font-size:11.5px;font-weight:500;color:var(--ink-2);background:var(--tint);
  border:1px solid var(--line-soft);border-radius:7px;padding:4px 8px;line-height:1.3}
.cap-chip--off{color:var(--faint);background:transparent;border-style:dashed}
.cap-chip--all{background:var(--go-bed);border-color:#BFE5D3;color:var(--go);font-weight:600}
.adm__a{flex:0 0 auto;display:flex;gap:7px}
@media (max-width:640px){.adm{flex-wrap:wrap}.adm__a{width:100%;margin-top:12px}}
/* Title field, inline */
.title-in{border:1px solid var(--line);border-radius:8px;background:var(--card);
  padding:3px 9px;font-size:12px;font-weight:600;font-family:inherit;color:var(--ink);
  min-width:120px;max-width:200px;outline:0}
.title-in:focus{border-color:#B9C9DD;box-shadow:0 0 0 3px rgba(11,255,132,.14)}
/* ── from roster.html (board/roster components) ── */
.nbr{display:flex;gap:13px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line-soft)}
.nbr:first-of-type{padding-top:0}
.nbr:last-of-type{border-bottom:0;padding-bottom:0}
.nbr__av{width:42px;height:42px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  color:#fff;font-size:14px;font-weight:700}
.nbr__t{flex:1;min-width:0}
.nbr__t b{display:block;font-size:15px;font-weight:600;letter-spacing:-.012em}
.nbr__t span{display:block;font-size:12.5px;color:var(--muted);margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbr__a{flex:0 0 auto}
.priv{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-soft)}
.priv:last-of-type{border-bottom:0}
.priv__t{flex:1;min-width:0}
.priv__t b{display:block;font-size:14px;font-weight:600}
.priv__t span{display:block;font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}


/* ── FORUM COMPONENTS (companion 0.5.0): thread rows, posts, hidden-reply
   placeholder, locked banner, attachment rows. From forum.html. ── */
/* ── from forum.html (forum components) ── */
/* ── Thread list ────────────────────────────────────────────── */
.th{display:flex;gap:14px;align-items:flex-start;padding:17px 22px;width:100%;text-align:left;
  background:var(--card);border:0;border-left:3px solid transparent;
  border-bottom:1px solid var(--line-soft);font-family:inherit}
.th:hover{background:var(--tint)}
.th--board{border-left-color:var(--go);background:#FCFDFE}
.th--board:hover{background:var(--go-bed)}
.th__av{width:40px;height:40px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  color:#fff;font-size:13px;font-weight:700}
.th--board .th__av{border-radius:11px;background:var(--ink)!important;color:var(--green)}
.th__t{flex:1;min-width:0}
.th__eb{font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--go);margin-bottom:4px}
.th__eb--quiet{color:var(--faint)}
.th__t h3{margin:0;font-size:16px;font-weight:700;letter-spacing:-.022em;line-height:1.32}
.th__x{margin:5px 0 0;font-size:13.5px;color:var(--muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.th__m{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:10px;
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--faint)}
.th__m b{color:var(--ink-2);font-weight:600}
.th__go{flex:0 0 auto;color:var(--faint);font-size:16px;padding-top:12px}
@media (max-width:620px){.th__go{display:none}}
/* ── Post ───────────────────────────────────────────────────── */
.post{display:flex;gap:14px;align-items:flex-start;padding:20px 0;
  border-bottom:1px solid var(--line-soft)}
.post:last-of-type{border-bottom:0;padding-bottom:0}
.post__av{width:38px;height:38px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  color:#fff;font-size:12.5px;font-weight:700}
.post__t{flex:1;min-width:0}
.post__hd{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.post__hd b{font-size:14.5px;font-weight:700;letter-spacing:-.012em}
.post__hd .w{margin-left:auto;font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--faint)}
.post__x{font-size:14.5px;color:var(--ink-2);line-height:1.6;margin:0}
.post__a{display:flex;gap:14px;margin-top:11px;font-size:12.5px;color:var(--muted);font-weight:500}
.post__a button{border:0;background:transparent;color:var(--muted);font-size:12.5px;
  font-weight:500;padding:0;font-family:inherit}
.post__a button:hover{color:var(--go)}
.post--removed .post__x{color:var(--faint);font-style:italic}
.removed{border:1px dashed var(--line);border-radius:12px;background:var(--tint);
  padding:14px 16px;font-size:13.5px;color:var(--muted);line-height:1.55}
.removed b{color:var(--ink-2)}
.att{display:flex;gap:10px;align-items:center;background:var(--tint);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;margin-top:11px;max-width:420px}
.att__ic{width:32px;height:38px;border-radius:6px;background:var(--card);border:1px solid var(--line);
  flex:0 0 auto;display:grid;place-items:end center;padding-bottom:4px;
  font-family:'IBM Plex Mono',monospace;font-size:8px;font-weight:600;color:var(--muted)}
.att__t{flex:1;min-width:0}
.att__t b{display:block;font-size:13px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:10px;
  color:var(--muted);margin-top:2px}
.locked{border:1px solid var(--line);border-radius:12px;background:var(--tint);
  padding:15px 17px;display:flex;gap:12px;align-items:center;text-align:left}
.locked svg{flex:0 0 auto;color:var(--muted)}
.locked b{display:block;font-size:14px;font-weight:600;margin-bottom:2px}
.locked span{font-size:13px;color:var(--muted);line-height:1.5}


/* ── EVENTS / POLLS / DOCUMENTS COMPONENTS (companion 0.6.0) ── */
/* ── from events.html ── */
.cal{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--line-soft)}
.cal__hd{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line-soft)}
.cal__hd span{background:var(--tint);padding:9px 4px;text-align:center;
  font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted)}
.cal__g{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line-soft)}
.cell{background:var(--card);min-height:88px;padding:7px 8px;position:relative;text-align:left;
  border:0;font-family:inherit;display:block;width:100%}
.cell:hover{background:var(--tint)}
.cell--out{background:var(--tint)}
.cell--out .cell__n{color:var(--faint)}
.cell__n{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--ink-2);font-weight:500}
.cell--today .cell__n{background:var(--ink);color:#fff;border-radius:50%;width:21px;height:21px;
  display:grid;place-items:center;margin:-2px 0 0 -3px}
.pill{display:block;margin-top:5px;font-size:10.5px;font-weight:600;line-height:1.25;
  padding:4px 6px;border-radius:6px;background:var(--go-bed);color:var(--go);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill--board{background:var(--ink);color:#fff}
.pill--job{background:var(--gold-bed);color:var(--warn-deep);border:1px solid var(--gold-line)}
@media (max-width:860px){.cell{min-height:62px;padding:5px 5px}.pill{font-size:9px;padding:3px 4px}}
.evbig{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-bottom:1px solid var(--line-soft)}
.evbig:first-of-type{padding-top:0}
.evbig:last-of-type{border-bottom:0;padding-bottom:0}
.evbig__d{flex:0 0 auto;width:58px;text-align:center;border:1px solid var(--line);
  border-radius:12px;padding:8px 0;background:var(--tint)}
.evbig__d .m{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted)}
.evbig__d .n{font-size:22px;font-weight:800;letter-spacing:-.03em;line-height:1.05}
.evbig__t{flex:1;min-width:0}
.evbig__t h3{margin:0;font-size:16.5px;font-weight:700;letter-spacing:-.02em;line-height:1.3}
.evbig__t .w{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--muted);margin-top:5px}
.evbig__t p{margin:8px 0 0;font-size:14px;color:var(--ink-2);line-height:1.55}
.evbig__a{flex:0 0 auto;display:flex;flex-direction:column;gap:7px}
@media (max-width:640px){.evbig__a{flex-direction:row;width:100%;margin-top:12px}
  .evbig{flex-wrap:wrap}}
.feed{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:12px;
  background:var(--tint);padding:11px 13px;margin-top:12px}
.feed code{flex:1;min-width:0;font-family:'IBM Plex Mono',monospace;font-size:11.5px;
  color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ── from polls.html ── */
.ballot{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:16px}
.ballot__hd{background:var(--tint);padding:11px 16px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:9px;
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.opt{display:flex;gap:13px;align-items:center;width:100%;padding:15px 16px;
  border:0;border-bottom:1px solid var(--line-soft);background:var(--card);
  text-align:left;font-family:inherit}
.opt:last-of-type{border-bottom:0}
.opt:hover{background:var(--tint)}
.opt__r{width:22px;height:22px;border-radius:50%;border:1.5px solid #C6D2E1;flex:0 0 auto;
  display:grid;place-items:center;background:var(--card)}
.opt__r::after{content:"";width:10px;height:10px;border-radius:50%;background:transparent}
.opt[aria-checked="true"] .opt__r{border-color:var(--go)}
.opt[aria-checked="true"] .opt__r::after{background:var(--go)}
.opt__t{flex:1;min-width:0;font-size:15px;font-weight:500;color:var(--ink)}
.opt__t span{display:block;font-size:12.5px;color:var(--muted);font-weight:400;margin-top:2px;line-height:1.45}
.res{padding:13px 0;border-bottom:1px solid var(--line-soft)}
.res:last-of-type{border-bottom:0}
.res__l{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:7px}
.res__l b{font-size:14.5px;font-weight:600}
.res__n{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink-2);flex:0 0 auto}
.res__n em{font-style:normal;color:var(--faint);font-size:11.5px}
.res .bar i{background:var(--faint)}
.res--win .bar i{background:var(--go)}
.res--win .res__n{color:var(--go);font-weight:600}
.turnout{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-soft);
  border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:14px}
.turnout__i{background:var(--card);padding:13px 15px}
.turnout__n{font-size:19px;font-weight:800;letter-spacing:-.03em;line-height:1.1}
.turnout__l{font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.35}
.pcard{border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:12px;
  background:var(--card)}
.pcard:last-child{margin-bottom:0}
.pcard h3{margin:0 0 4px;font-size:15.5px;font-weight:700;letter-spacing:-.02em;line-height:1.3}
.pcard .w{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted)}
/* ── from documents.html ── */
.doc{display:flex;gap:13px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line-soft)}
.doc:first-of-type{padding-top:0}
.doc:last-of-type{border-bottom:0;padding-bottom:0}
.doc__ic{width:38px;height:44px;border-radius:8px;flex:0 0 auto;position:relative;
  background:var(--tint);border:1px solid var(--line);display:grid;place-items:end center;
  padding-bottom:6px;font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;
  color:var(--muted);letter-spacing:.04em}
.doc__ic::before{content:"";position:absolute;top:-1px;right:-1px;width:11px;height:11px;
  background:var(--page);border-left:1px solid var(--line);border-bottom:1px solid var(--line)}
.doc__ic--pdf{color:#B4472B}
.doc__t{flex:1;min-width:0}
.doc__t b{display:block;font-size:14.5px;font-weight:600;letter-spacing:-.01em;line-height:1.35}
.doc__t span{display:block;font-family:'IBM Plex Mono',monospace;font-size:11px;
  color:var(--muted);margin-top:3px}
.doc__a{flex:0 0 auto;display:flex;gap:7px;align-items:center}
.cat{margin-bottom:20px}
.cat:last-child{margin-bottom:0}
.cat__hd{display:flex;align-items:baseline;gap:10px;padding-bottom:11px;margin-bottom:13px;
  border-bottom:1px solid var(--line)}
.cat__hd h3{margin:0;font-size:15px;font-weight:700;letter-spacing:-.018em}
.cat__hd span{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--faint);margin-left:auto}
.meter{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:12px 0 8px}
.meter i{display:block;height:100%;background:var(--go);border-radius:99px}
.drop{border:1px dashed var(--line);border-radius:14px;background:var(--tint);
  padding:30px 22px;text-align:center}
.drop__ic{width:44px;height:44px;border-radius:12px;background:var(--card);border:1px solid var(--line);
  display:grid;place-items:center;margin:0 auto 13px;font-size:19px}


/* ── Parcel import (setup.html: Find my community) ───────────── */
.src{display:flex;gap:14px;align-items:flex-start;background:var(--card);
  border:1px solid var(--line);border-radius:14px;padding:16px 20px;margin-bottom:18px}
.src__ic{font-size:20px;line-height:1.4}
.src__t{font-size:13px;color:var(--muted);line-height:1.55}
.src__t b{display:block;font-size:14px;color:var(--ink);margin-bottom:2px}
.src__t code{font-family:'IBM Plex Mono',monospace;font-size:11.5px;background:var(--tint);
  border:1px solid var(--line-soft);border-radius:5px;padding:1px 6px}
.row--imp{grid-template-columns:minmax(0,1fr) 56px 56px 96px 48px}
.row--imp .col-lot,.row--imp .col-unit{font-size:12px;color:var(--muted);font-family:'IBM Plex Mono',monospace}
.row--off .row__addr b{text-decoration:line-through;color:var(--muted)}
.row--off{opacity:.62}
@container (max-width:560px){
  .row--imp{grid-template-columns:minmax(0,1fr) 96px 48px}
  .row--imp .col-lot,.row--imp .col-unit{display:none}
}
.dropped{padding:0 0 6px}
.dropped__l{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.dropped__l span{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.08em;
  color:var(--muted);text-decoration:line-through;background:var(--tint);
  border:1px solid var(--line-soft);border-radius:6px;padding:3px 8px}
/* Checkbox-backed switch: the .sw look with no script required. */
.swc{display:inline-block;width:44px;height:26px;position:relative;cursor:pointer}
.swc input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.swc i{position:absolute;inset:0;border-radius:99px;background:#CBD6E4;transition:background .18s ease;pointer-events:none}
.swc i::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(10,26,47,.3);transition:transform .18s ease}
.swc input:checked + i{background:var(--go)}
.swc input:checked + i::after{transform:translateX(18px)}
.swc input:focus-visible + i{outline:2px solid var(--go);outline-offset:2px}

/* ═══════════════════════════════════════════════════════════════
   THEME AND BUILDER OVERRIDES — same contract as hrhs-core.css.
   The Elementor kit styles `a`, `button` and their :hover/:focus/:active
   site-wide with !important and loads after us. The one place !important
   is warranted: fighting a third-party global stylesheet, scoped to our
   own classes. Pin the property the kit actually sets — background,
   color, border, width, decoration — and pin the states explicitly,
   because a kit that sets only :focus repaints a button the moment
   someone taps it on a phone, where :focus sticks.
   ═══════════════════════════════════════════════════════════════ */

.btn,.btn:link,.btn:visited,.btn:hover,.btn:focus,.btn:focus-visible,.btn:active{text-decoration:none!important}
.btn{width:auto!important}
.btn--full{width:100%!important}
.btn--go,.btn--go:link,.btn--go:visited,.btn--go:hover,.btn--go:focus,.btn--go:focus-visible,.btn--go:active{background:var(--green)!important;color:var(--ink)!important;border-color:transparent!important}
.btn--dark,.btn--dark:link,.btn--dark:visited,.btn--dark:hover,.btn--dark:focus,.btn--dark:focus-visible,.btn--dark:active{background:var(--ink)!important;color:#fff!important;border-color:transparent!important}
.btn--out,.btn--out:link,.btn--out:visited,.btn--out:hover,.btn--out:focus,.btn--out:focus-visible,.btn--out:active{background:var(--card)!important;color:var(--ink)!important;border-color:var(--line)!important}
.btn--out:hover:not(:disabled){background:var(--tint)!important}
.fchip,.fchip:link,.fchip:visited,.fchip:hover,.fchip:focus,.fchip:focus-visible,.fchip:active{background:var(--card)!important;color:var(--ink-2)!important;border-color:var(--line)!important;text-decoration:none!important;width:auto!important}
.fchip[aria-pressed="true"],.fchip[aria-pressed="true"]:link,.fchip[aria-pressed="true"]:visited,.fchip[aria-pressed="true"]:hover,.fchip[aria-pressed="true"]:focus,.fchip[aria-pressed="true"]:focus-visible,.fchip[aria-pressed="true"]:active{background:var(--ink)!important;color:#fff!important;border-color:var(--ink)!important}
.check,.opt,.lnk,.th,.conv,.row,.rep,.trade,.scope{width:100%!important;text-decoration:none!important}
.check,.check:link,.check:visited,.check:hover,.check:focus,.check:focus-visible,.check:active{background:var(--card)!important;color:var(--ink-2)!important;border-color:var(--line)!important}
.opt,.opt:link,.opt:visited,.opt:hover,.opt:focus,.opt:focus-visible,.opt:active{background:var(--card)!important;border-color:var(--line-soft)!important}
.opt:hover{background:var(--tint)!important}
.lnk,.lnk:link,.lnk:visited,.lnk:hover,.lnk:focus,.lnk:focus-visible,.lnk:active{background:var(--card)!important;color:var(--ink)!important;border-color:var(--line)!important}
.lnk--go,.lnk--go:link,.lnk--go:visited,.lnk--go:hover,.lnk--go:focus,.lnk--go:focus-visible,.lnk--go:active{background:var(--green)!important;border-color:var(--green)!important}
.sw{width:44px!important}.sh__x{width:34px!important}.why{width:18px!important}.stars button{width:44px!important}
.sh__x,.sh__x:link,.sh__x:visited,.sh__x:hover,.sh__x:focus,.sh__x:focus-visible,.sh__x:active{background:var(--card)!important;color:var(--ink-2)!important;border-color:var(--line)!important;text-decoration:none!important}
.sw,.sw:link,.sw:visited,.sw:hover,.sw:focus,.sw:focus-visible,.sw:active{border-color:transparent!important}
.sw{background:#CBD6E4!important}.sw[aria-checked="true"]{background:var(--go)!important}
.dock button,.dock a{width:auto!important;text-decoration:none!important}
.dock__1st,.dock__1st:link,.dock__1st:visited,.dock__1st:hover,.dock__1st:focus,.dock__1st:focus-visible,.dock__1st:active{background:var(--green)!important;color:var(--ink)!important;border-color:transparent!important}
.dock__2nd,.dock__2nd:link,.dock__2nd:visited,.dock__2nd:hover,.dock__2nd:focus,.dock__2nd:focus-visible,.dock__2nd:active{background:var(--card)!important;color:var(--ink)!important;border-color:var(--line)!important}
.cswitch,.cswitch:link,.cswitch:visited,.cswitch:hover,.cswitch:focus,.cswitch:focus-visible,.cswitch:active{background:var(--card)!important;color:var(--ink)!important;border-color:var(--line)!important;text-decoration:none!important}
.cswitch{width:auto!important}
@media (max-width:860px){.cswitch{width:100%!important}}
.snav a,.snav a:link,.snav a:visited,.snav a:hover,.snav a:focus,.snav a:focus-visible,.snav a:active{text-decoration:none!important}
.rlink,.rlink:link,.rlink:visited,.rlink:hover,.rlink:focus,.rlink:focus-visible,.rlink:active{color:var(--go)!important;text-decoration:none!important}

/* ── 0.7.1: anchor-shaped components pinned against the kit ──
   The builder kit styles bare `a` (and its states) site-wide with
   !important. Every row, chip, tile and nav link that IS an anchor must
   pin its own ink and decoration, states written out — same contract as
   the button pins above. Muted sub-lines keep their own colors because
   they declare them; only inheriting elements (the h3s, the bold names)
   need explicit pins. */
.th,.jrow,.conv,.nrow,.row--hh,.scope,.fchip,a.lnk,.cswitch,
.th:link,.jrow:link,.conv:link,.nrow:link,.row--hh:link,.scope:link,.fchip:link,a.lnk:link,.cswitch:link,
.th:visited,.jrow:visited,.conv:visited,.nrow:visited,.row--hh:visited,.scope:visited,.fchip:visited,a.lnk:visited,.cswitch:visited,
.th:hover,.jrow:hover,.conv:hover,.nrow:hover,.row--hh:hover,.scope:hover,.fchip:hover,a.lnk:hover,.cswitch:hover,
.th:focus,.jrow:focus,.conv:focus,.nrow:focus,.row--hh:focus,.scope:focus,.fchip:focus,a.lnk:focus,.cswitch:focus,
.th:focus-visible,.jrow:focus-visible,.conv:focus-visible,.nrow:focus-visible,.row--hh:focus-visible,.scope:focus-visible,.fchip:focus-visible,a.lnk:focus-visible,.cswitch:focus-visible,
.th:active,.jrow:active,.conv:active,.nrow:active,.row--hh:active,.scope:active,.fchip:active,a.lnk:active,.cswitch:active{color:var(--ink)!important;text-decoration:none!important}
.th h3,.th__t h3,.jrow h3,
.conv__hd b,.nbr__t b,.lnk__t b,.scope__t b,.cswitch__t b,.row__addr b{color:var(--ink)!important}
.snav a,
.snav a:link,
.snav a:visited,
.snav a:hover,
.snav a:focus,
.snav a:focus-visible,
.snav a:active{color:var(--muted)!important;text-decoration:none!important}
.snav a:hover,.snav a[aria-current="page"]{color:var(--ink)!important}
.rlink,
.rlink:link,
.rlink:visited,
.rlink:hover,
.rlink:focus,
.rlink:focus-visible,
.rlink:active{text-decoration:none!important}
