/* Generated: the design system's body-element rules on Ghost's plain HTML, then ghost.css. */
:is(.site-prose > ul, .site-prose > ol){margin:var(--pulse-space-0) var(--pulse-space-0) var(--pulse-space-4);padding-left:var(--pulse-space-5);font-family:var(--pulse-font-sans);font-size:var(--pulse-type-body-size);line-height:var(--pulse-type-body-line);color:var(--pulse-content-primary)}:is(.site-prose > ul, .site-prose > ol) > li{margin-bottom:var(--pulse-space-2)}:is(.site-prose > ul, .site-prose > ol) > li:last-child{margin-bottom:var(--pulse-space-0)}:is(.site-prose > ul, .site-prose > ol) > li::marker{color:var(--pulse-content-secondary)}:is(.site-prose > ul, .site-prose > ol) :is(.site-prose > ul, .site-prose > ol){margin-top:var(--pulse-space-2)}.site-prose > ol > li::marker{font-family:var(--pulse-font-mono);font-weight:var(--pulse-type-weight-semibold);color:var(--pulse-content-link)}:is(.site-prose > ul, .site-prose > ol)[data-kind="plain"]{padding-left:var(--pulse-space-0);list-style:none}:is(.site-prose > ul, .site-prose > ol)[data-kind="check"]{padding-left:var(--pulse-space-0);list-style:none}:is(.site-prose > ul, .site-prose > ol)[data-kind="check"] > li{display:flex;align-items:flex-start;gap:var(--pulse-space-2)}:is(.site-prose > ul, .site-prose > ol)[data-kind="check"] > li > .pulse-icon{margin-top:var(--pulse-space-0-5);color:var(--pulse-feedback-success-content)}.site-prose a:not([class]) .pulse-spinner{--pulse-spinner-arc:currentColor}.site-prose a:not([class]){color:var(--pulse-content-link);text-decoration:underline;text-decoration-thickness:var(--pulse-border-width-hairline);text-underline-offset:var(--pulse-space-0-5);border-radius:var(--pulse-space-0-5);transition:color var(--pulse-duration-fast) var(--pulse-ease-standard)}.site-prose a:not([class]):hover{color:var(--pulse-content-link-hover);text-decoration-thickness:var(--pulse-border-width-emphasis)}.site-prose a:not([class]):active{color:var(--pulse-content-link-hover)}.site-prose a:not([class])[data-kind="quiet"]{text-decoration:none}.site-prose a:not([class])[data-kind="quiet"]:hover{text-decoration:underline}.site-prose a:not([class])[data-surface="inverse"]{color:var(--pulse-content-inverse)}.site-prose a:not([class])[data-surface="inverse"]:focus-visible{outline-color:var(--pulse-focus-ring-color-inverse)}.site-prose a:not([class])[aria-disabled="true"]{color:var(--pulse-content-disabled);text-decoration:none;pointer-events:none}.site-prose a:not([class]):focus-visible{outline:var(--pulse-focus-ring);outline-offset:var(--pulse-focus-ring-offset)}.site-prose a:not([class])[data-surface="inverse"]:focus-visible{outline-color:var(--pulse-focus-ring-color-inverse)}@media print{.site-prose a:not([class])[data-print="url"]::after{content:" (" attr(href) ")";color:var(--pulse-content-secondary);font-size:var(--pulse-type-caption-size)}}.site-prose > h2{margin:0;font-family:var(--pulse-font-sans);font-size:var(--pulse-type-h2-fluid);line-height:var(--pulse-type-h2-line);font-weight:var(--pulse-type-h2-weight);letter-spacing:var(--pulse-type-h2-tracking);color:inherit;text-wrap:balance}@media print{.site-prose > h2{break-after:avoid}}html .pulse-container>.site-prose > h2+*{margin-block-start:var(--site-head-to-content)}html :is(.site-prose > ul, .site-prose > ol)[data-kind=numbered]:not(.site-toc-list)>li::marker{color:var(--pulse-content-primary)}html .site-doc .pulse-container>:is(.site-prose > h2,.pulse-section-header)+*{margin-top:var(--site-head-to-content)}html :is(.site-doc,.site-flow) :is(.site-prose > ul, .site-prose > ol):not([data-kind]),html :is(.site-doc,.site-flow) :is(.site-prose > ul, .site-prose > ol)[data-kind=numbered]{padding-left:var(--pulse-space-6)}html :is(.site-doc,.site-flow) :is(.site-prose > ul, .site-prose > ol):not([data-kind]){list-style:outside}html :is(.site-doc,.site-flow) :is(.site-prose > ul, .site-prose > ol)[data-kind=numbered]{list-style:decimal}html :is(.site-doc,.site-flow) :is(.site-prose > ul, .site-prose > ol):is(:not([data-kind]),[data-kind=numbered])>li+li{margin-top:var(--pulse-space-3)}html .site-related>li>.site-prose a:not([class]){box-sizing:border-box;height:100%;padding:var(--pulse-space-3) var(--pulse-space-4);border:var(--pulse-border-width-hairline) solid var(--pulse-border-subtle);border-radius:var(--pulse-radius-card);text-decoration:none;display:block}html .site-related>li>.site-prose a:not([class]):hover{border-color:var(--pulse-color-blue);text-decoration:underline}html .site-doc [data-block=extra] :is(.site-prose > ul, .site-prose > ol){padding-left:var(--pulse-space-6);list-style:outside}html .site-doc [data-block=extra] :is(.site-prose > ul, .site-prose > ol)>li{font-size:var(--pulse-type-report-body-size);line-height:var(--pulse-type-report-body-line)}html .site-doc [data-block=extra] :is(.site-prose > ul, .site-prose > ol)>li+li{margin-top:var(--pulse-space-3)}html .site-tool-lists :is(.site-prose > ul, .site-prose > ol){margin:var(--pulse-space-0);padding-left:var(--pulse-space-5);list-style:outside}html .site-tool-lists :is(.site-prose > ul, .site-prose > ol)>li{margin-bottom:var(--pulse-space-1)}html [data-block=hub-index] [data-hub-group]>.site-prose > h2{margin-bottom:var(--pulse-space-3);font-size:var(--pulse-type-h4-size);line-height:var(--pulse-type-h4-line)}html [data-block=hub-index] [data-hub-group]>:is(.site-prose > ul, .site-prose > ol){columns:3 15rem;column-gap:var(--pulse-space-8);margin:var(--pulse-space-0);padding-left:var(--pulse-space-0);list-style:none}html [data-block=hub-index] [data-hub-group]>:is(.site-prose > ul, .site-prose > ol)>li{margin:var(--pulse-space-0) var(--pulse-space-0) var(--pulse-space-2);break-inside:avoid}html [data-block=hub-index] [data-hub-group] .site-prose a:not([class]){text-decoration:none}html [data-block=hub-index] [data-hub-group] .site-prose a:not([class]):hover{text-decoration:underline}html [data-block=fold] .site-prose > h2{font-size:var(--pulse-type-h3-size);line-height:var(--pulse-type-h3-line)}
/*
 * Ghost's own content cards, the one part of the blog the site has no design
 * for. Everything else (the page ground, the header and footer, the post and
 * index layouts, the type) comes from the site's stylesheets, built into
 * assets/css/site.css and the generated prose rules ahead of this file
 * (scripts/build-ghost-theme.mjs). Only design-system tokens here, no raw
 * values, as on the site.
 */

/* In-body images: capped at 640 and centred, with their caption under them (T25, section 3). */
html .site-prose > .kg-card {
  margin-block: var(--pulse-space-6);
}
html .site-prose > .kg-image-card {
  max-width: 640px;
  margin-inline: auto;
}
html .site-prose .kg-image-card img,
html .site-prose .kg-gallery-image img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--pulse-radius-card);
}
html .site-prose figcaption {
  margin-top: var(--pulse-space-2);
  font-size: var(--pulse-type-caption-size);
  color: var(--pulse-content-secondary);
  text-align: center;
}

/* The widths Ghost's editor offers. Wide and full break out of the 864 column
   to the site's 1080, never to the viewport: the site has no full-bleed
   layouts (CLAUDE.md, the design system). gscan requires both classes. */
html .site-prose > .kg-width-wide,
html .site-prose > .kg-width-full {
  max-width: none;
  width: min(1080px, 100vw - 2 * var(--site-gutter));
  margin-inline: calc((100% - min(1080px, 100vw - 2 * var(--site-gutter))) / 2);
}

/* Galleries: rows of images, Ghost's own layout. */
html .site-prose .kg-gallery-container {
  display: flex;
  flex-direction: column;
  gap: var(--pulse-space-2);
}
html .site-prose .kg-gallery-row {
  display: flex;
  gap: var(--pulse-space-2);
}

/* Embeds and bookmarks keep to the column. */
html .site-prose .kg-embed-card iframe,
html .site-prose .kg-video-card video {
  max-width: 100%;
}
html .site-prose .kg-bookmark-card a {
  display: block;
  padding: var(--pulse-space-4);
  border: var(--pulse-border-width-hairline) solid var(--pulse-border-subtle);
  border-radius: var(--pulse-radius-card);
  color: inherit;
  text-decoration: none;
}

/* A callout reads as the site's answer card. */
html .site-prose .kg-callout-card {
  display: flex;
  gap: var(--pulse-space-3);
  padding: var(--pulse-space-4);
  border-radius: var(--pulse-radius-card);
  background: var(--pulse-surface-raised);
}
