/*
 Theme Name: BritFarmers Child
 Theme URI: https://britfarmers.com
 Description: BritFarmers Astra child — "The Broadsheet" editorial design layer.
 Author: BritFarmers
 Author URI: https://britfarmers.com
 Template: astra
 Version: 2.1.0
 Text Domain: astra-child
*/

/* ============================================================
   PHASE A — Typography & palette
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;0,6..72,700;0,6..72,800;1,6..72,400;1,6..72,500&family=Inter+Tight:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
  --bs-paper:    #F3EDE0;
  --bs-paper-alt:#EAE2D1;
  --bs-cream:    #FBF7EC;
  --bs-ink:      #1A1916;
  --bs-ink-70:   rgba(26,25,22,0.72);
  --bs-ink-50:   rgba(26,25,22,0.5);
  --bs-ink-20:   rgba(26,25,22,0.18);
  --bs-ink-10:   rgba(26,25,22,0.1);
  --bs-green:    oklch(0.42 0.08 150);
  --bs-earth:    oklch(0.52 0.12 35);
  --bs-serif:    'Newsreader', Georgia, 'Times New Roman', serif;
  --bs-sans:     'Inter Tight', system-ui, -apple-system, sans-serif;
  --bs-mono:     'JetBrains Mono', ui-monospace, 'SF Mono', monospace;

  /* legacy BF tokens kept for any leftover hooks */
  --bf-green: #122B1C;
  --bf-gold:  #C8962A;
  --bf-cream: #F5F0E8;
  --bf-text:  #1A1A1A;
}

html { background: var(--bs-paper); }

body,
.ast-page-builder-template,
.ast-default-layout,
.site,
#page {
  background-color: var(--bs-paper);
  color: var(--bs-ink);
  font-family: var(--bs-sans);
}

body, p, li, dd, dt, figcaption, .ast-pagination, .entry-meta, .ast-button {
  font-family: var(--bs-sans);
}

h1, h2, h3, h4, h5, h6,
.entry-title, .ast-archive-title,
.wp-block-heading {
  font-family: var(--bs-serif);
  color: var(--bs-ink);
  letter-spacing: -0.01em;
  line-height: 1.1;
}

h1 { font-weight: 700; }
h2 { font-weight: 600; }
h3 { font-weight: 600; }

/* Editorial link treatment — animated underline */
a {
  color: inherit;
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 100% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  transition: background-size 0.2s;
}
a:hover { background-size: 100% 2px; }

/* opt-out for buttons / nav menus / form controls / images / cards */
.ast-button, button, .wp-block-button__link,
.menu a, .ast-mobile-menu-buttons a, .main-navigation a,
.site-title a, .ast-logo-svg-img a, .custom-logo-link,
.bf-btn-primary a, .bf-btn-secondary a,
.uagb-post__image a, .wp-block-button a,
.beehiiv-embed,
.ast-pagination a {
  background-image: none !important;
  padding-bottom: 0;
}

/* ============================================================
   PHASE B — Paper grain & base utilities
   ============================================================ */

.bs-paper,
body.home, body.archive, body.single, body.page,
.ast-page-builder-template .entry-content {
  background-color: var(--bs-paper);
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px);
  background-size: 3px 3px, 7px 7px;
  background-position: 0 0, 1px 2px;
}

.bs-sc {
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
}

.bs-mono { font-family: var(--bs-mono); }
.bs-serif { font-family: var(--bs-serif); }
.bs-sans { font-family: var(--bs-sans); }

.bs-rule { border: 0; border-top: 1px solid var(--bs-ink-20); margin: 0; }
.bs-rule-thick { border: 0; border-top: 3px double rgba(26,25,22,0.4); margin: 0; }

.bs-dropcap::first-letter,
.bs-dropcap > p:first-of-type::first-letter {
  font-family: var(--bs-serif);
  font-weight: 700;
  float: left;
  font-size: 4.2em;
  line-height: 0.85;
  padding: 4px 10px 0 0;
  color: var(--bs-green);
}

@keyframes bsTick {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.bs-ticker-track { animation: bsTick 60s linear infinite; }

@media (prefers-reduced-motion: reduce) {
  .bs-ticker-track { animation: none; }
}

/* ============================================================
   ASTRA HEADER / FOOTER chrome — Broadsheet skin
   ============================================================ */

.site-header,
.site-primary-header-wrap,
.ast-primary-header-bar {
  background: var(--bs-paper) !important;
  border-bottom: 1px solid var(--bs-ink-20);
}

.site-title a,
.main-navigation a,
.ast-builder-menu .menu-item > a {
  color: var(--bs-ink) !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-weight: 600;
  font-size: 13px;
}

.site-title { font-family: var(--bs-serif) !important; font-style: italic; }
.site-title a { font-weight: 500; letter-spacing: -0.02em; font-size: 36px; font-variant: normal; }
.site-title a b, .site-title a strong { font-style: normal; font-weight: 700; }

.site-footer {
  background: var(--bs-paper-alt) !important;
  color: var(--bs-ink) !important;
}
.site-footer a { color: var(--bs-ink-70) !important; }
.site-footer h2, .site-footer h3, .site-footer h4 { color: var(--bs-ink) !important; }

/* ============================================================
   PHASE C — Masthead strip (rendered by [bs_masthead])
   ============================================================ */

.bs-masthead {
  display: flex;
  align-items: stretch;
  font-size: 12px;
  color: var(--bs-ink-70);
  background: var(--bs-paper);
  border-bottom: 1px solid var(--bs-ink-20);
  font-family: var(--bs-sans);
  width: 100%;
  box-sizing: border-box;
}
.bs-masthead__cell {
  padding: 10px 18px;
  border-right: 1px solid var(--bs-ink-20);
  display: flex;
  align-items: center;
  gap: 14px;
}
.bs-masthead__cell--ticker {
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
  position: relative;
}
.bs-masthead__cell--ticker .bs-ticker-track {
  display: inline-flex;
  gap: 22px;
  font-family: var(--bs-mono);
  white-space: nowrap;
  padding-right: 22px;
}
.bs-masthead__cell--ticker .bs-ticker-track > span { display: inline-flex; gap: 6px; align-items: baseline; }
.bs-masthead__source { color: var(--bs-ink-50); font-family: var(--bs-sans); }
.bs-masthead__up { color: var(--bs-green); }
.bs-masthead__down { color: var(--bs-earth); }

.bs-masthead__subscribe {
  padding: 10px 18px;
  background: var(--bs-ink);
  color: var(--bs-paper) !important;
  text-decoration: none !important;
  font-weight: 700;
  display: flex;
  align-items: center;
  background-image: none !important;
}
.bs-masthead__subscribe:hover { background: var(--bs-earth); }

@media (max-width: 900px) {
  .bs-masthead { flex-wrap: wrap; }
  .bs-masthead__cell--weather, .bs-masthead__cell--date { display: none; }
  .bs-masthead__cell--ticker { flex: 1 1 70%; border-right: none; }
  .bs-masthead__subscribe { flex: 0 0 30%; justify-content: center; }
}

/* ============================================================
   PHASE D — Per-block CSS for homepage (page 922)
   Hooks: .bf-hero-band, .bf-featured-guide, .bf-trending,
          .bf-topics, .bf-stats, .bf-latest-split, .bf-newsletter-band
   ============================================================ */

/* ---- HERO BAND — was green; now cream paper, lead-story feel ---- */
.bf-hero-band.has-background.has-text-color,
.bf-hero-band {
  background-color: var(--bs-cream) !important;
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px) !important;
  background-size: 3px 3px, 7px 7px !important;
  background-position: 0 0, 1px 2px !important;
  color: var(--bs-ink) !important;
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding-top: 48px !important;
  padding-bottom: 48px !important;
}
.bf-hero-band::before {
  content: "Lead Story \00b7 Industry";
  display: block;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bf-hero-band .bf-hero-h1.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.05 !important;
  font-size: clamp(2.2rem, 5.2vw, 3.8rem) !important;
}
.bf-hero-band p.has-text-color {
  color: var(--bs-ink-70) !important;
  font-family: var(--bs-serif) !important;
  font-style: italic;
  font-size: 1.15rem !important;
  line-height: 1.55 !important;
  max-width: 60ch;
}

/* hero buttons — newsprint not corporate */
.bf-hero-band .bf-btn-primary .wp-block-button__link {
  background-color: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
  border-radius: 0 !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em !important;
  font-weight: 700 !important;
  padding: 14px 24px !important;
}
.bf-hero-band .bf-btn-primary .wp-block-button__link:hover {
  background-color: var(--bs-earth) !important;
}
.bf-hero-band .bf-btn-secondary .wp-block-button__link,
.bf-hero-band .is-style-outline.bf-btn-secondary .wp-block-button__link {
  background: transparent !important;
  color: var(--bs-ink) !important;
  border-color: var(--bs-ink) !important;
  border-width: 1.5px !important;
  border-radius: 0 !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em !important;
  font-weight: 700 !important;
  padding: 14px 24px !important;
}
.bf-hero-band .bf-btn-secondary .wp-block-button__link:hover {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}

/* ---- FEATURED GUIDE — "From the Field" card ---- */
.bf-featured-guide {
  border-bottom: 1px solid var(--bs-ink-20);
  padding-top: 56px !important;
}
.bf-featured-guide > h2.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 2.2rem !important;
  letter-spacing: -0.02em;
  position: relative;
  padding-top: 22px;
}
.bf-featured-guide > h2.wp-block-heading::before {
  content: "From the Field";
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
}
.bf-featured-guide .uagb-post__inner-wrap,
.bf-featured-guide .uagb-post-grid-items {
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
}
.bf-featured-guide .uagb-post__title,
.bf-featured-guide .uagb-post__title a {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink) !important;
  font-weight: 600;
  letter-spacing: -0.015em;
  font-size: 1.7rem !important;
  line-height: 1.15;
}
.bf-featured-guide .uagb-post__excerpt {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink-70) !important;
  font-size: 1.05rem;
  line-height: 1.55;
}
.bf-featured-guide .uagb-post__taxonomy {
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px !important;
  font-weight: 700;
  color: var(--bs-earth) !important;
}
.bf-featured-guide .uagb-post__time {
  font-family: var(--bs-mono) !important;
  font-size: 11px !important;
  color: var(--bs-ink-50) !important;
}

/* ---- TRENDING — 5 numbered editorial cards ---- */
.bf-trending {
  border-bottom: 1px solid var(--bs-ink-20);
}
.bf-trending > h2.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 2rem !important;
  position: relative;
  padding-top: 22px;
}
.bf-trending > h2.wp-block-heading::before {
  content: "Trending This Week";
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
}
.bf-trending .uagb-post-grid-items {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  border-top: 3px double rgba(26,25,22,0.4);
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding: 24px 0;
}
@media (max-width: 1100px) { .bf-trending .uagb-post-grid-items { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px)  { .bf-trending .uagb-post-grid-items { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px)  { .bf-trending .uagb-post-grid-items { grid-template-columns: 1fr; } }

.bf-trending .uagb-post__inner-wrap {
  position: relative;
  padding: 12px 18px 16px;
  border-right: 1px solid var(--bs-ink-20);
  background: transparent;
  counter-increment: trending;
}
.bf-trending .uagb-post__inner-wrap::before {
  content: counter(trending, decimal-leading-zero);
  position: absolute;
  top: 6px;
  left: 18px;
  font-family: var(--bs-serif);
  font-style: italic;
  font-weight: 600;
  font-size: 36px;
  color: var(--bs-earth);
  line-height: 1;
  opacity: 0.85;
}
.bf-trending .uagb-post-grid-items { counter-reset: trending; }
.bf-trending .uagb-post__title {
  margin-top: 32px !important;
}
.bf-trending .uagb-post__title,
.bf-trending .uagb-post__title a {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink) !important;
  font-weight: 600 !important;
  font-size: 1.05rem !important;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.bf-trending .uagb-post__taxonomy {
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px !important;
  color: var(--bs-earth) !important;
  font-weight: 700;
}
.bf-trending .uagb-post__time {
  font-family: var(--bs-mono) !important;
  font-size: 10px !important;
  color: var(--bs-ink-50) !important;
}
.bf-trending .uagb-post__image { display: none; }

/* ---- TOPICS — editorial topic boards ---- */
.bf-topics.has-background {
  background-color: var(--bs-paper-alt) !important;
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px) !important;
  background-size: 3px 3px, 7px 7px !important;
  border-bottom: 1px solid var(--bs-ink-20);
}
.bf-topics > h2.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 2.2rem !important;
  position: relative;
  padding-top: 22px;
  margin-bottom: 14px;
}
.bf-topics > h2.wp-block-heading::before {
  content: "The Paper, by Topic";
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
}
.bf-topics .wp-block-column.has-background {
  background-color: var(--bs-paper) !important;
  border-top-color: var(--bs-earth) !important;
  border-top-width: 3px !important;
  border-radius: 0 !important;
  border-left: 1px solid var(--bs-ink-20);
  border-right: 1px solid var(--bs-ink-20);
  border-bottom: 1px solid var(--bs-ink-20);
}
.bf-topics .wp-block-column h3.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 1.5rem !important;
  letter-spacing: -0.015em;
}
.bf-topics .wp-block-column p.has-text-color {
  color: var(--bs-ink-70) !important;
  font-family: var(--bs-serif) !important;
  font-style: italic;
  font-size: 0.95rem !important;
  line-height: 1.55;
}
.bf-topics .wp-block-column p a {
  color: var(--bs-earth) !important;
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}
.bf-topics .wp-block-column p a::after { content: " \2192"; }

/* ---- STATS — was green band; now cream paper with double-rule ---- */
.bf-stats.has-background.has-text-color,
.bf-stats {
  background-color: var(--bs-cream) !important;
  background-image: none !important;
  color: var(--bs-ink) !important;
  border-top: 3px double rgba(26,25,22,0.4);
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding-top: 40px !important;
  padding-bottom: 40px !important;
}
.bf-stats h3.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-mono) !important;
  font-weight: 500 !important;
  font-size: 3rem !important;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.bf-stats p.has-text-color {
  color: var(--bs-ink-70) !important;
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em !important;
  font-size: 11px !important;
  font-weight: 600;
  text-transform: none !important;
}

/* ---- LATEST SPLIT — News + Guides editorial columns ---- */
.bf-latest-split {
  padding-top: 56px !important;
  border-bottom: 1px solid var(--bs-ink-20);
}
.bf-latest-split .wp-block-columns {
  gap: 56px !important;
}
.bf-latest-split h2.wp-block-heading.has-text-color {
  color: var(--bs-ink) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 1.9rem !important;
  letter-spacing: -0.02em;
  border-bottom: 2px solid var(--bs-ink);
  padding-bottom: 10px;
  margin-bottom: 22px;
}
.bf-latest-split .uagb-post__inner-wrap {
  background: var(--bs-paper-alt);
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px);
  background-size: 3px 3px, 7px 7px;
  padding: 18px 22px;
  border: 1px solid var(--bs-ink-20);
  margin-bottom: 16px;
}
.bf-latest-split .uagb-post__title,
.bf-latest-split .uagb-post__title a {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink) !important;
  font-weight: 600 !important;
  font-size: 1.25rem !important;
  letter-spacing: -0.01em;
  line-height: 1.18;
}
.bf-latest-split .uagb-post__excerpt {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink-70) !important;
  font-size: 1rem;
  line-height: 1.55;
}
.bf-latest-split .uagb-post__taxonomy {
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px !important;
  font-weight: 700;
  color: var(--bs-earth) !important;
}
.bf-latest-split .uagb-post__time {
  font-family: var(--bs-mono) !important;
  font-size: 11px !important;
  color: var(--bs-ink-50) !important;
}

/* ---- NEWSLETTER BAND — green ink bg, cream serif ---- */
.bf-newsletter-band.has-background.has-text-color,
.bf-newsletter-band {
  background-color: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
  background-image: repeating-linear-gradient(0deg, rgba(243,237,224,0.06) 0 1px, transparent 1px 44px) !important;
}
.bf-newsletter-band h2.wp-block-heading.has-text-color {
  color: var(--bs-paper) !important;
  font-family: var(--bs-serif) !important;
  font-weight: 500 !important;
  font-style: italic !important;
  font-size: clamp(2rem, 4vw, 3rem) !important;
  letter-spacing: -0.025em;
  line-height: 1.05;
}
.bf-newsletter-band p.has-text-color {
  color: rgba(243,237,224,0.72) !important;
  font-family: var(--bs-serif) !important;
  font-size: 1.1rem !important;
}
.bf-newsletter-band .beehiiv-embed { background: transparent; }

/* Beehiiv iframe — ensure sits well on dark band; iframe is sandboxed so we
   can only style the wrapper. Add a subtle paper backdrop. */
.bf-newsletter-band > div:has(.beehiiv-embed) {
  background: rgba(243,237,224,0.04);
  padding: 10px 0;
  border-top: 1px solid rgba(243,237,224,0.18);
  border-bottom: 1px solid rgba(243,237,224,0.18);
  margin-top: 8px;
}

/* ============================================================
   PHASE E — Single post (article-detail)
   ============================================================ */

.single-post .ast-container,
.single-post .site-content > .ast-container {
  background-color: var(--bs-paper);
}

.single-post .entry-header,
.single-post .post-thumb-img-content,
.single-post .entry-content {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}

.single-post .ast-breadcrumbs,
.single-post .ast-breadcrumbs-wrapper {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  color: var(--bs-ink-50);
  padding: 22px 0 6px;
  max-width: 760px;
  margin: 0 auto;
}

.single-post .entry-title {
  font-family: var(--bs-serif) !important;
  font-weight: 700 !important;
  font-size: clamp(2rem, 4vw, 3rem) !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin-bottom: 10px !important;
}

.single-post .entry-meta,
.single-post .post-meta {
  font-family: var(--bs-mono) !important;
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em;
}
.single-post .entry-meta a { color: var(--bs-ink) !important; }

.single-post .entry-content > p:first-of-type::first-letter {
  font-family: var(--bs-serif);
  font-weight: 700;
  float: left;
  font-size: 4.2em;
  line-height: 0.85;
  padding: 4px 10px 0 0;
  color: var(--bs-green);
}

.single-post .entry-content {
  font-family: var(--bs-serif);
  font-size: 1.18rem;
  line-height: 1.65;
  color: var(--bs-ink);
}
.single-post .entry-content p { margin: 0 0 1.1em; }
.single-post .entry-content h2 {
  font-family: var(--bs-serif);
  font-size: 1.65rem;
  font-weight: 600;
  margin-top: 1.6em;
  margin-bottom: 0.5em;
  color: var(--bs-ink);
  letter-spacing: -0.015em;
}
.single-post .entry-content h3 {
  font-family: var(--bs-serif);
  font-size: 1.3rem;
  font-weight: 600;
  margin-top: 1.4em;
  margin-bottom: 0.4em;
  color: var(--bs-ink);
}

.single-post .entry-content blockquote {
  border-left: 4px solid var(--bs-earth);
  background: var(--bs-cream);
  padding: 18px 22px;
  margin: 24px 0;
  font-style: italic;
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  line-height: 1.4;
  letter-spacing: -0.01em;
}

.single-post .entry-content figure.wp-block-image {
  margin: 28px 0;
}
.single-post .entry-content figure.wp-block-image figcaption {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  background: var(--bs-cream);
  padding: 8px 12px;
  letter-spacing: 0.03em;
}

.single-post .entry-content a {
  color: var(--bs-green) !important;
  font-weight: 500;
}

/* Sources block (where britfarmers-core appends it via the_content filter) */
.single-post .entry-content h2:has(+ ul):last-of-type,
.single-post .entry-content .bf-sources,
.single-post .entry-content h2#sources,
.single-post .entry-content h2[id*="source"] {
  border-top: 3px double rgba(26,25,22,0.4);
  padding-top: 24px;
  margin-top: 48px;
}

/* Author bio block — site-wide hook */
.single-post .ast-author-details,
.single-post .ast-author-box,
.single-post .author-info {
  background: var(--bs-cream);
  border: 1px solid var(--bs-ink-20);
  padding: 24px;
  margin-top: 48px;
  font-family: var(--bs-sans);
}
.single-post .ast-author-details .post-author-title,
.single-post .author-info h2,
.single-post .author-info h3 {
  font-family: var(--bs-serif) !important;
  font-style: italic;
  color: var(--bs-ink) !important;
  font-size: 1.4rem;
}

/* ============================================================
   ARCHIVES / CATEGORY pages — Broadsheet treatment
   ============================================================ */
.archive .ast-archive-title,
.archive .page-title,
.search .page-title {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em;
  color: var(--bs-ink) !important;
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding-bottom: 16px;
  margin-bottom: 24px;
}
.archive .ast-archive-description {
  font-family: var(--bs-serif);
  font-style: italic;
  color: var(--bs-ink-70);
  max-width: 60ch;
}
.archive article.post,
.search article.post {
  border-bottom: 1px solid var(--bs-ink-20);
  padding-bottom: 24px;
  margin-bottom: 24px;
}
.archive article .entry-title a,
.search article .entry-title a {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink) !important;
  font-weight: 600;
  letter-spacing: -0.015em;
}

/* ============================================================
   GLOBAL — make sure inline-styled hero/stats/newsletter buttons
   render in Broadsheet voice on EVERY page.
   ============================================================ */
.wp-block-button .wp-block-button__link {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em !important;
  font-weight: 700 !important;
  border-radius: 0 !important;
}

/* ============================================================
   PHASE F — Broadsheet footer (rendered via astra_footer_before
   hook in functions.php).  Suppress Astra's default footer rows.
   ============================================================ */

.site-primary-footer-wrap,
.site-below-footer-wrap,
.ast-footer-copyright {
  display: none !important;
}

.site-footer { background: transparent !important; padding: 0 !important; }

/* Above-footer newsletter band (replaces WPCode 5616's role) */
.bs-footer-newsletter {
  background: var(--bs-ink);
  color: var(--bs-paper);
  padding: 64px 32px;
  position: relative;
  background-image: repeating-linear-gradient(0deg, rgba(243,237,224,0.06) 0 1px, transparent 1px 44px);
}
.bs-footer-newsletter__inner {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: end;
}
.bs-footer-newsletter__eyebrow {
  color: var(--bs-earth);
  font-size: 11px;
  font-weight: 700;
  margin-bottom: 14px;
  display: block;
}
.bs-footer-newsletter__h {
  font-family: var(--bs-serif);
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 500;
  font-style: italic;
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0;
  color: var(--bs-paper);
}
.bs-footer-newsletter__p {
  font-family: var(--bs-serif);
  font-size: 1.1rem;
  line-height: 1.55;
  color: rgba(243,237,224,0.72);
  margin: 24px 0 0;
  max-width: 460px;
}
.bs-footer-newsletter__form {
  background: rgba(243,237,224,0.04);
  padding: 16px;
  border: 1px solid rgba(243,237,224,0.18);
}
.bs-footer-newsletter__form .beehiiv-embed { background: transparent; }

@media (max-width: 800px) {
  .bs-footer-newsletter__inner { grid-template-columns: 1fr; gap: 32px; }
}

/* Main colophon */
.bs-colophon {
  background: var(--bs-paper-alt);
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px);
  background-size: 3px 3px, 7px 7px;
  background-position: 0 0, 1px 2px;
  padding: 48px 32px 28px;
  color: var(--bs-ink);
}
.bs-colophon__main {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 40px;
}
.bs-colophon__brand {}
.bs-colophon__logo {
  font-family: var(--bs-serif);
  font-size: 32px;
  font-style: italic;
  letter-spacing: -0.02em;
  color: var(--bs-ink);
  text-decoration: none;
  background-image: none !important;
  display: inline-block;
  margin-bottom: 10px;
}
.bs-colophon__logo b { font-style: normal; font-weight: 700; }
.bs-colophon__tagline {
  font-family: var(--bs-sans);
  font-size: 13px;
  line-height: 1.55;
  color: var(--bs-ink-70);
  font-style: italic;
  max-width: 360px;
  margin: 0;
}

.bs-colophon__col { display: flex; flex-direction: column; gap: 6px; }
.bs-colophon__h {
  font-family: var(--bs-sans);
  font-size: 10px;
  font-weight: 700;
  color: var(--bs-ink);
  margin-bottom: 8px;
}
.bs-colophon__col a {
  font-family: var(--bs-serif);
  font-size: 14px;
  color: var(--bs-ink-70);
  padding: 4px 0;
  text-decoration: none;
}

.bs-colophon__rule { max-width: 1200px; margin: 32px auto 16px; }

.bs-colophon__bottom {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
}

@media (max-width: 900px) {
  .bs-colophon__main { grid-template-columns: 1fr 1fr; }
  .bs-colophon__brand { grid-column: 1 / -1; }
}
@media (max-width: 540px) {
  .bs-colophon__main { grid-template-columns: 1fr; }
  .bs-colophon__bottom { flex-direction: column; gap: 6px; text-align: center; }
}

/* ============================================================
   QA ROUND 1 — fixes (2026-04-28)
   ============================================================ */

/* ---- Issue 1: dark-on-dark contrast in article body ----
 * Astra global-color-5 = #122B1C (BF green) is applied to .ast-article-inner,
 * .ast-page-builder-template, .ast-plain-container etc. by Astra parent CSS.
 * Force these wrappers back to paper so single-post / page entry-content
 * renders ink text on cream paper, not invisible-on-green.
 */
.ast-article-inner,
.ast-plain-container,
.ast-page-builder-template,
.ast-separate-container .ast-article-inner,
.ast-separate-container .ast-article-single:not(.ast-related-post),
.ast-separate-container .error-404,
.ast-separate-container .no-results,
.single.ast-separate-container .site-main .ast-author-meta,
.ast-separate-container .related-posts-title-wrapper,
.ast-separate-container .comments-count-wrapper,
.ast-box-layout.ast-plain-container .site-content,
.ast-padded-layout.ast-plain-container .site-content,
.ast-separate-container .ast-archive-description,
.ast-separate-container .comments-area,
.ast-separate-container.ast-two-container #secondary .widget {
  background-color: var(--bs-paper) !important;
  background-image: none !important;
}

body.single,
body.single .site-content,
body.archive .site-content,
body.search .site-content,
body.page .site-content {
  background-color: var(--bs-paper) !important;
}

/* Ensure article body text is always ink on paper */
.single-post .entry-content,
.single-post .entry-content p,
.single-post .entry-content li,
.page .entry-content,
.page .entry-content p,
.page .entry-content li {
  color: var(--bs-ink);
}

/* ---- Issue 2: Beehiiv iframes ballooning to 2000px ----
 * Inline style on the embed has hardcoded width:1313px / height:315px and the
 * embed.js (when CSP allows it) postMessage-resizes the iframe to fit form
 * content. Clamp aggressively so no resize ever pushes the page taller.
 */
.beehiiv-embed,
iframe.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  width: 100% !important;
  max-width: 600px !important;
  height: 320px !important;
  min-height: 320px !important;
  max-height: 360px !important;
  margin: 0 auto !important;
  border: 0 !important;
  display: block !important;
  border-radius: 0 !important;
}

/* ---- Issue 3 + 4: Broadsheet post grid (replaces UAGB on bf-latest-split) ---- */
.bs-post-grid {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.bs-post-grid__item {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 18px;
  background: var(--bs-paper-alt);
  background-image:
    radial-gradient(rgba(26,25,22,0.035) 1px, transparent 1px),
    radial-gradient(rgba(26,25,22,0.025) 1px, transparent 1px);
  background-size: 3px 3px, 7px 7px;
  border: 1px solid var(--bs-ink-20);
  padding: 14px;
}
.bs-post-grid__media {
  display: block;
  background-image: none !important;
  padding-bottom: 0;
}
.bs-post-grid__img {
  display: block;
  width: 100%;
  height: 110px;
  object-fit: cover;
  background: var(--bs-paper);
}
.bs-post-grid__body { display: flex; flex-direction: column; gap: 6px; }
.bs-post-grid__tag {
  font-family: var(--bs-sans);
  font-size: 10px !important;
  font-weight: 700;
  color: var(--bs-earth) !important;
  text-decoration: none;
  background-image: none !important;
  padding-bottom: 0;
  align-self: flex-start;
}
.bs-post-grid__title {
  font-family: var(--bs-serif) !important;
  font-size: 1.15rem !important;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.18;
  margin: 0;
}
.bs-post-grid__title a {
  color: var(--bs-ink) !important;
  background-image: none !important;
  padding-bottom: 0;
}
.bs-post-grid__excerpt {
  font-family: var(--bs-serif);
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--bs-ink-70);
  margin: 0;
}
.bs-post-grid__meta {
  font-size: 11px;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
}
.bs-post-grid__item:has(:not(.bs-post-grid__media)) { /* if no thumb */ }
.bs-post-grid__item:not(:has(.bs-post-grid__media)) {
  grid-template-columns: 1fr;
}

@media (max-width: 600px) {
  .bs-post-grid__item { grid-template-columns: 100px 1fr; gap: 12px; padding: 10px; }
  .bs-post-grid__img { height: 80px; }
  .bs-post-grid__title { font-size: 1rem !important; }
  .bs-post-grid__excerpt { display: none; }
}

/* ---- Issue 5: mobile site-title wordmark wrap ----
 * .site-title a is set to font-size:36px earlier; on narrow viewports it
 * gets clipped because the title string is ~64 chars long. Allow it to
 * shrink and wrap.
 */
.site-title { white-space: normal !important; overflow: visible !important; }
.site-title a { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; display: inline-block; }

@media (max-width: 768px) {
  .site-title a { font-size: 28px !important; line-height: 1.05; }
}
@media (max-width: 540px) {
  .site-title a { font-size: 22px !important; line-height: 1.05; }
  .ast-site-identity { padding: 6px 0; }
}
@media (max-width: 400px) {
  .site-title a { font-size: 18px !important; }
}

/* ---- Issue 6: Astra above-header announcement bar ----
 * The HFB Above row had a hardcoded cream-on-cream announcement that was
 * either invisible (against our paper bg) or visually overlapping the
 * masthead. The masthead now plays that role, so suppress the Astra
 * above-header on every front-end page.
 */
.ast-above-header-wrap,
.ast-above-header-bar,
.site-above-header-wrap,
[data-section="section-above-header-builder"] {
  display: none !important;
}

/* Stacking insurance: masthead always above any sticky/absolute Astra UI */
.bs-masthead { position: relative; z-index: 50; }
.site-header { position: relative; z-index: 49; }
.entry-header { margin-top: 0; }

/* ---- Cleanup: hero band already has paper bg & ink text but Astra
 *      ast-narrow-container can re-apply paper-alt below the wrapper.
 *      Force hero text colour so nothing inherits dark-on-dark. */
.bf-hero-band, .bf-hero-band * {
  color: inherit;
}
.bf-hero-band p.has-text-color,
.bf-hero-band p[style*="color"] {
  color: var(--bs-ink-70) !important;
}

/* ============================================================
   QA ROUND 2 — fixes (2026-04-28)
   ============================================================ */

/* ---- Bug 1: button contrast ---- */
.ast-button,
.wp-block-button .wp-block-button__link,
.bs-cta-button,
.bs-newsletter-band button,
.uagb-text-link {
  background: var(--bs-earth) !important;
  color: var(--bs-paper) !important;
  border: 1px solid var(--bs-earth) !important;
  text-decoration: none !important;
  background-image: none !important;
  padding-bottom: 0;
}
.ast-button:hover,
.wp-block-button .wp-block-button__link:hover,
.bs-cta-button:hover,
.uagb-text-link:hover {
  background: var(--bs-ink) !important;
  border-color: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}

/* outlined / secondary */
.wp-block-button.is-style-outline .wp-block-button__link,
.bs-cta-outline,
.bf-hero-band .bf-btn-secondary .wp-block-button__link,
.bf-hero-band .is-style-outline.bf-btn-secondary .wp-block-button__link {
  background: transparent !important;
  color: var(--bs-ink) !important;
  border: 1.5px solid var(--bs-ink) !important;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover,
.bs-cta-outline:hover {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}

/* hero primary stays ink-on-paper for high-priority CTA */
.bf-hero-band .bf-btn-primary .wp-block-button__link {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
  border-color: var(--bs-ink) !important;
}

/* topic "Explore →" small-caps text-link — keep earth on paper, no green-bg ever */
.bf-topics .wp-block-column p a {
  background: transparent !important;
  border: none !important;
  background-image: none !important;
  color: var(--bs-earth) !important;
}

/* ---- Bug 2: menu polish ---- */
.main-navigation ul li a,
.ast-builder-menu .menu-item > a,
.ast-builder-menu-mobile .menu-item > a {
  color: var(--bs-ink) !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-weight: 600;
  font-size: 13px;
  background-image: none !important;
  padding-bottom: 0;
}
.main-navigation ul li a:hover,
.main-navigation ul li.current-menu-item > a:hover {
  color: var(--bs-earth) !important;
}
.main-navigation .current-menu-item > a {
  border-bottom: 2px solid var(--bs-earth);
  padding-bottom: 2px !important;
  font-weight: 700;
}

/* sub-menu (dropdown) */
.main-navigation ul ul,
.ast-desktop .main-navigation .menu-item .sub-menu,
.main-header-menu .sub-menu {
  background: var(--bs-paper) !important;
  border: 1px solid var(--bs-ink-20) !important;
  box-shadow: 4px 6px 0 rgba(26,25,22,0.08);
}
.main-navigation ul ul li a {
  color: var(--bs-ink) !important;
  font-size: 12px;
}

/* mobile off-canvas */
.ast-mobile-menu-buttons-fill,
.ast-builder-menu-mobile,
.ast-mobile-popup-content,
.ast-mobile-popup-drawer {
  background: var(--bs-paper) !important;
  color: var(--bs-ink) !important;
}
.ast-mobile-popup-content .menu-item > a {
  color: var(--bs-ink) !important;
  border-bottom: 1px solid var(--bs-ink-20);
}
.ast-mobile-menu-trigger-fill svg,
.menu-toggle svg { stroke: var(--bs-ink) !important; fill: var(--bs-ink) !important; }

/* ============================================================
   ARTICLE BROADSHEET (Page 3)
   single-post structure: breadcrumb / eyebrow / dropcap / pullquote
   / sources block / about-author / related strip
   ============================================================ */

.bs-article-eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin: 18px 0 14px;
  display: block;
}

.bs-article-meta {
  font-family: var(--bs-mono);
  font-size: 12px;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
  margin: 8px 0 18px;
}
.bs-article-meta b { color: var(--bs-ink); font-weight: 500; }

.bs-article-caption {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  background: var(--bs-cream);
  padding: 10px 14px;
  margin-top: 0;
  letter-spacing: 0.04em;
}

.bs-article-body p:first-of-type::first-letter,
.single-post .entry-content p:first-of-type::first-letter {
  font-family: var(--bs-serif);
  font-weight: 700;
  float: left;
  font-size: 4.2em;
  line-height: 0.85;
  padding: 4px 10px 0 0;
  color: var(--bs-green);
}

.bs-sources {
  border-top: 3px double rgba(26,25,22,0.4);
  margin-top: 56px;
  padding-top: 24px;
}
.bs-sources h2,
.bs-sources h3 {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px !important;
  color: var(--bs-earth);
  font-weight: 700 !important;
  margin: 0 0 14px;
}
.bs-sources ul {
  font-family: var(--bs-serif);
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  list-style: none;
  padding: 0;
  margin: 0;
}
.bs-sources li {
  padding: 8px 0;
  border-bottom: 1px dotted var(--bs-ink-20);
}
.bs-sources li:last-child { border-bottom: none; }
.bs-sources a {
  color: var(--bs-green) !important;
  font-weight: 500;
  background-image: none !important;
  border-bottom: 1px solid var(--bs-ink-20);
}

.bs-author-card {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 24px;
  align-items: start;
  background: var(--bs-cream);
  border: 1px solid var(--bs-ink-20);
  padding: 28px;
  margin: 56px 0 32px;
}
.bs-author-card__avatar {
  width: 110px;
  height: 110px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
}
.bs-author-card__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-author-card__eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink-50);
}
.bs-author-card__name {
  font-family: var(--bs-serif);
  font-size: 28px;
  font-weight: 600;
  font-style: italic;
  letter-spacing: -0.02em;
  margin: 4px 0 8px;
  color: var(--bs-ink);
}
.bs-author-card__bio {
  font-family: var(--bs-serif);
  font-size: 15px;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0;
}
.bs-author-card a {
  color: var(--bs-earth) !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  background-image: none !important;
  border: none;
  display: inline-block;
  margin-top: 12px;
}

.bs-related {
  border-top: 1px solid var(--bs-ink-20);
  padding-top: 24px;
  margin-top: 32px;
}
.bs-related__h {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 16px;
}
.bs-related__items {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.bs-related__items article {
  border-top: 1px dotted var(--bs-ink-20);
  padding-top: 14px;
}
.bs-related__items a {
  color: var(--bs-ink) !important;
  background-image: none !important;
  font-family: var(--bs-serif);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.bs-related__meta {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  margin-top: 4px;
}
@media (max-width: 600px) { .bs-related__items { grid-template-columns: 1fr; } }

@media (max-width: 600px) {
  .bs-author-card { grid-template-columns: 1fr; padding: 18px; }
  .bs-author-card__avatar { width: 80px; height: 80px; }
}

/* ============================================================
   KNOWLEDGE HUB + NEWSLETTER + ABOUT + AUTHOR pages
   ============================================================ */

/* Common page chrome */
.bs-page { color: var(--bs-ink); }
.bs-page section { box-sizing: border-box; }

.bs-page-eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin: 0 0 14px;
}
.bs-page-h1 {
  font-family: var(--bs-serif) !important;
  font-size: clamp(2.2rem, 6vw, 5.6rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.03em;
  line-height: 0.98;
  margin: 0;
  color: var(--bs-ink);
  font-style: italic;
}
.bs-page-h1 b, .bs-page-h1 strong {
  font-style: normal;
  font-weight: 700;
}
.bs-page-sub {
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  line-height: 1.5;
  color: var(--bs-ink-70);
  font-style: italic;
  max-width: 60ch;
  margin: 22px 0 0;
}

/* ---- Knowledge Hub ---- */
.bs-kh {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 24px;
}
.bs-kh-header {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 56px;
  padding: 56px 0 32px;
  border-bottom: 3px double rgba(26,25,22,0.4);
}
.bs-kh-header__sidebar {
  padding: 28px;
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
  align-self: start;
}
.bs-kh-stats { display: grid; gap: 14px; }
.bs-kh-stats > div { padding: 8px 0; border-top: 1px solid var(--bs-ink-20); }
.bs-kh-stats > div:first-child { border-top: 0; padding-top: 0; }
.bs-kh-stats__n {
  font-family: var(--bs-serif);
  font-size: 32px;
  font-weight: 600;
  font-style: italic;
  letter-spacing: -0.02em;
  color: var(--bs-ink);
  line-height: 1;
}
.bs-kh-stats__l {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px;
  font-weight: 700;
  color: var(--bs-ink-50);
  margin-top: 4px;
}

.bs-kh-jump {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 0;
  margin: 20px 0 0;
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding-bottom: 14px;
}
.bs-kh-jump a {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink);
  padding: 8px 6px;
  border-right: 1px solid var(--bs-ink-20);
  background-image: none !important;
}
.bs-kh-jump a:last-child { border-right: none; }
.bs-kh-jump a:hover { color: var(--bs-earth); }
.bs-kh-jump .num {
  font-family: var(--bs-mono);
  color: var(--bs-earth);
  margin-right: 6px;
}
@media (max-width: 900px) { .bs-kh-jump { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 540px) { .bs-kh-jump { grid-template-columns: repeat(2, 1fr); } }

.bs-kh-section {
  padding: 56px 0;
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-kh-section h2 {
  font-family: var(--bs-serif);
  font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 0 0 28px;
  color: var(--bs-ink);
}

.bs-kh-popular {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.bs-kh-popular article {
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
  padding: 18px;
}
.bs-kh-popular .tag {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
}
.bs-kh-popular h3 {
  font-family: var(--bs-serif) !important;
  font-size: 1.25rem !important;
  font-weight: 600;
  margin: 6px 0 8px;
  font-style: italic;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.bs-kh-popular h3 a { color: var(--bs-ink) !important; background-image: none !important; }
.bs-kh-popular .dek {
  font-family: var(--bs-serif);
  font-size: 14px;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0;
}
@media (max-width: 1000px) { .bs-kh-popular { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px)  { .bs-kh-popular { grid-template-columns: 1fr; } }

.bs-kh-cats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.bs-kh-cat {
  background: var(--bs-cream);
  border: 1px solid var(--bs-ink-20);
  padding: 24px 28px;
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 16px;
}
.bs-kh-cat__num {
  font-family: var(--bs-serif);
  font-size: 50px;
  font-weight: 600;
  font-style: italic;
  color: var(--bs-earth);
  line-height: 0.9;
  letter-spacing: -0.03em;
}
.bs-kh-cat__h {
  font-family: var(--bs-serif);
  font-size: 1.5rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--bs-ink);
  margin: 0;
}
.bs-kh-cat__count {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
  margin-left: 8px;
}
.bs-kh-cat__blurb {
  font-family: var(--bs-serif);
  font-size: 14px;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 8px 0 14px;
}
.bs-kh-cat__list { list-style: none; padding: 0; margin: 0; font-family: var(--bs-serif); font-size: 14px; }
.bs-kh-cat__list li { padding: 6px 0; border-top: 1px dotted var(--bs-ink-20); }
.bs-kh-cat__list a {
  color: var(--bs-ink-70) !important;
  background-image: none !important;
}
.bs-kh-cat__list li:last-child a {
  color: var(--bs-earth) !important;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
}
@media (max-width: 800px) { .bs-kh-cats { grid-template-columns: 1fr; } }

.bs-kh-almanac {
  background: var(--bs-paper-alt);
  border-top: 3px double rgba(26,25,22,0.4);
  border-bottom: 3px double rgba(26,25,22,0.4);
  padding: 40px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
}
.bs-kh-almanac > div { padding-right: 18px; border-right: 1px solid var(--bs-ink-20); }
.bs-kh-almanac > div:last-child { border-right: none; }
.bs-kh-almanac__season {
  font-family: var(--bs-serif);
  font-size: 1.6rem;
  font-weight: 600;
  font-style: italic;
  color: var(--bs-ink);
}
.bs-kh-almanac__range {
  font-family: var(--bs-mono);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  color: var(--bs-earth);
  margin: 6px 0 12px;
}
.bs-kh-almanac__body {
  font-family: var(--bs-serif);
  font-size: 14px;
  line-height: 1.6;
  color: var(--bs-ink-70);
  margin: 0;
}
@media (max-width: 800px) {
  .bs-kh-almanac { grid-template-columns: 1fr 1fr; }
  .bs-kh-almanac > div { border-right: none; border-bottom: 1px solid var(--bs-ink-20); padding-bottom: 18px; }
}

.bs-kh-resources { display: grid; grid-template-columns: 1.4fr 1fr; gap: 56px; }
.bs-kh-resources__intro h3 {
  font-family: var(--bs-serif);
  font-size: 2rem;
  font-style: italic;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 0 0 14px;
}
.bs-kh-resources__intro p {
  font-family: var(--bs-serif);
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0;
}
.bs-kh-resources ul {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--bs-ink-20);
}
.bs-kh-resources li {
  display: grid;
  grid-template-columns: 110px 1fr 130px;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px dotted var(--bs-ink-20);
  align-items: baseline;
}
.bs-kh-resources li b {
  font-family: var(--bs-serif);
  font-style: italic;
  font-weight: 600;
  font-size: 15px;
}
.bs-kh-resources li span {
  font-family: var(--bs-serif);
  color: var(--bs-ink-70);
  font-size: 14px;
  line-height: 1.45;
}
.bs-kh-resources li a {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-earth) !important;
  background-image: none !important;
  text-align: right;
}
@media (max-width: 800px) { .bs-kh-resources { grid-template-columns: 1fr; gap: 28px; } }
@media (max-width: 600px) {
  .bs-kh-resources li { grid-template-columns: 1fr; }
  .bs-kh-resources li a { text-align: left; }
}

.bs-kh-cta {
  background: var(--bs-ink);
  color: var(--bs-paper);
  padding: 48px 40px;
  margin: 24px 0;
  text-align: center;
  background-image: repeating-linear-gradient(0deg, rgba(243,237,224,0.06) 0 1px, transparent 1px 44px);
}
.bs-kh-cta h3 {
  font-family: var(--bs-serif);
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  font-style: italic;
  font-weight: 500;
  margin: 0;
  color: var(--bs-paper);
  letter-spacing: -0.025em;
}
.bs-kh-cta h3 b { font-style: normal; font-weight: 700; }
.bs-kh-cta p {
  color: rgba(243,237,224,0.72);
  font-family: var(--bs-serif);
  font-size: 1.05rem;
  margin: 14px auto 22px;
  max-width: 50ch;
}
.bs-kh-cta a.bs-cta-button {
  display: inline-block;
  background: var(--bs-paper) !important;
  color: var(--bs-ink) !important;
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em !important;
  font-weight: 700 !important;
  padding: 14px 28px !important;
  border: 1px solid var(--bs-paper) !important;
}

/* ---- About / Author / Newsletter common chrome ---- */
.bs-page-hero {
  text-align: center;
  padding: 72px 24px 48px;
  border-bottom: 3px double rgba(26,25,22,0.4);
}
.bs-page-hero .bs-page-h1 { max-width: 18ch; margin-inline: auto; }
.bs-page-hero .bs-page-sub { margin-inline: auto; max-width: 60ch; text-align: center; }

/* ---- Newsletter page ---- */
.bs-nl {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 24px;
}
.bs-nl__hero {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 56px;
  align-items: center;
  padding: 56px 0;
  border-bottom: 3px double rgba(26,25,22,0.4);
}
.bs-nl__hero h1 { font-family: var(--bs-serif); font-size: clamp(2.4rem, 6vw, 5.6rem); font-style: italic; font-weight: 600; letter-spacing: -0.03em; line-height: 0.95; margin: 0; }
.bs-nl__hero h1 b { font-style: normal; font-weight: 700; }
.bs-nl__lede { font-family: var(--bs-serif); font-style: italic; font-size: 1.25rem; line-height: 1.5; color: var(--bs-ink-70); margin: 22px 0 0; max-width: 60ch; }
.bs-nl__form { background: var(--bs-cream); border: 1px solid var(--bs-ink-20); padding: 18px; box-shadow: 12px 14px 0 rgba(26,25,22,0.12); }
.bs-nl__form .beehiiv-embed { box-shadow: none; }

.bs-nl__details {
  background: var(--bs-paper-alt);
  border-bottom: 1px solid var(--bs-ink-20);
  padding: 48px 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
.bs-nl__details > div { padding: 0 28px; border-left: 1px solid var(--bs-ink-20); }
.bs-nl__details > div:first-child { border-left: none; }
.bs-nl__details .h {
  font-family: var(--bs-serif);
  font-size: 1.4rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--bs-ink);
  margin: 0 0 8px;
}
.bs-nl__details .d {
  font-family: var(--bs-sans);
  font-size: 13px;
  line-height: 1.5;
  color: var(--bs-ink-70);
  margin: 0;
}
@media (max-width: 800px) { .bs-nl__details { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .bs-nl__details { grid-template-columns: 1fr; } .bs-nl__details > div { border-left: none; padding: 14px 24px; border-top: 1px solid var(--bs-ink-20); } }

@media (max-width: 800px) {
  .bs-nl__hero { grid-template-columns: 1fr; gap: 32px; }
  .bs-kh-header { grid-template-columns: 1fr; }
}

/* ---- About page ---- */
.bs-about-principles {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
  border: 1px solid var(--bs-ink-20);
  margin: 32px 0;
}
.bs-about-principles > div {
  padding: 32px;
  border-right: 1px solid var(--bs-ink-20);
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-about-principles > div:nth-child(2n) { border-right: none; background: var(--bs-cream); }
.bs-about-principles > div:nth-last-child(-n+2) { border-bottom: none; }
.bs-about-principles__num {
  font-family: var(--bs-serif);
  font-size: 56px;
  font-weight: 600;
  font-style: italic;
  color: var(--bs-earth);
  line-height: 0.9;
  letter-spacing: -0.03em;
}
.bs-about-principles h3 {
  font-family: var(--bs-serif);
  font-size: 1.6rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 14px 0 10px;
}
.bs-about-principles p {
  font-family: var(--bs-serif);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--bs-ink-70);
  margin: 0;
}
@media (max-width: 700px) {
  .bs-about-principles { grid-template-columns: 1fr; }
  .bs-about-principles > div { border-right: none !important; }
}

.bs-about-numbers {
  background: var(--bs-ink);
  color: var(--bs-paper);
  padding: 40px 32px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  margin: 32px 0;
}
.bs-about-numbers > div { padding: 0 18px; border-left: 1px solid rgba(243,237,224,0.18); }
.bs-about-numbers > div:first-child { border-left: none; padding-left: 0; }
.bs-about-numbers__n {
  font-family: var(--bs-serif);
  font-size: clamp(1.8rem, 4vw, 4rem);
  font-style: italic;
  font-weight: 600;
  line-height: 0.95;
  letter-spacing: -0.03em;
}
.bs-about-numbers__l {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px;
  font-weight: 700;
  color: rgba(243,237,224,0.6);
  margin-top: 8px;
}
@media (max-width: 800px) { .bs-about-numbers { grid-template-columns: 1fr 1fr; gap: 18px; } .bs-about-numbers > div { border-left: none; } }

.bs-about-process {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border: 1px solid var(--bs-ink-20);
  margin: 32px 0;
}
.bs-about-process > div { padding: 32px; }
.bs-about-process > div:first-child { border-right: 1px solid var(--bs-ink-20); }
.bs-about-process h3 {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink-50);
  margin: 0 0 16px;
}
.bs-about-process ol,
.bs-about-process ul {
  list-style: none;
  padding: 0;
  margin: 0;
  font-family: var(--bs-serif);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--bs-ink);
}
.bs-about-process li {
  padding: 12px 0;
  border-bottom: 1px dotted var(--bs-ink-20);
  display: flex;
  gap: 12px;
}
.bs-about-process li:last-child { border-bottom: none; }
.bs-about-process .num {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  min-width: 28px;
}
.bs-about-process .x {
  color: var(--bs-earth);
  font-weight: 700;
  min-width: 22px;
}
@media (max-width: 700px) { .bs-about-process { grid-template-columns: 1fr; } .bs-about-process > div:first-child { border-right: none; border-bottom: 1px solid var(--bs-ink-20); } }

/* ---- Author page (extends bs-author-card pattern) ---- */
.bs-author-page {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 24px;
}
.bs-author-page__header {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 0;
  border-bottom: 1px solid var(--bs-ink-20);
  padding: 0;
  margin: 0;
}
.bs-author-page__photo {
  border-right: 1px solid var(--bs-ink-20);
  background: var(--bs-paper-alt);
  min-height: 380px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bs-author-page__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-author-page__bio {
  padding: 48px 40px;
}
.bs-author-page__bio h1 {
  font-family: var(--bs-serif);
  font-size: clamp(2.4rem, 6vw, 5.6rem);
  font-weight: 600;
  font-style: italic;
  letter-spacing: -0.03em;
  line-height: 0.98;
  margin: 0;
}
.bs-author-page__bio h1 b { font-style: normal; font-weight: 700; }
.bs-author-page__bio p {
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  line-height: 1.45;
  color: var(--bs-ink-70);
  font-style: italic;
  max-width: 60ch;
  margin: 20px 0 0;
}
.bs-author-page__stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--bs-ink-20);
  border-bottom: 1px solid var(--bs-ink-20);
  margin-top: 32px;
}
.bs-author-page__stats > div {
  padding: 16px 18px;
  border-right: 1px solid var(--bs-ink-20);
}
.bs-author-page__stats > div:last-child { border-right: none; }
.bs-author-page__stats .n { font-family: var(--bs-serif); font-size: 1.6rem; font-weight: 600; letter-spacing: -0.02em; }
.bs-author-page__stats .l { font-family: var(--bs-sans); font-variant: all-small-caps; letter-spacing: 0.14em; font-size: 10px; color: var(--bs-ink-50); margin-top: 2px; }
@media (max-width: 800px) {
  .bs-author-page__header { grid-template-columns: 1fr; }
  .bs-author-page__photo { min-height: 240px; border-right: none; border-bottom: 1px solid var(--bs-ink-20); }
}

.bs-author-page__recent {
  padding: 32px 0;
}
.bs-author-page__recent h3 {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink);
  margin: 0 0 16px;
}
.bs-author-page__recent a {
  display: grid;
  grid-template-columns: 80px 1fr 160px;
  gap: 18px;
  align-items: baseline;
  padding: 14px 0;
  border-top: 1px dotted var(--bs-ink-20);
  background-image: none !important;
  color: var(--bs-ink);
}
.bs-author-page__recent .d { font-family: var(--bs-mono); font-size: 12px; color: var(--bs-ink-50); }
.bs-author-page__recent .t { font-family: var(--bs-serif); font-size: 1.15rem; font-weight: 500; line-height: 1.2; letter-spacing: -0.01em; }
.bs-author-page__recent .c { font-family: var(--bs-sans); font-variant: all-small-caps; letter-spacing: 0.14em; font-size: 10px; color: var(--bs-earth); font-weight: 700; text-align: right; }
@media (max-width: 600px) {
  .bs-author-page__recent a { grid-template-columns: 1fr; gap: 4px; }
  .bs-author-page__recent .c { text-align: left; }
}

/* ============================================================
   PHASE G — Original Broadsheet chrome (TopStrip / Nameplate / Deadline)
   Owns the site header. Astra's #masthead is hidden below.
   ============================================================ */

/* Kill the legacy Astra header rendering — bfcore_broadsheet_chrome on
   astra_header_before now owns this region. Keep <header> in DOM for
   schema.org/WPHeader microdata, just hide the rendered shell. */
#masthead .ast-above-header-wrap,
#masthead .ast-main-header-wrap,
#masthead #ast-mobile-header { display: none !important; }
#masthead { border: 0 !important; padding: 0 !important; height: 0 !important; min-height: 0 !important; overflow: hidden !important; }

.bs-chrome { background: var(--bs-paper); border-bottom: 1px solid var(--bs-ink-20); }
.bs-chrome a { color: inherit; text-decoration: none; }

/* ── Top strip ──────────────────────────────────────────── */
.bs-topstrip {
  display: flex;
  align-items: stretch;
  font-size: 12px;
  color: var(--bs-ink-70);
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-topstrip > * { padding: 10px 18px; border-right: 1px solid var(--bs-ink-20); }
.bs-topstrip__date { font-weight: 600; }
.bs-topstrip__date .bs-sc { font-weight: 600; }
.bs-topstrip__weather { display: flex; gap: 14px; align-items: center; }
.bs-topstrip__weather .bs-sc { color: var(--bs-ink-50); }
.bs-topstrip__markets { flex: 1; overflow: hidden; }
.bs-topstrip__markets .bs-ticker {
  display: flex;
  gap: 22px;
  white-space: nowrap;
  font-size: 12px;
  font-family: var(--bs-mono);
  animation: bsTick 60s linear infinite;
  will-change: transform;
}
.bs-topstrip__markets .bs-tick { display: inline-flex; gap: 6px; }
.bs-topstrip__markets .bs-tick b { font-weight: 600; color: var(--bs-ink); }
.bs-topstrip__markets .bs-up { color: var(--bs-green); }
.bs-topstrip__markets .bs-down { color: var(--bs-earth); }
@keyframes bsTick {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.bs-topstrip__cta {
  background: var(--bs-ink);
  color: var(--bs-paper) !important;
  font-weight: 700;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  display: flex;
  align-items: center;
  white-space: nowrap;
  border-right: 0;
}
.bs-topstrip__cta:hover { background: var(--bs-earth); }

/* ── Nameplate ──────────────────────────────────────────── */
.bs-nameplate {
  padding: 36px 40px 0;
  text-align: center;
  background: var(--bs-paper);
}
.bs-nameplate__est {
  font-size: 11px;
  color: var(--bs-ink-50);
  margin-bottom: 14px;
}
.bs-nameplate__wordmark {
  display: inline-block;
  font-size: 108px;
  font-weight: 500;
  font-style: italic;
  letter-spacing: -0.03em;
  line-height: 0.95;
  color: var(--bs-ink);
}
.bs-nameplate__wordmark b { font-style: normal; font-weight: 700; }
.bs-nameplate__tagline {
  font-size: 13px;
  font-style: italic;
  color: var(--bs-ink-70);
  margin-top: 16px;
}
.bs-nameplate__rule { margin-top: 24px; }
.bs-nav {
  display: flex;
  justify-content: center;
  gap: 32px;
  font-size: 12px;
  font-weight: 600;
  color: var(--bs-ink);
  padding: 14px 16px;
  border-bottom: 1px solid var(--bs-ink-20);
  flex-wrap: wrap;
}
.bs-nav__link {
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  transition: background-size 0.2s;
}
.bs-nav__link:hover { background-size: 100% 1px; }
.bs-nav__link.is-current { color: var(--bs-earth); background-size: 100% 2px; }

/* ── Deadline strap ─────────────────────────────────────── */
.bs-deadline-strap {
  background: var(--bs-ink);
  color: var(--bs-paper);
  padding: 10px 40px;
  display: flex;
  align-items: center;
  gap: 20px;
  font-size: 13px;
}
.bs-deadline-strap__badge {
  font-size: 10px;
  background: var(--bs-earth);
  color: var(--bs-paper);
  padding: 3px 8px;
  font-weight: 700;
}
.bs-deadline-strap__text { flex: 1; }
.bs-deadline-strap__remain { opacity: 0.6; margin-left: 8px; }
.bs-deadline-strap__cta {
  font-size: 11px;
  color: var(--bs-paper) !important;
  white-space: nowrap;
}
.bs-deadline-strap__cta:hover { color: var(--bs-earth) !important; }

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 980px) {
  .bs-topstrip { font-size: 11px; flex-wrap: wrap; }
  .bs-topstrip__markets { flex: 1 1 100%; order: 4; border-right: 0; border-top: 1px solid var(--bs-ink-20); }
  .bs-topstrip__weather { gap: 10px; }
  .bs-nameplate { padding: 28px 24px 0; }
  .bs-nameplate__wordmark { font-size: 72px; }
  .bs-nav { gap: 18px; padding: 12px 16px; font-size: 11px; }
  .bs-deadline-strap { padding: 10px 24px; flex-wrap: wrap; }
}
@media (max-width: 600px) {
  .bs-topstrip { flex-direction: column; }
  .bs-topstrip > * { border-right: 0; border-bottom: 1px solid var(--bs-ink-20); padding: 8px 16px; }
  .bs-topstrip__markets { order: unset; border-top: 0; }
  .bs-topstrip__cta { justify-content: center; padding: 12px 16px; }
  .bs-nameplate__wordmark { font-size: 56px; }
  .bs-nameplate__est { font-size: 10px; }
  .bs-nameplate__tagline { font-size: 12px; }
  .bs-deadline-strap { padding: 10px 20px; gap: 10px; font-size: 12px; }
  .bs-deadline-strap__remain { display: block; margin-left: 0; margin-top: 4px; }
}

/* ============================================================
   PHASE G — Original Broadsheet HOMEPAGE (page 922)
   ============================================================ */

.bs-home { background: var(--bs-paper); }
.bs-home a { color: inherit; text-decoration: none; }

/* Lead + rail */
.bs-home__lead {
  display: grid;
  grid-template-columns: 1fr 320px;
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-home__lead-main {
  padding: 36px 40px;
  border-right: 1px solid var(--bs-ink-20);
}
.bs-home__lead-rail {
  padding: 36px 28px;
  background: var(--bs-paper-alt);
}
.bs-home__kicker {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bs-home__lead-h {
  font-family: var(--bs-serif);
  font-size: 62px;
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.02;
  margin: 0 0 18px;
  color: var(--bs-ink);
}
.bs-home__lead-h a { background-image: none; }
.bs-home__lead-meta {
  font-family: var(--bs-sans);
  font-size: 14px;
  color: var(--bs-ink-70);
  margin-bottom: 20px;
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}
.bs-home__lead-meta b { color: var(--bs-ink); }
.bs-home__lead-photo {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--bs-paper-alt);
  overflow: hidden;
  margin-bottom: 24px;
}
.bs-home__lead-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-home__lead-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin-top: 8px;
}
.bs-home__lead-body p {
  font-family: var(--bs-serif);
  font-size: 17px;
  line-height: 1.55;
  margin: 0;
  color: var(--bs-ink);
}
.bs-home__lead-body p:last-child { color: var(--bs-ink-70); }
.bs-home__lead-body p:first-of-type::first-letter {
  font-family: var(--bs-serif);
  font-weight: 700;
  float: left;
  font-size: 4.2em;
  line-height: 0.85;
  padding: 4px 10px 0 0;
  color: var(--bs-green);
}
.bs-home__rail-h {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink);
  margin-bottom: 18px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--bs-ink);
}
.bs-home__rail a {
  display: block;
  padding: 16px 0;
  border-bottom: 1px dotted var(--bs-ink-20);
}
.bs-home__rail a:last-child { border-bottom: 0; }
.bs-home__rail-tag {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px;
  color: var(--bs-earth);
  font-weight: 700;
  margin-bottom: 6px;
}
.bs-home__rail-title {
  font-family: var(--bs-serif);
  font-size: 19px;
  line-height: 1.2;
  font-weight: 500;
  color: var(--bs-ink);
}
.bs-home__rail-mins {
  font-family: var(--bs-sans);
  font-size: 11px;
  color: var(--bs-ink-50);
  margin-top: 6px;
}

/* Three-column secondary */
.bs-home__three {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-home__three article {
  padding: 32px 28px;
  border-right: 1px solid var(--bs-ink-20);
}
.bs-home__three article:last-child { border-right: 0; }
.bs-home__three-photo { aspect-ratio: 16 / 9; background: var(--bs-paper-alt); margin-bottom: 18px; overflow: hidden; }
.bs-home__three-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-home__three-tag {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 10px;
}
.bs-home__three-h {
  font-family: var(--bs-serif);
  font-size: 24px;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.15;
  margin: 0 0 12px;
  color: var(--bs-ink);
}
.bs-home__three-body {
  font-family: var(--bs-serif);
  font-size: 15px;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0;
}

/* Topic index */
.bs-home__topics {
  padding: 48px 40px;
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-home__topics-head {
  display: flex;
  align-items: baseline;
  margin-bottom: 28px;
  gap: 16px;
  flex-wrap: wrap;
}
.bs-home__topics-h {
  font-family: var(--bs-serif);
  font-size: 38px;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--bs-ink);
}
.bs-home__topics-sub {
  font-family: var(--bs-sans);
  color: var(--bs-ink-50);
  font-size: 14px;
  font-style: italic;
}
.bs-home__topics-cta {
  margin-left: auto;
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 12px;
  font-weight: 600;
  color: var(--bs-ink);
}
.bs-home__topics-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.bs-home__topics-grid a {
  padding: 22px 24px;
  border-top: 1px solid var(--bs-ink-20);
  border-right: 1px solid var(--bs-ink-20);
  display: flex;
  align-items: center;
  gap: 18px;
}
.bs-home__topics-grid a:nth-child(3n) { border-right: 0; }
.bs-home__topics-grid a:nth-last-child(-n+3) { border-bottom: 1px solid var(--bs-ink-20); }
.bs-home__topics-grid a.is-hot { background: var(--bs-cream); }
.bs-home__topic-icon {
  font-family: var(--bs-mono);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.04em;
  width: 44px; height: 44px;
  border-radius: 50%;
  border: 1.5px solid var(--bs-ink);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.bs-home__topics-grid a.is-hot .bs-home__topic-icon {
  border-color: var(--bs-earth);
  background: var(--bs-earth);
  color: var(--bs-paper);
}
.bs-home__topic-name {
  font-family: var(--bs-serif);
  font-size: 22px;
  font-weight: 600;
  color: var(--bs-ink);
  letter-spacing: -0.01em;
}
.bs-home__topic-blurb {
  font-family: var(--bs-sans);
  font-size: 12px;
  color: var(--bs-ink-50);
  font-style: italic;
  margin-top: 2px;
}
.bs-home__topic-count {
  font-family: var(--bs-mono);
  font-size: 13px;
  color: var(--bs-ink-50);
  font-variant-numeric: tabular-nums;
  margin-left: auto;
  flex-shrink: 0;
}
.bs-home__topic-hot {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 9px;
  background: var(--bs-earth);
  color: var(--bs-paper);
  padding: 2px 6px;
  margin-left: 10px;
  font-weight: 700;
  vertical-align: middle;
}

/* Editor block */
.bs-home__editor {
  display: grid;
  grid-template-columns: 220px 1fr 260px;
  gap: 48px;
  padding: 56px 40px;
  background: var(--bs-cream);
  border-bottom: 1px solid var(--bs-ink-20);
}
.bs-home__editor-portrait {
  width: 180px; height: 180px;
  border-radius: 50%;
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
  overflow: hidden;
}
.bs-home__editor-portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-home__editor-role {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px;
  color: var(--bs-ink-50);
  font-weight: 600;
  margin-top: 14px;
}
.bs-home__editor-name {
  font-family: var(--bs-serif);
  font-size: 22px;
  font-weight: 600;
  color: var(--bs-ink);
  margin-top: 2px;
}
.bs-home__editor-bio {
  font-family: var(--bs-sans);
  font-size: 12px;
  color: var(--bs-ink-70);
  font-style: italic;
  margin-top: 6px;
}
.bs-home__editor-quote {
  font-family: var(--bs-serif);
  font-size: 22px;
  line-height: 1.45;
  color: var(--bs-ink);
  margin: 0;
  font-style: italic;
}
.bs-home__editor-quote::first-letter {
  font-family: var(--bs-serif);
  font-weight: 700;
  float: left;
  font-size: 4.2em;
  line-height: 0.85;
  padding: 4px 10px 0 0;
  color: var(--bs-green);
  font-style: normal;
}
.bs-home__editor-eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bs-home__editor-sources {
  margin-top: 24px;
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
}
.bs-home__editor-sources span {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-70);
  letter-spacing: 0.04em;
}
.bs-home__editor-numbers {
  border-left: 1px solid var(--bs-ink-20);
  padding-left: 32px;
}
.bs-home__editor-numbers .h {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-ink);
  margin-bottom: 14px;
}
.bs-home__editor-numbers .n {
  font-family: var(--bs-serif);
  font-size: 32px;
  font-weight: 600;
  color: var(--bs-green);
  line-height: 1;
  letter-spacing: -0.02em;
}
.bs-home__editor-numbers .l {
  font-family: var(--bs-sans);
  font-size: 12px;
  color: var(--bs-ink-70);
  margin-top: 2px;
}
.bs-home__editor-numbers .row { margin-bottom: 14px; }

/* Section title used by /knowledge-hub etc. — already covered elsewhere in this file */

/* Responsive home */
@media (max-width: 980px) {
  .bs-home__lead { grid-template-columns: 1fr; }
  .bs-home__lead-main { border-right: 0; border-bottom: 1px solid var(--bs-ink-20); padding: 28px 24px; }
  .bs-home__lead-rail { padding: 28px 24px; }
  .bs-home__lead-h { font-size: 42px; }
  .bs-home__lead-body { grid-template-columns: 1fr; gap: 18px; }
  .bs-home__three { grid-template-columns: 1fr; }
  .bs-home__three article { border-right: 0; border-bottom: 1px solid var(--bs-ink-20); padding: 24px; }
  .bs-home__three article:last-child { border-bottom: 0; }
  .bs-home__topics { padding: 32px 24px; }
  .bs-home__topics-h { font-size: 30px; }
  .bs-home__topics-grid { grid-template-columns: 1fr; }
  .bs-home__topics-grid a { border-right: 0; }
  .bs-home__topics-grid a:nth-last-child(-n+3) { border-bottom: 0; }
  .bs-home__topics-grid a:last-child { border-bottom: 1px solid var(--bs-ink-20); }
  .bs-home__editor { grid-template-columns: 1fr; padding: 40px 24px; gap: 28px; }
  .bs-home__editor-numbers { border-left: 0; border-top: 1px solid var(--bs-ink-20); padding: 24px 0 0; }
}
@media (max-width: 600px) {
  .bs-home__lead-main, .bs-home__lead-rail { padding: 24px 18px; }
  .bs-home__lead-h { font-size: 34px; }
  .bs-home__topics { padding: 28px 18px; }
  .bs-home__topics-h { font-size: 26px; }
}

/* === PHASE G fix-up — force lead/three photo aspect ratios via padding,
       since Astra entry-content rules clobber `aspect-ratio` on <a>. === */
.bs-home__lead-photo,
.bs-home__three-photo {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  height: 0 !important;
  padding-top: 56.25% !important; /* 16:9 */
  aspect-ratio: auto !important;
  overflow: hidden !important;
  margin-bottom: 24px;
  background: var(--bs-paper-alt);
}
.bs-home__lead-photo > img,
.bs-home__lead-photo > .wp-post-image,
.bs-home__three-photo > img,
.bs-home__three-photo > .wp-post-image {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
.bs-home__lead-photo noscript,
.bs-home__three-photo noscript { display: none !important; }

/* === PHASE G fix-up — prevent ticker pushing page width on mobile === */
.bs-chrome { overflow: hidden; }
.bs-topstrip__markets { min-width: 0; }
@media (max-width: 600px) {
  /* On phones, hide the markets ticker (illegible) and the weather strip
     (low value at this width). Date + Subscribe stay. */
  .bs-topstrip__markets,
  .bs-topstrip__weather { display: none !important; }
}

/* ============================================================
   PHASE H — Audit fix-ups (2026-04-29)
   - Wider article + page containers (was 750px narrow)
   - Hide Astra's duplicate entry-header on broadsheet pages
   - Force broadsheet typography on every .entry-content heading
   - Kill legacy green/gold heading colours
   - Centre + size Beehiiv embeds symmetrically
   ============================================================ */

/* --- Container widths: stop the 750px narrow squeeze --- */
.single-post .ast-container,
body.single .site-content > .ast-container {
  max-width: 1080px !important;
}
body.page .ast-container,
.page .site-content > .ast-container {
  max-width: 1240px !important;
}
@media (max-width: 980px) {
  .single-post .ast-container,
  body.single .site-content > .ast-container,
  body.page .ast-container,
  .page .site-content > .ast-container { max-width: 100% !important; }
}

/* Article body still constrained to a 760px reading measure (already in PHASE B) */
.single-post .site-main,
.single-post .content-area,
.single-post .ast-article-single,
.page .site-main,
.page .content-area {
  width: 100% !important;
  max-width: none !important;
}

/* --- Page title duplication: Astra renders .entry-header > .entry-title on
       every page; broadsheet pages already provide their own in-content H1
       (.bs-page-h1, .bs-author-page__h1, .bs-about__h1, etc.). Hide Astra's
       auto title on pages that have one of those. Legal pages (Privacy,
       Terms, Cookies) keep Astra's title. --- */
body.page .entry-header { display: none !important; }
/* Re-enable for legal pages whose post_content has no in-content H1 */
body.page-id-4995 .entry-header,   /* Cookie Policy */
body.page-id-2597 .entry-header,   /* Terms of Service */
body.page-id-2595 .entry-header {  /* Privacy Policy */
  display: block !important;
  max-width: 760px;
  margin: 0 auto;
  padding-top: 28px;
}
body.page-id-4995 .entry-title,
body.page-id-2597 .entry-title,
body.page-id-2595 .entry-title {
  font-family: var(--bs-serif) !important;
  font-weight: 700 !important;
  font-size: clamp(2rem, 4vw, 3rem) !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0 0 16px;
}

/* --- Force broadsheet typography on every page's body content.
       Pages can't always be Spectra/Gutenberg-styled to broadsheet exactly;
       these defaults guarantee the look. --- */
.page .entry-content {
  font-family: var(--bs-serif);
  font-size: 1.18rem;
  line-height: 1.65;
  color: var(--bs-ink);
}
.page .entry-content p { margin: 0 0 1.1em; color: var(--bs-ink); }
.page .entry-content li { color: var(--bs-ink); margin: 0.3em 0; }

.page .entry-content h1 {
  font-family: var(--bs-serif) !important;
  font-weight: 700 !important;
  font-size: clamp(2.4rem, 4.5vw, 3.6rem) !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.025em !important;
  line-height: 1.05 !important;
  margin: 0 0 16px !important;
}
.page .entry-content h2 {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: clamp(1.6rem, 2.6vw, 2rem) !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.02em !important;
  line-height: 1.15 !important;
  margin: 1.6em 0 0.5em !important;
}
.page .entry-content h3 {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: clamp(1.25rem, 2vw, 1.55rem) !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.015em !important;
  line-height: 1.2 !important;
  margin: 1.3em 0 0.4em !important;
}
.page .entry-content h4,
.page .entry-content h5,
.page .entry-content h6 {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  color: var(--bs-ink) !important;
  margin: 1.2em 0 0.4em !important;
}

.page .entry-content a:not(.bs-button):not(.bs-cta) {
  color: var(--bs-green) !important;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

/* --- Kill legacy bright-green / gold colours that bleed through from page
       inline styles or Astra customizer settings. These colours are NOT in
       the broadsheet palette and break consistency. --- */
.page .entry-content [style*="color:#122B1C"],
.page .entry-content [style*="color:#2d5016"],
.page .entry-content [style*="color: #2d5016"],
.page .entry-content [style*="color: #122B1C"],
.page .entry-content [style*="color:#1e3a0f"] {
  color: var(--bs-ink) !important;
}
.page .entry-content [style*="background-color:#C8962A"],
.page .entry-content [style*="background:#C8962A"] {
  background-color: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}

/* --- Beehiiv embed: it ships with inline `width: 1313px` which breaks
       layout. Force it to fill its parent symmetrically. --- */
iframe.beehiiv-embed,
.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto !important;
  display: block !important;
  border: 0 !important;
  background: transparent !important;
  min-height: 320px;
}
.bs-nl__form,
.bs-footer-newsletter__form,
.bs-subscribe__form {
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
}

/* --- Subscribe page (4469) Broadsheet hero --- */
.bs-subscribe {
  display: grid;
  grid-template-columns: 1fr 480px;
  gap: 56px;
  padding: 56px 40px;
  border-bottom: 1px solid var(--bs-ink-20);
  background: var(--bs-paper);
  color: var(--bs-ink);
}
.bs-subscribe__eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 16px;
}
.bs-subscribe h1, .bs-subscribe__h1 {
  font-family: var(--bs-serif) !important;
  font-size: clamp(2.4rem, 5vw, 4rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.02 !important;
  color: var(--bs-ink) !important;
  margin: 0 0 18px !important;
}
.bs-subscribe h1 em, .bs-subscribe__h1 em {
  font-style: italic;
  font-weight: 500;
}
.bs-subscribe__lede {
  font-family: var(--bs-serif);
  font-size: 1.2rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0 0 22px;
  font-style: italic;
}
.bs-subscribe__strip {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
  font-family: var(--bs-sans);
  font-size: 13px;
  color: var(--bs-ink-70);
  margin-top: 14px;
}
.bs-subscribe__strip b {
  display: block;
  font-family: var(--bs-mono);
  font-size: 12px;
  font-weight: 500;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
}
.bs-subscribe__form-wrap {
  background: var(--bs-cream);
  padding: 28px;
  border: 1px solid var(--bs-ink-20);
}
.bs-subscribe__form-wrap iframe.beehiiv-embed {
  min-height: 360px;
  border-radius: 0 !important;
}
.bs-subscribe__note {
  font-family: var(--bs-sans);
  font-size: 12px;
  font-style: italic;
  color: var(--bs-ink-50);
  margin-top: 14px;
}
@media (max-width: 980px) {
  .bs-subscribe { grid-template-columns: 1fr; gap: 32px; padding: 32px 24px; }
  .bs-subscribe__form-wrap { padding: 22px; }
}

/* --- Contact page (2415) Broadsheet --- */
.bs-contact {
  background: var(--bs-paper);
  color: var(--bs-ink);
  padding: 48px 40px;
  border-bottom: 1px solid var(--bs-ink-20);
  max-width: 1100px;
  margin: 0 auto;
}
.bs-contact__eyebrow {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bs-contact__h1 {
  font-family: var(--bs-serif) !important;
  font-size: clamp(2.6rem, 5vw, 4.2rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.02 !important;
  color: var(--bs-ink) !important;
  margin: 0 0 18px !important;
  max-width: 820px;
}
.bs-contact__h1 em { font-style: italic; font-weight: 500; }
.bs-contact__lede {
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  font-style: italic;
  max-width: 720px;
  margin: 0 0 32px;
}
.bs-contact__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border-top: 1px solid var(--bs-ink-20);
}
.bs-contact__cell {
  padding: 24px 28px 24px 0;
  border-bottom: 1px solid var(--bs-ink-20);
  border-right: 1px solid var(--bs-ink-20);
}
.bs-contact__cell:nth-child(2n) { padding-right: 0; padding-left: 28px; border-right: 0; }
.bs-contact__cell .h {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 6px;
}
.bs-contact__cell .t {
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--bs-ink);
  margin: 0 0 4px;
  letter-spacing: -0.01em;
}
.bs-contact__cell .d {
  font-family: var(--bs-serif);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--bs-ink-70);
  margin: 0;
}
.bs-contact__cell a {
  color: var(--bs-green) !important;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.bs-contact__sources {
  margin-top: 32px;
  padding-top: 18px;
  border-top: 3px double var(--bs-ink-20);
  font-family: var(--bs-mono);
  font-size: 12px;
  color: var(--bs-ink-50);
  letter-spacing: 0.04em;
}
@media (max-width: 760px) {
  .bs-contact { padding: 32px 24px; }
  .bs-contact__grid { grid-template-columns: 1fr; }
  .bs-contact__cell,
  .bs-contact__cell:nth-child(2n) {
    padding: 22px 0;
    border-right: 0;
  }
}

/* === PHASE H/2 — Override Astra customizer global typography + colours.
       Astra ships inline `<style>` with Karla body / Rubik headings /
       #C8962A default link. These rules take precedence and force every
       page back into the broadsheet system. === */

body,
button,
input,
select,
textarea,
.ast-button,
.ast-custom-button {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink);
}

input[type="email"],
input[type="text"],
input[type="search"],
textarea,
button,
.ast-button,
.ast-custom-button {
  font-family: var(--bs-sans) !important;
}

h1, h2, h3, h4, h5, h6,
.entry-content :where(h1, h2, h3, h4, h5, h6),
.site-title,
.site-title a,
.entry-title,
.ast-archive-title {
  font-family: var(--bs-serif) !important;
  color: var(--bs-ink) !important;
}

/* Default link colour: ink with green hover, never gold. */
a:not(.bs-topstrip__cta):not(.bs-deadline-strap__cta):not(.bs-nav__link):not(.menu-link):not(.bs-button):not(.ast-button):not(.bs-cta):not(.wp-block-button__link) {
  color: var(--bs-ink);
}
a:not(.bs-topstrip__cta):not(.bs-deadline-strap__cta):not(.bs-nav__link):not(.menu-link):not(.bs-button):not(.ast-button):not(.bs-cta):not(.wp-block-button__link):hover,
a:not(.bs-topstrip__cta):not(.bs-deadline-strap__cta):not(.bs-nav__link):not(.menu-link):not(.bs-button):not(.ast-button):not(.bs-cta):not(.wp-block-button__link):focus {
  color: var(--bs-earth);
}

/* Body content links are green (broadsheet "live" link) — keep these. */
.entry-content a,
.bs-page a:not(.bs-topstrip__cta):not(.bs-deadline-strap__cta):not(.bs-nav__link):not(.menu-link):not(.bs-button) {
  color: var(--bs-green) !important;
}
.entry-content a:hover,
.bs-page a:hover {
  color: var(--bs-earth) !important;
}

/* Hide the duplicate Astra <h1 class="entry-title"> on Privacy + Terms
   too, since their post_content already has its own <h1>. */
body.page-id-2597 .entry-header,   /* Terms — overridden, content has H1 */
body.page-id-2595 .entry-header {  /* Privacy — overridden, content has H1 */
  display: none !important;
}

/* ============================================================
   PHASE I — Beehiiv proportion + audit fixes (2026-04-29)
   - Beehiiv embed sized naturally (no min-height blow-up)
   - Subscribe + Newsletter form wraps balanced
   - Strip lingering legacy block residue (bf-author-card etc.)
   ============================================================ */

/* Beehiiv: let the iframe size to its content. The Beehiiv form ships with
   a fixed inner layout; forcing min-height inflates the box and looks
   disproportioned. Use natural height = the iframe's reported height. */
iframe.beehiiv-embed,
.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto !important;
  display: block !important;
  border: 0 !important;
  background: transparent !important;
  min-height: 0 !important;
  height: 380px;          /* matches Beehiiv form's natural height */
}

/* Form wraps: tighter, centred, ink-bordered for paper feel. */
.bs-nl__form,
.bs-footer-newsletter__form,
.bs-subscribe__form-wrap {
  max-width: 460px !important;
  width: 100% !important;
  margin: 0 auto !important;
}
.bs-subscribe__form-wrap {
  background: var(--bs-cream);
  padding: 18px 18px 14px !important;
  border: 1px solid var(--bs-ink-20);
}
.bs-subscribe__form-wrap iframe.beehiiv-embed {
  height: 360px !important;
}

/* Subscribe page 2-col grid balance: pull the form column tighter so it
   doesn't sit as a tall narrow block beside long copy. */
.bs-subscribe {
  grid-template-columns: 1.15fr 460px !important;
  align-items: start !important;
}
@media (max-width: 980px) {
  .bs-subscribe { grid-template-columns: 1fr !important; }
}

/* Newsletter page (4182) hero: same tightening for the form column. */
.bs-nl__hero {
  align-items: start;
}
.bs-nl__form {
  background: var(--bs-cream);
  padding: 18px 18px 14px;
  border: 1px solid var(--bs-ink-20);
}

/* ── Strip any residual legacy block styling that survives the_content
       filter (defence-in-depth for visual breakage). ── */
.single-post .entry-content .bf-author-card,
.single-post .entry-content [class*="has-pale-cyan-blue-background"],
.single-post .entry-content [style*="background:#f8f5f0"][style*="border:2px solid #8B7355"] {
  display: none !important;
}

/* ── Better Astra defaults inside .entry-content for legacy news posts:
       paragraph spacing, list bullets, blockquote, sources H3. ── */
.single-post .entry-content p {
  margin: 0 0 1.1em;
  font-family: var(--bs-serif);
  font-size: 1.18rem;
  line-height: 1.65;
  color: var(--bs-ink);
}
.single-post .entry-content ul,
.single-post .entry-content ol {
  font-family: var(--bs-serif);
  font-size: 1.1rem;
  line-height: 1.6;
  color: var(--bs-ink);
  padding-left: 1.4em;
  margin: 0 0 1.2em;
}
.single-post .entry-content li { margin: 0.35em 0; }
.single-post .entry-content li::marker { color: var(--bs-earth); }

/* Sources list at the end of every news post — broadsheet treatment. */
.single-post .entry-content h3:has(+ ul) {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 13px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-top: 2em;
  margin-bottom: 0.4em;
  padding-top: 1em;
  border-top: 3px double var(--bs-ink-20);
}

/* Legacy news posts often have <h3>Sources</h3> immediately followed by
   a bullet list of source links. Style those links as muted inline refs. */
.single-post .entry-content h3 + ul,
.single-post .entry-content h3 + ol {
  list-style: none;
  padding-left: 0;
  font-size: 0.95rem;
}
.single-post .entry-content h3 + ul li,
.single-post .entry-content h3 + ol li {
  padding: 6px 0;
  border-bottom: 1px dotted var(--bs-ink-20);
  font-family: var(--bs-sans);
  color: var(--bs-ink-70);
}
.single-post .entry-content h3 + ul li::before,
.single-post .entry-content h3 + ol li::before {
  content: "— ";
  color: var(--bs-ink-50);
  font-family: var(--bs-mono);
  margin-right: 4px;
}

/* Inline images centred with cream caption */
.single-post .entry-content img {
  max-width: 100%;
  height: auto;
  border-radius: 0;
}

/* Strong / em — broadsheet emphasis */
.entry-content strong { color: var(--bs-ink); font-weight: 600; }
.entry-content em { font-style: italic; }

/* Blockquote — broadsheet pullquote treatment. Already in PHASE B for
   .single-post; replicate for pages. */
.page .entry-content blockquote {
  border-left: 4px solid var(--bs-earth);
  background: var(--bs-cream);
  padding: 18px 22px;
  margin: 24px 0;
  font-style: italic;
  font-family: var(--bs-serif);
  font-size: 1.25rem;
  line-height: 1.4;
  letter-spacing: -0.01em;
}

/* Topic guide pages (4394, 4431, 4454, 4455) — these have a long Spectra
   block layout. Force broadsheet headings + measure inside their content. */
.page-id-4394 .entry-content,
.page-id-4431 .entry-content,
.page-id-4454 .entry-content,
.page-id-4455 .entry-content {
  max-width: 820px;
  margin: 0 auto;
}
.page-id-4394 .entry-content h2,
.page-id-4431 .entry-content h2,
.page-id-4454 .entry-content h2,
.page-id-4455 .entry-content h2 {
  border-top: 3px double var(--bs-ink-20);
  padding-top: 1.2em;
  margin-top: 1.8em;
}

/* === PHASE I/2 — Astra customizer related-posts dark green strip override.
       The "Single Post Related Posts Container" customizer setting was
       saved with #122B1C background. Override to paper-alt with broadsheet
       typography on titles + meta. === */
.ast-single-related-posts-container,
.ast-related-posts-wrapper,
.ast-related-posts-inner-section,
.ast-related-post,
.ast-related-post-content {
  background: var(--bs-paper-alt) !important;
  background-color: var(--bs-paper-alt) !important;
  color: var(--bs-ink) !important;
}
.ast-single-related-posts-container {
  padding: 32px 28px !important;
  border-top: 1px solid var(--bs-ink-20) !important;
  border-bottom: 1px solid var(--bs-ink-20) !important;
}
.ast-related-posts-title-section .ast-related-posts-title,
.ast-related-posts-title {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 1.6rem !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.02em !important;
  margin-bottom: 18px !important;
}
.ast-related-post-title,
.ast-related-post-title a {
  font-family: var(--bs-serif) !important;
  font-weight: 600 !important;
  font-size: 1.2rem !important;
  color: var(--bs-ink) !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
}
.ast-related-post-meta,
.ast-related-post-meta a,
.ast-related-post-meta time,
.ast-related-post-meta .ast-related-post-categories,
.ast-related-post-meta .ast-related-post-author {
  font-family: var(--bs-mono) !important;
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
}
.ast-related-post-meta a:hover { color: var(--bs-earth) !important; }

/* Disable Astra dark-mode CSS variables that may still apply */
:root,
.astra-dark-mode-enable,
body.astra-dark-mode-enable {
  --ast-global-color-7: var(--bs-paper) !important;
  --ast-global-color-6: var(--bs-paper-alt) !important;
  --ast-global-color-5: var(--bs-paper) !important;
  --ast-global-color-4: var(--bs-ink) !important;
}

/* Defensive override: any element previously inheriting #122B1C bg from
   customizer reverts to paper. */
[style*="background-color:#122B1C"],
[style*="background-color: #122B1C"],
[style*="background:#122B1C"],
[style*="background: #122B1C"] {
  background: var(--bs-paper-alt) !important;
  color: var(--bs-ink) !important;
}

/* ============================================================
   PHASE J — Latest archive + Beehiiv double-box fix (2026-04-29)
   ============================================================ */

/* --- Beehiiv double-box: the iframe ships with its own internal white
       form card. Adding our own cream wrapper around it produced a
       "white box inside a cream box" effect. Remove the wrapper bg/
       border so only the iframe's natural form is visible. --- */
.bs-subscribe__form-wrap,
.bs-nl__form,
.bs-footer-newsletter__form {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}

/* Astra wraps post page content in a card with white background by default.
   Force the page-template content area to paper too, so the Subscribe page
   form section sits on cream-paper, not white-card. */
body.page-id-4469 .ast-article-inner,
body.page-id-4469 .ast-article-single,
body.page-id-4182 .ast-article-inner,
body.page-id-4182 .ast-article-single,
body.page-id-5561 .ast-article-inner,
body.page-id-5561 .ast-article-single {
  background: var(--bs-paper) !important;
  box-shadow: none !important;
  border: 0 !important;
  padding: 0 !important;
}

/* Beehiiv iframe sits flush. Slightly tighter height to remove leftover
   whitespace below the form. */
iframe.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  height: 360px !important;
  margin: 0 auto !important;
  display: block !important;
}

/* ============================================================
   Latest archive — broadsheet ruled stack
   ============================================================ */
.bs-latest {
  background: var(--bs-paper);
  color: var(--bs-ink);
  padding: 48px 40px 56px;
  max-width: 1100px;
  margin: 0 auto;
}
.bs-latest__hero { margin-bottom: 32px; }
.bs-latest__eyebrow {
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bs-latest__h1 {
  font-size: clamp(2.6rem, 5.2vw, 4.4rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.02 !important;
  color: var(--bs-ink) !important;
  margin: 0 0 18px !important;
  max-width: 780px;
}
.bs-latest__h1 em { font-style: italic; font-weight: 500; }
.bs-latest__lede {
  font-size: 1.2rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0 0 28px;
  font-style: italic;
  max-width: 720px;
}

.bs-latest__list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border-top: 3px double var(--bs-ink-20);
}
.bs-latest__row {
  display: grid !important;
  grid-template-columns: 130px 1fr 80px;
  gap: 28px;
  align-items: baseline;
  padding: 22px 0 !important;
  border-bottom: 1px solid var(--bs-ink-20);
  margin: 0 !important;
}
.bs-latest__row::before { content: none !important; }
.bs-latest__row::marker { content: none !important; }

.bs-latest__date {
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
  font-variant-numeric: tabular-nums;
  font-family: var(--bs-mono) !important;
  text-decoration: none !important;
  background: none !important;
  padding-top: 4px;
}
.bs-latest__date:hover { color: var(--bs-earth) !important; }
.bs-latest__main { min-width: 0; }
.bs-latest__tag {
  display: inline-block;
  font-size: 10px !important;
  color: var(--bs-earth) !important;
  font-weight: 700 !important;
  margin-bottom: 6px;
  text-decoration: none !important;
}
.bs-latest__title {
  font-family: var(--bs-serif) !important;
  font-size: 1.7rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.015em !important;
  line-height: 1.18 !important;
  margin: 0 0 8px !important;
  color: var(--bs-ink) !important;
}
.bs-latest__title a {
  color: var(--bs-ink) !important;
  text-decoration: none !important;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  transition: background-size 0.2s;
}
.bs-latest__title a:hover {
  background-size: 100% 1px;
  color: var(--bs-ink) !important;
}
.bs-latest__excerpt {
  font-family: var(--bs-serif) !important;
  font-size: 0.98rem !important;
  line-height: 1.5 !important;
  color: var(--bs-ink-70) !important;
  margin: 0 !important;
  max-width: 680px;
}
.bs-latest__mins {
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
  text-align: right;
  font-family: var(--bs-mono) !important;
  font-variant-numeric: tabular-nums;
}

.bs-latest__pagination {
  margin-top: 36px;
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}
.bs-latest__pg a,
.bs-latest__pg span {
  display: inline-block;
  padding: 8px 14px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid var(--bs-ink-20);
  text-decoration: none !important;
  font-family: var(--bs-sans) !important;
  background: none !important;
}
.bs-latest__pg a { color: var(--bs-ink) !important; }
.bs-latest__pg a:hover {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}
.bs-latest__pg .current {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
  border-color: var(--bs-ink);
}
.bs-latest__pg .dots { border: 0; color: var(--bs-ink-50) !important; }

@media (max-width: 760px) {
  .bs-latest { padding: 32px 20px 40px; }
  .bs-latest__row {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 18px 0 !important;
  }
  .bs-latest__date { padding-top: 0; }
  .bs-latest__mins { text-align: left; }
  .bs-latest__title { font-size: 1.45rem !important; }
  .bs-latest__h1 { font-size: 2.2rem !important; }
}

/* ============================================================
   PHASE K — Broadsheet archive template (category/tag/author/date/search)
   ============================================================ */

.bs-archive {
  background: var(--bs-paper);
  color: var(--bs-ink);
  padding: 48px 40px 56px;
  max-width: 1100px;
  margin: 0 auto;
}
.bs-archive__hero { margin-bottom: 32px; }
.bs-archive__eyebrow {
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth);
  margin-bottom: 14px;
}
.bs-archive__h1 {
  font-family: var(--bs-serif) !important;
  font-size: clamp(2.6rem, 5.2vw, 4.4rem) !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.02 !important;
  color: var(--bs-ink) !important;
  margin: 0 0 18px !important;
  max-width: 820px;
}
.bs-archive__h1 em { font-style: italic; font-weight: 500; }
.bs-archive__lede {
  font-family: var(--bs-serif);
  font-size: 1.2rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0 0 28px;
  font-style: italic;
  max-width: 720px;
}

.bs-archive__list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border-top: 3px double var(--bs-ink-20);
}
.bs-archive__row {
  display: grid !important;
  grid-template-columns: 130px 1fr 80px;
  gap: 28px;
  align-items: baseline;
  padding: 22px 0 !important;
  border-bottom: 1px solid var(--bs-ink-20);
  margin: 0 !important;
}
.bs-archive__row::before,
.bs-archive__row::marker { content: none !important; }

.bs-archive__date {
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
  font-variant-numeric: tabular-nums;
  font-family: var(--bs-mono) !important;
  text-decoration: none !important;
  background: none !important;
  padding-top: 4px;
}
.bs-archive__date:hover { color: var(--bs-earth) !important; }
.bs-archive__main { min-width: 0; }
.bs-archive__tag {
  display: inline-block;
  font-size: 10px !important;
  color: var(--bs-earth) !important;
  font-weight: 700 !important;
  margin-bottom: 6px;
  text-decoration: none !important;
}
.bs-archive__title {
  font-family: var(--bs-serif) !important;
  font-size: 1.7rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.015em !important;
  line-height: 1.18 !important;
  margin: 0 0 8px !important;
  color: var(--bs-ink) !important;
}
.bs-archive__title a {
  color: var(--bs-ink) !important;
  text-decoration: none !important;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  transition: background-size 0.2s;
}
.bs-archive__title a:hover {
  background-size: 100% 1px;
  color: var(--bs-ink) !important;
}
.bs-archive__excerpt {
  font-family: var(--bs-serif) !important;
  font-size: 0.98rem !important;
  line-height: 1.5 !important;
  color: var(--bs-ink-70) !important;
  margin: 0 !important;
  max-width: 680px;
}
.bs-archive__mins {
  font-size: 12px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
  text-align: right;
  font-family: var(--bs-mono) !important;
  font-variant-numeric: tabular-nums;
}

.bs-archive__pagination {
  margin-top: 36px;
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}
.bs-archive__pg a,
.bs-archive__pg span {
  display: inline-block;
  padding: 8px 14px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid var(--bs-ink-20);
  text-decoration: none !important;
  font-family: var(--bs-sans) !important;
  background: none !important;
}
.bs-archive__pg a { color: var(--bs-ink) !important; }
.bs-archive__pg a:hover {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
}
.bs-archive__pg .current {
  background: var(--bs-ink) !important;
  color: var(--bs-paper) !important;
  border-color: var(--bs-ink);
}
.bs-archive__pg .dots { border: 0; color: var(--bs-ink-50) !important; }

.bs-archive__empty {
  font-family: var(--bs-serif);
  font-size: 1.1rem;
  color: var(--bs-ink-50);
  font-style: italic;
  padding: 32px 0;
  border-top: 1px solid var(--bs-ink-20);
}

/* Astra's archive titlebar / page-title-wrap (the "News Archives" hero
   banner with drone + title overlay) — hide on archives now that we own
   the rendering. */
body.archive .ast-archive-description,
body.archive .ast-page-header,
body.archive .page-title-bar,
body.archive .ast-blog-featured-section,
body.search .ast-archive-description,
body.search .ast-page-header {
  display: none !important;
}

@media (max-width: 760px) {
  .bs-archive { padding: 32px 20px 40px; }
  .bs-archive__row {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 18px 0 !important;
  }
  .bs-archive__date { padding-top: 0; }
  .bs-archive__mins { text-align: left; }
  .bs-archive__title { font-size: 1.45rem !important; }
  .bs-archive__h1 { font-size: 2.2rem !important; }
}

/* === PHASE K/2 — Hide Astra archive hero banner === */
body.archive .ast-archive-entry-banner,
body.search .ast-archive-entry-banner,
.ast-archive-entry-banner {
  display: none !important;
}

/* ============================================================
   PHASE L — Pre-cutover fixes (2026-04-29)
   1. CRITICAL: kill word-break cascade collapsing post-grid layout
   2. Author page recent posts: render bs_post_grid as 3-up grid
   3. Newsletter empty space: cap min-height
   4. Knowledge Hub almanac: row layout + season links
   5. Beehiiv branding: CSS crop wrapper
   ============================================================ */

/* === 1. Word-break safety net — prevent any cascading rule from
       collapsing post titles into single-character columns === */
.bs-post-grid, .bs-post-grid *,
.uagb-post-grid, .uagb-post-grid *,
.entry-content, .entry-content *,
.bs-author-page__recent, .bs-author-page__recent *,
.bs-archive, .bs-archive *,
.bs-latest, .bs-latest * {
  word-break: normal !important;
  overflow-wrap: anywhere !important;
  white-space: normal !important;
}

/* Restore nowrap where it's intentional (ticker, mono dates, deadline) */
.bs-topstrip__markets .bs-ticker,
.bs-topstrip__markets .bs-tick,
.bs-deadline-strap__remain,
.bs-deadline-strap__cta,
.bs-topstrip__cta,
.bs-archive__date,
.bs-archive__mins,
.bs-latest__date,
.bs-latest__mins {
  white-space: nowrap !important;
}

/* === 2. Author page Recent — render bs_post_grid as 3-up cards === */
.bs-author-page__recent {
  margin-top: 32px;
  padding-top: 28px;
  border-top: 3px double var(--bs-ink-20);
}
.bs-author-page__recent h3 {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 14px;
  font-weight: 700;
  color: var(--bs-earth);
  margin: 0 0 24px;
}
.bs-author-page__recent .bs-post-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  list-style: none;
  padding: 0;
  margin: 0;
}
.bs-author-page__recent .bs-post-grid__item {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none;
}
.bs-author-page__recent .bs-post-grid__media {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--bs-paper-alt);
  margin-bottom: 14px;
}
.bs-author-page__recent .bs-post-grid__media img,
.bs-author-page__recent .bs-post-grid__img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
.bs-author-page__recent .bs-post-grid__body { min-width: 0; }
.bs-author-page__recent .bs-post-grid__tag {
  font-family: var(--bs-sans) !important;
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px !important;
  font-weight: 700 !important;
  color: var(--bs-earth) !important;
  text-decoration: none !important;
  margin-bottom: 6px;
  display: inline-block;
}
.bs-author-page__recent .bs-post-grid__title {
  font-family: var(--bs-serif) !important;
  font-size: 1.25rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.015em !important;
  line-height: 1.2 !important;
  margin: 0 0 8px !important;
  color: var(--bs-ink) !important;
}
.bs-author-page__recent .bs-post-grid__title a {
  color: var(--bs-ink) !important;
  text-decoration: none !important;
}
.bs-author-page__recent .bs-post-grid__excerpt {
  font-family: var(--bs-serif) !important;
  font-size: 0.95rem !important;
  line-height: 1.5 !important;
  color: var(--bs-ink-70) !important;
  margin: 0 0 8px !important;
}
.bs-author-page__recent .bs-post-grid__meta,
.bs-author-page__recent .bs-post-grid__meta time {
  font-family: var(--bs-mono) !important;
  font-size: 11px !important;
  color: var(--bs-ink-50) !important;
  letter-spacing: 0.04em !important;
}
@media (max-width: 760px) {
  .bs-author-page__recent .bs-post-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

/* === 3. Newsletter page (4182): kill artificial bottom space === */
body.page-id-4182 .entry-content,
body.page-id-4182 .ast-article-inner {
  min-height: auto !important;
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}
body.page-id-4182 .bs-nl > section:last-child {
  padding-bottom: 24px !important;
}

/* === 4. Knowledge Hub almanac: ensure 4-col rows render with space
       for season links === */
.bs-kh-almanac {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 3px double var(--bs-ink-20);
}
.bs-kh-almanac > div {
  padding: 22px 22px 22px 0;
  border-right: 1px solid var(--bs-ink-20);
}
.bs-kh-almanac > div:last-child { border-right: 0; padding-right: 0; }
.bs-kh-almanac > div:not(:first-child) { padding-left: 22px; }
.bs-kh-almanac__season {
  font-family: var(--bs-serif) !important;
  font-style: italic;
  font-weight: 600;
  font-size: 1.7rem;
  letter-spacing: -0.02em;
  color: var(--bs-ink);
  margin: 0 0 4px;
}
.bs-kh-almanac__range {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 10px;
  color: var(--bs-ink-50);
  margin-bottom: 10px;
}
.bs-kh-almanac__body {
  font-family: var(--bs-serif);
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--bs-ink-70);
  margin: 0 0 14px;
}
.bs-kh-almanac__cta {
  font-family: var(--bs-sans);
  font-variant: all-small-caps;
  letter-spacing: 0.14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--bs-earth) !important;
  text-decoration: none !important;
}
.bs-kh-almanac__cta:hover { color: var(--bs-ink) !important; }
@media (max-width: 760px) {
  .bs-kh-almanac { grid-template-columns: 1fr 1fr; }
  .bs-kh-almanac > div:nth-child(2n) { border-right: 0; }
}
@media (max-width: 480px) {
  .bs-kh-almanac { grid-template-columns: 1fr; }
  .bs-kh-almanac > div { border-right: 0; border-bottom: 1px solid var(--bs-ink-20); padding: 18px 0; }
}

/* === 5. Beehiiv branding crop. Wrap iframe in .beehiiv-embed-wrapper
       and crop bottom ~24px where Beehiiv renders the "Powered by"
       attribution.  Iframe is taller than wrapper; overflow hides the
       bottom strip. === */
.beehiiv-embed-wrapper {
  position: relative;
  overflow: hidden;
  height: 320px;
  background: transparent;
}
.beehiiv-embed-wrapper iframe.beehiiv-embed,
.beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
  width: 100% !important;
  height: 360px !important;
  border: 0 !important;
  display: block !important;
  margin: 0 !important;
}
/* Hide our manual "Powered by Beehiiv" subtitle since the iframe was
   the source of branding and it's now cropped. */
.bs-subscribe__note { display: none !important; }

/* === PHASE L/2 — text-form stats sizing (About page Independent/Free) === */
.bs-about-numbers__n--text {
  font-family: var(--bs-serif) !important;
  font-style: italic;
  font-size: 1.6rem !important;
  letter-spacing: -0.01em;
  line-height: 1.1;
}

/* Bust kh-stats transient so the live counts re-render too */

/* === PHASE L/3 — bs-post-grid item override inside author/about contexts.
       Stock .bs-post-grid__item is a 2-col grid (140px image + body).
       Inside .bs-author-page__recent (3-up cards), force flow layout so
       image stacks above body. === */
.bs-author-page__recent .bs-post-grid__item {
  display: block !important;
  grid-template-columns: none !important;
}
.bs-author-page__recent .bs-post-grid__body {
  width: 100% !important;
  min-width: 0 !important;
}

/* === PHASE L/4 — kill legacy .bs-author-page__recent a {display:grid}.
       That selector targeted ALL <a> tags inside the recent block,
       including the bs-post-grid title links, forcing them into a
       3-col 80px/1fr/160px grid that collapsed each letter to a column.
       Force inline display on every <a> inside post-grid items. === */
.bs-author-page__recent .bs-post-grid a,
.bs-author-page__recent .bs-post-grid__media,
.bs-author-page__recent .bs-post-grid__title a,
.bs-author-page__recent .bs-post-grid__tag {
  display: inline !important;
  grid-template-columns: none !important;
  grid: none !important;
}
.bs-author-page__recent .bs-post-grid__media {
  display: block !important;
}
.bs-author-page__recent .bs-post-grid__title {
  display: block !important;
}

/* === PHASE L/5 — author recent card image height cap === */
.bs-author-page__recent .bs-post-grid__media {
  aspect-ratio: 4 / 3 !important;
  max-height: 200px !important;
  margin-bottom: 14px !important;
}
.bs-author-page__recent .bs-post-grid__item {
  display: flex !important;
  flex-direction: column;
}

/* === PHASE M — Tim portrait wiring (2026-04-29) === */
/* Author page portrait */
.bs-author-page__photo {
  overflow: hidden;
  background: var(--bs-paper-alt);
  border: 1px solid var(--bs-ink-20);
  aspect-ratio: 1 / 1;
}
.bs-author-page__photo img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
/* Author page stats text-form (Independent / Free) */
.bs-author-page__stats .n--text {
  font-family: var(--bs-serif) !important;
  font-style: italic;
  font-size: 1.5rem !important;
  letter-spacing: -0.01em;
  line-height: 1.1;
}
/* Home editor block portrait — was a 180px round container; ensure img
   fills cleanly. */
.bs-home__editor-portrait {
  overflow: hidden;
}
.bs-home__editor-portrait img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
/* Single-post avatar (article-broadsheet.php → .bs-author-card__avatar)
   already has proper container; just ensure object-fit. */
.bs-author-card__avatar img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* === PHASE N — Mobile fixes for Tim Harfield + Subscribe (2026-04-29) === */

/* Tim Harfield page: header (photo + bio) and inner sections (About + Beats)
   are 2-col grids on desktop. Force single column on tablet/mobile so text
   columns dont collapse to letter-stacks. AgentOs/ Downloads/ GSC/ SoloTax-AI/ ai-learning-system/ bf-community/ bf-debug/ bf-deploy/ bf-full/ bf-full2/ bf-mu-fixer/ bf-newsletter-signup/ bf-single/ bf-test/ bf-test2/ bf-test3-fix/ bf-test3/ bf-test4/ bf-test5/ bf-test6/ bfc-all-empty/ bfc-all/ bfc-core/ bfc-core2/ bfc-live/ bfc-plugin/ bin/ ccmem/ claude-code-leaked/ fieldproof/ gsc-reports/ maximusdev/ n8n/ new-design/ nole-code-v2/ nole-code/ nole-demo/ nole-upgrade/ openclaw-api/ skillcheck-dev/ staging-after-fixes/ staging-round2/ tmp-theme-fix-plugin/ traceseal-langchain/ traceseal-observe/ traceseal-verify/ yoast/

/* === PHASE N — Mobile fixes for Tim Harfield + Subscribe (2026-04-29) === */

/* Tim Harfield page: header (photo + bio) and inner sections (About + Beats)
   are 2-col grids on desktop. Force single column on tablet/mobile so text
   columns don't collapse to letter-stacks. */
@media (max-width: 880px) {
  .bs-author-page__header {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
    padding: 24px 20px !important;
  }
  .bs-author-page__photo {
    max-width: 240px !important;
    margin: 0 auto 8px !important;
    aspect-ratio: 1 / 1 !important;
  }
  .bs-author-page__bio h1 {
    font-size: 2.4rem !important;
    line-height: 1.05 !important;
  }
  .bs-author-page__stats {
    grid-template-columns: 1fr 1fr !important;
    gap: 14px !important;
  }
  .bs-author-page > section[style*="grid-template-columns"] {
    display: block !important;
  }
  .bs-author-page > section[style*="grid-template-columns"] > div {
    border-right: 0 !important;
    border-bottom: 1px solid var(--bs-ink-20);
    padding: 28px 20px !important;
  }
  .bs-author-page > section[style*="grid-template-columns"] > div:last-child {
    border-bottom: 0;
  }
}
@media (max-width: 480px) {
  .bs-author-page__bio h1 {
    font-size: 2rem !important;
  }
  .bs-author-page__stats {
    grid-template-columns: 1fr !important;
  }
  .bs-author-page__stats > div {
    border-right: 0 !important;
    border-bottom: 1px solid var(--bs-ink-20);
    padding: 12px 0 !important;
  }
}

/* Subscribe / Newsletter Beehiiv wrapper: on mobile, the 320px wrapper
   crop hides the Subscribe button because the form re-flows taller.
   Lift the crop on small screens — keep the form fully usable. */
@media (max-width: 760px) {
  .beehiiv-embed-wrapper {
    height: 460px !important;
    overflow: visible !important;
  }
  .beehiiv-embed-wrapper iframe.beehiiv-embed,
  .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
    height: 460px !important;
  }
  .bs-subscribe {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    padding: 28px 20px !important;
  }
  .bs-subscribe__h1 {
    font-size: 2.2rem !important;
  }
  .bs-subscribe__strip {
    gap: 16px !important;
    flex-wrap: wrap !important;
  }
  .bs-subscribe__strip > div {
    min-width: 45%;
  }
  .bs-nl__hero {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    padding: 28px 20px !important;
  }
  .bs-nl__hero h1 {
    font-size: 2.2rem !important;
  }
  .bs-nl__details {
    grid-template-columns: 1fr 1fr !important;
    gap: 18px !important;
    padding: 0 20px !important;
  }
}

/* === PHASE N/2 — Beehiiv mobile height bump.
       At 390px the Beehiiv form re-flows description across many lines,
       pushing the email field + Subscribe button off-screen. Need more
       height. === */
@media (max-width: 760px) {
  .beehiiv-embed-wrapper {
    height: auto !important;
    min-height: 560px !important;
    overflow: visible !important;
  }
  .beehiiv-embed-wrapper iframe.beehiiv-embed,
  .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
    height: 560px !important;
  }
}
@media (max-width: 480px) {
  .beehiiv-embed-wrapper {
    min-height: 600px !important;
  }
  .beehiiv-embed-wrapper iframe.beehiiv-embed,
  .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
    height: 600px !important;
  }
}

/* === PHASE N/3 — Beehiiv: trust Beehiiv's auto-sized inline height,
       just give the wrapper enough vertical room and disable our
       crop-wrapper hard heights. The Subscribe button used to be
       hidden because we forced 360px on the iframe; Beehiiv reports
       its own correct height (~543px on mobile, ~360px on desktop)
       via embed.js — let it.
   === */
.beehiiv-embed-wrapper {
  height: auto !important;
  min-height: 0 !important;
  overflow: visible !important;
}
.beehiiv-embed-wrapper iframe.beehiiv-embed,
.beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
  height: auto !important;
  min-height: 360px !important;
  width: 100% !important;
  display: block !important;
  border: 0 !important;
}
/* Hide our manual "Powered by Beehiiv" subtitle (kept hidden). */
.bs-subscribe__note { display: none !important; }

/* === PHASE N/4 — final Beehiiv override.
       PHASE A/B set max-height: 360px on every Beehiiv iframe, capping
       all later rules. Lift the max-height and let the iframe use its
       inline JS-reported height (Beehiiv knows its form size). === */
.beehiiv-embed-wrapper,
.bs-subscribe__form-wrap,
.bs-nl__form,
.bs-footer-newsletter__form,
iframe.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  max-height: none !important;
}
.beehiiv-embed-wrapper iframe.beehiiv-embed,
.beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"] {
  height: auto !important;
  max-height: none !important;
  min-height: 360px !important;
}
.beehiiv-embed-wrapper {
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: visible !important;
}

/* === PHASE N/5 — stop fighting Beehiiv's inline height.
       Beehiiv's embed.js sets style="height: 543px" inline on the
       iframe. Our `height: auto !important` was beating that and
       falling back to default ~150 + min-height 360 = 360. Drop the
       height/min-height/max-height rules entirely so inline wins. === */
.beehiiv-embed-wrapper iframe.beehiiv-embed,
.beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"],
iframe.beehiiv-embed,
iframe[src*="subscribe-forms.beehiiv.com"] {
  height: revert !important;
  min-height: revert !important;
  max-height: none !important;
  width: 100% !important;
  border: 0 !important;
  display: block !important;
}
.beehiiv-embed-wrapper {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
}

/* === PHASE N/6 — final fixed Beehiiv heights matching its natural form
       reflow at each breakpoint. Earlier phases have ~6 conflicting rules;
       this one wins because it appears LAST in the stylesheet with
       maximum-strength selectors and !important. === */
html body .beehiiv-embed-wrapper iframe.beehiiv-embed,
html body .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"],
html body iframe.beehiiv-embed,
html body iframe[src*="subscribe-forms.beehiiv.com"] {
  height: 380px !important;
  min-height: 380px !important;
  max-height: none !important;
  width: 100% !important;
  border: 0 !important;
  display: block !important;
}
html body .beehiiv-embed-wrapper {
  height: 380px !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: hidden !important;
}
@media (max-width: 760px) {
  html body .beehiiv-embed-wrapper iframe.beehiiv-embed,
  html body .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"],
  html body iframe.beehiiv-embed,
  html body iframe[src*="subscribe-forms.beehiiv.com"] {
    height: 580px !important;
    min-height: 580px !important;
  }
  html body .beehiiv-embed-wrapper {
    height: 540px !important;     /* slight crop of Beehiiv branding line */
    overflow: hidden !important;
  }
}
@media (max-width: 480px) {
  html body .beehiiv-embed-wrapper iframe.beehiiv-embed,
  html body .beehiiv-embed-wrapper iframe[src*="subscribe-forms.beehiiv.com"],
  html body iframe.beehiiv-embed,
  html body iframe[src*="subscribe-forms.beehiiv.com"] {
    height: 620px !important;
    min-height: 620px !important;
  }
  html body .beehiiv-embed-wrapper {
    height: 580px !important;
  }
}

/* ============================================================
   PHASE O — Sitewide image-fit normalisation (2026-04-29)
   Applies the homepage lead-image padding-trick fix to every image
   slot that suffers Astra entry-content aspect-ratio clobbering.
   ============================================================ */

/* Single-post featured image hero (Astra .post-thumb-img-content) */
.single-post .post-thumb-img-content,
.single-post .ast-blog-featured-section,
.single-post .ast-blog-featured-section a {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  height: 0 !important;
  padding-top: 52.5% !important; /* 1200:630 native ratio of BritFarmers featured images */
  aspect-ratio: auto !important;
  overflow: hidden !important;
  background: var(--bs-paper-alt);
  margin: 0 0 28px !important;
}
.single-post .post-thumb-img-content > a,
.single-post .ast-blog-featured-section > a,
.single-post .post-thumb-img-content > .wp-post-image,
.single-post .post-thumb-img-content > img,
.single-post .ast-blog-featured-section img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* Related posts strip card thumbnails */
.ast-related-post-featured-section,
.ast-related-post-featured-section .post-thumb-img-content,
.ast-related-post-featured-section a {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  height: 0 !important;
  padding-top: 52.5% !important;
  aspect-ratio: auto !important;
  overflow: hidden !important;
  background: var(--bs-paper-alt);
  margin: 0 0 14px !important;
}
.ast-related-post-featured-section img,
.ast-related-post-featured-section .wp-post-image {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* Inline content images: keep their natural aspect, never stretched. */
.entry-content figure.wp-block-image img,
.entry-content > p img,
.entry-content img:not(.bs-post-grid__img):not(.wp-post-image) {
  max-width: 100% !important;
  height: auto !important;
  object-fit: contain !important;
  display: block !important;
  margin: 0 auto !important;
}

/* Caption styling — keep figure caption tight */
.entry-content figure.wp-block-image figcaption {
  font-family: var(--bs-mono);
  font-size: 11px;
  color: var(--bs-ink-50);
  background: var(--bs-cream);
  padding: 8px 12px;
  letter-spacing: 0.03em;
  margin-top: 6px;
}

/* Hide the noscript fallback img (LiteSpeed lazy-load already provides it) */
noscript img.wp-post-image,
noscript img.bs-post-grid__img,
noscript img.bs-home__lead-img,
noscript img.bs-home__three-img {
  display: none !important;
}

/* Defensive: avoid duplicated lazy/noscript renders that Tim flagged */
.bs-home__lead-photo > noscript,
.bs-home__three-photo > noscript,
.bs-author-page__photo > noscript,
.beehiiv-embed-wrapper > noscript {
  display: none !important;
}
