/* Layout: editorial header, then a scroll story (chapters left, sticky Sankey right), then the investor exposure map, then the uncertainty tornado. */
#dash-root { --dash-gutter: 0; }
.fm-shell {
  --fm-bg: #F8F6F1; --fm-panel: #FFFFFF; --fm-fg: #11151B; --fm-fg2: #3E4652; --fm-line: #E1E5EB; --fm-pop: #FFFFFF;
  --fm-c0: #2F5FD0; --fm-c1: #C2700A; --fm-c2: #0E8A7E; --fm-c3: #7A48CF; --fm-c4: #C9356A; --fm-c5: #4F8A17; --fm-c6: #1C86B8; --fm-c7: #8A5A33; --fm-spend: #B07A00;
  --color-bg: var(--fm-bg); --color-panel: var(--fm-panel); --color-fg: var(--fm-fg); --color-fg-muted: var(--fm-fg2); --color-border-line: var(--fm-line);
  --cds-surface-popover: var(--fm-pop); --cds-border: var(--fm-line); --cds-text-secondary: var(--fm-fg2);
  --cds-chart-grid: #E6E9EE; --cds-chart-axis: #A9B1BD; --cds-chart-reference: #7D8796; --cds-chart-muted: #B9C0CB;
  --cds-shadow-popover: 0 8px 28px rgba(16, 22, 32, .14);
  color-scheme: light;
  background: var(--color-bg); color: var(--color-fg);
  padding-inline: clamp(16px, 4vw, 48px); padding-block: var(--cds-pad-md) var(--cds-pad-xl);
}
.fm-shell[data-mode="dark"] {
  --fm-bg: #0C0F14; --fm-panel: #141922; --fm-fg: #F1F4F8; --fm-fg2: #B9C2D0; --fm-line: #262E3B; --fm-pop: #1B2230;
  --fm-c0: #6E9BFF; --fm-c1: #FFB347; --fm-c2: #3DD6C6; --fm-c3: #B98CFF; --fm-c4: #FF6FA3; --fm-c5: #9BD35A; --fm-c6: #7BD3F7; --fm-c7: #D9A37A; --fm-spend: #F5C451;
  --cds-chart-grid: #1F2632; --cds-chart-axis: #4A5568; --cds-chart-reference: #8A97AB; --cds-chart-muted: #5A6578;
  --cds-shadow-popover: 0 10px 32px rgba(0, 0, 0, .5);
  color-scheme: dark;
}
.fm { max-width: 1320px; margin-inline: auto; font-family: var(--font-anthropic-sans); color: var(--color-fg); display: grid; gap: var(--cds-gap-xl); }
.fm b, .fm strong { font-weight: 600; }
.fm-num { font-variant-numeric: tabular-nums; }
.fm-bn::before { content: "$"; }
.fm-bn::after { content: "bn"; }
.fm-eyebrow { margin: 0; font-size: var(--cds-font-size-caption); letter-spacing: .08em; text-transform: uppercase; color: var(--color-fg-muted); }
.fm-head { display: grid; grid-template-columns: minmax(16rem, 26rem) minmax(0, 1fr) auto; gap: var(--cds-gap-lg); align-items: end; padding-block: var(--cds-pad-sm) 0; }
.fm-titleblock { display: grid; gap: 4px; min-width: 0; }
.fm-title { margin: 0; font-family: var(--font-anthropic-serif); font-weight: 400; font-size: clamp(1.7rem, 2.6vw, 2.3rem); line-height: 1.05; letter-spacing: -.01em; }
.fm-lede { margin: 0; font-size: var(--cds-font-size-caption); line-height: 1.45; color: var(--color-fg-muted); }
.fm-lede b { font-weight: 600; color: var(--color-fg); }
.fm-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--cds-gap-md); min-width: 0; }
.fm-kpi { border-top: 2px solid var(--color-fg); padding-top: 6px; display: grid; gap: 0; align-content: start; min-width: 0; }
.fm-kpi-label { font-size: 11px; color: var(--color-fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fm-kpi-value { font-family: var(--font-anthropic-serif); font-weight: 400; font-size: clamp(1.25rem, 1.9vw, 1.6rem); line-height: 1.15; font-variant-numeric: tabular-nums; }
.fm-mode { align-self: start; }

/* Story */
.fm-story { display: block; }
.fm-stage { height: clamp(620px, calc(100vh - 150px), 1040px); display: grid; grid-template-columns: minmax(13rem, 16rem) minmax(0, 1fr); gap: var(--cds-gap-lg); background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-md) var(--cds-pad-lg); min-width: 0; }
.fm-rail { display: flex; flex-direction: column; gap: var(--cds-gap-sm); border-right: 1px solid var(--color-border-line); padding-right: var(--cds-pad-lg); min-width: 0; min-height: 0; overflow-y: auto; }
.fm-main { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: var(--cds-gap-sm); min-width: 0; min-height: 0; }
.fm-steps { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fm-step { font: inherit; font-size: var(--cds-font-size-caption); text-align: left; background: transparent; color: var(--color-fg-muted); border: 0; border-radius: 8px; padding: 6px 10px; cursor: pointer; display: flex; gap: 10px; align-items: center; }
.fm-step .n { font-variant-numeric: tabular-nums; width: 1.1em; opacity: .7; }
.fm-step:hover { color: var(--color-fg); background: color-mix(in srgb, var(--color-fg) 6%, transparent); }
.fm-step[aria-selected="true"] { background: var(--color-fg); color: var(--color-bg); }
.fm-crumb { display: flex; align-items: center; gap: 10px; min-width: 0; }
.fm-back { font: inherit; font-size: var(--cds-font-size-caption); font-weight: 500; background: var(--color-fg); color: var(--color-bg); border: 0; border-radius: 999px; padding: 5px 12px; cursor: pointer; white-space: nowrap; }
.fm-back:hover { opacity: .85; }
.fm-crumb-cur { font-size: var(--cds-font-size-caption); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-crumb-cur::before { content: "›"; margin-right: 8px; color: var(--color-fg-muted); }
.fm-tools { display: flex; gap: 8px; align-items: center; flex-shrink: 0; margin-left: auto; }
.fm-caption { border-top: 1px solid var(--color-border-line); padding-top: var(--cds-pad-md); }
.fm-ch { display: grid; gap: var(--cds-gap-sm); }
.fm-ch h2 { margin: 0; font-family: var(--font-anthropic-serif); font-weight: 400; font-size: 1.25rem; line-height: 1.25; text-wrap: balance; }
.fm-ch p { margin: 0; font-size: var(--cds-font-size-caption); line-height: 1.55; color: var(--color-fg-muted); }
.fm-ch p b { color: var(--color-fg); }
.fm-dollar { display: grid; gap: 6px; min-width: 0; }
.fm-dollar-bar { display: flex; height: 12px; border-radius: 6px; overflow: hidden; }
.fm-dollar-bar span { display: block; height: 100%; }
.fm-dollar-legend { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px; font-size: var(--cds-font-size-caption); }
.fm-dollar-legend .sw { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; vertical-align: 0; }
.fm-dollar-legend .v { font-variant-numeric: tabular-nums; color: var(--color-fg); text-align: right; }

.fm-toolbar { display: flex; flex-wrap: wrap; gap: var(--cds-gap-sm); align-items: center; justify-content: space-between; min-width: 0; }
.fm-cols { display: flex; gap: var(--cds-gap-md); font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); letter-spacing: .06em; text-transform: uppercase; }
.fm-seg { display: inline-flex; border: 1px solid var(--color-border-line); border-radius: 999px; padding: 2px; }
.fm-seg button, .fm-btn { font: inherit; font-size: var(--cds-font-size-caption); background: transparent; color: var(--color-fg-muted); border: 0; border-radius: 999px; padding: 4px 10px; cursor: pointer; }
.fm-seg button[aria-pressed="true"] { background: var(--color-fg); color: var(--color-bg); }
.fm-btn { border: 1px solid var(--color-border-line); }
.fm-btn:hover, .fm-seg button:hover { color: var(--color-fg); }
.fm-seg button[aria-pressed="true"]:hover { color: var(--color-bg); }
.fm button:focus-visible, .fm input:focus-visible, .fm th button:focus-visible { outline: 2px solid var(--color-fg); outline-offset: 2px; }
.fm-chart { position: relative; min-height: 0; min-width: 0; }
.fm-chart svg { display: block; width: 100%; height: 100%; overflow: visible; }
.fm-node { cursor: pointer; transition: opacity var(--cds-dur-slow) var(--cds-ease-out); }
.fm-link { stroke: none; transition: opacity var(--cds-dur-slow) var(--cds-ease-out), fill-opacity var(--cds-dur-slow) var(--cds-ease-out); }
.fm-scroll { height: 100%; overflow-x: hidden; }
/* Equal mode: the card grows to the chart's full height, so the page scrolls, and the story rail stays in view */
.fm-stage.fm-tall { height: auto; }
.fm-stage.fm-tall .fm-main { height: auto; }
@media (min-width: 861px) { .fm-stage.fm-tall .fm-rail { align-self: start; position: sticky; top: var(--cds-pad-md); max-height: calc(100vh - 2 * var(--cds-pad-md)); } }
.fm-seg-l { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); padding: 4px 6px 4px 10px; }
.fm-lab { font-size: 13px; font-weight: 500; fill: var(--color-fg); paint-order: stroke; stroke: var(--color-panel); stroke-width: 3px; stroke-linejoin: round; cursor: pointer; transition: opacity var(--cds-dur-slow) var(--cds-ease-out); }
.fm-lab .v { fill: var(--color-fg); font-weight: 400; font-variant-numeric: tabular-nums; }
.fm-colhead { font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; fill: var(--color-fg); }
.fm-lab.big { font-size: 15px; font-weight: 600; }
.fm [hidden] { display: none !important; }
.fm-tip { position: absolute; pointer-events: none; background: var(--cds-surface-popover); border: 1px solid var(--cds-border); border-radius: var(--cds-radius); box-shadow: var(--cds-shadow-popover); padding: var(--cds-pad-xs) var(--cds-pad-sm); font-size: var(--cds-font-size-caption); max-width: 260px; z-index: 5; }
.fm-tip .k { color: var(--cds-text-secondary); }
.fm-card { position: absolute; left: 0; bottom: 0; width: min(330px, 100%); background: var(--cds-surface-popover); border: 1px solid var(--cds-border); border-radius: var(--cds-radius); box-shadow: var(--cds-shadow-popover); padding: var(--cds-pad-md); display: grid; gap: var(--cds-gap-xs); font-size: var(--cds-font-size-caption); z-index: 4; }
.fm-card h3 { margin: 0; font-size: var(--cds-font-size-heading); font-weight: 500; padding-right: 28px; }
.fm-card .fm-card-v { font-family: var(--font-anthropic-serif); font-size: 1.9rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.fm-card p { margin: 0; color: var(--color-fg-muted); line-height: 1.45; }
.fm-card .x { position: absolute; top: 8px; right: 8px; }
.fm-minibars { display: grid; gap: 4px; margin-top: 4px; }
.fm-minibar { display: grid; grid-template-columns: minmax(0, 1fr) 3.4rem; gap: 8px; align-items: center; }
.fm-minibar .t { display: grid; gap: 2px; min-width: 0; }
.fm-minibar .t span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-minibar .b { height: 6px; border-radius: 3px; }
.fm-minibar .n { text-align: right; font-variant-numeric: tabular-nums; }

/* Sections */
.fm-sec { display: grid; gap: var(--cds-gap-md); }
.fm-sec-head { display: grid; gap: var(--cds-gap-xs); max-width: 70ch; }
.fm-sec-head h2 { margin: 0; font-family: var(--font-anthropic-serif); font-weight: 400; font-size: clamp(1.3rem, 2vw, 1.6rem); line-height: 1.1; text-wrap: balance; }
.fm-sec-head p { margin: 0; line-height: 1.5; font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fm-panel { background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-lg); display: grid; gap: var(--cds-gap-sm); min-width: 0; }
.fm-panel-title { margin: 0; font-size: var(--cds-font-size-heading); font-weight: 500; }
.fm-panel-note { margin: 0; font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
.fm-exp { display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 21rem); gap: var(--cds-gap-md); align-items: stretch; }
.fm-bubble { position: relative; min-height: 520px; }
.fm-bubble svg { display: block; width: 100%; overflow: visible; }
.fm-ctrl { display: grid; gap: 6px; }
.fm-ctrl label { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); display: flex; justify-content: space-between; gap: 8px; }
.fm-ctrl input[type=range] { width: 100%; accent-color: var(--color-fg); }
.fm-ctrl .fm-ctrl-v { font-family: var(--font-anthropic-serif); font-size: 1.6rem; font-variant-numeric: tabular-nums; }
.fm-side { display: grid; gap: var(--cds-gap-md); align-content: start; }
.fm-detail { display: grid; gap: var(--cds-gap-xs); font-size: var(--cds-font-size-caption); }
.fm-detail h3 { margin: 0; font-size: var(--cds-font-size-heading); font-weight: 500; }
.fm-detail .row { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--color-border-line); padding-block: 4px; }
.fm-detail .row span:last-child { font-variant-numeric: tabular-nums; }
.fm-detail p { margin: 0; color: var(--color-fg-muted); line-height: 1.45; }
.fm-axis text { fill: var(--color-fg-muted); font-size: var(--cds-font-size-caption); }
.fm-axis line, .fm-axis path { stroke: var(--cds-chart-axis); }
.fm-grid line { stroke: var(--cds-chart-grid); }
.fm-zone { font-size: var(--cds-font-size-caption); fill: var(--color-fg-muted); letter-spacing: .06em; text-transform: uppercase; }
.fm-blab { font-size: 11px; fill: var(--color-fg); paint-order: stroke; stroke: var(--color-panel); stroke-width: 3px; pointer-events: none; }
.fm-dot { cursor: pointer; stroke: var(--color-panel); stroke-width: 1; }
.fm-dot.is-sel { stroke: var(--color-fg); stroke-width: 2; }

.fm-tablewrap { max-height: 460px; overflow: auto; }
.fm-table { width: 100%; border-collapse: collapse; font-size: var(--cds-font-size-caption); font-variant-numeric: tabular-nums; }
.fm-table th { position: sticky; top: 0; background: var(--color-panel); text-align: left; font-weight: 500; color: var(--color-fg-muted); border-bottom: 1px solid var(--color-border-line); padding: 6px 8px; white-space: nowrap; }
.fm-table th button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.fm-table td { padding: 6px 8px; border-bottom: 1px solid var(--color-border-line); white-space: nowrap; }
.fm-table td.num, .fm-table th.num { text-align: right; }
.fm-table tr { cursor: pointer; }
.fm-table tr:hover td { background: color-mix(in srgb, var(--color-fg) 4%, transparent); }
.fm-sharecell { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
.fm-sharecell i { display: block; height: 6px; border-radius: 3px; background: var(--color-fg); opacity: .7; }
.fm-sharetrack { width: 70px; height: 6px; border-radius: 3px; background: var(--cds-chart-grid); display: flex; }
.fm-search { font: inherit; font-size: var(--cds-font-size-caption); padding: 6px 10px; border: 1px solid var(--color-border-line); border-radius: 999px; background: var(--color-bg); color: var(--color-fg); width: min(260px, 100%); }
.fm-hide-narrow { }
.fm-foot { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); line-height: 1.55; display: grid; gap: var(--cds-gap-xs); max-width: 80ch; padding-bottom: var(--cds-pad-xl); }
.fm-foot p { margin: 0; }
.fm-fail { display: flex; align-items: center; justify-content: center; gap: 8px; height: 100%; min-height: 200px; color: var(--color-fg-muted); font-size: var(--cds-font-size-caption); }
.fm-fail::before { content: ""; width: .375rem; height: .375rem; border-radius: 50%; background: var(--color-bad); }
[data-dash-source-state=empty] { color: transparent; }
[data-dash-source-state=refreshing] { opacity: .5; transition: opacity var(--cds-dur-slow); }

@media (prefers-reduced-motion: no-preference) {
  .fm-intro .fm-link { animation: fm-fade 1.2s var(--cds-ease-out) both; animation-delay: calc(var(--col) * 0.35s); }
  .fm-intro .fm-node, .fm-intro .fm-lab { animation: fm-fade .8s var(--cds-ease-out) both; animation-delay: calc(var(--col) * 0.35s); }
  @keyframes fm-flow { from { stroke-dashoffset: var(--len); } to { stroke-dashoffset: 0; } }
  @keyframes fm-fade { from { opacity: 0; } }
}

@media (max-width: 1100px) {
  .fm-head { grid-template-columns: minmax(0, 1fr) auto; }
  .fm-kpis { grid-column: 1 / -1; grid-row: 2; }
}
@media (max-width: 860px) {
  .fm-kpis { grid-template-columns: repeat(auto-fit, minmax(min(100%, 6.5rem), 1fr)); gap: var(--cds-gap-sm); }
  .fm-stage { height: auto; grid-template-columns: minmax(0, 1fr); gap: var(--cds-gap-sm); padding: var(--cds-pad-sm); }
  .fm-rail { border-right: 0; padding-right: 0; overflow: visible; }
  .fm-rail > .fm-eyebrow { display: none; }
  .fm-steps { flex-direction: row; overflow-x: auto; scrollbar-width: none; }
  .fm-steps::-webkit-scrollbar { display: none; }
  .fm-step { white-space: nowrap; border: 1px solid var(--color-border-line); border-radius: 999px; padding: 4px 12px; gap: 6px; }
  .fm-step .n { width: auto; }
  .fm-caption { min-height: 6rem; padding-top: var(--cds-pad-sm); }
  .fm-ch { gap: 4px; }
  .fm-ch h2 { font-size: 1.1rem; }
  .fm-dollar-legend { display: flex; flex-wrap: wrap; gap: 2px 12px; }
  .fm-main { height: clamp(420px, 66vh, 600px); }
  .fm-toolbar > .fm-panel-note { display: none; }
  .fm-toolbar { flex-wrap: wrap; }
  .fm-seg-l { display: none; }
  .fm-crumb #hint { display: none; }
  .fm-exp { grid-template-columns: minmax(0, 1fr); }
  .fm-bubble { min-height: 420px; }
  .fm-card { width: 100%; }
  .fm-hide-narrow { display: none; }
}
