*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  /* ── Brand Navy ── */
  --navy:        #172033;
  --navy-mid:    #1D2A42;
  --navy-light:  #233654;
  --navy-rule:   #E1E5EA;

  /* ── Navigation ── */
  --nav-bg:          #0D1626;
  --nav-border:      rgba(255,255,255,0.07);
  --nav-hover:       rgba(255,255,255,0.05);
  --nav-active:      rgba(255,255,255,0.1);
  --nav-text:        rgba(255,255,255,0.5);
  --nav-active-text: #FFFFFF;
  --nav-section:     rgba(255,255,255,0.28);

  /* ── Page surfaces ── */
  --bg:       #F4F5F7;
  --surface:  #FDFCFB;
  --surface2: #F6F6F8;
  --surface-muted: #F7F8FA;
  --border:   #D8DEE6;
  --border2:  #AEB8C6;
  --border-subtle: #EAECF0;
  --th-bg:    #F4F6F9;   /* unified table-header band (Actual/Budget reference) */

  /* ── Text ── */
  --text:   #172033;
  --text2:  #4E5A6B;
  --text3:  #7B8493;

  /* ── Severity palette ── */
  --red-bg:  #FBEAEA;  --red-tx:  #B4232A;  --red-ac:  #B4232A;
  --amb-bg:  #FFF3D6;  --amb-tx:  #9C6A1B;  --amb-ac:  #9C6A1B;
  --yel-bg:  #FFF8DC;  --yel-tx:  #8A6800;  --yel-ac:  #A07800;
  --grn-bg:  #E7F4ED;  --grn-tx:  #2F6F57;  --grn-ac:  #2F6F57;
  --gry-bg:  #F4F5F7;  --gry-tx:  #5B6472;  --gry-ac:  #7B8493;
  --blu-bg:  #E8F0F8;  --blu-tx:  #1A3F6A;  --blu-ac:  #2A5F9E;
  --gold:    #B58A3A;

  /* ── Geometry ── */
  --r-sm:   4px;
  --r-md:   6px;
  --r-lg:   8px;
  --r-card: 6px;
  --r-badge: 4px;
  --peek-w:540px;
  --am-ask-w:476px;
  --card-sh: 0 0 0 1px rgba(23,32,51,0.07),0 2px 8px rgba(23,32,51,0.06);

  /* ── Typography ── */
  --font-body:    'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: 'Cormorant Garamond', 'EB Garamond', Georgia, serif;
  --font-num:     'DM Sans', -apple-system, sans-serif;
}

body{
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--text);
  display:flex;
  height:100vh;
  overflow:hidden;
  font-size:13px;
  letter-spacing:-0.01em;
}

/* ══════════════════════════════════
   ICON RAIL
══════════════════════════════════ */
.icon-rail{
  width:48px;
  background:var(--nav-bg);
  display:flex;flex-direction:column;align-items:center;
  padding:12px 0;gap:3px;flex-shrink:0;
  border-right:1px solid var(--nav-border);
}
.icon-rail-top{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;}
.icon-btn{
  width:32px;height:32px;border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--nav-text);
  transition:background 0.12s,color 0.12s;
  background:transparent;border:none;
}
.icon-btn:hover{background:var(--nav-hover);color:rgba(255,255,255,0.75);}
.icon-btn.active{background:var(--nav-active);color:var(--nav-active-text);}

/* ══════════════════════════════════
   SIDEBAR
══════════════════════════════════ */
.sidebar{
  width:216px;background:var(--nav-bg);
  overflow-y:auto;flex-shrink:0;
  border-right:1px solid var(--nav-border);
  padding-top:0;display:flex;flex-direction:column;
}
.sidebar::-webkit-scrollbar{width:4px;}
/* Scrollbar stays hidden and only fades in while the sidebar is being scrolled. */
.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:2px;transition:background-color .25s;}
.sidebar.scrolling::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);}
.sidebar{scrollbar-width:none;scrollbar-color:transparent transparent;}
.sidebar.scrolling{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent;}
.sidebar-nav{flex:1;}

/* Brand header inside sidebar */
.sidebar-brand{
  padding:18px 16px 14px;
  border-bottom:1px solid var(--nav-border);
  margin-bottom:4px;
}
.sidebar-brand-name{
  font-family:var(--font-display);
  font-size:14px;font-weight:500;
  color:rgba(255,255,255,0.9);
  letter-spacing:0.01em;
}

.nav-section{
  padding:14px 16px 5px;
  font-size:11px;font-weight:600;
  color:var(--nav-section);
  letter-spacing:0.1em;text-transform:uppercase;
}
.nav-item{
  display:flex;align-items:center;gap:6px;
  padding:6px 16px;
  font-size:12px;color:var(--nav-text);
  cursor:default;
  transition:background 0.1s,color 0.1s;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  position:relative;
}
.nav-item:hover{background:var(--nav-hover);color:rgba(255,255,255,0.8);}

/* Collapsible sidebar groups (Portfolio Pulse → Monitoring, Rent Roll / Financial Statement → sub-pages) */
.nav-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:2px;}
/* chevron sits in the left gutter, before the label (labels stay aligned with items that have none) */
.nav-chev{
  position:absolute;left:2px;top:0;bottom:0;
  display:flex;align-items:center;justify-content:center;
  width:14px;flex-shrink:0;
  color:rgba(255,255,255,0.42);
  transition:color .1s;
}
.nav-chev:hover{color:rgba(255,255,255,0.95);}
.nav-chev svg{transition:transform .18s;}
.nav-chev.open svg{transform:rotate(90deg);}
.nav-item[data-navgroup]{display:none;}
.nav-item[data-navgroup].nav-open{display:flex;}

.nav-item.active{
  background:var(--nav-active);
  color:var(--nav-active-text);
  font-weight:500;
}
.nav-item.active::before{
  content:'';
  position:absolute;
  left:0;top:0;bottom:0;
  width:2px;
  background:#B58A3A;
}
.sidebar-footer{padding:12px;flex-shrink:0;}
.ask-btn{
  display:flex;align-items:center;justify-content:center;gap:7px;
  width:100%;padding:9px 12px;
  border-radius:var(--r-sm);border:1px solid rgba(181,138,58,0.45);
  cursor:pointer;font-size:12px;font-weight:500;
  color:#B58A3A;
  background:rgba(181,138,58,0.08);
  letter-spacing:0.01em;
  transition:background 0.12s,border-color 0.12s;
}
.ask-btn:hover{background:rgba(181,138,58,0.14);border-color:#B58A3A;}
.ask-btn svg{flex-shrink:0;opacity:0.8;}
.logout-btn{
  display:inline-flex;align-items:center;gap:5px;
  margin-top:10px;padding:0;
  border:none;background:none;
  text-align:left;
  cursor:pointer;font-size:11px;font-weight:500;
  color:var(--text3);
  letter-spacing:0.01em;
  transition:color 0.12s;
}
.logout-btn:hover{color:var(--text2);}
.logout-arr{flex-shrink:0;opacity:0.7;transition:transform 0.14s,opacity 0.12s;}
.logout-btn:hover .logout-arr{transform:translateX(3px);opacity:1;}

/* ══════════════════════════════════
   WORKSPACE / TOPBAR
══════════════════════════════════ */
.workspace{flex:1;display:flex;min-width:0;overflow:hidden;transition:margin-right .26s cubic-bezier(.32,.72,0,1);}
.main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;}

.topbar{
  background:var(--surface);
  border-bottom:none;
  border-top:3px solid var(--navy);
  padding:0 20px;height:45px;
  display:flex;align-items:center;justify-content:space-between;
  flex-shrink:0;
  box-shadow:0 2px 6px rgba(23,32,51,0.06),0 1px 0 rgba(23,32,51,0.04);
}
.main-scroll{flex:1;overflow-y:auto;min-width:0;scrollbar-gutter:stable;}
.topbar-title{
  font-family:var(--font-display);
  font-size:16px;font-weight:600;
  color:var(--text2);letter-spacing:-0.01em;
}
.topbar-sub{font-size:11px;color:var(--text3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px;}
.topbar-right{display:flex;align-items:center;gap:8px;}
.tb-date{
  font-size:11px;color:var(--text3);
  letter-spacing:0.02em;
  white-space:nowrap;flex-shrink:0;
}

.content{padding:20px 20px 56px;}
.section-label{
  font-size:11px;font-weight:700;color:var(--navy);
  letter-spacing:0.10em;text-transform:uppercase;
  margin-bottom:14px;
  padding-bottom:0;
  border-bottom:none;
}
/* Section titles in the Asset / Portfolio Management workspace use the larger title style */
#am-workspace .section-label{
  font-size:16px;letter-spacing:-0.01em;text-transform:none;
}
.section-label.gap{margin-top:52px;}

/* ══════════════════════════════════
   SUMMARY CARDS  (new design per wireframe)
   ── left colour bar + big number + name + pill ──
══════════════════════════════════ */
.summary-grid{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:8px;
  margin-bottom:44px;
  background:transparent;
}

.s-card{
  padding:8px 10px 7px;
  cursor:pointer;
  position:relative;
  background:var(--surface);
  border:none;
  border-radius:var(--r-card);
  border-top:2px solid transparent;
  transition:box-shadow 0.15s, transform 0.12s;
  box-shadow:
    0 0 0 1px rgba(23,32,51,0.07),
    0 2px 6px rgba(23,32,51,0.06),
    0 1px 2px rgba(23,32,51,0.04);
}
.s-card.risk {border-top-color:var(--red-ac);}
.s-card.watch{border-top-color:var(--amb-ac);}
.s-card.opp  {border-top-color:var(--grn-ac);}
.s-card::before{display:none;}
.s-card:hover{
  box-shadow:
    0 0 0 1px rgba(23,32,51,0.1),
    0 6px 18px rgba(23,32,51,0.1),
    0 2px 4px rgba(23,32,51,0.06);
  transform:translateY(-1px);
}

.s-card.active{transform:none;}
.s-card.active.risk  {background:#FBF0F0;box-shadow:0 0 0 1.5px var(--red-ac),0 2px 6px rgba(180,35,42,0.1);}
.s-card.active.watch {background:#FEF7E8;box-shadow:0 0 0 1.5px var(--amb-ac),0 2px 6px rgba(156,106,27,0.1);}
.s-card.active.opp   {background:#EAF5EF;box-shadow:0 0 0 1.5px var(--grn-ac),0 2px 6px rgba(47,111,87,0.1);}

/* pill — small uppercase label */
.sev-pill{
  display:inline-block;
  font-size:10px;font-weight:700;
  letter-spacing:0.07em;text-transform:uppercase;
  padding:1px 4px;
  border-radius:var(--r-badge);
  margin-bottom:2px;
  line-height:1.5;
}
.pill-risk  {background:var(--red-bg);color:var(--red-tx);}
.pill-watch {background:var(--amb-bg);color:var(--amb-tx);}
.pill-opp   {background:var(--grn-bg);color:var(--grn-tx);}

/* card name — larger, semibold */
.s-name{
  font-size:14px;font-weight:500;
  color:var(--text2);
  margin-bottom:4px;line-height:1.3;
}

/* big number */
.s-num{
  font-family:var(--font-num);
  font-size:18px;font-weight:700;line-height:1;
  letter-spacing:-0.02em;
  font-variant-numeric:tabular-nums;
  margin-bottom:3px;
  color:var(--text);
}
.s-card.risk  .s-num{color:var(--red-ac);}
.s-card.watch .s-num{color:var(--navy-light);}
.s-card.opp   .s-num{color:var(--text2);}

/* criteria desc */
.s-desc{font-size:11px;color:var(--text3);line-height:1.4;letter-spacing:0.01em;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}

/* no bottom accent bar needed (replaced by left border) */
.s-accent{display:none;}

/* ══════════════════════════════════
   CATEGORY DROPDOWNS
══════════════════════════════════ */
.cat-section{
  margin-bottom:8px;
  border:none;
  border-radius:var(--r-card);
  overflow:hidden;
  background:var(--surface);
  box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.05),0 1px 2px rgba(23,32,51,0.04);
}
.cat-hdr{
  display:flex;align-items:center;justify-content:space-between;
  padding:13px 16px;cursor:pointer;
  background:var(--surface);
  transition:background 0.1s;user-select:none;
  position:relative;
}
.cat-hdr::before{display:none;}
.cat-hdr:hover{background:var(--surface2);}
.cat-hdr-l{display:flex;align-items:center;gap:10px;min-width:0;}
.cat-title{font-size:14px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;}
.cat-sub{font-size:12px;color:var(--text3);margin-top:2px;}

.cat-body{
  border-top:1px solid rgba(0,0,0,0.06);
  display:none;padding:14px 16px;
  background:var(--bg);
}
.cat-body.open{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;}
/* Monitoring-by-Category standalone pages: metric blocks stacked one per row. */
.mon-grid{display:flex;flex-direction:column;gap:18px;}
.metric-block{
  background:var(--surface);
  border-radius:var(--r-card);
  box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 1px 4px rgba(23,32,51,0.05);
  padding:16px 18px 18px;
  transition:box-shadow .15s;
}
/* highlighted when opened from its Portfolio Summary card (color by metric type) */
.metric-block.active.risk {box-shadow:0 0 0 1.6px var(--red-ac),0 2px 10px rgba(180,35,42,0.12);}
.metric-block.active.watch{box-shadow:0 0 0 1.6px var(--amb-ac),0 2px 10px rgba(156,106,27,0.12);}
.metric-block.active.opp  {box-shadow:0 0 0 1.6px var(--grn-ac),0 2px 10px rgba(47,111,87,0.12);}
.metric-block .mb-hd{margin-bottom:14px;}
.mb-hd-top{display:flex;align-items:baseline;gap:8px;}
.mb-title{font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;}
.mb-crit{font-size:12px;color:var(--text3);margin-top:4px;line-height:1.4;}
/* asset list — unified as a table (scales when many assets are flagged) */
.mb-tbl-wrap{overflow-x:auto;}
.mb-tbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed;}
.mb-tbl th{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);text-align:left;padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;user-select:none;transition:color .1s;}
.mb-tbl th:hover{color:var(--text);}
.mb-tbl th.mb-th-key,.mb-tbl th.active{color:var(--navy);}   /* key-metric + active headers emphasized */
.mb-sort{margin-left:4px;font-size:9px;opacity:.32;}
.mb-tbl th:hover .mb-sort{opacity:.6;}
.mb-tbl th.active .mb-sort{opacity:.9;}
.mb-tbl td{padding:8px 10px;border-bottom:1px solid rgba(0,0,0,0.05);text-align:left;font-variant-numeric:tabular-nums;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mb-tbl td.mb-key{font-weight:600;}
.mb-tbl td.mb-asset{font-weight:600;color:var(--text);}
.mb-tbl tbody tr{cursor:pointer;transition:background .1s;}
.mb-tbl tbody tr:hover{background:var(--surface2);}
.mb-tbl tbody tr.sel{background:#EBF0F5;}
.mb-tbl tbody tr:last-child td{border-bottom:none;}
/* Print: always expand every "Monitoring by Category" dropdown, regardless of its on-screen open/closed state */
@media print {
  /* Keep multiple columns + avoid splitting: making cards inline-block (atomic boxes)
     means Chrome print, which ignores break-inside:avoid on grid items, still moves
     a whole card to the next page instead of splitting it.
     Only the full-width (grid-column:1/-1) leaders card stays block (it's already
     full-width and long enough to split). */
  #print-all-container .cat-body{ display:block !important; }
  #print-all-container .cat-body > .metric-card{ display:inline-block !important; vertical-align:top !important; width:48.5% !important; margin:0 1% 8px 0 !important; }
  #print-all-container .cat-body > .metric-card[style*="grid-column"]{ display:block !important; width:auto !important; margin-right:0 !important; }
  #print-all-container .chevron-wrap{ transform:rotate(90deg) !important; }
}

/* ══════════════════════════════════
   METRIC CARDS
══════════════════════════════════ */
.metric-card{
  background:var(--surface);
  border:none;
  border-radius:var(--r-card);
  overflow:hidden;
  transition:box-shadow 0.15s;
  display:flex;flex-direction:column;
  box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 1px 4px rgba(23,32,51,0.05);
}
.metric-card{position:relative;}
.metric-card.hl.risk  {box-shadow:0 0 0 1.5px var(--red-ac),0 2px 6px rgba(180,35,42,0.1);}
.metric-card.hl.watch {box-shadow:0 0 0 1.5px var(--amb-ac),0 2px 6px rgba(156,106,27,0.1);}
.metric-card.hl.opp   {box-shadow:0 0 0 1.5px var(--grn-ac),0 2px 6px rgba(47,111,87,0.1);}
.mc-hdr{
  padding:14px 14px 11px;
  border-bottom:1px solid rgba(0,0,0,0.06);
  background:var(--surface);
}
/* mc-hdr stays white — only a-row rows get hover bg */
.mc-hdr-top{display:flex;align-items:baseline;gap:4px;justify-content:flex-start;}
.mc-icon{display:none;}
.mc-title{font-size:16px;font-weight:700;color:var(--navy);flex:1;min-width:0;letter-spacing:-0.01em;}
.mc-badge{
  font-size:13px;font-weight:700;flex-shrink:0;
  padding:0;background:transparent;
  font-variant-numeric:tabular-nums;
  margin-left:0;
}
.db-risk  {color:var(--red-ac);}
.db-watch {color:var(--amb-ac);}
.db-opp   {color:var(--grn-ac);}

.mc-crit{font-size:12px;color:var(--text3);margin-top:5px;line-height:1.4;}

/* ══════════════════════════════════
   ASSET LIST
══════════════════════════════════ */
.asset-list{display:flex;flex-direction:column;}
.a-row{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;padding:11px 16px;cursor:pointer;
  transition:background 0.1s;
  border-bottom:1px solid #EDEEF2;
}
.a-row:last-child{border-bottom:none;}
.a-row:hover{background:var(--surface2);}
.a-row{position:relative;}
.a-row.sel{background:#EDF3F9;}
.a-row.sel::before{display:none;}
.a-row-l{min-width:0;display:flex;flex-direction:column;}
.a-name-line{display:flex;align-items:center;gap:6px;}
.a-name{font-weight:500;font-size:13px;color:var(--text);}
.a-sub{font-size:12px;color:var(--text3);margin-top:2px;}
.a-row-r{display:flex;flex-direction:column;gap:3px;align-items:flex-end;flex-shrink:0;}
.a-row-chevron{color:var(--border2);font-size:12px;margin-left:6px;flex-shrink:0;transition:color .1s;}
.a-row:hover .a-row-chevron{color:var(--text3);}
.mchip{
  display:inline-flex;align-items:center;gap:4px;
  font-size:11px;font-weight:600;padding:2px 7px;
  border-radius:var(--r-badge);
  white-space:nowrap;line-height:1.4;
}
.mc-r {background:var(--red-bg);color:var(--red-tx);}
.mc-w {background:var(--amb-bg);color:var(--amb-tx);}

.mc-g {background:var(--grn-bg);color:var(--grn-tx);}
.mc-gy{background:var(--gry-bg);color:var(--gry-tx);}
.val-r {color:var(--red-tx);font-weight:600;}
.val-w {color:var(--amb-tx);font-weight:600;}
.val-g {color:var(--grn-tx);font-weight:600;}
.val-gy{color:var(--gry-tx);font-weight:500;}

/* ══════════════════════════════════
   ALERTS
══════════════════════════════════ */
.alert-list{display:flex;flex-direction:column;gap:10px;}
.alert-card{
  background:var(--surface);
  border:none;
  border-radius:var(--r-card);
  overflow:hidden;
  position:relative;
  box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.05);
}
.alert-card::before{display:none;}

/* header row: badge (left) + date (right) */
.al-meta{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:13px 16px 12px;
}
.al-sev{
  font-size:11px;font-weight:700;padding:2px 7px;
  border-radius:var(--r-badge);letter-spacing:0.08em;text-transform:uppercase;
  flex-shrink:0;
}
.sv-critical   {background:var(--red-bg);color:var(--red-tx);}
.sv-opportunity{background:var(--grn-bg);color:var(--grn-tx);}

.al-date{font-size:11px;color:var(--text3);}

/* bold title */
.al-problem{
  font-size:16px;font-weight:700;color:var(--text);
  line-height:1.4;padding:0 16px 1px;
}

/* body text */
.al-body{
  font-size:12px;color:var(--text2);
  line-height:1.6;padding:0 16px 10px;
}

/* asset pill */
.al-asset-btn{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:500;color:var(--text);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-card);
  padding:5px 12px;cursor:pointer;
  margin:0 16px 12px;
  transition:background 0.12s,border-color 0.12s;
}
.al-asset-btn:hover{background:var(--surface2);border-color:var(--border2);}
.al-asset-btn.al-sel{
  background:var(--surface-muted);
  border-color:var(--border2);
  font-weight:600;
}
.al-asset-btn .arr{color:var(--text3);font-size:12px;margin-left:2px;}

/* recommended action box */
.al-action-box{
  background:var(--surface2);
  border-top:1px solid #EAECF0;
  padding:11px 16px 13px;
}
.al-action-lbl{
  font-size:12px;font-weight:700;color:var(--text);
  margin-bottom:4px;
}
.al-action-txt{
  font-size:12px;color:var(--text2);line-height:1.65;
}

/* ══════════════════════════════════
   PEEK PANEL
══════════════════════════════════ */
.peek{
  width:0;
  background:var(--surface);
  border-left:1px solid var(--border-subtle);
  box-shadow:-4px 0 20px rgba(23,32,51,0.10);
  overflow:hidden;display:flex;flex-direction:column;
  flex-shrink:0;
  transition:width 0.26s cubic-bezier(.32,.72,0,1);
}
.peek.open,.workspace.split .peek{width:var(--peek-w);}
@media(max-width:1200px){:root{--peek-w:460px;}}
@media(max-width:1000px){:root{--peek-w:320px;}}
@media(max-width:800px) {:root{--peek-w:260px;}}
.peek-inner{width:var(--peek-w);display:flex;flex-direction:column;height:100%;}
.peek-topbar{
  display:flex;align-items:center;gap:6px;
  padding:11px 14px;
  border-bottom:1px solid var(--border-subtle);flex-shrink:0;
  background:var(--surface);
}
.peek-close{
  width:26px;height:26px;border-radius:var(--r-sm);
  border:none;background:transparent;color:var(--text3);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background 0.12s,color 0.12s;flex-shrink:0;
}
.peek-close:hover{background:var(--bg);color:var(--text);}
.peek-crumb{
  font-size:11px;color:var(--text3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;
}
.peek-body{overflow-y:auto;flex:1;padding:16px 18px 40px;}
.peek-body.ask-mode{padding:0;overflow:hidden;display:flex;flex-direction:column;}
.peek-body::-webkit-scrollbar{width:3px;}
.peek-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}

.rt-r{background:var(--red-bg);color:var(--red-tx);}

.m-val{font-size:16px;font-weight:600;color:var(--text);margin-top:2px;}

.chart-legend{
  display:flex;align-items:center;justify-content:flex-end;gap:14px;
  margin-top:7px;font-size:11px;color:var(--text3);
}
.lg-item{display:flex;align-items:center;gap:4px;}

.lg-dash{width:10px;height:0;border-top:1px dashed var(--text3);display:inline-block;}

/* ══════════════════════════════════
   LEADERS TABLE
══════════════════════════════════ */
.lead-tbl{width:100%;border-collapse:collapse;}
.lead-tbl th{
  font-size:10.5px;font-weight:600;color:var(--text3);
  text-transform:uppercase;letter-spacing:0.06em;
  text-align:center;padding:6px 14px;
  background:var(--th-bg);border-bottom:1px solid var(--border);
}
.lead-tbl th:nth-child(1),.lead-tbl th:nth-child(2){text-align:left;}
.lead-tbl td{
  height:30px;padding:4px 11px;font-size:11px;
  border-bottom:1px solid var(--border-subtle);text-align:center;
  vertical-align:middle;
}
.lead-tbl td:nth-child(1),.lead-tbl td:nth-child(2){text-align:left;}
.lead-tbl tr:last-child td{border-bottom:none;}
.lead-tbl tbody tr{cursor:pointer;transition:background 0.1s;}
.lead-tbl tbody tr:hover{background:var(--surface2);}
.lead-tbl tbody tr.sel{background:#EBF0F5;}
.rank-n{color:var(--text3);font-size:11px;}

/* ══════════════════════════════════
   ASK INTELLIGENCE PANE
══════════════════════════════════ */
.ask-pane{display:flex;flex-direction:column;height:100%;overflow:hidden;}
.ask-pane-hdr{padding:16px 18px 10px;flex-shrink:0;}
.ask-pane-title{
  font-family:var(--font-body);
  font-size:14px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;margin-bottom:2px;
}
.ask-pane-sub{font-size:12px;color:var(--text2);}

.ask-msgs{
  flex:1;overflow-y:auto;padding:8px 18px;
  display:flex;flex-direction:column;gap:9px;
  min-height:0;
}
.ask-msgs::-webkit-scrollbar{width:3px;}
.ask-msgs::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
.ask-bubble-user{
  align-self:flex-start;max-width:88%;
  background:var(--surface2);
  border:0.5px solid var(--border);
  border-radius:var(--r-md);
  padding:9px 13px;font-size:12px;line-height:1.6;color:var(--text);
}
.ask-bubble-ai{
  align-self:flex-start;max-width:92%;
  font-size:12px;line-height:1.65;color:var(--text);padding:2px 0;
}
.ask-ai-icon{
  width:20px;height:20px;border-radius:var(--r-sm);
  background:var(--navy);
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;margin-bottom:5px;
}
.ask-thinking{
  display:flex;gap:4px;align-items:center;
  padding:7px 11px;
  background:var(--surface2);
  border-radius:var(--r-sm);border:0.5px solid var(--border);
  align-self:flex-start;
}
.ask-thinking span{
  width:5px;height:5px;border-radius:50%;
  background:var(--text3);
  animation:bounce 1.2s infinite;
}
.ask-thinking span:nth-child(2){animation-delay:0.2s;}
.ask-thinking span:nth-child(3){animation-delay:0.4s;}
@keyframes bounce{0%,60%,100%{transform:translateY(0);}30%{transform:translateY(-5px);}}
.ask-action-row{display:flex;flex-wrap:wrap;gap:5px;}
.ask-sugg-area{padding:0 18px 16px;flex-shrink:0;}
.ask-action-chip{
  font-size:11px;padding:4px 11px;
  border-radius:var(--r-card);
  border:1px solid var(--border);
  background:var(--surface);color:var(--text2);cursor:pointer;
  transition:background 0.1s,border-color 0.1s;
}
.ask-action-chip:hover{background:var(--surface2);border-color:var(--navy);color:var(--navy);}

.ask-footer{
  padding:10px 14px 14px;
  border-top:1px solid var(--border-subtle);
  background:var(--surface);flex-shrink:0;
}

.ask-input-wrap{
  display:flex;align-items:flex-end;gap:6px;
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:var(--r-sm);padding:5px 7px;
}
.ask-input{
  flex:1;border:none;background:transparent;
  font-size:12px;font-family:var(--font-body);
  color:var(--text);resize:none;outline:none;
  line-height:1.5;min-height:24px;max-height:100px;
}
.ask-input::placeholder{color:var(--text3);}
.ask-send{
  width:26px;height:26px;border-radius:var(--r-sm);
  border:none;background:var(--navy);color:#fff;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:background 0.12s;opacity:0.4;
}
.ask-send.active{opacity:1;}
.ask-send:hover{background:var(--navy-mid);}
.ask-empty{
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;flex:1;padding:24px 20px;text-align:center;
}
.ask-empty-icon{
  width:36px;height:36px;border-radius:var(--r-md);
  background:var(--navy);
  display:flex;align-items:center;justify-content:center;margin-bottom:12px;
}
.ask-empty-title{
  font-family:var(--font-body);
  font-size:13px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;margin-bottom:5px;
}
.ask-empty-sub{font-size:12px;color:var(--text2);line-height:1.7;}

/* TRANSITION */
.peek-body.fading {opacity:0;transition:opacity 0.12s ease;}
.peek-body.visible{opacity:1;transition:opacity 0.15s ease;}

/* ══════════════════════════════════
   DIVIDER utility
══════════════════════════════════ */
.rule{height:1px;background:var(--navy-rule);margin:2px 0;}

.pst{font-size:11px;color:var(--text2);}

/* ══════════════════════════════════
   ASSET DETAIL PAGE (full-page)
══════════════════════════════════ */
#detailPage{
  position:fixed;inset:0;
  background:var(--bg);
  z-index:200;
  display:none;
  flex-direction:column;
  overflow:hidden;
  transition:right 0.24s cubic-bezier(.32,.72,0,1);
}
body.peek-open #detailPage{right:var(--peek-w);}
#detailPage.open{display:flex;}

/* page-level topbar with breadcrumb */
.dp-topbar{
  height:42px;
  background:var(--surface);
  border-bottom:none;
  border-top:3px solid var(--navy);
  box-shadow:0 2px 8px rgba(23,32,51,0.08);
  display:flex;align-items:center;
  padding:0 20px;
  gap:0;
  flex-shrink:0;
  z-index:10;
  position:relative;
}
.dp-back{
  display:flex;align-items:center;gap:5px;
  font-size:12px;font-weight:500;color:var(--text3);
  cursor:pointer;padding:5px 10px 5px 0;
  border:none;background:transparent;
  transition:color 0.12s;flex-shrink:0;
  margin-right:6px;
}
.dp-back:hover{color:var(--navy);}
.dp-back svg{flex-shrink:0;}

.dp-breadcrumb{
  display:flex;align-items:center;gap:0;
  font-size:12px;min-width:0;flex:1;
}

.dp-bc-sep{color:var(--text3);margin:0 7px;flex-shrink:0;}
.dp-bc-asset{
  color:var(--navy);font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* ═══════════════════════════════════════════════════════════
   ASSET DETAIL PAGE
   ── lives inside the main layout (icon rail + sidebar visible)
   ── surface color: surface2 (#F5F6F8) to signal depth change
   ── color rules:
      text hierarchy: --text (primary) / --text2 (secondary) / --text3 (tertiary)
      semantic only:  pos=grn-tx · neg=red-tx · amb=amb-tx
      no blue/teal in content; navy = navy only for titles
      radius: var(--r-badge)=4px, var(--r-card)=8px — no rounded-pill
      chips: same .mchip grammar as portfolio page
══════════════════════════════════════════════════════════ */

/* ── Page shell: sits next to sidebar (z-index just above workspace) ── */
#detailPage{
  position:fixed;
  /* leave room for icon rail (48px) + sidebar (216px) */
  left:264px; top:0; right:0; bottom:0;
  background:var(--surface2);
  /* Above #am-workspace (z-index:100) so the asset detail page overlays a monitoring
     category page when opened from it — the AM workspace is later in the DOM, so an
     equal z-index would let it cover the detail page. */
  z-index:150;
  display:none;
  flex-direction:column;
  overflow:hidden;
  /* subtle left shadow signals depth */
  box-shadow:-4px 0 24px rgba(23,32,51,0.10);
}
#detailPage.open{display:flex;}

/* ── TOPBAR ── */
.dp-topbar{
  height:42px;background:var(--surface);
  border-top:3px solid var(--navy);
  border-bottom:1px solid var(--border-subtle);
  display:flex;align-items:center;padding:0 20px;flex-shrink:0;
  box-shadow:0 1px 4px rgba(23,32,51,0.05);z-index:10;
}
.dp-back{
  display:flex;align-items:center;
  width:32px;height:32px;border-radius:var(--r-sm);
  font-size:13px;font-weight:600;color:var(--text2);
  cursor:pointer;border:none;background:none;
  padding:0;margin-right:10px;justify-content:center;
  transition:background .12s,color .12s;flex-shrink:0;
}
.dp-back:hover{background:var(--surface2);color:var(--navy);}
.dp-breadcrumb{
  display:flex;align-items:center;font-size:11px;flex:1;
  min-width:0;color:var(--text3);letter-spacing:-0.01em;
}
.dp-bc-sep{margin:0 5px;color:var(--border);font-size:11px;}
.dp-bc-asset{color:var(--text2);font-weight:400;}
.dp-topbar-date,.dp-date{font-size:11px;color:var(--text3);flex-shrink:0;font-weight:400;letter-spacing:0.02em;}

/* ── PEER STRIP ── */
.dp-peer-strip{
  background:var(--surface);border-bottom:1px solid var(--border-subtle);
  padding:0 20px;min-height:52px;
  display:flex;align-items:center;gap:8px;flex-shrink:0;overflow-x:auto;flex-wrap:nowrap;
  scrollbar-width:none;-ms-overflow-style:none;
}
.dp-peer-strip::-webkit-scrollbar{display:none;}
.dp-peer-pill{
  display:flex;align-items:center;gap:6px;
  padding:5px 12px 5px 10px;border-radius:var(--r-badge);
  border:1px solid var(--border);background:transparent;
  cursor:pointer;font-size:11px;font-weight:500;color:var(--text2);
  transition:background .1s,border-color .1s;white-space:nowrap;flex-shrink:0;
  letter-spacing:-0.01em;
}
.dp-peer-pill:hover{background:var(--surface2);border-color:var(--border2);}
.dp-peer-pill.active{background:var(--navy);border-color:var(--navy);color:#fff;}
.dp-sev-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.dp-sev-dot.r{background:var(--red-ac);}
.dp-sev-dot.w{background:var(--amb-ac);}
.dp-sev-dot.g{background:var(--grn-ac);}
.dp-sev-dot.gy{background:var(--border2);}
.dp-peer-issue{font-size:11px;color:var(--text3);margin-left:1px;}
.dp-peer-pill.active .dp-peer-issue{color:rgba(255,255,255,.55);}

/* ── WORKSPACE ── */
.dp-workspace{flex:1;display:flex;overflow:hidden;}
.dp-left{display:none !important;width:0 !important;}

/* ── LEFT COLUMN ── */
.dp-left{
  width:320px;flex-shrink:0;background:var(--surface);
  border-right:1px solid var(--border-subtle);
  display:flex;flex-direction:column;overflow:hidden;
}

/* Asset header */
.dp-asset-hdr{
  padding:12px 20px 10px;
  border-bottom:1px solid var(--border-subtle);flex-shrink:0;
}
.dp-eyebrow{
  font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text3);margin-bottom:3px;
}
.dp-asset-name{
  font-family:var(--font-body);font-size:18px;font-weight:700;
  color:var(--navy);line-height:1.15;margin-bottom:5px;letter-spacing:-0.02em;
}
.dp-asset-meta{display:flex;flex-wrap:wrap;}
.dp-asset-meta span{
  font-size:11px;color:var(--text3);
  padding-right:8px;margin-right:8px;
  border-right:1px solid var(--border-subtle);line-height:1.9;
}
.dp-asset-meta span:last-child{border-right:none;}

.dp-risk-tags{display:flex;flex-wrap:wrap;gap:4px;}
/* use same .mchip grammar as portfolio page */
.dp-rtag{
  display:inline-flex;align-items:center;gap:3px;
  font-size:11px;font-weight:600;padding:2px 7px;
  border-radius:var(--r-badge);
  white-space:nowrap;letter-spacing:0.01em;
}
/* Background one shade darker than the shared --*-bg (dp-rtag only) */
.dp-rtag-r{background:#F5D7D7;color:var(--red-tx);}
.dp-rtag-w{background:#FCEABB;color:var(--amb-tx);}
.dp-rtag-g{background:#D7ECE0;color:var(--grn-tx);}
.dp-rtag-gy{background:#DCE1E9;color:var(--gry-tx);}
/* risk tags in peer strip — same size as peer pills */
.dp-peer-strip .dp-rtag{font-size:11px;padding:2px 7px;}

/* Section nav */
.dp-section-nav{flex:1;overflow-y:auto;padding:10px 0 16px;}
.dp-section-nav::-webkit-scrollbar{width:3px;}
.dp-section-nav::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}

/* Section blocks — light-mode active state with left border */
.dp-sn-block{
  cursor:pointer;
  border-left:2px solid transparent;
  transition:border-color .1s,background .1s;
}
.dp-sn-block:hover{background:var(--surface2);}
.dp-sn-block.active{
  border-left-color:var(--navy);
  background:var(--surface2);
}

/* ── RIGHT COLUMN ── */
.dp-right{flex:1;overflow-y:auto;min-width:0;background:var(--bg);scrollbar-gutter:stable;}
.dp-right::-webkit-scrollbar{width:5px;}
.dp-right::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
.dp-right-inner{padding:20px 20px 56px;}

/* Section header */
.dp-sec-hdr{
  display:flex;align-items:baseline;justify-content:space-between;
  margin-bottom:14px;padding-bottom:0;
}
.dp-sec-title{
  font-family:var(--font-body);font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;
}
.dp-sec-meta{font-size:11px;color:var(--text3);}

/* Evidence blocks — same shadow grammar as portfolio cards */
.dp-ev-block{
  background:var(--surface);border:none;
  border-radius:var(--r-card);
  box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.05);
  margin-bottom:12px;overflow:hidden;
}
.dp-ev-hdr{
  padding:14px 18px 12px;
  color:#172033;
}
.dp-ev-title{
  font-size:13px;font-weight:700;color:var(--navy);
  letter-spacing:-0.01em;
}
.dp-ev-body{padding:18px 18px;}

/* Tables — same style grammar as portfolio */
.dp-tbl{width:100%;border-collapse:collapse;}
.dp-tbl th{
  font-size:10.5px;font-weight:600;color:var(--text3);
  letter-spacing:.06em;text-transform:uppercase;
  padding:5px 10px;border-bottom:1px solid var(--border);text-align:center;
  background:var(--th-bg);
}
.dp-tbl th:first-child{text-align:left;}
.dp-tbl td{
  height:30px;padding:0 10px;border-bottom:1px solid var(--border-subtle);
  font-size:11px;color:var(--text2);text-align:center;letter-spacing:-0.01em;vertical-align:middle;
}
.dp-tbl td:first-child{text-align:left;color:var(--text);font-weight:500;}
.dp-tbl-kv td{text-align:right;}
.dp-tbl-kv td:first-child{text-align:left;}
.dp-tbl tbody tr:last-child td{border-bottom:none;}
.dp-tbl tbody tr:hover td{background:var(--surface2);}
.dp-tbl td.pos{color:var(--grn-tx);font-weight:600;}
.dp-tbl td.neg{color:var(--red-tx);font-weight:600;}
.dp-tbl td.amb{color:var(--amb-tx);font-weight:600;}
.dp-tbl td.cur{color:var(--text);font-weight:600;}  

:root{--bar-main:#3A4254;--bar-prior:#9AA6B6;}

/* DSCR chart tweaks for color consistency */
.dp-dscr-legend{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--text3);margin-top:6px;}
.dp-lg-swatch{width:16px;height:2px;border-radius:2px;display:inline-block;vertical-align:middle;margin-right:3px;}
.dp-lg-dash{width:16px;height:0;border-top:1.5px dashed var(--border2);display:inline-block;vertical-align:middle;margin-right:3px;}

/* Timeline */
.dp-tl-wrap{position:relative;height:80px;margin:28px 8px 8px;overflow:visible;}
.dp-tl-base{position:absolute;top:12px;left:4%;right:4%;height:2px;background:var(--border);border-radius:2px;}
.dp-tl-prog{position:absolute;top:12px;left:4%;height:2px;background:var(--navy-light);border-radius:2px;}
.dp-tl-dot{position:absolute;top:6px;width:12px;height:12px;border-radius:50%;border:2px solid var(--border);background:var(--surface);transform:translateX(-6px);}
.dp-tl-dot.done{background:var(--navy-light);border-color:var(--navy-light);}
.dp-tl-dot.flag{background:var(--red-ac);border-color:var(--red-ac);}
.dp-tl-label{position:absolute;top:26px;font-size:14px;font-weight:600;color:var(--text);transform:translateX(-50%);white-space:nowrap;}
.dp-tl-sub{position:absolute;top:44px;font-size:11px;color:var(--text3);transform:translateX(-50%);white-space:nowrap;}
.dp-tl-today-tick{position:absolute;top:4px;width:1.5px;height:16px;background:var(--navy-light);}

.dp-tl-today-label{position:absolute;top:-14px;font-size:11px;font-weight:700;color:var(--navy-light);transform:translateX(-50%);white-space:nowrap;}

/* Two-col grid */
.dp-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:0;}
/* Three-col grid */
.dp-three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px;}

/* Chips — same as mchip on portfolio page */
.dp-chip{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 7px;border-radius:var(--r-badge);white-space:nowrap;}
.dp-chip-g{background:var(--grn-bg);color:var(--grn-tx);}
.dp-chip-r{background:var(--red-bg);color:var(--red-tx);}

.dp-chip-gy{background:var(--gry-bg);color:var(--gry-tx);}

/* Income statement */
.dp-irow{display:flex;justify-content:space-between;align-items:baseline;padding:5px 0;border-bottom:1px solid var(--border-subtle);}
.dp-irow:last-child{border-bottom:none;}
.dp-irow.total{border-top:1px solid var(--border);font-weight:700;padding-top:7px;}
.dp-ilabel{font-size:12px;color:var(--text2);letter-spacing:-0.01em;}
.dp-ival{font-size:12px;font-weight:500;color:var(--text);font-variant-numeric:tabular-nums;}
.dp-irow.total .dp-ilabel{color:var(--text);}
.dp-irow.total .dp-ival{color:var(--grn-tx);font-size:13px;}

/* ── SNAPSHOT MODE ── */
#detailPage.snapshot-mode .dp-topbar {
  background:var(--surface) !important;
  border-top:3px solid var(--navy) !important;
  border-bottom:none !important;          /* match #am-topbar exactly (divider comes from box-shadow) so the Print icon aligns to the pixel */
  padding:0 20px !important;
  height:45px !important;
  box-shadow:0 2px 6px rgba(23,32,51,0.06),0 1px 0 rgba(23,32,51,0.04) !important;
}
#detailPage.snapshot-mode .dp-topbar .dp-back { display:none !important; }
#detailPage.snapshot-mode .dp-topbar .dp-breadcrumb { display:none !important; }
#detailPage.snapshot-mode .dp-topbar .dp-date { display:none !important; }
/* print btn always visible in topbar */
#detailPage.snapshot-mode .dp-peer-strip { display:none !important; }
#detailPage:not(.snapshot-mode) .snap-topbar-title { display:none !important; }

#detailPage.snapshot-mode .snap-topbar-title { display:flex !important; }

/* snapshot-mode layout same as regular detail — only topbar differs */
#detailPage.snapshot-mode .dp-right-inner { padding-left:20px; padding-right:20px; }

/* Portfolio Snapshot only: bump 11px table text up to 12px */
#detailPage.snapshot-mode .dp-tbl td,
#detailPage.snapshot-mode .lead-tbl td,
#detailPage.snapshot-mode .psdemo td,
#detailPage.snapshot-mode .unit-tbl tbody td { font-size:12px; }

/* Snapshot summary grid */
.snap-summary-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-bottom:20px;
}
.snap-sum-card {
  background:var(--surface);
  border:1px solid rgba(23,32,51,0.07);
  border-radius:var(--r-card);
  padding:12px 14px 14px;
  cursor:pointer;
  position:relative;   /* anchors the as-of date in the top-right corner */
  transition:box-shadow .12s, border-color .12s;
}
.snap-sum-card:hover { border-color:var(--border2); box-shadow:0 2px 8px rgba(23,32,51,.07); }
/* snap summary — same rules as dp-ev-title / dp-kpi-* */
.snap-sum-name {
  font-size:13px;font-weight:700;letter-spacing:-0.01em;
  color:var(--navy);margin-bottom:14px;
}
.snap-sum-kpis { display:flex;flex-direction:column;gap:5px; }
.snap-sum-asof { position:absolute;top:13px;right:14px;font-size:10.5px;color:var(--text3);opacity:.85;letter-spacing:0.02em;white-space:nowrap;cursor:help; }
.snap-sum-card .snap-sum-name { padding-right:96px; }   /* keep the title clear of the date */
.snap-sum-row { display:flex;justify-content:space-between;align-items:center;gap:6px; }
.snap-sum-label { font-size:11px;color:var(--text2);letter-spacing:-0.01em; }
.snap-sum-valwrap { display:inline-flex;align-items:center;gap:5px;flex-shrink:0; }
/* main value stays black; the delta (+12% etc.) is a colored tag */
.snap-sum-val { font-size:14px;font-weight:600;color:var(--text);letter-spacing:-0.01em;font-variant-numeric:tabular-nums; }
/* Plain colored text, not a tag (no badge background/padding) */
.snap-sum-chip { font-size:10px;font-weight:600;white-space:nowrap;color:var(--gry-tx); }
.snap-sum-chip.pos { color:var(--grn-tx); }
.snap-sum-chip.neg { color:var(--red-tx); }
.snap-sum-chip.amb { color:var(--amb-tx); }

/* Snapshot section block */
.snap-section {
  margin-bottom:40px;
  scroll-margin-top:16px;
}
.snap-section-title {
  font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;
  margin-bottom:18px;;display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.snap-section-asof { font-size:11px;font-weight:500;color:var(--text3);opacity:.85;letter-spacing:0.02em;white-space:nowrap;cursor:help; }

@media print {
  /* Hidden regions */
  .icon-rail,
  .sidebar,
  .dp-topbar,
  .dp-peer-strip,
  .dp-print-btn-wrap,
  #pa-overlay,
  .btn-print { display:none !important; }

  /* Scope printing to the currently active screen only */
  body[data-print-screen="am"]      #workspace,
  body[data-print-screen="am"]      #detailPage,
  body[data-print-screen="detail"]  #workspace,
  body[data-print-screen="detail"]  #am-workspace,
  body[data-print-screen="pulse"]   #am-workspace,
  body[data-print-screen="pulse"]   #detailPage,
  body[data-print-screen="printall"] #workspace,
  body[data-print-screen="printall"] #detailPage,
  body[data-print-screen="printall"] #am-workspace { display:none !important; }
  body[data-print-screen="printall"] #print-all-container { display:block !important; }
  #print-all-container .pa-page { page-break-after:always; break-after:page; }
  #print-all-container .pa-page:last-child { page-break-after:auto; break-after:auto; }
  /* The printed clone is throwaway, so expand EVERYTHING in it: no collapsed
     panels, no clipped/fixed-height boxes. Catches class-based clipping that
     inline-style flattening can't see (e.g. .ps-panel{max-height:0}). */
  #print-all-container .pa-page,
  #print-all-container .pa-page * {
    max-height:none !important;
    overflow:visible !important;
  }
  #print-all-container .pa-page svg,
  #print-all-container .pa-page img,
  #print-all-container .pa-page .dp-statbar,
  #print-all-container .pa-page .dp-chip {
    break-inside:avoid !important; page-break-inside:avoid !important;
  }

  /* Layout reset */
  html, body { overflow:visible !important; height:auto !important; width:100% !important; }
  #detailPage {
    position:static !important; display:block !important;
    height:auto !important; overflow:visible !important;
    background:white !important;
  }
  .dp-workspace { overflow:visible !important; height:auto !important; display:block !important; }
  .dp-right { overflow:visible !important; height:auto !important; display:block !important; width:100% !important; }
  .dp-right-inner { max-width:100% !important; padding:16px 24px !important; overflow:visible !important; }

  /* Prevent SVG / chart breakage */
  svg { max-width:100% !important; overflow:visible !important; }
  .dp-ev-block {
    page-break-inside:avoid !important; break-inside:avoid !important;
    overflow:visible !important;
    box-shadow:none !important;
    border:1px solid var(--border) !important;
  }
  .dp-two-col { page-break-inside:avoid !important; break-inside:avoid !important; }
  .snap-section { page-break-inside:avoid !important; break-inside:avoid !important; }
  .snap-summary-grid { page-break-inside:avoid !important; break-inside:avoid !important; }

  /* Preserve colors */
  * { -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; }

  /* Financial Statement · Cross Segment — the T-12 Performance R&E table is wider than the
     printable page, so tighten it on print: shrink to fit instead of clipping. */
  .fcs-recum-card { zoom:0.72; }
  .fcs-recum-card, .fcs-recum-card * { overflow:visible !important; }

  /* Aged Receivables & YoY Comparison tables — shrink text + padding on print so
     the columns pack denser and use the page space more efficiently. The printed
     clone strips all ids, so target the table classes inside #print-all-container. */
  #print-all-container .arot, #print-all-container .arot th, #print-all-container .arot td,
  #print-all-container .arot-d, #print-all-container .arot-dh, #print-all-container .arot-dc,
  #print-all-container .aryt, #print-all-container .aryt th, #print-all-container .aryt-c { font-size:8px !important; letter-spacing:0 !important; }
  #print-all-container .arot-tag { font-size:7.5px !important; padding:1px 4px !important; }
  #print-all-container .arot-c, #print-all-container .arot-dc,
  #print-all-container .aryt-c { height:auto !important; padding:2px 7px !important; }
  #print-all-container .arot-h, #print-all-container .arot-sub, #print-all-container .arot-dh,
  #print-all-container .aryt th { padding:3px 7px !important; }
  /* On paper a scroll box just clips, so let the (now shrunk) tables flow full width. */
  #print-all-container .arot-wrap { overflow:visible !important; }
  #print-all-container .arot { min-width:0 !important; }
  /* Expanded drill-downs print every tenant, not just the scroll viewport. */
  #print-all-container .arot-detail-scroll { max-height:none !important; overflow:visible !important; }
}

/* ── Cross-page nav link buttons (Cross Segment / YoY / Actual·Budget) ── */
.navlink-btn{font-size:11px;color:var(--text3);cursor:pointer;padding:4px 8px;border:none;border-radius:var(--r-sm);background:none;font-family:var(--font-body);font-weight:600;display:flex;align-items:center;gap:4px;transition:background .12s;}
.navlink-btn:hover{background:var(--surface2);}

/* ── Print All container + overlay ── */
#print-all-container{ display:none; background:#fff; }
#print-all-container .pa-page{ padding:0 24px 18px; }
#print-all-container .pa-title{ font-size:15px;font-weight:700;color:var(--navy);padding:14px 0 8px;margin-bottom:10px;border-bottom:2px solid var(--navy);letter-spacing:-0.01em; }

/* ── Portfolio Snapshot — paper-report print layout ──
   Only ever visible inside #print-all-container (i.e. while printing). The goal is a
   flat printed document, NOT the on-screen app: the boxed "cards" are stripped down to
   plain sections with rules, so it reads like a typeset report. Content is untouched. */
#print-all-container .snap-report{ padding-top:14px; color:var(--text); }

/* Masthead */
#print-all-container .snap-rep-head{ padding-bottom:9px; margin-bottom:13px; border-bottom:2px solid var(--navy); }
#print-all-container .snap-rep-eyebrow{ font-size:9px; font-weight:700; letter-spacing:.16em; color:var(--text3); text-transform:uppercase; margin-bottom:6px; }
#print-all-container .snap-rep-name{ font-family:var(--font-display); font-size:22px; font-weight:600; color:var(--navy); letter-spacing:-0.01em; line-height:1.05; margin-bottom:5px; }
#print-all-container .snap-rep-meta{ font-size:11px; color:var(--text2); margin-bottom:8px; }
#print-all-container .snap-rep-signals{ display:flex; flex-wrap:wrap; align-items:center; gap:4px; }
#print-all-container .snap-rep-siglbl{ font-size:9.5px; font-weight:700; color:var(--text3); text-transform:uppercase; letter-spacing:.07em; margin-right:5px; }

/* Big section headings (Leasing, Operating, …) */
#print-all-container .snap-report .snap-section{ margin-bottom:15px; }
#print-all-container .snap-report .snap-section:last-child{ margin-bottom:0 !important; }
#print-all-container .snap-report .snap-section-title{ font-family:var(--font-display); font-size:14px; font-weight:600; color:var(--navy); border-bottom:1.5px solid var(--navy); padding-bottom:4px; margin-bottom:9px; }
/* Keep each section whole on one page (don't split a section across a page break). */
#print-all-container .snap-report .snap-section{ break-inside:avoid !important; page-break-inside:avoid !important; }
#print-all-container .snap-report .snap-section-title{ break-after:avoid !important; page-break-after:avoid !important; }

/* Executive summary → one flat spec grid (deduped edges), not floating cards */
#print-all-container .snap-report .snap-summary-grid{ gap:0 !important; border:1px solid var(--border); margin-bottom:15px; }
#print-all-container .snap-report .snap-sum-card{ border:none !important; border-radius:0 !important; box-shadow:none !important; border-right:1px solid var(--border); border-bottom:1px solid var(--border); padding:8px 11px !important; }
#print-all-container .snap-report .snap-sum-card:nth-child(3n){ border-right:none; }
#print-all-container .snap-report .snap-sum-card:nth-last-child(-n+3){ border-bottom:none; }
#print-all-container .snap-report .snap-sum-name{ margin-bottom:6px !important; }
#print-all-container .snap-report .snap-sum-kpis{ gap:3px !important; }
#print-all-container .snap-report .snap-sum-row{ padding:0 !important; }

/* Flatten the app "cards": no panel background / border / shadow / rounding — just
   a sub-heading with a rule and its content flowing beneath. */
#print-all-container .snap-report .dp-ev-block{ background:none !important; border:none !important; box-shadow:none !important; border-radius:0 !important; overflow:visible !important; margin-bottom:14px !important; }
#print-all-container .snap-report .dp-ev-hdr{ padding:0 0 4px 0 !important; margin-bottom:9px !important; border-bottom:1px solid var(--border); }
#print-all-container .snap-report .dp-ev-title{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--text2); }
#print-all-container .snap-report .dp-ev-body{ padding:0 !important; }
#print-all-container .snap-report .dp-two-col,
#print-all-container .snap-report .dp-three-col{ gap:16px !important; }

/* Tables read as clean report tables: label left, figures right, no fills/hover */
#print-all-container .snap-report .dp-tbl th{ background:none !important; text-align:right; }
#print-all-container .snap-report .dp-tbl th:first-child{ text-align:left; }
#print-all-container .snap-report .dp-tbl td{ text-align:right; height:auto; padding:4px 8px; }
#print-all-container .snap-report .dp-tbl td:first-child{ text-align:left; }
/* Tighter type on paper (class-based sizes the JS inline-scaler can't reach) */
#print-all-container .snap-report .dp-ev-title{ font-size:9.5px; }
#print-all-container .snap-report .dp-tbl th{ font-size:9px; padding:3px 8px; }
#print-all-container .snap-report .dp-tbl td{ font-size:10px; padding:2.5px 8px; }
#print-all-container .snap-report .snap-sum-name{ font-size:11.5px; }
#print-all-container .snap-report .snap-sum-label{ font-size:10px; }
#print-all-container .snap-report .snap-sum-val{ font-size:12px; }
#print-all-container .snap-report .snap-sum-chip{ font-size:9px; }
@keyframes pa-spin{ to{ transform:rotate(360deg); } }
#detailPage:not(.snapshot-mode) .snap-only{ display:none !important; }

/* ── Shared print button ── */
.btn-print {
  display:flex;align-items:center;gap:4px;
  padding:3px 9px;
  border-radius:var(--r-sm);
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text2);
  font-size:10px;font-weight:500;
  cursor:pointer;
  flex-shrink:0;
  transition:background .1s,border-color .1s;
  font-family:var(--font-body);
  letter-spacing:-0.01em;
}
.btn-print:hover { background:var(--surface2); border-color:var(--border2); }
.btn-print svg { width:12px; height:12px; }

/* ── Asset Combo Box ── */
.asset-combo-wrap {
  position:relative;
  margin-bottom:20px;
}
.asset-combo-input-row {
  display:flex;align-items:center;gap:8px;
}
.asset-combo-input {
  flex:1;
  padding:8px 14px 8px 36px;
  border:1px solid var(--border);
  border-radius:var(--r-sm);
  background:var(--surface);
  font-size:13px;font-weight:500;
  color:var(--text);
  font-family:var(--font-body);
  outline:none;
  transition:border-color .12s;
  cursor:pointer;
}
.asset-combo-input:focus { border-color:var(--navy-light); cursor:text; }
/* On Rent Roll / Financial Statement / Loan Stats, match the combobox height to the filter-pill dropdown (30px) */
#page-rr .asset-combo-input,
#page-fs .asset-combo-input,
#page-lstat .asset-combo-input,
#page-ar-yoy .asset-combo-input { height:30px; padding-top:0; padding-bottom:0; }
.asset-combo-icon {
  position:absolute;left:10px;top:50%;transform:translateY(-50%);
  color:var(--text3);pointer-events:none;
}
.asset-combo-caret {
  position:absolute;right:10px;top:50%;transform:translateY(-50%);
  color:var(--text3);pointer-events:none;
  transition:transform .15s;
}
.asset-combo-wrap.open .asset-combo-caret { transform:translateY(-50%) rotate(180deg); }
.asset-combo-dropdown {
  display:none;
  position:absolute;top:calc(100% + 4px);left:0;right:0;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-sm);
  box-shadow:0 4px 16px rgba(23,32,51,0.12);
  z-index:400;
  max-height:280px;overflow-y:auto;
}
.asset-combo-wrap.open .asset-combo-dropdown { display:block; }
.asset-combo-dropdown::-webkit-scrollbar { width:4px; }
.asset-combo-dropdown::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
.asset-combo-group-label {
  font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text3);padding:10px 14px 4px;
}
.asset-combo-option {
  padding:8px 14px;
  cursor:pointer;
  display:flex;align-items:center;gap:10px;
  transition:background .08s;
}
.asset-combo-option:hover, .asset-combo-option.focused { background:var(--surface2); }
.asset-combo-option.selected { background:rgba(23,32,51,.05); }
.asset-combo-opt-name { font-size:13px;font-weight:500;color:var(--text);flex:1; }
.asset-combo-opt-region { font-size:11px;color:var(--text3); }
.asset-combo-opt-sev { width:7px;height:7px;border-radius:50%;flex-shrink:0; }
.asset-combo-no-results {
  padding:16px 14px;font-size:12px;color:var(--text3);text-align:center;
}

/* ═══════════════ ASSET MANAGEMENT ═══════════════ */
.page-content{padding:20px 20px 56px;display:none;position:relative;z-index:1;}
.page-content.active{display:block;}
.page-hdr{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:10px;gap:16px;flex-wrap:wrap;}

/* AM toggle (pill style) */
.tg{display:flex;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;gap:2px;height:30px;box-sizing:border-box;align-items:center;}
/* small "i" info badge with a hover tooltip (used inside the Total/Per Unit toggle) */
.fs-info{position:relative;display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border-radius:50%;border:1px solid var(--border2);color:var(--text3);font-size:8.5px;font-weight:700;font-style:normal;cursor:default;flex-shrink:0;margin-left:5px;vertical-align:middle;}
.fs-info-tip{position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;font-size:10.5px;font-weight:500;white-space:nowrap;padding:5px 9px;border-radius:5px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s;z-index:60;text-transform:none;letter-spacing:0;line-height:1.3;}
.fs-info-tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--navy);}
.fs-info:hover .fs-info-tip{opacity:1;visibility:visible;}
.tg-btn{padding:0 10px;height:24px;font-size:11px;font-weight:500;color:var(--text3);background:transparent;border:none;border-radius:3px;cursor:pointer;transition:background .12s,color .12s,box-shadow .12s;font-family:var(--font-body);white-space:nowrap;line-height:1;align-self:center;}
.tg-btn.on{background:var(--surface);color:var(--navy);font-weight:600;box-shadow:0 1px 3px rgba(23,32,51,0.12);}
.tg-btn:has(.fs-info){display:inline-flex;align-items:center;justify-content:center;}

.filter-select{height:30px;padding:0 32px 0 10px;min-width:90px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:11px;color:var(--text2);background:var(--surface);cursor:pointer;font-family:var(--font-body);outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237B8493' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;}
.filter-select:hover{background:var(--surface2);}
/* Labeled filter pill — inline "Label  Value ⌄" dropdown (label sits inside the border) */
.filter-pill{position:relative;z-index:10;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 8px 0 11px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);font-family:var(--font-body);cursor:pointer;}
.filter-pill > .fp-label{cursor:pointer;}
.filter-pill:hover{background:var(--surface2);}
/* Collapse the contextual-control mount when empty so it doesn't add a stray flex gap next to the scope pill */
#fs-ctx-mount:empty{display:none!important;}
.filter-pill > .fp-label{font-size:11px;font-weight:500;color:var(--text3);white-space:nowrap;}
.filter-pill > select{margin:0;padding:0 17px 0 0;border:none;background:transparent;outline:none;appearance:none;cursor:pointer;font-family:var(--font-body);font-size:11px;font-weight:600;color:var(--text);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237B8493' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right center;}

/* Custom period dropdown (label + "T-N (date – date)" value + caret pill) */
.pdrop{position:relative;}
.pdrop .pdrop-curwrap{display:inline-flex;align-items:baseline;gap:4px;}
.pdrop .pdrop-cur{font-size:11px;font-weight:600;color:var(--text);white-space:nowrap;}
.pdrop .pdrop-cur-sub{font-size:9.5px;color:var(--text3);white-space:nowrap;font-variant-numeric:tabular-nums;}
.pdrop .pdrop-caret{transition:transform .15s;flex-shrink:0;}
.pdrop.open{background:var(--surface2);z-index:401;}
.pdrop.open .pdrop-caret{transform:rotate(180deg);}
.pdrop-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;min-width:230px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 4px 16px rgba(23,32,51,0.14);z-index:420;max-height:300px;overflow-y:auto;padding:4px;cursor:default;}
.pdrop.open .pdrop-menu{display:block;}
.pdrop-menu::-webkit-scrollbar{width:4px;}
.pdrop-menu::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
.pdrop-opt{padding:6px 10px;border-radius:4px;cursor:pointer;transition:background .08s;white-space:nowrap;}
.pdrop-opt:hover{background:var(--surface2);}
.pdrop-opt.selected{background:rgba(23,32,51,.05);}
.pdrop-opt-lbl{font-size:12px;font-weight:600;color:var(--navy);}
.pdrop-opt-sub{font-size:9.5px;color:var(--text3);margin-left:6px;font-variant-numeric:tabular-nums;}

.sec-hdr{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;margin-top:40px;}
.sec-hdr:first-of-type{margin-top:0;}
.sec-title{font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;}

.sec-right{margin-left:auto;}

.badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--r-badge);text-transform:uppercase;letter-spacing:0.06em;}

.badge-g{background:var(--grn-bg);color:var(--grn-tx);}
.badge-gy{background:var(--gry-bg);color:var(--gry-tx);}

.sg{background:var(--surface);border:none;border-radius:var(--r-card);overflow:hidden;box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.06),0 1px 2px rgba(23,32,51,0.04);}
.sg-hdr{padding:14px 16px 10px;display:flex;align-items:center;justify-content:space-between;}
.sg-title{font-size:13px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;}

.sg-kpi{padding:14px 16px;}
.sg-kpi-lbl{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:0.07em;margin-bottom:5px;font-weight:600;}
.sg-kpi-val{font-size:19px;font-weight:700;color:var(--navy);line-height:1;margin-bottom:3px;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;}
.sg-kpi-d{font-size:11px;font-weight:500;}

.domain-row{display:flex;flex-direction:column;gap:16px;margin-bottom:36px;}
.domain-card{background:var(--surface);border:none;border-radius:var(--r-card);overflow:hidden;box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.06),0 1px 2px rgba(23,32,51,0.04);}
.domain-card-body{display:flex;min-height:200px;}
.domain-kpi-col{flex:0 0 220px;display:flex;flex-direction:column;border-right:1px solid var(--border-subtle);}
.domain-chart-body{flex:1;min-width:0;padding:16px 20px 14px;display:flex;flex-direction:column;}

.sig-lbl{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:5px;}
.sig-val{font-size:18px;font-weight:700;color:var(--navy);line-height:1;margin-bottom:3px;font-variant-numeric:tabular-nums;}
.sig-sub{font-size:11px;color:var(--text3);}
.sig-d{font-size:11px;font-weight:500;}

.chart-box{position:relative;width:100%;}

.tree-wrap{background:var(--surface);border:none;border-radius:var(--r-card);overflow:visible;margin-bottom:0;min-width:900px;}
.tree-fund{cursor:pointer;border-bottom:1px solid var(--border-subtle);transition:background .1s;user-select:none;}
.tree-fund:last-child{border-bottom:none;}
.tree-fund:hover{background:var(--surface2);}
.tree-fund.is-open{background:var(--surface2);}
.tree-fund-cell{padding:9px 10px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;text-align:center;}
.tree-fund-name{display:flex;align-items:center;gap:6px;}
.tree-chev{width:12px;height:12px;flex-shrink:0;color:var(--border2);transition:transform .16s;}
.tree-chev.open{transform:rotate(90deg);}
.tree-fund-lbl{font-weight:400;color:var(--navy);font-size:12.5px;transition:color .12s;}
.tree-fund-lbl:hover{color:var(--gold);text-decoration:underline;text-underline-offset:3px;}
.tree-chev-wrap{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;flex-shrink:0;transition:background .12s;}
.tree-chev-wrap:hover{background:var(--border-subtle);}
.tree-port-section{display:none;background:#F8FAFD;}
.tree-port-section.open{display:block;}
.tree-port{cursor:pointer;border-bottom:1px solid rgba(0,0,0,.04);background:#F8FAFD;transition:background .1s;user-select:none;}
.tree-port:last-child{border-bottom:none;}
.tree-port:hover{background:var(--surface-muted);}
.tree-port.is-open{background:var(--surface-muted);}
.tree-port-cell{padding:7px 10px;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:center;}
.tree-port-name{display:flex;align-items:center;gap:6px;padding-left:14px;}
.tree-port-lbl{font-weight:400;color:#172033;transition:color .12s;}
.tree-port-lbl:hover{color:var(--navy);text-decoration:underline;text-underline-offset:3px;}

.tree-unit-wrap{display:none;background:#F8FAFD;}
.tree-unit-wrap.open{display:block;}

.gl-drv-wrap{background:var(--surface);border:none;border-radius:var(--r-card);overflow:hidden;margin-bottom:36px;box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.06),0 1px 2px rgba(23,32,51,0.04);width:100%;}
.gl-drv-wrap table{width:100%;border-collapse:collapse;}
.gl-drv-wrap thead th{font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;padding:7px 14px;text-align:left;background:var(--th-bg);border-bottom:1px solid var(--border);white-space:nowrap;}
.gl-drv-wrap thead th.ra{text-align:center;}
.gl-dr{cursor:pointer;border-top:1px solid var(--border-subtle);transition:background .1s;user-select:none;}
.gl-dr:first-child{border-top:none;}
.gl-dr:hover{background:var(--surface2);}
.gl-dr.is-open{background:var(--surface2);}
.gl-dr td{height:38px;padding:0 14px;font-size:11px;vertical-align:middle;}

.stmt-acct-row{display:grid;cursor:pointer;border-bottom:1px solid var(--border-subtle);transition:background .1s;user-select:none;}
.stmt-acct-row:last-child{border-bottom:none;}
.stmt-acct-row:hover{background:var(--surface2);}
.stmt-acct-row.is-open{background:var(--surface2);}

.stmt-ac{padding:9px 12px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;}
.stmt-ac.ra{text-align:center;}
.vp{display:inline-block;font-size:11px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;}
.vp-r{color:var(--red-tx);}
.vp-a{color:var(--amb-tx);}
.vp-g{color:var(--grn-tx);}
.vp-n{color:var(--text3);}

.sc{width:12px;height:12px;flex-shrink:0;color:var(--border2);transition:transform .15s;display:inline-block;}
.sc.open{transform:rotate(90deg);}

/* Browser-managed row hover for the custom flex/grid tables (YoY, FS cross-segment).
   Resting bg stays inline; hover color is supplied per-row via --hl. Using CSS :hover
   instead of inline onmouseover/onmouseout means the highlight can never get "stuck"
   when a row is rebuilt under a stationary cursor (click-to-expand re-renders). */
.hl-row:hover{background:var(--hl,#F3F6FA) !important;}
.hl-chev:hover{background:var(--border-subtle) !important;color:var(--navy) !important;}

.mono{font-variant-numeric:tabular-nums;font-size:11.5px;}

.pos{color:var(--grn-tx);font-weight:600;}
.neg{color:var(--red-tx);font-weight:600;}
.warn{color:var(--amb-tx);font-weight:600;}
.fn{font-size:11px;color:var(--text3);padding:14px 0 0;border-top:1px solid var(--border-subtle);line-height:1.6;margin-top:8px;}

/* AM page wrapper */
#am-workspace{display:none;position:fixed;top:0;right:0;bottom:0;left:264px;z-index:100;background:var(--bg);flex-direction:column;transition:right .26s cubic-bezier(.32,.72,0,1);}
#am-workspace.open{display:flex;}
#am-body{display:flex;flex:1;min-height:0;overflow:hidden;}
#am-content{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;transition:flex .26s cubic-bezier(.32,.72,0,1);}
#am-ask-pane{position:fixed;top:0;right:0;bottom:0;z-index:200;width:0;flex-shrink:0;background:var(--surface);border-left:1px solid var(--border-subtle);box-shadow:-4px 0 20px rgba(23,32,51,.10);overflow:hidden;display:flex;flex-direction:column;transition:width .26s cubic-bezier(.32,.72,0,1);}
#am-ask-pane.open{width:var(--am-ask-w);}
@media(max-width:1200px){:root{--am-ask-w:420px;}}
@media(max-width:900px){:root{--am-ask-w:320px;}}
/* Ask panel open → shrink the content area by the panel width (instead of overlaying it) */
body.am-ask-open #am-workspace{right:var(--am-ask-w);}
body.am-ask-open .workspace{margin-right:var(--am-ask-w);}
.am-ask-topbar{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border-subtle);flex-shrink:0;background:var(--surface);}
.am-ask-title{font-size:13px;font-weight:600;color:var(--navy);flex:1;}
.am-ask-close{width:26px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--text3);}
.am-ask-close:hover{background:var(--bg);color:var(--text);}
/* kebab options menu */
.am-kebab-wrap{position:relative;display:inline-flex;}
.am-kebab-wrap.open .am-ask-close{background:var(--bg);color:var(--text);}
.am-kebab-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:158px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(23,32,51,.14);padding:5px;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .13s,transform .13s,visibility .13s;z-index:50;}
.am-kebab-wrap.open .am-kebab-menu{opacity:1;visibility:visible;transform:translateY(0);}
.am-kebab-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border:none;background:transparent;border-radius:7px;font-size:12.5px;font-weight:500;font-family:var(--font-body);color:var(--text);cursor:pointer;text-align:left;}
.am-kebab-item:hover{background:var(--surface2);}
.am-kebab-item svg{color:var(--text2);flex-shrink:0;}
.am-kebab-item.danger{color:#D14343;}
.am-kebab-item.danger svg{color:#D14343;}
.am-kebab-item.danger:hover{background:#FCEDED;}
.am-ask-body{flex:1;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;}
.am-ask-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;gap:8px;color:var(--text3);}
/* Ask Intelligence composer ── blue accent is local to this component */
.am-ask-input-row{--ask-blue:#2563EB;--ask-blue-bg:#EAF1FE;padding:12px;border-top:1px solid var(--border-subtle);flex-shrink:0;}
.am-composer{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:11px 12px 9px;box-shadow:0 1px 2px rgba(23,32,51,.04);transition:border-color .14s,box-shadow .14s;}
.am-composer:focus-within{border-color:var(--ask-blue);box-shadow:0 0 0 3px rgba(37,99,235,.10);}
/* context chip */
.am-composer-ctx{margin-bottom:9px;}
.am-ctx-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:5px 10px;border:1px solid var(--ask-blue-bg);background:var(--ask-blue-bg);color:var(--ask-blue);border-radius:5px;font-size:12px;font-weight:600;line-height:1;}
.am-ctx-chip svg{flex-shrink:0;}
.am-ctx-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* prompt */
.am-ask-input{display:block;width:100%;border:none;background:transparent;padding:0 2px;font-size:13.5px;line-height:1.5;font-family:var(--font-body);color:var(--text);outline:none;resize:none;max-height:160px;}
.am-ask-input::placeholder{color:var(--text3);}
/* attached files */
.am-composer-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;}
.am-composer-files:empty{display:none;}
.am-file-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px 5px 9px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;font-size:11.5px;font-weight:500;color:var(--text2);max-width:200px;}
.am-file-chip .fc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.am-file-chip .fc-x{display:flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:4px;cursor:pointer;color:var(--text3);flex-shrink:0;}
.am-file-chip .fc-x:hover{background:var(--bg);color:var(--text);}
/* toolbar */
.am-composer-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;}
.am-composer-tools{display:flex;align-items:center;gap:4px;}
.am-tool-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;border-radius:8px;color:var(--text2);cursor:pointer;transition:background .12s,color .12s;}
.am-tool-btn:hover{background:var(--surface2);color:var(--text);}
/* add (+) menu */
.am-add-wrap{position:relative;display:inline-flex;}
.am-add-wrap.open .am-tool-btn{background:var(--surface2);color:var(--text);}
.am-add-menu{position:absolute;bottom:calc(100% + 8px);left:0;min-width:158px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(23,32,51,.14);padding:5px;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .13s,transform .13s,visibility .13s;z-index:40;}
.am-add-wrap.open .am-add-menu{opacity:1;visibility:visible;transform:translateY(0);}
.am-add-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border:none;background:transparent;border-radius:7px;font-size:12.5px;font-weight:500;font-family:var(--font-body);color:var(--text);cursor:pointer;text-align:left;}
.am-add-menu-item:hover{background:var(--surface2);}
.am-add-menu-item svg{color:var(--text2);flex-shrink:0;}
/* web search toggle */
.am-websearch{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 6px 0 5px;border:1px solid transparent;background:transparent;border-radius:5px;font-size:10.5px;font-weight:600;font-family:var(--font-body);color:var(--text3);cursor:pointer;transition:background .12s,color .12s,border-color .12s;}
.am-websearch .ws-ico{width:12px;height:12px;}
.am-websearch:hover{background:var(--surface2);}
.am-websearch .ws-ico{flex-shrink:0;}
.am-websearch .ws-x{display:none;}
.am-websearch.active{color:var(--ask-blue);background:var(--ask-blue-bg);}
.am-websearch.active:hover{background:#DCE8FD;}
/* when active, hovering reveals the X so it can be removed */
.am-websearch.active:hover .ws-globe{display:none;}
.am-websearch.active:hover .ws-x{display:inline;}
/* send */
.am-ask-send{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--navy);color:#fff;border:none;border-radius:9px;cursor:pointer;font-family:var(--font-body);flex-shrink:0;transition:background .12s,color .12s;}
.am-ask-send:hover{background:var(--navy-light);}
.am-ask-send:disabled{background:var(--surface2);color:var(--border2);cursor:default;}
#am-topbar{background:var(--surface);border-top:3px solid var(--navy);padding:0 20px;height:45px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;box-shadow:0 2px 6px rgba(23,32,51,0.06),0 1px 0 rgba(23,32,51,0.04);}
#am-topbar-title{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text2);letter-spacing:-0.01em;}
#am-topbar-sub{font-size:11px;color:var(--text3);margin-top:1px;white-space:nowrap;}
#am-main-scroll{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;}
#am-main-scroll::-webkit-scrollbar{width:4px;}
#am-main-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
.page-hdr{position:relative;z-index:10;}

.filter-select{position:relative;z-index:10;}
.tg{position:relative;z-index:10;}

@media print {
  .icon-rail,.sidebar,#am-topbar{display:none !important;}
  body{display:block !important;height:auto !important;overflow:visible !important;}
  #am-workspace{position:static !important;display:flex !important;flex-direction:column !important;}
  /* #am-body / #am-content are flex boxes with overflow:hidden for the on-screen
     scroll layout. Direct-DOM prints (EagleRock / Loan Analytics "print all tabs")
     would otherwise be clipped at ~one viewport — un-clip them so all tabs flow. */
  #am-body, #am-content{overflow:visible !important;height:auto !important;min-height:0 !important;display:block !important;}
  #am-main-scroll{overflow:visible !important;height:auto !important;}
  .page-content{display:block !important;height:auto !important;}
  .page-content:not(.active){display:none !important;}
  .domain-row{break-inside:avoid;}
  .domain-card{break-inside:avoid;}
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}
}

/* ─── Print: shrink all text slightly (it looks too large on paper) ───────
   Exception: the Actual/Budget page (body.pa-landscape) prints as-is ───── */
@media print {
  body:not(.pa-landscape) #print-all-container .pa-page { zoom:0.9; }
  /* Leasing print has a lot of whitespace, so shrink it a bit more */
  body:not(.pa-landscape) #print-all-container .pa-page.pa-leasing { zoom:0.8; }
  /* Portfolio Snapshot report: NO zoom. Chrome's printToPDF renders CSS `zoom` correctly
     only on the first page and corrupts styling + pagination on later pages (boxes reappear,
     big trailing gaps / extra page). The report is instead sized naturally & compactly. */
  body:not(.pa-landscape) #print-all-container .pa-page.pa-snap { zoom:1; }
  /* Tighten inter-section gaps so print has no empty space (inline margin is overridden with !important) */
  #print-all-container .pa-page.pa-snap .snap-section        { margin-bottom:12px !important; }
  #print-all-container .pa-page.pa-snap .snap-section-title  { margin-bottom:8px !important; }
  #print-all-container .pa-page.pa-snap .snap-summary-grid   { margin-bottom:13px !important; }
  /* Financial Statement print: to fit the top 3 domain cards (Revenue/Expense/NOI,
     including charts) onto one page, shrink just that row further and protect it
     as a whole (so it doesn't split mid-row) */
  #print-all-container .pa-page.pa-fs .domain-row {
    zoom:0.8 !important;
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }
  /* Financial Statement: the KPI/R&E/GL transaction tables are CSS grids, not
     <table>, so they were splitting mid-row — protect each row (grid container)
     so splits only happen at row boundaries */
  #print-all-container #kpi-card > div,
  #print-all-container [id^="rerow-"],
  #print-all-container [id^="glprop-"] > div {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }
}

/* ─── Print: prevent table clipping + minimize whitespace at page breaks ──────────── */
@media print {
  /* 1) Prevent horizontal clipping — auto-shrink every table to the page width */
  table,
  .lead-tbl, .dp-tbl, .unit-tbl, .psdemo,
  .tbl-wrap table, .gl-drv-wrap table {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    table-layout:auto !important;
  }
  /* Cells: allow wrapping + shrink slightly (better a bit smaller than clipped) */
  th, td {
    white-space:normal !important;
    overflow-wrap:break-word !important;
  }
  /* CapEx headers use nowrap two-liners on screen; let them wrap on paper to fit */
  .cx-th2 { white-space:normal !important; }
  .dp-tbl th, .dp-tbl td,
  .tbl-wrap th, .tbl-wrap td,
  .unit-tbl th, .unit-tbl td,
  .gl-drv-wrap th, .gl-drv-wrap td,
  .lead-tbl th, .lead-tbl td,
  .psdemo th, .psdemo td {
    font-size:10px !important;
    padding:3px 6px !important;
  }
  

  /* Release horizontal clipping on containers */
  .tbl-wrap, .gl-drv-wrap, .dp-ev-body, .domain-card-body,
  [class*="scroll"] { overflow:visible !important; }

  /* 2) Allow long tables to break across pages to reduce trailing whitespace
        (row splits and header loss are still prevented below) */
  table { break-inside:auto !important; page-break-inside:auto !important; }
  thead { display:table-header-group !important; }
  tfoot { display:table-footer-group !important; }
  tr    { break-inside:avoid !important; page-break-inside:avoid !important; }

  /* Break pages on card boundaries: if a card would be cut off at the end of a
     page, push the whole card to the next page instead. (A card taller than one
     page is automatically split by the browser at row boundaries — tr splitting
     is prevented above.) */
  .dp-ev-block, .domain-card,
  .tbl-wrap, .gl-drv-wrap, .lb-card, .chart-wrap,
  .chart-card, .lstat-kpi-card, .s-card, .alert-card, .metric-card {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }
  /* The section row itself is not an atomic unit — let the cards inside it flow
     independently, so only the card that doesn't fit moves to the next page */
  .domain-row {
    break-inside:auto !important;
    page-break-inside:auto !important;
  }
  /* Cards built with inline styles instead of a class (common signature: r-card
     rounding) also get card-level protection — except horizontal-scroll wrappers
     (large tables), which are excluded so they can break naturally across pages */
  [style*="border-radius:var(--r-card)"]:not([style*="overflow-x:auto"]):not([style*="overflow:auto"]):not([style*="overflow-y:auto"]),
  [style*="border-radius: var(--r-card)"]:not([style*="overflow-x: auto"]):not([style*="overflow: auto"]):not([style*="overflow-y: auto"]),
  [style*="box-shadow:var(--card-sh)"]:not([style*="overflow-x:auto"]):not([style*="overflow:auto"]):not([style*="overflow-y:auto"]),
  [style*="box-shadow: var(--card-sh)"]:not([style*="overflow-x: auto"]):not([style*="overflow: auto"]):not([style*="overflow-y: auto"]) {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }
  /* Section containers that stack cards with flex (column) → switch to block on
     print. Chrome print ignores break-inside:avoid on flex items, which was
     cutting cards in half (e.g. the Rent Roll domain card). With block flow,
     card-level splitting works correctly (visually identical since it's a
     vertical stack anyway). */
  .domain-row { display:block !important; }
  .domain-row > .domain-card { margin-bottom:8px !important; }
  .alert-list { display:block !important; }
  .alert-list > * { margin-bottom:10px !important; }
  /* ── Keep multiple columns + prevent cards from splitting ──────────────────────────────────
     Make cards inline-block (atomic boxes). Chrome print ignores break-inside:avoid
     on grid/flex items, but an atomic box like inline-block is never split — if it
     doesn't fit, the whole thing moves to the next page → column count is also
     preserved. */
  /* Demographic: at print width it's effectively 1 column anyway (chart min-width
     480px), and keeping charts full-width looks better, so leave it as block —
     the card-avoid rule (now applied via the serialized attribute selector above)
     still prevents it from splitting */
  #demo-charts-grid { display:block !important; }
  #demo-charts-grid > * { margin-bottom:16px !important; }
  .lz-lag-grid { display:block !important; }
  .lz-lag-grid > * { display:inline-block !important; vertical-align:top !important; width:32% !important; margin:0 1% 14px 0 !important; }
  /* Title text moves together with the card/content directly below it (so the
     title alone doesn't end up stranded at the bottom of a page). Covers both
     class-based titles and inline-style titles (16px·bold = section/card titles,
     e.g. Leasing Trend, Demographic) */
  .sec-hdr, .sg-hdr, .sub-title, .lb-card-title, .tbl-titlebar, .dp-ev-hdr,
  .section-label, .chart-title, .cat-hdr, .fcs-subhead,
  [style*="font-size:16px;font-weight:700"] {
    break-after:avoid !important;
    page-break-after:avoid !important;
    break-inside:avoid !important;
  }
  /* Protect charts (SVG) and small widgets from being clipped */
  svg, .dp-statbar, .dp-chip {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }

  /* ── 3) Fit CSS-grid-based tables (not <table>) to the page width too ──
        e.g. Rent Roll (.tree-cols), GL transactions (TCOLS), Financial KPI (COL_GRID).
        These were clipped horizontally because of fixed minmax(px,…) widths + min-width. */
  @page { size: portrait; margin: 8mm 4mm; }

  /* (a) Expand all horizontal-scroll/clipping containers — overrides inline overflow too */
  #rr-tree-wrap, .tree-wrap, .gl-drv-wrap, #kpi-card, [id^="glprop-"],
  [style*="overflow-x:auto"], [style*="overflow-x: auto"],
  [style*="overflow:auto"],   [style*="overflow: auto"] {
    overflow:visible !important;
    min-width:0 !important;
  }
  [style*="min-width:max-content"], [style*="min-width: max-content"] {
    min-width:0 !important;
  }

  /* (b) Switch fixed-width grid templates to fr-based ones so they always fit
        the width (also targets the inline grid on header rows, which lack the
        .tree-cols class) */
  .tree-wrap [style*="grid-template-columns"] {
    grid-template-columns:1.6fr repeat(12, minmax(0,1fr)) !important;   /* 13 columns */
  }
  .gl-drv-wrap [style*="grid-template-columns"] {
    grid-template-columns:repeat(12, minmax(0,1fr)) !important;          /* TCOLS 12 columns */
  }
  #kpi-card [style*="grid-template-columns"] {
    grid-template-columns:1.6fr repeat(12, minmax(0,1fr)) repeat(2, minmax(0,1.1fr)) !important; /* COL_GRID 15 columns */
  }

  /* (c) Grid cells: make values that were hidden behind ellipsis (…) fully visible + shrink them */
  .tree-wrap   [style*="grid-template-columns"] > div,
  .gl-drv-wrap [style*="grid-template-columns"] > div,
  #kpi-card    [style*="grid-template-columns"] > div {
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
    word-break:break-word !important;
    min-width:0 !important;
    font-size:8.5px !important;
    padding:3px 4px !important;
  }
  /* Allow grid rows to break across pages too (minimize whitespace), but keep each row intact */
  .tree-wrap   [style*="grid-template-columns"],
  .gl-drv-wrap [style*="grid-template-columns"],
  #kpi-card    [style*="grid-template-columns"] {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }

  /* (d) the thin custom scrollbar proxies are useless on paper — hide them */
  #fsre-scroll-ctrl, #yoy-cur-scrollbar, #yoy-py-scrollbar, #fsab-scroll-kpi, #fsab-scroll-re {
    display:none !important;
  }
  /* Cross-Segment Monthly-by-Segment tables (.fcs-mo): wide month-column headers.
     Printed landscape for room, plus shrink + clip header cells so the month/segment
     labels can NEVER overflow into the neighbouring column (no text overlap). */
  .fcs-mo [style*="grid-row:1"], .fcs-mo [style*="grid-row:2"] {
    font-size:8px !important; padding:3px 1px !important; overflow:hidden !important;
  }
  /* fixed-height scroll viewports must reveal the whole table on paper */
  .cx-wrap, .lp-wrap, .pcy-wrap { max-height:none !important; overflow:visible !important; }
  /* Cards fitted via data-print-fullw (zoomed by _fitWideForPrint): un-clip the card
     and its inner overflow:hidden scroll panels so the full width shows once zoomed. */
  [data-print-fullw], [data-print-fullw] .yoy-cur-panel, [data-print-fullw] .yoy-py-panel,
  [data-print-fullw] .yoy-cur-hdr, [data-print-fullw] .yoy-py-hdr {
    overflow:visible !important;
  }
  /* (e) catch the remaining scroll-wrapper spacing/scroll variants so none clip.
        Wide CSS-grid blocks inside these are additionally scaled to fit at print
        time by _fitWideForPrint(); this just guarantees nothing is hidden. */
  [style*="overflow-x: auto"], [style*="overflow:scroll"], [style*="overflow-x:scroll"] {
    overflow:visible !important;
  }
}

/* Financial Statement · Actual/Budget — these statements are too wide for portrait,
   so when their Print button runs (body.pa-landscape) the page prints in landscape. */
@media print {
  @page paLandscape { size: landscape; margin: 8mm 6mm; }
  body.pa-landscape #print-all-container { page: paLandscape; }
}

/* ─── Global Scrollbar ─────────────────── */
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
::-webkit-scrollbar-thumb:hover{background:var(--border2);}
* {scrollbar-width:thin;scrollbar-color:var(--border) transparent;}

/* ═══════════════════════════════════════════════════════════════════
   PORTFOLIO MANAGEMENT MODULE
   (EagleRock Properties · Loan Summary · Loan Analytics ·
    CapEx Summary · Property Cash Yield)
   Content-specific styles. Shell classes (.page-content, .section-label,
   .filter-select, .chart-legend, .lg-item, sidebar/topbar/print) are
   intentionally reused from the existing stylesheet above.
═══════════════════════════════════════════════════════════════════ */

/* SEGMENTED TABS — underline tab style (matches Leasing #ltab-* tabs) */
.seg-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:22px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;}
.seg-tabs::-webkit-scrollbar{display:none;}
.seg-tab{flex-shrink:0;padding:8px 15px;border:none;background:none;color:var(--text3);font-family:var(--font-body);font-size:12px;font-weight:600;letter-spacing:-0.01em;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s;}
.seg-tab:hover{color:var(--navy);}
.seg-tab.active{color:var(--navy);border-bottom:2px solid var(--navy);}

/* TAB PANELS + placeholder */
.tab-panel{display:none;}
.tab-panel.active{display:block;}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:380px;border:1px dashed var(--border2);border-radius:var(--r-card);background:var(--surface);text-align:center;padding:40px;}
.empty-state svg{opacity:.45;color:var(--text3);}
.es-title{font-size:15px;font-weight:600;color:var(--text2);letter-spacing:-0.01em;}
.es-sub{font-size:12px;color:var(--text3);}

/* CASH-YIELD CONTROLS */
.ctrl-bar{display:flex;align-items:flex-end;gap:22px;margin-bottom:16px;flex-wrap:wrap;}
#page-cy .ctrl-bar{gap:6px;}
#page-cy .range-pill{margin-left:12px;}

.range-pill{display:flex;align-items:center;height:30px;padding:0 12px;border-radius:var(--r-sm);background:transparent;font-size:11.5px;color:var(--text3);font-variant-numeric:tabular-nums;}
.range-pill b{color:var(--navy);font-weight:600;margin:0 3px;}

/* CASH-YIELD SCROLL TABLES */
.pcy-wrap{background:var(--surface);border:none;border-radius:var(--r-card);box-shadow:var(--card-sh);overflow:auto;}
.pcy-wrap.kpi{height:336px;}
.pcy-wrap.ts{height:316px;}
.pcy-wrap::-webkit-scrollbar{width:9px;height:9px;}
.pcy-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;border:2px solid var(--surface);}
.pcy-wrap::-webkit-scrollbar-track{background:transparent;}
.pcy-table{width:100%;min-width:700px;border-collapse:separate;border-spacing:0;}
.pcy-table thead th{font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:0.06em;padding:10px 14px;text-align:center;white-space:nowrap;background:var(--th-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:3;}
.pcy-table thead th.txt-l{text-align:left;}
.pcy-table tbody td{height:36px;padding:0 14px;font-size:11px;color:var(--text2);white-space:nowrap;text-align:center;border-bottom:1px solid var(--border-subtle);font-variant-numeric:tabular-nums;vertical-align:middle;}
.pcy-table tbody td.txt-l{text-align:left;}
.pcy-table tbody td.col-pf,.pcy-table tbody td.col-fd{font-size:12px;}
.pcy-table tbody tr:hover td{background:var(--surface2);}
.pcy-table tbody tr.ruled td{border-bottom:1px solid var(--border-subtle);}
/* group separators drawn as inset shadow (no row-height change) so sorting/
   filtering never shifts row heights or doubles the line under the header */
.pcy-table tbody tr.ruled.grp-start td{box-shadow:inset 0 1px 0 var(--border);}
.pcy-table tbody tr.grp-start td{box-shadow:inset 0 1px 0 var(--border-subtle);}
.pcy-table tbody tr:first-child td{box-shadow:none !important;}
.col-pf{position:sticky;left:0;z-index:2;background:var(--surface);width:176px;min-width:176px;max-width:176px;text-align:left !important;font-weight:400;font-size:12px;color:var(--navy) !important;overflow:hidden;text-overflow:ellipsis;}
.col-fd{position:sticky;left:176px;z-index:2;background:var(--surface);width:84px;min-width:84px;max-width:84px;text-align:left !important;color:var(--text2) !important;border-right:1px solid var(--border2);font-weight:400;font-size:12px;}
thead th.col-pf,thead th.col-fd{z-index:4;background:var(--th-bg);}
.pcy-table tbody tr:hover .col-pf,.pcy-table tbody tr:hover .col-fd{background:var(--surface2);}
.col-asof{color:var(--navy) !important;font-weight:600;}
thead th.col-asof{color:var(--navy) !important;}
.delta{font-size:10px;margin-left:5px;font-weight:600;}
.delta.up{color:var(--grn-tx);} .delta.dn{color:var(--red-tx);} .delta.fl{color:var(--text3);}

/* LOAN BALANCE cards + charts */
.lb-card{background:var(--surface);border:none;border-radius:var(--r-card);box-shadow:var(--card-sh);padding:16px 20px 14px;margin-bottom:16px;}
.lb-card-title{font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;margin-bottom:12px;}
.lb-card-sub{font-size:12px;font-weight:500;color:var(--text3);letter-spacing:.01em;margin:-9px 0 12px;}
/* bar + donut pair: side-by-side while the CARD is wide enough, otherwise each chart
   drops to its own row. auto-fit keys off the card's real width (not the viewport), so
   it also stacks correctly when the sidebar / Ask panel narrow the content area. */
.lb-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:14px;align-items:center;}

.sub-title{font-size:11.5px;font-weight:600;color:var(--text2);margin-bottom:2px;text-align:center;}
#page-erp .sub-title,#page-la .sub-title{text-align:left;font-size:14px;margin-bottom:10px;}
.tr-donuts{display:grid;grid-template-columns:1fr 1fr;gap:20px 30px;margin-bottom:4px;}
@media(max-width:860px){.tr-donuts{grid-template-columns:1fr;}}
.mini-donut{display:flex;flex-direction:column;align-items:center;gap:3px;}
.md-label{font-size:11.5px;font-weight:600;color:var(--text2);}
.mini2{display:flex;flex-direction:column;align-items:center;gap:9px;}
.mini2-title{font-size:12.5px;font-weight:700;color:var(--navy);}
.mini2-body{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;}
.md-leg{display:flex;flex-direction:column;gap:6px;min-width:150px;}
.chart-svg{display:block;max-width:100%;}

.donut-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;}
.donut-chips{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:flex-end;width:100%;}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text2);}
.chip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.chart-tip{position:fixed;z-index:9999;pointer-events:none;background:#fff;color:var(--text);padding:9px 12px;border-radius:9px;border:1px solid var(--border);box-shadow:0 8px 24px rgba(23,32,51,.16);white-space:nowrap;opacity:0;transition:opacity .08s;}
.chart-tip.show{opacity:1;}
.tt-title{font-size:11px;color:var(--text3);font-weight:600;margin-bottom:6px;}
.tt-sub{font-size:10px;color:var(--text3);font-weight:500;margin-top:-3px;margin-bottom:7px;}
.tt-row{display:flex;align-items:center;gap:8px;}
.tt-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0;}
.tt-val{font-size:14px;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;}
.tt-rows{display:flex;flex-direction:column;gap:5px;}
.tt-r{display:flex;align-items:center;gap:7px;}
.tt-r .tt-dot{width:9px;height:9px;}
.tt-rn{font-size:11.5px;color:var(--text2);}
.tt-rv{font-size:11.5px;font-weight:700;color:var(--navy);margin-left:auto;padding-left:14px;font-variant-numeric:tabular-nums;}
svg [data-tt]{cursor:pointer;}
.bcol-bg{fill:#1F3A63;fill-opacity:0;pointer-events:all;transition:fill-opacity .12s;}
.bcol:hover .bcol-bg{fill-opacity:0.06;}
.donut-seg{transition:d .12s ease;}
.bcol text{pointer-events:none;}
.md-seg{transition:stroke-width .12s ease;}
.md-seg:hover{stroke-width:32px;}
/* ── Aged Receivables cards / bucket chips ── */
.ar-card{background:var(--surface);border-radius:var(--r-card);padding:16px 18px 12px;box-shadow:0 0 0 1px rgba(0,0,0,0.07),0 2px 6px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);display:flex;flex-direction:column;min-width:0;}
.ar-card-title{font-size:15px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;margin-bottom:10px;}
.ar-chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:2px;}
/* AR Over Time — aggregate table + drill-down (typography unified with .dp-tbl) */
.arot-wrap{border-radius:var(--r-card);box-shadow:0 0 0 1px rgba(0,0,0,0.07),0 2px 6px rgba(0,0,0,0.06);overflow-x:auto;overflow-y:hidden;background:var(--surface);}
.arot{width:100%;border-collapse:collapse;min-width:700px;}
/* headers — same as .dp-tbl th */
.arot-h,.arot-sub{background:var(--th-bg);font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;padding:6px 14px;border-bottom:1px solid var(--border);}
.arot-asof{text-align:left;}
.arot-grp{text-align:center;border-left:1px solid var(--border);border-bottom:1px solid var(--border-subtle);}
.arot-31{text-align:right;border-left:1px solid var(--border);}
.arot-sub{text-align:center;}
.arot-sub-first{border-left:1px solid var(--border);}
/* body — same as .dp-tbl td */
.arot-prow{cursor:pointer;}
.arot-prow:hover td{background:var(--surface2);}
.arot-c{height:34px;padding:0 14px;font-size:11px;color:var(--text2);letter-spacing:-0.01em;vertical-align:middle;border-bottom:1px solid var(--border-subtle);}
.arot-num{text-align:center;font-variant-numeric:tabular-nums;}
.arot-asof-inner{display:flex;align-items:center;gap:7px;color:var(--text);font-weight:500;}
.arot-c-first{border-left:1px solid var(--border);}
.arot-c-total{color:var(--text);font-weight:600;}
.arot-c-31{text-align:right;color:var(--text);font-weight:600;border-left:1px solid var(--border);}
.arot-chev{transition:transform .15s;color:var(--text3);flex-shrink:0;}
.arot-prow.open .arot-chev{transform:rotate(90deg);}
/* drill-down */
.arot-detail-cell{padding:0;background:#F4F6FA;border-bottom:1px solid var(--border);}
/* Fixed-height drill-down: scrolls (with a sticky header) once a date has many tenants. */
.arot-detail-scroll{overflow:auto;max-height:264px;}
.arot-d{width:100%;border-collapse:collapse;}
.arot-dh{position:sticky;top:0;z-index:1;background:var(--th-bg);font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;padding:6px 14px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;}
.arot-dh-num{text-align:center;}
.arot-dr td{border-bottom:1px solid var(--border-subtle);}
.arot-dr:hover td{background:var(--surface2);}
.arot-dc{height:30px;padding:0 14px;font-size:11px;color:var(--text2);letter-spacing:-0.01em;vertical-align:middle;white-space:nowrap;}
.arot-dc-name{color:var(--text);font-weight:500;}
.arot-dnum{text-align:center;font-variant-numeric:tabular-nums;}
.arot-dc-date{color:var(--text3);font-variant-numeric:tabular-nums;}
.arot-dtot{color:var(--text);font-weight:600;}
.arot-tag{font-size:10.5px;padding:2px 7px;border-radius:3px;background:var(--blu-bg);color:var(--blu-tx);font-weight:600;white-space:nowrap;}
.arot-zero{color:var(--border2);}
/* AR YoY comparison table (current | prior windows side by side) */
.aryt{width:100%;border-collapse:collapse;}
.aryt-bl{border-left:1px solid var(--border);}
.aryt-blx{border-left:1px solid var(--border2);}   /* darker window separators */
.aryt th{padding:6px 14px;font-size:10.5px;background:var(--th-bg);white-space:nowrap;}
.aryt-metric{font-weight:600;color:var(--text);letter-spacing:.02em;text-align:center;border-bottom:1px solid var(--border);}
.aryt-win{font-weight:600;color:var(--text);letter-spacing:.02em;text-align:center;border-bottom:1px solid var(--border-subtle);}
.aryt-grp{font-weight:700;color:var(--text);text-align:center;border-bottom:1px solid var(--border-subtle);}
.aryt-31{font-weight:600;color:var(--text3);text-align:right;border-bottom:1px solid var(--border);}
.aryt-sub{font-weight:600;color:var(--text3);letter-spacing:.04em;text-align:center;border-bottom:1px solid var(--border);}
.aryt-row:hover td{background:var(--surface2);}
.aryt-c{height:32px;padding:0 14px;font-size:11px;color:var(--text2);letter-spacing:-0.01em;vertical-align:middle;border-bottom:1px solid var(--border-subtle);white-space:nowrap;}
.aryt-num{text-align:center;font-variant-numeric:tabular-nums;}
.aryt-metric-c{text-align:center;color:var(--text);font-weight:500;}
.aryt-tot{color:var(--text);font-weight:600;}
.aryt-31c{text-align:right;color:var(--text);font-weight:600;}
.aryt-state{color:var(--text3);font-size:10px;font-weight:600;letter-spacing:.02em;}
.aryt-note{padding:9px 14px;border-top:1px solid var(--border);font-size:10.5px;line-height:1.45;color:var(--text3);white-space:normal;}

.dl-item{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--text2);}
.dl-sw{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.dl-name{white-space:nowrap;}
.dl-val{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--text3);padding-left:14px;}
/* chart legend swatch (new) + page-scoped legend layout (does not touch existing pages) */
.lg-sw{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
/* fixed (non-content-responsive) row heights for inline data tables */
.tblfix-32 tbody td{height:32px;vertical-align:middle;}
.tblfix-46 tbody td{height:46px;vertical-align:middle;}
#page-erp .chart-legend,#page-la .chart-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:flex-end;margin-top:8px;color:var(--text2);}
#page-erp .lg-item,#page-la .lg-item,#page-cx .lg-item{gap:6px;font-size:11px;color:var(--text2);}

/* ===== Loan Summary page ===== */
.ctrl-card{background:var(--surface);border:none;border-radius:var(--r-card);box-shadow:var(--card-sh);padding:18px 22px;display:grid;grid-template-columns:1fr 1fr;gap:26px 40px;margin-bottom:40px;}
@media(max-width:780px){.ctrl-card{grid-template-columns:1fr;gap:22px;}}
.slider-row{display:flex;flex-direction:column;gap:9px;}
.slider-head{display:flex;align-items:baseline;justify-content:space-between;}
.slider-label{font-size:16px;font-weight:600;color:var(--navy);letter-spacing:-0.01em;}
.slider-hint{font-size:12px;color:var(--text3);margin-left:6px;font-weight:400;letter-spacing:0;}
.slider-val{font-size:16px;font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-0.02em;}
input.slider-val{width:66px;text-align:right;padding:2px 8px;font-family:inherit;line-height:1.2;background:var(--surface);border:1px solid var(--border);border-radius:6px;cursor:text;transition:border-color .1s,box-shadow .1s;}
input.slider-val:hover{border-color:var(--text3);}
input.slider-val:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 2px rgba(22,48,107,0.12);}
.slider-track-row{display:flex;align-items:center;gap:12px;margin-top:4px;}
.range{-webkit-appearance:none;appearance:none;flex:1;height:4px;border-radius:3px;background:var(--border);outline:none;cursor:pointer;}
.range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--navy);border:2px solid var(--surface);box-shadow:0 1px 4px rgba(23,32,51,0.25);cursor:pointer;transition:transform .08s;}
.range::-webkit-slider-thumb:hover{transform:scale(1.12);}
.range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--navy);border:2px solid var(--surface);box-shadow:0 1px 4px rgba(23,32,51,0.25);cursor:pointer;}
.range-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--text3);font-variant-numeric:tabular-nums;margin-top:5px;}
.loan-calc-meta{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:13px;border-top:1px solid var(--border-subtle);}
.loan-calc-guide{font-size:11.5px;color:var(--text3);line-height:1.45;}
.loan-calc-guide strong{color:var(--navy);font-weight:600;}
.loan-calc-status{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;min-height:18px;font-size:11.5px;font-weight:600;text-align:right;color:var(--text2);font-variant-numeric:tabular-nums;}
.loan-calc-status::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto;}
.loan-calc-status[data-state="loading"]{color:var(--gold);}
.loan-calc-status[data-state="success"]{color:var(--grn-tx);}
.loan-calc-status[data-state="error"]{color:var(--red-tx);}
@media(max-width:780px){.loan-calc-meta{align-items:flex-start;flex-direction:column;gap:8px;}.loan-calc-status{justify-content:flex-start;text-align:left;}}
.lp-titlebar{display:flex;align-items:baseline;gap:10px;margin-bottom:12px;}
.lp-title{font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;}

.lp-wrap{background:var(--surface);border:none;border-radius:var(--r-card);overflow:auto;max-height:560px;box-shadow:var(--card-sh);}
.lp-wrap::-webkit-scrollbar{height:8px;}
.lp-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}
.lp-wrap::-webkit-scrollbar-track{background:var(--surface2);}
.lp-table{width:100%;min-width:1240px;border-collapse:separate;border-spacing:0;}
.lp-table thead th{font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:0.06em;padding:9px 12px;text-align:center;white-space:nowrap;background:var(--th-bg);border-bottom:1px solid var(--border-subtle);position:sticky;top:0;z-index:3;}
.lp-table thead th[data-loan-output]{color:var(--navy);box-shadow:inset 0 -2px 0 var(--gold);}
.lp-table thead th.txt-l{text-align:left;}
.lp-table tbody td{height:34px;padding:0 12px;font-size:11px;color:var(--text2);white-space:nowrap;text-align:center;border-bottom:1px solid var(--border-subtle);font-variant-numeric:tabular-nums;vertical-align:middle;}
.lp-table tbody td.txt-l{text-align:left;}
.lp-table tbody td.num-exact{font-size:11px;letter-spacing:-0.01em;}
.lp-table tbody tr:hover{background:var(--surface2);}
.lp-table tbody tr:hover .col-prop{background:var(--surface2);}
.col-prop{position:sticky;left:0;z-index:2;background:var(--surface);text-align:left !important;border-right:1px solid var(--border2);min-width:172px;max-width:172px;font-weight:400;color:var(--navy) !important;overflow:hidden;text-overflow:ellipsis;}
.lp-table tbody td.col-prop{font-size:12px;}
thead th.col-prop{z-index:4;color:var(--text3) !important;}

.lp-table tbody tr.tr-total td{color:var(--navy);font-weight:600;background:var(--surface-muted);border-top:1px solid var(--border-subtle);border-bottom:none;}
.lp-table tbody tr.tr-total td.col-prop{background:var(--surface-muted);color:var(--navy) !important;}
/* LTV Screening: divider after the Fund column to group it with the Property identifier */
#laLtvTable thead th:nth-child(2),#laLtvTable tbody td:nth-child(2){border-right:1px solid var(--border2);}
.pos{color:var(--grn-tx) !important;}
.neg{color:var(--red-tx) !important;}
.muted{color:var(--text3) !important;}
.dscr-pill{display:inline-block;padding:2px 7px;border-radius:var(--r-badge);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;}
.dscr-ok{background:var(--grn-bg);color:var(--grn-tx);}
.dscr-warn{background:var(--amb-bg);color:var(--amb-tx);}
.dscr-bad{background:var(--red-bg);color:var(--red-tx);}

/* ── Loan Stats: scrollable timeline charts ──
   The chart widens with the maturity range so month labels never overlap;
   when it exceeds the card (or on narrow screens) a horizontal scrollbar appears. */
/* Timeline & DSCR — row hover highlight (shows which asset is selected) */
.tl-row,.dscr-row{cursor:pointer;}
.tl-row .tl-hit,.dscr-row .tl-hit{fill:transparent;transition:fill .12s;}
.tl-row:hover .tl-hit,.dscr-row:hover .tl-hit{fill:rgba(18,33,113,0.06);}
.tl-row .tl-dot{transition:r .12s;}
.tl-row:hover .tl-dot{r:8;stroke:#fff;stroke-width:1.5;}
.tl-row .tl-name,.dscr-row .tl-name{transition:fill .12s;}
.tl-row:hover .tl-name,.dscr-row:hover .tl-name{fill:var(--navy);font-weight:700;}
.tl-row:hover .tl-line{stroke:#AEB8C6;}
.tl-row:hover .tl-val tspan{fill:var(--navy);}
.dscr-row .dscr-bar{transition:opacity .12s;}
.dscr-row:hover .dscr-bar{opacity:0.82;}
.dscr-row:hover .tl-val{fill:var(--navy);font-weight:600;}
.tl-ctrl{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.tl-ctrl .range{max-width:240px;}
/* Window selector chips (12 / 36 / 36+) — single-select: solid navy fill when active */
.tl-chips{display:inline-flex;gap:6px;}
.tl-chip{height:30px;display:inline-flex;align-items:center;justify-content:center;width:60px;padding:0;box-sizing:border-box;font-size:11px;font-weight:600;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text3);cursor:pointer;font-family:var(--font-body);transition:background .12s,color .12s,border-color .12s;}
.tl-chip:hover{border-color:var(--border2);color:var(--text2);}
.tl-chip.on{border-color:var(--navy);background:var(--navy);color:#fff;}
.tl-chip.on:hover{border-color:var(--navy);color:#fff;}
.tl-winval{width:64px;height:30px;border:1px solid var(--border);border-radius:var(--r-sm);padding:0 8px;font-size:12px;font-weight:600;color:var(--navy);font-family:var(--font-body);text-align:center;background:var(--surface);font-variant-numeric:tabular-nums;}
.tl-winval:focus{outline:none;border-color:var(--navy-light);}
/* Count sits right after the chips by default, but after the slider when "36+"
   reveals it (flex order; the slider is display:none until then so it collapses). */
.tl-slider-wrap{order:1;}
.tl-count{order:2;font-size:12px;font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap;}
.tl-scroll{overflow-x:auto;overflow-y:hidden;}
.tl-scroll .chart-svg{max-width:none;}
.tl-scroll::-webkit-scrollbar{height:9px;}
.tl-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;}
.tl-scroll::-webkit-scrollbar-track{background:var(--surface2);}

/* ── Loan Stats page ── */
.lstat-meta{font-size:11.5px;color:var(--text3);margin:-12px 0 16px;font-variant-numeric:tabular-nums;}
/* Levered-assets KPIs use the Supporting Leasing Signals card design:
   separate cards (each with its own shadow), not a single divided strip. */
.lstat-kpi-card{margin-bottom:12px;}
.lstat-kpi-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
.lstat-kpi-cell{background:var(--surface);border:none;border-radius:var(--r-card);padding:14px 16px;min-width:0;box-shadow:0 0 0 1px rgba(23,32,51,0.07),0 2px 6px rgba(23,32,51,0.06),0 1px 2px rgba(23,32,51,0.04);}
.lstat-kpi-lbl{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:0.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;line-height:1.3;}
.lstat-kpi-val{font-size:17px;font-weight:700;color:var(--navy);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;white-space:nowrap;}
.lstat-note{font-size:11px;font-style:italic;color:var(--text3);line-height:1.5;margin-bottom:28px;max-width:920px;}
@media (max-width:1100px){ .lstat-kpi-strip{grid-template-columns:repeat(3,1fr);} }

/* ===== CapEx Summary page ===== */
.chart-card{background:var(--surface);border:none;border-radius:var(--r-card);box-shadow:var(--card-sh);padding:16px 20px 12px;margin-bottom:16px;}
.chart-title{font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-0.01em;margin-bottom:6px;}
.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
@media(max-width:1100px){.chart-row{grid-template-columns:1fr;}}
#page-cx .chart-legend{display:flex;gap:16px;align-items:center;justify-content:flex-end;margin-top:2px;flex-wrap:wrap;}

.cx-wrap{background:var(--surface);border:none;border-radius:var(--r-card);overflow:auto;max-height:560px;box-shadow:var(--card-sh);margin-bottom:8px;}
.cx-wrap::-webkit-scrollbar{height:8px;}
.cx-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}
.cx-wrap::-webkit-scrollbar-track{background:var(--surface2);}
.cx-table{width:100%;min-width:1480px;border-collapse:separate;border-spacing:0;}
.cx-table thead th{font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:0.06em;padding:9px 11px;text-align:center;white-space:normal;vertical-align:middle;line-height:1.25;background:var(--th-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:3;}
.cx-table thead th.txt-l{text-align:left;}
/* CapEx column headers: two pre-split single-line rows, full text, no ellipsis */
.cx-table thead th .cx-th2{display:inline-block;white-space:nowrap;text-align:center;line-height:1.25;}
.cx-table tbody td{height:34px;padding:0 11px;font-size:11px;color:var(--text2);white-space:nowrap;text-align:center;border-bottom:1px solid var(--border-subtle);font-variant-numeric:tabular-nums;letter-spacing:-0.01em;vertical-align:middle;}
.cx-table tbody td.txt-l{text-align:left;}
.cx-table tbody tr:hover{background:var(--surface2);}
.cx-table tbody tr:hover .col-key{background:var(--surface2);}
.col-key{position:sticky;left:0;z-index:2;background:var(--surface);text-align:left !important;border-right:1px solid var(--border2);min-width:230px;max-width:230px;font-weight:400;color:var(--navy) !important;white-space:normal;overflow-wrap:break-word;}
.cx-table tbody td.col-key{font-size:12px;}
/* The CapEx by Property table's Property column is cramped, so widen the row height a bit */
#propBody td{height:42px;}
thead th.col-key{z-index:4;color:var(--text3) !important;vertical-align:middle;}

.key-sub{display:block;font-size:10px;color:var(--text3);font-weight:400;margin-top:1px;margin-left:0;}
.cx-table tbody tr.tr-total td{color:var(--navy);font-weight:600;background:var(--surface-muted);border-top:1.5px solid var(--border2);border-bottom:none;}
.cx-table tbody tr.tr-total td.col-key{background:var(--surface-muted);color:var(--navy) !important;}

/* ═══════════════════════════════════════════════════════════════════
   TABLE TOOLS — per-column Sort + Filter header controls
   (Loan Summary · CapEx Summary · Property Cash Yield)
═══════════════════════════════════════════════════════════════════ */
.tt-th-wrap{position:relative;display:inline-flex;align-items:center;gap:0;vertical-align:middle;max-width:100%;transition:transform .15s ease;}
thead th.txt-l .tt-th-wrap{justify-content:flex-start;}
.tt-th-label{display:inline-block;}
.cx-table thead th .tt-th-wrap{align-items:flex-start;}     /* two-line headers */
/* Tools are absolutely positioned so revealing them on hover never widens the
   header cell — the column area stays fixed and only the title row varies. The
   label is centered with the column below when idle; on hover the label+icons
   group nudges slightly left so the icons sit inside the cell. */
.tt-tools{
  position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:4px;
  display:inline-flex;align-items:center;gap:1px;
}
.tt-th:hover .tt-th-wrap{transform:translateX(-13px);}
thead th.txt-l.tt-th:hover .tt-th-wrap{transform:none;}   /* left-aligned cols: no shift */
.tt-btn{
  -webkit-appearance:none;appearance:none;border:0;background:none;padding:0;margin:0;cursor:pointer;
  width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--text3);border-radius:3px;opacity:0;pointer-events:none;
  transition:opacity .12s ease, background .12s ease, color .12s ease;line-height:0;
}
.tt-th:hover .tt-btn{opacity:.8;pointer-events:auto;}
.tt-btn:hover{opacity:1;color:var(--navy);background:rgba(23,32,51,.08);}
.tt-btn.tt-on{opacity:1;pointer-events:auto;color:var(--navy);}
.tt-btn svg{display:block;}

/* floating value picker */
.tt-filter-pop{
  display:none;position:fixed;z-index:9999;background:var(--surface);
  border:1px solid var(--border);border-radius:7px;box-shadow:var(--card-sh);
  min-width:184px;max-width:248px;padding:8px;font-family:var(--font-body);
}
.tt-fp-head{font-size:10.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;padding:2px 4px 7px;}
.tt-fp-list{max-height:248px;overflow:auto;display:flex;flex-direction:column;}
.tt-fp-item{display:flex;align-items:center;gap:8px;padding:5px 6px;font-size:12px;color:var(--text2);border-radius:4px;cursor:pointer;white-space:nowrap;}
.tt-fp-item:hover{background:var(--surface2);}
.tt-fp-item span{overflow:hidden;text-overflow:ellipsis;}
.tt-fp-item input{width:14px;height:14px;flex:0 0 auto;accent-color:var(--navy);cursor:pointer;margin:0;}
.tt-fp-all{border-bottom:1px solid var(--border-subtle);margin-bottom:3px;padding-bottom:7px;font-weight:600;color:var(--text2);}
.tt-fp-foot{display:flex;justify-content:space-between;gap:8px;padding-top:8px;margin-top:6px;border-top:1px solid var(--border-subtle);}
.tt-fp-btn{
  font-family:var(--font-body);font-size:11.5px;font-weight:600;cursor:pointer;
  padding:5px 12px;border-radius:5px;border:1px solid var(--border);background:var(--surface);color:var(--text2);
}
.tt-fp-btn:hover{background:var(--surface2);}
.tt-fp-btn.primary{background:var(--navy);border-color:var(--navy);color:#fff;}
.tt-fp-btn.primary:hover{background:var(--navy-light);}

@media print{ .tt-tools,.tt-filter-pop{display:none !important;} }

.erp-print-head{display:none;}
.pm-print-all #erpPanels .tab-panel,
.pm-print-all #laPanels .tab-panel{display:block !important;}
@media print{
  .pm-print-all .erp-print-head{display:block !important;font-size:13px;font-weight:700;color:var(--navy);margin:6px 0 6px;border-top:2px solid var(--navy);padding-top:6px;break-after:avoid !important;page-break-after:avoid !important;}
  /* Pack densely: let tabs flow continuously (the bordered head acts as the divider)
     instead of forcing one tab per page — that left every page half-empty. */
  .pm-print-all #erpPanels .tab-panel + .tab-panel,
  .pm-print-all #laPanels .tab-panel + .tab-panel{break-before:auto;}
  /* tighter cards + smaller chart titles → more per page, less whitespace */
  .pm-print-all #erpPanels .lb-card,
  .pm-print-all #laPanels .lb-card{margin-bottom:8px !important;padding:8px 14px 8px !important;}
  .pm-print-all #erpPanels .lb-card-title,
  .pm-print-all #laPanels .lb-card-title{font-size:13px !important;margin-bottom:6px !important;}
  /* hide the on-screen tab list when printing all tabs */
  .pm-print-all #erpTabs,
  .pm-print-all #laTabs{display:none !important;}
}

/* ═══════════════════════════════════════════════════════════════════
   PRINT LAYOUT (portrait)
   • Graph cards keep their paired layout (bar + donut side by side, etc.)
     instead of collapsing to one column — matches the on-screen / reference
     layout. (The responsive max-width rules would otherwise stack them,
     since a portrait page is narrower than 1080px.)
   • Data tables print ONE PER ROW, shrunk to fit the portrait page width.
═══════════════════════════════════════════════════════════════════ */
@media print {
  /* keep chart pairs side by side (applies to single-page Print and Print All Tabs) */
  .lb-two   { grid-template-columns:1fr 1fr !important; }
  
  .tr-donuts{ grid-template-columns:1fr 1fr !important; }
  .chart-row{ grid-template-columns:1fr 1fr !important; }
  .lb-card  { break-inside:avoid; }
  .chart-svg{ max-width:100% !important; height:auto !important; }

  /* data tables: one per row, shrunk so nothing is cut off the page */
  #print-all-container .pcy-wrap,
  #print-all-container .cx-wrap{ overflow:visible !important; box-shadow:none !important; height:auto !important; max-height:none !important; }
  #print-all-container .pcy-table,
  #print-all-container .cx-table{ min-width:0 !important; width:100% !important; table-layout:fixed; }
  #print-all-container .cx-table th,  #print-all-container .cx-table td{
    font-size:7.5px !important; padding:2px 3px !important;
    white-space:normal !important; word-break:break-word; overflow:hidden;
  }
  /* Cash Yield has fewer columns → give rows more breathing room when printed */
  #print-all-container .pcy-table th, #print-all-container .pcy-table td{
    font-size:8.5px !important; padding:6px 5px !important;
    white-space:normal !important; word-break:break-word; overflow:hidden;
  }
  /* drop sticky positioning so frozen columns/headers don't force width or overlap */
  #print-all-container .pcy-table .col-pf,
  #print-all-container .pcy-table .col-fd,
  #print-all-container .cx-table .col-key,
  #print-all-container .pcy-table thead th,
  #print-all-container .cx-table thead th{ position:static !important; min-width:0 !important; max-width:none !important; }
}

/* ── Shared chart cards and empty states ── */
.mac-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;}
.mac-card{background:var(--surface);border-radius:var(--r-card);padding:14px 16px;
  box-shadow:0 0 0 1px rgba(0,0,0,0.07),0 2px 6px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);}
.mac-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.mac-chart-cell{background:var(--surface);border-radius:var(--r-card);padding:14px 16px;
  box-shadow:0 0 0 1px rgba(0,0,0,0.07),0 2px 6px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);}
.mac-chart-title{font-size:12px;font-weight:600;color:var(--text2);margin-bottom:8px;}
.mac-asof{font-size:10px;font-weight:500;color:var(--text3);text-transform:none;letter-spacing:0;margin-left:10px;}
.mac-empty{padding:24px;text-align:center;color:var(--text3);font-size:12px;}
.mac-delta{font-weight:600;}
.mac-delta.up{color:var(--red-tx);}
.mac-delta.down{color:var(--grn-tx);}
@media (max-width:1100px){ .mac-grid{grid-template-columns:1fr;} }

/* ── Rent Roll: source-backed lease expiration status ── */
.rr-lease-status{margin:0 0 28px;background:var(--surface);border:1px solid rgba(23,32,51,.09);border-radius:var(--r-card);box-shadow:0 2px 7px rgba(23,32,51,.05);overflow:hidden;}
.rr-lease-status-head{min-height:58px;padding:13px 16px 11px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--border-subtle);}
.rr-lease-status-kicker{margin-bottom:3px;color:var(--gold);font-size:8.5px;font-weight:750;letter-spacing:.13em;text-transform:uppercase;}
.rr-lease-status h2{font-family:var(--font-display);font-size:17px;line-height:1.15;font-weight:600;letter-spacing:-.012em;color:var(--navy);}
.rr-lease-status-head-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.rr-lease-status-window{font-size:9.5px;color:var(--text3);font-variant-numeric:tabular-nums;white-space:nowrap;}
.rr-lease-status-badge{display:inline-flex;align-items:center;min-height:20px;padding:2px 8px;border-radius:var(--r-badge);font-size:8.5px;font-weight:750;letter-spacing:.02em;text-transform:uppercase;}
.rr-lease-status-badge.pending{background:var(--gry-bg);color:var(--gry-tx);}
.rr-lease-status-badge.available{background:var(--grn-bg);color:var(--grn-tx);}
.rr-lease-status-badge.partial,.rr-lease-status-badge.unavailable{background:var(--amb-bg);color:var(--amb-tx);}
.rr-lease-status-provenance{padding:8px 16px;background:var(--surface-muted);border-bottom:1px solid var(--border-subtle);font-size:9.5px;line-height:1.45;color:var(--text3);}
.rr-lease-status-unavailable{margin:10px 16px 0;padding:8px 10px;border:1px solid rgba(156,106,27,.2);border-radius:var(--r-sm);background:var(--amb-bg);color:var(--amb-tx);font-size:10px;line-height:1.45;}
.rr-lease-status-unavailable[hidden]{display:none;}
.rr-lease-status-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.rr-lease-status-table{width:100%;min-width:760px;border-collapse:collapse;font-variant-numeric:tabular-nums;}
.rr-lease-status-table th,.rr-lease-status-table td{padding:8px 12px;border-bottom:1px solid var(--border-subtle);font-size:10.5px;text-align:right;white-space:nowrap;}
.rr-lease-status-table thead th{background:var(--th-bg);color:var(--text3);font-size:8.5px;font-weight:750;letter-spacing:.065em;text-transform:uppercase;}
.rr-lease-status-table thead tr:first-child th{color:var(--navy);border-bottom:1px solid var(--border);}
.rr-lease-status-table th:first-child{text-align:left;}
.rr-lease-status-table tbody th{color:var(--text2);font-weight:550;}
.rr-lease-status-table tbody td{color:var(--text2);font-family:'DM Mono',ui-monospace,SFMono-Regular,Menlo,monospace;}
.rr-lease-status-table tbody tr.total th,.rr-lease-status-table tbody tr.total td{background:#FBF9F4;color:var(--navy);font-weight:700;}
.rr-lease-status-table tbody tr:last-child th,.rr-lease-status-table tbody tr:last-child td{border-bottom:0;}
@media(max-width:760px){.rr-lease-status-head{align-items:flex-start;flex-direction:column;gap:7px}.rr-lease-status-head-meta{justify-content:flex-start}}

/* ══════════════════════════════════
   DATA UPLOAD
══════════════════════════════════ */
#page-upload{padding:22px 22px 64px;}
#du-root{max-width:1440px;margin:0 auto;}
.du-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin:2px 0 18px;padding:0 2px;}
.du-kicker{font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:5px;}
.du-hero h1{font-family:var(--font-display);font-size:27px;line-height:1.1;font-weight:600;letter-spacing:-.025em;color:var(--navy);}
.du-hero p{font-size:12px;line-height:1.55;color:var(--text3);margin-top:5px;max-width:660px;}
.du-run-select{display:flex;flex-direction:column;gap:5px;min-width:270px;}
.du-run-select>span,.du-map-field>span{font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);}
.du-run-select select,.du-map-field select{height:34px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:500 11.5px var(--font-body);padding:0 34px 0 10px;outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237B8493' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;}
.du-run-select select:focus,.du-map-field select:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(181,138,58,.11);}
.du-run-select select:disabled,.du-map-field select:disabled{background-color:var(--surface2);color:var(--text3);cursor:not-allowed;}
.du-primary-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr);gap:12px;margin-bottom:12px;}
.du-card{background:var(--surface);border:1px solid rgba(23,32,51,.09);border-radius:var(--r-md);box-shadow:0 2px 8px rgba(23,32,51,.045);overflow:hidden;}
.du-card-head{min-height:48px;padding:13px 15px 11px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;gap:12px;}
.du-card-head>div{display:flex;align-items:center;gap:8px;min-width:0;}
.du-card h2{font-size:13px;line-height:1.2;font-weight:650;color:var(--navy);}
.du-step{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#F5EFE3;color:#8F6A24;font-size:8.5px;font-weight:700;letter-spacing:.04em;flex-shrink:0;}
.du-card-meta{font-size:9.5px;color:var(--text3);white-space:nowrap;}
.du-count{font-size:9.5px;font-weight:600;color:var(--text3);border-left:1px solid var(--border);padding-left:8px;}
.du-dropzone{width:calc(100% - 28px);min-height:150px;margin:14px;padding:18px;border:1px dashed var(--border2);border-radius:var(--r-sm);background:linear-gradient(135deg,rgba(244,245,247,.75),rgba(253,252,251,.8));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--text2);font-family:var(--font-body);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;}
.du-dropzone:hover:not(:disabled),.du-dropzone.dragging{border-color:var(--gold);background:#FBF7EE;box-shadow:inset 0 0 0 1px rgba(181,138,58,.12);}
.du-dropzone:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.du-dropzone:disabled{cursor:not-allowed;opacity:.62;}
.du-dropzone strong{font-size:12.5px;font-weight:600;color:var(--text);}
.du-dropzone>span:last-child{font-size:10.5px;line-height:1.45;color:var(--text3);max-width:480px;}
.du-upload-mark{width:40px;height:40px;border:1px solid rgba(181,138,58,.38);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--gold);background:rgba(181,138,58,.07);margin-bottom:2px;}
.du-requirements{border-top:1px solid var(--border-subtle);}
.du-requirement{display:grid;grid-template-columns:8px minmax(150px,1fr) auto auto auto;align-items:center;gap:10px;padding:9px 15px;border-bottom:1px solid var(--border-subtle);min-height:45px;}
.du-requirement:last-child{border-bottom:0;}
.du-requirement>div{display:flex;flex-direction:column;gap:2px;min-width:0;}
.du-requirement strong{font-size:11px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.du-requirement>div span{font-size:9.5px;color:var(--text3);}
.du-req-dot{width:7px;height:7px;border-radius:50%;background:var(--border2);}
.du-req-dot.staged{background:var(--gold);box-shadow:0 0 0 3px rgba(181,138,58,.12);}
.du-req-dot.done{background:var(--grn-ac);}
.du-required,.du-optional{font-size:8.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.du-required{color:var(--amb-tx);}.du-optional{color:var(--text3);}
.du-text-button{border:0;background:transparent;color:#8F6A24;font:600 10px var(--font-body);cursor:pointer;padding:4px 2px;white-space:nowrap;}
.du-text-button:hover{text-decoration:underline;color:#76571C;}
.du-text-button:focus-visible,.du-icon-button:focus-visible,.du-submit:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.du-contract-card{background:linear-gradient(155deg,#FDFCFB 35%,#FAF7F0 100%);}
.du-contract-list{padding:3px 15px 0;}
.du-contract-list>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:11px 0;border-bottom:1px solid rgba(23,32,51,.07);}
.du-contract-list dt{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);}
.du-contract-list dd{font-size:11.5px;font-weight:600;color:var(--text);overflow-wrap:anywhere;}
.du-contract-rule{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;margin:15px 15px 9px;padding:9px 10px;border:1px solid rgba(181,138,58,.25);border-radius:var(--r-sm);background:rgba(181,138,58,.06);font-size:8.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#76571C;}
.du-contract-rule i{height:1px;background:linear-gradient(90deg,var(--gold),rgba(181,138,58,.18));position:relative;}
.du-contract-rule i::after{content:'';position:absolute;right:-1px;top:-2px;width:5px;height:5px;border-top:1px solid var(--gold);border-right:1px solid var(--gold);transform:rotate(45deg);}
.du-contract-card>p{font-size:10.5px;line-height:1.55;color:var(--text3);padding:0 15px 15px;}
.du-review-card,.du-component-card,.du-history-card{margin-bottom:12px;}
.du-queue{padding:0 15px;}
.du-queue-row{display:grid;grid-template-columns:36px minmax(170px,1fr) minmax(220px,.75fr) 110px 24px;align-items:center;gap:11px;min-height:65px;padding:9px 0;border-bottom:1px solid var(--border-subtle);animation:du-row-in .18s ease both;}
@keyframes du-row-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.du-file-icon{width:34px;height:38px;border:1px solid rgba(47,111,87,.25);border-radius:3px;background:var(--grn-bg);color:var(--grn-tx);font-size:8px;font-weight:800;letter-spacing:.05em;display:flex;align-items:center;justify-content:center;position:relative;}
.du-file-icon::after{content:'';position:absolute;right:-1px;top:-1px;width:8px;height:8px;background:var(--surface);border-left:1px solid rgba(47,111,87,.25);border-bottom:1px solid rgba(47,111,87,.25);}
.du-file-copy{display:flex;flex-direction:column;gap:3px;min-width:0;}
.du-file-copy strong{font-size:11.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.du-file-copy span{font-size:9.5px;color:var(--text3);}
.du-map-field{display:flex;flex-direction:column;gap:4px;min-width:0;}
.du-map-field select{width:100%;height:30px;font-size:10.5px;}
.du-queue-status{display:flex;justify-content:flex-end;}
.du-icon-button{width:24px;height:24px;border:0;border-radius:50%;background:transparent;color:var(--text3);font-size:17px;line-height:1;cursor:pointer;}
.du-icon-button:hover{background:var(--surface2);color:var(--text);}
.du-icon-button:disabled{opacity:.4;cursor:not-allowed;}
.du-empty{min-height:104px;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--text3);}
.du-empty-mark{font-family:var(--font-display);font-size:28px;color:var(--border2);font-weight:600;}
.du-empty>div:last-child{display:flex;flex-direction:column;gap:4px;}
.du-empty strong{font-size:11.5px;color:var(--text2);}.du-empty span{font-size:10px;}
.du-submit-bar{min-height:53px;padding:10px 15px;border-top:1px solid var(--border-subtle);background:var(--surface-muted);display:flex;align-items:center;justify-content:space-between;gap:15px;}
.du-submit-bar>span{font-size:10.5px;color:var(--text3);}.du-submit-bar>span.ready{color:var(--grn-tx);font-weight:600;}
.du-submit{height:32px;padding:0 16px;border:1px solid var(--navy);border-radius:var(--r-sm);background:var(--navy);color:#fff;font:600 10.5px var(--font-body);letter-spacing:.01em;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,opacity .12s;}
.du-submit:hover:not(:disabled){background:var(--navy-light);border-color:var(--navy-light);}
.du-submit:disabled{opacity:.38;cursor:not-allowed;}
.du-table-note{padding:10px 15px;background:#FBF7EE;border-bottom:1px solid rgba(181,138,58,.16);font-size:10px;color:#76571C;}
.du-table-wrap{overflow-x:auto;}
.du-table{width:100%;border-collapse:collapse;min-width:840px;}
.du-table th{padding:8px 12px;background:var(--th-bg);border-bottom:1px solid var(--border);font-size:8.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);text-align:left;white-space:nowrap;}
.du-table td{padding:9px 12px;border-bottom:1px solid var(--border-subtle);font-size:10.5px;color:var(--text2);vertical-align:middle;}
.du-table tbody tr:last-child td{border-bottom:0;}
.du-table tbody tr.selected{background:#FBF7EE;}
.du-table td small{display:block;color:var(--text3);font-size:8.5px;margin-top:2px;}
.du-component-table td:first-child{min-width:174px;}
.du-component-name{display:block;font-weight:600;color:var(--text);margin-bottom:2px;}
.du-component-table code{font:8.5px var(--font-body);color:var(--text3);}
.du-mono{font-family:'DM Mono',ui-monospace,SFMono-Regular,Menlo,monospace!important;font-size:9.5px!important;overflow-wrap:anywhere;}
.du-text-danger{color:var(--red-tx)!important;font-weight:600;}
.du-badge{display:inline-flex;align-items:center;justify-content:center;min-height:20px;padding:2px 7px;border-radius:var(--r-badge);font-size:8.5px;font-weight:700;letter-spacing:.01em;white-space:nowrap;}
.du-badge.neutral{background:var(--gry-bg);color:var(--gry-tx);}.du-badge.info{background:var(--blu-bg);color:var(--blu-tx);}.du-badge.warn{background:var(--amb-bg);color:var(--amb-tx);}.du-badge.danger{background:var(--red-bg);color:var(--red-tx);}.du-badge.success{background:var(--grn-bg);color:var(--grn-tx);}.du-badge.stage{background:#F5EFE3;color:#8F6A24;}
.du-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:10.5px;animation:du-row-in .18s ease both;}
.du-notice.info{background:var(--blu-bg);border-color:rgba(42,95,158,.22);color:var(--blu-tx);}.du-notice.warn{background:var(--amb-bg);border-color:rgba(156,106,27,.2);color:var(--amb-tx);}.du-notice.danger{background:var(--red-bg);border-color:rgba(180,35,42,.18);color:var(--red-tx);}.du-notice.success{background:var(--grn-bg);border-color:rgba(47,111,87,.18);color:var(--grn-tx);}
.du-notice button{border:0;background:transparent;color:inherit;font-size:16px;cursor:pointer;}
.du-loading,.du-service-error{min-height:320px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;color:var(--text3);font-size:11px;}
.du-loading>span{width:22px;height:22px;border:2px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:du-spin .75s linear infinite;}
@keyframes du-spin{to{transform:rotate(360deg)}}
.du-service-error strong{font-family:var(--font-display);font-size:19px;color:var(--text);}.du-service-error span{max-width:440px;text-align:center;}.du-service-error button{height:30px;padding:0 14px;border:1px solid var(--navy);border-radius:var(--r-sm);background:var(--navy);color:#fff;font:600 10px var(--font-body);cursor:pointer;}
.du-inline-empty,.du-table-empty{padding:20px!important;text-align:center;color:var(--text3)!important;font-size:10.5px!important;}
@media(max-width:1120px){
  .du-primary-grid{grid-template-columns:1fr;}
  .du-queue-row{grid-template-columns:36px minmax(150px,1fr) minmax(190px,.8fr) 90px 24px;}
}
@media(max-width:820px){
  .du-hero{align-items:stretch;flex-direction:column;gap:12px;}.du-run-select{min-width:0;}
  .du-queue-row{grid-template-columns:36px minmax(0,1fr) 24px;}.du-map-field{grid-column:2/4;width:100%;}.du-queue-status{grid-column:2;grid-row:3;justify-content:flex-start;}
  .du-requirement{grid-template-columns:8px minmax(120px,1fr) auto auto;}.du-requirement .du-text-button{grid-column:2/5;text-align:left;}
}
@media(prefers-reduced-motion:reduce){
  .du-queue-row,.du-notice,.du-loading>span{animation:none!important;}.du-dropzone,.du-submit{transition:none!important;}
}

/* Financial Statement · Cross Segment */
.fcs-segment-value{box-sizing:border-box;padding-inline:14px;}
.fcs-kpi-cell{flex-direction:column;gap:2px;padding-block:5px;line-height:1.1;}
.fcs-kpi-actual{display:block;}
.fcs-kpi-variance{display:flex;flex-direction:column;align-items:center;gap:1px;font-weight:700;}
.fcs-kpi-variance-label{font-size:8px;font-weight:600;letter-spacing:.01em;color:var(--text3);white-space:nowrap;}
.fcs-kpi-variance-value{font-size:10px;white-space:nowrap;}
.fcs-kpi-variance.is-favorable .fcs-kpi-variance-value{color:var(--grn-tx);}
.fcs-kpi-variance.is-unfavorable .fcs-kpi-variance-value{color:var(--red-tx);}
.fcs-month-value{box-sizing:border-box;padding-inline:7px;}
.fcs-x-scroll{overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-gutter:stable;}
.fcs-x-scroll:focus-visible,.fcs-gl-scroll:focus-visible{outline:2px solid var(--gold);outline-offset:-2px;}
.fcs-fetch-notices{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:10px;}
.fcs-fetch-notice{display:flex;align-items:center;gap:8px;color:var(--text3);font-size:11px;font-weight:500;}
.fcs-fetch-notice.is-error{color:var(--red-tx);}
.fcs-fetch-notice:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.fcs-gl-panel{position:sticky;left:0;z-index:1;box-sizing:border-box;width:var(--fcs-outer-viewport,100%);max-width:var(--fcs-outer-viewport,100%);background:#F4F6FA;border-top:1px solid var(--border-subtle);padding:14px 20px 18px;}
.fcs-gl-heading{font-size:12px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.fcs-gl-tabs{display:flex;align-items:stretch;gap:5px;margin-bottom:9px;overflow-x:auto;}
.fcs-gl-tab{min-width:0;max-width:280px;padding:7px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text2);font:600 11px var(--font-body);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;}
.fcs-gl-tab span{display:block;margin-bottom:1px;color:var(--text3);font-size:8.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;}
.fcs-gl-tab.is-active{border-color:var(--navy);background:var(--navy);color:#fff;box-shadow:0 1px 2px rgba(23,32,51,.15);}
.fcs-gl-tab.is-active span{color:rgba(255,255,255,.7);}
.fcs-gl-tab:focus-visible,.fcs-gl-sort:focus-visible,.fcs-retry:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.fcs-gl-tab:disabled{opacity:.45;cursor:not-allowed;}
.fcs-gl-state{display:flex;flex-direction:column;align-items:center;gap:10px;border:1px solid rgba(23,32,51,.07);border-radius:var(--r-card);background:var(--surface);padding:18px;text-align:center;font-size:12px;color:var(--text3);}
.fcs-retry{min-height:26px;padding:4px 10px;border:1px solid var(--border2);border-radius:var(--r-sm);background:var(--surface);color:var(--navy);font:600 10.5px var(--font-body);cursor:pointer;}
.fcs-retry:hover{border-color:var(--navy);background:var(--surface2);}
.fcs-gl-scroll{max-width:100%;overflow-x:scroll;overscroll-behavior-inline:contain;scrollbar-gutter:stable both-edges;border:1px solid rgba(23,32,51,.1);border-radius:var(--r-card);background:var(--surface);scrollbar-color:var(--border2) var(--surface-muted);scrollbar-width:thin;}
.fcs-gl-scroll::-webkit-scrollbar{height:10px;}
.fcs-gl-scroll::-webkit-scrollbar-track{background:var(--surface-muted);border-top:1px solid var(--border-subtle);}
.fcs-gl-scroll::-webkit-scrollbar-thumb{background:var(--border2);border:2px solid var(--surface-muted);border-radius:999px;}
.fcs-gl-table{width:100%;min-width:1180px;border-collapse:collapse;background:var(--surface);}
.fcs-gl-table th{padding:0 11px;height:34px;background:#E8ECF2;border-bottom:1px solid var(--border);color:var(--navy);font-size:10px;font-weight:700;letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap;}
.fcs-gl-table td{padding:8px 11px;border-bottom:1px solid var(--border-subtle);color:var(--text2);font-size:11px;white-space:nowrap;}
.fcs-gl-table tbody tr:last-child td{border-bottom:0;}
.fcs-gl-table tbody tr:hover td{background:#F4F6FA;}
.fcs-gl-table .fcs-gl-number{text-align:right;font-variant-numeric:tabular-nums;}
.fcs-gl-sort{display:inline-flex;align-items:center;gap:6px;width:100%;padding:5px 0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;text-transform:inherit;cursor:pointer;}
.fcs-gl-sort span{color:var(--text3);font-size:9px;}
.fcs-gl-sort.is-active,.fcs-gl-sort.is-active span{color:var(--navy);}
.fcs-gl-empty{padding:20px!important;color:var(--text3)!important;text-align:center!important;}
@media print{
  .fcs-x-scroll,.fcs-gl-scroll{overflow:visible!important;scrollbar-gutter:auto;}
  .fcs-gl-panel{position:static;width:auto;max-width:none;}
  .fcs-gl-table{min-width:0;font-size:8px;}
  .fcs-retry{display:none!important;}
}

/* Actual vs Budget horizontal scroll proxies: always visible. macOS overlay
   scrollbars only appear while scrolling, so a proxy strip looked empty and
   the columns to the right seemed unreachable. [checked: 2026-09-11] */
#fsab-scroll-kpi, #fsab-scroll-re, .fsab-txn-wrap{scrollbar-width:thin;scrollbar-color:rgba(23,32,51,.35) rgba(23,32,51,.06);}
#fsab-scroll-kpi::-webkit-scrollbar, #fsab-scroll-re::-webkit-scrollbar, .fsab-txn-wrap::-webkit-scrollbar{height:10px;}
#fsab-scroll-kpi::-webkit-scrollbar-track, #fsab-scroll-re::-webkit-scrollbar-track, .fsab-txn-wrap::-webkit-scrollbar-track{background:rgba(23,32,51,.06);border-radius:5px;}
#fsab-scroll-kpi::-webkit-scrollbar-thumb, #fsab-scroll-re::-webkit-scrollbar-thumb, .fsab-txn-wrap::-webkit-scrollbar-thumb{background:rgba(23,32,51,.35);border-radius:5px;}

/* Portfolio Summary: adjustable screen criteria (button + panel). */
.section-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.pulse-criteria-btn{font:inherit;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--navy);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:4px 10px;cursor:pointer;}
.pulse-criteria-btn:hover{background:#F4F6FA;}
.pulse-criteria-panel{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;background:rgba(23,32,51,.35);padding:24px;}
.pulse-criteria-card{background:var(--surface);border-radius:var(--r-card);box-shadow:0 12px 40px rgba(23,32,51,.25);width:min(920px,100%);max-height:90vh;display:flex;flex-direction:column;}
.pulse-criteria-hd{display:flex;align-items:baseline;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);font-weight:700;color:var(--navy);}
.pulse-criteria-sub{flex:1;font-size:11px;font-weight:400;color:var(--text3);}
.pulse-criteria-x{font:inherit;font-size:18px;line-height:1;background:none;border:none;cursor:pointer;color:var(--text3);}
.pulse-criteria-body{overflow:auto;padding:8px 20px;}
.pulse-criteria-row{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-subtle);align-items:start;}
.pulse-criteria-row.changed .pulse-criteria-title::after{content:" · adjusted";color:var(--gold,#9C6A1B);font-weight:600;font-size:10px;}
.pulse-criteria-title{font-size:12px;font-weight:700;color:var(--navy);padding-top:6px;}
.pulse-criteria-fields{display:flex;flex-wrap:wrap;gap:8px 16px;}
.pulse-criteria-field{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--text2);min-width:150px;}
.pulse-criteria-field input{font:inherit;font-size:12px;padding:5px 8px;border:1px solid var(--border);border-radius:var(--r-sm);width:120px;}
.pulse-criteria-field em{font-style:normal;font-size:10px;color:var(--text3);}
.pulse-criteria-ft{display:flex;gap:8px;padding:12px 20px;border-top:1px solid var(--border);}
.pulse-criteria-ft .btn-primary,.pulse-criteria-ft .btn-secondary{font:inherit;font-size:12px;font-weight:600;padding:7px 14px;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--navy);}
.pulse-criteria-ft .btn-primary{background:var(--navy);color:#fff;border-color:var(--navy);}
