/* Fitness Equipment Executive | Article typography */
@import url('https://fonts.googleapis.com/css2?family=Jost:wght@400;500;600;700;800&family=Libre+Franklin:wght@400;500;600;700;800&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600;6..72,700;6..72,800&display=swap');

body.single-post .s-title {
  font-family: 'Newsreader', Georgia, serif !important;
  font-weight: 700 !important;
  letter-spacing: -.035em !important;
  line-height: 1.02 !important;
}
body.single-post .s-tagline {
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 23px !important;
  font-weight: 400 !important;
  line-height: 1.48 !important;
}
body.single-post .entry-content {
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 20px !important;
  font-weight: 400;
  line-height: 1.72 !important;
  color: #202221;
}
body.single-post .entry-content > p:first-child {
  color: #111312;
  font-size: 23px !important;
  font-weight: 500;
  line-height: 1.58 !important;
}
body.single-post .entry-content h2,
body.single-post .entry-content h3,
body.single-post .ruby-table-contents {
  font-family: 'Libre Franklin', 'Jost', sans-serif !important;
}
body.single-post .entry-content h2 {
  border-top: 2px solid #050505;
  font-weight: 800 !important;
  letter-spacing: -.035em !important;
  line-height: 1.16 !important;
  margin-bottom: 20px !important;
  margin-top: 52px !important;
  padding-top: 20px;
  position: relative;
  scroll-margin-top: 118px;
}
body.single-post .entry-content h2::before {
  background: #c2ff74;
  content: "";
  height: 8px;
  left: 0;
  position: absolute;
  top: -5px;
  width: 58px;
}
body.single-post .ruby-table-contents {
  background: #f2f4ee !important;
  border: 0 !important;
  border-top: 6px solid #050505 !important;
  box-shadow: none !important;
  margin: 36px 0 44px !important;
  padding: 26px 28px 24px !important;
}
body.single-post .ruby-table-contents .toc-header {
  align-items: center;
  border-bottom: 2px solid #050505;
  display: flex;
  gap: 12px;
  margin: 0 0 5px;
  padding: 0 0 15px;
}
body.single-post .ruby-table-contents .toc-header > i {
  align-items: center;
  background: #c2ff74;
  display: inline-flex;
  height: 36px;
  justify-content: center;
  width: 36px;
}
body.single-post .ruby-table-contents .toc-header .h3 {
  font-size: 36px !important;
  font-weight: 800 !important;
  letter-spacing: -.035em;
  line-height: 1.08 !important;
}
body.single-post .ruby-table-contents .toc-toggle {
  align-items: center;
  display: inline-flex;
  justify-content: center;
  margin-left: auto;
  min-height: 44px;
  min-width: 44px;
}
body.single-post .ruby-table-contents .toc-content {
  column-count: 2;
  column-gap: 32px;
  font-size: 22px !important;
  line-height: 1.36 !important;
  list-style: none;
  margin: 0;
  padding: 0;
}
body.single-post .ruby-table-contents .toc-content li {
  border-bottom: 1px solid rgba(5, 5, 5, .18);
  break-inside: avoid;
  margin: 0 !important;
  padding: 13px 0;
}
body.single-post .ruby-table-contents .toc-content a {
  color: #050505;
  display: block;
  font-size: 22px !important;
  font-weight: 600;
  line-height: inherit !important;
  padding: 0 !important;
  text-decoration: none;
}
body.single-post .ruby-table-contents .toc-content a:hover {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}
body.single-post .ruby-table-contents .toc-content a:focus-visible {
  outline: 3px solid #050505;
  outline-offset: 3px;
}

/* Keyboard-first article access: visible only when the reader requests it. */
body.single-post .fex-skip-article {
  background: #050505;
  border: 3px solid #c2ff74;
  color: #fff !important;
  font-size: 15px;
  font-weight: 800;
  left: 18px;
  letter-spacing: .02em;
  line-height: 1;
  padding: 14px 18px;
  position: fixed;
  text-decoration: none;
  top: 16px;
  transform: translateY(calc(-100% - 32px));
  transition: transform .15s ease;
  z-index: 2147483001;
}
body.single-post .fex-skip-article:focus {
  color: #fff !important;
  outline: 3px solid #fff;
  outline-offset: 2px;
  transform: translateY(0);
}
body.single-post.admin-bar .fex-skip-article {
  top: 48px;
}
body.single-post .entry-content#fex-article-content {
  scroll-margin-top: 110px;
}
@media screen and (max-width: 782px) {
  body.single-post.admin-bar .fex-skip-article { top: 62px; }
}
@media (prefers-reduced-motion: reduce) {
  body.single-post .fex-skip-article { transition: none; }
}
@media print {
  body.single-post .fex-skip-article { display: none; }
}

/* Long-form reading progress: persistent, unobtrusive, and accessible. */
body.single-post .fex-reading-progress {
  background: rgba(5, 5, 5, .18);
  height: 4px;
  left: 0;
  pointer-events: none;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 2147483000;
}
body.single-post.admin-bar .fex-reading-progress {
  top: 32px;
}
body.single-post .fex-reading-progress__bar {
  background: #c2ff74;
  display: block;
  height: 100%;
  transform: scaleX(0);
  transform-origin: left center;
  width: 100%;
}
@media screen and (max-width: 782px) {
  body.single-post.admin-bar .fex-reading-progress { top: 46px; }
}
@media print {
  body.single-post .fex-reading-progress { display: none; }
}

/* Lead image: a precise editorial frame with keyboard-accessible enlargement. */
body.single-post .s-feat-outer {
  border-bottom: 10px solid #050505;
  border-top: 3px solid #050505;
  position: relative;
}
body.single-post .s-feat-outer::after {
  background: #c2ff74;
  bottom: -10px;
  content: "";
  height: 10px;
  left: 0;
  pointer-events: none;
  position: absolute;
  width: 22%;
  z-index: 2;
}
body.single-post .s-feat-outer .s-feat,
body.single-post .s-feat-outer .featured-lightbox-trigger {
  height: 100%;
}
body.single-post .s-feat-outer .featured-lightbox-trigger {
  cursor: zoom-in;
}
/* Hero crop. The frame is a 45% ratio box (2.2:1) and every featured image is
   1200x800 (3:2), so object-fit: cover discards 32.5% of the image height. Centered,
   that takes 130px off the top — exactly where faces sit in these photographs. Biasing
   the window to 28% cuts ~73px instead, restoring headroom above the subject. */
body.single-post .s-feat-outer .wp-post-image {
  display: block;
  height: 100%;
  object-fit: cover;
  object-position: 50% 28%;
  width: 100%;
}
/* Per-post override — WordPress puts postid-<ID> on the body element. To nudge one
   article without touching the rest, copy this line and change the ID and the second
   value (lower shows more of the top of the frame):
   body.postid-184 .s-feat-outer .wp-post-image { object-position: 50% 18%; } */
body.single-post .s-feat-outer .featured-lightbox-trigger:focus-visible {
  box-shadow: 0 0 0 6px #c2ff74;
  outline: 3px solid #050505;
  outline-offset: 3px;
}

/* Article opening: compact executive metadata and purposeful sharing controls. */
body.single-post .single-header {
  border-bottom: 3px solid #050505 !important;
  padding-bottom: 18px;
}
body.single-post .single-header .s-breadcrumb {
  color: #555;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif;
  font-size: 13px !important;
  font-weight: 600;
  line-height: 1.35 !important;
  margin-bottom: 18px !important;
}
body.single-post .single-header .s-breadcrumb a {
  color: #050505;
  text-decoration: none;
}
body.single-post .single-header .s-breadcrumb a:hover {
  text-decoration-color: #c2ff74;
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 3px;
}
body.single-post .single-header .p-category {
  font-size: 12px !important;
  font-weight: 800 !important;
  letter-spacing: .065em;
  line-height: 1.2 !important;
  padding: 6px 10px !important;
}
body.single-post .single-header .single-meta {
  border-top: 2px solid #050505 !important;
  flex-direction: row !important;
  gap: 24px;
  justify-content: space-between !important;
  margin-bottom: 0 !important;
  min-height: 78px;
  padding: 15px 0 0 !important;
}
body.single-post .single-header .smeta-in {
  flex: 1 1 auto;
  min-width: 0;
  width: auto !important;
}
body.single-post .single-header .meta-avatar,
body.single-post .single-header .meta-avatar img {
  height: 56px !important;
  width: 56px !important;
}
body.single-post .single-header .smeta-sec {
  width: auto !important;
}
body.single-post .single-header .meta-author {
  color: #050505;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
}
body.single-post .single-header .smeta-bottom {
  color: #555;
  font-size: 12px !important;
  line-height: 1.4 !important;
}
body.single-post .single-header .smeta-extra {
  flex: 0 0 auto;
  gap: 14px;
  justify-content: flex-end;
  width: auto !important;
}
body.single-post .single-header .t-shared-sec {
  width: auto !important;
}
body.single-post .single-header .t-shared-sec .share-action {
  align-items: center;
  border: 1px solid rgba(5, 5, 5, .28);
  color: #050505;
  display: inline-flex;
  height: 44px;
  justify-content: center;
  line-height: 44px;
  min-width: 44px;
}
body.single-post .single-header .t-shared-sec .share-action:hover,
body.single-post .single-header .t-shared-sec .share-action:focus-visible {
  background: #c2ff74;
  border-color: #050505;
  color: #050505;
  outline: 0;
}
body.single-post .single-header .single-time-read {
  border-left: 1px solid rgba(5, 5, 5, .32);
  margin-left: 2px;
  padding-left: 16px;
}
body.single-post .single-header .single-time-read .meta-read {
  color: #050505;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .055em;
  text-transform: uppercase;
}

/* Article trust cue: a direct path from the byline to FEX reporting standards. */
body.single-post .fex-article-trust {
  align-items: center;
  background: #fff;
  border-bottom: 1px solid rgba(5, 5, 5, .24);
  color: #343633;
  display: flex;
  font-family: 'Libre Franklin', 'Jost', sans-serif;
  font-size: 12px;
  gap: 18px;
  justify-content: space-between;
  line-height: 1.45;
  margin-top: 12px;
  padding: 10px 0 12px;
}
body.single-post .fex-article-trust__message {
  align-items: center;
  display: flex;
  gap: 10px;
  min-width: 0;
}
body.single-post .fex-article-trust__message::before {
  background: #ff9f1c;
  content: "";
  flex: 0 0 30px;
  height: 6px;
}
body.single-post .fex-article-trust__message strong {
  color: #050505;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}
body.single-post .fex-article-trust a {
  align-items: center;
  color: #050505 !important;
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 12px;
  font-weight: 800;
  min-height: 44px;
  text-decoration: underline;
  text-decoration-color: #ff9f1c;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  white-space: nowrap;
}
body.single-post .fex-article-trust a:hover {
  text-decoration-thickness: 4px;
}
body.single-post .fex-article-trust a:focus-visible {
  outline: 3px solid #050505;
  outline-offset: 3px;
}
@media (max-width: 767px) {
  body.single-post .fex-article-trust {
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
    padding: 13px 0 12px;
  }
  body.single-post .fex-article-trust__message {
    align-items: flex-start;
    flex-wrap: wrap;
  }
  body.single-post .fex-article-trust__message::before {
    margin-top: 6px;
  }
}

/* Reading column: remove the redundant sticky share rail and restore true centering. */
body.single-post .l-shared-sec-outer {
  display: none !important;
}
body.single-post .s-ct-wrap.has-lsl .s-ct-inner {
  justify-content: center;
}
body.single-post .e-ct-outer {
  flex: 0 1 1020px;
  margin-left: auto;
  margin-right: auto;
  max-width: 1020px;
  width: min(1020px, 100%);
}
body.single-post .e-ct-outer .entry-content {
  max-width: 1020px;
  width: 100%;
}
body.single-post .s-ct-wrap.has-lsl .e-ct-outer {
  max-width: 1020px;
}

/* Magazine measure: prose holds a disciplined reading column, evidence breaks out wider.
   The page reads large without asking the eye to track 90 characters back to the margin. */
body.single-post .entry-content > p,
body.single-post .entry-content > h2,
body.single-post .entry-content > h3,
body.single-post .entry-content > h4,
body.single-post .entry-content > ul,
body.single-post .entry-content > ol,
body.single-post .entry-content > blockquote {
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: 680px;
}
body.single-post .entry-content > figure,
body.single-post .entry-content > table,
body.single-post .entry-content > .ruby-table-contents,
body.single-post .entry-content > .fex-executive-summary {
  margin-left: auto;
  margin-right: auto;
  max-width: 1020px;
  width: 100%;
}
/* Newsreader averages 0.4292em per character, so 680px at 24px lands at ~66 characters —
   the print-magazine measure. Scale comes from type size, not from a wider column. */
body.single-post .entry-content {
  font-size: 24px !important;
  line-height: 1.58 !important;
}
body.single-post .entry-content > p:first-child {
  font-size: 27px !important;
  line-height: 1.42 !important;
}
body.single-post .entry-content > table {
  border-collapse: collapse;
  display: table;
  font-family: 'Libre Franklin', Jost, sans-serif;
  font-size: 16px !important;
  line-height: 1.45;
}
/* Headings scale with the larger body so the hierarchy still reads at a 24px base. */
body.single-post .entry-content > h2 { font-size: 36px !important; }
body.single-post .entry-content > h3 { font-size: 27px !important; }

/* One grid, not two: the section rule runs the full 1020px column while the heading text
   stays on the 680px prose measure. Padding is derived, so it collapses cleanly as the
   viewport narrows and never needs a hardcoded offset. */
body.single-post .entry-content > h2 {
  max-width: 1020px;
  padding-left: max(0px, calc((100% - 680px) / 2));
  padding-right: max(0px, calc((100% - 680px) / 2));
}

@media (max-width: 1080px) {
  /* Evidence fills the viewport; the reading measure holds until it cannot. */
  body.single-post .entry-content > figure,
  body.single-post .entry-content > table,
  body.single-post .entry-content > .ruby-table-contents,
  body.single-post .entry-content > .fex-executive-summary {
    max-width: 100%;
  }
  body.single-post .entry-content > p,
  body.single-post .entry-content > h2,
  body.single-post .entry-content > h3,
  body.single-post .entry-content > h4,
  body.single-post .entry-content > ul,
  body.single-post .entry-content > ol,
  body.single-post .entry-content > blockquote {
    max-width: min(680px, 100%);
  }
  /* The rule keeps spanning the available column; its derived padding holds the text measure. */
  body.single-post .entry-content > h2 {
    max-width: 100%;
  }
}
@media (max-width: 900px) {
  body.single-post .entry-content {
    font-size: 22px !important;
    line-height: 1.6 !important;
  }
  body.single-post .entry-content > p:first-child {
    font-size: 25px !important;
  }
  body.single-post .entry-content > h2 { font-size: 33px !important; }
  body.single-post .entry-content > h3 { font-size: 25px !important; }
}
@media (max-width: 767px) {
  body.single-post .entry-content {
    font-size: 20px !important;
    line-height: 1.62 !important;
  }
  body.single-post .entry-content > p:first-child {
    font-size: 22px !important;
  }
  body.single-post .entry-content > h2 { font-size: 29px !important; }
  body.single-post .entry-content > h3 { font-size: 23px !important; }
  body.single-post .entry-content > table {
    display: block;
    overflow-x: auto;
    font-size: 15px !important;
  }
}

/* Editorial links: unmistakable, on-brand reading cues without changing destinations. */
body.single-post .entry-content > p a,
body.single-post .entry-content > ul a,
body.single-post .entry-content > ol a {
  color: #050505;
  font-weight: 700;
  text-decoration-color: #c2ff74;
  text-decoration-line: underline;
  text-decoration-skip-ink: auto;
  text-decoration-thickness: 3px;
  text-underline-offset: 3px;
}
body.single-post .entry-content > p a:hover,
body.single-post .entry-content > ul a:hover,
body.single-post .entry-content > ol a:hover {
  background-color: #c2ff74;
  color: #050505;
  text-decoration-color: #050505;
}
body.single-post .entry-content > p a:focus-visible,
body.single-post .entry-content > ul a:focus-visible,
body.single-post .entry-content > ol a:focus-visible {
  background-color: #c2ff74;
  color: #050505;
  outline: 3px solid #050505;
  outline-offset: 3px;
  text-decoration: none;
}

/* End-of-story handoff: share bar and related reading. */
body.single-post .e-shared-sec {
  align-items: center;
  background: #050505;
  color: #fff;
  margin-top: 42px !important;
  padding: 15px 18px !important;
}
body.single-post .e-shared-sec .e-shared-header {
  color: #fff !important;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif;
  font-size: 16px !important;
  font-weight: 800;
  letter-spacing: -.015em;
}
body.single-post .e-shared-sec .e-shared-header i {
  color: #c2ff74 !important;
}
body.single-post .e-shared-sec .share-action {
  align-items: center;
  background: #151515 !important;
  border: 1px solid rgba(255, 255, 255, .36) !important;
  color: #fff !important;
  display: inline-flex;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
}
body.single-post .e-shared-sec .share-action:hover,
body.single-post .e-shared-sec .share-action:focus-visible {
  background: #c2ff74 !important;
  border-color: #c2ff74 !important;
  color: #050505 !important;
  outline: 0;
}
body.single-post .fex-article-briefing {
  align-items: end;
  background: #f2f4ee;
  border: 1px solid #050505;
  border-top: 8px solid #c2ff74;
  display: grid;
  gap: 32px;
  grid-template-columns: minmax(0, 1fr) auto;
  margin-top: 18px;
  padding: 28px 30px 30px;
}
body.single-post .fex-article-briefing__eyebrow {
  color: #343633;
  display: block;
  font-family: 'Libre Franklin', 'Jost', sans-serif;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
  margin-bottom: 8px;
  text-transform: uppercase;
}
body.single-post .fex-article-briefing h2 {
  color: #050505;
  font-family: 'Newsreader', Georgia, serif;
  font-size: 34px !important;
  font-weight: 700 !important;
  letter-spacing: -.03em;
  line-height: 1.06 !important;
  margin: 0 0 9px !important;
}
body.single-post .fex-article-briefing p {
  color: #343633;
  font-family: 'Libre Franklin', 'Jost', sans-serif;
  font-size: 15px !important;
  line-height: 1.55 !important;
  margin: 0 !important;
  max-width: 560px;
}
body.single-post .fex-article-briefing__link {
  align-items: center;
  align-self: center;
  background: #050505;
  border: 2px solid #050505;
  color: #fff !important;
  display: inline-flex;
  font-family: 'Libre Franklin', 'Jost', sans-serif;
  font-size: 14px;
  font-weight: 800;
  justify-content: center;
  letter-spacing: .01em;
  min-height: 50px;
  padding: 12px 20px;
  text-decoration: none;
  white-space: nowrap;
}
body.single-post .fex-article-briefing__link:hover,
body.single-post .fex-article-briefing__link:focus-visible {
  background: #c2ff74;
  color: #050505 !important;
}
body.single-post .fex-article-briefing__link:focus-visible {
  outline: 3px solid #050505;
  outline-offset: 3px;
}
@media (max-width: 767px) {
  body.single-post .fex-article-briefing {
    align-items: stretch;
    gap: 20px;
    grid-template-columns: 1fr;
    padding: 24px 22px 26px;
  }
  body.single-post .fex-article-briefing h2 { font-size: 30px !important; }
  body.single-post .fex-article-briefing__link { width: 100%; }
}
@media print {
  body.single-post .fex-article-briefing { display: none; }
}

/* Share confirmation: one visible and screen-reader-friendly status for every copy action. */
body.single-post .fex-copy-status {
  background: #050505;
  border-left: 8px solid #c2ff74;
  bottom: 24px;
  color: #fff;
  font-family: 'Libre Franklin', 'Jost', sans-serif;
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .01em;
  max-width: calc(100vw - 48px);
  opacity: 0;
  padding: 15px 18px;
  pointer-events: none;
  position: fixed;
  right: 24px;
  z-index: 2147483001;
}
body.single-post .fex-copy-status.is-visible {
  opacity: 1;
}
@media (max-width: 767px) {
  body.single-post .fex-copy-status {
    bottom: 16px;
    left: 16px;
    max-width: none;
    right: 16px;
    text-align: center;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.single-post .fex-copy-status { transition: none; }
}
@media print {
  body.single-post .fex-copy-status { display: none; }
}

body.single-post .single-related {
  border-top: 3px solid #050505;
  margin-top: 50px !important;
  padding-top: 24px !important;
}
body.single-post .single-related .heading-title {
  align-items: center;
  display: flex;
  gap: 14px;
}
body.single-post .single-related .heading-title::before {
  background: #c2ff74;
  content: "";
  flex: 0 0 56px;
  height: 10px;
}
body.single-post .single-related .heading-title .h-link {
  color: #050505;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif !important;
  font-size: 38px !important;
  font-weight: 800 !important;
  letter-spacing: -.035em;
  line-height: 1.05 !important;
  text-decoration: none;
}
body.single-post .single-related .p-wrap .grid-box {
  border-top: 1px solid rgba(5, 5, 5, .22);
  padding-bottom: 22px;
  padding-top: 12px;
}
body.single-post .single-related .p-featured {
  margin-bottom: 18px !important;
}
body.single-post .single-related .entry-title {
  margin-bottom: 12px !important;
}
body.single-post .single-related .p-url {
  color: #050505;
  font-family: "Jost", "Plus Jakarta Sans", sans-serif !important;
  font-size: 22px !important;
  font-weight: 750 !important;
  letter-spacing: -.025em;
  line-height: 1.22 !important;
}
body.single-post .single-related .p-url:hover {
  text-decoration-color: #c2ff74;
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 3px;
}
body.single-post .single-related .p-url:focus-visible,
body.single-post .single-related .p-flink:focus-visible,
body.single-post .single-related .heading-title .h-link:focus-visible {
  outline: 3px solid #050505;
  outline-offset: 3px;
}
body.single-post .single-related .p-meta {
  color: #454545;
  font-size: 12px !important;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
/* Card headlines were set at 750 weight, which reads as shouting in a four-across row.
   Lighter weight plus a serif teaser gives the deck the same two-voice structure as the article. */
body.single-post .single-related .p-url {
  font-size: 20px !important;
  font-weight: 600 !important;
  letter-spacing: -.018em;
  line-height: 1.28 !important;
}
body.single-post .single-related .entry-title {
  margin-bottom: 10px !important;
}
body.single-post .single-related .entry-summary {
  color: #46474a;
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 16px !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  line-height: 1.5 !important;
  margin: 0 0 14px !important;
  text-transform: none !important;
}
/* Cards stretch to equal height, so drop the date onto a common baseline instead of
   letting a three-line teaser push one card's meta below its neighbours. */
body.single-post .single-related .p-wrap {
  display: flex;
  flex-direction: column;
}
body.single-post .single-related .p-wrap .grid-box {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}
/* Teasers run complete — no clamp, no mid-phrase ellipsis. Cards stretch to the tallest
   in the row and the date still lands on a shared baseline. */
body.single-post .single-related .entry-summary {
  overflow: visible;
  text-overflow: clip;
}
/* The date follows its teaser. Cards still stretch to equal height, so the frames stay level
   and the leftover space falls below the date as ordinary padding rather than opening a gap
   between the text and the meta line. */
body.single-post .single-related .p-meta {
  margin-top: 0 !important;
  padding-top: 2px;
}
/* Foxiz draws the card border as an inset pseudo-element on .grid-box, which has vertical
   padding only — so text sat on the rule. Inset the text; the photograph stays full-bleed. */
body.single-post .single-related .p-wrap .grid-box {
  padding-bottom: 20px;
  padding-left: 22px;
  padding-right: 22px;
}
/* The photograph breaks back out to the card edges; everything else inherits one left edge,
   including any element the theme adds later. */
body.single-post .single-related .p-wrap .grid-box > .feat-holder {
  margin-left: -22px;
  margin-right: -22px;
}
body.single-post .single-related .p-wrap .grid-box > .entry-title,
body.single-post .single-related .p-wrap .grid-box > .entry-summary,
body.single-post .single-related .p-wrap .grid-box > .p-meta {
  padding-left: 0 !important;
  padding-right: 0 !important;
}
@media (max-width: 767px) {
  body.single-post .single-related .p-wrap .grid-box {
    padding-left: 18px;
    padding-right: 18px;
  }
  body.single-post .single-related .p-wrap .grid-box > .feat-holder {
    margin-left: -18px;
    margin-right: -18px;
  }
}

@media (max-width: 767px) {
  body.single-post .s-feat-outer::after { width: 40%; }
  body.single-post .s-tagline { font-size: 19px !important; }
  body.single-post .entry-content { font-size: 18px !important; line-height: 1.68 !important; }
  body.single-post .entry-content > p:first-child { font-size: 20px !important; }
  body.single-post .entry-content h2 {
    margin-bottom: 17px !important;
    margin-top: 42px !important;
    padding-top: 16px;
    scroll-margin-top: 86px;
  }
  body.single-post .entry-content h2::before {
    height: 6px;
    top: -4px;
    width: 44px;
  }
  body.single-post .ruby-table-contents {
    margin: 30px 0 36px !important;
    padding: 21px 20px 18px !important;
  }
  body.single-post .ruby-table-contents .toc-header .h3 { font-size: 30px !important; }
  body.single-post .ruby-table-contents .toc-content {
    column-count: 1;
    font-size: 19px !important;
    line-height: 1.42 !important;
  }
  body.single-post .ruby-table-contents .toc-content a { font-size: 19px !important; }
  body.single-post .single-header {
    padding-bottom: 14px;
  }
  body.single-post .single-header .s-breadcrumb {
    font-size: 12px !important;
  }
  body.single-post .single-header .single-meta {
    align-items: stretch;
    flex-direction: column !important;
    gap: 14px;
    min-height: 0;
  }
  body.single-post .single-header .smeta-in,
  body.single-post .single-header .smeta-extra {
    width: 100% !important;
  }
  body.single-post .single-header .smeta-extra {
    align-items: flex-start;
    flex-direction: column-reverse;
    gap: 11px;
  }
  body.single-post .single-header .single-time-read {
    border-left: 0;
    margin-left: 0;
    padding-left: 0;
  }
  body.single-post .e-shared-sec {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
    margin-top: 34px !important;
    padding: 16px !important;
  }
  body.single-post .single-related {
    margin-top: 38px !important;
    padding-top: 20px !important;
  }
  body.single-post .single-related .heading-title {
    gap: 10px;
  }
  body.single-post .single-related .heading-title::before {
    flex-basis: 38px;
    height: 7px;
  }
  body.single-post .single-related .heading-title .h-link {
    font-size: 30px !important;
  }
  body.single-post .single-related .entry-summary {
    font-size: 15px !important;
  }
  body.single-post .single-related .p-url {
    font-size: 19px !important;
    line-height: 1.26 !important;
  }
}

/* FEX white editorial palette sync. */
body.single-post .entry-content h2::before,
body.single-post .ruby-table-contents .toc-header > i,
body.single-post .fex-reading-progress__bar,
body.single-post .s-feat-outer::after,
body.single-post .single-header .t-shared-sec .share-action:hover,
body.single-post .single-header .t-shared-sec .share-action:focus-visible,
body.single-post .entry-content > p a:hover,
body.single-post .entry-content > ul a:hover,
body.single-post .entry-content > ol a:hover,
body.single-post .entry-content > p a:focus-visible,
body.single-post .entry-content > ul a:focus-visible,
body.single-post .entry-content > ol a:focus-visible,
body.single-post .e-shared-sec .share-action:hover,
body.single-post .e-shared-sec .share-action:focus-visible,
body.single-post .fex-article-briefing__link:hover,
body.single-post .fex-article-briefing__link:focus-visible,
body.single-post .single-related .heading-title::before {
  background: var(--fex-signal) !important;
}
body.single-post .ruby-table-contents .toc-header > i {
  color: var(--fex-ink) !important;
}
body.single-post .fex-skip-article {
  border-color: var(--fex-signal) !important;
}
body.single-post .fex-article-briefing {
  border-color: var(--fex-ink) !important;
  border-top-color: var(--fex-signal) !important;
}
body.single-post .fex-copy-status {
  border-left-color: var(--fex-signal) !important;
}
body.single-post .s-feat-outer .featured-lightbox-trigger:focus-visible {
  box-shadow: 0 0 0 6px var(--fex-signal) !important;
}
/* This file loads after style.css, so the two hover selectors that used to sit in
   this list were overriding the sitewide underline and painting it rust — the one
   colour that is supposed to stay out of interaction. Only the rest state belongs
   here now: body links carry a rust underline until you touch them. */
body.single-post .entry-content > p a,
body.single-post .entry-content > ul a,
body.single-post .entry-content > ol a {
  text-decoration-color: var(--fex-signal) !important;
}
body.single-post .e-shared-sec .e-shared-header i {
  color: var(--fex-signal) !important;
}
/* This file is enqueued after style.css, so whatever it says about colour here
   beats the sitewide control rule. Kept in step with the marker deliberately
   rather than left to source order to decide. */
body.single-post .e-shared-sec .share-action:hover,
body.single-post .e-shared-sec .share-action:focus-visible {
  background: var(--fex-interaction, #3a4550) !important;
  border-color: var(--fex-interaction, #3a4550) !important;
  color: #fff !important;
}

/* Executive Summary: a concise decision layer built from each article's own structure. */
body.single-post .fex-executive-summary {
  background: var(--fex-soft, #f5f3ef);
  border: 1px solid var(--fex-index, #e7e3dc);
  border-top: 6px solid var(--fex-signal, #c46432);
  box-sizing: border-box;
  margin: 34px 0 38px;
  padding: 25px 28px 23px;
}
body.single-post .fex-executive-summary__eyebrow {
  color: var(--fex-signal-deep, #8a3f20);
  display: block;
  font-family: 'Libre Franklin', Jost, sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  line-height: 1.2;
  margin-bottom: 8px;
  text-transform: uppercase;
}
body.single-post .entry-content .fex-executive-summary h2 {
  color: var(--fex-ink, #0b0b0b) !important;
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 32px !important;
  font-weight: 750 !important;
  letter-spacing: -.025em !important;
  line-height: 1.08 !important;
  margin: 6px 0 15px !important;
  padding: 19px 0 0 !important;
}
body.single-post .entry-content .fex-executive-summary h2::before {
  content: none !important;
  display: none !important;
}
body.single-post .fex-executive-summary__overview {
  color: #2f302e;
  font-family: 'Newsreader', Georgia, serif;
  font-size: 18px !important;
  font-style: italic;
  line-height: 1.5 !important;
  margin: 0 0 19px !important;
}
body.single-post .fex-executive-summary__topics {
  counter-reset: none;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.single-post .fex-executive-summary__topics > li {
  align-items: start;
  border-top: 1px solid #cbc6bd;
  color: var(--fex-ink, #0b0b0b);
  display: grid;
  font-family: 'Libre Franklin', Jost, sans-serif;
  font-size: 15px;
  font-weight: 700;
  gap: 13px;
  grid-template-columns: 32px minmax(0, 1fr);
  line-height: 1.38;
  margin: 0 !important;
  padding: 12px 0 0 !important;
}
body.single-post .fex-executive-summary__topics > li + li {
  margin-top: 12px !important;
}
body.single-post .fex-executive-summary__number {
  color: var(--fex-signal-deep, #8a3f20);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  line-height: 1.6;
}
@media (max-width: 767px) {
  body.single-post .fex-executive-summary {
    margin: 27px 0 31px;
    padding: 21px 19px 20px;
  }
  body.single-post .entry-content .fex-executive-summary h2 {
    font-size: 28px !important;
  }
  body.single-post .fex-executive-summary__overview {
    font-size: 17px !important;
  }
}
@media print {
  body.single-post .fex-executive-summary {
    background: #fff;
    border: 1px solid #777;
    break-inside: avoid;
  }
}

/* Contents index: keep the card compact — eight sections, then on request. */
body.single-post .ruby-table-contents .toc-content {
  column-gap: 40px;
  font-size: 17px !important;
  line-height: 1.36 !important;
}
body.single-post .ruby-table-contents .toc-content a {
  font-size: 17px !important;
  font-weight: 600;
}
body.single-post .ruby-table-contents .toc-content li {
  padding: 9px 0;
}
body.single-post .ruby-table-contents .toc-header .h3 {
  font-size: 30px !important;
}
/* The theme draws a pale rule on every TOC anchor, which reads as a white line
   cutting across the first row of each column. One separator per row, on the li. */
body.single-post .ruby-table-contents .toc-content a,
body.single-post .ruby-table-contents .toc-content li a,
body.single-post .ruby-table-contents .toc-content > li:first-child a,
body.single-post .ruby-table-contents .toc-content li a:hover {
  border: 0 !important;
  box-shadow: none !important;
}
body.single-post .ruby-table-contents .toc-content li {
  border: 0 !important;
  border-bottom: 1px solid rgba(5, 5, 5, .13) !important;
}
body.single-post .ruby-table-contents .toc-content > li:last-child {
  border-bottom: 0 !important;
}
body.single-post .ruby-table-contents .toc-content,
body.single-post .ruby-table-contents .toc-content ul,
body.single-post .ruby-table-contents .toc-content li::before,
body.single-post .ruby-table-contents .toc-content li::after {
  border: 0 !important;
  box-shadow: none !important;
}
/* Foxiz paints a 2px white bar across .toc-content to mask the first anchor border
   in each column. Those borders are gone, so the mask is just a white line on the text. */
body.single-post .ruby-table-contents .toc-content::before,
body.single-post .rbtoc.table-fw .toc-content::before {
  background: none !important;
  background-color: transparent !important;
  content: none !important;
  display: none !important;
  height: 0 !important;
}
/* Settled, editorial weight: a quiet index numeral instead of a heavy black chip. */
body.single-post .ruby-table-contents .toc-content a {
  font-weight: 500 !important;
  letter-spacing: -.005em;
}
body.single-post .ruby-table-contents .toc-content a:before {
  background: none !important;
  background-color: transparent !important;
  border-radius: 0 !important;
  color: #8a3f20 !important;
  font-family: 'Libre Franklin', Jost, sans-serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: .05em;
  margin-right: 9px !important;
  min-width: 15px;
  padding: 0 !important;
}
body.single-post .ruby-table-contents .toc-content a:hover:before {
  background: none !important;
  background-color: transparent !important;
  color: #050505 !important;
}
/* FAQ sub-headings stay reachable in the body; they do not belong in the index. */
body.single-post .ruby-table-contents .toc-content > ul {
  display: none !important;
}
body.single-post .ruby-table-contents:not(.fex-toc-expanded) .toc-content > li.fex-toc-overflow {
  display: none !important;
}
body.single-post .fex-toc-more {
  background: none;
  border: 0;
  border-top: 1px solid rgba(5, 5, 5, .18);
  color: #050505;
  cursor: pointer;
  display: block;
  font-family: 'Libre Franklin', Jost, sans-serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .07em;
  margin: 2px 0 0;
  padding: 13px 0 1px;
  text-align: left;
  text-transform: uppercase;
  width: 100%;
}
body.single-post .fex-toc-more:hover {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}
body.single-post .fex-toc-more:focus-visible {
  outline: 3px solid #050505;
  outline-offset: 3px;
}
@media (max-width: 767px) {
  body.single-post .ruby-table-contents .toc-content {
    column-count: 1;
  }
  body.single-post .ruby-table-contents .toc-header .h3 {
    font-size: 26px !important;
  }
}
