/* Editorial weekly charts. Optional risk exhibits retain the shared report layout. */
.weekly-edition { --weekly-prose-size: clamp(18px, 1.35vw, 20px); }
.weekly-edition .market-section > p:not([class]),
.weekly-edition .market-lede,
.weekly-edition .market-callout > p { max-width: 65ch; font: 400 var(--weekly-prose-size)/1.8 var(--font-serif); text-align: justify; text-align-last: start; -webkit-hyphens: auto; hyphens: auto; hyphenate-limit-chars: 7 3 3; }
.weekly-edition .market-section > p:not([class]),
.weekly-edition .market-lede { margin-block: 22px; }
.weekly-edition .market-number { font-family: var(--font-sans); }
.weekly-edition .market-sources > p:not([class]) { font: 400 14px/1.6 var(--font-sans); text-align: start; }
.weekly-edition .market-table-wrap { max-width: 760px; }
.weekly-edition .weekly-table-short { max-width: 600px; }
.weekly-edition .market-table :is(th, td).weekly-table-numeric { text-align: right; }
.weekly-edition .market-table :is(th, td).weekly-table-text { text-align: left; }
.weekly-edition .market-table tbody .weekly-table-numeric { white-space: nowrap; }
.weekly-edition .market-table thead th { vertical-align: bottom; }
.weekly-edition .market-table tbody th { letter-spacing: normal; }
.weekly-edition .research-figure figcaption { margin-bottom: 24px; text-align: center; }
.weekly-edition .research-figure h3 { max-width: none; margin-bottom: 0; text-wrap: balance; }
.weekly-edition .research-figure .figure-note { max-width: none; }
.weekly-price-layout { display: grid; grid-template-columns: minmax(0, 1fr) 190px; gap: 24px; align-items: center; }
.weekly-price-plot { color: var(--chart-line); }
.weekly-edition .weekly-price-plot svg { min-width: 0; }
.weekly-price-area { fill: url(#weekly-price-fill); }
.weekly-close-readout { text-align: center; padding: 22px 0 22px 20px; border-left: 1px solid var(--rule); }
.weekly-close-readout > span { display: block; font: 500 11px/1.5 var(--font-sans); letter-spacing: .06em; color: var(--ink-2); }
.weekly-close-readout > strong { display: block; margin-top: 12px; font: 500 36px/1.1 var(--font-sans); font-variant-numeric: tabular-nums; }
.weekly-close-readout > small { display: block; margin-top: 10px; font: 400 12px/1.5 var(--font-sans); color: var(--ink-2); }
.weekly-return { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--rule); }
.weekly-return span { display: block; font: 500 11px/1.5 var(--font-sans); letter-spacing: .07em; text-transform: uppercase; color: var(--ink-2); }
.weekly-return strong { display: block; margin-top: 8px; font: 500 34px/1.2 var(--font-sans); font-variant-numeric: tabular-nums; }
.weekly-return strong.positive { color: var(--chart-up); }
.weekly-return strong.negative { color: var(--chart-down); }
.weekly-edition .weekly-close-buttons { justify-content: center; gap: 6px; }
.weekly-edition .weekly-close-buttons button { min-height: 44px; border-radius: 24px; padding-inline: 14px; }
.weekly-data-detail { margin-top: 24px; border-top: 1px solid var(--rule); font: 400 12px/1.6 var(--font-sans); }
.weekly-data-detail summary { padding: 15px 0; color: var(--ink-2); cursor: pointer; }
.weekly-data-detail summary:hover { color: var(--gold-ink); }
.weekly-flow-chart { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(8px, 2vw, 24px); height: 300px; margin: 30px 10px 0 28px; }
.weekly-flow-chart::before { content: ''; position: absolute; top: var(--flow-zero, 25%); width: 100%; border-top: 1px solid var(--ink-3); }
.weekly-flow-zero { position: absolute; top: var(--flow-zero, 25%); left: -24px; transform: translateY(-50%); color: var(--ink-3); font: 400 12px/1 var(--font-sans); }
.weekly-flow-column { position: relative; text-align: center; }
.weekly-flow-bar { position: absolute; left: 20%; width: 60%; min-height: 1px; }
.weekly-flow-value { position: absolute; left: 0; width: 100%; font: 600 13px/1.4 var(--font-sans); font-variant-numeric: tabular-nums; }
.weekly-flow-date { position: absolute; bottom: 0; left: 0; width: 100%; color: var(--ink-2); font: 500 12px/1.5 var(--font-sans); }
.weekly-flow-key { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 22px; margin-top: 18px; color: var(--ink-2); font: 400 11px/1.5 var(--font-sans); }
.weekly-edition .market-template-bars { margin-inline: auto; max-width: 820px; }
.weekly-edition .liquidity-row { grid-template-columns: 160px minmax(0, 1fr) 86px; }
.weekly-edition .liquidity-track { background: transparent; height: 3px; border-bottom: 1px solid var(--rule); }
.weekly-edition .liquidity-track > span { position: relative; height: 3px; }
.weekly-edition .liquidity-track > span::after { content: ''; position: absolute; right: -4px; top: -3px; width: 9px; height: 9px; border-radius: 50%; background: var(--chart-line); }
.weekly-edition .liquidity-track > span.loss::after { background: var(--chart-down); }
.weekly-model-scroll svg { display: block; width: 100%; min-width: 0; }
.weekly-model-scroll .chart-axis { font-size: 13px; }
.weekly-model-axis-title { text-align: center; margin: 0 0 20px; font: 400 12px/1.5 var(--font-sans); color: var(--ink-2); }
.weekly-model-key { display: flex; flex-wrap: wrap; gap: 12px 24px; justify-content: center; font: 500 12px/1.5 var(--font-sans); color: var(--ink-2); }
.weekly-model-key span { display: inline-flex; align-items: center; gap: 8px; }
.weekly-model-key i { width: 24px; border-top: 3px var(--series-style) var(--series-color); }
.weekly-exit-lab { padding: clamp(16px, 3vw, 32px); border: 1px solid var(--rule); }
.weekly-exit-lab > p { font: 400 14px/1.65 var(--font-sans); }
.weekly-exit-lab .lab-result strong { font-size: clamp(30px, 4vw, 50px); }
.weekly-exit-lab input { width: 100%; accent-color: var(--gold-ink); margin: 14px 0 28px; }
.weekly-exit-lab .formula-box { overflow-wrap: anywhere; }

/* The October stress edition uses a restrained sage, rust and ochre chart key. */
.weekly-risk-edition { --weekly-sage: #3b7064; --weekly-ochre: #92642f; }
[data-theme="dark"] .weekly-risk-edition { --weekly-sage: #8cc6af; --weekly-ochre: #d8b578; }
.weekly-risk-edition .research-figure { padding: clamp(20px, 3vw, 34px); border-color: var(--rule); background: linear-gradient(180deg, color-mix(in srgb, var(--bg) 96%, var(--weekly-sage) 4%), var(--bg)); }
.weekly-risk-edition .research-figure figcaption { text-align: left; margin-bottom: 28px; }
.weekly-risk-edition .research-figure h3 { text-wrap: balance; max-width: 30ch; font-size: clamp(25px, 2.5vw, 32px); }
.weekly-risk-edition .figure-label { letter-spacing: .16em; }
.weekly-risk-edition .chart-rule { stroke-dasharray: 2 5; opacity: .7; }
.weekly-risk-edition .chart-axis { fill: var(--ink-2); }
.weekly-risk-edition .weekly-price-layout { display: flex; flex-direction: column-reverse; align-items: stretch; gap: 20px; }
.weekly-risk-edition .weekly-close-readout { display: grid; grid-template-columns: 1fr 1fr; align-items: center; border: 0; padding: 0 0 20px; text-align: left; border-bottom: 1px solid var(--rule); }
.weekly-risk-edition .weekly-close-readout > :is(span, strong, small) { grid-column: 1; }
.weekly-risk-edition .weekly-close-readout > strong { font-size: clamp(30px, 4vw, 42px); letter-spacing: -.04em; margin-top: 8px; }
.weekly-risk-edition .weekly-return { grid-column: 2; grid-row: 1 / 4; margin: 0; padding: 0 0 0 24px; border: 0; border-left: 1px solid var(--rule); text-align: right; }
.weekly-risk-edition .weekly-return strong { font-size: clamp(30px, 4vw, 42px); letter-spacing: -.04em; }
.weekly-risk-edition .weekly-price-plot { color: var(--chart-down); }
.weekly-risk-edition .weekly-price-plot .index-line { stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.weekly-risk-edition .weekly-price-plot .index-point { r: 3; opacity: .65; }
.weekly-risk-edition .weekly-price-plot .index-point.selected { r: 6; opacity: 1; }
.weekly-risk-edition .weekly-price-plot .index-point { stroke: currentColor; }
.weekly-risk-edition .weekly-price-plot .index-point.selected { fill: currentColor; }
.weekly-chart-event { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px 18px; border-left: 2px solid var(--chart-down); padding: 8px 12px; margin-bottom: 24px; background: color-mix(in srgb, var(--chart-down) 5%, transparent); font: 500 11px/1.5 var(--font-sans); }
.weekly-chart-event small { color: var(--ink-2); font-size: inherit; }
.weekly-model-baseline { stroke: var(--ink-3); stroke-dasharray: 3 6; opacity: .5; }
.weekly-model-guide { stroke: var(--ink-3); stroke-dasharray: 3 4; opacity: .4; }
.weekly-model-line { stroke-linecap: round; stroke-linejoin: round; }
.weekly-model-point { stroke: var(--bg); stroke-width: 2; opacity: 0; }
.weekly-model-point[r="6"] { opacity: 1; }
.weekly-model-readouts { display: grid; grid-template-columns: repeat(var(--series-count), minmax(0, 1fr)); gap: 18px; margin: 0 0 22px; padding-bottom: 22px; border-bottom: 1px solid var(--rule); }
.weekly-model-readouts > div { min-width: 0; }
.weekly-model-readouts span { display: block; font: 500 11px/1.5 var(--font-sans); color: var(--ink-2); }
.weekly-model-readouts i { display: inline-block; width: 15px; border-top: 2px solid var(--series-color); margin-right: 7px; vertical-align: middle; }
.weekly-model-readouts strong { display: block; color: var(--series-color); font: 500 clamp(25px, 3vw, 38px)/1.2 var(--font-sans); font-variant-numeric: tabular-nums; letter-spacing: -.04em; margin: 8px 0 5px; }
.weekly-model-readouts small { font: 400 11px/1.5 var(--font-sans); color: var(--ink-2); }
.weekly-model-control { padding-top: 10px; }
.weekly-model-control > span { display: block; font: 500 10px/1.5 var(--font-sans); color: var(--ink-2); letter-spacing: .08em; text-transform: uppercase; }
.weekly-model-control .chart-buttons { margin-top: 10px; gap: 7px; }
.weekly-model-control button { min-height: 44px; border-radius: 3px; min-width: 44px; padding: 8px 13px; }
.weekly-flow-summary { display: flex; justify-content: space-between; gap: 24px; align-items: center; padding-bottom: 18px; border-bottom: 1px solid var(--rule); }
.weekly-flow-summary span { display: block; color: var(--ink-2); font: 500 11px/1.5 var(--font-sans); }
.weekly-flow-summary strong { display: block; font: 500 36px/1.2 var(--font-sans); letter-spacing: -.04em; color: var(--chart-down); margin-top: 8px; }
.weekly-flow-summary strong small { font-size: 13px; letter-spacing: normal; }
.weekly-flow-summary p { text-align: right; font: 400 11px/1.7 var(--font-sans); color: var(--ink-2); }
.weekly-risk-edition .weekly-flow-bar { border-radius: 3px 3px 0 0; left: 28%; width: 44%; }
.weekly-risk-edition .weekly-flow-bar.loss { border-radius: 0 0 3px 3px; }
.weekly-risk-edition .weekly-flow-column:last-child { background: color-mix(in srgb, var(--chart-down) 4%, transparent); border-radius: 4px; }
.weekly-bar-axis { display: grid; grid-template-columns: 160px 1fr 86px; gap: 12px; color: var(--ink-3); font: 400 10px/1.5 var(--font-sans); padding-bottom: 10px; border-bottom: 1px solid var(--rule); }
.weekly-bar-axis span:last-child { text-align: right; }
.weekly-risk-edition .liquidity-row { margin: 0; padding-block: 13px; border-bottom: 1px solid color-mix(in srgb, var(--rule) 55%, transparent); }
.weekly-risk-edition .liquidity-row strong { font-weight: 600; color: var(--chart-down); }

@media (max-width: 900px) {
  .weekly-price-layout { grid-template-columns: minmax(0, 1fr) 160px; gap: 12px; }
  .weekly-close-readout > strong { font-size: 31px; }
}
@media (max-width: 600px) {
  .weekly-model-readouts { gap: 10px; }
  .weekly-model-readouts span, .weekly-model-readouts small { font-size: 10px; }
  .weekly-model-readouts strong { font-size: 25px; }
  .weekly-model-readouts i { width: 10px; margin-right: 5px; }
  .weekly-model-control button { padding-inline: 10px; font-size: 11px; }
  .weekly-flow-summary { display: block; }
  .weekly-flow-summary p { text-align: left; margin-top: 12px; }
  .weekly-bar-axis { grid-template-columns: 95px 1fr 64px; gap: 8px; }
  .weekly-model-scroll .chart-axis { font-size: 23px; }
  .weekly-edition .weekly-table-short .market-table { min-width: 0; }
  .weekly-edition .weekly-table-short :is(th, td) { padding-inline: 8px; }
  .weekly-edition .weekly-price-plot .chart-axis { font-size: 28px; }
  .weekly-edition .liquidity-row { grid-template-columns: 95px minmax(0, 1fr) 64px; gap: 8px; font-size: 11px; }
  .weekly-price-layout { display: flex; flex-direction: column-reverse; align-items: stretch; }
  .weekly-close-readout { display: grid; grid-template-columns: 1fr 1fr; align-items: center; padding: 0 0 18px; border: 0; border-bottom: 1px solid var(--rule); }
  .weekly-close-readout > span, .weekly-close-readout > strong, .weekly-close-readout > small { grid-column: 1; }
  .weekly-close-readout > strong { font-size: 30px; margin-top: 7px; }
  .weekly-close-readout > small { margin-top: 7px; font-size: 11px; }
  .weekly-return { grid-column: 2; grid-row: 1 / 4; margin: 0; padding: 12px 0 12px 10px; border-top: 0; border-left: 1px solid var(--rule); }
  .weekly-return strong { font-size: 31px; }
  .weekly-edition .weekly-close-buttons { gap: 5px; }
  .weekly-edition .weekly-close-buttons button { font-size: 11px; padding-inline: 11px; }
  .weekly-flow-chart { height: 265px; gap: 4px; margin-left: 16px; margin-right: 0; }
  .weekly-flow-zero { left: -16px; }
  .weekly-flow-value { font-size: 10px; }
  .weekly-flow-date { font-size: 10px; }
  .weekly-flow-bar { left: 15%; width: 70%; }
}
@media (max-width: 420px) {
  .weekly-edition { --weekly-prose-size: clamp(16px, 4.6vw, 18px); }
}
@media print {
  .weekly-close-buttons { display: none; }
  .weekly-price-layout { display: block; }
  .weekly-data-detail > .market-table-wrap { display: block; }
}
