/* ============================================================
   1) HERO IMAGE — Cinematic film grade
   Subtle: slight warmth in shadows, light desaturation, gentle
   bottom vignette. The image is unaltered; we layer a treatment
   on top of its container.
   ============================================================ */

body.pz-clean-post .pz-clean-post__hero,
body.pz-clean-post .pz-hero,
body.pz-clean-post .wp-post-image {
  position: relative;
}

body.pz-clean-post .pz-clean-post__hero img,
body.pz-clean-post .pz-hero img {
  filter: saturate(0.92) contrast(1.04);
}

/* Cinematic bottom vignette + edge fade applied via pseudo-element
   on the hero wrapper. Restrained — 0.18 max opacity, smooth fade. */
body.pz-clean-post .pz-clean-post__hero::after,
body.pz-clean-post .pz-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 120% 80% at 50% 30%, transparent 55%, rgba(12,10,9,0.18) 100%),
    linear-gradient(to top, rgba(12,10,9,0.22) 0%, transparent 28%);
  z-index: 2;
}

/* Hero overlay text (kicker / title / sub) — slight letter-spacing
   and refined weight if present */
body.pz-clean-post .pz-clean-post__hero h1,
body.pz-clean-post .pz-clean-post__hero .pz-hero__title {
  letter-spacing: -0.015em;
}


/* ============================================================
   2) SECTION NUMBERING — Roman numerals in left margin
   Quietly counters each H2 inside the article. Renders to the
   left of the heading on desktop; above it on mobile.
   ============================================================ */

body.pz-clean-post .entry-content {
  counter-reset: pz-section;
}

body.pz-clean-post .entry-content h2 {
  position: relative;
  counter-increment: pz-section;
}

@media (min-width: 920px) {
  body.pz-clean-post .entry-content h2::before {
    content: counter(pz-section, upper-roman);
    position: absolute;
    left: calc(50% - 36ch);     /* aligns left of the 66ch reading column */
    top: 0.34em;
    font-family: "Fraunces", Georgia, serif;
    font-style: italic;
    font-weight: 400;
    font-size: 0.78rem;
    letter-spacing: 0.16em;
    color: #c2410c;
    line-height: 1;
    text-transform: none;
    opacity: 0.75;
  }
}

@media (max-width: 919px) {
  body.pz-clean-post .entry-content h2::before {
    content: counter(pz-section, upper-roman);
    display: block;
    font-family: "Fraunces", Georgia, serif;
    font-style: italic;
    font-weight: 400;
    font-size: 0.72rem;
    letter-spacing: 0.18em;
    color: #c2410c;
    opacity: 0.7;
    margin-bottom: 0.45em;
  }
}


/* ============================================================
   3) INLINE IMAGES — Editorial rhythm
   When figures and images appear in the body content, they get
   asymmetric breathing room, a refined caption, and a calm fade
   on scroll-into-view.
   ============================================================ */

body.pz-clean-post .entry-content figure.wp-block-image,
body.pz-clean-post .entry-content .wp-block-image,
body.pz-clean-post .entry-content figure {
  margin: 3.2rem auto 2.6rem;
  max-width: 820px;
}

body.pz-clean-post .entry-content figure.wp-block-image img,
body.pz-clean-post .entry-content .wp-block-image img {
  width: 100%;
  height: auto;
  display: block;
  filter: saturate(0.94) contrast(1.03);
  border-radius: 2px;
}

/* Image captions — small caps Inter, restrained colour */
body.pz-clean-post .entry-content figure figcaption,
body.pz-clean-post .entry-content .wp-block-image figcaption {
  font-family: "Inter", sans-serif;
  font-size: 0.78rem;
  font-weight: 500;
  line-height: 1.5;
  color: #78716c;
  text-align: center;
  margin-top: 0.85em;
  letter-spacing: 0.04em;
  text-transform: none;
  font-style: normal;
}

/* Full-bleed image: opt-in via .pz-fullbleed class */
body.pz-clean-post .entry-content figure.pz-fullbleed,
body.pz-clean-post .entry-content .pz-fullbleed {
  max-width: 1180px;
  margin-left: auto;
  margin-right: auto;
}


/* ============================================================
   4) FIRST-H2 LIFT — Asterism above the first section heading
   Makes the article open with a deliberate breath after the lead.
   ============================================================ */

body.pz-clean-post .entry-content > p:first-of-type + hr.wp-block-separator,
body.pz-clean-post .entry-content > p:first-of-type + .pz-asterism {
  margin-top: 2.8rem;
}

body.pz-clean-post .entry-content h2:first-of-type {
  margin-top: 2.2rem;
}


/* ============================================================
   5) BLUR-UP IMAGE LOADING — calm fade-in
   Subtle. No bounce, no scaling, just opacity.
   ============================================================ */

body.pz-clean-post .entry-content img {
  opacity: 0;
  transition: opacity 0.5s ease;
}

body.pz-clean-post .entry-content img.pz-loaded,
body.pz-clean-post .entry-content img[loading="lazy"] {
  opacity: 1;
}


/* ============================================================
   6) PARAGRAPH FIRST-LINE LIFT after asterism
   The first paragraph following a section break gets small caps on
   the first 2-3 words. Restrained — only when the section opens
   with capital letters worth lifting.
   ============================================================ */

body.pz-clean-post .entry-content hr.wp-block-separator + h2 + p::first-line,
body.pz-clean-post .entry-content .pz-asterism + h2 + p::first-line {
  font-variant-caps: small-caps;
  letter-spacing: 0.02em;
}


/* ============================================================
   7) H3 — quieter than H2 with a small lead-in dash
   ============================================================ */

body.pz-clean-post .entry-content h3 {
  position: relative;
}

body.pz-clean-post .entry-content h3::before {
  content: "—";
  display: inline-block;
  margin-right: 0.5em;
  color: #c2410c;
  opacity: 0.6;
  font-weight: 400;
  font-style: normal;
}


/* ============================================================
   8) Reading progress indicator — thin orange line at top of
   viewport that fills as the reader scrolls. Calm, single-pixel.
   ============================================================ */

body.pz-clean-post::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: var(--pz-read, 0%);
  background: linear-gradient(to right, #c2410c, #ff6b35);
  z-index: 9999;
  transition: width 0.08s linear;
  pointer-events: none;
}