/* ==========================================================================
   The Customer Verdict — archive + single episode templates
   ACXPA child theme · the-customer-verdict/tcv.css

   Depends on css/acxpa-tokens.css — handle acxpa-ds-tokens, already loaded site-wide.
   Every colour, size, space and radius below is a token. There are no raw
   hex values and no raw rem values in this file, on purpose:

   IMPORTANT — the live site runs html{font-size:62.5%}, so 1rem = 10px, not
   16px. The token file is already scaled for that (--acxpa-ds-text-body is
   1.6rem = 16px). Writing "1rem" here from the standards document would
   produce 10px text. Always use the token, never the number.

   Scoping: everything sits under .tcv. That is one extra class of
   specificity — enough to beat single-class theme rules without a single
   !important. This file is enqueued after the theme stylesheet, so ties go
   to us. If a parent-theme rule still bleeds through, add ONE targeted
   override here rather than reaching for !important.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Local aliases
   Named once so the intent is readable, and so a future palette change is a
   four-line edit rather than a find-and-replace.
   -------------------------------------------------------------------------- */
.tcv {
	--tcv-band-deep:    var(--acxpa-ds-teal-900); /* hero, full-bleed covers */
	--tcv-band:         var(--acxpa-ds-teal-800); /* sub-bands, member gates */
	--tcv-band-feature: var(--acxpa-ds-teal-700); /* featured episode panel  */

	--tcv-on-dark:      var(--acxpa-ds-white);
	--tcv-on-dark-body: var(--acxpa-ds-teal-200); /* 9.35:1 on Teal 900      */
	--tcv-on-dark-mute: var(--acxpa-ds-teal-300); /* 6.63:1 on Teal 900      */
	--tcv-accent:       var(--acxpa-ds-gold);     /* 8.32:1 on Teal 900      */

	/* Gold can never be read on a light surface — 1.86:1. On white cards the
	   accent role is carried by Teal 600 (7.26:1) and Gold Deep (4.99:1). */
	--tcv-accent-light: var(--acxpa-ds-gold-deep);
	--tcv-time:         var(--acxpa-ds-teal-600);

	/* The eyebrow slot has no token in the standards yet. Small (14px) is the
	   nearest step on the scale; see the review note about adding one. */
	--tcv-text-eyebrow: var(--acxpa-ds-text-small);

	background: var(--acxpa-ds-bg-subtle);
	color: var(--acxpa-ds-text);
	font-family: var(--acxpa-ds-font);
}

/* --------------------------------------------------------------------------
   2. Shared primitives
   -------------------------------------------------------------------------- */
.tcv-shell {
	max-width: 108rem;
	margin-inline: auto;
	padding-inline: var(--acxpa-ds-space-lg);
}

.tcv-shell--narrow { max-width: 92rem; }

.tcv-eyebrow {
	display: block;
	font-size: var(--tcv-text-eyebrow);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	line-height: var(--acxpa-ds-leading-snug);
	margin-bottom: var(--acxpa-ds-space-sm);
}

.tcv-band .tcv-eyebrow { color: var(--tcv-accent); }
.tcv-section-label {
	display: block;
	font-size: var(--tcv-text-eyebrow);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--acxpa-ds-teal-700);
	margin-bottom: var(--acxpa-ds-space-md);
}

.tcv-gold { color: var(--tcv-accent); }

/* Buttons.
   NOTE: section 20 of the standards ("Base styles") is NOT deployed on
   acxpa.com.au — .acxpa-ds-btn, .acxpa-ds-field, .acxpa-ds-link,
   .acxpa-ds-prose and the global :focus-visible ring do not exist in any
   stylesheet on the site. Only the section 19 token block is live. So this
   file defines its own base rather than depending on CSS that is not there.
   Deploying css/acxpa-ds-base.css fixes that site-wide; these rules are
   written to coexist with it either way.
   One primary action per view; the gold CTA is reserved for join/subscribe. */
.tcv .tcv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 4.4rem;                    /* 44px minimum tap target */
	padding: var(--acxpa-ds-space-sm) var(--acxpa-ds-space-lg);
	border-radius: var(--acxpa-ds-radius-md);
	font-family: inherit;
	font-size: var(--acxpa-ds-text-small);
	font-weight: 600;
	line-height: var(--acxpa-ds-leading-snug);
	text-decoration: none;
	cursor: pointer;
	text-align: center;
}

.tcv .tcv-field {
	min-height: 4.4rem;
	padding: var(--acxpa-ds-space-sm) var(--acxpa-ds-space-md);
	border: 1.5px solid var(--acxpa-ds-border-strong, var(--acxpa-ds-teal-400));
	border-radius: var(--acxpa-ds-radius-md);
	font-family: inherit;
	font-size: var(--acxpa-ds-text-body);
	color: var(--acxpa-ds-text);
	background: var(--acxpa-ds-white);
}
.tcv .tcv-field:focus { border-color: var(--acxpa-ds-teal-600); }
.tcv .tcv-field[aria-invalid="true"] { border-color: var(--acxpa-ds-error, #B3182C); }

/* The one global the standards say must never be scoped away. It is absent
   site-wide, so it is at least present here. Gold on light surfaces fails at
   1.7:1, which is why the ring flips only inside a dark band. */
.tcv :focus-visible {
	outline: 3px solid var(--acxpa-ds-focus, var(--acxpa-ds-teal-700));
	outline-offset: 2px;
	border-radius: 2px;
}
.tcv .tcv-on-dark :focus-visible,
.tcv .tcv-on-dark:focus-visible {
	outline-color: var(--acxpa-ds-focus-on-dark, var(--acxpa-ds-gold));
}

.tcv-btn--primary {
	background: var(--acxpa-ds-teal-700);
	color: var(--acxpa-ds-white);
	border: 0;
}
.tcv-btn--primary:hover,
.tcv-btn--primary:focus-visible {
	background: var(--acxpa-ds-teal-800);
	color: var(--acxpa-ds-white);
}
.tcv-btn--primary:active { background: var(--acxpa-ds-teal-900); }

.tcv-btn--cta {
	background: var(--acxpa-ds-gold);
	color: var(--acxpa-ds-ink);   /* 8.49:1 — the highest-attention pair */
	border: 0;
}
.tcv-btn--cta:hover,
.tcv-btn--cta:focus-visible {
	background: var(--acxpa-ds-gold-tint);
	color: var(--acxpa-ds-ink);
}

.tcv-btn--secondary {
	background: transparent;
	color: var(--acxpa-ds-white);
	border: 1.5px solid var(--acxpa-ds-teal-400);
}
.tcv-btn--secondary:hover,
.tcv-btn--secondary:focus-visible {
	border-color: var(--tcv-accent);
	color: var(--tcv-accent);
}

/* --------------------------------------------------------------------------
   3. Dark bands
   .tcv-on-dark flips the focus ring to Gold (4.92:1 on teal).
   Gold is never the focus ring on a light surface — it fails at 1.7:1.
   -------------------------------------------------------------------------- */
.tcv-band {
	background: var(--tcv-band-deep);
	color: var(--tcv-on-dark-body);
}

.tcv-hero {
	padding-block: var(--acxpa-ds-space-2xl) var(--acxpa-ds-space-xl);
	text-align: center;
}

.tcv-hero__title {
	font-size: var(--acxpa-ds-text-display);
	line-height: var(--acxpa-ds-leading-tight);
	letter-spacing: -0.02em;
	font-weight: 800;
	color: var(--tcv-on-dark);
	margin-bottom: var(--acxpa-ds-space-md);
}

.tcv-hero__lead {
	font-size: var(--acxpa-ds-text-lead);
	line-height: var(--acxpa-ds-leading-body);
	color: var(--tcv-on-dark-body);
	max-width: 62ch;
	margin-inline: auto;
	margin-bottom: var(--acxpa-ds-space-lg);
}

.tcv-hero__stats {
	display: flex;
	justify-content: center;
	gap: var(--acxpa-ds-space-lg);
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-mute);
	margin-bottom: var(--acxpa-ds-space-xl);
}
.tcv-hero__stats strong { color: var(--tcv-accent); font-weight: 700; }

/* Host strip -------------------------------------------------------------- */
.tcv-host {
	border-top: 1px solid var(--acxpa-ds-teal-700);
	padding-top: var(--acxpa-ds-space-lg);
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--acxpa-ds-space-md);
	text-align: left;
}
.tcv-host__avatar {
	width: 6.4rem;
	height: 6.4rem;
	border-radius: var(--acxpa-ds-radius-pill);
	border: 2px solid var(--tcv-accent);
	overflow: hidden;
	flex-shrink: 0;
}
.tcv-host__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.tcv-host__label {
	display: block;
	font-size: var(--acxpa-ds-text-caption);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--tcv-on-dark-mute);
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-host__name {
	display: block;
	font-size: var(--acxpa-ds-text-h4);
	font-weight: 700;
	color: var(--tcv-on-dark);
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-host__bio {
	display: block;
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-body);
	margin-bottom: var(--acxpa-ds-space-xs);
}
.tcv-host__tags { display: flex; gap: var(--acxpa-ds-space-2xs); flex-wrap: wrap; }
.tcv-host__tags span {
	font-size: var(--acxpa-ds-text-caption);
	background: var(--acxpa-ds-teal-700);
	border: 1px solid var(--acxpa-ds-teal-600);
	color: var(--acxpa-ds-teal-100);
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-xs);
	border-radius: var(--acxpa-ds-radius-sm);
	font-weight: 500;
}

/* --------------------------------------------------------------------------
   4. Search band
   -------------------------------------------------------------------------- */
/* The search band is LIGHT on purpose.
   v1 of this file made it Teal 800, which stacked a third dark slab under the
   Teal 900 hero and the dark coming-soon panel — the whole first screen was
   dark before you reached any light, and on an empty archive there are no
   white episode cards to break it up. Section 15 of the standards warns about
   exactly this: rotating between openers is what stops a deep site reading as
   one endless teal block. Teal 50 keeps the page in the teal family without
   another slab, and search is easier to read on light anyway. */
.tcv-search {
	background: var(--acxpa-ds-teal-50);
	padding-block: var(--acxpa-ds-space-xl);
	border-bottom: 1px solid var(--acxpa-ds-teal-100);
}
.tcv-search__inner { max-width: 64rem; margin-inline: auto; }

.tcv-search__tablist {
	display: flex;
	gap: var(--acxpa-ds-space-2xs);
	margin-bottom: var(--acxpa-ds-space-sm);
	justify-content: center;
}
.tcv-search__tab {
	font-size: var(--acxpa-ds-text-small);
	font-weight: 600;
	min-height: 4.4rem;               /* 44px minimum tap target */
	padding-inline: var(--acxpa-ds-space-md);
	border-radius: var(--acxpa-ds-radius-md);
	border: 1.5px solid var(--acxpa-ds-teal-400);
	color: var(--acxpa-ds-teal-700);
	background: var(--acxpa-ds-white);
	cursor: pointer;
}
.tcv-search__tab[aria-selected="true"] {
	background: var(--acxpa-ds-teal-700);
	border-color: var(--acxpa-ds-teal-700);
	color: var(--acxpa-ds-white);              /* 9.16:1 */
}

.tcv-search__label {
	display: block;
	font-size: var(--acxpa-ds-text-small);
	font-weight: 600;
	color: var(--acxpa-ds-ink);                /* 14.51:1 on Teal 50 */
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-search__field {
	width: 100%;
	min-height: 4.4rem;
	padding: var(--acxpa-ds-space-sm) var(--acxpa-ds-space-md);
	border: 1.5px solid var(--acxpa-ds-teal-400); /* 3.28:1 boundary, per §14 */
	border-radius: var(--acxpa-ds-radius-md);
	background: var(--acxpa-ds-white);
	color: var(--acxpa-ds-ink);
	font-size: var(--acxpa-ds-text-body);
	font-family: inherit;
}
.tcv-search__field::placeholder { color: var(--acxpa-ds-slate); opacity: 1; }  /* 5.18:1 */
.tcv-search__field:focus { border-color: var(--acxpa-ds-teal-600); }

/* The membership prompt sits on a pale band, so it is a white card here
   rather than the dark gate used deeper in the page. */
.tcv-search .tcv-gate {
	background: var(--acxpa-ds-white);
	border: 1px solid var(--acxpa-ds-teal-300);
	box-shadow: var(--acxpa-ds-shadow-sm);
}
.tcv-search .tcv-gate p { color: var(--acxpa-ds-text-muted); }

/* Transcript results panel ------------------------------------------------ */
.tcv-ts-panel {
	background: var(--acxpa-ds-bg-subtle);
	border-radius: var(--acxpa-ds-radius-lg);
	padding: var(--acxpa-ds-space-md);
	margin-top: var(--acxpa-ds-space-sm);
}
.tcv-ts-panel[hidden] { display: none; }
.tcv-ts-results {
	display: flex;
	flex-direction: column;
	gap: var(--acxpa-ds-space-xs);
	max-height: 36rem;
	overflow-y: auto;
}
.tcv-ts-group {
	background: var(--acxpa-ds-white);
	border: 1px solid var(--acxpa-ds-border);
	border-radius: var(--acxpa-ds-radius-md);
	overflow: hidden;
}
.tcv-ts-group__header {
	padding: var(--acxpa-ds-space-xs) var(--acxpa-ds-space-sm);
	background: var(--tcv-band-deep);
	display: flex;
	align-items: center;
	gap: var(--acxpa-ds-space-xs);
	flex-wrap: wrap;
}
.tcv-ts-group__ep {
	font-size: var(--acxpa-ds-text-caption);
	color: var(--tcv-accent);
	font-weight: 700;
	letter-spacing: 0.08em;
}
.tcv-ts-group__title {
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-white);
	font-weight: 600;
}
.tcv-ts-chunk {
	display: flex;
	align-items: flex-start;
	gap: var(--acxpa-ds-space-sm);
	padding: var(--acxpa-ds-space-sm);
	min-height: 4.4rem;
	text-decoration: none;
	color: inherit;
	border-top: 1px solid var(--acxpa-ds-border);
}
.tcv-ts-chunk:hover { background: var(--acxpa-ds-teal-50); }
.tcv-ts-chunk__time {
	font-size: var(--acxpa-ds-text-small);
	font-weight: 700;
	color: var(--tcv-time);            /* 7.26:1 — was gold at 2.29:1 */
	min-width: 5rem;
	flex-shrink: 0;
	font-variant-numeric: tabular-nums;
}
.tcv-ts-chunk__text {
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-text);
	line-height: var(--acxpa-ds-leading-body);
}
.tcv-ts-chunk mark {
	background: var(--acxpa-ds-gold-tint);
	color: var(--acxpa-ds-ink);
	border-radius: var(--acxpa-ds-radius-sm);
	padding-inline: 0.2rem;
}
.tcv-ts-empty {
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-text-muted);
	padding: var(--acxpa-ds-space-md);
	text-align: center;
}

/* --------------------------------------------------------------------------
   5. Body, featured panel, grid
   -------------------------------------------------------------------------- */
.tcv-body { padding-block: var(--acxpa-ds-space-2xl) var(--acxpa-ds-space-3xl); }

.tcv-featured {
	background: var(--tcv-band-feature);
	border-radius: var(--acxpa-ds-radius-xl);
	overflow: hidden;
	display: grid;
	grid-template-columns: 1fr 1fr;
}
@media (max-width: 42.5em) { .tcv-featured { grid-template-columns: 1fr; } }

.tcv-featured__media {
	background: var(--acxpa-ds-teal-800);
	min-height: 28rem;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.tcv-featured__media img { width: 100%; height: 100%; object-fit: cover; display: block; }

.tcv-play {
	width: 8.8rem;
	height: 8.8rem;
	border-radius: var(--acxpa-ds-radius-pill);
	background: var(--acxpa-ds-teal-700);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--tcv-accent);
}
.tcv-play--sm { width: 4.8rem; height: 4.8rem; }

.tcv-badge-new {
	position: absolute;
	top: var(--acxpa-ds-space-sm);
	inset-inline-start: var(--acxpa-ds-space-sm);
	background: var(--acxpa-ds-gold);
	color: var(--acxpa-ds-ink);
	font-size: var(--acxpa-ds-text-caption);
	font-weight: 800;
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-xs);
	border-radius: var(--acxpa-ds-radius-sm);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.tcv-featured__content {
	padding: var(--acxpa-ds-space-xl);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.tcv-featured__title {
	font-size: var(--acxpa-ds-text-h3);
	font-weight: 700;
	line-height: var(--acxpa-ds-leading-snug);
	margin-bottom: var(--acxpa-ds-space-sm);
}
.tcv-featured__title a { color: var(--acxpa-ds-white); text-decoration: none; }
.tcv-featured__title a:hover { color: var(--tcv-accent); text-decoration: underline; }
.tcv-featured__excerpt {
	font-size: var(--acxpa-ds-text-body);
	color: var(--tcv-on-dark-body);
	line-height: var(--acxpa-ds-leading-body);
	margin-bottom: var(--acxpa-ds-space-lg);
}

.tcv-meta { display: flex; gap: var(--acxpa-ds-space-md); flex-wrap: wrap; margin-bottom: var(--acxpa-ds-space-lg); }
.tcv-meta__item {
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-mute);
	display: inline-flex;
	align-items: center;
	gap: var(--acxpa-ds-space-2xs);
}

.tcv-actions { display: flex; align-items: center; gap: var(--acxpa-ds-space-sm); flex-wrap: wrap; }

.tcv-nudge {
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-accent);
	display: inline-flex;
	align-items: center;
	gap: var(--acxpa-ds-space-2xs);
	background: var(--acxpa-ds-teal-800);
	border: 1px solid var(--acxpa-ds-teal-600);
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-sm);
	border-radius: var(--acxpa-ds-radius-sm);
}

/* Grid -------------------------------------------------------------------- */
.tcv-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--acxpa-ds-space-lg);
}
@media (max-width: 48.75em) { .tcv-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 32.5em)  { .tcv-grid { grid-template-columns: 1fr; } }

.tcv-card {
	background: var(--acxpa-ds-white);
	border-radius: var(--acxpa-ds-radius-lg);
	overflow: hidden;
	border: 1px solid var(--acxpa-ds-border);
	box-shadow: var(--acxpa-ds-shadow-sm);
	display: flex;
	flex-direction: column;
}
.tcv-card:hover { border-color: var(--acxpa-ds-teal-400); box-shadow: var(--acxpa-ds-shadow-md); }

.tcv-card__media {
	display: flex;
	background: var(--acxpa-ds-teal-800);
	aspect-ratio: 16 / 9;
	position: relative;
	overflow: hidden;
	text-decoration: none;
	align-items: center;
	justify-content: center;
}
.tcv-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }

.tcv-card__ep {
	position: absolute;
	top: var(--acxpa-ds-space-xs);
	inset-inline-start: var(--acxpa-ds-space-xs);
	background: var(--acxpa-ds-teal-900);
	color: var(--tcv-accent);
	font-size: var(--acxpa-ds-text-caption);
	font-weight: 700;
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-xs);
	border-radius: var(--acxpa-ds-radius-sm);
	letter-spacing: 0.05em;
}

.tcv-card__body {
	padding: var(--acxpa-ds-space-md);
	display: flex;
	flex-direction: column;
	flex: 1;
}
.tcv-card__title {
	font-size: var(--acxpa-ds-text-h4);
	font-weight: 600;
	line-height: var(--acxpa-ds-leading-snug);
	margin-bottom: var(--acxpa-ds-space-xs);
}
.tcv-card__title a { color: var(--acxpa-ds-teal-700); text-decoration: none; }
.tcv-card__title a:hover { color: var(--acxpa-ds-teal-900); text-decoration: underline; }
.tcv-card__excerpt {
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-text-muted);   /* Slate 5.18:1 — was #999 at 2.85:1 */
	line-height: var(--acxpa-ds-leading-body);
	margin-bottom: var(--acxpa-ds-space-md);
}
.tcv-card__meta {
	display: flex;
	gap: var(--acxpa-ds-space-sm);
	align-items: center;
	flex-wrap: wrap;
	margin-top: auto;
	font-size: var(--acxpa-ds-text-caption);
	color: var(--acxpa-ds-text-muted);
}

/* Members lock — Gold Deep on Gold Tint is only 4.26:1, so the badge carries
   Ink text on the tint and gold is the icon. Never colour alone: icon + word. */
.tcv-lock {
	margin-inline-start: auto;
	display: inline-flex;
	align-items: center;
	gap: var(--acxpa-ds-space-2xs);
	background: var(--acxpa-ds-gold-tint);
	color: var(--acxpa-ds-ink);
	font-weight: 600;
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-xs);
	border-radius: var(--acxpa-ds-radius-sm);
}
.tcv-lock svg { color: var(--tcv-accent-light); }

.tcv-no-results {
	text-align: center;
	padding: var(--acxpa-ds-space-2xl) var(--acxpa-ds-space-lg);
	color: var(--acxpa-ds-text-muted);
	font-size: var(--acxpa-ds-text-body);
}

/* --------------------------------------------------------------------------
   6. Upsell + coming soon
   -------------------------------------------------------------------------- */
.tcv-upsell {
	background: var(--tcv-band);
	border-radius: var(--acxpa-ds-radius-lg);
	padding: var(--acxpa-ds-space-xl);
	margin-top: var(--acxpa-ds-space-2xl);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--acxpa-ds-space-lg);
	flex-wrap: wrap;
}
/* The text block has to be allowed to shrink, or its max-content width
   (~920px) plus the button (~185px) overflows the 1032px container and the
   button wraps onto its own line, left-aligned. flex-basis 32rem with
   min-width 0 lets it give way; the button keeps its intrinsic width. */
.tcv-upsell > div:first-child {
	flex: 1 1 32rem;
	min-width: 0;
}

.tcv-upsell h2 {
	font-size: var(--acxpa-ds-text-h4);
	font-weight: 700;
	color: var(--acxpa-ds-white);
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-upsell p {
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-body);
	line-height: var(--acxpa-ds-leading-body);
	margin: 0;
}

/* Also light — see the note on .tcv-search. This is the whole page on an
   empty archive, so a dark gradient here meant a dark first screen. */
.tcv-coming-soon {
	background: var(--acxpa-ds-white);
	border-radius: var(--acxpa-ds-radius-xl);
	padding: var(--acxpa-ds-space-3xl) var(--acxpa-ds-space-xl);
	text-align: center;
	border: 1px solid var(--acxpa-ds-border);
	box-shadow: var(--acxpa-ds-shadow-md);
}
.tcv-coming-soon__badge {
	display: inline-block;
	background: var(--acxpa-ds-gold-tint);
	border: 1px solid var(--acxpa-ds-gold);
	color: var(--acxpa-ds-ink);                /* 13.50:1 — gold is never text */
	font-size: var(--acxpa-ds-text-caption);
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-md);
	border-radius: var(--acxpa-ds-radius-pill);
	margin-bottom: var(--acxpa-ds-space-lg);
}
.tcv-coming-soon__title {
	font-size: var(--acxpa-ds-text-h2);
	font-weight: 800;
	color: var(--acxpa-ds-teal-700);           /* 9.16:1 */
	margin-bottom: var(--acxpa-ds-space-sm);
	line-height: var(--acxpa-ds-leading-tight);
}
.tcv-coming-soon__desc {
	font-size: var(--acxpa-ds-text-body);
	color: var(--acxpa-ds-text-muted);         /* 5.18:1 */
	line-height: var(--acxpa-ds-leading-body);
	max-width: 56ch;
	margin: 0 auto var(--acxpa-ds-space-lg);
}
.tcv-coming-soon__note {
	margin-top: var(--acxpa-ds-space-md);
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-text-muted);
}

/* --------------------------------------------------------------------------
   7. Single episode
   -------------------------------------------------------------------------- */
.tcv-single__hero { padding-block: var(--acxpa-ds-space-xl) var(--acxpa-ds-space-2xl); }

.tcv-topbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: var(--acxpa-ds-space-md);
	flex-wrap: wrap;
	gap: var(--acxpa-ds-space-xs);
}
.tcv-crumbs {
	display: flex;
	align-items: center;
	gap: var(--acxpa-ds-space-2xs);
	font-size: var(--acxpa-ds-text-small);
	flex-wrap: wrap;
	color: var(--tcv-on-dark-body);
}
.tcv-crumbs a { color: var(--tcv-on-dark-body); text-decoration: underline; }
.tcv-crumbs a:hover { color: var(--tcv-accent); }
.tcv-crumbs__sep { color: var(--tcv-on-dark-mute); }

.tcv-tag {
	font-size: var(--acxpa-ds-text-caption);
	background: var(--acxpa-ds-teal-800);
	border: 1px solid var(--acxpa-ds-teal-600);
	color: var(--tcv-accent);
	padding: var(--acxpa-ds-space-2xs) var(--acxpa-ds-space-xs);
	border-radius: var(--acxpa-ds-radius-sm);
	font-weight: 600;
	letter-spacing: 0.05em;
}

.tcv-jumpnav { display: flex; gap: var(--acxpa-ds-space-2xs); flex-wrap: wrap; margin-bottom: var(--acxpa-ds-space-lg); }
.tcv-jumpnav a {
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-body);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	min-height: 4.4rem;
	padding-inline: var(--acxpa-ds-space-sm);
	border: 1px solid var(--acxpa-ds-teal-600);
	border-radius: var(--acxpa-ds-radius-md);
}
.tcv-jumpnav a:hover { color: var(--tcv-accent); border-color: var(--tcv-accent); }

.tcv-single__grid { display: grid; grid-template-columns: 1fr 32rem; gap: var(--acxpa-ds-space-2xl); align-items: start; }
@media (max-width: 45em) { .tcv-single__grid { grid-template-columns: 1fr; } }

.tcv-single__title {
	font-size: var(--acxpa-ds-text-h1);
	font-weight: 800;
	color: var(--acxpa-ds-white);
	line-height: var(--acxpa-ds-leading-tight);
	letter-spacing: -0.015em;
	margin-bottom: var(--acxpa-ds-space-md);
}

.tcv-hostcard {
	background: var(--acxpa-ds-teal-800);
	border: 1px solid var(--acxpa-ds-teal-600);
	border-radius: var(--acxpa-ds-radius-lg);
	padding: var(--acxpa-ds-space-md);
}
.tcv-hostcard__inner { display: flex; align-items: center; gap: var(--acxpa-ds-space-sm); }
.tcv-hostcard__avatar {
	width: 5.2rem; height: 5.2rem;
	border-radius: var(--acxpa-ds-radius-pill);
	border: 2px solid var(--tcv-accent);
	overflow: hidden; flex-shrink: 0;
}
.tcv-hostcard__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }

.tcv-seek-notice {
	background: var(--acxpa-ds-gold-tint);
	border-inline-start: 4px solid var(--acxpa-ds-gold);
	border-radius: var(--acxpa-ds-radius-md);
	padding: var(--acxpa-ds-space-sm) var(--acxpa-ds-space-md);
	margin-bottom: var(--acxpa-ds-space-md);
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-ink);
	display: flex;
	align-items: center;
	gap: var(--acxpa-ds-space-xs);
}

.tcv-panel {
	background: var(--acxpa-ds-white);
	border-radius: var(--acxpa-ds-radius-lg);
	border: 1px solid var(--acxpa-ds-border);
	box-shadow: var(--acxpa-ds-shadow-sm);
	padding: var(--acxpa-ds-space-xl);
	margin-bottom: var(--acxpa-ds-space-lg);
}
.tcv-panel__head { margin-bottom: var(--acxpa-ds-space-md); }
.tcv-panel h2 {
	font-size: var(--acxpa-ds-text-h3);
	font-weight: 700;
	color: var(--acxpa-ds-teal-700);
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-panel__note { font-size: var(--acxpa-ds-text-small); color: var(--acxpa-ds-text-muted); margin: 0; }

.tcv-video {
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: var(--acxpa-ds-radius-md);
	background: var(--acxpa-ds-teal-900);
}
.tcv-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Episode prose — opt-in measure, never a global max-width on p */
.tcv-prose { font-size: var(--acxpa-ds-text-body); line-height: var(--acxpa-ds-leading-body); color: var(--acxpa-ds-text); }
.tcv-prose > p { margin-bottom: var(--acxpa-ds-space-md); max-width: var(--acxpa-ds-measure); }
.tcv-prose h3 {
	font-size: var(--acxpa-ds-text-h4);
	font-weight: 700;
	color: var(--acxpa-ds-teal-700);
	margin: var(--acxpa-ds-space-lg) 0 var(--acxpa-ds-space-xs);
}
.tcv-prose ul, .tcv-prose ol { padding-inline-start: var(--acxpa-ds-space-lg); margin-bottom: var(--acxpa-ds-space-md); max-width: var(--acxpa-ds-measure); }
.tcv-prose li { margin-bottom: var(--acxpa-ds-space-2xs); }
.tcv-prose a { color: var(--acxpa-ds-link); text-decoration: underline; text-underline-offset: 0.15em; }
.tcv-prose a:hover { color: var(--acxpa-ds-link-hover); text-decoration-thickness: 2px; }

/* Key moments ------------------------------------------------------------- */
.tcv-moments { display: flex; flex-direction: column; }
.tcv-moment {
	display: flex;
	align-items: flex-start;
	gap: var(--acxpa-ds-space-sm);
	padding: var(--acxpa-ds-space-sm);
	min-height: 4.4rem;
	border-radius: var(--acxpa-ds-radius-md);
	text-decoration: none;
	color: inherit;
	border: 0;
	background: transparent;
	text-align: start;
	cursor: pointer;
	font-family: inherit;
}
.tcv-moment:hover { background: var(--acxpa-ds-teal-50); }
.tcv-moment__time {
	font-size: var(--acxpa-ds-text-small);
	font-weight: 700;
	color: var(--tcv-time);            /* 7.26:1 — was gold at 2.29:1 */
	min-width: 5.6rem;
	flex-shrink: 0;
	font-variant-numeric: tabular-nums;
}
.tcv-moment__title {
	display: block;
	font-size: var(--acxpa-ds-text-body);
	font-weight: 600;
	color: var(--acxpa-ds-teal-700);
	margin-bottom: var(--acxpa-ds-space-2xs);
}
.tcv-moment__desc { display: block; font-size: var(--acxpa-ds-text-small); color: var(--acxpa-ds-text-muted); line-height: var(--acxpa-ds-leading-body); }

/* Member gate ------------------------------------------------------------- */
.tcv-gate {
	background: var(--tcv-band);
	border-radius: var(--acxpa-ds-radius-lg);
	padding: var(--acxpa-ds-space-xl);
	text-align: center;
}
.tcv-gate h3 {
	font-size: var(--acxpa-ds-text-h4);
	font-weight: 700;
	color: var(--acxpa-ds-white);
	margin-bottom: var(--acxpa-ds-space-xs);
}
.tcv-gate p {
	font-size: var(--acxpa-ds-text-small);
	color: var(--tcv-on-dark-body);
	line-height: var(--acxpa-ds-leading-body);
	margin: 0 auto var(--acxpa-ds-space-md);
	max-width: 56ch;
}
.tcv-gate__actions { display: flex; justify-content: center; gap: var(--acxpa-ds-space-sm); flex-wrap: wrap; }

.tcv-gate--inline {
	background: var(--acxpa-ds-bg-subtle);
	border: 1px solid var(--acxpa-ds-border);
	text-align: center;
	padding: var(--acxpa-ds-space-lg);
}
.tcv-gate--inline p { color: var(--acxpa-ds-text-muted); }

/* Episode pagination ------------------------------------------------------ */
.tcv-pager {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-top: var(--acxpa-ds-space-lg);
	border-top: 1px solid var(--acxpa-ds-border);
	flex-wrap: wrap;
	gap: var(--acxpa-ds-space-sm);
}
.tcv-pager a {
	font-size: var(--acxpa-ds-text-small);
	color: var(--acxpa-ds-link);
	text-decoration: underline;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	min-height: 4.4rem;
}
.tcv-pager a:hover { color: var(--acxpa-ds-link-hover); }
.tcv-pager__links { display: flex; gap: var(--acxpa-ds-space-md); flex-wrap: wrap; }

/* --------------------------------------------------------------------------
   8. Accessibility utilities
   -------------------------------------------------------------------------- */
.tcv-visually-hidden {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

@media (prefers-reduced-motion: reduce) {
	.tcv *, .tcv *::before, .tcv *::after {
		transition-duration: 0.01ms;
		animation-duration: 0.01ms;
	}
}
