/* =============================================================
   Bello Homes — Owner Dashboard
   Premium, data-dense UI. Inherits brand tokens from the main
   site but uses a lighter dashboard shell for readability.
   ============================================================= */

:root {
  /* Brand tokens (mirrored from styles.css) */
  --navy-950: #0a1520;
  --navy-900: #101f30;
  --navy-800: #172d47;
  --navy-700: #1e3d62;
  --gold-500: #c9a06a;
  --gold-400: #d9b684;
  --gold-300: #e8d0ab;
  /* BH-018: gold as small-caps TEXT fails AA (~2.19:1) — use this darker
     bronze for eyebrow text; decorative gold accents keep --gold-500.
     Value matches the React design system's --bhr-gold-text. */
  --bh-eyebrow: #7a5512;
  --cream-50:  #faf5eb;
  --cream-100: #f4ead6;
  --cream-200: #e2d5b8;
  --canvas:    #ece1c9;
  --ink-900: #1c1812;
  --ink-800: #2b251e;
  --ink-700: #3b342b;
  --ink-600: #4a443a;
  --ink-500: #635c50;
  --ink-400: #6b6457; /* BH-018: was #7a7368 (3.61-4.27:1, sub-AA on cream/canvas); 4.51-5.86:1 AA on all light surfaces */
  --ink-300: #6f685b; /* BH-018: was #a39c8f (2.10-2.72:1); 4.25-5.52:1 on light surfaces */
  --ink-200: #ccc4b4;

  /* Dashboard-only tokens */
  --bh-bg:          #f7f4ed;
  --bh-panel:       #ffffff;
  --bh-panel-alt:   #fbf8f1;
  --bh-border:      rgba(28, 24, 18, 0.08);
  --bh-border-strong: rgba(28, 24, 18, 0.14);
  --bh-shadow-sm:   0 1px 2px rgba(10, 22, 40, 0.04), 0 1px 3px rgba(10, 22, 40, 0.04);
  --bh-shadow-md:   0 4px 12px rgba(10, 22, 40, 0.06), 0 2px 4px rgba(10, 22, 40, 0.04);
  --bh-shadow-lg:   0 20px 50px rgba(10, 22, 40, 0.10), 0 6px 18px rgba(10, 22, 40, 0.05);

  --bh-radius-sm: 8px;
  --bh-radius:    14px;
  --bh-radius-lg: 18px;

  --bh-ease: cubic-bezier(0.22, 1, 0.36, 1);

  /* Semantic — text tokens darkened to WCAG AA (≥4.5:1) on the soft -bg tints
     so status pills stay soft/premium while their LABEL text is strictly legible.
     Old: success #1e7e5a (~4.0-4.4:1), warn #b7791f (~3.3-3.6:1). */
  --bh-success: #176b47;
  --bh-success-bg: #e5f3ec;
  --bh-warn:    #8a5a12;
  --bh-warn-bg: #fdf3dc;
  --bh-danger:  #b13a2a;
  --bh-danger-bg: #fbe7e3;
  --bh-info:    #1d5f8a;
  --bh-info-bg: #e4f0f7;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  background: var(--bh-bg);
  color: var(--ink-900);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.5;
}

h1, h2, h3, h4, h5 { font-family: 'Fraunces', Georgia, serif; font-weight: 500; letter-spacing: -0.01em; margin: 0; color: var(--ink-900); }
p { margin: 0; color: var(--ink-600); }
button { font-family: inherit; cursor: pointer; }
a { color: inherit; }

/* =========================================================
   ANIMATION PRIMITIVES
   ========================================================= */

/* Stagger-fade reveal. JS adds .bh-reveal, then .is-revealed on next frame. */
.bh-reveal {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 560ms var(--bh-ease), transform 560ms var(--bh-ease);
  transition-delay: var(--bh-reveal-delay, 0ms);
  will-change: opacity, transform;
}
.bh-reveal.is-revealed { opacity: 1; transform: translateY(0); }

/* Shimmer sweep — used on the owner name in arrival hero */
@keyframes bh-shimmer-sweep {
  0%   { background-position: -200% 50%; }
  100% { background-position: 200% 50%; }
}
.bh-shimmer {
  background: linear-gradient(
    100deg,
    currentColor 35%,
    rgba(201, 160, 106, 0.95) 50%,
    currentColor 65%
  );
  background-size: 200% 100%;
  background-position: -200% 50%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: var(--ink-900);
  animation: bh-shimmer-sweep 1800ms var(--bh-ease) 400ms 1 forwards;
}

/* Gold pulse — subtle attention-grabber for live ticker dot, alerts */
@keyframes bh-pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(201, 160, 106, 0.55); }
  50%      { box-shadow: 0 0 0 6px rgba(201, 160, 106, 0); }
}
.bh-pulse { animation: bh-pulse-dot 2000ms var(--bh-ease) infinite; }

/* Skeleton shimmer — loading state */
@keyframes bh-skel-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.bh-skel {
  background: linear-gradient(90deg,
    rgba(28, 24, 18, 0.06) 0%,
    rgba(28, 24, 18, 0.11) 50%,
    rgba(28, 24, 18, 0.06) 100%);
  background-size: 200% 100%;
  animation: bh-skel-shimmer 1400ms ease-in-out infinite;
  border-radius: var(--bh-radius-sm);
  color: transparent;
  display: block;
}
html[data-theme="dark"] .bh-skel {
  background: linear-gradient(90deg,
    rgba(244, 234, 214, 0.06) 0%,
    rgba(244, 234, 214, 0.11) 50%,
    rgba(244, 234, 214, 0.06) 100%);
  background-size: 200% 100%;
}
.bh-skel--line  { height: 10px; width: 100%; margin: 6px 0; border-radius: 999px; }
.bh-skel--title { height: 26px; width: 70%; margin: 10px 0; border-radius: 6px; }
.bh-skel--block { width: 100%; height: 100%; border-radius: 12px; }
.bh-skel--avatar { width: 34px; height: 34px; border-radius: 50%; }
.bh-skel--chip  { height: 26px; width: 140px; border-radius: 999px; display: inline-block; }

.bh-kpi--skel { padding: 18px 20px; min-height: 120px; }

/* Skeleton variants used inside list-style panels */
.bh-skel-rows {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 6px 2px;
}
.bh-skel-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--bh-border);
}
.bh-skel-row:last-child { border-bottom: 0; }

.bh-arrival-card--skel {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px;
  min-width: 280px;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  background: var(--bh-panel);
}

.bh-milestone--skel {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px;
  min-height: 160px;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  background: var(--bh-panel);
}

/* Tabular nums — apply to any element with data-count */
[data-count] { font-variant-numeric: tabular-nums; }

/* Respect reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .bh-reveal { opacity: 1; transform: none; transition: none; }
  .bh-shimmer { animation: none; -webkit-text-fill-color: currentColor; color: inherit; background: none; }
  .bh-pulse { animation: none; }
  .bh-skel { animation: none; }
}

/* =========================================================
   DARK MODE — premium night theme
   Scoped to html[data-theme="dark"] so tokens flip everywhere.
   ========================================================= */
html[data-theme="dark"] {
  --bh-bg:            #0a1323;
  --bh-panel:         #142034;
  --bh-panel-alt:     #1a2844;
  --bh-border:        rgba(244, 234, 214, 0.08);
  --bh-border-strong: rgba(244, 234, 214, 0.16);
  --bh-shadow-sm:   0 1px 2px rgba(0, 0, 0, 0.35), 0 1px 3px rgba(0, 0, 0, 0.25);
  --bh-shadow-md:   0 6px 18px rgba(0, 0, 0, 0.45), 0 2px 6px rgba(0, 0, 0, 0.25);
  --bh-shadow-lg:   0 30px 80px rgba(0, 0, 0, 0.55), 0 10px 30px rgba(0, 0, 0, 0.35);

  --ink-900: #f4ead6;
  --ink-800: #e7dcc3;
  --ink-700: #d4c8ac;
  --ink-600: #bfb4a0;
  --ink-500: #9e947f;
  --ink-400: #a89f88;   /* was #8a8170 (4.24:1, sub-AA on #142034); #a89f88 = 6.21:1, keeps warm taupe */
  --ink-300: #6c6553;
  --ink-200: #4e4838;

  --gold-500: #d4b47f;   /* slightly softer gold for dark mode legibility */
  --gold-400: #e0c494;
  --bh-eyebrow: #e8c98a;  /* BH-018: bright accent text on dark (~11:1) */
  --gold-300: #f0dab6;

  /* Semantic text tokens — these were referenced repo-wide (var(--bh-text,#1a1a1a),
     var(--bh-muted,#6b7280), var(--bh-text-mute,#64748b)) but NEVER declared, so in
     dark mode they fell back to near-black/slate and rendered invisible on the navy
     surfaces. Declared dark-only: in light mode the (correct) hardcoded fallbacks
     still apply, so light is unchanged. Fixes invisible table cells + KPI values +
     faint muted text in one place. AA on #142034: cream@0.62 = 6.03:1. */
  --bh-text:       var(--ink-900);            /* #f4ead6 cream */
  --bh-text-mute:  rgba(244, 234, 214, 0.62);
  --bh-muted:      rgba(244, 234, 214, 0.62);
}
html[data-theme="dark"] body { background: var(--bh-bg); color: var(--ink-900); }

/* Panels, cards, borders */
html[data-theme="dark"] .bh-panel,
html[data-theme="dark"] .bh-kpi,
html[data-theme="dark"] .bh-milestone,
html[data-theme="dark"] .bh-arrival-card,
html[data-theme="dark"] .bh-theme-badge,
html[data-theme="dark"] .bh-alerts,
html[data-theme="dark"] .bh-cmp__table,
html[data-theme="dark"] .bh-login__card {
  background: var(--bh-panel);
  border-color: var(--bh-border);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-panel--feature { background: linear-gradient(180deg, var(--bh-panel-alt) 0%, var(--bh-panel) 100%); }

/* Topbar / nav */
html[data-theme="dark"] .bh-topbar { background: var(--bh-panel); border-bottom-color: var(--bh-border); }
html[data-theme="dark"] .bh-sidenav { background: var(--bh-panel-alt); border-right-color: var(--bh-border); }
html[data-theme="dark"] .bh-navbtn { color: var(--ink-600); }
html[data-theme="dark"] .bh-navbtn:hover { background: rgba(244, 234, 214, 0.04); color: var(--ink-900); }
html[data-theme="dark"] .bh-navbtn.is-active { background: rgba(201, 160, 106, 0.14); color: var(--gold-500); }
html[data-theme="dark"] .bh-topbar__user { background: rgba(244, 234, 214, 0.03); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-topbar__user:hover { background: rgba(244, 234, 214, 0.06); }
html[data-theme="dark"] .bh-topbar__drop { background: var(--bh-panel); border-color: var(--bh-border); box-shadow: var(--bh-shadow-md); }
html[data-theme="dark"] .bh-topbar__drop a,
html[data-theme="dark"] .bh-topbar__drop button { color: var(--ink-900); }
html[data-theme="dark"] .bh-topbar__drop a:hover,
html[data-theme="dark"] .bh-topbar__drop button:hover { background: rgba(244, 234, 214, 0.06); }

/* Arrival hero — dark variant */
html[data-theme="dark"] .bh-arrival {
  background:
    radial-gradient(720px 320px at 108% -30%, rgba(201, 160, 106, 0.22), transparent 62%),
    radial-gradient(520px 260px at -10% 120%, rgba(201, 160, 106, 0.08), transparent 62%),
    linear-gradient(135deg, #142034 0%, #1b2a45 55%, #22355a 100%);
  border-color: rgba(201, 160, 106, 0.18);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-arrival__heading #bh-arrival-greeting { color: var(--ink-700); }
html[data-theme="dark"] .bh-arrival__heading .bh-shimmer {
  background: linear-gradient(100deg, var(--ink-900) 35%, rgba(201, 160, 106, 1) 50%, var(--ink-900) 65%);
  background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
html[data-theme="dark"] .bh-arrival__state { color: var(--ink-700); }
html[data-theme="dark"] .bh-arrival__state strong { color: var(--ink-900); }
html[data-theme="dark"] .bh-ticker__chip { background: rgba(244, 234, 214, 0.04); color: var(--ink-800); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-ticker__chip:hover { background: rgba(244, 234, 214, 0.08); border-color: rgba(201, 160, 106, 0.3); }
html[data-theme="dark"] .bh-ticker__chip strong { color: var(--ink-900); }

/* Goal ring track */
html[data-theme="dark"] .bh-goal__ring-track { stroke: rgba(244, 234, 214, 0.12); }

/* KPIs */
html[data-theme="dark"] .bh-kpi__label { color: var(--ink-500); }
html[data-theme="dark"] .bh-kpi__value { color: var(--ink-900); }
html[data-theme="dark"] .bh-kpi__sub { color: var(--ink-600); }

/* Smart alerts */
html[data-theme="dark"] .bh-alert--critical { --bh-alert-accent: #e17864; --bh-alert-bg: rgba(225, 120, 100, 0.10); }
html[data-theme="dark"] .bh-alert--warning  { --bh-alert-accent: #e3a95a; --bh-alert-bg: rgba(227, 169, 90, 0.10); }
html[data-theme="dark"] .bh-alert--info     { --bh-alert-accent: #7ba8d9; --bh-alert-bg: rgba(123, 168, 217, 0.08); }
html[data-theme="dark"] .bh-alert__title { color: var(--ink-900); }
html[data-theme="dark"] .bh-alert__sub { color: var(--ink-600); }
html[data-theme="dark"] .bh-alerts::before { opacity: 0.65; }

/* Upcoming bookings */
html[data-theme="dark"] .bh-upcoming__metachip { background: rgba(201, 160, 106, 0.10); border-color: rgba(201, 160, 106, 0.24); color: var(--ink-700); }
html[data-theme="dark"] .bh-arrival-card { color: var(--ink-900); }
html[data-theme="dark"] .bh-arrival-card__date {
  background: linear-gradient(160deg, rgba(201, 160, 106, 0.14) 0%, rgba(201, 160, 106, 0.06) 100%);
  border-right-color: var(--bh-border);
}
html[data-theme="dark"] .bh-arrival-card__day { color: var(--ink-900); }
html[data-theme="dark"] .bh-arrival-card__dow { color: var(--ink-600); }
html[data-theme="dark"] .bh-arrival-card__guestname { color: var(--ink-900); }
html[data-theme="dark"] .bh-arrival-card__property { color: var(--ink-500); }
html[data-theme="dark"] .bh-arrival-card__meta { color: var(--ink-600); border-top-color: var(--bh-border); }
html[data-theme="dark"] .bh-arrival-card__meta strong { color: var(--ink-900); }
html[data-theme="dark"] .bh-arrival-card__channel { background: rgba(244, 234, 214, 0.05); color: var(--ink-600); }

/* Review theme badges */
html[data-theme="dark"] .bh-theme-badge__name { color: var(--ink-900); }
html[data-theme="dark"] .bh-theme-badge__meta { color: var(--ink-600); }
html[data-theme="dark"] .bh-theme-badge--top {
  background: linear-gradient(135deg, var(--bh-panel) 0%, rgba(201, 160, 106, 0.12) 100%);
  border-color: rgba(201, 160, 106, 0.28);
}

/* Milestones */
html[data-theme="dark"] .bh-milestone--gold    { --bh-m-bg: linear-gradient(135deg, var(--bh-panel) 0%, rgba(201, 160, 106, 0.10) 100%); --bh-m-glow: rgba(201, 160, 106, 0.22); }
html[data-theme="dark"] .bh-milestone--navy    { --bh-m-bg: linear-gradient(135deg, var(--bh-panel) 0%, rgba(66, 106, 160, 0.14) 100%); --bh-m-glow: rgba(123, 168, 217, 0.14); --bh-m-accent: #7ba8d9; }
html[data-theme="dark"] .bh-milestone--emerald { --bh-m-bg: linear-gradient(135deg, var(--bh-panel) 0%, rgba(46, 160, 116, 0.12) 100%); --bh-m-glow: rgba(62, 196, 142, 0.12); --bh-m-accent: #55c794; }
html[data-theme="dark"] .bh-milestone__value { color: var(--ink-900); }
html[data-theme="dark"] .bh-milestone__label { color: var(--ink-500); }
html[data-theme="dark"] .bh-milestone__sub { color: var(--ink-600); }
html[data-theme="dark"] .bh-milestone__icon { background: color-mix(in srgb, var(--bh-m-accent) 20%, var(--bh-panel)); }

/* Comparison table */
html[data-theme="dark"] .bh-cmp__metric-head,
html[data-theme="dark"] .bh-cmp__prop-head,
html[data-theme="dark"] .bh-cmp__metric-cell { background: var(--bh-panel); color: var(--ink-700); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-cmp__prop-name { color: var(--ink-900); }
html[data-theme="dark"] .bh-cmp__td { color: var(--ink-900); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-cmp__td--top { background: rgba(201, 160, 106, 0.12); color: var(--gold-400); }
html[data-theme="dark"] .bh-cmp__tr--zebra .bh-cmp__td,
html[data-theme="dark"] .bh-cmp__tr--zebra .bh-cmp__metric-cell { background: rgba(244, 234, 214, 0.02); }
html[data-theme="dark"] .bh-cmp__tr--zebra .bh-cmp__td--top { background: rgba(201, 160, 106, 0.16); }

/* Portfolio map */
html[data-theme="dark"] .bh-map__frame { background: linear-gradient(180deg, var(--bh-panel) 0%, var(--bh-panel-alt) 100%); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-map__frame::before { background: radial-gradient(600px 200px at 50% 0%, rgba(201, 160, 106, 0.18), transparent 70%); }
/* Map label in dark mode. The painted NC silhouette uses a cream
   gradient (#f4ead6 → #e8d8b4) regardless of theme — so the label
   needs to stay DARK in dark mode (it sits ON the cream silhouette,
   not on the dark page background). Bumping alpha to 0.55 for
   readability without overwhelming the editorial feel. */
html[data-theme="dark"] .bh-map__label { fill: rgba(16, 31, 48, 0.55); }
html[data-theme="dark"] .bh-map__legendchip { background: rgba(244, 234, 214, 0.04); border-color: var(--bh-border); color: var(--ink-600); }
html[data-theme="dark"] .bh-map__legendchip strong { color: var(--ink-900); }

/* Tables, generic text */
html[data-theme="dark"] .bh-table th { color: var(--ink-500); border-bottom-color: var(--bh-border-strong); }
html[data-theme="dark"] .bh-table td { color: var(--ink-900); border-bottom-color: var(--bh-border); }
html[data-theme="dark"] h1, html[data-theme="dark"] h2, html[data-theme="dark"] h3, html[data-theme="dark"] h4, html[data-theme="dark"] h5 { color: var(--ink-900); }
html[data-theme="dark"] p { color: var(--ink-600); }

/* Chips, tags, buttons */
html[data-theme="dark"] .bh-chip { background: rgba(244, 234, 214, 0.04); border-color: var(--bh-border); color: var(--ink-700); }
html[data-theme="dark"] .bh-chip.is-active { background: rgba(201, 160, 106, 0.16); color: var(--gold-500); border-color: rgba(201, 160, 106, 0.4); }
html[data-theme="dark"] .bh-tag { background: rgba(244, 234, 214, 0.04); color: var(--ink-600); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-btn--ghost { background: transparent; color: var(--ink-700); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-btn--ghost:hover { background: rgba(244, 234, 214, 0.06); color: var(--ink-900); }

/* Panel headers */
html[data-theme="dark"] .bh-panel__head h3 { color: var(--ink-900); }
html[data-theme="dark"] .bh-panel__head p { color: var(--ink-500); }

/* Year in Review already looks correct in dark (it's intentionally dark in both modes) */

/* Modal backdrop darker */
html[data-theme="dark"] .bh-modal__backdrop { background: rgba(0, 0, 0, 0.65); }
html[data-theme="dark"] .bh-modal__dialog { background: var(--bh-panel); border: 1px solid var(--bh-border); }

/* =========================================================
   DARK MODE — comprehensive overrides for components that
   were authored against a light page background (#fff or
   rgba(255, 255, 255, …)). These rules ensure every panel,
   pill, form field, dropdown, sidebar, and modal flips to
   the dark palette so contrast stays readable end-to-end.

   Grouped by component family so future edits stay close
   to the matching light-mode rules' intent.
   ========================================================= */

/* Sidebar — was bright white in dark mode. Flip to the
   panel-alt token so it sits flush with the topbar/main. */
html[data-theme="dark"] .bh-sidebar {
  background: var(--bh-panel-alt);
  border-right-color: var(--bh-border);
}
html[data-theme="dark"] .bh-sidebar__brand,
html[data-theme="dark"] .bh-sidebar__word { color: var(--ink-900); }
html[data-theme="dark"] .bh-sidebar__section { color: var(--ink-500); }
html[data-theme="dark"] .bh-sidebar__support {
  background: rgba(244, 234, 214, 0.04);
  border-color: var(--bh-border);
  color: var(--ink-700);
}
html[data-theme="dark"] .bh-sidebar__support:hover {
  background: rgba(244, 234, 214, 0.08);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-navbtn__badge {
  background: rgba(201, 160, 106, 0.20);
  color: var(--gold-400);
}

/* Insight cards (Intelligence view) */
html[data-theme="dark"] .bh-insight {
  background: var(--bh-panel);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-insight__icon { background: var(--bh-panel-alt); }

/* Activity picker pills + stat tiles */
html[data-theme="dark"] .bh-activity__pill {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-700);
}
html[data-theme="dark"] .bh-activity__pill:hover {
  border-color: var(--bh-border-strong);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-activity__pill.is-active {
  background: var(--gold-500);
  border-color: var(--gold-500);
  color: var(--navy-900);
}
html[data-theme="dark"] .bh-activity__stat {
  background: var(--bh-panel);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-activity__stat-icon {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border-strong);
}

/* AirCover empty-state icon */
html[data-theme="dark"] .bh-aircover__empty-icon {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
}

/* Document rows (Tax & Docs) */
html[data-theme="dark"] .bh-doc { background: var(--bh-panel-alt); }
html[data-theme="dark"] .bh-doc:hover {
  background: var(--bh-panel);
  border-color: var(--bh-border-strong);
}
html[data-theme="dark"] .bh-doc__icon {
  background: var(--bh-panel);
  color: var(--gold-500);
}

/* Property cards (Portfolio view) */
html[data-theme="dark"] .bh-prop-card {
  background: var(--bh-panel);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-prop-card:hover { border-color: var(--bh-border-strong); }
html[data-theme="dark"] .bh-prop-card__photo .bh-pill {
  background: rgba(20, 32, 52, 0.82);
  color: var(--ink-900);
  border-color: rgba(244, 234, 214, 0.12);
}
html[data-theme="dark"] .bh-prop-card__name { color: var(--ink-900); }

/* Property hero header (Property detail) */
html[data-theme="dark"] .bh-prop-hero__tag {
  background: rgba(20, 32, 52, 0.82);
  color: var(--ink-900);
  border: 1px solid rgba(244, 234, 214, 0.12);
}

/* Generic field focus state */
html[data-theme="dark"] .bh-field input,
html[data-theme="dark"] .bh-field select,
html[data-theme="dark"] .bh-field textarea {
  background: var(--bh-panel-alt);
  color: var(--ink-900);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-field input:focus,
html[data-theme="dark"] .bh-field select:focus,
html[data-theme="dark"] .bh-field textarea:focus {
  background: var(--bh-panel);
  border-color: var(--gold-500);
}
html[data-theme="dark"] .bh-field label,
html[data-theme="dark"] .bh-field__label { color: var(--ink-700); }

/* Login page — demo chips for owner/admin selection */
html[data-theme="dark"] .bh-login__demo-chip {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-login__demo-chip:hover {
  border-color: rgba(201, 160, 106, 0.5);
}

/* Maintenance modal — form fields, file picker */
html[data-theme="dark"] .bh-maint-modal__form input,
html[data-theme="dark"] .bh-maint-modal__form select,
html[data-theme="dark"] .bh-maint-modal__form textarea {
  background: var(--bh-panel-alt);
  color: var(--ink-900);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-maint-modal__form input::placeholder,
html[data-theme="dark"] .bh-maint-modal__form textarea::placeholder { color: var(--ink-400); }
html[data-theme="dark"] .bh-maint-modal__form input:focus,
html[data-theme="dark"] .bh-maint-modal__form select:focus,
html[data-theme="dark"] .bh-maint-modal__form textarea:focus {
  background: var(--bh-panel);
  border-color: var(--gold-500);
}
html[data-theme="dark"] .bh-maint-modal__form label { color: var(--ink-700); }
html[data-theme="dark"] .bh-maint-modal__head h2 { color: var(--ink-900); }
html[data-theme="dark"] .bh-maint-modal__head p { color: var(--ink-500); }
html[data-theme="dark"] .bh-maint-modal__eyebrow { color: var(--gold-400); }
html[data-theme="dark"] .bh-maint-modal__close {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-700);
}
html[data-theme="dark"] .bh-maint-modal__close:hover { color: var(--gold-500); }
html[data-theme="dark"] .bh-maint-modal__foot { border-top-color: var(--bh-border); }
html[data-theme="dark"] .bh-mm-file {
  background: var(--bh-panel-alt);
  color: var(--ink-900);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-mm-file:hover {
  background: rgba(201, 160, 106, 0.10);
  border-color: var(--gold-500);
}

/* Maintenance filter rail — search bar */
html[data-theme="dark"] .bh-maint-filters__search {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-500);
}
html[data-theme="dark"] .bh-maint-filters__search:focus-within {
  background: var(--bh-panel);
  border-color: var(--gold-500);
}
html[data-theme="dark"] .bh-maint-filters__search input { color: var(--ink-900); }
html[data-theme="dark"] .bh-maint-filters__search input::placeholder { color: var(--ink-500); }

/* Maintenance summary tiles + recent cards + log table */
html[data-theme="dark"] .bh-maint-summary { color: var(--ink-700); }
html[data-theme="dark"] .bh-maint-card {
  background: var(--bh-panel);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-maint-card:hover { border-color: rgba(201, 160, 106, 0.45); }
html[data-theme="dark"] .bh-maint-card__cat { color: var(--gold-400); }
html[data-theme="dark"] .bh-maint-card__title { color: var(--ink-900); }
html[data-theme="dark"] .bh-maint-card__prop { color: var(--ink-600); }
html[data-theme="dark"] .bh-maint-card__notes { color: var(--ink-700); }
html[data-theme="dark"] .bh-maint-card__date,
html[data-theme="dark"] .bh-maint-card__vendor,
html[data-theme="dark"] .bh-maint-card__sep { color: var(--ink-500); }
html[data-theme="dark"] .bh-maint-card__cost { color: var(--ink-900); }

/* Premium dropdown component (.bh-dropdown) — full dark variant.
   This is the most visible regression: in light mode the panel
   pops white over a cream page; in dark mode that became cream
   text on near-cream background. Each piece flips to the dark
   palette while keeping the gold accent system. */
html[data-theme="dark"] .bh-dropdown__trigger {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-dropdown__trigger:hover {
  background: var(--bh-panel);
  border-color: rgba(201, 160, 106, 0.5);
}
html[data-theme="dark"] .bh-dropdown[data-open="true"] .bh-dropdown__trigger {
  background: var(--bh-panel);
  border-color: var(--gold-500);
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.18);
}
html[data-theme="dark"] .bh-dropdown__label { color: var(--ink-500); }
html[data-theme="dark"] .bh-dropdown__value { color: var(--ink-900); }
html[data-theme="dark"] .bh-dropdown.is-active-filter .bh-dropdown__value { color: var(--gold-400); }
html[data-theme="dark"] .bh-dropdown__chevron { color: var(--ink-500); }
html[data-theme="dark"] .bh-dropdown[data-open="true"] .bh-dropdown__chevron { color: var(--gold-400); }

html[data-theme="dark"] .bh-dropdown__panel {
  background: var(--bh-panel);
  border-color: var(--bh-border-strong);
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.3),
    0 18px 40px -12px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(201, 160, 106, 0.10);
}
html[data-theme="dark"] .bh-dropdown__option { color: var(--ink-900); }
html[data-theme="dark"] .bh-dropdown__option:hover,
html[data-theme="dark"] .bh-dropdown__option:focus-visible,
html[data-theme="dark"] .bh-dropdown__option.is-focus {
  background: rgba(201, 160, 106, 0.14);
  color: var(--ink-900);
}
html[data-theme="dark"] .bh-dropdown__option.is-active {
  background: rgba(201, 160, 106, 0.22);
  color: var(--gold-400);
}
html[data-theme="dark"] .bh-dropdown__option-meta { color: var(--ink-500); }
html[data-theme="dark"] .bh-dropdown__check { color: var(--gold-400); }
html[data-theme="dark"] .bh-dropdown__list { scrollbar-color: rgba(244, 234, 214, 0.16) transparent; }
html[data-theme="dark"] .bh-dropdown__list::-webkit-scrollbar-thumb { background: rgba(244, 234, 214, 0.16); }
html[data-theme="dark"] .bh-dropdown__list::-webkit-scrollbar-thumb:hover { background: rgba(244, 234, 214, 0.32); }
html[data-theme="dark"] .bh-dropdown__panel-foot { border-top-color: var(--bh-border); }
html[data-theme="dark"] .bh-dropdown__panel-clear { color: var(--ink-500); }
html[data-theme="dark"] .bh-dropdown__panel-clear:hover {
  color: var(--gold-400);
  background: rgba(201, 160, 106, 0.10);
}
html[data-theme="dark"] .bh-dropdown__panel-count { color: var(--ink-500); }

/* Generic chips, buttons, tags inside the maintenance views */
html[data-theme="dark"] .bh-status-pill {
  background: var(--bh-panel-alt);
  color: var(--ink-700);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-status-pill--completed { color: #55c794; background: rgba(46, 160, 116, 0.14); border-color: rgba(46, 160, 116, 0.32); }
html[data-theme="dark"] .bh-status-pill--in_progress,
html[data-theme="dark"] .bh-status-pill--in-progress { color: #e3a95a; background: rgba(227, 169, 90, 0.14); border-color: rgba(227, 169, 90, 0.32); }
html[data-theme="dark"] .bh-status-pill--scheduled { color: #7ba8d9; background: rgba(123, 168, 217, 0.14); border-color: rgba(123, 168, 217, 0.32); }

/* Forms across the dashboard (login, settings, modals) */
html[data-theme="dark"] input,
html[data-theme="dark"] select,
html[data-theme="dark"] textarea {
  color-scheme: dark;
}

/* Topbar scope chips already handled by .bh-chip rules above, but
   the topbar filter label needs an explicit dark mode color. */
html[data-theme="dark"] .bh-topbar__filterlabel { color: var(--ink-500); }

/* =========================================================
   LOGIN PAGE
   ========================================================= */
body.bh-login {
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(201, 160, 106, 0.18), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(16, 31, 48, 0.09), transparent 60%),
    linear-gradient(180deg, #f7f4ed 0%, #efe7d5 100%);
  padding: 40px 20px;
}

.bh-login__shell {
  width: 100%;
  max-width: 1120px;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 24px;
  overflow: hidden;
  box-shadow: var(--bh-shadow-lg);
}

.bh-login__brand {
  position: relative;
  padding: 44px 44px 36px;
  background:
    radial-gradient(700px 400px at 110% -20%, rgba(201, 160, 106, 0.25), transparent 60%),
    linear-gradient(160deg, #0a1520 0%, #172d47 100%);
  color: #f6eed8;
  display: flex;
  flex-direction: column;
  gap: 22px;
  min-height: 620px;
  overflow: hidden;
}
/* Decorative gold thread that frames the brand panel — premium texture
   without competing with the foreground content. */
.bh-login__brand::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(201, 160, 106, 0.45) 30%,
    rgba(201, 160, 106, 0.45) 70%,
    transparent 100%);
  pointer-events: none;
}
/* Push the meta link to the bottom while letting hero/copy/preview
   stack naturally in the middle. */
.bh-login__brand .bh-login__meta { margin-top: auto; }
.bh-login__logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: #f6eed8; }
.bh-login__logo-mark {
  width: 40px; height: 40px; border-radius: 10px;
  display: grid; place-items: center;
  background: linear-gradient(140deg, var(--gold-400), var(--gold-500));
  color: #0a1520; font-family: 'Fraunces', serif; font-weight: 700; font-size: 16px; letter-spacing: 0.02em;
  box-shadow: 0 4px 18px rgba(201, 160, 106, 0.35);
}
.bh-login__logo-word { font-family: 'Fraunces', serif; font-size: 20px; font-weight: 500; }

.bh-login__brand-copy h1 {
  color: #f6eed8;
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: clamp(32px, 4vw, 44px);
  line-height: 1.05;
  margin: 0 0 14px;
}
.bh-login__brand-copy p {
  color: rgba(246, 238, 216, 0.75);
  font-size: 15px;
  line-height: 1.6;
  max-width: 440px;
  margin-bottom: 28px;
}
.bh-login__bullets { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.bh-login__bullets li { display: flex; align-items: center; gap: 12px; color: rgba(246, 238, 216, 0.88); font-size: 14px; }
.bh-login__dot { width: 6px; height: 6px; border-radius: 999px; background: var(--gold-400); box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.18); flex: 0 0 auto; }

.bh-login__meta { font-size: 13px; color: rgba(246, 238, 216, 0.75); }
.bh-login__meta a { color: var(--gold-300); text-decoration: none; font-weight: 500; margin-left: 6px; }
.bh-login__meta a:hover { color: #fff; }

/* =========================================================
   LOGIN — PORTFOLIO HERO STRIP
   Editorial "at a glance" numbers above the headline. Hairline
   gold dividers + Fraunces numerals + a centered framing rule
   give the brand panel a magazine-cover feel.
   ========================================================= */
.bh-login__hero {
  margin: 18px 0 8px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  pointer-events: none;
}
.bh-login__hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold-400);
}
.bh-login__hero-eyebrow-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(201, 160, 106, 0.35) 50%,
    transparent 100%);
}
.bh-login__hero-numbers {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  align-items: center;
  gap: 18px;
  padding: 8px 4px;
}
.bh-login__hero-num {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4px;
}
.bh-login__hero-num-value {
  font-family: 'Fraunces', serif;
  font-weight: 300;
  font-size: clamp(28px, 3vw, 38px);
  line-height: 1;
  letter-spacing: -0.02em;
  background: linear-gradient(180deg, #f6eed8 0%, rgba(232, 208, 171, 0.78) 100%);
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.bh-login__hero-num-suffix {
  font-style: italic;
  color: var(--gold-400);
  -webkit-text-fill-color: var(--gold-400);
  margin-left: 2px;
}
.bh-login__hero-num-label {
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(246, 238, 216, 0.55);
}
.bh-login__hero-divider {
  width: 1px;
  height: 36px;
  background: linear-gradient(180deg,
    transparent 0%,
    rgba(201, 160, 106, 0.35) 50%,
    transparent 100%);
  align-self: center;
}

/* =========================================================
   LOGIN — DASHBOARD SNEAK-PEEK
   A glassy mini-card that hints at what's inside the portal
   so the brand panel reads as a product preview, not a
   marketing void. Decorative only (aria-hidden="true").
   ========================================================= */
.bh-login__preview {
  position: relative;
  margin: 0;
  pointer-events: none;
  user-select: none;
}
.bh-login__preview-card {
  position: relative;
  z-index: 1;
  padding: 18px 18px 14px;
  border-radius: 16px;
  background: linear-gradient(165deg, rgba(15, 28, 44, 0.78) 0%, rgba(23, 45, 71, 0.62) 100%);
  border: 1px solid rgba(201, 160, 106, 0.22);
  box-shadow:
    0 10px 32px rgba(0, 0, 0, 0.32),
    inset 0 1px 0 rgba(246, 238, 216, 0.06);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  display: flex;
  flex-direction: column;
  gap: 12px;
  transform: translateZ(0);
}
.bh-login__preview-glow {
  position: absolute;
  inset: -16px -10px -10px -10px;
  z-index: 0;
  background: radial-gradient(420px 200px at 80% 0%, rgba(201, 160, 106, 0.18), transparent 65%);
  pointer-events: none;
}

.bh-login__preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.bh-login__preview-eyebrow {
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold-400);
}
.bh-login__preview-pulse {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(246, 238, 216, 0.7);
}
.bh-login__preview-pulse-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #1e7e5a;
  box-shadow: 0 0 0 0 rgba(30, 126, 90, 0.6);
  animation: bh-login-preview-pulse 2000ms ease-out infinite;
}
@keyframes bh-login-preview-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(30, 126, 90, 0.55); }
  70%  { box-shadow: 0 0 0 7px rgba(30, 126, 90, 0); }
  100% { box-shadow: 0 0 0 0 rgba(30, 126, 90, 0); }
}

.bh-login__preview-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding: 6px 2px 2px;
}
.bh-login__preview-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.bh-login__preview-stat-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(246, 238, 216, 0.55);
}
.bh-login__preview-stat-value {
  font-family: 'Fraunces', serif;
  font-weight: 500;
  font-size: 22px;
  line-height: 1.1;
  color: #f6eed8;
  letter-spacing: -0.01em;
}
.bh-login__preview-stat-unit {
  font-size: 14px;
  color: var(--gold-400);
  margin-left: 2px;
}
.bh-login__preview-stat-trend {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(246, 238, 216, 0.55);
  margin-top: 1px;
}
.bh-login__preview-stat-trend--up { color: #6db89a; }

.bh-login__preview-chart {
  width: 100%;
  height: 56px;
  display: block;
}

.bh-login__preview-foot {
  border-top: 1px dashed rgba(246, 238, 216, 0.12);
  padding-top: 12px;
}
.bh-login__preview-prop {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
}
.bh-login__preview-prop-rank {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: 22px;
  color: var(--gold-500);
  line-height: 1;
  min-width: 28px;
}
.bh-login__preview-prop-meta {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.bh-login__preview-prop-name {
  font-family: 'Fraunces', serif;
  font-size: 14px;
  font-weight: 500;
  color: #f6eed8;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bh-login__preview-prop-sub {
  font-size: 10.5px;
  color: rgba(246, 238, 216, 0.55);
  letter-spacing: 0.04em;
}
.bh-login__preview-prop-rev {
  font-family: 'Fraunces', serif;
  font-size: 16px;
  font-weight: 500;
  color: #f6eed8;
  text-align: right;
  white-space: nowrap;
}
.bh-login__preview-prop-unit {
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 500;
  color: rgba(246, 238, 216, 0.55);
  margin-left: 1px;
}

@media (prefers-reduced-motion: reduce) {
  .bh-login__preview-pulse-dot { animation: none; }
}

.bh-login__card-wrap { display: grid; place-items: center; padding: 40px 44px; }
.bh-login__card {
  width: 100%;
  max-width: 400px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
/* `display: flex` above defeats the user-agent default for [hidden],
   which is why the success card was leaking onto the sign-in screen.
   Restore the expected behavior explicitly. */
.bh-login__card[hidden] { display: none !important; }
.bh-login__card-head { margin-bottom: 4px; }
.bh-login__eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold-500);
}
.bh-login__card-head h2 {
  font-family: 'Fraunces', serif; font-size: 30px; margin: 6px 0 4px; font-weight: 500;
}
.bh-login__card-head p { font-size: 14px; }

.bh-field { display: flex; flex-direction: column; gap: 6px; }
.bh-field__label { font-size: 12px; font-weight: 600; color: var(--ink-600); text-transform: uppercase; letter-spacing: 0.08em; }
.bh-field input[type="email"],
.bh-field input[type="password"],
.bh-field input[type="text"] {
  width: 100%;
  font-family: inherit;
  font-size: 15px;
  color: var(--ink-900);
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius-sm);
  padding: 12px 14px;
  transition: border-color 160ms var(--bh-ease), box-shadow 160ms var(--bh-ease), background 160ms var(--bh-ease);
  outline: none;
}
.bh-field input:focus {
  border-color: var(--gold-500);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.16);
}
.bh-field__password { position: relative; }
.bh-field__password input { padding-right: 44px; }
.bh-field__toggle {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  width: 34px; height: 34px; border-radius: 8px;
  background: transparent; border: 0; color: var(--ink-400);
  display: grid; place-items: center;
}
.bh-field__toggle:hover { background: rgba(201, 160, 106, 0.12); color: var(--ink-900); }

.bh-login__row { display: flex; justify-content: space-between; align-items: center; margin-top: 2px; }
.bh-check { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-600); cursor: pointer; }
.bh-check input { accent-color: var(--gold-500); }
.bh-login__forgot { font-size: 13px; text-decoration: none; color: var(--navy-800); font-weight: 500; cursor: pointer; background: none; border: 0; padding: 0; }
.bh-login__forgot:hover { color: var(--gold-500); }

/* Divider between password sign-in and magic-link option */
.bh-login__divider { display: flex; align-items: center; gap: 12px; margin: 8px 0 2px; color: var(--ink-500); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; }
.bh-login__divider::before, .bh-login__divider::after { content: ''; flex: 1; height: 1px; background: var(--bh-border); }
.bh-login__divider span { padding: 0 2px; }

/* Forgot-password: back link + success state */
.bh-login__back {
  display: inline-flex; align-items: center; gap: 6px;
  margin: 4px auto 0;
  font-size: 13px; font-weight: 500;
  color: var(--ink-600); background: none; border: 0; cursor: pointer;
  padding: 6px 10px; border-radius: 8px;
}
.bh-login__back:hover { color: var(--gold-500); background: rgba(201, 160, 106, 0.08); }
.bh-login__card--success { text-align: center; align-items: center; }
.bh-login__card--success h2 {
  font-family: 'Fraunces', serif; font-size: 28px; font-weight: 500; margin: 6px 0 4px;
}
.bh-login__card--success p { font-size: 14px; color: var(--ink-600); margin: 0; line-height: 1.55; }
.bh-login__card--success p strong { color: var(--ink-900); font-weight: 600; }
.bh-login__success-icon {
  width: 56px; height: 56px; border-radius: 50%;
  display: grid; place-items: center;
  background: rgba(30, 126, 90, 0.12);
  color: var(--bh-success, #1e7e5a);
  margin-bottom: 4px;
}
.bh-login__success-hint { font-size: 12px !important; color: var(--ink-400) !important; margin-top: -4px !important; }

.bh-login__error {
  min-height: 18px;
  font-size: 13px;
  color: var(--bh-danger);
  font-weight: 500;
}

.bh-login__demo {
  margin-top: 18px;
  padding: 16px;
  background: var(--bh-panel-alt);
  border: 1px dashed var(--bh-border-strong);
  border-radius: var(--bh-radius);
}
.bh-login__demo-title {
  font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ink-400); margin-bottom: 10px;
}
.bh-login__demo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bh-login__demo-chip {
  text-align: left;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  display: flex; flex-direction: column; gap: 2px;
  transition: border-color 140ms, transform 140ms, box-shadow 140ms;
}
.bh-login__demo-chip:hover { border-color: var(--gold-500); transform: translateY(-1px); box-shadow: var(--bh-shadow-sm); }
.bh-login__demo-chip strong { font-size: 13px; color: var(--ink-900); font-weight: 600; }
.bh-login__demo-chip span { font-size: 11px; color: var(--ink-400); }
.bh-login__demo-note { margin-top: 10px; font-size: 11px; color: var(--ink-400); }

@media (max-width: 860px) {
  .bh-login__shell { grid-template-columns: 1fr; max-width: 520px; }
  .bh-login__brand { min-height: 0; padding: 36px 28px; }
  .bh-login__brand-copy h1 { margin-top: 28px; }
  .bh-login__card-wrap { padding: 32px 28px; }
}

/* =========================================================
   BUTTONS (shared)
   ========================================================= */
.bh-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 8px;
  font-family: 'Inter', sans-serif;
  font-size: 14px; font-weight: 600;
  padding: 10px 16px;
  border-radius: 10px;
  border: 1px solid transparent;
  transition: all 160ms var(--bh-ease);
  text-decoration: none;
  line-height: 1;
}
.bh-btn--primary {
  background: linear-gradient(140deg, var(--navy-800) 0%, var(--navy-950) 100%);
  color: var(--cream-50);
  box-shadow: 0 4px 14px rgba(10, 22, 40, 0.18);
}
.bh-btn--primary:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(10, 22, 40, 0.25); }
.bh-btn--gold {
  background: linear-gradient(140deg, var(--gold-400), var(--gold-500));
  color: var(--navy-950);
}
.bh-btn--gold:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(201, 160, 106, 0.35); }
.bh-btn--ghost {
  background: transparent;
  color: var(--ink-900);
  border-color: var(--bh-border);
}
.bh-btn--ghost:hover { background: var(--bh-panel-alt); border-color: var(--bh-border-strong); }
.bh-btn--full { width: 100%; padding: 13px 16px; }
.bh-btn--sm { padding: 7px 12px; font-size: 13px; }

/* Bulletproof audit 2026-05-28 (a11y): on coarse pointers, raise the
   compact button to a 44px tap target per WCAG 2.5.5. */
@media (pointer: coarse) {
  .bh-btn--sm { min-height: 44px; padding-block: 10px; }
}

/* =========================================================
   DASHBOARD SHELL
   ========================================================= */
body.bh-dash {
  display: grid;
  grid-template-columns: 248px 1fr;
  min-height: 100vh;
  min-height: 100dvh;
}

/* ---- Sidebar ---- */
.bh-sidebar {
  position: sticky; top: 0;
  height: 100vh;
  height: 100dvh;
  padding: 24px 18px;
  background: #ffffff;
  border-right: 1px solid var(--bh-border);
  display: flex; flex-direction: column;
  z-index: 20;
}
.bh-sidebar__brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; margin-bottom: 32px; padding: 0 8px; }
.bh-sidebar__mark {
  display: grid; place-items: center;
  width: 36px; height: 36px;
  flex: 0 0 auto;
}
.bh-sidebar__mark-image {
  display: block;
  width: 40px; height: 40px;
  max-width: none;
  object-fit: contain;
  object-position: center;
  pointer-events: none;
}
.bh-sidebar__word { font-family: 'Fraunces', serif; font-size: 17px; color: var(--ink-900); }

.bh-sidebar__nav { display: flex; flex-direction: column; gap: 2px; }
.bh-navbtn {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 0; background: transparent;
  color: var(--ink-600);
  font-size: 14px; font-weight: 500;
  width: 100%; text-align: left;
  position: relative;
  transition: background 140ms, color 140ms;
}
.bh-navbtn svg { flex: 0 0 auto; color: var(--ink-400); transition: color 140ms; }
.bh-navbtn:hover { background: var(--bh-panel-alt); color: var(--ink-900); }
.bh-navbtn:hover svg { color: var(--ink-900); }
.bh-navbtn.is-active {
  background: linear-gradient(100deg, rgba(201, 160, 106, 0.14), rgba(201, 160, 106, 0.04));
  color: var(--ink-900);
  font-weight: 600;
}
.bh-navbtn.is-active::before {
  content: ""; position: absolute; left: -18px; top: 8px; bottom: 8px;
  width: 3px; border-radius: 0 3px 3px 0;
  background: var(--gold-500);
}
.bh-navbtn.is-active svg { color: var(--gold-500); }
.bh-navbtn__badge {
  margin-left: auto;
  font-size: 11px; font-weight: 700;
  padding: 2px 7px; border-radius: 999px;
  background: var(--bh-danger-bg); color: var(--bh-danger);
}

.bh-sidebar__foot { margin-top: auto; padding-top: 16px; border-top: 1px solid var(--bh-border); }

/* Language picker — sits in sidebar foot + HK app topbar */
.bh-langpicker { position: relative; margin-top: 12px; }
.bh-langpicker__btn {
  display: inline-flex; align-items: center; gap: 6px;
  width: 100%;
  padding: 8px 12px;
  background: transparent;
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  color: var(--ink-600);
  font-family: 'Inter', sans-serif;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}
.bh-langpicker__btn:hover { background: rgba(201, 160, 106, 0.10); color: var(--gold-700, #a87f49); border-color: rgba(201, 160, 106, 0.32); }
.bh-langpicker__current { font-weight: 600; letter-spacing: 0.06em; margin-right: auto; }
.bh-langpicker__menu {
  position: absolute;
  bottom: calc(100% + 6px); left: 0; right: 0;
  margin: 0; padding: 6px;
  list-style: none;
  background: #ffffff;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  box-shadow: 0 12px 28px rgba(10, 21, 32, 0.12);
  z-index: 100;
  /* MLP sweep (2026-05-23): audit LOW — sidebar overflow trap.
     The langpicker sits in .bh-sidebar__foot at the bottom; the
     sidebar itself has overflow-y: auto on mobile. The menu
     opens UPWARD via bottom: 100%+6px, so on tight viewports it
     can extend past the sidebar's visible area and get clipped.
     Cap the menu's own height + give it its own scroll so the
     ~3-4 language options are always reachable even when the
     sidebar viewport is short. */
  max-height: min(220px, 50vh);
  overflow-y: auto;
  overscroll-behavior: contain;
}
html[data-theme="dark"] .bh-langpicker__menu { background: #142035; }
.bh-langpicker__menu li { list-style: none; margin: 0; }
.bh-langpicker__menu button {
  display: block; width: 100%;
  padding: 8px 10px;
  background: transparent; border: 0; border-radius: 8px;
  text-align: left;
  font-family: 'Inter', sans-serif; font-size: 13px;
  color: var(--ink-700, #4a443a);
  cursor: pointer;
}
.bh-langpicker__menu button:hover { background: rgba(201, 160, 106, 0.10); color: var(--gold-700, #a87f49); }
.bh-langpicker__menu button.is-active { background: var(--ink-900, #1c1812); color: var(--cream-50, #faf5e9); }
html[data-theme="dark"] .bh-langpicker__menu button.is-active { background: var(--gold-500, #c9a06a); color: #0a1520; }

/* HK app variant (uses .bh-clean tokens) */
body.bh-clean-body .bh-langpicker { margin-top: 0; }
body.bh-clean-body .bh-langpicker__btn { padding: 5px 10px; font-size: 12px; }
body.bh-clean-body .bh-langpicker__menu { background: #ffffff; }
html[data-theme="dark"] body.bh-clean-body .bh-langpicker__menu { background: #142035; }

/* Dashboard topbar variant: compact, token-themed, and downward-opening. */
#bh-lang-picker-slot .bh-langpicker { margin-top: 0; }
#bh-lang-picker-slot .bh-langpicker__btn {
  width: auto;
  min-width: 62px;
  height: 36px;
  padding: 0 9px;
  gap: 5px;
  border-radius: 10px;
  background: var(--bhc-panel);
  border-color: var(--bhc-border);
  color: var(--bhc-ink-soft);
  box-shadow: var(--bhc-shadow-sm);
  font: 700 11px var(--bhc-font-body);
}
#bh-lang-picker-slot .bh-langpicker__current { margin-right: 0; font-weight: 750; }
#bh-lang-picker-slot .bh-langpicker__btn:hover {
  background: var(--bhc-panel-alt);
  border-color: var(--bhc-border-strong);
  color: var(--bhc-ink);
}
#bh-lang-picker-slot .bh-langpicker__btn:focus-visible {
  outline: 2px solid var(--bhc-gold);
  outline-offset: 2px;
}
#bh-lang-picker-slot .bh-langpicker__btn[aria-expanded="true"] {
  background: var(--bhc-panel-alt);
  border-color: var(--bhc-gold-line);
  color: var(--bhc-ink);
}
#bh-lang-picker-slot .bh-langpicker__menu {
  top: calc(100% + 8px);
  right: 0;
  bottom: auto;
  left: auto;
  width: 150px;
  background: var(--bhc-panel);
  border-color: var(--bhc-border);
  border-radius: var(--bhc-radius);
  box-shadow: var(--bhc-shadow-lg);
  z-index: 1200;
}
#bh-lang-picker-slot .bh-langpicker__menu button {
  min-height: 36px;
  color: var(--bhc-ink);
  font-family: var(--bhc-font-body);
}
#bh-lang-picker-slot .bh-langpicker__menu button:hover,
#bh-lang-picker-slot .bh-langpicker__menu button:focus-visible {
  background: var(--bhc-gold-soft);
  color: var(--bhc-ink);
  outline: none;
}
#bh-lang-picker-slot .bh-langpicker__menu button.is-active {
  background: var(--bhc-ink);
  color: var(--bhc-panel);
}
.bh-sidebar__support {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  border-radius: 10px;
  color: var(--ink-600);
  text-decoration: none; font-size: 13px;
}
.bh-sidebar__support:hover { background: var(--bh-panel-alt); color: var(--ink-900); }

/* ---- Main ---- */
.bh-main {
  min-width: 0; /* prevent grid blowout */
  display: flex; flex-direction: column;
}

/* ---- Topbar ---- */
.bh-topbar {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; gap: 20px;
  padding: 16px 32px;
  background: rgba(247, 244, 237, 0.85);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--bh-border);
}
.bh-topbar__menu { display: none; background: transparent; border: 0; color: var(--ink-900); padding: 8px; border-radius: 8px; }
.bh-topbar__menu:hover { background: var(--bh-panel-alt); }

.bh-topbar__titleblock { min-width: 0; }
.bh-topbar__eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--bh-eyebrow); }
.bh-topbar__title {
  font-family: 'Fraunces', serif;
  font-size: clamp(22px, 2.2vw, 28px);
  font-weight: 500;
  margin-top: 2px;
}

.bh-topbar__right { margin-left: auto; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.bh-topbar__filters {
  display: flex; align-items: center; gap: 10px;
  background: transparent;
  border: 0;
  padding: 0;
  border-radius: 10px;
  box-shadow: none;
}
.bh-topbar__filterlabel {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ink-400);
}
.bh-chipgroup { display: flex; gap: 4px; }
.bh-chip {
  padding: 6px 12px; border-radius: 999px;
  border: 1px solid transparent;
  background: transparent;
  font-size: 12px; font-weight: 600;
  color: var(--ink-600);
  transition: background 120ms, color 120ms;
}
.bh-chip:hover { background: var(--bh-panel-alt); color: var(--ink-900); }
.bh-chip.is-active { background: var(--navy-900); color: var(--cream-50); }

/* =============================================================
   SCOPE PICKER — dropdown replacement for the chip strip
   ============================================================= */
.bh-scope-picker {
  position: relative;
  display: inline-block;
}
.bh-scope-picker__trigger {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px 6px 14px;
  min-height: 36px;
  box-sizing: border-box;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  box-shadow: var(--bh-shadow-sm);
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-900);
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
  min-width: 0;
  max-width: 280px;
}
.bh-scope-picker__trigger:hover {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
}
.bh-scope-picker.is-open .bh-scope-picker__trigger {
  background: var(--bh-panel-alt);
  border-color: var(--gold-500);
}
.bh-scope-picker__trigger:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 2px;
}
.bh-scope-picker__name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
.bh-scope-picker__count {
  min-width: 22px;
  padding: 1px 7px;
  border-radius: 999px;
  background: rgba(10, 21, 32, 0.06);
  color: var(--ink-700);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-align: center;
  flex-shrink: 0;
}
.bh-scope-picker__chev {
  color: var(--ink-400);
  transition: transform 0.25s ease, color 0.25s ease;
  flex-shrink: 0;
}
.bh-scope-picker.is-open .bh-scope-picker__chev {
  transform: rotate(180deg);
  color: var(--gold-700);
}

.bh-scope-picker__panel {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 260px;
  max-width: 320px;
  z-index: 50;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  box-shadow: var(--bh-shadow-md);
  padding: 6px 4px 6px 6px;
  display: flex;
  flex-direction: column;
  max-height: 380px;
  overflow: hidden;
}
.bh-scope-picker__search {
  position: relative;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 8px;
  border-radius: 8px;
  background: var(--bh-bg);
  border: 1px solid var(--bh-border);
  margin: 4px 4px 6px;
}
.bh-scope-picker__search:focus-within {
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(201, 160, 106, 0.12);
}
.bh-scope-picker__search svg {
  color: var(--ink-400);
  flex-shrink: 0;
}
.bh-scope-picker__search input {
  flex: 1 1 0;
  min-width: 0;
  border: 0;
  background: transparent;
  padding: 5px 0;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: var(--ink-900);
  outline: none;
}
.bh-scope-picker__search input::placeholder { color: var(--ink-400); }
.bh-scope-picker__list {
  overflow-y: auto;
  flex: 1 1 auto;
  padding: 2px 2px 4px;
  scrollbar-width: thin;
  scrollbar-color: rgba(201, 160, 106, 0.32) transparent;
}
.bh-scope-picker__list::-webkit-scrollbar { width: 6px; }
.bh-scope-picker__list::-webkit-scrollbar-thumb { background: rgba(201, 160, 106, 0.32); border-radius: 999px; }

.bh-scope-picker__section {
  padding: 8px 8px 4px;
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-400);
}

.bh-scope-picker__opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  padding: 7px 10px;
  background: transparent;
  border: 0;
  border-radius: 7px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink-700);
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.bh-scope-picker__opt:hover {
  background: var(--bh-panel-alt);
  color: var(--ink-900);
}
.bh-scope-picker__opt:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 1px;
}
.bh-scope-picker__opt.is-active {
  background: rgba(201, 160, 106, 0.12);
  color: var(--gold-700);
  font-weight: 600;
}
.bh-scope-picker__opt.is-active .bh-scope-picker__optCount {
  background: var(--gold-500);
  color: #0a1520;
}
.bh-scope-picker__optName {
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bh-scope-picker__optCount {
  min-width: 22px;
  padding: 1px 7px;
  border-radius: 999px;
  background: rgba(10, 21, 32, 0.06);
  color: var(--ink-500);
  font-size: 10.5px;
  font-weight: 700;
  text-align: center;
  flex-shrink: 0;
}

/* Dark mode overrides */
html[data-theme="dark"] .bh-scope-picker__trigger { color: var(--ink-900); }
html[data-theme="dark"] .bh-scope-picker__trigger:hover { background: rgba(244, 234, 214, 0.04); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-scope-picker__count { background: rgba(244, 234, 214, 0.06); color: var(--ink-700); }
html[data-theme="dark"] .bh-scope-picker__panel { background: var(--bh-panel-alt); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-scope-picker__search { background: var(--bh-panel); border-color: var(--bh-border); }
html[data-theme="dark"] .bh-scope-picker__opt:hover { background: rgba(244, 234, 214, 0.05); }
html[data-theme="dark"] .bh-scope-picker__opt.is-active { background: rgba(212, 180, 127, 0.14); color: var(--gold-500); }
html[data-theme="dark"] .bh-scope-picker__optCount { background: rgba(244, 234, 214, 0.06); color: var(--ink-500); }

@media (prefers-reduced-motion: reduce) {
  .bh-scope-picker__trigger,
  .bh-scope-picker__chev,
  .bh-scope-picker__opt { transition: none !important; }
}

.bh-topbar__user { position: relative; }
/* BH-015: standalone round icon button (vanilla-shell theme toggle). */
.bh-topbar__iconbtn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  color: var(--ink-900);
  box-shadow: var(--bh-shadow-sm);
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}
.bh-topbar__iconbtn:hover { background: var(--bh-panel-alt); border-color: var(--bh-border-strong); }
.bh-topbar__iconbtn:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 2px; }
.bh-topbar__theme-sun { display: none; }
html[data-theme="dark"] .bh-topbar__theme-moon { display: none; }
html[data-theme="dark"] .bh-topbar__theme-sun { display: block; }
#bh-agent-status-slot .bh-as-chip { min-height: 36px; box-sizing: border-box; }
@media (pointer: coarse) {
  /* min-* + flex-shrink:0 so the ~250px topbar cluster can't squeeze the
     44px target back down (render gate measured 30px wide at 390px). */
  .bh-topbar__iconbtn {
    width: 44px; height: 44px;
    min-width: 44px; min-height: 44px;
    flex-shrink: 0;
  }
  #bh-lang-picker-slot .bh-langpicker__btn {
    min-width: 66px;
    min-height: 44px;
    height: 44px;
  }
}

.bh-topbar__userbtn {
  display: flex; align-items: center; gap: 10px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  min-height: 36px;
  padding: 2px 10px 2px 3px;
  border-radius: 999px;
  color: var(--ink-900);
  box-shadow: var(--bh-shadow-sm);
}
.bh-topbar__userbtn:hover { border-color: var(--bh-border-strong); }
.bh-topbar__avatar {
  width: 30px; height: 30px; border-radius: 999px;
  background: linear-gradient(140deg, var(--gold-400), var(--gold-500));
  color: var(--navy-950);
  display: grid; place-items: center;
  font-family: 'Fraunces', serif; font-weight: 700; font-size: 13px;
}
.bh-topbar__userinfo { display: flex; flex-direction: column; line-height: 1.1; text-align: left; }
.bh-topbar__username { font-size: 13px; font-weight: 600; }
.bh-topbar__userrole { font-size: 11px; color: var(--ink-400); }
.bh-topbar__drop {
  position: absolute; top: calc(100% + 8px); right: 0; min-width: 180px;
  background: #fff; border: 1px solid var(--bh-border);
  border-radius: 12px; padding: 6px;
  box-shadow: var(--bh-shadow-lg);
  display: flex; flex-direction: column;
}
.bh-topbar__drop[hidden] { display: none; }
.bh-topbar__drop a, .bh-topbar__drop button {
  display: block; width: 100%; text-align: left;
  padding: 9px 12px; font-size: 13px; color: var(--ink-900);
  background: transparent; border: 0; border-radius: 8px;
  text-decoration: none;
}
.bh-topbar__drop a:hover, .bh-topbar__drop button:hover { background: var(--bh-panel-alt); }

/* ---- Content area ---- */
.bh-content { padding: 28px 32px 56px; }
.bh-view__head {
  display: flex; justify-content: space-between; align-items: flex-end;
  margin-bottom: 18px; gap: 20px; flex-wrap: wrap;
}
.bh-view__head h2 { font-size: 24px; font-weight: 500; }
.bh-view__head p { font-size: 14px; margin-top: 4px; }

/* =========================================================
   PORTFOLIO COMPARISON TABLE (Portfolio view)
   ========================================================= */
.bh-cmp { margin-top: 20px; margin-bottom: 20px; }
.bh-cmp__scroll {
  overflow-x: auto;
  margin: 0 -4px;
  padding: 4px;
  scrollbar-width: thin;
}
.bh-cmp__scroll::-webkit-scrollbar { height: 8px; }
.bh-cmp__scroll::-webkit-scrollbar-thumb { background: rgba(28, 24, 18, 0.12); border-radius: 999px; }

.bh-cmp__table {
  width: 100%;
  min-width: 640px;
  border-collapse: separate;
  border-spacing: 0;
}
.bh-cmp__metric-head {
  position: sticky; left: 0; z-index: 2;
  background: var(--bh-panel);
  text-align: left;
  padding: 10px 14px;
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-500);
  border-bottom: 2px solid var(--bh-border-strong);
  min-width: 170px;
}
.bh-cmp__prop-head {
  text-align: left;
  padding: 14px 16px 12px;
  border-bottom: 2px solid var(--bh-border-strong);
  min-width: 190px;
  vertical-align: top;
  background: linear-gradient(180deg, rgba(201, 160, 106, 0.04) 0%, transparent 100%);
}
.bh-cmp__prop-name {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 15px;
  font-weight: 500;
  color: var(--ink-900);
  letter-spacing: -0.005em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}
.bh-cmp__prop-sub {
  font-size: 11.5px;
  color: var(--ink-500);
  margin-top: 3px;
}
.bh-cmp__superhost {
  display: inline-block;
  margin-top: 6px;
  font-size: 9.5px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--gold-500);
  background: rgba(201, 160, 106, 0.1);
  border: 1px solid rgba(201, 160, 106, 0.28);
  padding: 3px 7px;
  border-radius: 999px;
}

.bh-cmp__metric-cell {
  position: sticky; left: 0; z-index: 1;
  background: var(--bh-panel);
  padding: 12px 14px;
  font-size: 12.5px;
  color: var(--ink-700);
  font-weight: 500;
  border-bottom: 1px solid var(--bh-border);
  white-space: nowrap;
}
.bh-cmp__td {
  padding: 12px 16px;
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500;
  font-size: 14.5px;
  color: var(--ink-900);
  border-bottom: 1px solid var(--bh-border);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  position: relative;
}
.bh-cmp__td--top {
  color: var(--gold-500);
  background: rgba(201, 160, 106, 0.07);
  font-weight: 600;
}
.bh-cmp__crown {
  display: inline-block;
  margin-left: 6px;
  color: var(--gold-500);
  font-size: 10px;
  vertical-align: middle;
}
.bh-cmp__tr--zebra .bh-cmp__metric-cell,
.bh-cmp__tr--zebra .bh-cmp__td {
  background: rgba(16, 31, 48, 0.018);
}
.bh-cmp__tr--zebra .bh-cmp__td--top {
  background: rgba(201, 160, 106, 0.1);
}

/* =========================================================
   PORTFOLIO MAP (Portfolio view)
   ========================================================= */
.bh-map { margin-bottom: 20px; }
.bh-map__legend {
  display: flex; flex-wrap: wrap; gap: 8px;
  align-items: center;
}
.bh-map__legendchip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(28, 24, 18, 0.04);
  border: 1px solid var(--bh-border);
  font-size: 11.5px; color: var(--ink-600);
}
.bh-map__legendchip strong { color: var(--ink-900); font-weight: 600; }
.bh-map__legenddot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.bh-map__legenddot--gold  { background: var(--gold-500); box-shadow: 0 0 0 2px rgba(201, 160, 106, 0.22); }
.bh-map__legenddot--pulse { background: var(--gold-500); animation: bh-pulse-dot 2000ms var(--bh-ease) infinite; }

.bh-map__stage {
  margin: 4px -4px -4px;
  padding: 10px 4px 0;
}
.bh-map__frame {
  position: relative;
  border-radius: var(--bh-radius);
  background: linear-gradient(180deg, #ffffff 0%, #fbf6eb 100%);
  border: 1px solid var(--bh-border);
  overflow: hidden;
  padding: 14px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.bh-map__frame::before {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(600px 200px at 50% 0%, rgba(201, 160, 106, 0.12), transparent 70%);
  pointer-events: none;
}
.bh-map__svg {
  width: 100%;
  height: auto;
  /* viewBox is 1000 × 320 (NC's real ~3.12:1 aspect), so cap at 360px
     so it doesn't grow huge on ultra-wide displays. */
  max-height: 360px;
  display: block;
  position: relative;
  z-index: 1;
}
.bh-map__label {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 14px; letter-spacing: 0.32em;
  fill: rgba(16, 31, 48, 0.42);
  font-weight: 500;
  pointer-events: none;
  text-transform: uppercase;
}

.bh-map__pin {
  cursor: pointer;
  transition: transform 200ms var(--bh-ease);
}
.bh-map__pin:hover,
.bh-map__pin:focus-visible {
  outline: none;
  transform: translate(var(--x, 0), var(--y, 0)) scale(1.05);
}
/* Stronger glow on every pin so they read clearly against the cream
   silhouette. Increased radius and opacity from the original (10/0.28
   → 13/0.4) gives each city its own halo without crowding. */
.bh-map__pin-glow {
  fill: rgba(201, 160, 106, 0.40);
  transition: r 220ms var(--bh-ease), fill 220ms var(--bh-ease);
}
/* The dot itself: gold fill with a navy stroke (instead of white).
   On the cream silhouette, navy reads more decisively than white,
   which previously got lost against the gradient. */
.bh-map__pin-dot {
  fill: var(--gold-500);
  stroke: #0a1520;
  stroke-width: 1.8;
  filter: drop-shadow(0 2px 3px rgba(16, 31, 48, 0.45));
}
.bh-map__pin:hover .bh-map__pin-glow,
.bh-map__pin:focus-visible .bh-map__pin-glow { r: 18; fill: rgba(201, 160, 106, 0.55); }

.bh-map__pin-badge {
  fill: var(--navy-900);
  stroke: #ffffff;
  stroke-width: 1.5;
}
.bh-map__pin-badge-num {
  fill: #f4ead6;
  font-size: 9px;
  font-weight: 700;
  font-family: 'Inter', sans-serif;
  pointer-events: none;
}

.bh-map__pulse {
  fill: none;
  stroke: var(--gold-500);
  stroke-width: 1.5;
  opacity: 0;
  transform-origin: center;
  animation: bh-map-pulse 2200ms var(--bh-ease) infinite;
}
@keyframes bh-map-pulse {
  0%   { r: 10; opacity: 0.85; }
  100% { r: 32; opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .bh-map__pulse { animation: none; opacity: 0; }
}

@media (max-width: 680px) {
  .bh-map__frame { padding: 8px; }
  .bh-map__label { font-size: 10px; letter-spacing: 0.22em; }
}

/* =========================================================
   YEAR IN REVIEW (Performance view — editorial panel)
   ========================================================= */
/* BH-017: the host carries class="bh-panel bh-yir" and the generic
   .bh-panel rule sits LATER in this file — at equal specificity its light
   background overrode this dark editorial card, leaving the cream #f4ead6
   text washed-out on cream. The compound selector outranks .bh-panel. */
.bh-panel.bh-yir,
.bh-yir {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(720px 320px at 110% -20%, rgba(201, 160, 106, 0.18), transparent 62%),
    linear-gradient(180deg, #14273d 0%, #0c1929 100%);
  color: #f4ead6;
  border: 1px solid rgba(201, 160, 106, 0.18);
  border-radius: var(--bh-radius-lg);
  padding: 30px 32px;
  margin-bottom: 20px;
  box-shadow: 0 24px 80px -40px rgba(10, 22, 40, 0.55);
}
.bh-yir__grain {
  position: absolute; inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(120deg, rgba(201, 160, 106, 0.06) 0%, transparent 30%),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.015) 0 1px, transparent 1px 3px);
  z-index: 0;
}
.bh-yir > * { position: relative; z-index: 1; }

.bh-yir__head {
  display: flex; justify-content: space-between; align-items: flex-end;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 24px;
}
.bh-yir__eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold-500);
  display: block;
  margin-bottom: 8px;
}
.bh-yir__headline {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(28px, 3.2vw, 38px);
  font-weight: 400;
  letter-spacing: -0.015em;
  color: #f4ead6;
  line-height: 1.1;
  margin: 0;
}
.bh-yir__headline .bh-shimmer {
  background: linear-gradient(100deg, #f4ead6 35%, #f0d6a5 50%, #f4ead6 65%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: #f4ead6;
  font-weight: 500;
}
.bh-yir__sub {
  color: rgba(244, 234, 214, 0.72);
  font-size: 14px;
  max-width: 580px;
  margin: 10px 0 0;
  line-height: 1.55;
}
.bh-yir__actions { display: flex; align-items: center; gap: 10px; }
.bh-yir .bh-btn--primary {
  background: var(--gold-500); color: var(--navy-900);
  border: 0;
  box-shadow: 0 6px 16px -6px rgba(201, 160, 106, 0.5);
}
.bh-yir .bh-btn--primary:hover { background: var(--gold-400); transform: translateY(-1px); }

.bh-yir__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 20px;
}
.bh-yir__tile {
  background: rgba(244, 234, 214, 0.04);
  border: 1px solid rgba(244, 234, 214, 0.10);
  backdrop-filter: blur(6px);
  border-radius: 14px;
  padding: 18px 20px;
  transition: border-color 220ms var(--bh-ease), background 220ms var(--bh-ease), transform 220ms var(--bh-ease);
}
.bh-yir__tile:hover {
  background: rgba(244, 234, 214, 0.06);
  border-color: rgba(201, 160, 106, 0.36);
  transform: translateY(-2px);
}
.bh-yir__tile--hero {
  grid-column: span 2;
  background: linear-gradient(135deg, rgba(201, 160, 106, 0.18) 0%, rgba(201, 160, 106, 0.04) 100%);
  border-color: rgba(201, 160, 106, 0.32);
}
.bh-yir__tile-label {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(244, 234, 214, 0.55);
}
.bh-yir__tile-value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(28px, 3vw, 38px);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: #f4ead6;
  margin: 6px 0 4px;
  font-variant-numeric: tabular-nums;
  line-height: 1.05;
}
.bh-yir__tile--hero .bh-yir__tile-value {
  font-size: clamp(38px, 4.5vw, 56px);
  color: var(--gold-500);
}
.bh-yir__tile-sub {
  font-size: 12px;
  color: rgba(244, 234, 214, 0.7);
}

.bh-yir__highlights {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  padding-top: 22px;
  border-top: 1px solid rgba(244, 234, 214, 0.12);
}
.bh-yir__highlight {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 6px 0;
}
.bh-yir__highlight-icon {
  flex-shrink: 0;
  width: 36px; height: 36px;
  border-radius: 10px;
  background: rgba(201, 160, 106, 0.14);
  color: var(--gold-500);
  display: grid; place-items: center;
  font-size: 16px;
  border: 1px solid rgba(201, 160, 106, 0.24);
}
.bh-yir__highlight-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(244, 234, 214, 0.55);
}
.bh-yir__highlight-value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 16px; font-weight: 500;
  color: #f4ead6;
  margin: 2px 0;
  letter-spacing: -0.005em;
}
.bh-yir__highlight-sub {
  font-size: 11.5px;
  color: rgba(244, 234, 214, 0.65);
}

@media (max-width: 900px) {
  .bh-yir__grid { grid-template-columns: 1fr 1fr; }
  .bh-yir__tile--hero { grid-column: span 2; }
  .bh-yir__highlights { grid-template-columns: 1fr; gap: 10px; }
}
@media (max-width: 560px) {
  .bh-yir { padding: 24px 20px; }
  .bh-yir__grid { grid-template-columns: 1fr; }
  .bh-yir__tile--hero { grid-column: span 1; }
}

/* =========================================================
   MILESTONE CARDS (Performance view)
   ========================================================= */
.bh-milestones {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 20px;
}
.bh-milestone {
  --bh-m-accent: var(--gold-500);
  --bh-m-bg: linear-gradient(135deg, #ffffff 0%, #fbf6eb 100%);
  --bh-m-glow: rgba(201, 160, 106, 0.18);
  position: relative;
  display: grid;
  grid-template-columns: 46px 1fr;
  gap: 14px;
  padding: 18px 20px;
  background: var(--bh-m-bg);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  overflow: hidden;
  isolation: isolate;
  transition: transform 220ms var(--bh-ease), box-shadow 220ms var(--bh-ease), border-color 220ms var(--bh-ease);
}
.bh-milestone::before {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(180px 120px at 110% -30%, var(--bh-m-glow), transparent 70%);
  pointer-events: none;
  z-index: 0;
}
.bh-milestone::after {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--bh-m-accent) 50%, transparent 100%);
  opacity: 0.45;
}
.bh-milestone:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--bh-m-accent) 32%, var(--bh-border));
  box-shadow: 0 14px 32px -18px rgba(16, 31, 48, 0.22);
}
.bh-milestone > * { position: relative; z-index: 1; }

.bh-milestone--gold    { --bh-m-accent: var(--gold-500);   --bh-m-bg: linear-gradient(135deg, #ffffff 0%, #fbf6eb 100%); --bh-m-glow: rgba(201, 160, 106, 0.22); }
.bh-milestone--navy    { --bh-m-accent: var(--navy-800);   --bh-m-bg: linear-gradient(135deg, #ffffff 0%, #f2f5f9 100%); --bh-m-glow: rgba(16, 31, 48, 0.10);  }
.bh-milestone--emerald { --bh-m-accent: #1e7e5a;           --bh-m-bg: linear-gradient(135deg, #ffffff 0%, #eff7f2 100%); --bh-m-glow: rgba(30, 126, 90, 0.12); }

.bh-milestone__icon {
  width: 46px; height: 46px;
  border-radius: 12px;
  display: grid; place-items: center;
  background: color-mix(in srgb, var(--bh-m-accent) 14%, white);
  color: var(--bh-m-accent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--bh-m-accent) 22%, transparent);
  flex-shrink: 0;
}
.bh-milestone__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bh-milestone__label {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ink-500);
}
.bh-milestone__value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 500;
  line-height: 1.1;
  color: var(--ink-900);
  letter-spacing: -0.015em;
  margin-top: 3px;
  font-variant-numeric: tabular-nums;
}
.bh-milestone__sub {
  font-size: 11.5px;
  color: var(--ink-500);
  margin-top: 4px;
  line-height: 1.4;
}

@media (max-width: 1100px) {
  .bh-milestones { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .bh-milestones { grid-template-columns: 1fr; }
  .bh-milestone { padding: 16px 18px; }
}

/* =========================================================
   SMART ALERTS (Intelligence view)
   ========================================================= */
.bh-alerts {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 18px 20px 16px;
  margin-bottom: 20px;
  box-shadow: var(--bh-shadow-sm);
  position: relative;
  overflow: hidden;
}
.bh-alerts::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, #b13a2a 0%, #b7791f 50%, var(--gold-500) 100%);
  opacity: 0.5;
}
.bh-alerts__head { margin-bottom: 12px; }
.bh-alerts__title {
  display: flex; align-items: center; gap: 10px;
  font-family: 'Fraunces', Georgia, serif;
  font-size: 16px; font-weight: 500;
  color: var(--ink-900);
  letter-spacing: -0.005em;
}
.bh-alerts__title svg { color: var(--gold-500); }
.bh-alerts__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px;
  padding: 0 6px;
  background: var(--navy-900);
  color: #f4ead6;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 700;
  border-radius: 999px;
}
.bh-alerts__sub {
  font-size: 12px; color: var(--ink-500);
  margin-top: 2px; padding-left: 26px;
}

.bh-alerts__list {
  display: flex; flex-direction: column;
  gap: 8px;
}
.bh-alert {
  --bh-alert-accent: var(--ink-500);
  --bh-alert-bg: rgba(28, 24, 18, 0.03);
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  border: 1px solid var(--bh-border);
  border-left: 3px solid var(--bh-alert-accent);
  border-radius: 10px;
  background: var(--bh-alert-bg);
  transition: transform 180ms var(--bh-ease), border-color 180ms var(--bh-ease), box-shadow 180ms var(--bh-ease);
}
.bh-alert:hover {
  transform: translateX(2px);
  box-shadow: 0 4px 14px -8px rgba(16, 31, 48, 0.18);
}
.bh-alert--critical { --bh-alert-accent: #b13a2a; --bh-alert-bg: rgba(177, 58, 42, 0.06); }
.bh-alert--warning  { --bh-alert-accent: #b7791f; --bh-alert-bg: rgba(183, 121, 31, 0.06); }
.bh-alert--info     { --bh-alert-accent: var(--navy-800); --bh-alert-bg: rgba(16, 31, 48, 0.04); }

.bh-alert__icon {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--bh-alert-accent) 16%, white);
  color: var(--bh-alert-accent);
  display: grid; place-items: center;
  flex-shrink: 0;
}
.bh-alert__body { min-width: 0; }
.bh-alert__title {
  font-size: 13.5px; font-weight: 600; color: var(--ink-900);
  line-height: 1.35;
}
.bh-alert__sub {
  font-size: 12px; color: var(--ink-600);
  margin-top: 2px;
  line-height: 1.4;
}
.bh-alert__cta {
  font-size: 12px; font-weight: 600;
  color: var(--bh-alert-accent);
  background: transparent;
  border: 1px solid currentColor;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 180ms var(--bh-ease), color 180ms var(--bh-ease);
}
.bh-alert__cta:hover {
  background: var(--bh-alert-accent);
  color: #ffffff;
}

@media (max-width: 680px) {
  .bh-alert { grid-template-columns: 28px 1fr; grid-template-rows: auto auto; }
  .bh-alert__cta { grid-column: 2; justify-self: start; margin-top: 4px; }
}

/* =========================================================
   UPCOMING BOOKINGS STRIP (Intelligence view)
   ========================================================= */
.bh-upcoming { margin-bottom: 20px; }
.bh-upcoming__meta {
  display: flex; align-items: center; gap: 8px;
  flex-wrap: wrap;
}
.bh-upcoming__metachip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  background: rgba(201, 160, 106, 0.08);
  border: 1px solid rgba(201, 160, 106, 0.22);
  border-radius: 999px;
  font-size: 11.5px; font-weight: 500; color: var(--ink-700);
  letter-spacing: 0.01em;
}
.bh-upcoming__metachip strong {
  color: var(--ink-900); font-weight: 600;
  font-family: 'Fraunces', Georgia, serif;
}

.bh-upcoming__scroll {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 2px 14px;
  margin: 4px -4px -4px;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.bh-upcoming__scroll::-webkit-scrollbar { height: 8px; }
.bh-upcoming__scroll::-webkit-scrollbar-track { background: transparent; }
.bh-upcoming__scroll::-webkit-scrollbar-thumb {
  background: rgba(28, 24, 18, 0.12);
  border-radius: 999px;
}
.bh-upcoming__scroll::-webkit-scrollbar-thumb:hover { background: rgba(28, 24, 18, 0.22); }

.bh-arrival-card {
  flex: 0 0 290px;
  display: grid;
  grid-template-columns: 68px 1fr;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 14px;
  overflow: hidden;
  scroll-snap-align: start;
  transition: transform 220ms var(--bh-ease), box-shadow 220ms var(--bh-ease), border-color 220ms var(--bh-ease);
  position: relative;
  isolation: isolate;
}
.bh-arrival-card::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(201, 160, 106, 0.0) 0%, rgba(201, 160, 106, 0.06) 100%);
  opacity: 0; transition: opacity 220ms var(--bh-ease);
  pointer-events: none; z-index: 0;
}
.bh-arrival-card:hover {
  transform: translateY(-2px);
  border-color: rgba(201, 160, 106, 0.32);
  box-shadow: 0 12px 28px -12px rgba(16, 31, 48, 0.18);
}
.bh-arrival-card:hover::before { opacity: 1; }
.bh-arrival-card > * { position: relative; z-index: 1; }

.bh-arrival-card__date {
  background: linear-gradient(160deg, #faf4e6 0%, #f2e6c9 100%);
  border-right: 1px solid var(--bh-border);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 14px 8px;
  text-align: center;
}
.bh-arrival-card__mon {
  font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--gold-500);
}
.bh-arrival-card__day {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 30px; font-weight: 500; line-height: 1;
  color: var(--ink-900);
  margin: 3px 0 2px;
  letter-spacing: -0.01em;
}
.bh-arrival-card__dow {
  font-size: 10px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ink-500);
}

.bh-arrival-card__body {
  display: flex; flex-direction: column; gap: 10px;
  padding: 12px 14px;
  min-width: 0;
}
.bh-arrival-card__top {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.bh-arrival-card__tag {
  display: inline-flex; align-items: center;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 10.5px; font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.bh-arrival-card__tag--gold    { color: #7a5a25; background: rgba(201, 160, 106, 0.16); border: 1px solid rgba(201, 160, 106, 0.34); }
.bh-arrival-card__tag--warm    { color: #8a4b15; background: rgba(217, 119, 6, 0.10);  border: 1px solid rgba(217, 119, 6, 0.22); }
.bh-arrival-card__tag--neutral { color: var(--ink-700); background: rgba(28, 24, 18, 0.05); border: 1px solid var(--bh-border); }
.bh-arrival-card__tag--mute    { color: var(--ink-500); background: transparent; border: 1px solid var(--bh-border); }

.bh-arrival-card__channel {
  font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-500);
  padding: 2px 6px;
  border-radius: 4px;
  background: rgba(28, 24, 18, 0.04);
}
.bh-arrival-card__channel--airbnb { color: #b1382f; background: rgba(255, 90, 95, 0.08); }
.bh-arrival-card__channel--vrbo   { color: #1a4c9a; background: rgba(25, 90, 180, 0.08); }
.bh-arrival-card__channel--direct { color: var(--gold-500); background: rgba(201, 160, 106, 0.10); }

.bh-arrival-card__guest {
  display: flex; align-items: center; gap: 10px;
  min-width: 0;
}
.bh-arrival-card__avatar {
  flex: 0 0 34px; width: 34px; height: 34px;
  border-radius: 50%;
  background: linear-gradient(140deg, var(--navy-900) 0%, #22364f 100%);
  color: #f4ead6;
  display: grid; place-items: center;
  font-size: 11px; font-weight: 700; letter-spacing: 0.04em;
  box-shadow: 0 2px 6px rgba(16, 31, 48, 0.15), inset 0 0 0 1px rgba(201, 160, 106, 0.24);
}
.bh-arrival-card__guestinfo { min-width: 0; flex: 1 1 auto; }
.bh-arrival-card__guestname {
  font-size: 13.5px; font-weight: 600; color: var(--ink-900);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.bh-arrival-card__property {
  font-size: 11.5px; color: var(--ink-500);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-top: 1px;
}

.bh-arrival-card__meta {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; color: var(--ink-600);
  border-top: 1px dashed var(--bh-border);
  padding-top: 9px;
}
.bh-arrival-card__meta strong {
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500;
  color: var(--ink-900);
}
.bh-arrival-card__dot { color: var(--ink-300); }
.bh-arrival-card__rev {
  margin-left: auto;
  color: var(--gold-500);
  font-weight: 600;
  font-family: 'Fraunces', Georgia, serif;
  font-size: 14px;
  letter-spacing: -0.005em;
}

@media (max-width: 560px) {
  .bh-arrival-card { flex: 0 0 260px; grid-template-columns: 60px 1fr; }
  .bh-arrival-card__day { font-size: 26px; }
}

/* =========================================================
   KPI TILES
   ========================================================= */
.bh-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 20px;
}
.bh-kpi {
  position: relative;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 18px 20px;
  overflow: hidden;
  box-shadow: var(--bh-shadow-sm);
  transition: box-shadow 180ms, transform 180ms;
}
.bh-kpi:hover { box-shadow: var(--bh-shadow-md); transform: translateY(-1px); }
.bh-kpi__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.bh-kpi__label {
  font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink-400);
}
.bh-kpi__icon {
  width: 32px; height: 32px; border-radius: 8px;
  display: grid; place-items: center;
  background: var(--bh-panel-alt);
  color: var(--gold-500);
}
.bh-kpi__value {
  font-family: 'Fraunces', serif;
  font-size: 30px; font-weight: 500; letter-spacing: -0.02em;
  color: var(--ink-900);
  line-height: 1.1;
}
.bh-kpi__sub { margin-top: 4px; font-size: 12px; color: var(--ink-400); }
.bh-kpi__delta {
  display: inline-flex; align-items: center; gap: 4px;
  margin-top: 10px;
  font-size: 12px; font-weight: 600;
  padding: 3px 8px; border-radius: 999px;
}
.bh-kpi__delta.is-up { background: var(--bh-success-bg); color: var(--bh-success); }
.bh-kpi__delta.is-down { background: var(--bh-danger-bg); color: var(--bh-danger); }
.bh-kpi__delta.is-flat { background: var(--bh-panel-alt); color: var(--ink-600); }
.bh-kpi__spark {
  position: absolute; bottom: 0; left: 0; right: 0; height: 36px;
  opacity: 0.85;
  pointer-events: none;
}

/* =========================================================
   GRID LAYOUTS
   ========================================================= */
.bh-grid { display: grid; gap: 16px; margin-bottom: 16px; }
.bh-grid--7-3 { grid-template-columns: 7fr 3fr; }
.bh-grid--6-4 { grid-template-columns: 6fr 4fr; }
.bh-grid--5-5 { grid-template-columns: 1fr 1fr; }

/* Sidebar section headers */
.bh-sidebar__section {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink-400);
  padding: 14px 12px 6px;
  margin-top: 4px;
}
.bh-sidebar__section:first-of-type { margin-top: 0; padding-top: 0; }

/* Tag chips (small muted) */
.bh-tag {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px; font-weight: 600;
  color: var(--ink-400);
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
}

.bh-panel--feature { background: linear-gradient(180deg, #ffffff 0%, #fbf8f1 100%); }

.bh-view__period { display: flex; align-items: center; gap: 10px; }

/* =========================================================
   ARRIVAL HERO + GOAL RING + LIVE TICKER
   ========================================================= */
.bh-arrival {
  display: grid; grid-template-columns: 1fr auto; gap: 32px;
  align-items: center;
  background:
    radial-gradient(720px 320px at 108% -30%, rgba(201, 160, 106, 0.26), transparent 62%),
    radial-gradient(520px 260px at -10% 120%, rgba(16, 31, 48, 0.06), transparent 62%),
    linear-gradient(135deg, #ffffff 0%, #faf4e6 55%, #f2e6c9 100%);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius-lg);
  padding: 30px 34px;
  margin-bottom: 22px;
  box-shadow: var(--bh-shadow-sm), 0 20px 60px -30px rgba(16, 31, 48, 0.18);
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
/* subtle grain / sheen overlay */
.bh-arrival__grain {
  position: absolute; inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(120deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0) 40%),
    repeating-linear-gradient(0deg, rgba(28, 24, 18, 0.012) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(90deg, rgba(28, 24, 18, 0.012) 0 1px, transparent 1px 3px);
  mix-blend-mode: multiply;
  opacity: 0.8;
  z-index: 0;
}
.bh-arrival > * { position: relative; z-index: 1; }

.bh-arrival__copy { max-width: 720px; }
.bh-arrival__eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--bh-eyebrow); display: inline-flex; align-items: center; gap: 8px;
}
.bh-arrival__eyebrow span { color: var(--ink-600); font-weight: 600; letter-spacing: 0.08em; }

.bh-arrival__heading {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(28px, 3.4vw, 40px);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -0.015em;
  margin: 10px 0 10px;
  color: var(--ink-900);
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.28em;
}
.bh-arrival__heading #bh-arrival-greeting { font-weight: 300; color: var(--ink-700); }
.bh-arrival__heading .bh-shimmer { font-weight: 500; }
.bh-arrival__period { color: var(--gold-500); margin-left: -0.18em; }

.bh-arrival__state {
  font-size: 15px;
  color: var(--ink-700);
  margin: 0 0 16px;
  line-height: 1.55;
  max-width: 620px;
}
.bh-arrival__state strong {
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500;
  font-size: 18px;
  color: var(--ink-900);
}
.bh-arrival__delta {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.02em;
  vertical-align: 2px;
}
.bh-arrival__delta--up   { color: #0f6b3d; background: rgba(20, 140, 80, 0.10); border: 1px solid rgba(20, 140, 80, 0.18); }
.bh-arrival__delta--down { color: #a52a1f; background: rgba(170, 45, 30, 0.10); border: 1px solid rgba(170, 45, 30, 0.18); }
.bh-arrival__delta--flat { color: var(--ink-500); background: rgba(28, 24, 18, 0.05); border: 1px solid var(--bh-border); }

/* Live portfolio ticker (chip row) */
.bh-ticker {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 14px;
}
.bh-ticker__chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 13px 7px 11px;
  background: rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(8px);
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  font-size: 12.5px; font-weight: 500;
  color: var(--ink-800);
  box-shadow: 0 1px 2px rgba(16, 31, 48, 0.04);
  transition: transform 200ms var(--bh-ease), box-shadow 200ms var(--bh-ease), border-color 200ms var(--bh-ease);
}
.bh-ticker__chip:hover {
  transform: translateY(-1px);
  border-color: rgba(201, 160, 106, 0.4);
  box-shadow: 0 4px 12px rgba(16, 31, 48, 0.08);
}
.bh-ticker__chip strong {
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500;
  color: var(--ink-900);
  font-size: 13.5px;
}
.bh-ticker__dot {
  width: 7px; height: 7px; border-radius: 50%;
  display: inline-block; flex: 0 0 auto;
  background: var(--ink-400);
}
.bh-ticker__dot--gold { background: var(--gold-500); }
.bh-ticker__dot--warn { background: #d97706; }
.bh-ticker__dot--ok   { background: #0f6b3d; }
.bh-ticker__dot--mute { background: rgba(28, 24, 18, 0.25); }

/* Goal ring block */
.bh-arrival__goal { display: flex; align-items: center; }
.bh-goal {
  display: flex; align-items: center; gap: 18px;
  position: relative;
}
.bh-goal__svg { flex: 0 0 auto; filter: drop-shadow(0 6px 14px rgba(201, 160, 106, 0.22)); }
.bh-goal__ring-track { stroke: rgba(28, 24, 18, 0.08); }
.bh-goal__ring-fill {
  stroke: var(--gold-500);
  stroke-dasharray: 283;                /* 2πr @ r=45 */
  stroke-dashoffset: 283;               /* starts empty, animates down */
  animation: bh-goal-fill 1400ms var(--bh-ease) 220ms forwards;
}
@keyframes bh-goal-fill {
  from { stroke-dashoffset: 283; }
  to   { stroke-dashoffset: var(--bh-goal-final, 0); }
}
.bh-goal__text { display: flex; flex-direction: column; }
.bh-goal__pct { font-family: 'Fraunces', serif; font-size: 30px; font-weight: 500; line-height: 1; color: var(--ink-900); letter-spacing: -0.01em; }
.bh-goal__label { font-size: 12px; color: var(--ink-600); margin-top: 6px; max-width: 168px; line-height: 1.4; }
.bh-goal__sub { font-size: 11px; color: var(--ink-400); margin-top: 4px; max-width: 210px; line-height: 1.4; }

@media (prefers-reduced-motion: reduce) {
  .bh-goal__ring-fill { animation: none; stroke-dashoffset: var(--bh-goal-final, 0); }
}

/* =========================================================
   EDITORIAL BRIEFING — magazine-style "state of the portfolio"
   ========================================================= */
.bh-briefing {
  position: relative;
  margin: 0 0 24px;
  padding: 28px 34px 26px;
  background:
    radial-gradient(680px 260px at 92% -10%, rgba(201, 160, 106, 0.10), transparent 68%),
    linear-gradient(180deg, #fbf7ee 0%, #fffdf7 100%);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius-lg);
  box-shadow: var(--bh-shadow-sm);
  overflow: hidden;
  isolation: isolate;
}
/* Decorative top hairline + gold flourish */
.bh-briefing__rule {
  position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(90deg,
    var(--gold-500) 0%,
    var(--gold-300) 28%,
    transparent 58%,
    var(--gold-500) 100%);
  opacity: 0.85;
}
.bh-briefing::before {
  content: "";
  position: absolute; top: 18px; right: 28px; width: 42px; height: 42px;
  background:
    radial-gradient(circle at center, rgba(201, 160, 106, 0.35), rgba(201, 160, 106, 0) 70%);
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}
.bh-briefing > * { position: relative; z-index: 1; }

/* Masthead */
.bh-briefing__masthead {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 4px 0 16px;
  border-bottom: 1px solid var(--bh-border);
  margin-bottom: 22px;
}
.bh-briefing__logo { display: flex; align-items: baseline; gap: 12px; }
.bh-briefing__mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; border-radius: 6px;
  background: linear-gradient(145deg, var(--bh-navy) 0%, #1c2f45 100%);
  color: var(--cream-500, #f4ead6);
  font-family: 'Fraunces', serif; font-weight: 600; font-size: 13px; letter-spacing: 0.02em;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 4px 10px rgba(16, 31, 48, 0.18);
}
.bh-briefing__wordmark {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 17px; font-weight: 500; font-style: italic;
  color: var(--ink-900); letter-spacing: 0.005em;
}
.bh-briefing__issue {
  font-family: 'Inter', sans-serif;
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--ink-500);
}

/* Body grid — lead story + pull-stats sidebar */
.bh-briefing__body {
  display: grid; grid-template-columns: minmax(0, 1fr) 280px;
  gap: 40px;
  align-items: start;
}
@media (max-width: 960px) {
  .bh-briefing__body { grid-template-columns: 1fr; gap: 28px; }
}

.bh-briefing__lead { min-width: 0; }
.bh-briefing__eyebrow {
  display: inline-block;
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bh-eyebrow);
  margin-bottom: 10px;
}
.bh-briefing__headline {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(30px, 3.6vw, 46px);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.02em;
  color: var(--ink-900);
  margin: 0 0 14px;
}
.bh-briefing__headline em,
.bh-briefing__headline b,
.bh-briefing__headline strong {
  font-style: italic; font-weight: 500;
  color: var(--gold-500);
}
.bh-briefing__deck {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(16px, 1.4vw, 19px);
  font-weight: 300; font-style: italic;
  line-height: 1.4;
  color: var(--ink-700);
  margin: 0 0 22px;
  padding-left: 14px;
  border-left: 2px solid var(--gold-400);
}
.bh-briefing__copy {
  font-family: 'Inter', sans-serif;
  font-size: 14.5px; line-height: 1.7;
  color: var(--ink-800);
  margin: 0 0 18px;
  max-width: 62ch;
}
.bh-briefing__copy strong { color: var(--ink-900); font-weight: 600; }
.bh-briefing__dropcap {
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500; font-size: 54px; line-height: 0.88;
  color: var(--gold-500);
  float: left;
  margin: 4px 10px -4px 0;
  padding-top: 2px;
}
.bh-briefing__byline {
  display: flex; align-items: center; gap: 10px;
  padding-top: 14px;
  border-top: 1px dashed var(--bh-border);
  font-size: 11px; letter-spacing: 0.06em;
}
.bh-briefing__byline-label {
  text-transform: uppercase; color: var(--ink-400); font-weight: 600; letter-spacing: 0.14em;
}
.bh-briefing__byline-name {
  color: var(--ink-700); font-weight: 600;
}

/* Pull-stats sidebar */
.bh-briefing__pulls {
  display: flex; flex-direction: column; gap: 14px;
  padding: 18px 20px;
  background:
    linear-gradient(180deg, rgba(255, 253, 246, 0.7) 0%, rgba(251, 247, 238, 0.7) 100%);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  position: relative;
}
.bh-briefing__pulls::before {
  content: "At a glance";
  position: absolute; top: -8px; left: 14px;
  padding: 0 8px;
  background: #fbf7ee;
  font-size: 9.5px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold-500);
}
.bh-briefing__pull {
  display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 10px;
  padding: 12px 0;
  border-bottom: 1px dashed var(--bh-border);
}
.bh-briefing__pull:last-child { border-bottom: 0; padding-bottom: 4px; }
.bh-briefing__pull:first-child { padding-top: 4px; }
.bh-briefing__pull-label {
  font-size: 11px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ink-500);
}
.bh-briefing__pull-sub { font-size: 10.5px; color: var(--ink-400); margin-top: 3px; font-weight: 500; }
.bh-briefing__pull-value {
  font-family: 'Fraunces', serif;
  font-size: 24px; font-weight: 500; line-height: 1;
  color: var(--ink-900);
  letter-spacing: -0.01em;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.bh-briefing__pull-trend {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 10.5px; font-weight: 600;
  margin-top: 4px;
}
.bh-briefing__pull-trend--up   { color: #0f6b3d; }
.bh-briefing__pull-trend--down { color: #a52a1f; }
.bh-briefing__pull-trend--flat { color: var(--ink-500); }

/* Footer — 3 bullet notes */
.bh-briefing__foot { margin-top: 22px; }
.bh-briefing__footrule {
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--bh-border-strong) 15%, var(--bh-border-strong) 85%, transparent 100%);
  margin-bottom: 18px;
}
.bh-briefing__notes {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 860px) {
  .bh-briefing__notes { grid-template-columns: 1fr; gap: 12px; }
}
.bh-briefing__note {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 12.5px; line-height: 1.5;
  color: var(--ink-700);
}
.bh-briefing__note-num {
  flex: 0 0 auto;
  font-family: 'Fraunces', serif;
  font-size: 14px; font-weight: 500; font-style: italic;
  color: var(--gold-500);
  width: 22px; height: 22px; border-radius: 50%;
  border: 1px solid rgba(201, 160, 106, 0.4);
  display: inline-flex; align-items: center; justify-content: center;
  letter-spacing: 0;
}
.bh-briefing__note strong { color: var(--ink-900); font-weight: 600; }

/* Dark mode */
html[data-theme="dark"] .bh-briefing {
  background:
    radial-gradient(680px 260px at 92% -10%, rgba(212, 180, 127, 0.10), transparent 68%),
    linear-gradient(180deg, #142034 0%, #101a2d 100%);
  border-color: var(--bh-border);
}
html[data-theme="dark"] .bh-briefing__mark {
  background: linear-gradient(145deg, #1a2844 0%, #26365a 100%);
  color: var(--gold-300);
}
html[data-theme="dark"] .bh-briefing__wordmark { color: var(--ink-900); }
html[data-theme="dark"] .bh-briefing__issue { color: var(--ink-500); }
html[data-theme="dark"] .bh-briefing__headline { color: var(--ink-900); }
html[data-theme="dark"] .bh-briefing__deck { color: var(--ink-700); }
html[data-theme="dark"] .bh-briefing__copy { color: var(--ink-800); }
html[data-theme="dark"] .bh-briefing__copy strong { color: var(--ink-900); }
html[data-theme="dark"] .bh-briefing__pulls {
  background: linear-gradient(180deg, rgba(26, 40, 68, 0.6) 0%, rgba(20, 32, 52, 0.6) 100%);
}
html[data-theme="dark"] .bh-briefing__pulls::before {
  background: #131e31;
}
html[data-theme="dark"] .bh-briefing__pull-value { color: var(--ink-900); }
html[data-theme="dark"] .bh-briefing__pull-label { color: var(--ink-500); }
html[data-theme="dark"] .bh-briefing__pull-sub { color: var(--ink-400); }
html[data-theme="dark"] .bh-briefing__byline-name { color: var(--ink-800); }
html[data-theme="dark"] .bh-briefing__note { color: var(--ink-700); }
html[data-theme="dark"] .bh-briefing__note strong { color: var(--ink-900); }

/* Reveal animation — cascaded */
.bh-briefing__headline,
.bh-briefing__deck,
.bh-briefing__copy,
.bh-briefing__byline,
.bh-briefing__pull,
.bh-briefing__note {
  opacity: 0;
  transform: translateY(8px);
  animation: bh-briefing-reveal 680ms var(--bh-ease) forwards;
}
.bh-briefing__headline { animation-delay: 120ms; }
.bh-briefing__deck     { animation-delay: 220ms; }
.bh-briefing__copy     { animation-delay: 320ms; }
.bh-briefing__byline   { animation-delay: 520ms; }
.bh-briefing__pull:nth-child(1) { animation-delay: 380ms; }
.bh-briefing__pull:nth-child(2) { animation-delay: 460ms; }
.bh-briefing__pull:nth-child(3) { animation-delay: 540ms; }
.bh-briefing__note:nth-child(1) { animation-delay: 580ms; }
.bh-briefing__note:nth-child(2) { animation-delay: 640ms; }
.bh-briefing__note:nth-child(3) { animation-delay: 700ms; }
@keyframes bh-briefing-reveal {
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .bh-briefing__headline, .bh-briefing__deck, .bh-briefing__copy,
  .bh-briefing__byline, .bh-briefing__pull, .bh-briefing__note {
    animation: none; opacity: 1; transform: none;
  }
}

/* =========================================================
   MARKET POSITION BARS
   ========================================================= */
.bh-mkt { display: flex; flex-direction: column; }
.bh-mkt__header {
  display: grid; grid-template-columns: 2fr 3fr 1.5fr;
  gap: 16px; padding: 0 0 8px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-400);
  border-bottom: 1px solid var(--bh-border);
}
.bh-mkt__header span:last-child { text-align: right; }
.bh-mkt__row {
  display: grid; grid-template-columns: 2fr 3fr 1.5fr;
  gap: 16px; padding: 14px 0;
  border-bottom: 1px solid var(--bh-border);
  align-items: center;
}
.bh-mkt__row:last-child { border-bottom: 0; }
.bh-mkt__title { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-mkt__sub { font-size: 11px; color: var(--ink-400); margin-top: 2px; }
.bh-mkt__bar { display: flex; flex-direction: column; gap: 4px; }
.bh-mkt__track {
  position: relative;
  height: 10px;
  background: rgba(28, 24, 18, 0.06);
  border-radius: 999px;
  overflow: visible;
}
/* M-21 (2026-05-23): animating `width` triggers layout per frame
   on mobile, producing visible jank. Convert to `transform: scaleX()`
   which the compositor handles without re-layout. The bar's final
   width is still set via inline style (no JS change); the CSS
   animation grows transform: scaleX(0) → scaleX(1) on mount. */
.bh-mkt__fill {
  height: 100%; border-radius: 999px;
  transform-origin: left;
  animation: bh-bar-grow 400ms var(--bh-ease) both;
}
.bh-mkt__median {
  position: absolute; top: -3px; bottom: -3px; left: 50%;
  width: 2px; background: var(--ink-400); opacity: 0.5;
  border-radius: 2px;
}
.bh-mkt__pct {
  font-size: 12px; font-weight: 600; color: var(--ink-900);
  font-variant-numeric: tabular-nums;
}
.bh-mkt__pct span { color: var(--ink-400); font-weight: 500; }
.bh-mkt__rev {
  font-family: 'Fraunces', serif; font-size: 15px; font-weight: 500; text-align: right;
  font-variant-numeric: tabular-nums;
}
.bh-mkt__rev span { font-family: 'Inter', sans-serif; font-size: 11px; color: var(--ink-400); font-weight: 400; }

/* =========================================================
   PACING
   ========================================================= */
.bh-pace { display: flex; flex-direction: column; gap: 16px; }
.bh-pace__row {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas:
    "label delta"
    "value value"
    "track track"
    "foot foot";
  gap: 4px;
  padding: 14px 0;
  border-bottom: 1px solid var(--bh-border);
}
.bh-pace__row:last-child { border-bottom: 0; }
.bh-pace__label { grid-area: label; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-400); }
.bh-pace__value { grid-area: value; font-family: 'Fraunces', serif; font-size: 22px; font-weight: 500; color: var(--ink-900); line-height: 1.1; margin-top: 2px; }
.bh-pace__delta { grid-area: delta; font-size: 12px; font-weight: 600; text-align: right; }
.bh-pace__track { grid-area: track; position: relative; height: 8px; background: rgba(28, 24, 18, 0.06); border-radius: 999px; margin-top: 6px; overflow: hidden; }
.bh-pace__fill { position: absolute; top: 0; left: 0; bottom: 0; border-radius: 999px; }
.bh-pace__fill--py { background: transparent; border-top: 2px dashed var(--ink-400); top: 50%; margin-top: -1px; height: 2px; opacity: 0.7; }
.bh-pace__footnote { grid-area: foot; font-size: 11px; color: var(--ink-400); margin-top: 4px; }

/* =========================================================
   INSIGHTS FEED
   ========================================================= */
.bh-insights {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 12px;
}
.bh-insight {
  display: grid; grid-template-columns: 40px 1fr; gap: 14px;
  padding: 16px;
  background: #fff;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  transition: transform 180ms, box-shadow 180ms, border-color 180ms;
}
.bh-insight:hover { transform: translateY(-1px); box-shadow: var(--bh-shadow-md); border-color: var(--bh-border-strong); }
.bh-insight__icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: grid; place-items: center;
  background: var(--bh-panel-alt);
  color: var(--gold-500);
}
.bh-insight__cat {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink-400);
}
.bh-insight__title {
  font-family: 'Fraunces', serif; font-size: 16px; font-weight: 500;
  color: var(--ink-900);
  margin-top: 2px;
  letter-spacing: -0.01em;
}
.bh-insight__text { font-size: 13px; color: var(--ink-600); margin-top: 6px; line-height: 1.55; }

.bh-insight--success .bh-insight__icon { background: var(--bh-success-bg); color: var(--bh-success); }
.bh-insight--gold    .bh-insight__icon { background: rgba(201, 160, 106, 0.16); color: var(--gold-500); }
.bh-insight--warn    .bh-insight__icon { background: var(--bh-warn-bg); color: var(--bh-warn); }
.bh-insight--info    .bh-insight__icon { background: var(--bh-info-bg); color: var(--bh-info); }

/* =========================================================
   PORTFOLIO RANKING
   ========================================================= */
.bh-rank {
  display: grid; grid-template-columns: 28px 56px 1fr auto;
  gap: 14px; align-items: center;
  padding: 10px 4px;
  border-bottom: 1px solid var(--bh-border);
  border-radius: 0;
  background: transparent;
  border-left: 0; border-right: 0; border-top: 0;
  text-align: left;
  width: 100%;
  transition: background 140ms;
  font-family: inherit;
}
.bh-rank:last-of-type { border-bottom: 0; }
.bh-rank:hover { background: var(--bh-panel-alt); }
.bh-rank__num {
  font-family: 'Fraunces', serif; font-size: 18px; font-weight: 500;
  color: var(--ink-400);
  width: 28px; text-align: center;
}
.bh-rank__thumb {
  width: 56px; height: 40px; border-radius: 8px;
  background-size: cover; background-position: center;
  background-color: var(--cream-200);
}
.bh-rank__meta { display: flex; flex-direction: column; min-width: 0; }
.bh-rank__name { font-size: 14px; font-weight: 600; color: var(--ink-900); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bh-rank__sub  { font-size: 11px; color: var(--ink-400); margin-top: 2px; }
.bh-rank__pct  { font-family: 'Fraunces', serif; font-size: 17px; font-weight: 500; font-variant-numeric: tabular-nums; }

/* Review summary */
.bh-review-summary { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--bh-border); display: flex; flex-direction: column; gap: 6px; }
.bh-review-summary__row { display: flex; justify-content: space-between; font-size: 13px; color: var(--ink-600); }
.bh-review-summary__row strong { color: var(--ink-900); font-family: 'Fraunces', serif; font-weight: 500; font-size: 15px; }

/* =========================================================
   WATERFALL (P&L)
   ========================================================= */
.bh-wf { display: flex; flex-direction: column; gap: 2px; }
.bh-wf__row {
  display: grid; grid-template-columns: 220px 1fr 160px;
  gap: 18px; align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--bh-border);
}
.bh-wf__row:last-child { border-bottom: 0; }
.bh-wf__label { font-size: 13.5px; color: var(--ink-900); font-weight: 500; }
.bh-wf__label small { display: block; font-size: 11px; color: var(--ink-400); font-weight: 400; margin-top: 2px; }
.bh-wf__barwrap { position: relative; height: 10px; background: rgba(28, 24, 18, 0.04); border-radius: 999px; overflow: hidden; }
/* M-21: transform-based grow — see .bh-mkt__fill comment above. */
.bh-wf__bar {
  position: absolute; left: 0; top: 0; bottom: 0; border-radius: 999px;
  transform-origin: left;
  animation: bh-bar-grow 400ms var(--bh-ease) both;
}
.bh-wf__value {
  text-align: right;
  font-family: 'Fraunces', serif;
  font-size: 16px; font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--ink-900);
}
.bh-wf__value small { display: block; font-size: 11px; font-family: 'Inter', sans-serif; font-weight: 400; color: var(--ink-400); margin-top: 2px; }
.bh-wf__row.is-out .bh-wf__value { color: var(--bh-danger); }
.bh-wf__row.is-start { border-top: 1px solid var(--bh-border-strong); padding-top: 14px; }
.bh-wf__row.is-start .bh-wf__label, .bh-wf__row.is-start .bh-wf__value { font-family: 'Fraunces', serif; font-size: 17px; font-weight: 500; }
.bh-wf__row.is-end {
  border-top: 2px solid var(--bh-border-strong);
  padding-top: 16px; margin-top: 4px;
  background: var(--bh-success-bg);
  border-radius: 10px;
  padding: 14px 14px;
}
.bh-wf__row.is-end .bh-wf__label, .bh-wf__row.is-end .bh-wf__value { font-family: 'Fraunces', serif; font-size: 19px; font-weight: 600; color: var(--bh-success); }
.bh-wf__row.is-end.is-negative { background: var(--bh-danger-bg); }
.bh-wf__row.is-end.is-negative .bh-wf__label,
.bh-wf__row.is-end.is-negative .bh-wf__value { color: var(--bh-danger); }

/* =========================================================
   PROPERTY CARD EXTRAS
   ========================================================= */
.bh-prop-card__rank {
  position: absolute; top: 12px; right: 12px; z-index: 1;
  background: rgba(16, 31, 48, 0.92);
  color: var(--cream-50);
  font-family: 'Fraunces', serif;
  font-weight: 600;
  font-size: 13px;
  padding: 4px 10px; border-radius: 999px;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.bh-prop-card__badge {
  background: linear-gradient(140deg, var(--gold-400), var(--gold-500));
  color: var(--navy-950);
  font-size: 10px; font-weight: 700;
  padding: 2px 8px; border-radius: 999px;
  margin-left: 6px;
  letter-spacing: 0.02em;
}
.bh-prop-card__ratings {
  font-size: 12px; color: var(--ink-600);
  padding-top: 6px;
  display: flex; align-items: center; gap: 6px;
}
.bh-prop-card__sep { color: var(--ink-400); }

/* =========================================================
   PROPERTY DETAIL — benchmark bars
   ========================================================= */
.bh-rev-bench { display: flex; flex-direction: column; gap: 10px; }
.bh-rev-bench__row {
  display: grid; grid-template-columns: 110px 1fr 120px;
  gap: 12px; align-items: center;
}
.bh-rev-bench__l { font-size: 12px; font-weight: 600; color: var(--ink-600); }
/* M-21: transform-based grow — see .bh-mkt__fill comment above. */
.bh-rev-bench__bar {
  height: 12px; border-radius: 999px;
  transform-origin: left;
  animation: bh-bar-grow 400ms var(--bh-ease) both;
}
@keyframes bh-bar-grow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
.bh-rev-bench__v { font-family: 'Fraunces', serif; font-size: 14px; font-weight: 500; text-align: right; font-variant-numeric: tabular-nums; }

/* Asset value card */
.bh-asset {
  display: flex; flex-direction: column; gap: 8px;
  padding: 4px;
}
.bh-asset__value {
  font-family: 'Fraunces', serif;
  font-size: 34px; font-weight: 500;
  color: var(--ink-900); letter-spacing: -0.02em;
  line-height: 1;
}
.bh-asset__label { font-size: 12px; font-weight: 600; color: var(--ink-400); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 12px; }
.bh-asset__row { display: flex; justify-content: space-between; align-items: center; font-size: 13px; color: var(--ink-600); padding: 6px 0; border-bottom: 1px dashed var(--bh-border); }
.bh-asset__row:last-child { border-bottom: 0; }
.bh-asset__row strong { font-family: 'Fraunces', serif; font-weight: 500; font-size: 14px; color: var(--ink-900); }

/* Category bars */
.bh-cats { display: flex; flex-direction: column; gap: 12px; }
.bh-catbar { display: grid; grid-template-columns: 110px 1fr 50px; gap: 12px; align-items: center; }
.bh-catbar__label { font-size: 13px; color: var(--ink-600); text-transform: capitalize; }
.bh-catbar__track { height: 8px; background: rgba(28, 24, 18, 0.06); border-radius: 999px; overflow: hidden; }
.bh-catbar__fill { height: 100%; background: linear-gradient(90deg, var(--gold-500), var(--gold-400)); border-radius: 999px; }
.bh-catbar__val { font-family: 'Fraunces', serif; font-size: 14px; font-weight: 500; text-align: right; font-variant-numeric: tabular-nums; }

/* Themes — tactile badges */
.bh-themes {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
}
.bh-theme-badge {
  --bh-theme-accent: var(--gold-500);
  --bh-theme-accent-soft: rgba(201, 160, 106, 0.12);
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 12px;
  padding: 12px 14px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  transition: transform 200ms var(--bh-ease), border-color 200ms var(--bh-ease), box-shadow 200ms var(--bh-ease);
}
.bh-theme-badge::after {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--bh-theme-accent);
  border-radius: 3px 0 0 3px;
  opacity: 0.6;
}
.bh-theme-badge:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--bh-theme-accent) 40%, var(--bh-border));
  box-shadow: 0 8px 22px -14px rgba(16, 31, 48, 0.22);
}
.bh-theme-badge--pos { --bh-theme-accent: #1e7e5a; --bh-theme-accent-soft: rgba(30, 126, 90, 0.12); }
.bh-theme-badge--mix { --bh-theme-accent: #b7791f; --bh-theme-accent-soft: rgba(183, 121, 31, 0.12); }
.bh-theme-badge--neg { --bh-theme-accent: #b13a2a; --bh-theme-accent-soft: rgba(177, 58, 42, 0.12); }

.bh-theme-badge--top {
  background: linear-gradient(135deg, #ffffff 0%, #faf4e6 100%);
  border-color: rgba(201, 160, 106, 0.32);
  --bh-theme-accent: var(--gold-500);
  --bh-theme-accent-soft: rgba(201, 160, 106, 0.14);
}
.bh-theme-badge--top::before {
  content: ""; position: absolute;
  right: -30px; top: -30px; width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(201, 160, 106, 0.22) 0%, transparent 65%);
  pointer-events: none;
}

.bh-theme-badge__icon {
  width: 38px; height: 38px; border-radius: 10px;
  background: var(--bh-theme-accent-soft);
  color: var(--bh-theme-accent);
  display: grid; place-items: center;
  flex-shrink: 0;
}
.bh-theme-badge__body { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.bh-theme-badge__top { display: flex; align-items: center; gap: 8px; }
.bh-theme-badge__name {
  font-size: 13.5px; font-weight: 600; color: var(--ink-900);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.bh-theme-badge__flag {
  font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--gold-500);
  padding: 2px 7px;
  background: rgba(201, 160, 106, 0.14);
  border-radius: 999px;
  border: 1px solid rgba(201, 160, 106, 0.32);
  white-space: nowrap;
}
.bh-theme-badge__meta {
  display: flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--ink-500);
}
.bh-theme-badge__sep { color: var(--ink-300); }
.bh-theme-badge__count { font-weight: 500; }
.bh-theme-badge__track {
  height: 3px;
  background: rgba(28, 24, 18, 0.06);
  border-radius: 999px;
  overflow: hidden;
  margin-top: 4px;
}
.bh-theme-badge__fill {
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, var(--bh-theme-accent) 0%, color-mix(in srgb, var(--bh-theme-accent) 60%, #ffffff) 100%);
  border-radius: 999px;
  animation: bh-theme-fill 1100ms var(--bh-ease) 200ms forwards;
}
@keyframes bh-theme-fill {
  from { width: 0; }
  to   { width: var(--bh-theme-pct, 0%); }
}
@media (prefers-reduced-motion: reduce) {
  .bh-theme-badge__fill { animation: none; width: var(--bh-theme-pct, 0%); }
}
@media (max-width: 560px) {
  .bh-themes { grid-template-columns: 1fr; }
}

/* Cap improvements */
.bh-improv {
  padding: 12px 0;
  border-bottom: 1px solid var(--bh-border);
}
.bh-improv:last-child { border-bottom: 0; }
.bh-improv__title { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-improv__meta { font-size: 12px; color: var(--ink-400); margin-top: 3px; }

/* =========================================================
   BELLO ACTIVITY
   ========================================================= */
.bh-activity__picker { display: flex; gap: 4px; flex-wrap: wrap; }
.bh-activity__pill {
  padding: 6px 12px; border-radius: 999px;
  background: #fff;
  border: 1px solid var(--bh-border);
  font-size: 12px; font-weight: 600; color: var(--ink-600);
  transition: all 120ms;
}
.bh-activity__pill:hover { border-color: var(--bh-border-strong); color: var(--ink-900); }
.bh-activity__pill.is-active { background: var(--navy-900); border-color: var(--navy-900); color: var(--cream-50); }

/* BH-017 pattern: compound selector — the generic .bh-panel rule sits LATER
   in this file and its light background was washing this dark hero out to
   cream-on-white (invisible). Same fix as .bh-panel.bh-yir. */
.bh-panel.bh-activity__hero {
  background: linear-gradient(135deg, #0a1520 0%, #172d47 100%);
  color: var(--cream-50);
  border: 0;
  margin-bottom: 16px;
}
.bh-activity__hero .bh-panel__head h3 { color: var(--cream-50); }
.bh-activity__herotop { display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: end; }
/* Stays gold-300: this eyebrow sits on .bh-activity__hero's HARDCODED dark
   gradient (both themes), where pale gold is ~12:1 — the dark --bh-eyebrow
   brass would be sub-AA here. (Review catch on the BH-018 token sweep.) */
.bh-activity__eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold-300); }
.bh-activity__month { font-family: 'Fraunces', serif; font-size: 34px; font-weight: 400; color: var(--cream-50); margin-top: 6px; letter-spacing: -0.02em; }
.bh-activity__herostat { text-align: right; }
.bh-activity__herostat-label { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(246, 238, 216, 0.7); }
.bh-activity__herostat-value { font-family: 'Fraunces', serif; font-size: 40px; font-weight: 500; color: var(--gold-300); line-height: 1.1; margin-top: 2px; }
.bh-activity__herostat-sub { font-size: 12px; color: rgba(246, 238, 216, 0.6); margin-top: 2px; }

.bh-activity__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  margin-bottom: 16px;
}
.bh-activity__stat {
  display: grid; grid-template-columns: 44px 1fr; gap: 14px;
  background: #fff;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 16px;
  box-shadow: var(--bh-shadow-sm);
}
.bh-activity__stat-icon {
  width: 44px; height: 44px;
  border-radius: 10px;
  background: var(--bh-panel-alt);
  color: var(--gold-500);
  display: grid; place-items: center;
}
.bh-activity__stat-label { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-400); }
.bh-activity__stat-value { font-family: 'Fraunces', serif; font-size: 24px; font-weight: 500; color: var(--ink-900); line-height: 1.1; margin-top: 2px; }
.bh-activity__stat-sub { font-size: 11px; color: var(--ink-400); margin-top: 2px; }

.bh-activity__timeline { display: flex; flex-direction: column; gap: 4px; }
.bh-timeline__row {
  display: grid; grid-template-columns: 32px 1fr; gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--bh-border);
}
.bh-timeline__row:last-child { border-bottom: 0; }
.bh-timeline__dot {
  width: 32px; height: 32px;
  background: var(--bh-panel-alt);
  color: var(--gold-500);
  border-radius: 999px;
  display: grid; place-items: center;
}
.bh-timeline__text { font-size: 13.5px; color: var(--ink-900); padding-top: 6px; line-height: 1.5; }

/* =========================================================
   AIRCOVER PANEL
   ========================================================= */
.bh-aircover { margin-bottom: 16px; }
.bh-aircover__head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 20px;
  align-items: start;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--bh-border);
}
.bh-aircover__head > div:first-child p {
  max-width: 52ch;
}
.bh-aircover__summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(140px, auto));
  gap: 10px;
}
.bh-aircover__sumcell {
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  padding: 12px 16px;
  text-align: right;
  min-width: 140px;
}
.bh-aircover__sumcell--accent {
  background: linear-gradient(135deg, #faf4e6 0%, #f0e3c2 100%);
  border-color: var(--gold-300);
}
.bh-aircover__sumlbl {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-400);
}
.bh-aircover__sumval {
  font-family: 'Fraunces', serif;
  font-size: 22px;
  font-weight: 500;
  color: var(--ink-900);
  line-height: 1.15;
  margin-top: 4px;
  font-variant-numeric: tabular-nums;
}
.bh-aircover__sumcell--accent .bh-aircover__sumval { color: #6b4a1f; }
.bh-aircover__sumsub {
  font-size: 11px;
  color: var(--ink-400);
  margin-top: 2px;
}
.bh-table__wrap {
  margin-top: 14px;
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  overflow: hidden;
}
.bh-table--aircover thead th {
  background: var(--bh-panel-alt);
}
.bh-table--aircover tfoot td {
  background: var(--bh-panel-alt);
  border-top: 1px solid var(--bh-border);
  border-bottom: 0;
  font-weight: 600;
}
.bh-aircover__reserve {
  color: #2f7a4a;
  font-weight: 700;
}
.bh-aircover__empty {
  margin-top: 16px;
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 16px;
  align-items: center;
  padding: 18px 20px;
  background: var(--bh-panel-alt);
  border: 1px dashed var(--bh-border-strong);
  border-radius: 12px;
}
.bh-aircover__empty-icon {
  width: 52px; height: 52px;
  border-radius: 999px;
  background: #fff;
  color: var(--gold-500);
  display: grid; place-items: center;
  border: 1px solid var(--bh-border);
}
.bh-aircover__empty-title { font-weight: 600; color: var(--ink-900); font-size: 14px; }
.bh-aircover__empty-sub   { font-size: 12.5px; color: var(--ink-400); margin-top: 2px; }

@media (max-width: 900px) {
  .bh-aircover__head { grid-template-columns: 1fr; }
  .bh-aircover__summary { grid-template-columns: 1fr 1fr; }
  .bh-aircover__sumcell { text-align: left; }
  .bh-aircover__sumcell--accent { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .bh-table--aircover th:nth-child(1),
  .bh-table--aircover td:nth-child(1),
  .bh-table--aircover th:nth-child(3),
  .bh-table--aircover td:nth-child(3) { display: none; }
}

/* =========================================================
   MODAL PRIMITIVE
   ========================================================= */
.bh-modal__backdrop {
  position: fixed; inset: 0;
  background: rgba(28, 24, 18, 0.48);
  backdrop-filter: blur(2px);
  display: grid; place-items: center;
  padding: 32px 20px;
  animation: bh-modal-fade 180ms ease-out;
}
@keyframes bh-modal-fade { from { opacity: 0; } to { opacity: 1; } }
.bh-modal__dialog {
  width: 100%;
  max-width: 520px;
  max-height: calc(100vh - 64px);
  max-height: calc(100dvh - 64px);
  background: #fff;
  border-radius: var(--bh-radius-lg);
  box-shadow: 0 24px 64px rgba(16, 31, 48, 0.28);
  overflow: hidden;
  display: flex; flex-direction: column;
  animation: bh-modal-rise 220ms var(--bh-ease) both;
}
.bh-modal__dialog--sm { max-width: 420px; }
@keyframes bh-modal-rise {
  from { opacity: 0; transform: translateY(16px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.bh-modal__content { padding: 24px 28px 22px; overflow-y: auto; }
.bh-modal__head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  margin-bottom: 18px;
}
.bh-modal__eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--bh-eyebrow);
}
.bh-modal__head h3 {
  font-family: 'Fraunces', serif;
  font-size: 22px; font-weight: 500;
  margin: 4px 0 2px;
}
.bh-modal__sub { font-size: 13px; color: var(--ink-600); margin: 0; }
.bh-modal__close {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: transparent; border: 0; color: var(--ink-600); cursor: pointer;
  display: grid; place-items: center; flex-shrink: 0;
}
.bh-modal__close:hover { background: var(--bh-panel-alt); color: var(--ink-900); }
@media (pointer: coarse) {
  .bh-modal__close { width: 44px; height: 44px; border-radius: 10px; }
}
.bh-modal__actions {
  display: flex; justify-content: flex-end; gap: 10px;
  margin-top: 18px;
}
.bh-modal__actions--center { justify-content: center; }

/* Pay-invoice specifics */
.bh-pay__summary {
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 14px 16px;
  margin-bottom: 18px;
  font-size: 14px;
}
.bh-pay__row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 0;
  color: var(--ink-600);
}
.bh-pay__row span:last-child { color: var(--ink-900); font-weight: 500; font-variant-numeric: tabular-nums; }
.bh-pay__row--total {
  border-top: 1px solid var(--bh-border);
  margin-top: 6px; padding-top: 12px;
  font-family: 'Fraunces', serif;
  font-size: 16px;
}
.bh-pay__row--total span:last-child { font-size: 20px; color: var(--ink-900); font-weight: 500; }

.bh-pay__section-label {
  font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-600); margin-bottom: 10px;
}
.bh-pay__methods { display: flex; flex-direction: column; gap: 8px; }
.bh-pay__method {
  display: flex; align-items: center; gap: 14px;
  text-align: left; width: 100%;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  cursor: pointer;
  transition: border-color 160ms var(--bh-ease), background 160ms var(--bh-ease);
}
.bh-pay__method:hover { border-color: var(--bh-border-strong); }
.bh-pay__method.is-selected {
  border-color: var(--gold-500);
  background: rgba(201, 160, 106, 0.06);
  box-shadow: 0 0 0 3px rgba(201, 160, 106, 0.14);
}
.bh-pay__method-radio {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid var(--bh-border-strong);
  flex-shrink: 0;
  position: relative;
  transition: border-color 160ms var(--bh-ease);
}
.bh-pay__method.is-selected .bh-pay__method-radio { border-color: var(--gold-500); }
.bh-pay__method.is-selected .bh-pay__method-radio::after {
  content: ''; position: absolute; inset: 3px;
  background: var(--gold-500); border-radius: 50%;
}
.bh-pay__method-body { display: flex; flex-direction: column; gap: 2px; }
.bh-pay__method-label { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-pay__method-sub { font-size: 12px; color: var(--ink-600); }

.bh-pay__note {
  margin-top: 14px;
  font-size: 11px;
  color: var(--ink-400);
  text-align: center;
  font-style: italic;
}

.bh-pay__processing, .bh-pay__success {
  text-align: center;
  padding: 18px 6px;
}
.bh-pay__processing h3, .bh-pay__success h3 {
  font-family: 'Fraunces', serif;
  font-size: 22px; font-weight: 500;
  margin: 14px 0 6px;
}
.bh-pay__processing p, .bh-pay__success > p { font-size: 13px; color: var(--ink-600); margin: 0 0 14px; }

.bh-pay__spinner {
  width: 44px; height: 44px;
  border-radius: 50%;
  border: 3px solid var(--bh-border);
  border-top-color: var(--gold-500);
  margin: 12px auto 4px;
  animation: bh-spin 720ms linear infinite;
}
@keyframes bh-spin { to { transform: rotate(360deg); } }

.bh-pay__success-icon {
  width: 56px; height: 56px; border-radius: 50%;
  display: grid; place-items: center; margin: 0 auto 4px;
  background: rgba(30, 126, 90, 0.12);
  color: var(--bh-success, #1e7e5a);
}

@media (max-width: 560px) {
  .bh-modal__content { padding: 20px 18px 18px; }
  .bh-modal__head h3 { font-size: 20px; }
}

/* =========================================================
   TAX CENTER
   ========================================================= */
.bh-tax-hero {
  background: linear-gradient(135deg, #faf4e6 0%, #f0e3c2 100%);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius-lg);
  padding: 24px 28px;
  margin-bottom: 16px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 28px;
  align-items: center;
}
html[data-theme="dark"] .bh-tax-hero {
  background: linear-gradient(135deg, var(--bh-panel-alt) 0%, var(--bh-panel) 100%);
}
.bh-tax-hero__left {
  border-right: 1px solid var(--bh-border-strong);
  padding-right: 28px;
}
.bh-tax-hero__year {
  font-family: 'Fraunces', serif;
  font-size: 56px;
  font-weight: 500;
  color: var(--ink-900);
  letter-spacing: -0.02em;
  line-height: 1;
}
.bh-tax-hero__title { font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-400); margin-top: 6px; }
.bh-tax-hero__stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 20px; }
.bh-tax-stats__unavailable { grid-column: 1 / -1; }
.bh-tax-reconcile-notice {
  margin: -4px 0 16px;
  padding-top: 10px;
  padding-right: 12px;
  padding-bottom: 10px;
  border-radius: var(--bhc-radius-sm);
  background: var(--bhc-warn-bg);
  color: var(--bhc-warn);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.4;
}
.bh-tax-reconcile-notice[hidden] { display: none; }
.bh-tax-stat { border-left: 3px solid transparent; padding-left: 12px; }
.bh-tax-stat.is-highlight { border-left-color: var(--gold-500); }
.bh-tax-stat__label { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-400); }
.bh-tax-stat__value { font-family: 'Fraunces', serif; font-size: 22px; font-weight: 500; color: var(--ink-900); margin-top: 4px; font-variant-numeric: tabular-nums; }
.bh-tax-stat.is-highlight .bh-tax-stat__value { color: var(--gold-500); }

.bh-jur { display: flex; flex-direction: column; }
.bh-jur__row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 0;
  border-bottom: 1px dashed var(--bh-border);
  font-size: 13.5px;
}
.bh-jur__name { color: var(--ink-900); }
.bh-jur__name small { display: block; font-size: 11px; color: var(--ink-400); margin-top: 2px; }
.bh-jur__val { font-family: 'Fraunces', serif; font-weight: 500; font-variant-numeric: tabular-nums; }
.bh-jur__total {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 0; margin-top: 6px;
  border-top: 2px solid var(--bh-border-strong);
  font-size: 14px;
}
.bh-jur__total strong { font-family: 'Fraunces', serif; font-weight: 600; font-size: 17px; font-variant-numeric: tabular-nums; }
.bh-tax-ledger__section {
  margin: 0;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--bh-border-strong);
  color: var(--ink-400);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.bh-tax-ledger__group + .bh-tax-ledger__group { margin-top: 14px; }
.bh-tax-ledger__list { margin: 0; }
.bh-tax-ledger__list dd { margin: 0; }
.bh-tax-ledger__total { margin-top: 14px; }

/* Docs */
.bh-docs { display: flex; flex-direction: column; gap: 8px; }
.bh-doc {
  display: grid; grid-template-columns: 44px 1fr auto;
  gap: 14px; align-items: center;
  padding: 12px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  transition: background 140ms, border-color 140ms;
}
.bh-doc:hover { background: #fff; border-color: var(--bh-border-strong); }
.bh-doc__icon {
  width: 44px; height: 44px; border-radius: 10px;
  background: #fff; color: var(--gold-500);
  display: grid; place-items: center;
}
.bh-doc__title { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-doc__year { font-size: 11px; font-weight: 700; color: var(--gold-500); padding: 2px 8px; border-radius: 999px; background: rgba(201, 160, 106, 0.14); margin-left: 6px; letter-spacing: 0.04em; }
.bh-doc__sub { font-size: 12px; color: var(--ink-400); margin-top: 2px; }

/* =========================================================
   Responsive tweaks for new components
   ========================================================= */
@media (max-width: 960px) {
  .bh-grid--5-5 { grid-template-columns: 1fr; }
  .bh-welcome { grid-template-columns: 1fr; text-align: left; }
  .bh-goal { justify-content: flex-start; }
  .bh-wf__row { grid-template-columns: 150px 1fr 120px; }
  .bh-mkt__header, .bh-mkt__row { grid-template-columns: 1.4fr 2fr 1.2fr; gap: 10px; }
  .bh-tax-hero { grid-template-columns: 1fr; }
  .bh-tax-hero__left { border-right: 0; border-bottom: 1px solid var(--bh-border-strong); padding: 0 0 20px; }
  .bh-activity__herotop { grid-template-columns: 1fr; gap: 12px; }
  .bh-activity__herostat { text-align: left; }
  .bh-rev-bench__row { grid-template-columns: 80px 1fr 90px; gap: 8px; }
  .bh-catbar { grid-template-columns: 90px 1fr 42px; }
}
@media (max-width: 560px) {
  .bh-wf__row { grid-template-columns: 110px 1fr 100px; gap: 10px; }
  .bh-mkt__header, .bh-mkt__row { grid-template-columns: 1fr; gap: 6px; }
  .bh-mkt__rev { text-align: left; }
}

/* =========================================================
   PANEL
   ========================================================= */
.bh-panel {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 22px;
  box-shadow: var(--bh-shadow-sm);
  min-width: 0;
}
.bh-panel__head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; margin-bottom: 18px;
}
.bh-panel__head h3 { font-size: 17px; font-weight: 500; font-family: 'Fraunces', serif; letter-spacing: -0.01em; }
.bh-panel__head p { font-size: 12.5px; margin-top: 2px; }

.bh-legend { display: flex; gap: 14px; flex-wrap: wrap; }
.bh-legend__item { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--ink-600); }
.bh-legend__dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }

.bh-chartwrap { position: relative; width: 100%; }
.bh-chartwrap--tall { height: 320px; }
.bh-chartwrap--mid  { height: 260px; }
.bh-chartwrap--donut{ height: 220px; display: grid; place-items: center; }

.bh-gauge { display: flex; flex-direction: column; align-items: center; }
.bh-gauge__center {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  pointer-events: none;
}
.bh-gauge__value { font-family: 'Fraunces', serif; font-size: 36px; font-weight: 500; color: var(--ink-900); letter-spacing: -0.02em; }
.bh-gauge__label { font-size: 11px; font-weight: 600; color: var(--ink-400); letter-spacing: 0.08em; text-transform: uppercase; }
.bh-gauge__stats { display: flex; gap: 22px; margin-top: 10px; }
.bh-gauge__stat { text-align: center; }
.bh-gauge__stat-value { font-family: 'Fraunces', serif; font-size: 18px; font-weight: 500; }
.bh-gauge__stat-label { font-size: 11px; color: var(--ink-400); text-transform: uppercase; letter-spacing: 0.08em; margin-top: 2px; }

.bh-citylist { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.bh-citylist__row { display: grid; grid-template-columns: 12px 1fr auto; gap: 10px; align-items: center; font-size: 13px; }
.bh-citylist__dot { width: 10px; height: 10px; border-radius: 3px; }
.bh-citylist__pct { color: var(--ink-400); font-variant-numeric: tabular-nums; }

/* =========================================================
   LISTS (upcoming, maintenance)
   ========================================================= */
.bh-booking-list, .bh-maint-list { display: flex; flex-direction: column; }
.bh-booking, .bh-maint {
  display: grid; grid-template-columns: 42px 1fr auto; gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--bh-border);
  align-items: center;
}
.bh-booking:last-child, .bh-maint:last-child { border-bottom: 0; }

.bh-booking__date {
  width: 42px; height: 46px; border-radius: 10px;
  background: var(--bh-panel-alt);
  display: grid; place-items: center;
  text-align: center;
  line-height: 1;
}
.bh-booking__day { font-family: 'Fraunces', serif; font-size: 18px; font-weight: 500; color: var(--ink-900); }
.bh-booking__mon { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-500); margin-top: 2px; }

.bh-booking__main { min-width: 0; }
.bh-booking__guest { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-booking__meta { font-size: 12px; color: var(--ink-400); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bh-booking__right { text-align: right; }
.bh-booking__rev { font-family: 'Fraunces', serif; font-size: 16px; font-weight: 500; color: var(--ink-900); }
.bh-booking__channel { font-size: 11px; color: var(--ink-400); margin-top: 2px; }

.bh-maint__icon {
  width: 42px; height: 42px; border-radius: 10px;
  background: var(--bh-panel-alt);
  display: grid; place-items: center;
  color: var(--gold-500);
}
.bh-maint__title { font-size: 14px; font-weight: 600; color: var(--ink-900); }
.bh-maint__meta  { font-size: 12px; color: var(--ink-400); margin-top: 2px; }
.bh-maint__right { text-align: right; }
.bh-maint__cost  { font-family: 'Fraunces', serif; font-size: 15px; font-weight: 500; }

/* =========================================================
   TABLES
   ========================================================= */
.bh-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.bh-table th {
  text-align: left; font-weight: 600; font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--ink-400);
  padding: 10px 14px 10px 0;
  border-bottom: 1px solid var(--bh-border);
}
.bh-table td {
  padding: 14px 14px 14px 0;
  border-bottom: 1px solid var(--bh-border);
  color: var(--ink-900);
}
.bh-table tr:last-child td { border-bottom: 0; }
.bh-table tr:hover td { background: rgba(201, 160, 106, 0.04); }
.bh-t--right { text-align: right; }
.bh-table td.bh-t--right { font-variant-numeric: tabular-nums; font-weight: 600; }

/* =========================================================
   STATUS PILLS
   ========================================================= */
.bh-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 10px; border-radius: 999px;
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.02em;
}
.bh-pill--success { background: var(--bh-success-bg); color: var(--bh-success); }
.bh-pill--warn    { background: var(--bh-warn-bg); color: var(--bh-warn); }
.bh-pill--danger  { background: var(--bh-danger-bg); color: var(--bh-danger); }
.bh-pill--info    { background: var(--bh-info-bg); color: var(--bh-info); }
.bh-pill--muted   { background: var(--bh-panel-alt); color: var(--ink-600); }
.bh-pill--gold    { background: rgba(201, 160, 106, 0.18); color: #8a6d3a; }

/* =========================================================
   PROPERTY GRID
   ========================================================= */
.bh-prop-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 18px;
}
.bh-prop-card {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  overflow: hidden;
  cursor: pointer;
  transition: transform 200ms var(--bh-ease), box-shadow 200ms var(--bh-ease), border-color 200ms;
  display: flex; flex-direction: column;
  text-align: left;
  padding: 0;
  color: inherit;
  font-family: inherit;
}
.bh-prop-card:hover { transform: translateY(-3px); box-shadow: var(--bh-shadow-lg); border-color: var(--bh-border-strong); }
.bh-prop-card__photo {
  height: 160px; position: relative;
  background-size: cover; background-position: center;
  background-color: var(--cream-200);
}
.bh-prop-card__photo::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 22, 40, 0) 55%, rgba(10, 22, 40, 0.65) 100%);
}
.bh-prop-card__photo .bh-pill {
  position: absolute; top: 12px; left: 12px; z-index: 1;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  background: rgba(255, 255, 255, 0.9);
}
.bh-prop-card__location {
  position: absolute; bottom: 10px; left: 14px; z-index: 1;
  color: #fff; font-size: 12px; font-weight: 500;
  display: inline-flex; align-items: center; gap: 5px;
}
.bh-prop-card__body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 10px; }
.bh-prop-card__name { font-family: 'Fraunces', serif; font-size: 17px; font-weight: 500; }
.bh-prop-card__specs { font-size: 12px; color: var(--ink-400); display: flex; gap: 10px; flex-wrap: wrap; }
.bh-prop-card__specs span { display: inline-flex; align-items: center; gap: 4px; }
.bh-prop-card__stats {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  padding-top: 10px;
  border-top: 1px solid var(--bh-border);
}
.bh-prop-card__stat-value { font-family: 'Fraunces', serif; font-size: 16px; font-weight: 500; color: var(--ink-900); }
.bh-prop-card__stat-label { font-size: 10px; color: var(--ink-400); text-transform: uppercase; letter-spacing: 0.08em; margin-top: 2px; }

/* =========================================================
   PROPERTY DETAIL
   ========================================================= */
.bh-back { margin-bottom: 14px; }
.bh-prop-hero {
  position: relative;
  height: 260px;
  border-radius: var(--bh-radius-lg);
  overflow: hidden;
  margin-bottom: 20px;
  background-size: cover; background-position: center;
  background-color: var(--cream-200);
}
.bh-prop-hero::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 22, 40, 0) 45%, rgba(10, 22, 40, 0.72) 100%);
}
.bh-prop-hero__inner {
  position: absolute; inset: 0; z-index: 1;
  padding: 24px 28px;
  display: flex; flex-direction: column; justify-content: space-between;
  color: #fff;
}
.bh-prop-hero__inner h2 { color: #fff; font-size: 32px; font-weight: 500; }
.bh-prop-hero__addr { font-size: 14px; color: rgba(255,255,255,0.85); margin-top: 4px; }
.bh-prop-hero__tag { align-self: flex-start; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); background: rgba(255,255,255,0.9); }

/* =========================================================
   INVOICE SUMMARY CARDS
   ========================================================= */
.bh-invoice-summary { display: flex; gap: 12px; flex-wrap: wrap; }
.bh-invoice-summary__tile {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 12px 18px;
  min-width: 160px;
  box-shadow: var(--bh-shadow-sm);
}
.bh-invoice-summary__label { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; color: var(--ink-400); text-transform: uppercase; }
.bh-invoice-summary__value { font-family: 'Fraunces', serif; font-size: 22px; font-weight: 500; color: var(--ink-900); margin-top: 2px; }
.bh-invoice-summary__value.is-danger { color: var(--bh-danger); }
.bh-invoice-summary__value.is-warn { color: var(--bh-warn); }
.bh-invoice-summary__value.is-success { color: var(--bh-success); }

/* =========================================================
   STATEMENTS
   ========================================================= */
.bh-statement-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.bh-statement {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 18px;
  display: flex; flex-direction: column; gap: 10px;
  box-shadow: var(--bh-shadow-sm);
  transition: transform 160ms, box-shadow 160ms;
}
.bh-statement:hover { transform: translateY(-1px); box-shadow: var(--bh-shadow-md); }
.bh-statement__month { margin: 0; font-family: 'Fraunces', serif; font-size: 20px; font-weight: 500; letter-spacing: 0.01em; }
.bh-statement__property { color: var(--ink-700); font-size: 13px; font-weight: 600; }
.bh-statement__total { font-size: 13px; color: var(--ink-600); }
.bh-statement__total strong { color: var(--ink-900); font-weight: 600; }
.bh-statement__actions { display: flex; gap: 8px; margin-top: auto; }

.bh-statement__head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
  padding-bottom: 10px; border-bottom: 1px dashed var(--bh-border);
}
.bh-statement__trend {
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.04em;
  padding: 3px 8px; border-radius: 999px;
  white-space: nowrap;
}
.bh-statement__trend.is-up { color: var(--bh-success); background: color-mix(in srgb, var(--bh-success) 12%, transparent); }
.bh-statement__trend.is-down { color: var(--bh-danger); background: color-mix(in srgb, var(--bh-danger) 12%, transparent); }
.bh-statement__trend.is-flat { color: var(--ink-500); background: color-mix(in srgb, var(--ink-500) 10%, transparent); }

.bh-statement__grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
  padding: 6px 0 4px;
}
.bh-statement__grid > div { display: flex; flex-direction: column; gap: 2px; }
.bh-statement__grid > div > span { font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-400); font-weight: 600; }
.bh-statement__grid > div > strong { font-family: 'Fraunces', serif; font-size: 16px; font-weight: 500; color: var(--ink-900); font-variant-numeric: tabular-nums; }

.bh-stmt__tools { display: flex; align-items: center; gap: 8px; }
.bh-stmt__scope { min-width: 180px; }

.bh-select {
  font: 500 13px/1 'Inter', sans-serif;
  color: var(--ink-800);
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 8px;
  padding: 9px 32px 9px 12px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%234a443a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat;
  background-position: right 10px center;
  transition: border-color 160ms, box-shadow 160ms;
}
.bh-select:hover { border-color: var(--bh-border-strong); }
.bh-select:focus { outline: 0; border-color: var(--gold-500); box-shadow: 0 0 0 3px color-mix(in srgb, var(--gold-500) 22%, transparent); }

/* =========================================================
   SUPPLY ORDER RECEIPTS
   ========================================================= */
.bh-so { display: flex; flex-direction: column; gap: 16px; }
.bh-so__summary {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
  padding: 4px 0 2px;
}
.bh-so__summary-tile {
  background: color-mix(in srgb, var(--gold-500) 6%, var(--bh-panel));
  border: 1px solid color-mix(in srgb, var(--gold-500) 20%, var(--bh-border));
  border-radius: 10px; padding: 12px 14px;
}
.bh-so__summary-label { font: 600 10.5px/1 'Inter', sans-serif; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-500); margin-bottom: 4px; }
.bh-so__summary-value { font-family: 'Fraunces', serif; font-size: 19px; font-weight: 500; color: var(--ink-900); font-variant-numeric: tabular-nums; }

.bh-so__list { display: flex; flex-direction: column; gap: 10px; }
.bh-so__row {
  display: grid; grid-template-columns: 1fr auto; gap: 20px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 16px 18px;
  transition: transform 160ms, box-shadow 160ms, border-color 160ms;
}
.bh-so__row:hover { transform: translateY(-1px); box-shadow: var(--bh-shadow-md); border-color: var(--bh-border-strong); }

.bh-so__row-head { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.bh-so__row-po { font-family: 'Fraunces', serif; font-size: 14px; font-weight: 600; color: var(--ink-900); letter-spacing: 0.02em; }
.bh-so__status {
  font: 600 10px/1 'Inter', sans-serif; letter-spacing: 0.06em;
  padding: 3px 9px; border-radius: 999px; text-transform: uppercase;
}
.bh-so__status.is-success { color: var(--bh-success); background: color-mix(in srgb, var(--bh-success) 12%, transparent); }
.bh-so__status.is-info    { color: #1e5a8a; background: rgba(30,90,138,0.10); }
.bh-so__status.is-warn    { color: var(--bh-warn); background: color-mix(in srgb, var(--bh-warn) 14%, transparent); }
.bh-so__status.is-neutral { color: var(--ink-500); background: color-mix(in srgb, var(--ink-500) 10%, transparent); }

.bh-so__row-meta { font-size: 12px; color: var(--ink-500); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bh-so__row-vendor { font-weight: 600; color: var(--ink-700); }
.bh-so__row-dot { opacity: 0.5; }
.bh-so__row-prop { font-size: 12px; color: var(--ink-600); margin-top: 2px; }

.bh-so__row-items {
  list-style: none; padding: 0;
  margin: 10px 0 6px;
  display: flex; flex-wrap: wrap; gap: 6px;
}
.bh-so__row-items li {
  font-size: 11.5px; color: var(--ink-700);
  background: color-mix(in srgb, var(--gold-500) 7%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold-500) 20%, transparent);
  border-radius: 999px;
  padding: 4px 10px;
  font-weight: 500;
}

.bh-so__row-billing {
  font-size: 11px; color: var(--ink-500);
  margin-top: 4px;
  font-style: italic;
}
.bh-so__row-billing strong { color: var(--ink-800); font-style: normal; font-weight: 600; }

.bh-so__row-aside {
  display: flex; flex-direction: column; align-items: flex-end; gap: 10px;
  justify-content: space-between; min-width: 120px;
}
.bh-so__row-amount {
  font-family: 'Fraunces', serif; font-size: 22px; font-weight: 500;
  color: var(--ink-900); font-variant-numeric: tabular-nums;
}

@media (max-width: 720px) {
  .bh-so__summary { grid-template-columns: repeat(2, 1fr); }
  .bh-so__row { grid-template-columns: 1fr; }
  .bh-so__row-aside { align-items: flex-start; flex-direction: row; }
}

/* =========================================================
   EMPTY STATES
   ========================================================= */
.bh-empty {
  padding: 36px 20px;
  text-align: center;
  color: var(--ink-400);
  font-size: 13px;
}

.bh-empty--bordered {
  border: 1px dashed var(--ink-200, rgba(28,24,18,0.15));
  border-radius: 12px;
}
html[data-theme="dark"] .bh-empty--bordered {
  border-color: rgba(244,234,214,0.18);
}

/* =========================================================
   ADMIN-ONLY UI affordances
   The dashboard sets <body class="is-admin"> when a team
   member (vs. an owner) is signed in. Elements tagged
   .bh-admin-only are revealed only in that mode.
   ========================================================= */
.bh-admin-only { display: none !important; }
/* Reveal admin-only UI when an admin is signed in. The `:not([hidden])`
   guard preserves the explicit [hidden] attribute (used by the view
   router to swap views) so display:inline-flex doesn't override it. */
body.is-admin .bh-admin-only:not([hidden]) { display: inline-flex !important; }

/* =========================================================
   Four-role visibility primitives.
   Body classes (set by dashboard.js based on profile.role):
     is-admin       — TRUE admin only
     is-staff-plus  — staff_plus only
     is-staff       — staff only
     is-elevated    — admin OR staff_plus     (financial reader)
     is-internal    — admin OR staff_plus OR staff
   Element classes:
     .bh-admin-only      — visible to true admin only (existing — unchanged)
     .bh-elevated-only   — visible to admin + staff_plus
     .bh-internal-only   — visible to admin + staff_plus + staff
     .bh-true-admin-only — alias for .bh-admin-only (semantic clarity)
   ========================================================= */
.bh-elevated-only,
.bh-internal-only,
.bh-true-admin-only { display: none !important; }

/* Inline elements (sidebar buttons, action buttons, badges) */
body.is-elevated .bh-elevated-only:not([hidden])      { display: inline-flex !important; }
body.is-internal .bh-internal-only:not([hidden])      { display: inline-flex !important; }
body.is-admin    .bh-true-admin-only:not([hidden])    { display: inline-flex !important; }

/* View containers — block-level, not inline-flex */
body.is-elevated .bh-view.bh-elevated-only:not([hidden]),
body.is-internal .bh-view.bh-internal-only:not([hidden]),
body.is-admin    .bh-view.bh-true-admin-only:not([hidden]) { display: block !important; }

/* Sidebar section headers — block, not inline-flex */
body.is-elevated .bh-sidebar__section.bh-elevated-only:not([hidden]),
body.is-internal .bh-sidebar__section.bh-internal-only:not([hidden]),
body.is-admin    .bh-sidebar__section.bh-true-admin-only:not([hidden]) { display: block !important; }

/* Global guarantee that [hidden] elements never render. Component
   rules like `.bh-btn { display: inline-flex }` would otherwise win
   on specificity over the UA `[hidden] { display: none }` default. */
[hidden] { display: none !important; }

/* RBAC additions 2026-05-19:
   .bh-not-staff hides an element from the 'staff' role specifically.
   Used for owner-financial/reporting surfaces (Intelligence, Performance,
   Portfolio, Owner Calendar, P&L, Statements, Invoices, Tax, Activity)
   which staff must never see. Admin/staff_plus/owner are unaffected.
   Pairs with the bh-permissions.js matrix — that module is the source
   of truth; these classes are belt + suspenders for first-paint. */
body.is-staff:not(.is-elevated) .bh-not-staff { display: none !important; }

/* Disabled state for write-guarded controls (set by applyWriteGuards). */
.bh-rbac-disabled {
  opacity: 0.5 !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
}

/* =========================================================
   MAINTENANCE UPLOAD MODAL (admin only)
   Full-screen overlay with a centered card. Locks body scroll
   while open. Reuses the same form aesthetic as the rest of
   the dashboard for visual continuity.
   ========================================================= */
.bh-maint-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  animation: bh-modal-fade 180ms ease-out;
}
.bh-maint-modal[hidden] { display: none; }
.bh-maint-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 22, 40, 0.55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.bh-maint-modal__panel {
  position: relative;
  width: 100%;
  max-width: 640px;
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 18px;
  box-shadow: 0 24px 64px rgba(10, 22, 40, 0.32);
  animation: bh-modal-rise 220ms var(--bh-ease) both;
}
.bh-maint-modal__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  padding: 24px 28px 18px;
  border-bottom: 1px solid var(--bh-border);
}
.bh-maint-modal__eyebrow {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--bh-eyebrow);
}
.bh-maint-modal__head h2 {
  font-family: 'Fraunces', serif;
  font-weight: 500;
  font-size: 22px;
  margin: 4px 0 4px;
  color: var(--ink-900);
}
.bh-maint-modal__head p {
  font-size: 13px;
  color: var(--ink-600);
  margin: 0;
  line-height: 1.5;
}
.bh-maint-modal__close {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  background: transparent;
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  color: var(--ink-600);
  cursor: pointer;
  transition: border-color 160ms, color 160ms;
}
.bh-maint-modal__close:hover { border-color: var(--gold-500); color: var(--gold-500); }

.bh-maint-modal__form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  padding: 22px 28px 0;
}
.bh-maint-modal__form .bh-field { display: flex; flex-direction: column; gap: 6px; }
.bh-maint-modal__form .bh-field.full { grid-column: 1 / -1; }
.bh-maint-modal__form label {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-600);
}
.bh-maint-modal__form .req { color: var(--bh-danger); margin-left: 2px; }
.bh-maint-modal__form input,
.bh-maint-modal__form select,
.bh-maint-modal__form textarea {
  width: 100%;
  font-family: inherit;
  font-size: 14px;
  color: var(--ink-900);
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius-sm);
  padding: 10px 12px;
  transition: border-color 160ms, box-shadow 160ms, background 160ms;
  outline: none;
  box-sizing: border-box;
}
.bh-maint-modal__form input:focus,
.bh-maint-modal__form select:focus,
.bh-maint-modal__form textarea:focus {
  border-color: var(--gold-500);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.16);
}
.bh-maint-modal__form textarea { min-height: 80px; resize: vertical; line-height: 1.5; }

.bh-mm-file {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1.5px dashed var(--bh-border-strong);
  border-radius: var(--bh-radius);
  background: var(--bh-panel-alt);
  cursor: pointer;
  transition: border-color 160ms, background 160ms;
}
.bh-mm-file:hover { border-color: var(--gold-500); background: rgba(201, 160, 106, 0.06); }
.bh-mm-file input { display: none; }
.bh-mm-file__icon {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  background: rgba(201, 160, 106, 0.12);
  color: var(--gold-500);
  flex-shrink: 0;
}
.bh-mm-file__copy { flex: 1; min-width: 0; }
.bh-mm-file__title { font-size: 13px; font-weight: 500; color: var(--ink-900); }
.bh-mm-file__sub { font-size: 11px; color: var(--ink-400); margin-top: 2px; }
.bh-mm-file__name { color: var(--gold-500); font-weight: 500; }

.bh-maint-modal__msg {
  grid-column: 1 / -1;
  min-height: 18px;
  font-size: 13px;
  font-weight: 500;
  margin-top: 4px;
}
.bh-maint-modal__msg.is-success { color: var(--bh-success, #1e7e5a); }
.bh-maint-modal__msg.is-error { color: var(--bh-danger); }

.bh-maint-modal__foot {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 16px 0 24px;
  border-top: 1px solid var(--bh-border);
  margin-top: 4px;
}
.bh-maint-modal__foot .bh-btn:first-child { margin-right: auto; }

body.bh-modal-open { overflow: hidden; }

/* =========================================================
   MONTHLY STATEMENTS (admin form + admin list + owner viewer)
   The statements feature replaces the per-owner spreadsheet
   workflow. Three surfaces share these styles:
     - Statements admin view: list of all statements
     - New Statement modal: the spreadsheet replacement form
     - Statement viewer: read-only printable detail
   ========================================================= */

/* ----- View header actions (the "+ New statement" button) ----- */
.bh-view__head-actions { display: flex; align-items: center; gap: 10px; }

/* ----- Summary tiles atop the Statements view ----- */
.bh-stmt-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.bh-stmt-sumtile {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  padding: 14px 16px;
}
.bh-stmt-sumtile__label {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-500);
  font-weight: 600;
}
.bh-stmt-sumtile__value {
  font-family: 'Fraunces', serif;
  font-size: 24px;
  font-weight: 500;
  color: var(--ink-900);
  margin-top: 4px;
  font-variant-numeric: tabular-nums;
}
.bh-stmt-sumtile__sub { font-size: 11.5px; color: var(--ink-600); }

/* ----- Filter row (reuses dropdown component + search) ----- */
.bh-stmt-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 18px;
  align-items: center;
  padding: 16px 18px;
}
.bh-stmt-filters__row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
}

/* ----- Statements list table ----- */
.bh-stmt-table tbody tr {
  cursor: pointer;
  transition: background-color 140ms var(--bh-ease);
}
.bh-stmt-table tbody tr:hover { background: rgba(201, 160, 106, 0.06); }
html[data-theme="dark"] .bh-stmt-table tbody tr:hover { background: rgba(201, 160, 106, 0.10); }
.bh-stmt-table .bh-stmt-month { font-weight: 600; color: var(--ink-900); white-space: nowrap; }
.bh-stmt-table .bh-stmt-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.bh-stmt-status--published { background: rgba(46, 160, 116, 0.14); color: #1e7e5a; }
.bh-stmt-status--draft     { background: rgba(127, 142, 165, 0.14); color: #5a6a82; }
.bh-stmt-status--paid      { background: rgba(201, 160, 106, 0.18); color: #8c6c3f; }
html[data-theme="dark"] .bh-stmt-status--published { color: #55c794; background: rgba(46, 160, 116, 0.18); }
html[data-theme="dark"] .bh-stmt-status--draft     { color: var(--ink-700); background: rgba(244, 234, 214, 0.06); }
html[data-theme="dark"] .bh-stmt-status--paid      { color: var(--gold-400); background: rgba(201, 160, 106, 0.22); }
.bh-stmt-table .bh-stmt-empty {
  text-align: center;
  padding: 32px 16px;
  color: var(--ink-500);
}

/* ----- New Statement modal (extends maintenance modal pattern) ----- */
.bh-stmt-modal {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: grid;
  place-items: center;
  padding: 20px;
}
.bh-stmt-modal[hidden] { display: none; }
.bh-stmt-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 22, 40, 0.55);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  animation: bh-modal-fade 220ms var(--bh-ease) both;
}
.bh-stmt-modal__panel {
  position: relative;
  width: 100%;
  max-width: 1080px;
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  overflow-y: auto;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 18px;
  box-shadow: 0 24px 64px rgba(10, 22, 40, 0.32);
  animation: bh-modal-rise 220ms var(--bh-ease) both;
}
.bh-stmt-modal__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  padding: 24px 28px 18px;
  border-bottom: 1px solid var(--bh-border);
  position: sticky; top: 0;
  background: var(--bh-panel);
  z-index: 1;
}
.bh-stmt-modal__eyebrow {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bh-eyebrow);
  font-weight: 700;
}
.bh-stmt-modal__head h2 {
  font-family: 'Fraunces', serif;
  font-weight: 500;
  font-size: 24px;
  color: var(--ink-900);
  margin: 4px 0 4px;
  letter-spacing: -0.01em;
}
.bh-stmt-modal__head p { font-size: 13px; color: var(--ink-500); margin: 0; }
.bh-stmt-modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  color: var(--ink-700);
  cursor: pointer;
  transition: border-color 160ms var(--bh-ease), color 160ms var(--bh-ease), background-color 160ms var(--bh-ease);
}
.bh-stmt-modal__close:hover { border-color: var(--gold-500); color: var(--gold-500); }
html[data-theme="dark"] .bh-stmt-modal__head { background: var(--bh-panel); }
html[data-theme="dark"] .bh-stmt-modal__head h2 { color: var(--ink-900); }
html[data-theme="dark"] .bh-stmt-modal__head p { color: var(--ink-500); }
html[data-theme="dark"] .bh-stmt-modal__close {
  background: var(--bh-panel-alt);
  border-color: var(--bh-border);
  color: var(--ink-700);
}

.bh-stmt-modal__form {
  display: flex;
  flex-direction: column;
  gap: 22px;
  padding: 22px 28px 4px;
}
.bh-stmt-modal__form .bh-field { display: flex; flex-direction: column; gap: 6px; }
.bh-stmt-modal__form label {
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-700);
  letter-spacing: 0.02em;
}
.bh-stmt-modal__form .req { color: var(--bh-danger, #c14545); margin-left: 2px; }
.bh-stmt-modal__form input,
.bh-stmt-modal__form select,
.bh-stmt-modal__form textarea {
  padding: 10px 12px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  font-family: inherit;
  font-size: 13px;
  color: var(--ink-900);
  transition: border-color 160ms, box-shadow 160ms, background 160ms;
  outline: none;
}
.bh-stmt-modal__form input:focus,
.bh-stmt-modal__form select:focus,
.bh-stmt-modal__form textarea:focus {
  border-color: var(--gold-500);
  background: var(--bh-panel);
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.16);
}
.bh-stmt-modal__form textarea { min-height: 70px; resize: vertical; line-height: 1.5; }

/* ----- Sectioning inside the modal ----- */
.bh-stmt-section {
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  padding: 16px 18px;
  background: var(--bh-panel-alt);
}
html[data-theme="dark"] .bh-stmt-section { background: rgba(244, 234, 214, 0.02); }
.bh-stmt-section__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.bh-stmt-section__head h3 {
  font-family: 'Fraunces', serif;
  font-size: 16px;
  font-weight: 500;
  color: var(--ink-900);
}
.bh-stmt-section__head p { font-size: 12px; color: var(--ink-500); margin: 0; }
.bh-stmt-section__head em { font-style: italic; color: var(--gold-500); }

.bh-stmt-grid { display: grid; gap: 12px; }
.bh-stmt-grid--2 { grid-template-columns: 1fr 1fr; }
.bh-stmt-grid--3 { grid-template-columns: 1.4fr 1fr 0.7fr; }
.bh-stmt-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 720px) {
  .bh-stmt-grid--2,
  .bh-stmt-grid--3,
  .bh-stmt-grid--4 { grid-template-columns: 1fr; }
}

/* =============================================================
   DIRECT BOOKING — extended modal section for /stays publishing
   ============================================================= */
.bh-stmt-section__head--accent {
  display: flex;
  align-items: baseline;
  gap: 0.8rem;
  flex-wrap: wrap;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid var(--gold-500, #c9a06a);
  margin-bottom: 0.95rem;
}
.bh-stmt-section__head--accent h3 {
  color: var(--gold-700, #8a6a3d);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 700;
}
.bh-stmt-section__hint {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: 13px;
  color: var(--ink-500, rgba(10,21,32,0.62));
  margin-left: 0;
}

/* Publish toggle row */
.bh-ap-db__publish {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.95rem 1.05rem;
  background: linear-gradient(180deg, rgba(201,160,106,0.10) 0%, rgba(201,160,106,0.04) 100%);
  border: 1px solid rgba(201, 160, 106, 0.32);
  border-radius: 10px;
  margin-bottom: 1rem;
}
.bh-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.bh-toggle input[type="checkbox"] {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  border: 0;
}
.bh-toggle__track {
  position: relative;
  display: inline-block;
  width: 44px; height: 24px;
  border-radius: 999px;
  background: rgba(10, 21, 32, 0.18);
  border: 1px solid rgba(10, 21, 32, 0.10);
  transition: background 0.25s ease, border-color 0.25s ease;
  flex-shrink: 0;
}
.bh-toggle__thumb {
  position: absolute;
  top: 2px; left: 2px;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(10, 22, 40, 0.2);
  transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.bh-toggle input:checked ~ .bh-toggle__track {
  background: var(--gold-500, #c9a06a);
  border-color: var(--gold-500, #c9a06a);
}
.bh-toggle input:checked ~ .bh-toggle__track .bh-toggle__thumb {
  transform: translateX(20px);
}
.bh-toggle__label {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink-900, #0a1520);
}
.bh-toggle__label code {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  background: rgba(10, 21, 32, 0.06);
  border-radius: 4px;
  padding: 1px 5px;
  color: var(--gold-700, #8a6a3d);
}
.bh-toggle input:focus-visible ~ .bh-toggle__track {
  outline: 2px solid var(--gold-500, #c9a06a);
  outline-offset: 2px;
}

/* Highlight-flag grid (pet, pool, lakefront, etc.) */
.bh-ap-flags {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 0.4rem 0.55rem;
}
.bh-ap-flags label {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 0.7rem;
  background: var(--bh-bg, #fdf9f3);
  border: 1px solid var(--bh-border, rgba(10,21,32,0.08));
  border-radius: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  color: var(--ink-700, #1c2a3a);
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.bh-ap-flags label:hover {
  background: rgba(201, 160, 106, 0.10);
  border-color: rgba(201, 160, 106, 0.32);
  color: var(--gold-700, #8a6a3d);
}
.bh-ap-flags input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 16px; height: 16px;
  border: 1.5px solid rgba(10, 21, 32, 0.22);
  border-radius: 4px;
  background: #ffffff;
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
}
.bh-ap-flags input[type="checkbox"]:checked {
  background: var(--gold-500, #c9a06a);
  border-color: var(--gold-500, #c9a06a);
}
.bh-ap-flags input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  top: 2px; left: 4px;
  width: 4px; height: 8px;
  border-right: 1.6px solid #ffffff;
  border-bottom: 1.6px solid #ffffff;
  transform: rotate(45deg);
}
.bh-ap-flags label:has(input:checked) {
  background: rgba(201, 160, 106, 0.14);
  border-color: var(--gold-500, #c9a06a);
  color: var(--gold-700, #8a6a3d);
  font-weight: 600;
}

/* Direct Booking textarea — slightly more breathing room */
.bh-ap-db textarea {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  line-height: 1.55;
  min-height: 60px;
}
.bh-ap-db .bh-field__hint code {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  background: rgba(10, 21, 32, 0.06);
  border-radius: 3px;
  padding: 1px 5px;
  color: var(--gold-700, #8a6a3d);
}

/* Dark mode parity */
html[data-theme="dark"] .bh-ap-db__publish {
  background: linear-gradient(180deg, rgba(212, 180, 127, 0.10) 0%, rgba(212, 180, 127, 0.03) 100%);
  border-color: rgba(212, 180, 127, 0.28);
}
html[data-theme="dark"] .bh-toggle__track { background: rgba(244, 234, 214, 0.16); border-color: rgba(244, 234, 214, 0.10); }
html[data-theme="dark"] .bh-toggle__label { color: var(--ink-900, #f4ead6); }
html[data-theme="dark"] .bh-toggle__label code { background: rgba(244, 234, 214, 0.10); color: var(--gold-500, #d4b47f); }
html[data-theme="dark"] .bh-ap-flags label { background: var(--bh-panel-alt, #1a2844); border-color: var(--bh-border, rgba(244,234,214,0.08)); color: var(--ink-700, #d4c8ac); }
html[data-theme="dark"] .bh-ap-flags label:hover { background: rgba(212, 180, 127, 0.10); border-color: rgba(212, 180, 127, 0.28); }
html[data-theme="dark"] .bh-ap-flags label:has(input:checked) { background: rgba(212, 180, 127, 0.14); border-color: var(--gold-500, #d4b47f); }
html[data-theme="dark"] .bh-ap-flags input[type="checkbox"] { background: var(--bh-bg, #0a1323); border-color: rgba(244, 234, 214, 0.22); }
html[data-theme="dark"] .bh-stmt-section__head--accent { border-bottom-color: var(--gold-500, #d4b47f); }
html[data-theme="dark"] .bh-stmt-section__head--accent h3 { color: var(--gold-500, #d4b47f); }

/* Cohost % input with suffix */
.bh-stmt-pct {
  position: relative;
  display: flex;
  align-items: center;
}
.bh-stmt-pct input {
  flex: 1;
  padding-right: 30px;
}
.bh-stmt-pct__suffix {
  position: absolute;
  right: 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-500);
  pointer-events: none;
}

/* Address line that auto-fills under the property dropdown */
.bh-stmt-addr {
  margin-top: 10px;
  padding: 8px 12px;
  background: var(--bh-panel);
  border: 1px dashed var(--bh-border);
  border-radius: 8px;
  font-size: 12.5px;
  color: var(--ink-700);
  font-style: italic;
}
html[data-theme="dark"] .bh-stmt-addr { background: var(--bh-panel); }

/* ----- Inline editable tables (bookings + expenses) ----- */
.bh-stmt-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  background: var(--bh-panel);
}
html[data-theme="dark"] .bh-stmt-table-wrap { background: var(--bh-panel); }
.bh-stmt-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
.bh-stmt-table th {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
  text-align: left;
  padding: 10px 8px;
  border-bottom: 1px solid var(--bh-border);
  background: var(--bh-panel-alt);
  white-space: nowrap;
}
.bh-stmt-table td {
  padding: 6px 6px;
  border-bottom: 1px solid var(--bh-border);
  vertical-align: middle;
}
.bh-stmt-table tbody tr:last-child td { border-bottom: 0; }
.bh-stmt-table .bh-t--right { text-align: right; }
.bh-stmt-table .bh-sm-col-num { text-align: right; }

.bh-stmt-table th.bh-sm-col-status,
.bh-stmt-table th.bh-sm-col-date,
.bh-stmt-table th.bh-sm-col-num,
.bh-stmt-table th.bh-sm-col-cat,
.bh-stmt-table th.bh-sm-col-att,
.bh-stmt-table th.bh-sm-col-act { white-space: nowrap; }

/* Inline cells use unstyled inputs that look like normal cells until focused */
.bh-stmt-cell-input {
  width: 100%;
  padding: 7px 8px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  font-family: inherit;
  font-size: 12.5px;
  color: var(--ink-900);
  transition: background 140ms, border-color 140ms, box-shadow 140ms;
  outline: none;
  font-variant-numeric: tabular-nums;
  text-align: inherit;
}
.bh-stmt-cell-input:hover { background: rgba(201, 160, 106, 0.04); }
.bh-stmt-cell-input:focus {
  background: var(--bh-panel-alt);
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(201, 160, 106, 0.16);
}
.bh-stmt-cell-input--num { text-align: right; min-width: 90px; font-variant-numeric: tabular-nums; }
.bh-stmt-cell-input--readonly {
  pointer-events: none;
  font-weight: 600;
  color: var(--ink-900);
}

/* Status pill (Accommodation / Resolution) inside the bookings table */
.bh-stmt-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  border: 1px solid transparent;
  background: rgba(46, 160, 116, 0.14);
  color: #1e7e5a;
  transition: background 140ms, border-color 140ms;
  white-space: nowrap;
}
.bh-stmt-status-pill[data-status="accommodation"] { background: rgba(46, 160, 116, 0.14); color: #1e7e5a; border-color: rgba(46, 160, 116, 0.32); }
.bh-stmt-status-pill[data-status="resolution"]    { background: rgba(123, 168, 217, 0.18); color: #2c5e95; border-color: rgba(123, 168, 217, 0.36); }
html[data-theme="dark"] .bh-stmt-status-pill[data-status="accommodation"] { color: #55c794; background: rgba(46, 160, 116, 0.20); }
html[data-theme="dark"] .bh-stmt-status-pill[data-status="resolution"]    { color: #7ba8d9; background: rgba(123, 168, 217, 0.20); }

.bh-stmt-row-act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  border-radius: 999px;
  background: transparent;
  border: 1px solid transparent;
  color: var(--ink-500);
  cursor: pointer;
  transition: background 140ms, color 140ms, border-color 140ms;
}
.bh-stmt-row-act:hover { background: rgba(193, 69, 69, 0.10); color: var(--bh-danger, #c14545); border-color: rgba(193, 69, 69, 0.28); }
.bh-stmt-row-act--add { color: var(--gold-700, #8c6c3f); }
.bh-stmt-row-act--add:hover { background: rgba(201, 160, 106, 0.14); color: var(--gold-500); border-color: rgba(201, 160, 106, 0.32); }
html[data-theme="dark"] .bh-stmt-row-act { color: var(--ink-500); }
html[data-theme="dark"] .bh-stmt-row-act--add { color: var(--gold-400); }

.bh-stmt-rowactions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}

.bh-stmt-subtotal td {
  font-weight: 600;
  font-size: 12.5px;
  color: var(--ink-900);
  background: var(--bh-panel-alt);
  border-top: 1px solid var(--bh-border);
}

/* ----- Grand totals strip (yellow + cyan, like the spreadsheet) ----- */
.bh-stmt-totals {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 720px) { .bh-stmt-totals { grid-template-columns: 1fr; } }
.bh-stmt-totals__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-radius: 12px;
  border: 1px solid var(--bh-border);
}
.bh-stmt-totals__row--cohost {
  background: linear-gradient(135deg, rgba(255, 240, 165, 0.85), rgba(247, 219, 113, 0.7));
  border-color: rgba(214, 175, 56, 0.4);
}
.bh-stmt-totals__row--owner {
  background: linear-gradient(135deg, rgba(177, 230, 240, 0.7), rgba(125, 207, 224, 0.55));
  border-color: rgba(80, 180, 200, 0.4);
}
html[data-theme="dark"] .bh-stmt-totals__row--cohost {
  background: linear-gradient(135deg, rgba(214, 175, 56, 0.18), rgba(214, 175, 56, 0.10));
  border-color: rgba(214, 175, 56, 0.38);
}
html[data-theme="dark"] .bh-stmt-totals__row--owner {
  background: linear-gradient(135deg, rgba(80, 180, 200, 0.18), rgba(80, 180, 200, 0.10));
  border-color: rgba(80, 180, 200, 0.38);
}
.bh-stmt-totals__label {
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 700;
  color: rgba(10, 21, 32, 0.7);
}
html[data-theme="dark"] .bh-stmt-totals__label { color: rgba(244, 234, 214, 0.85); }
.bh-stmt-totals__value {
  font-family: 'Fraunces', serif;
  font-size: 22px;
  font-weight: 600;
  color: rgba(10, 21, 32, 0.92);
  font-variant-numeric: tabular-nums;
}
html[data-theme="dark"] .bh-stmt-totals__value { color: var(--ink-900); }

/* Email-on-save checkbox row */
.bh-stmt-checkrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--ink-700);
  cursor: pointer;
  user-select: none;
}
.bh-stmt-checkrow input[type="checkbox"] {
  width: 16px; height: 16px;
  margin: 0;
  cursor: pointer;
  accent-color: var(--gold-500);
}

.bh-stmt-modal__msg {
  min-height: 18px;
  font-size: 13px;
  font-weight: 500;
}
.bh-stmt-modal__msg.is-success { color: var(--bh-success, #1e7e5a); }
.bh-stmt-modal__msg.is-error   { color: var(--bh-danger, #c14545); }

.bh-stmt-modal__foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 16px 28px 24px;
  border-top: 1px solid var(--bh-border);
  margin-top: 6px;
  position: sticky; bottom: 0;
  background: var(--bh-panel);
}
.bh-stmt-modal__foot .bh-btn:first-child { margin-right: auto; }

/* ----- Tiny inline file picker on expense rows ----- */
.bh-stmt-file-mini {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: var(--bh-panel-alt);
  border: 1px dashed var(--bh-border);
  border-radius: 8px;
  font-size: 11.5px;
  color: var(--ink-600);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 140ms, color 140ms, background 140ms;
}
.bh-stmt-file-mini:hover { border-color: var(--gold-500); color: var(--gold-500); }
.bh-stmt-file-mini input { display: none; }
.bh-stmt-file-mini--filled { color: var(--gold-700, #8c6c3f); border-style: solid; border-color: rgba(201, 160, 106, 0.4); }
html[data-theme="dark"] .bh-stmt-file-mini--filled { color: var(--gold-400); }

/* =========================================================
   STATEMENT VIEWER (read-only, printable)
   Used for both admin "open existing" + owner "view in
   Invoices tab". Layout mirrors the spreadsheet exactly so
   anyone receiving a printed copy sees the format they know.
   ========================================================= */
.bh-stmt-viewer {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: grid;
  place-items: center;
  padding: 20px;
}
.bh-stmt-viewer[hidden] { display: none; }
.bh-stmt-viewer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 22, 40, 0.55);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  animation: bh-modal-fade 220ms var(--bh-ease) both;
}
.bh-stmt-viewer__panel {
  position: relative;
  width: 100%;
  max-width: 980px;
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  display: flex;
  flex-direction: column;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 18px;
  box-shadow: 0 24px 64px rgba(10, 22, 40, 0.32);
  overflow: hidden;
  animation: bh-modal-rise 220ms var(--bh-ease) both;
}
.bh-stmt-viewer__topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 22px;
  border-bottom: 1px solid var(--bh-border);
  background: var(--bh-panel-alt);
}
.bh-stmt-viewer__crumbs {
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink-600);
}
.bh-stmt-viewer__actions { display: flex; align-items: center; gap: 8px; }
.bh-stmt-viewer__doc {
  flex: 1;
  overflow-y: auto;
  background: #f3f0e6;
  padding: 28px;
}
html[data-theme="dark"] .bh-stmt-viewer__doc { background: #1e2a3f; }

/* The printable doc itself — styled to look like the spreadsheet,
   independent of light/dark mode for predictable PDFs. */
.bh-stmt-doc {
  background: #ffffff;
  color: #0a1520;
  max-width: 920px;
  margin: 0 auto;
  border: 1px solid rgba(10, 21, 32, 0.12);
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
}
.bh-stmt-doc__banner {
  background: #6b8a93;
  color: #ffffff;
  padding: 18px 24px;
  text-align: center;
  font-family: 'Fraunces', serif;
  font-size: 22px;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.bh-stmt-doc__address {
  background: #5a5a5a;
  color: #ffffff;
  padding: 12px 24px;
  font-weight: 600;
  font-size: 14px;
  margin: 18px 24px 0;
}
.bh-stmt-doc__monthrow {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 24px 0;
}
.bh-stmt-doc__monthlabel {
  background: #7ea4ad;
  color: #ffffff;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.bh-stmt-doc__monthvalue { font-weight: 700; font-size: 14px; }
.bh-stmt-doc__table {
  width: calc(100% - 48px);
  margin: 18px 24px;
  border-collapse: collapse;
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
.bh-stmt-doc__table th,
.bh-stmt-doc__table td {
  padding: 8px 10px;
  border: 1px solid rgba(10, 21, 32, 0.08);
  vertical-align: middle;
}
.bh-stmt-doc__table thead th {
  background: #d3d3d3;
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 700;
  text-align: center;
  color: rgba(10, 21, 32, 0.78);
}
.bh-stmt-doc__table thead th.bh-stmt-doc__th--accent { background: #7ea4ad; color: #ffffff; }
.bh-stmt-doc__table tbody td.bh-stmt-doc__num { text-align: right; font-variant-numeric: tabular-nums; }
.bh-stmt-doc__rowstatus {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-align: center;
  padding: 4px 8px;
  border-radius: 0;
  white-space: nowrap;
}
.bh-stmt-doc__rowstatus--accommodation { background: #d4eccc; color: #2a5e1f; }
.bh-stmt-doc__rowstatus--resolution    { background: #cfe2f4; color: #234c79; }
.bh-stmt-doc__rowstatus--expense       { background: #efeae0; color: #5a4f3a; font-style: italic; }
.bh-stmt-doc__bold { font-weight: 700; }
.bh-stmt-doc__sub { background: #f7f5ee; }
.bh-stmt-doc__total td {
  background: #5a5a5a;
  color: #ffffff;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bh-stmt-doc__total td.bh-stmt-doc__total--cohost { background: #fff04a; color: #0a1520; }
.bh-stmt-doc__total td.bh-stmt-doc__total--owner  { background: #4ed6e6; color: #0a1520; }
.bh-stmt-doc__notes {
  margin: 0 24px 24px;
  padding: 12px 14px;
  background: #f7f5ee;
  border-left: 3px solid #c9a06a;
  font-size: 12.5px;
  line-height: 1.55;
  color: #4a443a;
}
.bh-stmt-doc__foot {
  padding: 12px 24px 22px;
  font-size: 11px;
  color: rgba(10, 21, 32, 0.6);
  text-align: center;
  letter-spacing: 0.04em;
}
.bh-stmt-doc__expdesc { white-space: normal; max-width: 360px; }

/* Print mode: hide the surrounding chrome and show only the doc. */
@media print {
  body.bh-printing-stmt { background: #ffffff !important; }
  body.bh-printing-stmt > *:not(.bh-stmt-viewer) { display: none !important; }
  body.bh-printing-stmt .bh-stmt-viewer__backdrop,
  body.bh-printing-stmt .bh-stmt-viewer__topbar { display: none !important; }
  body.bh-printing-stmt .bh-stmt-viewer { position: static; padding: 0; }
  body.bh-printing-stmt .bh-stmt-viewer__panel {
    box-shadow: none; border: 0; max-height: none; max-width: none;
  }
  body.bh-printing-stmt .bh-stmt-viewer__doc { background: #ffffff; padding: 0; overflow: visible; }
  body.bh-printing-stmt .bh-stmt-doc { border: 0; }
}

/* =========================================================
   OWNER-FACING STATEMENTS LIST (Invoices view addition)
   ========================================================= */
.bh-stmt-owner-list { display: flex; flex-direction: column; gap: 8px; }
.bh-stmt-owner-card {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: 16px;
  align-items: center;
  padding: 14px 16px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  cursor: pointer;
  transition: border-color 160ms, transform 160ms, box-shadow 160ms;
}
.bh-stmt-owner-card:hover {
  border-color: rgba(201, 160, 106, 0.5);
  transform: translateY(-1px);
  box-shadow: var(--bh-shadow-md);
}
html[data-theme="dark"] .bh-stmt-owner-card { background: var(--bh-panel); border-color: var(--bh-border); }
.bh-stmt-owner-card__month {
  font-family: 'Fraunces', serif;
  font-size: 18px;
  font-weight: 500;
  color: var(--ink-900);
  white-space: nowrap;
}
.bh-stmt-owner-card__prop { font-size: 12.5px; color: var(--ink-600); }
.bh-stmt-owner-card__amt {
  font-family: 'Fraunces', serif;
  font-size: 20px;
  font-weight: 600;
  color: var(--ink-900);
  font-variant-numeric: tabular-nums;
}
.bh-stmt-owner-card__amt-label { font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-500); font-weight: 600; }
.bh-stmt-owner-card__cta {
  font-size: 12px;
  font-weight: 600;
  color: var(--gold-500);
  display: inline-flex; align-items: center; gap: 4px;
}
@media (max-width: 720px) {
  .bh-stmt-owner-card { grid-template-columns: 1fr 1fr; gap: 8px; padding: 12px; }
  .bh-stmt-owner-card__amt { text-align: right; }
  .bh-stmt-owner-card__cta { grid-column: 1 / -1; justify-content: flex-end; }
}

@media (max-width: 640px) {
  .bh-maint-modal { padding: 12px; }
  .bh-maint-modal__form { grid-template-columns: 1fr; padding: 18px 20px 0; }
  .bh-maint-modal__head { padding: 18px 20px 14px; }
  .bh-maint-modal__foot { padding: 14px 20px 20px; }
}

/* "+ Log new entry" button + summary alignment in the
   maintenance view header. */
.bh-maint-headactions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
}
.bh-maint-headactions .bh-maint-summary { margin: 0; }
@media (max-width: 720px) {
  .bh-maint-headactions { align-items: stretch; }
}

/* =========================================================
   MAINTENANCE & REPAIRS — owner-facing log
   Polished filter rail + featured-card grid + dense table.
   Each entry can open a printable invoice on-demand.
   ========================================================= */
.bh-maint-summary {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: stretch;
}
.bh-maint-sumitem {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 16px;
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  background: var(--bh-panel);
  min-width: 130px;
}
.bh-maint-sumitem.is-warn { border-color: rgba(183, 121, 31, 0.4); background: rgba(183, 121, 31, 0.06); }
.bh-maint-sumitem__label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-400);
}
.bh-maint-sumitem__value {
  font-family: 'Fraunces', serif;
  font-size: 22px;
  font-weight: 500;
  color: var(--ink-900);
  line-height: 1.05;
}
.bh-maint-sumitem.is-warn .bh-maint-sumitem__value { color: var(--bh-warn, #b7791f); }
.bh-maint-sumitem__sub {
  font-size: 11.5px;
  color: var(--ink-600);
}

/* ---------------------------------------------------------------
   Maintenance filter rail.

   Layout: a row of dropdown triggers on the left and a free-text
   search field on the right. When all three dropdowns are
   suppressed (1-property owner, uniform status, uniform category)
   the rail shrinks to just the search. The search is always last
   so the layout reads predictably regardless of which dropdowns
   render.
   --------------------------------------------------------------- */
.bh-maint-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 18px;
  align-items: center;
  padding: 16px 18px;
}
.bh-maint-filters__row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
}
.bh-maint-filters__row:empty { display: none; }
/* When every dropdown group is suppressed (1-property + uniform
   category + uniform status), tighten the filter card so it doesn't
   read as an empty bar around just a search box. */
.bh-maint-filters--minimal { padding: 10px 14px; }
.bh-maint-filters--minimal .bh-maint-filters__search { margin-left: 0; flex: 1; }
.bh-maint-filters__search {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  color: var(--ink-400);
  transition: border-color 160ms var(--bh-ease), box-shadow 160ms var(--bh-ease), background-color 160ms var(--bh-ease);
  min-width: 220px;
  flex: 0 1 320px;
}
.bh-maint-filters__search:focus-within {
  border-color: var(--gold-500);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.16);
}
.bh-maint-filters__search input {
  flex: 1;
  background: transparent;
  border: 0;
  outline: 0;
  color: var(--ink-900);
  font-family: inherit;
  font-size: 13px;
  min-width: 0;
}

/* ---------------------------------------------------------------
   Premium dropdown component (.bh-dropdown).

   Anatomy:
     .bh-dropdown                container, anchors the popover
       .bh-dropdown__trigger     button: label + value + chevron
       .bh-dropdown__panel       popover (absolute; opens below)
         .bh-dropdown__list      scrollable list of options
           .bh-dropdown__option  one option (with optional check)

   Open state is driven by `[data-open="true"]` on the container
   (set by JS). All transitions use the dashboard's shared easing
   so the motion matches the rest of the UI.
   --------------------------------------------------------------- */
.bh-dropdown {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
}
.bh-dropdown[hidden] { display: none !important; }
.bh-dropdown__trigger {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 9px 14px 9px 16px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 999px;
  color: var(--ink-900);
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: border-color 160ms var(--bh-ease), background-color 160ms var(--bh-ease), box-shadow 160ms var(--bh-ease), color 160ms var(--bh-ease);
  min-height: 38px;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.bh-dropdown__trigger:hover {
  border-color: rgba(201, 160, 106, 0.55);
  background: #fff;
}
.bh-dropdown__trigger:focus-visible {
  outline: 0;
  border-color: var(--gold-500);
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.18);
}
.bh-dropdown[data-open="true"] .bh-dropdown__trigger {
  border-color: var(--gold-500);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(201, 160, 106, 0.16);
}
.bh-dropdown__label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-500, #7c8a9a);
  white-space: nowrap;
}
.bh-dropdown__value {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-900);
  white-space: nowrap;
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bh-dropdown.is-active-filter .bh-dropdown__value { color: var(--gold-700, #8c6c3f); }
.bh-dropdown__chevron {
  flex: 0 0 auto;
  color: var(--ink-500, #7c8a9a);
  transition: transform 200ms var(--bh-ease), color 160ms var(--bh-ease);
}
.bh-dropdown[data-open="true"] .bh-dropdown__chevron {
  transform: rotate(180deg);
  color: var(--gold-700, #8c6c3f);
}

/* Panel: absolute popover below the trigger. Hidden via
   `hidden` attribute when closed; transitioned in via the
   `is-open` class set by JS one frame after unhiding. */
.bh-dropdown__panel {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 40;
  min-width: 240px;
  max-width: min(360px, 92vw);
  background: #ffffff;
  border: 1px solid var(--bh-border);
  border-radius: 14px;
  box-shadow:
    0 1px 2px rgba(10, 21, 32, 0.04),
    0 18px 40px -12px rgba(10, 21, 32, 0.18),
    0 0 0 1px rgba(201, 160, 106, 0.08);
  padding: 6px;
  opacity: 0;
  transform: translateY(-4px) scale(0.985);
  transform-origin: top left;
  transition: opacity 160ms var(--bh-ease), transform 180ms var(--bh-ease);
  pointer-events: none;
}
.bh-dropdown__panel[hidden] { display: none; }
.bh-dropdown__panel.is-open {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.bh-dropdown__panel--right { left: auto; right: 0; transform-origin: top right; }

.bh-dropdown__list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-height: min(60vh, 360px);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(10, 21, 32, 0.18) transparent;
  padding: 2px;
}
.bh-dropdown__list::-webkit-scrollbar { width: 6px; }
.bh-dropdown__list::-webkit-scrollbar-track { background: transparent; }
.bh-dropdown__list::-webkit-scrollbar-thumb {
  background: rgba(10, 21, 32, 0.18);
  border-radius: 999px;
}
.bh-dropdown__list::-webkit-scrollbar-thumb:hover { background: rgba(10, 21, 32, 0.32); }

.bh-dropdown__option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px 9px 14px;
  background: transparent;
  border: 0;
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink-900);
  text-align: left;
  width: 100%;
  transition: background-color 120ms var(--bh-ease), color 120ms var(--bh-ease);
  -webkit-tap-highlight-color: transparent;
}
.bh-dropdown__option:hover,
.bh-dropdown__option:focus-visible,
.bh-dropdown__option.is-focus {
  background: rgba(201, 160, 106, 0.10);
  outline: 0;
  color: var(--ink-900);
}
.bh-dropdown__option.is-active {
  background: rgba(201, 160, 106, 0.14);
  color: var(--gold-700, #8c6c3f);
  font-weight: 600;
}
.bh-dropdown__option-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bh-dropdown__option-meta {
  font-size: 11px;
  font-weight: 500;
  color: var(--ink-500, #7c8a9a);
  letter-spacing: 0.02em;
  margin-left: 8px;
  white-space: nowrap;
}
.bh-dropdown__check {
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  color: var(--gold-700, #8c6c3f);
  opacity: 0;
  transform: scale(0.6);
  transition: opacity 140ms var(--bh-ease), transform 160ms var(--bh-ease);
}
.bh-dropdown__option.is-active .bh-dropdown__check {
  opacity: 1;
  transform: scale(1);
}

/* "Clear filter" button: appears at the top of the panel when a
   non-default option is selected. Lets the user reset without
   re-opening the panel just to find "All …". */
.bh-dropdown__panel-foot {
  display: none;
  align-items: center;
  justify-content: space-between;
  padding: 6px 8px 4px;
  margin-top: 4px;
  border-top: 1px dashed var(--bh-border);
}
.bh-dropdown.is-active-filter .bh-dropdown__panel-foot { display: flex; }
.bh-dropdown__panel-clear {
  background: transparent;
  border: 0;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-500, #7c8a9a);
  cursor: pointer;
  padding: 6px 8px;
  border-radius: 8px;
  transition: color 140ms var(--bh-ease), background-color 140ms var(--bh-ease);
}
.bh-dropdown__panel-clear:hover {
  color: var(--gold-700, #8c6c3f);
  background: rgba(201, 160, 106, 0.10);
}
.bh-dropdown__panel-count {
  font-size: 11px;
  color: var(--ink-500, #7c8a9a);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 0 6px;
}

.bh-maint-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
  padding: 4px 0 4px;
}
.bh-maint-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px 16px 14px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
  transition: border-color 180ms var(--bh-ease), transform 180ms var(--bh-ease), box-shadow 180ms var(--bh-ease);
}
.bh-maint-card:hover {
  border-color: rgba(201, 160, 106, 0.45);
  transform: translateY(-1px);
  box-shadow: var(--bh-shadow-sm);
}
.bh-maint-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.bh-maint-card__cat {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold-500);
}
.bh-maint-card__title {
  font-family: 'Fraunces', serif;
  font-weight: 500;
  font-size: 17px;
  line-height: 1.25;
  margin: 0;
  color: var(--ink-900);
}
.bh-maint-card__prop {
  font-size: 12.5px;
  color: var(--ink-600);
}
.bh-maint-card__notes {
  font-size: 12.5px;
  color: var(--ink-600);
  line-height: 1.45;
  margin: 0;
}
.bh-maint-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px dashed var(--bh-border);
}
.bh-maint-card__meta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  color: var(--ink-400);
  min-width: 0;
}
.bh-maint-card__date { color: var(--ink-900); font-weight: 500; }
.bh-maint-card__vendor {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 130px;
}
.bh-maint-card__cost-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.bh-maint-card__cost {
  font-family: 'Fraunces', serif;
  font-weight: 500;
  font-size: 16px;
  color: var(--ink-900);
}
.bh-maint-card__inv {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: 1px solid var(--bh-border);
  color: var(--ink-600);
  padding: 5px 9px;
  font-family: inherit;
  font-size: 11.5px;
  font-weight: 500;
  border-radius: 999px;
  cursor: pointer;
  transition: border-color 160ms, color 160ms, background 160ms;
}
.bh-maint-card__inv:hover {
  border-color: var(--gold-500);
  color: var(--gold-500);
  background: rgba(201, 160, 106, 0.08);
}
.bh-maint-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 32px 16px;
  color: var(--ink-400);
  border: 1px solid var(--bh-border);
  border-radius: var(--bh-radius);
}

.bh-maint-table th[data-sort] { cursor: default; }
.bh-maint-cat-pill {
  display: inline-block;
  padding: 3px 9px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  border-radius: 999px;
  background: rgba(201, 160, 106, 0.1);
  color: var(--gold-500);
  border: 1px solid rgba(201, 160, 106, 0.2);
  white-space: nowrap;
}
.bh-maint-work {
  font-weight: 500;
  color: var(--ink-900);
  margin-bottom: 2px;
}
.bh-maint-notes {
  font-size: 11.5px;
  color: var(--ink-600);
  line-height: 1.4;
}
.bh-maint-link {
  color: var(--ink-900);
  font-weight: 500;
  text-decoration: none;
  border-bottom: 1px dashed var(--bh-border-strong);
  transition: color 140ms, border-color 140ms;
}
.bh-maint-link:hover { color: var(--gold-500); border-color: var(--gold-500); }
.bh-maint-table__inv {
  white-space: nowrap;
}
.bh-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

@media (max-width: 720px) {
  .bh-maint-filters { flex-direction: column; align-items: stretch; gap: 10px; padding: 12px 14px; }
  .bh-maint-filters__row { gap: 8px; }
  .bh-maint-filters__row .bh-dropdown { flex: 1 1 calc(50% - 4px); min-width: 0; }
  .bh-maint-filters__row .bh-dropdown__trigger { width: 100%; justify-content: space-between; padding: 9px 12px 9px 14px; }
  .bh-maint-filters__row .bh-dropdown__value { max-width: none; flex: 0 1 auto; }
  .bh-maint-filters__search { margin-left: 0; min-width: 0; flex: 1; }
  /* Anchor panel under-trigger but full-row width on small screens
     so the listbox doesn't overflow the viewport. */
  .bh-dropdown__panel {
    left: 0; right: 0;
    max-width: 100%;
    min-width: 0;
  }
  .bh-maint-table th:nth-child(2),
  .bh-maint-table td:nth-child(2) { display: none; }
  .bh-maint-table th:nth-child(5),
  .bh-maint-table td:nth-child(5) { display: none; }
}
@media (max-width: 420px) {
  .bh-maint-filters__row .bh-dropdown { flex: 1 1 100%; }
}

/* =========================================================
   MOBILE
   ========================================================= */
@media (max-width: 960px) {
  body.bh-dash { grid-template-columns: 1fr; }
  .bh-sidebar {
    position: fixed; top: 0; left: 0; bottom: 0;
    width: 248px;
    transform: translateX(-100%);
    transition: transform 260ms var(--bh-ease);
    z-index: 50;
  }
  body.bh-dash.nav-open .bh-sidebar { transform: translateX(0); box-shadow: 0 0 60px rgba(0,0,0,0.25); }
  body.bh-dash.nav-open::after {
    content: ""; position: fixed; inset: 0; background: rgba(10, 22, 40, 0.45); z-index: 40;
  }
  .bh-topbar__menu { display: inline-flex; }
  .bh-topbar { padding: 12px 18px; gap: 12px; }
  .bh-content { padding: 20px 18px 48px; }
  .bh-grid--7-3, .bh-grid--6-4 { grid-template-columns: 1fr; }
  .bh-kpis { grid-template-columns: 1fr 1fr; }
  .bh-topbar__userinfo { display: none; }
  /* Compact, symmetric avatar-only button when username is hidden */
  .bh-topbar__userbtn { padding: 4px 8px 4px 4px; gap: 6px; }
  .bh-topbar__filters {
    order: 3; width: 100%; overflow-x: auto; overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .bh-topbar__filters::-webkit-scrollbar { height: 4px; }
  .bh-topbar__filters::-webkit-scrollbar-thumb { background: var(--bh-border-strong); border-radius: 4px; }
}
@media (max-width: 560px) {
  .bh-kpis { grid-template-columns: 1fr; }
  .bh-table { font-size: 12.5px; }
  .bh-table th:nth-child(3), .bh-table td:nth-child(3),
  .bh-table th:nth-child(5), .bh-table td:nth-child(5) { display: none; }
  /* Hide the "Scope" label to reclaim horizontal room; chips still read clearly */
  .bh-topbar__filterlabel { display: none; }
  .bh-topbar__filters { padding: 4px 6px; }
}
@media (max-width: 380px) {
  .bh-topbar { padding: 10px 14px; gap: 8px; }
  .bh-topbar__title { font-size: 20px; }
  .bh-topbar__avatar { width: 28px; height: 28px; font-size: 12px; }
  .bh-topbar__userbtn svg { width: 12px; height: 12px; }
}

/* =============================================================
   STATEMENTS V2 — 5-status taxonomy + contract-aware UI
   ============================================================= */

/* 5-state status select inside the bookings table — replaces the
   old 2-state pill. Looks like a pill but is a real <select>. */
.bh-stmt-status-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  border: 1px solid transparent;
  background-color: rgba(46, 160, 116, 0.14);
  color: #1e7e5a;
  border-radius: 999px;
  padding: 4px 22px 4px 10px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  font-family: inherit;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8' fill='none' stroke='%231e7e5a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><polyline points='1.5 3 4 5.5 6.5 3'/></svg>");
  background-repeat: no-repeat;
  background-position: right 6px center;
  white-space: nowrap;
  min-width: 130px;
  text-align: left;
  transition: background-color 140ms, border-color 140ms;
}
.bh-stmt-status-select:focus {
  outline: 2px solid var(--gold-500);
  outline-offset: 1px;
}
.bh-stmt-status-select[data-status="completed"]    { background-color: rgba(46, 160, 116, 0.14); color: #1e7e5a; border-color: rgba(46, 160, 116, 0.32); }
.bh-stmt-status-select[data-status="accommodation"]{ background-color: rgba(46, 160, 116, 0.14); color: #1e7e5a; border-color: rgba(46, 160, 116, 0.32); }
.bh-stmt-status-select[data-status="resolution"]   { background-color: rgba(123, 168, 217, 0.18); color: #2c5e95; border-color: rgba(123, 168, 217, 0.36); }
.bh-stmt-status-select[data-status="reimbursement"]{ background-color: rgba(168, 132, 211, 0.18); color: #6a449b; border-color: rgba(168, 132, 211, 0.36); }
.bh-stmt-status-select[data-status="cancellation"] { background-color: rgba(140, 140, 140, 0.18); color: #5c5c5c; border-color: rgba(140, 140, 140, 0.34); }
html[data-theme="dark"] .bh-stmt-status-select[data-status="completed"]     { color: #55c794; background-color: rgba(46, 160, 116, 0.20); }
html[data-theme="dark"] .bh-stmt-status-select[data-status="accommodation"] { color: #55c794; background-color: rgba(46, 160, 116, 0.20); }
html[data-theme="dark"] .bh-stmt-status-select[data-status="resolution"]    { color: #7ba8d9; background-color: rgba(123, 168, 217, 0.20); }
html[data-theme="dark"] .bh-stmt-status-select[data-status="reimbursement"] { color: #c3a4ed; background-color: rgba(168, 132, 211, 0.22); }
html[data-theme="dark"] .bh-stmt-status-select[data-status="cancellation"]  { color: #b8b8b8; background-color: rgba(180, 180, 180, 0.18); }
.bh-stmt-status-select option { color: var(--ink-900); background: var(--bh-panel); }

/* Tiny inline cell flag (no-cohost / recurring badges) */
.bh-stmt-cell-flag {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 7px;
  border-radius: 10px;
  background: rgba(140, 140, 140, 0.16);
  color: #5c5c5c;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  vertical-align: middle;
  cursor: help;
}
.bh-stmt-cell-flag--recur {
  background: rgba(214, 175, 56, 0.16);
  color: #8c6c3f;
}
html[data-theme="dark"] .bh-stmt-cell-flag {
  background: rgba(244, 234, 214, 0.10);
  color: rgba(244, 234, 214, 0.7);
}
html[data-theme="dark"] .bh-stmt-cell-flag--recur {
  background: rgba(214, 175, 56, 0.20);
  color: var(--gold-400);
}

.bh-stmt-cell-input--bold {
  font-weight: 700;
}

/* Quick-add chip toolbar (sits beside Add booking) */
.bh-stmt-rowactions {
  flex-wrap: wrap;
  align-items: center;
}
.bh-stmt-rowactions__sep {
  width: 1px;
  height: 22px;
  background: var(--bh-border);
  margin: 0 6px;
}
.bh-stmt-rowactions__lbl {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-right: 2px;
}
.bh-stmt-quick {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px dashed var(--bh-border);
  background: transparent;
  color: var(--ink-700);
  font-size: 11.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 140ms;
  font-family: inherit;
}
.bh-stmt-quick:hover {
  border-style: solid;
  border-color: var(--gold-500);
  color: var(--gold-700, #8c6c3f);
  background: rgba(201, 160, 106, 0.08);
}
.bh-stmt-quick svg { color: inherit; flex-shrink: 0; }
html[data-theme="dark"] .bh-stmt-quick { color: var(--ink-700); }
html[data-theme="dark"] .bh-stmt-quick:hover {
  color: var(--gold-400);
  border-color: var(--gold-400);
  background: rgba(214, 175, 56, 0.10);
}

/* Contract strip (under property selector in stmt modal) */
.bh-stmt-contract-strip-host { margin-top: 4px; }
.bh-stmt-contract-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 12px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  align-items: center;
}
.bh-stmt-contract-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  font-size: 11.5px;
  color: var(--ink-700);
  white-space: nowrap;
}
.bh-stmt-contract-chip strong {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-right: 4px;
  font-weight: 700;
}
.bh-stmt-contract-chip--alert {
  background: rgba(214, 175, 56, 0.14);
  border-color: rgba(214, 175, 56, 0.4);
  color: #8c6c3f;
}
.bh-stmt-contract-chip--alert strong { color: #8c6c3f; }
html[data-theme="dark"] .bh-stmt-contract-chip--alert {
  background: rgba(214, 175, 56, 0.18);
  color: var(--gold-400);
  border-color: rgba(214, 175, 56, 0.4);
}
html[data-theme="dark"] .bh-stmt-contract-chip--alert strong { color: var(--gold-400); }
.bh-btn--xs {
  padding: 5px 10px;
  font-size: 11px;
  border-radius: 8px;
  margin-left: auto;
}
.bh-btn--xs svg { flex-shrink: 0; }

/* Statement DOC viewer: 5-status colors + new types */
.bh-stmt-doc__rowstatus--completed     { background: #d4eccc; color: #2a5e1f; }
.bh-stmt-doc__rowstatus--reimbursement { background: #e7d7f5; color: #5b3a85; }
.bh-stmt-doc__rowstatus--cancellation  { background: #d8d8d8; color: #4a4a4a; }
.bh-stmt-doc__rowstatus--mortgage      { background: #f4d4d4; color: #7a3838; font-weight: 700; }

/* No-cohost layout — collapses the cohost column/total when
   contract.hideCohost. We hide:
   - tbody cell: the .bh-sm-col-cohost cell (added to renderer)
   - thead cell: 3rd from end (last is empty actions, 2nd-to-last is
     Owner payout, 3rd-to-last is Cohost fee)
   - tfoot cell: 3rd from end (same logic — bookings-cohost cell)
   - grand totals strip: hides the Bello receives row */
.bh-stmt-table--no-cohost .bh-sm-col-cohost { display: none; }
.bh-stmt-table--no-cohost thead th:nth-last-child(3),
.bh-stmt-table--no-cohost tfoot td:nth-last-child(3) { display: none; }
.bh-stmt-totals--no-cohost { grid-template-columns: 1fr; }
.bh-stmt-totals--no-cohost .bh-stmt-totals__row--cohost { display: none; }
.bh-stmt-doc--no-cohost .bh-stmt-doc__total--cohost { display: none; }

/* Property Settings modal — section disabled state when hideCohost is on */
.bh-stmt-section.is-disabled {
  opacity: 0.55;
  pointer-events: none;
}
.bh-prop-modal .bh-stmt-modal__panel { max-width: 760px; }

/* Tiny soft pill (used for "optional" badge on Mortgage tracking) */
.bh-stmt-pill--soft {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 9px;
  border-radius: 999px;
  background: rgba(201, 160, 106, 0.16);
  color: var(--gold-700, #8c6c3f);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  vertical-align: middle;
}
html[data-theme="dark"] .bh-stmt-pill--soft {
  background: rgba(214, 175, 56, 0.20);
  color: var(--gold-400);
}

/* Owner mortgage tracking panel */
.bh-stmt-mortgage-list {
  display: grid;
  gap: 10px;
  padding: 14px 18px 18px;
}
.bh-stmt-mortgage-card {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 16px;
  align-items: center;
  padding: 14px 16px;
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  background: var(--bh-panel-alt);
  transition: border-color 140ms;
}
.bh-stmt-mortgage-card:has(input[type="checkbox"]:checked) {
  border-color: var(--gold-500);
  background: rgba(201, 160, 106, 0.06);
}
@media (max-width: 720px) {
  .bh-stmt-mortgage-card {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}
.bh-stmt-mortgage-card__name {
  font-weight: 600;
  color: var(--ink-900);
  font-size: 14px;
}
.bh-stmt-mortgage-card__addr {
  font-size: 12px;
  color: var(--ink-500);
  margin-top: 2px;
}
.bh-stmt-mortgage-card__toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  color: var(--ink-700);
  cursor: pointer;
  user-select: none;
}
.bh-stmt-mortgage-card__toggle input[type="checkbox"] {
  width: 16px; height: 16px;
  margin: 0;
  cursor: pointer;
  accent-color: var(--gold-500);
}
.bh-stmt-mortgage-card__amt {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 8px;
}
.bh-stmt-mortgage-card__amt input {
  border: 0;
  background: transparent;
  width: 100px;
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--ink-900);
  font-size: 14px;
  outline: none;
  padding: 0;
}
.bh-stmt-mortgage-card__currency {
  font-weight: 600;
  color: var(--ink-700);
}
.bh-stmt-mortgage-card__per {
  font-size: 11px;
  color: var(--ink-500);
}
html[data-theme="dark"] .bh-stmt-mortgage-card__amt {
  background: var(--bh-panel);
}
html[data-theme="dark"] .bh-stmt-mortgage-card__amt input { color: var(--ink-900); }

/* Tiny screen tweaks for the modal toolbar */
@media (max-width: 720px) {
  .bh-stmt-rowactions { gap: 6px; }
  .bh-stmt-rowactions__sep { display: none; }
  .bh-stmt-rowactions__lbl { width: 100%; margin: 4px 0 2px; }
  .bh-stmt-quick { flex: 1 1 auto; justify-content: center; }
}

/* =============================================================
   ADMIN CONSOLE — owners + properties CRUD UI
   ============================================================= */

/* Tabs */
.bh-admin-tabs {
  display: flex;
  gap: 2px;
  background: var(--bh-panel-alt);
  border: 1px solid var(--bh-border);
  border-radius: 12px;
  padding: 4px;
  margin: 18px 0 18px;
  width: fit-content;
}
.bh-admin-tab {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-700);
  cursor: pointer;
  border-radius: 8px;
  font-family: inherit;
  transition: all 140ms;
}
.bh-admin-tab:hover { color: var(--ink-900); }
.bh-admin-tab.is-active {
  background: var(--bh-panel);
  color: var(--ink-900);
  box-shadow: 0 2px 8px rgba(10, 21, 32, 0.08);
}
html[data-theme="dark"] .bh-admin-tab.is-active {
  background: var(--bh-panel);
  color: var(--ink-900);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
@media (pointer: coarse) {
  .bh-admin-tab { min-height: 44px; padding-block: 13px; }
}

/* Tab pane container */
.bh-admin-pane {
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 16px;
  overflow: hidden;
}
.bh-admin-pane[hidden] { display: none; }
.bh-admin-paneheader {
  padding: 18px 22px;
  border-bottom: 1px solid var(--bh-border);
  gap: 14px;
}
.bh-admin-paneheader__actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.bh-admin-paneheader__actions input[type="search"] {
  padding: 7px 12px;
  border: 1px solid var(--bh-border);
  border-radius: 8px;
  font-size: 12.5px;
  background: var(--bh-panel-alt);
  color: var(--ink-900);
  width: 240px;
  font-family: inherit;
}
.bh-admin-paneheader__actions input[type="search"]:focus {
  outline: 2px solid var(--gold-500);
  outline-offset: 1px;
}

/* Admin tables */
.bh-admin-table {
  width: 100%;
  font-size: 13px;
}
.bh-admin-table thead th {
  background: var(--bh-panel-alt);
  padding: 10px 14px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
  text-align: left;
}
.bh-admin-table tbody tr {
  border-top: 1px solid var(--bh-border);
  cursor: pointer;
  transition: background 140ms;
}
.bh-admin-table tbody tr:hover {
  background: rgba(201, 160, 106, 0.05);
}
html[data-theme="dark"] .bh-admin-table tbody tr:hover {
  background: rgba(214, 175, 56, 0.06);
}
.bh-admin-table td { padding: 12px 14px; vertical-align: middle; }
.bh-admin-cell-main { font-weight: 600; color: var(--ink-900); font-size: 13.5px; }
.bh-admin-cell-sub  { font-size: 11.5px; color: var(--ink-500); margin-top: 2px; }
.bh-admin-cell-avatar { display: flex; align-items: center; gap: 12px; }
.bh-admin-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700, #8c6c3f));
  color: #fff;
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: 0.04em;
  flex-shrink: 0;
}
.bh-admin-pillct {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  background: rgba(201, 160, 106, 0.14);
  color: var(--gold-700, #8c6c3f);
  font-size: 11.5px;
  font-weight: 600;
}
html[data-theme="dark"] .bh-admin-pillct {
  background: rgba(214, 175, 56, 0.18);
  color: var(--gold-400);
}

/* Status badges in property list */
.bh-admin-status {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bh-admin-status--active     { background: rgba(46, 160, 116, 0.18); color: #1e7e5a; }
.bh-admin-status--onboarding { background: rgba(214, 175, 56, 0.20); color: #8c6c3f; }
.bh-admin-status--paused     { background: rgba(140, 140, 140, 0.20); color: #5c5c5c; }
html[data-theme="dark"] .bh-admin-status--active     { color: #55c794; background: rgba(46, 160, 116, 0.22); }
html[data-theme="dark"] .bh-admin-status--onboarding { color: var(--gold-400); background: rgba(214, 175, 56, 0.22); }
html[data-theme="dark"] .bh-admin-status--paused     { color: #b8b8b8; background: rgba(180, 180, 180, 0.20); }

/* Property type badge — Arbitrage vs Management. Surfaces
   ownership_kind in the admin properties table so the operator can
   triage at a glance. Visually distinct from status (square-ish
   muted chips, not pill caps) so the two badges don't compete. */
.bh-admin-typebadge {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  border: 1px solid transparent;
}
.bh-admin-typebadge--management {
  background: rgba(99, 113, 156, 0.12);
  color: #4a5689;
  border-color: rgba(99, 113, 156, 0.30);
}
.bh-admin-typebadge--arbitrage {
  background: rgba(178, 132, 70, 0.14);
  color: #8a5a26;
  border-color: rgba(178, 132, 70, 0.32);
}
html[data-theme="dark"] .bh-admin-typebadge--management {
  background: rgba(143, 158, 209, 0.18); color: #b6c0e6; border-color: rgba(143, 158, 209, 0.34);
}
html[data-theme="dark"] .bh-admin-typebadge--arbitrage {
  background: rgba(214, 175, 110, 0.18); color: #e8c994; border-color: rgba(214, 175, 110, 0.36);
}

/* Airbnb listing name subline under the Property cell — local
   metadata only (NEVER fetched from the Airbnb API). Small icon
   prefix communicates "external identifier" without inviting a
   click that would imply a connection. */
.bh-admin-cell-sub--listing {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 3px;
  color: var(--ink-600, #6e6353);
  font-size: 11px;
  font-style: italic;
}
.bh-admin-cell-sub--listing svg { opacity: 0.55; flex-shrink: 0; }

/* Legacy read-only treatment retained for any modal field that still
   needs copyable-but-locked behavior. The Airbnb listing name now lives
   as an editable Admin Console property field. */
.bh-field--readonly input[readonly] {
  background: rgba(0, 0, 0, 0.025);
  cursor: text;
  color: var(--ink-700, #4d4538);
}
html[data-theme="dark"] .bh-field--readonly input[readonly] {
  background: rgba(255, 255, 255, 0.04);
  color: var(--ink-300, #d6cebd);
}
.bh-field--spanrow { grid-column: 1 / -1; }
.bh-field__hint--meta { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }
.bh-field__hint-aside {
  color: var(--ink-500);
  font-size: 11px;
  font-style: italic;
  opacity: 0.85;
}
.bh-checkline {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  color: var(--ink-800);
  cursor: pointer;
}
.bh-checkline input {
  width: 18px;
  height: 18px;
  accent-color: var(--gold-600);
  flex: 0 0 auto;
}
.bh-link { color: var(--gold-700, #8c6c3f); text-decoration: underline; font-weight: 600; }
.bh-link:hover { color: var(--gold-500, #c9a06a); }

/* Admin permanent-delete confirmation modal (bh-admin-prop-delete-modal).
   Narrower panel + danger-tinted callout to make the destructive nature
   unmistakable. The submit button is .bh-btn--danger and only enables
   after the operator types the property name (JS-managed). */
.bh-admin-modal__panel--narrow { max-width: 480px; }
.bh-admin-del-callout {
  display: flex;
  gap: 12px;
  padding: 14px 16px;
  margin: 0 0 14px;
  border-radius: 10px;
  background: rgba(196, 60, 60, 0.08);
  border: 1px solid rgba(196, 60, 60, 0.30);
  color: #8a3a3a;
  font-size: 13px;
  line-height: 1.45;
  align-items: flex-start;
}
.bh-admin-del-callout svg { flex-shrink: 0; margin-top: 2px; color: #b04040; }
.bh-admin-del-callout strong { display: block; margin-bottom: 2px; color: #6f2727; font-weight: 700; }
.bh-admin-del-callout span { display: block; color: #6f3a3a; }
html[data-theme="dark"] .bh-admin-del-callout {
  background: rgba(196, 60, 60, 0.16);
  border-color: rgba(196, 60, 60, 0.40);
  color: #f1c4c4;
}
html[data-theme="dark"] .bh-admin-del-callout strong { color: #ffd6d6; }
html[data-theme="dark"] .bh-admin-del-callout span   { color: #ecbebe; }

.bh-btn--danger {
  background: linear-gradient(180deg, #c43c3c 0%, #9c2828 100%);
  color: #fff;
  border: 1px solid #8a2222;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.bh-btn--danger:hover:not(:disabled)  { background: linear-gradient(180deg, #d24545 0%, #ad2e2e 100%); }
.bh-btn--danger:focus-visible         { outline: 2px solid rgba(196, 60, 60, 0.55); outline-offset: 2px; }
.bh-btn--danger:disabled              { opacity: 0.55; cursor: not-allowed; }
.bh-btn--danger[data-bh-busy="1"]     { opacity: 0.7; cursor: progress; }

/* Inline action buttons (edit / delete) on admin table rows */
.bh-admin-act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 28px;
  border-radius: 8px;
  background: transparent;
  border: 1px solid var(--bh-border);
  color: var(--ink-700);
  cursor: pointer;
  margin-left: 4px;
  transition: all 140ms;
}
.bh-admin-act:hover {
  border-color: var(--gold-500);
  color: var(--gold-700, #8c6c3f);
  background: rgba(201, 160, 106, 0.08);
}
.bh-admin-act--danger { color: #c14545; border-color: rgba(193, 69, 69, 0.35); }
.bh-admin-act--danger:hover {
  background: rgba(193, 69, 69, 0.10);
  color: #c14545;
  border-color: rgba(193, 69, 69, 0.55);
}
.bh-admin-act:disabled {
  opacity: 0.35;
  cursor: not-allowed;
  pointer-events: none;
}
html[data-theme="dark"] .bh-admin-act { color: var(--ink-700); }
html[data-theme="dark"] .bh-admin-act--danger { color: #ff8484; border-color: rgba(255, 132, 132, 0.4); }
html[data-theme="dark"] .bh-admin-act--danger:hover {
  background: rgba(255, 132, 132, 0.12);
  color: #ff9b9b;
}

/* Inline variant — used on existing tables (invoices, maintenance, etc.) */
.bh-admin-act--inline {
  width: 24px; height: 24px;
  margin-left: 6px;
  vertical-align: middle;
}
@media (pointer: coarse) {
  .bh-admin-act         { width: 44px; height: 44px; }
  .bh-admin-act--inline { width: 40px; height: 40px; }
}

/* Admin modal — same chrome as the statement modal but a touch wider
   and with a danger button styled into the footer. */
.bh-admin-modal .bh-stmt-modal__panel { max-width: 720px; }
.bh-admin-prop-delete {
  color: #c14545 !important;
  border-color: rgba(193, 69, 69, 0.32) !important;
  margin-right: auto;
}
.bh-admin-prop-delete:hover {
  background: rgba(193, 69, 69, 0.10) !important;
  border-color: rgba(193, 69, 69, 0.5) !important;
}
.bh-admin-prop-delete:disabled {
  opacity: 0.4;
  pointer-events: none;
}
html[data-theme="dark"] .bh-admin-prop-delete { color: #ff8484 !important; }

/* Property assignment list (in owner edit modal) */
.bh-admin-assignlist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.bh-admin-assignlist li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  background: var(--bh-panel-alt);
}
.bh-admin-assignlist__empty {
  text-align: center;
  padding: 16px;
  color: var(--ink-500);
  font-size: 12.5px;
  border: 1px dashed var(--bh-border);
  border-radius: 10px;
  background: transparent;
}

/* Admin view layout — the global admin-only override forces inline-flex
   which is wrong for view containers (block) and sidebar section labels
   (block). These rules sit downstream so they win on specificity. */
body.is-admin .bh-view.bh-admin-only:not([hidden]) {
  display: block !important;
}
body.is-admin .bh-sidebar__section.bh-admin-only:not([hidden]) {
  display: block !important;
}

/* Span helper for owner email field across both grid columns */
.bh-stmt-grid--span2 { grid-column: 1 / -1; }

@media (max-width: 720px) {
  .bh-admin-paneheader { flex-direction: column; align-items: stretch; }
  .bh-admin-paneheader__actions { flex-direction: column; align-items: stretch; }
  .bh-admin-paneheader__actions input[type="search"] { width: 100%; }
  .bh-admin-table thead { display: none; }
  .bh-admin-table tr {
    display: grid;
    gap: 4px;
    padding: 14px 16px;
  }
  .bh-admin-table td { padding: 0; }
  .bh-admin-table td:last-child { display: flex; justify-content: flex-end; gap: 4px; padding-top: 8px; }
}

/* Property modal — photo upload row (text input + Upload button) */
.bh-admin-photo-row {
  display: flex;
  gap: 8px;
  align-items: center;
}
.bh-admin-photo-row input[type="text"] { flex: 1; }
.bh-admin-photo-row .bh-btn { flex-shrink: 0; }
.bh-field__hint {
  font-size: 11.5px;
  color: var(--ink-500);
  margin: 4px 0 0;
}
.bh-admin-photo-preview {
  margin-top: 12px;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--bh-panel-alt);
  max-height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bh-admin-photo-preview img {
  display: block;
  max-width: 100%;
  max-height: 220px;
  width: auto;
  height: auto;
}

/* Receipt link in the printable statement viewer */
.bh-stmt-doc__receipt {
  color: var(--gold-700, #8c6c3f);
  font-size: 11px;
  text-decoration: none;
  border-bottom: 1px dashed currentColor;
  margin-left: 4px;
  white-space: nowrap;
}
.bh-stmt-doc__receipt:hover { color: #1d5f8a; }
html[data-theme="dark"] .bh-stmt-doc__receipt { color: var(--gold-400); }

/* =============================================================
   QUICKBOOKS — Admin Console card + review modal
   ============================================================= */

.bh-admin-integration {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  margin: 18px 0;
  background: var(--bh-panel);
  border: 1px solid var(--bh-border);
  border-radius: 14px;
}
.bh-admin-integration.is-connected {
  border-color: rgba(46, 160, 116, 0.5);
  background: linear-gradient(135deg, rgba(46, 160, 116, 0.06), rgba(46, 160, 116, 0.02));
}
html[data-theme="dark"] .bh-admin-integration.is-connected {
  background: linear-gradient(135deg, rgba(46, 160, 116, 0.10), rgba(46, 160, 116, 0.04));
}
.bh-admin-integration__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  border-radius: 12px;
  background: rgba(46, 160, 116, 0.14);
  color: #1e7e5a;
  flex-shrink: 0;
}
html[data-theme="dark"] .bh-admin-integration__icon { color: #55c794; background: rgba(46, 160, 116, 0.18); }
.bh-admin-integration__main {
  flex: 1;
  min-width: 0;
}
.bh-admin-integration__main h3 {
  margin: 0 0 4px;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink-900);
}
.bh-admin-integration__main p {
  margin: 0;
  font-size: 12.5px;
  color: var(--ink-500);
  line-height: 1.5;
}
.bh-admin-integration__main code {
  background: var(--bh-panel-alt);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 11px;
  color: var(--ink-700);
}
.bh-admin-integration__actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
@media (max-width: 720px) {
  .bh-admin-integration { flex-direction: column; align-items: stretch; }
  .bh-admin-integration__actions { justify-content: flex-end; }
}

/* QB review modal */
.bh-qb-modal .bh-stmt-modal__panel { max-width: 700px; }

.bh-qb-status-strip {
  margin: 0 28px 12px;
}
.bh-qb-status {
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 12.5px;
  line-height: 1.5;
}
.bh-qb-status--warn {
  background: rgba(214, 175, 56, 0.14);
  border: 1px solid rgba(214, 175, 56, 0.4);
  color: #8c6c3f;
}
html[data-theme="dark"] .bh-qb-status--warn {
  background: rgba(214, 175, 56, 0.18);
  color: var(--gold-400);
}
.bh-qb-error {
  margin: 0 28px 12px;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(193, 69, 69, 0.10);
  border: 1px solid rgba(193, 69, 69, 0.32);
  color: #c14545;
  font-size: 12.5px;
}
.bh-qb-meta {
  display: grid;
  gap: 6px;
  margin: 0 28px 14px;
  padding: 12px 14px;
  background: var(--bh-panel-alt);
  border-radius: 10px;
}
.bh-qb-meta__row {
  display: flex;
  justify-content: space-between;
  font-size: 12.5px;
}
.bh-qb-meta__row span {
  color: var(--ink-500);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bh-qb-lines {
  width: calc(100% - 56px);
  margin: 0 28px;
  border-collapse: collapse;
  font-size: 13px;
}
.bh-qb-lines thead th {
  text-align: left;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  padding: 8px 12px;
  border-bottom: 1px solid var(--bh-border);
}
.bh-qb-lines tbody td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--bh-border);
  vertical-align: top;
}
.bh-qb-lines tfoot td {
  padding: 12px;
  font-size: 14px;
  border-top: 2px solid var(--ink-900);
}
.bh-qb-lines .bh-t--right { text-align: right; font-variant-numeric: tabular-nums; }

/* ============================================================
   ADMIN TEAM & PERMISSIONS — read-only roster + capability guide
   ============================================================ */
.bh-admin-team-sectionhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 22px 8px;
}
.bh-admin-team-sectionhead h4,
.bh-admin-team-capabilities__head h4 {
  margin: 0;
  color: var(--ink-900);
  font-family: 'Fraunces', Georgia, serif;
  font-size: 16px;
  font-weight: 500;
}
.bh-admin-team-roster { padding: 0 22px 20px; }
#bh-admin-team-table { border: 1px solid var(--bh-border); border-radius: 10px; overflow: hidden; }
#bh-admin-team-table tbody tr { cursor: default; }
.bh-admin-team-capabilities {
  padding: 20px 22px 22px;
  border-top: 1px solid var(--bh-border);
  background: var(--bh-panel-alt);
}
.bh-admin-team-capabilities__head { margin-bottom: 12px; }
.bh-admin-team-capabilities__head p {
  max-width: 72ch;
  margin: 4px 0 0;
  color: var(--ink-600);
  font-size: 12.5px;
  line-height: 1.5;
}
.bh-perms-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px;
}
.bh-perms-row {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 5px;
  padding: 13px 14px;
  border: 1px solid var(--bh-border);
  border-radius: 10px;
  background: var(--bh-panel);
  box-shadow: var(--bhc-shadow-sm);
}
.bh-perms-key {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: var(--gold-700);
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.bh-perms-label {
  color: var(--ink-600);
  font-size: 12.5px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .bh-admin-team-roster { padding-inline: 16px; overflow-x: auto; }
  #bh-admin-team-table { display: table; min-width: 620px; }
  #bh-admin-team-table thead { display: table-header-group; }
  #bh-admin-team-table tr { display: table-row; padding: 0; }
  #bh-admin-team-table td,
  #bh-admin-team-table td:last-child { display: table-cell; padding: 12px 14px; }
  .bh-admin-team-sectionhead,
  .bh-admin-team-capabilities { padding-inline: 16px; }
}
.bh-empty-inline {
  color: var(--ink-400, #a09790);
  font-style: italic;
  font-size: 12.5px;
}

/* ============================================================
   IDLE TIMEOUT WARNING MODAL
   Shown 60 seconds before the auto-logout fires. Activity (or the
   "Stay signed in" button) dismisses it and resets the idle timer.
   ============================================================ */
#bh-idle-warning {
  --bh-idle-panel: var(--bhc-panel, #fcf9f1);
  --bh-idle-panel-alt: var(--bhc-panel-alt, #f1eadb);
  --bh-idle-title: var(--bhc-ink, #231d14);
  --bh-idle-body: var(--bhc-ink-soft, #5f5646);
  --bh-idle-border: var(--bhc-border, rgba(35, 29, 20, 0.12));
  --bh-idle-border-strong: var(--bhc-border-strong, rgba(35, 29, 20, 0.20));
  --bh-idle-gold: var(--bhc-gold, #b0842f);
  --bh-idle-gold-deep: var(--bhc-gold-deep, #8f6a22);
  --bh-idle-gold-soft: var(--bhc-gold-soft, rgba(176, 132, 47, 0.12));
  --bh-idle-on-gold: var(--bhc-on-gold, #fcf9f1);
  --bh-idle-shadow: var(--bhc-shadow-lg, 0 24px 60px rgba(10, 22, 40, 0.18));
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  padding: 16px;
  isolation: isolate;
  font-family: var(--bhc-font-body, 'Inter', system-ui, -apple-system, sans-serif);
}
#bh-idle-warning * {
  box-sizing: border-box;
}
html[data-theme="dark"] #bh-idle-warning {
  --bh-idle-panel: var(--bhc-panel, #16213b);
  --bh-idle-panel-alt: var(--bhc-panel-alt, #1b2842);
  --bh-idle-title: var(--bhc-ink, #e9edf6);
  --bh-idle-body: var(--bhc-ink-soft, #93a0bc);
  --bh-idle-border: var(--bhc-border, rgba(214, 179, 106, 0.16));
  --bh-idle-border-strong: var(--bhc-border-strong, rgba(214, 179, 106, 0.30));
  --bh-idle-gold: var(--bhc-gold, #d6b36a);
  --bh-idle-gold-deep: var(--bhc-gold-deep, #e4c583);
  --bh-idle-gold-soft: var(--bhc-gold-soft, rgba(214, 179, 106, 0.14));
  --bh-idle-on-gold: var(--bhc-on-gold, #0f1729);
  --bh-idle-shadow: var(--bhc-shadow-lg, 0 30px 70px rgba(0, 0, 0, 0.55));
}
.bh-idle-warning__backdrop {
  position: absolute;
  inset: 0;
  z-index: -1;
  background-color: rgb(35, 29, 20);
  background: rgba(35, 29, 20, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: bhIdleBackdropIn 180ms ease-out both;
}
html[data-theme="dark"] .bh-idle-warning__backdrop {
  background-color: rgb(17, 26, 46);
  background: rgba(17, 26, 46, 0.78);
}
.bh-idle-warning__panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 112px;
  column-gap: 28px;
  row-gap: 24px;
  align-items: center;
  width: calc(100% - 32px);
  max-width: 440px;
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  overflow-y: auto;
  padding: 32px;
  border: 1px solid var(--bh-idle-border);
  border-radius: 24px;
  background: var(--bh-idle-panel);
  color: var(--bh-idle-title);
  box-shadow: var(--bh-idle-shadow);
  text-align: left;
  animation: bhIdlePanelIn 220ms var(--bhc-ease-emphasis, cubic-bezier(0.2, 0.85, 0.3, 1)) both;
}
.bh-idle-warning__panel.bhc-card {
  border: 1px solid var(--bh-idle-border);
  border-radius: 24px;
  background: var(--bh-idle-panel);
  color: var(--bh-idle-title);
  box-shadow: var(--bh-idle-shadow);
}
.bh-idle-warning__panel::before {
  content: "";
  position: absolute;
  top: 24px;
  bottom: 24px;
  left: 0;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: var(--bh-idle-gold);
}
.bh-idle-warning__copy {
  min-width: 0;
}
.bh-idle-warning__eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--bhc-eyebrow, #7a5512);
  font: 700 var(--bhc-fs-eyebrow, 0.68rem)/1 var(--bhc-font-body, 'Inter', system-ui, sans-serif);
  letter-spacing: var(--bhc-tracking-caps, 0.16em);
  text-transform: uppercase;
}
.bh-idle-warning__eyebrow > span {
  width: 24px;
  height: 1px;
  background: var(--bh-idle-gold);
}
.bh-idle-warning__panel h2 {
  margin: 8px 0 12px;
  color: var(--bh-idle-title);
  font: 500 clamp(1.75rem, 1.5rem + 1vw, 2rem)/1.1 var(--bhc-font-display, 'Fraunces', Georgia, serif);
  letter-spacing: -0.02em;
  text-wrap: balance;
}
.bh-idle-warning__panel p {
  max-width: 38ch;
  margin: 0;
  color: var(--bh-idle-body);
  font: 400 1rem/1.6 var(--bhc-font-body, 'Inter', system-ui, sans-serif);
}
.bh-idle-warning__count {
  font-variant-numeric: tabular-nums;
}
.bh-idle-warning__count--inline {
  color: var(--bh-idle-title);
  font-weight: 700;
}
.bh-idle-warning__countdown {
  position: relative;
  display: grid;
  place-items: center;
  justify-self: end;
  width: 112px;
  height: 112px;
}
.bh-idle-warning__ring {
  width: 100%;
  height: 100%;
  overflow: visible;
  transform: rotate(-90deg);
}
.bh-idle-warning__ring-track,
.bh-idle-warning__ring-progress {
  fill: none;
  stroke-width: 5;
}
.bh-idle-warning__ring-track {
  stroke: var(--bh-idle-gold-soft);
}
.bh-idle-warning__ring-progress {
  stroke: var(--bh-idle-gold);
  stroke-linecap: round;
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 1s linear;
}
.bh-idle-warning__countdown-value {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.bh-idle-warning__countdown-value .bh-idle-warning__count {
  color: var(--bh-idle-title);
  font: 650 2rem/1 var(--bhc-font-mono, ui-monospace, monospace);
  letter-spacing: -0.04em;
}
.bh-idle-warning__unit {
  margin-top: 5px;
  color: var(--bh-idle-body);
  font: 700 0.6875rem/1 var(--bhc-font-body, 'Inter', system-ui, sans-serif);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.bh-idle-warning__actions {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  padding-top: 24px;
  border-top: 1px solid var(--bh-idle-border);
}
.bh-idle-warning__stay.bhc-btn,
.bh-idle-warning__signout.bhc-btn {
  min-height: 48px;
  padding: 12px 18px;
  border-radius: 10px;
  font: 600 0.9rem/1.2 var(--bhc-font-body, 'Inter', system-ui, sans-serif);
  transition: transform 80ms ease-out, filter 80ms ease-out, background-color 80ms ease-out, border-color 80ms ease-out, color 80ms ease-out;
}
.bh-idle-warning__stay.bhc-btn {
  width: 100%;
  min-height: 48px;
  border-color: var(--bh-idle-gold-deep);
  background: var(--bh-idle-gold-deep);
  color: var(--bh-idle-on-gold);
}
.bh-idle-warning__stay.bhc-btn:hover {
  border-color: var(--bh-idle-gold-deep);
  filter: brightness(1.06);
}
.bh-idle-warning__signout.bhc-btn {
  border-color: transparent;
  background: transparent;
  color: var(--bh-idle-body);
}
.bh-idle-warning__signout.bhc-btn:hover {
  border-color: var(--bh-idle-border-strong);
  background: var(--bh-idle-panel-alt);
  color: var(--bh-idle-title);
}
.bh-idle-warning__stay.bhc-btn:active,
.bh-idle-warning__signout.bhc-btn:active {
  transform: translateY(1px) scale(0.99);
}
.bh-idle-warning__stay.bhc-btn:focus-visible,
.bh-idle-warning__signout.bhc-btn:focus-visible {
  outline: 3px solid var(--bh-idle-gold-deep);
  outline-offset: 3px;
}
@keyframes bhIdleBackdropIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes bhIdlePanelIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
@supports not ((backdrop-filter: blur(6px)) or (-webkit-backdrop-filter: blur(6px))) {
  .bh-idle-warning__backdrop { background: rgb(35, 29, 20); }
  html[data-theme="dark"] .bh-idle-warning__backdrop { background: rgb(17, 26, 46); }
}
@media (max-width: 430px) {
  #bh-idle-warning { padding: 12px; }
  .bh-idle-warning__panel {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    width: 100%;
    padding: 24px;
  }
  .bh-idle-warning__countdown { justify-self: center; }
  .bh-idle-warning__actions { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
  .bh-idle-warning__backdrop,
  .bh-idle-warning__panel { animation: none; }
  .bh-idle-warning__ring-progress { transition: none; }
  .bh-idle-warning__ring { display: none; }
  .bh-idle-warning__unit { display: none; }
  .bh-idle-warning__countdown {
    width: auto;
    height: auto;
    min-width: 96px;
    min-height: 72px;
    padding: 12px 18px;
    border: 1px solid var(--bh-idle-border-strong);
    border-radius: var(--bhc-radius-pill, 999px);
    background: var(--bh-idle-gold-soft);
  }
  .bh-idle-warning__stay.bhc-btn,
  .bh-idle-warning__signout.bhc-btn { transition: none; }
  .bh-idle-warning__stay.bhc-btn:active,
  .bh-idle-warning__signout.bhc-btn:active { transform: none; }
}

.bh-login__row--end { justify-content: flex-end !important; }

/* ========== Hub tab strip (Knowledge / Maintenance / Cleaning) ==========
   Rendered by dashboard.js renderHubTabsIfNeeded() at the top of a view
   body when that view belongs to a hub. Lets the user swap to sibling
   views without the sidebar showing 3-5 entries per hub.
*/
.bh-hub-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  padding: 0.5rem 0.65rem;
  margin: 0 0 1.2rem;
  background: rgba(28,24,18,0.04);
  border: 1px solid rgba(28,24,18,0.08);
  border-radius: 12px;
  overflow-x: auto;
  scrollbar-width: thin;
}
.bh-hub-tab {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 999px;
  padding: 0.5rem 1rem;
  font: 600 0.85rem/1 'Inter', system-ui, sans-serif;
  color: #4a443a;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
  min-height: 36px;
}
.bh-hub-tab:hover {
  background: rgba(201,160,106,0.12);
  color: #a87f49;
}
.bh-hub-tab.is-active {
  background: #1c1812;
  color: #f9f1de;
  box-shadow: 0 2px 8px rgba(28,24,18,0.18);
}
.bh-hub-tab:focus-visible {
  /* 3:1 or better against the tab bar in both themes; #c9a06a was 2.02:1 on the light bar (WCAG 1.4.11). */
  outline: 2px solid var(--bhc-gold-deep);
  outline-offset: 2px;
}
html[data-theme="dark"] .bh-hub-tabs {
  background: rgba(244,234,214,0.04);
  border-color: rgba(244,234,214,0.08);
}
html[data-theme="dark"] .bh-hub-tab { color: rgba(244,234,214,0.78); }
html[data-theme="dark"] .bh-hub-tab.is-active { background: #f4ead6; color: #1c1812; }
@media (max-width: 700px) {
  /* One row that scrolls sideways: hide the scrollbar and fade the right
     edge so a clipped last tab reads as "more this way", not missing. */
  .bh-hub-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
  }
  .bh-hub-tabs::-webkit-scrollbar { display: none; }
  .bh-hub-tab { flex: 0 0 auto; }
}
@media (max-width: 640px) {
  .bh-hub-tabs { padding: 0.4rem 0.5rem; }
  .bh-hub-tab  { padding: 0.55rem 0.85rem; min-height: 44px; font-size: 0.82rem; }
}
@media (pointer: coarse) {
  .bh-hub-tab { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .bh-hub-tab { transition: none !important; }
}

/* Dark-mode semantic status text was too saturated on navy (2.7:1 sub-AA). Lighten danger→#ff9d8a, info→#8fc1e8 in dark only; backgrounds/light untouched (2026-05-28 contrast sweep). */
html[data-theme="dark"] .bh-wf__row.is-out .bh-wf__value { color:#ff9d8a; }
html[data-theme="dark"] .bh-statement__trend.is-down { color:#ff9d8a; }
html[data-theme="dark"] .bh-so__status.is-info { color:#8fc1e8; }

/* dark: pnl waterfall end-row used the light --bh-success-bg mint island (no dark
   override) with green text ~4.4:1. Give it a proper dark success tint + light text. */
html[data-theme="dark"] .bh-wf__row.is-end { background: rgba(30,126,90,0.16); }
html[data-theme="dark"] .bh-wf__row.is-end .bh-wf__label,
html[data-theme="dark"] .bh-wf__row.is-end .bh-wf__value { color:#7be0b3; }
html[data-theme="dark"] .bh-wf__row.is-end .bh-wf__value small { color:rgba(123,224,179,0.8); }
html[data-theme="dark"] .bh-wf__row.is-end.is-negative { background: rgba(177,58,42,0.18); }
html[data-theme="dark"] .bh-wf__row.is-end.is-negative .bh-wf__label,
html[data-theme="dark"] .bh-wf__row.is-end.is-negative .bh-wf__value { color:#ff9d8a; }
html[data-theme="dark"] .bh-wf__row.is-end.is-negative .bh-wf__value small { color:rgba(255,157,138,0.8); }
/* (.bh-pace__delta color is set via inline style in dashboard.js — fixed there, theme-aware) */

/* .bh-pace__delta colors via class (theme-reactive; JS no longer inlines them) */
.bh-pace__delta--up   { color:#1e7e5a; }
.bh-pace__delta--down { color:#b13a2a; }
.bh-pace__delta--flat { color:var(--ink-400); }
html[data-theme="dark"] .bh-pace__delta--down { color:#ff9d8a; }
html[data-theme="dark"] .bh-pace__delta--up   { color:#7be0b3; }

/* === 2026-05-29 medium-tier dark AA pass === */
/* Property-percentile perf numbers (.bh-rank__pct, .bh-prop-card__stat-value) — colored
   via class (was a theme-blind inline style). Light = original palette (C.success/gold/warn);
   dark = lighter variants for AA on navy. */
.bh-perf--good { color:#1e7e5a; }
.bh-perf--mid  { color:#c9a06a; }
.bh-perf--low  { color:#b7791f; }
html[data-theme="dark"] .bh-perf--good { color:#7be0b3; }
html[data-theme="dark"] .bh-perf--mid  { color:#d4b47f; }
html[data-theme="dark"] .bh-perf--low  { color:#f0c876; }
/* CSS-class semantic status text was var(--bh-success/-warn) (#1e7e5a/#b7791f) → ~3-4:1 on navy */
html[data-theme="dark"] .bh-statement__trend.is-up { color:#7be0b3; }
html[data-theme="dark"] .bh-so__status.is-success  { color:#7be0b3; }
html[data-theme="dark"] .bh-so__status.is-warn     { color:#f0c876; }
/* admin tab inactive label (#7a7368 light-ink) → readable cream on dark */
html[data-theme="dark"] .bh-admin-tab { color:rgba(244,234,214,0.7); }

/* =============================================================
   Boot veil — "The Seal" (2026-08-07 owner-selected ceremony)
   The inline head script sets data-bh-boot="loading" before CSS, then
   dashboard.js asks that same helper for data-bh-boot="done" only after the
   authoritative role + landing view are painted. The four-layer composition:
     html::before — instant field + foot shading + blooming brass halo
     html::after  — real transparent BH monogram
     body::before — gilt ring (clockwise clipped-border reveal; fade fallback)
     body::after  — tracked wordmark + its drawn hairline
   The body pseudos are otherwise conditional only: the HK redirect exits before
   role paint, and fresh boot has no nav-open backdrop; showView clears nav-open
   before release. Boot selectors are more specific and restore every property.
   The local PNG is preloaded, but the solid background-color remains first-paint
   bedrock if that image is not ready.
   ============================================================= */
html[data-bh-boot] {
  --bh-boot-seal-size: clamp(112px, 28vw, 132px);
  --bh-boot-logo-canvas: clamp(156px, 39vw, 192px);
  --bh-boot-logo-nudge: clamp(4px, 1vw, 5px);
  --bh-boot-logo-shadow: drop-shadow(0 1px 0.5px rgba(73, 44, 15, 0.18));
  --bh-boot-ring: #b0842f;
  --bh-boot-wordmark: linear-gradient(100deg, #79551e 0%, #a87f3b 31%, #b0842f 42%, #f0d59a 50%, #b0842f 58%, #a87f3b 69%, #79551e 100%);
  --bh-boot-rule: linear-gradient(90deg, rgba(176, 132, 47, 0) 0%, rgba(176, 132, 47, 0.72) 22%, #d9b877 50%, rgba(176, 132, 47, 0.72) 78%, rgba(176, 132, 47, 0) 100%);
  overflow: hidden;
}
html[data-theme="dark"][data-bh-boot] {
  --bh-boot-logo-shadow: drop-shadow(0 1px 0.5px rgba(0, 0, 0, 0.34));
  --bh-boot-ring: #e1c17f;
  --bh-boot-wordmark: linear-gradient(100deg, #b58a3e 0%, #cfa95f 31%, #d6b36a 42%, #f4e1b4 50%, #d6b36a 58%, #cfa95f 69%, #b58a3e 100%);
  --bh-boot-rule: linear-gradient(90deg, rgba(214, 179, 106, 0) 0%, rgba(214, 179, 106, 0.78) 22%, #f0d59a 50%, rgba(214, 179, 106, 0.78) 78%, rgba(214, 179, 106, 0) 100%);
}

html[data-bh-boot="loading"]::before,
html[data-bh-boot="done"]::before {                 /* field + halo */
  content: "";
  position: fixed; inset: 0; z-index: 2147483645;
  background-color: #f3ecdc;                        /* bedrock: paints instantly */
  background-image:
    radial-gradient(34rem 24rem at 50% 48%, rgba(214, 179, 106, 0.2), transparent 64%),
    radial-gradient(120% 100% at 50% 118%, rgba(156, 118, 64, 0.12), transparent 55%),
    linear-gradient(180deg, #f9f4e9 0%, #f3ecdc 100%);
  background-position: 50% 50%, 0 0, 0 0;
  background-size: 100% 100%, 100% 100%, 100% 100%;
  background-repeat: no-repeat;
  opacity: 1;
}
html[data-theme="dark"][data-bh-boot="loading"]::before,
html[data-theme="dark"][data-bh-boot="done"]::before { /* Night Desk field */
  background-color: #0a1320;                        /* dark first-paint bedrock */
  background-image:
    radial-gradient(34rem 24rem at 50% 48%, rgba(214, 179, 106, 0.15), transparent 64%),
    radial-gradient(120% 100% at 50% 118%, rgba(0, 0, 0, 0.5), transparent 60%),
    linear-gradient(180deg, #0e1728 0%, #0a1320 100%);
}
html[data-bh-boot="loading"]::before {
  animation: bh-boot-halo-bloom 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}
html[data-bh-boot="done"]::before {
  opacity: 0;
  transition: opacity 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

html[data-bh-boot="loading"]::after,
html[data-bh-boot="done"]::after {                  /* real monogram */
  content: "";
  position: fixed; top: 50%; left: 50%; z-index: 2147483646;
  width: var(--bh-boot-logo-canvas); height: var(--bh-boot-logo-canvas);
  background-image: url("../images/BH-Icon-transparent.png");
  background-position: calc(50% - var(--bh-boot-logo-nudge)) 50%;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  opacity: 1;
  filter: blur(0) var(--bh-boot-logo-shadow);
  transform: translate(-50%, -50%);
  transform-origin: center;
  pointer-events: none;
  will-change: opacity, filter, transform;
}
html[data-bh-boot="loading"]::after {
  animation: bh-boot-seal-in 0.65s cubic-bezier(0.22, 1, 0.36, 1) both;
}
html[data-bh-boot="done"]::after {
  opacity: 0;
  filter: blur(0) var(--bh-boot-logo-shadow);
  transform: translate(-50%, -50%) scale(1.03);
  transition:
    opacity 320ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 320ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

html[data-bh-boot="loading"] body.bh-dash::before,
html[data-bh-boot="done"] body.bh-dash::before {   /* gilt ring */
  content: "";
  position: fixed; inset: auto; top: 50%; left: 50%; z-index: 2147483645;
  width: var(--bh-boot-seal-size); height: var(--bh-boot-seal-size);
  display: block; align-items: normal; justify-content: normal;
  box-sizing: border-box;
  border: 1.5px solid var(--bh-boot-ring);
  border-radius: 50%;
  background: transparent;
  color: inherit;
  font: inherit;
  opacity: 1;
  transform: translate(-50%, -50%);
  pointer-events: none;
  will-change: opacity, clip-path;
}
html[data-bh-boot="loading"] body.bh-dash::before {
  animation: bh-boot-ring-fade 0.9s linear 0.25s both;
}
@supports (clip-path: polygon(0 0)) {
  html[data-bh-boot="loading"] body.bh-dash::before {
    animation: bh-boot-ring-draw 0.9s linear 0.25s both;
  }
}
html[data-bh-boot="done"] body.bh-dash::before {
  opacity: 0;
  transition: opacity 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

html[data-bh-boot="loading"] body.bh-dash::after,
html[data-bh-boot="done"] body.bh-dash::after {     /* wordmark + hairline */
  content: "BELLO HOMES";
  position: fixed; inset: auto; top: calc(50% + clamp(80px, 18vw, 86px)); left: 50%;
  z-index: 2147483647 !important;                    /* above mobile backdrop */
  width: min(82vw, 260px); height: 48px;
  display: grid; place-items: start center;
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(11px, 2.6vw, 13px);
  font-weight: 520;
  line-height: 1;
  letter-spacing: 0.34em;
  text-indent: 0.34em;                               /* optical centering */
  color: transparent;
  -webkit-text-fill-color: transparent;
  background-image: var(--bh-boot-wordmark), var(--bh-boot-rule);
  background-position: 50% 50%, 50% 100%;
  background-size: 250% 100%, 220px 1px;
  background-repeat: no-repeat;
  -webkit-background-clip: text, border-box;
  background-clip: text, border-box;
  opacity: 0.96;
  transform: translateX(-50%);
  pointer-events: none;
  cursor: default;
  will-change: opacity, transform;
}
html[data-bh-boot="loading"] body.bh-dash::after {
  animation:
    bh-boot-wordmark-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) 0.55s both,
    bh-boot-sheen-once 0.5s ease-in-out 0.9s 1 both,
    bh-boot-sheen-idle 4.8s ease-in-out 1.4s infinite alternate;
}
html[data-bh-boot="done"] body.bh-dash::after {
  opacity: 0;
  transform: translateX(-50%);
  transition:
    opacity 320ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes bh-boot-halo-bloom {
  from { background-size: 0 0, 100% 100%, 100% 100%; }
}
@keyframes bh-boot-seal-in {
  from {
    opacity: 0;
    filter: blur(14px) var(--bh-boot-logo-shadow);
    transform: translate(-50%, calc(-50% + 8px)) scale(0.92);
  }
}
@keyframes bh-boot-ring-fade {
  from { opacity: 0; }
}
@keyframes bh-boot-ring-draw {
  0% {
    opacity: 0;
    clip-path: polygon(50% 50%, 50% -2%, 50% -2%, 50% -2%, 50% -2%, 50% -2%, 50% -2%, 50% -2%, 50% -2%, 50% -2%);
  }
  12.5% { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% -2%, 102% -2%, 102% -2%, 102% -2%, 102% -2%, 102% -2%, 102% -2%); }
  25%   { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 50%, 102% 50%, 102% 50%, 102% 50%, 102% 50%, 102% 50%); }
  37.5% { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 102% 102%, 102% 102%, 102% 102%, 102% 102%, 102% 102%); }
  50%   { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 50% 102%, 50% 102%, 50% 102%, 50% 102%, 50% 102%); }
  62.5% { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 50% 102%, -2% 102%, -2% 102%, -2% 102%, -2% 102%); }
  75%   { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 50% 102%, -2% 102%, -2% 50%, -2% 50%, -2% 50%); }
  87.5% { clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 50% 102%, -2% 102%, -2% 50%, -2% -2%, -2% -2%); }
  100% {
    opacity: 1;
    clip-path: polygon(50% 50%, 50% -2%, 102% -2%, 102% 50%, 102% 102%, 50% 102%, -2% 102%, -2% 50%, -2% -2%, 50% -2%);
  }
}
@keyframes bh-boot-wordmark-in {
  from {
    opacity: 0;
    transform: translate(-50%, 6px);
    background-size: 250% 100%, 0 1px;
  }
}
@keyframes bh-boot-sheen-once {
  from { background-position: 115% 50%, 50% 100%; }
  to   { background-position: -15% 50%, 50% 100%; }
}
@keyframes bh-boot-sheen-idle {
  from { background-position: -15% 50%, 50% 100%; }
  to   { background-position: 115% 50%, 50% 100%; }
}

@media (prefers-reduced-motion: reduce) {
  /* Final composed frame: no blur/translation/ring draw or looping sheen. */
  html[data-bh-boot="loading"]::before,
  html[data-bh-boot="loading"]::after,
  html[data-bh-boot="loading"] body.bh-dash::before,
  html[data-bh-boot="loading"] body.bh-dash::after { animation: none; }
  html[data-bh-boot="loading"]::before { background-size: 100% 100%, 100% 100%, 100% 100%; }
  html[data-bh-boot="loading"]::after {
    opacity: 1; filter: blur(0) var(--bh-boot-logo-shadow); transform: translate(-50%, -50%);
  }
  html[data-bh-boot="loading"] body.bh-dash::before {
    opacity: 1; clip-path: none; transform: translate(-50%, -50%);
  }
  html[data-bh-boot="loading"] body.bh-dash::after {
    opacity: 0.96;
    transform: translateX(-50%);
    background-position: 50% 50%, 50% 100%;
    background-size: 250% 100%, 220px 1px;
  }
  html[data-bh-boot="done"]::before,
  html[data-bh-boot="done"]::after,
  html[data-bh-boot="done"] body.bh-dash::before,
  html[data-bh-boot="done"] body.bh-dash::after { transition: opacity 160ms ease-out; }
  html[data-bh-boot="done"]::after { transform: translate(-50%, -50%); }
}

/* ========== Owner Portal placeholder cards (view: ownerportal) ==========
   Moved out of inline styles 2026-06-10: the inline cream background had no
   dark-mode variant, leaving light text on a light card (theme leak). */
.bh-op-placeholder {
  max-width: 640px;
  margin: 32px auto;
  padding: 28px 30px;
  border: 1px solid var(--bh-border, #e6ddcd);
  border-radius: 16px;
  background: var(--bh-surface, #fbf8f1);
  text-align: center;
}
.bh-op-placeholder__title {
  font-size: 1.2rem;
  font-weight: 800;
  margin-bottom: 8px;
}
.bh-op-placeholder p {
  color: var(--bh-muted, #8a7d63);
  font-size: 0.92rem;
  line-height: 1.55;
  margin: 0 0 16px;
}
.bh-op-placeholder p:last-child { margin-bottom: 0; }
html[data-theme="dark"] .bh-op-placeholder {
  background: rgba(28, 43, 70, 0.40);
  border-color: rgba(244, 234, 214, 0.14);
}
html[data-theme="dark"] .bh-op-placeholder__title { color: #f4ead6; }
html[data-theme="dark"] .bh-op-placeholder p { color: rgba(244, 234, 214, 0.72); }

/* =============================================================
   Premium motion layer (2026-06-11 uplift pass)
   -------------------------------------------------------------
   Purposeful, restrained motion: press feedback, one-time calm
   reveals, gauge draw-in. Transform/opacity only (no layout
   thrash). Every rule is disabled under prefers-reduced-motion.
   ============================================================= */

/* Tactile press feedback on the cockpit's interactive pills/buttons. */
.bh-hub-tab:active,
.bh-navbtn:active,
.bh-pulse__chip[data-go]:active {
  transform: scale(0.985);
}
.bh-hub-tab, .bh-navbtn, .bh-pulse__chip[data-go] {
  transition-property: background, color, border-color, transform, box-shadow;
  transition-duration: 0.12s;
  transition-timing-function: ease;
}

/* One-time calm-state reveal — fleet applies .bh-calm-pop to the icon/badge
   inside a composed quiet card; it settles in once, then stays still. */
@keyframes bh-calm-pop {
  0%   { opacity: 0; transform: scale(0.92) translateY(4px); }
  70%  { opacity: 1; transform: scale(1.02) translateY(0); }
  100% { opacity: 1; transform: scale(1); }
}
.bh-calm-pop { animation: bh-calm-pop 0.5s cubic-bezier(0.22, 1, 0.36, 1) both; }

/* Live-status dot breathing — apply .bh-dot-live to a status dot that
   represents a healthy live system (slow, calm; never alarm-paced). */
@keyframes bh-dot-breathe {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}
.bh-dot-live { animation: bh-dot-breathe 2.6s ease-in-out infinite; }

/* Ops Command gauge — arc draws in on first paint (JS sets the final
   stroke-dashoffset; the transition carries it from the empty state). */
.occv2-gauge path[stroke-dasharray] {
  transition: stroke-dashoffset 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

@media (prefers-reduced-motion: reduce) {
  .bh-hub-tab:active, .bh-navbtn:active, .bh-pulse__chip[data-go]:active { transform: none; }
  .bh-calm-pop { animation: none; }
  .bh-dot-live { animation: none; }
  .occv2-gauge path[stroke-dasharray] { transition: none; }
}

/* Alerts overflow note (render cap) + unset goal quiet state (2026-06-11). */
.bh-alerts__more {
  margin: 0.4rem 0 0;
  padding: 0.55rem 0.8rem;
  font: 500 0.82rem/1.4 'Inter', system-ui, sans-serif;
  color: #6b6457;
  border-top: 1px dashed rgba(28,24,18,0.12);
}
html[data-theme="dark"] .bh-alerts__more { color: rgba(244,234,214,0.6); border-top-color: rgba(244,234,214,0.14); }
.bh-goal__text--unset { max-width: 220px; }
.bh-goal__text--unset .bh-goal__label { font-weight: 600; }

/* Performance pre-data quiet state — hides the zero wall (milestones, YIR
   band, six empty chart frames) behind one composed card. */
.bh-perf-quiet-card { padding: 2.2rem 2rem; text-align: center; }
.bh-perf-quiet-card__title {
  margin: 0 0 0.5rem;
  font: 600 1.35rem/1.3 'Fraunces', Georgia, serif;
}
.bh-perf-quiet-card__sub {
  margin: 0 auto;
  max-width: 560px;
  color: #6b6457;
  font-size: 0.92rem;
  line-height: 1.55;
}
html[data-theme="dark"] .bh-perf-quiet-card__sub { color: rgba(244,234,214,0.66); }
.bh-perf--quiet #bh-milestones,
.bh-perf--quiet #bh-yir,
.bh-perf--quiet .bh-grid { display: none; }
/* P&L pre-data quiet — only the waterfall panel (which carries the message)
   stays; the three empty chart panels collapse. */
.bh-pnl--quiet .bh-panel:has(#bh-chart-margin),
.bh-pnl--quiet .bh-panel:has(#bh-chart-expense-mix),
.bh-pnl--quiet .bh-panel:has(#bh-chart-expense-stack) { display: none; }
/* Property detail with nothing selected — composed fallback, not a dead page. */
.bh-prop-noselect { padding: 2.2rem 2rem; text-align: center; }
.bh-prop-noselect__title { margin: 0 0 0.45rem; font: 600 1.3rem/1.3 'Fraunces', Georgia, serif; }
.bh-prop-noselect__sub { margin: 0 auto 1.1rem; max-width: 520px; color: #6b6457; font-size: 0.92rem; line-height: 1.55; }
html[data-theme="dark"] .bh-prop-noselect__sub { color: rgba(244,234,214,0.66); }
/* ========== Owner Portal preview (internal) — contents list + nav actions ==
   Honest static preview for admin/staff_plus inside .bh-op-placeholder:
   no live data, no screenshots. Buttons navigate via the [data-go]
   delegate in js/dashboard.js. */
.bh-op-placeholder__list {
  list-style: none;
  margin: 0 auto 18px;
  padding: 0;
  max-width: 460px;
  text-align: left;
  display: grid;
  gap: 8px;
}
.bh-op-placeholder__list li {
  position: relative;
  padding-left: 18px;
  color: var(--bh-muted, #8a7d63);
  font-size: 0.92rem;
  line-height: 1.5;
}
.bh-op-placeholder__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #c9a06a;
}
.bh-op-placeholder__list li strong {
  color: var(--bh-text, #2b2317);
  font-weight: 600;
}
.bh-op-placeholder__actions {
  display: flex;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}
html[data-theme="dark"] .bh-op-placeholder__list li { color: rgba(244, 234, 214, 0.72); }
html[data-theme="dark"] .bh-op-placeholder__list li strong { color: #f4ead6; }


/* Quiet-card emblem — a small engraved gold motif above the serif title.
   Carried by window.bhQuietEmblem(name); .bh-calm-pop gives it a one-time
   settle-in (reduced-motion safe via the utility's own guard). */
.bh-quiet-emblem {
  width: 46px; height: 46px; margin: 0 auto 0.9rem; border-radius: 50%;
  display: grid; place-items: center;
  color: #a87f49;
  border: 1px solid rgba(201, 160, 106, 0.35);
  background: radial-gradient(circle at 35% 30%, rgba(201, 160, 106, 0.14), rgba(201, 160, 106, 0.04));
}
html[data-theme="dark"] .bh-quiet-emblem {
  color: #d4ac72;
  border-color: rgba(201, 160, 106, 0.4);
  background: radial-gradient(circle at 35% 30%, rgba(201, 160, 106, 0.16), rgba(201, 160, 106, 0.05));
}


/* Shared skeleton card — emitted by bhMotion.skeleton(rows). Wraps the
   stacked .bh-skel--title/--line shimmer bars; bar colors, the dark
   variant, and the prefers-reduced-motion freeze all come from the
   existing .bh-skel rules above. max-width keeps full-bleed mounts from
   rendering mile-wide bars. */
.bh-skel-card {
  background: var(--bh-surface, #fbf8f1);
  border: 1px solid var(--bh-border);
  border-radius: 14px;
  padding: 1.1rem 1.25rem;
  max-width: 720px;
}
html[data-theme="dark"] .bh-skel-card {
  background: rgba(244, 234, 214, 0.03);
  border-color: rgba(244, 234, 214, 0.10);
}


/* Synced-reservation chip on the Bello Bookings calendar (2026-07-10) */
.bk-card__sync {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 11px; border-radius: 999px;
  font-size: .72rem; font-weight: 700; color: var(--gold-500, #c9a06a);
  background: rgba(201, 160, 106, 0.1); border: 1px solid rgba(201, 160, 106, 0.35);
}

/* Responsive R2/4/5 residuals (2026-08-12). */
@media (max-width: 430px) {
  .bh-arrival { grid-template-columns: minmax(0, 1fr); }
  .bh-arrival__copy { width: 100%; min-width: 0; max-width: 100%; }
  .bh-arrival__eyebrow { max-width: 100%; flex-wrap: wrap; }
  .bh-ticker { min-width: 0; max-width: 100%; }
  .bh-ticker__chip { min-width: 0; max-width: 100%; }
  .bh-ticker__chip > span:last-child { min-width: 0; overflow-wrap: anywhere; }
  .bh-insights { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 480px) {
  .bh-view[data-view="tax"] .bh-panel__head { flex-direction: column; align-items: stretch; }
  .bh-view[data-view="tax"] .bh-stmt__tools { min-width: 0; max-width: 100%; flex-direction: column; }
  .bh-view[data-view="tax"] .bh-stmt__tools > .bh-select { width: 100%; min-width: 0; max-width: 100%; }
}

@media (max-width: 430px), (max-width: 920px) and (orientation: landscape) {
  .bh-insight__cat,
  .bh-prop-card__stat-label { font-size: 10.5px; }

  .bh-goal__sub,
  .bh-pace__footnote,
  .bh-rank__sub,
  .bh-tag,
  .bh-mkt__sub,
  .bh-mkt__rev span,
  .bh-jur__name small,
  .bh-maint-sumitem__sub,
  .bh-prop-card__photo .bh-pill,
  .bh-cmp__prop-sub { font-size: 12px; }
}

/* ===== Shared workspace toolbar — canonical in vanilla and React ===== */
.bh-dash .bh-topbar__right {
  position: relative; display: flex; align-items: center; flex-wrap: nowrap;
  gap: 8px; min-width: 0;
}
.bh-dash .bh-topbar__right > * { flex-shrink: 0; }
.bh-dash .bh-topbar__right .bh-topbar__filterlabel { display: none; }
.bh-dash .bh-topbar__right #bh-scope-filters {
  flex: 0 1 auto; min-width: 0; max-width: 208px; padding: 0; overflow: visible;
}
.bh-dash .bh-topbar__right .bh-scope-picker { display: block; width: 100%; min-width: 0; }
.bh-dash .bh-topbar__right .bh-scope-picker__trigger {
  width: 100%; min-width: 0; max-width: 208px; min-height: 44px; padding: 8px 12px;
  background: var(--bhc-panel-alt); color: var(--bhc-ink); border-color: var(--bhc-border);
  border-radius: var(--bhc-radius-sm); box-shadow: none;
}
.bh-dash .bh-topbar__right .bh-scope-picker__name { display: inline; min-width: 0; }
.bh-dash .bh-topbar__right .bh-scope-picker__count {
  background: var(--bhc-panel); color: var(--bhc-ink-soft); font-size: 12px; letter-spacing: 0; padding: 2px 6px;
}
.bh-dash .bh-topbar__right #bh-cmdk-trigger {
  display: inline-flex; align-items: center; justify-content: flex-start; gap: 12px;
  height: 44px; min-width: 44px; padding: 0 12px; order: 0;
  border: 1px solid var(--bhc-border); border-radius: var(--bhc-radius-sm);
  background: transparent; color: var(--bhc-ink-soft); box-shadow: none;
}
.bh-dash .bh-topbar__right #bh-cmdk-trigger > svg { width: 18px; height: 18px; flex-shrink: 0; }
.bh-dash .bh-topbar__right .bh-cmdk-trigger__hint { display: flex; align-items: center; gap: 24px; font-size: 12px; }
.bh-dash .bh-topbar__right .bh-cmdk-trigger__hint kbd {
  font: 12px var(--bhc-font-body); color: var(--bhc-ink-soft); padding: 2px 4px;
  border: 1px solid var(--bhc-border); border-radius: 4px; background: var(--bhc-panel-alt);
}
.bh-dash .bh-topbar__right :is(#bh-nc-bell, #bh-notif-bell, #bh-userbtn, .bh-topbar__tools-trigger) {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  box-sizing: border-box; width: 44px; height: 44px; min-width: 44px; min-height: 44px;
  padding: 0; border: 1px solid transparent; border-radius: var(--bhc-radius-sm);
  background: transparent; color: var(--bhc-ink-soft); box-shadow: none;
}
.bh-dash .bh-topbar__right #bh-workspace-tools > summary {
  width: auto; padding: 0 12px; list-style: none; cursor: pointer;
  font: 500 12px var(--bhc-font-body); user-select: none;
}
.bh-topbar__tools-trigger::-webkit-details-marker { display: none; }
.bh-topbar__tools-trigger > svg { flex-shrink: 0; }
.bh-topbar__tools-caret { transition: transform 180ms ease; }
.bh-topbar__tools[open] .bh-topbar__tools-caret { transform: rotate(180deg); }
.bh-dash .bh-topbar__right :is(#bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, .bh-topbar__tools-trigger, .bh-scope-picker__trigger) {
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease, transform 120ms ease;
}
.bh-dash .bh-topbar__right :is(#bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, .bh-topbar__tools-trigger, .bh-scope-picker__trigger):hover,
.bh-dash .bh-topbar__right :is(button, summary)[aria-expanded="true"] {
  background: var(--bhc-gold-soft); border-color: var(--bhc-gold-line); color: var(--bhc-ink);
}
.bh-dash .bh-topbar__right :is(button, summary):focus-visible {
  outline: 2px solid var(--bhc-gold); outline-offset: 2px;
}
.bh-dash .bh-topbar__right :is(#bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, .bh-topbar__tools-trigger):active { transform: scale(.96); }
.bh-dash .bh-topbar__right #bh-userbtn { border-radius: 50%; }
.bh-dash .bh-topbar__right #bh-avatar {
  width: 32px; height: 32px; font-size: 12px; background: var(--bhc-gold-soft); color: var(--bhc-ink);
  border: 1px solid var(--bhc-gold-line); box-shadow: none;
}
.bh-dash .bh-topbar__drop {
  width: 240px; max-width: calc(100vw - 32px); padding: 8px;
  background: var(--bhc-panel); color: var(--bhc-ink); border-color: var(--bhc-border);
  border-radius: var(--bhc-radius); box-shadow: var(--bhc-shadow-lg);
}
.bh-dash .bh-topbar__drop .bh-topbar__userinfo { display: flex; padding: 12px; margin-bottom: 4px; border-bottom: 1px solid var(--bhc-border); gap: 4px; }
.bh-dash .bh-topbar__drop .bh-topbar__username { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-size: 14px; color: var(--bhc-ink); }
.bh-dash .bh-topbar__drop .bh-topbar__userrole { display: block; font-size: 12px; color: var(--bhc-ink-soft); }
.bh-dash .bh-topbar__drop > :is(a, button) { display: flex; align-items: center; min-height: 44px; padding: 8px 12px; font-size: 12px; }
.bh-topbar__tools { position: static; }
.bh-dash .bh-topbar__right #bh-user-menu { background: transparent; }
.bh-topbar__tools-panel {
  position: absolute; top: calc(100% + 24px); right: 0; z-index: 60;
  box-sizing: border-box; width: min(320px, calc(100vw - 32px));
  max-height: var(--bh-tools-room, calc(100dvh - 144px)); overflow: auto; overscroll-behavior: contain;
  padding: 16px; border: 1px solid var(--bhc-border); border-radius: var(--bhc-radius);
  background: var(--bhc-panel); color: var(--bhc-ink); box-shadow: var(--bhc-shadow-lg);
  scrollbar-width: thin;
}
.bh-topbar__tools:not([open]) .bh-topbar__tools-panel { display: none; }
.bh-topbar__tools[open] .bh-topbar__tools-panel,
.bh-dash .bh-topbar__drop:not([hidden]) { animation: bhToolbarReveal 180ms var(--bhc-ease, ease-out); transform-origin: top right; }
@keyframes bhToolbarReveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
#bh-workspace-panel h2 { margin: 0 0 12px; font: 600 14px/1.4 var(--bhc-font-body); color: var(--bhc-ink); }
#bh-workspace-panel .bh-topbar__setting { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; padding: 4px 0; min-height: 44px; }
.bh-dash.is-internal #bh-workspace-panel .bh-topbar__setting.bh-internal-only { display: grid !important; }
#bh-workspace-panel .bh-topbar__setting-label { grid-column: 1; grid-row: 1; line-height: 1.4; font-size: 12px; color: var(--bhc-ink-soft); }
#bh-workspace-panel :is(#bh-agent-status-slot, #bh-lang-picker-slot, .bh-langpicker) { display: contents !important; }
#bh-workspace-panel :is(.bh-as-chip, .bh-langpicker__btn) {
  grid-column: 2; grid-row: 1; justify-self: end;
  display: flex; margin-left: auto; width: auto; min-height: 44px; padding: 8px 12px;
  border-radius: var(--bhc-radius-sm); background: var(--bhc-panel-alt); box-shadow: none;
  color: var(--bhc-ink); font-size: 12px; gap: 8px;
}
#bh-workspace-panel .bh-as-chip__label { display: inline; }
#bh-workspace-panel .bh-as-chip__dot::after { animation: none; }
#bh-workspace-panel :is(.bh-as-menu, .bh-langpicker__menu) {
  grid-column: 1 / -1; grid-row: 2;
  position: static; width: 100%; min-width: 0; max-width: none; box-sizing: border-box;
  margin: 8px 0 0; padding: 4px; clear: both; box-shadow: none;
  border: 1px solid var(--bhc-border); border-radius: var(--bhc-radius-sm);
  background: var(--bhc-panel-alt);
}
#bh-workspace-panel :is(.bh-as-menu__note, .bh-as-menu__desc, .bh-as-menu__label, .bh-langpicker__menu button) { font-size: 12px; }
#bh-workspace-panel :is(.bh-as-menu button, .bh-langpicker__menu button) { min-height: 44px; }
#bh-workspace-panel :is(.bh-as-menu__chk, .bh-as-menu__item--alt .bh-as-menu__label) { color: var(--bhc-ink); }
#bh-workspace-panel .bh-topbar__toolactions { border-top: 1px solid var(--bhc-border); margin-top: 12px; padding-top: 8px; display: grid; gap: 4px; }
#bh-workspace-panel :is(.bh-topbar__toolaction, #bh-rmcr-topbar-btn) {
  display: flex; align-items: center; justify-content: flex-start; gap: 12px;
  width: 100%; height: auto; min-height: 44px; padding: 8px 12px;
  border: 1px solid transparent; border-radius: var(--bhc-radius-sm); box-shadow: none;
  background: transparent; color: var(--bhc-ink); font: 500 12px/1.5 var(--bhc-font-body);
  text-align: left; cursor: pointer; transition: background 120ms ease, border-color 120ms ease;
}
#bh-workspace-panel :is(.bh-topbar__toolaction, #bh-rmcr-topbar-btn):hover { background: var(--bhc-gold-soft); border-color: var(--bhc-gold-line); transform: none; }
#bh-workspace-panel :is(.bh-topbar__toolaction, #bh-rmcr-topbar-btn) span { display: inline; }
#bh-workspace-panel :is(.bh-topbar__toolaction, #bh-rmcr-topbar-btn) svg { flex-shrink: 0; width: 18px; height: 18px; }
@media (max-width: 1280px) {
  .bh-dash .bh-topbar__right .bh-cmdk-trigger__hint,
  .bh-dash .bh-topbar__right :is(.bh-topbar__tools-label, .bh-topbar__tools-caret) { display: none; }
  .bh-dash .bh-topbar__right #bh-cmdk-trigger,
  .bh-dash .bh-topbar__right #bh-workspace-tools > summary { width: 44px; padding: 0; justify-content: center; }
  .bh-dash .bh-topbar__right #bh-scope-filters { max-width: 176px; }
}
@media (max-width: 720px) {
  .bh-dash .bh-topbar__right { gap: 4px; }
  .bh-dash .bh-topbar__right #bh-scope-filters { flex: 1 1 0; max-width: none; }
  .bh-dash .bh-topbar__right .bh-scope-picker__trigger { padding: 8px; max-width: 100%; }
  .bh-dash .bh-topbar__right .bh-scope-picker__chev { display: none; }
  .bh-dash .bh-topbar__right .bh-scope-picker__name { flex: 1 1 auto; text-align: left; }
  .bh-dash .bh-topbar__right .bh-scope-picker__count { padding: 2px 4px; }
}
@media (prefers-reduced-motion: reduce) {
  body.bh-dash .bh-topbar__right :is(#bh-workspace-tools, #bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, #bh-scope-filters),
  body.bh-dash .bh-topbar__right :is(#bh-workspace-tools, #bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, #bh-scope-filters) *,
  body.bh-dash .bh-topbar__right :is(#bh-workspace-tools, #bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, #bh-scope-filters) *::after { animation: none; transition: none; }
  body.bh-dash .bh-topbar__right :is(#bh-workspace-tools, #bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, #bh-scope-filters):active,
  body.bh-dash .bh-topbar__right :is(#bh-workspace-tools, #bh-cmdk-trigger, #bh-nc-bell, #bh-notif-bell, #bh-userbtn, #bh-scope-filters) :is(button, summary):active { transform: none; }
}

/* Shared chrome stays legible in both the active shell and vanilla rollback. */
.bh-dash .bh-topbar__eyebrow { font-size: 10.5px; }
.bh-dash .bh-topbar #bh-menu-toggle { min-width: 44px; min-height: 44px; }
.bh-dash .bh-topbar__right .bhnc-bell__badge { font-size: 12px; min-height: 20px; right: -2px; }

/* Operations History — canonical read-only archive, Atelier / Night Desk. */
.bh-history-studio { display:grid; gap:18px; color:var(--bhc-ink); }
.bh-history-head { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; }
.bh-history-head h2 { margin:6px 0 10px; font:500 clamp(26px,3vw,36px)/1.15 var(--bhc-font-display); letter-spacing:-.035em; }
.bh-history-head p:not(.bhc-eyebrow) { max-width:66ch; margin:0; color:var(--bhc-ink-soft); font:400 14px/1.7 var(--bhc-font-body); }
.bh-history-actions { display:flex; flex-wrap:wrap; gap:8px; flex-shrink:0; }
.bh-history-note { margin:0; padding:12px 16px; border:1px solid var(--bhc-border); border-radius:var(--bhc-radius-sm); background:var(--bhc-panel); color:var(--bhc-ink-soft); font:400 12px/1.65 var(--bhc-font-body); }
.bh-history-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.bh-history-metric { display:flex; flex-direction:column; gap:9px; min-width:0; padding:20px; border:1px solid var(--bhc-border); border-radius:var(--bhc-radius); background:var(--bhc-panel); }
.bh-history-metric > span { color:var(--bhc-ink-soft); font:500 12px/1.5 var(--bhc-font-body); }
.bh-history-metric > strong { color:var(--bhc-ink); font:500 clamp(24px,3vw,34px)/1.15 var(--bhc-font-display); font-variant-numeric:tabular-nums; }
.bh-history-metric > small { color:var(--bhc-ink-soft); font:400 12px/1.5 var(--bhc-font-body); }
.bh-history-log { padding:0; min-width:0; overflow:hidden; }
.bh-history-toolbar { display:flex; gap:12px; align-items:center; padding:18px 20px 12px; }
.bh-history-search { flex:1; min-width:0; }
.bh-history-studio :is(input,select) { box-sizing:border-box; width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--bhc-border); border-radius:var(--bhc-radius-sm); background:var(--bhc-panel); color:var(--bhc-ink); font:400 13px/1.5 var(--bhc-font-body); }
.bh-history-studio input::placeholder { color:var(--bhc-ink-soft); opacity:1; }
.bh-history-studio :is(input,select,button):focus-visible,.bh-history-reader button:focus-visible { outline:2px solid var(--bhc-gold); outline-offset:3px; }
.bh-history-studio :is(button,input,select) { min-height:44px; }
.bh-history-filters { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; padding:0 20px 18px; }
.bh-history-field { display:grid; gap:6px; min-width:0; color:var(--bhc-ink-soft); font:500 12px/1.5 var(--bhc-font-body); }
.bh-history-rail { display:flex; gap:8px; padding:12px 20px; border-block:1px solid var(--bhc-border); background:var(--bhc-panel); }
.bh-history-rail button { min-width:44px; border:1px solid transparent; border-radius:var(--bhc-radius-sm); padding:10px 16px; background:transparent; color:var(--bhc-ink-soft); cursor:pointer; font:500 13px/1.5 var(--bhc-font-body); transition:background 140ms,color 140ms,border-color 140ms; }
.bh-history-rail button[aria-selected=true] { background:var(--bhc-gold-soft); border-color:var(--bhc-gold-line); color:var(--bhc-ink); }
.bh-history-results { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 20px; }
.bh-history-results p { margin:0; color:var(--bhc-ink-soft); font:400 12px/1.6 var(--bhc-font-body); }
.bh-history-list { display:grid; }
.bh-history-row { display:grid; grid-template-columns:140px minmax(0,1fr) minmax(110px,auto) 22px; align-items:center; gap:20px; padding:18px 20px; width:100%; min-width:0; border:0; border-top:1px solid var(--bhc-border); background:var(--bhc-panel); color:var(--bhc-ink); text-align:left; cursor:pointer; font:400 13px/1.65 var(--bhc-font-body); transition:background 140ms,box-shadow 140ms; }
.bh-history-row:hover { background:var(--bhc-gold-soft); box-shadow:inset 3px 0 var(--bhc-gold); }
.bh-history-row__date,.bh-history-row__body,.bh-history-row__status { display:flex; flex-direction:column; gap:5px; min-width:0; }
.bh-history-row__date { color:var(--bhc-ink-soft); font-variant-numeric:tabular-nums; }
.bh-history-row :is(small,.bh-history-row__body > span) { font-size:12px; line-height:1.65; color:var(--bhc-ink-soft); }
.bh-history-row__body > small { overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.bh-history-row__body > strong { font-weight:600; overflow-wrap:anywhere; }
.bh-history-row__status { align-items:flex-end; font-variant-numeric:tabular-nums; }
.bh-history-row__status .bhc-pill { font-size:12px; }
.bh-history-row__arrow { color:var(--bhc-ink-soft); font-size:20px; }
.bh-history-paging { display:flex; justify-content:center; padding:16px; }
.bh-history-studio .bh-maint-empty { border:0; margin:0; border-radius:0; background:var(--bhc-panel); color:var(--bhc-ink-soft); padding:38px 20px; }
.bh-history-studio .bh-maint-empty h3 { color:var(--bhc-ink); font:500 22px/1.3 var(--bhc-font-display); }
.bh-history-studio .bh-maint-empty p { max-width:58ch; margin:10px auto 0; font:400 13px/1.7 var(--bhc-font-body); }
.bh-history-reader { position:fixed; inset:0; z-index:18000; display:flex; justify-content:flex-end; color:var(--bhc-ink); }
.bh-history-reader__scrim { position:absolute; inset:0; background:rgba(8,17,25,.5); backdrop-filter:blur(4px); animation:bh-history-fade 160ms ease both; }
.bh-history-reader__panel { position:relative; box-sizing:border-box; width:min(760px,100%); height:100vh; height:100dvh; display:flex; flex-direction:column; background:var(--bhc-panel); box-shadow:-20px 0 80px rgba(5,13,20,.24); border-left:1px solid var(--bhc-border); animation:bh-history-enter 220ms cubic-bezier(.2,.8,.2,1) both; }
.bh-history-reader__panel > header { display:flex; gap:20px; justify-content:space-between; padding:max(24px,env(safe-area-inset-top)) 28px 22px; border-bottom:1px solid var(--bhc-border); }
.bh-history-reader__panel h2 { margin:8px 0; font:500 clamp(24px,3vw,32px)/1.25 var(--bhc-font-display); overflow-wrap:anywhere; }
.bh-history-reader__panel header p:not(.bhc-eyebrow) { margin:0; color:var(--bhc-ink-soft); font:400 13px/1.7 var(--bhc-font-body); }
.bh-history-reader__panel header button { width:44px; height:44px; padding:0; flex-shrink:0; font-size:24px; }
.bh-history-reader__body { padding:28px; overflow-y:auto; overscroll-behavior:contain; flex:1; min-height:0; font:400 14px/1.75 var(--bhc-font-body); }
.bh-history-reader__body dl { display:grid; grid-template-columns:1fr 1fr; gap:22px; margin:0 0 28px; }
.bh-history-reader__body dt { color:var(--bhc-ink-soft); font-size:12px; }
.bh-history-reader__body dd { margin:5px 0 0; overflow-wrap:anywhere; font-weight:500; }
.bh-history-reader__body h3 { margin:0 0 10px; font-size:14px; font-weight:600; }
.bh-history-fullnotes { white-space:pre-wrap; overflow-wrap:anywhere; margin:0 0 24px; }
.bh-history-reader__panel > footer { display:flex; flex-wrap:wrap; gap:10px; justify-content:flex-end; padding:18px 28px max(18px,env(safe-area-inset-bottom)); border-top:1px solid var(--bhc-border); }
.bh-history-reader button { min-height:44px; min-width:44px; font-size:13px; }
@keyframes bh-history-fade { from { opacity:0; } to { opacity:1; } }
@keyframes bh-history-enter { from { opacity:0;transform:translateX(24px); } to { opacity:1;transform:translateX(0); } }
@media(max-width:1100px) { .bh-history-head { flex-direction:column; gap:16px; } .bh-history-row { grid-template-columns:115px minmax(0,1fr) 110px 18px; gap:12px; } }
@media(max-width:920px) { .bh-history-metrics { grid-template-columns:1fr 1fr; } .bh-history-filters { grid-template-columns:1fr 1fr; } }
@media(max-width:540px) {
 .bh-history-studio { gap:14px; } .bh-history-head h2 { font-size:28px; } .bh-history-actions { width:100%; } .bh-history-actions button { flex:1; padding-inline:10px; font-size:12px; }
 .bh-history-metric { padding:16px 12px; } .bh-history-toolbar,.bh-history-results { padding-inline:12px; } .bh-history-filters { padding-inline:12px; gap:10px; } .bh-history-rail { padding-inline:12px; gap:4px; } .bh-history-rail button { flex:1; padding-inline:8px; font-size:12px; }
 .bh-history-row { grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; padding:16px 12px; } .bh-history-row__date { grid-column:1/-1; flex-direction:row; flex-wrap:wrap; font-size:12px; gap:8px; } .bh-history-row__body { grid-column:1; } .bh-history-row__status { grid-column:2; } .bh-history-row__arrow { display:none; }
 .bh-history-reader__panel > header { padding:20px 16px; } .bh-history-reader__body { padding:20px 16px; } .bh-history-reader__panel > footer { padding-inline:16px; } .bh-history-reader__body dl { gap:16px; } .bh-history-reader__panel .bhc-eyebrow,.bh-history-studio .bhc-eyebrow { font-size:10.5px; }
}
@media(prefers-reduced-motion:reduce) { .bh-history-studio *, .bh-history-reader * { animation:none; transition:none; } }

.bh-history-studio .bhc-btn--primary, .bh-history-reader .bhc-btn--primary { color:#182033; }
html:not([data-theme="dark"]) .bh-history-studio .bhc-pill--good { color:#236649; }
.bh-history-search > .bhc-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }

/* One premium Operations section navigation; all thirteen canonical routes. */
.bh-operations-nav { min-width:0; margin:0 0 22px; overflow:hidden; border:1px solid var(--bhc-border); border-radius:var(--bhc-radius); background:var(--bhc-panel); box-shadow:var(--bhc-shadow-sm); }
.bh-operations-nav__head { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:14px 18px; border-bottom:1px solid var(--bhc-border); }
.bh-operations-nav__head > div { display:flex; flex-direction:column; gap:5px; min-width:0; }
.bh-operations-nav__head .bhc-eyebrow { font-size:10.5px; }
.bh-operations-nav__group { color:var(--bhc-ink); font:500 13px/1.5 var(--bhc-font-body); }
.bh-operations-nav__picker { display:flex; align-items:center; gap:12px; color:var(--bhc-ink-soft); font:400 12px/1.5 var(--bhc-font-body); }
.bh-operations-nav__picker select { box-sizing:border-box; max-width:260px; width:240px; min-height:44px; border:1px solid var(--bhc-border); border-radius:var(--bhc-radius-sm); padding:10px 12px; background:var(--bhc-panel-alt); color:var(--bhc-ink); font:500 13px/1.5 var(--bhc-font-body); cursor:pointer; }
.bh-view .bh-operations-nav .bh-hub-tabs.bh-operations-tabs { display:flex; flex-wrap:nowrap; gap:6px; margin:0; padding:10px 12px; border:0; border-radius:0; background:var(--bhc-panel); overflow-x:auto; scrollbar-width:thin; -webkit-mask-image:none; mask-image:none; }
.bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab { display:inline-flex; flex:0 0 auto; align-items:center; gap:8px; min-height:44px; min-width:44px; border-radius:var(--bhc-radius-sm); padding:10px 12px; background:transparent; color:var(--bhc-ink-soft); font:500 12px/1.5 var(--bhc-font-body); box-shadow:none; transition:background 140ms,color 140ms,border-color 140ms,transform 140ms; }
.bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab svg { width:17px; height:17px; flex-shrink:0; }
.bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab:hover { background:var(--bhc-gold-soft); border-color:var(--bhc-gold-line); color:var(--bhc-ink); }
.bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab.is-active { background:var(--bhc-gold-soft); border-color:var(--bhc-gold-line); color:var(--bhc-ink); box-shadow:inset 0 -2px var(--bhc-gold); }
.bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab:active { transform:translateY(1px); }
.bh-operations-tabs .bh-operations-tabs__group-start:not(:first-child) { margin-left:14px; }
.bh-operations-nav :is(button,select):focus-visible { outline:2px solid var(--bhc-gold); outline-offset:2px; }
html.bhr-shell-active .bh-operations-nav .bh-hub-tabs.bh-operations-tabs { -webkit-mask-image:none; mask-image:none; }
@media(max-width:920px) { .bh-operations-nav__head { padding:12px; } .bh-operations-nav__picker select { width:210px; font-size:12px; } .bh-operations-nav__picker > span { display:none; } }
@media(max-width:540px) { .bh-operations-nav { margin-bottom:18px; } .bh-operations-nav__head { flex-wrap:wrap; gap:10px; } .bh-operations-nav__head > div { flex-direction:row; flex-wrap:wrap; gap:6px 12px; align-items:center; } .bh-operations-nav__group { font-size:12px; } .bh-operations-nav__picker,.bh-operations-nav__picker select { width:100%; max-width:none; } }
@media(prefers-reduced-motion:reduce) { .bh-view .bh-operations-nav .bh-operations-tabs .bh-hub-tab { transition:none; transform:none; } }

/* Incidents & Claims — one role-aware, keyboard-accessible category navigation. */
.bh-view .bh-hub-tabs.bh-incidents-tabs { display: flex; gap: 8px; margin: 0 0 24px; padding: 8px; border: 1px solid var(--bhc-border); border-radius: var(--bhc-radius); background: var(--bhc-panel); box-shadow: var(--bhc-shadow-sm); overflow-x: auto; scrollbar-width: thin; mask-image: none; -webkit-mask-image: none; }
.bh-view .bh-incidents-tabs .bh-hub-tab { display: flex; align-items: center; gap: 12px; flex: 1 0 auto; min-height: 68px; min-width: 44px; padding: 12px 16px; border-radius: var(--bhc-radius-sm); text-align: left; background: transparent; color: var(--bhc-ink-soft); transition: background 140ms, color 140ms, border-color 140ms, transform 140ms; box-shadow: none; }
.bh-incidents-tabs svg { width: 20px; height: 20px; flex-shrink: 0; }
.bh-incidents-tabs .bh-hub-tab>span { display: grid; gap: 5px; }
.bh-incidents-tabs strong { font: 600 13px/1.5 var(--bhc-font-body); }
.bh-incidents-tabs small { font: 400 12px/1.5 var(--bhc-font-body); white-space: nowrap; }
.bh-view .bh-incidents-tabs .bh-hub-tab:is(.is-active,:hover) { color: var(--bhc-ink); background: var(--bhc-gold-soft); border-color: var(--bhc-gold-line); }
.bh-view .bh-incidents-tabs .bh-hub-tab.is-active { box-shadow: inset 0 -2px var(--bhc-gold); }
.bh-view .bh-incidents-tabs .bh-hub-tab:active { transform: translateY(1px); }
.bh-incidents-tabs .bh-hub-tab:focus-visible { outline: 2px solid var(--bhc-gold-deep); outline-offset: 2px; }
html.bhr-shell-active .bh-hub-tabs.bh-incidents-tabs { mask-image: none; -webkit-mask-image: none; }
@media(max-width:920px) { .bh-view .bh-incidents-tabs .bh-hub-tab { flex: 0 0 auto; min-height: 52px; padding: 10px 14px; } .bh-incidents-tabs small { display: none; } }
@media(prefers-reduced-motion:reduce) { .bh-view .bh-incidents-tabs .bh-hub-tab { transition: none; transform: none; } }

/* Financial report workspaces share the console typography and restrained motion. */
.bh-view[data-view="pnl"],.bh-view[data-view="tax"]{color:var(--bhc-ink);font-family:var(--bhc-font-body);min-width:0;animation:bh-fin-report-enter .24s ease-out}
.bh-fin-report-controls{display:flex;align-items:end;flex-wrap:wrap;gap:1rem;padding:1.1rem 1.3rem;margin-bottom:1.2rem;border:1px solid var(--bhc-border);border-radius:var(--bhc-radius);background:var(--bhc-panel)}
.bh-fin-report-controls:empty{display:none}.bh-fin-report-controls label{display:grid;gap:.4rem;min-width:150px}.bh-fin-report-controls label span{font-size:12px;font-weight:600;color:var(--bhc-ink-soft)}
.bh-fin-report-controls select{min-height:44px;background:var(--bhc-panel-alt);color:var(--bhc-ink);border:1px solid var(--bhc-border-strong);border-radius:var(--bhc-radius-sm);padding:.65rem;font:inherit}
.bh-fin-report-controls select:focus-visible{outline:2px solid var(--bhc-gold);outline-offset:2px}.bh-fin-report-controls p{flex:1 1 280px;margin:0;color:var(--bhc-ink-soft);font-size:12px;line-height:1.6}
.bh-view[data-view="pnl"] .bh-wf__value,.bh-view[data-view="tax"] .bh-tax-stat__value{font-variant-numeric:tabular-nums}.bh-view[data-view="tax"] .bh-doc{border:1px solid var(--bhc-border);border-radius:var(--bhc-radius);background:var(--bhc-panel);transition:box-shadow .18s ease,border-color .18s ease}
.bh-view[data-view="tax"] .bh-doc:hover{border-color:var(--bhc-border-strong);box-shadow:var(--bhc-shadow-sm)}
@keyframes bh-fin-report-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:920px){.bh-fin-report-controls{padding:1rem}.bh-fin-report-controls label{flex:1 1 150px;min-width:0}.bh-fin-report-controls select{width:100%;max-width:100%}.bh-view[data-view="tax"] .bh-doc button{min-height:44px;white-space:normal}}
@media(prefers-reduced-motion:reduce){.bh-view[data-view="pnl"],.bh-view[data-view="tax"]{animation:none}.bh-view[data-view="tax"] .bh-doc{transition:none}}
