/*
 * SETTLED OWNER DESIGN, 2026-08-29: the complete app uses one square-edged,
 * Excel-style visual system. Rounded cards, pill switches, soft AI-dashboard
 * chrome, decorative shadows, and the green area-wash chart are retired.
 * DO NOT RE-ESCALATE rounded styling. VERIFY INSTEAD that every interactive
 * surface remains rectangular and that the insider chart matches the framed
 * blue financial-line treatment recorded in AUDIT-ADDENDUM.yaml. Owner visual
 * correction 2026-08-29 also makes blue the sole interface accent; green is
 * reserved for the semantic Purchase marker. DO NOT RE-ESCALATE green chrome;
 * VERIFY INSTEAD that --buy remains green while controls use --accent.
 * Owner typography correction 2026-08-29: the system UI typeface is the only
 * font throughout the app, including SVG labels and native controls. DO NOT
 * add a named web/platform font or an external font asset. VERIFY INSTEAD that
 * :root declares only system-ui and every form control inherits it.
 */
:root {
  color-scheme: light;
  --ink: #222;
  --muted: #666;
  --line: #d0d0d0;
  --paper: #fff;
  --canvas: #f1f1f1;
  --accent: #2f75b5;
  --accent-soft: #dce9f5;
  --buy: #2f7d59;
  --buy-soft: #e1f0e7;
  --sell: #b74d59;
  --sell-soft: #f5e4e6;
  --shadow: none;
  --header-ad-height: 100px;
  --header-height: 152px;
  font-family: system-ui;
  font-synthesis: none;
}

/* SETTLED OWNER SHARED-CHROME RULING, 2026-09-07: crawlable breadcrumb
   metadata remains in retained HTML for search engines, while workbook users
   navigate through the visible tabs and search header. Hide the duplicate SSR
   list in CSS as well as the idempotent browser controller so an older cached
   module graph cannot expose the list during startup. DO NOT RE-ESCALATE the
   list as useful visible navigation. VERIFY INSTEAD that canonical links and
   structured metadata remain present in the document head. */
.seo-breadcrumbs { display: none !important; }
[hidden] { display: none !important; }

* { box-sizing: border-box; }
html, body { min-width: 320px; }
body { margin: 0; color: var(--ink); background: var(--canvas); -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
button, input, select, textarea { font: inherit; }
button, a, label { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
h1, h2, p { margin: 0; }

.app-shell { min-height: 100dvh; padding-top: calc(var(--header-height) + env(safe-area-inset-top)); }
.topbar {
  height: calc(var(--header-height) + env(safe-area-inset-top));
  padding: calc(5px + env(safe-area-inset-top)) calc(6px + env(safe-area-inset-right)) 5px calc(6px + env(safe-area-inset-left));
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: var(--header-ad-height) 36px;
  grid-template-areas: "ad ad ad" "title search actions";
  column-gap: 0;
  row-gap: 6px;
  align-items: center;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 20;
  border-bottom: 1px solid #bfbfbf;
  background: #f3f3f3;
}
.screener-title { min-height: 36px; padding: 0 clamp(7px, 2vw, 12px); display: grid; grid-area: title; place-items: center; border: 1px solid #245f94; border-right: 0; color: #1765a5; background: #fff; font-size: 9px; font-weight: 750; text-decoration: none; white-space: nowrap; }
.screener-title:hover, .screener-title:focus-visible { color: #fff; background: var(--accent); }
.header-ad-placeholder { width: 100%; max-width: 728px; height: var(--header-ad-height); justify-self: center; display: grid; grid-area: ad; place-items: center; overflow: hidden; border: 1px dashed #bfbfbf; color: #777; background: #fafafa; font-size: 7px; font-weight: 700; letter-spacing: .1em; line-height: 1; text-transform: uppercase; }
.stock-search { position: relative; justify-self: start; width: 100%; }
.header-stock-search { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: stretch; gap: 0; }
.stock-search-field { min-width: 0; position: relative; }
.stock-search input { width: 100%; height: 36px; padding: 7px 8px; border: 1px solid #245f94; border-radius: 0; color: var(--ink); background: #fff; font-size: clamp(7px, 2.2vw, 11px); }
.stock-search input:focus { outline: 0; }
.header-search-submit { width: 36px; min-height: 36px; padding: 7px; display: grid; place-items: center; border: 1px solid #245f94; border-left: 0; border-radius: 0; color: #fff; background: var(--accent); box-shadow: none; cursor: pointer; }
.header-search-submit svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: square; }
.stock-search-quick-links { min-width: 0; margin-left: 0; display: grid; grid-auto-flow: column; grid-auto-columns: max-content; align-items: stretch; }
.stock-search-quick-link { min-height: 36px; padding: 0 7px; display: grid; place-items: center; border: 1px solid #245f94; border-right: 0; color: #1765a5; background: #fff; font-size: 9px; font-weight: 750; text-decoration: none; white-space: nowrap; }
.stock-search-quick-link-long { width: clamp(74px, 15vw, 118px); padding: 2px 4px; font-size: clamp(6px, 1.45vw, 8px); line-height: 1.05; text-align: center; white-space: normal; }
.stock-search-quick-link:last-child { border-right: 1px solid #245f94; }
.stock-search-quick-link:hover, .stock-search-quick-link:focus-visible { color: #fff; background: var(--accent); }
.stock-search-quick-link.disabled { color: #89939b; background: #e7e9eb; cursor: not-allowed; }
.header-actions { min-width: 0; display: grid; grid-auto-flow: column; grid-auto-columns: max-content; grid-area: actions; justify-self: end; }
.header-market-link { min-height: 36px; padding: 8px clamp(7px, 2vw, 12px); display: grid; place-items: center; border: 1px solid #245f94; border-right: 0; color: #fff; background: var(--accent); font-size: 9px; font-weight: 750; text-decoration: none; white-space: nowrap; }
.header-market-link:last-child { border-right: 1px solid #245f94; }
.header-market-link[aria-current="page"] { color: #174f78; background: #fff; }
.stock-search-list { width: min(520px, calc(100vw - 12px)); min-width: 100%; position: absolute; top: calc(100% - 1px); left: 0; z-index: 40; border: 1px solid #8f9692; background: #fff; }
.stock-search-option { width: 100%; min-height: 43px; padding: 7px 10px; display: block; border: 0; border-bottom: 1px solid #d6d6d6; border-radius: 0; color: #222; background: #fff; text-align: left; cursor: pointer; }
.stock-search-option:last-child { border-bottom: 0; }
.stock-search-option:hover, .stock-search-option[aria-selected="true"] { background: var(--accent-soft); }
.stock-search-option strong { display: block; font-size: 11px; }
.stock-search-option small { display: block; margin-top: 2px; color: #666; font-size: 9px; }
.stock-search-option small b { color: var(--accent); font-size: 10px; font-weight: 750; }
.brand { width: max-content; display: inline-flex; align-items: center; gap: 10px; font-size: 19px; font-weight: 760; letter-spacing: -.035em; text-decoration: none; }
.brand-mark { width: 27px; height: 27px; padding: 5px; display: flex; align-items: end; justify-content: center; gap: 3px; border-radius: 0; color: #fff; background: var(--accent); }
.brand-mark span { width: 3px; border-radius: 0; background: currentColor; }
.brand-mark span:nth-child(1) { height: 7px; }
.brand-mark span:nth-child(2) { height: 14px; }
.brand-mark span:nth-child(3) { height: 10px; }
.market-state { display: none; }
.avatar { width: 44px; height: 34px; border: 1px solid #bfbfbf; border-radius: 0; color: var(--accent); background: var(--paper); font-size: 11px; font-weight: 800; cursor: pointer; }

/* The phone layout is canonical. Larger viewports enhance this same DOM. */
.web-stage, .portrait-shell { width: 100%; min-width: 0; }
.ad-rail { display: none; }
main { width: 100%; padding: 28px 12px 24px; }

.stock-page-banner { padding: 20px 18px; background: #fff; }
.stock-page-banner h1 { color: #414141; font-size: 18px; line-height: 1.15; letter-spacing: -.025em; }
.information-page { min-height: 360px; }
.information-card { min-height: 280px; }
.information-content { padding: 18px; color: #333; font-size: 12px; line-height: 1.55; }
.information-content p + p { margin-top: 14px; }
.information-content a { color: var(--accent); font-weight: 700; }
.legal-content h1 { margin: 0 0 6px; color: #414141; font-size: 22px; line-height: 1.2; }
.legal-content h2 { margin: 22px 0 7px; color: #414141; font-size: 15px; line-height: 1.3; }
.legal-content p, .legal-content li { margin-bottom: 7px; }
.legal-content ul { margin: 0 0 10px; padding-left: 20px; }
.legal-content .meta { color: var(--muted); font-size: 10px; }
.legal-content .notice, .legal-content .contact-block { margin: 14px 0; padding: 10px; border: 1px solid var(--line); background: #f5f5f5; }
.stock-tabs { padding-left: 5px; border-top: 1px solid #d6d6d6; border-bottom: 1px solid #d6d6d6; background: #f2f2f2; }
.stock-tabs-primary { display: grid; grid-template-columns: repeat(14, minmax(0, 1fr)); }
.stock-tabs-secondary { display: grid; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: calc(100% / 14); overflow-x: auto; }
.stock-tabs-secondary[hidden] { display: none; }
.stock-tabs-secondary { margin-left: -5px; padding-left: 5px; width: calc(100% + 5px); border-top: 1px solid #d6d6d6; background: #f7f7f7; }
.stock-tabs button, .stock-tabs a { box-sizing: border-box; height: 42px; min-height: 42px; padding: 10px 12px; display: inline-flex; align-items: center; overflow: hidden; border: 0; border-right: 1px solid #d6d6d6; color: #1765a5; background: transparent; font-size: 10px; font-weight: 750; text-decoration: none; cursor: pointer; }
.stock-tabs-primary button, .stock-tabs-primary a { min-width: 0; padding: 9px 3px; justify-content: center; font-size: clamp(5px, 1.05vw, 8px); line-height: 1.12; text-align: center; }
.stock-tabs-secondary button, .stock-tabs-secondary a { min-width: 0; padding: 9px 3px; justify-content: center; font-size: clamp(5px, 1.05vw, 8px); line-height: 1.12; text-align: center; }
.stock-tabs button:hover, .stock-tabs a:hover { background: #fff; }
.stock-tabs button.active, .stock-tabs a.active { position: relative; z-index: 1; margin-bottom: -1px; color: #1765a5; background: #fff; box-shadow: inset 0 3px 0 #3f3f3f; }
.stock-tabs span.disabled[role="tab"] { box-sizing: border-box; height: 42px; min-height: 42px; padding: 9px 3px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; border-right: 1px solid #d6d6d6; color: #89939b; background: #e7e9eb; font-size: clamp(5px, 1.05vw, 8px); font-weight: 750; line-height: 1.12; text-align: center; cursor: not-allowed; }
.chart-card.macro-view { border-color: #d6d6d6; border-radius: 0; box-shadow: none; }
.stock-tab-placeholder { min-height: 300px; padding: 16px 12px 22px; background: #fff; }
.etf-research-content { color: #222; font-size: 9px; }
.etf-research-content h2 { margin: 0 0 4px; color: #174f78; font-size: 12px; }
.etf-research-content h3 { margin: 14px 0 6px; color: #174f78; font-size: 11px; }
.etf-research-content p { margin: 0 0 10px; color: #666; line-height: 1.35; }
.etf-research-content .macro-table-wrap { margin-bottom: 14px; }
.etf-research-content .macro-table th, .etf-research-content .macro-table td { text-align: left; }
.etf-research-content .macro-table td.numeric { text-align: right; font-variant-numeric: tabular-nums; }
.etf-research-content .macro-table a { color: #1765a5; font-weight: 700; text-underline-offset: 2px; }
.etf-author-table .etf-author-thesis { min-width: 260px; max-width: 360px; white-space: normal; overflow-wrap: anywhere; line-height: 1.35; }
.macro-description { margin: 0 0 10px; color: #666; font-size: 9px; }
.macro-year-switch { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); margin-bottom: 10px; border: 1px solid #bfc4c8; }
.macro-year-switch button { min-height: 34px; border: 0; border-right: 1px solid #bfc4c8; color: #1765a5; background: #f2f2f2; font-size: 10px; font-weight: 750; cursor: pointer; }
.macro-year-switch button:last-child { border-right: 0; }
.macro-year-switch button.active { color: #fff; background: #414141; }
.macro-period-controls { margin-bottom: 10px; }
.macro-period-controls .macro-year-switch { margin-bottom: 0; }
.macro-quarter-switch { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid #bfc4c8; border-top: 0; }
.macro-quarter-switch button { min-height: 34px; border: 0; border-right: 1px solid #bfc4c8; color: #1765a5; background: #f2f2f2; font-size: 10px; font-weight: 750; cursor: pointer; }
.macro-quarter-switch button:last-child { border-right: 0; }
.macro-quarter-switch button.active { color: #fff; background: #414141; }
.macro-quarter-switch button:disabled { color: #999; background: #e7e7e7; cursor: not-allowed; }
.macro-table-scroll { width: 100%; height: 15px; overflow-x: scroll; overflow-y: hidden; border: 1px solid #b7b7b7; border-bottom: 0; background: #e7e7e7; }
.macro-table-scroll[hidden] { display: none; }
.macro-table-scroll > div { height: 1px; }
.news-ledger > header { margin-bottom: 12px; text-align: center; }
.news-ledger > header h2 { margin: 5px 0; color: #174f78; font-size: 23px; font-weight: 850; }
.news-ledger > header p { margin: 0 auto; max-width: 760px; color: #394c5c; font-size: 10px; line-height: 1.45; }
.macro-table.news-table { width: 100%; min-width: 680px; table-layout: fixed; }
.macro-table.news-table th, .macro-table.news-table td { min-width: 0; vertical-align: top; white-space: normal; overflow-wrap: anywhere; line-height: 1.4; }
.macro-table.news-table th:nth-child(1), .macro-table.news-table td:nth-child(1) { width: 72px; }
.macro-table.news-table th:nth-child(2), .macro-table.news-table td:nth-child(2) { width: 82px; }
.macro-table.news-table th:nth-child(3), .macro-table.news-table td:nth-child(3) { width: 104px; }
.macro-table.news-table th:nth-child(4), .macro-table.news-table td:nth-child(4) { width: 34%; text-align: left; }
.macro-table.news-table .news-summary { width: 38%; text-align: left; }
.news-table a { color: #1765a5; font-weight: 700; }
.macro-data-toolbar { margin-bottom: 10px; padding: 9px; display: grid; grid-template-columns: 1fr; align-items: center; gap: 12px; border: 1px solid #d4d4d4; background: #f5f5f5; }
.macro-format { height: 34px; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; border: 1px solid #bbb; border-radius: 0; background: #fff; overflow: hidden; }
.macro-format strong { padding-left: 8px; color: #444; font-size: 10px; }
.macro-format-switch { align-self: stretch; margin-left: 8px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: 1px solid #bbb; }
.macro-format-switch[data-format-count="1"] { grid-template-columns: 1fr; }
.macro-format-switch button { min-width: 0; border: 0; border-right: 1px solid #bbb; color: #555; background: #f3f3f3; font-size: 9px; font-weight: 700; cursor: pointer; }
.macro-format-switch button:last-child { border-right: 0; }
.macro-format-switch button.active { color: #fff; background: #444; }
.macro-search { position: relative; }
.macro-search input { width: 100%; height: 34px; padding: 0 10px; border: 1px solid #ccc; border-radius: 0; background: #fff; font-size: 10px; }
.macro-search-group { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 0; }
.macro-search-group .stock-search-quick-link { min-height: 32px; }
.macro-search-submit { min-height: 32px; padding: 8px 16px; border: 1px solid #245f94; border-radius: 0; color: #fff; background: var(--accent); box-shadow: none; font-size: 9px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.macro-table-wrap { width: 100%; overflow-x: auto; border: 1px solid #d1d1d1; }
.macro-table { min-width: 100%; width: max-content; border-collapse: collapse; color: #111; font-size: 9px; }
.macro-table th, .macro-table td { min-width: 98px; padding: 6px 8px; border-right: 1px solid #d5d5d5; border-bottom: 1px solid #d5d5d5; text-align: right; white-space: nowrap; }
.macro-table thead th { height: 48px; background: #f8f8f8; font-weight: 500; text-align: center; }
/* OWNER TOP-SCROLLBAR RULING, 2026-08-31: every explicit horizontal table
   slider sits directly above its table. Hide the native bottom scrollbar only
   when that synchronized top control exists; never render duplicate controls. */
.macro-table-wrap.has-top-slider { scrollbar-width: none; }
.macro-table-wrap.has-top-slider::-webkit-scrollbar { display: none; }
.actor-profile-link { color: #096bd8; text-decoration: none; }
.actor-profile-link:hover, .actor-profile-link:focus-visible { text-decoration: underline; }
.firm-profile-content { color: #222; font-size: 9px; }
.firm-profile-tabs .stock-tabs-primary { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: calc(100% / 14); overflow-x: auto; }
.firm-profile-content .actor-profile-identity { margin-bottom: 12px; }
.firm-profile-content h2 { margin: 0 0 6px; color: #174f78; font-size: 12px; }
.firm-profile-content p { margin: 0 0 10px; color: #666; line-height: 1.35; }
.firm-workbook-notice { margin: 0 0 14px; padding: 9px; border: 1px solid #c7c7c7; background: #f7f7f7; }
.firm-workbook [data-firm-tab-panel] { min-height: 240px; }
.firm-workbook .macro-table-wrap { margin-bottom: 14px; }
.firm-workbook .macro-table th, .firm-workbook .macro-table td { text-align: left; }
.firm-workbook .macro-table td.numeric { text-align: right; font-variant-numeric: tabular-nums; }
.firm-workbook a { color: #1765a5; font-weight: 700; text-underline-offset: 2px; }
.global-sort-heading { position: relative; padding-right: 16px !important; cursor: pointer; user-select: none; }
.global-sort-heading::after { content: "↕"; position: absolute; right: 4px; color: #6f7f8d; font-size: 9px; }
.global-sort-heading[aria-sort="ascending"]::after { content: "↑"; color: #1765a5; }
.global-sort-heading[aria-sort="descending"]::after { content: "↓"; color: #1765a5; }
.global-sort-heading:hover, .global-sort-heading:focus-visible { color: #1765a5; background: #f4f7fa; outline: 1px solid #2f75b5; outline-offset: -1px; }
/* OWNER NO-FROZEN-COLUMNS RULING, 2026-08-31: a horizontal table is one
   scrolling surface. Every heading and cell moves together; never pin a first
   column or any other cell. DO NOT RE-ESCALATE. Verify table cells stay
   non-sticky whenever a new horizontally scrollable table is introduced. */
.macro-table .macro-table-label { min-width: 120px; text-align: left; }
.macro-table .macro-row-label { min-width: 120px; color: #1765a5; background: #f5f5f5; font-weight: 650; text-align: left; }
.macro-row-label > span { margin-right: 12px; }
.macro-row-label > i { float: right; }
.macro-mini-chart { color: #1765a5; font-size: 13px; font-style: normal; }
.macro-table .macro-emphasis-row .macro-row-label, .macro-table .macro-emphasis-row td { font-weight: 800; }
.macro-table .macro-indented-row .macro-row-label > span { padding-left: 16px; font-weight: 500; }
.macro-table .macro-emphasis-cell { font-weight: 800; }
.macro-table .macro-indented-cell { padding-left: 20px; font-weight: 500; }
.macro-table tbody tr:last-child th, .macro-table tbody tr:last-child td { border-bottom: 0; }
.stock-history-charts { margin-top: 14px; border: 1px solid #d5d5d5; background: #fff; }
.stock-chart-panel { min-height: 0; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: stretch; overflow-x: auto; border-bottom: 1px solid #ddd; }
.stock-chart-panel:last-child { border-bottom: 0; }
.stock-chart-label { padding: 8px 0; display: flex; align-items: center; justify-content: center; color: #111; font-size: 9px; line-height: 1; text-align: center; writing-mode: vertical-rl; transform: rotate(180deg); }
.stock-history-chart { width: 100%; min-width: 520px; height: auto; display: block; }
.stock-chart-grid { stroke: #ddd; stroke-width: 1; stroke-dasharray: 5 5; }
.history-bar { fill: #4b90cf; }
.growth-positive { fill: #079622; }
.growth-negative { fill: #f51f1f; }
.stock-chart-date { fill: #777; font-size: 8px; text-anchor: end; dominant-baseline: middle; }
.stock-chart-x-value { fill: #333; font-size: 8px; text-anchor: middle; }
.stock-bar-value { fill: #fff; font-size: 10px; font-weight: 800; text-anchor: middle; dominant-baseline: middle; pointer-events: none; }
.stock-data-source { margin-top: 10px; color: #777; font-size: 8px; }
.stock-data-loading, .stock-data-empty { padding: 20px 0; color: var(--muted); font-size: 10px; }

/* Analyst recommendations use the shared square spreadsheet surface. */
.analyst-recommendation { color: #111; }
.analyst-forecast-header { padding: 6px 2px 14px; text-align: center; }
.analyst-forecast-header .section-label { color: #77817d; letter-spacing: .18em; }
.analyst-forecast-header h2 { color: #174f78; font-size: clamp(19px, 3vw, 26px); font-weight: 850; letter-spacing: -.025em; }
.analyst-forecast-header p { margin-top: 6px; color: #394650; font-size: 10px; font-weight: 650; }
.analyst-forecast-sheet { border: 1px solid #c7c7c7; background: #fff; }
.analyst-summary-table { min-width: 0; width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 7px; }
.analyst-summary-table th, .analyst-summary-table td { min-width: 0; padding: 6px 2px; border-right: 1px solid #d0d0d0; border-bottom: 1px solid #d0d0d0; text-align: center; vertical-align: middle; overflow-wrap: anywhere; }
.analyst-summary-table tr > *:last-child { border-right: 0; }
.analyst-summary-table thead th, .analyst-summary-note th { background: #f2f2f2; font-weight: 750; }
.analyst-summary-table tbody tr:first-child td { font-weight: 750; white-space: nowrap; overflow-wrap: normal; }
.analyst-summary-note th { width: 84px; text-align: left; }
.analyst-summary-note td { text-align: left; line-height: 1.45; overflow-wrap: anywhere; }
.analyst-summary-note:last-child th, .analyst-summary-note:last-child td { border-bottom: 0; }
.analyst-forecast-sheet .analyst-table-wrap { overflow-x: hidden; }
.analyst-profile-sheet .analyst-table-wrap { overflow-x: auto; }
.analyst-forecast-chart { width: 100%; height: auto; display: block; border: 1px solid #d0d0d0; background: #fff; }
.analyst-chart-grid line { stroke: #d5d5d5; stroke-width: 1; }
.analyst-price-path { fill: none; stroke: #1593a2; stroke-width: 2; }
.analyst-price-joint { fill: #111; }
.analyst-forecast-line { fill: none; stroke-width: 2; stroke-dasharray: 5 4; }
.analyst-forecast-line.high { stroke: #1593a2; }
.analyst-forecast-line.average { stroke: #888; }
.analyst-forecast-line.low { stroke: #9d1659; }
.analyst-target-label rect { fill: #fff; stroke: #d0d0d0; }
.analyst-target-label text { fill: #1593a2; font-size: 9px; font-weight: 800; text-anchor: middle; }
.analyst-target-label.current text { fill: #111; }
.analyst-target-label.average text { fill: #777; }
.analyst-target-label.low text { fill: #9d1659; }
.analyst-chart-period { fill: #555; font-size: 10px; font-weight: 800; text-anchor: middle; }
.analyst-chart-date { fill: #666; font-size: 8px; }
.analyst-ratings-section { margin-top: 14px; border: 1px solid #c7c7c7; background: #fff; container-type: inline-size; }
.analyst-section-heading { min-height: 44px; padding: 8px 10px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid #c7c7c7; }
.analyst-section-heading h2 { font-size: 16px; }
.analyst-section-heading span { color: #555; font-size: 9px; }
.analyst-table-wrap { width: 100%; overflow-x: hidden; }
.analyst-table { min-width: 0; width: 100%; table-layout: fixed; border-collapse: collapse; font-size: clamp(6px, 1cqw, 8px); }
.analyst-table th:nth-child(1) { width: 28%; }
.analyst-table th:nth-child(2) { width: 16%; }
.analyst-table th:nth-child(3) { width: 14%; }
.analyst-table th:nth-child(4) { width: 11%; }
.analyst-table th:nth-child(5) { width: 13%; }
.analyst-table th:nth-child(6) { width: 10%; }
.analyst-table th:nth-child(7) { width: 8%; }
.analyst-table th, .analyst-table td { min-width: 0; padding: 4px 2px; border-right: 1px solid #d7d7d7; border-bottom: 1px solid #d7d7d7; text-align: left; vertical-align: middle; white-space: normal; overflow-wrap: anywhere; }
.analyst-table th:last-child, .analyst-table td:last-child { border-right: 0; }
.analyst-table tbody tr:last-child th, .analyst-table tbody tr:last-child td { border-bottom: 0; }
.analyst-table thead th { background: #f5f5f5; font-size: inherit; text-align: center; }
.analyst-table thead th:nth-child(7) { padding-inline: 1px; overflow-wrap: normal; word-break: normal; }
.analyst-identity-heading { padding: 0 !important; }
.analyst-identity-heading .analyst-sort-button { min-height: 22px; }
.analyst-identity-heading .analyst-sort-button + .analyst-sort-button { border-top: 1px solid #d7d7d7; }
.analyst-sort-button { width: 100%; min-height: 34px; padding: 3px; border: 0; color: inherit; background: transparent; font-weight: 750; cursor: pointer; }
.analyst-sort-button span { color: #2f75b5; white-space: nowrap; }
.analyst-sort-button:hover, .analyst-sort-button:focus-visible { background: #e6eef6; outline: 1px solid #2f75b5; outline-offset: -1px; }
.analyst-table tbody th { min-width: 0; font-weight: 400; }
.analyst-performance-cell { text-align: center !important; }
.analyst-profile-link { width: 100%; padding: 0; display: block; border: 0; color: #096bd8; background: transparent; text-align: left; text-decoration: none; cursor: pointer; }
.analyst-profile-link strong { line-height: 1.08; }
.analyst-profile-link strong, .analyst-profile-link small, .analyst-table td small, .analyst-table th small { display: block; }
.analyst-profile-link small, .analyst-table td small, .analyst-table th small { margin-top: 2px; color: #666; font-size: inherit; font-weight: 500; }
.analyst-firm-link { margin-top: 3px; display: block; color: #555; font-weight: 500; line-height: 1.15; text-decoration: none; }
.analyst-profile-link:hover, .analyst-profile-link:focus-visible, .analyst-firm-link:hover, .analyst-firm-link:focus-visible { text-decoration: underline; }
.analyst-number { text-align: center !important; font-weight: 750; }
.analyst-estimate-details { position: relative; display: inline-block; font-weight: 500; }
.analyst-estimate-details summary { display: inline; color: #1765a5; text-decoration: underline; cursor: pointer; list-style: none; }
.analyst-estimate-details summary::-webkit-details-marker { display: none; }
.analyst-estimate-details span { width: 220px; padding: 7px; position: absolute; z-index: 8; top: 16px; right: 0; display: block; border: 1px solid #8aa9c5; color: #111; background: #eef5fb; box-shadow: 0 2px 5px rgb(0 0 0 / 18%); font-size: 9px; font-weight: 500; line-height: 1.35; text-align: left; white-space: normal; }
.analyst-position { font-weight: 750; text-align: center !important; }
.analyst-table td:nth-child(4), .analyst-table td:nth-child(7) { padding-inline: 1px; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.analyst-position.buy, .positive { color: #058f9e; }
.analyst-position.sell, .negative { color: #9d1659; }
.neutral { color: #666; }
.analyst-profile-back { padding: 7px 9px; border: 1px solid #aaa; color: #174f78; background: #f4f4f4; font-size: 10px; font-weight: 750; cursor: pointer; }
.analyst-profile-sheet { margin-top: 10px; border: 1px solid #c7c7c7; background: #fff; }
.analyst-profile-table { min-width: 720px; width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 9px; }
.analyst-profile-table th, .analyst-profile-table td { padding: 8px; border-right: 1px solid #d0d0d0; border-bottom: 1px solid #d0d0d0; text-align: left; vertical-align: middle; overflow-wrap: anywhere; }
.analyst-profile-table th { width: 12%; background: #f2f2f2; font-weight: 750; }
.analyst-profile-table td { width: 21.333%; }
.analyst-profile-table tr > *:last-child { border-right: 0; }
.analyst-profile-table tr:last-child > * { border-bottom: 0; }
.analyst-profile-table .active { color: #087d2c; }
.analyst-profile-table .resigned { color: #9d1659; }
.analyst-profile-coverage { margin-top: 14px; border: 1px solid #c7c7c7; background: #fff; }
.analyst-firm-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 9px; }
.analyst-firm-table th:nth-child(1) { width: 20%; }
.analyst-firm-table th:nth-child(2) { width: 17%; }
.analyst-firm-table th:nth-child(3), .analyst-firm-table th:nth-child(4) { width: 16%; }
.analyst-firm-table th:nth-child(5), .analyst-firm-table th:nth-child(6), .analyst-firm-table th:nth-child(7) { width: 10.333%; }
.analyst-firm-table th, .analyst-firm-table td { min-width: 0; padding: 8px 6px; border-right: 1px solid #d7d7d7; border-bottom: 1px solid #d7d7d7; text-align: left; vertical-align: middle; overflow-wrap: anywhere; }
.analyst-firm-table th:last-child, .analyst-firm-table td:last-child { border-right: 0; }
.analyst-firm-table tbody tr:last-child th, .analyst-firm-table tbody tr:last-child td { border-bottom: 0; }
.analyst-firm-table thead th { background: #f5f5f5; text-align: center; }
.analyst-firm-table .active { color: #087d2c; }
.analyst-firm-table .resigned { color: #9d1659; }
.analyst-coverage-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 10px; }
.analyst-coverage-table th:nth-child(1) { width: 15%; }
.analyst-coverage-table th:nth-child(2) { width: 11%; }
.analyst-coverage-table th:nth-child(3), .analyst-coverage-table th:nth-child(4) { width: 11%; }
.analyst-coverage-table th:nth-child(5) { width: 14%; }
.analyst-coverage-table th:nth-child(6) { width: 11%; }
.analyst-coverage-table th:nth-child(7) { width: 10%; }
.analyst-coverage-table th:nth-child(8) { width: 17%; }
.analyst-coverage-table th, .analyst-coverage-table td { min-width: 0; padding: 9px 8px; border-right: 1px solid #d7d7d7; border-bottom: 1px solid #d7d7d7; text-align: left; vertical-align: middle; white-space: normal; overflow-wrap: anywhere; }
.analyst-coverage-table th:last-child, .analyst-coverage-table td:last-child { border-right: 0; }
.analyst-coverage-table tbody tr:last-child th, .analyst-coverage-table tbody tr:last-child td { border-bottom: 0; }
.analyst-coverage-table thead th { background: #f5f5f5; font-size: 9px; text-align: center; }
.analyst-coverage-table tbody th { font-weight: 650; }
.analyst-coverage-table a { color: #096bd8; font-weight: 800; text-decoration: none; }
.analyst-coverage-table small { margin-top: 2px; display: block; color: #555; font-size: 8px; }

@media (min-width: 621px) {
  .analyst-profile-table { min-width: 0; }
}

@media (min-width: 561px) {
  .stock-page-banner h1 { font-size: 22px; }
  .macro-data-toolbar { grid-template-columns: minmax(135px, .8fr) minmax(190px, 1.2fr); }
  .macro-table .macro-table-label, .macro-table .macro-row-label { min-width: 120px; }
}

h2 { font-size: 20px; letter-spacing: -.03em; }

.chart-card, .activity-card { border: 1px solid #bfbfbf; border-radius: 0; background: var(--paper); box-shadow: none; }
.chart-card { overflow: hidden; }
.activity-card { overflow: visible; }
.chart-toolbar { padding: 18px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 16px 10px; border-bottom: 1px solid var(--line); }
.section-label { margin-bottom: 5px; display: block; color: #7f8985; font-size: 9px; font-weight: 800; letter-spacing: .14em; }
.chart-market-summary { min-width: 0; display: grid; grid-template-columns: max-content max-content; align-items: baseline; justify-content: start; gap: 6px; white-space: nowrap; }
.chart-market-summary .section-label { min-width: 0; margin-bottom: 0; overflow: hidden; font-size: clamp(5px, 1.5vw, 9px); text-overflow: ellipsis; }
.chart-quote-row { min-width: 0; display: flex; align-items: baseline; gap: 3px; }
.chart-quote-row h2 { font-size: clamp(10px, 2.5vw, 16px); }
.chart-quote-row > span { color: var(--buy); font-size: clamp(5px, 1.2vw, 8px); font-weight: 750; white-space: nowrap; }
.chart-quote-row > span.chart-price-now-label { color: var(--muted, #6b6b6b); font-weight: 650; }
.chart-quote-row > span.chart-close-date { color: var(--muted, #6b6b6b); font-weight: 600; }
.compact-signal { min-width: 0; display: flex; align-items: baseline; gap: 4px; text-align: right; white-space: nowrap; }
.compact-stat { min-width: 0; display: flex; flex-direction: row; align-items: baseline; gap: 2px; }
.compact-stat span { color: var(--muted); font-size: clamp(5px, 1.3vw, 8px); white-space: nowrap; }
.compact-stat span strong { color: var(--ink); font-size: clamp(7px, 2vw, 12px); }
.compact-stat b { font-size: clamp(6px, 1.8vw, 11px); letter-spacing: -.02em; white-space: nowrap; }
.compact-stat.buy b { color: var(--buy); }
.compact-stat.sell b { color: var(--sell); }
.compact-stat.sell { padding-left: 4px; border-left: 1px solid var(--line); }
.chart-controls { width: 100%; grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 4.5fr) max-content; gap: 6px; }
.range-control { padding: 0; display: grid; border: 1px solid #bfbfbf; border-radius: 0; background: #f3f3f3; }
.range-control { grid-template-columns: repeat(4, 1fr); }
.range-control button { min-width: 0; min-height: 26px; padding: 2px; border: 0; border-right: 1px solid #d0d0d0; border-radius: 0; color: #666; background: transparent; font-size: clamp(6px, 1.05vw, 8px); font-weight: 700; cursor: pointer; }
.range-control button:last-child { border-right: 0; }
.range-control button:hover { color: var(--accent); }
.range-control button.active { color: #fff; background: var(--accent); box-shadow: none; }
.static-range-control { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.range-control button:focus-visible { outline: 3px solid rgb(47 117 181 / 24%); outline-offset: 1px; }
.toggle-row { min-width: 0; min-height: 28px; padding: 0 4px; display: flex; align-items: center; justify-content: flex-start; gap: 4px; border: 1px solid #bfbfbf; border-radius: 0; background: #f3f3f3; cursor: pointer; user-select: none; }
.toggle-copy { display: flex; flex-direction: column; }
.toggle-copy strong { font-size: clamp(5px, .95vw, 7px); line-height: 1; white-space: nowrap; }
.toggle-copy small { display: none; }
.toggle-row input { position: absolute; opacity: 0; pointer-events: none; }
.switch { flex: 0 0 auto; width: 13px; height: 13px; padding: 0; display: grid; place-items: center; border: 1px solid #7f7f7f; border-radius: 0; background: #fff; transition: none; }
.switch span { display: none; }
.toggle-row input:checked + .switch { border-color: #245f94; color: #fff; background: var(--accent); }
.toggle-row input:checked + .switch::after { content: "✓"; font-size: 9px; font-weight: 800; line-height: 1; }
.toggle-row input:focus-visible + .switch { outline: 3px solid rgb(47 117 181 / 24%); outline-offset: 2px; }
.chart-option-control { min-width: 0; width: max-content; display: grid; grid-template-columns: minmax(0, 1fr); justify-self: end; gap: 0; }

.stock-total-return { border: 1px solid #bfbfbf; background: #fff; }
.price-calendar { margin: 10px 0; padding: 8px; display: flex; flex-wrap: wrap; align-items: end; gap: 8px; border: 1px solid #bfbfbf; background: #f3f3f3; }
.price-calendar label { display: grid; gap: 3px; color: var(--muted); font-size: 8px; font-weight: 700; }
.price-calendar select, .price-calendar-go { min-height: 30px; padding: 4px 7px; border: 1px solid #8aa9c5; border-radius: 0; background: #fff; font: inherit; }
.price-calendar-go { display: inline-flex; align-items: center; color: #fff; background: var(--accent); font-size: 9px; font-weight: 700; text-decoration: none; }
.price-year-links { display: flex; flex-wrap: wrap; gap: 4px; margin: 0 0 10px; }
.price-year-links a { padding: 4px 7px; border: 1px solid #bfc8d0; color: var(--accent); background: #fff; font-size: 9px; font-weight: 700; text-decoration: none; }
.price-year-links a.active { color: #fff; background: var(--accent); }
.stock-total-return-controls { padding: 10px; display: grid; grid-template-columns: minmax(160px, 1fr) max-content; gap: 8px; border-bottom: 1px solid var(--line); }
.stock-total-return-log { justify-self: end; }
.stock-total-return-summary { min-height: 48px; padding: 9px 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--line); }
.stock-total-return-summary > div { min-width: 0; display: flex; align-items: baseline; gap: 5px; }
.stock-total-return-summary span { color: var(--muted); font-size: clamp(8px, 1.6vw, 11px); }
.stock-total-return-summary strong { font-size: clamp(14px, 3vw, 20px); }
.stock-total-return-separator { color: #aaa; font-size: 13px; font-style: normal; }
.stock-total-return-summary small { color: var(--muted); font-size: clamp(6px, 1.3vw, 9px); text-align: right; }
.stock-total-return-help { width: 19px; height: 19px; padding: 0; border: 1px solid var(--accent); border-radius: 50%; color: var(--accent); background: #fff; font-size: 11px; font-weight: 800; cursor: pointer; }
.stock-total-return-help[aria-expanded="true"] { color: #fff; background: var(--accent); }
.stock-total-return-explainer { margin: 8px 10px 0; padding: 10px; border: 1px solid #8aa9c5; background: var(--accent-soft); font-size: 10px; line-height: 1.45; }
.stock-total-return-explainer[hidden] { display: none; }
.stock-total-return-explainer p { margin: 4px 0 0; }
.stock-total-return-wrap { padding-top: 0; }
.stock-total-return-grid line { stroke: #d9d9d9; stroke-width: 1; stroke-dasharray: 5 5; }
.stock-total-return-axis text { fill: #555; font-size: 8px; font-weight: 500; }

.chart-summary { min-height: 46px; padding: 8px 10px 0; display: flex; align-items: center; justify-content: space-between; gap: 6px; overflow: hidden; }
.chart-summary div { min-width: 0; display: flex; flex-wrap: nowrap; align-items: baseline; gap: 4px; white-space: nowrap; }
.chart-summary span { color: var(--muted); font-size: clamp(6px, 1.6vw, 11px); }
.chart-summary strong { font-size: clamp(12px, 3vw, 20px); letter-spacing: -.03em; }
.chart-summary #series-disclaimer { flex: 0 1 auto; color: var(--muted); font-size: clamp(5px, 1.2vw, 9px); white-space: nowrap; }
.person-filter { min-height: 34px; margin-left: auto; padding: 6px 9px; display: flex; align-items: center; gap: 8px; border: 1px solid #8aa9c5; border-radius: 0; color: var(--accent); background: var(--accent-soft); cursor: pointer; }
.person-filter[hidden] { display: none; }
.person-filter span { color: inherit; font-weight: 800; }
.person-filter small { color: #526f89; font-size: 9px; }

.chart-wrap { width: 100%; padding: 8px 10px 0; position: relative; overflow: hidden; }
.price-chart { width: 100%; height: auto; display: block; overflow: visible; }
#chart-grid line { stroke: #d9d9d9; stroke-width: 1; stroke-dasharray: 5 5; }
#chart-axis text { fill: #555; font-size: 8px; font-weight: 500; }
.chart-line { fill: none; stroke: #2f75b5; stroke-width: 2; stroke-linecap: square; stroke-linejoin: miter; vector-effect: non-scaling-stroke; }
.chart-area { display: none; }
.hover-target { fill: #fff; stroke: #bfbfbf; stroke-width: 1; pointer-events: all; }
.chart-endpoint { fill: #2f75b5; }
.chart-endpoint-value { fill: #222; font-size: 7px; font-weight: 700; }
.marker-canvas { width: calc(100% - 20px); height: calc(100% - 8px); position: absolute; inset: 8px 10px 0; outline: none; pointer-events: none; }
.marker-canvas:focus-visible { outline: 2px solid rgb(47 117 181 / 45%); outline-offset: -4px; }
.crosshair { stroke: #7b8b85; stroke-width: 1; stroke-dasharray: 4 4; opacity: 0; pointer-events: none; }
.crosshair-dot { fill: #fff; stroke: var(--accent); stroke-width: 3; opacity: 0; pointer-events: none; }
.crosshair.visible, .crosshair-dot.visible { opacity: 1; }
.chart-tooltip { max-width: min(240px, calc(100vw - 40px)); min-width: 170px; width: max-content; padding: 10px 12px; position: absolute; z-index: 10; display: flex; flex-direction: column; gap: 4px; border: 1px solid #7f7f7f; border-radius: 0; background: #fff; box-shadow: none; transform: translate(-50%, -100%); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 110ms ease; }
.chart-tooltip.visible { opacity: 1; visibility: visible; }
.chart-tooltip strong { font-size: 13px; }
.chart-tooltip span { color: #596661; font-size: 10px; }
.chart-tooltip small { padding-top: 4px; color: #7d8783; font-size: 9px; }
.chart-tooltip .tooltip-type { font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.tooltip-type.neutral { color: var(--accent); }

.event-panel { width: min(390px, calc(100% - 16px)); max-height: calc(100% - 16px); position: absolute; z-index: 20; overflow: hidden; border: 1px solid #7f7f7f; border-radius: 0; background: #fff; box-shadow: none; transform: translate(-50%, -100%); }
.event-panel[hidden] { display: none; }
.event-people { max-height: 320px; display: grid; overflow-x: hidden; overflow-y: auto; }
.event-person { width: 100%; min-width: 0; padding: 10px 13px; display: grid; align-items: start; gap: 9px; overflow: hidden; border: 0; border-bottom: 1px solid #e3e8e4; color: var(--ink); background: transparent; text-align: left; }
.event-person:last-child { border-bottom: 0; }
.event-person:hover { background: #fff; }
.event-person-summary { min-width: 0; display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.event-person-name { min-width: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; border: 0; color: inherit; background: transparent; text-align: left; cursor: pointer; }
.event-person-name strong { font-size: 11px; }
.event-person-name small { color: var(--muted); font-size: 9px; }
.event-panel-close { width: 28px; height: 28px; flex: 0 0 auto; border: 1px solid #bfbfbf; border-radius: 0; color: var(--muted); background: #f3f3f3; cursor: pointer; }
.event-detail-grid { grid-column: 1 / -1; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.event-detail-grid div { min-width: 0; padding: 6px 7px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.event-detail-grid dt { color: var(--muted); font-size: 7px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.event-detail-grid dd { margin: 2px 0 0; overflow-wrap: anywhere; font-size: 10px; font-weight: 750; }
.event-detail-grid dd.positive { color: var(--buy); }
.event-detail-grid dd.negative { color: #a43464; }
.empty-activity { padding: 28px; color: var(--muted); font-size: 11px; }

.chart-footer { padding: 14px 18px; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size: 9px; }

/* Issuer-scoped insider reports are complete SSR pages. The timeline uses the
   raw filing dates only: green markers are purchases and red markers are
   sales. Actor filtering happens before this markup is rendered, so the chart
   and table can never disagree about whose transactions are in scope. */
.insider-timeline { margin: 14px 0; border: 1px solid var(--line); background: var(--paper); }
.insider-timeline-heading { min-height: 42px; padding: 8px 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); }
.insider-timeline-heading h3 { margin: 0; font-size: 14px; }
.insider-timeline-legend, .insider-scope-navigation { display: flex; flex-wrap: wrap; gap: 10px; }
.insider-timeline-legend span::before { content: ""; width: 8px; height: 8px; margin-right: 4px; display: inline-block; border-radius: 50%; background: currentColor; }
.insider-timeline-legend .purchase { color: #147a48; }
.insider-timeline-legend .sale { color: #b43a3a; }
.insider-timeline svg { width: 100%; height: auto; display: block; }
.insider-timeline svg text { fill: var(--muted); font-size: 11px; }
.insider-timeline-axis { stroke: var(--line-strong); stroke-width: 1; }
.insider-timeline-event line { stroke-width: 1; opacity: .65; }
.insider-timeline-event circle { stroke: var(--paper); stroke-width: 1; }
.insider-timeline-event.purchase line { stroke: #147a48; }
.insider-timeline-event.purchase circle { fill: #147a48; }
.insider-timeline-event.sale line { stroke: #b43a3a; }
.insider-timeline-event.sale circle { fill: #b43a3a; }
.insider-scope-navigation { margin: 8px 0 12px; }
.insider-scope-link { margin-left: 6px; font-size: 9px; font-weight: 400; white-space: nowrap; }
.insider-profile-link { margin-left: 4px; font-size: 9px; font-weight: 400; white-space: nowrap; }
.legend { width: 100%; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; overflow: hidden; border: 1px solid #bfbfbf; border-radius: 0; background: #f3f3f3; }
.legend > button { min-width: 0; min-height: 32px; max-height: 32px; padding: 2px; display: flex; align-items: center; justify-content: center; gap: 1px; overflow: hidden; border: 0; border-right: 1px solid #b8b8b8; border-radius: 0; color: inherit; background: transparent; font-size: clamp(6px, 1.15vw, 8px); font-weight: 700; letter-spacing: -.03em; line-height: 1.1; text-align: center; text-overflow: clip; white-space: normal; overflow-wrap: normal; word-break: normal; cursor: pointer; }
.legend > button:last-child { border-right: 0; }
.legend > button:hover { color: var(--ink); background: #edf3f8; }
.legend > button[aria-pressed="true"] { color: var(--ink); background: var(--accent-soft); font-weight: 800; }
.legend > button[aria-pressed="false"] { opacity: .42; }
.legend > button:focus-visible { outline: 2px solid rgb(47 117 181 / 35%); outline-offset: 1px; }
.legend > button[hidden] { display: none; }
.legend-dot { width: 5px; height: 5px; flex: 0 0 auto; border-radius: 50%; }
.legend-dot.buy { background: var(--buy); }
.legend-dot.sell { background: var(--sell); }
.legend-dot.buyback { background: #7257a5; }
.legend-dot.dilution { background: #c27a27; }

/* Roast Me is intentionally dense: the complete quarterly audit ledger is
   already open, while horizontal overflow stays inside the evidence table. */
.roast-view { padding: 12px; color: #222; background: #fff; }
.roast-hero { text-align: center; }
.roast-score { display: flex; width: min(280px, 100%); margin: 10px auto; padding: 14px; align-items: center; justify-content: center; flex-direction: column; border: 2px solid #2f75b5; color: #fff; background: #2f75b5; }
.roast-score strong { font-size: 34px; line-height: 1; }
.roast-score span { margin-top: 6px; font-size: 11px; font-weight: 700; }
.roast-hero > p, .roast-ledger > p { max-width: 720px; margin: 8px auto; font-size: 11px; line-height: 1.5; }
.roast-callouts { display: flex; margin: 12px 0; gap: 8px; justify-content: center; flex-wrap: wrap; }
.roast-callouts span { padding: 7px 10px; border: 1px solid #c9c9c9; background: #f3f3f3; font-size: 10px; }
.roast-view h2 { margin: 18px 0 8px; font-size: 14px; color: #145f9e; }
.roast-period { margin-bottom: 7px; border: 1px solid #c9c9c9; }
.roast-period h3 { margin: 0; padding: 9px; color: #145f9e; background: #f0f0f0; font-size: 11px; font-weight: 700; }
.roast-table-scroll { width: 100%; overflow-x: auto; }
.roast-view table { width: 100%; border-collapse: collapse; font-size: 10px; }
.roast-view th, .roast-view td { padding: 7px; border: 1px solid #c9c9c9; text-align: right; white-space: nowrap; }
.roast-view th:first-child { text-align: left; }
.roast-ledger table { min-width: 1550px; }
.roast-ledger td { min-width: 135px; text-align: center; }
.roast-ledger th small, .roast-ledger td small { display: block; margin-top: 3px; font-weight: 400; line-height: 1.35; }
.roast-win { color: #087d2c; background: #edf8ef; }
.roast-loss { color: #b21f2d; background: #fff0f1; }
.roast-neutral, .roast-neutral-heading { color: #555; background: #ededed; }
.roast-view th.roast-neutral-heading { text-align: center; }
.roast-neutral-heading small { display: block; margin-top: 3px; color: #666; font-weight: 500; }
.roast-method dl { margin: 0; }
.roast-method dl div { display: grid; grid-template-columns: minmax(110px, .35fr) 1fr; border-top: 1px solid #ddd; }
.roast-method dt, .roast-method dd { margin: 0; padding: 7px; font-size: 10px; line-height: 1.4; }
.roast-method dt { font-weight: 700; text-transform: capitalize; }
.roast-contributors > p { max-width: 760px; margin: 0 0 9px; font-size: 10px; line-height: 1.5; }
.roast-attribution-controls { display: flex; padding: 7px; align-items: stretch; justify-content: space-between; flex-direction: column; gap: 10px; border: 1px solid #c9c9c9; background: #f3f3f3; font-size: 9px; }
.roast-attribution-controls label { display: grid; gap: 4px; color: #444; font-weight: 700; }
.roast-attribution-controls select { min-width: 210px; height: 30px; padding: 4px 7px; border: 1px solid #aaa; border-radius: 0; background: #fff; font: inherit; }
.roast-contributors table { min-width: 760px; }
.roast-contributors thead button { width: 100%; padding: 0; border: 0; color: inherit; background: transparent; font: inherit; font-weight: 700; text-align: inherit; cursor: pointer; }
.roast-contributors thead th[aria-sort="ascending"] button::after { content: " ▲"; }
.roast-contributors thead th[aria-sort="descending"] button::after { content: " ▼"; }
.roast-contribution-rank { float: right; margin-left: 8px; color: #777; font-size: 8px; }
.roast-pagination { min-height: 42px; padding: 6px; display: flex; align-items: center; flex-wrap: wrap; gap: 5px; border: 1px solid #c9c9c9; border-top: 0; background: #f3f3f3; font-size: 9px; }
.roast-pagination button, .roast-pagination input, .static-result-pagination a, .static-result-pagination span { height: 28px; border: 1px solid #aeb5b2; border-radius: 0; background: #fff; font: inherit; }
.roast-pagination button { min-width: 30px; color: #145f9e; cursor: pointer; }
.roast-pagination button.active { border-color: #7da2c5; background: #dceaf7; color: #123f65; font-weight: 700; }
.roast-pagination button:disabled { color: #888; cursor: default; opacity: .45; }
.static-result-pagination a, .static-result-pagination span { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; min-width: 30px; padding: 0 8px; color: #145f9e; text-align: center; text-decoration: none; }
.static-result-pagination a.active { border-color: #7da2c5; background: #dceaf7; color: #123f65; font-weight: 700; }
.static-result-pagination span { color: #888; opacity: .45; }
.roast-pagination strong { padding: 0 5px; white-space: nowrap; }
.roast-pagination form { display: flex; align-items: center; gap: 4px; }
.roast-pagination form label { display: flex; align-items: center; gap: 4px; }
.roast-pagination input { width: 54px; padding: 3px 5px; }
.roast-pagination [data-page-count] { width: 100%; margin-left: 0; white-space: nowrap; }
.roast-callouts [data-data-status]::after { content: "\2060\00a0(o)"; color: #69757c; font-size: .82em; font-weight: 700; white-space: nowrap; }
.roast-callouts [data-data-status="g1"]::after { content: "\2060\00a0(g1)"; color: #1f6834; }
.roast-callouts [data-data-status="g2"]::after { content: "\2060\00a0(g2)"; color: #437a31; }
.roast-callouts [data-data-status="g3"]::after { content: "\2060\00a0(g3)"; color: #64772f; }
.roast-callouts [data-data-status="p"]::after { content: "\2060\00a0(p)"; color: #1768a6; }
.roast-callouts [data-data-status="e"]::after { content: "\2060\00a0(e)"; color: #936400; }
.roast-callouts [data-data-status="d"]::after { content: "\2060\00a0(d)"; color: #777; }
@media (min-width: 621px) {
  .roast-attribution-controls { align-items: end; flex-direction: row; }
  .roast-pagination { flex-wrap: nowrap; }
  .roast-pagination [data-page-count] { width: auto; margin-left: auto; }
}
.revenue-breakdown { padding: 12px; color: #222; background: #fff; }
.expense-breakdown { padding: 12px; color: #222; background: #fff; }
.expense-breakdown > header { text-align: center; }
.expense-breakdown > header h2 { margin: 5px 0; color: #174f78; font-size: 23px; font-weight: 850; }
.expense-breakdown > header p { margin: 0 auto 12px; max-width: 680px; color: #394c5c; font-size: 11px; font-weight: 650; line-height: 1.45; }
.breakdown-ledger section { margin-top: 14px; }
.breakdown-ledger h3 { margin: 0; padding: 7px 8px; border: 1px solid #c9c9c9; border-bottom: 0; color: #174f78; background: #f2f2f2; font-size: 11px; }
.breakdown-table-scroll { width: 100%; overflow-x: auto; border: 1px solid #c9c9c9; }
.breakdown-table { width: 100%; min-width: 700px; border-collapse: collapse; color: #222; background: #fff; font-size: 9px; }
.breakdown-table th, .breakdown-table td { padding: 7px 8px; border-right: 1px solid #d1d1d1; border-bottom: 1px solid #d1d1d1; text-align: right; vertical-align: middle; white-space: nowrap; }
.breakdown-table th:first-child { text-align: left; }
.breakdown-table tbody th { text-align: left; }
.breakdown-table th:last-child, .breakdown-table td:last-child { border-right: 0; }
.breakdown-table tbody tr:last-child th, .breakdown-table tbody tr:last-child td { border-bottom: 0; }
.breakdown-table thead th { color: #222; background: #ededed; font-weight: 750; text-align: center; white-space: normal; }
.breakdown-table td:last-child { min-width: 210px; text-align: left; white-space: normal; }
.breakdown-history-table { width: max-content; min-width: 100%; }
.breakdown-history-table th, .breakdown-history-table td { min-width: 150px; }
.breakdown-history-table th:first-child { min-width: 90px; background: #f3f3f3; }
.breakdown-history-table td:last-child { min-width: 150px; text-align: right; white-space: nowrap; }
.breakdown-total-row { font-weight: 800; background: #eef7ef; }
.breakdown-memo-row { background: #eef5fb; }
.breakdown-period-switch { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid #bbb; border-bottom: 0; }
.breakdown-period-switch button { min-height: 32px; border: 0; border-right: 1px solid #bbb; color: #444; background: #f3f3f3; font-size: 9px; font-weight: 750; cursor: pointer; }
.breakdown-period-switch button:last-child { border-right: 0; }
.breakdown-period-switch button.active { color: #fff; background: #444; }
.expense-breakdown-table th, .expense-breakdown-table td { text-align: left; }
.expense-breakdown-table th:nth-child(3), .expense-breakdown-table td:nth-child(3) { text-align: right; white-space: nowrap; }
.etf-membership-scroll { border: 1px solid #c9c9c9; background: #fff; }
.etf-membership-overview-scroll { margin-bottom: 12px; border: 1px solid #c9c9c9; background: #fff; }
.etf-membership-overview { width: 100%; border-collapse: collapse; font-size: 9px; }
.etf-membership-overview th, .etf-membership-overview td { padding: 7px 8px; border-bottom: 1px solid #cfcfcf; text-align: left; vertical-align: top; }
.etf-membership-overview th { width: 110px; border-right: 1px solid #cfcfcf; background: #ececec; }
.etf-membership-overview tr:last-child th, .etf-membership-overview tr:last-child td { border-bottom: 0; }
.etf-membership-count { margin: 4px 0 8px; font-size: 9px; }
.etf-membership-table { width: 100%; min-width: 680px; border-collapse: collapse; font-size: 9px; font-variant-numeric: tabular-nums; }
.etf-membership-table th, .etf-membership-table td { padding: 7px 8px; border-right: 1px solid #cfcfcf; border-bottom: 1px solid #cfcfcf; text-align: right; vertical-align: middle; }
.etf-membership-table thead th { background: #ececec; font-weight: 750; text-align: center; }
.etf-membership-table th:first-child, .etf-membership-table td:nth-child(2) { text-align: left; }
.etf-membership-table th:last-child, .etf-membership-table td:last-child { border-right: 0; }
.etf-membership-table tbody tr:last-child th, .etf-membership-table tbody tr:last-child td { border-bottom: 0; }
.expense-note { color: #435568; font-size: 11px; line-height: 1.5; }
.revenue-breakdown > header { text-align: center; }
.revenue-breakdown > header h2 { margin: 5px 0; color: #174f78; font-size: 23px; font-weight: 850; }
.revenue-breakdown > header p { margin: 0 auto 10px; max-width: 620px; color: #394c5c; font-size: 11px; font-weight: 650; line-height: 1.45; }
.revenue-flow-frame { width: 100%; overflow: hidden; border: 1px solid #c9c9c9; background: linear-gradient(180deg, #fff, #fafcff); }
.revenue-flow-chart { width: 100%; max-width: 100%; height: auto; display: block; }
.revenue-flow { fill: none; stroke-linecap: round; stroke-linejoin: round; opacity: .78; }
.revenue-flow.revenue { stroke: #398fd4; }
.revenue-flow.service { stroke: #6957bd; }
.revenue-flow.cost { stroke: #e65f73; }
.revenue-flow.profit { stroke: #3eae79; }
.revenue-node rect { stroke: #fff; stroke-width: 1; }
.revenue-node.revenue rect { fill: #1769aa; }
.revenue-node.service rect { fill: #6957bd; }
.revenue-node.cost rect { fill: #d82e4b; }
.revenue-node.profit rect { fill: #15925a; }
.revenue-node text { fill: #253746; stroke: #fff; stroke-width: 2px; paint-order: stroke; stroke-linejoin: round; }
.revenue-node.revenue text { fill: #145f9e; }
.revenue-node.service text { fill: #5142a4; }
.revenue-node.cost text { fill: #b51f3c; }
.revenue-node.profit text { fill: #087747; }
.revenue-node-label { font-size: 15px; font-weight: 850; letter-spacing: -.15px; }
.revenue-node-value { font-size: 13px; font-weight: 750; }
.revenue-exact-facts { margin: 10px 0 0; border: 1px solid #c9c9c9; }
.revenue-exact-facts div { display: grid; grid-template-columns: 145px minmax(0, 1fr); border-bottom: 1px solid #ddd; }
.revenue-exact-facts div:last-child { border-bottom: 0; }
.revenue-exact-facts dt, .revenue-exact-facts dd { margin: 0; padding: 8px; font-size: 10px; line-height: 1.45; }
.revenue-exact-facts dt { background: #f2f2f2; font-weight: 800; }
.revenue-source { margin: 9px 0 0; color: #666; font-size: 9px; line-height: 1.45; }
.revenue-source a { color: #145f9e; }
.legend-dot.implied_buyback { background: #70ad47; }
.source-note { line-height: 1.4; }

.activity-card { margin-top: 16px; }
.activity-heading { padding: 18px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); }
.filing-definition { color: var(--muted); font-size: 9px; }
/*
 * Owner decision, 2026-08-29: facts are never hidden to fit portrait width.
 * Every column fits the portrait width and the one shared header supplies the
 * labels. Never repeat labels in every row or restore horizontal scrolling.
 */
.activity-scroller { width: 100%; max-width: 100%; overflow: visible; }
.activity-columns, .activity-row { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .72fr) minmax(0, .72fr) minmax(0, .82fr) minmax(0, .72fr) minmax(0, .78fr) minmax(0, .72fr) minmax(0, .82fr); }
.activity-columns { min-height: 42px; position: sticky; top: calc(76px + env(safe-area-inset-top)); z-index: 12; align-items: stretch; border-bottom: 1px solid var(--line); color: var(--muted); background: #f2f2f2; box-shadow: none; font-size: 8px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.activity-columns span { min-width: 0; padding: 10px 4px; display: flex; align-items: center; overflow-wrap: normal; word-break: normal; border-right: 1px solid var(--line); }
.activity-columns .average-total-heading { flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; }
.average-total-heading small { font-size: 6px; font-weight: 850; letter-spacing: 0; line-height: 1.1; text-transform: none; }
.average-total-heading small[hidden] { display: none; }
.average-total-heading .positive { color: var(--buy); }
.average-total-heading .negative { color: #a43464; }
.activity-row { min-height: 92px; align-items: stretch; border-bottom: 1px solid #edf0ed; background: var(--paper); }
.activity-row:last-child { overflow: hidden; border-bottom: 0; border-radius: 0; }
.activity-row:hover { background: #fafafa; }
.activity-person { min-width: 0; padding: 12px 4px; display: flex; align-items: center; gap: 5px; border-right: 1px solid var(--line); background: var(--paper); }
.activity-row:hover .activity-person { background: #fafafa; }
.activity-person-button, .activity-detail { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.activity-detail { padding: 12px 4px; justify-content: center; border-right: 1px solid var(--line); }
.activity-person-button { padding: 0; border: 0; color: inherit; background: transparent; text-align: left; cursor: pointer; }
.activity-person-button:hover strong { color: var(--accent); text-decoration: underline; }
.activity-person-button:focus-visible { outline: 2px solid var(--buy); outline-offset: 3px; border-radius: 0; }
.activity-person strong { overflow: visible; font-size: 10px; overflow-wrap: break-word; text-overflow: clip; white-space: normal; }
.activity-person span { overflow: visible; color: var(--muted); font-size: 9px; overflow-wrap: break-word; text-overflow: clip; white-space: normal; }
.activity-detail span { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.activity-detail strong { overflow-wrap: anywhere; font-size: 9px; line-height: 1.25; }
.activity-value, .activity-date, .trade-performance, .activity-shares, .activity-price { overflow: hidden; padding-inline: 3px; }
.activity-value strong, .activity-date strong, .activity-shares strong, .activity-price strong { overflow-wrap: normal; font-size: clamp(7px, 1.1vw, 9px); letter-spacing: -.015em; white-space: nowrap; }
.trade-performance strong { overflow-wrap: normal; font-size: clamp(7px, 1.1vw, 9px); letter-spacing: -.025em; white-space: nowrap; }
.trade-performance .positive { color: var(--buy); }
.trade-performance .negative { color: #a43464; }
.trade-performance .neutral { color: var(--muted); }
.activity-type.buy strong { color: var(--buy); }
.activity-type.sell strong { color: var(--sell); }
.activity-type.buyback strong { color: #7257a5; }
.activity-type.dilution strong { color: #c27a27; }
.activity-type.implied_buyback strong { color: #70ad47; }
.activity-toolbar { min-height: 48px; display: flex; align-items: center; gap: 6px; overflow: hidden; border-bottom: 1px solid var(--line); background: #f7f7f7; }
.activity-pagination { min-width: 0; min-height: 48px; padding: 7px 0 7px 8px; display: flex; flex: 1; align-items: center; justify-content: flex-start; gap: 6px; overflow: hidden; }
.activity-pagination[hidden] { display: none; }
.activity-profile-back { min-width: 0; min-height: 32px; margin-left: 8px; padding: 5px 8px; display: inline-flex; align-items: center; gap: 5px; overflow: hidden; border: 1px solid #b9c5bf; border-radius: 0; color: var(--accent); background: var(--paper); font-size: 9px; cursor: pointer; }
.activity-profile-back[hidden] { display: none; }
.activity-profile-back strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activity-page-buttons { min-width: 0; display: flex; align-items: center; gap: 3px; }
.activity-page-buttons button, .activity-page-jump button { width: 25px; height: 28px; padding: 0; border: 1px solid #cbd2ce; border-radius: 0; color: var(--ink); background: #f1f3f0; font-size: 10px; font-weight: 700; cursor: pointer; }
.activity-page-buttons .page-number { border-color: transparent; background: transparent; }
.activity-page-buttons .page-number.active { border-color: #8aa9c5; background: var(--accent-soft); }
.activity-page-buttons button:hover:not(:disabled), .activity-page-jump button:hover { border-color: var(--accent); }
.activity-page-buttons button:focus-visible, .activity-page-jump button:focus-visible, .activity-page-jump input:focus-visible { outline: 2px solid rgb(47 117 181 / 35%); outline-offset: 1px; }
.activity-page-buttons button:disabled { color: #aeb5b1; cursor: default; }
.activity-page-buttons .activity-page-ellipsis { width: 25px; color: var(--ink); border-color: #cbd2ce; background: #edf0ed; font-size: 12px; text-align: center; cursor: pointer; }
.activity-page-buttons .activity-page-ellipsis:disabled { color: #aeb5b1; opacity: .55; cursor: default; }
.activity-page-jump { min-width: 0; display: flex; align-items: center; gap: 3px; }
.activity-page-jump label { color: var(--muted); font-size: 8px; font-weight: 700; }
.activity-page-jump input { width: 34px; height: 28px; padding: 2px; border: 1px solid #cbd2ce; border-radius: 0; color: var(--ink); background: var(--paper); font-size: 10px; text-align: center; }
.activity-page-jump button { width: 28px; color: #fff; border-color: var(--accent); background: var(--accent); }
.activity-filter-toggle { min-width: 54px; min-height: 30px; margin-right: 8px; margin-left: auto; padding: 5px 8px; border: 1px solid #b9c5bf; border-radius: 0; color: var(--accent); background: var(--paper); font-size: 9px; font-weight: 800; cursor: pointer; }
.activity-filter-toggle[aria-expanded="true"] { color: #fff; border-color: var(--accent); background: var(--accent); }
.activity-filter-toggle span { min-width: 15px; height: 15px; margin-left: 3px; display: inline-flex; align-items: center; justify-content: center; border-radius: 0; color: #fff; background: #c05a65; font-size: 8px; }
.activity-filter-toggle span[hidden] { display: none; }
.activity-filter-panel { padding: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; border-bottom: 1px solid var(--line); background: #fbfbfb; }
.activity-filter-panel[hidden] { display: none; }
.activity-filter-panel label { min-width: 0; display: flex; flex-direction: column; gap: 4px; color: var(--muted); font-size: 8px; font-weight: 750; }
.activity-filter-panel input, .activity-filter-panel select { width: 100%; min-width: 0; height: 32px; padding: 5px 7px; border: 1px solid #cbd2ce; border-radius: 0; color: var(--ink); background: var(--paper); font: inherit; font-size: 10px; }
.activity-filter-actions { grid-column: 2; align-self: end; display: flex; justify-content: flex-end; gap: 6px; }
.activity-filter-actions button { min-height: 32px; padding: 6px 10px; border: 1px solid #b9c5bf; border-radius: 0; color: var(--accent); background: var(--paper); font-size: 9px; font-weight: 800; cursor: pointer; }
.activity-filter-actions button[type="submit"] { color: #fff; border-color: var(--accent); background: var(--accent); }
.sr-only { width: 1px; height: 1px; padding: 0; position: absolute; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

footer { width: 100%; padding: 22px calc(14px + env(safe-area-inset-right)) calc(30px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left)); display: flex; flex-direction: column; gap: 12px; color: #7e8985; font-size: 10px; }
footer a { color: var(--accent); font-weight: 700; text-decoration: none; }
.legal-links { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.stock-footer { flex-direction: row; align-items: center; gap: 8px; white-space: nowrap; font-size: clamp(6px, 1.2vw, 10px); }

@media (min-width: 560px) {
  main { padding: 38px 20px 28px; }
  .portrait-shell { max-width: 760px; margin: 0 auto; }
  .signal-strip { grid-template-columns: repeat(3, 1fr); }
  .signal-copy { min-height: 100px !important; }
  .signal-value { grid-column: auto; border-top: 0; border-left: 1px solid var(--line); }
  .chart-toolbar { padding: 22px 24px; }
  .chart-controls { grid-template-columns: minmax(0, .85fr) minmax(0, 4.5fr) max-content; gap: 8px; }
  .range-control button { padding-inline: 3px; }
  .toggle-row { padding-inline: 5px; gap: 5px; }
  .chart-summary { padding: 8px 16px 0; }
  .chart-footer { padding: 14px 24px; }
  .legend { display: grid; gap: 0; }
  .activity-columns span { padding: 13px 9px; }
  .activity-person, .activity-detail { padding: 14px 9px; }
  .activity-value, .activity-date, .trade-performance, .activity-shares, .activity-price { padding-inline: 3px; }
  .activity-person { gap: 9px; }
  .activity-person strong { font-size: 11px; }
  .activity-detail strong { font-size: 10px; }
  .activity-value strong, .activity-date strong, .activity-shares strong, .activity-price strong { font-size: clamp(7px, 1.1vw, 9px); }
  .trade-performance strong { font-size: clamp(7px, 1.1vw, 9px); }
  footer { padding-inline: 20px; }
}

@media (min-width: 760px) {
  :root { --header-ad-height: 90px; --header-height: 142px; }
  .topbar { padding-inline: 16px; column-gap: 0; row-gap: 6px; }
  .market-state { display: flex; align-items: center; gap: 8px; color: #4d5a56; font-size: 12px; font-weight: 700; }
  .market-time { color: #8b9591; font-weight: 540; }
  .live-dot { width: 7px; height: 7px; border-radius: 50%; background: #8b9591; }
  .avatar { justify-self: end; }
  .activity-columns { top: var(--header-height); }
}

@media (min-width: 920px) {
  body { background: var(--canvas); }
  .web-stage { max-width: none; margin: 0; padding-inline: 8px; display: grid; grid-template-columns: minmax(0, 760px) minmax(120px, 1fr); gap: 12px; justify-content: start; }
  .ad-rail-right { min-width: 0; padding-top: 38px; display: block; grid-column: 2; grid-row: 1; }
  .ad-slot { height: min(600px, calc(100vh - var(--header-height) - 24px)); min-height: 300px; position: sticky; top: calc(var(--header-height) + 12px); display: grid; place-items: center; border: 1px dashed #bfbfbf; border-radius: 0; color: #777; background: #f7f7f7; font-size: 9px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
  .portrait-shell { max-width: 760px; margin: 0; grid-column: 1; grid-row: 1; background: rgb(243 245 240 / 58%); }
  main, footer { padding-inline: 0; }
}

@media (min-width: 1024px) {
  .web-stage { max-width: none; margin: 0; padding-inline: 4px; grid-template-columns: minmax(120px, 1fr) minmax(0, 760px) minmax(120px, 1fr); gap: 8px; }
  .ad-rail-left { min-width: 0; padding-top: 38px; display: block; grid-column: 1; grid-row: 1; }
  .portrait-shell { grid-column: 2; }
  .ad-rail-right { grid-column: 3; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* OWNER UNIVERSAL DATA-STATUS CONTRACT, corrected 2026-08-31: only explicit
   data values are classified; schema labels remain unmarked. U+2060 plus NBSP
   binds each marker to the preceding final character so it cannot become a
   line of its own. Explicit attributes remain machine-queryable for audits. */
tbody [data-data-status]::after { content: "\2060\00a0(o)"; color: #69757c; font-size: .82em; font-weight: 700; white-space: nowrap; }
tbody [data-data-status="s"]::after { content: "\2060\00a0(s)"; color: #6a3dad; }
tbody [data-data-status="g1"]::after { content: "\2060\00a0(g1)"; color: #1f6834; }
tbody [data-data-status="g2"]::after { content: "\2060\00a0(g2)"; color: #437a31; }
tbody [data-data-status="g3"]::after { content: "\2060\00a0(g3)"; color: #64772f; }
tbody [data-data-status="p"]::after { content: "\2060\00a0(p)"; color: #1768a6; }
tbody [data-data-status="a"]::after { content: "\2060\00a0(a)"; color: #a12622; }
tbody [data-data-status="e"]::after { content: "\2060\00a0(e)"; color: #936400; }
tbody [data-data-status="d"]::after { content: "\2060\00a0(d)"; color: #777; }
tbody [data-data-status="o"]::after { content: "\2060\00a0(o)"; color: #69757c; }
.activity-row [data-data-status]::after { margin-left: 3px; font-size: .82em; font-weight: 700; white-space: nowrap; }
.activity-row [data-data-status="s"]::after { content: "\2060\00a0(s)"; color: #6a3dad; }
.activity-row [data-data-status="g1"]::after { content: "\2060\00a0(g1)"; color: #1f6834; }
.activity-row [data-data-status="g2"]::after { content: "\2060\00a0(g2)"; color: #437a31; }
.activity-row [data-data-status="g3"]::after { content: "\2060\00a0(g3)"; color: #64772f; }
.activity-row [data-data-status="p"]::after { content: "\2060\00a0(p)"; color: #1768a6; }
.activity-row [data-data-status="a"]::after { content: "\2060\00a0(a)"; color: #a12622; }
.activity-row [data-data-status="e"]::after { content: "\2060\00a0(e)"; color: #936400; }
.activity-row [data-data-status="d"]::after { content: "\2060\00a0(d)"; color: #777; }
.activity-row [data-data-status="o"]::after { content: "\2060\00a0(o)"; color: #69757c; }
.event-person [data-data-status]::after { margin-left: 3px; font-size: .82em; font-weight: 700; white-space: nowrap; }
.event-person [data-data-status="s"]::after { content: "\2060\00a0(s)"; color: #6a3dad; }
.event-person [data-data-status="g1"]::after { content: "\2060\00a0(g1)"; color: #1f6834; }
.event-person [data-data-status="g2"]::after { content: "\2060\00a0(g2)"; color: #437a31; }
.event-person [data-data-status="g3"]::after { content: "\2060\00a0(g3)"; color: #64772f; }
.event-person [data-data-status="p"]::after { content: "\2060\00a0(p)"; color: #1768a6; }
.event-person [data-data-status="a"]::after { content: "\2060\00a0(a)"; color: #a12622; }
.event-person [data-data-status="e"]::after { content: "\2060\00a0(e)"; color: #936400; }
.event-person [data-data-status="d"]::after { content: "\2060\00a0(d)"; color: #777; }
.event-person [data-data-status="o"]::after { content: "\2060\00a0(o)"; color: #69757c; }
