.elementor-556 .elementor-element.elementor-element-c74636d{--display:flex;}.elementor-556 .elementor-element.elementor-element-c74636d:not(.elementor-motion-effects-element-type-background), .elementor-556 .elementor-element.elementor-element-c74636d > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-c0c2be2 );}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-556 .elementor-element.elementor-element-5d9731d{width:var( --container-widget-width, 75% );max-width:75%;margin:0rem 0rem calc(var(--kit-widget-spacing, 0px) + 1rem) 0rem;--container-widget-width:75%;--container-widget-flex-grow:0;}.elementor-556 .elementor-element.elementor-element-5d9731d .elementor-heading-title{font-family:var( --e-global-typography-328406e-font-family ), Sans-serif;font-size:var( --e-global-typography-328406e-font-size );font-weight:var( --e-global-typography-328406e-font-weight );line-height:var( --e-global-typography-328406e-line-height );color:var( --e-global-color-d20d8a7 );}.elementor-556 .elementor-element.elementor-element-fc26e28{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-556 .elementor-element.elementor-element-d97ccd8{text-align:start;}.elementor-556 .elementor-element.elementor-element-d97ccd8 img{width:2.75rem;border-style:solid;border-width:2px 2px 2px 2px;border-color:var( --e-global-color-96314f0 );border-radius:999px 999px 999px 999px;}.elementor-556 .elementor-element.elementor-element-269b0fd{--display:flex;--gap:0rem 0rem;--row-gap:0rem;--column-gap:0rem;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-556 .elementor-element.elementor-element-f399562{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-556 .elementor-element.elementor-element-f5bb792 .elementor-heading-title{font-family:"Fraunces", Sans-serif;font-size:12px;font-weight:300;text-transform:uppercase;line-height:1.65rem;color:var( --e-global-color-d20d8a7 );}.elementor-556 .elementor-element.elementor-element-0f5b2c0{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-556 .elementor-element.elementor-element-efac637{margin:-5px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-556 .elementor-element.elementor-element-efac637 .elementor-heading-title{font-family:"Fraunces", Sans-serif;font-size:12px;font-weight:300;line-height:1.65rem;color:#504D4C;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-556 .elementor-element.elementor-element-ff30297{--divider-border-style:solid;--divider-color:#1A1A1A14;--divider-border-width:1px;}.elementor-556 .elementor-element.elementor-element-ff30297 .elementor-divider-separator{width:100%;}.elementor-556 .elementor-element.elementor-element-ff30297 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-556 .elementor-element.elementor-element-6186a3b{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:space-between;--gap:2rem 2rem;--row-gap:2rem;--column-gap:2rem;}.elementor-556 .elementor-element.elementor-element-4ee37ba{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-table-of-contents{--header-color:var( --e-global-color-secondary );--item-text-color:var( --e-global-color-text );--item-text-hover-color:var( --e-global-color-accent );--marker-color:var( --e-global-color-text );}.elementor-widget-table-of-contents .elementor-toc__header, .elementor-widget-table-of-contents .elementor-toc__header-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-table-of-contents .elementor-toc__list-item{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-556 .elementor-element.elementor-element-3dd9f1b{--box-min-height:0px;--box-border-width:0px;--separator-width:0px;--box-padding:0px;--header-color:var( --e-global-color-d20d8a7 );--item-text-hover-color:var( --e-global-color-f1567f9 );--item-text-hover-decoration:underline;--item-text-active-color:var( --e-global-color-f1567f9 );--marker-color:var( --e-global-color-76aa2fe );--marker-size:0px;}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__header-title{text-align:start;}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__header, .elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__header-title{font-family:"IBM Plex Mono", Sans-serif;font-size:12px;font-weight:400;text-transform:uppercase;line-height:1px;}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__header{flex-direction:row;column-gap:0px;}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__list-item{font-family:var( --e-global-typography-e073674-font-family ), Sans-serif;font-size:var( --e-global-typography-e073674-font-size );font-weight:var( --e-global-typography-e073674-font-weight );line-height:var( --e-global-typography-e073674-line-height );}.elementor-556 .elementor-element.elementor-element-37185e7{--divider-border-style:solid;--divider-color:#1A1A1A14;--divider-border-width:1px;}.elementor-556 .elementor-element.elementor-element-37185e7 .elementor-divider-separator{width:100%;}.elementor-556 .elementor-element.elementor-element-37185e7 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-556 .elementor-element.elementor-element-3ce3bf3 .elementor-heading-title{font-family:"IBM Plex Mono", Sans-serif;font-size:12px;font-weight:400;text-transform:uppercase;letter-spacing:1px;color:var( --e-global-color-d20d8a7 );}.elementor-556 .elementor-element.elementor-element-43ae407{--grid-side-margin:10px;--grid-column-gap:10px;--grid-row-gap:10px;--grid-bottom-margin:10px;--e-share-buttons-primary-color:var( --e-global-color-f1567f9 );--e-share-buttons-secondary-color:var( --e-global-color-c0c2be2 );}.elementor-556 .elementor-element.elementor-element-43ae407 .elementor-share-btn__icon{--e-share-buttons-icon-size:1.25rem;}.elementor-556 .elementor-element.elementor-element-e3ff101{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-556 .elementor-element.elementor-element-00f7a7c{--box-min-height:0px;--box-border-width:0px;--separator-width:0px;--box-padding:0px;--header-color:var( --e-global-color-d20d8a7 );--item-text-hover-color:var( --e-global-color-f1567f9 );--item-text-hover-decoration:underline;--item-text-active-color:var( --e-global-color-f1567f9 );--marker-size:0px;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__header-title{text-align:start;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__header, .elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__header-title{font-family:"IBM Plex Mono", Sans-serif;font-size:12px;font-weight:400;text-transform:uppercase;line-height:1px;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__header{flex-direction:row;column-gap:0px;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__list-item{font-family:var( --e-global-typography-e073674-font-family ), Sans-serif;font-size:var( --e-global-typography-e073674-font-size );font-weight:var( --e-global-typography-e073674-font-weight );line-height:var( --e-global-typography-e073674-line-height );}.elementor-widget-theme-post-content{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}@media(min-width:768px){.elementor-556 .elementor-element.elementor-element-4ee37ba{--width:25%;}.elementor-556 .elementor-element.elementor-element-e3ff101{--width:75%;}}@media(max-width:1024px){.elementor-556 .elementor-element.elementor-element-5d9731d{--container-widget-width:100%;--container-widget-flex-grow:0;width:var( --container-widget-width, 100% );max-width:100%;}.elementor-556 .elementor-element.elementor-element-5d9731d .elementor-heading-title{font-size:var( --e-global-typography-328406e-font-size );line-height:var( --e-global-typography-328406e-line-height );}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__list-item{font-size:var( --e-global-typography-e073674-font-size );line-height:var( --e-global-typography-e073674-line-height );} .elementor-556 .elementor-element.elementor-element-43ae407{--grid-side-margin:10px;--grid-column-gap:10px;--grid-row-gap:10px;--grid-bottom-margin:10px;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__list-item{font-size:var( --e-global-typography-e073674-font-size );line-height:var( --e-global-typography-e073674-line-height );}}@media(max-width:767px){.elementor-556 .elementor-element.elementor-element-5d9731d .elementor-heading-title{font-size:var( --e-global-typography-328406e-font-size );line-height:var( --e-global-typography-328406e-line-height );}.elementor-556 .elementor-element.elementor-element-fc26e28{--flex-wrap:nowrap;}.elementor-556 .elementor-element.elementor-element-3dd9f1b .elementor-toc__list-item{font-size:var( --e-global-typography-e073674-font-size );line-height:var( --e-global-typography-e073674-line-height );} .elementor-556 .elementor-element.elementor-element-43ae407{--grid-side-margin:10px;--grid-column-gap:10px;--grid-row-gap:10px;--grid-bottom-margin:10px;}.elementor-556 .elementor-element.elementor-element-00f7a7c .elementor-toc__list-item{font-size:var( --e-global-typography-e073674-font-size );line-height:var( --e-global-typography-e073674-line-height );}}/* Start custom CSS for shortcode, class: .elementor-element-a31298a *//* ============================================================
   RANK MATH BREADCRUMBS — matched to blog-post-template.html
   Paste into: Elementor → Site Settings → Custom CSS
   (or Appearance → Customize → Additional CSS)
   ============================================================ */

/* Only needed if JetBrains Mono isn't already enqueued on the site.
   Better: load it via Elementor → Site Settings → Typography → Custom Fonts. */
/* @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"); */

.rank-math-breadcrumb {
  font-family: var(--util, "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: .68rem;
  font-weight: 400;
  letter-spacing: .12em;
  text-transform: uppercase;
  line-height: 1.7;
  color: var(--muted, #8B807A);
}

/* Rank Math wraps the trail in a <p> — kill the theme's paragraph margin */
.rank-math-breadcrumb p {
  margin: 0;
  padding: 0;
  font: inherit;
  letter-spacing: inherit;
  color: inherit;
}

.rank-math-breadcrumb a {
  color: var(--muted, #8B807A);
  text-decoration: none;
  transition: color .18s ease;
}

.rank-math-breadcrumb a:hover,
.rank-math-breadcrumb a:focus-visible {
  color: var(--clay, #C0736A);
}

.rank-math-breadcrumb a:focus-visible {
  outline: 2px solid var(--clay, #C0736A);
  outline-offset: 3px;
  border-radius: 2px;
}

/* The " / " dividers */
.rank-math-breadcrumb .separator {
  margin-inline: .25rem;
  opacity: .5;
}

/* Current page — not a link */
.rank-math-breadcrumb .last {
  color: var(--muted, #8B807A);
  /* Swap to this if you want the current page to read darker:
     color: var(--ink-2, #554D49); */
}

/* ---------- Mobile ---------- */
@media (max-width: 640px) {
  .rank-math-breadcrumb {
    font-size: .62rem;
    letter-spacing: .1em;
  }
  .rank-math-breadcrumb .separator {
    margin-inline: .25rem;
  }

  /* Long post titles wrap to 3+ lines on phones. Uncomment to hide
     the current page and show only Home / Category. */
  /*
  .rank-math-breadcrumb .last,
  .rank-math-breadcrumb .separator:last-of-type {
    display: none;
  }
  */
}/* End custom CSS */
/* Start custom CSS for table-of-contents, class: .elementor-element-3dd9f1b *//* ============================================================
   TABLE OF CONTENTS — matched to blog-post-template.html (.toc)
   Paste into: Elementor → Site Settings → Custom CSS
   (below the post-content CSS — it reuses the :root tokens
   defined there)

   The active / scroll-tracking highlight is deliberately
   switched off — every item renders the same regardless of
   scroll position.
   ============================================================ */

/* ---------- Strip the default box + feed Elementor's own vars ----------
   Elementor styles the list at .elementor-toc__body
   .elementor-toc__list-item-text.elementor-item-active — three
   classes. Rather than fight that, set the variables it reads. */

.elementor-widget-table-of-contents {
  /* box chrome */
  --box-background-color: transparent;
  --box-border-width: 0px;
  --box-border-color: transparent;
  --box-border-radius: 0px;
  --box-padding: 0px;
  --separator-width: 0px;

  /* header */
  --header-color: var(--muted, #8B807A);

  /* list states */
  --item-text-color: var(--muted, #8B807A);
  --item-text-hover-color: var(--ink, #1B1917);
  --item-text-active-color: var(--muted, #8B807A);  /* same as normal */
  --item-text-decoration: none;
  --item-text-hover-decoration: none;
  --item-text-active-decoration: none;
  --item-text-transition-duration: .2s;

  --marker-color: var(--clay, #C0736A);
  --nested-list-indent: 1rem;
}

/* IMPORTANT: leave the matching colour fields EMPTY in the Style
   tab. Anything set there is written to a higher-specificity
   .elementor-556 .elementor-element.elementor-element-3dd9f1b and will override these. */

/* ---------- "On this page" label ---------- */
.elementor-widget-table-of-contents .elementor-toc__header {
  background: transparent;
  border-bottom: 0;
  padding: 0;
  margin-bottom: 1.25rem;
}
.elementor-widget-table-of-contents .elementor-toc__header-title {
  font-family: var(--util, "JetBrains Mono", ui-monospace, monospace);
  font-size: .66rem;
  font-weight: 400;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted, #8B807A);
  margin: 0;
}

/* ---------- The spine ---------- */
.elementor-widget-table-of-contents .elementor-toc__body {
  padding: 0;
}
.elementor-widget-table-of-contents .elementor-toc__body > .elementor-toc__list-wrapper {
  position: relative;
  margin: 0;
  padding-left: 1.25rem;
}
.elementor-widget-table-of-contents .elementor-toc__body > .elementor-toc__list-wrapper::before {
  content: "";
  position: absolute;
  left: 0;
  top: .4em;
  bottom: .4em;
  width: 1px;
  background: var(--rule, #E3D3C8);
}

/* ---------- List items ---------- */
.elementor-widget-table-of-contents .elementor-toc__list-item {
  margin-bottom: .2rem;
}

/* Elementor bolds the active item to 700 — neutralised */
.elementor-widget-table-of-contents .elementor-toc__list-item,
.elementor-widget-table-of-contents .elementor-toc__list-item.elementor-item-active {
  font-weight: 400;
}
.elementor-widget-table-of-contents .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
  color: var(--muted, #8B807A);
}

.elementor-widget-table-of-contents .elementor-toc__body .elementor-toc__list-item-text {
  position: relative;
  display: block;
  font-size: .88rem;
  line-height: 1.4;
  padding: .45rem 0;
  transition: color .2s ease;
}

/* ---------- Nested (H3) items ---------- */
.elementor-widget-table-of-contents .elementor-toc__list-item .elementor-toc__list-wrapper {
  margin-top: .2rem;
}
.elementor-widget-table-of-contents .elementor-toc__list-item .elementor-toc__list-item-text {
  font-size: .82rem;
}

/* ---------- Hide the number markers ----------
   Your headings already carry their own numbers. Better to also
   set Marker View → Bullets → Icon → None in the panel. */
.elementor-widget-table-of-contents .elementor-toc__list-item-text-wrapper::before {
  display: none;
}/* End custom CSS */
/* Start custom CSS for table-of-contents, class: .elementor-element-00f7a7c *//* ============================================================
   TABLE OF CONTENTS — matched to blog-post-template.html (.toc)
   Paste into: Elementor → Site Settings → Custom CSS
   (below the post-content CSS — it reuses the :root tokens
   defined there)

   The active / scroll-tracking highlight is deliberately
   switched off — every item renders the same regardless of
   scroll position.
   ============================================================ */

/* ---------- Strip the default box + feed Elementor's own vars ----------
   Elementor styles the list at .elementor-toc__body
   .elementor-toc__list-item-text.elementor-item-active — three
   classes. Rather than fight that, set the variables it reads. */

.elementor-widget-table-of-contents {
  /* box chrome */
  --box-background-color: transparent;
  --box-border-width: 0px;
  --box-border-color: transparent;
  --box-border-radius: 0px;
  --box-padding: 0px;
  --separator-width: 0px;

  /* header */
  --header-color: var(--muted, #8B807A);

  /* list states */
  --item-text-color: var(--muted, #8B807A);
  --item-text-hover-color: var(--ink, #1B1917);
  --item-text-active-color: var(--muted, #8B807A);  /* same as normal */
  --item-text-decoration: none;
  --item-text-hover-decoration: none;
  --item-text-active-decoration: none;
  --item-text-transition-duration: .2s;

  --marker-color: var(--clay, #C0736A);
  --nested-list-indent: 1rem;
}

/* IMPORTANT: leave the matching colour fields EMPTY in the Style
   tab. Anything set there is written to a higher-specificity
   .elementor-556 .elementor-element.elementor-element-00f7a7c and will override these. */

/* ---------- "On this page" label ---------- */
.elementor-widget-table-of-contents .elementor-toc__header {
  background: transparent;
  border-bottom: 0;
  padding: 0;
  margin-bottom: 1.25rem;
}
.elementor-widget-table-of-contents .elementor-toc__header-title {
  font-family: var(--util, "JetBrains Mono", ui-monospace, monospace);
  font-size: .66rem;
  font-weight: 400;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted, #8B807A);
  margin: 0;
}

/* ---------- The spine ---------- */
.elementor-widget-table-of-contents .elementor-toc__body {
  padding: 0;
}
.elementor-widget-table-of-contents .elementor-toc__body > .elementor-toc__list-wrapper {
  position: relative;
  margin: 0;
  padding-left: 1.25rem;
}
.elementor-widget-table-of-contents .elementor-toc__body > .elementor-toc__list-wrapper::before {
  content: "";
  position: absolute;
  left: 0;
  top: .4em;
  bottom: .4em;
  width: 1px;
  background: var(--rule, #E3D3C8);
}

/* ---------- List items ---------- */
.elementor-widget-table-of-contents .elementor-toc__list-item {
  margin-bottom: .2rem;
}

/* Elementor bolds the active item to 700 — neutralised */
.elementor-widget-table-of-contents .elementor-toc__list-item,
.elementor-widget-table-of-contents .elementor-toc__list-item.elementor-item-active {
  font-weight: 400;
}
.elementor-widget-table-of-contents .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
  color: var(--muted, #8B807A);
}

.elementor-widget-table-of-contents .elementor-toc__body .elementor-toc__list-item-text {
  position: relative;
  display: block;
  font-size: .88rem;
  line-height: 1.4;
  padding: .45rem 0;
  transition: color .2s ease;
}

/* ---------- Nested (H3) items ---------- */
.elementor-widget-table-of-contents .elementor-toc__list-item .elementor-toc__list-wrapper {
  margin-top: .2rem;
}
.elementor-widget-table-of-contents .elementor-toc__list-item .elementor-toc__list-item-text {
  font-size: .82rem;
}

/* ---------- Hide the number markers ----------
   Your headings already carry their own numbers. Better to also
   set Marker View → Bullets → Icon → None in the panel. */
.elementor-widget-table-of-contents .elementor-toc__list-item-text-wrapper::before {
  display: none;
}/* End custom CSS */
/* Start custom CSS for theme-post-content, class: .elementor-element-3d297f2 *//* ============================================================
   POST CONTENT — matched to blog-post-template.html (.prose)
   Paste into: Elementor → Site Settings → Custom CSS

   Scoped to the Post Content widget so it won't leak into
   other widgets. If you'd rather scope it manually, add the
   class "post-prose" under the widget's Advanced → CSS Classes
   and swap the .elementor-556 .elementor-element.elementor-element-3d297f2 below.
   ============================================================ */

/* ---------- Design tokens (from your template) ---------- */
:root {
  --paper: #FBF4EE;
  --paper-deep: #F1E5DD;
  --paper-card: #FFFCFA;
  --ink: #1B1917;
  --ink-2: #554D49;
  --muted: #8B807A;
  --clay: #C0736A;
  --clay-deep: #A65B52;
  --clay-wash: #F5E2DD;
  --rule: #E3D3C8;
  --code-bg: #221F1D;
  --code-ink: #EFE6DF;

  --display: "Fraunces", Georgia, serif;
  --body: "Newsreader", Georgia, serif;
  --util: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  --measure: 44rem;
  --step--1: clamp(.8rem, .77rem + .15vw, .875rem);
  --step-0:  clamp(1.05rem, 1rem + .25vw, 1.175rem);
  --step-1:  clamp(1.25rem, 1.15rem + .5vw, 1.5rem);
  --step-2:  clamp(1.6rem, 1.4rem + .9vw, 2.1rem);
}

/* ---------- Base ---------- */
.elementor-widget-theme-post-content {
  max-width: var(--measure);   /* reading column — remove if the
                                  container already constrains width */
  font-family: var(--body);
  font-size: var(--step-0);
  line-height: 1.7;
  color: var(--ink-2);
}

/* Consistent vertical rhythm — replaces WP block margins */
.elementor-widget-theme-post-content > * + * { margin-top: 1.5rem; }
.elementor-widget-theme-post-content p { margin: 0; color: var(--ink-2); }

/* Opening paragraph set larger, like the template's .lede */
.elementor-widget-theme-post-content > p:first-child {
  font-size: var(--step-1);
  color: var(--ink);
  line-height: 1.6;
}

/* ---------- Headings ---------- */
.elementor-widget-theme-post-content h2 {
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.015em;
  color: var(--ink);
  margin: 3.5rem 0 1rem;
  scroll-margin-top: 7rem;
}

.elementor-widget-theme-post-content h3 {
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 600;
  line-height: 1.25;
  color: var(--ink);
  margin: 2.5rem 0 1rem;
  scroll-margin-top: 7rem;
}

/* ---------- Inline ---------- */
.elementor-widget-theme-post-content a {
  color: var(--clay-deep);
  text-decoration: none;
  border-bottom: 1px solid var(--clay-wash);
  transition: border-color .2s;
}
.elementor-widget-theme-post-content a:hover { border-bottom-color: var(--clay); }
.elementor-widget-theme-post-content strong { color: var(--ink); font-weight: 600; }

/* ---------- Lists ---------- */
.elementor-widget-theme-post-content ul,
.elementor-widget-theme-post-content ol {
  margin: 1.5rem 0;
  padding-left: 1.4rem;
  color: var(--ink-2);
}
.elementor-widget-theme-post-content li { margin-bottom: .65rem; padding-left: .35rem; }
.elementor-widget-theme-post-content li::marker { color: var(--clay); }

/* ---------- Blockquote ---------- */
.elementor-widget-theme-post-content blockquote {
  margin: 2.5rem 0;
  padding: 0 0 0 1.75rem;
  border-left: 2px solid var(--clay);
  font-family: var(--display);
  font-size: var(--step-1);
  font-style: italic;
  color: var(--ink);
  line-height: 1.5;
}
.elementor-widget-theme-post-content blockquote p { font: inherit; color: inherit; }

/* Fixes the citation running into the quote */
.elementor-widget-theme-post-content blockquote cite,
.elementor-widget-theme-post-content blockquote .wp-block-quote__citation {
  display: block;
  margin-top: 1rem;
  font-family: var(--util);
  font-size: .68rem;
  font-style: normal;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
}

/* ---------- Rule ---------- */
.elementor-widget-theme-post-content hr {
  border: 0;
  border-top: 1px solid var(--rule);
  margin: 3rem 0;
}

/* ---------- Code ---------- */
.elementor-widget-theme-post-content code {
  font-family: var(--util);
  font-size: .86em;
  background: var(--paper-deep);
  padding: .15em .4em;
  border-radius: 2px;
  color: var(--clay-deep);
}
.elementor-widget-theme-post-content pre {
  margin: 2rem 0;
  background: var(--code-bg);
  color: var(--code-ink);
  padding: 1.25rem;
  overflow-x: auto;
  font-family: var(--util);
  font-size: .85rem;
  line-height: 1.7;
}
.elementor-widget-theme-post-content pre code {
  background: none;
  padding: 0;
  color: inherit;
  font-size: inherit;
}

/* ---------- Figures ---------- */
.elementor-widget-theme-post-content figure { margin: 2.5rem 0; }
.elementor-widget-theme-post-content figcaption {
  margin-top: .75rem;
  font-size: .88rem;
  color: var(--muted);
  font-style: italic;
}

/* ---------- Tables ----------
   WordPress core puts `border: 1px solid` on every th/td — all four
   sides — so the borders must be zeroed with the shorthand BEFORE
   the bottom rule is re-added, or the verticals survive.           */

.elementor-widget-theme-post-content .wp-block-table {
  overflow-x: auto;
  margin: 2rem 0;
  border: 0;
}
.elementor-widget-theme-post-content table {
  width: 100%;
  border-collapse: collapse;
  border: 0;
  background: transparent;
  font-size: .92rem;
}

/* Reset first */
.elementor-widget-theme-post-content th,
.elementor-widget-theme-post-content td {
  border: 0;
  background: transparent;
}

/* Then apply only the horizontal rules */
.elementor-widget-theme-post-content th {
  text-align: left;
  font-family: var(--util);
  font-size: .64rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  padding: .75rem 1rem .75rem 0;
  border-bottom: 1px solid var(--ink);
}
.elementor-widget-theme-post-content td {
  padding: .85rem 1rem .85rem 0;
  border-bottom: 1px solid var(--rule);
  color: var(--ink-2);
  vertical-align: top;
}

/* Neutralise the "Stripes" block style variation */
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes {
  border-bottom: 0;
  background: transparent;
}
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes tbody tr:nth-child(odd),
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes tbody tr:nth-child(even) {
  background: transparent;
}
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes th,
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes td {
  border: 0;
}
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes th { border-bottom: 1px solid var(--ink); }
.elementor-widget-theme-post-content .wp-block-table.is-style-stripes td { border-bottom: 1px solid var(--rule); }

/* Keeps columns readable on narrow screens; .wp-block-table scrolls */
@media (min-width: 48rem) {
  .elementor-widget-theme-post-content table { min-width: 32rem; }
}

/* ============================================================
   OPTIONAL: callout box
   In the editor, wrap content in a Group block and give it the
   class "note" (Block settings → Advanced → Additional CSS class)
   ============================================================ */
.elementor-widget-theme-post-content .note {
  margin: 2rem 0;
  padding: 1.4rem 1.6rem;
  background: var(--paper-card);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--clay);
}
.elementor-widget-theme-post-content .note > p:first-child {
  font-family: var(--util);
  font-size: .64rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--clay);
  margin: 0 0 .6rem;
}
.elementor-widget-theme-post-content .note p { font-size: .95rem; }
.elementor-widget-theme-post-content .note--warn { border-left-color: #B8860B; }
.elementor-widget-theme-post-content .note--warn > p:first-child { color: #8A6508; }/* End custom CSS */