/* =========================================================================
   article-g.css — DESIGN-LANGUAGE-G Wave 4a (REWORK 2026-08-19)
   Article template restyle (Concept G, spec §2.3). Scoped to body.avg-article
   so nothing leaks to non-pilot articles or other page types.

   Wave 4a REWORK — this pass finishes the "middle" of the template:
     - Reading column tokenized (body / H2-H4 / links / lists / tables /
       blockquote / captions all read from G tokens; no fallthrough to
       theme-default Helvetica or theme-blue #1779BA). Critic BLOCKER 2.
     - Sticky sidebar terminates cleanly at article-grid end (BLOCKER 1).
     - Legacy component stack suppressed on G pilots (BLOCKER 4 / ux C2, C3):
       theme share bars, "0 SHARES", SEE ALSO widget, thb-article-nav
       floaters (at all widths), Image Source: bold-blue credit lines,
       pin-it hover overlay.
     - Sidebar About-the-author mini-card removed from template + hidden
       here belt-and-braces (BLOCKER 3 double-author-card failure class).
     - YMYL apparatus: disclaimer band, pending-reviewer tile,
       "When to call a vet" callout, References section (§2.3.4/§2.3.10).
     - Title band: hub-hue eyebrow underline; suppress the empty
       double-rule strip when byline is absent; hide the parent theme's
       ::before pseudo on the eyebrow header container.
   ========================================================================= */

/* ---- outer container overrides ------------------------------------------ */
body.avg-article .post-detail-row.av-article-g-row {
	padding-top: 0;
	background: var(--paper);
}

body.avg-article .av-article-g-row > .row,
body.avg-article .av-article-g-row > .row > .small-12 {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 var(--wrap-gutter-dt);
}
@media (max-width: 900px) {
	body.avg-article .av-article-g-row > .row > .small-12 {
		padding: 0 var(--wrap-gutter-mb);
	}
}

/* ---- article-title band (spec §2.3 point 2 + owner A1) ------------------ */
body.avg-article .av-article-title-band {
	margin: 40px 0 24px;
	padding: 0;
	max-width: 780px;
}
@media (max-width: 900px) {
	body.avg-article .av-article-title-band {
		margin: 28px 0 16px;
	}
}

body.avg-article .av-article-eyebrow-header {
	display: inline-flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 var(--space-3);
	padding: 0;
	background: transparent;
	border: 0;
	position: static;
	max-width: none;
	max-height: none;
	transform: none;
	line-height: 1.3;
}
/* Parent theme's .post-detail .post-title-container:before pseudo-element
   emits a clearfix that on Safari/Chrome can create a phantom baseline row.
   We already dropped the .post-category class from the header, but keep the
   pseudo neutralized inside the G scope belt-and-braces. */
body.avg-article .post-detail .av-article-title-band:before,
body.avg-article .post-detail .av-article-title-band:after {
	content: none;
	display: none;
}

body.avg-article .av-eyebrow {
	display: inline-block;
	font-family: var(--meta);
	font-weight: var(--meta-w);
	font-size: 11.5px;
	line-height: 1.3;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--hub-deep, var(--ink));
	text-decoration: none;
	padding: 0 0 6px;
	border-bottom: 2px solid var(--hub, var(--coral)); /* hub-hue wayfinding — critic MAJOR 7 */
	background: transparent;
}
body.avg-article .av-eyebrow:hover { color: var(--coral-deep); }
body.avg-article .av-eyebrow-sep {
	display: inline-block;
	font-family: var(--meta);
	font-weight: var(--meta-w);
	font-size: 11.5px;
	line-height: 1.3;
	color: var(--ink-3);
	padding: 0 4px 6px;
	border-bottom: 0;
}

body.avg-article .entry-header.post-title {
	margin: 0;
	padding: 0;
	border: 0;
}
body.avg-article .entry-title,
body.avg-article h1.entry-title {
	font-family: var(--display);
	font-weight: 800;
	font-size: 48px;
	line-height: 1.05;
	letter-spacing: -.026em;
	color: var(--ink);
	margin: var(--space-4) 0 0;
	padding: 0;
	/* Critic MODERATE (2026-08-25): hero H1 wrapping in the 50/50 split's
	   narrower title column stranded a dash on line 2 (ivermectin: "— What
	   Is") and split "Sour / Crop" (sour-crop). text-wrap: balance
	   redistributes the line lengths, killing both the dash-led line and
	   the one-word "For?" widow on the long-title cases. Modern browsers
	   only — graceful degradation to normal wrapping where unsupported. */
	text-wrap: balance;
}
/* Critic MODERATE follow-up (2026-08-25): the sour-crop H1 broke "Sour"
   from "Crop" mid-compound (balance had nothing to redistribute — both
   lines were already 16-char balanced). Coordinator ruling: opt-in per-
   post nowrap on named compounds via post meta `_av_h1_nowrap_terms`,
   applied at H1 render time only (see av_h1_render_title in g-article.php).
   Machine surfaces (<title>, og:title, JSON-LD headline) stay plain text.
   This class exists ONLY inside the H1 render pipeline. */
body.avg-article .entry-title .av-nowrap,
body.avg-article h1.entry-title .av-nowrap {
	white-space: nowrap;
}
@media (max-width: 900px) {
	body.avg-article .entry-title,
	body.avg-article h1.entry-title {
		font-size: 32px;
	}
}

body.avg-article .av-dek {
	font-family: var(--body);
	font-weight: 500;
	font-size: 19px;
	line-height: 1.55;
	color: var(--ink-2);
	margin: var(--space-4) 0 0;
	max-width: 62ch;
}
@media (max-width: 900px) {
	body.avg-article .av-dek { font-size: 16.5px; }
}

/* Byline sits flush under the H1 with hair-rules top and bottom. Only
   emit rules when the byline exists (:has() supported by all evergreens,
   graceful fallthrough otherwise). */
body.avg-article .av-article-title-band .av-byline.av-byline--hero {
	margin: var(--space-5) 0 0;
	padding: var(--space-4) 0;
	border-top: 1.5px solid var(--hair);
	border-bottom: 1.5px solid var(--hair);
	background: transparent;
}

/* ---- YMYL top-band DELETED 2026-08-24 (trust-subtlety wave, Option B) ---
   The .av-ymyl-band, .av-ymyl-disclaimer, .av-ymyl-reviewer--pending classes
   are no longer emitted by inc/g-article.php. Rules removed. Trust apparatus
   now: §1a byline (existing .av-byline--hero), §1b byline microcopy
   (.av-byline__meta--pending, medication pages), §2a end-matter strip
   (.av-endmatter-disclaimer, below), footer Medical disclaimer link. Machine
   channel (schema.php Article.disclaimer / .citation / .reviewedBy pending
   stub) carries the SEO signal. */

/* §1b byline microcopy — same weight as base byline meta, no color escalation,
   no italics, no link. Applied only on medication-dosing pages via g-article.php.
   Trust-subtlety punchpass 2026-08-24 (critic LOW item 6): drop the pending
   clause one step to metadata gray — inherit the base .av-byline__meta color
   (--text-muted) so it sits with the other meta spans instead of reading as
   the byline row's second-loudest element (was --ink-3, a step darker). */
body.avg-article .av-byline--hero .av-byline__meta--pending {
	font-family: var(--body);
	font-weight: 400;
	font-size: inherit;
	color: inherit;
}

/* §2a end-matter disclaimer strip — muted-neutral background, bolded lead,
   no colored callout, sits above References. One instance per YMYL article. */
body.avg-article .av-endmatter-disclaimer {
	margin: var(--space-7) 0 var(--space-6);
	padding: var(--space-4) var(--space-5);
	background: var(--page, #f7f4ec);
	border-top: 1.5px solid var(--hair);
	border-bottom: 1.5px solid var(--hair);
	border-radius: 0;
}
body.avg-article .av-endmatter-disclaimer__body {
	font-family: var(--body);
	font-weight: 500;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--ink-2);
	margin: 0;
	/* Trust-subtlety punchpass 2026-08-24 (critic LOW item 7):
	   was max-width:62ch which wrapped at ~540px inside a ~720px card at
	   1440, leaving a dead right third. Extend measure to ~72ch so the
	   strip's body fills its container more evenly on the desktop grid,
	   without pushing past a still-readable line-length target. */
	max-width: 72ch;
}
body.avg-article .av-endmatter-disclaimer__body strong {
	color: var(--ink);
	font-weight: 700;
}
body.avg-article .av-endmatter-disclaimer__body a {
	color: var(--ink-2);
	text-decoration: underline;
	text-decoration-color: var(--hair);
	text-underline-offset: 3px;
}
body.avg-article .av-endmatter-disclaimer__body a:hover {
	color: var(--ink);
	text-decoration-color: var(--ink-3);
}

/* §3 "Before you dose" muted callout — sits as the header of the first
   dosing section on medication-dosing articles. Reader-service framing,
   not editorial disclaimer. Warm neutral, no red, no icon-hammer. */
body.avg-article .av-before-you-dose {
	margin: var(--space-6) 0 var(--space-5);
	padding: var(--space-4) var(--space-5);
	background: var(--paper-warm, #efe9d9);
	border-left: 3px solid var(--hair);
	border-radius: 0;
}
body.avg-article .av-before-you-dose__heading {
	font-family: var(--display);
	font-weight: 700;
	font-size: 20px;
	line-height: 1.25;
	color: var(--ink);
	margin: 0 0 var(--space-3);
	letter-spacing: 0;
	text-transform: none;
}
body.avg-article .av-before-you-dose__body {
	font-family: var(--body);
	font-weight: 500;
	font-size: 15.5px;
	line-height: 1.6;
	color: var(--ink-2);
	margin: 0;
	max-width: 62ch;
}

/* ---- hero figure (spec §4.3) -------------------------------------------- */
body.avg-article .av-article-hero-figure {
	margin: var(--space-6) 0 var(--space-7);
	padding: 14px;
	background: var(--page);
	border: 1.5px solid var(--rule);
	border-radius: 0;
	max-width: 100%;
}
body.avg-article .av-article-hero-figure__img,
body.avg-article .av-article-hero-figure img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	background: var(--paper);
	filter: contrast(1.02) saturate(1.02);
}
body.avg-article .av-article-hero-figure figcaption {
	margin-top: 12px;
	padding-top: 14px;
	border-top: 1.5px solid var(--rule);
	font-family: var(--body);
	font-style: italic;
	font-weight: 400;
	font-size: 14px;
	line-height: 1.5;
	color: var(--ink-2);
}

/* ---- article-body / sidebar grid (spec §2.3 point 7) -------------------- */
body.avg-article .av-article-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--space-8);
	align-items: start;
	margin-bottom: var(--space-10);
	/* BLOCKER 1: sticky termination. Setting `contain: layout` on the grid
	   parent keeps the sticky child's containing block bounded to the grid
	   row; when the grid row ends (article body + sidebar column both
	   consumed), sticky un-sticks. */
	position: relative;
}
@media (min-width: 1024px) {
	body.avg-article .av-article-grid {
		grid-template-columns: minmax(0, 720px) 280px;
		gap: var(--space-8);
	}
}

body.avg-article .av-article-body {
	min-width: 0;
}

body.avg-article .av-article-body .post-content.entry-content {
	max-width: none;
	padding: 0;
}
body.avg-article .av-article-body .post-content.entry-content > :first-child {
	margin-top: 0;
}

/* =========================================================================
   BLOCKER 2 — Reading-column tokenization.
   The parent theme's .post-detail .post-content rules resolve body copy to
   the theme default face (Helvetica Neue / Roboto / Arial) and links to the
   theme blue #1779BA. Override every visible face and color inside the G
   article body scope so the reader inherits Public Sans + Nunito + G ink +
   hub-hue accents.
   ========================================================================= */
body.avg-article .av-article-body .entry-content,
body.avg-article .av-article-body .entry-content p,
body.avg-article .av-article-body .entry-content li,
body.avg-article .av-article-body .entry-content td,
body.avg-article .av-article-body .entry-content th,
body.avg-article .av-article-body .entry-content blockquote,
body.avg-article .av-article-body .entry-content dl,
body.avg-article .av-article-body .entry-content dt,
body.avg-article .av-article-body .entry-content dd {
	font-family: var(--body) !important;
	font-weight: 500;
	color: var(--ink);
	font-feature-settings: "kern" 1, "liga" 1;
}
body.avg-article .av-article-body .entry-content {
	font-size: 17px;
	line-height: 1.68;
	color: var(--ink);
}
body.avg-article .av-article-body .entry-content p {
	font-size: 17px;
	line-height: 1.68;
	margin: 0 0 var(--space-5);
	color: var(--ink);
}
/* Drop the parent theme's giant coral drop-cap on the first paragraph — the
   article title band already carries the visual weight; a drop-cap on top
   reads as free-template. */
body.avg-article .av-article-body .entry-content > p:first-of-type:first-letter,
body.avg-article .av-article-body .post-content > p:first-of-type:first-letter {
	font-size: inherit !important;
	color: inherit !important;
	float: none !important;
	line-height: inherit !important;
	margin: 0 !important;
	font-weight: inherit !important;
	text-transform: none !important;
}

/* Headings — Nunito 700/800, G scale. Critic MINOR 10: mobile H2 = 28px. */
body.avg-article .av-article-body .entry-content h2 {
	font-family: var(--display) !important;
	font-weight: 800 !important;
	font-size: 32px;
	line-height: 1.12;
	letter-spacing: -.02em;
	color: var(--ink);
	margin: var(--space-9) 0 var(--space-4);
}
body.avg-article .av-article-body .entry-content h3 {
	font-family: var(--display) !important;
	font-weight: 800 !important;
	font-size: 23px;
	line-height: 1.2;
	letter-spacing: -.015em;
	color: var(--ink);
	margin: var(--space-7) 0 var(--space-3);
}
body.avg-article .av-article-body .entry-content h4 {
	font-family: var(--display) !important;
	font-weight: 700 !important;
	font-size: 19px;
	line-height: 1.25;
	color: var(--ink);
	margin: var(--space-6) 0 var(--space-3);
}
body.avg-article .av-article-body .entry-content h5,
body.avg-article .av-article-body .entry-content h6 {
	font-family: var(--display) !important;
	font-weight: 700 !important;
	font-size: 15.5px;
	letter-spacing: .02em;
	color: var(--ink);
	margin: var(--space-5) 0 var(--space-2);
}
@media (max-width: 900px) {
	body.avg-article .av-article-body .entry-content { font-size: 16.5px; line-height: 1.65; }
	body.avg-article .av-article-body .entry-content p { font-size: 16.5px; line-height: 1.65; }
	body.avg-article .av-article-body .entry-content h2 { font-size: 28px; margin-top: var(--space-8); }
	body.avg-article .av-article-body .entry-content h3 { font-size: 21px; }
}

/* Links inside the reading column — hub-hue, not theme-blue #1779BA.
   Override the parent-theme `.post-detail .post-content a { text-decoration:
   underline }` blue rule. */
body.avg-article .av-article-body .entry-content a,
body.avg-article .av-article-body .entry-content ul li a:not([class]),
body.avg-article .av-article-body .entry-content ol li a:not([class]) {
	color: var(--hub-deep, var(--coral-deep)) !important;
	text-decoration: underline;
	text-decoration-color: color-mix(in oklab, currentColor 35%, transparent);
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
	transition: color .15s ease, text-decoration-color .15s ease;
}
body.avg-article .av-article-body .entry-content a:hover,
body.avg-article .av-article-body .entry-content a:focus {
	color: var(--coral-deep) !important;
	text-decoration-color: currentColor;
}

/* Lists — G rhythm, real disc/decimal, ink text. */
body.avg-article .av-article-body .entry-content ul,
body.avg-article .av-article-body .entry-content ol {
	margin: 0 0 var(--space-5) 0;
	padding-left: 1.4em;
}
body.avg-article .av-article-body .entry-content ul { list-style: disc; }
body.avg-article .av-article-body .entry-content ol { list-style: decimal; }
body.avg-article .av-article-body .entry-content li {
	font-size: 17px;
	line-height: 1.6;
	margin: 0 0 var(--space-2);
	color: var(--ink);
}
@media (max-width: 900px) {
	body.avg-article .av-article-body .entry-content li { font-size: 16.5px; line-height: 1.6; }
}

/* Blockquote / pull-quote — 4px coral rule, Nunito 700 italic, no glyph.
   Critic MAJOR 9: legacy giant quote glyph must go. */
body.avg-article .av-article-body .entry-content blockquote,
body.avg-article .av-article-body .entry-content .wp-block-quote {
	margin: var(--space-7) 0;
	padding: var(--space-2) var(--space-5);
	border-left: 4px solid var(--coral);
	background: transparent;
	font-family: var(--display) !important;
	font-weight: 700;
	font-style: italic;
	font-size: 21px;
	line-height: 1.4;
	color: var(--ink);
	quotes: none;
}
body.avg-article .av-article-body .entry-content blockquote:before,
body.avg-article .av-article-body .entry-content blockquote:after,
body.avg-article .av-article-body .entry-content .wp-block-quote:before,
body.avg-article .av-article-body .entry-content .wp-block-quote:after {
	content: none;
	display: none;
}
body.avg-article .av-article-body .entry-content blockquote p {
	font-family: var(--display) !important;
	font-weight: 700;
	font-style: italic;
	font-size: 21px;
	line-height: 1.4;
	color: var(--ink);
	margin: 0 0 var(--space-3);
}

/* Tables — cream header, hair separators, G tokens. */
body.avg-article .av-article-body .entry-content table {
	width: 100%;
	border-collapse: collapse;
	margin: var(--space-6) 0;
	font-family: var(--body) !important;
	font-size: 15px;
	line-height: 1.5;
	background: var(--page);
	border: 1.5px solid var(--rule);
}
body.avg-article .av-article-body .entry-content thead th,
body.avg-article .av-article-body .entry-content th {
	background: var(--cream);
	font-family: var(--display) !important;
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--ink);
	padding: 10px 14px;
	text-align: left;
	border-bottom: 1.5px solid var(--rule);
}
body.avg-article .av-article-body .entry-content td {
	padding: 10px 14px;
	border-bottom: 1px solid var(--hair);
	color: var(--ink);
	vertical-align: top;
}
body.avg-article .av-article-body .entry-content tr:last-child td { border-bottom: 0; }
body.avg-article .av-article-body .entry-content tbody tr:nth-child(even) td { background: #FDFBF3; }

/* In-body figures — G frame treatment, consistent widths (MEDIUM 11). */
body.avg-article .av-article-body .entry-content figure,
body.avg-article .av-article-body .entry-content .wp-block-image {
	margin: var(--space-7) 0;
	padding: 12px;
	background: var(--page);
	border: 1.5px solid var(--rule);
	max-width: 100%;
}
body.avg-article .av-article-body .entry-content figure img,
body.avg-article .av-article-body .entry-content .wp-block-image img {
	display: block;
	width: 100%;
	max-width: 100%;
	height: auto;
	margin: 0 auto;
	background: var(--paper);
}
body.avg-article .av-article-body .entry-content figcaption,
body.avg-article .av-article-body .entry-content .wp-block-image figcaption {
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px solid var(--hair);
	font-family: var(--body) !important;
	font-style: italic;
	font-weight: 400 !important;
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--ink-3) !important;
	background: transparent !important;
}
/* Bare <img> in the body (no wrapping figure) — center, cap width, quiet. */
body.avg-article .av-article-body .entry-content > p > img,
body.avg-article .av-article-body .entry-content > img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: var(--space-6) auto;
}

/* "Image Source: …" / "Source: …" credits — the legacy pattern renders as
   bold blue link line. Restyle to quiet italic G caption. Matched by the
   parent-strong-with-blue-link pattern the entry-content carries. */
body.avg-article .av-article-body .entry-content p strong a,
body.avg-article .av-article-body .entry-content p em a {
	font-weight: inherit;
	color: var(--ink-3) !important;
}
/* When a paragraph opens with "Image Source" or "Source:" — quiet the whole
   paragraph. Attribute selectors on empty ::first-letter not supported, so
   we scope by structural pattern via .wp-caption-text where WP wraps it. */
body.avg-article .av-article-body .entry-content p.wp-caption-text,
body.avg-article .av-article-body .entry-content .wp-caption-text {
	font-family: var(--body) !important;
	font-style: italic;
	font-weight: 400 !important;
	font-size: 13px;
	color: var(--ink-3) !important;
	background: transparent !important;
	padding: 6px 0 0 !important;
	text-align: left !important;
}

/* Kill any theme "pin-it" hover overlay leftover on in-body images (W1
   translucent olive circle on the sour-crop chicken photo). */
body.avg-article .av-article-body .thb-pin-it,
body.avg-article .av-article-body .thb-pin-it-container .thb-pin-it,
body.avg-article .av-article-body .thb-pin-it-container:hover .thb-pin-it,
body.avg-article .av-article-body .thb-pin-it-wrapper,
body.avg-article .av-article-body .thb-lightbox-button,
body.avg-article .av-article-body .thb-pinit-hover {
	display: none !important;
	opacity: 0 !important;
	pointer-events: none !important;
}

/* Legacy in-content jump-list (some articles emit `.av-jumplist` inline) —
   restyle to G. MEDIUM 10. */
body.avg-article .av-article-body .av-jumplist,
body.avg-article .av-article-body .entry-content .av-jumplist {
	background: var(--cream) !important;
	border: 1.5px solid var(--hair) !important;
	padding: var(--space-4) var(--space-5) !important;
	margin: var(--space-6) 0 !important;
	border-radius: 4px;
}
body.avg-article .av-article-body .av-jumplist a {
	color: var(--ink) !important;
	text-decoration: none !important;
	font-family: var(--display) !important;
	font-weight: 700 !important;
}
body.avg-article .av-article-body .av-jumplist a:hover { color: var(--coral-deep) !important; text-decoration: underline !important; }
body.avg-article .av-article-body .av-jumplist .av-jumplist__title,
body.avg-article .av-article-body .av-jumplist h2,
body.avg-article .av-article-body .av-jumplist h3 {
	font-family: var(--meta) !important;
	font-weight: var(--meta-w) !important;
	font-size: 11.5px !important;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--ink-3) !important;
	margin: 0 0 var(--space-3) !important;
	background: transparent !important;
}

/* ---- "When to call a vet" callout (Bird Health only) ------------------- */
body.avg-article .av-vet-callout {
	margin: var(--space-8) 0 var(--space-7);
	padding: var(--space-6);
	background: var(--forest-tint);
	border-left: 4px solid var(--forest);
	border-radius: 4px;
}
body.avg-article .av-vet-callout__eyebrow {
	font-family: var(--meta);
	font-weight: var(--meta-w);
	font-size: 11.5px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--forest-deep);
	margin: 0 0 var(--space-2);
}
body.avg-article .av-vet-callout__heading {
	font-family: var(--display) !important;
	font-weight: 800 !important;
	font-size: 24px;
	line-height: 1.2;
	color: var(--forest-deep) !important;
	margin: 0 0 var(--space-3) !important;
}
body.avg-article .av-vet-callout__list {
	list-style: none !important;
	margin: 0 0 var(--space-4) !important;
	padding: 0 !important;
}
body.avg-article .av-vet-callout__list li {
	position: relative;
	padding: 0 0 var(--space-2) 22px;
	font-family: var(--body) !important;
	font-weight: 500;
	font-size: 15.5px;
	line-height: 1.5;
	color: var(--forest-deep);
	list-style: none !important;
}
body.avg-article .av-vet-callout__list li:before {
	content: "";
	position: absolute;
	left: 0; top: 8px;
	width: 10px; height: 10px;
	background: var(--coral);
	border-radius: 999px;
}
body.avg-article .av-vet-callout__cta-wrap { margin: 0 0 var(--space-3); }
body.avg-article .av-vet-callout__cta {
	display: inline-block;
	background: var(--sun);
	color: var(--forest-deep) !important;
	border: 1.5px solid var(--sun);
	padding: 12px 20px;
	border-radius: 4px;
	font-family: var(--display) !important;
	font-weight: 800;
	font-size: 14.5px;
	text-decoration: none !important;
	min-height: 44px;
}
body.avg-article .av-vet-callout__cta:hover { background: var(--paper); border-color: var(--paper); }
body.avg-article .av-vet-callout__note {
	margin: 0;
	font-family: var(--body);
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--forest-deep);
	opacity: .82;
}

/* ---- References section -------------------------------------------------
   Item F fix pass (2026-08-21): the BEM child-class selectors above matched
   nothing on live articles (post_content emits classless <ol><li>) so the
   panel typography never applied. Rewritten as descendant selectors, and
   backgrounded with the warm --paper token instead of the cool #f8f8f8 the
   parent .av-references rule paints under it (style.css:425). Also covers
   both the shortcode-emitted classless markup AND any BEM markup that turns
   up later, so no regression when either style is authored.
   ------------------------------------------------------------------------ */
body.avg-article .av-references {
	background: var(--paper) !important;
	margin: var(--space-8) 0;
	padding: var(--space-6);
	border: 0 !important;
	border-top: 1.5px solid var(--rule);
	border-radius: 0 !important;
}
body.avg-article .av-references > h2,
body.avg-article .av-references .av-references__heading {
	font-family: var(--display) !important;
	font-weight: 800 !important;
	font-size: 22px !important;
	color: var(--ink) !important;
	margin: 0 0 var(--space-4) !important;
}
body.avg-article .av-references > ol,
body.avg-article .av-references .av-references__list {
	margin: 0 !important;
	padding-left: 1.6em !important;
	list-style: decimal !important;
	font-size: 14.5px;
	line-height: 1.55;
}
body.avg-article .av-references > ol > li,
body.avg-article .av-references .av-references__item {
	font-family: var(--body) !important;
	font-size: 14.5px;
	line-height: 1.55;
	color: var(--ink-2);
	margin: 0 0 var(--space-3);
}
body.avg-article .av-references > ol > li::marker {
	color: var(--ink-2);
}
body.avg-article .av-references > ol > li a,
body.avg-article .av-references .av-references__item a {
	color: var(--hub-deep, var(--coral-deep)) !important;
	text-decoration: underline;
	overflow-wrap: anywhere;
}
body.avg-article .av-references > ol > li em,
body.avg-article .av-references .av-references__item em {
	font-style: italic;
}

/* ---- Item G: chrome font fallback ---------------------------------------
   style.css §3.x defines the trust-component classes (byline, endplate,
   author-card, vet-CTA tile) without font-family declarations, so they
   fall through to the parent theme's Helvetica Neue stack. Force the G
   pairing on all G-template articles. Scoped to body.avg-article so
   non-G surfaces are untouched. Design-critic 6 (2026-08-20).
   ------------------------------------------------------------------------ */
body.avg-article .av-byline,
body.avg-article .av-byline__name,
body.avg-article .av-byline__meta,
body.avg-article .av-endplate,
body.avg-article .av-endplate__lead,
body.avg-article .av-endplate__eyebrow,
body.avg-article .av-eop-card,
body.avg-article .av-eop-card__desc,
body.avg-article .av-author-card,
body.avg-article .av-author-card__role,
body.avg-article .av-author-card__bio,
body.avg-article .av-author-card__bio p,
body.avg-article .av-author-card__link,
body.avg-article .av-sidebar-vetcta,
body.avg-article .thb-article-tags {
	font-family: var(--body);
}
body.avg-article .av-author-card__name,
body.avg-article .av-eop-card__title {
	font-family: var(--display);
}

/* ---- Item H: citation clusters do not orphan-wrap ---------------------- */
body.avg-article .entry-content sup {
	white-space: nowrap;
}

/* ---- Item I: article tags row restyled to G tokens --------------------- */
body.avg-article .thb-article-tags {
	margin: var(--space-6) 0 0;
	padding-top: var(--space-4);
	border-top: 1px solid var(--rule);
	font-size: 12px;
	line-height: 1.4;
	color: var(--ink-2);
	letter-spacing: 0.02em;
	text-transform: none;
}
body.avg-article .thb-article-tags a {
	display: inline-block;
	margin: 4px 6px 0 0;
	padding: 4px 10px;
	background: var(--paper);
	border: 1px solid var(--rule);
	border-radius: 999px;
	color: var(--hub-deep, var(--coral-deep));
	font-size: 12.5px;
	text-transform: none;
	text-decoration: none;
	letter-spacing: 0;
}
body.avg-article .thb-article-tags a:hover,
body.avg-article .thb-article-tags a:focus {
	background: var(--hub-deep, var(--coral-deep));
	color: var(--paper);
}

/* ---- sidebar aside (spec §2.3 point 7) ---------------------------------- */
body.avg-article .av-article-sidebar {
	min-width: 0;
	padding: 0;
	background: transparent;
	display: flex;
	flex-direction: column;
	gap: var(--space-6);
}
@media (min-width: 1024px) {
	body.avg-article .av-article-sidebar {
		position: sticky;
		/* BLOCKER 1: sticky terminates when its containing grid row ends.
		   The rail cannot escape into the finale/footer band because the
		   sticky context = grid cell height. */
		top: calc(var(--header-h, 104px) + 24px);
		align-self: start;
		max-height: calc(100vh - var(--header-h, 104px) - 48px);
		overflow-y: auto;
		contain: layout paint;
	}
}

body.avg-article .av-sidebar-heading {
	font-family: var(--meta);
	font-weight: var(--meta-w);
	font-size: 11.5px;
	line-height: 1.3;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--ink-3);
	margin: 0 0 var(--space-3);
	padding: 0 0 var(--space-2);
	border-bottom: 1.5px solid var(--hair);
	display: block;
}
body.avg-article .av-sidebar-heading__scope { color: var(--hub-deep, var(--ink-3)); }

body.avg-article .av-related-list { list-style: none; margin: 0; padding: 0; }
body.avg-article .av-related-item {
	margin: 0;
	padding: var(--space-3) 0;
	border-bottom: 1px solid var(--hair-2);
	list-style: none;
}
body.avg-article .av-related-item:last-child { border-bottom: 0; }
body.avg-article .av-related-item a {
	display: block;
	font-family: var(--display);
	font-weight: 700;
	font-size: 15px;
	line-height: 1.3;
	color: var(--ink) !important;
	text-decoration: none !important;
}
body.avg-article .av-related-item a:hover {
	color: var(--coral-deep) !important;
	text-decoration: underline !important;
}

/* Author mini-card DELETED FROM TEMPLATE (BLOCKER 3). Belt-and-braces hide
   in case any legacy caller path still renders it. */
body.avg-article .av-sidebar-about,
body.avg-article aside.av-article-sidebar .av-sidebar-about {
	display: none !important;
}

/* Sidebar vet-CTA card — internal navigation to /talk-to-an-avian-vet/.
   Restyled 2026-08-25 (owner ruling): no sponsored label, no green
   affiliate tint. Reads as a quiet in-house CTA in the sidebar rail,
   register-matched to .av-sidebar-related / .av-sidebar-rehab. */
body.avg-article .av-sidebar-vetcta {
	padding: var(--space-4);
	background: var(--paper);
	border: 1px solid var(--hair);
	border-radius: 4px;
}
body.avg-article .av-sidebar-vetcta .av-sidebar-heading {
	margin-bottom: var(--space-3);
}
body.avg-article .av-vetcta-body {
	margin: 0 0 var(--space-3);
	font-family: var(--body);
	font-weight: 400;
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--ink-2);
}
body.avg-article .av-vetcta-cta {
	display: inline-block;
	background: transparent;
	color: var(--hub-deep, var(--coral-deep)) !important;
	border: 1px solid var(--hub-deep, var(--coral-deep));
	padding: 8px 14px;
	border-radius: 4px;
	font-family: var(--display);
	font-weight: 700;
	font-size: 13.5px;
	text-decoration: none !important;
	min-height: 36px;
	line-height: 20px;
}
body.avg-article .av-vetcta-cta:hover,
body.avg-article .av-vetcta-cta:focus {
	background: var(--hub-deep, var(--coral-deep));
	color: var(--paper) !important;
}

/* =========================================================================
   BLOCKER 4 / ux C2, C3 — kill the legacy component stack on G pilots.
   These selectors target parent theme components emitted OUTSIDE the child's
   template control. Every rule is scoped to body.avg-article — non-pilot
   articles retain the parent theme's behavior.
   ========================================================================= */

/* Theme share bars (icons row + colored button row + "0 SHARES"). */
body.avg-article .thb-post-share-container,
body.avg-article .thb-post-share,
body.avg-article .thb-social-top,
body.avg-article .thb-social-bottom,
body.avg-article .thb-article-share,
body.avg-article .thb-share-buttons,
body.avg-article .thb-share-post,
body.avg-article .thb-share-count,
body.avg-article .thb-total-shares,
body.avg-article .thb-post-shares,
body.avg-article .thb-share-total,
body.avg-article .social-button-holder,
body.avg-article .thb-reaction,
body.avg-article .thb-article-reactions,
body.avg-article .single-share,
body.avg-article .share-buttons,
body.avg-article .post-share {
	display: none !important;
}

/* "SEE ALSO" widget + related-post-inset. */
body.avg-article .thb-see-also,
body.avg-article .thb-related-posts,
body.avg-article .thb-recommend,
body.avg-article .see-also,
body.avg-article .thb-inarticle-recommend {
	display: none !important;
}

/* thb-article-nav / prev-next floaters (owner A3) — at ALL widths. */
body.avg-article .thb-article-nav,
body.avg-article .thb-next-post,
body.avg-article .thb-prev-post,
body.avg-article .thb-post-navigation,
body.avg-article .thb-fixed-post-navigation,
body.avg-article .thb-nav-links,
body.avg-article .thb-prevnext,
body.avg-article .thb-post-nav,
body.avg-article #back-to-top,
body.avg-article .thb-back-to-top,
body.avg-article .thb-scroll-top,
body.avg-article #scroll_to_top,
body.avg-article .thb-post-nav-container {
	display: none !important;
}

/* Parent theme "author info" bio card duplicating our finale author block. */
body.avg-article .thb-author-info,
body.avg-article .thb-post-author,
body.avg-article .single-author-info,
body.avg-article .post-detail .thb-author {
	display: none !important;
}

/* Parent theme's article-container gets `display: flex`; override so our
   grid takes ownership. */
body.avg-article .av-article-container {
	display: block;
	padding: 0;
}

/* Endplate (finale) — extracted from $_content in g-article.php and rendered
   OUTSIDE the reading grid so the sticky sidebar's grid-row context ends
   before the finale (BLOCKER 1 fix 2026-08-19). The parent .av-endplate rule
   full-bleeds to viewport (width:100vw + margin-left:-50vw); on the G article
   template we want a contained finale sitting in the article column, not a
   full-bleed band — override those escape properties and re-anchor to the
   article container width. */
body.avg-article .av-article-finale-wrap {
	margin-top: var(--space-9);
	clear: both;
	width: 100%;
}
body.avg-article .av-article-finale-wrap > .av-endplate {
	width: auto !important;
	max-width: 100% !important;
	position: static !important;
	left: auto !important;
	right: auto !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	margin-top: 0 !important;
	background: transparent !important;
	border-top: 0 !important;
	padding: var(--space-6) 0 var(--space-8) !important;
}
body.avg-article .av-article-finale-wrap > .av-endplate .av-endplate__section {
	max-width: none !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* =========================================================================
   Fix pass 2026-08-19 (closing wave 4a survivors + trust-page truth fixes).
   Each rule below carries a review-item reference so a future author can
   trace why it exists.
   ========================================================================= */

/* Item 6 (critic #1/#2 + UX W2) — empty ~120px band + double hair rule below
   byline. Parent theme's `.post-detail-style4 .post-title-container` puts
   `border-bottom: 1px solid #e9e9e9; padding-bottom: 40px; margin-bottom: 50px`
   under the whole title band — that IS the second hair rule + the empty
   space between byline and hero. Zero it on the G template. */
body.avg-article .post-detail-style4 .post-title-container,
body.avg-article .av-article-title-band {
	border-bottom: 0 !important;
	padding-bottom: 0 !important;
	margin-bottom: var(--space-5) !important;
}

/* Item 8 + UX W2 — letterboxed small-source hero + in-body images. Drop the
   aspect-ratio + object-fit lockup so the frame follows the image's natural
   aspect (a 2:1 source no longer gets top/bottom-cropped to force 16:9, and
   a small source no longer sits inside a taller wide box with grey band).
   Keep width:100% so the parent theme's lazyload placeholder src="…-20x11"
   still scales to the container instead of shrinking the whole frame to
   20px wide (the first attempted fix broke desktop for exactly this
   reason — placeholder src wins layout before JS swaps). */
body.avg-article .av-article-hero-figure__img,
body.avg-article .av-article-hero-figure > img,
body.avg-article .av-article-hero-figure img {
	aspect-ratio: auto !important;
	object-fit: initial !important;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	background: transparent !important;
	display: block;
}
body.avg-article .av-article-body .entry-content figure img,
body.avg-article .av-article-body .entry-content .wp-block-image img {
	width: 100%;
	max-width: 100%;
	height: auto;
	background: transparent;
}

/* Item 7 (critic Wave 4a re-verify survivor 5) — finale destination card
   hues must follow the destination hub per §1.1 (sky/sun/coral/forest).
   The style.css baseline mapped basics→#6a8f6a green and vet→surface-dark
   and about→link — none of those are the wayfinding tokens. Retoken here
   so DESIGN-LANGUAGE-G governs. Rule specificity beats style.css by
   scoping to body.avg-article (article template) OR the parent .av-endplate
   rendering context on any page. */
.av-eop-card--basics { border-left-color: var(--sky) !important; }
.av-eop-card--basics .av-eop-card__icon { color: var(--sky) !important; }
.av-eop-card--care { border-left-color: var(--sun) !important; }
.av-eop-card--care .av-eop-card__icon { color: var(--sun-deep) !important; }
.av-eop-card--health { border-left-color: var(--coral) !important; }
.av-eop-card--health .av-eop-card__icon { color: var(--coral) !important; }
.av-eop-card--vet { border-left-color: var(--forest) !important; }
.av-eop-card--vet .av-eop-card__icon { color: var(--forest) !important; }
.av-eop-card--service { border-left-color: var(--forest) !important; }
.av-eop-card--service .av-eop-card__icon { color: var(--forest) !important; }
/* About / policy cards read as neutral trust destinations — not a hub. */
.av-eop-card--about { border-left-color: var(--ink-3) !important; }
.av-eop-card--about .av-eop-card__icon { color: var(--ink-3) !important; }
.av-eop-card--policy { border-left-color: var(--ink-3) !important; }
.av-eop-card--policy .av-eop-card__icon { color: var(--ink-3) !important; }

/* Item 9 — kill the last theme-blue link. Style.css line 487 has
   `.av-author-card__link { color: var(--link); }` which resolves to
   #1779BA. Retoken to the ink stack + coral-deep on hover so the finale
   author card is fully in the G palette. */
.av-endplate .av-author-card__link,
.av-author-card__link {
	color: var(--ink-2) !important;
	text-decoration: underline;
	text-decoration-color: color-mix(in oklab, currentColor 35%, transparent);
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}
.av-endplate .av-author-card__link:hover,
.av-endplate .av-author-card__link:focus,
.av-author-card__link:hover,
.av-author-card__link:focus {
	color: var(--coral-deep) !important;
	text-decoration-color: currentColor !important;
}

/* ---- reduced motion --------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	body.avg-article .av-related-item a,
	body.avg-article .av-vetcta-cta,
	body.avg-article .av-article-body .entry-content a { transition: none !important; }
}

/* ---- print ------------------------------------------------------------- */
@media print {
	body.avg-article .av-article-sidebar,
	body.avg-article .av-sidebar-vetcta,
	body.avg-article .av-vet-callout { display: none; }
	body.avg-article .av-endmatter-disclaimer,
	body.avg-article .av-before-you-dose {
		background: transparent;
		border-color: #000;
	}
}
/* ==========================================================================
 * WAVE 4b CLOSURE — appended to article-g.css (2026-08-19)
 * Fixes: critic 1 (table letter-stack), critic 7 (Related fallback),
 * critic 10 (refs padding), critic 11 (mobile breadcrumb wrap), critic 4
 * (default-neutral eyebrow when hub unresolved).
 * ========================================================================== */

/* --- Critic 1: Wide tables letter-stack at 375 -----------------------------
 * Root cause: WP block editor emits table.has-fixed-layout inside
 * <figure class="wp-block-table">. table-layout:fixed distributes columns
 * evenly regardless of content, so at 375 a 5-6 col table gives each cell
 * ~60px and words break letter-per-line. Fix: unwrap fixed layout AND wrap
 * the FIGURE in an overflow-x scroller with a min-width table so long labels
 * ("Watermelon") never get column-crushed. Also kills the word-break that
 * splits words at 1440 ("Cantaloup-e"). Systemic — every article table.
 * -------------------------------------------------------------------------- */
body.avg-article .av-article-body .entry-content .wp-block-table {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
	margin: var(--space-6) 0;
	padding: 0; /* the figure frame's default padding fights the scroller — reset it here */
	background: transparent;
	border: 0;
}
body.avg-article .av-article-body .entry-content .wp-block-table table {
	min-width: 520px; /* enough to hold 4-6 columns without letter-stacking */
	margin: 0; /* wrapper owns margin now */
	table-layout: auto !important; /* override .has-fixed-layout that causes uniform column crush */
}
body.avg-article .av-article-body .entry-content .wp-block-table.has-fixed-layout,
body.avg-article .av-article-body .entry-content .has-fixed-layout {
	table-layout: auto !important;
}
/* Loose <table> not wrapped in .wp-block-table figure — same treatment via
 * block display + own scroller (defensive for legacy or hand-written tables). */
body.avg-article .av-article-body .entry-content > table {
	display: block;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
}
/* Word-break kill — no legacy CSS should chop words mid-glyph inside
 * article body cells. Overrides parent-theme .entry-content th/td rules. */
body.avg-article .av-article-body .entry-content th,
body.avg-article .av-article-body .entry-content td {
	word-break: normal !important;
	overflow-wrap: break-word;
	hyphens: manual;
	white-space: normal;
}

/* --- Critic 7: Single-link Related fallback rendering ---------------------
 * When the sidebar has no peer articles, the label "Related in {sub}" over
 * a bare hub link reads broken. New treatment: caps eyebrow "EXPLORE" +
 * hub name link. Handled in inc/g-article.php with the .av-sidebar-related--fallback
 * modifier — this stylesheet gives the fallback its own visual grammar so
 * it doesn't wear the multi-item Related headline chrome.
 * -------------------------------------------------------------------------- */
body.avg-article .av-sidebar-related--fallback .av-sidebar-heading__label {
	/* Overridden in-template to "Explore"; this rule kills any stale bold "Related" chrome that might carry through if the template hadn't been re-rendered yet. */
}
body.avg-article .av-sidebar-related--fallback .av-sidebar-heading__scope {
	display: none; /* fallback has no scope suffix — just "EXPLORE" */
}
body.avg-article .av-sidebar-related--fallback p {
	margin: 8px 0 0;
	font-family: var(--body);
	font-size: 15px;
	line-height: 1.45;
}
body.avg-article .av-sidebar-related--fallback p a {
	color: var(--hub-deep, var(--coral-deep)) !important;
	font-weight: 700;
	text-decoration: none;
	border-bottom: 2px solid var(--hub, var(--coral));
}
body.avg-article .av-sidebar-related--fallback p a:hover,
body.avg-article .av-sidebar-related--fallback p a:focus {
	color: var(--ink) !important;
}

/* --- Critic 10: References panel top padding ~3× bottom ------------------
 * .av-references gained ~100px of blank ground above the heading (probably
 * from margin-collapse with a preceding block). Balance the panel.
 * -------------------------------------------------------------------------- */
body.avg-article .av-references {
	padding-top: var(--space-4);
	padding-bottom: var(--space-4);
	margin-top: var(--space-6);
}
body.avg-article .av-references__heading {
	margin-top: 0; /* kill inherited h2 top-margin — the panel owns spacing */
}

/* --- Critic 11 / UX W3: Mobile breadcrumb wraps orphan the › separator ---
 * At ≤480 the "ROUTINE CARE › HATCHLING & BABY BIRD" pair wraps as
 *   ROUTINE CARE ›       (line 1, orphaned glyph)
 *   HATCHLING & BABY BIRD (line 2)
 * Fix: nowrap the hub+separator pair so the second crumb wraps as a block,
 * and if it must break, keep the separator glued to the hub crumb.
 * -------------------------------------------------------------------------- */
@media (max-width: 480px) {
	body.avg-article .av-article-eyebrow-header {
		flex-wrap: wrap;
		align-items: baseline;
	}
	body.avg-article .av-article-eyebrow-header .av-eyebrow--hub {
		/* keep the hub label with its separator (glued via display:inline + no space between DOM elements in template) */
		white-space: nowrap;
	}
	body.avg-article .av-article-eyebrow-header .av-eyebrow-sep {
		white-space: nowrap;
		margin-right: 4px;
	}
	body.avg-article .av-article-eyebrow-header .av-eyebrow {
		/* the sub-cat wraps as its own block; nowrap keeps the whole label on one line */
		white-space: normal;
	}
}

/* --- Critic 4 defensive: fallback eyebrow underline when hub unresolved ---
 * When no data-hub resolves (post has categories that don't map to a hub),
 * --hub stays at :root's default (coral). The critic mandates: never
 * silently default to Bird Health hue. A page with data-hub="home" now
 * treats the article eyebrow as HUE-AGNOSTIC — ink underline instead of coral.
 * This ONLY fires when the hue resolver truly can't decide. Real hub pages
 * carry data-hub="basics|routine|health|vet" set from body.php and their
 * --hub still takes precedence. */
body[data-hub="home"].avg-article .av-eyebrow,
body[data-hub="home"].avg-article .av-eyebrow:visited,
body[data-hub="trust"].avg-article .av-eyebrow,
body[data-hub="trust"].avg-article .av-eyebrow:visited {
	border-bottom-color: var(--ink);
}
body[data-hub="home"].avg-article .av-eyebrow:hover,
body[data-hub="trust"].avg-article .av-eyebrow:hover {
	color: var(--ink);
}

/* === TRANCHE 3 FINAL patch (2026-08-19) === */
/* Critic 12: h2 inside .av-references must have zero top-margin so the panel
 * heading sits balanced against the panel padding. Generic-h2 rules were
 * winning over the specific `.av-references__heading` selector.
 * -------------------------------------------------------------------------- */
body.avg-article .av-references h2,
body.avg-article .av-references h2:first-child {
	margin-top: 0 !important;
}

/* UX W1 (2026-08-14) → RESTORED 2026-08-25 per feedback-round-critic MINOR:
 * the ≤480 display:none hid the ›, which mobile now needs back as hierarchy
 * signal ("BIRD HEALTH › DIGESTIVE"). Orphan-glyph risk is fixed structurally
 * instead — the template wraps the hub anchor and the separator span inside
 * a single .av-eyebrow-hub-wrap flex item (see g-article.php), so the ›
 * cannot line-break away from its hub crumb.
 * -------------------------------------------------------------------------- */
body.avg-article .av-article-eyebrow-header .av-eyebrow-hub-wrap {
	display: inline-flex;
	align-items: baseline;
	white-space: nowrap;
}
@media (max-width: 480px) {
	body.avg-article .av-article-eyebrow-header .av-eyebrow-sep {
		display: inline-block; /* explicit — override any legacy suppression */
	}
	body.avg-article .av-article-eyebrow-header .av-eyebrow--hub {
		margin-right: 0;
	}
}

/* ================================================================
   BLOCKER 2 (2026-08-20) — Wildlife Rehabilitation Resources
   sidebar module. Renders on /what-to-do-if-you-find-an-injured-bird/
   and any wild-bird / wildlife-rehabilitation category post in place
   of the suppressed sponsored tile (ruling §4B). Non-commercial,
   no televet reference.
   ================================================================ */
body.avg-article .av-sidebar-rehab {
	background: var(--forest-tint);
	border: 1.5px solid var(--forest);
	border-left: 4px solid var(--forest-deep);
	border-radius: var(--radius-2);
	padding: 20px 22px;
	margin: 28px 0 0;
}
body.avg-article .av-sidebar-rehab .av-rehab-label {
	font-family: var(--meta); font-weight: var(--meta-w);
	font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--forest-deep);
	margin: 0 0 10px;
}
body.avg-article .av-sidebar-rehab .av-rehab-note {
	font-family: var(--body); font-size: 14.5px; line-height: 1.5;
	color: var(--ink);
	margin: 0 0 14px;
}
body.avg-article .av-sidebar-rehab .av-rehab-list {
	list-style: none; padding: 0; margin: 0;
}
body.avg-article .av-sidebar-rehab .av-rehab-list li {
	padding: 10px 0;
	border-top: 1px solid rgba(38, 83, 74, 0.2);
}
body.avg-article .av-sidebar-rehab .av-rehab-list li:first-child { border-top: 0; padding-top: 4px; }
body.avg-article .av-sidebar-rehab .av-rehab-link {
	display: block;
	font-family: var(--display); font-weight: 700; font-size: 15.5px;
	color: var(--forest-deep);
	text-decoration: none;
	margin-bottom: 2px;
}
body.avg-article .av-sidebar-rehab .av-rehab-link:hover { color: var(--ink); text-decoration: underline; }
body.avg-article .av-sidebar-rehab .av-rehab-src {
	display: block;
	font-family: var(--meta); font-weight: 600; font-size: 10.5px;
	letter-spacing: 0.10em; text-transform: uppercase;
	color: var(--ink-3);
}

/* Fade-shadow scroll affordance on wide article tables at ≤900px so
   readers see visually that content extends beyond the viewport
   (W1 discoverability improvement — the wrap already scrolls; this
   makes the horizontal overflow obviously scrollable). */
@media (max-width: 900px) {
	body.avg-article .av-article-body .entry-content .wp-block-table {
		position: relative;
	}
	body.avg-article .av-article-body .entry-content .wp-block-table::after {
		content: "";
		position: absolute;
		top: 0; right: 0; bottom: 0; width: 40px;
		background: linear-gradient(to left, rgba(255,254,250,0.95), rgba(255,254,250,0));
		pointer-events: none;
	}
}

/* =========================================================================
   ARTICLE BODY COMPONENTRY KIT
   Ref: reviews/ARTICLE-BODY-COMPONENTRY.md §1
   Wave: componentry apply 2026-08-21
   Adds .av-steplist / .av-donts / .av-keyfacts / .av-pullquote /
   .av-quickref / .av-figure  plus ::marker hue on default lists.
   All selectors scoped under body.avg-article .av-article-body
   .entry-content (matching this file's existing depth for specificity).
   Tokens only — no new colors, no new families.
   ========================================================================= */

/* --- 1.1 .av-steplist — numbered procedure card -------------------------- */
body.avg-article .av-article-body .entry-content .av-steplist {
	background: var(--cream);
	border: 1.5px solid var(--hair);
	border-radius: var(--radius-2);
	padding: var(--space-6) var(--space-7);
	margin: var(--space-7) 0 var(--space-8);
}
body.avg-article .av-article-body .entry-content .av-steplist[data-tone="warn"] {
	background: var(--coral-tint);
}
body.avg-article .av-article-body .entry-content .av-steplist__eyebrow {
	/* Trust-subtlety punchpass 2026-08-24 (critic LOW item 7):
	   unify beige-callout label convention across the kit — was small-caps
	   gray (--meta 12px .10em uppercase --ink-3) which read as a chip label
	   inside the same beige family that carries "Before you dose" as a bold
	   sentence-case display heading. Standardize on the display-heading
	   pattern so both callouts read as ONE component vocabulary in situ. */
	font-family: var(--display);
	font-weight: 700;
	font-size: 20px;
	line-height: 1.25;
	letter-spacing: normal;
	text-transform: none;
	color: var(--ink);
	margin: 0 0 var(--space-3);
}
body.avg-article .av-article-body .entry-content .av-steplist__title {
	font-family: var(--display);
	font-weight: 700;
	font-size: 22px;
	line-height: 1.10;
	color: var(--ink);
	margin: 0 0 var(--space-4);
}
body.avg-article .av-article-body .entry-content .av-steplist__list {
	list-style: none;
	padding: 0;
	margin: 0;
	counter-reset: av-step;
}
body.avg-article .av-article-body .entry-content .av-steplist__step {
	position: relative;
	padding-left: 44px;
	margin: 0 0 var(--space-5);
	counter-increment: av-step;
}
body.avg-article .av-article-body .entry-content .av-steplist__step:last-child {
	margin-bottom: 0;
}
body.avg-article .av-article-body .entry-content .av-steplist__step::before {
	content: counter(av-step);
	position: absolute;
	left: 0;
	top: 0;
	width: 28px;
	height: 28px;
	background: var(--hub, var(--ink));
	color: var(--paper);
	border-radius: 999px;
	font-family: var(--display);
	font-weight: 800;
	font-size: 15px;
	letter-spacing: -.02em;
	display: flex;
	align-items: center;
	justify-content: center;
}
body.avg-article .av-article-body .entry-content .av-steplist[data-tone="warn"] .av-steplist__step::before {
	background: var(--coral-deep);
}
body.avg-article .av-article-body .entry-content .av-steplist__lead {
	font-family: var(--body);
	font-weight: 700;
	font-size: 17px;
	line-height: 1.45;
	color: var(--ink);
	margin: 0 0 var(--space-2);
}
body.avg-article .av-article-body .entry-content .av-steplist__step > p:not(.av-steplist__lead) {
	font-family: var(--body);
	font-weight: 500;
	font-size: 16px;
	line-height: 1.55;
	color: var(--ink-2);
	margin: 0 0 var(--space-2);
}
body.avg-article .av-article-body .entry-content .av-steplist__step > p:last-child {
	margin-bottom: 0;
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-steplist {
		padding: var(--space-5);
	}
	body.avg-article .av-article-body .entry-content .av-steplist__step {
		padding-left: 36px;
	}
	body.avg-article .av-article-body .entry-content .av-steplist__step::before {
		width: 24px;
		height: 24px;
		font-size: 13px;
	}
}

/* --- 1.2 .av-donts — named-and-dismissed remedies (YMYL) ---------------- */
body.avg-article .av-article-body .entry-content .av-donts {
	background: var(--coral-tint);
	border: 1.5px solid var(--coral);
	border-radius: var(--radius-2);
	padding: var(--space-6) var(--space-7);
	margin: var(--space-7) 0 var(--space-8);
}
body.avg-article .av-article-body .entry-content .av-donts__eyebrow {
	font-family: var(--meta);
	font-weight: 600;
	font-size: 12px;
	letter-spacing: .10em;
	text-transform: uppercase;
	color: var(--coral-deep);
	margin: 0 0 var(--space-4);
}
body.avg-article .av-article-body .entry-content .av-donts__list {
	list-style: none;
	padding: 0;
	margin: 0;
}
body.avg-article .av-article-body .entry-content .av-donts__item {
	position: relative;
	padding-left: 24px;
	margin: 0 0 var(--space-4);
}
body.avg-article .av-article-body .entry-content .av-donts__item:last-child {
	margin-bottom: 0;
}
body.avg-article .av-article-body .entry-content .av-donts__item::before {
	content: "\00D7";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--coral-deep);
	font-family: var(--display);
	font-weight: 800;
	font-size: 18px;
	line-height: 1.35;
}
body.avg-article .av-article-body .entry-content .av-donts__lead {
	font-family: var(--body);
	font-weight: 700;
	font-size: 16px;
	line-height: 1.45;
	color: var(--ink);
	margin: 0 0 var(--space-2);
}
body.avg-article .av-article-body .entry-content .av-donts__item > p:not(.av-donts__lead) {
	font-family: var(--body);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.55;
	color: var(--ink-2);
	margin: 0 0 var(--space-2);
}
body.avg-article .av-article-body .entry-content .av-donts__item > p:last-child {
	margin-bottom: 0;
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-donts {
		padding: var(--space-5);
	}
}

/* --- 1.3 .av-keyfacts — at-a-glance / worth-knowing box ---------------- */
body.avg-article .av-article-body .entry-content .av-keyfacts {
	background: var(--page);
	border: 1.5px solid var(--hair);
	border-left: 6px solid var(--hub, var(--coral));
	border-radius: var(--radius-2);
	padding: var(--space-5) var(--space-6);
	margin: var(--space-7) 0 var(--space-8);
}
body.avg-article .av-article-body .entry-content .av-keyfacts__eyebrow {
	font-family: var(--meta);
	font-weight: 600;
	font-size: 12px;
	letter-spacing: .10em;
	text-transform: uppercase;
	color: var(--hub-deep, var(--ink-3));
	margin: 0 0 var(--space-3);
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list {
	list-style: none;
	padding: 0;
	margin: 0;
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li {
	padding: var(--space-3) 0;
	border-top: 1px solid var(--hair-2);
	font-family: var(--body);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.55;
	color: var(--ink-2);
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li:first-child {
	border-top: 0;
	padding-top: 0;
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li:last-child {
	padding-bottom: 0;
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li > strong {
	font-family: var(--display);
	font-weight: 700;
	font-size: 15px;
	line-height: 1.35;
	color: var(--ink);
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-keyfacts {
		padding: var(--space-4) var(--space-5);
	}
}

/* --- 1.4 .av-pullquote — one load-bearing sentence, lifted ------------- */
/* Overrides base .entry-content figure padding/border so the pullquote
   reads as a lifted phrase, not a boxed figure. */
body.avg-article .av-article-body .entry-content .av-pullquote {
	background: transparent;
	border: 0;
	border-left: 4px solid var(--hub, var(--coral));
	border-radius: 0;
	padding: 0 0 0 var(--space-6);
	margin: var(--space-8) 0;
}
body.avg-article .av-article-body .entry-content .av-pullquote__body {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
}
body.avg-article .av-article-body .entry-content .av-pullquote__body > p {
	font-family: var(--display) !important;
	font-weight: 700;
	font-style: italic;
	font-size: 22px;
	line-height: 1.30;
	color: var(--ink);
	margin: 0;
}
body.avg-article .av-article-body .entry-content .av-pullquote__body > p::before,
body.avg-article .av-article-body .entry-content .av-pullquote__body > p::after {
	content: none;
	display: none;
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-pullquote__body > p {
		font-size: 19px;
	}
}

/* --- 1.5 .av-quickref — comparison / quick-reference table ------------- */
/* .av-quickref is applied on the outer <figure>. Reset the base figure
   padding so the table sits flush against the wrapper border, then style
   the table with G tokens. */
body.avg-article .av-article-body .entry-content .av-quickref {
	background: var(--page);
	border: 1.5px solid var(--rule);
	border-radius: var(--radius-2);
	padding: 0;
	margin: var(--space-7) 0 var(--space-8);
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
body.avg-article .av-article-body .entry-content .av-quickref__caption {
	display: block;
	font-family: var(--body);
	font-weight: 400;
	font-style: italic;
	font-size: 14px;
	line-height: 1.5;
	color: var(--ink-3);
	padding: var(--space-3) var(--space-4);
	border-bottom: 1px solid var(--hair);
	background: var(--page);
}
body.avg-article .av-article-body .entry-content .av-quickref > table {
	width: 100%;
	border-collapse: collapse;
	margin: 0;
	border: 0;
	background: transparent;
}
body.avg-article .av-article-body .entry-content .av-quickref thead th {
	background: var(--cream);
	font-family: var(--display);
	font-weight: 700;
	font-size: 13.5px;
	line-height: 1.3;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--ink);
	padding: var(--space-3) var(--space-4);
	text-align: left;
	border-bottom: 1.5px solid var(--rule);
}
body.avg-article .av-article-body .entry-content .av-quickref tbody td {
	font-family: var(--body);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.55;
	color: var(--ink);
	padding: var(--space-3) var(--space-4);
	border-top: 1px solid var(--hair-2);
	border-bottom: 0;
	background: var(--page);
	vertical-align: top;
}
body.avg-article .av-article-body .entry-content .av-quickref tbody tr:first-child td {
	border-top: 0;
}
body.avg-article .av-article-body .entry-content .av-quickref tbody tr:nth-child(even) td {
	background: var(--page);
}
body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] td {
	background: var(--coral-tint);
}
body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] td:first-child {
	border-left: 3px solid var(--coral-deep);
}
body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] td:last-child {
	font-family: var(--body);
	font-weight: 600;
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-quickref th:first-child,
	body.avg-article .av-article-body .entry-content .av-quickref td:first-child {
		position: sticky;
		left: 0;
		background: var(--page);
	}
	body.avg-article .av-article-body .entry-content .av-quickref thead th:first-child {
		background: var(--cream);
	}
	/* Critic MINOR (2026-08-25) mobile pair for the no-thead first-row tint
	   rule below — sticky-first-column would otherwise repaint the cell
	   page-colour and drop the tinted header treatment on the pinned cell. */
	body.avg-article .av-article-body .entry-content .av-quickref > table:not(:has(thead)) > tbody > tr:first-child > td:first-child,
	body.avg-article .av-article-body .entry-content .av-quickref > table:not(:has(thead)) > tbody > tr:first-child > th:first-child {
		background: var(--cream);
	}
}

/* --- Critic MINOR (2026-08-25): quickref thead tint consistency ------------
 * The .av-quickref thead th rule above tints the header row cream, but two
 * of the shipped quickref tables (both on /what-to-feed-or-not-feed-to-
 * chickens/, post 640) use <tbody><tr><td><strong> for their header row
 * instead of a <thead>. That leaves those headers rendered white while the
 * conure comparison table (with a proper <thead>) shows tinted. The critic
 * called for consistent tinted treatment across all .av-quickref headers.
 * Fix without touching content: when a quickref table has no <thead>, treat
 * the first <tr> inside <tbody> as the header row and apply the same tinted
 * typographic treatment. `:not(:has(thead))` scopes the rule so tables that
 * DO carry a real <thead> are unaffected (no double-tint). */
body.avg-article .av-article-body .entry-content .av-quickref > table:not(:has(thead)) > tbody > tr:first-child > td,
body.avg-article .av-article-body .entry-content .av-quickref > table:not(:has(thead)) > tbody > tr:first-child > th {
	background: var(--cream);
	font-family: var(--display);
	font-weight: 700;
	font-size: 13.5px;
	line-height: 1.3;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--ink);
	padding: var(--space-3) var(--space-4);
	border-top: 0;
	border-bottom: 1.5px solid var(--rule);
}
/* When the header cell carries the boilerplate <strong>Foo</strong> wrapping
   the tbody-first-row uses, kill the extra font-weight bump — the parent td
   above already sets font-weight:700 and the display-caps treatment; letting
   the <strong> compound would push it heavier than the real-thead case. */
body.avg-article .av-article-body .entry-content .av-quickref > table:not(:has(thead)) > tbody > tr:first-child > td > strong {
	font-weight: inherit;
}

/* --- 1.6 .av-figure — in-body composed image + caption ------------------ */
body.avg-article .av-article-body .entry-content .av-figure {
	background: var(--page);
	border: 1.5px solid var(--rule);
	border-radius: var(--radius-2);
	padding: var(--space-4);
	margin: var(--space-7) 0 var(--space-8);
}
body.avg-article .av-article-body .entry-content .av-figure > img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: 0;
	background: var(--paper);
}
body.avg-article .av-article-body .entry-content .av-figure[data-orient="portrait"] {
	max-width: 480px;
	margin-left: auto;
	margin-right: auto;
}
body.avg-article .av-article-body .entry-content .av-figure[data-orient="portrait"] > img {
	aspect-ratio: 1 / 1;
}
body.avg-article .av-article-body .entry-content .av-figure > figcaption {
	border-top: 1.5px solid var(--rule);
	margin-top: var(--space-3);
	padding-top: var(--space-3);
}
body.avg-article .av-article-body .entry-content .av-figure__label {
	display: inline;
	font-family: var(--meta) !important;
	font-weight: 600;
	font-style: normal;
	font-size: 11px;
	letter-spacing: .10em;
	text-transform: uppercase;
	color: var(--ink-3) !important;
	margin-right: var(--space-2);
}
body.avg-article .av-article-body .entry-content .av-figure__text {
	font-family: var(--body) !important;
	font-weight: 400;
	font-style: italic;
	font-size: 14px;
	line-height: 1.5;
	color: var(--ink-2) !important;
}
@media (max-width: 720px) {
	body.avg-article .av-article-body .entry-content .av-figure {
		padding: 10px;
	}
	body.avg-article .av-article-body .entry-content .av-figure > figcaption {
		display: flex;
		flex-direction: column;
	}
	body.avg-article .av-article-body .entry-content .av-figure__label {
		margin: 0 0 var(--space-1);
	}
}

/* --- 1.7 ::marker hue on default lists in article body ----------------- */
body.avg-article .av-article-body .entry-content ul > li::marker {
	color: var(--hub, var(--coral-deep));
}
body.avg-article .av-article-body .entry-content ol > li::marker {
	color: var(--hub, var(--coral-deep));
	font-weight: 700;
}
body.avg-article .av-article-body .entry-content .av-donts__list > li::marker,
body.avg-article .av-article-body .entry-content .av-steplist__list > li::marker,
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li::marker {
	color: transparent;
}

/* ======================= END componentry kit block ======================= */

/* =========================================================================
 * FINAL SWEEP polish (2026-08-21)
 * Applied per reviews/final-sweep-{critic,ux}.md:
 *   • CRITIC #8  — References block: subtle warm ground (panel treatment)
 *                  atop the existing top-rule so the block no longer reads
 *                  as an under-dressed component.
 *   • CRITIC #8  — Byline separator "·" no longer orphans at wrap on 375:
 *                  hide the standalone .av-byline__sep spans on narrow
 *                  viewports and let each __meta introduce its own leading
 *                  "·" via ::before, so a wrap moves the "·" with its meta
 *                  instead of stranding it on the previous line.
 *   • UX W3      — Citation sup anchor tap targets expanded to ≥24×24px
 *                  via padding + negative margin (line-height stable, no
 *                  layout shift on 1440).
 * ========================================================================= */

/* References panel — warm sand ground + refined padding + hairline stroke.
   The pre-sweep state (transparent paper with a single top rule) was the
   one under-dressed block in the article kit. */
body.avg-article .av-references {
	background: #FBF7EE !important;
	padding: var(--space-6) var(--space-6) calc(var(--space-6) - 4px) !important;
	border: 1px solid #EFE6D2 !important;
	border-top-width: 3px !important;
	border-radius: var(--radius-2) !important;
}
@media (max-width: 720px) {
	body.avg-article .av-references {
		padding: var(--space-4) var(--space-4) calc(var(--space-4) - 4px) !important;
	}
}

/* Byline separator suppression at wrap.
   On the hero byline strip at 375, the "·" separators are emitted as their
   OWN <span class="av-byline__sep">; when the strip wraps a "·" is left
   trailing on the previous line. Hide the standalone separator spans on
   mobile and give each __meta its own leading "·" via ::before, which
   wraps with the meta as one unit. Desktop rendering unchanged. */
@media (max-width: 720px) {
	body.avg-article .av-byline--hero .av-byline__strip {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		row-gap: 2px;
		column-gap: 6px;
	}
	body.avg-article .av-byline--hero .av-byline__sep { display: none; }
	/* Trust-subtlety punchpass 2026-08-24 (critic MEDIUM item 6):
	   suppress leading separator dots on wrapped byline lines. The prior
	   pattern used .av-byline__meta::before "\00b7" which put a "·" at the
	   start of every meta including wrapped ones — a wrapped line began
	   with "· Updated…" or "· Awaiting…" (a broken-bullet look). Emit the
	   dot only between metas on the SAME line via a middle-child ::before
	   with negative margin so wrap eats it; simpler: drop the leading dots
	   entirely on the stacked mobile layout, and rely on column-gap for
	   inter-meta breathing room. Applies to every .av-byline__meta variant
	   including .av-byline__meta--pending. */
	body.avg-article .av-byline--hero .av-byline__meta::before {
		content: none;
	}
	body.avg-article .av-byline--hero .av-byline__meta {
		white-space: nowrap;
	}
}

/* UX W3 — citation sup anchor tap targets.
   Existing rule at line 738 above sets .entry-content sup { white-space:
   nowrap }; extend that to expand the <a> hit area to ≥24×24px without
   changing the visual position of the [n] numeral. Padding + negative
   margin keeps the surrounding line-height unchanged. */
body.avg-article .entry-content sup a {
	display: inline-block;
	padding: 8px 6px;
	margin: -8px -6px;
	min-width: 24px;
	min-height: 24px;
	text-align: center;
	line-height: 1;
	box-sizing: border-box;
}
/* And ensure the invisible tap padding doesn't offset the visual bracketed
   [n] on desktop when hover backgrounds paint. */
body.avg-article .entry-content sup a:focus-visible {
	outline: 2px solid var(--hub, var(--coral-deep));
	outline-offset: 2px;
	border-radius: 3px;
}

/* =========================================================================
   50/50 SPLIT ARTICLE HERO (owner-approved 2026-08-25)
   Replaces the stacked hero for articles with a featured image. Source:
   reviews/hero-layout-options.md Option B (§6) + mock-5050.html.

   PHP marker: `.av-article-title-band--split` on the title band when the
   post has a thumbnail. Left column `.av-title-col` (eyebrow -> H1 -> dek
   -> byline, DOM source order preserved for the machine channel). Right
   column: framed `.av-article-hero-figure`.

   Per-breakpoint decisions (per owner condition 2026-08-25):
     >=1024   50/50 grid, gap 56px, align-items:center. Wrap inner at 1440
              = 1216px, halves ~580px — comfortable for the 48px H1.
     768-1023 STACKED. A 60/40 test at 768 puts the H1 column at ~336px,
              which wraps the 48px H1 to 4-5 lines and cramps the dek
              measure. Early stack chosen over a proportioned split.
     <=600    Stacked, image aspect capped 3:2 so a portrait natural source
              can't recreate the mobile scroll cost.
   Mobile stacked layout matches pre-change mobile: the current mobile hero
   was never the problem the split addresses (§1 measurements: mobile
   already at 1909 px to first H2; the desktop 2141 px is what the split
   fixes).
   ========================================================================= */

/* Escape the earlier max-width: 780px + margin-bottom on .av-article-title-band
   ONLY on split-mode band. Non-split bands (no-thumbnail posts) keep the
   original narrow 780px measure — no regression on articles without a hero
   image. */
body.avg-article .av-article-title-band--split {
	max-width: none !important;
	margin-top: var(--space-8);
	margin-bottom: var(--space-6) !important;
	padding: 0 !important;
	border-bottom: 0 !important;
}
body.avg-article .av-article-title-band--split .av-title-col {
	min-width: 0;
}

/* Right-column figure. In split mode the figure is a grid child and owns
   its own frame. Zero the base .av-article-hero-figure vertical margin so
   the grid controls placement. */
body.avg-article .av-article-title-band--split .av-article-hero-figure {
	margin: 0;
}

@media (min-width: 1024px) {
	body.avg-article .av-article-title-band--split {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 56px;
		align-items: center;
	}
	/* ==== HERO-BAND-A BLOCK — 2026-08-26 ==================================
	   Option A ruling (reviews/hero-band-height-options.md §9): constrain the
	   desktop split-hero image to a fixed 3:2 aspect frame. Prior state was
	   4:3, which made the IMAGE drive band height on short-H1 pages
	   (cockatoos, african-grey; measured 419-421px band, tCol content
	   343-373px). Under 3:2, the image renders 548×365 — SHORTER than tCol
	   content on short-H1 pages, so the band becomes title-driven everywhere.
	   Matches the existing ≤600px 3:2 mobile cap (cross-breakpoint
	   consistency).

	   Portrait-source framing (.av-article-hero-figure--portrait
	   object-position 50% 15%) is preserved by later rules; object-fit:cover
	   here composes cleanly with that offset so heads stay in frame.

	   Overrides the fix-pass-2026-08-19 `aspect-ratio: auto !important`
	   reset (that reset targets the pre-split stacked hero whose small-
	   source placeholder src could collapse the frame; in the split layout
	   the figure sits in a controlled grid cell so a fixed display aspect
	   is safe). */
	body.avg-article .av-article-title-band--split .av-article-hero-figure__img,
	body.avg-article .av-article-title-band--split .av-article-hero-figure > img,
	body.avg-article .av-article-title-band--split .av-article-hero-figure img {
		aspect-ratio: 3 / 2 !important;
		object-fit: cover !important;
		height: auto !important;
		width: 100% !important;
		background: transparent !important;
	}
	/* ==== END HERO-BAND-A BLOCK ============================================ */
}

@media (max-width: 1023px) {
	/* Stack. Figure sits below the title column with a comfortable gap. */
	body.avg-article .av-article-title-band--split .av-article-hero-figure {
		margin: var(--space-6) 0 0;
	}
}

@media (max-width: 600px) {
	/* Mobile image height cap. Fixed 3:2 crop keeps a portrait-source hero
	   from consuming the full viewport before the reader reaches the body,
	   without the earlier stacked-hero cost the current layout carries
	   (mobile split at 1695 px to first H2 vs the pre-split 1909 px is
	   already the goal). */
	body.avg-article .av-article-title-band--split .av-article-hero-figure__img,
	body.avg-article .av-article-title-band--split .av-article-hero-figure > img,
	body.avg-article .av-article-title-band--split .av-article-hero-figure img {
		aspect-ratio: 3 / 2 !important;
		object-fit: cover !important;
		height: auto !important;
		max-height: 55vh;
	}
}


/* ==== BEGIN MOBILE-TABLE-CARDS 2026-08-26 =================================
   Owner ruling 2026-08-26 (reviews/mobile-table-format.md): the ≤720px
   sticky-column swipe-scroll treatment (the earlier FINAL_REM mobile block)
   is RETIRED. Horizontal-scroll cut-off is a bad reader experience — tables
   in blog articles must get a different visual format at mobile and tablet.
   Below ≤1023 every .av-quickref (and .av-table-scroll on avg-article) row
   transforms into a card: first cell = title, remaining cells = label:value
   pairs driven by data-label (see inc/g-mobile-table-datalabel.php).
   Desktop (≥1024) is untouched. Selector ancestry matches the base
   .av-quickref rules (body.avg-article .av-article-body .entry-content …)
   so this block wins the cascade against the base overflow-x:auto etc.
   The money-page (.av-table-scroll on body.avg-money) half of this transform
   lives in pages-g.css — article-g.css is not enqueued on the money page.
   ========================================================================= */
@media (max-width: 1023px) {
  body.avg-article .av-article-body .entry-content .av-quickref,
  body.avg-article .av-article-body .entry-content .av-table-scroll {
    overflow-x: visible;
    -webkit-overflow-scrolling: auto;
    background: transparent;
    max-width: 100%;
    padding-right: 0;
    -webkit-mask-image: none;
            mask-image: none;
  }

  /* Hide column headers visually — labels move into ::before on each cell. */
  body.avg-article .av-article-body .entry-content .av-quickref thead,
  body.avg-article .av-article-body .entry-content .av-table-scroll thead {
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
  }

  /* Table + tbody become block/grid layout containers. */
  body.avg-article .av-article-body .entry-content .av-quickref > table,
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody { display: block; }

  body.avg-article .av-article-body .entry-content .av-quickref > table,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }

  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-4);
    padding: var(--space-4);
    background: var(--paper);
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }

  /* Each row becomes a card. */
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody > tr,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody > tr {
    display: block;
    background: var(--page);
    border: 1.5px solid var(--hair);
    border-top: 4px solid var(--hub, var(--coral));
    border-radius: var(--radius-2);
    padding: var(--space-4) var(--space-5);
    box-sizing: border-box;
    min-width: 0;
  }

  /* First cell = card title. */
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody > tr > td:first-child,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody > tr > td:first-child {
    display: block;
    font-family: var(--display);
    font-weight: 700;
    font-size: 17px;
    line-height: 1.25;
    color: var(--ink);
    padding: 0 0 var(--space-3) 0;
    margin: 0 0 var(--space-2) 0;
    border: 0;
    border-bottom: 1px solid var(--hair);
    background: transparent;
    position: static;
    box-shadow: none;
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
  }
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody > tr > td:first-child::before,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody > tr > td:first-child::before { content: none; }

  /* Remaining cells = label:value pairs via CSS Grid. */
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody > tr > td:not(:first-child),
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody > tr > td:not(:first-child) {
    display: grid;
    grid-template-columns: minmax(96px, 38%) 1fr;
    column-gap: var(--space-3);
    padding: var(--space-3) 0 0 0;
    border: 0;
    border-top: 1px solid var(--hair-2);
    background: transparent;
    font-family: var(--body);
    font-weight: 500;
    font-size: 14.5px;
    line-height: 1.5;
    color: var(--ink);
    position: static;
    box-shadow: none;
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
  }
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody > tr > td:not(:first-child)::before,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody > tr > td:not(:first-child)::before {
    content: attr(data-label);
    font-family: var(--display);
    font-weight: 600;
    font-size: 11.5px;
    line-height: 1.35;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink-3);
    padding-top: 2px;
    align-self: start;
    min-width: 0;
  }

  /* Row-warn transposed to the card frame. */
  body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] {
    background: var(--coral-tint);
    border-color: var(--coral);
    border-top-color: var(--coral-deep);
  }
  body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] > td:first-child {
    color: var(--coral-deep);
    border-bottom-color: var(--coral);
  }
  body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] > td:first-child::before {
    display: none;
  }
  body.avg-article .av-article-body .entry-content .av-quickref tr[data-row-warn="vet-dose"] > td:not(:first-child)::before {
    color: var(--coral-deep);
  }

  /* Retire the old ≤720 sticky-first-column rule under this transform. */
  body.avg-article .av-article-body .entry-content .av-quickref th:first-child,
  body.avg-article .av-article-body .entry-content .av-quickref td:first-child { position: static; }

  /* Neutralize any legacy ::after swipe fade at ≤1023. */
  body.avg-article .av-article-body .entry-content .av-quickref::after,
  body.avg-article .av-article-body .entry-content .av-table-scroll::after {
    content: none; display: none;
  }
}

/* Tablet: 2-up card grid. */
@media (min-width: 640px) and (max-width: 1023px) {
  body.avg-article .av-article-body .entry-content .av-quickref > table > tbody,
  body.avg-article .av-article-body .entry-content .av-table-scroll > table > tbody {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-4);
  }
}
/* ==== END MOBILE-TABLE-CARDS 2026-08-26 =================================== */

/* VERIFIER-FIX 2026-08-25 — number-badge padding on .av-steplist__step items
   inside a .av-keyfacts wrapper (reviews/final-remediation-verify.md minor 1).
   The 997 §2E "Five that shorten conure lifespans" card uses <ol
   class="av-keyfacts__list"> with each li carrying class="av-steplist__step"
   so the numbered badge ::before pseudo renders. But the .av-keyfacts__list>li
   rule (later in source, equal specificity) resets `padding: var(--space-3) 0`,
   overriding .av-steplist__step's `padding-left: 44px`. Result: the 28px
   absolute-positioned badge sits at left:0 and overlaps the first word of each
   item (evidence: cc-mistakes-card-375.png, cc-mistakes-card-1440.png).

   Fix: restore steplist's badge gutter on any .av-steplist__step nested in a
   keyfacts list. Keeps the keyfacts hairline row rhythm (top border, vertical
   padding) while giving the badge its 44px runway. `position: relative` is
   inherited from .av-steplist__step and is not overridden by keyfacts CSS. */
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li.av-steplist__step {
    padding-left: 44px;
    counter-increment: av-step;
}
body.avg-article .av-article-body .entry-content .av-keyfacts__list > li.av-steplist__step:first-child {
    padding-top: var(--space-3);
    border-top: 1px solid var(--hair-2);
}

/* VERIFIER-FIX 2026-08-25 — portrait-source hero framing
   (reviews/final-remediation-verify.md FAIL 1). Portrait featured images
   (h > w) center-crop in the landscape hero box and cut off the subject's head
   (evidence: cc-1440-herozoom.png, cc-375-herozoom.png — decapitated conure).
   The template adds .av-article-hero-figure--portrait to the figure when
   $_h > $_w (per-post signal derived from the image itself; no global rule,
   no manual post_meta needed — generalizes to every article). The declaration
   below shifts object-position to the upper region so the head/eyes/beak stay
   in-frame, sacrificing feet/finger detail at the bottom. */
body.avg-article .av-article-hero-figure--portrait img,
body.avg-article .av-article-hero-figure--portrait .av-article-hero-figure__img {
    object-position: 50% 15% !important;
}
body.avg-article .av-article-title-band--split .av-article-hero-figure--portrait img,
body.avg-article .av-article-title-band--split .av-article-hero-figure--portrait .av-article-hero-figure__img {
    object-position: 50% 15% !important;
}