:root {
  --ink: #183042;
  --ink-soft: #536674;
  --navy: #12344d;
  --navy-deep: #0c293e;
  --blue: #0c6fa6;
  --blue-pale: #eaf5fa;
  --green: #397a58;
  --green-pale: #edf7f0;
  --gold: #e8b94f;
  --paper: #ffffff;
  --canvas: #f4f7f8;
  --line: #dbe3e7;
  --line-dark: #c7d2d8;
  --danger: #a33b3b;
  --danger-pale: #fff0f0;
  --shadow: 0 12px 35px rgba(18, 52, 77, .08);
  --radius: 14px;
  --sidebar-width: 244px;
}

.valuation-controls { margin-bottom: 24px; padding:24px; }
.valuation-controls .header-actions { flex-wrap:wrap; }
.valuation-owner-shortcut { display:flex; flex-wrap:wrap; align-items:center; gap:12px; padding:14px 16px; background:var(--blue-pale); border-radius:10px; margin:16px 0; }
.valuation-owner-shortcut span { flex:1 1 230px; color:var(--ink-soft); font-size:13px; }
.valuation-owner-values { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:20px 0; }
.valuation-owner-card { padding:16px; border:1px solid var(--line); border-radius:10px; background:var(--canvas); min-width:0; }
.valuation-owner-card span,.valuation-owner-card strong,.valuation-owner-card small { display:block; }
.valuation-owner-card span { font-size:13px; line-height:1.4; }
.valuation-owner-card strong { margin:8px 0; font-size:25px; font-variant-numeric:tabular-nums; letter-spacing:-.5px; overflow-wrap:anywhere; }
.valuation-owner-card small { font-size:12px; line-height:1.5; color:var(--ink-soft); }
.valuation-owner-card:last-child { background:var(--navy); color:white; border-color:var(--navy); }
.valuation-owner-card:last-child small { color:#dae8f1; }
.valuation-owner-roles { margin:16px 0; }
.valuation-strong-blocks-section .valuation-owner-roles { min-width:0; width:100%; border-collapse:collapse; font-size:13px; }
.valuation-owner-roles th,.valuation-owner-roles td { padding:10px 6px; border-bottom:1px solid var(--line); text-align:right; font-variant-numeric:tabular-nums; }
.valuation-owner-roles th:first-child { text-align:left; }
.valuation-discount-input { display:flex; flex-wrap:wrap; gap:12px 24px; align-items:center; padding:16px; margin:16px 0; border:1px solid var(--line); border-radius:10px; }
.valuation-discount-input label { display:grid; gap:8px; font-weight:600; font-size:13px; flex:0 1 330px; }
.valuation-discount-input input,.valuation-discount-input select { padding:10px; border:1px solid var(--line-dark); border-radius:6px; width:100%; background:white; }
.valuation-discount-input p { flex:1 1 220px; margin:0; font-size:13px; color:var(--ink-soft); }
.valuation-owner-comparison { border-top:1px solid var(--line); padding-top:16px; margin-top:20px; }
.valuation-owner-support { margin-top:20px; font-size:13px; }
.valuation-owner-support summary { cursor:pointer; color:var(--blue); font-weight:600; }
.valuation-owner-support[open] summary { margin-bottom:12px; }
@media(max-width:700px) {
  .valuation-owner-values { grid-template-columns:1fr; gap:8px; }
  .valuation-owner-card { padding:14px; }
  .valuation-owner-card strong { font-size:26px; }
  .valuation-owner-shortcut .button { width:100%; }
  .valuation-owner-shortcut span { flex-basis:100%; }
  .valuation-strong-blocks-section .valuation-owner-roles { display:block; font-size:13px; }
  .valuation-owner-roles thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .valuation-owner-roles tbody { display:block; }
  .valuation-owner-roles tr { display:grid; grid-template-columns:1fr; margin-bottom:12px; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
  .valuation-strong-blocks-section .valuation-owner-roles tbody th { display:block!important; padding:10px; font-size:12px; white-space:normal; }
  .valuation-strong-blocks-section .valuation-owner-roles td { display:flex!important; justify-content:space-between; gap:12px; padding:9px 10px; white-space:nowrap; overflow-wrap:normal; }
  .valuation-owner-roles td::before { color:var(--ink-soft); text-align:left; }
  .valuation-owner-roles td:nth-child(2)::before { content:'Cash now'; }
  .valuation-owner-roles td:nth-child(3)::before { content:'Remaining equity'; }
  .valuation-owner-roles td:nth-child(4)::before { content:'Total'; }
}
.valuation-filters { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:20px 0; }
.valuation-filters label { display:grid; gap:6px; font-weight:600; }
.valuation-filters select { width:100%; padding:10px; border:1px solid var(--line-dark); border-radius:6px; background:white; }
.valuation-report { max-width:900px; margin:auto; }
.valuation-main,.valuation-support { background:white; padding:32px; margin-bottom:24px; border:1px solid var(--line); border-radius:12px; }
.valuation-main h2 { font-size:28px; margin:4px 0; }
.valuation-future-page { border-top:4px solid #27624b; }
.valuation-gain-line { background:#edf6f0; padding-inline:8px; }
.valuation-gain-support { padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--line); }
.valuation-gain-assumption { line-height:1.45; }
.valuation-gain-schedule { font-variant-numeric:tabular-nums; }
.valuation-future-page .valuation-investor-gain { margin-top:22px; }
.valuation-main h3,.valuation-support h3 { margin:26px 0 10px; }
.valuation-meta,.valuation-footnote { color:var(--ink-soft); font-size:13px; }
.valuation-cash { background:var(--navy); color:white; border-radius:10px; padding:24px; margin:26px 0; }
.valuation-cash span,.valuation-cash strong,.valuation-cash small { display:block; }
.valuation-cash strong { font-size:38px; margin:4px 0; }
.valuation-line { display:flex; justify-content:space-between; gap:18px; padding:9px 0; border-bottom:1px solid var(--line); }
.valuation-line strong { white-space:nowrap; }
.valuation-line.is-total { font-weight:700; border-top:2px solid var(--ink); margin-top:8px; }
.valuation-line.is-grand-total { background:var(--blue-pale); padding:12px; margin-top:8px; border:0; }
.valuation-person { margin:26px 0; border-top:1px solid var(--line-dark); }
.valuation-person p { font-size:13px; color:var(--ink-soft); }
.valuation-support { overflow:auto; }
.valuation-support table { border-collapse:collapse; width:100%; font-size:12px; margin-bottom:24px; }
.valuation-support th,.valuation-support td { padding:9px 6px; border-bottom:1px solid var(--line); text-align:right; }
.valuation-support th:first-child { text-align:left; }
.valuation-support tbody th { font-weight:500; }
.valuation-warning { border-left:3px solid var(--gold); padding-left:12px; }
.valuation-history { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:18px; }
#property-finance-equity-content { padding:24px; }
@media(max-width:600px) { .valuation-filters { grid-template-columns:1fr; }.valuation-main,.valuation-support { padding:16px; }.valuation-main h2{font-size:23px}.valuation-cash{padding:18px}.valuation-cash strong{font-size:32px}.valuation-line{font-size:13px} }

* { box-sizing: border-box; }

html { color-scheme: light; }

body {
  margin: 0;
  color: var(--ink);
  background: var(--canvas);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.5;
}

button,
input,
textarea,
select { font: inherit; }

button { color: inherit; }

button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid rgba(12, 111, 166, .25);
  outline-offset: 2px;
}

[hidden] { display: none !important; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.preview-banner {
  position: sticky;
  top: 0;
  z-index: 50;
  padding: 8px 18px;
  text-align: center;
  color: #432f00;
  background: #fff0bd;
  border-bottom: 1px solid #ead180;
  font-size: 13px;
  font-weight: 700;
}

.auth-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 32px 20px;
  background:
    radial-gradient(circle at 75% 20%, rgba(12, 111, 166, .18), transparent 25%),
    linear-gradient(145deg, #f7fafb 0%, #edf5f7 46%, #dcebf0 100%);
}

.auth-card {
  width: min(100%, 500px);
  padding: 52px;
  background: rgba(255, 255, 255, .96);
  border: 1px solid rgba(199, 210, 216, .8);
  border-radius: 22px;
  box-shadow: 0 24px 70px rgba(18, 52, 77, .14);
}

.auth-logo { width: 205px; height: auto; margin-bottom: 38px; }
.auth-card h1 { max-width: 410px; margin: 5px 0 16px; font-family: Georgia, serif; font-size: clamp(30px, 5vw, 42px); line-height: 1.08; letter-spacing: -.025em; }
.auth-card > p:not(.eyebrow):not(.auth-note):not(.message) { max-width: 390px; color: var(--ink-soft); font-size: 17px; }
.google-sign-in { min-height: 44px; margin-top: 24px; }
.google-sign-in[aria-busy="true"] { opacity: .65; pointer-events: none; }
.auth-note { margin: 14px 0 0; color: var(--ink-soft); font-size: 13px; }

.eyebrow,
.step-label {
  margin: 0 0 5px;
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.app-shell { min-height: 100vh; }

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 20;
  display: flex;
  width: var(--sidebar-width);
  flex-direction: column;
  padding: 28px 18px 20px;
  color: white;
  background: var(--navy-deep);
}

.preview-banner:not([hidden]) + .auth-page + .app-shell .sidebar { top: 37px; }

.sidebar-brand {
  display: flex;
  align-items: end;
  gap: 10px;
  padding: 0 10px 32px;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}

.sidebar-brand img { width: 150px; height: auto; }
.sidebar-brand span { padding-bottom: 2px; color: rgba(255, 255, 255, .65); font-size: 12px; }
.sidebar-nav { display: grid; gap: 6px; margin-top: 26px; }

.nav-item {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 46px;
  gap: 11px;
  padding: 10px 12px;
  color: rgba(255, 255, 255, .72);
  background: transparent;
  border: 0;
  border-radius: 9px;
  cursor: pointer;
  text-align: left;
  font-weight: 650;
}

.nav-item:hover { color: white; background: rgba(255, 255, 255, .07); }
.nav-item.is-active { color: white; background: var(--blue); }
.nav-item.is-disabled { cursor: default; opacity: .65; }
.nav-item svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.nav-count { margin-left: auto; min-width: 23px; padding: 2px 6px; color: var(--navy); background: white; border-radius: 999px; text-align: center; font-size: 11px; }
.later-pill { margin-left: auto; padding: 2px 7px; color: #ffe59b; border: 1px solid rgba(255, 229, 155, .45); border-radius: 999px; font-size: 10px; text-transform: uppercase; }
.sidebar-later { margin: 12px 13px 0; color: rgba(255, 255, 255, .43); font-size: 11px; line-height: 1.45; }

.account-card {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) 32px;
  align-items: center;
  gap: 9px;
  margin-top: auto;
  padding: 16px 8px 0;
  border-top: 1px solid rgba(255, 255, 255, .12);
}

.account-avatar { display: grid; place-items: center; width: 36px; height: 36px; color: var(--navy); background: var(--gold); border-radius: 50%; font-weight: 800; }
.account-card strong, .account-card span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-card strong { font-size: 13px; }
.account-card span { color: rgba(255, 255, 255, .5); font-size: 10px; }
.account-card .icon-button { color: rgba(255, 255, 255, .7); }

.workspace { min-height: 100vh; margin-left: var(--sidebar-width); padding: 46px clamp(28px, 5vw, 74px) 72px; }
.view { display: none; }
.view.is-visible { display: block; }

.page-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  margin-bottom: 30px;
}

.page-header h1 { margin: 1px 0 3px; font-family: Georgia, serif; font-size: clamp(34px, 4vw, 48px); font-weight: 700; line-height: 1.05; letter-spacing: -.025em; }
.page-header p:not(.eyebrow) { margin: 8px 0 0; color: var(--ink-soft); font-size: 16px; }

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  gap: 8px;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
  font-weight: 750;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}

.button:hover:not(:disabled) { transform: translateY(-1px); }
.button:disabled { cursor: not-allowed; opacity: .48; }
.button-primary { color: white; background: var(--blue); box-shadow: 0 5px 16px rgba(12, 111, 166, .2); }
.button-primary:hover:not(:disabled) { background: #095f8f; }
.button-secondary { color: var(--ink); background: white; border-color: var(--line-dark); }
.button-secondary:hover:not(:disabled) { border-color: #97aab4; }
.button-dark { color: white; background: var(--navy); }
.button-large { min-height: 52px; padding-inline: 21px; }
.button-small { min-height: 35px; padding: 6px 12px; font-size: 13px; }

.icon-button {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  padding: 0;
  color: var(--ink-soft);
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: pointer;
  font-size: 28px;
}

.icon-button:hover { background: rgba(0, 0, 0, .05); }
.icon-button svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 16px; }
.stat-card { min-height: 124px; padding: 20px 22px; color: var(--ink); background: white; border: 1px solid var(--line); border-top: 4px solid var(--navy); border-radius: var(--radius); box-shadow: 0 8px 22px rgba(18, 52, 77, .04); text-align: left; }
button.stat-card { cursor: pointer; font: inherit; transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
button.stat-card:hover { transform: translateY(-2px); border-color: #a8c8d7; box-shadow: 0 14px 30px rgba(18, 52, 77, .12); }
button.stat-card:focus-visible { outline: 3px solid rgba(28, 140, 190, .25); outline-offset: 2px; }
.stat-card-blue { border-top-color: var(--blue); }
.stat-card-green { border-top-color: var(--green); }
.stat-card-gold { border-top-color: var(--gold); }
.stat-card-red { border-top-color: var(--danger); }
.stat-card-purple { border-top-color: #7b62a3; }
.stat-card span, .stat-card small { display: block; color: var(--ink-soft); }
.stat-card span { font-weight: 650; }
.stat-card strong { display: block; margin: 6px 0 1px; font-family: Georgia, serif; font-size: 31px; line-height: 1; }
.stat-card small { font-size: 12px; }

.panel { background: white; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.panel h2 { margin: 0; font-family: Georgia, serif; font-size: 24px; line-height: 1.15; }

.funnel-page-header { align-items: center; }
.report-freshness,
.private-label { display: inline-flex; align-items: center; padding: 7px 10px; color: var(--ink-soft); background: white; border: 1px solid var(--line); border-radius: 999px; font-size: 11px; font-weight: 750; white-space: nowrap; }
.analysis-paths { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 18px; }
.analysis-path-card { display: grid; gap: 6px; min-height: 170px; padding: 25px; cursor: pointer; text-align: left; }
.analysis-path-card:hover { transform: translateY(-2px); border-color: #a8c8d7; box-shadow: 0 16px 38px rgba(18, 52, 77, .12); }
.analysis-path-card strong { font-family: Georgia, serif; font-size: 27px; }
.analysis-path-card small { color: var(--ink-soft); font-size: 13px; line-height: 1.5; }
.analysis-filter-panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); align-items: end; gap: 13px; margin-bottom: 18px; padding: 18px 20px; }
.analysis-filter-panel label,
.contact-analysis-filter label { display: grid; gap: 6px; color: var(--ink-soft); font-size: 11px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.contact-analysis-filter { display: grid; grid-template-columns: minmax(170px, 1fr) minmax(210px, 1.35fr) minmax(190px, 1fr) auto; align-items: end; gap: 13px; margin-bottom: 18px; padding: 18px 20px; }
.contact-analysis-filter > div { display: grid; gap: 2px; padding: 4px 2px; }
.contact-analysis-filter > div strong { font-size: 13px; }
.contact-analysis-filter > div span { color: var(--ink-soft); font-size: 10px; }
.source-performance-panel { margin-bottom: 18px; padding: 25px; }
.source-performance-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
.source-performance-grid h3 { margin: 0 0 4px; font-size: 14px; }
.source-ranking-list { display: grid; gap: 7px; margin-top: 12px; }
.source-ranking-row { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; color: var(--ink); background: #f7f9fa; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; text-align: left; }
.source-ranking-row:hover { background: var(--blue-pale); border-color: #b9d9e7; }
.source-ranking-row > span:first-child { color: var(--ink-soft); font-size: 11px; font-weight: 800; }
.source-ranking-row strong { font-size: 12px; }
.source-ranking-row small { color: var(--ink-soft); font-size: 10px; }
.source-ranking-empty { padding: 14px; color: var(--ink-soft); background: #f7f9fa; border-radius: 8px; font-size: 11px; }
.analysis-result-note { margin: 5px 0 0; color: var(--ink-soft); font-size: 12px; }
.analysis-warning { margin: -5px 0 15px; padding: 11px 13px; color: #654b00; background: #fff5d8; border-left: 4px solid var(--gold); border-radius: 0 8px 8px 0; font-size: 12px; }
.funnel-filter-panel { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)) minmax(250px, 1.6fr); align-items: end; gap: 14px; margin-bottom: 18px; padding: 18px 20px; }
.funnel-filter-panel label { display: grid; gap: 6px; color: var(--ink-soft); font-size: 11px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.funnel-filter-panel p { margin: 0; padding: 0 3px 5px; color: var(--ink-soft); font-size: 11px; line-height: 1.45; }
.funnel-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
/* Four funnel cards read as one row. Three plus a stray fourth reads as a
   mistake, which it was. */
.dashboard-metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.application-metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.dashboard-metric-grid .stat-card, .application-metric-grid .stat-card { min-height: 154px; }
.funnel-summary-grid .stat-card { min-height: 132px; }
.stat-card-focus { color: white; background: linear-gradient(125deg, var(--navy-deep), var(--blue)); border-color: transparent; border-top-color: var(--gold); }
.stat-card-focus span, .stat-card-focus small { color: rgba(255, 255, 255, .75); }
.stat-card-focus strong { font-size: clamp(36px, 4vw, 49px); }
.funnel-panel { padding: 25px; }
.funnel-heading { display: flex; align-items: start; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.funnel-heading p { margin: 6px 0 0; color: var(--ink-soft); font-size: 13px; }
.funnel-flow { display: grid; grid-template-columns: minmax(120px, 1fr) auto minmax(120px, 1fr) auto minmax(120px, 1fr) auto minmax(120px, 1fr) auto minmax(120px, 1fr); align-items: stretch; gap: 6px; padding: 8px 0 3px; overflow-x: auto; }
.funnel-flow-four { grid-template-columns: minmax(150px, 1fr) auto minmax(150px, 1fr) auto minmax(150px, 1fr) auto minmax(150px, 1fr); }
.funnel-stage { display: flex; min-width: 120px; min-height: 126px; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 15px; padding: 16px; color: white; background: linear-gradient(145deg, var(--navy-deep), var(--blue)); border: 0; border-radius: 11px; box-shadow: 0 8px 18px rgba(12, 41, 62, .12); cursor: pointer; text-align: left; }
.funnel-stage:is(article) { cursor: default; }
.funnel-stage:nth-of-type(4n+1) { background: linear-gradient(145deg, #164d6d, #1781b8); }
.funnel-stage:hover { transform: translateY(-2px); box-shadow: 0 12px 23px rgba(12, 41, 62, .18); }
.funnel-stage div span, .funnel-stage div small { display: block; }
.funnel-stage div span { font-size: 14px; font-weight: 800; }
.funnel-stage div small { margin-top: 3px; color: rgba(255, 255, 255, .72); font-size: 10px; }
.funnel-stage > strong { font-family: Georgia, serif; font-size: clamp(27px, 2.5vw, 37px); line-height: 1; }
.funnel-connector { display: flex; min-width: 45px; flex-direction: column; align-items: center; justify-content: center; color: var(--ink-soft); text-align: center; }
.funnel-connector strong { color: var(--green); font-size: 14px; }
.funnel-connector > span:first-of-type { font-size: 9px; }
.funnel-connector > span:last-child { color: var(--line-dark); font-size: 25px; line-height: 1; }
.funnel-empty { padding: 45px 20px; background: var(--canvas); border: 1px dashed var(--line-dark); border-radius: 10px; text-align: center; }
.funnel-empty h3 { margin: 0; font-family: Georgia, serif; font-size: 21px; }
.funnel-empty p { max-width: 540px; margin: 8px auto 0; color: var(--ink-soft); }
.funnel-lower-grid { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 18px; }
.product-panel, .source-health-panel { padding-top: 22px; overflow: hidden; }
.product-panel .funnel-heading, .source-health-panel .funnel-heading { padding: 0 22px; }
.product-table th, .product-table td { text-align: right; }
.product-table th:first-child, .product-table td:first-child { text-align: left; }
.table-empty-cell { padding: 35px 22px !important; color: var(--ink-soft); text-align: center !important; }
.source-health-panel { padding-bottom: 10px; }
.source-health-row { display: grid; grid-template-columns: 9px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 14px 20px; border-top: 1px solid var(--line); }
.source-health-row > div strong, .source-health-row > div small { display: block; }
.source-health-row > div strong { font-size: 13px; }
.source-health-row > div small { margin-top: 2px; color: var(--ink-soft); font-size: 10px; }
.source-health-row > span:last-child { color: var(--ink-soft); font-size: 10px; font-weight: 750; }
.source-health-dot { width: 9px; height: 9px; background: #9daab2; border-radius: 50%; }
.source-health-dot.is-ready { background: var(--green); box-shadow: 0 0 0 4px var(--green-pale); }
.source-health-dot.is-warning { background: var(--gold); box-shadow: 0 0 0 4px #fff7df; }
.method-note { margin: 17px 3px 0; color: var(--ink-soft); font-size: 11px; }
.resident-report-panel { padding: 25px 25px 0; overflow: hidden; }
.resident-metrics-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 0 -25px; background: var(--line); border-top: 1px solid var(--line); }
.resident-metrics-grid article { min-height: 130px; padding: 22px 24px; background: white; }
.resident-metrics-grid span, .resident-metrics-grid small { display: block; color: var(--ink-soft); }
.resident-metrics-grid span { font-size: 12px; font-weight: 750; }
.resident-metrics-grid strong { display: block; margin: 8px 0 3px; font-family: Georgia, serif; font-size: 28px; line-height: 1.05; }
.resident-metrics-grid small { font-size: 10px; line-height: 1.4; }
.resident-outcome-table-wrap { margin: 0 -25px; }
.resident-comparison-wrap { margin: 0 -25px; border-top: 1px solid var(--line); }
.resident-comparison-wrap tbody tr:first-child td { border-top: 0; }
.resident-lower-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: 18px; margin-top: 18px; }
.resident-source-panel { padding-top: 22px; overflow: hidden; }
.resident-privacy-panel { padding: 26px; }
.resident-privacy-panel h2 { margin-bottom: 14px; }
.resident-privacy-panel p:not(.eyebrow) { color: var(--ink-soft); font-size: 13px; }
.resident-privacy-panel p:last-child { margin-bottom: 0; padding-top: 13px; border-top: 1px solid var(--line); }
.merge-note { margin: 0 3px 22px; padding: 11px 14px; color: var(--ink-soft); background: #eaf2f5; border-left: 4px solid var(--blue); border-radius: 0 8px 8px 0; font-size: 12px; }
.application-panel { overflow: hidden; }
.application-table td:first-child { min-width: 210px; }
.application-table td:first-child small, .resident-list-table td:first-child small { display: block; margin-top: 4px; color: var(--ink-soft); font-size: 10px; font-weight: 400; }
.application-table td:nth-child(3) { min-width: 170px; font-weight: 750; }
.application-table td:nth-child(7) { min-width: 170px; }
.resident-list-panel { margin-top: 18px; overflow: hidden; }
.resident-list-table td:first-child { min-width: 220px; }
.resident-list-table td:nth-child(2) { min-width: 210px; }
.resident-list-table td:last-child { min-width: 160px; text-align: right; }
.resident-list-table td:last-child small { display: block; margin-top: 4px; color: var(--ink-soft); font-size: 10px; }
.contact-data-panel { margin-top: 18px; }
.panel-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding: 22px 24px 18px; }
.segmented-control { display: inline-flex; gap: 3px; margin-top: 14px; padding: 3px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.contact-segments { flex-wrap: wrap; }
.segmented-control button { padding: 6px 11px; color: var(--ink-soft); background: transparent; border: 0; border-radius: 6px; cursor: pointer; font-size: 12px; font-weight: 750; }
.segmented-control button.is-active { color: var(--navy); background: white; box-shadow: 0 2px 6px rgba(18, 52, 77, .1); }
.toolbar-actions { display: flex; align-items: center; gap: 9px; }
.search-field { position: relative; display: block; }
.search-field svg { position: absolute; top: 12px; left: 13px; width: 18px; fill: none; stroke: var(--ink-soft); stroke-width: 2; stroke-linecap: round; }
.search-field input { width: min(32vw, 330px); padding-left: 40px; }

input,
textarea,
select {
  width: 100%;
  color: var(--ink);
  background: white;
  border: 1px solid var(--line-dark);
  border-radius: 8px;
}

input, select { min-height: 42px; padding: 9px 12px; }
textarea { min-height: 130px; padding: 11px 12px; line-height: 1.55; resize: vertical; }
input::placeholder, textarea::placeholder { color: #8999a3; }

.selection-bar { display: flex; align-items: center; gap: 13px; padding: 11px 24px; color: white; background: var(--navy); }
.selection-bar span { color: rgba(255, 255, 255, .72); font-size: 13px; }
.selection-bar .button { margin-left: auto; background: white; color: var(--navy); }

.table-wrap { overflow-x: auto; border-top: 1px solid var(--line); }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { padding: 12px 14px; color: var(--ink-soft); background: #f8fafb; border-bottom: 1px solid var(--line); text-align: left; font-size: 11px; letter-spacing: .03em; text-transform: uppercase; white-space: nowrap; }
.sort-header { display: inline-flex; align-items: center; gap: 5px; margin: -8px -10px; padding: 8px 10px; color: inherit; background: transparent; border: 0; border-radius: 6px; cursor: pointer; font: inherit; letter-spacing: inherit; text-transform: inherit; white-space: nowrap; }
.sort-header:hover, .sort-header:focus-visible { color: var(--blue); background: #edf4f7; outline: none; }
.sort-header[aria-sort="ascending"] span, .sort-header[aria-sort="descending"] span { color: var(--blue); font-size: 0; }
.sort-header[aria-sort="ascending"] span::after { content: "↑"; font-size: 12px; }
.sort-header[aria-sort="descending"] span::after { content: "↓"; font-size: 12px; }
td { padding: 14px; border-bottom: 1px solid #edf1f3; vertical-align: middle; }
tbody tr:hover { background: #fbfcfd; }
tbody tr:last-child td { border-bottom: 0; }
.check-cell { width: 42px; padding-left: 21px; }
.check-cell input, td input[type="checkbox"] { width: 17px; min-height: 17px; accent-color: var(--blue); }
.contact-name { font-weight: 750; }
.contact-name small { display: block; color: var(--ink-soft); font-weight: 400; }
.contact-name .review-label { width: fit-content; margin-top: 3px; padding: 2px 6px; color: #795900; background: #fff2c8; border-radius: 999px; font-size: 9px; font-weight: 800; text-transform: uppercase; }
.contact-email { color: var(--blue); }
.source-list { display: flex; flex-wrap: wrap; gap: 4px; }
.contact-source { display: grid; gap: 5px; min-width: 135px; }
.contact-source > strong { font-size: 11px; }
.tag { display: inline-block; padding: 3px 7px; color: #3b586a; background: #edf3f5; border-radius: 999px; font-size: 10px; font-weight: 750; }
.tag-alerts { color: #0c5b83; background: var(--blue-pale); }
.tag-hubspot { color: #8d4b22; background: #fff1e9; }
.tag-appfolio { color: #405a27; background: #edf4e6; }
.tag-relationship { color: var(--navy); background: #e7f0f4; white-space: nowrap; }
.email-status { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-size: 12px; font-weight: 700; }
.email-status::before { content: ""; width: 7px; height: 7px; background: var(--green); border-radius: 50%; }
.email-status.is-blocked { color: var(--danger); }
.email-status.is-blocked::before { background: var(--danger); }
.row-open { width: 32px; height: 32px; color: var(--ink-soft); background: transparent; border: 0; border-radius: 6px; cursor: pointer; font-size: 19px; }
.row-open:hover { color: var(--blue); background: var(--blue-pale); }

.loading-state,
.empty-state { padding: 55px 20px; text-align: center; }
.loading-state { display: flex; justify-content: center; align-items: center; gap: 10px; color: var(--ink-soft); }
.spinner { width: 19px; height: 19px; border: 2px solid var(--line-dark); border-top-color: var(--blue); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.empty-icon { display: grid; place-items: center; width: 52px; height: 52px; margin: 0 auto 12px; color: var(--blue); background: var(--blue-pale); border-radius: 50%; font-size: 28px; }
.empty-state h3 { margin: 0; font-family: Georgia, serif; font-size: 20px; }
.empty-state p { margin: 6px 0 0; color: var(--ink-soft); }
.panel-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 15px 22px; background: #fbfcfd; border-top: 1px solid var(--line); border-radius: 0 0 var(--radius) var(--radius); }
.panel-footer p { margin: 0; color: var(--ink-soft); font-size: 12px; }
.pagination { display: flex; gap: 8px; }

.safety-badge { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; color: var(--green); background: var(--green-pale); border: 1px solid #cce4d5; border-radius: 999px; font-size: 12px; font-weight: 800; white-space: nowrap; }
.safety-badge svg { width: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.header-actions { display: flex; align-items: center; gap: 10px; }
.campaign-layout { display: grid; grid-template-columns: minmax(460px, 630px) minmax(360px, 1fr); align-items: start; gap: 24px; }
.campaign-form-column { display: grid; gap: 18px; }
.recipient-panel, .composer-panel, .draft-panel { padding: 24px; }
.panel-heading-row { display: flex; align-items: start; justify-content: space-between; gap: 20px; }
.text-button { padding: 4px; color: var(--blue); background: none; border: 0; cursor: pointer; font-weight: 750; }
.recipient-count { display: flex; align-items: baseline; gap: 9px; margin: 22px 0 12px; }
.recipient-count strong { font-family: Georgia, serif; font-size: 31px; }
.recipient-count span { color: var(--ink-soft); }
.recipient-chips { display: flex; flex-wrap: wrap; gap: 7px; max-height: 260px; overflow-y: auto; padding: 4px; border: 1px solid var(--line); border-radius: 9px; background: #fbfcfd; }
.recipient-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 5px 6px 5px 9px; color: #29485a; background: #eef4f6; border-radius: 999px; font-size: 11px; }
.recipient-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.recipient-chip button { width: 18px; height: 18px; padding: 0; color: var(--ink-soft); background: rgba(255, 255, 255, .75); border: 0; border-radius: 50%; cursor: pointer; line-height: 1; }
.recipient-placeholder { color: var(--ink-soft); font-size: 13px; }
.audience-presets { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 19px 0 12px; }
.audience-presets button { display: grid; gap: 3px; min-height: 84px; padding: 13px; color: var(--ink); background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; cursor: pointer; text-align: left; }
.audience-presets button:hover { background: var(--blue-pale); border-color: #b9d9e7; }
.audience-presets strong { font-size: 12px; }
.audience-presets span { color: var(--ink-soft); font-size: 10px; line-height: 1.35; }
.quiet-note { margin: 10px 0 0; color: var(--ink-soft); font-size: 12px; }
.manual-recipient { margin-top: 20px; padding-top: 17px; border-top: 1px solid var(--line); }
.manual-recipient > label { display: block; margin-bottom: 7px; color: var(--ink-soft); font-size: 12px; font-weight: 700; }
.manual-recipient > div { display: flex; gap: 8px; }
.manual-recipient input { min-width: 0; }

.composer-panel > div:first-child { margin-bottom: 20px; }
.composer-panel form, .form-stack { display: grid; gap: 16px; }
.composer-panel label, .form-stack label { display: grid; gap: 7px; font-size: 12px; font-weight: 750; }
.composer-panel label small { color: var(--ink-soft); font-weight: 400; }
.optional { color: var(--ink-soft); font-weight: 400; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.checkbox-row { display: flex !important; grid-template-columns: none; align-items: center; }
.checkbox-row input { width: 17px; min-height: 17px; accent-color: var(--blue); }

.draft-panel > p:not(.step-label) { margin: 17px 0; color: var(--ink-soft); }
.connection-status { display: inline-flex; align-items: center; gap: 7px; color: var(--ink-soft); font-size: 11px; font-weight: 750; }
.connection-status span { width: 7px; height: 7px; background: #9ba9b1; border-radius: 50%; }
.connection-status.is-connected { color: var(--green); }
.connection-status.is-connected span { background: var(--green); }
.draft-summary { display: flex; align-items: center; gap: 11px; padding: 13px 15px; background: var(--canvas); border-radius: 8px; font-size: 13px; }
.draft-summary strong { font-size: 18px; }
.draft-actions { display: flex; gap: 9px; margin-top: 17px; }
.review-confirmation { display: grid; grid-template-columns: 20px 1fr; align-items: start; gap: 10px; padding: 14px; color: var(--ink); background: #fff9e8; border: 1px solid #ead99e; border-radius: 9px; font-size: 12px; font-weight: 750; }
.review-confirmation input { width: 18px; min-height: 18px; margin: 1px 0 0; accent-color: var(--green); }
.send-panel .connection-status.is-connected { color: var(--green); }

.email-preview-column { position: sticky; top: 32px; }
.preview-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; padding: 0 4px; }
.preview-heading h2 { margin: 0; font-family: Georgia, serif; font-size: 20px; }
.preview-heading span { color: var(--ink-soft); font-size: 11px; }
.email-client { overflow: hidden; background: #e9eef1; border: 1px solid var(--line-dark); border-radius: 12px; box-shadow: var(--shadow); }
.email-client-bar { display: flex; align-items: center; gap: 5px; height: 42px; padding: 0 13px; background: #f9fafb; border-bottom: 1px solid var(--line); }
.email-client-bar > span { width: 8px; height: 8px; background: #d0d8dc; border-radius: 50%; }
.email-client-bar div { margin-left: 8px; color: var(--ink-soft); font-size: 10px; }
.email-client iframe { display: block; width: 100%; height: 680px; background: white; border: 0; }

.resource-layout { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(520px, 1.5fr); align-items: start; gap: 20px; }
.resource-list-panel { overflow: hidden; }
.resource-list-heading { display: flex; align-items: center; justify-content: space-between; padding: 22px; border-bottom: 1px solid var(--line); }
.resource-list-heading span { display: grid; place-items: center; min-width: 28px; min-height: 28px; padding: 3px 8px; color: var(--navy); background: var(--blue-pale); border-radius: 999px; font-size: 12px; font-weight: 800; }
.resource-list { display: grid; max-height: 760px; overflow-y: auto; }
.resource-list-item { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; padding: 17px 20px; color: var(--ink); background: white; border: 0; border-bottom: 1px solid var(--line); cursor: pointer; text-align: left; }
.resource-list-item:hover, .resource-list-item.is-active { background: var(--blue-pale); }
.resource-list-item strong { grid-column: 1 / -1; font-family: Georgia, serif; font-size: 16px; line-height: 1.25; }
.resource-list-item small { grid-column: 1 / -1; color: var(--ink-soft); }
.resource-list-item time { grid-column: 2; grid-row: 1; color: var(--ink-soft); font-size: 10px; }
.resource-status { width: fit-content; padding: 3px 7px; color: var(--ink-soft); background: var(--canvas); border-radius: 999px; font-size: 10px; font-weight: 800; text-transform: uppercase; }
.resource-status.is-ready { color: var(--green); background: var(--green-pale); }
.resource-editor-panel { padding: 25px; }
.resource-editor-panel form { display: grid; gap: 17px; }
.resource-editor-panel label { display: grid; gap: 7px; font-size: 12px; font-weight: 750; }
.resource-body { min-height: 330px; }
.resource-actions { display: flex; justify-content: flex-end; gap: 9px; padding-top: 4px; }
.resource-actions #delete-resource { margin-right: auto; }

.message { margin: 13px 0 0; padding: 10px 12px; color: #23573a; background: var(--green-pale); border-radius: 7px; font-size: 12px; }
.message-error { color: var(--danger); background: var(--danger-pale); }

dialog { color: var(--ink); background: white; border: 0; box-shadow: 0 30px 90px rgba(12, 41, 62, .25); }
dialog::backdrop { background: rgba(12, 41, 62, .46); backdrop-filter: blur(2px); }
.drawer { width: min(560px, 94vw); height: 100vh; max-height: none; margin: 0 0 0 auto; padding: 0; border-radius: 0; }
.modal { width: min(580px, 94vw); padding: 0; border-radius: 16px; }
.dialog-header, .dialog-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 21px 24px; }
.dialog-header { border-bottom: 1px solid var(--line); }
.dialog-header h2 { margin: 0; font-family: Georgia, serif; font-size: 26px; }
.dialog-body { padding: 24px; }
.drawer .dialog-body { overflow-y: auto; height: calc(100vh - 156px); }
.dialog-footer { justify-content: flex-end; background: #f8fafb; border-top: 1px solid var(--line); }
#merge-detail-contact { margin-right: auto; }
.detail-hero { display: grid; grid-template-columns: 54px 1fr; align-items: center; gap: 13px; margin-bottom: 24px; }
.detail-avatar { display: grid; place-items: center; width: 54px; height: 54px; color: var(--navy); background: #dcebf0; border-radius: 50%; font-family: Georgia, serif; font-size: 21px; font-weight: 700; }
.detail-hero strong, .detail-hero span { display: block; }
.detail-hero strong { font-size: 15px; }
.detail-hero span { color: var(--ink-soft); font-size: 12px; }
.detail-section { padding: 19px 0; border-top: 1px solid var(--line); }
.detail-section h3 { margin: 0 0 12px; color: var(--ink-soft); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.detail-grid { display: grid; grid-template-columns: 145px minmax(0, 1fr); gap: 9px 14px; font-size: 12px; }
.detail-grid dt { color: var(--ink-soft); }
.detail-grid dd { margin: 0; overflow-wrap: anywhere; }
.raw-fields { max-height: 330px; overflow: auto; padding: 12px; background: #f7f9fa; border-radius: 8px; }
.linked-record { display: grid; gap: 3px; width: 100%; margin-bottom: 7px; padding: 11px 12px; color: var(--ink); background: #f7f9fa; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; text-align: left; }
.linked-record:hover { background: var(--blue-pale); border-color: #b9d9e7; }
.linked-record strong { font-size: 12px; }
.linked-record span { color: var(--ink-soft); font-size: 11px; line-height: 1.4; }
.merge-preview { display: grid; gap: 10px; padding: 16px; background: #f7f9fa; border: 1px solid var(--line); border-radius: 9px; }
.merge-preview h3 { margin: 0 0 2px; color: var(--navy); font-size: 14px; }
.merge-choice { display: grid !important; grid-template-columns: 20px 1fr; align-items: start; gap: 10px !important; padding: 12px; background: white; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; }
.merge-choice input { width: 18px; min-height: 18px; margin: 1px 0 0; }
.merge-choice span { display: grid; gap: 2px; font-size: 12px; font-weight: 500; }
.merge-choice strong { color: var(--navy); font-size: 13px; }
.merge-choice small { color: var(--ink-soft); font-weight: 400; }

@media (max-width: 1120px) {
  .campaign-layout { grid-template-columns: 1fr; }
  .email-preview-column { position: static; }
  .email-client iframe { height: 600px; }
  .status-column { display: none; }
  td.status-column { display: none; }
  .funnel-filter-panel { grid-template-columns: repeat(3, 1fr); }
  .analysis-filter-panel { grid-template-columns: 1fr 1fr; }
  .contact-analysis-filter { grid-template-columns: 1fr 1fr; }
  .source-performance-grid { grid-template-columns: 1fr; }
  .funnel-filter-panel p { grid-column: 1 / -1; }
  .funnel-summary-grid { grid-template-columns: 1fr 1fr; }
  .dashboard-metric-grid, .application-metric-grid { grid-template-columns: 1fr 1fr; }
  .stats-grid { grid-template-columns: 1fr 1fr; }
  .funnel-lower-grid { grid-template-columns: 1fr; }
  .resident-metrics-grid { grid-template-columns: 1fr 1fr; }
  .resident-lower-grid { grid-template-columns: 1fr; }
  .resource-layout { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
  :root { --sidebar-width: 76px; }
  .sidebar { padding-inline: 10px; }
  .sidebar-brand { justify-content: center; padding-inline: 0; }
  .sidebar-brand img { width: 44px; object-fit: cover; object-position: left; }
  .sidebar-brand span, .nav-item:not(.is-active)::after, .nav-item { font-size: 0; }
  .nav-item { justify-content: center; padding: 10px; }
  .nav-item svg { width: 23px; height: 23px; }
  .nav-count, .later-pill, .sidebar-later, .account-card > div:nth-child(2), .account-card .icon-button { display: none !important; }
  .account-card { display: flex; justify-content: center; padding-inline: 0; }
  .workspace { padding: 32px 22px 58px; }
  .stats-grid { grid-template-columns: 1fr; }
  .funnel-filter-panel { grid-template-columns: 1fr; }
  .analysis-paths { grid-template-columns: 1fr; }
  .analysis-path-card { min-height: 135px; }
  .analysis-filter-panel, .contact-analysis-filter { grid-template-columns: 1fr; }
  .funnel-filter-panel p { grid-column: auto; }
  .stat-card { min-height: 100px; }
  .panel-toolbar { align-items: stretch; flex-direction: column; }
  .toolbar-actions { align-items: stretch; flex-direction: column; }
  .search-field input { width: 100%; }
}

@media (max-width: 600px) {
  :root { --sidebar-width: 0px; }
  .sidebar { position: fixed; inset: auto 0 0 0; width: 100%; height: 68px; flex-direction: row; padding: 8px 14px; }
  .preview-banner:not([hidden]) + .auth-page + .app-shell .sidebar { top: auto; }
  .sidebar-brand, .sidebar-later, .account-card { display: none; }
  .sidebar-nav { grid-template-columns: repeat(6, 1fr); width: 100%; margin: 0; }
  .nav-item { flex-direction: column; gap: 3px; padding: 4px 2px; font-size: 0 !important; line-height: 1; }
  .nav-item::after { content: attr(data-mobile-label); font-size: 9px; }
  .nav-item:not(.is-active)::after { font-size: 9px; }
  .nav-item svg { width: 20px; height: 20px; }
  .workspace { margin: 0; padding: 27px 14px 100px; }
  .page-header { align-items: stretch; flex-direction: column; gap: 18px; }
  .page-header .button { align-self: flex-start; }
  .stats-grid { grid-template-columns: 1fr 1fr; }
  .funnel-summary-grid { grid-template-columns: 1fr 1fr; }
  .dashboard-metric-grid, .application-metric-grid { grid-template-columns: 1fr; }
  .stat-card { padding: 16px; }
  .stat-card:first-child { grid-column: 1 / -1; }
  .resident-summary-grid .stat-card-focus { grid-column: 1 / -1; }
  .selection-bar { align-items: flex-start; flex-wrap: wrap; padding-inline: 15px; }
  .selection-bar .button { margin-left: 0; }
  th, td { padding: 12px 10px; }
  th:nth-child(4), td:nth-child(4), th:nth-child(5), td:nth-child(5) { display: none; }
  .check-cell { padding-left: 14px; }
  .panel-footer { align-items: stretch; flex-direction: column; }
  .pagination { display: grid; grid-template-columns: 1fr 1fr; }
  .campaign-layout { display: block; }
  .funnel-page-header { align-items: flex-start; }
  .funnel-flow { grid-template-columns: 1fr; overflow: visible; }
  .funnel-stage { width: 100%; min-width: 0; min-height: 108px; }
  .funnel-connector { min-height: 55px; }
  .funnel-connector > span:last-child { transform: rotate(90deg); }
  .funnel-heading { align-items: flex-start; flex-direction: column; }
  .resident-metrics-grid { grid-template-columns: 1fr; }
  .campaign-form-column { margin-bottom: 25px; }
  .recipient-panel, .composer-panel, .draft-panel { padding: 19px; }
  .form-row { grid-template-columns: 1fr; }
  .draft-actions { flex-direction: column; }
  .audience-presets { grid-template-columns: 1fr; }
  .resource-editor-panel { padding: 19px; }
  .auth-card { padding: 36px 28px; }
}

/* ---------------------------------------------------------------------------
   The dashboard, rebuilt 2026-09-02.

   [Carl: "I don't like the little explanations below the metric, remove and just
   have the metrics be clear on their own, and the space where these explanations
   was can be 'updated on' date."]

   Both halves of that solve each other. A number that needs a sentence under it
   to be understood has the wrong title; fixing the title frees the line, and the
   line becomes the as-of date. That matters more here than on most dashboards:
   AppFolio arrives as a scheduled export, so a figure can be two days old and
   look current, and nobody checks a data-health page before making a decision.
   --------------------------------------------------------------------------- */

.stat-when { font-size: 12px; color: var(--ink-soft); margin-top: 8px; }
.stat-when.is-stale { color: var(--danger); font-weight: 650; }

/* The period buttons. They move the cards and not the five year table, which is
   labelled on the table itself so nobody reports it as a bug. */
.window-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 20px; }
.window-filter-label { font-size: 12px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); margin-right: 4px; }
.chip { padding: 7px 14px; font: inherit; font-size: 13px; font-weight: 600; color: var(--ink-soft); background: white; border: 1px solid var(--line); border-radius: 999px; cursor: pointer; }
.chip:hover { border-color: var(--blue); color: var(--ink); }
.chip.is-active { background: var(--navy); border-color: var(--navy); color: white; }

.dashboard-operator-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.resident-summary-grid { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }

/* Approved and never moved in. The largest leak in the funnel and the best
   follow-up list in the company, so it is a band rather than one card in six. */
.action-card { display: flex; align-items: center; justify-content: space-between; gap: 20px; width: 100%; margin: 18px 0 26px; padding: 20px 24px; text-align: left; font: inherit; color: white; background: var(--navy); border: 0; border-radius: var(--radius); cursor: pointer; }
.action-card:hover { background: #16344d; }
.action-card-label { display: block; font-weight: 650; font-size: 14px; opacity: .88; }
.action-card strong { display: block; margin: 4px 0 2px; font-family: Georgia, serif; font-size: 34px; line-height: 1; }
.action-card-note { display: block; font-size: 13px; opacity: .82; }
.action-card-go { flex: none; font-weight: 650; font-size: 14px; }

/* Dashboard questions are visually complete sections, not loose tables. */
.trend-panel { margin-bottom: 26px; }
.contact-trend-panel { padding: 24px; overflow: hidden; }
.dashboard-section { padding: 24px; border-width: 2px; border-color: #c8d7df; overflow: hidden; }
.trend-panel .panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.trend-panel .panel-head p { margin: 4px 0 0; font-size: 13px; color: var(--ink-soft); max-width: 62ch; }
.table-scroll { overflow-x: auto; }
.trend-table { width: 100%; border-collapse: collapse; margin-top: 14px; font-size: 14px; }
.trend-table th, .trend-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--line); white-space: nowrap; }
/* Only the column headings shout. A row heading here is a page title, and a
   page title in capitals is unreadable. */
.trend-table thead th { font-size: 12px; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); }
.trend-table tbody th { font-weight: 700; }
.trend-table .num, .trend-table td.num { text-align: right; }
.trend-table tbody tr:last-child td { border-bottom: 0; }
.trend-table .rate { color: var(--ink-soft); font-size: 13px; }
/* An annualized row is a projection, so it is drawn as provisional. */
.trend-table tr.is-incomplete td { color: var(--ink-soft); font-style: italic; }
.trend-table tr[data-dashboard-year] { cursor: pointer; }
.trend-table tr[data-dashboard-year]:hover td,
.trend-table tr[data-dashboard-year]:hover th { background: var(--blue-pale); }
.trend-table tr[data-dashboard-year]:focus-visible { outline: 3px solid rgba(28, 140, 190, .3); outline-offset: -3px; }
.trend-foot { margin: 12px 0 0; font-size: 13px; color: var(--ink-soft); }

/* ---------------------------------------------------------------------------
   Contacts, rebuilt 2026-09-02.

   The page used to state each conversion twice: once as its own card and again
   inside the stage flow. One set of cards now carries both the count and the
   ratio, so there is one place to look and one number to trust.
--------------------------------------------------------------------------- */
.stats-grid-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.conversion-set { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; padding: 6px 0 2px; }
.conversion-card { display: flex; min-height: 118px; flex-direction: column; justify-content: space-between; gap: 10px; padding: 16px 17px; color: white; background: linear-gradient(145deg, var(--navy-deep), var(--blue)); border: 0; border-radius: 11px; box-shadow: 0 8px 18px rgba(12, 41, 62, .12); cursor: pointer; font: inherit; text-align: left; transition: transform .16s ease, box-shadow .16s ease; }
.conversion-card:first-child { background: linear-gradient(145deg, #164d6d, #1781b8); }
.conversion-card:hover { transform: translateY(-2px); box-shadow: 0 12px 23px rgba(12, 41, 62, .18); }
.conversion-card:focus-visible { outline: 3px solid rgba(28, 140, 190, .45); outline-offset: 2px; }
.conversion-card span { font-size: 13px; font-weight: 800; }
.conversion-card strong { font-family: Georgia, serif; font-size: clamp(25px, 2.3vw, 34px); line-height: 1; }
.conversion-card small { min-height: 13px; color: rgba(255, 255, 255, .76); font-size: 10px; font-weight: 650; }

/* Pathway and eviction narrow the list, so they sit with the list. */
.list-filter { display: grid; gap: 5px; color: var(--ink-soft); font-size: 10px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.list-filter select { min-width: 150px; }
.filter-check { display: flex; align-items: center; gap: 7px; color: var(--ink-soft); font-size: 11px; font-weight: 700; white-space: nowrap; }
.filter-check input { width: 15px; height: 15px; margin: 0; }
.toolbar-actions { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }

@media (max-width: 1180px) {
  .conversion-set { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .conversion-set { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stats-grid-three { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------------
   Applications, rebuilt 2026-09-02.
--------------------------------------------------------------------------- */

/* Year rows are the year filter, so they have to look selectable. */
.trend-table tr[data-application-year] { cursor: pointer; }
.trend-table tr[data-application-year]:hover td,
.trend-table tr[data-application-year]:hover th { background: var(--blue-pale); }
.trend-table tr[data-application-year]:focus-visible { outline: 3px solid rgba(28, 140, 190, .3); outline-offset: -3px; }
.trend-table tr.is-selected td, .trend-table tr.is-selected th { background: var(--blue-pale); font-weight: 750; }
.partial-flag { font-weight: 500; font-style: italic; color: var(--ink-soft); }

/* Filling in a value the primary systems never supplied. It is deliberately
   plain: this is a repair, not a normal way to enter data. */
.inline-edit { display: flex; gap: 10px; align-items: center; margin: 10px 0 6px; }
.inline-edit input { flex: 1 1 auto; min-width: 0; }
.inline-edit-message { margin: 4px 0 0; font-size: 13px; color: var(--ink-soft); }

/* The header action must not wrap into a three line block. */
.header-actions .button { white-space: nowrap; }
.funnel-page-header .header-actions { flex-wrap: wrap; }

/* A field AppFolio owns. It is shown, not hidden, so the value is still
   readable; it simply cannot be typed over here. */
input.is-locked, input.is-locked:focus {
  background: var(--canvas);
  color: var(--ink-soft);
  border-color: var(--line);
  cursor: not-allowed;
}
.message-warning { background: #fdf6e6; border: 1px solid var(--gold); color: #6b5312; padding: 10px 13px; border-radius: 9px; font-size: 13px; }

/* ---------------------------------------------------------------------------
   Email, rebuilt 2026-09-02: a block composer instead of one fixed layout.
--------------------------------------------------------------------------- */
.audience-exclusion { margin: 0 0 6px; }
.recipient-count { flex-wrap: wrap; }
.recipient-actions { display: flex; gap: 14px; margin-left: auto; }
.text-button.is-danger { color: var(--danger); }

.saved-lists { margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); }
.saved-lists h3 { margin: 0 0 4px; font-size: 15px; }
.saved-list-rows { display: grid; gap: 8px; margin-top: 12px; }
.saved-list-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 13px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.saved-list-row strong { display: block; font-size: 14px; }
.saved-list-row small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: 11px; }
.saved-list-row > div:last-child { display: flex; gap: 12px; flex: none; }

.block-editor { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.block-editor-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.block-editor-head h3 { margin: 0; font-size: 15px; }
.block-add { display: flex; gap: 6px; flex-wrap: wrap; }
.campaign-blocks { display: grid; gap: 12px; margin-top: 14px; }
.campaign-block { display: grid; gap: 9px; padding: 13px 14px; background: var(--canvas); border: 1px solid var(--line); border-radius: 11px; }
.campaign-block header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.block-type { color: var(--ink-soft); font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.block-controls { display: flex; gap: 4px; }
.block-controls .icon-button { width: 26px; height: 26px; font-size: 13px; }
.block-controls .icon-button[disabled] { opacity: .3; cursor: default; }
.campaign-block input, .campaign-block textarea { width: 100%; }
.block-image { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: center; }
.block-image select { min-width: 170px; }
.block-image-preview { display: block; width: 100%; max-height: 180px; object-fit: cover; border-radius: 7px; }
.block-message { margin: 0; font-size: 12px; color: var(--ink-soft); }

/* ---------------------------------------------------------------------------
   The website panel. It sits below the funnel because a visitor is not yet a
   contact, and putting them in one row would imply a conversion rate that
   nothing in the data supports.
--------------------------------------------------------------------------- */
#analytics-panel .header-actions { display: flex; align-items: center; gap: 12px; flex: none; }
.analytics-metric-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 16px 0 6px; }
.analytics-metric-grid .stat-card { min-height: 132px; }
.analytics-trend-table { margin-top: 14px; }

/* The heading over the second table. It is a question, like every other table
   title in the portal, because a title that names the question tells you
   whether the table is worth reading before you read it. */
.analytics-subheading { margin: 22px 0 0; font-size: 15px; font-weight: 650; color: var(--ink); }

@media (max-width: 1120px) {
  .analytics-metric-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
  .dashboard-operator-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .analytics-metric-grid { grid-template-columns: 1fr; }
}


/* ---------------------------------------------------------------- delinquency */

.delinquency-indicators { padding: 18px 24px 4px; border-top: 1px solid var(--line); margin: 14px 0 0; }
.delinquency-quad { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { .delinquency-quad { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.delinquency-indicator-table td.num, .delinquency-indicator-table th.num { text-align: right; }
.delinquency-indicator-table tbody th { font-weight: 700; }
.delinquency-indicator-table .indicator-now { font-size: 17px; font-weight: 700; }
.delinquency-change { display: inline-flex; align-items: baseline; gap: 5px; white-space: nowrap; }
.delinquency-change .change-arrow { font-size: 11px; }
.delinquency-change.is-worse { color: var(--danger); }
.delinquency-change.is-better { color: var(--green); }
.delinquency-change.is-flat { color: var(--ink-soft); }
.delinquency-change .change-basis { color: var(--ink-soft); font-size: 11px; }

.delinquency-band { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px;
  font-size: 11px; letter-spacing: .03em; text-transform: uppercase; font-weight: 700; }
.delinquency-band.is-within { background: var(--green-pale); color: var(--green); }
.delinquency-band.is-intervene { background: #fdf3e0; color: #96661a; }
.delinquency-band.is-severe { background: var(--danger-pale); color: var(--danger); }

.delinquency-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; padding: 4px 24px 0; }
@media (max-width: 900px) { .delinquency-charts { grid-template-columns: 1fr; } }
.delinquency-chart { margin: 0; }
.delinquency-chart figcaption { font-size: 13px; font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.chart-holder { position: relative; padding-top: 30px; margin-top: -30px; }
.chart-holder svg { display: block; width: 100%; height: auto; overflow: visible; }
.chart-tooltip { position: absolute; pointer-events: none; opacity: 0; transition: opacity .12s;
  background: var(--navy-deep); color: #fff; border-radius: 8px; padding: 7px 10px; font-size: 12px;
  line-height: 1.35; white-space: nowrap; transform: translate(-50%, -120%); z-index: 4;
  box-shadow: 0 6px 18px rgba(12, 41, 62, .28); }
.chart-tooltip.is-visible { opacity: 1; }
.chart-tooltip strong { display: block; font-size: 13px; }
.chart-tooltip span { color: #b9cddc; }

.delinquency-series-scroll { max-height: 460px; overflow-y: auto; }
.delinquency-row-drift td, .delinquency-row-drift th { background: #fffaf2; }
.delinquency-household-behind th, .delinquency-household-behind td { background: var(--danger-pale); }
.delinquency-source-key { width: 34%; color: var(--ink-soft); font-weight: 600; }


/* ------------------------------------------------------- delinquency, readable

   Two things were wrong on a phone. Wide tables only ever scrolled sideways, so
   the numbers sat off-screen; and a blanket rule hid the fourth and fifth column
   of every table, which on the households table hid Owed 30+ and Total balance —
   the two columns it exists for.

   Tables marked .stack-table become one card per row below 700px, each cell
   labelled from its data-label. Nothing is hidden and nothing scrolls sideways. */

/*  A row header in these tables is a person's name or a measure, not a column
    label, so it does not take the all-caps treatment the header row wears.
    "LEKISHA M. LEE" is a filing label; "Lekisha M. Lee" is a person.           */
.stack-table th[scope="row"], .compact-table th[scope="row"] {
  text-transform: none;
  letter-spacing: 0;
  font-size: 13px;
  color: var(--ink);
}

.dq-cards { display: grid; gap: 12px; padding: 0 24px 4px; }
.dq-cards-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dq-cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.dq-cards-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.dq-card {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.dq-label {
  font-size: 12px;
  line-height: 1.3;
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.dq-value {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 28px;
  line-height: 1.05;
  color: var(--ink);
}
.dq-deltas { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.dq-delta { font-size: 12px; color: var(--ink-soft); white-space: nowrap; }
.dq-delta i { font-style: normal; opacity: 0.75; }
.dq-delta.is-worse { color: var(--danger); }
.dq-delta.is-better { color: var(--green); }

/* The dashboard cards carry the state in their colour, so the words "within
   range" are not needed. The tab's cards stay plain: the levels are not settled
   enough yet to colour a page by. */
.dq-card.is-within { border-left: 4px solid var(--green); }
.dq-card.is-intervene { border-left: 4px solid var(--gold); }
.dq-card.is-severe { border-left: 4px solid var(--danger); }

.delinquency-charts { grid-template-columns: 1fr 1fr; gap: 20px; padding: 0 24px 4px; }
.delinquency-chart figcaption {
  font-size: 12px; color: var(--ink-soft); text-transform: uppercase;
  letter-spacing: 0.04em; margin-bottom: 6px;
}
.chart-holder { position: relative; }
.chart-holder svg { width: 100%; height: auto; display: block; }

@media (max-width: 1100px) {
  .dq-cards-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .dq-cards-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dq-cards-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .delinquency-charts { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .dq-cards { padding-inline: 15px; gap: 10px; }
  .dq-value { font-size: 24px; }

  .stack-table thead { display: none; }
  .stack-table, .stack-table tbody, .stack-table tr, .stack-table th, .stack-table td {
    display: block; width: auto;
  }
  .stack-table tr {
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 10px 12px;
    margin-bottom: 10px;
  }
  .stack-table tr + tr { margin-top: 0; }
  .stack-table th, .stack-table td {
    border: 0 !important;
    padding: 3px 0 !important;
    text-align: left !important;
    white-space: normal !important;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 14px;
  }
  /* Undo the blanket "hide the fourth and fifth column" rule for these tables. */
  .stack-table th:nth-child(n), .stack-table td:nth-child(n) { display: flex; }
  .stack-table th[scope="row"] {
    font-weight: 600;
    font-size: 15px;
    text-transform: none;
    letter-spacing: 0;
    color: var(--ink);
    padding-bottom: 6px !important;
    border-bottom: 1px solid var(--line) !important;
    margin-bottom: 4px;
  }
  .stack-table td::before {
    content: attr(data-label);
    color: var(--ink-soft);
    font-size: 12px;
    flex: 0 0 auto;
  }
  .stack-table td:empty { display: none; }
  .stack-table td[colspan] { display: block; }
  .stack-table td[colspan]::before { content: none; }
  .delinquency-series-scroll { max-height: none; }
}

@media (max-width: 600px) {
  /* Keep every portal tab on one usable bottom row. */
  .sidebar-nav { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 2px; }
  .nav-item::after { font-size: 8px; }
}

/* Targeted phone layout for the three record-heavy pages. Wide record tables
   stay inside their own scroll area instead of widening and compressing the
   whole page. Secondary columns remain available in each row's detail view. */
@media (max-width: 600px) {
  html,
  body { overflow-x: clip; }
  #view-contacts,
  #view-applications,
  #view-residents,
  #view-contacts > *,
  #view-applications > *,
  #view-residents > * {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  #view-contacts,
  #view-applications,
  #view-residents { overflow-x: hidden; }
  #view-contacts .panel,
  #view-applications .panel,
  #view-residents .panel { min-width: 0; }
  #view-contacts .table-wrap,
  #view-contacts .table-scroll,
  #view-applications .table-wrap,
  #view-applications .table-scroll,
  #view-residents .table-wrap,
  #view-residents .table-scroll {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    contain: inline-size layout paint;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }
  #view-contacts .contact-panel .table-wrap table { min-width: 760px; }
  #view-contacts .contact-trend-panel .trend-table { min-width: 620px; }
  #view-applications .application-panel .table-wrap table { min-width: 690px; }
  #view-applications .trend-panel .trend-table { min-width: 610px; }
  #view-residents .resident-list-panel .table-wrap table { min-width: 650px; }
  #view-residents .resident-outcome-table-wrap table,
  #view-residents .resident-comparison-wrap table { min-width: 430px; }
  #view-contacts .contact-analysis-filter,
  #view-applications .analysis-filter-panel,
  #view-residents .analysis-filter-panel { padding: 15px; }
  #view-contacts .contact-trend-panel .panel-head {
    align-items: flex-start;
    flex-direction: column;
  }
  #view-contacts .contact-trend-panel .report-freshness {
    max-width: 100%;
    white-space: normal;
  }
  #view-contacts .panel-toolbar,
  #view-applications .panel-toolbar,
  #view-residents .panel-toolbar { padding: 17px 15px 14px; }
  #view-contacts .contact-trend-panel { padding: 18px 15px; }
  #view-contacts .conversion-set { grid-template-columns: 1fr 1fr; }
  #view-contacts .conversion-card { min-width: 0; padding: 14px; }
  #view-applications .window-filter { gap: 6px; }
  #view-applications .chip { padding-inline: 11px; }
  #view-residents .resident-report-panel { padding: 18px 15px 0; }
  #view-residents .resident-metrics-grid,
  #view-residents .resident-outcome-table-wrap,
  #view-residents .resident-comparison-wrap { margin-inline: -15px; }
}


/*  A small numeric table does not need stacking — it needs to be small.
    Six measures against three windows fits a phone at 12px, and reading across
    a row is how a comparison is meant to be read. Stacking it would turn six
    rows into six cards and lose the comparison the table exists for. */
.compact-table th, .compact-table td { white-space: nowrap; }
@media (max-width: 700px) {
  .compact-table { font-size: 12px; }
  .compact-table th, .compact-table td { padding: 8px 6px !important; }
  .compact-table th:first-child, .compact-table td:first-child { padding-left: 0 !important; }
  .compact-table th:last-child, .compact-table td:last-child { padding-right: 0 !important; }
  .compact-table thead th { font-size: 10px; letter-spacing: 0; }
  .compact-table th[scope="row"] {
    text-transform: none; letter-spacing: 0; font-size: 12px;
    color: var(--ink); white-space: normal;
  }
  /* The blanket rule that hides the fourth and fifth column of every table must
     not reach a table with only four. */
  .compact-table th:nth-child(4), .compact-table td:nth-child(4),
  .compact-table th:nth-child(5), .compact-table td:nth-child(5) { display: table-cell; }
  .delinquency-series-scroll { max-height: 70vh; }

  /* Two buttons side by side do not fit 390px. Let them wrap rather than run
     off the edge of the panel. */
  #view-delinquency .panel-head { flex-direction: column; align-items: flex-start; gap: 10px; }
  #view-delinquency .header-actions { flex-wrap: wrap; gap: 8px; width: 100%; }
  #view-delinquency .header-actions .button { flex: 1 1 auto; justify-content: center; }
}


/*  A spark line inside a stat card. No axis, no labels: it is there to show the
    shape of the last three years, and the number above it carries the value. */
.stat-spark { height: 26px; margin: 2px 0 4px; }
.stat-spark svg { width: 100%; height: 100%; display: block; overflow: visible; vector-effect: non-scaling-stroke; }
.stat-spark path, .stat-spark circle { vector-effect: non-scaling-stroke; }
.stat-spark:empty { display: none; }


/*  The two bad-pay lists. Buttons wrap rather than run off a phone, and the
    chosen one is filled in so it is obvious which list you are looking at. */
.badpay-switch { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 24px 6px; }
.badpay-switch .button { flex: 1 1 auto; justify-content: center; }
.badpay-switch .button.is-active {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
#badpay-lists .trend-foot { margin-top: 0; }
@media (max-width: 700px) {
  .badpay-switch { padding-inline: 15px; }
}


.dq-cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.portfolio-metric-stack { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); gap: 11px; padding: 0 24px 4px; }
.portfolio-metric-stack > .dq-cards,
.portfolio-metric-stack > .delinquency-indicators,
.portfolio-metric-stack > .delinquency-indicators > .dq-cards { display: contents; }
.dq-card-badpay .dq-value em { font-style: normal; font-size: 15px; color: var(--ink-soft); }
.dq-spark-caption { font-size: 11px; color: var(--ink-soft); }
.dashboard-operator-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 900px) {
  .dq-cards-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-operator-pair { grid-template-columns: 1fr; }
}

button.dq-card { text-align: left; cursor: pointer; font: inherit; }
button.dq-card:hover { border-color: var(--blue); }

/* ---------------------------------------------------------- cash position */
.cash-position-panel { border-top: 4px solid var(--blue); }
.cash-position-panel .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.cash-position-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }
.cash-position-actions label { display: flex; align-items: center; gap: 7px; color: var(--ink-soft); font-size: 10px; font-weight: 800; text-transform: uppercase; }
.cash-position-actions select { width: auto; min-height: 34px; padding: 5px 30px 5px 9px; font-size: 11px; text-transform: none; }
.cash-entity-grid { width: 100%; margin-top: 14px; }
#cash-position-rows { display: grid; gap: 10px; }
.cash-entity-card { min-width: 0; overflow: hidden; background: #fbfcfd; border: 1px solid var(--line); border-radius: 11px; }
.cash-entity-card.is-expanded { border-color: #a9cad9; box-shadow: 0 6px 18px rgba(18, 52, 77, .08); }
.cash-entity-card.is-negative-cash,
.cash-entity-card.is-negative-cash.is-expanded { border-color: var(--danger); box-shadow: 0 0 0 1px rgba(163, 59, 59, .1); }
.cash-position-row-button { display: grid; grid-template-columns: minmax(70px, .7fr) repeat(2, minmax(105px, 1fr)) 26px; align-items: center; gap: 12px; width: 100%; padding: 12px 14px 8px; color: var(--navy); background: transparent; border: 0; text-align: left; cursor: pointer; font: inherit; }
.cash-entity-name { font-size: 14px; font-weight: 850; }
.cash-card-metric { display: grid; gap: 1px; min-width: 0; }
.cash-card-metric b { overflow: hidden; color: var(--navy); font-family: Georgia, serif; font-size: 19px; line-height: 1.05; text-overflow: ellipsis; white-space: nowrap; }
.cash-card-metric small { color: var(--ink-soft); font-size: 9px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
.cash-position-row-button i { display: grid; place-items: center; width: 25px; height: 25px; color: var(--blue); background: var(--blue-pale); border-radius: 50%; font-size: 17px; font-style: normal; }
.cash-card-trends { display: grid; grid-template-columns: minmax(70px, .7fr) repeat(2, minmax(105px, 1fr)) 26px; gap: 12px; padding: 0 14px 9px; }
.cash-card-trends > div { display: flex; flex-wrap: wrap; gap: 3px 9px; min-width: 0; }
.cash-card-trends > div:first-child { grid-column: 2; }
.cash-card-trends > div > small { display: none; }
.cash-trend { color: var(--ink-soft); font-size: 10px; font-weight: 750; white-space: nowrap; }
.cash-trend small { font-size: inherit; font-weight: 650; }
.cash-trend.is-positive { color: var(--green); }
.cash-trend.is-negative { color: var(--danger); }
.cash-entity-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(150px, 32%); }
.cash-entity-card > .cash-position-row-button { grid-column: 1; grid-row: 1; }
.cash-entity-card > .cash-card-trends { grid-column: 1; grid-row: 2; }
.cash-entity-card > .cash-spark { grid-column: 2; grid-row: 1 / span 2; }
.cash-entity-card > .cash-facts,
.cash-entity-card > .cash-position-detail { grid-column: 1 / -1; }
.cash-spark { display: grid; align-content: center; gap: 2px; min-width: 0; margin: 0; padding: 8px 12px 6px 0; }
.cash-spark svg { display: block; width: 100%; height: auto; overflow: visible; }
/* One job per colour: navy = the series; red wash = below zero; green dashes = target;
   the status dot and its word = where today sits. */
.cash-spark-line { fill: none; stroke: var(--navy); stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; }
.cash-spark-short { fill: var(--danger); opacity: .07; }
.cash-spark-zero { stroke: var(--line-dark); stroke-width: 1; }
.cash-spark-target { stroke: var(--green); stroke-width: 1.2; stroke-dasharray: 4 3; }
.cash-spark-year { stroke: var(--line); stroke-width: 1; }
.cash-spark-axis { fill: var(--ink-soft); font-size: 9px; font-weight: 700; }
.cash-spark-axis.is-target { fill: var(--green); }
.cash-spark-dot { fill: var(--green); stroke: white; stroke-width: 1.5; }
.cash-spark.is-below .cash-spark-dot { fill: #b7791f; }
.cash-spark.is-short .cash-spark-dot { fill: var(--danger); }
.cash-spark-hit { fill: transparent; }
.cash-spark-hit:hover { fill: rgba(18, 52, 77, .07); }
.cash-spark figcaption { display: flex; justify-content: space-between; gap: 8px; padding-right: 38px; color: var(--ink-soft); font-size: 9px; font-weight: 700; }
.cash-spark-status { display: inline-flex; align-items: center; gap: 4px; color: var(--ink); }
.cash-spark-status i { width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
.cash-spark.is-below .cash-spark-status i { background: #b7791f; }
.cash-spark.is-short .cash-spark-status i { background: var(--danger); }
.cash-spark.is-empty { display: none; }
.cash-facts { display: flex; flex-wrap: wrap; gap: 3px 16px; margin: 0; padding: 7px 14px 10px; color: var(--ink-soft); border-top: 1px solid #edf1f3; list-style: none; font-size: 11px; }
.cash-facts li::before { content: "•"; margin-right: 6px; color: var(--blue); }
.cash-position-detail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 12px; background: #f4f8fa; border-top: 1px solid var(--line); }
.cash-position-detail h3 { margin: 0 0 10px; font-size: 14px; }
.cash-arithmetic { min-width: 0; padding: 14px; background: white; border: 1px solid var(--line); border-radius: 9px; }
.cash-arithmetic dl { display: grid; gap: 0; margin: 0; }
.cash-arithmetic dl > div { display: flex; justify-content: space-between; gap: 16px; padding: 6px 0; border-bottom: 1px solid #edf1f3; }
.cash-arithmetic dl > div:last-child { border-bottom: 0; }
.cash-arithmetic dt { color: var(--ink-soft); font-size: 11px; }
.cash-arithmetic dd { margin: 0; color: var(--navy); font-size: 12px; font-weight: 750; text-align: right; }
.cash-arithmetic .is-add dd { color: var(--green); }
.cash-arithmetic .is-total { margin-top: 4px; padding-top: 10px; border-top: 2px solid var(--navy); border-bottom: 0; }
.cash-arithmetic .is-total dt,
.cash-arithmetic .is-total dd { color: var(--navy); font-size: 13px; font-weight: 850; }
.cash-arithmetic dl > .cash-context-subrow { padding-left: 12px; }
.cash-arithmetic .cash-context-subrow dt,
.cash-arithmetic .cash-context-subrow dd { font-size: 10px; font-weight: 600; }
.cash-context-card { grid-column: 1; }
.cash-net-assets { grid-column: 2; }
.portal-view-as { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; font-size: 10px; }
.portal-view-as > span { flex: 0 0 auto; }
.portal-view-as select { min-width: 0; max-width: 145px; padding: 4px 6px; color: inherit; background: transparent; border: 1px solid #7f929f; border-radius: 5px; font: inherit; }
.portal-view-as option { color: #12344d; background: white; }
#portal-view-as-mobile { display: none; width: fit-content; margin: 0 0 12px auto; }
.sidebar-collapsed #portal-view-as { display: none; }
.sidebar-collapsed #portal-view-as-mobile { display: flex; }
@media (max-width: 820px) {
  #portal-view-as { display: none; }
  #portal-view-as-mobile { display: flex; }
}
.cash-net-assets dd > small { display: block; margin-top: 3px; font-size: 9px; }
.cash-net-assets details { margin-top: 10px; font-size: 11px; }
.cash-account-table { max-width: 100%; overflow-x: auto; }
.cash-account-table table { font-size: 10px; }
.cash-spark-net { stroke: #8b5c99; }
.cash-spark-net-dot { fill: #8b5c99; stroke: white; stroke-width: 1; }
.cash-spark-axis.is-net { fill: #8b5c99; }
.cash-spark-axis.is-cash { fill: var(--navy); }
.cash-spark-axis.cash-spark-year-label { font-size: 8px; }
.cash-spark-label-guide { stroke: var(--line-dark); stroke-width: .7; }
.cash-spark figcaption { padding-right: 0; font-size: 9px; }
.cash-spark figcaption small { display: block; font-size: 8px; font-weight: 500; }
.cash-legend { color: var(--navy); }
.cash-legend.is-net { color: #8b5c99; }
.cash-arithmetic p,
.cash-bill-detail > p { margin: 10px 0 0; color: var(--ink-soft); font-size: 11px; line-height: 1.5; }
.cash-recurring-breakdown { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.cash-recurring-breakdown summary { color: var(--blue); font-size: 11px; font-weight: 800; cursor: pointer; }
.cash-recurring-breakdown ul { display: grid; gap: 5px; margin: 9px 0 0; padding: 0; list-style: none; }
.cash-recurring-breakdown li { display: flex; justify-content: space-between; gap: 14px; color: var(--ink-soft); font-size: 10px; }
.cash-recurring-breakdown li strong { color: var(--navy); text-align: right; }
.cash-period-form { display: grid; grid-template-columns: minmax(160px, 1fr) minmax(150px, auto) auto; align-items: end; gap: 9px; margin-top: 13px; padding-top: 12px; border-top: 1px solid var(--line); }
.cash-period-form label { display: grid; gap: 4px; color: var(--ink-soft); font-size: 10px; font-weight: 750; }
.cash-period-form select { min-height: 36px; padding: 6px 30px 6px 8px; color: var(--ink); background: white; border: 1px solid var(--line); border-radius: 7px; font: inherit; }
.cash-period-form > div strong,
.cash-period-form > div span { display: block; }
.cash-period-form > div strong { color: var(--navy); font-size: 12px; }
.cash-period-form > div span,
.cash-period-form > p { color: var(--ink-soft); font-size: 9px; }
.cash-period-form > p { grid-column: 1 / -1; margin: 0; }
.cash-bill-detail { grid-column: 1 / -1; }
.cash-bill-list { display: grid; gap: 6px; }
.cash-bill-row { display: grid; grid-template-columns: 100px minmax(0, 1fr) auto; align-items: baseline; gap: 12px; padding: 9px 11px; background: white; border: 1px solid var(--line); border-radius: 8px; }
.cash-bill-row time { color: var(--ink-soft); font-size: 10px; }
.cash-bill-row strong { overflow-wrap: anywhere; font-size: 11px; }
.cash-bill-row span { color: var(--navy); font-size: 12px; font-weight: 800; }
.cash-position-sources { display: flex; flex-wrap: wrap; gap: 5px 18px; margin-top: 12px; color: var(--ink-soft); font-size: 10px; }
.cash-position-sources strong { color: var(--navy); }
.dashboard-source-panel .panel-head p { margin: 5px 0 0; color: var(--ink-soft); font-size: 13px; }
.dashboard-source-grid { display: grid; gap: 10px; margin-top: 16px; }
.system-status-summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 15px; border-radius: 10px; }
.system-status-summary.is-ok { color: var(--green); background: var(--green-pale); }
.system-status-summary.is-running { color: var(--blue); background: var(--blue-pale); }
.system-status-summary.is-failed { color: var(--danger); background: var(--danger-pale); }
.system-status-summary strong { font-size: 14px; }
.system-status-summary span { font-size: 11px; font-weight: 700; text-align: right; }
.system-status-alerts { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.system-status-alerts li { padding: 10px 12px; color: var(--danger); background: var(--danger-pale); border-radius: 8px; font-size: 12px; font-weight: 700; }
.dashboard-source-items { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; }
.dashboard-source-item { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 10px 12px; background: var(--canvas); border-radius: 9px; }
.dashboard-source-item strong { color: var(--navy); font-size: 13px; overflow-wrap: anywhere; }
.dashboard-source-item span { font-size: 11px; font-weight: 750; }
.dashboard-source-item small { grid-column: 1 / -1; color: var(--ink-soft); font-size: 10px; line-height: 1.4; }
.dashboard-source-item.is-late span { color: var(--danger); }
.cash-position-definition { margin-top: 14px; }

.dashboard-open-project-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(235px, 1fr)); gap: 11px; }
.dashboard-open-project-card { display: grid; align-content: start; gap: 7px; min-width: 0; padding: 14px 15px; color: var(--ink); background: #fffaf0; border: 1px solid #ead8aa; border-radius: 10px; cursor: pointer; text-align: left; font: inherit; }
.dashboard-open-project-card:hover { border-color: var(--gold); transform: translateY(-1px); }
.dashboard-open-project-card.is-notice { background: #fbfcfd; border-color: var(--line); }
.dashboard-open-project-card > strong { overflow-wrap: anywhere; color: var(--navy); font-size: 14px; }
.dashboard-open-project-card > span:not(.maintenance-signal) { color: var(--ink-soft); font-size: 11px; line-height: 1.35; }
.dashboard-open-project-card > span b { color: var(--navy); }
.dashboard-open-project-card .dashboard-project-move-in { color: var(--green); font-weight: 750; }

@media (max-width: 700px) {
  #view-dashboard { width: 100%; min-width: 0; overflow-x: hidden; }
  #view-dashboard .page-header { flex-direction: row; align-items: center; gap: 10px; margin-bottom: 14px; }
  #view-dashboard .page-header h1 { font-size: 34px; }
  #view-dashboard .header-actions { margin-left: auto; }
  #view-dashboard .report-freshness { padding: 5px 8px; font-size: 9px; }
  #view-dashboard .dashboard-section { margin-bottom: 12px; padding: 15px; border-width: 1px; }
  #view-dashboard .dashboard-section .panel-head { flex-direction: column; align-items: flex-start; gap: 7px; }
  #view-dashboard .cash-position-panel .panel-head { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; }
  #view-dashboard .cash-position-actions { width: 100%; justify-content: space-between; }
  #view-dashboard .cash-position-actions label { flex: 1 1 190px; }
  #view-dashboard .cash-position-actions select { min-width: 0; flex: 1 1 auto; }
  #view-dashboard .panel h2 { font-size: 24px; line-height: 1.08; }
  #view-dashboard .dq-cards { padding-inline: 0; }
  #view-dashboard .dq-cards-2,
  #view-dashboard .dq-cards-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portfolio-metric-stack { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; padding-inline: 0; }
  #view-dashboard .dq-card { gap: 4px; padding: 11px 12px; }
  #view-dashboard .dq-label { font-size: 10px; }
  #view-dashboard .dq-value { font-size: 22px; }
  #view-dashboard .dq-delta { font-size: 10px; }
  #view-dashboard .stat-spark { height: 20px; }
  #view-dashboard .table-scroll { max-width: 100%; overflow-x: hidden; }
  #view-dashboard .trend-table { width: 100%; min-width: 0; table-layout: fixed; font-size: 11px; }
  #view-dashboard .trend-table th,
  #view-dashboard .trend-table td { display: table-cell; padding: 8px 4px; overflow-wrap: anywhere; white-space: normal; }
  #view-dashboard .trend-table thead th { font-size: 9px; letter-spacing: 0; }

  .cash-entity-grid { margin-top: 10px; }
  #cash-position-rows { gap: 8px; }
  .cash-position-row-button { grid-template-columns: minmax(45px, .58fr) repeat(2, minmax(0, 1fr)) 24px; gap: 8px; padding: 10px 10px 6px; }
  .cash-entity-name { font-size: 13px; }
  .cash-card-metric b { font-size: 17px; }
  .cash-card-metric small { font-size: 8px; }
  .cash-position-row-button i { width: 23px; height: 23px; font-size: 15px; }
  .cash-card-trends { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px 12px; padding: 0 10px 7px 65px; }
  .cash-card-trends > div:first-child { grid-column: auto; }
  .cash-card-trends > div { display: grid; gap: 1px; }
  .cash-card-trends > div > small { display: none; }
  .cash-trend { font-size: 9px; }
  .cash-facts { display: grid; gap: 2px; padding: 6px 10px 8px; font-size: 10px; }
  .cash-entity-card { grid-template-columns: minmax(0, 1fr); }
  .cash-entity-card > .cash-spark { grid-column: 1; grid-row: 3; padding: 0 10px 6px; }
  .cash-position-detail { grid-template-columns: 1fr; gap: 9px; padding: 9px; }
  .cash-context-card, .cash-net-assets { grid-column: 1; }
  .cash-arithmetic { padding: 12px; }
  .cash-arithmetic dl > div { gap: 10px; }
  .cash-arithmetic dt { max-width: 64%; }
  .cash-period-form { grid-template-columns: 1fr auto; align-items: end; }
  .cash-period-form > div { grid-column: 1 / -1; }
  .cash-period-form > p { grid-column: 1 / -1; }
  .cash-bill-row { grid-template-columns: 70px minmax(0, 1fr) auto; gap: 8px; padding: 8px; }
  .cash-position-definition { margin-top: 10px; font-size: 9px; line-height: 1.45; }
  .cash-position-sources { gap: 3px 12px; margin-top: 8px; font-size: 9px; }
  .dashboard-open-project-grid { grid-template-columns: 1fr; }
}

@media (max-width: 390px) {
  #view-dashboard .page-header h1 { font-size: 31px; }
  #view-dashboard .dq-cards-2,
  #view-dashboard .dq-cards-3 { grid-template-columns: 1fr 1fr; }
  .portfolio-metric-stack { grid-template-columns: 1fr 1fr; }
  .cash-card-trends { padding-left: 61px; }
}


/*  What they are looking for leads the record, so it is allowed to look like the
    answer rather than another row of the same grey list. */
.detail-wants { background: #f4f8fa; border-radius: 12px; padding: 16px 18px; }
.detail-wants h3 { margin-top: 0; }
.detail-wants .detail-grid dd { font-weight: 600; color: var(--ink); }
.detail-raw > summary {
  cursor: pointer;
  font-size: 13px;
  color: var(--ink-soft);
  padding: 6px 0;
}
.detail-raw[open] > summary { margin-bottom: 6px; }


/*  The portfolio and delinquency cards are the same component now: a label, a
    number, its change against a year ago, and the shape of how it got there. */
.dq-card-trend .dq-value em,
.dq-card .dq-value em { font-style: normal; font-size: 15px; color: var(--ink-soft); }
.dq-card .stat-spark { margin-top: 8px; }
.dq-card .dq-deltas:empty { display: none; }

/* ---------------------------------------------------------- maintenance */
.maintenance-dashboard-card { cursor: pointer; text-align: left; font: inherit; }
.maintenance-dashboard-card:hover { border-color: var(--blue); transform: translateY(-1px); }
.maintenance-dashboard-card.is-worse { border-left: 4px solid var(--danger); }
.maintenance-dashboard-card.is-attention { border-left: 4px solid var(--gold); }
.maintenance-dashboard-card.is-better { border-left: 4px solid var(--green); }
.maintenance-dashboard-card .dq-deltas { display: block; margin-top: 10px; color: var(--ink-soft); font-size: 12px; line-height: 1.4; }
.maintenance-dashboard-card.is-worse .dq-deltas { color: var(--danger); font-weight: 750; }
.maintenance-dashboard-card.is-better .dq-deltas { color: var(--green); font-weight: 750; }
.maintenance-inline-cards { padding: 2px 0 4px; }
.maintenance-explainer { margin: 0 0 14px; padding: 10px 13px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.maintenance-explainer summary { color: var(--blue); cursor: pointer; font-size: 12px; font-weight: 800; }
.maintenance-explainer p { max-width: 920px; margin: 9px 0 2px; color: var(--ink-soft); font-size: 12px; line-height: 1.55; }
.maintenance-intervention-list { display: grid; gap: 8px; }
.maintenance-intervention-card { overflow: hidden; background: white; border: 1px solid var(--line); border-radius: 10px; }
.maintenance-intervention-card > summary { display: grid; grid-template-columns: 34px minmax(165px, .8fr) minmax(260px, 1.5fr) auto; align-items: center; gap: 8px 14px; padding: 10px 12px; cursor: pointer; list-style: none; }
.maintenance-intervention-card > summary::-webkit-details-marker { display: none; }
.maintenance-intervention-card > summary::after { content: "Review"; color: var(--blue); font-size: 11px; font-weight: 800; }
.maintenance-intervention-card[open] > summary::after { content: "Close"; }
.maintenance-intervention-identity strong,
.maintenance-intervention-identity small { display: block; }
.maintenance-intervention-identity small { margin-top: 2px; color: var(--ink-soft); font-size: 11px; }
.maintenance-intervention-preview { min-width: 0; overflow: hidden; color: var(--ink-soft); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.maintenance-intervention-detail { padding: 0 12px 12px 60px; border-top: 1px solid var(--line); }
.maintenance-intervention-detail p { margin: 10px 0 0; color: var(--ink-soft); font-size: 12px; line-height: 1.5; }
.maintenance-intervention-empty { display: grid; gap: 3px; padding: 13px; background: var(--canvas); border-radius: 9px; }
.maintenance-intervention-empty span { color: var(--ink-soft); font-size: 12px; }
.maintenance-intervention-table td { white-space: normal; vertical-align: top; }
.maintenance-intervention-table td:nth-child(2) { min-width: 230px; }
.maintenance-intervention-table td:nth-child(3) { min-width: 360px; color: var(--ink-soft); }
.maintenance-intervention-table td strong,
.maintenance-intervention-table td small,
.maintenance-property-table th small,
.maintenance-project-table th small,
.maintenance-project-table td small,
.maintenance-history-table th small { display: block; }
.maintenance-intervention-table td small { margin-top: 3px; color: var(--ink-soft); }
.maintenance-intervention-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px 12px; margin-top: 10px; }
.maintenance-intervention-actions .button { min-height: 32px; }
.maintenance-route-state { display: inline-block; padding: 3px 7px; color: #755110; background: #fff1c9; border-radius: 999px; font-size: 10px; font-weight: 800; white-space: nowrap; }
.maintenance-rank { display: grid; place-items: center; width: 30px; height: 30px; color: white; background: var(--navy); border-radius: 50%; }
.maintenance-blocker { padding: 18px 20px; background: #fffaf0; border: 1px solid #ead8aa; border-radius: 10px; }
.maintenance-blocker strong { display: block; color: #755110; }
.maintenance-blocker p { margin: 4px 0 0; color: var(--ink-soft); }
.maintenance-subheading { margin: 20px 0 10px; font-size: 15px; }
.maintenance-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-top: 12px; }
.maintenance-section-heading .maintenance-subheading { margin-bottom: 10px; }
.maintenance-filter-group { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.maintenance-filter { display: grid; gap: 4px; min-width: 250px; color: var(--ink-soft); font-size: 11px; font-weight: 750; }
.maintenance-filter select { min-height: 36px; padding: 6px 32px 6px 9px; color: var(--ink); background: white; border: 1px solid var(--line); border-radius: 7px; font: inherit; }
.maintenance-table-controls { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 12px; color: var(--ink-soft); font-size: 12px; }
.maintenance-secondary-history { margin-top: 20px; border-top: 1px solid var(--line); }
.maintenance-secondary-history > summary { padding: 16px 0 6px; color: var(--blue); cursor: pointer; font-size: 13px; font-weight: 800; }
.maintenance-open-turns { display: grid; grid-template-columns: repeat(auto-fill, minmax(252px, 1fr)); gap: 10px; }
.maintenance-open-turn { display: grid; gap: 7px; align-content: start; align-self: start; padding: 12px 13px; background: #fffaf0; border: 1px solid #ead8aa; border-radius: 10px; }
.maintenance-open-turn.is-notice { background: #fbfcfd; border-color: var(--line); }
.maintenance-open-turn header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.maintenance-open-turn h4 { margin: 0; font-size: 14px; overflow-wrap: anywhere; }
.maintenance-open-turn header .maintenance-signal { flex: none; padding: 2px 7px; font-size: 9px; }
.maintenance-open-turn-timing { margin: 0; color: var(--ink-soft); font-size: 11.5px; line-height: 1.3; }
.maintenance-open-turn-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.maintenance-open-turn-actions small { color: var(--ink-soft); }
.maintenance-open-project-figures { display: grid; grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 5px 12px; margin: 1px 0 0; }
.maintenance-open-project-figures dt { color: var(--ink-soft); font-size: 10px; letter-spacing: .02em; }
.maintenance-open-project-figures dd { margin: 0; color: var(--navy); font-size: 14.5px; font-weight: 750; white-space: nowrap; }
.maintenance-open-project-figures .maintenance-project-status { padding: 6px 8px; border: 1px solid var(--line); border-radius: 8px; }
.maintenance-open-project-figures .maintenance-project-status small { display: block; margin-top: 1px; font-size: 9px; font-weight: 750; }
.maintenance-open-project-figures .maintenance-project-status.is-green { background: var(--green-pale); border-color: #bdd9c6; }
.maintenance-open-project-figures .maintenance-project-status.is-green dd,
.maintenance-open-project-figures .maintenance-project-status.is-green small { color: var(--green); }
.maintenance-open-project-figures .maintenance-project-status.is-yellow { background: #fff7df; border-color: #ead180; }
.maintenance-open-project-figures .maintenance-project-status.is-yellow dd,
.maintenance-open-project-figures .maintenance-project-status.is-yellow small { color: #805400; }
.maintenance-open-project-figures .maintenance-project-status.is-red { background: var(--danger-pale); border-color: #e5baba; }
.maintenance-open-project-figures .maintenance-project-status.is-red dd,
.maintenance-open-project-figures .maintenance-project-status.is-red small { color: var(--danger); }
.maintenance-open-project-figures .maintenance-project-status.is-unknown small { color: var(--ink-soft); }
.maintenance-reserve-form { display: grid; grid-template-columns: minmax(180px, 1fr) auto; align-items: end; gap: 10px 14px; margin: 22px 0; padding: 16px; background: #fffaf0; border: 1px solid #ead8aa; border-radius: 10px; }
.maintenance-reserve-form h3,
.maintenance-reserve-form > p { grid-column: 1 / -1; margin: 0 !important; }
.maintenance-reserve-form label { display: grid; gap: 5px; color: var(--ink-soft); font-size: 11px; font-weight: 750; }
.maintenance-reserve-form input { min-height: 38px; padding: 7px 9px; color: var(--ink); background: white; border: 1px solid var(--line); border-radius: 7px; font: inherit; }
.maintenance-reserve-form [data-reserve-message] { grid-column: 1 / -1; }
.maintenance-signal { display: inline-block; padding: 4px 8px; color: var(--navy); background: var(--blue-pale); border-radius: 999px; font-size: 10px; font-weight: 800; letter-spacing: .02em; }
.maintenance-signal.is-attention { color: #755110; background: #fff1c9; }
.maintenance-signal.is-urgent { color: #8a1c1c; background: #fde2e2; }
.property-debt-table td .maintenance-signal { margin-top: 6px; }
.maintenance-property-table th { min-width: 190px; }
.maintenance-property-table th small,
.maintenance-project-table th small,
.maintenance-project-table td small,
.maintenance-history-table th small { margin-top: 3px; color: var(--ink-soft); font-weight: 500; }
.maintenance-property-table td,
.maintenance-project-table td { vertical-align: top; }
.maintenance-project-table { width: 100%; }
.maintenance-project-table th { min-width: 0; }
.maintenance-project-table thead th { white-space: normal; }
.maintenance-project-table tbody th[scope="row"] { min-width: 148px; white-space: normal; }
.maintenance-project-table th, .maintenance-project-table td { padding: 10px 8px; }
.maintenance-project-table.hide-class-column th:nth-child(6),
.maintenance-project-table.hide-class-column td:nth-child(6) { display: none; }
.maintenance-service-chart,
.maintenance-cost-chart { position: relative; margin: 18px 0 8px; padding: 10px 14px 2px; background: #fbfcfd; border: 1px solid var(--line); border-radius: 11px; }
.maintenance-service-chart svg,
.maintenance-cost-chart svg { display: block; width: 100%; height: auto; }
.maintenance-service-chart svg text,
.maintenance-cost-chart svg text { fill: #71818d; font-size: 10px; }
.maintenance-chart-burden { fill: none; stroke: var(--blue); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.maintenance-cost-point { cursor: pointer; outline: none; }
.maintenance-cost-point circle { fill: white; stroke: var(--blue); stroke-width: 2.5; transition: fill .15s, r .15s; }
.maintenance-cost-point:hover circle,
.maintenance-cost-point:focus circle,
.maintenance-cost-point.is-selected circle { fill: var(--blue); r: 7px; }
.maintenance-cost-point:focus-visible circle { stroke: var(--navy); stroke-width: 4; }
.maintenance-chart-detail { min-height: 20px; margin: 0 6px 10px; color: var(--ink-soft); font-size: 12px; text-align: center; }
.maintenance-chart-median,
.maintenance-chart-p75 { fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.maintenance-chart-median { stroke: var(--blue); }
.maintenance-chart-p75 { stroke: var(--gold); }
.maintenance-chart-legend { display: flex; justify-content: flex-end; gap: 16px; color: var(--ink-soft); font-size: 11px; font-weight: 700; }
.maintenance-chart-legend span { display: flex; align-items: center; gap: 6px; }
.maintenance-chart-legend i { width: 20px; height: 3px; border-radius: 2px; background: var(--blue); }
.maintenance-chart-legend i.is-p75 { background: var(--gold); }
.maintenance-chart-legend i.is-burden { background: var(--blue); }
.maintenance-chart-legend i.is-coverage { height: 0; background: transparent; border-top: 2px dashed #8999a4; }
.maintenance-chart-coverage { stroke: #8999a4; stroke-width: 1.5; stroke-dasharray: 4 4; }
.maintenance-benchmarks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.maintenance-benchmarks article { padding: 15px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.maintenance-benchmarks article > span { display: block; color: var(--ink-soft); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.maintenance-benchmarks article > strong { display: block; margin-top: 6px; color: var(--navy); font-family: Georgia, serif; font-size: 19px; line-height: 1.25; }
.maintenance-benchmarks article p { margin: 8px 0; color: var(--ink-soft); font-size: 12px; line-height: 1.45; }
.maintenance-benchmarks article a { font-size: 11px; font-weight: 750; }
.maintenance-benchmark-pair { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 9px; }
.maintenance-benchmark-pair > div { min-width: 0; padding: 9px; background: white; border: 1px solid var(--line); border-radius: 8px; }
.maintenance-benchmark-pair span,
.maintenance-benchmark-pair small { display: block; color: var(--ink-soft); font-size: 9px; line-height: 1.35; }
.maintenance-benchmark-pair span { font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.maintenance-benchmark-pair strong { display: block; margin: 3px 0; color: var(--navy); font-family: Georgia, serif; font-size: 17px; line-height: 1.2; }
.maintenance-benchmark-population { margin-bottom: 0; }
.maintenance-project-progress { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px 10px; align-items: end; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.maintenance-project-progress label { display: flex; gap: 6px; align-items: center; color: var(--ink-soft); font-size: 11px; font-weight: 750; }
.maintenance-project-progress input { width: 64px; margin-left: auto; padding: 7px; }
.maintenance-project-progress small { grid-column: 1 / -1; color: var(--ink-soft); font-size: 10px; }
.maintenance-methodology { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.maintenance-methodology article { padding: 14px 15px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.maintenance-methodology h3 { margin: 0 0 5px; font-size: 13px; }
.maintenance-methodology p { margin: 0; color: var(--ink-soft); font-size: 12px; line-height: 1.5; }
.maintenance-methodology > .method-note { grid-column: 1 / -1; }
.maintenance-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 20px; }
.maintenance-detail-grid article { padding: 13px 14px; background: var(--canvas); border: 1px solid var(--line); border-radius: 9px; }
.maintenance-detail-grid span { display: block; color: var(--ink-soft); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.maintenance-detail-grid strong { display: block; margin-top: 5px; font-family: Georgia, serif; font-size: 20px; }
.maintenance-detail-dialog h3,
#maintenance-detail-body h3 { margin: 24px 0 8px; font-size: 14px; }
.maintenance-vendor-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.maintenance-vendor-list li { display: flex; justify-content: space-between; gap: 20px; padding: 8px 10px; background: var(--canvas); border-radius: 7px; }

@media (max-width: 760px) {
  #view-maintenance .dq-cards-3,
  #view-maintenance .dq-cards-4,
  #dashboard-maintenance .dq-cards-3 { grid-template-columns: 1fr; }
  #view-maintenance .trend-table th:nth-child(4),
  #view-maintenance .trend-table td:nth-child(4) { display: table-cell; }
  .maintenance-intervention-table td:nth-child(2),
  .maintenance-intervention-table td:nth-child(3) { min-width: 0; }
  .maintenance-open-turns,
  .maintenance-methodology,
  .maintenance-benchmarks { grid-template-columns: 1fr; }
  .cash-position-detail { grid-template-columns: 1fr; padding: 14px; }
  .cash-period-form { grid-template-columns: 1fr; }
  .cash-period-form > p { grid-column: 1; }
  .maintenance-reserve-form { grid-template-columns: 1fr; }
  .maintenance-reserve-form h3,
  .maintenance-reserve-form > p,
  .maintenance-reserve-form [data-reserve-message] { grid-column: 1; }
  .maintenance-section-heading { align-items: stretch; flex-direction: column; gap: 0; }
  .maintenance-filter-group { display: grid; grid-template-columns: 1fr; justify-content: stretch; }
  .maintenance-filter { min-width: 0; }
  .maintenance-detail-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 700px) {
  #view-maintenance,
  #maintenance-content,
  #maintenance-content > .panel {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  #view-maintenance { overflow-x: hidden; }
  #view-maintenance .dashboard-section { padding: 18px 16px; }
  #view-maintenance .panel-head p { font-size: 14px; line-height: 1.48; }
  #view-maintenance .table-scroll { max-width: 100%; overflow: visible; }
  #view-maintenance .stack-table { width: 100%; min-width: 0; table-layout: fixed; }
  #view-maintenance .stack-table tr { position: relative; width: 100%; min-width: 0; padding: 12px 13px; }
  #view-maintenance .stack-table th,
  #view-maintenance .stack-table td {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
  }
  #view-maintenance .stack-table th[scope="row"] { display: block; }
  #view-maintenance .stack-table th[scope="row"] small { margin-top: 2px; }
  #view-maintenance .stack-table td::before { font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
  #view-maintenance .stack-table td .text-button { margin-left: auto; }
  #view-maintenance .dq-cards-3,
  #view-maintenance .dq-cards-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-maintenance .dq-card { padding: 13px; }
  #view-maintenance .dq-label { font-size: 10px; }
  #view-maintenance .dq-value { font-size: 24px; }
  #view-maintenance .maintenance-intervention-card > summary { grid-template-columns: 34px minmax(0, 1fr) auto; padding: 10px; }
  #view-maintenance .maintenance-intervention-preview { grid-column: 2 / -1; }
  #view-maintenance .maintenance-route-state { grid-column: 2 / -1; justify-self: start; }
  #view-maintenance .maintenance-intervention-detail { padding: 0 10px 10px 52px; }
  #view-maintenance .maintenance-intervention-actions { align-items: stretch; flex-direction: row; }
  #view-maintenance .maintenance-intervention-actions .button,
  #view-maintenance .maintenance-intervention-actions .text-button { width: auto; text-align: left; }
  #view-maintenance .maintenance-intervention-table tr { min-height: 0; padding-left: 58px; }
  #view-maintenance .maintenance-intervention-table th[scope="row"] {
    position: absolute;
    top: 13px;
    left: 13px;
    width: 32px;
    padding: 0 !important;
    margin: 0;
    border: 0 !important;
  }
  #view-maintenance .maintenance-intervention-table td {
    display: block;
    padding: 5px 0 !important;
  }
  #view-maintenance .maintenance-intervention-table td::before {
    display: block;
    margin-bottom: 3px;
  }
  #view-maintenance .maintenance-intervention-table td strong,
  #view-maintenance .maintenance-intervention-table td small { display: block; }
  #view-maintenance .maintenance-intervention-table td:nth-child(3) { line-height: 1.5; }
  #view-maintenance .maintenance-intervention-table .maintenance-intervention-actions { align-items: stretch; flex-direction: column; }
  #view-maintenance .maintenance-intervention-table .maintenance-intervention-actions .button,
  #view-maintenance .maintenance-intervention-table .maintenance-intervention-actions .text-button { width: 100%; text-align: left; }
  #view-maintenance .maintenance-cost-chart,
  #view-maintenance .maintenance-service-chart { margin-inline: 0; padding: 10px 8px 2px; }
  #view-maintenance .maintenance-cost-chart svg text,
  #view-maintenance .maintenance-service-chart svg text { font-size: 13px; }
  #view-maintenance .maintenance-chart-legend { justify-content: flex-start; flex-wrap: wrap; gap: 8px 14px; }
  #view-maintenance .maintenance-chart-detail { font-size: 11px; line-height: 1.45; }
  #view-maintenance .maintenance-table-controls { align-items: flex-start; flex-direction: column; gap: 9px; }
  #view-maintenance .maintenance-table-controls .button { width: 100%; }
  .maintenance-detail-dialog .stack-table td[data-label="What"] { display: block; }
  .maintenance-detail-dialog .stack-table td[data-label="What"]::before { display: block; margin-bottom: 3px; }
}

@media (max-width: 350px) {
  #view-maintenance .dq-cards-3,
  #view-maintenance .dq-cards-4 { grid-template-columns: 1fr; }
}

/*  The judgment layer's block. It sits above Cash Position and is deliberately the
    plainest thing on the page: one item with its evidence, the rest behind a count.
    A hard cap of one expanded item is what keeps it from becoming a second
    scorecard, which is the failure mode that would make it stop being read. */
.attention-panel { border-left: 3px solid var(--accent, #1f6feb); }
.attention-visit { margin: 0.25rem 0 0; }
.attention-items { display: flex; flex-direction: column; gap: 0.75rem; }
.attention-clear { margin: 0; color: var(--muted, #57606a); }
.attention-card {
  border: 1px solid var(--line, #d8dee4);
  border-radius: 10px;
  padding: 1rem 1.1rem;
  background: var(--surface, #fff);
}
.attention-card.is-ongoing { opacity: 0.85; }
.attention-card h3 { margin: 0.5rem 0 0.3rem; font-size: 1.05rem; line-height: 1.35; }
.attention-card-head { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.attention-ongoing {
  font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--muted, #57606a);
}
.attention-score { margin: 0 0 0.6rem; font-weight: 600; font-size: 0.9rem; }
.attention-evidence { margin: 0 0 0.6rem; padding-left: 1.1rem; }
.attention-evidence li { margin-bottom: 0.2rem; font-size: 0.9rem; }
.attention-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-top: 0.85rem; }
.attention-action-note {
  margin: 0.4rem 0 0; font-size: 0.85rem; color: var(--muted, #57606a); font-style: italic;
}
.attention-row {
  display: flex; gap: 0.6rem; align-items: baseline; width: 100%;
  text-align: left; background: none; border: 0; border-top: 1px solid var(--line, #d8dee4);
  padding: 0.6rem 0.2rem; cursor: pointer; font: inherit;
}
.attention-row:hover { background: var(--hover, #f6f8fa); }
.attention-tier { font-size: 0.75rem; color: var(--muted, #57606a); white-space: nowrap; }
.attention-row-headline { font-size: 0.9rem; }
.attention-more { margin-top: 0.6rem; }
@media (max-width: 700px) {
  .attention-card { padding: 0.85rem; }
  .attention-actions { gap: 0.4rem; }
}
/* Other facts true about the same subject, on the one card rather than as cards of
   their own. Two rules firing on one entity is one item, not two. */
.attention-also { margin: 0.2rem 0 0.6rem; padding-left: 1.1rem; }
.attention-also li { margin-bottom: 0.2rem; font-weight: 600; font-size: 0.93rem; }
/* The team's queue, named but never competing for the one expanded slot. */
.attention-team { margin: 0.5rem 0 0; font-size: 0.85rem; }

/* Property financial assumptions. The table stays compact; the drawer holds
   the judgment fields and shows every calculation before anything is saved. */
.property-finance-review {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 20px;
  padding: 20px 22px;
  border-left: 4px solid var(--gold);
}
.property-finance-review h2 { margin: 0; font-size: 20px; }
.property-finance-review p:not(.eyebrow) { margin: 5px 0 0; color: var(--ink-soft); }
.property-finance-review .button { flex: none; }
.property-finance-tabs { display: flex; gap: 8px; margin: -4px 0 18px; }
.property-finance-tabs .button { min-width: 170px; }
.property-finance-tabs .button.is-active { color: white; background: var(--blue); border-color: var(--blue); }
.property-finance-heading { align-items: flex-end; }
.property-finance-filters {
  display: grid;
  grid-template-columns: repeat(2, minmax(150px, 1fr));
  gap: 9px;
  width: min(100%, 560px);
}
.property-finance-filters label,
.property-finance-form-grid label {
  display: grid;
  gap: 4px;
  color: var(--ink-soft);
  font-size: 11px;
  font-weight: 750;
}
.property-finance-filters select,
.property-finance-filters input,
.property-finance-form-grid select,
.property-finance-form-grid input {
  min-height: 38px;
  width: 100%;
  padding: 7px 9px;
  color: var(--ink);
  background: white;
  border: 1px solid var(--line);
  border-radius: 7px;
}
.property-finance-form-grid label > span { color: var(--ink-soft); font-size: 10px; font-weight: 500; line-height: 1.35; }
.property-finance-summary .dq-cards { margin-top: 18px; }
.property-finance-export-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.property-finance-coverage { margin: 14px 0 4px; color: var(--ink-soft); font-size: 12px; }
.property-finance-table-wrap { margin-top: 12px; }
.property-finance-table { min-width: 1280px; }
.property-finance-table th,
.property-finance-table td { padding: 11px 9px; vertical-align: top; }
.property-finance-table thead th { min-width: 125px; white-space: normal; }
.property-finance-table thead th:first-child { min-width: 250px; }
.property-finance-table tbody th { text-align: left; }
.property-finance-table tbody th strong,
.property-finance-table td strong { display: block; white-space: nowrap; }
.property-finance-table small { display: block; margin-top: 3px; color: var(--ink-soft); font-size: 10px; font-weight: 500; line-height: 1.35; }
.property-finance-table .maintenance-signal { margin-top: 7px; }
.property-finance-table .is-warning { color: var(--danger); font-weight: 750; }
.property-debt-table { min-width: 1180px; }
.property-debt-table thead th:first-child { min-width: 210px; }
.property-debt-table thead th:nth-child(4) { min-width: 260px; }
.property-debt-table td { overflow-wrap: anywhere; }
.property-debt-table thead th:nth-child(7) { min-width: 120px; }
.property-debt-allocation-table { min-width: 650px; }
.property-debt-source-notes { margin-top: 16px; padding: 12px 14px; color: var(--ink-soft); background: var(--canvas); border: 1px solid var(--line); border-radius: 8px; font-size: 12px; line-height: 1.45; }
.property-debt-source-notes ul { margin: 7px 0 0; padding-left: 18px; }
.property-debt-source-notes li + li { margin-top: 5px; }
.property-debt-filters > .button { align-self: end; min-height: 38px; white-space: nowrap; }
.dialog-header-actions { display: flex; align-items: center; gap: 8px; }
.property-refinance-allocation-input { width: 132px; min-height: 36px; padding: 7px 9px; text-align: right; border: 1px solid var(--line); border-radius: 7px; background: white; color: var(--ink); font: inherit; }
.property-refinance-add-property { display: flex; align-items: end; gap: 10px; margin-top: 12px; }
.property-refinance-add-property label { flex: 1; color: var(--ink-soft); font-size: 11px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.property-refinance-add-property select { display: block; width: 100%; min-height: 38px; margin-top: 5px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; background: white; color: var(--ink); font: inherit; }
.property-finance-dialog { width: min(760px, 96vw); }
.property-finance-context {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 22px;
}
.property-finance-context article { padding: 11px 12px; background: var(--canvas); border: 1px solid var(--line); border-radius: 8px; }
.property-finance-context span { display: block; color: var(--ink-soft); font-size: 10px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.property-finance-context strong { display: block; margin-top: 4px; font-size: 13px; overflow-wrap: anywhere; }
.property-finance-form-section { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }
.property-finance-form-section:first-of-type { margin-top: 0; padding-top: 0; border-top: 0; }
.property-finance-form-section h3 { margin: 0 0 12px; font-size: 16px; }
.property-finance-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
.property-finance-wide { grid-column: 1 / -1; }
.property-finance-calculation { margin-top: 14px; padding: 13px 14px; background: var(--blue-pale); border: 1px solid #cfe2ea; border-radius: 9px; }
.property-finance-calculation dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 18px; margin: 0; }
.property-finance-calculation dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; border-bottom: 1px solid rgba(12, 111, 166, .13); }
.property-finance-calculation dt { color: var(--ink-soft); font-size: 11px; }
.property-finance-calculation dd { margin: 0; font-size: 12px; font-weight: 800; text-align: right; white-space: nowrap; }
.property-finance-calculation .is-total { grid-column: 1 / -1; padding-top: 8px; border-top: 1px solid #aecdd9; border-bottom: 0; }
.property-finance-calculation p { margin: 10px 0 0; color: var(--ink-soft); font-size: 11px; line-height: 1.45; }

@media (max-width: 980px) {
  .property-finance-heading { align-items: stretch; flex-direction: column; }
  .property-finance-filters { width: 100%; }
}

@media (max-width: 700px) {
  #view-property-finance,
  #property-finance-content,
  #property-finance-content > .panel { width: 100%; min-width: 0; max-width: 100%; }
  #view-property-finance { overflow-x: hidden; }
  #view-property-finance > .page-header .header-actions { min-width:0; max-width:100%; }
  #property-finance-updated { max-width:100%; white-space:normal; overflow-wrap:anywhere; }
  #view-property-finance .dashboard-section { padding: 18px 16px; }
  #view-property-finance .dq-cards-4,
  #view-property-finance .dq-cards-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .property-finance-review { align-items: stretch; flex-direction: column; }
  .property-finance-review .button { width: 100%; }
  .property-finance-tabs { display: grid; grid-template-columns: 1fr 1fr; }
  .property-finance-tabs .button { min-width: 0; }
  .property-finance-filters,
  .property-finance-form-grid,
  .property-finance-context,
  .property-finance-calculation dl { grid-template-columns: 1fr; }
  .property-finance-wide,
  .property-finance-calculation .is-total { grid-column: 1; }
  .property-finance-dialog { width: 100vw; max-width: 100vw; }
  .property-finance-table-wrap { overflow: visible; }
  .property-finance-table {
    display: block;
    width: 100%;
    min-width: 0;
  }
  .property-finance-table thead { display: none; }
  .property-finance-table tbody { display: grid; gap: 10px; }
  .property-finance-table tbody tr {
    position: relative;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 12px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: white;
  }
  .property-finance-table tbody th,
  .property-finance-table tbody td {
    min-width: 0;
    padding: 8px 0;
    border: 0;
    text-align: left;
  }
  .property-finance-table tbody th {
    grid-column: 1 / -1;
    padding: 0 48px 9px 0;
    border-bottom: 1px solid var(--line);
  }
  .property-finance-table tbody th strong,
  .property-finance-table tbody td strong { white-space: normal; overflow-wrap: anywhere; }
  .property-finance-table tbody td { display: none; }
  .property-finance-table tbody td::before {
    content: attr(data-label);
    display: block;
    margin-bottom: 3px;
    color: var(--ink-soft);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
  }
  .property-finance-table:not(.property-debt-table) tbody td:nth-child(2),
  .property-finance-table:not(.property-debt-table) tbody td:nth-child(4),
  .property-finance-table:not(.property-debt-table) tbody td:nth-child(5),
  .property-finance-table:not(.property-debt-table) tbody td:nth-child(6),
  .property-finance-table:not(.property-debt-table) tbody td:nth-child(8),
  .property-debt-table tbody td:nth-child(2),
  .property-debt-table tbody td:nth-child(3),
  .property-debt-table tbody td:nth-child(5),
  .property-debt-table tbody td:nth-child(7) { display: block; }
  .property-finance-table tbody td:last-child {
    position: absolute;
    top: 10px;
    right: 8px;
    display: block;
    padding: 0;
  }
  .property-finance-table tbody td:last-child::before { display: none; }
  .property-finance-table .row-open { width: 38px; height: 38px; }
  .property-finance-dialog { width: calc(100vw - 12px); max-width: calc(100vw - 12px); max-height: 96vh; }
  .property-finance-dialog .dialog-header { align-items: flex-start; gap: 8px; }
  .property-finance-dialog .dialog-header-actions { align-items: flex-end; flex-direction: column-reverse; }
  .property-finance-dialog .dialog-header-actions .button { white-space: nowrap; }
}

@media (max-width: 380px) {
  #view-property-finance .dq-cards-4,
  #view-property-finance .dq-cards-5 { grid-template-columns: 1fr; }
  .property-finance-table tbody tr { grid-template-columns: 1fr; }
}

.capital-panel { margin-top: 1.5rem; }
.capital-table { min-width: 1120px; }
.capital-table small,.capital-edit-table small { display:block; max-width:28rem; white-space:normal; font-size:.875rem; font-weight:400; }
.capital-dialog { width:min(1160px,96vw); max-width:96vw; }
.capital-form { padding:1.5rem; }
.capital-form p { line-height:1.55; }
.capital-result-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; margin:1.25rem 0; }
.capital-result-grid article { padding:1rem; border:1px solid #cbd8d5; border-radius:.5rem; }
.capital-result-grid span,.capital-result-grid small { display:block; font-size:.875rem; }
.capital-result-grid strong { display:block; font-size:1.25rem; margin-top:.4rem; }
.capital-edit-table { min-width:900px; }
.capital-edit-table input { box-sizing:border-box; width:100%; min-width:6rem; padding:.5rem; font-size:1rem; }
.capital-edit-table [data-capital-note] { min-width:18rem; }
.capital-controls { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.capital-controls label { display:flex; flex-direction:column; gap:.4rem; font-size:.875rem; }
.capital-controls input,.capital-controls select { padding:.6rem; font-size:1rem; }
@media(max-width:700px){.capital-result-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.capital-controls{grid-template-columns:1fr;}.capital-form{padding:1rem;}}

/* Finance: one compact list; the open control remains within the viewport. */
.property-finance-table-wrap { container-type:inline-size; max-width:100%; }
.property-finance-table { min-width:0; width:100%; table-layout:fixed; }
.property-finance-table th:first-child { width:22%; }
.property-finance-table th,.property-finance-table td { padding:12px 8px; overflow-wrap:anywhere; }
.property-finance-table small { font-size:11px; line-height:1.45; }
.finance-open-cell { width:44px; position:sticky; right:0; background:white; z-index:2; }
.finance-sort { border:0; padding:0; background:none; font:inherit; color:inherit; cursor:pointer; text-align:inherit; }
.finance-sort .sort-direction { padding-left:3px; }
.property-finance-review { cursor:pointer; }
.finance-sort-controls { display:flex; gap:8px; align-items:center; margin:8px 0; flex-wrap:wrap; }
.finance-sort-controls select { padding:7px; border:1px solid var(--line); border-radius:6px; }
#property-finance-dialog { width:min(1080px,96vw); }
.finance-extra details { padding:14px 0; border-top:1px solid var(--line); }
.finance-extra summary { cursor:pointer; font-weight:700; }
.finance-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:12px 0; }
.finance-facts article { padding:12px; background:#f5f8f7; border-radius:8px; }
.finance-facts span,.finance-facts small { display:block; color:var(--ink-soft); font-size:12px; }
.finance-facts strong { display:block; font-size:18px; }
@media(max-width:700px) { .finance-facts { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.attention-card { padding:18px!important; border:1px solid var(--line); border-radius:10px; box-shadow:none; }
.attention-card h3 { font-size:19px; line-height:1.35; margin:10px 0; }
.attention-row { padding:13px 8px; width:100%; display:flex; gap:12px; text-align:left; border-bottom:1px solid var(--line); }
.attention-score { font-size:12px; color:var(--ink-soft); }
.attention-tier { min-width:50px; font-size:11px; }

/* Finance revision details */
.finance-asset { border-top:1px solid var(--line); padding:14px 0; }
.finance-asset h4 { margin:0 0 6px; }
.finance-asset p,.finance-extra p { line-height:1.5; }
.finance-asset small { display:block; color:var(--ink-soft); }
.finance-covered { display:flex; flex-wrap:wrap; gap:12px; margin:12px 0; }
.finance-covered label,.finance-month-check { display:flex; align-items:center; gap:6px; }
.finance-covered input,.finance-month-check input { width:auto; }
.finance-reserve-total strong { font-size:28px; }
#finance-month-review { width:min(1100px,96vw); overflow:hidden; }
#finance-month-review > form { display:flex; flex-direction:column; height:100%; min-height:0; }
#finance-month-review .dialog-header,
#finance-month-review .dialog-footer { flex:none; }
#finance-month-review .dialog-body { height:auto; min-height:0; flex:1; }
#finance-month-review .dialog-footer { flex-wrap:wrap; gap:8px; }
.finance-month-rows > details { padding:15px 0; border-bottom:1px solid var(--line); }
.finance-month-rows summary { cursor:pointer; font-weight:700; }
.finance-month-check { margin:14px 0; }
.finance-extra .finance-facts { grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); }
@media (max-width:560px) { .property-finance-form-grid { grid-template-columns:1fr; } .finance-extra .finance-facts { grid-template-columns:1fr 1fr; } .finance-facts strong { font-size:16px; } }

/* September 18: a short action list; details stay optional. */
.attention-card.is-compact {padding:12px 14px;gap:6px;margin:0 0 8px;}
.attention-card.is-compact h3 {font-size:14px;line-height:1.4;margin:0;}
.attention-card.is-compact .attention-actions {margin-top:6px;gap:10px;flex-wrap:wrap;}
.attention-details,.attention-insights {font-size:12px;line-height:1.5;}
.attention-insights {margin-top:10px;} .attention-insights>summary {cursor:pointer;color:#52616d;}
.finance-math {font-size:12px;font-weight:400;line-height:1.5;}

/* Shared finance columns and compact controls. */
.property-finance-summary { container-type:inline-size; }
.property-finance-heading { align-items:flex-start; margin-bottom:12px; }
.property-finance-heading > div:first-child { width:100%; position:relative; padding-right:280px; }
.property-finance-heading .property-finance-export-actions { position:absolute; top:0; right:0; margin:0; }
.property-finance-heading p { margin:5px 0 0; font-size:12px; }
.property-finance-filters { width:100%; grid-template-columns:1fr 1fr 1fr 1.1fr 1.5fr; align-items:end; gap:8px; }
.property-finance-filters select,.property-finance-filters input { min-height:34px; font-size:12px; }
.property-finance-table:not(.property-debt-table) thead th { min-width:0; vertical-align:bottom; }
.property-finance-table:not(.property-debt-table) thead th.num { text-align:right; }
.property-finance-table:not(.property-debt-table) th:first-child { width:23%; }
.property-finance-table:not(.property-debt-table) th:last-child { width:44px; }
.property-finance-table:not(.property-debt-table) tbody td { font-variant-numeric:tabular-nums; }
.property-finance-table:not(.property-debt-table) tbody td strong { white-space:normal; overflow-wrap:normal; }
.property-finance-table:not(.property-debt-table) tbody th strong { white-space:normal; }
.property-finance-table .finance-input-needed { font-size:10px; }
.finance-sort-controls { display:none; }
.forecast-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.forecast-cards-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.rent-loss-bridge { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin:12px 0; }
.rent-loss-bridge > div { padding:10px; background:#f5f8fa; border:1px solid var(--line); border-radius:8px; }
.rent-loss-bridge span,.rent-loss-bridge small { display:block; color:var(--ink-soft); font-size:10px; line-height:1.4; }
.rent-loss-bridge strong { display:block; margin-top:4px; color:var(--navy); font-size:13px; line-height:1.35; }
.maintenance-history-comparison { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-top:12px; }
.maintenance-history-comparison > div { padding:10px; background:#f5f8fa; border-radius:8px; }
.maintenance-history-comparison span,.maintenance-history-comparison small { display:block; font-size:11px; color:var(--ink-soft); }
.maintenance-history-comparison strong { display:block; margin:4px 0; font-size:22px; }
#maintenance-history-chart [role=button] { cursor:crosshair; }
@container (max-width:1050px) {
 .property-finance-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .finance-sort-controls { display:flex; margin:0; gap:5px; }
 .finance-sort-controls label { flex:1; }
 .finance-sort-controls button { font-size:0; min-width:32px; padding:8px; }
 .finance-sort-controls button::first-letter { font-size:12px; }
 .property-finance-table:not(.property-debt-table) tbody th { width:auto; }
 .property-finance-table:not(.property-debt-table) tbody td { text-align:left; }
}
@container (max-width:650px) {
 .property-finance-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .property-finance-heading > div:first-child { padding-right:0; }
 .property-finance-heading .property-finance-export-actions { position:static; margin-top:8px; }
}
@media(max-width:600px) {
 .forecast-cards { grid-template-columns:1fr; }
 .rent-loss-bridge { grid-template-columns:1fr; }
 .maintenance-history-comparison { gap:5px; }
 .maintenance-history-comparison > div { padding:7px; }
 .maintenance-history-comparison strong { font-size:18px; }
}
.delinquency-line-legend { display:flex; justify-content:center; flex-wrap:wrap; gap:6px 16px; font-size:11px; }
.delinquency-line-legend span:first-child { color:#0c6fa6; }
.delinquency-line-legend span:last-child { color:#b65b20; }
.finance-sort-controls button { font-size:11px; }
.finance-sort-controls button::first-letter { font-size:inherit; }

/* Renovation input and its directly associated calculation. */
#property-finance-reserve-label { color: var(--ink); font-size: 14px; font-weight: 700; }
#property-finance-renovation-preview dt,
#property-finance-renovation-preview dd,
#property-finance-renovation-preview p,
#property-finance-renovation-preview summary { font-size: 14px; }
#property-finance-renovation-preview dl { grid-template-columns: 1fr; }
#property-finance-renovation-finish { font-size: 14px; }
#property-finance-completed-reserve-label:not([hidden]) { display: grid; gap: 6px; margin-bottom: 12px; }

/* Keep property inputs legible; calculations and forecasting stay behind details. */
.property-finance-dialog .property-finance-form-grid label { font-size: 14px; line-height: 1.45; }
.property-finance-dialog .property-finance-form-grid input,
.property-finance-dialog .property-finance-form-grid select { font-size: 15px; min-height: 42px; }
.property-finance-dialog .finance-calculation-detail { margin-top: 12px; }
.property-finance-dialog .finance-calculation-detail summary,
.property-finance-dialog #property-finance-property-debt-section > summary { cursor: pointer; padding: 10px 0; }
.finance-month-rows [data-month-save-status] { display: block; padding: 6px 0; color: var(--color-text-secondary, #53625c); }
.finance-monthly-statement select { min-height: 42px; font-size: 15px; }
.finance-monthly-statement .trend-table { width: 100%; margin: 12px 0; }
.finance-monthly-statement .trend-table td { text-align: right; font-variant-numeric: tabular-nums; }
.finance-monthly-statement .trend-table tr:last-child { font-weight: 700; }

.finance-save-status { margin-right: auto; color: #275d46; font-size: 14px; font-weight: 600; }

/* Property finance keeps the core comparison and open control visible at every width. */
.property-finance-table:not(.property-debt-table) { display:table; min-width:0; width:100%; table-layout:fixed; font-size:12px; }
.property-finance-table:not(.property-debt-table) thead { display:table-header-group; }
.property-finance-table:not(.property-debt-table) tbody { display:table-row-group; }
.property-finance-table:not(.property-debt-table) tbody tr { display:table-row; padding:0; border:0; border-radius:0; }
.property-finance-table:not(.property-debt-table) thead th,.property-finance-table:not(.property-debt-table) tbody th,.property-finance-table:not(.property-debt-table) tbody td { display:table-cell!important; position:static; width:auto; padding:11px 5px; min-width:0; border-bottom:1px solid var(--line); text-align:right; }
.property-finance-table:not(.property-debt-table) th:first-child { width:18%; text-align:left; }
.property-finance-table:not(.property-debt-table) td::before { display:none!important; }
.property-finance-table:not(.property-debt-table) tbody .finance-open-cell,.property-finance-table:not(.property-debt-table) thead .finance-open-cell { position:sticky; right:0; width:36px; padding:4px 0; text-align:center; background:white; }
.property-finance-table:not(.property-debt-table) .row-open { width:32px; height:36px; }
.property-finance-table:not(.property-debt-table) td strong { white-space:nowrap; font-size:12px; }
.property-finance-table:not(.property-debt-table) small { font-size:10px; }
/* Column priority as the page narrows. This page answers valuation, debt and
   cash flow, so Property, Sale / estimate, Debt, Net cash if sold and T12 NOI
   are the last to go; cost history lives in the property drawer. */
@container (max-width:1200px) {
 .property-finance-table:not(.property-debt-table) [data-finance-column="subsidy"],.property-finance-table:not(.property-debt-table) [data-finance-column="sale_month"] { display:none!important; }
}
@container (max-width:1040px) {
 .property-finance-table:not(.property-debt-table) [data-finance-column="reserve"] { display:none!important; }
 .property-finance-table:not(.property-debt-table) th:first-child { width:24%; }
}
@container (max-width:900px) {
 .property-finance-table:not(.property-debt-table) [data-finance-column="sale_costs"],.property-finance-table:not(.property-debt-table) [data-finance-column="basis"] { display:none!important; }
}
@container (max-width:770px) {
 .property-finance-table:not(.property-debt-table) [data-finance-column="gain"] { display:none!important; }
 .property-finance-table:not(.property-debt-table) th:first-child { width:32%; }
}
@container (max-width:450px) {
 .property-finance-table:not(.property-debt-table) { font-size:11px; }
 .property-finance-table:not(.property-debt-table) th,.property-finance-table:not(.property-debt-table) td { padding:10px 2px; }
 .property-finance-table:not(.property-debt-table) td strong { font-size:10px; }
 .property-finance-table:not(.property-debt-table) .finance-household-label { display:none; }
 .property-finance-table:not(.property-debt-table) .finance-open-cell { width:30px; }
}
.finance-related { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; grid-column:1/-1; }
.finance-incoming { grid-column:1/-1; padding:16px; margin:12px 0; border:1px solid #dbc785; border-radius:8px; background:#fffaf0; }
.finance-incoming h3 { margin:0 0 8px; font-size:16px; }
.finance-incoming p { font-size:13px; line-height:1.5; }
.finance-incoming .finance-month-check { font-size:13px; }
.finance-input-needed { color:#8a5510; }
.finance-related-link { flex:1; min-width:220px; text-align:left; border:1px solid #cddfd9; border-radius:8px; padding:10px; background:#f5faf8; cursor:pointer; color:var(--ink); }
.finance-related-link strong,.finance-related-link span,.finance-related-link small { display:block; margin:3px 0; font-size:12px; }
.finance-related-link small { color:#176957; }
.finance-linked-household { outline:2px solid #187660; outline-offset:-2px; background:#ecf8f2; }
#finance-month-review .dialog-header h2 { margin-bottom:4px; }
#finance-month-review .dialog-header .finance-save-status { display:block; font-size:12px; color:#176957; }
#dashboard-turn-performance-cards { margin-top:12px; }
.maintenance-history-comparison { grid-template-columns:repeat(4,minmax(0,1fr)); }
.maintenance-chart-annual { fill:none; stroke:#167052; stroke-width:3; stroke-dasharray:7 3; }
.maintenance-chart-legend { display:flex; flex-wrap:wrap; gap:8px 18px; font-size:12px; margin:10px 0; }
.maintenance-chart-legend .weeks { color:#0c6fa6; } .maintenance-chart-legend .annual { color:#167052; }
@media(max-width:600px) { .maintenance-history-comparison { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* Multi-select filters. The button carries the current choice so the panel can
   stay closed; the panel itself is positioned over the table rather than
   pushing it down, so checking a box never moves the rows being read. */
.finance-multiselect { position:relative; }
.finance-multiselect-toggle { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; min-height:36px; padding:6px 10px; border:1px solid #cfd8dd; border-radius:6px; background:white; font:inherit; font-size:13px; text-align:left; cursor:pointer; }
.finance-multiselect-toggle:hover { border-color:#8fa5b0; }
.finance-multiselect-toggle:focus-visible { outline:2px solid #17222b; outline-offset:1px; }
.finance-multiselect-panel { position:absolute; z-index:40; top:calc(100% + 4px); left:0; min-width:100%; max-height:300px; overflow:auto; padding:8px; border:1px solid #cfd8dd; border-radius:6px; background:white; box-shadow:0 8px 24px rgba(23,34,43,.16); }
.finance-multiselect-panel label { display:flex; align-items:center; gap:8px; padding:5px 4px; font-size:13px; white-space:nowrap; cursor:pointer; }
.finance-multiselect-panel label:hover { background:#f2f7f9; }
.finance-multiselect-panel input { margin:0; }
.finance-multiselect-panel button { margin-top:6px; width:100%; }

/* Every filter is the same width regardless of the words inside it, so the row
   reads as one control strip rather than boxes of assorted sizes. */
.property-finance-filters label { flex:0 0 190px; min-width:190px; }
.property-finance-filters .finance-multiselect-toggle span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* Column names stay visible while the rows scroll, so a number is never read
   without its heading. */
.property-finance-table thead th { position:sticky; top:0; z-index:20; background:#eaf3f6; }
.property-finance-table thead .finance-open-cell { z-index:21; }

/* Eight figures in two rows. Tighter than the standard card so the extra row
   costs almost no vertical space and the table stays near the top. */
.dq-cards-compact { gap:8px; padding-bottom:2px; }
.dq-cards-compact .dq-card { padding:8px 11px; gap:2px; border-radius:9px; }
.dq-cards-compact .dq-label { font-size:10px; letter-spacing:.03em; }
.dq-cards-compact .dq-value { font-size:19px; line-height:1.15; }
.dq-cards-compact .dq-deltas { font-size:10px; line-height:1.25; }

/* ==========================================================================
   Renewals tab and the "More" navigation group
   ========================================================================== */

.nav-more { display: grid; gap: 6px; }
.nav-more-toggle { width: 100%; }
.nav-more-toggle.is-active:not([aria-expanded="true"]) { color: white; background: rgba(255, 255, 255, .12); }
.nav-more-menu { display: grid; gap: 4px; padding-left: 12px; border-left: 1px solid rgba(255, 255, 255, .14); margin-left: 16px; }
.nav-more-menu .nav-item { font-size: 14px; }

.rn-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.rn-stat { padding: 16px 18px; background: white; border: 1px solid var(--line); border-top: 4px solid var(--blue); border-radius: var(--radius); }
.rn-stat span, .rn-stat small { display: block; color: var(--ink-soft); font-size: 12px; }
.rn-stat span { font-weight: 650; }
.rn-stat strong { display: block; margin: 4px 0 2px; font-family: Georgia, serif; font-size: 28px; line-height: 1.05; }

.rn-section { padding: 20px 22px; margin-bottom: 16px; }
.rn-section h3 { margin: 0 0 12px; font-family: Georgia, serif; font-size: 20px; }
.rn-section h4 { margin: 0 0 8px; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); }
.rn-list-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 10px; flex-wrap: wrap; }
.rn-list-head h2 { margin: 0; font-family: Georgia, serif; font-size: 22px; }
.rn-toggle { display: inline-flex; gap: 8px; align-items: center; font-size: 13px; color: var(--ink-soft); }
.rn-sub { display: block; color: var(--ink-soft); font-size: 11px; font-weight: 400; }
h3 .rn-sub, h2 .rn-sub { display: inline; margin-left: 6px; font-family: Inter, system-ui, sans-serif; }

.rn-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.rn-table th, .rn-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.rn-table thead th { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); font-weight: 650; }
.rn-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rn-table tbody th[scope="row"] { font-weight: 600; color: var(--ink); }
.rn-list-table tbody tr { cursor: pointer; }
.rn-list-table tbody tr:hover { background: var(--blue-pale); }
.rn-list-table .link-button { padding: 0; font-weight: 650; text-align: left; }
.rn-ledger th[scope="row"] { font-weight: 500; }
.rn-ledger .rn-total th, .rn-ledger .rn-total td { font-weight: 700; border-top: 2px solid var(--line-dark); }
.rn-note { color: var(--ink-soft); font-size: 12px; }
.rn-remark { max-width: 360px; color: var(--ink-soft); font-size: 12px; }
.rn-picked { background: var(--green-pale); }
.rn-muted { opacity: .55; }

.rn-chip { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; background: var(--canvas); color: var(--ink-soft); border: 1px solid var(--line); }
.rn-chip-warn { background: #fff7e6; color: #8a5a00; border-color: #f0d28c; }
.rn-chip-ok { background: var(--green-pale); color: var(--green); border-color: #cfe6d7; }
.rn-status-offered, .rn-status-reviewing { background: var(--blue-pale); color: var(--blue); border-color: #c9e3f0; }
.rn-status-signed, .rn-status-purchased { background: var(--green-pale); color: var(--green); border-color: #cfe6d7; }
.rn-status-moved_out, .rn-status-notice, .rn-status-moving_out { background: var(--danger-pale); color: var(--danger); border-color: #f1c9c9; }

.rn-toolbar { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.rn-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 12px; }
.rn-head h2 { margin: 2px 0 4px; font-family: Georgia, serif; font-size: clamp(26px, 3vw, 36px); line-height: 1.1; }
.rn-head p { margin: 0; color: var(--ink-soft); }
.rn-flags { margin: 0 0 16px; padding: 12px 16px 12px 32px; background: #fff7e6; border: 1px solid #f0d28c; border-radius: 12px; font-size: 13px; }
.rn-flags li + li { margin-top: 4px; }

.rn-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); gap: 10px; margin-bottom: 14px; }
.rn-kpi { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfd; min-width: 0; }
.rn-kpi span { display: block; font-size: 11px; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .03em; font-weight: 650; }
.rn-kpi strong { display: block; font-family: Georgia, serif; font-size: 21px; line-height: 1.2; margin: 3px 0 1px; }
.rn-kpi small { display: block; font-size: 11.5px; color: var(--ink-soft); line-height: 1.35; }

.rn-two { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.rn-callout { padding: 12px 16px; background: var(--blue-pale); border-radius: 12px; font-size: 13px; }
.rn-callout p { margin: 0 0 10px; }
.rn-callout strong { font-family: Georgia, serif; font-size: 20px; }
.rn-lead { margin: 0 0 14px; font-size: 14px; }
.rn-guide { margin: 0; padding-left: 18px; font-size: 13px; }
.rn-guide li + li { margin-top: 5px; }
.rn-details { margin-top: 10px; font-size: 13px; }
.rn-details summary { cursor: pointer; color: var(--blue); font-weight: 600; }
.rn-details-panel > summary { list-style: none; cursor: pointer; }
.rn-details-panel > summary h3 { display: inline; }
.rn-list { margin: 8px 0 0; padding-left: 18px; font-size: 12.5px; color: var(--ink-soft); }
.rn-list li + li { margin-top: 3px; }
.rn-comps { max-height: 460px; overflow: auto; margin-top: 6px; border: 1px solid var(--line); border-radius: 10px; }

.rn-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px 14px; align-items: end; }
.rn-form label { display: grid; gap: 4px; font-size: 12px; font-weight: 600; color: var(--ink-soft); }
.rn-form input, .rn-form select, .rn-form textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--line-dark); border-radius: 9px; background: white; color: var(--ink); font-size: 14px; font-weight: 400; }
.rn-form .rn-wide { grid-column: 1 / -1; }
.rn-actions { grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; }
.rn-decision { border: 2px solid var(--blue); }

@media (max-width: 900px) {
  .rn-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rn-two { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
  .nav-more-menu { margin-left: 0; padding-left: 0; border-left: 0; }
}

@media (max-width: 700px) {
  .rn-list-table tbody tr:hover { background: none; }
  .rn-list-table tbody tr { background: white; }
}

@media (max-width: 600px) {
  .sidebar-nav { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
  .nav-more { display: block; }
  .nav-more-toggle { height: 100%; }
  .nav-more-menu {
    position: fixed; right: 8px; bottom: 76px; z-index: 40; width: 220px;
    display: grid; gap: 2px; padding: 8px; margin: 0;
    background: white; border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 14px 40px rgba(12, 41, 62, .25);
  }
  .nav-more-menu[hidden] { display: none; }
  .nav-more-menu .nav-item {
    flex-direction: row; justify-content: flex-start; gap: 10px; padding: 10px 12px;
    color: var(--ink); font-size: 14px !important; line-height: 1.2;
  }
  .nav-more-menu .nav-item::after { content: none !important; }
  .nav-more-menu .nav-item.is-active { color: white; }
  .rn-stats { gap: 8px; }
  .rn-stat { padding: 12px; }
  .rn-stat strong { font-size: 22px; }
  .rn-section { padding: 16px 14px; }
  .rn-kpis { grid-template-columns: 1fr 1fr; gap: 8px; }
  .rn-kpi strong { font-size: 18px; }
  .rn-head { flex-direction: column; gap: 8px; }
  .rn-form { grid-template-columns: 1fr 1fr; }
  /* The portal hides the 4th and 5th column of ordinary tables on phones;
     these tables are built narrow and need every column. */
  .rn-table:not(.stack-table) th:nth-child(n), .rn-table:not(.stack-table) td:nth-child(n) { display: table-cell; }
  .rn-table th, .rn-table td { padding: 6px 6px; }
  .rn-note { font-size: 11px; }
}

@media print {
  body.printing-renewal { background: white; font-size: 11px; }
  body.printing-renewal .sidebar,
  body.printing-renewal .preview-banner,
  body.printing-renewal .view:not(#view-renewals),
  body.printing-renewal #view-renewals > .page-header,
  body.printing-renewal #renewals-list-wrap,
  body.printing-renewal .rn-no-print { display: none !important; }
  body.printing-renewal .workspace { margin: 0 !important; padding: 0 !important; }
  @page { size: letter; margin: 10mm; }
  body.printing-renewal .app-shell, body.printing-renewal .workspace, body.printing-renewal .view { display: block !important; min-height: 0 !important; height: auto !important; }
  body.printing-renewal .rn-section { box-shadow: none; break-inside: auto; padding: 8px 10px; margin-bottom: 6px; border-width: 1px; }
  body.printing-renewal .rn-table tr, body.printing-renewal .rn-kpi { break-inside: avoid; }
  body.printing-renewal .rn-comps tbody tr:not(.rn-picked),
  body.printing-renewal .rn-details .rn-list,
  body.printing-renewal .rn-details > summary { display: none; }
  body.printing-renewal .rn-kpi strong { font-size: 15px; }
  body.printing-renewal .rn-head h2 { font-size: 22px; }
  body.printing-renewal .rn-comps { max-height: none; overflow: visible; }
  body.printing-renewal .rn-kpis { grid-template-columns: repeat(4, 1fr); }
  body.printing-renewal .rn-two { grid-template-columns: 1fr 1fr; }
  body.printing-renewal .rn-form input, body.printing-renewal .rn-form select, body.printing-renewal .rn-form textarea { border: 0; border-bottom: 1px solid #999; border-radius: 0; padding: 2px 0; }
}
.rn-list-table .link-button { border: 0; background: none; color: var(--blue); cursor: pointer; font: inherit; font-weight: 650; box-shadow: none; }
.rn-list-table tbody th[scope="row"] { background: none; }
.rn-toggle input { width: 16px; height: 16px; min-height: 0; margin: 0; flex: 0 0 auto; }
.rn-list-table td[data-label="Lease ends"] { white-space: nowrap; }

/* Renewals v2: decision up top, inputs in one place, three-part move-out. */
.rn-hero { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 18px; padding: 18px 22px; margin-bottom: 14px; align-items: center; }
.rn-hero-id h2 { margin: 2px 0 4px; font-family: Georgia, serif; font-size: clamp(26px, 3vw, 34px); line-height: 1.1; }
.rn-hero-id p { margin: 0; color: var(--ink-soft); }
.rn-hero-decision { display: grid; gap: 8px; padding: 12px 14px; background: var(--blue-pale); border-radius: 12px; }
.rn-hero-decision > div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.rn-hero-decision > div > span:first-child { font-size: 12px; font-weight: 650; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.rn-arrow { font-size: 16px; text-align: right; }
.rn-arrow strong { font-family: Georgia, serif; font-size: 22px; }
.rn-arrow em { color: var(--ink-soft); font-style: normal; }
.rn-arrow small { display: block; font-size: 12px; color: var(--ink-soft); }
.rn-hero-status { justify-content: flex-end !important; }
.rn-inputs { border: 2px solid var(--blue); }
.rn-inputs-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.rn-inputs-head h3 { margin: 0; }
.rn-checklist { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; font-size: 12px; }
.rn-checklist li { padding: 2px 9px; border-radius: 999px; background: #fff7e6; color: #8a5a00; border: 1px solid #f0d28c; }
.rn-checklist li.is-done { background: var(--green-pale); color: var(--green); border-color: #cfe6d7; }
.rn-form-groups { display: grid; gap: 12px; }
.rn-group { margin: 0; padding: 12px 14px 14px; border: 1px solid var(--line); border-radius: 12px; min-width: 0; }
.rn-group legend { padding: 0 6px; font-weight: 700; font-size: 13px; }
.rn-group legend small { font-weight: 400; color: var(--ink-soft); }
.rn-group-decision { background: #f7fbfd; border-color: #c9e3f0; }
.rn-hint { margin: 8px 0 0; font-size: 12px; color: var(--ink-soft); }
.rn-metrics { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin-top: 10px; }
.rn-metrics div { padding: 8px 10px; background: #fbfcfd; border: 1px solid var(--line); border-radius: 10px; }
.rn-metrics span, .rn-metrics small { display: block; font-size: 11px; color: var(--ink-soft); }
.rn-metrics strong { font-family: Georgia, serif; font-size: 18px; }
.rn-drop { margin-top: 10px; padding: 12px; border: 2px dashed var(--line-dark); border-radius: 12px; text-align: center; }
.rn-drop.is-over { border-color: var(--blue); background: var(--blue-pale); }
.rn-drop-label { display: grid; gap: 2px; cursor: pointer; font-size: 13px; }
.rn-drop-label input { justify-self: center; font-size: 12px; }
.rn-drop-label span { color: var(--ink-soft); font-size: 12px; }
.rn-three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: start; }
.rn-net { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.rn-net div { padding: 10px 12px; border-radius: 10px; background: var(--canvas); border: 1px solid var(--line); }
.rn-net span, .rn-net small { display: block; font-size: 11.5px; color: var(--ink-soft); }
.rn-net strong { font-family: Georgia, serif; font-size: 22px; }
.rn-net div:first-child { background: var(--blue-pale); border-color: #c9e3f0; }
.rn-sens th[scope="row"] { font-weight: 600; }
.rn-comp-stats td small { color: var(--ink-soft); }
.rn-section h4 { margin-top: 14px; }
@media (max-width: 900px) {
  .rn-hero, .rn-three, .rn-net { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .rn-hero { padding: 14px; }
  .rn-arrow strong { font-size: 19px; }
  .rn-group { padding: 10px; }
}
@media print {
  body.printing-renewal .rn-drop, body.printing-renewal .rn-inputs-head .rn-checklist { display: none !important; }
  body.printing-renewal .rn-three, body.printing-renewal .rn-net { grid-template-columns: repeat(3, 1fr); }
  body.printing-renewal .rn-hero { grid-template-columns: 1.2fr 1fr; }
  body.printing-renewal details.rn-details:not([open]) { display: none; }
}
.rn-three .rn-ledger tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.rn-three .rn-ledger th, .rn-three .rn-ledger td { border-bottom: 0; padding-bottom: 2px; }
.rn-three .rn-ledger td.rn-note { grid-column: 1 / -1; padding-top: 0; padding-bottom: 8px; border-bottom: 1px solid var(--line); font-size: 11.5px; }
.rn-three .rn-ledger td.rn-note:empty { padding-bottom: 4px; }
.rn-three .rn-ledger .rn-total th, .rn-three .rn-ledger .rn-total td { border-top: 2px solid var(--line-dark); }
.rn-table tbody th { background: none; }

/* Renewals v3: decision tool. */
.rn-stages { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.rn-stage { text-align: left; padding: 12px 14px; background: white; border: 1px solid var(--line); border-top: 4px solid var(--line-dark); border-radius: var(--radius); cursor: pointer; }
.rn-stage span, .rn-stage small { display: block; color: var(--ink-soft); font-size: 12px; }
.rn-stage span { font-weight: 700; color: var(--ink); }
.rn-stage strong { display: block; font-family: Georgia, serif; font-size: 26px; line-height: 1.1; margin: 2px 0; }
.rn-stage.is-selected { outline: 3px solid rgba(12, 111, 166, .25); border-color: var(--blue); }
.rn-stage-needs_market_review { border-top-color: var(--gold); }
.rn-stage-ready_to_decide { border-top-color: var(--blue); }
.rn-stage-offer_sent { border-top-color: var(--green); }
.rn-stage-completed { border-top-color: var(--line-dark); }
.rn-next-needs_market_review { background: #fff7e6; color: #8a5a00; border-color: #f0d28c; }
.rn-next-ready_to_decide { background: var(--blue-pale); color: var(--blue); border-color: #c9e3f0; }
.rn-next-offer_sent, .rn-next-completed { background: var(--green-pale); color: var(--green); border-color: #cfe6d7; }
.rn-case-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin-bottom: 10px; }
.rn-case-head h2 { margin: 2px 0 4px; font-family: Georgia, serif; font-size: clamp(26px, 3vw, 34px); line-height: 1.1; }
.rn-case-head p { margin: 0; color: var(--ink-soft); }
.rn-case-tags { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.rn-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.rn-facts > div { background: white; padding: 8px 12px; }
.rn-facts span { display: block; font-size: 11px; color: var(--ink-soft); font-weight: 650; }
.rn-facts strong { font-size: 17px; }
.rn-facts .is-bad strong { color: var(--danger); }
.rn-facts .is-good strong { color: var(--green); }
.rn-facts .is-warn strong { color: #8a5a00; }
.rn-facts-note { margin: 6px 2px 14px; font-size: 11px; color: var(--ink-soft); }
.rn-block { padding: 16px 20px; margin-bottom: 14px; }
.rn-block-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.rn-block-head h3 { margin: 0; font-family: Georgia, serif; font-size: 21px; }
.rn-block .rn-drop { margin: 0; padding: 6px 12px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; text-align: left; }
.rn-block .rn-drop-label { display: flex; gap: 8px; align-items: center; }
.rn-market { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.rn-market-one { grid-template-columns: minmax(0, 1fr); max-width: 520px; }
.rn-market-card { display: grid; gap: 6px; align-content: start; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfd; }
.rn-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); display: flex; gap: 8px; align-items: center; }
.rn-range { margin: 0; font-family: Georgia, serif; font-size: 22px; }
.rn-range small { display: block; font-family: Inter, system-ui, sans-serif; font-size: 11.5px; color: var(--ink-soft); }
.rn-evidence { margin: 0; padding-left: 16px; font-size: 12.5px; }
.rn-caution { margin: 0; padding: 6px 9px; background: #fff7e6; border-radius: 8px; font-size: 12px; color: #6d4700; }
.rn-working { display: grid; gap: 3px; font-size: 12px; font-weight: 650; color: var(--ink-soft); }
.rn-working input { padding: 7px 10px; border: 1px solid var(--line-dark); border-radius: 9px; font-size: 16px; font-weight: 700; color: var(--ink); }
.rn-ok { color: var(--green); font-weight: 650; }
.rn-todo { color: #8a5a00; font-weight: 650; }
.rn-buttons { display: flex; gap: 8px; flex-wrap: wrap; }
.rn-conf { padding: 1px 8px; border-radius: 999px; font-size: 11px; text-transform: none; letter-spacing: 0; border: 1px solid var(--line); background: white; }
.rn-conf-high { color: var(--green); border-color: #cfe6d7; }
.rn-conf-medium { color: var(--blue); border-color: #c9e3f0; }
.rn-conf-low, .rn-conf-needs-judgment { color: #8a5a00; border-color: #f0d28c; }
.rn-decision-block { border: 2px solid var(--blue); }
.rn-recs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.rn-recs-one { grid-template-columns: minmax(0, 1fr); max-width: 560px; }
.rn-rec { display: grid; gap: 6px; align-content: start; padding: 12px 14px; background: var(--blue-pale); border-radius: 12px; }
.rn-rec-point { margin: 0; font-family: Georgia, serif; font-size: 30px; line-height: 1.1; }
.rn-rec-point small { display: block; font-family: Inter, system-ui, sans-serif; font-size: 12px; color: var(--ink-soft); }
.rn-needs { font-size: 22px; color: #8a5a00; }
.rn-why { margin: 0; padding-left: 18px; font-size: 13px; }
.rn-why li + li { margin-top: 2px; }
.rn-decide-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.rn-decide-row > label { flex: 1 1 170px; min-width: 0; }
.rn-decide-row > label.rn-wide { flex: 2 1 280px; }
.rn-decide-row label { display: grid; gap: 3px; font-size: 12px; font-weight: 650; color: var(--ink-soft); }
.rn-decide-row input, .rn-decide-row select { padding: 7px 10px; border: 1px solid var(--line-dark); border-radius: 9px; font-size: 14px; }
.rn-decision-block .rn-actions { margin-top: 12px; }
.rn-conseq { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 16px; align-items: start; }
.rn-big { padding: 14px 16px; border-radius: 12px; background: var(--canvas); border: 1px solid var(--line); }
.rn-big span { font-size: 12px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.rn-big strong { display: block; font-family: Georgia, serif; font-size: 34px; margin: 2px 0 6px; }
.rn-big.is-bad strong { color: var(--danger); }
.rn-big.is-good strong { color: var(--green); }
.rn-big p { margin: 0 0 6px; font-size: 13.5px; }
.rn-points { margin: 0; padding-left: 18px; font-size: 13.5px; }
.rn-points li + li { margin-top: 7px; }
.rn-deep-title { margin: 22px 0 8px; font-family: Georgia, serif; font-size: 18px; color: var(--ink-soft); }
.rn-deep { margin-bottom: 8px; box-shadow: none; }
.rn-deep > summary { cursor: pointer; padding: 11px 16px; font-weight: 700; }
.rn-deep-body { padding: 0 16px 14px; }
.rn-deep h4 { margin: 12px 0 6px; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); }
.rn-inline { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; margin-top: 10px; }
.rn-inline label { display: grid; gap: 3px; font-size: 12px; font-weight: 650; color: var(--ink-soft); }
.rn-inline input { padding: 6px 9px; border: 1px solid var(--line-dark); border-radius: 8px; }
@media (max-width: 1000px) {
  .rn-stages { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rn-market, .rn-recs, .rn-conseq { grid-template-columns: 1fr; }
  .rn-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .rn-stages { grid-template-columns: 1fr 1fr; }
  .rn-facts { grid-template-columns: 1fr 1fr; }
  .rn-decide-row { grid-template-columns: 1fr 1fr; }
  .rn-decide-row .rn-wide { grid-column: 1 / -1; }
  .rn-case-head { flex-direction: column; }
  .rn-rec-point { font-size: 26px; }
  .rn-big strong { font-size: 28px; }
}
@media print {
  body.printing-renewal .rn-deep:not([open]), body.printing-renewal .rn-deep-title { display: none !important; }
  body.printing-renewal .rn-market { grid-template-columns: repeat(3, 1fr); }
  body.printing-renewal .rn-recs, body.printing-renewal .rn-conseq { grid-template-columns: 1fr 1fr; }
  body.printing-renewal .rn-facts { grid-template-columns: repeat(5, 1fr); }
}

.rn-big p strong { display: inline; font-family: inherit; font-size: inherit; margin: 0; }

/* v3 list fit */
.rn-list-table .rn-chip { white-space: normal; display: inline-block; line-height: 1.3; }
.rn-list-table thead th { white-space: normal; line-height: 1.3; }
.rn-list-table .rn-chip { border-radius: 8px; }
.rn-list-table th, .rn-list-table td { padding: 8px 7px; }
.rn-list-table td[data-label="Property"] { min-width: 130px; }

/* v3 patch: two headline outputs and the reconciliation ledger */
.rn-conseq { display: block; }
.rn-twin { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) { .rn-twin { grid-template-columns: 1fr; } }
.rn-recon th[scope="row"] { width: 40%; }
.rn-recon td.num { width: 18%; }
.rn-recon td.rn-note { font-size: 12px; color: var(--ink-soft); }
.rn-conseq .rn-points { margin-top: 14px; }
.rn-big-quiet { background: var(--canvas); }
.rn-recon { margin-top: 14px; }
.rn-recon td.num, .rn-ledger td.num { white-space: nowrap; }
.rn-allowance { margin: 6px 0 4px; font-size: 12.5px; }
.rn-rec.is-decided { border-color: var(--blue); }

/* ---- Pricing: clearer forms, and one column on a phone ------------------ */
.rn-field-group { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.rn-field-group:first-of-type { border-top: 0; }
.rn-group-label { margin: 0 0 6px; font-size: 12px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.rn-block-button { display: block; width: 100%; margin-top: 8px; }
.rn-help { display: block; margin: 4px 0 10px; font-size: 12px; color: var(--ink-soft); line-height: 1.35; }
.rn-danger-group { border-top: 2px solid #f0d28c; }
.rn-evidence-wrap { margin: 6px 0 2px; }
.rn-evidence-wrap > summary { cursor: pointer; font-size: 12.5px; color: var(--blue); font-weight: 600; }
.rn-evidence-wrap[open] > summary { margin-bottom: 6px; }
.rn-why-wrap > summary, .rn-recon-wrap > summary { cursor: pointer; font-size: 12.5px; color: var(--blue); font-weight: 600; }
.rn-recon-wrap { margin-top: 14px; }
.rn-list-table tr.is-overdue th[scope="row"] { box-shadow: inset 3px 0 0 var(--danger); }
.rn-upcoming { margin: 6px 0 0; padding: 8px 12px; border-radius: 10px; background: var(--blue-pale); font-size: 13px; }
.rn-market-card .rn-working input { width: 100%; }
@media (max-width: 900px) {
  .rn-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rn-twin { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .rn-facts { grid-template-columns: 1fr 1fr; }
  .rn-case-head h2 { font-size: 22px; }
  .rn-big strong { font-size: 26px; }
  .rn-toolbar { position: sticky; top: 0; z-index: 3; background: var(--canvas); padding: 6px 0; }
  .rn-decide-row { grid-template-columns: 1fr; }
  .rn-inline { flex-wrap: wrap; }
  .rn-deep-body { padding: 10px 12px; }
}
@media (min-width: 1500px) {
  .rn-detail, #renewals-list-wrap { max-width: 1400px; }
}

/* Pricing queue: with a fixed layout the header row sets the widths */
@media (min-width: 701px) {
  .rn-list-table { table-layout: fixed; }
  .rn-list-table th, .rn-list-table td { overflow-wrap: anywhere; }
  .rn-list-table .link-button { display: block; white-space: normal; text-align: left; }
  .rn-list-table thead th, .rn-list-table thead th.num { white-space: normal; }
  .rn-list-table thead th:nth-child(1) { width: 20%; }
  .rn-list-table thead th:nth-child(2) { width: 13%; }
  .rn-list-table thead th:nth-child(3) { width: 12%; }
  .rn-list-table thead th:nth-child(4) { width: 12%; }
  .rn-list-table thead th:nth-child(5) { width: 12%; }
  .rn-list-table thead th:nth-child(6) { width: 15%; }
  .rn-list-table thead th:nth-child(7) { width: 16%; }
}
.rn-list-table .rn-sub { display: block; white-space: normal; }

.rn-toast { position: fixed; left: 50%; bottom: 24px; z-index: 1000; transform: translateX(-50%); max-width: calc(100vw - 32px); padding: 10px 16px; color: #fff; background: var(--navy); border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.18); font-size: 14px; font-weight: 700; }
.rn-toast.is-error { background: #8a1c1c; }
.rn-toast[hidden] { display: none; }

/* Save feedback: a pill in the case toolbar, and a line under each form */
.rn-save-pill { padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; background: var(--canvas); color: var(--ink-soft); border: 1px solid var(--line); }
.rn-save-pill.is-saving { background: var(--blue-pale); color: var(--blue); border-color: var(--blue); }
.rn-save-pill.is-saved { background: #e9f7ef; color: #1c6b3f; border-color: #bfe3cd; }
.rn-save-pill.is-error { background: #fdeaea; color: #8a1c1c; border-color: #f0bcbc; }
.rn-save-status { display: block; margin-top: 6px; font-size: 12px; font-weight: 650; color: var(--ink-soft); }
.rn-save-status.is-saving { color: var(--blue); }
.rn-save-status.is-saved { color: var(--green); }
.rn-save-status.is-error, .rn-save-status.is-unsaved { color: #8a5a00; }
@media (max-width: 700px) { .rn-toast { bottom: 84px; } }

/* Buying Plan: a call workspace, reusing the portal's type, controls and colors. */
.bp-dialog { width:min(1180px, 97vw); max-width:none; height:94vh; max-height:94vh; padding:0; border:0; border-radius:var(--radius); color:var(--ink); }
.bp-dialog[open] { display:flex; flex-direction:column; }
.bp-dialog .dialog-header { flex:none; background:var(--paper); }
.bp-dialog .dialog-header p { margin:3px 0 0; }
.bp-body { overflow:auto; padding:24px; background:var(--canvas); }
.bp-summary-head { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.bp-summary-head h3, .bp-pillar h3, .bp-actions h3 { margin:0; }
.bp-summary-facts { display:flex; flex-wrap:wrap; align-items:center; gap:16px 32px; margin:0 0 18px; font-size:13px; color:var(--ink-soft); }
.bp-summary-facts strong { display:block; color:var(--ink); font-size:15px; margin-top:3px; }
.bp-status { border-radius:30px; padding:4px 10px; color:var(--navy); background:var(--blue-pale); font-size:12px; font-weight:700; }
.bp-status.is-due { color:#704800; background:#fff0ca; }
.bp-home { background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:18px; margin:0 0 24px; }
.bp-home h3 { font-size:16px; }
.bp-home-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:16px 0; }
.bp-home-grid dt { font-size:12px; color:var(--ink-soft); }
.bp-home-grid dd { font-size:20px; font-weight:700; margin:3px 0; }
.bp-home-grid small, .bp-home-grid p { display:block; color:var(--ink-soft); font-size:11px; line-height:1.45; margin:4px 0 0; }
.bp-home summary, .bp-pillar summary, .bp-history summary { cursor:pointer; font-weight:600; }
.bp-home summary { font-size:13px; }
.bp-renewal { padding-top:10px; border-top:1px solid var(--line); }
.bp-pillars { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:16px 0; }
.bp-pillar { padding:18px; border:1px solid var(--line); border-top:3px solid var(--blue); border-radius:10px; background:var(--paper); min-width:0; }
.bp-pillar h3 { font-size:19px; margin-bottom:14px; }
.bp-pillar h3 span { font-size:12px; display:inline-grid; place-items:center; border-radius:50%; background:var(--blue-pale); width:25px; height:25px; vertical-align:middle; margin-right:5px; }
.bp-form label, .bp-check-in label, .bp-saved-action label { display:flex; flex-direction:column; gap:5px; font-size:12px; font-weight:600; color:var(--ink-soft); }
.bp-form input, .bp-form textarea, .bp-form select, .bp-check-in input, .bp-saved-action select { width:100%; min-width:0; border:1px solid var(--line-dark); border-radius:7px; padding:9px 10px; background:var(--paper); color:var(--ink); font-size:14px; font-weight:400; }
.bp-pillar textarea { min-height:150px; resize:vertical; line-height:1.6; }
.bp-pillar details { margin-top:12px; font-size:12px; }
.bp-pillar details[open] label { margin-top:10px; }
.bp-two { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:12px 0; }
.bp-focus { display:grid; grid-template-columns:240px 1fr; gap:14px; margin:18px 0 24px; }
.bp-actions { background:var(--green-pale); border:1px solid #bcd6c5; border-left:5px solid var(--green); padding:20px; border-radius:12px; margin:20px 0; }
.bp-actions .eyebrow { color:var(--green); margin:0 0 3px; }
.bp-actions > p { font-size:13px; margin:9px 0 16px; }
.bp-action-row { display:grid; grid-template-columns:minmax(210px,1fr) 140px 145px 125px 28px; align-items:end; gap:10px; padding:12px 0; border-top:1px solid #cfe1d5; }
.bp-action-row .bp-action-text { color:var(--ink); }
.bp-action-row .icon-button { width:28px; height:39px; }
.bp-action-row input, .bp-action-row select { min-height:42px; }
#bp-no-actions { margin-top:14px; }
.bp-check-in { background:var(--paper); padding:18px; border:1px solid var(--line); border-radius:12px; }
.bp-check-in h3 { margin:0; }
.bp-check-in button { margin-top:12px; }
.bp-savebar { position:sticky; bottom:-24px; padding:14px 0; display:flex; justify-content:flex-end; align-items:center; gap:10px; background:var(--canvas); border-top:1px solid var(--line); margin-top:20px; z-index:2; }
.bp-savebar span { margin-right:auto; font-size:12px; color:var(--ink-soft); }
.bp-pre { white-space:pre-wrap; overflow-wrap:anywhere; }
.bp-saved-action { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:14px 0; border-bottom:1px solid #cfe1d5; }
.bp-saved-action > div { min-width:0; overflow-wrap:anywhere; }
.bp-saved-action p { margin:4px 0 0; font-size:12px; }
.bp-saved-action label { width:130px; flex:none; }
.bp-history { margin:28px 0 0; }
.bp-history-entry { padding:16px 0; border-top:1px solid var(--line); }
.bp-history-entry p, .bp-history-entry li { overflow-wrap:anywhere; }
.bp-history-entry > p { margin:6px 0; }
.bp-history-entry .bp-home { margin-top:12px; }
.bp-caution { background:#fff5dc; color:#694600; padding:10px 14px; font-size:12px; border-radius:7px; }
.bp-pricing-summary { background:var(--paper); border:1px solid var(--line); border-radius:10px; padding:16px; margin:16px 0; }
.bp-pricing-summary .bp-summary-facts { margin:12px 0; }
[data-buying-summary] .bp-summary-facts { margin:14px 0; }
@media(max-width:900px) {
  .bp-action-row { grid-template-columns:1fr 1fr 1fr 28px; }
  .bp-action-text { grid-column:1 / -1; }
}
@media(max-width:680px) {
  .bp-dialog { width:100vw; height:100dvh; max-height:100dvh; margin:0; border-radius:0; }
  .bp-body { padding:16px; }
  .bp-pillars, .bp-focus, .bp-home-grid { grid-template-columns:1fr; }
  .bp-home-grid { gap:12px; }
  .bp-home-grid dd { font-size:18px; }
  .bp-pillar textarea { min-height:120px; }
  .bp-savebar { bottom:-16px; flex-wrap:wrap; }
  .bp-savebar span { flex-basis:100%; }
  .bp-action-row { grid-template-columns:1fr 1fr; }
  .bp-action-row .icon-button { justify-self:end; }
  .bp-summary-facts { gap:12px 20px; }
}
.bp-dialog .dialog-header { padding:16px 24px; }
.bp-dialog .dialog-header h2 { font-size:25px; margin:4px 0; }
.bp-body > .bp-summary-facts { margin-bottom:12px; }
.bp-home { padding:14px 18px; margin-bottom:18px; }
.bp-home .bp-home-grid { margin:12px 0; }
.bp-home .bp-caution { margin-bottom:0; }

/* Buying Plan follow-up: shared timeline, compact contacts and print sheets. */
.bp-toolbar, .bp-print-toolbar { display:flex; gap:10px; flex-wrap:wrap; margin:16px 0; }
.bp-three { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.bp-profile, .bp-stage { padding:16px; border:1px solid var(--line); border-radius:12px; margin:16px 0; }
.bp-profile summary { cursor:pointer; font-weight:700; }
.bp-profile form { display:grid; gap:14px; margin-top:12px; }
.bp-profile h3 { margin-top:0; }
.bp-team-group { min-width:0; margin:0; border:1px solid var(--line); padding:12px; border-radius:8px; }
.bp-team-group legend { font-weight:700; padding:0 5px; }
.bp-team-group .bp-two { gap:12px; }
.bp-team-group .bp-two > label:last-child { grid-column:1/-1; }
@media(max-width:800px) { .bp-profile form > .bp-two,.bp-print-edit details > .bp-two { grid-template-columns:1fr; } }
.bp-requests { padding-left:20px; }
.bp-requests li { margin-bottom:12px; }
.bp-requests p { margin:4px 0; white-space:pre-wrap; }
.bp-requests small { color:var(--ink-soft); }
.bp-budget { margin:20px 0; padding:18px; background:#f4f7f4; border:1px solid var(--line); border-radius:10px; }
.bp-budget > summary { cursor:pointer; font-weight:700; font-size:17px; }
.bp-budget h4 { margin:20px 0 8px; }
.bp-budget-row { display:grid; grid-template-columns:minmax(0,2fr) minmax(110px,1fr) 28px; gap:12px; align-items:end; margin:10px 0; }
.bp-budget-row.is-debt { grid-template-columns:1.4fr .8fr .8fr 1.4fr 28px; }
.bp-budget-totals { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:16px; margin:18px 0; background:#edf7f0; border:1px solid #cfdfd4; border-radius:8px; }
.bp-budget-totals strong,.bp-budget-totals span { display:block; }
.bp-budget-totals strong { font-size:21px; }
.bp-budget-totals p { grid-column:1/-1; font-size:13px; }
.bp-budget-totals .is-short { color:#9e3026; }
.bp-budget-saved { grid-column:1/-1; }
.bp-budget-table { width:100%; border-collapse:collapse; margin:16px 0; }
.bp-budget-table td,.bp-budget-table th { padding:8px; text-align:left; border-bottom:1px solid #dbe5de; }
.bp-budget-table td:last-child { text-align:right; white-space:nowrap; }
.bp-budget-table small { display:block; color:#52685e; }
@media(max-width:700px) { .bp-budget-row.is-debt { grid-template-columns:1fr 1fr; } .bp-budget-totals { grid-template-columns:1fr; } }
.bp-stage { background:#f5f9fb; }
.bp-stage form { display:grid; gap:12px; }
.bp-stage form > button { justify-self:start; }
.bp-stage details { margin-top:14px; }
.bp-stage details small { display:block; color:var(--ink-soft); }
#bp-resident-facts .bp-home-grid dd { font-size:16px; }
#bp-stage-save-note { font-weight:600; }
@media (max-width:600px) { .bp-stage .bp-two { grid-template-columns:1fr; } }
.bp-stage-confirm { display:flex!important; align-items:flex-start; gap:10px; }
.bp-stage-confirm input { width:auto!important; margin-top:4px; }
.bp-tracker-dialog { width:min(1220px,96vw); max-height:94vh; border:0; border-radius:16px; padding:24px; }
.bp-tracker-table { width:100%; border-collapse:collapse; font-size:14px; }
.bp-tracker-table td,.bp-tracker-table th { padding:12px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.bp-tracker-table small { display:block; color:var(--ink-soft); margin-top:5px; }
/* Resident-facing purchase snapshot. Staff controls live outside the page. */
.bp-print-dialog { width:min(960px,96vw); max-height:94vh; padding:24px; border:0; border-radius:12px; background:#edf1f2; }
.bp-print-toolbar { position:sticky; top:-24px; z-index:2; background:#edf1f2; padding:12px 0; align-items:center; }
#bp-print-status { font-size:13px; flex:1; min-width:160px; }
.bp-print-edit { padding:16px; background:white; border:1px solid var(--line-dark); border-radius:10px; margin-bottom:20px; }
.bp-print-edit-price { display:flex; gap:16px; align-items:end; }
.bp-print-edit label { display:grid; gap:5px; font-size:13px; }
.bp-print-edit input { width:100%; min-width:0; padding:8px; border:1px solid var(--line-dark); border-radius:6px; }
.bp-print-edit details { margin-top:10px; }
.bp-print-edit .bp-two { margin-top:12px; gap:12px; }
.bp-print-edit .bp-three { margin:12px 0; }
.bp-agreement-current { display:grid; grid-template-columns:1fr 1fr; gap:20px; padding:12px; background:var(--blue-pale); border-radius:8px; }
.bp-agreement-current strong { display:block; margin-top:4px; }
.bp-agreement-amendment { padding:12px; border:1px solid var(--line); border-radius:8px; }
.bp-agreement-amendment summary { cursor:pointer; font-weight:600; }
@media(max-width:700px) { .bp-profile .bp-three,.bp-print-edit .bp-three { grid-template-columns:1fr; } }
#bp-print-page { color:#16362b; background:white; font-family:Arial,sans-serif; font-size:14px; line-height:1.4; padding:38px 42px; box-shadow:0 3px 16px #18304214; }
#bp-print-page h1 { font-family:Georgia,serif; font-size:34px; line-height:1.12; margin:16px 0; font-weight:normal; letter-spacing:-.5px; }
#bp-print-page h2 { font-size:17px; margin:18px 0 8px; }
#bp-print-page h3 { font:inherit; font-weight:bold; margin:0 0 3px; }
#bp-print-page p { margin:4px 0; }
#bp-print-page a { color:inherit; text-decoration:none; }
.bp-print-brand { color:#205e43; font-size:12px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.bp-print-brand img { width:158px; height:auto; }
.bp-print-brand span { font-weight:normal; letter-spacing:0; color:#52685e; }
.bp-print-heading { border-top:5px solid #397a58; padding-top:14px; }
.bp-print-household { display:flex; justify-content:space-between; align-items:end; gap:20px; color:#52685e; font-size:12px; }
.bp-print-household strong { color:#16362b; font-size:15px; }
.bp-print-household div span { display:block; }
.bp-print-price { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-top:18px; padding:16px 20px; background:#edf7f0; border:1px solid #cfdfd4; border-radius:8px; }
.bp-print-price div span { display:block; font-size:13px; }
.bp-print-price div strong { display:block; font-family:Georgia,serif; font-size:30px; line-height:1.2; }
.bp-print-price .bp-print-current-deadline strong { font-size:23px; }
.bp-print-current-deadline { text-align:right; }
.bp-print-terms { margin-top:10px; padding-top:8px; border-top:1px solid #dbe5de; }
#bp-print-page .bp-print-terms h3 { display:flex; justify-content:space-between; gap:16px; font-size:12px; }
.bp-print-terms h3 span { font-weight:normal; }
.bp-print-terms .bp-print-dates { gap:14px; margin-top:4px; }
.bp-print-extension { border-left:3px solid #397a58; padding-left:10px; }
.bp-print-price p { max-width:160px; font-size:12px; }
.bp-print-price b { display:block; font-size:16px; }
.bp-print-dates { display:flex; gap:34px; margin:12px 0 0; font-size:12px; }
.bp-print-dates div { flex:1; }
.bp-print-dates dt { color:#52685e; }
.bp-print-dates dd { font-weight:bold; margin:2px 0 0; }
.bp-print-credit-row { display:flex; justify-content:space-between; align-items:center; gap:20px; border-bottom:1px solid #dbe5de; padding:9px 0; break-inside:avoid; }
.bp-print-credit-row > strong { font-size:21px; white-space:nowrap; }
.bp-print-credit-row p { font-size:12px; color:#52685e; }
.bp-print-through { display:inline; margin-left:6px; font-size:11px; }
#bp-print-page .bp-print-note { font-size:11px; color:#52685e; margin-top:10px; }
.bp-print-people-columns { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:10px; }
.bp-print-contact { padding:7px 0; border-bottom:1px solid #dbe5de; break-inside:avoid; font-size:12px; }
.bp-print-contact strong, .bp-print-contact span { display:block; }
.bp-print-contact strong { font-size:13px; }
.bp-print-contact a { overflow-wrap:anywhere; }
.bp-print-role { color:#52685e; font-size:11px; margin-bottom:2px; }
.bp-print-apply { font-size:11px; margin-top:3px; }
#bp-print-page .bp-print-apply a { color:#205e43; text-decoration:underline; font-weight:bold; }
.bp-print-apply span { font-size:11px; margin-top:2px; }
.bp-print-intro { font-size:12px; }
.bp-print-gather { margin-top:16px; padding:1px 14px 10px; background:#f5f7f4; border-left:3px solid #397a58; break-inside:avoid; }
#bp-print-page .bp-print-gather h2 { font-size:14px; margin:10px 0 6px; }
.bp-print-gather ul { display:grid; grid-template-columns:1fr 1fr; gap:5px 28px; padding-left:17px; margin:0; font-size:12px; }
.bp-print-actions { border:2px solid #247147; border-radius:8px; padding:10px 18px; margin:18px 0; }
.bp-print-actions li { padding:5px 0; break-inside:avoid; }
#bp-print-page .bp-pillar { padding:12px; }
#bp-print-page .bp-pillar h3 { font-size:16px; }
@media(max-width:700px) { .bp-three,.bp-print-facts { grid-template-columns:1fr; } .bp-tracker-dialog,.bp-print-dialog { padding:14px; } }
@media print {
  body.printing-buying-plan { height:auto!important; overflow:visible!important; background:white!important; }
  body.printing-buying-plan > :not(#bp-print-dialog) { display:none!important; }
  body.printing-buying-plan #bp-print-dialog { display:block!important; position:static!important; width:auto!important; max-width:none!important; max-height:none!important; height:auto!important; overflow:visible!important; margin:0!important; padding:0!important; border:0!important; box-shadow:none!important; }
  body.printing-buying-plan .bp-print-toolbar, body.printing-buying-plan .bp-print-edit { display:none!important; }
  body.printing-buying-plan #bp-print-page { padding:0; font-size:10pt; line-height:1.25; box-shadow:none; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  body.printing-buying-plan #bp-print-page h1 { font-size:25pt; }
  body.printing-buying-plan #bp-print-page h2 { font-size:15px; }
  body.printing-buying-plan #bp-print-page .bp-pillars, body.printing-buying-plan .bp-print-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
  body.printing-buying-plan .bp-print-facts dd { font-size:16px; }
  body.printing-buying-plan .bp-print-note { font-size:8.5pt; }
  body.printing-buying-plan #bp-print-page section { break-inside:auto; }
  body.printing-buying-plan #bp-print-page h2 { break-after:avoid; }
  @page { size:letter; margin:.45in .55in; }
  body.printing-buying-plan .bp-print-actions { break-inside:avoid; }
  body.printing-buying-plan .bp-pre { overflow:visible; white-space:pre-wrap; }

}

/* What moved this week */
.attention-moved { margin: 14px 0 6px; }
.attention-moved > h3 { margin: 0 0 8px; font-size: 13px; letter-spacing: .02em; color: var(--navy); }
.attention-moved > h3 small { margin-left: 6px; color: var(--ink-soft); font-weight: 650; }
.attention-card.is-moved { border-left: 3px solid var(--line-dark); }
.attention-card.is-moved.is-worse { border-left-color: var(--danger); }
.attention-card.is-moved.is-better { border-left-color: var(--green); }
.attention-card.is-moved.is-new h3::before { content: "New"; display: inline-block; margin-right: 7px; padding: 1px 6px; color: var(--blue); background: var(--blue-pale); border-radius: 999px; font-size: 10px; font-weight: 800; vertical-align: 1px; }

@media screen and (max-width:650px) { #bp-print-page { padding:22px 18px; } .bp-print-brand, .bp-print-household, .bp-print-price, .bp-print-edit-price { flex-wrap:wrap; } .bp-print-contact { grid-template-columns:1fr; gap:4px; } .bp-print-gather ul { grid-template-columns:1fr; } }
@media print {
  #bp-print-page h1 { margin:6px 0; }
  #bp-print-page h2 { margin-top:8px; margin-bottom:4px; }
  .bp-print-price { margin-top:12px; padding:12px 16px; }
  .bp-print-dates { margin-top:8px; }
  .bp-print-credit-row, .bp-print-contact { padding-top:6px; padding-bottom:6px; }
  .bp-print-gather { margin-top:10px; }
  .bp-print-people-columns { gap:22px; }
  .bp-print-brand img { width:135px; }
  .bp-print-brand span { font-size:11px; }
  .bp-print-heading { padding-top:8px; }
  .bp-print-price { margin-top:8px; padding:6px 14px; }
  .bp-print-terms { margin-top:6px; padding-top:4px; }
  .bp-print-contact { padding:3px 0; line-height:1.2; }
  #bp-print-page .bp-print-contact p { margin:3px 0; }
  .bp-print-price p { max-width:210px; }
  .bp-print-dates { margin-top:6px; }
  .bp-print-credit-row { padding-top:4px; padding-bottom:4px; }
  #bp-print-page .bp-print-gather h2 { margin:4px 0; }
  .bp-print-gather { padding-bottom:6px; }
  .bp-print-people-columns > div > h3 { margin-bottom:2px!important; }
  .bp-budget-totals { grid-template-columns:repeat(3,minmax(0,1fr)); break-inside:avoid; }
  .bp-budget-table tr { break-inside:avoid; }
}
@media screen and (max-width:650px) { .bp-print-people-columns { grid-template-columns:1fr; } }

.cash-period-form.is-compact { grid-template-columns: minmax(0, 1fr) auto; margin-top: 10px; padding-top: 10px; }
.cash-period-form.is-compact label { grid-template-columns: auto minmax(90px, 140px); align-items: center; gap: 8px; }

/* Notes under a figure wrap inside their own cell instead of running across
   the neighbouring column. */
.property-finance-table td small { display:block; white-space:normal; overflow-wrap:anywhere; }
/* More NOI than last year reads green, less reads red. */
.finance-change.is-up { color:var(--green); }
.finance-change.is-down { color:var(--danger); }

/* September 27: compact navigation and neutral, comparable metrics. */
:root { --sidebar-width: 192px; }
.sidebar { padding:24px 12px 18px; }
.sidebar-brand { padding-inline:8px; }
.sidebar-brand img { width:125px; }
.sidebar-brand span { display:none; }
.sidebar-nav { gap:4px; margin-top:20px; }
.nav-item { min-height:42px; padding:9px 11px; font-size:13px; }
.workspace { padding:30px clamp(18px,3vw,42px) 60px; }
.sidebar-toggle { position:absolute; top:17px; right:-12px; width:25px; height:30px; padding:0; border:1px solid #ccd8d3; border-radius:7px; background:white; color:#234d3e; font-size:24px; cursor:pointer; z-index:30; }
.sidebar-toggle:focus-visible { outline:3px solid #78b5ef; outline-offset:3px; }
.sidebar-collapsed { --sidebar-width:66px; }
.sidebar-collapsed .sidebar { padding-inline:8px; }
.sidebar-collapsed .sidebar-brand { visibility:hidden; height:27px; }
.sidebar-collapsed .sidebar .nav-item { font-size:0; justify-content:center; padding:10px; }
.sidebar-collapsed .sidebar .nav-item svg { width:22px; height:22px; flex-shrink:0; }
.sidebar-collapsed .account-card > div:nth-child(2), .sidebar-collapsed .nav-count { display:none!important; }
.sidebar-collapsed .account-card { flex-wrap:wrap; justify-content:center; padding-inline:0; }
.sidebar-collapsed .nav-more-menu { left:52px; bottom:0; width:185px; }
.sidebar-collapsed .sidebar .nav-more-menu .nav-item { font-size:13px; justify-content:flex-start; }
#dashboard-maintenance .dq-cards, .portfolio-metric-stack { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
#dashboard-maintenance .dq-card, #dashboard-portfolio .dq-card { min-width:0; min-height:142px; padding:15px; background:#fff; border:1px solid var(--line); color:var(--ink); box-shadow:none; }
#dashboard-maintenance .dq-card::before, #dashboard-portfolio .dq-card::before, .resident-summary-grid .stat-card::before { display:none; }
#dashboard-maintenance .dq-value { font-size:25px; }
#dashboard-portfolio .dq-label { min-height:32px; }
#dashboard-portfolio .dq-value { font-size:28px; }
#dashboard-portfolio .stat-spark { height:32px; }
.portfolio-rent { display:block; font-size:17px; font-weight:650; margin:4px 0; }
.portfolio-rent small, #dashboard-portfolio .dq-card > small { font-size:11px; font-weight:400; color:var(--ink-soft); }
.resident-summary-grid .stat-card { background:white; border:1px solid var(--line); border-top:1px solid var(--line); color:var(--ink); box-shadow:none; }
.resident-summary-grid .stat-card strong, .resident-summary-grid .stat-card span { color:var(--ink); }
#property-finance-cards .is-better .dq-value, #property-finance-cards .is-better .dq-deltas { color:var(--green); }
#property-finance-cards .is-worse .dq-value, #property-finance-cards .is-worse .dq-deltas { color:var(--danger); }
.dashboard-open-project-grid { grid-template-columns:repeat(auto-fit,minmax(245px,1fr)); gap:10px; }
.dashboard-open-project-card { padding:12px 14px; gap:9px; min-width:0; background:white; border:1px solid var(--line); }
.dashboard-open-project-card { cursor:default; }
.dashboard-open-project-card .project-card-heading { border:0; background:none; padding:0; color:inherit; text-align:left; font:inherit; cursor:pointer; }
.vacancy-timeline p { margin:4px 0; font-size:12px; }
.vacancy-timeline form { display:flex; flex-wrap:wrap; gap:8px; align-items:end; padding:10px; border:1px solid #d4b066; background:#fffaf0; border-radius:8px; }
.vacancy-timeline form[hidden] { display:none; }
.vacancy-timeline label { display:grid; gap:5px; font-size:12px; }
.vacancy-timeline input { min-width:140px; padding:7px; border:1px solid var(--line); border-radius:5px; font:inherit; }
.vacancy-timeline .text-button { border:0; background:none; color:var(--navy); text-decoration:underline; cursor:pointer; padding:4px; }
.project-card-heading { display:flex; align-items:start; justify-content:space-between; gap:10px; }
.project-card-heading strong { font-size:14px; }
.project-card-heading small { font-size:10px; color:var(--ink-soft); text-align:right; }
.project-mini-grid { display:grid; grid-template-columns:1.2fr .8fr 1fr; gap:5px; }
.project-mini-metric { display:flex; flex-direction:column; border-radius:5px; padding:6px; background:#f5f7f6; }
.project-mini-metric small { font-size:9px; font-weight:500; }
.project-mini-metric b { font-size:12px; line-height:1.5; }
.project-mini-metric.is-green { background:#e6f2e9; color:#23683a; }
.project-mini-metric.is-yellow { background:#fff3cb; color:#775b05; }
.project-mini-metric.is-red { background:#fbe6e3; color:#a52a27; }
.project-card-foot { font-size:10px; color:var(--ink-soft); }
.property-finance-filters { display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)) minmax(150px,1.3fr); }
.property-finance-filters > label { min-width:0; }
.property-finance-filters .finance-multiselect-toggle, .property-finance-filters > label > input, .property-finance-filters select { height:38px; min-height:38px; padding:7px 10px; font-size:13px; }
.property-finance-filters .finance-multiselect-panel label { min-width:0; width:auto; flex:none; white-space:normal; }
.property-finance-filters .finance-multiselect-panel input[type=checkbox] { width:16px; height:16px; min-height:0; flex:0 0 16px; padding:0; margin:0; }
.finance-multiselect-panel { min-width:220px; max-width:min(340px,80vw); }
@media (max-width:1100px) and (min-width:701px) {
  :root:not(.sidebar-collapsed) { --sidebar-width:170px; }
  :root:not(.sidebar-collapsed) .sidebar .nav-item { font-size:12px; justify-content:flex-start; gap:8px; }
  :root:not(.sidebar-collapsed) .sidebar-brand img { width:122px; }
  .property-finance-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:850px) {
  #dashboard-maintenance .dq-cards, .portfolio-metric-stack { grid-template-columns:1fr; }
  #dashboard-maintenance .dq-card, #dashboard-portfolio .dq-card { min-height:126px; }
}
@media (max-width:700px) {
  :root, :root.sidebar-collapsed { --sidebar-width:0px; }
  .sidebar-toggle { display:none; }
  .sidebar, .sidebar-collapsed .sidebar { padding:8px 10px; }
  .workspace { margin-left:0; padding:22px 15px 90px; }
  .sidebar .nav-item, .sidebar-collapsed .sidebar .nav-item { font-size:0; padding:5px; }
  .sidebar-collapsed .sidebar-brand { display:none; }
  .sidebar-collapsed .nav-more-menu { left:auto; right:0; bottom:60px; }
  .property-finance-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
#bp-print-page.bp-print-credits { display:flex; flex-direction:column; min-height:990px; }
.bp-print-credits .bp-print-home { flex:1; display:flex; flex-direction:column; justify-content:space-evenly; }
.bp-print-credits .bp-print-people { flex:1; display:flex; flex-direction:column; justify-content:space-evenly; }
.bp-action-plan { display:flex; flex-direction:column; gap:28px; min-height:760px; }
#bp-print-page .bp-action-plan h2 { font-size:20px; margin:14px 0 10px; }
.bp-action-plan p, .bp-action-plan li { font-size:19px; line-height:1.5; }
.bp-action-plan li { padding:16px 8px; border-bottom:1px solid #dbe5de; break-inside:avoid; }
.bp-action-plan ol { padding-left:30px; }
.bp-action-plan li p { font-size:15px; }
.bp-action-checkin { padding:20px; background:#edf7f0; border:1px solid #cfdfd4; border-radius:8px; margin-top:auto; }
.bp-action-checkin strong { font-size:23px; }
@media print {
  @page { size:letter; margin:0.45in; }
  body.printing-buying-plan #bp-print-page.bp-print-credits { min-height:10in; }
  body.printing-buying-plan #bp-print-page .bp-print-home, body.printing-buying-plan #bp-print-page .bp-print-people { break-inside:avoid; }
  body.printing-buying-plan #bp-print-page.bp-print-meeting { min-height:9.8in; }
  body.printing-buying-plan #bp-print-page .bp-action-plan { min-height:8in; gap:18px; }
  body.printing-buying-plan #bp-print-page .bp-action-plan h2 { font-size:16pt; }
  body.printing-buying-plan .bp-action-plan p, body.printing-buying-plan .bp-action-plan li { font-size:15pt; }
  body.printing-buying-plan .bp-action-plan li p { font-size:11pt; }
  body.printing-buying-plan .bp-action-checkin { break-inside:avoid; }
}
.resident-outcome-badges { display:flex; gap:3px; flex-wrap:wrap; margin-top:4px; }
.resident-outcome-badge { display:inline-block; padding:2px 5px; font-size:10px; background:#f2f4f3; border:1px solid #dbe2df; color:#43574d; border-radius:4px; white-space:nowrap; }

/* Filtered resident financials: neutral cards with meaning in the numbers. */
.resident-financial-section { margin: 22px 0 26px; }
.resident-financial-section > h2 { margin: 0 0 12px; font-size: 20px; }
.resident-financial-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.resident-financial-grid .stat-card { background:#fff; border:1px solid var(--line); color:var(--ink); padding:20px; min-width:0; }
.resident-financial-grid .stat-card::before { display:none; }
.resident-financial-grid .stat-card strong { font-size:clamp(24px,2.2vw,32px); overflow-wrap:anywhere; }
.resident-financial-grid .stat-card span { color:var(--ink-soft); font-size:12px; }
.resident-financial-grid .stat-card small { display:block; margin-top:9px; line-height:1.45; color:var(--ink-soft); }
.resident-financial-grid .rf-positive { color:#246442; }
.resident-financial-grid .rf-negative { color:#a22b30; }
.resident-financial-caption, .resident-financial-coverage { font-size:12px; color:var(--ink-soft); line-height:1.5; margin:10px 0; }
.resident-financial-coverage { color:#7b5119; }
.resident-financial-detail { border:1px solid var(--line); border-radius:12px; background:white; padding:14px 18px; }
.resident-financial-detail summary { cursor:pointer; font-weight:650; }
.resident-financial-detail[open] summary { margin-bottom:16px; }
.resident-financial-detail table { font-size:12px; }
.resident-financial-breakdown { max-width:760px; }
.resident-financial-breakdown td:last-child, .resident-financial-breakdown th:last-child { text-align:right; font-variant-numeric:tabular-nums; }
.resident-financial-breakdown .rf-total { font-weight:700; border-top:1px solid var(--line); }
.resident-financial-chart svg { width:100%; max-height:220px; }
.resident-financial-chart text { fill:var(--ink-soft); font-size:11px; }
.resident-financial-chart circle { fill:#2c694d; }
.rf-chart-line { fill:none; stroke:#2c694d; stroke-width:2.5; }
.rf-chart-zero { stroke:#bdc9c1; stroke-width:1; }
#resident-detail-body .resident-financial-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
#resident-detail-body .resident-financial-grid .stat-card { padding:14px; }
@media(max-width:1100px) { .resident-financial-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:620px) { .resident-financial-grid, #resident-detail-body .resident-financial-grid { grid-template-columns:1fr; } .resident-financial-grid .stat-card strong { font-size:30px; } }

/* Independent departure, deposit and letter confirmations in the Daily Brief. */
#attention-moveout-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:0 0 16px; }
#attention-moveout-fields[hidden] { display:none; }
#attention-moveout-fields label { display:grid; gap:6px; margin:0; min-width:0; }
#attention-moveout-fields p, #attention-moveout-fields .moveout-wide, #attention-moveout-fields .moveout-check { grid-column:1 / -1; }
#attention-moveout-fields .moveout-check { grid-template-columns:20px minmax(0,1fr); align-items:start; gap:9px; }
#attention-moveout-fields input[type="checkbox"] { width:18px; height:18px; min-height:0; margin:3px 0 0; }
#attention-moveout-fields textarea { width:100%; min-height:110px; box-sizing:border-box; font:inherit; }
@media(max-width:650px) { #attention-moveout-fields { grid-template-columns:minmax(0,1fr); } }

/* Compact operating summaries; full evidence stays one disclosure away. */
.resident-financial-compact { padding: 14px 18px; }
.resident-financial-compact .resident-financial-grid { gap: 12px; }
.resident-financial-compact .resident-financial-current { grid-template-columns: repeat(3,minmax(0,1fr)); }
.resident-financial-compact .stat-card { min-height: 0; padding: 8px 12px; box-shadow: none; grid-column: auto; }
.resident-financial-compact .stat-card strong { font-size: 1.55rem; margin: 5px 0; }
.resident-financial-compact .stat-card small { font-size: .75rem; line-height: 1.35; }
.resident-financial-compact .resident-financial-caption { margin: 10px 0 5px; font-size: .75rem; }
.resident-financial-compact .resident-financial-detail { margin-top: 6px; }
.resident-analysis { padding: 12px 18px; }
.resident-analysis > summary { font-size: .88rem; }
.maintenance-card-spark { display: block; width: 100%; margin-top: 8px; }
.maintenance-card-spark svg, #dashboard-portfolio .stat-spark svg { width: 100%; height: 32px; }
#dashboard-maintenance #dashboard-maintenance-cards { grid-template-columns:repeat(4,minmax(0,1fr)); }
@media(max-width:1000px){#dashboard-maintenance #dashboard-maintenance-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:500px){#dashboard-maintenance #dashboard-maintenance-cards{grid-template-columns:1fr}}
.bp-deposit-units { margin:8px 0 0; }
.bp-deposit-units > div { display:flex; justify-content:space-between; gap:12px; font-size:12px; }
.bp-deposit-units dd { margin:0; font-weight:600; }
.maintenance-history-note { color: var(--muted); font-size: .7rem; }
@media(max-width: 650px) { .resident-financial-compact .resident-financial-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; } .resident-financial-compact { padding: 10px; } .resident-financial-compact .stat-card { padding: 6px; } }

/* Finance: one compact comparison column and task-based drawer sections. */
.property-finance-table .finance-noi-cell { min-width:120px; }
.finance-noi-lifetime { margin-top:9px; padding-top:7px; border-top:1px solid var(--line); }
.finance-noi-lifetime strong span { font-size:10px; font-weight:500; }
.finance-noi-cell .finance-change.is-up { color:#216247; }
.finance-noi-cell .finance-change.is-down { color:#9d3434; }
.property-finance-context > .finance-return,.property-finance-context > .finance-lifecycle { grid-column:1/-1; }
.finance-lifecycle > summary,.property-finance-form-section > summary { cursor:pointer; font-weight:700; padding:10px 0; }
.property-finance-form-section[open] > summary { margin-bottom:12px; }
.finance-return > .detail-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.finance-return .detail-grid > div { padding:10px; background:var(--paper-alt,#f3f6f4); border-radius:8px; }
.finance-return .detail-grid dt { font-size:11px; }.finance-return .detail-grid dd { margin:5px 0 0;font-size:19px;font-weight:700; }
@container (max-width:600px) {
 .property-finance-table:not(.property-debt-table) { display:block; }
 .property-finance-table:not(.property-debt-table) thead { display:none; }
 .property-finance-table:not(.property-debt-table) tbody { display:grid;gap:12px; }
 .property-finance-table:not(.property-debt-table) tbody tr { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));position:relative;gap:0 14px;padding:12px;border:1px solid var(--line);border-radius:8px; }
 .property-finance-table:not(.property-debt-table) tbody th:first-child { display:block!important;grid-column:1/-1;width:auto;text-align:left;padding:0 36px 12px 0; }
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="sale"],
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="debt"],
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="net_cash"],
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="noi"] { display:block!important;text-align:left;padding:10px 0; }
 .property-finance-table:not(.property-debt-table) td[data-label]::before { display:block!important;content:attr(data-label);font-size:10px;color:var(--ink-soft);margin-bottom:5px; }
 .property-finance-table:not(.property-debt-table) td strong { font-size:13px; }
 .property-finance-table:not(.property-debt-table) tbody .finance-open-cell { display:block!important;position:absolute;top:4px;right:4px;border:0; }
 .property-finance-table .finance-noi-cell { min-width:0; }
 .finance-return > .detail-grid { grid-template-columns:1fr; }
}

/* Compact property and household lists: primary values, then short context. */
.property-finance-table .finance-noi-cell { min-width:0; }
.property-finance-table .finance-noi-cell small,.property-finance-table .finance-gain-cell small { white-space:nowrap; margin-top:2px; }
.resident-list-table { width:100%;min-width:690px;table-layout:fixed;font-size:12px; }
.resident-list-table th,.resident-list-table td { min-width:0!important;padding:11px 8px;vertical-align:top; }
.resident-list-table thead th { background:#eaf3f6;vertical-align:bottom; }
.resident-list-table th:first-child { width:auto;text-align:left; }
.resident-list-table th:nth-child(2) { width:15%; }
.resident-list-table th:nth-child(3) { width:8%; }
.resident-list-table th:nth-child(4) { width:19%; }
.resident-list-table th:nth-child(5) { width:14%; }
.resident-list-table th:nth-child(6) { width:124px; }
.resident-list-table .resident-open-cell { width:34px;padding:4px 0;text-align:center; }
.resident-list-table .row-open { width:30px;height:36px; }
.resident-list-table strong { font-size:12px;font-weight:650; }
.resident-list-table small { display:block;margin-top:3px;font-size:10px;font-weight:400;color:var(--ink-soft);line-height:1.4; }
.resident-list-table [data-resident-column="noi"] { white-space:nowrap; }
.resident-list-table [data-resident-column="income"] small { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.resident-list-table .sort-header { text-align:inherit;font-size:10px;line-height:1.35;white-space:normal; }
.resident-list-table .resident-outcome-badges { justify-content:flex-end;gap:3px; }
.resident-list-table .resident-outcome-badge { font-size:9px;padding:2px 4px; }
.resident-list-table .dq-delta.is-better,.finance-noi-cell .dq-delta.is-better { color:#216247; }
.resident-list-table .dq-delta.is-worse,.finance-noi-cell .dq-delta.is-worse { color:#9d3434; }
.finance-performance-group>summary { padding:10px 0;cursor:pointer; }
.finance-performance-group dl { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 0 14px; }
.finance-performance-group dl div { border-top:1px solid var(--line);padding-top:8px; }
.finance-performance-group dt { color:var(--ink-soft);font-size:11px; }
.finance-performance-group dd { margin:4px 0 0;font-size:15px;font-weight:650; }
@container (max-width:600px) {
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="gain"] { display:block!important;text-align:left;padding:10px 0; }
}
@media(max-width:760px) {
 #view-residents .resident-list-panel .table-wrap .resident-list-table { min-width:0;display:block; }
 .resident-list-table thead,.resident-list-table tbody { display:block; }
 .resident-list-table tr { display:grid;grid-template-columns:minmax(0,1fr) 102px 28px;gap:0 4px; }
 .resident-list-table th,.resident-list-table td { width:auto!important; }
 .resident-list-table thead th:not(:first-child):not(:nth-child(6)),
 .resident-list-table [data-resident-column="tenure"],.resident-list-table [data-resident-column="status"] { display:none; }
 .resident-list-table th:first-child { grid-column:1; }
 .resident-list-table thead th:nth-child(6),.resident-list-table [data-resident-column="noi"] { grid-column:2;grid-row:1; }
 .resident-list-table .resident-open-cell { grid-column:3;grid-row:1; }
 .resident-list-table [data-resident-column="income"] { display:block;grid-column:1;grid-row:2;padding-top:0;text-align:left; }
 .resident-list-table [data-resident-column="payment"] { display:block;grid-column:2/4;grid-row:2;padding-top:0; }
 .resident-list-table [data-resident-column="payment"]::before { content:"Late / NSF";display:block;font-size:9px;color:var(--ink-soft); }
 .resident-list-table [data-resident-column="income"] strong::after { content:" / mo at move-in";font-size:9px;font-weight:400; }
 .resident-list-table tbody tr { border-bottom:1px solid var(--line); }
 .resident-list-table tbody th,.resident-list-table tbody td { border:0; }
 .finance-performance-group dl { grid-template-columns:1fr; }
}

/* Residents to watch / doing well (panel analysis 2) */
.attention-residents { margin: 14px 0 6px; }
.attention-residents > summary { cursor: pointer; font-size: 13px; font-weight: 800; color: var(--navy); }
.attention-residents > p { margin: 6px 0 8px; color: var(--ink-soft); font-size: 12px; }
.attention-card.is-resident { border-left: 3px solid var(--line-dark); }
.attention-card.is-resident.is-watch { border-left-color: var(--danger); }
.attention-card.is-resident.is-positive { border-left-color: var(--green); }

@media(max-width:650px) { .resident-financial-compact .resident-financial-grid { grid-template-columns:1fr; } }

/* Keep purchase and initial renovation visible in both the list and phone cards. */
@container (min-width:601px) {
 .property-finance-table:not(.property-debt-table) { min-width:1120px; }
 .property-finance-table:not(.property-debt-table) [data-finance-column="purchase"],
 .property-finance-table:not(.property-debt-table) [data-finance-column="renovation"] { width:86px; }
}
@container (max-width:600px) {
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="purchase"],
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="renovation"],
 .property-finance-table:not(.property-debt-table) tbody td[data-finance-column="basis"] { display:block!important;text-align:left;padding:10px 0; }
}

/* Shared inputs and compact management summaries — September 30, 2026. */
.trend-extrema{display:block;font-size:.68rem;line-height:1.35;color:var(--muted,#61716d);font-variant-numeric:tabular-nums;white-space:normal;margin-top:3px}
.stat-spark:has(.trend-extrema){height:auto;min-height:42px}
.maintenance-annual{display:block;border-top:1px solid #e0e7e3;margin-top:8px;padding-top:6px;font-size:.76rem;color:#526b60}
.maintenance-annual b{font-size:1rem;color:#143d2a;margin-right:5px}
.finance-life-line{max-width:100%;white-space:pre-line;overflow-wrap:anywhere;font-size:.7rem!important;line-height:1.5}
.property-finance-context>.finance-lifecycle{grid-column:1/-1;margin:0;padding:8px 0}
.finance-lifecycle>.detail-grid{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 12px;font-size:.8rem}
.finance-lifecycle h3{font-size:.9rem;margin:2px 0 8px}
.property-finance-form-section[open]{padding-block:10px}
#finance-performance-detail{margin-top:24px;border-top:1px solid #dbe4df;padding-top:12px}
.maintenance-reserve-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px;border:1px solid #dbe4df;border-radius:8px;margin-bottom:20px}
.maintenance-reserve-form h3,.maintenance-reserve-form small,.maintenance-reserve-form [role=status]{grid-column:1/-1}
.resident-financial-section{display:grid;grid-template-columns:1fr;gap:12px}
.resident-overview-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.resident-overview-cards .stat-card{margin:0;min-width:0}
.valuation-real-estate{background:#edf4f0;font-size:1.05rem;font-weight:700;padding-inline:8px!important}
.valuation-value-method{font-size:.74rem!important;margin:2px 8px 10px!important;color:#536a5d}
.valuation-cash-line{color:#536a5d}
.valuation-comparisons:empty{display:none}
.valuation-comparisons{margin:16px 0 24px}
#property-finance-equity-content small,.valuation-comparisons small{display:block;font-weight:400;font-size:.72rem;white-space:normal}
#property-finance-equity-content tbody th{min-width:180px}
@media(min-width:1000px){.resident-financial-compact{grid-template-columns:1fr 1fr;align-items:start}.resident-financial-compact>h2{position:absolute}.resident-financial-compact .resident-financial-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.resident-overview-cards{grid-template-columns:1fr 1fr}.maintenance-reserve-form{grid-template-columns:1fr}.finance-lifecycle>.detail-grid{grid-template-columns:auto 1fr}}

.finance-property-summary{grid-column:1/-1;margin:0;font-size:.83rem;color:var(--ink-soft)}
.maintenance-period-pair{display:grid;gap:8px}.maintenance-period-pair .stat-card:last-child{border-top:1px solid var(--line)}

/* Investor report and sortable interest register — October 1, 2026. */
.valuation-cash-group summary{cursor:pointer;list-style:none}
.valuation-cash-group summary .valuation-line span::before{content:'▸ ';font-size:.8em}
.valuation-cash-group[open] summary .valuation-line span::before{content:'▾ '}
.valuation-cash-group>.valuation-line{padding-left:18px}
.valuation-cash-group summary::-webkit-details-marker{display:none}
.valuation-distribution-detail{margin:6px 0;padding:6px 10px;border:1px solid var(--line);border-radius:5px}
.valuation-distribution-detail summary{cursor:pointer;font-size:.82rem;font-weight:600}
.valuation-projection .valuation-footnote{font-size:.72rem;line-height:1.4;margin:8px 0}
.valuation-projection .valuation-line strong{white-space:normal;text-align:right}
.valuation-strong-blocks{margin-top:14px}
.valuation-book-link{color:inherit;text-decoration:underline;text-decoration-style:dotted}
.equity-filters{display:flex;flex-wrap:wrap;gap:12px}
.equity-table{min-width:1420px;font-variant-numeric:tabular-nums}
.equity-table th,.equity-table td{display:table-cell}
.equity-table th:first-child{position:sticky;left:0;background:var(--paper,#fff);z-index:1;max-width:220px}
.equity-table thead button{border:0;background:none;color:inherit;font:inherit;font-weight:700;cursor:pointer;padding:0;text-align:inherit}
.equity-table thead th{vertical-align:bottom;white-space:normal}
.equity-valuation-link{border:0;background:none;color:var(--green,#205c40);font:inherit;text-decoration:underline;cursor:pointer;padding:0}
.equity-table button:focus-visible{outline:2px solid #276945;outline-offset:3px}
@media(max-width:600px){#property-finance-equity-content{padding:12px}.equity-table th:first-child{min-width:150px;max-width:175px}.valuation-main{padding:16px}.valuation-projection .valuation-line{gap:12px;font-size:.82rem}}

/* Owner finance review: keep the six overview cards in two aligned rows. */
.resident-financial-compact{display:block;grid-template-columns:none}
.resident-financial-compact .resident-financial-grid,.resident-overview-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.resident-financial-compact .resident-overview-cards{margin-bottom:12px}
.resident-financial-detail-panel{width:100%;grid-column:1/-1}
.resident-list-table{min-width:1120px;table-layout:fixed}
.resident-list-table th,.resident-list-table td{display:table-cell}
.resident-list-table th:first-child{width:19%;overflow-wrap:anywhere}
.resident-list-table th:nth-child(2){width:13%}
.resident-list-table th:nth-child(3){width:12%}
.resident-list-table th:nth-child(4){width:8%}
.resident-list-table th:nth-child(5){width:15%}
.resident-list-table th:nth-child(6){width:10%}
.resident-list-table th:nth-child(7),.resident-list-table th:nth-child(8){width:10%}
.resident-list-table .resident-notice{color:#925800;font-weight:700}
@media(max-width:600px){.resident-financial-compact .resident-financial-grid,.resident-overview-cards{grid-template-columns:1fr;gap:8px}}

.equity-summary{margin-bottom:20px}.equity-table{min-width:1330px;table-layout:fixed}.equity-table th:first-child{width:180px;min-width:180px;white-space:normal;overflow-wrap:anywhere}.equity-table th:nth-child(2){width:85px}.equity-table small{line-height:1.4}.cashflow-table{width:max-content;min-width:100%;font-variant-numeric:tabular-nums}.cashflow-table th,.cashflow-table td{display:table-cell!important;min-width:135px;text-align:right}.cashflow-table th:first-child{position:sticky;left:0;min-width:230px;text-align:left;background:#fff;z-index:1}.cashflow-table small{display:block;font-weight:400}.cashflow-total{font-weight:700;background:#f0f5f1}.cashflow-property{padding:20px 0;border-bottom:1px solid var(--line)}.cashflow-assumptions{margin:18px 0}.valuation-strong-blocks-section{padding:30px;border-top:2px solid var(--line)}
/* Financial schedules retain every column at all viewport widths. */
.valuation-report th,.valuation-report td,#property-finance-cashflow-view th,#property-finance-cashflow-view td{display:table-cell!important}
.valuation-strong-blocks-section{overflow-x:auto}
.valuation-strong-blocks-section table{min-width:660px}

/* Save confirmation stays visible when the editing dialog closes. */
.portal-save-feedback { position:fixed; right:1rem; bottom:1rem; z-index:10000; max-width:min(28rem,calc(100vw - 2rem)); padding:.8rem 1rem; background:#174b36; color:#fff; border-radius:.5rem; box-shadow:0 3px 18px #0003; font-size:.95rem; }
.portal-save-feedback[hidden] { display:none; }

/* Buying Plan: one meeting, one save, one family copy. */
.bp-home-headline { display:grid; grid-template-columns:1fr 1.15fr 1fr; gap:18px; margin:14px 0; align-items:start; }
.bp-home-headline span,.bp-home-headline strong,.bp-home-headline small { display:block; }
.bp-home-headline span { font-size:13px; }
.bp-home-headline strong { margin-top:4px; font-size:25px; line-height:1.2; }
.bp-home-headline small { font-size:11px; margin-top:5px; }
.bp-purchase-total { color:#206747; }
.bp-background { border:1px solid var(--line); border-radius:10px; padding:16px; margin:18px 0; }
.bp-background > summary { cursor:pointer; font-weight:700; }
.bp-background .bp-profile { margin-top:16px; }
.bp-history-versions { padding:0 16px 16px; font-size:13px; }
.bp-savebar { position:sticky; bottom:0; z-index:3; padding:15px 0; background:var(--paper,#f5f7f7); }
.bp-meeting-pillars { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.bp-meeting-pillars > section { padding:10px; border:1px solid #dbe5de; border-radius:6px; }
.bp-meeting-pillars p { overflow-wrap:anywhere; }
.bp-meeting-document { font-size:13px; }
#bp-print-page .bp-meeting-document h2 { font-size:15px; margin:8px 0 6px; }
.bp-meeting-document .bp-home-headline { background:#edf7f0; padding:12px; border-radius:6px; }
.bp-meeting-document .bp-home-headline strong { font-size:23px; }
.bp-meeting-steps { padding:10px 14px; margin:12px 0; border-left:4px solid #28704c; background:#f4f8f5; }
.bp-meeting-steps ol { margin:0; padding-left:20px; }
.bp-meeting-steps li { padding:4px 0; break-inside:avoid; }
.bp-meeting-focus { margin:10px 0; }
.bp-meeting-checkin { background:#edf7f0; padding:10px 14px; border-radius:6px; }
.bp-meeting-checkin strong { font-size:18px; }
.bp-meeting-document .bp-print-people { margin-top:10px; }
.bp-meeting-document .bp-print-contact { font-size:11px; padding:3px 0; }
.bp-meeting-document .bp-print-contact p { overflow-wrap:anywhere; }
#bp-print-page a { text-decoration:underline; text-underline-offset:2px; }
.bp-print-price { gap:12px; }
.bp-print-price > div { flex:1; min-width:0; }
.bp-print-price .bp-purchase-total { color:inherit; }
.bp-print-price strong { font-size:25px; }
@media(max-width:700px) {
  .bp-home-headline { grid-template-columns:1fr; gap:12px; }
  .bp-home-headline strong { font-size:23px; }
  .bp-savebar { flex-wrap:wrap; }
  .bp-savebar #bp-save-note { flex-basis:100%; }
  .bp-meeting-pillars { grid-template-columns:1fr; }
}
@media print {
  body.printing-buying-plan #bp-print-page.bp-print-meeting { min-height:0; }
  body.printing-buying-plan .bp-meeting-document { font-size:9pt; line-height:1.28; }
  body.printing-buying-plan .bp-home-headline { grid-template-columns:1fr 1.15fr 1fr; gap:12px; }
  body.printing-buying-plan .bp-meeting-pillars { grid-template-columns:repeat(3,minmax(0,1fr)); }
  body.printing-buying-plan .bp-meeting-document .bp-home-headline strong { font-size:17pt; }
  body.printing-buying-plan .bp-meeting-document .bp-home-headline { margin:8px 0; padding:9px; }
  body.printing-buying-plan #bp-print-page .bp-meeting-document h2 { font-size:11pt; }
  body.printing-buying-plan .bp-meeting-checkin { break-inside:avoid; }
  body.printing-buying-plan #bp-print-page .bp-meeting-document .bp-print-people { break-inside:auto; }
  body.printing-buying-plan .bp-meeting-document .bp-print-people-columns { gap:18px; }
  body.printing-buying-plan .bp-meeting-document .bp-print-note { font-size:8pt; }
}

.valuation-investment{border:1px solid var(--line);background:#f6f8fa;padding:10px 14px;margin:10px 0 18px}.finance-budget-equation{display:grid;gap:8px}.finance-budget-equation>div{display:flex;justify-content:space-between;gap:14px}.finance-budget-equation dd{font-weight:700;margin:0}.finance-budget-equation>div:last-child{border-top:1px solid var(--line);padding-top:8px}.equity-summary.dq-cards-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:750px){.equity-summary.dq-cards-4{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Keep saved research readable without widening the Pricing page. */
.rn-file-evidence { white-space: normal; min-width: 650px; }
.rn-file-evidence caption { text-align: left; font-weight: 700; padding: 10px 0; }
.rn-file-evidence small { display: block; color: var(--muted); }
.rn-file-evidence td { overflow-wrap: anywhere; }
.rn-file-evidence th, .rn-file-evidence td { display: table-cell; white-space: normal; }
@media (max-width: 700px) {
  .rn-file-evidence { min-width: 0; }
  .rn-file-evidence thead { display: none; }
  .rn-file-evidence tbody, .rn-file-evidence tr { display: block; }
  .rn-file-evidence tr { margin-bottom: 14px; border-bottom: 1px solid var(--line); }
  .rn-file-evidence th, .rn-file-evidence td { display: block; padding: 8px 10px; }
  .rn-file-evidence td:nth-child(3)::before { content: 'Figures used: '; font-weight: 700; }
  .rn-file-evidence td:nth-child(4)::before { content: 'How it is used: '; font-weight: 700; }
}

.contact-preferences { display:block; max-width:32rem; margin-top:.4rem; color:var(--muted); line-height:1.5; white-space:normal; }

.valuation-scenarios,.valuation-revision,.valuation-reconciliation{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--line)}
.valuation-support p,.valuation-meta{overflow-wrap:anywhere}.valuation-scenarios li{margin:5px 0}

.cashflow-month-assumptions{border:1px solid var(--line);border-radius:12px;padding:20px;margin:20px 0;background:var(--surface)}
.cashflow-rate-table small{display:block;font-size:12px;color:var(--muted);white-space:normal}.cashflow-rate-table input{min-width:100px;max-width:140px}.cashflow-rate-table td{white-space:normal}.cashflow-rate-table label{font-size:12px}.cashflow-rate-table td:last-child{min-width:160px}.cashflow-month-assumptions .header-actions{margin-top:16px}.valuation-assumptions{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.valuation-assumptions .property-finance-form-grid{margin-top:12px}
@media(max-width:700px){.cashflow-month-assumptions{padding:12px}.cashflow-rate-table{min-width:740px}.valuation-assumptions .property-finance-form-grid{grid-template-columns:1fr}}

.cashflow-driver-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.cashflow-driver-grid label{font-size:13px}.cashflow-assumption-details{margin-top:16px}.cashflow-assumption-details summary{cursor:pointer}.cashflow-assumption-details>.equity-filters{margin-top:16px}@media(max-width:900px){.cashflow-driver-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.cashflow-driver-grid{grid-template-columns:1fr}}

/* Dated actuals stay beside the editable cashflow and valuation assumptions. */
.cashflow-actuals{margin:12px 0 20px;padding:16px;background:#f6f8f5;border:1px solid var(--line);border-radius:10px}
.cashflow-evidence-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px 18px;flex-wrap:wrap;margin-bottom:10px}.cashflow-evidence-heading h4{font-size:15px;margin:0}.cashflow-evidence-heading p{font-size:12px;color:var(--muted);margin:0}
.cashflow-evidence-table{width:100%;font-size:13px;min-width:610px;table-layout:fixed}.cashflow-evidence-table th,.cashflow-evidence-table td{padding:9px 10px;text-align:right;vertical-align:top;white-space:normal}.cashflow-evidence-table th:first-child{text-align:left;width:22%}.cashflow-rate-actuals td:last-child,.cashflow-cost-comparison td:last-child{background:#edf2e9}.cashflow-evidence-table strong,.cashflow-evidence-table small{display:block}.cashflow-evidence-table strong{font-size:14px;font-variant-numeric:tabular-nums}.cashflow-evidence-table small{font-size:11px;font-weight:400;line-height:1.4;color:var(--muted);margin-top:2px}.cashflow-evidence-table caption{text-align:left;font-size:12px;color:var(--muted);padding:12px 0 6px}.cashflow-evidence-table .cashflow-evidence-gap{color:#8a3d16}
.cashflow-evidence-note{font-size:11px;line-height:1.5;color:var(--muted);margin:8px 0}.cashflow-evidence-cost-heading{font-size:12px;margin:14px 0 8px}.cashflow-evidence-costs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0}.cashflow-evidence-costs>div{border-left:2px solid #cbd7c3;padding-left:9px;min-width:0}.cashflow-evidence-costs dt{font-size:11px;color:var(--muted)}.cashflow-evidence-costs dd{margin:3px 0 0;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.cashflow-evidence-costs small{font-size:10px;font-weight:400;white-space:nowrap}.cashflow-cost-summary{margin-top:12px}.cashflow-cost-summary summary{font-size:12px;cursor:pointer}
@media(max-width:700px){.cashflow-actuals{padding:12px}.cashflow-evidence-costs{grid-template-columns:repeat(2,minmax(0,1fr))}.cashflow-evidence-heading{display:block}.cashflow-evidence-heading p{margin-top:4px}.cashflow-actuals .table-scroll{overflow:visible}.cashflow-actuals .cashflow-evidence-table{display:block;min-width:0}.cashflow-evidence-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.cashflow-evidence-table tbody{display:block}.cashflow-evidence-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line);padding:8px 0}.cashflow-evidence-table tr:last-child{border-bottom:0}#property-finance-cashflow-view .cashflow-actuals .cashflow-evidence-table th,#property-finance-cashflow-view .cashflow-actuals .cashflow-evidence-table td,.cashflow-actuals .cashflow-evidence-table th,.cashflow-actuals .cashflow-evidence-table td{display:block!important;width:auto;min-width:0;text-align:left;border:0;padding:5px 8px}.cashflow-evidence-table th:first-child{grid-column:1/-1}.cashflow-evidence-table td::before{content:attr(data-evidence-label);display:block;font-size:10px;color:var(--muted);margin-bottom:3px}.cashflow-evidence-table strong{font-size:14px}}
@media print{.cashflow-actuals{break-inside:avoid}.cashflow-evidence-table{min-width:0;font-size:11px}.cashflow-evidence-table th,.cashflow-evidence-table td{padding:5px}.cashflow-evidence-costs{gap:6px}}

/* Data-first private portal — October 11, 2026. */
.metric-help{font-size:13px;line-height:1.5;margin:12px 0;color:var(--ink-soft)}
.metric-help>summary{cursor:pointer;color:var(--blue);font-weight:600;padding:5px 0;width:fit-content;max-width:100%}
.metric-help>summary:focus-visible{outline:2px solid var(--blue);outline-offset:4px;border-radius:2px}
.metric-help[open]>summary{margin-bottom:8px}
.metric-help p{max-width:80ch;font-size:13px;line-height:1.5}
.metric-help.panel{padding:16px 24px}
.panel-head .metric-help{margin:4px 0 0}
.valuation-controls{padding:20px;margin-bottom:16px}
.valuation-controls>h2{margin:0 0 14px}
.valuation-controls .metric-help{margin-bottom:0}
.valuation-assumption-settings .valuation-assumptions{margin-top:0;padding-top:0;border-top:0}
.valuation-owner-shortcut{padding:0;background:none;margin:12px 0;gap:8px}
.valuation-owner-shortcut .button{font-size:13px}
#valuation-status:empty{display:none}
.cashflow-source-checks{margin:12px 0}
@media(max-width:600px){
 .metric-help.panel{padding:14px 16px}
 .valuation-controls{padding:16px}
 .valuation-owner-shortcut .button{width:auto;flex:1 1 140px}
 .cashflow-table th:first-child{min-width:150px;max-width:170px;white-space:normal}
 .cashflow-table th,.cashflow-table td{min-width:100px;padding:9px 7px}
}

.valuation-balance-detail,.valuation-return-history,.valuation-future-print,.valuation-support-detail,.equity-investment-history,.equity-source-notes{margin:14px 0;font-size:13px}
.valuation-balance-detail>summary,.valuation-return-history>summary,.valuation-future-print>summary,.valuation-support-detail>summary,.equity-investment-history>summary,.equity-source-notes>summary{cursor:pointer;font-weight:600;color:var(--blue);padding:6px 0}
.valuation-balance-detail>summary:focus-visible,.valuation-return-history>summary:focus-visible,.valuation-future-print>summary:focus-visible,.valuation-support-detail>summary:focus-visible,.equity-investment-history>summary:focus-visible,.equity-source-notes>summary:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.valuation-support:has(>.valuation-support-detail:not([open])){padding:10px 24px}
.valuation-support-detail{margin:0}
.valuation-decision-future{border-top:1px solid var(--line);padding-top:12px;margin-top:18px}
.valuation-main .valuation-decision-future h3{margin:0 0 8px}
.valuation-equity-breakdown{margin:8px 0 14px}
.valuation-decision-values{margin:12px 0}
.valuation-investor-decision>h3{border-top:1px solid var(--line);padding-top:18px}
.equity-investment-history .equity-summary{margin-top:12px}
@media(max-width:600px){
 .valuation-support:has(>.valuation-support-detail:not([open])){padding:10px 16px}
 .valuation-decision-values .valuation-owner-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px}
 .valuation-decision-values .valuation-owner-card strong{font-size:20px;margin:0;white-space:nowrap}
 .valuation-decision-values .valuation-owner-card span{font-size:12px}
}

.rn-impact-table{margin-top:14px}
.rn-impact-table tbody th{white-space:normal;text-transform:none;letter-spacing:0;font-size:12px}
.rn-impact-table td.num{white-space:normal}

/* Keep navigation and review controls from displacing the numbers. */
.property-finance-review{padding:12px 16px;gap:12px;margin-bottom:14px}
.property-finance-review .eyebrow{margin:0 0 3px;font-size:10px}
.property-finance-review h2{font-size:17px}
.property-finance-review p:not(.eyebrow){font-size:12px;margin-top:3px}
.property-finance-tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px}
.property-finance-tabs .button{min-width:0;flex:1;font-size:13px;padding:10px 12px}
#property-finance-updated{padding:0;border:0;background:none;border-radius:0;font-size:11px;font-weight:500;line-height:1.5}
@media(max-width:600px){
 .page-header{gap:8px;margin-bottom:16px}
 .page-header h1{font-size:30px}
 .property-finance-review{flex-direction:row;align-items:center;padding:10px 12px;gap:8px}
 .property-finance-review h2{font-size:15px}
 .property-finance-review .button{width:auto;font-size:12px;padding:10px;min-height:44px}
 .property-finance-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
 .property-finance-tabs .button{font-size:12px;padding:10px 5px;min-height:44px}
}

.rn-impact-table tbody th small{display:block;font-size:11px;font-weight:400;color:var(--ink-soft)}
/* Wide contact records scroll within their table, at every viewport size. */
#view-contacts .contact-panel{min-width:0;max-width:100%}
#view-contacts .contact-panel .table-wrap{width:100%;min-width:0;max-width:100%;contain:inline-size layout paint;overflow-x:auto;overscroll-behavior-inline:contain}
@media(max-width:600px){
 #property-finance-cashflow-content > .dq-cards{grid-template-columns:minmax(0,1fr)}
 #property-finance-cashflow-content > .panel-heading .equity-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}
 #property-finance-cashflow-content > .panel-heading .equity-filters label{min-width:0;width:100%}
 #property-finance-cashflow-content > .panel-heading .equity-filters input,
 #property-finance-cashflow-content > .panel-heading .equity-filters select{min-width:0;width:100%}
 #property-finance-cashflow-content > .panel-heading .equity-filters > button{grid-column:1/-1}
}

/* Dashboard: comparable turn classes and compact weekly website trends. */
#dashboard-maintenance #dashboard-turn-performance-cards { grid-template-columns: repeat(4,minmax(0,1fr)); }
#dashboard-turn-performance-cards .dashboard-turn-cost { grid-column:span 3; min-height: 240px; }
.turn-cost-values { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; width:100%; }
.turn-cost-category { display:grid; gap:6px; min-width:0; }
.turn-cost-label { color:var(--turn-color); font-size:12px; font-weight:750; }
.turn-cost-label::before { content:""; display:inline-block; width:8px; height:8px; margin-right:5px; border-radius:50%; background:var(--turn-color); }
.turn-cost-category strong { color:var(--turn-color); font-size:clamp(20px,2.2vw,27px); line-height:1.1; white-space:nowrap; font-variant-numeric:tabular-nums; }
.turn-cost-category small { font-size:10px; line-height:1.4; }
.turn-cost-plot { display:grid; grid-template-columns:auto minmax(0,1fr); gap:8px; width:100%; margin-top:14px; }
.turn-cost-scale { display:flex; flex-direction:column; justify-content:space-between; height:108px; color:var(--ink-soft); font-size:10px; text-align:right; font-variant-numeric:tabular-nums; }
.turn-cost-plot-main { display:block; min-width:0; }
.turn-cost-chart { display:block; width:100%; height:108px; overflow:visible; }
.turn-cost-chart path { vector-effect:non-scaling-stroke; }
.turn-cost-dates { display:flex; justify-content:space-between; margin-top:5px; color:var(--ink-soft); font-size:10px; }
#dashboard-maintenance .dq-value { overflow:visible; text-overflow:clip; overflow-wrap:normal; }
.trend-coverage { display:block; color:var(--ink-soft); font-size:10px; }
.website-spark { display:block; margin-top:12px; }
.website-spark svg { display:block; width:100%; height:36px; }
#analytics-alerts-rate { color:#7b62a3; }
.contact-created { white-space:nowrap; }
@media(max-width:1000px) {
  #dashboard-maintenance #dashboard-turn-performance-cards { grid-template-columns:1fr; }
  #dashboard-turn-performance-cards .dashboard-turn-cost { grid-column:auto; }
}
@media(max-width:700px) {
  .turn-cost-values { gap:9px; }
  .turn-cost-category strong { font-size:21px; }
  .turn-cost-label { min-height:2.6em; font-size:10px; }
}
@media(max-width:380px) {
  .turn-cost-values { grid-template-columns:1fr; }
  .turn-cost-category { grid-template-columns:minmax(0,1fr) auto; align-items:baseline; gap:3px 10px; }
  .turn-cost-label { min-height:0; }
  .turn-cost-category small { grid-column:2; }
}
/* October 12: the complete investor statement is visible without disclosures. */
.valuation-main .valuation-balance-detail{margin:0}
.valuation-main .valuation-balance-detail h3{margin:15px 0 5px}
.valuation-main .valuation-balance-detail .valuation-line{padding:5px 0}
.valuation-main .valuation-person{margin-top:18px;border-top:2px solid var(--line);padding-top:10px}
.valuation-main .valuation-decision-future{margin-top:16px;padding-top:10px;border-top:1px solid var(--line)}
.valuation-equations{max-width:850px;line-height:1.65}
.cashflow-outflow{color:#9c3634}.cashflow-inflow{color:#176347}
.cashflow-vacancy-table{min-width:650px}.cashflow-vacancy-table input{max-width:155px}
.cashflow-known-vacancy{color:#946119;font-weight:600;display:block;font-size:11px}

@media (max-width: 520px) { .maintenance-benchmark-pair { grid-template-columns: 1fr; } }

@media(max-width:600px) {
  /* Created is inserted before Email; retain Email in the compact contact list. */
  #view-contacts .contact-panel th:nth-child(4), #contact-rows td:nth-child(4) { display:table-cell; }
  #view-contacts .contact-panel th:nth-child(6), #contact-rows td:nth-child(6) { display:none; }
}

/* Cashflow decision metrics and two-axis property comparison. */
#property-finance-cashflow-content .cashflow-metric-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.cashflow-metric-card{min-width:0;padding:16px}
.cashflow-metric-card .dq-label{min-height:2.7em;line-height:1.35}
.cashflow-metric-card .dq-value{font-size:clamp(1.1rem,1.8vw,1.7rem);white-space:nowrap;letter-spacing:-.025em;overflow:visible}
.cashflow-card-period{display:block;font-size:.75rem;color:var(--ink-soft);margin-top:2px}
.cashflow-card-comparison{display:flex;flex-wrap:wrap;gap:4px 10px;justify-content:space-between;align-items:baseline;margin-top:14px;font-size:.78rem;line-height:1.5}
.cashflow-card-comparison strong{font-variant-numeric:tabular-nums;white-space:nowrap}
.cashflow-change{font-size:.72rem;font-weight:600}
.cashflow-change.is-better{color:#176347}.cashflow-change.is-worse{color:#9c3634}.cashflow-change.is-neutral{color:#65716b}
.cashflow-table-scroll{max-height:min(72vh,850px);overflow:auto;isolation:isolate;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--line);border-radius:8px}
.cashflow-table{border-collapse:separate;border-spacing:0}
.cashflow-table thead th{position:sticky;top:0;z-index:3;background:#f2f5f2;box-shadow:0 1px 0 var(--line);vertical-align:top}
.cashflow-table thead th:first-child{z-index:5;background:#f2f5f2}
.cashflow-table tbody th:first-child{z-index:2;background:#fff;box-shadow:1px 0 0 var(--line)}
.cashflow-table tbody tr.cashflow-total th:first-child{background:#f0f5f1}
.cashflow-table th,.cashflow-table td{white-space:nowrap;color:var(--ink)}
.cashflow-table thead th{white-space:normal;max-width:230px}
.cashflow-table .cashflow-trailing-row th,.cashflow-table .cashflow-trailing-row td{font-size:.76rem;font-weight:400;color:#65716b;padding-top:3px;padding-bottom:9px}
.cashflow-table .cashflow-trailing-row small{font-size:.7rem}
.cashflow-table .cashflow-return-row{font-weight:600}
.cashflow-table .cashflow-return-row:first-of-type th,.cashflow-table .cashflow-return-row:first-of-type td{border-top:2px solid var(--line)}
.cashflow-metric-method{margin:20px 0}
.cashflow-capital-table{min-width:1400px;font-variant-numeric:tabular-nums}
.cashflow-capital-table td{white-space:nowrap}
@media(max-width:1250px){#property-finance-cashflow-content .cashflow-metric-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cashflow-metric-card .dq-value{font-size:1.6rem}}
@media(max-width:560px){.cashflow-metric-card{padding:12px 10px}.cashflow-metric-card .dq-value{font-size:clamp(.94rem,4.3vw,1.35rem)}.cashflow-metric-card .dq-label{font-size:.75rem;min-height:3.8em}.cashflow-card-comparison{display:block;font-size:.7rem}.cashflow-change{display:block}.cashflow-table-scroll{max-height:68vh}.cashflow-table th:first-child{min-width:140px;max-width:150px;white-space:normal}}
@media(max-width:350px){#property-finance-cashflow-content .cashflow-metric-cards{grid-template-columns:minmax(0,1fr)}.cashflow-metric-card .dq-value{font-size:1.4rem}.cashflow-metric-card .dq-label{min-height:0}}
@media print{.cashflow-table-scroll{max-height:none;overflow:visible}.cashflow-table thead th,.cashflow-table th:first-child{position:static}.cashflow-change.is-better,.cashflow-change.is-worse{color:inherit}}

/* Investor projection: concise primary pages with explicit private attachment. */
.valuation-private-option{display:flex;align-items:center;gap:8px;font-size:.9rem;margin:8px 0 12px}
.valuation-private-option input{width:auto;margin:0;accent-color:var(--navy)}
.valuation-private-option.is-unavailable{color:var(--muted)}
.valuation-real-estate small{display:block;font-weight:400;font-size:.76rem;line-height:1.2;margin-top:3px;max-width:42ch}
.valuation-decision-future{margin-top:18px}
.valuation-projection .valuation-line span{min-width:0}
@media(max-width:700px){.valuation-projection .valuation-line{gap:12px}.valuation-projection .valuation-line strong{max-width:48%;white-space:normal;text-align:right}.valuation-real-estate small{font-size:.7rem}}
@media print{.valuation-decision-future,.valuation-private-option,.valuation-future-breakdown{display:none!important}.valuation-real-estate small{display:block;font-size:7pt;font-weight:normal;line-height:1.05}}

@media print{.valuation-main .valuation-investor-decision,.valuation-owner-explanation{display:none!important}}

/* Compact comparisons and in-place investor payout detail. */
.turn-cost-amount{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.turn-cost-amount .cashflow-change{font-size:.75rem}.turn-cost-prior{color:#66777e}.website-spark small{display:block;font-size:.65rem;color:#66777e}.valuation-projected-distributions>summary{cursor:pointer;list-style:none}.valuation-projected-distributions>summary .valuation-line>span:before{content:"▸ ";color:#61757d}.valuation-projected-distributions[open]>summary .valuation-line>span:before{content:"▾ "}.valuation-projected-detail{padding:.5rem .8rem;border-left:2px solid #d7e2e7}.valuation-projected-detail .valuation-gain-support{margin-top:.8rem}.valuation-period-context{margin:1rem 0}.valuation-period-context td{white-space:nowrap}.cashflow-default-evidence{margin-top:1rem}
@media print{.valuation-projected-detail,.valuation-period-context{display:none!important}.valuation-projected-distributions>summary .valuation-line>span:before{content:none}}


@media(min-width:701px){#view-maintenance .table-scroll:has(.maintenance-property-table){position:relative;width:100%;max-width:100%;overflow-x:auto;contain:inline-size layout paint}}

/* Current monthly-plan report; archived packet styles remain unchanged. */
.valuation-v8 .valuation-main{max-width:760px;margin:0 auto}
.valuation-v8 .valuation-line{gap:16px}.valuation-v8 .valuation-line span{min-width:0}
.valuation-v8 .valuation-line strong{font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
.valuation-v8 .valuation-support{margin-top:20px}.valuation-v8 .valuation-projected-detail{padding:12px;background:#f6f8fa}
.cashflow-plan-settings input{min-width:100px;width:100%;box-sizing:border-box}.cashflow-plan-settings th small{display:block;font-weight:normal}
.cashflow-plan-settings .property-finance-form-grid{margin:12px 0}
@media(max-width:600px){.valuation-v8 .valuation-line{font-size:13px;gap:10px}.valuation-v8 h2{font-size:22px}.valuation-v8 .valuation-line strong{max-width:46%}.cashflow-plan-settings table{min-width:680px}}
@media print{.valuation-v8 .valuation-support,.valuation-v8 .valuation-projected-detail{display:none!important}.valuation-v8 .valuation-main{break-after:auto;line-height:1.1}.valuation-v8 .valuation-main .valuation-line{font-size:8.5pt;padding:1pt 0}.valuation-v8 .valuation-main h3{font-size:10pt;margin:5pt 0 2pt}.valuation-v8 .valuation-footnote{font-size:7pt}}
.valuation-v8 .valuation-line strong{font-size:inherit;max-width:none;white-space:nowrap;flex:0 0 auto}

.cashflow-t12-reference{font-style:italic;background:#f3f5f6;color:#53606b;border-left:1px solid #d7dde1;border-right:1px solid #d7dde1}
.valuation-owner-page{margin-top:2rem;padding-top:1rem;border-top:2px solid #ccd4d9}

.cashflow-table .cashflow-t12-reference{font-size:.82em;font-weight:400;color:#64717a}.cashflow-table th.cashflow-t12-reference{font-size:.78em;font-weight:500}.cashflow-t12-reference small{display:block;font-size:.86em}
.valuation-v10 .valuation-line.valuation-deduction{padding-left:22px;color:#5a6871}.valuation-method-note{display:block;font-size:.72em;font-weight:400;color:#586a74;margin-top:2px}.valuation-period-comparison{font-size:.8rem;margin:12px 0}.valuation-period-comparison table{width:100%;table-layout:fixed}.valuation-period-comparison th,.valuation-period-comparison td{padding:5px;text-align:right}.valuation-period-comparison th:first-child{text-align:left}.valuation-period-comparison small{display:block;font-size:.82em}.valuation-payout-link{color:inherit;text-decoration:none}.valuation-payout-link::after{content:' ▸';font-size:.8em;color:#64717a}.valuation-distribution-support{margin:16px 0;padding:20px;background:white;border:1px solid var(--line);border-radius:8px}.valuation-distribution-support summary{cursor:pointer}.valuation-distribution-support .valuation-line{font-size:.9rem}.valuation-distribution-support details{margin-top:14px}@media(max-width:600px){.valuation-period-comparison{font-size:.68rem}.valuation-period-comparison th,.valuation-period-comparison td{padding:3px}.valuation-distribution-support{padding:16px}}@media print{.valuation-distribution-support{display:none!important}.valuation-payout-link::after{content:none}.valuation-v10 .valuation-line.valuation-deduction{padding-left:14pt}.valuation-method-note{font-size:7pt}.valuation-period-comparison{font-size:7pt;margin:5pt 0}.valuation-period-comparison table{font-size:7pt;margin:0}.valuation-period-comparison th,.valuation-period-comparison td{padding:2pt}}

.finance-workbook-fields>div{display:grid;grid-template-columns:minmax(140px,1fr) minmax(150px,1fr);gap:16px;padding:9px 0;border-bottom:1px solid #e5ebed}.finance-workbook-fields dt{font-weight:600}.finance-workbook-fields dd{margin:0;font-variant-numeric:tabular-nums}.finance-workbook-fields small{display:block;color:#5a6b73;font-size:.78rem;overflow-wrap:anywhere}.finance-visible-input{background:#fffdf2!important;border-color:#bda15c!important}.finance-critical-summary{padding:16px;background:#f0f5f7;border-radius:8px}.performance-report pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.78rem}.performance-report td{white-space:nowrap}

.performance-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;align-items:end}.performance-controls label{display:flex;flex-direction:column;gap:6px;min-width:0}.performance-controls select,.performance-controls button{width:100%;min-width:0;white-space:normal}.performance-table{border-collapse:collapse;width:100%;font-size:13px}.performance-table th,.performance-table td{padding:10px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid #e4ebee;font-variant-numeric:tabular-nums}.performance-table th:first-child{text-align:left;position:sticky;left:0;background:#f5f8fa}.performance-table thead th{font-size:11px;background:#f5f8fa}.performance-report{min-width:0;max-width:100%}

.valuation-support,.valuation-period-context{overflow-wrap:anywhere}

/* Keep every Performance column available despite the generic mobile table rule. */
.performance-report table th,.performance-report table td{display:table-cell}
.header-actions.performance-controls .button{white-space:normal;box-sizing:border-box}
@media(max-width:600px){.performance-controls .button{grid-column:1 / -1}.performance-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Daily Brief: compact independent actions, with evidence on demand. */
.brief-list{list-style:none;margin:0;padding:0}.brief-row{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.65rem;padding:1rem 0;border-top:1px solid var(--border,#ddd);border-left:3px solid transparent}.brief-row.is-critical{border-left-color:#b64c32;padding-left:.65rem}.brief-row.is-opportunity{border-left-color:#468264;padding-left:.65rem}.brief-rank{font-size:.85rem;color:#65746b;padding-top:.15rem}.brief-content h3{font-size:1rem;margin:.2rem 0}.brief-content p{margin:.25rem 0;font-size:.9rem}.brief-meta{display:flex;flex-wrap:wrap;gap:.3rem .8rem;color:#52655a;font-size:.75rem}.brief-meta>span:first-child{text-transform:capitalize;font-weight:700}.brief-source-problem{color:#984125}.brief-row .attention-actions{margin-top:.55rem}.brief-row .attention-details{margin-top:.7rem}.brief-row .attention-details li{margin:.4rem 0}#brief-route-copy{width:100%;font:inherit;resize:vertical}.brief-content{overflow-wrap:anywhere}@media(max-width:600px){.brief-row{grid-template-columns:1.25rem minmax(0,1fr);gap:.35rem;padding:.8rem 0}.brief-meta{gap:.2rem .6rem}.brief-row .attention-actions{gap:.35rem;flex-wrap:wrap}.brief-row button{min-height:44px}.brief-row.is-critical,.brief-row.is-opportunity{padding-left:.35rem}}
.brief-row button,#attention-action-dialog .ghost-button,#attention-action-dialog .primary-button{font:inherit;font-size:.82rem;line-height:1.3;padding:.45rem .65rem;border:1px solid var(--line);border-radius:6px;background:#f7faf9;color:var(--ink);cursor:pointer}.brief-row button:hover,#attention-action-dialog .ghost-button:hover{background:#eaf2ef}.brief-row .link-button{border-color:transparent;background:transparent;text-decoration:underline;text-underline-offset:3px}#attention-action-dialog .primary-button{background:var(--navy);color:white}#attention-action-dialog form{display:grid;gap:16px}#attention-action-dialog .method-note{display:block}#attention-action-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px}#attention-action-dialog .icon-button{flex-shrink:0}#attention-action-dialog button:focus-visible,.brief-row button:focus-visible{outline:3px solid #0074a8;outline-offset:2px}#attention-action-dialog #attention-moveout-fields:not([hidden]){display:grid;gap:12px}
.brief-related{display:block;color:var(--ink-soft);font-size:.75rem;margin-top:.4rem}
.brief-response-dialog{width:min(460px,94vw);max-height:90vh;margin:auto;padding:0;border-radius:10px;overflow-y:auto}
.brief-response-dialog .dialog-header,.brief-response-dialog .dialog-body{padding:18px 20px}
.brief-response-dialog .dialog-header h2{font-size:22px}

.pricing-access-bar{position:sticky;top:0;z-index:25;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;background:var(--paper,#fff);padding:.65rem 0;border-bottom:1px solid #d9e1dc}.pricing-access-bar span{margin-right:auto;font-size:.85rem}.pricing-feedback-dialog{max-width:650px;width:calc(100% - 2rem);max-height:85vh;overflow:auto;padding:1.5rem;border:1px solid #b7c9bc;border-radius:12px}.pricing-feedback-dialog textarea{width:100%;box-sizing:border-box}.pricing-feedback-dialog article{border-top:1px solid #ddd;padding:.5rem 0}
