:root {
  --bg: #f4f6f7;
  --surface: #ffffff;
  --surface-2: #eef3f4;
  --border: #dde5e8;
  --border-strong: #c5d5da;
  --text: #333333;
  --text-secondary: #5a5a5a;
  --muted: #7a8a90;
  --accent: #21849b;
  --accent-dark: #1a6a7d;
  --accent-light: #e8f4f6;
  --highlight: #c5494e;
  --highlight-light: #faf0f0;
  --outlook-tab-muted: #9a6b6e;
  --tab-budget: #9a6b2e;
  --tab-budget-light: #faf6eb;
  --tab-operations: #21849b;
  --tab-operations-light: #e8f4f6;
  --tab-metrics: #c5494e;
  --tab-metrics-light: #faf0f0;
  --expert-ai-bg: linear-gradient(135deg, #5b5bd6 0%, #7c3aed 52%, #9333ea 100%);
  --expert-ai-border: rgba(99, 102, 241, 0.45);
  --footer: #21849b;
  --font: "Source Sans 3", "Noto Sans", system-ui, sans-serif;
  --mono: "Source Sans 3", system-ui, sans-serif;
  --shadow-sm: 0 1px 3px rgba(33, 132, 155, 0.06);
  --shadow-md: 0 4px 20px rgba(33, 132, 155, 0.08);
  --radius: 4px;
  --dashboard-inset-x: 1.25rem;
  --dashboard-inset-y: 0.75rem;
  --table-cell-inset-x: 1rem;
  --table-label-col: 15rem;
  --table-label-col-secondary: 8.5rem;
  --table-total-col: 8.75rem;
  --table-data-col: 6.25rem;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font);
  background: var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
}

body::before {
  content: "";
  display: block;
  height: 4px;
  background: var(--accent);
}

body.drawer-open { overflow: hidden; }

.app {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1.5rem 3rem;
}

.top-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding: 1.1rem 0 0.95rem;
  border-bottom: 1px solid var(--border);
}

.top-bar-brand {
  min-width: 0;
  display: flex;
  align-items: center;
}

.brand-lockup {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  text-decoration: none;
  color: inherit;
}

.brand-name {
  margin: 0;
  font-family: "Red Hat Display", var(--font);
  font-size: 1.28rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: #22849c;
  white-space: nowrap;
}

/* Teams already shows the app title in its chrome — drop the in-page brand row. */
.host-teams .top-bar-brand {
  display: none;
}
.host-teams .top-bar {
  padding-top: 0.45rem;
  padding-bottom: 0.4rem;
  margin-bottom: 0.45rem;
}

.eyebrow {
  margin: 0 0 0.35rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}

.meta-chips {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.55rem;
  min-width: 0;
}

.meta-toolbar {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0;
  width: 100%;
}

.meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45rem;
}

.meta-row-toolbar {
  /* Keep a single control height; Refresh/Sign out stay on line 1 when width allows. */
  --meta-control-h: 2rem;
}
.meta-row-toolbar .chip,
.meta-row-toolbar .notes-btn,
.meta-row-toolbar .refresh-btn,
.meta-row-toolbar .auth-sign-out,
.meta-row-toolbar .quarter-picker select,
.meta-row-toolbar .chip-fx {
  height: var(--meta-control-h);
  min-height: var(--meta-control-h);
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  padding-top: 0;
  padding-bottom: 0;
  line-height: 1;
}
.meta-row-toolbar .quarter-picker {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  height: var(--meta-control-h);
}
.meta-row-toolbar .refresh-btn,
.meta-row-toolbar .auth-sign-out,
.meta-row-toolbar .notes-btn {
  padding-left: 0.7rem;
  padding-right: 0.7rem;
}

.chip {
  font-family: var(--font);
  font-size: 0.72rem;
  font-weight: 500;
  padding: 0.35rem 0.7rem;
  border-radius: var(--radius);
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text-secondary);
  white-space: nowrap;
}

.chip-muted { color: var(--muted); }

.meta-fx-wrap { position: relative; display: inline-block; }
.chip-fx {
  cursor: pointer;
  border-color: var(--accent);
  color: var(--accent-dark);
  font-weight: 600;
  user-select: none;
}
.chip-fx:hover,
.chip-fx[aria-expanded="true"] {
  background: var(--accent-light);
  border-color: var(--accent-dark);
}
.fx-popover {
  position: absolute;
  top: calc(100% + 0.35rem);
  right: 0;
  z-index: 50;
  min-width: 22rem;
  max-width: min(28rem, 95vw);
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  box-shadow: var(--shadow-md);
}
.fx-popover-title {
  margin: 0 0 0.65rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
}
.fx-popover-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
}
.fx-popover-table th,
.fx-popover-table td {
  padding: 0.45rem 0.35rem;
  border-bottom: 1px solid var(--border);
  text-align: left;
}
.fx-popover-table th { color: var(--muted); font-size: 0.65rem; text-transform: uppercase; }
.fx-popover-table .col-num { text-align: right; font-weight: 600; color: var(--text); }
.fx-popover-table .fx-source { font-size: 0.72rem; color: var(--muted); max-width: 9rem; }
.fx-popover-note {
  margin: 0.65rem 0 0;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.4;
}

.section-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.25rem;
}
.section-nav[hidden] { display: none !important; }

.tab-shell {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  margin-bottom: 1.25rem;
  padding-bottom: 0.15rem;
  border-bottom: 2px solid var(--border);
}
.main-tabs {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-bottom: 0;
  flex-shrink: 0;
}
.main-tab {
  font-family: var(--font);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.45rem 0.9rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--muted);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.main-tabs .expert-btn-tab {
  width: 2.15rem;
  height: 2.15rem;
  margin-left: 0.15rem;
  flex-shrink: 0;
}
.main-tab:hover { color: var(--text); border-color: var(--border-strong); }
.main-tab.is-active {
  color: var(--text);
  border-color: var(--border-strong);
  background: var(--surface-2);
}
.app[data-active-group="planning"] .main-tab[data-group="planning"].is-active {
  color: var(--tab-budget);
  border-color: var(--tab-budget);
  background: var(--tab-budget-light);
}
.app[data-active-group="operations"] .main-tab[data-group="operations"].is-active {
  color: var(--tab-operations);
  border-color: var(--tab-operations);
  background: var(--tab-operations-light);
}
.app[data-active-group="metrics"] .main-tab[data-group="metrics"].is-active {
  color: var(--tab-metrics);
  border-color: var(--tab-metrics);
  background: var(--tab-metrics-light);
}

.sub-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  flex: 1 1 auto;
  justify-content: flex-end;
  align-items: flex-end;
  min-width: 0;
}
.view-tab {
  font-family: var(--font);
  font-size: 0.86rem;
  font-weight: 600;
  padding: 0.5rem 0.85rem;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.view-tab:hover { opacity: 0.9; }
.view-tab--budget:not(.is-active) { color: #8a7340; }
.view-tab--budget.is-active {
  color: var(--tab-budget);
  border-bottom-color: var(--tab-budget);
}
.view-tab--operations:not(.is-active) { color: #5a8a96; }
.view-tab--operations.is-active {
  color: var(--tab-operations);
  border-bottom-color: var(--tab-operations);
}
.view-tab--metrics:not(.is-active) { color: var(--outlook-tab-muted); }
.view-tab--metrics.is-active {
  color: var(--tab-metrics);
  border-bottom-color: var(--tab-metrics);
}
/* Mgt A/C — dotted ring so it stands out among metrics tabs */
.view-tab.view-tab--mgt-ac {
  border: 1.5px dotted var(--tab-metrics);
  border-radius: 6px;
  margin-bottom: 0;
  padding: 0.4rem 0.8rem;
}
.view-tab.view-tab--mgt-ac:not(.is-active) {
  color: var(--tab-metrics);
  border-bottom-color: var(--tab-metrics);
  opacity: 0.85;
}
.view-tab.view-tab--mgt-ac.is-active {
  border-style: dotted;
  border-color: var(--tab-metrics);
  border-bottom-color: var(--tab-metrics);
  background: var(--tab-metrics-light);
  color: var(--tab-metrics);
}
.view-tab-stub {
  border: 1px dashed transparent;
  border-radius: var(--radius) var(--radius) 0 0;
  margin-bottom: -1px;
  opacity: 1;
}
.view-tab-stub.view-tab--budget:not(.is-active) {
  color: #7a5f1a;
  background: #faf3e0;
  border-color: #c9a84a;
}
.view-tab-stub.view-tab--operations:not(.is-active) {
  color: #7a5538;
  background: #fdf0e4;
  border-color: #c98a52;
}
.view-tab-stub.view-tab--metrics:not(.is-active) {
  color: #8a4450;
  background: #fcecee;
  border-color: #d47a86;
}
.view-tab-stub.is-active {
  border-style: solid;
  border-color: currentColor;
  border-bottom-color: currentColor;
  background: transparent;
}

.view-stub-badge {
  display: inline-block;
  margin-left: 0.45rem;
  padding: 0.12rem 0.45rem;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border-radius: 3px;
  vertical-align: middle;
  background: var(--surface-2);
  color: var(--muted);
  border: 1px dashed var(--border-strong);
}
.view-stub-panel {
  margin-top: 1rem;
  padding: 1.25rem var(--dashboard-inset-x);
  border: 2px dashed var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-secondary);
}
.view-stub--budget .view-stub-panel { border-color: rgba(154, 107, 46, 0.45); background: var(--tab-budget-light); }
.view-stub--operations .view-stub-panel { border-color: rgba(33, 132, 155, 0.35); background: var(--tab-operations-light); }
.view-stub--metrics .view-stub-panel { border-color: rgba(197, 73, 78, 0.35); background: var(--tab-metrics-light); }
.app.view-assets .report-section.stage-pipeline,
.app.view-agency .report-section {
  border-top: 3px solid var(--tab-operations);
}
.app.view-cashflow .report-section.stage-cash,
.app.view-outlook .report-section.stage-outlook,
.app.view-kpi .report-section.stage-kpi {
  border-top: 3px solid var(--tab-metrics);
}
.app.view-stub-active .report-section.view-stub--budget {
  border-top: 3px solid var(--tab-budget);
}
.app.view-stub-active .report-section.view-stub--operations {
  border-top: 3px solid var(--tab-operations);
}
.app.view-stub-active .report-section.view-stub--metrics {
  border-top: 3px solid var(--tab-metrics);
}
.row-placeholder td { color: var(--highlight); }
.row-placeholder td.col-label .segment-label { color: var(--highlight); }
.row-placeholder:hover td { color: #a83d42; }

.cell-manual,
.cash-starting-input.cell-manual,
.cash-starting-input-wrap.cell-manual .cash-starting-prefix,
.cash-starting-input-wrap.cell-manual .cash-starting-suffix {
  color: var(--highlight);
  font-weight: 600;
}
.data-table td.cell-manual.cell-negative {
  color: var(--highlight);
}
.data-table td.cell-linked {
  background: var(--accent-light);
  box-shadow: inset 0 0 0 1px var(--accent);
  color: var(--accent-dark);
  font-weight: 600;
}
.data-table td.cell-linked.cell-negative {
  color: var(--accent-dark);
}

.row-drillable { cursor: pointer; }
.row-drillable:hover td.col-label .segment-label { color: var(--accent); }
.row-drillable.is-expanded td.col-label .segment-label::before {
  content: "▾ ";
  color: var(--accent);
  font-size: 0.75rem;
}
.row-drillable:not(.is-expanded) td.col-label .segment-label::before {
  content: "▸ ";
  color: var(--muted);
  font-size: 0.75rem;
}
.row-drillable.is-loading td.col-label .segment-label::after {
  content: " …";
  color: var(--muted);
  font-style: italic;
  font-size: 0.75rem;
}
.row-project td {
  background: var(--surface-2);
  font-size: 0.82rem;
  border-bottom-color: var(--border);
}
.row-project .project-label {
  font-weight: 500;
  color: var(--muted);
  padding-left: 0.75rem;
}
.row-project-group td {
  background: #eef3f5;
  border-top: 1px solid var(--border);
}
.row-project-group .project-group-label {
  font-weight: 700;
  color: var(--text);
  padding-left: 0.5rem;
}
.row-project .project-label-indent {
  padding-left: 1.5rem;
}
.row-project-empty td {
  color: var(--muted);
  font-style: italic;
  font-size: 0.82rem;
}

.section-nav a {
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--accent);
  text-decoration: none;
  transition: background 0.15s, border-color 0.15s;
}
.section-nav a:hover {
  background: var(--accent-light);
  border-color: var(--border-strong);
}

.quarter-picker {
  font-size: 0.8rem;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.quarter-picker select {
  font-family: var(--font);
  font-size: 0.75rem;
  font-weight: 500;
  padding: 0.35rem 0.5rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
}

.time-badge {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.2rem 0.5rem;
  border-radius: 2px;
  vertical-align: middle;
  margin-left: 0.35rem;
}
.time-snapshot { background: var(--highlight-light); color: var(--highlight); }
.time-quarterly { background: var(--accent-light); color: var(--accent-dark); }
.time-cumulative { background: #edf7f0; color: #2d7a4f; }
.recon-warn { color: var(--highlight); }

.flow-steps {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  font-size: 0.875rem;
  line-height: 1.5;
}
.flow-step { display: inline-flex; align-items: center; gap: 0.35rem; }
.flow-num {
  display: inline-flex;
  width: 1.25rem;
  height: 1.25rem;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--accent);
  color: white;
  font-size: 0.7rem;
  font-weight: 700;
  flex-shrink: 0;
}
.flow-arrow { color: var(--muted); font-size: 0.75rem; }

tr.row-total td {
  font-weight: 700;
  background: var(--accent-light);
  border-top: 2px solid var(--border-strong);
  color: var(--text);
}
.stage-highest { border-left: 3px solid var(--highlight); }
.stage-high { border-left: 3px solid var(--accent); }
.stage-medium { border-left: 3px solid #5ba8b8; }
.stage-low { border-left: 3px solid var(--muted); }

.notes-btn,
.expert-btn,
.refresh-btn {
  font-family: var(--font);
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.45rem 1rem;
  border-radius: var(--radius);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s, transform 0.12s;
}

.notes-btn {
  border: 1px solid var(--border-strong);
  background: var(--surface);
  color: var(--text-secondary);
  padding: 0.35rem 0.75rem;
  font-size: 0.72rem;
  font-weight: 500;
}
.notes-btn:hover,
.notes-btn[aria-expanded="true"] {
  background: var(--accent-light);
  border-color: var(--accent);
  color: var(--accent-dark);
}

.expert-btn {
  border: 1px solid transparent;
  background: var(--surface);
  color: var(--text-secondary);
}

.expert-btn-ai {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid var(--expert-ai-border);
  background: var(--expert-ai-bg);
  color: #fff;
  font-weight: 700;
  padding: 0.5rem 1.1rem 0.5rem 0.95rem;
  box-shadow:
    0 2px 14px rgba(99, 102, 241, 0.38),
    inset 0 1px 0 rgba(255, 255, 255, 0.22);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.expert-btn-icon-only {
  width: 2.35rem;
  height: 2.35rem;
  padding: 0;
  justify-content: center;
  gap: 0;
  border-radius: var(--radius);
}
.expert-btn-icon-only .expert-btn-icon {
  font-size: 1.15rem;
}
.expert-btn-ai::before {
  content: "";
  position: absolute;
  inset: -40%;
  background: linear-gradient(
    135deg,
    transparent 36%,
    rgba(255, 255, 255, 0.08) 44%,
    rgba(255, 255, 255, 0.65) 50%,
    rgba(220, 235, 255, 0.35) 52%,
    rgba(255, 255, 255, 0.08) 56%,
    transparent 64%
  );
  transform: translate(-130%, -130%);
  animation: expert-shimmer 3.4s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}
.expert-btn-ai:hover:not(:disabled) {
  background: linear-gradient(135deg, #4f46e5 0%, #6d28d9 52%, #7e22ce 100%);
  border-color: rgba(99, 102, 241, 0.65);
  box-shadow:
    0 4px 18px rgba(99, 102, 241, 0.48),
    inset 0 1px 0 rgba(255, 255, 255, 0.25);
  transform: translateY(-1px);
}
.expert-btn-ai:active:not(:disabled) {
  transform: translateY(0);
}
.expert-btn-icon,
.expert-btn-label,
.expert-btn-badge {
  position: relative;
  z-index: 1;
}
.expert-btn-icon {
  font-size: 1rem;
  line-height: 1;
  filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.45));
}
.expert-btn-badge {
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  padding: 0.14rem 0.38rem;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.2);
  border: 1px solid rgba(255, 255, 255, 0.35);
  line-height: 1;
}
@keyframes expert-shimmer {
  0%, 68%, 100% { transform: translate(-130%, -130%); }
  84% { transform: translate(130%, 130%); }
}
.expert-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  color: rgba(255, 255, 255, 0.85);
  box-shadow: none;
  transform: none;
}
.expert-btn:disabled::before {
  animation: none;
}

.refresh-btn {
  border: 1px solid var(--accent);
  background: var(--accent);
  color: white;
}
.refresh-btn:hover:not(:disabled) { background: var(--accent-dark); }
.refresh-btn:disabled { opacity: 0.6; cursor: wait; }

.error-banner {
  padding: 1rem 1.25rem;
  border-radius: var(--radius);
  background: var(--highlight-light);
  border: 1px solid #e8b4b6;
  color: var(--highlight);
  margin-bottom: 1.5rem;
}

.report-grid { display: flex; flex-direction: column; gap: 1.25rem; }

.report-section {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.section-header {
  padding: 1rem var(--dashboard-inset-x);
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}

.section-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
.section-header h2 {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--accent);
}
.section-subtitle {
  margin: 0.35rem 0 0;
  font-size: 0.82rem;
  color: var(--muted);
  line-height: 1.45;
}

.table-wrap {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  max-width: 100%;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) var(--surface-2);
}
.table-wrap::-webkit-scrollbar { height: 8px; }
.table-wrap::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: 4px;
}

.data-table {
  /* Prefer content width so numeric cols keep --table-data-col; table-wrap scrolls on narrow screens */
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
  table-layout: fixed;
}
.data-table col.col-w-label {
  width: var(--table-label-col);
  min-width: var(--table-label-col);
}
.data-table col.col-w-label-secondary {
  width: var(--table-label-col-secondary);
  min-width: var(--table-label-col-secondary);
}
.data-table col.col-w-total {
  width: var(--table-total-col);
  min-width: var(--table-total-col);
}
/* Fixed data-col width so table-layout:fixed cannot crush nums on narrow viewports */
.data-table col.col-w-data {
  width: var(--table-data-col);
  min-width: var(--table-data-col);
}

.stage-cash .data-table { --table-label-col: 17rem; }

.data-table th,
.data-table td {
  padding: var(--dashboard-inset-y) var(--table-cell-inset-x);
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
.data-table th:first-child,
.data-table td:first-child {
  padding-left: var(--dashboard-inset-x);
}
.data-table th:last-child,
.data-table td:last-child {
  padding-right: var(--dashboard-inset-x);
}
.data-table th {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  background: var(--surface-2);
  vertical-align: bottom;
}
.data-table th.col-label,
.data-table td.col-label {
  text-align: left;
  min-width: 10rem;
}
.data-table th.col-num,
.data-table th.col-total {
  text-align: right;
  min-width: var(--table-data-col);
}
.th-head-stack {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.15rem;
  line-height: 1.15;
  max-width: 100%;
}
.th-period {
  display: block;
}
.data-table th[title] { cursor: help; border-bottom: 1px dotted var(--border-strong); }
.data-table tbody tr:hover td { background: rgba(33, 132, 155, 0.03); }
.data-table tbody tr.row-total:hover td { background: var(--accent-light); }

.col-label {
  text-align: left;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.col-num {
  text-align: right;
  font-family: var(--mono);
  font-size: 0.82rem;
  font-weight: 500;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  min-width: var(--table-data-col);
}
.col-total {
  font-weight: 700;
  color: var(--highlight);
}

.data-table th .col-unit {
  display: block;
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  color: var(--muted);
  margin: 0;
  line-height: 1.1;
}

.outlook-block .section-subtitle {
  margin: 0;
  padding: 0 var(--dashboard-inset-x) 0.65rem;
}
.cash-sga-subtitle-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  flex-wrap: wrap;
  padding: 0 var(--dashboard-inset-x) 0.65rem;
}
.cash-sga-subtitle-row .section-subtitle {
  padding: 0;
  flex: 1 1 14rem;
  margin: 0;
}
.cash-sga-updated-meta {
  margin: 0;
  flex: 0 1 auto;
  max-width: 100%;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--muted);
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.segment-label { display: block; font-weight: 600; color: var(--text); }

.outlook-block { padding: 0.75rem 0 0.25rem; }
.outlook-block + .outlook-block {
  border-top: 1px solid var(--border);
  margin-top: 0.25rem;
}
.outlook-block-title {
  margin: 0;
  padding: 0.85rem var(--dashboard-inset-x) 0.5rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}
.cash-methodology {
  padding-bottom: 1.25rem;
}
.cash-methodology-toggle {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0 var(--dashboard-inset-x);
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.cash-methodology-toggle .outlook-block-title {
  margin: 0;
}
.cash-methodology.is-collapsed .cash-methodology-toggle .outlook-block-title::before {
  content: "▸ ";
  color: var(--muted);
  font-size: 0.75rem;
}
.cash-methodology:not(.is-collapsed) .cash-methodology-toggle .outlook-block-title::before {
  content: "▾ ";
  color: var(--accent);
  font-size: 0.75rem;
}
.cash-methodology-toggle:hover .outlook-block-title {
  color: var(--accent);
}
.cash-methodology-body[hidden] {
  display: none;
}
.cash-section-toggle-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.65rem var(--dashboard-inset-x) 0.85rem;
  border-top: 1px solid var(--border);
  margin-top: 0.25rem;
}
.cash-section-toggle {
  font-family: var(--font);
  font-size: 0.68rem;
  font-weight: 650;
  letter-spacing: 0.03em;
  padding: 0.28rem 0.55rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  cursor: pointer;
  white-space: nowrap;
}
.cash-section-toggle:hover {
  color: var(--text-secondary);
  border-color: var(--border-strong);
}
.cash-section-toggle.is-active {
  background: var(--highlight-light);
  border-color: rgba(37, 99, 235, 0.25);
  color: var(--highlight);
}
.cash-section-detail.is-collapsed {
  display: none;
}
.cash-forecast-table tr.cash-category-group {
  cursor: pointer;
}
.cash-forecast-table tr.cash-category-group:hover td {
  background: #e4eaec;
}
.cash-forecast-table tr.cash-category-group td {
  background: #eef3f5;
  font-size: 0.84rem;
  border-top: 1px solid var(--border);
}
.cash-forecast-table tr.cash-category-group .project-group-label {
  padding-left: 0.5rem;
}
.cash-forecast-table tr.cash-category-row td {
  background: var(--surface-2);
  font-size: 0.82rem;
  border-bottom-color: var(--border);
}
.cash-forecast-table tr.cash-category-row .project-label {
  padding-left: 0.75rem;
  font-weight: 500;
  color: var(--muted);
}
.cash-forecast-table tr.cash-category-row.row-inflow td.col-num:not(.cell-negative) {
  color: var(--positive, #0d6b4c);
}
.cash-forecast-table tr.cash-category-row.row-outflow td.col-num.cell-negative {
  color: var(--negative, #b42318);
}
.cash-methodology-section {
  padding: 0.35rem var(--dashboard-inset-x) 0.85rem;
}
.cash-methodology-section + .cash-methodology-section {
  border-top: 1px solid var(--border);
  padding-top: 0.85rem;
}
.cash-methodology-section h4 {
  margin: 0 0 0.4rem;
  font-size: 0.82rem;
  font-weight: 650;
  color: var(--text);
  letter-spacing: 0.01em;
}
.cash-methodology-section .notes-list {
  margin: 0;
}
.outlook-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding-right: var(--dashboard-inset-x);
}
.outlook-block-head .outlook-block-title {
  flex: 1 1 auto;
}
.cash-sga-finance-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.cash-sga-finance-toggle input {
  width: 0.95rem;
  height: 0.95rem;
  margin: 0;
  accent-color: var(--accent);
  cursor: pointer;
}
.cash-section.cash-sga-input-mode .cash-sga-finance-toggle {
  color: var(--highlight, #2563eb);
}
.payables-breakdown-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--muted);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.payables-breakdown-toggle input {
  width: 0.95rem;
  height: 0.95rem;
  margin: 0;
  accent-color: var(--accent);
  cursor: pointer;
}
.row-payables-breakdown td {
  background: var(--surface-2);
  font-size: 0.84rem;
  border-bottom-color: var(--border);
}
.segment-label-indent {
  padding-left: 0.85rem;
  font-weight: 500;
  color: var(--muted);
}
.outlook-table tbody tr:last-child td { border-bottom: none; }

.cash-starting-field {
  margin-top: 0.75rem;
  padding: 0.85rem 1rem;
  background: var(--surface-raised, #f7f9fa);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  max-width: 22rem;
}
.cash-starting-label {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 0.35rem;
}
.cash-starting-input-wrap {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--border-strong, #c5cdd2);
  border-radius: var(--radius);
  background: white;
}
.cash-starting-prefix {
  font-family: var(--font);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--muted);
  flex-shrink: 0;
}
.cash-starting-input {
  width: 100%;
  font-family: var(--font);
  font-size: 1.05rem;
  font-weight: 600;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  color: var(--text);
}
.cash-starting-input-wrap:focus-within {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
.cash-starting-input:focus {
  outline: none;
}
.cash-starting-suffix {
  font-family: var(--font);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--muted);
  flex-shrink: 0;
}
.cash-unit-legend {
  margin-top: 0.35rem;
  font-size: 0.85rem;
}
.cash-starting-hint {
  margin: 0.4rem 0 0;
  font-size: 0.75rem;
  color: var(--muted);
}
.cash-forecast-table tr.row-inflow td { color: var(--positive, #0d6b4c); }
.cash-forecast-table tr.row-outflow td.col-num { color: var(--negative, #b42318); }
/* Shared with P&L Management Account — Segment inflows / outflows chrome */

.cash-sga-label-cell { vertical-align: middle; }
.cash-sga-label-row {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}
.cash-sga-drag-handle {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.45rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 2px;
  background: transparent;
  color: var(--muted);
  cursor: grab;
  line-height: 1;
}
.cash-sga-drag-handle:hover,
.cash-sga-drag-handle:focus-visible {
  color: var(--text-secondary);
  background: rgba(122, 138, 144, 0.12);
  outline: none;
}
.cash-sga-drag-handle:active { cursor: grabbing; }
.cash-sga-drag-glyph {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: -0.04em;
  opacity: 0.75;
  user-select: none;
}
tr.row-manual.is-sga-dragging {
  opacity: 0.55;
  background: var(--surface-2);
}
tr.row-manual.is-sga-drag-over {
  box-shadow: inset 0 2px 0 0 var(--accent);
}
.cash-sga-label-input,
.cash-sga-direction,
.cash-sga-q-input {
  font-family: var(--font);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--highlight, #2563eb);
  background: #fff;
  border: 1px dashed rgba(37, 99, 235, 0.55);
  border-radius: 3px;
  padding: 0.25rem 0.4rem;
}
.cash-sga-label-input.is-manual-readonly,
.cash-sga-direction.is-manual-readonly,
.cash-sga-q-input.is-manual-readonly,
.cash-starting-input.is-manual-readonly,
.cash-starting-input-wrap.is-manual-readonly {
  border-style: solid;
}
.cash-sga-label-input {
  min-width: 7rem;
  flex: 1 1 7rem;
}
.cash-sga-direction {
  flex: 0 0 auto;
  min-width: 3.6rem;
}
.cash-sga-q-input {
  width: 100%;
  max-width: 5.5rem;
  text-align: right;
  box-sizing: border-box;
}
.cash-sga-label-input:focus,
.cash-sga-direction:focus,
.cash-sga-q-input:focus {
  outline: 2px solid rgba(37, 99, 235, 0.35);
  outline-offset: 1px;
}
.cash-sga-remove {
  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.15rem 0.35rem;
  border-radius: 3px;
}
.cash-sga-remove:hover {
  color: var(--negative, #b42318);
  background: rgba(180, 35, 24, 0.08);
}
.cash-sga-actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 0.65rem;
}
.cash-sga-add {
  font-family: var(--font);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  border: 1px dashed rgba(37, 99, 235, 0.55);
  background: #fff;
  color: var(--highlight, #2563eb);
  cursor: pointer;
}
.cash-sga-add:hover { filter: brightness(0.97); }
.cash-sga-save {
  font-family: var(--font);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0.4rem 0.95rem;
  border-radius: var(--radius);
  border: 1px solid rgba(37, 99, 235, 0.75);
  background: var(--highlight, #2563eb);
  color: #fff;
  cursor: pointer;
}
.cash-sga-save:hover { filter: brightness(1.05); }
.cash-sga-save:disabled {
  opacity: 0.65;
  cursor: wait;
}
.cash-sga-status {
  font-size: 0.8rem;
  color: var(--muted);
}
.cash-sga-status.is-dirty { color: #9a6700; }
.cash-sga-status.is-error { color: var(--negative, #b42318); }
.cash-forecast-table tr.row-inflow-total td,
.pnl-table tr.row-inflow-total td {
  font-weight: 700;
  background: #e6f4ee;
  border-top: 2px solid #0d6b4c;
  color: #0a5238;
}
.cash-forecast-table tr.row-outflow-total td,
.pnl-table tr.row-outflow-total td {
  font-weight: 700;
  background: #fcebea;
  border-top: 2px solid #b42318;
  color: #8a1f16;
}
.cash-forecast-table tr.row-inflow-total .segment-label,
.pnl-table tr.row-inflow-total .segment-label {
  color: #0a5238;
}
.cash-forecast-table tr.row-outflow-total .segment-label,
.pnl-table tr.row-outflow-total .segment-label {
  color: #8a1f16;
}
.cash-forecast-table tr.row-inflow-total:hover td,
.pnl-table tr.row-inflow-total:hover td {
  background: #e6f4ee;
}
.cash-forecast-table tr.row-outflow-total:hover td,
.pnl-table tr.row-outflow-total:hover td {
  background: #fcebea;
}
.cash-forecast-table .cell-negative { color: var(--negative, #b42318); }
.stage-cash .time-badge { background: #e8f4f8; color: #0b5c6d; }

/* Drawer panels */
.drawer-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(51, 51, 51, 0.4);
  backdrop-filter: blur(2px);
}
.drawer-backdrop.is-open { display: block; }

.drawer-panel {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 100;
  height: 100vh;
  background: var(--surface);
  border-left: 1px solid var(--border);
  box-shadow: var(--shadow-md);
  flex-direction: column;
}
.drawer-panel.is-open { display: flex; }

.notes-panel { width: min(480px, 100vw); }
.expert-panel {
  width: min(60vw, 720px);
  max-width: 100vw;
  min-width: min(320px, 100vw);
  overflow: hidden;
}
@media (max-width: 820px) {
  .expert-panel {
    width: 100vw;
    min-width: 100vw;
  }
}
.expert-panel .drawer-panel-header {
  background: var(--expert-ai-bg);
  border-bottom: 1px solid var(--expert-ai-border);
}
.expert-panel .drawer-panel-subtitle {
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.45;
}

.expert-messages {
  flex: 1;
  min-height: 0;
  overflow-y: scroll;
  overflow-x: hidden;
  padding: 1rem 0.85rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) var(--surface-2);
}
@media (max-width: 820px) {
  .expert-messages {
    padding: 0.85rem 0.65rem 1.1rem;
  }
}
.expert-messages::-webkit-scrollbar { width: 8px; }
.expert-messages::-webkit-scrollbar-track {
  background: var(--surface-2);
  border-radius: 4px;
}
.expert-messages::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: 4px;
}

.drawer-panel-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--border);
  background: var(--accent);
  flex-shrink: 0;
}
.drawer-panel-header h2 {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 600;
  color: white;
}
.drawer-panel-subtitle {
  margin: 0.25rem 0 0;
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.85);
}

.drawer-close {
  font-size: 1.5rem;
  line-height: 1;
  padding: 0.15rem 0.45rem;
  border: none;
  border-radius: var(--radius);
  background: transparent;
  color: rgba(255, 255, 255, 0.8);
  cursor: pointer;
  flex-shrink: 0;
}
.drawer-close:hover {
  color: white;
  background: rgba(255, 255, 255, 0.15);
}

.notes-panel-body {
  flex: 1;
  overflow-y: auto;
  padding: 1rem 1.5rem 2rem;
}

.notes-block { margin-bottom: 1.75rem; }
.notes-block:last-child { margin-bottom: 0; }
.notes-block h3 {
  margin: 0 0 0.75rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}
.notes-lead {
  margin: 0 0 0.65rem;
  font-size: 0.875rem;
  color: var(--text-secondary);
  line-height: 1.55;
}
.notes-list {
  margin: 0;
  padding-left: 1.15rem;
  color: var(--text-secondary);
  font-size: 0.875rem;
  line-height: 1.6;
}
.notes-empty { margin: 0; color: var(--muted); font-size: 0.875rem; }

.insight {
  padding: 0.85rem 1rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface-2);
  font-size: 0.875rem;
  line-height: 1.5;
  margin-bottom: 0.65rem;
}
.insight:last-child { margin-bottom: 0; }
.insight strong { display: block; margin-bottom: 0.3rem; font-size: 0.875rem; color: var(--text); }
.insight p { margin: 0; color: var(--text-secondary); }
.insight-info { border-left: 3px solid var(--accent); }
.insight-tip { border-left: 3px solid #2d7a4f; }
.insight-muted { border-left: 3px solid var(--border-strong); }
.insight-data { border-left: 3px solid var(--highlight); }

.glossary-dl { margin: 0; display: grid; gap: 0.85rem; }
.glossary-dl dt { font-weight: 600; font-size: 0.875rem; color: var(--text); }
.glossary-dl dd {
  margin: 0.2rem 0 0;
  color: var(--text-secondary);
  font-size: 0.85rem;
  line-height: 1.55;
}

.notes-block .data-table { font-size: 0.82rem; }
.notes-block .data-table th,
.notes-block .data-table td { padding: 0.55rem 0.65rem; }

.expert-empty { margin: 0; color: var(--muted); font-size: 0.875rem; }

.expert-msg {
  max-width: 92%;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.expert-msg-user {
  align-self: flex-end;
  align-items: flex-end;
  max-width: 88%;
}
.expert-msg-assistant {
  align-self: stretch;
  align-items: stretch;
  max-width: 100%;
}
.expert-msg-label {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 0 0.35rem;
}
.expert-msg-body {
  position: relative;
  font-size: 0.875rem;
  line-height: 1.55;
  padding: 0.75rem 0.95rem;
  border-radius: 1.1rem;
  border: 1px solid var(--border);
  box-shadow: 0 1px 3px rgba(33, 132, 155, 0.08);
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  box-sizing: border-box;
}
.expert-msg-assistant .expert-msg-body {
  width: 100%;
}
.expert-msg-user .expert-msg-body {
  background: #dff0f5;
  border-color: #9ec3cd;
  border-radius: 1.1rem 1.1rem 0.35rem 1.1rem;
}
.expert-msg-user .expert-msg-body::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: -7px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 7px 7px 0 7px;
  border-color: #9ec3cd transparent transparent transparent;
}
.expert-msg-user .expert-msg-body::before {
  content: "";
  position: absolute;
  right: 15px;
  bottom: -5px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 6px 6px 0 6px;
  border-color: #dff0f5 transparent transparent transparent;
  z-index: 1;
}
.expert-msg-assistant .expert-msg-body {
  background: #f7f8f9;
  border-color: #d6dee2;
  border-radius: 1.1rem 1.1rem 1.1rem 0.35rem;
}
.expert-msg-assistant .expert-msg-body::after {
  content: "";
  position: absolute;
  left: 14px;
  bottom: -7px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 7px 7px 0 7px;
  border-color: #d6dee2 transparent transparent transparent;
}
.expert-msg-assistant .expert-msg-body::before {
  content: "";
  position: absolute;
  left: 15px;
  bottom: -5px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 6px 6px 0 6px;
  border-color: #f7f8f9 transparent transparent transparent;
  z-index: 1;
}

.expert-viz-wrap {
  margin-top: 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
  max-width: 100%;
}
.expert-viz {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  min-width: 0;
  max-width: 100%;
}
.expert-viz-title {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--accent);
  padding: 0.5rem 0.65rem;
  border-bottom: 1px solid var(--border);
  background: var(--surface-2);
}
.expert-viz-table-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  max-width: 100%;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) var(--surface-2);
}
.expert-viz-table-scroll::-webkit-scrollbar { height: 8px; }
.expert-viz-table-scroll::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: 4px;
}
.expert-viz-table table {
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  font-size: 0.78rem;
}
.expert-viz-table th,
.expert-viz-table td {
  padding: 0.45rem 0.65rem;
  text-align: left;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
  vertical-align: top;
}
.expert-viz-table th {
  color: var(--accent);
  font-weight: 700;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  position: sticky;
  top: 0;
  background: var(--surface);
}
.expert-viz-table tr:last-child td { border-bottom: none; }
@media (max-width: 820px) {
  .expert-msg-assistant .expert-msg-body {
    padding: 0.7rem 0.7rem;
  }
  .expert-viz-table th,
  .expert-viz-table td {
    padding: 0.4rem 0.55rem;
    font-size: 0.74rem;
  }
}
.expert-viz-bar { padding: 0.55rem 0.65rem 0.65rem; }
.expert-viz-bar-row {
  display: grid;
  grid-template-columns: 4.5rem 1fr auto;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 0.4rem;
}
.expert-viz-bar-row:last-child { margin-bottom: 0; }
.expert-viz-bar-label {
  font-size: 0.72rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.expert-viz-bar-track {
  height: 0.55rem;
  background: var(--surface-2);
  border-radius: 2px;
  overflow: hidden;
}
.expert-viz-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent-dark), var(--accent));
  border-radius: 2px;
  min-width: 2px;
}
.expert-viz-bar-fill-negative {
  background: linear-gradient(90deg, #a83d42, var(--highlight));
}
.expert-viz-bar-value-negative { color: var(--highlight); }
.expert-viz-bar-value {
  font-size: 0.72rem;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
}
.expert-viz-grouped-bar { padding: 0.55rem 0.65rem 0.65rem; }
.expert-viz-legend {
  display: flex;
  gap: 1rem;
  margin-bottom: 0.6rem;
  flex-wrap: wrap;
}
.expert-viz-legend-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.72rem;
  color: var(--muted);
}
.expert-viz-legend-swatch {
  width: 0.75rem;
  height: 0.55rem;
  border-radius: 2px;
  display: inline-block;
}
.expert-viz-bar-fill-series-0 {
  background: linear-gradient(90deg, var(--accent-dark), var(--accent));
}
.expert-viz-bar-fill-series-1 {
  background: linear-gradient(90deg, #4a6d8c, #6b8cae);
}
.expert-viz-bar-fill-series-2 {
  background: linear-gradient(90deg, #6b5b4f, #9a8471);
}
.expert-viz-grouped-month {
  display: grid;
  grid-template-columns: 2.5rem 1fr;
  gap: 0.35rem 0.5rem;
  margin-bottom: 0.55rem;
  align-items: start;
}
.expert-viz-grouped-month:last-child { margin-bottom: 0; }
.expert-viz-grouped-series-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.expert-viz-grouped-series-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.5rem;
  align-items: center;
}

.expert-error {
  margin: 0 1.25rem 0.5rem;
  padding: 0.65rem 0.85rem;
  border-radius: var(--radius);
  background: var(--highlight-light);
  border: 1px solid #e8b4b6;
  color: var(--highlight);
  font-size: 0.82rem;
  flex-shrink: 0;
}

.expert-form {
  display: flex;
  gap: 0.5rem;
  align-items: flex-end;
  padding: 0.85rem 1.25rem 1.25rem;
  border-top: 1px solid var(--border);
  background: var(--surface-2);
  flex-shrink: 0;
}
.expert-input {
  flex: 1;
  resize: vertical;
  min-height: 2.75rem;
  max-height: 8rem;
  font-family: var(--font);
  font-size: 0.875rem;
  line-height: 1.45;
  padding: 0.6rem 0.75rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
}
.expert-input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent-light);
}
.expert-input:disabled { opacity: 0.6; }
.expert-send {
  font-family: var(--font);
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.55rem 1rem;
  border-radius: var(--radius);
  border: none;
  background: var(--accent);
  color: white;
  cursor: pointer;
  flex-shrink: 0;
}
.expert-send:hover:not(:disabled) { background: var(--accent-dark); }
.expert-send:disabled { opacity: 0.5; cursor: wait; }

/* KPI tab */
.stage-kpi .kpi-page {
  padding: 1.25rem var(--dashboard-inset-x) 1.5rem;
}
.kpi-capital-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.kpi-grid-row3 {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.kpi-budget-pace-row .kpi-card-budget-pace {
  border-top: 3px solid var(--border-strong);
}
.kpi-card-budget-pace.budget-status--ahead {
  border-top-color: var(--budget-ahead);
  background: linear-gradient(180deg, var(--budget-ahead-bg), #fff 60%);
}
.kpi-card-budget-pace.budget-status--onpace {
  border-top-color: var(--budget-onpace);
  background: linear-gradient(180deg, var(--budget-onpace-bg), #fff 60%);
}
.kpi-card-budget-pace.budget-status--behind {
  border-top-color: var(--budget-behind);
  background: linear-gradient(180deg, var(--budget-behind-bg), #fff 60%);
}
.kpi-card-budget-pace.budget-status--lagging {
  border-top-color: var(--budget-lagging);
  background: linear-gradient(180deg, var(--budget-lagging-bg), #fff 60%);
}
.kpi-card-pct {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.kpi-card-budget-pace .budget-status-pill {
  margin: 0.35rem 0 0;
  align-self: flex-start;
}
.kpi-capital-rest {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}
@media (max-width: 900px) {
  .kpi-grid-row3,
  .kpi-capital-rest {
    grid-template-columns: 1fr !important;
  }
}
.kpi-page {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.kpi-section {
  margin: 0;
}
.kpi-metrics-wrap {
  padding: 0.85rem 0.9rem;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.kpi-section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin: 0 0 0.65rem;
  padding: 0 0.15rem;
}
.kpi-section-title {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--highlight);
}
.kpi-section-asof {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}
.kpi-section-lead {
  margin: -0.35rem 0 0.75rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.45;
}
.kpi-section-lead-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem 0.85rem;
  margin: -0.35rem 0 0.75rem;
}
.kpi-section-lead-row .kpi-section-lead {
  margin: 0;
  flex: 1 1 12rem;
  min-width: 0;
}
.kpi-day-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  flex: 0 0 auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 0.1rem 0.15rem;
}
.kpi-day-btn {
  font-family: var(--font);
  font-size: 0.85rem;
  font-weight: 600;
  line-height: 1;
  width: 1.55rem;
  height: 1.55rem;
  border: none;
  border-radius: calc(var(--radius) - 1px);
  background: transparent;
  color: var(--text);
  cursor: pointer;
  padding: 0;
}
.kpi-day-btn:hover:not(:disabled) {
  background: var(--surface-2);
}
.kpi-day-btn:disabled {
  opacity: 0.35;
  cursor: default;
}
.kpi-day-date {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin: 0 0.1rem;
  cursor: pointer;
}
.kpi-day-date-label {
  font-size: 0.68rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  padding: 0.2rem 0.35rem;
  white-space: nowrap;
}
.kpi-day-date-input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  margin: 0;
  z-index: 1;
  /* Make the whole control open the native calendar (not only a tiny icon). */
  color-scheme: light;
}
.kpi-day-date-input::-webkit-calendar-picker-indicator {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: pointer;
}
.kpi-day-today {
  font-family: var(--font);
  font-size: 0.62rem;
  font-weight: 600;
  border: none;
  background: transparent;
  color: var(--highlight);
  cursor: pointer;
  padding: 0.15rem 0.4rem 0.15rem 0.2rem;
  white-space: nowrap;
}
.kpi-day-today:hover {
  text-decoration: underline;
}
.kpi-quarter-switch {
  flex: 0 0 auto;
}
.kpi-quarter-switch .kpi-period-btn {
  padding: 0.22rem 0.55rem;
  font-size: 0.68rem;
}
.kpi-daily-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.kpi-daily-top {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(200px, 0.85fr);
  gap: 0.45rem 0.5rem;
  align-items: stretch;
  min-height: 13.5rem;
}
.kpi-daily-left {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: minmax(6.15rem, 1fr) minmax(6.15rem, 1fr);
  gap: 0.45rem 0.5rem;
  min-height: 12.75rem;
  height: 100%;
}
.kpi-daily-left > .kpi-daily-cell {
  padding: 0.65rem 0.7rem 0.6rem;
  gap: 0.15rem;
  min-height: 6.15rem;
  justify-content: center;
}
.kpi-daily-left > .kpi-daily-cell .kpi-card-label {
  font-size: 0.62rem;
  line-height: 1.25;
}
.kpi-daily-left > .kpi-daily-cell .kpi-card-value {
  font-size: 1.38rem;
}
.kpi-daily-left > .kpi-daily-cell .kpi-card-detail {
  font-size: 0.58rem;
  margin-top: 0.05rem;
}
.kpi-daily-net-profit {
  border-color: rgba(33, 132, 155, 0.35);
  background: var(--accent-light);
  box-shadow: inset 0 0 0 1px rgba(33, 132, 155, 0.08);
  padding: 1.05rem 1.15rem 1rem;
  justify-content: flex-start;
  align-self: stretch;
  min-height: 100%;
  height: 100%;
}
.kpi-daily-net-profit .kpi-card-value {
  font-size: 2rem;
  margin: 0.15rem 0 0.25rem;
}
.kpi-daily-net-profit .kpi-card-detail {
  font-size: 0.62rem;
  margin-bottom: 0.15rem;
}
.kpi-daily-net-profit .kpi-components {
  margin-top: auto;
  padding-top: 0.45rem;
  font-size: 0.64rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.2rem;
}
.kpi-daily-net-profit .kpi-components li {
  padding: 0.18rem 0;
}
.kpi-daily-buffer {
  width: fit-content;
  max-width: min(100%, 22.5rem);
  min-width: min(100%, 17.5rem);
  align-self: flex-start;
}
.kpi-daily-buffer .kpi-card-value {
  font-size: 1.28rem;
}
.kpi-daily-buffer .kpi-card-value:has(.kpi-card-return-pct) {
  gap: 0.12rem 0.28rem;
}
.kpi-quarterly-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-template-rows: minmax(6.15rem, auto) minmax(6.15rem, auto);
  gap: 0.45rem 0.5rem;
  align-items: stretch;
}
.kpi-quarterly-profit-detail {
  margin-top: 0.35rem;
}
.kpi-profit-detail-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  margin: 0;
  padding: 0.2rem 0.1rem;
  border: none;
  background: transparent;
  font-family: var(--font);
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0.01em;
  cursor: pointer;
  line-height: 1.3;
}
.kpi-profit-detail-toggle:hover {
  color: var(--accent-dark);
}
.kpi-profit-detail-toggle:focus-visible {
  outline: 2px solid rgba(33, 132, 155, 0.55);
  outline-offset: 2px;
  border-radius: 2px;
}
.kpi-profit-detail-chevron::before {
  content: "▾";
  display: inline-block;
  font-size: 0.62rem;
  line-height: 1;
  color: var(--muted);
  transition: transform 0.15s ease;
}
.kpi-quarterly-profit-detail.is-expanded .kpi-profit-detail-chevron::before {
  transform: rotate(-180deg);
}
/* display:grid on the row beats UA [hidden] — gate visibility on .is-expanded */
.kpi-quarterly-profit-detail:not(.is-expanded) .kpi-quarterly-profit-row,
.kpi-quarterly-profit-row[hidden] {
  display: none !important;
}
.kpi-quarterly-profit-detail.is-expanded .kpi-quarterly-profit-row {
  display: grid;
  margin-top: 0.35rem;
}
.kpi-quarterly-grid > .kpi-quarterly-cell {
  padding: 0.65rem 0.7rem 0.6rem;
  gap: 0.15rem;
  min-height: 6.15rem;
  justify-content: center;
}
.kpi-quarterly-grid > .kpi-quarterly-cell .kpi-card-label {
  font-size: 0.62rem;
  line-height: 1.25;
}
.kpi-quarterly-grid > .kpi-quarterly-cell .kpi-card-value {
  font-size: 1.38rem;
}
.kpi-quarterly-grid > .kpi-quarterly-cell .kpi-card-detail {
  font-size: 0.58rem;
  margin-top: 0.05rem;
}
.kpi-quarterly-grid > .kpi-quarterly-profit-cell .kpi-card-label {
  font-size: 0.58rem;
}
.kpi-quarterly-grid > .kpi-quarterly-profit-cell .kpi-card-value {
  font-size: 1.18rem;
}
.kpi-quarterly-grid > .kpi-quarterly-profit-cell .kpi-card-detail {
  font-size: 0.55rem;
}
.kpi-quarterly-net {
  grid-column: 4;
  grid-row: 1 / span 2;
}
.kpi-quarterly-profit-row {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.45rem 0.5rem;
  align-items: start; /* content-size cards — don't stretch mix to tallest sibling */
}
.kpi-quarterly-profit-row > .kpi-quarterly-profit-cell {
  padding: 0.65rem 0.7rem 0.6rem;
  gap: 0.15rem;
  min-height: 6.15rem;
  justify-content: center;
  border-color: rgba(33, 132, 155, 0.35);
  background: var(--accent-light);
  box-shadow: inset 0 0 0 1px rgba(33, 132, 155, 0.08);
}
.kpi-quarterly-profit-row > .kpi-quarterly-profit-cell .kpi-card-label {
  font-size: 0.58rem;
  line-height: 1.25;
}
.kpi-quarterly-profit-row > .kpi-quarterly-profit-cell .kpi-card-value {
  font-size: 1.18rem;
}
.kpi-quarterly-profit-row > .kpi-quarterly-profit-cell .kpi-card-detail {
  font-size: 0.55rem;
  margin-top: 0.05rem;
}
/* Profit mix — content-sized card, flush left with title/footer */
.kpi-quarterly-grid > .kpi-quarterly-mix-cell,
.kpi-quarterly-profit-row > .kpi-quarterly-mix-cell {
  align-self: start;
  min-height: 0;
  justify-content: flex-start;
  gap: 0.32rem;
}
.kpi-card-value.kpi-card-value-mix {
  display: block;
  font-size: inherit;
  font-weight: 500;
  letter-spacing: 0;
  line-height: 1.3;
  color: var(--text);
  width: 100%;
  margin: 0;
}
.kpi-quarterly-grid > .kpi-quarterly-profit-cell .kpi-card-value.kpi-card-value-mix,
.kpi-quarterly-profit-row > .kpi-quarterly-profit-cell .kpi-card-value.kpi-card-value-mix {
  font-size: inherit;
}
.kpi-mix-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 0.65rem;
  row-gap: 0.3rem;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-size: 0.86rem;
  line-height: 1.3;
  color: var(--text);
  text-align: left;
}
.kpi-mix-row {
  display: contents;
}
.kpi-mix-label {
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-align: left;
  line-height: 1.3;
  min-width: 0;
}
.kpi-mix-pct {
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--text);
  text-align: right;
  font-variant-numeric: tabular-nums;
  line-height: 1.3;
  white-space: nowrap;
}
/* Mix % is composition, not pace — no red/green emphasis */
.kpi-mix-pct.kpi-negative {
  color: var(--text);
}
.kpi-quarterly-grid > .kpi-quarterly-mix-cell .kpi-card-detail,
.kpi-quarterly-profit-row > .kpi-quarterly-mix-cell .kpi-card-detail {
  font-size: 0.58rem;
  font-weight: 500;
  color: var(--text-secondary);
  margin-top: 0.05rem;
  padding-top: 0;
  line-height: 1.35;
}
.kpi-card-roe {
  margin: 0.28rem 0 0;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--text-secondary);
  line-height: 1.4;
}
.kpi-roe-pct {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.kpi-roe-pct.kpi-negative {
  color: var(--highlight);
}
.kpi-roe-note {
  color: var(--muted);
}
.kpi-roe-below {
  margin: 0.08rem 0 0;
  font-size: 0.52rem;
  color: var(--muted);
  line-height: 1.3;
  font-style: italic;
}
@media (max-width: 900px) {
  .kpi-daily-top {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .kpi-daily-left {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto;
    min-height: 0;
    height: auto;
  }
  .kpi-daily-left > .kpi-daily-cell {
    min-height: 4.25rem;
  }
  .kpi-daily-net-profit .kpi-components {
    flex: 0;
    margin-top: 0.35rem;
  }
  .kpi-quarterly-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto;
  }
  .kpi-quarterly-net {
    grid-column: 1 / -1;
    grid-row: auto;
  }
  .kpi-quarterly-profit-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 520px) {
  .kpi-daily-left {
    grid-template-columns: 1fr;
  }
  .kpi-quarterly-grid {
    grid-template-columns: 1fr;
  }
  .kpi-quarterly-profit-row {
    grid-template-columns: 1fr;
  }
}
.kpi-period-toggle {
  display: inline-flex;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--surface);
}
.kpi-period-btn {
  font-family: var(--font);
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.3rem 0.7rem;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}
.kpi-period-btn.is-active {
  background: var(--highlight-light);
  color: var(--highlight);
}
.kpi-period-btn:hover:not(.is-active) { color: var(--text-secondary); }
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (max-width: 1100px) {
  .kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
#section-kpi-capital .kpi-card-span-2 {
  grid-column: span 1;
}
.kpi-card {
  background: #fff;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 0.8rem 0.9rem 0.75rem;
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.kpi-card.kpi-card-compact {
  padding: 0.7rem 0.8rem 0.65rem;
}
.kpi-card.kpi-card-headline {
  border-color: rgba(33, 132, 155, 0.35);
  background: var(--accent-light);
  box-shadow: inset 0 0 0 1px rgba(33, 132, 155, 0.08);
}
.kpi-card.kpi-card-featured {
  border-color: rgba(197, 73, 78, 0.28);
  background: var(--tab-metrics-light);
  box-shadow: inset 0 0 0 1px rgba(197, 73, 78, 0.06);
}
/* Margin call buffer alerts — card-only, not page theme */
.kpi-card.kpi-card-mcall-warn {
  border-color: rgba(145, 55, 95, 0.4);
  background: #f3e4ec;
  box-shadow: inset 0 0 0 1px rgba(145, 55, 95, 0.1);
}
.kpi-card.kpi-card-mcall-warn .kpi-card-value {
  color: #7a2d52;
}
.kpi-card.kpi-card-mcall-danger {
  border-color: rgba(180, 28, 35, 0.55);
  background: #f8d6d8;
  box-shadow: inset 0 0 0 1px rgba(180, 28, 35, 0.14);
}
.kpi-card.kpi-card-mcall-danger .kpi-card-value {
  color: #9b1c23;
}
/* Daily budget-pace: status tint beats headline/featured/net-profit blue defaults */
.kpi-card.kpi-card-budget-pace.budget-status--ahead {
  border-top: 3px solid var(--budget-ahead);
  border-color: var(--border-strong);
  background: linear-gradient(180deg, var(--budget-ahead-bg), #fff 60%);
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-card.kpi-card-budget-pace.budget-status--onpace {
  border-top: 3px solid var(--budget-onpace);
  border-color: var(--border-strong);
  background: linear-gradient(180deg, var(--budget-onpace-bg), #fff 60%);
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-card.kpi-card-budget-pace.budget-status--behind {
  border-top: 3px solid var(--budget-behind);
  border-color: var(--border-strong);
  background: linear-gradient(180deg, var(--budget-behind-bg), #fff 60%);
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-card.kpi-card-budget-pace.budget-status--lagging {
  border-top: 3px solid var(--budget-lagging);
  border-color: var(--border-strong);
  background: linear-gradient(180deg, var(--budget-lagging-bg), #fff 60%);
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-card.kpi-card-compact .kpi-card-value { font-size: 1.35rem; }
.kpi-card-label {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--text-secondary);
  line-height: 1.3;
}
.kpi-card-expandable {
  cursor: pointer;
}
.kpi-card-expandable:focus-visible {
  outline: 2px solid rgba(33, 132, 155, 0.55);
  outline-offset: 2px;
}
.kpi-card-expandable .kpi-card-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}
.kpi-residual-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  flex-shrink: 0;
  font-size: 0.58rem;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.kpi-residual-chevron::before {
  content: "▾";
  display: inline-block;
  font-size: 0.65rem;
  line-height: 1;
  transition: transform 0.15s ease;
}
.kpi-card-expandable.is-expanded .kpi-residual-chevron::before {
  transform: rotate(-180deg);
}
.kpi-card-expandable .kpi-residual-details {
  display: none;
}
.kpi-card-expandable.is-expanded .kpi-residual-details {
  display: block;
}
.kpi-residual-after-cos {
  font-size: 0.72em;
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0;
}
.kpi-residual-cos-note {
  margin: 0.1rem 0 0;
  font-size: 0.58rem;
  font-weight: 500;
  color: var(--muted);
  line-height: 1.25;
}
.kpi-residual-uk-note {
  margin: 0.05rem 0 0;
  font-size: 0.58rem;
  font-weight: 500;
  color: var(--muted);
  line-height: 1.25;
}
.kpi-components.kpi-residual-segments {
  margin-top: 0.2rem;
  padding-top: 0.25rem;
  border-top-style: dashed;
}
.kpi-components .kpi-residual-seg span:first-child {
  font-weight: 600;
  color: var(--text-secondary);
}
.kpi-card-value {
  margin: 0;
  font-size: 1.55rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.kpi-card-value:has(.kpi-card-return-pct) {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0.2rem 0.35rem;
  width: auto;
  max-width: 100%;
}
.kpi-card-value-main {
  font-weight: 700;
}
.kpi-card-return-sep {
  font-size: 0.72em;
  font-weight: 500;
  color: var(--muted);
  line-height: 1;
  user-select: none;
}
.kpi-card-return-pct {
  font-size: 1em;
  font-weight: 550;
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  flex-shrink: 0;
}
.kpi-card-return-pct.kpi-negative {
  color: var(--highlight);
}
.kpi-unit {
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--muted);
  white-space: nowrap;
  flex-shrink: 0;
}
.kpi-val-usd {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 0.5rem;
  max-width: 100%;
}
.kpi-val-num {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.kpi-seg-table .kpi-val-usd {
  gap: 0.55rem;
}
.kpi-card-value .kpi-val-usd {
  gap: 0.4rem;
  flex-wrap: wrap;
}
.kpi-card-value .kpi-unit,
.kpi-bar-val .kpi-unit {
  margin-left: 0;
}
.kpi-card-value.kpi-negative { color: var(--highlight); }
.kpi-card-detail {
  margin: 0;
  font-size: 0.65rem;
  color: var(--muted);
  line-height: 1.35;
}
.kpi-card:has(.kpi-card-burnout) {
  /* Keep burn-out callout inside the card border */
  padding-bottom: 0.95rem;
  gap: 0.15rem;
}
.kpi-card-burnout {
  margin: 0.15rem 0 0;
  padding: 0.3rem 0.45rem;
  border-radius: 6px;
  background: rgba(33, 132, 155, 0.12);
  border: 1px solid rgba(33, 132, 155, 0.28);
  color: var(--accent, #21849b);
  font-size: 0.68rem;
  font-weight: 650;
  line-height: 1.3;
  flex-shrink: 0;
}
.kpi-components {
  margin: 0.35rem 0 0;
  padding: 0.35rem 0 0;
  list-style: none;
  font-size: 0.62rem;
  color: var(--muted);
  border-top: 1px solid var(--border);
}
.kpi-components li {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.1rem 0;
}
.kpi-components .kpi-comp-val {
  font-weight: 600;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}
.kpi-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
@media (max-width: 800px) {
  .kpi-split { grid-template-columns: 1fr; }
}
.kpi-panel {
  background: #fff;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 0.85rem 0.95rem;
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-panel-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.55rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px solid var(--border);
}
.kpi-panel-total-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.kpi-panel-total-value {
  font-size: 1.45rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.kpi-seg-table {
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  font-size: 0.75rem;
  table-layout: fixed;
}
.kpi-seg-table th,
.kpi-seg-table td {
  padding: 0.35rem 0.35rem;
  text-align: right;
  border-bottom: 1px solid var(--border);
  vertical-align: baseline;
}
.kpi-seg-table th:first-child,
.kpi-seg-table td:first-child {
  text-align: left;
  min-width: 8rem;
}
.kpi-seg-table th.col-num,
.kpi-seg-table td.col-num {
  min-width: var(--table-data-col);
}
.kpi-seg-table th {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
  white-space: nowrap;
}
.kpi-seg-table tr:last-child td { border-bottom: none; }
.kpi-seg-table tfoot .kpi-total-row td {
  border-top: 2px solid var(--border-strong);
  border-bottom: none;
  padding-top: 0.55rem;
  font-weight: 700;
  font-size: 0.82rem;
  color: var(--text);
}
.kpi-seg-table tfoot .kpi-total-row td:not(:first-child) {
  font-size: 1.05rem;
}
.kpi-profit-cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (max-width: 900px) {
  .kpi-profit-cards { grid-template-columns: repeat(2, 1fr); }
}
.kpi-profit-foot {
  margin: 0.5rem 0 0;
  font-size: 0.68rem;
  color: var(--muted);
}
.kpi-chart-block {
  background: #fff;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 0.85rem 1rem;
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
}
.kpi-chart-title {
  margin: 0 0 0.75rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--highlight);
}
.kpi-bar-chart { display: flex; flex-direction: column; gap: 0.45rem; }
.kpi-bar-row {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr);
  align-items: center;
  gap: 0.5rem;
  font-size: 0.72rem;
}
.kpi-bar-label { color: var(--text-secondary); font-weight: 600; }
.kpi-bar-body {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-width: 0;
}
.kpi-bar-track {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  height: 0.55rem;
  background: var(--surface-2);
  border-radius: 2px;
  overflow: hidden;
}
.kpi-bar-track-signed {
  overflow: visible;
}
.kpi-bar-zero {
  position: absolute;
  top: -2px;
  bottom: -2px;
  width: 1px;
  margin-left: -0.5px;
  background: var(--text-secondary, #6b7280);
  opacity: 0.55;
  z-index: 1;
  pointer-events: none;
}
.kpi-bar-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  max-width: 100%;
  background: var(--highlight);
  border-radius: 2px;
  min-width: 0;
  box-sizing: border-box;
}
.kpi-bar-fill-pos {
  background: var(--positive, #0d6b4c);
}
.kpi-bar-fill-neg {
  background: var(--negative, #b42318);
}
.kpi-vbar-chart {
  width: 100%;
}
.kpi-vbar-plot {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.55rem 0.65rem;
  align-items: end;
  padding: 0.15rem 0.1rem 0;
}
.kpi-vbar-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  min-width: 0;
}
.kpi-vbar-val {
  flex: 0 0 auto;
  min-height: 1.6rem;
  font-size: 0.68rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  text-align: center;
  line-height: 1.15;
  max-width: 100%;
  overflow-wrap: anywhere;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.kpi-vbar-track {
  position: relative;
  flex: 0 0 auto;
  width: 58%;
  max-width: 2.4rem;
  height: 11rem;
  background: var(--surface-2);
  border-radius: 2px;
  overflow: hidden;
}
.kpi-vbar-chart-signed .kpi-vbar-track {
  overflow: visible;
}
.kpi-vbar-zero {
  position: absolute;
  left: -15%;
  right: -15%;
  height: 1px;
  background: var(--text-secondary, #6b7280);
  opacity: 0.55;
  z-index: 1;
  pointer-events: none;
}
.kpi-vbar-fill {
  position: absolute;
  left: 0;
  width: 100%;
  background: var(--highlight);
  border-radius: 2px 2px 0 0;
  box-sizing: border-box;
  min-height: 0;
}
.kpi-vbar-fill-pos {
  background: var(--positive, #0d6b4c);
  border-radius: 2px 2px 0 0;
}
.kpi-vbar-fill-neg {
  background: var(--negative, #b42318);
  border-radius: 0 0 2px 2px;
}
.kpi-vbar-label {
  flex: 0 0 auto;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--text-secondary);
  text-align: center;
  white-space: nowrap;
}
.cash-traj-block .kpi-chart-title {
  margin-bottom: 0.55rem;
}
.cash-traj-block {
  max-width: 36rem;
  margin-left: auto;
  margin-right: auto;
}
.cash-traj-chart {
  width: 100%;
  /* Head = col pad-top + value label + gap before track. Keep in sync with .cash-traj-col. */
  --cash-traj-col-pad-top: 0.15rem;
  --cash-traj-val-h: 1.5rem;
  --cash-traj-val-gap: 1.15rem;
  --cash-traj-track-h: 11rem;
  --cash-traj-head: calc(
    var(--cash-traj-col-pad-top) + var(--cash-traj-val-h) + var(--cash-traj-val-gap)
  );
}
.cash-traj-frame {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr);
  gap: 0 0.35rem;
  align-items: start;
}
.cash-traj-y-axis {
  position: relative;
  height: var(--cash-traj-track-h);
  margin-top: var(--cash-traj-head);
  border-right: 1px solid var(--border, #d8dde3);
}
.cash-traj-y-tick {
  position: absolute;
  right: 0.35rem;
  transform: translateY(50%);
  font-size: 0.62rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary, #6b7280);
  line-height: 1;
  white-space: nowrap;
  pointer-events: none;
}
.cash-traj-y-tick.is-zero {
  color: var(--text, #1f2937);
  font-weight: 700;
}
.cash-traj-plot {
  position: relative;
  display: grid;
  /* No column-gap: polyline X uses (i+0.5)/n column centers. */
  grid-template-columns: repeat(var(--cash-traj-cols, 6), minmax(0, 1fr));
  gap: 0;
  align-items: end;
  padding: 0;
  max-width: 34rem;
  margin: 0 auto;
}
.cash-traj-line-svg {
  position: absolute;
  left: 0;
  right: 0;
  top: var(--cash-traj-head);
  height: var(--cash-traj-track-h);
  width: 100%;
  pointer-events: none;
  /* Under columns/dots so the stroke meets marker centers through the hollow rings. */
  z-index: 1;
  overflow: visible;
}
.cash-traj-line {
  stroke: var(--accent, #21849b);
  stroke-width: 2.25;
  stroke-linejoin: round;
  stroke-linecap: round;
  opacity: 0.95;
}
.cash-traj-plot-band {
  position: absolute;
  left: 0;
  right: 0;
  top: var(--cash-traj-head);
  height: var(--cash-traj-track-h);
  pointer-events: none;
  z-index: 1;
}
.cash-traj-zero-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--text-secondary, #6b7280);
  opacity: 0.45;
}
.cash-traj-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  min-width: 0;
  position: relative;
  z-index: 2;
  box-sizing: border-box;
  margin: 0;
  padding: var(--cash-traj-col-pad-top) 0.2rem 0.2rem;
  /* Outline (not border) so active ring does not shift track vs SVG by 1px. */
  border: none;
  border-radius: 4px;
  background: transparent;
  cursor: pointer;
  font: inherit;
  color: inherit;
  appearance: none;
  -webkit-appearance: none;
}
.cash-traj-col:hover,
.cash-traj-col:focus-visible {
  background: var(--surface-2, #f3f4f6);
  outline: none;
}
.cash-traj-col.is-active {
  outline: 1px solid var(--accent, #21849b);
  outline-offset: 0;
  background: rgba(33, 132, 155, 0.06);
}
.cash-traj-close-val {
  flex: 0 0 auto;
  box-sizing: border-box;
  height: var(--cash-traj-val-h);
  min-height: var(--cash-traj-val-h);
  margin-bottom: var(--cash-traj-val-gap);
  font-size: 0.66rem;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  color: var(--accent-dark, #1a6a7d);
  text-align: center;
  line-height: 1.15;
  max-width: 100%;
  overflow-wrap: anywhere;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.cash-traj-track {
  position: relative;
  flex: 0 0 auto;
  /* Full column width so track center == column center == polyline X */
  width: 100%;
  max-width: none;
  min-width: 0;
  height: var(--cash-traj-track-h);
  background: transparent;
  border-radius: 0;
  overflow: visible;
}
.cash-traj-chart-signed .cash-traj-track {
  overflow: visible;
}
.cash-traj-dot {
  position: absolute;
  left: 50%;
  width: 0.65rem;
  height: 0.65rem;
  margin-left: -0.325rem;
  margin-bottom: -0.325rem;
  border-radius: 50%;
  /* Transparent fill so the polyline reads through marker centers. */
  background: transparent;
  border: 2px solid var(--accent, #21849b);
  box-sizing: border-box;
  z-index: 3;
  pointer-events: none;
  box-shadow: none;
}
.cash-traj-label {
  flex: 0 0 auto;
  margin-top: 0.35rem;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--text-secondary);
  text-align: center;
  white-space: nowrap;
}
.cash-sig-movements {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  max-height: 22rem;
  margin: 0;
  padding: 0 0 0 0.9rem;
  border-left: 1px solid var(--border);
}
.cash-sig-title {
  margin: 0 0 0.25rem;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
  flex: 0 0 auto;
}
.cash-sig-lead {
  margin: 0 0 0.55rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.4;
  flex: 0 0 auto;
}
.cash-sig-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding-right: 0.15rem;
}
.cash-sig-prompt {
  margin: 0.35rem 0 0;
  padding: 0.65rem 0.7rem;
  border: 1px dashed var(--border);
  border-radius: 4px;
  background: var(--surface-2, #f7f8fa);
  font-size: 0.74rem;
  color: var(--muted);
  line-height: 1.4;
}
.cash-sig-month {
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--surface);
}
.cash-sig-month.is-active {
  border-color: var(--accent, #21849b);
  box-shadow: inset 3px 0 0 var(--accent, #21849b);
}
.cash-sig-month-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.35rem;
}
.cash-sig-month-label {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--text);
}
.cash-sig-month-net {
  font-size: 0.8rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.cash-sig-drivers {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.28rem;
}
.cash-sig-drivers li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.75rem;
  align-items: baseline;
  font-size: 0.74rem;
}
.cash-sig-driver-label {
  color: var(--text-secondary);
  min-width: 0;
}
.cash-sig-driver-amt {
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.cash-sig-residual .cash-sig-driver-label {
  font-style: italic;
  color: var(--muted);
}
.cash-sig-empty {
  margin: 0;
  font-size: 0.72rem;
  color: var(--muted);
}
.cash-sig-footnote {
  flex: 0 0 auto;
  margin: 0.65rem 0 0;
  padding-top: 0.45rem;
  border-top: 1px solid var(--border, #e5e7eb);
  font-size: 0.65rem;
  line-height: 1.35;
  color: var(--muted, #9ca3af);
}
.cash-chart-section {
  margin: 0 0 1.25rem;
  padding: 0.9rem 1rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
}
.cash-forecast-charts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}
.cash-forecast-charts-monthly {
  grid-template-columns: minmax(0, 1.45fr) minmax(14.5rem, 19rem);
  gap: 0.75rem 1rem;
  align-items: stretch;
}
.cash-forecast-charts-monthly .cash-traj-block {
  max-width: none;
  margin: 0;
  min-width: 0;
}
.cash-forecast-charts-monthly .cash-traj-plot {
  max-width: none;
  margin: 0;
}
.cash-forecast-charts-monthly .cash-traj-frame {
  max-width: none;
}
@media (max-width: 900px) {
  .cash-forecast-charts,
  .cash-forecast-charts-monthly {
    grid-template-columns: 1fr;
  }
  .cash-sig-movements {
    max-height: 16rem;
    padding: 0.85rem 0 0;
    border-left: none;
    border-top: 1px solid var(--border);
  }
}
.kpi-bar-val {
  flex: 0 0 auto;
  text-align: right;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  white-space: nowrap;
}
.kpi-notes {
  margin: 1rem 0 0;
  padding: 0.55rem 0.9rem;
  background: var(--highlight-light);
  border: 1px solid #ecd4d5;
  border-radius: var(--radius);
  font-size: 0.72rem;
  color: var(--text-secondary);
  line-height: 1.45;
}
.kpi-notes.is-collapsed {
  padding-bottom: 0.55rem;
}
.kpi-notes-toggle {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
}
.kpi-notes-toggle .outlook-block-title {
  margin: 0;
  padding: 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.kpi-notes.is-collapsed .kpi-notes-toggle .outlook-block-title::before {
  content: "▸ ";
  color: var(--muted);
  font-size: 0.75rem;
}
.kpi-notes:not(.is-collapsed) .kpi-notes-toggle .outlook-block-title::before {
  content: "▾ ";
  color: var(--accent);
  font-size: 0.75rem;
}
.kpi-notes-toggle:hover .outlook-block-title {
  color: var(--accent);
}
.kpi-notes-body {
  margin-top: 0.35rem;
  padding-top: 0.35rem;
  border-top: 1px solid #ecd4d5;
}
.kpi-notes-body[hidden] {
  display: none;
}
.kpi-notes ul {
  margin: 0;
  padding-left: 1rem;
}
.kpi-notes li + li { margin-top: 0.25rem; }
#section-kpi-liquidity .kpi-grid {
  grid-template-columns: repeat(3, minmax(8.5rem, 1fr));
  max-width: 42rem;
}
.kpi-card-date {
  margin: 0.15rem 0 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ink-secondary, #5c4a52);
}

/* Treasury tab */
.stage-treasury .section-header { margin-bottom: 1rem; }
.treasury-liquidity-panel,
.treasury-order-panel,
.treasury-breakdown-panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem var(--dashboard-inset-x) 1.1rem;
  margin-bottom: 1.25rem;
  box-shadow: var(--shadow-sm);
}
.treasury-breakdown-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  align-items: stretch;
  min-height: 18rem;
}
.treasury-breakdown-chart {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 1rem;
  min-height: 18rem;
  padding: 0.75rem 0;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.treasury-pie-wrap {
  width: 100%;
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 10rem;
}
.treasury-pie-chart {
  display: block;
  width: 100%;
  max-width: 22rem;
  height: auto;
  aspect-ratio: 1;
  margin: 0 auto;
}
.treasury-pie-empty-label {
  font-size: 0.78rem;
  fill: var(--muted);
  font-family: var(--font);
}
.treasury-pie-total-disc {
  fill: #fff;
  stroke: var(--border);
  stroke-width: 1;
}
.treasury-pie-total-label {
  font-size: 7px;
  font-weight: 600;
  fill: var(--muted);
  font-family: var(--font);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.treasury-pie-total-value {
  font-size: 13px;
  font-weight: 700;
  fill: var(--text);
  font-family: var(--font);
  font-variant-numeric: tabular-nums;
}
.treasury-pie-total-unit {
  font-size: 6.5px;
  font-weight: 600;
  fill: var(--muted);
  font-family: var(--font);
}
.treasury-pie-legend {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.treasury-pie-legend-item {
  display: grid;
  grid-template-columns: 0.75rem minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 0.45rem 0.65rem;
  font-size: 0.76rem;
  font-variant-numeric: tabular-nums;
}
.treasury-pie-swatch {
  width: 0.75rem;
  height: 0.75rem;
  border-radius: 2px;
  border: 1px solid rgba(33, 132, 155, 0.12);
  align-self: center;
}
.treasury-pie-legend-label {
  font-weight: 600;
  color: var(--text-secondary);
  line-height: 1.25;
}
.treasury-pie-legend-value {
  font-weight: 700;
  color: var(--text);
  text-align: right;
  white-space: nowrap;
  font-size: 0.74rem;
}
.treasury-pie-legend-pct {
  font-weight: 600;
  color: var(--muted);
  font-size: 0.68rem;
  margin-left: 0.25rem;
}
.treasury-liquidity-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 0.65rem;
  min-height: 18rem;
}
.treasury-liquidity-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: #fff;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 0.85rem 0.95rem;
  box-shadow: 0 1px 2px rgba(33, 38, 45, 0.05);
  min-height: 0;
}
.treasury-liquidity-card.is-total {
  border-color: rgba(33, 132, 155, 0.35);
  background: var(--accent-light);
}
.treasury-liquidity-card.is-outflow {
  border-color: rgba(197, 73, 78, 0.28);
  background: var(--highlight-light);
}
.treasury-liquidity-label {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--text-secondary);
  line-height: 1.3;
}
.treasury-liquidity-value {
  margin: 0.35rem 0 0;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.treasury-liquidity-card.is-outflow .treasury-liquidity-value {
  color: var(--highlight);
}
.treasury-liquidity-date {
  margin: 0.2rem 0 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-secondary, #5c4a52);
}
.treasury-liquidity-detail {
  margin: 0.2rem 0 0;
  font-size: 0.62rem;
  color: var(--muted);
  line-height: 1.35;
}
@media (max-width: 820px) {
  .treasury-breakdown-body {
    grid-template-columns: 1fr;
  }
  .treasury-breakdown-chart,
  .treasury-liquidity-cards {
    min-height: 0;
  }
  .treasury-liquidity-cards {
    grid-template-rows: auto;
  }
}
.treasury-panel-title {
  margin: 0 0 0.35rem;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--accent-dark);
}
.treasury-panel-lead {
  margin: 0 0 0.85rem;
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.45;
}
.treasury-panel-lead a { color: var(--accent); }
.treasury-balance-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.25rem;
  align-items: flex-start;
}
.treasury-balance-field {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.25rem;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-secondary);
  flex: 0 0 auto;
}
.treasury-balance-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.treasury-balance-unit {
  font-size: 0.65rem;
  font-weight: 500;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.treasury-balance-field--liability .treasury-balance-label,
.treasury-balance-field--liability .treasury-balance-unit {
  color: var(--highlight);
}
.treasury-fund-pool-field {
  max-width: 16rem;
}
.treasury-fund-pool-override {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.15rem;
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--text-secondary);
  cursor: pointer;
}
.treasury-fund-pool-hint {
  margin: 0.15rem 0 0;
  font-size: 0.62rem;
  font-weight: 450;
  color: var(--muted);
  line-height: 1.35;
  max-width: 15rem;
}
.treasury-balance-input[readonly] {
  opacity: 0.92;
  cursor: default;
}
.treasury-balance-input-wrap {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  width: fit-content;
  max-width: 100%;
  min-width: 7.5rem;
  padding: 0.35rem 0.55rem;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  background: var(--accent-light);
}
.treasury-balance-input-wrap.is-asset {
  border-color: var(--border-strong);
  background: #fff;
}
.treasury-balance-input-wrap.is-liability {
  /* Match Cash / Fund Pool manual inputs: dashed border, white field */
  border: 1px dashed var(--border-strong);
  background: #fff;
}
.treasury-balance-input-wrap.is-manual-readonly,
.treasury-balance-input-wrap.is-asset.is-manual-readonly,
.treasury-balance-input-wrap.is-liability.is-manual-readonly {
  border-style: solid;
  background: #fff;
}
.treasury-balance-prefix,
.treasury-balance-suffix {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--muted);
  flex-shrink: 0;
}
.treasury-balance-input {
  width: 5.5rem;
  min-width: 0;
  border: none;
  background: transparent;
  font: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  outline: none;
  text-align: right;
}
.treasury-balance-actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 0.85rem;
}
.treasury-save-btn {
  border: none;
  border-radius: var(--radius);
  padding: 0.45rem 0.9rem;
  background: var(--accent);
  color: #fff;
  font: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
}
.treasury-save-btn:hover { background: var(--accent-dark); }
.treasury-save-status {
  font-size: 0.72rem;
  color: var(--muted);
}
.treasury-summary-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
  gap: 0.65rem;
  margin-bottom: 1.25rem;
  padding: 0 var(--dashboard-inset-x);
}
.treasury-summary-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.65rem 0.75rem;
}
.treasury-summary-card.is-total {
  border-color: var(--accent);
  background: var(--accent-light);
}
.treasury-summary-card.is-liability {
  border-color: #e8b4b6;
  background: var(--highlight-light);
}
.treasury-summary-card.is-liability .treasury-summary-label {
  color: var(--highlight);
}
.treasury-summary-card.is-liability .treasury-summary-value {
  color: var(--highlight);
}
.treasury-value-unit {
  font-size: 0.78em;
  font-weight: 600;
  color: var(--muted);
}
.treasury-summary-card.is-liability .treasury-value-unit {
  color: #c5494e;
  opacity: 0.85;
}
.treasury-summary-label {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.treasury-summary-value {
  margin: 0.2rem 0 0;
  font-size: 1.05rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.treasury-block {
  margin-bottom: 1.35rem;
}
.treasury-block-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.55rem;
  padding: 0 var(--dashboard-inset-x);
}
.treasury-block-title {
  margin: 0;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.treasury-block-sub {
  font-size: 0.72rem;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.stage-treasury .cell-positive {
  color: var(--positive, #0d6b4c);
  font-weight: 600;
}
.stage-treasury .cell-negative {
  color: var(--negative, #b42318);
  font-weight: 600;
}
.treasury-totals-meta {
  display: block;
  margin-top: 0.1rem;
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--muted);
}
.treasury-pm-totals {
  margin-top: 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border);
}
.treasury-pm-totals .treasury-block-title {
  color: var(--text);
  font-size: 0.95rem;
}
.treasury-exited {
  margin-bottom: 1.5rem;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid var(--border);
}
.treasury-exited .treasury-block-title {
  color: var(--text);
  font-size: 0.95rem;
}
.treasury-exited-empty {
  margin: 0 var(--dashboard-inset-x);
  padding: 0.85rem 1rem;
  font-size: 0.82rem;
  color: var(--text-secondary);
  line-height: 1.45;
  background: var(--surface-muted, rgba(0, 0, 0, 0.03));
  border: 1px dashed var(--border);
  border-radius: 6px;
}
.treasury-exited-table {
  --table-data-col: 5.75rem;
}
.treasury-exited-table thead th {
  white-space: normal;
  line-height: 1.2;
  hyphens: manual;
  overflow-wrap: break-word;
  word-break: normal;
}
.treasury-exited-table thead th.col-num {
  vertical-align: bottom;
}
.treasury-exited-table thead th .th-head-stack {
  align-items: flex-end;
  max-width: 100%;
}
.treasury-exited-table thead th .th-period {
  white-space: normal;
}
.treasury-table {
  /* PM holdings: dense base cols; fixed layout stretches to fill .table-wrap */
  --table-label-col: 10rem;
  --table-data-col: 4.75rem;
  width: 100%;
  min-width: 100%;
  table-layout: fixed;
  font-variant-numeric: tabular-nums;
}
.treasury-table th,
.treasury-table td {
  padding: 0.4rem 0.45rem;
}
.treasury-table th.col-label,
.treasury-table td.col-label {
  min-width: var(--table-label-col);
}
.treasury-table th.col-num,
.treasury-table td.col-num,
.treasury-table .col-num {
  min-width: var(--table-data-col);
}
.treasury-table th {
  font-size: 0.62rem;
  letter-spacing: 0.04em;
}
.treasury-table .col-num {
  font-size: 0.78rem;
}
.treasury-table tr.treasury-totals-main td {
  border-top: 1px solid var(--border-strong);
}
.treasury-table .col-actions {
  width: 4.5rem;
  text-align: right;
  white-space: nowrap;
  padding-right: 0.65rem;
}
.treasury-table th.col-actions {
  font-size: 0;
}
.treasury-actions {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  justify-content: flex-end;
  align-items: center;
}
.treasury-edit-btn,
.treasury-remove-btn {
  border-radius: var(--radius);
  padding: 0.2rem 0.45rem;
  font: inherit;
  font-size: 0.68rem;
  font-weight: 600;
  cursor: pointer;
  line-height: 1.2;
}
.treasury-edit-btn {
  border: 1px solid var(--border-strong);
  background: var(--surface);
  color: var(--accent-dark);
}
.treasury-edit-btn:hover:not(:disabled) {
  background: var(--accent-light);
  border-color: var(--accent);
}
.treasury-remove-btn {
  border: 1px solid #e8b4b6;
  background: var(--highlight-light);
  color: var(--highlight);
}
.treasury-remove-btn:hover:not(:disabled) {
  background: #f3d4d5;
  border-color: var(--highlight);
}
.treasury-edit-btn:disabled,
.treasury-remove-btn:disabled {
  opacity: 0.65;
  cursor: wait;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.treasury-table .treasury-ticker,
.treasury-table .treasury-origin-badge {
  display: block;
  margin-top: 0.1rem;
  margin-left: 0;
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 500;
}
.treasury-origin-badge {
  display: inline-block;
  margin-top: 0.15rem;
  margin-left: 0;
  padding: 0.05rem 0.35rem;
  font-size: 0.6rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--accent-dark);
  background: var(--accent-light);
  border-radius: 999px;
  width: fit-content;
}
.treasury-order-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  gap: 0.65rem 0.85rem;
  align-items: end;
}
.treasury-order-form label {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.treasury-order-form input,
.treasury-order-form select {
  font: inherit;
  font-size: 0.82rem;
  padding: 0.35rem 0.45rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
}
.treasury-resolved-name {
  grid-column: 1 / -1;
  margin: -0.25rem 0 0;
  min-height: 1.1rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.35;
}
.treasury-resolved-name.is-ok {
  color: var(--text-secondary);
}
.treasury-resolved-name.is-error {
  color: #b42318;
}
.treasury-resolved-meta {
  grid-column: 1 / -1;
  margin: -0.25rem 0 0;
  min-height: 1.1rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.35;
}
.treasury-resolved-meta.is-ok {
  color: var(--text-secondary);
}
.treasury-resolved-meta.is-error {
  color: #b42318;
}
.treasury-order-form .treasury-unlisted-only[hidden] {
  display: none !important;
}
.treasury-side-ticker-row {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 0.65rem 0.85rem;
}
.treasury-side-ticker-row .treasury-side-toggle {
  flex: 0 0 auto;
  align-self: end;
}
.treasury-side-ticker-row .treasury-ticker-field {
  flex: 1 1 9rem;
  min-width: 9rem;
  max-width: 16rem;
}
.treasury-side-toggle {
  display: inline-flex;
  width: fit-content;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--surface-2, #f7fafb);
}
.treasury-side-btn {
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 0.4rem 0.95rem;
  cursor: pointer;
}
.treasury-side-btn:hover {
  color: var(--accent-dark);
  background: var(--accent-light);
}
.treasury-side-btn.is-active {
  background: var(--accent);
  color: #fff;
}
.treasury-side-btn[data-side="sell"].is-active {
  background: #9a3412;
  color: #fff;
}
.treasury-order-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem;
}
.treasury-cancel-edit-btn {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.45rem 0.85rem;
  background: #fff;
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
}
.treasury-cancel-edit-btn:hover {
  border-color: var(--accent);
  color: var(--accent-dark);
  background: var(--accent-light);
}
.treasury-order-form.is-editing {
  box-shadow: inset 0 0 0 1px var(--accent);
  border-radius: var(--radius);
  padding: 0.65rem;
  background: var(--accent-light);
}
.treasury-trade-log {
  margin-top: 1.15rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border);
}
.treasury-trade-log--toolbar {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
}
.treasury-trade-log-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
  margin-bottom: 0.65rem;
}
.treasury-trade-log-title {
  margin: 0;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
}
.treasury-trade-log-summary {
  margin: 0;
  font-size: 0.78rem;
  color: var(--muted);
}
.treasury-trade-log-downloads {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.treasury-order-panel[hidden] {
  display: none !important;
}
.treasury-dividend-receivable {
  margin: 0.85rem 0 0;
  font-size: 0.95rem;
  color: var(--text);
}
.treasury-dividend-receivable strong {
  font-variant-numeric: tabular-nums;
}
.treasury-dividend-receivable-hint {
  color: var(--muted, #667085);
  font-size: 0.85rem;
  font-weight: 400;
}
.treasury-dividend-sync-status {
  margin: 0.25rem 0 0.5rem;
  min-height: 1.2em;
}
.treasury-download-btn {
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  padding: 0.35rem 0.7rem;
  background: #fff;
  color: var(--accent-dark);
  font: inherit;
  font-size: 0.72rem;
  font-weight: 600;
  cursor: pointer;
}
.treasury-download-btn:hover:not(:disabled) {
  background: var(--accent-light);
}
.treasury-download-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.treasury-trade-log-open-btn {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}
.treasury-trade-log-open-btn:hover {
  background: var(--accent-dark);
  border-color: var(--accent-dark);
  color: #fff;
}
.treasury-page-back-wrap {
  margin: 0 0 0.55rem;
}
.treasury-page-back {
  border: none;
  background: transparent;
  color: var(--accent-dark);
  font: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0;
  cursor: pointer;
}
.treasury-page-back:hover {
  text-decoration: underline;
}
.stage-treasury-trades .treasury-order-panel {
  margin-bottom: 0.25rem;
}
.treasury-trade-log-empty {
  margin: 0;
  font-size: 0.78rem;
  color: var(--muted);
}
.treasury-trade-table {
  font-size: 0.78rem;
}
.treasury-side-badge {
  display: inline-block;
  padding: 0.1rem 0.4rem;
  border-radius: 999px;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.03em;
}
.treasury-side-badge.is-buy {
  background: var(--accent-light);
  color: var(--accent-dark);
}
.treasury-side-badge.is-sell {
  background: #ffedd5;
  color: #9a3412;
}
.treasury-trade-edit-btn,
.treasury-trade-delete-btn {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.2rem 0.45rem;
  background: #fff;
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.68rem;
  font-weight: 600;
  cursor: pointer;
}
.treasury-trade-edit-btn:hover {
  border-color: var(--accent);
  color: var(--accent-dark);
  background: var(--accent-light);
}
.treasury-trade-delete-btn:hover {
  border-color: #b42318;
  color: #b42318;
  background: #fef3f2;
}
.treasury-check {
  flex-direction: row !important;
  align-items: center;
  gap: 0.4rem !important;
}
.treasury-notes {
  margin-top: 0.5rem;
  padding: 0 var(--dashboard-inset-x) 1rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.45;
}
.treasury-notes ul { margin: 0; padding-left: 1rem; }
.cash-starting-input-wrap.cell-linked,
.cash-starting-input.cell-linked {
  background: var(--accent-light);
  border-style: solid;
  cursor: default;
}
.cell-linked .cash-starting-input { cursor: default; }
.cash-starting-readonly {
  display: inline-flex;
  align-items: baseline;
  gap: 0.35rem;
  padding: 0.35rem 0.55rem;
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  background: var(--accent-light);
}
.cash-starting-readonly-value {
  font-size: 1.05rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.treasury-summary-card.is-linked {
  border-color: var(--accent);
}
.treasury-summary-link {
  color: inherit;
  text-decoration: none;
}
.treasury-summary-link:hover { text-decoration: underline; }
.treasury-summary-foot {
  margin: 0.25rem 0 0;
  font-size: 0.65rem;
  color: var(--muted);
}
.stage-pe .section-header { margin-bottom: 0; }
.stage-pe .section-title-row {
  align-items: center;
  gap: 0.75rem 1.25rem;
}
.pe-header-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  gap: 0.1rem;
  margin-left: auto;
  text-align: right;
  min-width: 0;
  max-width: min(28rem, 55%);
}
.pe-header-meta .section-subtitle {
  margin: 0;
  line-height: 1.35;
}
.pe-price-refresh {
  margin-top: 0;
  font-size: 0.72rem;
}
.pe-news-banner {
  margin: 0.45rem var(--dashboard-inset-x) 0;
  padding: 0.35rem 0.65rem 0.4rem;
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
  background: var(--surface);
}
.pe-news-banner.is-high {
  border-left-color: #c0392b;
  background: color-mix(in srgb, #c0392b 6%, var(--surface));
}
.pe-news-banner.is-medium {
  border-left-color: #d68910;
  background: color-mix(in srgb, #d68910 7%, var(--surface));
}
.pe-news-banner-head {
  margin-bottom: 0.2rem;
}
.pe-news-banner-label {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
}
.pe-news-banner-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.1rem;
}
.pe-news-banner-item {
  margin: 0;
}
.pe-news-banner-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.15rem 0.35rem;
  align-items: start;
}
.pe-news-banner-link {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr) auto;
  gap: 0.15rem 0.55rem;
  align-items: baseline;
  text-decoration: none;
  color: inherit;
  padding: 0.18rem 0.25rem;
  border-radius: calc(var(--radius) - 2px);
  line-height: 1.25;
  min-width: 0;
}
.pe-news-banner-link:hover {
  background: var(--surface-2);
}
.pe-news-banner-link--plain {
  cursor: default;
}
.pe-news-banner-dismiss {
  appearance: none;
  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 1rem;
  line-height: 1;
  width: 1.5rem;
  height: 1.5rem;
  padding: 0;
  margin-top: 0.1rem;
  border-radius: calc(var(--radius) - 2px);
  cursor: pointer;
  flex-shrink: 0;
}
.pe-news-banner-dismiss:hover {
  color: var(--text);
  background: var(--surface-2);
}
.pe-news-banner-dismiss:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
.pe-news-banner-company {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--accent-dark);
}
.pe-news-banner-headline {
  font-size: 0.8rem;
  font-weight: 600;
  line-height: 1.25;
  min-width: 0;
}
.pe-news-banner-meta {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  align-items: center;
  justify-content: flex-end;
}
.pe-news-banner-badge,
.pe-news-banner-time,
.pe-news-banner-mat {
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.pe-news-banner-badge {
  color: var(--text-secondary);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 0.05rem 0.35rem;
}
.pe-news-banner-time {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
}
.pe-news-banner-mat {
  border-radius: 999px;
  padding: 0.05rem 0.35rem;
}
.pe-news-banner-mat.is-high {
  color: #922b21;
  background: #fadbd8;
}
.pe-news-banner-mat.is-medium {
  color: #9a7b0a;
  background: #fcf3cf;
}
.pe-news-banner-mat.is-low {
  color: var(--muted);
  background: var(--surface-2);
}
@media (max-width: 720px) {
  .pe-news-banner-row {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .pe-news-banner-link {
    grid-template-columns: 1fr;
    gap: 0.1rem;
  }
  .pe-news-banner-meta {
    justify-content: flex-start;
  }
}
.pe-nav-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  padding: 1rem var(--dashboard-inset-x) 0.85rem;
}
.pe-nav-card {
  background: var(--accent-light);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  min-width: 10rem;
}
.pe-nav-label {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--accent-dark);
}
.pe-nav-value {
  margin: 0.25rem 0 0;
  font-size: 1.35rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.pe-partner-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0 var(--dashboard-inset-x) 0.85rem;
  border-bottom: 1px solid var(--border);
}
.pe-partner-tab {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  padding: 0.55rem 0.85rem;
  border: 1px solid var(--border);
  border-radius: var(--radius) var(--radius) 0 0;
  border-bottom: none;
  margin-bottom: -1px;
  background: var(--surface-2);
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
}
.pe-partner-tab.is-active {
  background: var(--surface);
  border-color: var(--border-strong);
  color: var(--accent-dark);
  box-shadow: inset 0 2px 0 var(--accent);
}
.pe-partner-tab-logo {
  width: 1.65rem;
  height: 1.65rem;
  object-fit: contain;
  flex-shrink: 0;
  border-radius: 0.2rem;
  background: #fff;
  padding: 0.1rem;
}
.pe-partner-tab-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.12rem;
  min-width: 0;
}
.pe-partner-tab-label {
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1.1;
}
.pe-partner-tab-nav {
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.pe-partner-sheets {
  padding: 0 0 1rem;
}
.pe-partner-sheet {
  display: none;
  padding: 1rem var(--dashboard-inset-x) 0;
}
.pe-partner-sheet.is-active {
  display: block;
}
.pe-partner-header {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.pe-partner-logo-wrap {
  flex-shrink: 0;
  width: 4.5rem;
  height: 4.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  padding: 0.35rem;
  box-sizing: border-box;
}
.pe-partner-sheet[data-pe-partner="wjg"] .pe-partner-logo-wrap {
  width: 7rem;
  height: 3.25rem;
}
.pe-partner-logo {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center center;
}
.pe-partner-header-text {
  min-width: 0;
}
.pe-partner-title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--accent-dark);
  line-height: 1.2;
}
.pe-partner-website-link {
  display: inline-block;
  margin-top: 0.2rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--accent-dark);
  text-decoration: underline;
  text-underline-offset: 0.12em;
  word-break: break-all;
}
.pe-partner-website-link:hover {
  color: var(--accent);
}
.pe-partner-website {
  margin: 0 0 0.85rem;
  padding: 0.55rem 0.75rem;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 0.8rem;
  line-height: 1.4;
}
.pe-partner-website-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.pe-partner-website a {
  color: var(--accent-dark);
  font-weight: 600;
  word-break: break-all;
}
.pe-sheet-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.65rem;
  margin-bottom: 1.1rem;
}
.pe-manual-callout {
  margin: 0 0 0.75rem;
  padding: 0.6rem 0.75rem;
  background: rgba(196, 74, 79, 0.06);
  border: 1px solid rgba(196, 74, 79, 0.22);
  border-radius: var(--radius);
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--text-secondary);
}
.pe-manual-callout code {
  font-size: 0.72rem;
}
.pe-auto-callout {
  margin: 0 0 0.75rem;
  padding: 0.6rem 0.75rem;
  background: rgba(26, 95, 90, 0.06);
  border: 1px solid rgba(26, 95, 90, 0.18);
  border-radius: var(--radius);
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--text-secondary);
}
.pe-auto-badge {
  display: inline-block;
  margin-right: 0.15rem;
  padding: 0.08rem 0.35rem;
  border-radius: 999px;
  background: rgba(26, 95, 90, 0.12);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--accent-dark);
  vertical-align: middle;
}
.pe-manual-badge {
  display: inline-block;
  margin-right: 0.15rem;
  padding: 0.08rem 0.35rem;
  border-radius: 999px;
  background: rgba(196, 74, 79, 0.12);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--highlight);
  vertical-align: middle;
}
.pe-metric.is-manual-input {
  border-color: rgba(196, 74, 79, 0.35);
  background: rgba(196, 74, 79, 0.04);
}
.pe-metric.is-manual-input .pe-metric-label {
  color: var(--text-secondary);
}
.pe-metric-value.cell-manual {
  color: var(--highlight);
}
.pe-metric-manual-hint {
  margin: 0.28rem 0 0;
  font-size: 0.66rem;
  color: var(--muted);
  line-height: 1.3;
}
.pe-metric-manual-hint code {
  font-size: 0.64rem;
}
.pe-metric {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.65rem 0.75rem;
  min-height: 4.5rem;
}
.pe-metric-label {
  margin: 0;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.pe-metric-value {
  margin: 0.25rem 0 0;
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  line-height: 1.2;
}
.pe-metric-detail {
  margin: 0.2rem 0 0;
  font-size: 0.68rem;
  color: var(--muted);
  line-height: 1.35;
}
.pe-margin-call-metric {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.pe-margin-call-input-wrap {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: fit-content;
  max-width: 100%;
  margin-top: 0.2rem;
  padding: 0.3rem 0.5rem;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  background: #fff;
}
.pe-margin-call-input-wrap.is-readonly {
  opacity: 0.92;
}
.pe-margin-call-input {
  width: 4.5rem;
  border: none;
  background: transparent;
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  outline: none;
}
.pe-margin-call-input[readonly] {
  cursor: default;
}
.pe-margin-call-unit {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.03em;
}
.pe-margin-call-override {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  font-size: 0.66rem;
  font-weight: 500;
  color: var(--text-secondary);
  cursor: pointer;
}
.pe-margin-call-hint {
  margin: 0.1rem 0 0;
  font-size: 0.62rem;
  font-weight: 450;
  color: var(--muted);
  line-height: 1.35;
}
.pe-earnings-metric {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.pe-earnings-input-wrap {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: fit-content;
  max-width: 100%;
  margin-top: 0.2rem;
  padding: 0.3rem 0.5rem;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  background: #fff;
}
.pe-earnings-input {
  width: 5rem;
  border: none;
  background: transparent;
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--highlight);
  outline: none;
}
.pe-earnings-unit {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.03em;
  white-space: nowrap;
}
.pe-earnings-hint {
  margin: 0.1rem 0 0;
  font-size: 0.62rem;
  font-weight: 450;
  color: var(--muted);
  line-height: 1.35;
}
.pe-sheet-block {
  margin-bottom: 1.15rem;
}
.pe-sheet-block-title {
  margin: 0 0 0.55rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}
.pe-holdings-table .pe-ticker,
.pe-holdings-table .pe-holding-note {
  display: block;
  margin-top: 0.1rem;
  margin-left: 0;
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 500;
}
.pe-synergy-summary {
  margin: 0 0 0.45rem;
  font-size: 0.82rem;
  line-height: 1.45;
  color: var(--text-secondary);
}
.pe-synergy-card {
  display: block;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background:
    linear-gradient(145deg, #ffffff 0%, var(--accent-light) 100%);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  outline: none;
  user-select: none;
}
.pe-synergy-card:hover {
  border-color: var(--accent);
  box-shadow: var(--shadow-md);
}
.pe-synergy-card:focus-visible {
  outline: 2px solid rgba(33, 132, 155, 0.55);
  outline-offset: 2px;
}
.pe-synergy-card.is-expanded {
  border-color: var(--accent);
  background: var(--surface);
}
.pe-synergy-card-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
}
.pe-synergy-card-text {
  min-width: 0;
}
.pe-synergy-card-label {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--accent-dark);
}
.pe-synergy-card-value {
  margin: 0.28rem 0 0;
  font-size: 1.35rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  line-height: 1.15;
}
.pe-synergy-card-meta {
  margin: 0.2rem 0 0;
  font-size: 0.7rem;
  color: var(--muted);
  font-weight: 500;
}
.pe-synergy-card-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  flex-shrink: 0;
  color: var(--accent-dark);
  font-size: 0.68rem;
  font-weight: 650;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.pe-synergy-chevron::before {
  content: "▾";
  display: inline-block;
  font-size: 0.7rem;
  line-height: 1;
  transition: transform 0.15s ease;
}
.pe-synergy-card.is-expanded .pe-synergy-chevron::before {
  transform: rotate(-180deg);
}
.pe-synergy-card-details {
  display: none;
  padding: 0 1rem 0.9rem;
  border-top: 1px solid var(--border);
}
.pe-synergy-card.is-expanded .pe-synergy-card-details {
  display: block;
}
.pe-synergy-card-details .pe-synergy-summary {
  margin-top: 0.65rem;
}
.pe-synergy-components {
  list-style: none;
  margin: 0 0 0.65rem;
  padding: 0;
  display: grid;
  gap: 0.35rem;
}
.pe-synergy-components li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.4rem 0.55rem;
  border-radius: var(--radius);
  background: var(--surface-2);
  font-size: 0.8rem;
}
.pe-synergy-comp-label {
  color: var(--text-secondary);
  font-weight: 600;
}
.pe-synergy-comp-value {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  text-align: right;
}
.pe-synergy-comp-units {
  margin-left: 0.35rem;
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--muted);
}
.pe-synergy-other-label {
  margin: 0 0 0.35rem;
  font-size: 0.68rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--muted);
}
.pe-synergy-collapse-hint {
  margin: 0.55rem 0 0;
  font-size: 0.66rem;
  color: var(--muted);
  text-align: center;
}
.pe-synergy-table tr.is-current td {
  background: var(--accent-light);
}
.pe-synergy-basis {
  margin: 0 0 0.55rem;
  font-size: 0.72rem;
  line-height: 1.4;
  color: var(--muted);
}
.pe-synergy-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
}
.pe-synergy-table th,
.pe-synergy-table td {
  padding: 0.35rem 0.45rem;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
  text-align: left;
}
.pe-synergy-table th {
  font-weight: 600;
  color: var(--text-secondary);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.pe-synergy-table .col-num {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.pe-synergy-breakdown {
  font-size: 0.74rem;
  color: var(--text-secondary);
  line-height: 1.45;
}
.pe-synergy-units {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 500;
}
.pe-synergy-link {
  color: var(--accent-dark);
  font-weight: 600;
}
.pe-synergy-pending {
  margin: 0;
  font-size: 0.78rem;
  color: var(--muted);
  font-style: italic;
}
.pe-empty-block {
  padding: 0.75rem 0.85rem;
  background: var(--surface-2);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.pe-empty-block p { margin: 0; }
.pe-empty-hint {
  margin-top: 0.35rem !important;
  font-size: 0.72rem;
  color: var(--muted);
}
.pe-empty-hint code {
  font-size: 0.7rem;
}
.pe-news-table {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.pe-news-row {
  display: grid;
  grid-template-columns: 5.75rem minmax(0, 1fr);
  gap: 0.75rem;
  align-items: start;
  padding: 0.55rem 0.65rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.pe-news-row--high {
  border-left: 3px solid #c0392b;
  background: color-mix(in srgb, #c0392b 6%, var(--surface));
}
.pe-news-row--new:not(.pe-news-row--high) {
  border-left: 3px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 5%, var(--surface));
}
.pe-news-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.5rem;
}
.pe-news-flags {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.28rem;
  flex-shrink: 0;
}
.pe-news-flag {
  display: inline-block;
  padding: 0.08rem 0.35rem;
  border-radius: 3px;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  line-height: 1.2;
}
.pe-news-flag--new {
  color: var(--accent-dark);
  background: var(--accent-light);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
}
.pe-news-flag--high {
  color: #922b21;
  background: color-mix(in srgb, #c0392b 12%, var(--surface));
  border: 1px solid color-mix(in srgb, #c0392b 35%, var(--border));
}
.pe-news-date {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
  line-height: 1.35;
  white-space: nowrap;
}
.pe-news-main {
  min-width: 0;
}
.pe-news-link {
  display: inline;
  color: var(--accent-dark);
  font-weight: 600;
  font-size: 0.82rem;
  line-height: 1.4;
  text-decoration: underline;
  text-underline-offset: 0.12em;
  word-break: break-word;
}
.pe-news-link:hover {
  color: var(--accent);
}
.pe-news-link--plain {
  text-decoration: none;
  color: var(--text);
}
.pe-news-source {
  display: block;
  margin-top: 0.12rem;
  font-size: 0.68rem;
  color: var(--muted);
}
.pe-news-original {
  margin: 0.28rem 0 0;
  font-size: 0.72rem;
  line-height: 1.35;
  color: var(--text-secondary);
}
.pe-news-original-label {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-right: 0.25rem;
}
.pe-disclosure-hub {
  margin: 0 0 0.55rem;
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.pe-disclosure-hub a {
  color: var(--accent-dark);
  font-weight: 600;
}
.pe-news-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.pe-news-item {
  padding: 0.65rem 0.75rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.pe-news-item a {
  color: var(--accent-dark);
  font-weight: 600;
  text-decoration: none;
}
.pe-news-item a:hover { text-decoration: underline; }
.pe-news-meta {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.68rem;
  color: var(--muted);
}
.pe-news-summary {
  margin: 0.35rem 0 0;
  font-size: 0.78rem;
  color: var(--text-secondary);
  line-height: 1.4;
}
.pe-notes {
  margin-top: 0.5rem;
  padding: 0 var(--dashboard-inset-x) 1rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.45;
}
.pe-notes ul { margin: 0; padding-left: 1rem; }

.rental-breakdown-panel {
  margin: 0.75rem var(--dashboard-inset-x) 1rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--border);
}
.rental-breakdown-title {
  margin: 0 0 0.5rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.rental-breakdown-table {
  font-size: 0.88rem;
}
.rental-breakdown-table .col-label .segment-label {
  font-weight: 600;
}


/* Budget vs actual */
:root {
  --budget-ahead: #0a7a4a;
  --budget-ahead-bg: #e8f5ee;
  --budget-onpace: #8a6d1d;
  --budget-onpace-bg: #f7f1de;
  --budget-behind: #b45309;
  --budget-behind-bg: #fff4e8;
  --budget-lagging: #c5494e;
  --budget-lagging-bg: #faf0f0;
  --positive: #0a7a4a;
  --negative: #c5494e;
}

.app.view-budget .report-section.stage-budget {
  border-top: 3px solid var(--tab-budget);
}

/* Keep Budget content off the card edges (match KPI inset pattern) */
.stage-budget > .section-header {
  padding: 1.15rem var(--dashboard-inset-x) 1rem;
}
.stage-budget .budget-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
  margin: 0;
  padding: 1rem var(--dashboard-inset-x) 0.85rem;
}
@media (max-width: 900px) {
  .stage-budget .budget-summary { grid-template-columns: 1fr; }
}
.stage-budget .budget-legend {
  margin: 0;
  padding: 0.15rem var(--dashboard-inset-x) 1.15rem;
}
.stage-budget .budget-page {
  padding: 0 var(--dashboard-inset-x) 1.35rem;
}

.budget-summary-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.15rem 1.1rem;
  box-shadow: var(--shadow-sm);
  border-top: 3px solid var(--border-strong);
}
.budget-summary-card.budget-status--ahead { border-top-color: var(--budget-ahead); background: linear-gradient(180deg, var(--budget-ahead-bg), var(--surface) 55%); }
.budget-summary-card.budget-status--onpace { border-top-color: var(--budget-onpace); background: linear-gradient(180deg, var(--budget-onpace-bg), var(--surface) 55%); }
.budget-summary-card.budget-status--behind { border-top-color: var(--budget-behind); background: linear-gradient(180deg, var(--budget-behind-bg), var(--surface) 55%); }
.budget-summary-card.budget-status--lagging { border-top-color: var(--budget-lagging); background: linear-gradient(180deg, var(--budget-lagging-bg), var(--surface) 55%); }
.budget-summary-card--pace {
  border-top-color: var(--tab-budget);
  background: linear-gradient(180deg, var(--tab-budget-light), var(--surface) 60%);
}

.budget-summary-label {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.budget-summary-pct {
  margin: 0.25rem 0 0.2rem;
  font-size: 1.85rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  color: var(--text);
}
.budget-summary-card.budget-status--ahead .budget-summary-pct { color: var(--budget-ahead); }
.budget-summary-card.budget-status--onpace .budget-summary-pct { color: var(--budget-onpace); }
.budget-summary-card.budget-status--behind .budget-summary-pct { color: var(--budget-behind); }
.budget-summary-card.budget-status--lagging .budget-summary-pct { color: var(--budget-lagging); }
.budget-summary-meta {
  margin: 0 0 0.55rem;
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.budget-summary-hint {
  margin: 0.45rem 0 0;
  font-size: 0.72rem;
  color: var(--muted);
}

.budget-status-pill {
  display: inline-block;
  margin: 0 0 0.55rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.budget-status--ahead .budget-status-pill,
.budget-status-pill.budget-status--ahead { background: var(--budget-ahead-bg); color: var(--budget-ahead); }
.budget-status--onpace .budget-status-pill,
.budget-status-pill.budget-status--onpace { background: var(--budget-onpace-bg); color: var(--budget-onpace); }
.budget-status--behind .budget-status-pill,
.budget-status-pill.budget-status--behind { background: var(--budget-behind-bg); color: var(--budget-behind); }
.budget-status--lagging .budget-status-pill,
.budget-status-pill.budget-status--lagging { background: var(--budget-lagging-bg); color: var(--budget-lagging); }
.budget-status-pill.budget-status--na { background: var(--surface-2); color: var(--muted); }

.budget-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 1.1rem;
  font-size: 0.72rem;
  color: var(--text-secondary);
}
.budget-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.budget-legend-item::before {
  content: "";
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
.budget-legend-item.budget-status--ahead { color: var(--budget-ahead); }
.budget-legend-item.budget-status--onpace { color: var(--budget-onpace); }
.budget-legend-item.budget-status--behind { color: var(--budget-behind); }
.budget-legend-item.budget-status--lagging { color: var(--budget-lagging); }

.budget-page {
  display: flex;
  flex-direction: column;
  gap: 1.35rem;
}
.budget-block-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.65rem;
  padding: 0 0.15rem;
}
.budget-block-title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--tab-budget);
}
.budget-section-note,
.budget-notes {
  color: var(--text-secondary);
  font-size: 0.8rem;
  padding: 0 0.15rem;
}
.budget-notes ul { margin: 0.35rem 0 0; padding-left: 1.1rem; }

.budget-group {
  margin-top: 0.65rem;
  padding: 0.85rem 1rem 1rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
}
.budget-group--assets {
  border-left: 3px solid var(--tab-operations);
  background: linear-gradient(90deg, var(--tab-operations-light), var(--surface) 28%);
}
.budget-group--agency {
  border-left: 3px solid var(--tab-budget);
  background: linear-gradient(90deg, var(--tab-budget-light), var(--surface) 28%);
}
.budget-group--other {
  border-left: 3px solid var(--border-strong);
  background: var(--surface-2);
}
.budget-group-title {
  margin: 0 0 0.55rem;
  padding: 0 0.15rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
}
.budget-group--assets .budget-group-title { color: var(--accent-dark); }
.budget-group--agency .budget-group-title { color: #7a5a1e; }

/* Tables inside tinted groups already have card padding — don't double-indent to page edge */
.budget-group .data-table th:first-child,
.budget-group .data-table td:first-child {
  padding-left: 0.85rem;
}
.budget-group .data-table th:last-child,
.budget-group .data-table td:last-child {
  padding-right: 0.85rem;
}

/* Match .budget-group horizontal inset so section-total cols share the same grid */
.budget-section-total {
  margin-top: 0.65rem;
  padding: 0.55rem 1rem;
  border-radius: var(--radius);
  background: var(--tab-budget-light);
  border: 1px solid rgba(154, 107, 46, 0.28);
}
.budget-section-total .data-table th:first-child,
.budget-section-total .data-table td:first-child {
  padding-left: 0.85rem;
}
.budget-section-total .data-table th:last-child,
.budget-section-total .data-table td:last-child {
  padding-right: 0.85rem;
}
/* Shared fixed cols: group tables + section-total must use the same colgroup */
.stage-budget .budget-table {
  width: 100%;
  --table-label-col: 16rem;
}

/* Full Year Actual P&L (no .budget-group card): match group/total content inset */
#section-actuals-2026 {
  --table-label-col: 20rem;
}
#section-actuals-2026 .budget-block > .table-wrap {
  padding-left: 1rem;
  padding-right: 1rem;
}
#section-actuals-2026 .budget-block > .table-wrap .data-table th:first-child,
#section-actuals-2026 .budget-block > .table-wrap .data-table td:first-child {
  padding-left: 0.85rem;
}
#section-actuals-2026 .budget-block > .table-wrap .data-table th:last-child,
#section-actuals-2026 .budget-block > .table-wrap .data-table td:last-child {
  padding-right: 0.85rem;
}

.budget-table .row-total td { font-weight: 600; }
.budget-table tr.is-ahead td.col-label .segment-label { color: var(--budget-ahead); }
.budget-table tr.is-lagging td.col-label .segment-label { color: var(--budget-lagging); }
.budget-table tr.is-behind td.col-label .segment-label { color: var(--budget-behind); }
.budget-col-actual { font-weight: 600; }

.budget-progress {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 7.5rem;
}
.budget-progress--empty { color: var(--muted); }
.budget-progress-track {
  position: relative;
  flex: 1;
  height: 0.45rem;
  border-radius: 999px;
  background: #e7ecee;
  overflow: visible;
}
.budget-progress-fill {
  height: 100%;
  border-radius: 999px;
  background: var(--muted);
  min-width: 0;
  transition: width 0.25s ease;
}
.budget-status--ahead .budget-progress-fill { background: var(--budget-ahead); }
.budget-status--onpace .budget-progress-fill { background: var(--budget-onpace); }
.budget-status--behind .budget-progress-fill { background: var(--budget-behind); }
.budget-status--lagging .budget-progress-fill { background: var(--budget-lagging); }
.budget-progress-pace {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 2px;
  margin-left: -1px;
  background: var(--text);
  opacity: 0.55;
  border-radius: 1px;
}
.budget-progress-label {
  font-size: 0.78rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  min-width: 3.1rem;
  text-align: right;
}
.budget-status--ahead .budget-progress-label { color: var(--budget-ahead); }
.budget-status--onpace .budget-progress-label { color: var(--budget-onpace); }
.budget-status--behind .budget-progress-label { color: var(--budget-behind); }
.budget-status--lagging .budget-progress-label { color: var(--budget-lagging); }

.budget-summary-card .budget-progress { margin-top: 0.15rem; }
.budget-summary-card .budget-progress-track { height: 0.55rem; }

/* ——— Entra auth gate (Fulcrum teal / light) ——— */
/* Hardcoded hex (not only CSS vars) so stale/dark :root cannot restyle the gate. */
#auth-gate.auth-gate,
.auth-gate {
  position: fixed !important;
  inset: 0 !important;
  z-index: 10000 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 1.5rem !important;
  background:
    radial-gradient(ellipse at 15% 10%, rgba(33, 132, 155, 0.16), transparent 50%),
    radial-gradient(ellipse at 90% 85%, rgba(33, 132, 155, 0.1), transparent 45%),
    linear-gradient(165deg, #e8f4f6 0%, #f4f6f7 45%, #eef3f4 100%) !important;
  color: #333333 !important;
}
#auth-gate .auth-gate-card,
.auth-gate-card {
  width: min(420px, 100%) !important;
  padding: 2.15rem 1.85rem 1.85rem !important;
  border: 1px solid #c5d5da !important;
  border-top: 3px solid #21849b !important;
  border-radius: 8px !important;
  background: #ffffff !important;
  box-shadow: 0 4px 24px rgba(33, 132, 155, 0.12) !important;
  color: #333333 !important;
  text-align: center !important;
}
#auth-gate .auth-gate-brand,
.auth-gate-brand {
  width: 2.75rem !important;
  height: 0.28rem !important;
  margin: 0 auto 1.15rem !important;
  border-radius: 2px !important;
  background: #21849b !important;
}
#auth-gate .auth-gate-eyebrow,
.auth-gate-eyebrow {
  margin: 0 0 0.35rem !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: #21849b !important;
}
#auth-gate .auth-gate-card h1,
.auth-gate-card h1 {
  margin: 0 0 0.75rem !important;
  font-size: 1.5rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: #5a5a5a !important;
}
#auth-gate .auth-gate-copy,
.auth-gate-copy {
  margin: 0 0 1.35rem !important;
  color: #7a8a90 !important;
  font-size: 0.95rem !important;
  line-height: 1.5 !important;
}
#auth-gate .auth-gate-error,
.auth-gate-error {
  margin: 0 0 1rem !important;
  padding: 0.65rem 0.75rem !important;
  border-radius: 4px !important;
  background: #faf0f0 !important;
  border: 1px solid rgba(197, 73, 78, 0.28) !important;
  color: #c5494e !important;
  font-size: 0.85rem !important;
  text-align: left !important;
}
#auth-gate .auth-sign-in,
.auth-sign-in {
  appearance: none !important;
  border: none !important;
  border-radius: 4px !important;
  padding: 0.75rem 1.35rem !important;
  font: inherit !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  color: #ffffff !important;
  background: #21849b !important;
  box-shadow: 0 1px 3px rgba(33, 132, 155, 0.22) !important;
  transition: background 0.15s, box-shadow 0.15s !important;
}
#auth-gate .auth-sign-in:hover,
.auth-sign-in:hover {
  background: #1a6a7d !important;
  box-shadow: 0 2px 8px rgba(33, 132, 155, 0.28) !important;
  filter: none !important;
}
#auth-gate .auth-gate-hint,
.auth-gate-hint {
  margin: 1.1rem 0 0 !important;
  font-size: 0.75rem !important;
  line-height: 1.45 !important;
  color: #7a8a90 !important;
}
.auth-sign-out {
  appearance: none;
  border: 1px solid #c5d5da;
  border-radius: 4px;
  padding: 0.35rem 0.7rem;
  font: inherit;
  font-size: 0.72rem;
  font-weight: 500;
  cursor: pointer;
  color: #5a5a5a;
  background: #ffffff;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.auth-sign-out:hover {
  background: #e8f4f6;
  border-color: #21849b;
  color: #1a6a7d;
}
.main-tab[hidden] { display: none !important; }

/* Compact chrome for phone / Teams mobile — reclaim first-viewport space */
@media (max-width: 640px) {
  .app {
    padding: 0 0.7rem 2rem;
  }
  .top-bar {
    gap: 0.45rem 0.65rem;
    margin-bottom: 0.65rem;
    padding: 0.7rem 0 0.55rem;
    align-items: center;
  }
  .brand-name {
    font-size: 1.02rem;
  }
  .meta-chips,
  .meta-toolbar {
    align-items: stretch;
    width: 100%;
  }
  .meta-row {
    justify-content: flex-start;
    gap: 0.35rem;
  }
  .meta-row-toolbar {
    --meta-control-h: 1.85rem;
  }
  .chip {
    font-size: 0.65rem;
    padding-left: 0.45rem;
    padding-right: 0.45rem;
  }
  .quarter-picker {
    font-size: 0.65rem;
    gap: 0.25rem;
  }
  .quarter-picker select {
    font-size: 0.7rem;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
  }
  .notes-btn,
  .refresh-btn,
  .auth-sign-out {
    font-size: 0.7rem;
    padding-left: 0.55rem;
    padding-right: 0.55rem;
  }
  .tab-shell {
    gap: 0.35rem 0.55rem;
    margin-bottom: 0.75rem;
  }
  .main-tab {
    font-size: 0.68rem;
    padding: 0.35rem 0.55rem;
    letter-spacing: 0.03em;
  }
  .main-tabs .expert-btn-tab {
    width: 1.95rem;
    height: 1.95rem;
  }
  .view-tab {
    font-size: 0.74rem;
    padding: 0.35rem 0.45rem;
  }
  .sub-tabs {
    justify-content: flex-start;
  }
}

/* —— Metrics P&L (Management Account) — CF outlook tone —— */
.stage-pnl { border-left: 3px solid var(--accent); }
.stage-pnl .time-badge { background: #e8f4f8; color: #0b5c6d; }
/* Keep P&L table off the card edges (match Budget / KPI inset pattern) */
.stage-pnl .pnl-page {
  padding: 0 var(--dashboard-inset-x) 1.35rem;
}
.pnl-headline-cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0 0 1rem;
  padding: 0 var(--dashboard-inset-x);
}
@media (max-width: 900px) {
  .pnl-headline-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.pnl-headline-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 0.9rem;
  border-top: 3px solid var(--accent);
}
.pnl-headline-card--mgmt,
.pnl-headline-card--gp,
.pnl-headline-card--rev {
  border-top-color: #0d6b4c;
  background: #f3faf6;
}
.pnl-headline-card--cogs {
  border-top-color: #b42318;
  background: #fdf6f5;
}
.pnl-headline-label {
  margin: 0;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--accent-dark);
}
.pnl-headline-value {
  margin: 0.25rem 0 0;
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text);
}
.pnl-headline-value.kpi-positive { color: var(--positive, #0d6b4c); }
.pnl-headline-value.kpi-negative { color: var(--negative, #b42318); }
.pnl-headline-value.kpi-zero { color: var(--muted); }
.pnl-headline-unit {
  font-size: 0.65rem;
  font-weight: 500;
  color: var(--muted);
}
/* Match CF / data-table headers: muted teal on light surface */
.pnl-table thead th {
  background: var(--surface-2);
  color: var(--accent);
  border-color: var(--border);
}
.pnl-table .kpi-positive { color: var(--positive, #0d6b4c); }
.pnl-table .kpi-negative { color: var(--negative, #b42318); }
.pnl-table .kpi-zero { color: var(--muted); }
.pnl-table tr.row-inflow-total td.kpi-negative {
  color: var(--negative, #b42318);
}
.pnl-table tr.row-outflow-total td.kpi-positive {
  color: var(--positive, #0d6b4c);
}
.pnl-table tr.row-inflow-total td.kpi-zero,
.pnl-table tr.row-outflow-total td.kpi-zero {
  color: var(--muted);
}
.pnl-table .pnl-row-total td {
  font-weight: 700;
}
.pnl-table .pnl-child-row td,
.pnl-table .row-project td {
  background: var(--surface-2);
  font-size: 0.82rem;
}
.pnl-table .pnl-child-row .project-label {
  font-weight: 500;
  color: var(--muted);
}
.pnl-row-spacer td {
  height: 0.55rem;
  padding: 0;
  border: none;
  background: transparent;
}
.pnl-table .row-drillable:hover td.col-label .segment-label {
  color: var(--accent);
}
.pnl-table .row-drillable.is-expanded td.col-label .segment-label::before {
  color: var(--accent);
}
.pnl-notes { margin-top: 1rem; }
.pnl-methodology-toggle {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.pnl-methodology-toggle .outlook-block-title {
  margin: 0;
  padding: 0 0 0.35rem;
}
.pnl-methodology.is-collapsed .pnl-methodology-toggle .outlook-block-title::before {
  content: "▸ ";
  color: var(--muted);
  font-size: 0.75rem;
}
.pnl-methodology:not(.is-collapsed) .pnl-methodology-toggle .outlook-block-title::before {
  content: "▾ ";
  color: var(--accent);
  font-size: 0.75rem;
}
.pnl-methodology-toggle:hover .outlook-block-title {
  color: var(--accent);
}
.pnl-methodology-body[hidden] {
  display: none;
}

/* —— Planner (Planning → Planner) —— */
.app.view-budget .report-section.stage-planner {
  border-top: 3px solid var(--tab-budget);
}
.stage-planner > .section-header {
  padding: 1.15rem var(--dashboard-inset-x) 1rem;
}
.planner-header-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
}
.planner-header-main {
  flex: 1 1 14rem;
  min-width: 0;
}
.planner-header-main .section-subtitle {
  margin: 0.35rem 0 0;
  padding: 0;
}
.planner-header-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 0.75rem 1rem;
  flex-shrink: 0;
}
.planner-toolbar-period {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  align-items: flex-end;
}
.planner-quarter-label {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.planner-quarter-select {
  font: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text);
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  min-width: 7.5rem;
}
.planner-year-select {
  min-width: 6.5rem;
}
.planner-period-note {
  margin: 0;
  max-width: 16rem;
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--muted);
  line-height: 1.35;
}
.planner-subtabs {
  display: inline-flex;
  gap: 0.25rem;
  padding: 0.2rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.planner-subtab {
  appearance: none;
  border: 0;
  background: transparent;
  font: inherit;
  font-weight: 600;
  font-size: 0.85rem;
  padding: 0.4rem 1rem;
  border-radius: 999px;
  cursor: pointer;
  color: var(--muted);
}
.planner-subtab:hover {
  color: var(--accent-dark);
}
.planner-subtab.is-active {
  background: var(--accent);
  color: #fff;
}
.planner-input-subnav {
  display: inline-flex;
  gap: 0.25rem;
  padding: 0.2rem;
  margin: 0.85rem 0 1rem var(--dashboard-inset-x);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.planner-input-subtab {
  appearance: none;
  border: 0;
  background: transparent;
  font: inherit;
  font-weight: 600;
  font-size: 0.85rem;
  padding: 0.4rem 1rem;
  border-radius: 999px;
  cursor: pointer;
  color: var(--muted);
}
.planner-input-subtab:hover {
  color: var(--accent-dark);
}
.planner-input-subtab.is-active {
  background: var(--accent);
  color: #fff;
}
.planner-section-headline {
  margin-bottom: 0.5rem;
}
.planner-breadcrumb {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  color: var(--text-secondary);
}
.planner-breadcrumb a {
  color: var(--accent-dark);
  font-weight: 600;
  text-decoration: none;
}
.planner-breadcrumb a:hover {
  text-decoration: underline;
}
.planner-breadcrumb-sep {
  color: var(--muted);
}
.planner-expense-nav-table .planner-bu-link {
  color: inherit;
  font-weight: 600;
  text-decoration: none;
}
.planner-expense-nav-table .planner-bu-link:hover {
  color: var(--accent-dark);
  text-decoration: underline;
}
.planner-expense-nav-table tr.planner-expense-bu-link {
  cursor: pointer;
}
.planner-expense-nav-table tr.planner-expense-bu-link:hover td {
  background: rgba(0, 0, 0, 0.02);
}
.planner-fx-meta {
  margin: 0 0 0.55rem;
  font-size: 0.8rem;
  color: var(--muted);
}
.planner-fx-plan-q {
  font-weight: 700;
  color: var(--accent-dark);
}
.planner-fx-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: nowrap;
  margin-bottom: 0.15rem;
}
.planner-fx-section-head h3 {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
}
.planner-fx-section-head .planner-fx-finance-toggle {
  margin-left: auto;
  flex: 0 0 auto;
}
.planner-fx-section.planner-fx-input-mode .planner-fx-finance-toggle {
  color: var(--highlight, #2563eb);
}
.planner-fx-wrap {
  max-width: 100%;
}
.planner-fx-table {
  --table-label-col: 6.5rem;
  --table-data-col: 5rem;
  font-variant-numeric: tabular-nums;
}
.planner-fx-table th,
.planner-fx-table td {
  padding: 0.22rem 0.45rem;
  line-height: 1.2;
  font-size: 0.88rem;
}
.planner-fx-table th {
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
  font-size: 0.65rem;
  line-height: 1.15;
}
.planner-fx-table th:first-child,
.planner-fx-table td:first-child {
  padding-left: 0.55rem;
}
.planner-fx-table th:last-child,
.planner-fx-table td:last-child {
  padding-right: 0.55rem;
}
.planner-fx-table td.col-label {
  min-width: 5.5rem;
  padding-top: 0.2rem;
  padding-bottom: 0.2rem;
}
.planner-fx-table td.planner-fx-empty {
  color: var(--muted);
  background: transparent;
}
.planner-fx-table td.planner-fx-assumed {
  color: var(--muted);
  font-style: italic;
}
.planner-fx-rate-input {
  width: 4.1rem;
  max-width: 100%;
  box-sizing: border-box;
  text-align: right;
  font: inherit;
  font-size: 0.85rem;
  font-weight: 600;
  line-height: 1.2;
  padding: 0.12rem 0.28rem;
  border: 1px dashed rgba(33, 132, 155, 0.55);
  border-radius: 3px;
  background: rgba(33, 132, 155, 0.04);
  color: var(--accent-dark);
}
.planner-fx-table td.planner-fx-assumed .planner-fx-rate-input {
  font-style: italic;
  font-weight: 500;
  color: var(--muted);
  border-color: rgba(33, 132, 155, 0.35);
}
.planner-fx-table td.cell-manual {
  padding-top: 0.12rem;
  padding-bottom: 0.12rem;
}
.planner-fx-actions {
  margin-top: 0.75rem;
}
.planner-fx-pair-row {
  cursor: pointer;
}
.planner-fx-pair-row:hover td {
  background: rgba(33, 132, 155, 0.06);
}
.planner-fx-pair-row.is-selected td {
  background: rgba(33, 132, 155, 0.12);
}
.planner-fx-pair-row.is-selected td.col-label {
  font-weight: 700;
  color: var(--accent-dark);
}
.planner-fx-chart-section {
  margin-top: 1rem;
  padding: 0;
  border: none;
  background: transparent;
  border-left: none;
}
.planner-fx-chart-host {
  min-height: 12rem;
}
.planner-fx-chart-prompt,
.planner-fx-chart-loading {
  margin: 0.75rem 0 0;
  padding: 0 0.25rem;
}
.planner-fx-yf-chart {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.1rem 0.85rem;
  font-variant-numeric: tabular-nums;
}
.planner-fx-yf-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 0.65rem;
}
.planner-fx-yf-head-left {
  min-width: 0;
  flex: 1 1 14rem;
}
.planner-fx-yf-title-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.35rem 0.5rem;
}
.planner-fx-yf-title {
  margin: 0;
  font-family: var(--font-display, "Red Hat Display", sans-serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.2;
}
.planner-fx-yf-change {
  font-size: 0.95rem;
  font-weight: 600;
}
.planner-fx-yf-change.is-up {
  color: #008a00;
}
.planner-fx-yf-change.is-down {
  color: #cc0000;
}
.planner-fx-yf-change.is-flat {
  color: var(--muted);
}
.planner-fx-yf-range-tag {
  font-size: 0.82rem;
  color: #9aa0a6;
  font-weight: 500;
}
.planner-fx-yf-subtitle {
  margin: 0.15rem 0 0;
  font-size: 0.82rem;
  color: #9aa0a6;
}
.planner-fx-yf-head-right {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem 0.5rem;
  justify-content: flex-end;
  flex: 0 1 auto;
  font-size: 0.82rem;
  color: #5f6368;
}
.planner-fx-yf-live-dot {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: #008a00;
  flex: 0 0 auto;
}
.planner-fx-yf-live-rate {
  font-weight: 700;
  color: #1a1a1a;
  font-size: 0.88rem;
}
.planner-fx-yf-live-time {
  color: #9aa0a6;
  font-size: 0.78rem;
}
.planner-fx-yf-ranges {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.35rem 0.55rem;
  margin: 0.35rem 0 0.75rem;
}
.planner-fx-yf-range {
  appearance: none;
  border: none;
  background: transparent;
  color: #5f6368;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1;
  padding: 0.35rem 0.55rem;
  border-radius: 999px;
  cursor: pointer;
}
.planner-fx-yf-range:hover {
  color: #1a73e8;
}
.planner-fx-yf-range.is-active {
  background: #1a73e8;
  color: #fff;
}
.planner-fx-yf-body {
  margin: 0 -0.15rem;
}
.planner-fx-yf-plot {
  position: relative;
  height: 15.5rem;
  cursor: crosshair;
  outline: none;
  overflow: hidden;
}
.planner-fx-yf-svg {
  position: absolute;
  left: 12px;
  top: 10px;
  /* Explicit size — SVG viewBox 1:1 intrinsic sizing ignores inset-only stretch. */
  width: calc(100% - 84px);
  height: calc(100% - 44px);
  overflow: visible;
}
.planner-fx-yf-line {
  stroke: #1a73e8;
  stroke-width: 2;
  stroke-linejoin: round;
  stroke-linecap: round;
}
.planner-fx-yf-guide {
  stroke: #dadce0;
  stroke-width: 1;
  opacity: 0;
  pointer-events: none;
}
.planner-fx-yf-hover-dot {
  fill: #1a73e8;
  stroke: #fff;
  stroke-width: 0.35;
  opacity: 0;
  pointer-events: none;
}
.planner-fx-yf-yaxis {
  position: absolute;
  right: 0;
  top: 10px;
  bottom: 34px;
  width: 68px;
  pointer-events: none;
}
.planner-fx-yf-ytick {
  position: absolute;
  right: 0;
  transform: translateY(50%);
  font-size: 0.72rem;
  color: #9aa0a6;
  white-space: nowrap;
}
.planner-fx-yf-xaxis {
  position: absolute;
  left: 12px;
  right: 72px;
  bottom: 0;
  height: 28px;
  pointer-events: none;
}
.planner-fx-yf-xtick {
  position: absolute;
  bottom: 0;
  transform: translateX(-50%);
  font-size: 0.72rem;
  color: #9aa0a6;
  white-space: nowrap;
  text-align: center;
}
.planner-fx-yf-xtick-mark {
  display: block;
  width: 1px;
  height: 4px;
  background: #dadce0;
  margin: 0 auto 0.2rem;
}
.planner-fx-yf-tooltip {
  position: absolute;
  z-index: 3;
  min-width: 7rem;
  padding: 0.45rem 0.65rem;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
  pointer-events: none;
}
.planner-fx-yf-tooltip-rate {
  font-size: 1.05rem;
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.2;
}
.planner-fx-yf-tooltip-time {
  margin-top: 0.15rem;
  font-size: 0.72rem;
  color: #9aa0a6;
}
.planner-cashflow-kpis {
  margin-bottom: 1rem;
}
.planner-cashflow-drivers h4,
.planner-cashflow-waterfall h4 {
  margin: 0 0 0.35rem;
  font-size: 0.95rem;
  color: var(--accent-dark);
}
.planner-planned-cf-toggle {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.planner-planned-cf-toggle h4 {
  margin: 0;
  font-size: 0.95rem;
  color: var(--accent-dark);
}
.planner-planned-cf-toggle h4::before {
  content: "▸ ";
  display: inline-block;
  transition: transform 0.15s ease;
}
.planner-planned-cf:not(.is-collapsed) .planner-planned-cf-toggle h4::before {
  content: "▾ ";
}
.planner-planned-cf.is-collapsed .planner-planned-cf-body {
  display: none;
}
.planner-planned-cf-body {
  margin-top: 0.75rem;
}
.planner-planned-cf-actions {
  margin-top: 0.75rem;
}
.planner-planned-cf-table .cash-sga-label-input {
  width: 100%;
  min-width: 8rem;
}
.planner-panel,
.planner-input-panel {
  padding: 0 var(--dashboard-inset-x) 1.35rem;
  min-width: 0;
}
.planner-section {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  border-left: 3px solid var(--tab-budget);
  padding: 1rem 1.1rem 1.15rem;
  margin-bottom: 1rem;
  min-width: 0;
}
.planner-section h3 {
  margin: 0 0 0.2rem;
  font-size: 1.05rem;
  color: var(--accent-dark);
}
.planner-hint {
  margin: 0 0 0.85rem;
  font-size: 0.8rem;
  color: var(--muted);
}
.planner-badge {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.05rem 0.35rem;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-radius: 3px;
  vertical-align: middle;
}
.planner-cash-return-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.12rem;
  width: 100%;
  max-width: 86px;
  margin-left: auto;
}
.planner-cash-return-stack .planner-cash-return-value {
  display: block;
  line-height: 1.2;
}
.planner-cash-return-stack .planner-badge {
  margin-left: 0;
  align-self: flex-end;
  white-space: nowrap;
}
.planner-cash-return-stack .planner-pct-input-wrap {
  width: 100%;
  max-width: 4.5rem;
}
.planner-cash-return-stack .planner-input-pct {
  width: auto;
  max-width: none;
  flex: 1 1 auto;
  min-width: 0;
}
.planner-core-ops-table td[data-planner-cash-return],
.planner-core-ops-table td[data-planner-rev-ratio] {
  width: 86px;
  max-width: 86px;
  vertical-align: middle;
}
.planner-badge-in {
  color: var(--accent-dark);
  background: var(--accent-light);
  border: 1px dashed rgba(33, 132, 155, 0.45);
}
.planner-badge-calc {
  color: var(--positive, #0d6b4c);
  background: #e6f4ee;
  border: 1px solid rgba(13, 107, 76, 0.25);
}
.planner-input-cell {
  width: 7.5rem;
  max-width: 100%;
  text-align: right;
  font: inherit;
  font-weight: 600;
  padding: 0.3rem 0.4rem;
  border: 1px dashed rgba(33, 132, 155, 0.55);
  border-radius: 4px;
  background: rgba(33, 132, 155, 0.04);
  color: var(--accent-dark);
}
.planner-input-cell.is-manual-readonly {
  border-style: solid;
  cursor: default;
}
.planner-input-pct {
  width: 4.5rem;
}
.planner-pct-input-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.12rem;
  max-width: 100%;
  vertical-align: middle;
}
.planner-pct-input-wrap .planner-input-pct {
  flex: 1 1 auto;
  min-width: 0;
}
.planner-pct-suffix {
  flex: 0 0 auto;
  font: inherit;
  font-weight: 600;
  color: var(--accent-dark);
  opacity: 0.8;
  line-height: 1;
  user-select: none;
  pointer-events: none;
}
.planner-dist-table th {
  white-space: normal;
  vertical-align: bottom;
  line-height: 1.25;
  min-width: 5.5rem;
}
.planner-dist-table th:first-child {
  min-width: 7rem;
}
.planner-dist-table .col-unit {
  display: inline;
  font-weight: 500;
  opacity: 0.75;
}
.planner-core-ops-table {
  font-size: 0.8rem;
}
.planner-core-ops-table th.col-num,
.planner-core-ops-table td.col-num {
  white-space: normal;
  min-width: 4.25rem;
  max-width: 6.75rem;
  line-height: 1.2;
  padding: 0.3rem 0.35rem;
}
.planner-core-ops-table .planner-input-cell {
  width: 5.5rem;
  padding: 0.22rem 0.3rem;
}
.planner-core-ops-table .planner-pct-input-wrap {
  width: 100%;
  max-width: 4.5rem;
  margin-left: auto;
}
.planner-core-ops-table .planner-input-pct {
  width: 3.1rem;
  padding-right: 0.2rem;
}
.planner-core-ops-table .planner-pct-suffix {
  font-size: 0.75rem;
}
.planner-group-header td {
  background: var(--surface-2, #f3f4f6);
  color: var(--text, #1a1d23);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 0.4rem 0.55rem;
  border-top: 1px solid var(--border, #e4e7ec);
}
.planner-project-type {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--muted, #667085);
  letter-spacing: 0.01em;
  text-transform: none;
}
.planner-table .kpi-positive {
  color: var(--positive, #0d6b4c);
  font-weight: 600;
}
.planner-table tr.row-inflow-total td {
  background: #e6f4ee;
  color: var(--positive, #0d6b4c);
  font-weight: 700;
  border-top: 2px solid var(--positive, #0d6b4c);
}
.planner-table tr.row-outflow-total td {
  background: #fcebea;
  color: var(--negative, #b42318);
  font-weight: 700;
  border-top: 2px solid var(--negative, #b42318);
}
.planner-table tr.row-total td {
  background: var(--accent-light);
  font-weight: 700;
  border-top: 2px solid var(--border);
}
.planner-sga-child.is-collapsed {
  display: none;
}
.planner-bu-lines-table tr.planner-sga-lv2 td {
  background: var(--surface-2, #f8f9fb);
  font-weight: 600;
  color: var(--text, #1a1d23);
  padding-top: 0.65rem;
  padding-bottom: 0.45rem;
  border-top: 1px solid var(--border, #e4e7ec);
}
.planner-bu-lines-table tr.planner-sga-lv2:first-child td {
  border-top: none;
}
.planner-bu-lines-table .planner-sga-alloc {
  color: var(--muted, #667085);
  font-size: 0.92em;
}
.planner-bu-lines-table .planner-sga-group-parent td.col-label .segment-label {
  font-weight: 600;
}
.planner-bu-lines-table .planner-sga-alloc-count {
  font-size: 0.85em;
  color: var(--muted, #667085);
}
.planner-bu-lines-table .planner-sga-group-total {
  color: var(--muted, #667085);
  font-variant-numeric: tabular-nums;
}
.planner-bu-lines-table tr.planner-sga-child td {
  background: var(--surface-2, #f8f9fb);
  font-size: 0.92rem;
}
.planner-bu-lines-table tr.planner-sga-child .planner-sga-child-spacer {
  padding-left: 1.75rem;
}
.planner-bu-lines-table tr.planner-sga-child .planner-sga-alloc {
  font-weight: 500;
  color: var(--text, #1a1d23);
}
.planner-section-expense-opex {
  margin-top: 1.5rem;
}
.planner-section-headcount {
  margin-top: 1.75rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border, #e4e7ec);
}
.planner-section-headcount h4,
.planner-hc-alloc-preview h4 {
  margin: 0 0 0.4rem;
  font-size: 0.95rem;
  font-weight: 650;
}
.planner-hc-alloc-preview {
  margin-top: 1.25rem;
}
.planner-input-hc {
  max-width: 5.5rem;
  text-align: right;
}
.planner-headcount-table .planner-hc-share {
  color: var(--muted, #667085);
  font-variant-numeric: tabular-nums;
}
.planner-expense-opex-page {
  margin-top: 0.5rem;
}
.planner-ops-block {
  margin: 0.85rem 0 1rem;
}
.planner-ops-scenario-wrap {
  overflow-x: auto;
}
.planner-ops-scenario-table {
  font-size: 0.82rem;
}
.planner-ops-scenario-table th.col-num,
.planner-ops-scenario-table td.col-num {
  white-space: normal;
  min-width: 4.75rem;
  max-width: 7.5rem;
  line-height: 1.2;
  padding: 0.35rem 0.4rem;
}
/* GDV / Cash % override cells need room for ✎ or input + Overridden + Reset */
.planner-ops-scenario-table td.planner-ops-gdv-cell,
.planner-ops-scenario-table td.planner-ops-ratio-cell {
  max-width: none;
  min-width: 6.75rem;
  overflow: visible;
}
.planner-ops-scenario-table .col-label {
  min-width: 8rem;
  max-width: 12rem;
}
.planner-ops-scenario-table .indent {
  padding-left: 1.25rem;
}
.planner-ops-expand {
  display: inline-block;
  width: 0.85rem;
  color: var(--muted, #6b7280);
}
.planner-ops-parent.row-drillable {
  cursor: pointer;
}
.planner-ops-child.is-collapsed {
  display: none;
}
.planner-ops-child td {
  background: var(--surface-2, #f8f9fb);
  font-size: 0.78rem;
  color: var(--text, #1a1d23);
}
.planner-ops-child .col-label.indent {
  padding-left: 1.5rem;
  font-weight: 500;
}
.planner-ops-parent.is-expanded .planner-ops-expand {
  color: var(--accent-dark, #22849c);
}
.planner-ops-gdv-cell {
  white-space: nowrap;
}
.planner-ops-ratio-cell {
  white-space: nowrap;
}
.planner-ops-gdv-display-wrap,
.planner-ops-gdv-edit-wrap {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  max-width: 100%;
}
.planner-ops-gdv-edit-wrap .planner-input-cell {
  width: 4.5rem;
}
.planner-ops-gdv-edit-wrap .planner-input-pct {
  width: 3.5rem;
}
.planner-ops-override-link,
.planner-ops-reset-link {
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font: inherit;
  font-size: 0.68rem;
  font-weight: 500;
  line-height: 1;
  color: var(--muted, #7a8a90);
  cursor: pointer;
  vertical-align: middle;
}
.planner-ops-override-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  border-radius: 3px;
  color: var(--muted, #7a8a90);
  opacity: 0.9;
  flex: 0 0 auto;
}
.planner-ops-override-link:hover,
.planner-ops-override-link:focus-visible {
  opacity: 1;
  color: var(--accent-dark, #1a6a7d);
  background: var(--accent-light, #e8f4f6);
  outline: none;
}
.planner-ops-override-icon {
  font-size: 0.72rem;
  line-height: 1;
}
.planner-ops-overridden-chip {
  display: inline-block;
  padding: 0.05rem 0.3rem;
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted, #7a8a90);
  background: var(--surface-2, #eef3f4);
  border: 1px solid var(--border, #dde5e8);
  border-radius: 3px;
  vertical-align: middle;
  white-space: nowrap;
}
.planner-ops-reset-link {
  text-decoration: underline;
  text-decoration-color: var(--border-strong, #c5d5da);
  text-underline-offset: 2px;
}
.planner-ops-reset-link:hover,
.planner-ops-reset-link:focus-visible {
  color: var(--accent-dark, #1a6a7d);
  text-decoration-color: var(--accent, #21849b);
  outline: none;
}
.planner-ops-parent:hover .planner-ops-override-link,
.planner-ops-parent:focus-within .planner-ops-override-link {
  opacity: 0.85;
}
.planner-ops-input-table th.col-num {
  white-space: normal;
  min-width: 5.5rem;
  line-height: 1.25;
}
.planner-ops-block h4 {
  margin: 0 0 0.4rem;
  font-size: 0.95rem;
  font-weight: 650;
}
.planner-hint-inline {
  color: var(--muted, #6b7280);
  font-weight: 400;
}
.planner-ops-grand {
  margin: 0.5rem 0 1rem;
}
.planner-kpi-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0.75rem 0 0.25rem;
}
@media (max-width: 720px) {
  .planner-kpi-row {
    grid-template-columns: 1fr;
  }
}
.planner-kpi {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.65rem 0.75rem;
}
.planner-kpi--accent {
  background: var(--accent-dark);
  border-color: var(--accent-dark);
  color: #fff;
}
.planner-kpi--accent .planner-kpi-label {
  color: rgba(255, 255, 255, 0.75);
}
.planner-kpi--accent .planner-badge-calc {
  color: #e6f4ee;
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.35);
}
.planner-kpi-label {
  margin: 0;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.planner-kpi-value {
  margin: 0.2rem 0 0;
  font-size: 1.25rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.planner-kpi-meta,
.planner-kpi-unit {
  margin: 0.15rem 0 0;
  font-size: 0.72rem;
  opacity: 0.85;
  font-weight: 500;
}
.planner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  align-items: center;
  margin-top: 0.85rem;
}
.planner-save-btn {
  appearance: none;
  border: 1px solid var(--accent);
  background: var(--accent);
  color: #fff;
  font: inherit;
  font-weight: 600;
  padding: 0.45rem 0.9rem;
  border-radius: var(--radius);
  cursor: pointer;
}
.planner-save-btn:hover {
  background: var(--accent-dark);
  border-color: var(--accent-dark);
}
.planner-save-status {
  font-size: 0.8rem;
  color: var(--muted);
}
.planner-save-status.is-dirty {
  color: var(--tab-budget);
  font-weight: 600;
}
.planner-proforma-head {
  margin-bottom: 1rem;
}
.planner-proforma-stack {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.planner-proforma-stack .planner-section {
  margin-bottom: 0;
}
.planner-proforma-cf-head {
  margin: 0.5rem 0 0.75rem;
}
.planner-proforma-pnl-table {
  width: 100%;
}

/* —— Operating Expenses (Operations → SG&A) —— */
.app.view-sga .report-section.stage-sga {
  border-top: 3px solid var(--tab-operations);
}
.opex-page {
  margin-top: 0.35rem;
}
.opex-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.opex-table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
  margin: 0;
}
.opex-table thead th {
  background: var(--accent-light);
  color: var(--accent-dark);
  border-color: var(--border);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  white-space: nowrap;
  padding: 0.45rem 0.35rem;
  width: 5.5rem;
}
.opex-table .opex-th-label {
  text-align: left;
  width: 13.5rem;
  min-width: 11rem;
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--accent-light);
  white-space: normal;
  padding-left: 0.75rem;
}
.opex-table thead th.opex-th-wrap {
  white-space: normal;
  width: 5.25rem;
  line-height: 1.2;
  vertical-align: bottom;
}
.opex-table thead th.opex-th-wrap .th-head-stack {
  align-items: center;
  text-align: center;
}
.opex-table thead th.opex-th-wrap .th-period {
  white-space: normal;
  max-width: 4.75rem;
  hyphens: auto;
}
.opex-table td.col-num {
  padding: 0.35rem 0.3rem;
  font-size: 0.82rem;
}
.opex-table td.opex-label-cell {
  position: sticky;
  left: 0;
  z-index: 1;
  background: var(--surface);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.opex-table .opex-cell-empty {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.opex-row.opex-section td {
  background: var(--accent-light);
  font-weight: 700;
  color: var(--accent-dark);
}
.opex-row.opex-section td.opex-label-cell {
  background: var(--accent-light);
}
.opex-row.opex-group td {
  background: var(--surface-2);
  font-weight: 600;
  color: var(--text);
}
.opex-row.opex-group td.opex-label-cell {
  background: var(--surface-2);
}
.opex-row.opex-kind-line td {
  font-weight: 500;
  color: var(--text-secondary);
  font-size: 0.86rem;
}
.opex-row.opex-realloc td {
  font-style: italic;
  color: var(--text-secondary);
  background: var(--highlight-light);
}
.opex-row.opex-realloc td.opex-label-cell {
  background: var(--highlight-light);
}
.opex-row.opex-grand-total td {
  font-weight: 700;
  background: var(--surface-2);
  border-top: 2px solid var(--border-strong);
  color: var(--text);
}
.opex-row.opex-grand-total td.opex-label-cell {
  background: var(--surface-2);
}
.opex-depth-0 td.opex-label-cell { padding-left: 0.85rem; }
.opex-depth-1 td.opex-label-cell { padding-left: 1.65rem; }
.opex-depth-2 td.opex-label-cell { padding-left: 2.55rem; }
.opex-depth-3 td.opex-label-cell { padding-left: 3.35rem; }
.opex-label-cell {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.opex-toggle {
  display: inline-flex;
  width: 1rem;
  height: 1rem;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  border: 1px solid var(--border-strong);
  border-radius: 2px;
  background: var(--surface);
  color: var(--accent);
  font-size: 0.7rem;
  line-height: 1;
}
.opex-parent .opex-toggle::before {
  content: "+";
}
.opex-parent.is-expanded .opex-toggle::before {
  content: "−";
}
.opex-row.opex-parent {
  cursor: pointer;
}
.opex-row.opex-parent:hover td.opex-label-cell .opex-label {
  color: var(--accent-dark);
}

/* Entity columns collapsed by default; expand/collapse via Total header.
   Collapsed: QTD Budget, Total, Variance (entity cols hidden).
   Expanded: entity cols + Total only (fixed budget/variance cols hidden). */
.opex-table.opex-cols-collapsed .opex-col-dept {
  display: none;
}
.opex-table:not(.opex-cols-collapsed) .opex-col-fixed {
  display: none;
}
.opex-table thead th.opex-col-total {
  cursor: pointer;
  user-select: none;
  width: 5.5rem;
  white-space: nowrap;
}
.opex-table thead th.opex-col-total .th-head-stack {
  display: inline-flex;
  vertical-align: middle;
  align-items: center;
  text-align: center;
}
.opex-col-toggle {
  display: inline-flex;
  width: 1rem;
  height: 1rem;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  margin-right: 0.3rem;
  border: 1px solid var(--border-strong);
  border-radius: 2px;
  background: var(--surface);
  color: var(--accent);
  font-size: 0.7rem;
  line-height: 1;
  vertical-align: middle;
}
.opex-table.opex-cols-collapsed .opex-col-total .opex-col-toggle::before {
  content: "+";
}
.opex-table:not(.opex-cols-collapsed) .opex-col-total .opex-col-toggle::before {
  content: "−";
}
.opex-table thead th.opex-col-total:hover {
  color: var(--accent-dark);
}

.opex-footnote {
  margin: 0.75rem 0 0;
  font-size: 0.8rem;
  color: var(--muted);
}

/* Planner Expenses → Reference data (TradeDB mapping upload) */
.planner-ref-meta {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
  gap: 0.65rem 1.1rem;
  margin: 0.75rem 0 0.35rem;
}
.planner-ref-meta dt {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.planner-ref-meta dd {
  margin: 0.15rem 0 0;
  font-size: 0.88rem;
  font-weight: 500;
}
.planner-ref-actions {
  margin-top: 0.65rem;
}
.planner-ref-download-hint {
  margin: 0;
  align-self: center;
}
.planner-ref-file-label {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
}
.planner-ref-preview {
  margin-top: 1rem;
}
.planner-ref-preview h4 {
  margin: 0 0 0.35rem;
  font-size: 0.95rem;
}
.planner-ref-error {
  margin: 0.35rem 0;
  color: var(--tab-budget, #b45309);
  font-size: 0.85rem;
  font-weight: 600;
}
.planner-ref-sample-table {
  font-size: 0.82rem;
}
