/* ============================================================
   SIGNAL — INTERIOR PAGE PATTERNS
   Graphite console heroes with scan-frame figures · telemetry
   breadcrumbs · prose · aside beats · indexed statements ·
   figure rows · cross-link ledgers · honesty console ·
   prooflines · bio cards · landing detail rows · closing band.
   Loaded on every page except the homepage. Consumes the global
   tokens + base folio/tick apparatus; no print furniture.
   ============================================================ */

/* ---------- breadcrumbs (telemetry trail) ---------- */
.crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35em 0.7em;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-bottom: clamp(1.75rem, 3vw, 3rem);
}
.crumbs a {
  color: var(--ink-soft);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 0.55em;
  margin: -14px -0.55em;
  transition: color var(--dur-ui);
}
.crumbs a:hover { color: var(--accent-deep); }
.crumbs .sep { color: var(--rule-strong); }
.crumbs [aria-current="page"] { color: var(--accent-deep); }

/* ---------- interior hero: the console panel ---------- */
.int-hero {
  position: relative;
  overflow: hidden;
  color: var(--paper-on-espresso);
  background: radial-gradient(120% 100% at 80% 0%, var(--espresso-2), var(--espresso) 62%);
  padding-top: calc(var(--nav-h) + clamp(2.25rem, 2rem + 2.5vw, 4rem));
  padding-bottom: clamp(2.75rem, 2rem + 3vw, 4.75rem);
}
.int-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--dot-grid-dark);
  background-size: 28px 28px;
  -webkit-mask-image: radial-gradient(110% 100% at 75% 10%, #000 25%, transparent 75%);
  mask-image: radial-gradient(110% 100% at 75% 10%, #000 25%, transparent 75%);
  pointer-events: none;
}
.int-hero::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 7px;
  color: var(--rule-dark);
  background: var(--tick-strip);
}
.int-hero > .container { position: relative; }
.int-hero .crumbs { color: var(--paper-on-espresso-dim); }
.int-hero .crumbs a { color: var(--paper-on-espresso-dim); }
.int-hero .crumbs a:hover { color: #fff; }
.int-hero .crumbs .sep { color: var(--rule-dark); }
.int-hero .crumbs [aria-current="page"] { color: var(--accent-lift); }
.int-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
@media (max-width: 900px) {
  .int-hero__grid { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .int-hero__figure { max-width: 28rem; }
}
.int-hero h1 {
  color: #fff;
  font-size: clamp(2.1rem, 1.3rem + 3.2vw, 3.9rem);
  line-height: 1.06;
  max-width: 14em;
  overflow-wrap: anywhere; /* unreplaced tokens must never blow the column */
}
/* long, verbatim-ported blog titles wrap to 5-6 lines at full size, making the
   hero-to-body gap look wildly inconsistent page to page; scale those down so
   hero height stays in the same range as the site's own short-title pages */
.int-hero h1.h1--long {
  font-size: clamp(1.5rem, 1rem + 1.6vw, 2.375rem);
  line-height: 1.15;
}
.int-hero .dek { margin-top: 1.2rem; color: var(--paper-on-espresso-dim); }
.int-hero__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.5rem;
  margin-top: 1.8rem;
}
.int-hero .tlink { color: var(--paper-on-espresso); }
.int-hero .tlink:hover { color: var(--accent-lift); }
/* the status chip runs its dark variant on the console */
.int-hero .sec-hero__dateline {
  border-color: hsl(240 6% 100% / 0.22);
  color: var(--paper-on-espresso-dim);
  background: hsl(240 6% 100% / 0.04);
  margin-bottom: clamp(1.1rem, 2.5vh, 1.75rem);
}
.int-hero .sec-hero__dateline .dot { background: var(--accent-hot); }

/* hero figure: scan-frame subject */
.int-hero__figure { position: relative; }
.int-hero__figure .figure__frame {
  aspect-ratio: 5 / 4;
  border: 1px solid hsl(240 6% 100% / 0.2);
  border-radius: 6px;
  background: var(--espresso-2);
}
.int-hero__figure--tall .figure__frame { aspect-ratio: 5 / 6; }
.int-hero__figure::before,
.int-hero__figure::after {
  content: "";
  position: absolute;
  width: 26px; height: 26px;
  border: 2.5px solid var(--accent-hot);
  z-index: 2;
  pointer-events: none;
}
.int-hero__figure::before { top: -8px; left: -8px; border-right: 0; border-bottom: 0; }
.int-hero__figure::after { right: -8px; bottom: 26px; border-left: 0; border-top: 0; }
.int-hero__figure figcaption { color: var(--paper-on-espresso-dim); }
/* a captionless hero figure keeps both brackets on the frame corners */
.int-hero__figure:not(:has(figcaption))::after { bottom: -8px; }

/* ---------- figures: telemetry captions (no print folios) ---------- */
main .figure figcaption {
  align-items: center;
  letter-spacing: 0.07em;
}
main .figure figcaption::before {
  content: "";
  flex: none;
  width: 18px; height: 7px;
  color: var(--accent);
  background: var(--tick-strip);
}

/* ---------- prose ---------- */
.prose { max-width: 42em; }
.prose p { color: var(--ink-soft); margin-bottom: 1.15rem; }
.prose p:last-child { margin-bottom: 0; }
.prose p strong { color: var(--ink); font-weight: 600; }
.prose h3 { margin: 2rem 0 0.8rem; }
.prose h2.prose-h2 { font-size: var(--fs-h3); margin: 2rem 0 0.8rem; }
/* Same trick one level down: a correctly-nested <h3> (fixing a ported
   article's heading-order skip) styled at the original bare-<h4> size
   it's replacing, so no ported page changes appearance. */
.prose h3.prose-h3 { font-family: var(--font-heading); font-size: var(--fs-h4); font-weight: 600; line-height: 1.3; margin: 0; }
.prose ul { color: var(--ink-soft); padding-left: 1.2em; display: grid; gap: 0.5rem; margin-bottom: 1.15rem; }

/* two-column section body: content left, artifact right */
.int-cols {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}
@media (max-width: 900px) {
  .int-cols { grid-template-columns: minmax(0, 1fr); }
}
.int-cols__rail { position: sticky; top: 120px; }
@media (max-width: 900px) { .int-cols__rail { position: static; } }
/* ---------- consolidated overview (service + condition pages) ----------
   One primary section: prose with sub-headings on the left, a rail with the
   compact topic list on the right, and the four-phase care plan as one
   horizontal row across the bottom. */
.sub-h {
  font-size: var(--fs-h3);
  line-height: 1.2;
  margin: clamp(2rem, 3.5vw, 2.75rem) 0 0.9rem;
}
.int-cols__rail--flow { position: static; }
.int-cols .honesty { margin-top: 0.4rem; }
.sec-words__list--inline { margin-top: 0.4rem; }

/* compact bulleted list of linked topics */
.topic-box {
  margin-top: 1.5rem;
  padding: 1.1rem 1.25rem 1.2rem;
  background: var(--card);
  border: var(--frame-strong);
  border-radius: 8px;
}
.int-cols__rail > .topic-box:first-child { margin-top: 0; }
.topic-box__title {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin: 0 0 0.75rem;
  padding-bottom: 0.65rem;
  border-bottom: var(--frame);
}
.topic-box__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem 1.25rem;
}
.topic-box__list li { position: relative; padding-left: 1rem; font-size: 0.9375rem; line-height: 1.35; }
.topic-box__list li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.55em;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--accent);
}
.topic-box__list a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--rule-strong); }
.topic-box__list a:hover, .topic-box__list a:focus-visible { color: var(--accent-deep); border-bottom-color: currentColor; }



/* ---------- italic aside (identity/consequence beats) ---------- */
.beat {
  font-family: var(--font-quote);
  font-size: 1.15rem;
  font-style: italic;
  font-weight: 450;
  line-height: 1.5;
  color: var(--ink-soft);
  max-width: 32em;
  padding-left: 1.1rem;
  border-left: 3px solid var(--accent);
  margin: 1.6rem 0;
}

/* ---------- founder pull quote console ---------- */
.pullcard {
  position: relative;
  background: var(--card);
  border: var(--frame-strong);
  border-radius: 6px;
  padding: clamp(1.4rem, 2.5vw, 2.2rem);
}
.pullcard::before {
  content: "";
  position: absolute;
  top: -1px; left: -1px;
  width: 64px; height: 7px;
  color: var(--accent);
  background: var(--tick-strip);
}
.pullcard blockquote {
  font-family: var(--font-quote);
  font-size: clamp(1.3rem, 1.1rem + 1vw, 1.8rem);
  font-style: italic;
  font-weight: 450;
  line-height: 1.3;
  text-wrap: balance;
}
.pullcard blockquote .qq { color: var(--accent); font-style: normal; }
.pullcard cite {
  display: block;
  margin-top: 1rem;
  font-family: var(--font-mono);
  font-style: normal;
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

/* ---------- indexed statements (beliefs, principles) ---------- */
.statements {
  list-style: none;
  padding: 0;
  margin: 0;
  max-width: 56rem;
  border-top: 2px solid var(--ink);
}
.statements li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: clamp(1rem, 2.5vw, 1.75rem);
  align-items: start;
  padding: clamp(1.1rem, 1.8vw, 1.6rem) 0.25rem;
  border-bottom: var(--frame);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 500ms var(--ease-press), transform 500ms var(--ease-press);
}
.statements li.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .statements li { opacity: 1 !important; transform: none !important; transition: none !important; }
}
html.no-js .statements li { opacity: 1; transform: none; }
.statements .no {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  color: var(--ink-faint);
  border: 1px solid var(--rule-strong);
  border-radius: 3px;
  padding: 0.45em 0.5em 0.38em;
  margin-top: 0.2em;
}
.statements li:hover .no {
  background: var(--accent-deep);
  border-color: var(--accent);
  color: var(--accent-on);
}
.statements .st {
  font-family: var(--font-display);
  font-size: clamp(1.15rem, 1rem + 0.8vw, 1.55rem);
  font-weight: 500;
  line-height: 1.3;
  max-width: 36em;
}

/* ---------- figure rows (galleries) ---------- */
.figrow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.75rem);
  margin-top: clamp(2rem, 4vw, 3.5rem);
}
@media (max-width: 760px) { .figrow { grid-template-columns: 1fr; } }
.figrow .figure__frame { aspect-ratio: 3 / 2; border-radius: 6px; }

/* ---------- cross-link ledger (related services/conditions) ---------- */
.xlinks { border-top: 2px solid var(--ink); }
.xlinks__row {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-areas: "no h3 arr" "no p arr";
  column-gap: clamp(1rem, 2.5vw, 1.75rem);
  align-items: center;
  padding: 1.2rem 0.5rem 1.2rem 0.75rem;
  border-bottom: var(--frame);
  text-decoration: none;
  transition: background var(--dur-ui), padding-left var(--dur-ui) var(--ease-out);
}
.xlinks__row::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--accent);
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform var(--dur-ui) var(--ease-press);
}
.xlinks__row:hover::before { transform: scaleY(1); }
.xlinks__row:hover { background: var(--accent-wash); padding-left: 1.1rem; }
.xlinks__row .no {
  grid-area: no;
  align-self: start;
  margin-top: 0.3em;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  color: var(--ink-faint);
  border: 1px solid var(--rule-strong);
  border-radius: 3px;
  padding: 0.45em 0.5em 0.38em;
  transition: background var(--dur-ui), color var(--dur-ui), border-color var(--dur-ui);
}
.xlinks__row:hover .no {
  background: var(--accent-deep);
  border-color: var(--accent);
  color: var(--accent-on);
}
.xlinks__row h3 {
  grid-area: h3;
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
  font-size: clamp(1.15rem, 1.05rem + 0.6vw, 1.45rem);
  transition: color var(--dur-ui);
}
.xlinks__row:hover h3 { color: var(--accent-deep); }
.xlinks__row .arr,
.xlinks__row h3 .arr {
  grid-area: arr;
  color: var(--accent-deep);
  font-size: 1.1rem;
  opacity: 0;
  transform: translateX(-8px);
  transition: opacity var(--dur-ui), transform var(--dur-ui) var(--ease-out);
  align-self: center;
}
.xlinks__row:hover .arr,
.xlinks__row:hover h3 .arr { opacity: 1; transform: none; }
.xlinks__row p {
  grid-area: p;
  margin-top: 0.3rem;
  font-size: 0.9rem;
  color: var(--ink-soft);
  max-width: 34em;
}
@media (max-width: 640px) {
  .xlinks__row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "h3 arr" "p arr"; }
  .xlinks__row .no { display: none; }
}

/* ---------- honesty console (who it's for / not for) ---------- */
.honesty {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: var(--frame-strong);
  border-radius: 8px;
  overflow: hidden;
  background: var(--card);
  margin-top: clamp(1.5rem, 3vw, 2.5rem);
}
@media (max-width: 760px) { .honesty { grid-template-columns: 1fr; } }
.honesty > div { padding: clamp(1.4rem, 2.5vw, 2rem); }
.honesty .for { border-right: var(--frame); }
@media (max-width: 760px) {
  .honesty .for { border-right: 0; border-bottom: var(--frame); }
}
.honesty h3 {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  font-family: var(--font-heading);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-weight: 600;
  border-radius: 3px;
  padding: 0.45em 0.7em;
  margin-bottom: 1.2rem;
}
.honesty h3::before {
  content: "";
  width: 0.5em; height: 0.5em;
  border-radius: 50%;
  background: currentColor;
}
.honesty .for h3 { background: var(--accent-deep); color: var(--accent-on); }
.honesty .notfor h3 { border: 1px solid var(--rule-strong); color: var(--ink-faint); }
.honesty ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.7rem; }
.honesty li {
  padding-left: 1.4rem;
  position: relative;
  color: var(--ink-soft);
  font-size: 0.9575rem;
}
.honesty li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.62em;
  width: 0.6rem; height: 2px;
  background: var(--accent);
}
.honesty .notfor li::before { background: var(--rule-strong); }

/* ---------- proof quote strip (single attributed quote) ---------- */
.proofline {
  position: relative;
  padding: clamp(1.9rem, 3vw, 2.9rem) 0 clamp(1.75rem, 3vw, 2.75rem);
  border-bottom: var(--frame);
}
.proofline::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 7px;
  color: var(--rule-strong);
  background: var(--tick-strip);
}
.proofline blockquote {
  font-family: var(--font-quote);
  font-size: clamp(1.3rem, 1.05rem + 1.3vw, 2rem);
  font-style: italic;
  font-weight: 450;
  line-height: 1.3;
  max-width: 30em;
  text-wrap: balance;
}
.proofline blockquote .qq { color: var(--accent); font-style: normal; }
.proofline cite {
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  margin-top: 1rem;
  font-family: var(--font-mono);
  font-style: normal;
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.proofline cite::before {
  content: "";
  width: 18px; height: 2px;
  background: var(--accent);
}

/* ---------- closing statement before booking ---------- */
.int-close {
  position: relative;
  text-align: left;
}
.int-close .container { position: relative; padding-top: 1.4rem; }
.int-close .container::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 7px;
  color: var(--rule-strong);
  background: var(--tick-strip);
}
.int-close h2, .int-close h3 { max-width: 18em; }
.int-close .int-hero__cta { margin-top: 1.6rem; }
/* with the FAQ gone, the closing band on service and condition pages can
   sit straight after the unnumbered proof strip: keep that seam at the
   numbered-section third, not a double full-rhythm gap */
.int-proof + .int-close { padding-top: max(2rem, calc(var(--sp-section) / 3)); }
.int-proof:has(+ .int-close) { padding-bottom: max(2rem, calc(var(--sp-section) / 3)); }

/* ---------- staff long bios ---------- */
.bio-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 3vw, 3rem);
}
@media (max-width: 860px) { .bio-grid { grid-template-columns: 1fr; } }
.bio-card { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 1.5rem; align-items: start; }
@media (max-width: 560px) { .bio-card { grid-template-columns: 1fr; } }
.bio-card .figure__frame { aspect-ratio: 4 / 5; border-radius: 6px; }
.bio-card .figure__frame img { transition: transform 600ms var(--ease-out), filter 600ms var(--ease-out); }
.bio-card:hover .figure__frame img { transform: scale(1.03); filter: saturate(1); }
.bio-card .name { font-family: var(--font-display); font-size: 1.35rem; font-weight: 600; }
.bio-card .cred {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin: 0.45rem 0 0.9rem;
}
.bio-card .cred .spec {
  color: var(--accent-on);
  background: var(--accent-deep);
  border-radius: 3px;
  padding: 0.35em 0.5em 0.28em;
}
.bio-card p { font-size: 0.9375rem; color: var(--ink-soft); }

/* landing detail rows + the card grid moved to shared-sections.css (the homepage uses them too) */

/* ---------- testimonial cards (3 / 2 / 1 grid, 4-line clamp + Read More) ----------
   Collapsed cards reserve the same text box (4 lines) and the same toggle
   row, and the grid aligns to the top, so every collapsed card is the same
   height and an opened card grows on its own without stretching its row. */
.tgrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  align-items: start;
  margin: clamp(1.75rem, 3vw, 2.75rem) 0 0;
}
@media (max-width: 1024px) { .tgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px)  { .tgrid { grid-template-columns: minmax(0, 1fr); } }
.tcard {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  margin: 0;
  padding: clamp(1.25rem, 2vw, 1.75rem);
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 8px;
}
.tcard__quote { margin: 0; }
.tcard__text {
  margin: 0;
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ink-soft);
  min-height: calc(4 * 1.65em);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  overflow: hidden;
}
.tcard__text .qq { color: var(--accent); }
.tcard.is-open .tcard__text,
html.no-js .tcard__text { display: block; -webkit-line-clamp: unset; line-clamp: none; overflow: visible; }
.tcard__more { min-height: 1.75rem; display: flex; align-items: center; }
.tcard__toggle {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--accent-deep);
  border-bottom: 1px solid currentColor;
  padding: 0.1rem 0;
}
.tcard__toggle:hover, .tcard__toggle:focus-visible { color: var(--ink); }
.tcard__cite {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-faint);
  font-style: normal;
  padding-top: 0.85rem;
  border-top: 1px solid var(--rule);
}

/* ============================================================
   BLOG ARTICLE BLOCK — CLIENT BUILD (Streamline Performance)
   Added for the 55 ported WordPress posts at /<slug>/ and the
   /blog/ index. Everything here is scoped to .prose--article,
   .post-* or .detail-row .post-date so no existing pattern is
   restyled. Article measure, prose furniture for markup the
   ported bodies actually contain (h2/h3/h4, ol, figures,
   blockquote, tables, oEmbed video), and the post-meta line.
   ============================================================ */

/* a post whose only source image is too small to carry the hero frame runs the
   head full width rather than leaving a hole where a figure should be */
.int-hero__grid--solo { grid-template-columns: minmax(0, 1fr); }

/* ---------- the post meta line (hero + index rows) ---------- */
.post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.55em;
  margin-top: 1.1rem;
  color: var(--paper-on-espresso-dim);
}
.post-meta__sep { color: var(--rule-dark); }
.int-hero .post-meta time { color: var(--accent-lift); }
.detail-row .post-date { color: var(--ink-faint); margin-bottom: 0.45rem; }

/* ---------- the article measure ---------- */
.prose--article { max-width: 44em; }
.prose--article > div > :first-child { margin-top: 0; }
.prose--article p { margin-bottom: 1.25rem; }
/* two posts cite a bare DOI URL; those must break rather than push the page */
.prose--article p,
.prose--article li,
.prose--article a { overflow-wrap: break-word; }
.prose--article h2,
.prose--article h3,
.prose--article h4 {
  max-width: 24em;
  margin: 2.4rem 0 0.9rem;
  text-wrap: balance;
}
.prose--article h2 { font-size: clamp(1.4rem, 1.2rem + 1vw, 1.9rem); }
.prose--article h3 { font-size: clamp(1.18rem, 1.08rem + 0.55vw, 1.45rem); }
.prose--article h4 {
  font-family: var(--font-heading);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-top: 2rem;
}
.prose--article ul,
.prose--article ol {
  color: var(--ink-soft);
  padding-left: 1.3em;
  display: grid;
  gap: 0.5rem;
  margin-bottom: 1.25rem;
}
.prose--article ol { list-style: decimal; }
.prose--article li > ul,
.prose--article li > ol { margin: 0.5rem 0 0; }
.prose--article a {
  color: var(--accent-deep);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  transition: color var(--dur-ui);
}
.prose--article a:hover { color: var(--ink); }
.prose--article strong { color: var(--ink); font-weight: 600; }

/* ---------- figures inside the article ---------- */
.prose--article figure { margin: 2rem 0; }
.prose--article img {
  /* intrinsic width, capped by the measure: the source images run 520 to 740px
     and upscaling them to fill the column only makes them softer */
  display: block;
  height: auto;
  max-width: 100%;
  border: var(--frame);
  border-radius: 6px;
  background: var(--card);
}
.prose--article figcaption {
  margin-top: 0.7rem;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.07em;
  color: var(--ink-faint);
}

/* ---------- blockquote ---------- */
.prose--article blockquote {
  font-family: var(--font-quote);
  font-size: 1.2rem;
  font-style: italic;
  font-weight: 450;
  line-height: 1.45;
  color: var(--ink-soft);
  padding-left: 1.1rem;
  border-left: 3px solid var(--accent);
  margin: 1.8rem 0;
}

/* ---------- tables and oEmbed video kept from the source posts ---------- */
.prose--article .post-table { overflow-x: auto; margin: 1.8rem 0; }
.prose--article table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.prose--article th,
.prose--article td { text-align: left; padding: 0.7rem 0.9rem; border-bottom: var(--frame); }
.prose--article th { font-family: var(--font-mono); font-size: var(--fs-mono-xs); letter-spacing: 0.07em; text-transform: uppercase; color: var(--ink-faint); }
.post-video {
  position: relative;
  margin: 2rem 0;
  border: var(--frame-strong);
  border-radius: 6px;
  overflow: hidden;
  background: var(--espresso);
  aspect-ratio: 16 / 9;
}
.post-video iframe,
.post-video video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------- article tail furniture ---------- */
.post-more { margin-top: 1.6rem; }
.post-close-dek { margin-top: 1rem; max-width: 42em; color: var(--ink-soft); }

/* ---------- careers application form (Netlify, resume upload) ---------- */
.apply {
  margin-top: 2rem;
  max-width: 46rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  border: var(--frame);
  border-radius: 6px;
  background: var(--paper);
}
.apply__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem 1.25rem;
}
.apply__field { min-width: 0; }
.apply__field.span-2 { grid-column: span 2; }
@media (max-width: 560px) {
  .apply__grid { grid-template-columns: 1fr; }
  .apply__field.span-2 { grid-column: auto; }
}
.apply__field label {
  display: block;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 0.4rem;
}
.apply__field label .opt { text-transform: none; letter-spacing: 0.02em; }
.apply__field input {
  width: 100%;
  max-width: 100%;
  background: #fff;
  border: 1px solid var(--rule-strong);
  border-radius: 4px;
  padding: 0.6em 0.75em;
  font-size: 1rem;
}
.apply__field input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent-wash-2);
}
.apply__actions { margin-top: 1.4rem; }

/* ---------- client-copy service pages: closing paragraphs + FAQ lists ---------- */
.int-close__p { margin-top: 1rem; max-width: 42em; color: var(--ink-soft); }
.int-close h3 + .int-close__p { margin-top: 1.2rem; }
.sec-faq__a p:not(:last-child) { padding-bottom: 0.6rem; }
.sec-faq__a ul + p::before, .sec-faq__a p + p::before { content: none; }
.sec-faq__a ul {
  margin: 0 0 1rem calc(2.85rem + 1.1em);
  padding-right: 2.85rem;
  list-style: disc;
  color: var(--ink-soft);
  max-width: 62ch;
}
.sec-faq__a ul:last-child { margin-bottom: 1.5rem; }
.sec-faq__a li + li { margin-top: 0.3em; }
