/* The Hunter's Ledger: tabbed report pages, design v6 (T-0500.1.7).
   Loaded only by reports tagged for tabs (.hl-report-page). Untagged pages never see it.

   What it draws: every report section and the generated data view is a dashboard panel on one of two
   fills (page, card), with a header bar and a 3px edge in the selected tab's site accent. The accent
   is used for lines, marks, labels and links, never as a fill; status words keep green, amber and red.
   No gradients, glows or shadows, except the site-recipe header bars and the gold featured site-sponsor panel. Site tokens carry the neutrals; the muted text token is scoped here.

   Rules this file keeps (each is gated, see tools/report-tooling):
   - nothing in chrome below 13px; prose and table text are set by this file, not left to the theme;
   - every chrome control is at least 44 by 44px;
   - the report's own text, tables and figures are never hidden, clipped or reordered; no-JS and print show
     every section in order (print drops the panel chrome and the tab bar);
   - the dark theme only: the site pins dark, so there is no light mirror of these tokens.

   Accents (site section hues, custom.scss section pages): Overview purple (Reports), Victims amber
   (Impact), Chain orange (Techniques), Timeline blue (The Wire), Attribution fuchsia (Actors),
   Indicators cyan (STIX), Confidence teal (Families). Red and green stay with status and with the
   Detections and IOC feed buttons. */

/* ---------- Tokens ---------- */
html:has(.hl-report-page) {
  /* elevation ladder (v6.1): well #0b0b0b < page #111111 < panel #1c1c1c < raised bar/cell #262626; panels carry a 1px #3a3a3a border.
     The site tokens (#1a1a1a card on #111 page) were one step apart and read as one surface, so the report scope sets its own ladder. */
  --rv-well: #0b0b0b;
  --rv-bg: var(--hl-bg-page, #111111);
  --rv-card: #1c1c1c;
  --rv-row: #262626;
  --rv-line: #3a3a3a;
  --rv-row-line: #2e2e2e;
  --rv-fs: 16px;      /* secondary text floor at desktop and tablet; the Executive Summary prose stays 18px */
  --rv-fs-mono: 14px; /* mono micro-labels */
  --rv-text: var(--hl-text-primary, #eeeeee);
  --rv-muted: #a8a8a8; /* 7.3:1 on the card, 7.6:1 on the header row; the site token stays #888 for the rest of the site */
  --rv-ok: var(--hl-accent-green, #4ade80);
  --rv-warn: var(--hl-sev-med-lbl, #facc15);
  --rv-bad: var(--hl-accent-red, #f87171);
  --rv-gold: #d4a73a;     /* the site sponsor's featured panel: label, Visit button, sticky mark label */
  --rv-gold-bar: #b8902f; /* its 4px left bar and glow, the site's gold */
  --rv-radius: 8px;
  --rv-pad: 24px;
  --rv-display: var(--hl-font-display, 'Space Grotesk', system-ui, sans-serif);
  --rv-mono: ui-monospace, 'Cascadia Mono', SFMono-Regular, Menlo, Consolas, monospace;
  --rv-hue-overview: #a371f7;
  --rv-hue-victims: #e879f9; /* Actors hue: Impact amber (#fbbf24) reads as the site's medium-severity label colour on the tier bars */
  --rv-hue-chain: #fb923c;
  --rv-hue-timeline: #58a6ff;
  --rv-hue-attribution: #e879f9;
  --rv-hue-indicators: #22d3ee;
  --rv-hue-confidence: #2dd4bf;
}
/* The accent in force follows the selected tab (hl-report-tabs.js sets data-rv-hue on the page). */
.hl-report-page { --acc: var(--rv-hue-overview); }
.hl-report-page[data-rv-hue="overview"], .hl-rv-tabs [data-rv-hue="overview"], .hl-rv-nextprev [data-rv-hue="overview"], .hl-rv-menu-item[data-rv-hue="overview"] { --acc: var(--rv-hue-overview); }
.hl-report-page[data-rv-hue="victims"], .hl-rv-tabs [data-rv-hue="victims"], .hl-rv-nextprev [data-rv-hue="victims"], .hl-rv-menu-item[data-rv-hue="victims"] { --acc: var(--rv-hue-victims); }
.hl-report-page[data-rv-hue="chain"], .hl-rv-tabs [data-rv-hue="chain"], .hl-rv-nextprev [data-rv-hue="chain"], .hl-rv-menu-item[data-rv-hue="chain"] { --acc: var(--rv-hue-chain); }
.hl-report-page[data-rv-hue="timeline"], .hl-rv-tabs [data-rv-hue="timeline"], .hl-rv-nextprev [data-rv-hue="timeline"], .hl-rv-menu-item[data-rv-hue="timeline"] { --acc: var(--rv-hue-timeline); }
.hl-report-page[data-rv-hue="attribution"], .hl-rv-tabs [data-rv-hue="attribution"], .hl-rv-nextprev [data-rv-hue="attribution"], .hl-rv-menu-item[data-rv-hue="attribution"] { --acc: var(--rv-hue-attribution); }
.hl-report-page[data-rv-hue="indicators"], .hl-rv-tabs [data-rv-hue="indicators"], .hl-rv-nextprev [data-rv-hue="indicators"], .hl-rv-menu-item[data-rv-hue="indicators"] { --acc: var(--rv-hue-indicators); }
.hl-report-page[data-rv-hue="confidence"], .hl-rv-tabs [data-rv-hue="confidence"], .hl-rv-nextprev [data-rv-hue="confidence"], .hl-rv-menu-item[data-rv-hue="confidence"] { --acc: var(--rv-hue-confidence); }

/* ---------- Frame ---------- */
html:has(.hl-report-page) main.content { max-width: 1240px !important; padding-inline: 20px !important; }
.hl-report-page { padding-top: 24px; min-width: 0; }
/* the featured site-sponsor band is the first thing in the column: the page's 24px top padding clears the site nav, the header follows 24px below */
.hl-report-page::before { display: none !important; }
.hl-report-page *, .hl-rv-back, .hl-rv-figure-dialog { box-sizing: border-box; }
.hl-report-page [hidden], .hl-rv-back[hidden] { display: none !important; }
.hl-report-page .hl-post-body { display: block; min-width: 0; }
.hl-report-page [id] { scroll-margin-top: calc(var(--hl-rv-nav-h, 0px) + var(--hl-rv-bar-h, 52px) + 16px); }
html:has(.hl-report-page) .hl-back-top { display: none !important; }
/* The site's Sponsors rail (T-0500.1.8, Joseph 2026-10-30): the Monthly sponsors appear on a tabbed page the way they do on every other page.
   Where the left gutter fits it, from 1600px up, the rail is the site's fixed card, centred in the gutter between the viewport edge and the 1200px
   column with at least 24px clear on each side (the site's own formula assumes a 900px column and would touch this one). Below 1600px it is the
   site's usual in-flow strip under the navbar; custom.scss draws that up to 1280px, so 1281 to 1599px repeats those rules here. */
@media (min-width: 1281px) and (max-width: 1599px) {
  body:has(.hl-report-page) .hl-sponsor-rail {
    position: static; transform: none; width: auto; max-width: 900px; margin: 0 auto; padding: 9px 28px 3px;
    flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px;
  }
  body:has(.hl-report-page) .hl-sponsor-rail__label { width: 100%; margin-bottom: 0; }
  body:has(.hl-report-page) .hl-sponsor-rail__item { flex: 0 1 auto; display: inline-flex; align-items: center; gap: 9px; padding: 6px 10px; }
  body:has(.hl-report-page) .hl-sponsor-rail__logo { margin-bottom: 0; max-height: 24px; flex-shrink: 0; }
  body:has(.hl-report-page) .hl-sponsor-rail__name { font-size: 0.78rem; }
  body:has(.hl-report-page) .hl-sponsor-rail__tagline { font-size: 0.68rem; line-height: 1.35; margin-top: 1px; }
}
@media (min-width: 1600px) {
  body:has(.hl-report-page) .hl-sponsor-rail {
    --rail-gutter: calc(50vw - 600px);
    --rail-w: min(200px, calc(var(--rail-gutter) - 48px));
    width: var(--rail-w); left: calc((var(--rail-gutter) - var(--rail-w)) / 2);
  }
}

/* ---------- Controls: one recipe, 44px floor ---------- */
.hl-report-page :is(button, input, select, summary, [role="tab"], [data-rv-chrome] a, [data-rv-chrome]:is(a, button, input, select, summary)) { min-height: 44px; min-width: 44px; }
.hl-report-page :is(button, input, select) {
  font: inherit; font-size: var(--rv-fs); line-height: 1.4; font-weight: 400; color: var(--rv-text);
  background: transparent; border: 1px solid var(--rv-line); border-radius: var(--rv-radius);
  padding: 0 14px; max-width: 100%; cursor: pointer; box-shadow: none; text-transform: none; letter-spacing: 0;
}
.hl-report-page :is(input, select) { background: var(--rv-bg); padding: 0 12px; cursor: text; }
.hl-report-page select { cursor: pointer; }
.hl-report-page button:hover { border-color: var(--rv-muted); }
.hl-report-page button[aria-pressed="true"] { border-color: var(--acc); }
.hl-report-page button:disabled { color: var(--rv-muted); cursor: default; }
.hl-report-page :is(a, button, input, select, summary, [tabindex]):focus-visible,
.hl-rv-back:focus-visible, .hl-rv-figure-dialog :focus-visible { outline: 2px solid var(--acc, #58a6ff); outline-offset: 2px; }
.hl-report-page .hl-rv-panel:focus { outline: none; }
.hl-report-page :where(a[data-rv-chrome]) { display: inline-flex; align-items: center; }
.hl-report-page summary { color: var(--rv-text); }
.hl-report-page .hl-rv-target { outline: 2px solid var(--acc); outline-offset: 5px; }
/* compact tool buttons: mono uppercase text, outlined (the site's .hl-ioctable__btn language) */
.hl-report-page :is(.hl-rv-table-tools, .hl-rv-teardown-controls) button, .hl-report-page .hl-rv-view-summary button {
  padding: 0 12px; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--rv-muted);
}
.hl-report-page :is(.hl-rv-table-tools, .hl-rv-teardown-controls) button:hover, .hl-report-page .hl-rv-view-summary button:hover { color: var(--rv-text); }

/* ---------- Header: the site's own report header look (custom.scss .hl-post-header, lines 268-290 and 321-329), tinted by the tab accent ----------
   The gradient box, the 4px left bar, the pill badge and the white-to-accent title are the site recipe (red on untagged reports); here the accent follows the selected tab. */
.hl-report-page .hl-post-header {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 24px; align-items: end;
  background: linear-gradient(135deg, color-mix(in srgb, var(--acc) 11%, #0d1117) 0%, #0d1117 60%, #111111 100%);
  border: 1px solid var(--rv-line); border-left: 4px solid var(--acc); border-radius: 6px;
  padding: 22px 24px 24px 20px; margin: 0 0 24px; position: relative;
}
/* a report sponsor is attached to this panel: one box, the sponsor as its foot */
.hl-report-page .hl-post-header:has(+ .hl-rvsp--report) { margin-bottom: 0; border-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.hl-report-page .hl-post-header__eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin: 0 0 12px; padding-right: 52px; grid-column: 1 / -1; }
.hl-report-page .hl-post-header__eyebrow > span { display: inline-flex; align-items: center; gap: 8px; }
.hl-report-page .hl-post-header__eyebrow > .hl-post-header__sep, .hl-report-page .hl-post-header__sep { display: none !important; }
.hl-report-page .hl-read-time::before { content: none !important; }
/* mono micro-labels: one recipe, 14px floor */
.hl-report-page :is(.hl-post-header__badge, .hl-post-header__date, .hl-read-time, .hl-rv-threat),
:is(.hl-rvsp__label, .hl-rv-sponsor-card__label) {
  font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; font-weight: 400; letter-spacing: 0.08em !important; text-transform: uppercase !important; line-height: 1.4;
}
.hl-report-page .hl-post-header__badge { padding: 2px 10px; border: 1px solid color-mix(in srgb, var(--acc) 30%, transparent); background: color-mix(in srgb, var(--acc) 9%, transparent); border-radius: 3px; color: var(--acc); }
.hl-report-page .hl-post-header__date, .hl-report-page .hl-read-time { color: var(--rv-muted); }
/* the "Updated <date>" link sits inside the date label: custom.scss gives it 0.9em, which on the 14px mono recipe above measured 12.6px, under the 13px chrome floor (T-0500.1.11 b1b); it takes the label's own size */
.hl-report-page .hl-post-header__date .hl-last-updated { font-size: inherit; }
.hl-report-page .hl-rv-threat { color: var(--rv-bad); border: 0; background: none; padding: 0; border-radius: 0; }
.hl-report-page .hl-rv-threat::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
/* the share icon: top-right corner of the header box, 44px, built by the script (absent with scripts off). The eyebrow keeps 52px clear of it. */
.hl-report-page .hl-rv-share { position: absolute; top: 8px; right: 8px; z-index: 2; }
.hl-report-page .hl-rv-share-btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; color: var(--rv-muted); background: color-mix(in srgb, var(--acc) 7%, transparent); border-color: color-mix(in srgb, var(--acc) 42%, var(--rv-line)); }
.hl-report-page .hl-rv-share-btn:hover { color: var(--acc); border-color: var(--acc); }
.hl-report-page .hl-rv-share-btn svg { width: 20px; height: 20px; flex: none; }
/* "Link copied": always in the page (so the live region announces), drawn only while it has text */
.hl-report-page .hl-rv-share-status { position: absolute; top: 50%; right: 52px; transform: translateY(-50%); margin: 0; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); letter-spacing: 0.04em; color: var(--rv-text); white-space: nowrap; }
.hl-report-page .hl-rv-share-status:not(:empty) { padding: 6px 12px; background: var(--rv-row); border: 1px solid var(--acc); border-radius: var(--rv-radius); }
.hl-report-page .hl-rv-share-url { font-size: var(--rv-fs); color: var(--rv-muted); overflow-wrap: anywhere; }
.hl-report-page .hl-post-header__title {
  font-family: var(--rv-display); font-size: 32px !important; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; margin: 0 !important; color: var(--rv-text) !important;
  background: linear-gradient(100deg, #ffffff 44%, color-mix(in srgb, var(--acc) 64%, #ffffff) 100%) !important; -webkit-background-clip: text !important; background-clip: text !important; -webkit-text-fill-color: transparent;
}
/* the site docks the quick links at the page edge and hides them under 900px; on tabbed pages they are a row of buttons */
.hl-report-page .hl-quicklinks {
  position: static; inset: auto; transform: none; display: flex !important; flex-direction: row; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; z-index: auto;
}
.hl-report-page .hl-quicklinks .hl-quicklink, .hl-report-page .hl-quicklinks .hl-quicklink:hover,
.hl-report-page .hl-quicklinks .hl-cta, .hl-report-page .hl-quicklinks .hl-cta:hover {
  display: inline-flex; align-items: center; gap: 8px; width: auto; height: auto; min-height: 44px; min-width: 44px; padding: 0 14px; margin: 0;
  background: transparent !important; background-image: none; border: 1px solid color-mix(in srgb, var(--acc) 42%, var(--rv-line)); border-radius: var(--rv-radius);
  color: var(--acc) !important; font-family: inherit; font-size: var(--rv-fs); font-weight: 400; text-decoration: none !important;
  box-shadow: none; transform: none; overflow: visible; transition: none; cursor: pointer;
}
.hl-report-page .hl-quicklinks :is(.hl-quicklink, .hl-cta):hover { border-color: var(--acc); background: color-mix(in srgb, var(--acc) 7%, transparent) !important; }
.hl-report-page .hl-quicklink__icon { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; color: currentColor; }
.hl-report-page .hl-quicklink__icon svg { width: 18px; height: 18px; stroke: currentColor; }
.hl-report-page .hl-quicklinks .hl-quicklink__label { opacity: 1; padding: 0; font-family: var(--rv-display); font-size: var(--rv-fs); font-weight: 600; letter-spacing: 0.01em; text-transform: none; }
/* the resource popovers the site script opens (Detections, IOC feed, STIX) sit at the page edge on every width */
@media (max-width: 900px) {
  html:has(.hl-report-page) :is(.hl-detect-panel.hl-detect-panel--open, .hl-ioc-panel.hl-ioc-panel--open, .hl-stix-panel.hl-stix-panel--open) { display: block !important; }
}
.hl-rv-resource { position: fixed; z-index: 500; left: 16px !important; top: 100px !important; max-width: calc(100vw - 32px); transform: none !important; background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); box-shadow: none; }
.hl-rv-resource :is(a, button) { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; }

/* ---------- Sponsors (v6.1, reworked by Joseph's decision of 2026-10-30) ----------
   REPORT sponsor (the page's sponsored_by, one report or a bundle): the gold featured panel at the very top of the column, above the header, labelled
   "This report is sponsored by" (T-0500.1.8; the site's .hl-panel--featured recipe), and again as the attached foot of the header panel. A report with no
   sponsor has no panel. SITE sponsors (Monthly tier) are the site's Sponsors rail (fixed in the left gutter from 1600px, the site strip below that) and
   the card at each tab foot, which is the same gold panel when there is no report sponsor. There is no sponsor mark on the reading line.
   Gold is the featured-panel recipe; the tab accent marks the report sponsor's attached panel and card. */
.hl-rv-reportband { position: relative; box-sizing: border-box; margin: 0 0 24px; padding: 0; }
/* the featured panel: band and tab-foot card share it (site .hl-panel--featured: 135deg dark gradient, gold glow, 1px border, 4px gold bar, 6px radius) */
.hl-rv-reportband__in, .hl-rv-sponsor-card.is-site {
  position: relative; overflow: hidden; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 28px; padding: 18px 24px 18px 20px;
  background: linear-gradient(135deg, #1c1c1c, #0d1117); border: 1px solid var(--rv-line); border-left: 4px solid var(--rv-gold-bar); border-radius: 6px;
}
.hl-rv-reportband__in::before, .hl-rv-sponsor-card.is-site::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(120% 150% at 0% 0%, var(--rv-gold-bar), transparent 56%); opacity: 0.16; }
.hl-rv-reportband__in > *, .hl-rv-sponsor-card.is-site > * { position: relative; }
.hl-rv-reportband .hl-rv-reportband__label, .hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__label { color: var(--rv-gold) !important; font-weight: 700; }
/* the real Visit call to action: a gold outline button at the right of the panel */
.hl-rvsp__cta, .hl-rv-sponsor-card__cta { margin-left: auto; flex: none; font-size: var(--rv-fs); font-weight: 600; line-height: 1.4; color: var(--rv-gold); border: 1px solid var(--rv-gold-bar); border-radius: 6px; padding: 7px 13px; white-space: nowrap; }
a.hl-rvsp__item:hover .hl-rvsp__cta, a.hl-rv-sponsor-card__item:hover .hl-rv-sponsor-card__cta { background: color-mix(in srgb, var(--rv-gold-bar) 18%, transparent); }
.hl-rvsp__label, .hl-rv-sponsor-card__label { flex: none; white-space: nowrap; color: var(--rv-muted) !important; }
.hl-rvsp__items { flex: 1 1 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; min-width: 0; }
.hl-rvsp__item { display: flex; align-items: center; gap: 16px; min-width: 0; color: inherit; text-decoration: none !important; border-radius: var(--rv-radius); }
.hl-rvsp__logo { display: block; flex: none; width: auto; object-fit: contain; }
.hl-rv-reportband .hl-rvsp__logo { height: 38px; max-width: 220px; }
.hl-rvsp__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.hl-rvsp__name { font-size: var(--rv-fs); font-weight: 600; color: var(--rv-text); white-space: nowrap; }
.hl-rvsp__item:has(.hl-rvsp__logo) .hl-rvsp__name { display: none; }
.hl-rvsp__tagline { font-size: var(--rv-fs); color: var(--rv-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; max-width: 60ch; }
.hl-rvsp__zone--many .hl-rvsp__item:has(.hl-rvsp__logo) .hl-rvsp__text, .hl-rvsp__zone--many .hl-rvsp__cta { display: none; }
.hl-rv-reportband .hl-rvsp__item { flex: 1 1 auto; gap: 20px; }
.hl-rv-reportband .hl-rvsp__tagline { color: var(--rv-text); }
.hl-rv-reportband .hl-rvsp__zone--many .hl-rvsp__item { flex: none; }
.hl-rvsp a.hl-rvsp__item:hover .hl-rvsp__tagline { color: var(--rv-text); }
.hl-rv-reportband a.hl-rvsp__item { min-height: 44px; }
/* the report sponsor: the foot of the header panel, the most prominent sponsor element on the page */
.hl-report-page .hl-rvsp--report {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; padding: 18px 24px 18px 20px; margin: 0 0 24px;
  background: var(--rv-row); border: 1px solid var(--rv-line); border-left: 4px solid var(--acc); border-radius: 0 0 6px 6px;
}
.hl-rvsp--report .hl-rvsp__logo { height: 44px; max-width: 280px; }
.hl-rvsp--report .hl-rvsp__item { gap: 20px; min-height: 44px; }
.hl-rvsp--report .hl-rvsp__name { font-size: 22px; }
.hl-rvsp--report .hl-rvsp__tagline { color: var(--rv-text); max-width: 56ch; }
/* theme gives every img padding and a border: logos get neither */
.hl-report-page img.hl-rvsp__logo, .hl-rv-reportband img.hl-rvsp__logo, .hl-rv-sponsor-card__item img { padding: 0 !important; border: 0 !important; background: none !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; max-width: none; }
.hl-rv-reportband img.hl-rvsp__logo { max-width: 220px !important; }
.hl-rvsp--report img.hl-rvsp__logo { max-width: 280px !important; }
/* the panel at each tab foot */
.hl-rv-sponsor-card { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px; margin: 0 0 24px; padding: 18px var(--rv-pad); background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.hl-rv-sponsor-card.is-report { background: var(--rv-row); border-left: 4px solid var(--acc); padding-left: calc(var(--rv-pad) - 3px); }
.hl-rv-sponsor-card__label { margin: 0 !important; }
.hl-rv-sponsor-card__items { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px; }
.hl-rv-sponsor-card__item { display: flex; align-items: center; gap: 16px; text-decoration: none !important; color: var(--rv-text) !important; min-height: 44px; }
.hl-rv-sponsor-card__item img { display: block; height: 30px; width: auto; max-width: 200px; object-fit: contain; }
.hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__items, .hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__item { flex: 1 1 auto; }
.hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__item { gap: 20px; }
.hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__item img { height: 38px; max-width: 220px; }
.hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__tagline { color: var(--rv-text); }
.hl-rv-sponsor-card.is-site.is-many .hl-rv-sponsor-card__item { flex: none; }
.hl-rv-sponsor-card.is-site.is-many :is(.hl-rv-sponsor-card__tagline, .hl-rv-sponsor-card__cta) { display: none; }
.hl-rv-sponsor-card.is-report .hl-rv-sponsor-card__item img { height: 40px; max-width: 260px; }
.hl-rv-sponsor-card__text { display: flex; flex-direction: column; gap: 2px; }
.hl-rv-sponsor-card__name { font-size: var(--rv-fs); font-weight: 600; color: var(--rv-text); }
.hl-rv-sponsor-card__item:has(img) .hl-rv-sponsor-card__name { display: none; }
.hl-rv-sponsor-card__tagline { font-size: var(--rv-fs); color: var(--rv-muted); }

/* ---------- Bar (v6.1): the tab row and the reading toolbar are two containers on two surfaces, 24px apart ----------
   Tab row: a segmented control on the recessed well, one cell per tab, 1px dividers, the selected cell raised with its accent edge.
   Toolbar: a slimmer raised bar of its own; it is the only part that stays when the page scrolls. */
.hl-rv-bar {
  position: sticky; z-index: 60; background: var(--rv-bg); color: var(--rv-text); display: flex; flex-direction: column; padding-bottom: 8px; margin-bottom: 17px;
  /* only the reading line stays; the tab row scrolls away under the site nav (4px offsets the script's measure) */
  top: calc(var(--hl-rv-nav-h, 0px) - var(--hl-rv-tabs-h, 0px) - 4px + env(safe-area-inset-top, 0px));
  scroll-margin-top: var(--hl-rv-nav-h, 0px);
}
.hl-rv-tabs {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px; margin: 0 0 24px; background: var(--rv-line); border: 1px solid var(--rv-line); border-radius: var(--rv-radius);
  overflow-x: auto; overflow-y: hidden; scrollbar-width: none;
}
.hl-rv-tabs::-webkit-scrollbar { display: none; }
.hl-report-page .hl-rv-tabs button {
  position: relative; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 2px;
  min-height: 68px; padding: 14px 12px 10px 32px; margin: 0; border: 0; border-bottom: 2px solid transparent; border-radius: 0;
  background: var(--rv-well); color: var(--rv-muted); font-family: var(--rv-display); font-size: 17px; font-weight: 500; letter-spacing: -0.005em; line-height: 1.25; text-align: left; white-space: normal;
}
.hl-report-page .hl-rv-tabs button::before { content: ''; position: absolute; left: 13px; top: 22px; width: 8px; height: 8px; border-radius: 50%; background: var(--acc); opacity: 0.55; }
.hl-report-page .hl-rv-tabs button:hover { color: var(--rv-text); background: var(--rv-bg); border-color: transparent; }
.hl-report-page .hl-rv-tabs button:hover::before { opacity: 1; }
.hl-report-page .hl-rv-tabs button[aria-selected="true"] { color: var(--acc); background: var(--rv-row); border-bottom-color: var(--acc); }
.hl-report-page .hl-rv-tabs button[aria-selected="true"]::before { opacity: 1; }
.hl-rv-tab-short { display: none; }
.hl-rv-tab-time { font-family: var(--rv-mono); font-size: var(--rv-fs-mono); font-weight: 400; letter-spacing: 0.02em; font-variant-numeric: tabular-nums; color: var(--rv-muted); }
.hl-rv-mobile-line { display: flex; align-items: center; gap: 8px; min-height: 56px; padding: 0 8px 0 20px; background: var(--rv-row); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); min-width: 0; }
.hl-rv-mobile-line > * { flex: none; }
.hl-rv-current { order: 0; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--acc); white-space: nowrap; }
.hl-rv-current-section { order: 1; flex: 1 1 0 !important; min-width: 0; font-size: var(--rv-fs); color: var(--rv-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hl-rv-remaining { order: 2; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); font-variant-numeric: tabular-nums; color: var(--rv-muted); white-space: nowrap; }
.hl-rv-mobile-line > button[aria-label="Previous section"] { order: 3; padding: 0; }
.hl-rv-mobile-line > button[aria-label="Next section"] { order: 4; padding: 0; }
.hl-rv-mobile-line > button[aria-controls="hl-rv-sections"] { order: 5; }
.hl-rv-onepage { order: 6; display: inline-flex; align-items: center; padding: 0 8px; color: var(--rv-muted); font-size: var(--rv-fs); text-decoration: none; white-space: nowrap; }
.hl-rv-onepage:hover { color: var(--rv-text); text-decoration: underline; }
.hl-rv-progress-track { height: 2px; margin: -3px 10px 0; background: transparent; position: relative; z-index: 1; }
.hl-rv-progress-bar { height: 100%; background: var(--acc); width: 0; }
/* the Sections list: the site's .hl-post-toc panel (row fill, row line, 6px radius, 2px edge on the current entry) */
.hl-rv-menu, .hl-rv-page-contents, .hl-rv-contents { background: var(--rv-row); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.hl-rv-menu { position: absolute; top: 100%; inset-inline: 0; z-index: 70; max-height: calc(100dvh - var(--hl-rv-nav-h, 0px) - 64px); overflow-y: auto; overscroll-behavior: contain; padding: 8px; }
.hl-rv-menu-item { display: grid; gap: 2px; padding: 12px; border-bottom: 1px solid var(--rv-row-line); border-left: 2px solid transparent; font-size: var(--rv-fs); text-decoration: none; }
.hl-rv-menu-item strong { font-family: var(--rv-display); font-weight: 600; color: var(--rv-text); }
.hl-rv-menu-item span, .hl-rv-menu-item small { color: var(--rv-muted); font-size: var(--rv-fs); }
.hl-rv-menu-item[aria-current="page"] { background: transparent; border-left-color: var(--acc); border-radius: 0; }
.hl-rv-menu-item[aria-current="page"] strong { color: var(--acc); }
.hl-rv-menu-sections { display: grid; padding-top: 8px; }
.hl-rv-menu-sections a { padding: 10px 12px; font-size: var(--rv-fs); border-left: 2px solid transparent; }
.hl-rv-menu-sections a[aria-current="location"] { color: var(--rv-text); border-left-color: var(--acc); }
.hl-rv-page-contents { padding: 0 16px; margin: 16px 0; }
.hl-rv-page-contents summary { display: flex; align-items: center; font-size: 16px; font-weight: 600; cursor: pointer; }
.hl-rv-page-contents nav { display: grid; padding-bottom: 12px; }
.hl-rv-page-contents a { font-size: var(--rv-fs); padding: 4px 0; }
.hl-rv-subsection-link { padding-left: 16px !important; color: var(--rv-muted) !important; }

/* ---------- The tab: a column of panels; two short sections sit side by side from 1280px ---------- */
.hl-rv-panel { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 24px; align-content: start; min-width: 0; padding-top: 0; }
.hl-rv-panel > * { grid-column: 1 / -1; }
.hl-rv-panel > .hl-rv-half { grid-column: auto; }
@media (max-width: 1279px) { .hl-rv-panel > .hl-rv-half { grid-column: 1 / -1; } }
@media (min-width: 1280px) { .hl-rv-panel:not([hidden]) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* the tab's own title takes the site's main-title highlight (custom.scss .hl-post-content h1, lines 395-406: 4px edge, gradient fading out), tinted by the tab accent */
.hl-report-page .hl-rv-panel-head {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 20px; margin: 0 0 24px; padding: 12px 18px;
  background: linear-gradient(to right, color-mix(in srgb, var(--acc) 14%, transparent), transparent); border-left: 4px solid var(--acc); border-radius: 0 4px 4px 0;
}
.hl-report-page .hl-post-content .hl-rv-panel-head h2 {
  display: inline-flex; align-items: center; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; border-radius: 0; color: var(--rv-text) !important;
  font-family: var(--rv-display); font-size: 28px !important; font-weight: 700 !important; line-height: 1.3; letter-spacing: -0.01em;
}
.hl-rv-panel-head p { margin: 0 !important; font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; line-height: 1.5; letter-spacing: 0.04em; text-transform: uppercase; color: var(--rv-muted) !important; }
.hl-rv-skip-view { display: none; }
.hl-rv-skip-view:focus { display: inline-flex; }

/* ---------- A report section is a panel: card fill, 1px line, header bar (row fill) with the accent edge ---------- */
.hl-rv-source, .hl-rv-view {
  background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); margin: 0 0 24px; padding: 0 var(--rv-pad) var(--rv-pad); min-width: 0; overflow-wrap: anywhere;
}
.hl-rv-view { padding: 0; overflow-wrap: normal; }
.hl-report-page .hl-post-content .hl-rv-source > h2,
.hl-rv-source.hl-rv-nohead::before {
  display: flex; align-items: center; flex-wrap: wrap; gap: 2px 12px; min-height: 56px; margin: 0 calc(var(--rv-pad) * -1) var(--rv-pad) !important;
  padding: 10px var(--rv-pad) 10px calc(var(--rv-pad) - 3px) !important; color: var(--rv-text) !important;
  /* the site's section-head highlight (custom.scss .hl-post-content h2, lines 408-419: gradient fading out, 3px edge), tinted by the tab accent, on the panel's card fill */
  background: linear-gradient(to right, color-mix(in srgb, var(--acc) 13%, transparent), transparent), var(--rv-row) !important;
  border: 0 !important; border-left: 3px solid var(--acc) !important; border-bottom: 1px solid var(--rv-line) !important; border-radius: 7px 7px 0 0 !important;
  font-family: var(--rv-display); font-size: 22px !important; font-weight: 600 !important; line-height: 1.3; letter-spacing: -0.005em;
}
/* the mono label at the right of the bar; the number is already in the heading, so it is decorative and silent to screen readers */
.hl-report-page .hl-post-content .hl-rv-source > h2[data-rv-sec]::after { content: attr(data-rv-sec); content: attr(data-rv-sec) / ''; margin-left: auto; padding-left: 12px; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); font-weight: 400; letter-spacing: 0.1em; color: var(--acc); }
/* the first block of a report has no h2 (Campaign Identifier, Last Updated, Threat Level): its bar is a label */
.hl-rv-source.hl-rv-nohead::before {
  content: attr(data-rv-sec); content: attr(data-rv-sec) / ''; display: block; min-height: 0; font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; font-weight: 400 !important; letter-spacing: 0.1em; color: var(--acc) !important;
  line-height: 32px; padding-top: 0 !important; padding-bottom: 0 !important;
}
.hl-rv-source.hl-rv-nohead > hr { display: none !important; }
.hl-report-page .hl-post-content .hl-rv-source > h2 .hl-rv-permalink { margin-left: 0; margin-block: -8px; }
.hl-report-page .hl-post-content .hl-rv-source > :first-child:not(h2) { margin-top: 0 !important; }
.hl-report-page .hl-post-content .hl-rv-source > :last-child { margin-bottom: 0 !important; }

/* ---------- Prose: the reading column fills the panel ---------- */
.hl-report-page .hl-post-content { width: 100%; max-width: none; min-width: 0; font-size: 18px; line-height: 1.65; color: var(--rv-text); }
.hl-report-page .hl-post-content > p:first-child { font-size: inherit; }
.hl-report-page .hl-post-content p { color: var(--rv-text); margin: 0 0 20px; }
.hl-report-page .hl-post-content .hl-rv-source > :is(p, ul, ol, blockquote, figure) { max-width: none; }
/* the theme sets p, li and td to 0.8em at 768px and below, which made the report's prose 14.4px on a tablet and 13.6px on a phone; the prose keeps the size stated above */
@media (max-width: 768px) {
  .hl-report-page .hl-post-content .hl-rv-source :is(p, li):not([class*="hl-rv-"]) { font-size: inherit; }
}
.hl-report-page .hl-post-content strong, .hl-report-page .hl-post-content b { color: var(--rv-text); font-weight: 600; }
.hl-report-page .hl-post-content :is(ul, ol) { padding-left: 1.4em; margin: 0 0 20px; color: var(--rv-text); }
.hl-report-page .hl-post-content li { margin-bottom: 6px; }
.hl-report-page .hl-post-content a { color: var(--acc) !important; text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--acc) 45%, transparent); text-underline-offset: 3px; }
.hl-report-page .hl-post-content a:hover { text-decoration-color: var(--acc); }
.hl-report-page .hl-post-content :is(a.hl-rv-permalink, a.hl-rv-procedure, a.hl-rv-tile, .hl-rv-nextprev a, .hl-rv-sponsor-card__item, .hl-rv-indicator-actions a) { text-decoration: none; }
/* generated links are controls, not prose links: their label is the text colour, the accent shows in the edge or the outline */
.hl-report-page .hl-post-content :is(a.hl-rv-procedure, a.hl-rv-tile, .hl-rv-nextprev a, .hl-rv-sponsor-card__item, .hl-rv-indicator-actions a) { color: var(--rv-text) !important; }
.hl-report-page .hl-post-content .hl-rv-source :is(h3, h4) { background: none !important; border: 0 !important; border-radius: 0; padding: 0 !important; color: var(--rv-text) !important; line-height: 1.3; }
.hl-report-page .hl-post-content .hl-rv-source h3 { font-family: var(--rv-display); font-size: 18px !important; font-weight: 600 !important; margin: 36px 0 12px !important; padding-top: 24px !important; border-top: 1px solid var(--rv-line) !important; }
.hl-report-page .hl-post-content .hl-rv-source > h2 + h3 { margin-top: 0 !important; border-top: 0 !important; padding-top: 0 !important; }
.hl-report-page .hl-post-content .hl-rv-source h4 { font-family: var(--rv-display); font-size: 16px !important; font-weight: 600 !important; margin: 24px 0 8px !important; }
.hl-report-page .hl-post-content .hl-rv-permalink { display: inline-flex; justify-content: center; align-items: center; margin: -10px 0 -10px 8px; font-size: var(--rv-fs); font-weight: 400; color: var(--rv-muted) !important; text-decoration: none; } /* the 44px target overlaps the heading's own padding instead of growing the line */
.hl-report-page .hl-post-content hr { border: 0 !important; height: 1px; background: var(--rv-line) !important; margin: 24px 0 !important; }
.hl-report-page .hl-post-content blockquote {
  border: 0 !important; border-left: 2px solid color-mix(in srgb, var(--acc) 55%, var(--rv-line)) !important; border-radius: 0; background: none !important; box-shadow: none !important;
  margin: 0 0 20px !important; padding: 0 0 0 16px !important; color: var(--rv-text) !important;
}
.hl-report-page .hl-post-content blockquote p { color: var(--rv-text) !important; }
.hl-report-page .hl-post-content code { font-family: var(--rv-mono); font-size: max(14px, 0.85em); color: var(--rv-text) !important; background: var(--rv-bg) !important; border: 1px solid var(--rv-line); border-radius: 4px; padding: 1px 5px; }
.hl-report-page .hl-post-content pre { background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 16px; margin: 0 0 20px; overflow-x: auto; max-width: 100%; }
.hl-report-page .hl-post-content pre code { background: none !important; border: 0 !important; padding: 0; font-size: var(--rv-fs); color: var(--rv-text) !important; }
.hl-report-page .hl-post-content .hl-rv-metadata { margin: 0; line-height: 1.8; font-size: 16px; }
.hl-report-page .hl-post-content .hl-rv-metadata strong { font-family: var(--rv-mono); font-size: var(--rv-fs-mono); font-weight: 400; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rv-muted); }
.hl-report-page .hl-post-content figure { margin: 0 0 24px; text-align: left; width: 100%; }
.hl-report-page .hl-post-content figure img { display: block; max-width: 100%; width: 100%; height: auto; margin: 0; padding: 0; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); cursor: zoom-in; }
.hl-report-page .hl-post-content figcaption { font-size: var(--rv-fs); font-style: normal; color: var(--rv-muted); text-align: left; margin-top: 8px; }
.hl-report-page .hl-rv-source-figure-open, .hl-report-page .hl-rv-figure-open { margin-top: 8px; }
.hl-report-page .hl-fignav { justify-content: flex-start; }
/* the figure-nav chips are quiet navigation pills (the site's own component), not prose links: muted text, the accent on hover */
.hl-report-page .hl-post-content a.hl-fignav__chip { border-radius: var(--rv-radius); border-color: var(--rv-line); font-size: var(--rv-fs); background: none; padding: 4px 10px; color: var(--rv-muted) !important; text-decoration: none; }
.hl-report-page .hl-post-content a.hl-fignav__chip:is(:hover, :focus-visible) { color: var(--rv-text) !important; border-color: var(--acc); }
.hl-report-page .hl-gloss { border-bottom: 1px dotted var(--rv-muted); }
/* glossary marks may wrap over lines or sit in hidden tabs, so the tooltip is a viewport box, not the mark's containing block */
.hl-report-page .hl-gloss::after { position: fixed; left: var(--hl-rv-tip-x, 16px); right: auto; top: var(--hl-rv-tip-y, 80px); width: 320px; max-width: calc(100vw - 32px); background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); box-shadow: none; font-size: var(--rv-fs); }
.hl-rv-figure-dialog { position: fixed; inset: 0; width: 100vw; height: 100dvh; max-width: 100vw; max-height: 100dvh; margin: 0; padding: 16px; background: var(--rv-bg); color: var(--rv-text); border: 0; overflow: auto; }
.hl-rv-figure-dialog::backdrop { background: rgba(0, 0, 0, 0.8); }
.hl-rv-figure-dialog img { display: block; width: 100%; height: auto; }
.hl-rv-figure-dialog button { margin-bottom: 12px; background: transparent; color: var(--rv-text); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 0 14px; min-height: 44px; min-width: 44px; font-size: var(--rv-fs); }

/* ---------- Tables: header rule and row rules, mono uppercase headers, tabular numerals ---------- */
.hl-report-page .hl-rv-source-table, .hl-report-page .hl-rv-table-wrap { width: 100%; max-width: 100%; overflow-x: auto; margin: 0 0 20px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.hl-report-page .hl-rv-source-table { display: block; }
.hl-report-page .hl-post-content table { display: table; width: 100%; margin: 0; border-collapse: collapse; font-size: var(--rv-fs); line-height: 1.5; table-layout: auto; }
.hl-report-page .hl-rv-source-table table { min-width: 560px; }
.hl-report-page .hl-post-content :is(th, td) {
  padding: 10px 14px !important; vertical-align: top; text-align: left; font-size: var(--rv-fs) !important; line-height: 1.5; text-transform: none !important; letter-spacing: 0; font-variant-numeric: tabular-nums;
  background: transparent !important; border: 0 !important; border-bottom: 1px solid var(--rv-row-line) !important; color: var(--rv-text) !important; white-space: normal; overflow-wrap: break-word;
}
.hl-report-page .hl-post-content th {
  font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; font-weight: 400 !important; letter-spacing: 0.08em; text-transform: uppercase !important; white-space: nowrap;
  background: var(--rv-row) !important; color: var(--rv-muted) !important; border-top: 0 !important;
}
.hl-report-page .hl-post-content :is(tr:hover td, tr:nth-child(even) td) { background: transparent !important; color: var(--rv-text) !important; }
.hl-report-page .hl-post-content tr:hover td:first-child { border-left: 0 !important; }
.hl-report-page .hl-post-content tbody tr:last-child td { border-bottom: 0 !important; }
.hl-report-page .hl-post-content :is(td, th) code { overflow-wrap: anywhere; font-size: var(--rv-fs); }
/* T-0500.1.11 fix5a: an inline code chip is 6px wider than its text at the end of its last line (5px padding + 1px border). When that line is full and the chip's text ends in a space, the browser lets the space hang
   and puts the closing edge past the paragraph's content box: rovodev-mirai-matrix-c2 teardown at 360px, a chip 5.2px past its paragraph. A paragraph, list item or definition that holds a chip reserves those 6px, so the closing edge lands inside the block's own box. */
.hl-report-page .hl-post-content :is(p, li, dd):has(code) { padding-right: 6px; }
/* T-0500.1.11 fix5a: the process tree's kind chip (.pt-kind, white-space: nowrap in the widget's own sheet) is a grid item of the node's summary; on a phone, in a node nested three or more deep, the
   summary's text column is narrower than the chip, the chip hangs out of its summary and the node (overflow: hidden) clips it: 4px at 390px, 41px at 360px on opendirectory-62. It wraps inside its column. */
@media (max-width: 720px) { .hl-report-page .hl-ptree .pt-kind { white-space: normal; max-width: 100%; overflow-wrap: anywhere; } }
.hl-report-page .hl-post-content caption { caption-side: top; text-align: left; padding: 12px 14px; font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-report-page .hl-rv-source :is(td, th).hl-rv-indicator-cell, .hl-report-page .hl-rv-source td.hl-rv-indicator-cell code { font-family: var(--rv-mono); white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.hl-report-page .hl-rv-source .hl-rv-confidence-cell { min-width: 130px; word-break: normal; overflow-wrap: normal; }
.hl-report-page .hl-rv-table-tools { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin: 0 0 8px; }
.hl-rv-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; margin: 0 !important; }
.hl-rv-copy-status { margin: 0; font-size: var(--rv-fs); color: var(--rv-muted); min-height: 0; }
.hl-rv-copy-fallback { position: fixed; left: -9999px; top: 0; width: 1px; height: 1px; opacity: 0; }

/* ---------- Teardowns and details: nested boxes sit on the page fill, their tables back on the card fill ---------- */
.hl-report-page .hl-post-content details { margin: 0 0 12px; }
.hl-report-page .hl-teardown { border: 1px solid var(--rv-line); border-radius: var(--rv-radius); background: var(--rv-bg); padding: 0 20px; margin: 0 0 12px; }
.hl-report-page .hl-teardown > summary { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; padding: 12px 0; font-family: var(--rv-display); font-size: 16px; font-weight: 600; cursor: pointer; }
.hl-report-page .hl-teardown[open] > summary { border-bottom: 1px solid var(--rv-line); margin-bottom: 20px; }
.hl-report-page .hl-teardown > :last-child { margin-bottom: 20px; }
.hl-report-page .hl-teardown .hl-rv-source-table { background: var(--rv-card); }
.hl-report-page .hl-post-content summary, .hl-report-page .hl-post-content details > summary { color: var(--rv-text) !important; }
.hl-rv-teardown-count { margin-left: auto; font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; font-weight: 400; letter-spacing: 0.04em; color: var(--rv-muted); }
.hl-rv-teardown-controls { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin: 0 0 12px; }

/* ---------- The generated data view: its own panel; the header bar carries the summary and the Hide button ---------- */
.hl-rv-view-summary {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; margin: 0; min-height: 60px; padding: 8px 12px 8px calc(var(--rv-pad) - 3px);
  background: linear-gradient(to right, color-mix(in srgb, var(--acc) 13%, transparent), transparent), var(--rv-row);
  border-left: 3px solid var(--acc); border-bottom: 1px solid var(--rv-line); border-radius: 7px 7px 0 0;
}
.hl-rv-view-summary::before { content: 'DATA VIEW'; flex: none; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); letter-spacing: 0.1em; color: var(--acc); }
/* a collapsed bar is a whole card only when nothing sits under it; with the curated note under it the bar keeps its square bottom corners and its divider, and the note is the card's second row (T-0500.1.10.1) */
.hl-rv-view:not(:has(> .hl-rv-curated)) > .hl-rv-view-summary:has(button[aria-expanded="false"]) { border-bottom: 0; border-radius: 7px; }
.hl-rv-view-summary p { flex: 1 1 18rem; margin: 0 !important; font-size: 17px; font-weight: 400; line-height: 1.4; color: var(--rv-text) !important; font-variant-numeric: tabular-nums; }
.hl-report-page .hl-rv-view-summary button { flex: none; margin-left: auto; }
.hl-rv-view-body { min-width: 0; display: flex; flex-direction: column; gap: 20px; padding: var(--rv-pad); }
.hl-rv-view-body > * { min-width: 0; }
.hl-report-page .hl-rv-view p { margin: 0; }
.hl-rv-note, .hl-rv-unavailable, .hl-rv-curated { font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-muted) !important; margin: 0; }
.hl-rv-view > .hl-rv-curated { padding: 0 var(--rv-pad) var(--rv-pad); margin: -8px 0 0 !important; }
.hl-rv-view:has(> .hl-rv-view-summary button[aria-expanded="false"]) > .hl-rv-curated { padding-top: 12px; margin-top: 0 !important; }
.hl-report-page .hl-rv-view :is(h3, h4) { margin: 0 0 8px !important; padding: 0 !important; border: 0 !important; background: none !important; font-family: var(--rv-display); font-size: 16px !important; font-weight: 600 !important; color: var(--rv-text) !important; }
.hl-report-page .hl-rv-view strong { font-weight: 600; color: var(--rv-text); }
.hl-report-page .hl-rv-view a { color: var(--acc); font-size: var(--rv-fs); text-decoration: none; }
.hl-report-page .hl-rv-view a:hover { text-decoration: underline; }
.hl-rv-source-footer { margin: 0 !important; padding-top: 12px; border-top: 1px solid var(--rv-line); font-size: var(--rv-fs); line-height: 1.6; color: var(--rv-muted) !important; }
.hl-report-page .hl-rv-source-footer a { color: var(--rv-muted); }
.hl-rv-jump { align-self: flex-start; }
.hl-report-page .hl-rv-table-fold { margin: 0; border: 0; padding: 0; background: none; }
.hl-report-page .hl-rv-table-fold > summary { display: flex; align-items: center; padding: 0; font-size: 16px; font-weight: 600; cursor: pointer; }
.hl-report-page .hl-rv-table-fold[open] > summary { margin-bottom: 12px; }

/* stat tiles: short; each tile's "How counted" note sits in a note row of the same grid, under its tile */
.hl-rv-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: 16px; order: -2; }
.hl-report-page .hl-rv-tile { display: flex; flex-direction: column; align-items: flex-start; text-align: left; min-width: 0; gap: 2px; padding: 14px 16px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); color: var(--rv-text) !important; text-decoration: none !important; }
.hl-report-page .hl-rv-tile:hover { border-color: var(--acc); }
.hl-report-page .hl-rv-value { font-family: var(--rv-display); font-size: 30px; font-weight: 600; line-height: 1.15; color: var(--acc); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.hl-rv-value.hl-rv-value--long { font-size: 18px; line-height: 1.4; }
.hl-rv-tile > span:not(.hl-rv-tile-destination) { font-size: var(--rv-fs); line-height: 1.4; color: var(--rv-text); }
.hl-rv-tile-destination { margin-top: 2px; font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; letter-spacing: 0.04em; color: var(--rv-muted) !important; }
.hl-report-page .hl-post-content a.hl-rv-tile .hl-rv-tile-destination { color: var(--rv-muted) !important; }
.hl-rv-tile-notes { order: -2; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: 0 16px; margin: -8px 0 0; }
.hl-rv-tile-note { margin: 0; padding: 0 2px; font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-muted); min-width: 0; }
.hl-rv-tile-note small { font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-muted); }
.hl-rv-tile-note__key { display: none; }
.hl-rv-lead { order: -1; margin: 0; }
.hl-report-page .hl-rv-view .hl-rv-lead blockquote { margin: 0 0 8px !important; padding: 0 !important; border: 0 !important; background: none !important; font-size: 16px; line-height: 1.6; color: var(--rv-text); }
/* the overview lead above the collapsed view on phones is its own panel */
.hl-rv-panel > .hl-rv-lead { order: 0; background: var(--rv-card); border: 1px solid var(--rv-line); border-left: 3px solid var(--acc); border-radius: var(--rv-radius); padding: 16px var(--rv-pad); margin: 0 0 24px; }
.hl-rv-panel > .hl-rv-lead blockquote { border: 0 !important; padding: 0 !important; margin: 0 0 8px !important; }
.hl-rv-panel > .hl-rv-lead > :last-child { margin-bottom: 0 !important; }

/* grades are the level's own word, plain; status words keep green, amber and grey */
.hl-report-page .hl-rv-badge { display: inline; padding: 0; border: 0; border-radius: 0; background: none; font: inherit; font-size: var(--rv-fs); font-weight: 400; color: var(--rv-text); overflow-wrap: anywhere; white-space: nowrap; }
.hl-report-page .hl-rv-badge.hl-rv-unscaled { white-space: normal; }
.hl-report-page .hl-rv-badge.hl-rv-observed { color: var(--rv-ok); }
.hl-report-page .hl-rv-badge.hl-rv-inferred { color: var(--rv-warn); }
.hl-report-page .hl-rv-badge.hl-rv-not-shown { color: var(--rv-muted); }
.hl-report-page .hl-rv-cell-pill { font-weight: 400; }

/* filters */
.hl-rv-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin: 0; }
.hl-rv-filters label { display: flex; flex-direction: column; gap: 4px; flex: 1 1 180px; min-width: 0; font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-rv-filters :is(input, select) { width: 100%; }
.hl-rv-count { font-variant-numeric: tabular-nums; font-size: var(--rv-fs); color: var(--rv-muted) !important; margin: 0; }
.hl-rv-filters :is(.hl-rv-count, .hl-rv-note) { flex: 1 1 100%; order: 5; }

/* confidence: one thin stacked bar built from the legend (script), the legend buttons are the filter */
.hl-rv-distbar { display: flex; gap: 2px; height: 8px; border-radius: 4px; overflow: hidden; margin: 4px 0 8px; background: transparent; }
.hl-rv-distbar > span { display: block; height: 100%; min-width: 3px; }
.hl-rv-distribution { display: flex; flex-wrap: wrap; gap: 4px 24px; }
.hl-report-page .hl-rv-distribution button { flex: 0 0 auto !important; padding: 0; border: 0; background: none; display: inline-flex; align-items: center; gap: 8px; font-size: var(--rv-fs); color: var(--rv-text); }
.hl-report-page .hl-rv-distribution button::before { content: ''; width: 8px; height: 8px; border-radius: 2px; background: var(--rv-sw, var(--rv-muted)); }
.hl-report-page .hl-rv-distribution button:hover { border: 0; color: var(--rv-text); text-decoration: underline; }
.hl-report-page .hl-rv-distribution button[aria-pressed="true"] { text-decoration: underline; }
.hl-rv-distbar > :nth-child(1), .hl-rv-distribution > :nth-child(1) { --rv-sw: var(--acc); }
.hl-rv-distbar > :nth-child(2), .hl-rv-distribution > :nth-child(2) { --rv-sw: color-mix(in srgb, var(--acc) 85%, var(--rv-card)); }
.hl-rv-distbar > :nth-child(3), .hl-rv-distribution > :nth-child(3) { --rv-sw: color-mix(in srgb, var(--acc) 70%, var(--rv-card)); }
.hl-rv-distbar > :nth-child(4), .hl-rv-distribution > :nth-child(4) { --rv-sw: color-mix(in srgb, var(--acc) 55%, var(--rv-card)); }
.hl-rv-distbar > :nth-child(5), .hl-rv-distribution > :nth-child(5) { --rv-sw: color-mix(in srgb, var(--acc) 42%, var(--rv-card)); }
.hl-rv-distbar > :nth-child(6), .hl-rv-distribution > :nth-child(6) { --rv-sw: color-mix(in srgb, var(--acc) 30%, var(--rv-card)); }
.hl-rv-distbar > :nth-child(7), .hl-rv-distribution > :nth-child(7) { --rv-sw: color-mix(in srgb, var(--acc) 20%, var(--rv-card)); }
.hl-rv-distbar > span { background: var(--rv-sw, var(--acc)); }

/* victims: tier bars and cards */
.hl-rv-grade-bars { display: grid; gap: 8px; }
.hl-rv-grade-row { display: grid; grid-template-columns: 9rem minmax(0, 1fr) 2rem; align-items: center; gap: 12px; font-size: var(--rv-fs); font-variant-numeric: tabular-nums; }
.hl-rv-grade-row strong { text-align: right; font-weight: 400; color: var(--rv-text); }
.hl-rv-track { height: 8px; background: var(--rv-card); border-radius: 4px; }
.hl-rv-fill { height: 100%; min-width: 0; background: var(--acc); border-radius: 4px; }
.hl-rv-victim-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 16px; }
.hl-rv-victim-card { padding: 16px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); min-width: 0; }
.hl-rv-victim-card p { margin: 0 0 6px !important; font-size: var(--rv-fs); line-height: 1.5; }
.hl-rv-victim-card p strong { font-weight: 400; color: var(--rv-muted); }

/* attack chain: stage columns, procedure rows with a 3px left edge in the status colour */
.hl-rv-stage-ribbon { display: flex; flex-wrap: wrap; gap: 8px; }
.hl-report-page .hl-rv-stage-ribbon button { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; text-align: left; }
.hl-rv-stage-ribbon button strong { font-weight: 600; font-size: var(--rv-fs); color: var(--rv-text); }
.hl-rv-stage-ribbon button small { font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-rv-chain-scroll { max-width: 100%; }
.hl-rv-stages { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: 16px; align-items: start; }
.hl-rv-stage { background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 16px; min-width: 0; overflow-wrap: anywhere; } /* .hl-rv-view sets overflow-wrap: normal; a stage cell holding one unbroken token (a call chain, a path, a hash) was 421px wide in a 242px card (opendirectory-45, 9 stages) */
.hl-rv-stage-detail { margin: 0; }
.hl-report-page .hl-rv-stage-detail > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 0 0 12px; font-family: var(--rv-display); font-size: 16px; font-weight: 600; cursor: pointer; }
.hl-rv-stage-count { font-family: var(--rv-mono); font-size: var(--rv-fs-mono) !important; font-weight: 400; letter-spacing: 0.04em; color: var(--rv-muted); }
.hl-rv-stage p { font-size: var(--rv-fs); line-height: 1.55; margin: 0 0 12px; }
.hl-report-page .hl-post-content .hl-rv-stage h4 { font-size: var(--rv-fs) !important; color: var(--rv-muted) !important; font-weight: 600 !important; margin: 0 0 4px !important; }
.hl-rv-stage-state { margin: 8px 0 0; font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-rv-stage-match { border-color: var(--acc); }
.hl-rv-stage-muted { opacity: 0.6; }
.hl-rv-mini { display: flex; flex: 1 1 100%; gap: 2px; height: 4px; border-radius: 2px; overflow: hidden; background: var(--rv-line); min-width: 40px; }
.hl-rv-stage-ribbon .hl-rv-mini { flex: 0 0 40px; }
.hl-rv-mini > span { display: block; height: 100%; background: var(--acc); }
.hl-rv-mini > .hl-rv-inferred { background: color-mix(in srgb, var(--acc) 50%, var(--rv-bg)); }
.hl-rv-mini > .hl-rv-not-shown { background: var(--rv-line); }
.hl-report-page .hl-rv-procedure {
  display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; margin: 0 0 8px; background: var(--rv-card); border: 0; border-left: 3px solid var(--rv-muted);
  border-radius: var(--rv-radius); font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-text) !important; text-decoration: none !important; align-items: flex-start; text-align: left;
}
.hl-report-page .hl-rv-procedure:has(.hl-rv-observed) { border-left-color: var(--rv-ok); }
.hl-report-page .hl-rv-procedure:has(.hl-rv-inferred) { border-left-color: var(--rv-warn); }
.hl-report-page .hl-rv-procedure:has(.hl-rv-not-shown) { border-left-color: var(--rv-muted); }
.hl-report-page .hl-rv-procedure small { font-size: var(--rv-fs); color: var(--rv-muted) !important; }
.hl-report-page .hl-post-content a.hl-rv-procedure .hl-rv-badge[class] { color: var(--rv-muted); } /* the 3px left edge carries the status colour; the words stay grey */
.hl-rv-status-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: 16px; }
.hl-rv-status-tile { display: flex; flex-direction: column; align-items: flex-start; text-align: left; gap: 2px; padding: 16px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.hl-rv-status-tile > strong { font-family: var(--rv-display); font-size: 30px; font-weight: 600; line-height: 1.15; color: var(--acc); font-variant-numeric: tabular-nums; }
.hl-rv-status-tile > small { font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-muted); }
.hl-rv-procedures { display: flex; flex-direction: column; gap: 16px; }
.hl-rv-procedures .hl-rv-table-tools { margin: 0; }

/* timeline: swim lanes, status dots */
/* The marks (Joseph, 2026-10-30: "a pretty good amount larger"): drawn shapes, 34px on a desktop and 30px on a phone, with the event number at 18px beneath.
   --mark is the one place a status colour is chosen: the dots, the vertical list and the legend swatches all read it, so they cannot drift apart. */
.hl-rv-timeline { min-width: 0; --rv-dot: 34px; --rv-num: 18px; --rv-mark-h: 64px; --rv-swatch: 18px; }
.hl-rv-given { --mark: var(--rv-ok); }
.hl-rv-year-inferred, .hl-rv-range { --mark: var(--rv-warn); }
.hl-rv-disputed { --mark: var(--rv-bad); }
.hl-rv-timeline-legend { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 0 0 12px; font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-rv-timeline-legend > span { display: inline-flex; align-items: center; gap: 8px; }
.hl-rv-lane-swatch { width: 18px; height: 3px; border-radius: 2px; background: var(--rv-muted); }
.hl-rv-timeline-legend .hl-rv-symbol { width: var(--rv-swatch); height: var(--rv-swatch); }
.hl-rv-timeline-legend .hl-rv-range .hl-rv-symbol, .hl-rv-timeline-legend .hl-rv-symbol { flex: none; }
.hl-rv-timeline-legend .hl-rv-range .hl-rv-symbol { width: calc(var(--rv-swatch) * 1.8); }
.hl-rv-swimlanes { padding: 0; }
.hl-rv-lane { padding: 12px 0; border-top: 1px solid var(--rv-line); }
.hl-report-page .hl-rv-lane h3 { margin: 0 0 8px !important; font-size: var(--rv-fs) !important; font-weight: 600 !important; color: var(--rv-muted) !important; }
.hl-rv-rail { position: relative; height: var(--rv-mark-h); margin-inline: 22px; border-top: 1px solid var(--rv-line); }
.hl-report-page .hl-rv-marker { position: absolute; top: 0; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 4px; padding: 2px; width: 44px; height: var(--rv-mark-h); min-width: 44px; min-height: 44px; font-size: var(--rv-num); border: 0; background: transparent; line-height: 1.2; }
.hl-report-page .hl-rv-marker:hover { border: 0; }
/* the shape of a mark says what kind of date it is; its colour says the same thing as the legend: given = circle, inferred year = diamond, range = bar, disputed = dotted ring */
.hl-rv-symbol { display: block; flex: none; box-sizing: border-box; width: var(--rv-dot); height: var(--rv-dot); border-radius: 50%; background: var(--mark, var(--rv-ok)); font-size: 0; line-height: 0; }
.hl-rv-year-inferred > .hl-rv-symbol, .hl-rv-year-inferred .hl-rv-symbol { border-radius: 0; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.hl-rv-marker.hl-rv-range > .hl-rv-symbol { width: 100%; min-width: var(--rv-dot); border-radius: calc(var(--rv-dot) / 2); }
.hl-rv-range .hl-rv-symbol { border-radius: 999px; }
.hl-rv-vertical-marker.hl-rv-range > .hl-rv-symbol { border-radius: 6px; }
.hl-rv-disputed .hl-rv-symbol { background: transparent; border: 5px dotted var(--mark); }
.hl-rv-marker > span:last-child { font-size: var(--rv-num); font-weight: 600; color: var(--rv-muted); font-variant-numeric: tabular-nums; }
.hl-rv-event-active > span:last-child { color: var(--rv-text); }
.hl-rv-event-active > .hl-rv-symbol { outline: 2px solid var(--rv-text); outline-offset: 3px; }
.hl-rv-axis { height: 40px; position: relative; margin-inline: 22px; border-top: 1px solid var(--rv-line); }
.hl-rv-axis span { position: absolute; top: 8px; transform: translateX(-50%); width: max-content; font-size: var(--rv-fs); color: var(--rv-muted); text-align: center; white-space: nowrap; } /* no max-width: a label wider than a 160px cap spilled 7px out of its own box ("2026-09-04 to 2026-09-14" is 167px) */
/* the first and last date labels start and end at the rail's ends: centred on the date they overshot the swimlane box by half their width (37px for a single date), and a range label by more */
.hl-rv-axis span:first-child { transform: none; text-align: left; }
.hl-rv-axis span:last-child { transform: translateX(-100%); text-align: right; }
.hl-rv-event { margin: 12px 0 0; padding: 12px 16px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); font-size: var(--rv-fs); line-height: 1.5; color: var(--rv-text) !important; }
.hl-rv-vertical-timeline { display: none; }
.hl-report-page .hl-rv-chronology-table { margin-top: 20px; }
.hl-report-page .hl-rv-chronology-table > summary { display: flex; align-items: center; font-size: 16px; font-weight: 600; cursor: pointer; }

/* attribution: the Diamond Model vertices */
.hl-rv-diamond { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; }
.hl-rv-diamond-card { min-width: 0; padding: 16px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.hl-report-page .hl-rv-diamond-card blockquote { font-size: var(--rv-fs) !important; line-height: 1.55; margin: 0 0 8px !important; }
.hl-rv-diamond-label { display: none; }

/* indicators */
.hl-rv-feed-count { margin: 0; font-size: var(--rv-fs); font-variant-numeric: tabular-nums; color: var(--rv-muted) !important; }
.hl-rv-indicator-actions, .hl-rv-type-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.hl-report-page .hl-rv-indicator-actions a { padding: 0 14px; border: 1px solid color-mix(in srgb, var(--acc) 42%, var(--rv-line)); border-radius: var(--rv-radius); font-family: var(--rv-display); font-size: var(--rv-fs); font-weight: 600; }
.hl-report-page .hl-rv-chips { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.hl-rv-chips li { display: flex; align-items: center; gap: 12px; padding: 4px 4px 4px 12px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); min-width: 0; max-width: 100%; }
.hl-report-page .hl-rv-chips code { font-family: var(--rv-mono); font-size: var(--rv-fs); background: none !important; border: 0; padding: 0; white-space: normal; overflow-wrap: anywhere; min-width: 0; }
.hl-rv-chips button { flex: none; }
.hl-rv-rulecounts { margin: 0; padding: 0; list-style: none; font-size: var(--rv-fs); font-variant-numeric: tabular-nums; color: var(--rv-muted); }
.hl-rv-rulecounts :is(li, a, span) { font-size: var(--rv-fs); } /* the theme sizes spans in em of their parent: 11.2px at 768 without this (found by the chrome text floor row) */
.hl-rv-start-here { font-size: var(--rv-fs); }

/* "In this tab": the site's .hl-post-toc panel */
.hl-rv-contents { padding: 0 16px; margin: 0 0 24px; }
.hl-report-page .hl-post-content details.hl-rv-contents { margin: 0 0 24px; } /* the generic details rule (12px) would otherwise win: 24px between this panel and the next */
.hl-report-page .hl-rv-contents summary { display: flex; align-items: center; font-family: var(--rv-mono); font-size: var(--rv-fs-mono); font-weight: 400; letter-spacing: 0.1em; text-transform: uppercase; color: var(--acc) !important; cursor: pointer; }
.hl-rv-contents nav { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); gap: 0 24px; padding-bottom: 8px; }
.hl-rv-contents a { display: flex; align-items: center; padding-left: 10px; border-left: 2px solid transparent; font-size: var(--rv-fs); color: var(--rv-text); text-decoration: none; }
.hl-rv-contents a[aria-current="location"] { border-left-color: var(--acc); }
.hl-rv-contents a:hover { color: var(--acc); }

/* tab foot: the sponsor panel (above), then previous and next as the site's .hl-link-card */
.hl-rv-nextprev { display: flex; gap: 16px; margin: 0 0 24px; }
.hl-report-page .hl-rv-nextprev a { flex: 1 1 0; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 14px 20px; background: var(--rv-card); border: 1px solid var(--rv-line); border-left: 3px solid var(--acc); border-radius: var(--rv-radius); color: var(--rv-text) !important; text-align: left; text-decoration: none !important; }
.hl-report-page .hl-rv-nextprev a:hover { border-color: var(--rv-muted); border-left-color: var(--acc); }
.hl-rv-nextprev small { font-size: var(--rv-fs); color: var(--rv-muted); }
.hl-rv-nextprev small:first-child { font-family: var(--rv-mono); font-size: var(--rv-fs-mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--acc); }
.hl-rv-nextprev strong { font-family: var(--rv-display); font-size: 17px; font-weight: 600; color: var(--rv-text); }
.hl-rv-nextprev span { font-size: var(--rv-fs); color: var(--rv-muted); }

/* ---------- Floating and body-level pieces ---------- */
.hl-rv-back { position: fixed; z-index: 80; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); right: max(16px, env(safe-area-inset-right, 0px)); padding: 0 14px; min-height: 44px; min-width: 44px; background: var(--rv-card); color: var(--rv-text); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); font-family: inherit; font-size: var(--rv-fs); line-height: 1.4; cursor: pointer; }
html:has(.hl-report-page) .hl-toast__close { min-width: 44px; min-height: 44px; }
html:has(.hl-report-page) .hl-toast__close:focus-visible { outline: 2px solid var(--rv-hue-overview); outline-offset: 2px; }
html:has(.hl-report-page) .hl-toast__label { font-size: var(--rv-fs); }
@media screen and (max-width: 900px) {
  html:has(.hl-report-page) .hl-toast { display: block; width: min(300px, calc(100vw - 32px)); left: 16px; bottom: calc(76px + env(safe-area-inset-bottom, 0px)); padding-right: 62px; }
  html:has(.hl-report-page) :is(.hl-progress-track, .hl-progress-bar) { display: block; left: 4px; width: 2px; }
}
.hl-onepage .hl-rv-panel, .hl-onepage .hl-rv-view, .hl-onepage .hl-rv-contents, .hl-onepage .hl-rv-nextprev { display: none !important; }

/* ---------- The ATT&CK coverage strip in the Attack chain tab (T-0500.1.9) ----------
   assets/js/attack-coverage.js draws it beside the mapping table on every layout; its base rules
   (custom.scss .hl-attack*) set one row of 15 bars with 8 px labels, which on this layout is under
   the chrome floor and, because every button here is at least 44 px wide, 739 px across at a
   390 px viewport. Here the bars wrap into as many columns as fit, each cell a 62 px bar over its
   tactic name at 14 px (the file's floor). The bar heights are the script's own inline percentages, now of the cell's
   62 px row. */
.hl-report-page .hl-attack { max-width: 100%; min-width: 0; box-sizing: border-box; }
.hl-report-page .hl-attack__bars { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 10px 4px; height: auto; align-items: start; }
.hl-report-page .hl-attack__seg { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: 62px auto; align-content: start; width: 100%; height: auto; min-width: 0; padding: 0 2px; box-sizing: border-box; border: 0; border-radius: 4px; }
.hl-report-page .hl-attack__seg:hover { background: rgba(128, 128, 128, 0.1); }
.hl-report-page .hl-attack__fill { align-self: end; }
.hl-report-page .hl-attack__seglabel { font-size: 14px; line-height: 1.25; opacity: 0.85; margin-top: 4px; white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: break-word; text-align: center; }
.hl-report-page .hl-attack__count, .hl-report-page .hl-attack__export, .hl-report-page .hl-attack__prompt, .hl-report-page .hl-attack__detailhead, .hl-report-page .hl-attack__chip { font-size: 14px; }
.hl-report-page .hl-attack__chip { padding: 6px 10px; }
.hl-report-page .hl-attack__export { padding: 0 14px; }

/* ---------- Responsive ---------- */
@media (min-width: 1100px) {
  .hl-report-page .hl-post-header { grid-template-columns: minmax(0, 1fr) auto; }
  .hl-report-page .hl-quicklinks { margin: 0; justify-content: flex-end; }
}
@media (min-width: 700px) and (max-width: 899px) {
  .hl-rv-tabs { display: flex; }
  .hl-report-page .hl-rv-tabs button { flex: 1 1 auto; white-space: nowrap; padding: 14px 6px 10px 24px; }
  .hl-report-page .hl-rv-tabs button::before { left: 9px; }
}
/* from 900px the row is a seven-column grid again; at 900 a cell is 121px and the 17px short label 'Confidence' needed 125 from the cell's left edge, so it hung 4px out of the last tab (the 700 to 899 row is a flex row and sizes to its labels) */
@media (min-width: 900px) and (max-width: 1179px) {
  .hl-report-page .hl-rv-tabs button { font-size: 16px; padding-left: 28px; }
}
@media (min-width: 700px) and (max-width: 1179px) {
  .hl-rv-tab-full { display: none; }
  .hl-rv-tab-short { display: inline; }
  .hl-rv-current, .hl-rv-remaining { display: none; }
  .hl-rv-diamond { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 1499px) { .hl-rv-remaining { display: none; } } /* 16px reading-line text: the minutes-left text only fits beside the section name from 1500px; the tab row already says the minutes */
/* Where five tiles no longer fit one row the tiles wrap, so a note can no longer sit under its own tile:
   the notes become a list, each keyed by its tile's value and label. */
@media (max-width: 1139px) {
  .hl-rv-tile-notes { grid-template-columns: minmax(0, 1fr); gap: 8px; margin-top: -4px; }
  .hl-rv-tile-note__key { display: inline; font-weight: 600; color: var(--rv-text); }
  .hl-rv-tile-note__key::after { content: ': '; }
}
@media (max-width: 699px) {
  html:has(.hl-report-page) { --rv-pad: 16px; --rv-fs: 15px; --rv-fs-mono: 14px; }
  html:has(.hl-report-page) main.content { padding-inline: 16px !important; }
  .hl-report-page { padding-top: 24px; }
  .hl-report-page .hl-post-header { padding: 14px 16px 16px 13px; }
  .hl-report-page .hl-post-header__title { font-size: 24px !important; }
  .hl-report-page .hl-post-content { font-size: 17px; }
  .hl-rv-bar { top: env(safe-area-inset-top, 0px); }
  .hl-rv-tabs, .hl-rv-onepage, .hl-rv-current, .hl-rv-remaining { display: none !important; }
  .hl-rv-mobile-line { gap: 4px; padding-left: 12px; }
  .hl-rv-mobile-line > button[aria-controls="hl-rv-sections"] { padding: 0 10px; }
  .hl-report-page .hl-quicklinks { gap: 6px; }
  .hl-report-page .hl-quicklinks .hl-quicklink, .hl-report-page .hl-quicklinks .hl-cta { padding: 0 8px; gap: 6px; }
  .hl-report-page .hl-quicklinks .hl-quicklink__label { font-size: var(--rv-fs); }
  .hl-report-page .hl-post-content .hl-rv-source > h2, .hl-rv-source.hl-rv-nohead::before { padding-left: calc(var(--rv-pad) - 3px) !important; }
  .hl-report-page .hl-post-content .hl-rv-source > h2 { font-size: 18px !important; }
  .hl-report-page .hl-post-content .hl-rv-source h3 { margin-top: 28px !important; padding-top: 20px !important; }
  .hl-rv-view-summary p { flex: 1 1 100%; order: 3; }
  .hl-report-page .hl-rvsp--report { padding: 14px 16px 14px 13px; margin-bottom: 24px; }
  .hl-rvsp--report .hl-rvsp__logo { height: 36px; max-width: 220px; }
  .hl-rv-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .hl-report-page .hl-rv-tile { padding: 12px; }
  .hl-report-page .hl-rv-value, .hl-rv-status-tile > strong { font-size: 28px; }
  .hl-rv-value.hl-rv-value--long { font-size: 18px; }
  .hl-rv-stages, .hl-rv-diamond, .hl-rv-contents nav, .hl-rv-status-tiles { grid-template-columns: minmax(0, 1fr); }
  .hl-rv-grade-row { grid-template-columns: 7.5rem minmax(0, 1fr) 1.5rem; gap: 8px; }
  .hl-rv-nextprev { flex-direction: column; }
  /* the base rule's flex: 1 1 0 gave a column card a basis of 0 and the 44px control floor (line 96) then held it at 44px: its accent edge ran 44px beside a card three times as tall and its text hung out below. In a column each card takes its content's height. */
  .hl-report-page .hl-rv-nextprev a { flex: 0 0 auto; }
  .hl-rv-sponsor-card { padding: 16px; margin-top: 8px; }
  .hl-rv-chips { display: grid !important; }
  .hl-rv-chips li { width: 100%; }
  .hl-rv-filters label { flex-basis: 100%; }
  .hl-report-page .hl-rv-table-wrap .hl-rv-table { min-width: 560px; }
  .hl-rv-menu { max-height: calc(100dvh - 124px); }
  .hl-rv-menu-item { padding: 8px 10px; gap: 1px; }
  /* on a phone the report bar takes the safe-area top while reading; the site nav returns above the report */
  html.hl-rv-reading .hl-nav { transform: translateY(-100%) !important; transition: none !important; }
}
/* the featured site-sponsor panel on a phone: the label takes its own row, the tagline stays, and Visit is a full-width button under the content */
@media (max-width: 640px) {
  .hl-rv-reportband__in, .hl-rv-sponsor-card.is-site { padding: 14px 16px 14px 14px; gap: 10px 16px; }
  .hl-rv-reportband .hl-rv-reportband__label, .hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__label { white-space: normal; flex: 1 1 100%; min-width: 0; }
  .hl-rv-reportband .hl-rvsp__item, .hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__item { flex-wrap: wrap; gap: 10px 16px; }
  .hl-rv-reportband .hl-rvsp__logo, .hl-rv-sponsor-card.is-site .hl-rv-sponsor-card__item img { height: 30px; }
  .hl-rvsp__cta, .hl-rv-sponsor-card__cta { margin-left: 0; width: 100%; text-align: center; box-sizing: border-box; }
}
@media (max-width: 699px) {
  .hl-rv-timeline { --rv-dot: 30px; --rv-mark-h: 60px; --rv-swatch: 16px; }
  .hl-report-page .hl-rv-share-status { top: 52px; right: 0; transform: none; }
}
@media (max-width: 479px) {
  .hl-rv-swimlanes { display: none; }
  .hl-report-page .hl-rv-vertical-timeline { display: grid; list-style: none; margin: 0; padding: 0; gap: 0; }
  .hl-rv-vertical-timeline li { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: 12px; padding: 10px 0; border-top: 1px solid var(--rv-line); }
  .hl-rv-date { font-size: var(--rv-fs); color: var(--rv-muted); overflow-wrap: anywhere; }
  .hl-report-page .hl-rv-vertical-marker { display: grid; grid-template-columns: var(--rv-dot) minmax(0, 1fr); column-gap: 12px; align-items: start; gap: 4px 12px; width: 100%; padding: 0; text-align: left; border: 0; background: none; font-size: var(--rv-fs); }
  .hl-rv-vertical-marker > .hl-rv-symbol { grid-row: 1 / span 2; }
  .hl-rv-vertical-marker > small { grid-column: 2; }
  .hl-rv-vnum { font-size: var(--rv-num); font-weight: 600; color: var(--rv-text); font-variant-numeric: tabular-nums; }
  .hl-rv-vertical-marker small { font-size: var(--rv-fs); color: var(--rv-muted); }
}
@media (prefers-reduced-motion: reduce) {
  .hl-report-page *, .hl-rv-back { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  html:has(.hl-report-page) .hl-toast { transition: none; }
}

/* ---------- Print: every section in the report's order, panel chrome and the tab bar dropped ---------- */
@page hl-report {
  size: A4; margin: 18mm 13mm;
  @top-left { content: var(--hl-print-title, 'The Hunters Ledger'); font: 8pt sans-serif; }
  @top-right { content: var(--hl-print-url, ''); font: 7pt sans-serif; }
  @bottom-left { content: var(--hl-print-date, ''); font: 8pt sans-serif; }
  @bottom-right { content: 'Page ' counter(page) ' of ' counter(pages); font: 8pt sans-serif; }
}
@media print {
  html:has(.hl-report-page) {
    --rv-bg: #ffffff; --rv-card: #ffffff; --rv-row: #ffffff; --rv-line: #bbbbbb; --rv-row-line: #bbbbbb; --rv-text: #000000; --rv-muted: #333333;
    --rv-ok: #000000; --rv-warn: #000000; --rv-bad: #000000; --rv-pad: 0px;
  }
  html:has(.hl-report-page) :is(.hl-nav, .hl-sponsor-rail, .hl-sponsor-banner, .hl-rv-bar, .hl-rv-page-contents, .hl-toast, .hl-progress-track, .hl-progress-bar, .hl-rv-resource),
  .hl-report-page [data-rv-chrome], .hl-rv-back, .hl-rv-figure-dialog,
  body:has(.hl-report-page) :is(.hl-footer, .hl-site-sponsors), .hl-report-page :is(.hl-quicklinks, .hl-related, .hl-support-cta) { display: none !important; }
  .hl-report-page, body:has(.hl-report-page) { page: hl-report; }
  .hl-report-page { --acc: #000000; padding-top: 0; }
  .hl-report-page .hl-post-header { display: block; background: none; border: 0; padding: 0; }
  .hl-report-page .hl-post-content { display: flex; flex-direction: column; }
  .hl-report-page .hl-rv-panel, .hl-report-page .hl-rv-panel[hidden] { display: contents !important; }
  .hl-report-page .hl-rv-source { display: block !important; order: var(--rv-order); background: none; border: 0; border-radius: 0; padding: 0; margin: 0 0 12px; }
  .hl-report-page .hl-post-content .hl-rv-source > h2,
  .hl-rv-source.hl-rv-nohead::before { display: block; min-height: 0; margin: 0 0 8px !important; padding: 0 !important; background: none !important; border: 0 !important; border-radius: 0 !important; }
  .hl-report-page .hl-post-content .hl-rv-source > h2::after, .hl-rv-source.hl-rv-nohead::before { content: none; }
  .hl-report-page :is(figure, tr) { break-inside: avoid; }
  .hl-report-page .hl-rv-source-table { display: block; overflow: visible; border: 0; background: none; }
  .hl-report-page .hl-rv-source table { width: 100%; min-width: 0; font-size: 9pt; }
  .hl-report-page .hl-rv-source :is(th, td) { font-size: 9pt !important; color: #000000 !important; background: #ffffff !important; }
  .hl-report-page .hl-rv-source th { font-family: inherit; text-transform: none !important; letter-spacing: 0; }
  .hl-report-page .hl-rv-source .hl-rv-confidence-cell { min-width: 0; }
  .hl-report-page .hl-rv-source .hl-rv-indicator-cell, .hl-report-page .hl-rv-source td.hl-rv-indicator-cell code { white-space: normal; overflow-wrap: anywhere; }
  .hl-report-page .hl-post-content a { color: #000000 !important; text-decoration: underline; }
  .hl-report-page details { display: block; }
  .hl-report-page .hl-rv-source details::details-content { content-visibility: visible !important; display: block !important; height: auto !important; }
  .hl-report-page .hl-rv-source pre, .hl-report-page .hl-rv-source pre code { white-space: pre-wrap; overflow-wrap: anywhere; overflow: visible; }
}

/* Field / Value tables on a tabbed page (hl-facts.js, T-0500.1.10): the permalink "#" and the Copy button the script adds.
   The permalink is 12.75px at 390px in custom.scss (0.85em of the cell), under the 13px chrome-text floor, so it takes 14px here.
   On a phone-width touch screen the permalink and the Copy button are 44px targets and the row grows to hold them (a negative margin that
   kept the row height put the button 1.6px past its cell in the box-fit row). */
.hl-report-page .hl-facts .hl-facts-anchor { font-size: 14px; }
@media (hover: none) and (max-width: 700px) {
  .hl-report-page .hl-facts .hl-facts-anchor,
  .hl-report-page .hl-facts .hl-facts-copy {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 44px; min-height: 44px; box-sizing: border-box;
    vertical-align: middle;
  }
}
