/* ══ PROSE ════════════════════════════════════════════════════════════════
   The live-only pages (/privacy, /terms, /refund, /book-demo, /newsletter): a
   running-copy body under the .zr-bl shell. The base rules are blog-post.html's
   .zr-prose (16/27 #333740, h2 clamp 22–28 weight 500, 22px block rhythm,
   blue links, the quoted left border); h3, lists, tables, strong and hr are new
   in the same language. Everything is scoped to .zr-prose so nothing leaks. */
.zr-prose-wrap{ padding-block:clamp(32px,3.4vw,52px) clamp(48px,5vw,80px); }
.zr-prose{ width:min(760px,100%); margin:0 auto; font-size:16px; line-height:27px; color:#333740; }
/* The block rhythm is set per element (22px) rather than with `> * + *`: the comp's
   `.zr-prose p{margin:0}` outranks that selector and would collapse p + p to line spacing. */
.zr-prose p{ margin:22px 0 0; text-wrap:pretty; }
.zr-prose h2{
  margin:40px 0 0; font-size:clamp(22px,2vw,28px); font-weight:500; line-height:1.28;
  letter-spacing:-.022em; color:var(--bl-ink); scroll-margin-top:120px; text-wrap:balance;
}
.zr-prose h2 + p{ margin-top:14px; }
.zr-prose h3{
  margin:30px 0 0; font-size:18px; font-weight:500; line-height:26px;
  letter-spacing:-.012em; color:var(--bl-ink); scroll-margin-top:120px; text-wrap:balance;
}
.zr-prose h2 + h3{ margin-top:18px; }
.zr-prose h3 + p{ margin-top:8px; }
.zr-prose > :first-child{ margin-top:0; }
.zr-prose a{ color:var(--zr-blue); text-underline-offset:2px; }
.zr-prose a:hover{ text-decoration-thickness:2px; }
.zr-prose strong{ font-weight:500; color:var(--bl-ink); }
.zr-prose em{ font-style:italic; }
.zr-prose blockquote{
  margin:22px 0 0; padding:4px 0 4px 20px; border-left:3px solid var(--zr-blue);
  font-size:19px; line-height:30px; color:var(--bl-ink); text-wrap:pretty;
}
.zr-prose blockquote p{ margin:0; }
.zr-prose blockquote p + p{ margin-top:12px; }
.zr-prose hr{ height:1px; margin:36px 0 0; border:0; background:var(--bl-hair); }

/* lists: the copy's own bullets, indented to the text edge */
.zr-prose ul, .zr-prose ol{ margin:22px 0 0; padding-left:24px; }
.zr-prose p + ul, .zr-prose p + ol{ margin-top:12px; }
.zr-prose li p{ margin:0; }
.zr-prose li p + p{ margin-top:8px; }
.zr-prose ul{ list-style:disc; }
.zr-prose ol{ list-style:decimal; }
.zr-prose li{ padding-left:4px; text-wrap:pretty; }
.zr-prose li + li{ margin-top:8px; }
.zr-prose li > ul, .zr-prose li > ol{ margin-top:8px; }
.zr-prose li::marker{ color:var(--bl-dim); }
.zr-prose ol > li::marker{ font-variant-numeric:tabular-nums; color:var(--bl-body); }

/* tables: hairline rules, a light head, numbers aligned */
.zr-prose table{
  width:100%; margin:22px 0 0; border-collapse:collapse; font-size:14.5px; line-height:22px;
  border:1px solid var(--bl-hair); border-radius:12px; overflow:hidden;
}
.zr-prose th, .zr-prose td{ padding:10px 14px; text-align:left; vertical-align:top; border-bottom:1px solid var(--bl-hair); }
.zr-prose th{ font-weight:500; color:var(--bl-ink); background:#FBFCFE; }
.zr-prose tr:last-child td{ border-bottom:0; }
.zr-prose td{ color:var(--bl-body); font-variant-numeric:tabular-nums; }

/* the "Last updated" line under the hero */
.zr-prose__meta{
  font-family:'Geist Mono', ui-monospace, monospace; font-size:11.5px; line-height:18px;
  letter-spacing:.04em; text-transform:uppercase; color:var(--bl-dim);
}
.zr-prose__meta + h2{ margin-top:28px; }

/* ── /book-demo: the Calendly frame above the "what you get" copy ─────── */
.zr-demo{ display:flex; flex-direction:column; gap:clamp(32px,3.4vw,48px); }
.zr-demo__frame{
  width:min(1040px,100%); margin:0 auto; overflow:hidden;
  background:#0A0A0A; border:1px solid var(--bl-hair); border-radius:20px; box-shadow:var(--bl-card-sh);
}
.zr-demo__frame iframe{ display:block; width:100%; height:720px; border:0; }

/* ── /newsletter: the blog's .zr-news strip on its own page ───────────── */
.zr-news{ position:relative; }
/* the empty status line would open a 48px flex row under the form; out of flow until it says
   something (still in the accessibility tree, so the aria-live region announces the change) */
.zr-news__note:empty{ position:absolute; }
.zr-news__ts{ flex:1 1 100%; }
.zr-news__note[data-state="error"]{ color:#C0342F; }
.zr-news__note[data-state="ok"]{ color:#0F7A45; }

/* ── responsive (the .zr-news rules mirror contact.css / blog.css) ─────── */
@media (max-width:900px){
  .zr-news{ padding:28px; gap:24px; }
}
@media (max-width:620px){
  .zr-news__form{ flex-wrap:wrap; }
  .zr-news__form button{ width:100%; }
  .zr-prose h2{ margin-top:32px; }
  .zr-prose ul, .zr-prose ol{ padding-left:20px; }
  .zr-prose th, .zr-prose td{ padding:8px 10px; }
  .zr-demo__frame{ border-radius:14px; }
  .zr-demo__frame iframe{ height:640px; }
}
