/*
Theme Name:   Hello Elementor Child
Description:  Blog post and blog listing templates for the Smoothire 2026 site. Redrawn in the Smoothire design system: white page, indigo accent, Schibsted Grotesk over Instrument Sans, with a gradient and depth layer over the flat palette. See DESIGN-AUDIT.md.
Author:       Smoothire
Template:     hello-elementor
Version:      1.2.2
Requires PHP: 7.4
Text Domain:  hello-elementor-child
*/

/* =========================================================================
 * Design tokens.
 *
 * Every value below is lifted from the Smoothire 2026 blocks — SBP is
 * single-blog-post/src/single-blog-post/style.scss, which is the site's own
 * article design, and HDR/FTR are the header and footer regions inside it.
 * No colour literal appears anywhere after this block.
 *
 * Declared on :root rather than on a wrapper because the page shell rules
 * below target <html> and <body>, which sit above any wrapper. The stylesheet
 * is only enqueued on single posts and the blog listings, so nothing leaks
 * onto pages the theme does not draw.
 * ====================================================================== */

:root {
	/* surfaces */
	--shc-page: #ffffff;             /* SBP .sh-blog background */
	--shc-card: #ffffff;             /* SBP toc / card / comment background */
	--shc-surface: #f6f7fb;          /* SBP --sh-surface */
	--shc-placeholder: #f6f7fb;      /* SBP card media background, empty state */

	/* ink */
	--shc-ink: #17163f;              /* SBP --sh-ink, headings */
	--shc-ink-deep: #161543;         /* SBP --sh-ink-deep, footer + code block */
	--shc-body: #3d4657;             /* SBP --sh-body, prose */
	--shc-muted: #66708a;            /* SBP --sh-muted, meta */
	--shc-muted-soft: #8a93a6;       /* SBP --sh-muted-soft, tertiary meta */

	/* lines */
	--shc-border: #e3e7ef;           /* SBP --sh-border */
	--shc-border-strong: #c9d0dd;    /* SBP --sh-border-strong */

	/* accent */
	--shc-primary: #4540dc;          /* SBP --sh-primary */
	--shc-primary-dark: #3733b0;     /* SBP --sh-primary-dark */
	--shc-primary-tint: #edecfb;     /* SBP --sh-primary-tint */
	--shc-primary-tint-hi: #e3e1fa;  /* SBP badge hover */
	--shc-primary-line: rgba(69, 64, 220, 0.35); /* SBP prose underline */
	--shc-primary-ring: rgba(69, 64, 220, 0.14); /* SBP input focus ring */

	/* footer, the one dark region in the design */
	--shc-dark-border: #363275;      /* FTR --sh-dark-border */
	--shc-dark-text: #a6adbf;        /* FTR --sh-dark-text */
	--shc-dark-faint: #8a8fb0;       /* FTR --sh-dark-faint */
	--shc-dark-bright: #e8ebf2;      /* FTR --sh-dark-bright */

	/* callout accents */
	--shc-success: #0e8a5f;          /* SBP --sh-success */
	--shc-success-bg: #eefaf4;       /* SBP is-style-success */
	--shc-success-line: #cbeada;
	--shc-success-ink: #0b5f43;
	--shc-warning: #d97706;          /* SBP is-style-warning */
	--shc-warning-bg: #fff8ed;
	--shc-warning-line: #f6e2c3;
	--shc-warning-ink: #7c4a06;
	--shc-info-line: #ddd8f5;        /* SBP is-style-info */
	--shc-info-ink: #2f2b6b;

	/* effects */
	--shc-shadow-hair: 0 1px 2px rgba(22, 21, 67, 0.05);                                   /* SBP toc / card */
	--shc-shadow-card: 0 1px 2px rgba(22, 21, 67, 0.05), 0 12px 32px rgba(22, 21, 67, 0.09); /* SBP --sh-shadow-card */
	--shc-shadow-lift: 0 1px 2px rgba(22, 21, 67, 0.06), 0 16px 40px rgba(22, 21, 67, 0.12); /* SBP --sh-shadow-lift */
	--shc-shadow-media: 0 1px 2px rgba(22, 21, 67, 0.05), 0 12px 32px rgba(22, 21, 67, 0.09), 0 32px 80px rgba(22, 21, 67, 0.1); /* SBP hero image */
	--shc-shadow-btn: inset 0 1px 0 rgba(255, 255, 255, 0.16), 0 2px 6px rgba(69, 64, 220, 0.28), 0 8px 24px rgba(69, 64, 220, 0.18); /* SBP primary button */
	--shc-shadow-ink: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 1px 2px rgba(22, 21, 67, 0.16); /* SBP ink button */
	--shc-glow: radial-gradient(ellipse at center, rgba(69, 64, 220, 0.07), transparent 62%);    /* SBP hero glow */
	--shc-chrome-blur: rgba(255, 255, 255, 0.88);  /* SBP sticky header */

	/* -------------------------------------------------------------------
	 * Premium layer.
	 *
	 * Nothing new enters the design here. The four colours below are the
	 * accent and the ink above pushed one step lighter or deeper, which is
	 * all a flat colour needs to be drawn as a gradient, and everything
	 * after them is composed from tokens that already existed.
	 * ---------------------------------------------------------------- */

	--shc-primary-lift: #5a56e6;     /* --shc-primary, lightened: gradient head */
	--shc-primary-deep: #302c9e;     /* --shc-primary-dark, deepened: gradient foot */
	--shc-ink-mid: #1d1b52;          /* --shc-ink-deep, lifted: dark panel head */
	--shc-ink-well: #100f34;         /* --shc-ink-deep, deepened: dark panel foot */

	/* gradients */
	--shc-grad-primary: linear-gradient(135deg, var(--shc-primary-lift), var(--shc-primary) 52%, var(--shc-primary-dark));
	--shc-grad-primary-hi: linear-gradient(135deg, var(--shc-primary), var(--shc-primary-dark) 54%, var(--shc-primary-deep));
	--shc-grad-ink: linear-gradient(150deg, var(--shc-ink-mid), var(--shc-ink-deep) 52%, var(--shc-ink-well));
	--shc-grad-tint: linear-gradient(160deg, var(--shc-primary-tint), var(--shc-card) 86%);
	--shc-grad-surface: linear-gradient(170deg, var(--shc-surface), var(--shc-card) 72%);
	--shc-grad-rule: linear-gradient(90deg, transparent, var(--shc-border-strong) 18%, var(--shc-border-strong) 82%, transparent);
	--shc-grad-sheen: linear-gradient(100deg, transparent 26%, rgba(255, 255, 255, 0.26) 50%, transparent 74%);
	--shc-grad-veil: linear-gradient(180deg, rgba(22, 21, 67, 0) 58%, rgba(22, 21, 67, 0.18));

	/* the hero wash, drawn as two offset lobes rather than one centred ellipse */
	--shc-halo:
		radial-gradient(760px 400px at 20% -12%, rgba(69, 64, 220, 0.10), transparent 68%),
		radial-gradient(640px 360px at 84% 4%, rgba(69, 64, 220, 0.07), transparent 70%);

	/* the same wash for the dark CTA panel, where it has to carry over ink */
	--shc-halo-dark:
		radial-gradient(460px 260px at 26% 0%, rgba(90, 86, 230, 0.5), transparent 68%),
		radial-gradient(420px 240px at 78% 12%, rgba(69, 64, 220, 0.34), transparent 70%);

	/* extra depth */
	--shc-shadow-float: 0 2px 4px rgba(22, 21, 67, 0.05), 0 22px 48px rgba(22, 21, 67, 0.13), 0 48px 100px rgba(22, 21, 67, 0.08);
	--shc-shadow-btn-hi: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 4px 10px rgba(69, 64, 220, 0.3), 0 14px 34px rgba(69, 64, 220, 0.26);
	--shc-shadow-chrome: 0 1px 0 rgba(227, 231, 239, 0.9), 0 10px 30px rgba(22, 21, 67, 0.07);
	--shc-ring-hair: inset 0 1px 0 rgba(255, 255, 255, 0.6);   /* top highlight on light panels */
	--shc-ring-dark: inset 0 1px 0 rgba(255, 255, 255, 0.07);  /* top highlight on ink panels */

	/* type */
	--shc-font-display: "Schibsted Grotesk", system-ui, -apple-system, sans-serif; /* SBP headings */
	--shc-font-body: "Instrument Sans", system-ui, -apple-system, sans-serif;      /* SBP body */
	--shc-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; /* SBP code */

	/* layout */
	--shc-container: 1200px;   /* SBP --sh-container */
	--shc-gutter: 32px;        /* SBP --sh-gutter */
	--shc-measure: 780px;      /* SBP --sh-measure, article column */
	--shc-header-h: 64px;      /* SBP --sh-header-h */
	--shc-anchor-offset: 96px; /* header height plus SBP's 32px scroll margin */
	--shc-ease: cubic-bezier(0.23, 1, 0.32, 1); /* SBP --ease-out */
}

/* =========================================================================
 * Page shell.
 *
 * Every rule is gated on `:has(.shc-single)` or `:has(.shc-archive)`, which
 * are true only when one of this theme's templates actually rendered. If an
 * Elementor Single or Archive template ever takes over a view, neither class
 * is printed, none of this applies, and that page is left exactly as
 * Elementor drew it.
 * ====================================================================== */

html:has(.shc-single),
html:has(.shc-archive),
body:has(.shc-single),
body:has(.shc-archive) {
	background: var(--shc-page);
}

/* This theme renders its own header and footer, so the parent theme's chrome
   and anything Turbo H&F Builder injected would otherwise double up. */
body:has(.shc-single) > header.site-header,
body:has(.shc-single) > footer.site-footer,
body:has(.shc-single) .site-header.dynamic-header,
body:has(.shc-single) .site-footer.dynamic-footer,
body:has(.shc-archive) > header.site-header,
body:has(.shc-archive) > footer.site-footer,
body:has(.shc-archive) .site-header.dynamic-header,
body:has(.shc-archive) .site-footer.dynamic-footer {
	display: none;
}

.shc-single,
.shc-archive {
	background: var(--shc-page);
	color: var(--shc-body);
	font-family: var(--shc-font-body);
	font-size: 16px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

.shc-single,
.shc-single *,
.shc-single *::before,
.shc-single *::after,
.shc-archive,
.shc-archive *,
.shc-archive *::before,
.shc-archive *::after,
.shc-chrome,
.shc-chrome *,
.shc-chrome *::before,
.shc-chrome *::after {
	box-sizing: border-box;
}

.shc-single img,
.shc-archive img {
	max-width: 100%;
	height: auto;
}

.shc-single a:focus-visible,
.shc-single summary:focus-visible,
.shc-single button:focus-visible,
.shc-single :where(input, textarea):focus-visible,
.shc-archive a:focus-visible,
.shc-archive button:focus-visible,
.shc-chrome a:focus-visible,
.shc-chrome button:focus-visible {
	outline: 2px solid var(--shc-primary);
	outline-offset: 2px;
	border-radius: 4px;
}

@media (prefers-reduced-motion: no-preference) {

	html:has(.shc-single) {
		scroll-behavior: smooth;
	}
}

.shc-single ::selection,
.shc-archive ::selection {
	background: var(--shc-primary-tint-hi);
	color: var(--shc-ink);
}

/* -------------------------------------------------------------------------
 * Scroll-driven detail. Both effects below are pure CSS on elements that
 * already exist, so they add no markup and no script. A browser without
 * scroll-driven animations simply never paints them and the page is exactly
 * what it was before.
 * ---------------------------------------------------------------------- */

@keyframes shc-progress {

	to {
		transform: scaleX(1);
	}
}

/* `translate` rather than `transform`, so a card that also lifts on hover
   composes the two instead of one cancelling the other. */
@keyframes shc-rise {

	from {
		opacity: 0;
		translate: 0 18px;
	}

	to {
		opacity: 1;
		translate: none;
	}
}

@keyframes shc-settle {

	from {
		opacity: 0;
		scale: 0.985;
	}

	to {
		opacity: 1;
		scale: 1;
	}
}

@supports (animation-timeline: scroll()) {

	/* Reading progress, on the underside of the sticky header. Articles only —
	   a listing has no single length to report. */
	@media (prefers-reduced-motion: no-preference) {

		body:has(.shc-single) .shc-header::after {
			content: "";
			position: absolute;
			left: 0;
			bottom: -1px;
			width: 100%;
			height: 2px;
			transform: scaleX(0);
			transform-origin: 0 50%;
			background: var(--shc-grad-primary);
			animation: shc-progress linear;
			animation-timeline: scroll(root block);
		}
	}

	/* The header earns its shadow on the way down instead of wearing one from
	   the first pixel. */
	.shc-header {
		animation: shc-header-lift linear both;
		animation-timeline: scroll(root block);
		animation-range: 0 140px;
	}

	@keyframes shc-header-lift {

		to {
			box-shadow: var(--shc-shadow-chrome);
		}
	}
}

@supports (animation-timeline: view()) {

	@media (prefers-reduced-motion: no-preference) {

		.shc-card-post,
		.shc-lead,
		.shc-related__title,
		.shc-cta,
		.shc-prose > :where(figure, .wp-block-image, pre, blockquote, .wp-block-pullquote, .shc-table-scroll) {
			animation: shc-rise linear both;
			animation-timeline: view();

			/* Both ends inside `entry`, deliberately. A range that finishes in
			   `cover` is never completed on a page that scrolls less than one
			   viewport, which would leave the element parked at part opacity
			   for good. Finishing in `entry` ties the end of the reveal to the
			   element being fully in view, which is true on every page. */
			animation-range: entry 5% entry 85%;
		}
	}
}

/* Shared eyebrow. SBP sets these small caps labels in the body face rather
   than a mono face, tracked and uppercased. */
.shc-eyebrow {
	display: block;
	font-family: var(--shc-font-body);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--shc-primary);
	margin: 0;
}

/* Arrow inside a link or button, nudged on hover. SBP .sh-arr. */
.shc-arr {
	display: inline-block;
	flex-shrink: 0;
	line-height: 1;
	transition: transform 220ms var(--shc-ease);
}

/* The arrow is used two ways: a span wrapping a glyph, and the class applied
   to the <svg> itself. `svg.shc-arr` is what catches the second — an inline
   SVG that carries a viewBox and no dimensions resolves to the full width of
   its container, which paints a 15px arrow as a block the width of the CTA. */
.shc-arr svg,
svg.shc-arr,
.shc-btn > svg {
	display: block;
	width: 15px;
	height: 15px;
}

a:hover > .shc-arr,
a:focus > .shc-arr,
.shc-btn:hover .shc-arr,
.shc-btn:focus .shc-arr {
	transform: translateX(4px);
}

/* =========================================================================
 * 1. Site chrome. Rendered by inc/partials/, so a post carries the same
 *    header and footer as every marketing page without depending on a plugin.
 * ====================================================================== */

.shc-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--shc-chrome-blur);
	backdrop-filter: saturate(1.4) blur(12px);
	-webkit-backdrop-filter: saturate(1.4) blur(12px);
	border-bottom: 1px solid var(--shc-border);
	font-family: var(--shc-font-body);
}

.shc-header__inner {
	max-width: var(--shc-container);
	margin: 0 auto;
	padding: 15px var(--shc-gutter);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.shc-brand {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
}

.shc-brand img {
	height: 25px;
	width: auto;
}

.shc-wordmark {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: 17px;
	letter-spacing: 0.04em;
	color: var(--shc-ink);
}

.shc-header__nav {
	display: flex;
	align-items: center;
	gap: 28px;
}

.shc-header__nav a,
.shc-header__signin {
	position: relative;
	font-size: 14.5px;
	font-weight: 500;
	color: var(--shc-ink);
	text-decoration: none;
	transition: color 150ms ease;
}

/* An accent rule that opens from the centre. Sits on the type's own baseline
   gap rather than on a border, so nothing in the row moves when it appears. */
.shc-header__nav a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -6px;
	height: 2px;
	border-radius: 2px;
	background: var(--shc-grad-primary);
	transform: scaleX(0);
	transition: transform 240ms var(--shc-ease);
}

.shc-header__nav a:hover,
.shc-header__signin:hover {
	color: var(--shc-primary);
}

.shc-header__nav a:hover::after,
.shc-header__nav a:focus-visible::after {
	transform: scaleX(1);
}

.shc-header__actions {
	display: flex;
	align-items: center;
	gap: 18px;
}

/* ---- Buttons, shared by the chrome, the CTA and the comment form ---- */

.shc-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	overflow: hidden;
	font-family: var(--shc-font-body);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.005em;
	padding: 9px 17px;
	border: 0;
	border-radius: 10px;
	cursor: pointer;
	text-decoration: none;
	isolation: isolate;
	transition: background 180ms var(--shc-ease), box-shadow 240ms var(--shc-ease), transform 200ms var(--shc-ease);
}

/* A light that crosses the face once on hover. One pseudo element, no keyframe
   loop, so it costs a single composited pass and never runs at rest. */
.shc-btn::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--shc-grad-sheen);
	transform: translateX(-120%);
	transition: transform 620ms var(--shc-ease);
}

.shc-btn:hover::after,
.shc-btn:focus-visible::after {
	transform: translateX(120%);
}

.shc-btn:active {
	transform: scale(0.97);
}

.shc-btn--ink {
	background: var(--shc-grad-ink);
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-ink);
}

.shc-btn--ink:hover,
.shc-btn--ink:focus {
	background: var(--shc-grad-primary);
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn);
	transform: translateY(-1px);
}

.shc-btn--primary {
	background: var(--shc-grad-primary);
	color: var(--shc-page);
	font-size: 15px;
	padding: 13px 26px;
	border-radius: 12px;
	box-shadow: var(--shc-shadow-btn);
}

.shc-btn--primary:hover,
.shc-btn--primary:focus {
	background: var(--shc-grad-primary-hi);
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn-hi);
	transform: translateY(-1px);
}

.shc-btn--primary:active,
.shc-btn--ink:active {
	transform: translateY(0) scale(0.98);
}

/* ---- Footer ---- */

.shc-footer {
	position: relative;
	background: var(--shc-grad-ink);
	border-top: 1px solid var(--shc-dark-border);
	font-family: var(--shc-font-body);
	overflow: hidden;
}

/* The same accent wash that opens an article, closing it. */
.shc-footer::before {
	content: "";
	position: absolute;
	inset: -60% -20% auto;
	height: 420px;
	background: var(--shc-glow);
	pointer-events: none;
}

.shc-footer__inner {
	position: relative;
	max-width: var(--shc-container);
	margin: 0 auto;
	padding: 56px var(--shc-gutter) 32px;
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.shc-footer__top {
	display: flex;
	justify-content: space-between;
	gap: 40px;
	flex-wrap: wrap;
}

.shc-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 14px;
	max-width: 300px;
}

.shc-footer__brand p {
	margin: 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--shc-dark-text);
}

.shc-wordmark--footer {
	color: var(--shc-page);
	font-size: 16px;
}

.shc-footer__nav {
	display: flex;
	gap: 56px;
	flex-wrap: wrap;
}

.shc-footer__col {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.shc-footer__col a {
	width: fit-content;
	font-size: 14px;
	color: var(--shc-dark-text);
	text-decoration: none;
	transition: color 180ms var(--shc-ease), transform 220ms var(--shc-ease);
}

.shc-footer__col a:hover,
.shc-footer__col a:focus {
	color: var(--shc-page);
	transform: translateX(3px);
}

.shc-footer__heading {
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--shc-dark-bright);
	margin-bottom: 2px;
}

.shc-footer__bottom {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	border-top: 1px solid var(--shc-dark-border);
	padding-top: 24px;
	flex-wrap: wrap;
}

.shc-footer__bottom span {
	font-size: 13px;
	color: var(--shc-dark-faint);
}

.shc-footer__bottom a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--shc-dark-text);
	text-decoration: none;
	transition: color 180ms var(--shc-ease);
}

.shc-footer__bottom a:hover,
.shc-footer__bottom a:focus {
	color: var(--shc-page);
}

/* =========================================================================
 * 2. Article shell.
 * ====================================================================== */

.shc-single {
	position: relative;
	padding-top: 72px;
	padding-bottom: 96px;
	isolation: isolate;
}

/* The indigo wash SBP puts behind the top of an article. Kept as a backdrop
   rather than its own band, so the title, image and rail all start on the
   same line. */
.shc-single::before {
	content: "";
	position: absolute;
	inset: -320px 0 auto;
	height: 940px;
	background: var(--shc-halo);
	pointer-events: none;
	z-index: -1;
}

.shc-single__container {
	max-width: var(--shc-container);
	margin: 0 auto;
	padding-inline: var(--shc-gutter);
}

/* The row starts below the hero: the article and its CTA on the left, the
   author and share cards in the rail beside them. */
.shc-single__row {
	display: flex;
	flex-direction: column;
	gap: 40px;
	align-items: flex-start;
	margin-top: 56px;
}

.shc-single__main {
	min-width: 0;
	width: 100%;
	max-width: var(--shc-measure);
}

.shc-single__article {
	min-width: 0;
	width: 100%;
}

.shc-single__rail {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* =========================================================================
 * 3. Hero: category, title, standfirst, byline.
 *
 * The opening block runs the full container instead of the article column,
 * and the two column row starts underneath it. That is what lets the title
 * breathe at a size the reading column could not hold, and the image run the
 * width of the page while the text keeps a 780px measure.
 * ====================================================================== */

.shc-hero {
	max-width: 900px;
}

.shc-hero__cat {
	display: inline-flex;
	align-items: center;
	background: var(--shc-primary-tint);
	border: 1px solid var(--shc-info-line);
	border-radius: 999px;
	padding: 5px 14px;
	margin-bottom: 22px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--shc-primary);
	text-decoration: none;
	transition: background 220ms var(--shc-ease), color 180ms var(--shc-ease), box-shadow 220ms var(--shc-ease), transform 220ms var(--shc-ease);
}

.shc-hero__cat:hover,
.shc-hero__cat:focus {
	background: var(--shc-grad-primary);
	border-color: transparent;
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn);
	transform: translateY(-1px);
}

/* Author, date and reading time, on one line under the standfirst. The author
   carries the ink so the eye lands on the name and reads the rest as
   supporting detail. */
.shc-hero__byline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 14px;
	margin: 26px 0 0;
	padding-top: 22px;
	border-top: 1px solid var(--shc-border);
	font-size: 14px;
	color: var(--shc-muted);
}

.shc-hero__byline > * + *::before {
	content: "";
	display: inline-block;
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--shc-border-strong);
	vertical-align: middle;
	margin-right: 14px;
}

.shc-hero__author {
	font-weight: 600;
	color: var(--shc-ink);
}

.shc-title {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(35px, 5vw, 62px);
	line-height: 1.03;
	letter-spacing: -0.032em;
	color: var(--shc-ink);
	margin: 0;
	text-wrap: balance;
	font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
}

.shc-deck {
	font-size: clamp(18px, 1.6vw, 21px);
	line-height: 1.55;
	color: var(--shc-muted);
	margin: 22px 0 0;
	max-width: 58ch;
	text-wrap: pretty;
}

/* =========================================================================
 * 4. Featured image.
 *    The figure is always present, in both states, and its box is identical
 *    either way: same width, same aspect box, same radius, border, shadow and
 *    margins. Only its contents differ, so the article below never moves and
 *    no layout shift is possible.
 *      state A  .shc-media__img         -> the image
 *      state B  .shc-media__placeholder -> a plain surface panel
 *    Both share one rule, so the box cannot drift between the two. The figure
 *    also carries `.shc-media--empty` in state B; nothing styles it, it is
 *    there so a site can target the empty case without editing a template.
 * ====================================================================== */

.shc-media {
	margin: 48px 0 0;
}

.shc-media__img,
.shc-media__placeholder {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 7.4;
	object-fit: cover;
	border: 1px solid var(--shc-border);
	border-radius: 24px;
	box-shadow: var(--shc-shadow-media);
	background: var(--shc-surface);
}

.shc-media__placeholder {
	background: var(--shc-grad-surface);
}

/* The hero settles in rather than snapping on. It is the first thing on the
   page, so it is the one element worth an entrance. */
@media (prefers-reduced-motion: no-preference) {

	.shc-media__img {
		animation: shc-settle 720ms var(--shc-ease) both;
	}
}

/* =========================================================================
 * 5. Table of contents.
 * ====================================================================== */

.shc-toc {
	position: relative;
	margin-top: 40px;
	border: 1px solid var(--shc-border);
	border-radius: 16px;
	background: var(--shc-grad-surface);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
	overflow: hidden;
}

/* A hairline of accent across the top edge, the one mark that tells the
   contents box apart from the callouts further down the article. */
.shc-toc::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 2px;
	background: var(--shc-grad-primary);
	opacity: 0.85;
}

.shc-toc summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 20px;
	cursor: pointer;
	list-style: none;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.11em;
	text-transform: uppercase;
	color: var(--shc-muted);
	transition: color 180ms var(--shc-ease);
}

.shc-toc summary:hover {
	color: var(--shc-ink);
}

/* The rule under the header only exists while the box is open, so a closed
   box is one clean bar rather than a bar with a line hanging off it. */
.shc-toc[open] summary {
	border-bottom: 1px solid var(--shc-border);
}

.shc-toc summary::-webkit-details-marker {
	display: none;
}

.shc-toc summary .shc-eyebrow {
	font-size: inherit;
	letter-spacing: inherit;
	color: inherit;
}

.shc-toc__toggle {
	flex-shrink: 0;
	color: var(--shc-muted-soft);
	font-size: 18px;
	font-weight: 500;
	line-height: 1;
	transition: transform 260ms var(--shc-ease);
}

.shc-toc[open] .shc-toc__toggle {
	transform: rotate(45deg);
}

.shc-toc ol {
	list-style: none;
	margin: 0;
	padding: 10px;
	display: flex;
	flex-direction: column;
	gap: 1px;
	counter-reset: shc-toc;
}

/* Top level entries are numbered from a counter rather than a marker, so the
   numeral can be set in the accent, aligned on a column of its own, and left
   out of the sub-entries entirely. */
.shc-toc nav > ol > li {
	counter-increment: shc-toc;
}

.shc-toc nav > ol > li > a {
	display: grid;
	grid-template-columns: 22px 1fr;
	align-items: baseline;
	gap: 12px;
	font-size: 14px;
	font-weight: 600;
	color: var(--shc-ink);
}

.shc-toc nav > ol > li > a::before {
	content: counter(shc-toc, decimal-leading-zero);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	font-variant-numeric: tabular-nums;
	color: var(--shc-primary);
	transition: color 200ms var(--shc-ease);
}

/* Sub-entries hang off a guide line that starts under the numeral column, so
   the nesting reads without a second set of markers. */
.shc-toc ol ol {
	margin: 4px 0 8px 21px;
	padding: 0 0 0 12px;
	border-left: 1px solid var(--shc-border);
	gap: 0;
	counter-reset: none;
}

.shc-toc a {
	display: block;
	padding: 8px 12px;
	border-radius: 9px;
	font-size: 13.5px;
	line-height: 1.45;
	font-weight: 500;
	color: var(--shc-muted);
	text-decoration: none;
	transition: color 200ms var(--shc-ease), background 200ms var(--shc-ease), transform 200ms var(--shc-ease);
}

.shc-toc a:hover,
.shc-toc a:focus {
	color: var(--shc-ink);
	background: var(--shc-primary-tint);
	transform: translateX(3px);
}

.shc-toc a:hover::before,
.shc-toc a:focus::before {
	color: var(--shc-primary-dark);
}

.shc-toc ol ol a {
	font-size: 13.5px;
	padding: 7px 10px;
}

/* =========================================================================
 * 6. Post content. Every Gutenberg element inherits the design, so no post
 *    ever needs styling by hand. Mirrors SBP's .sh-blog__content scale.
 * ====================================================================== */

.shc-prose {
	margin-top: 0;
	font-size: 18px;
	line-height: 1.78;
	color: var(--shc-body);
	overflow-wrap: break-word;
}

.shc-prose > * {
	margin-block: 0 28px;
}

.shc-prose > :last-child {
	margin-bottom: 0;
}

.shc-prose p {
	text-wrap: pretty;
}

/* The standfirst. Whichever paragraph opens the article — straight after the
   AT A GLANCE callout when there is one — carries one step more weight, which
   is what gives an article a beginning rather than just a top. */
.shc-prose > p:first-of-type,
.shc-prose > .shc-glance + p {
	font-size: 1.09em;
	line-height: 1.68;
	color: var(--shc-ink);
}

.shc-prose :where(h2, h3, h4, h5, h6) {
	font-family: var(--shc-font-display);
	color: var(--shc-ink);
	letter-spacing: -0.018em;
	line-height: 1.2;
	text-wrap: balance;
}

.shc-prose :where(h2, h3, h4, h5, h6)[id] {
	scroll-margin-top: var(--shc-anchor-offset);
}

.shc-prose h2 {
	font-size: clamp(28px, 3.1vw, 38px);
	font-weight: 700;
	letter-spacing: -0.026em;
	margin: 76px 0 18px;
}

/* A short accent rule above every section head. It is the cheapest way to
   give a long article a rhythm the eye can scan, and it costs no markup. */
.shc-prose > h2::before {
	content: "";
	display: block;
	width: 34px;
	height: 3px;
	margin-bottom: 18px;
	border-radius: 3px;
	background: var(--shc-grad-primary);
}

.shc-prose h3 {
	font-size: clamp(21px, 2.2vw, 26px);
	font-weight: 600;
	letter-spacing: -0.02em;
	margin: 52px 0 14px;
}

/* A subsection marker. An article that runs on H3s — one per step, one per
   mistake — reads as an undifferentiated wall without something to break the
   column, and a dot is the quietest mark that does it. */
.shc-prose > h3::before {
	content: "";
	display: inline-block;
	width: 9px;
	height: 9px;
	margin-right: 12px;
	border-radius: 3px;
	background: var(--shc-grad-primary);
	vertical-align: 0.08em;
}

.shc-prose h4 {
	font-size: 19px;
	font-weight: 600;
	margin: 38px 0 10px;
}

.shc-prose h5,
.shc-prose h6 {
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--shc-muted);
	margin: 28px 0 8px;
}

.shc-prose strong,
.shc-prose b {
	font-weight: 600;
	color: var(--shc-ink);
}

/* Same exemption as the lists, plus the theme's own contents box. The TOC is
   injected INTO the content, so it lives inside .shc-prose and was taking the
   body copy link treatment: every entry underlined in accent. It is
   navigation, not prose. */
.shc-prose a:not(.shc-btn, [class*="elementor"], :where(.shc-toc) *) {
	color: var(--shc-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: var(--shc-primary-line);
	transition: text-decoration-color 180ms var(--shc-ease), text-decoration-thickness 180ms var(--shc-ease), color 180ms var(--shc-ease);
}

.shc-prose a:not(.shc-btn, [class*="elementor"], :where(.shc-toc) *):hover,
.shc-prose a:not(.shc-btn, [class*="elementor"], :where(.shc-toc) *):focus {
	color: var(--shc-primary-dark);
	text-decoration-color: var(--shc-primary);
	text-decoration-thickness: 2px;
}

/* ---- Lists. SBP replaces the browser markers with a dot and a numbered
        tile, so nested content lines up on one grid.

   Every selector here skips anything carrying an Elementor class, and the
   reason is the editor. Elementor renders its widget handles as a <ul> INSIDE
   the widget they belong to, so on an Elementor-built post that list lands
   inside .shc-prose: the handle bar turns into a vertical stack, each handle
   is pushed 30px right and given an indigo bullet, and the icons disappear
   under the decoration. The same guard keeps the theme off Elementor's own
   Icon List widget on the published page, which brings its own markers and
   would otherwise show two.  ---- */

.shc-prose :where(ul, ol):not([class*="elementor"], :where(.shc-toc) *) {
	padding-left: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.shc-prose li:not([class*="elementor"], :where(.shc-toc) *) {
	position: relative;
	padding-left: 30px;
}

.shc-prose li > :where(ul, ol):not([class*="elementor"], :where(.shc-toc) *) {
	margin-top: 10px;
}

.shc-prose ul:not([class*="elementor"], :where(.shc-toc) *) > li:not([class*="elementor"], :where(.shc-toc) *)::before {
	content: "";
	position: absolute;
	left: 8px;
	top: 0.66em;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--shc-grad-primary);
	box-shadow: 0 0 0 4px var(--shc-primary-tint);
}

.shc-prose ol:not([class*="elementor"], :where(.shc-toc) *) {
	counter-reset: shc-ol;
}

.shc-prose ol:not([class*="elementor"], :where(.shc-toc) *) > li:not([class*="elementor"], :where(.shc-toc) *) {
	counter-increment: shc-ol;
}

.shc-prose ol:not([class*="elementor"], :where(.shc-toc) *) > li:not([class*="elementor"], :where(.shc-toc) *)::before {
	content: counter(shc-ol);
	position: absolute;
	left: 0;
	top: 0.18em;
	width: 22px;
	height: 22px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 8px;
	background: var(--shc-grad-primary);
	color: var(--shc-page);
	font-family: var(--shc-font-display);
	font-size: 12px;
	font-weight: 700;
	box-shadow: var(--shc-shadow-btn);
}

/* ---- Media ---- */

.shc-prose figure {
	margin-inline: 0;
}

.shc-prose img {
	border-radius: 14px;
	display: block;
	box-shadow: var(--shc-shadow-card);
}

.shc-prose figcaption {
	margin-top: 11px;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--shc-muted);
	text-align: center;
}

.shc-prose :where(.wp-block-image, .wp-block-gallery, .wp-block-embed, .wp-block-video) {
	margin-block: 36px;
}

.shc-prose :where(iframe, video, embed, object) {
	max-width: 100%;
	border-radius: 12px;
	display: block;
}

.shc-prose .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper {
	position: relative;
	aspect-ratio: 16 / 9;
}

.shc-prose .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

/* Inline SVG pasted into a post carries a viewBox and no width or height. An
   <svg> in that state resolves to the full width of its column with a height
   taken from the viewBox ratio, so a 24px icon paints as a block the width of
   the article. `max-width: 100%` cannot catch it because the used width
   already is 100%. Nothing in body copy is meant to be taller than a line, so
   give it a line-sized box and let anything that states its own dimensions
   keep them.

   Elementor's icons are exempt from THIS box and given their own below —
   never left unsized, because an unsized viewBox is the bug this whole rule
   exists to prevent. */
.shc-prose svg:not([class*="elementor"], [class*="e-font-icon"], [class*="eicon"]) {
	width: 1.15em;
	height: 1.15em;
	vertical-align: -0.18em;
	flex-shrink: 0;
}

/* Everything Elementor draws — an Icon widget, an icon inside a button, the
   editor's own widget handles — sits in a box driven by the container's
   font-size. 1em is the value Elementor uses itself, so this agrees with it
   instead of fighting it, and an icon whose size is set in the widget still
   scales because the box is relative. */
.shc-prose :is(.elementor-icon, .elementor-button-icon, .elementor-element-overlay, [class*="elementor-editor"]) svg,
.shc-prose svg:is([class*="e-font-icon"], [class*="eicon"]) {
	width: 1em;
	height: 1em;
	vertical-align: baseline;
	flex-shrink: 0;
}

.shc-prose svg[width],
.shc-prose svg[height] {
	width: auto;
	height: auto;
	max-width: 100%;
}

/* ---- Code ---- */

.shc-prose :where(code, kbd, samp) {
	font-family: var(--shc-font-mono);
	font-size: 0.88em;
}

.shc-prose :not(pre) > code {
	background: var(--shc-primary-tint);
	color: var(--shc-primary-dark);
	border: 1px solid var(--shc-info-line);
	padding: 1px 6px;
	border-radius: 6px;
	white-space: nowrap;
}

.shc-prose pre {
	background: var(--shc-grad-ink);
	color: var(--shc-dark-bright);
	border: 1px solid var(--shc-dark-border);
	border-radius: 14px;
	padding: 24px 26px;
	overflow-x: auto;
	font-family: var(--shc-font-mono);
	font-size: 14px;
	line-height: 1.7;
	box-shadow: var(--shc-shadow-card), var(--shc-ring-dark);
	tab-size: 2;
}

.shc-prose pre code {
	background: none;
	color: inherit;
	padding: 0;
	white-space: pre;
}

.shc-prose :where(.wp-block-code, .wp-block-preformatted) {
	margin-block: 32px;
}

/* ---- Quotes ---- */

.shc-prose blockquote {
	position: relative;
	margin: 40px 0;
	padding: 26px 28px 26px 30px;
	border-left: 3px solid var(--shc-primary);
	border-radius: 4px 14px 14px 4px;
	background: var(--shc-grad-tint);
	font-family: var(--shc-font-display);
	font-size: 19.5px;
	font-weight: 500;
	line-height: 1.55;
	letter-spacing: -0.008em;
	color: var(--shc-ink);
	box-shadow: var(--shc-shadow-hair);
}

/* The opening mark, set large and faint behind the first line. Decorative, so
   it is a pseudo element and never reaches the accessibility tree. */
.shc-prose blockquote::before {
	content: "\201C";
	position: absolute;
	top: 2px;
	right: 18px;
	font-family: var(--shc-font-display);
	font-size: 72px;
	line-height: 1;
	color: var(--shc-primary);
	opacity: 0.14;
	pointer-events: none;
}

.shc-prose blockquote p {
	margin: 0 0 10px;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

.shc-prose blockquote p:last-child {
	margin-bottom: 0;
}

.shc-prose blockquote cite {
	display: block;
	margin-top: 12px;
	font-size: 14px;
	font-style: normal;
	font-weight: 600;
	color: var(--shc-muted);
}

.shc-prose .wp-block-pullquote {
	margin: 48px 0;
	padding: 36px 32px;
	border: 0;
	border-top: 1px solid var(--shc-border);
	border-bottom: 1px solid var(--shc-border);
	text-align: center;
}

/* A pullquote is already a framed block, so the inner quote gives back the
   panel, the radius and the mark it would otherwise have inherited. */
.shc-prose .wp-block-pullquote blockquote {
	border: 0;
	padding: 0;
	margin: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
}

.shc-prose .wp-block-pullquote blockquote::before {
	content: none;
}

.shc-prose .wp-block-pullquote p {
	font-family: var(--shc-font-display);
	font-weight: 600;
	font-size: clamp(21px, 2.3vw, 27px);
	line-height: 1.34;
	letter-spacing: -0.012em;
	color: var(--shc-ink);
	text-wrap: balance;
}

/* ---- Tables ----
   The scroll wrapper alone is not enough on a phone. A table set to width
   100% and nothing else fits itself into whatever space it is given, so it
   squeezes to the viewport and wraps every cell to one word per line rather
   than overflowing and scrolling. min-width is what makes it overflow, and
   overflow is what the wrapper was built to handle. */

.shc-table-scroll {
	margin: 36px 0;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	border: 1px solid var(--shc-border);
	border-radius: 14px;
	background: var(--shc-card);
	box-shadow: var(--shc-shadow-hair);
}

.shc-prose table {
	width: 100%;
	min-width: 560px;
	border-collapse: collapse;
	font-size: 15px;
}

.shc-prose :where(th, td) {
	padding: 13px 16px;
	text-align: left;
	border-bottom: 1px solid var(--shc-border);
}

.shc-prose th {
	background: var(--shc-grad-surface);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--shc-ink);
	white-space: nowrap;
}

.shc-prose tr:last-child :where(th, td) {
	border-bottom: 0;
}

/* Row tracking on a wide table. Pointer devices only — a row that highlights
   under a finger just reads as a mis-tap. */
@media (hover: hover) and (pointer: fine) {

	.shc-prose tbody tr {
		transition: background 160ms var(--shc-ease);
	}

	.shc-prose tbody tr:hover {
		background: var(--shc-surface);
	}
}

/* ---- Separators, buttons and callouts ---- */

/* A rule that fades at both ends rather than butting into the column edges. */
.shc-prose :where(hr, .wp-block-separator) {
	margin-block: 52px;
	height: 1px;
	border: 0;
	background: var(--shc-grad-rule);
	opacity: 0.75;
}

.shc-prose .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	background: var(--shc-grad-primary);
	color: var(--shc-page);
	font-size: 15px;
	font-weight: 600;
	padding: 13px 26px;
	border-radius: 12px;
	text-decoration: none;
	box-shadow: var(--shc-shadow-btn);
	transition: background 180ms var(--shc-ease), box-shadow 240ms var(--shc-ease), transform 200ms var(--shc-ease);
}

.shc-prose .wp-block-button__link:hover,
.shc-prose .wp-block-button__link:focus {
	background: var(--shc-grad-primary-hi);
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn-hi);
	transform: translateY(-1px);
}

.shc-prose :where(.wp-block-media-text, .wp-block-columns) {
	margin-block: 36px;
	gap: 28px;
}

.shc-prose :where(.is-style-note, .is-style-info, .is-style-warning, .is-style-success) {
	position: relative;
	margin-block: 32px;
	padding: 20px 24px 20px 26px;
	border: 1px solid var(--shc-border);
	border-left-width: 3px;
	border-radius: 4px 14px 14px 4px;
	background: var(--shc-surface);
	box-shadow: var(--shc-shadow-hair);
	font-size: 16px;
	line-height: 1.65;
}

.shc-prose :where(.is-style-note, .is-style-info, .is-style-warning, .is-style-success) > :last-child {
	margin-bottom: 0;
}

.shc-prose .is-style-note {
	border-left-color: var(--shc-muted-soft);
}

/* The `border-color` shorthand has to land before the left accent, or it
   resets the side that carries the colour. */
.shc-prose .is-style-info {
	border-color: var(--shc-info-line);
	border-left-color: var(--shc-primary);
	background: var(--shc-primary-tint);
	color: var(--shc-info-ink);
}

.shc-prose .is-style-success {
	border-color: var(--shc-success-line);
	border-left-color: var(--shc-success);
	background: var(--shc-success-bg);
	color: var(--shc-success-ink);
}

.shc-prose .is-style-warning {
	border-color: var(--shc-warning-line);
	border-left-color: var(--shc-warning);
	background: var(--shc-warning-bg);
	color: var(--shc-warning-ink);
}

.shc-pagelinks {
	margin-top: 32px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--shc-muted);
}

/* =========================================================================
 * 7. AT A GLANCE callout. Same treatment as SBP's `is-style-info`, so the
 *    opener reads as one of the design's own callouts.
 * ====================================================================== */

.shc-glance {
	position: relative;
	overflow: hidden;
	margin: 0 0 44px;
	padding: 26px 30px;
	border: 1px solid var(--shc-info-line);
	border-left: 3px solid var(--shc-primary);
	border-radius: 4px 16px 16px 4px;
	background: var(--shc-primary-tint);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
}

.shc-glance::before {
	content: "";
	position: absolute;
	inset: -70% -20% auto auto;
	width: 380px;
	height: 300px;
	background: var(--shc-glow);
	pointer-events: none;
}

.shc-glance > * {
	position: relative;
}

/* Scoped through .shc-prose on purpose. The callout's heading is an eyebrow,
   not a section head, and `.shc-prose h2` is one step more specific than a
   bare `.shc-glance :where(h2)` — without the extra class the heading takes
   the article's h2 size and the callout stops reading as a callout. */
.shc-prose .shc-glance :where(h2, h3, h4, h5, h6),
.shc-glance :where(h2, h3, h4, h5, h6) {
	font-family: var(--shc-font-body);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--shc-primary);
	line-height: 1.4;
	margin: 0;
}

.shc-glance p {
	font-size: 16.5px;
	line-height: 1.65;
	color: var(--shc-info-ink);
	margin: 12px 0 0;
	max-width: none;
}

.shc-glance > :last-child {
	margin-bottom: 0;
}

/* =========================================================================
 * 8. CTA band.
 * ====================================================================== */

/* The one dark panel inside the article. It closes the page the way the
   footer closes the site, so the two read as a pair, and it is the only
   place a reader is asked to do something rather than to read. */
.shc-cta {
	position: relative;
	overflow: hidden;
	margin-top: 72px;
	padding: clamp(36px, 5.4vw, 60px) clamp(24px, 3vw, 44px);
	border: 1px solid var(--shc-ink-mid);
	border-radius: 20px;
	background: var(--shc-grad-ink);
	box-shadow: var(--shc-shadow-float), var(--shc-ring-dark);
	text-align: center;
}

/* Two lobes of accent light behind the type, the dark counterpart of the
   wash at the top of the article. */
.shc-cta::before {
	content: "";
	position: absolute;
	inset: -12% -10% auto;
	height: 440px;
	background: var(--shc-halo-dark);
	pointer-events: none;
}

.shc-cta > * {
	position: relative;
}

.shc-cta .shc-eyebrow {
	color: var(--shc-dark-bright);
	opacity: 0.9;
}

.shc-cta h2 {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(25px, 3.4vw, 37px);
	line-height: 1.1;
	letter-spacing: -0.024em;
	color: var(--shc-page);
	margin: 14px auto 0;
	max-width: 24ch;
	text-wrap: balance;
}

.shc-cta__deck {
	margin: 14px auto 0;
	max-width: 50ch;
	font-size: 16.5px;
	line-height: 1.62;
	color: var(--shc-dark-text);
}

/* On this panel the primary button inverts: the page colour is now the
   brightest thing available, so it is what the main action is drawn in. */
.shc-cta .shc-btn--primary {
	background: var(--shc-page);
	color: var(--shc-ink-deep);
	box-shadow: var(--shc-shadow-card);
}

.shc-cta .shc-btn--primary:hover,
.shc-cta .shc-btn--primary:focus {
	background: var(--shc-page);
	color: var(--shc-primary);
	box-shadow: var(--shc-shadow-lift);
}

.shc-cta__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 12px 22px;
	margin: 28px 0 0;
}

.shc-cta__secondary {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14.5px;
	font-weight: 600;
	color: var(--shc-dark-bright);
	text-decoration: none;
	transition: color 180ms var(--shc-ease);
}

.shc-cta__secondary:hover,
.shc-cta__secondary:focus {
	color: var(--shc-page);
}

/* The focus ring has to be visible against ink, not against the page. */
.shc-cta a:focus-visible {
	outline-color: var(--shc-page);
}

/* =========================================================================
 * 9. Rail cards: author and share.
 * ====================================================================== */

.shc-card {
	border: 1px solid var(--shc-border);
	border-radius: 18px;
	background: var(--shc-card);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
	padding: 24px;
}

.shc-card .shc-eyebrow {
	color: var(--shc-muted);
	margin-bottom: 16px;
}

/* ---- Author ---- */

.shc-author {
	background: var(--shc-grad-tint);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
}

.shc-author__head {
	display: flex;
	align-items: center;
	gap: 14px;
}

.shc-author__avatar {
	display: block;
	flex-shrink: 0;
	width: 56px;
	height: 56px;
	border-radius: 18px;
	overflow: hidden;
	background: var(--shc-card);
	border: 1px solid var(--shc-border);
	box-shadow: 0 0 0 4px var(--shc-card), 0 0 0 5px var(--shc-primary-tint);
}

.shc-author__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Avatars turned off site wide. The tile keeps its size so the card and the
   share box below it do not move. */
.shc-author__avatar--empty {
	background: var(--shc-card);
}

.shc-author__id .shc-eyebrow {
	color: var(--shc-muted);
	margin-bottom: 6px;
}

.shc-author__name {
	font-family: var(--shc-font-display);
	font-weight: 600;
	font-size: 18px;
	line-height: 1.2;
	color: var(--shc-ink);
	margin: 0;
}

.shc-author__role {
	font-size: 13px;
	line-height: 1.45;
	color: var(--shc-muted);
	margin: 4px 0 0;
}

.shc-author__bio {
	font-size: 14.5px;
	line-height: 1.65;
	color: var(--shc-body);
	margin: 16px 0 0;
	text-wrap: pretty;
}

.shc-author__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	margin-top: 16px;
	font-size: 14.5px;
	font-weight: 600;
	color: var(--shc-primary);
	text-decoration: none;
	transition: color 180ms var(--shc-ease);
}

.shc-author__link:hover,
.shc-author__link:focus {
	color: var(--shc-primary-dark);
}

.shc-author__link svg {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}

/* ---- Share ---- */

.shc-share {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.shc-share a,
.shc-share button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 1px solid var(--shc-border);
	border-radius: 10px;
	background: var(--shc-card);
	color: var(--shc-muted);
	transition: color 180ms var(--shc-ease), border-color 180ms var(--shc-ease), background 220ms var(--shc-ease), box-shadow 220ms var(--shc-ease), transform 200ms var(--shc-ease);
}

.shc-share button {
	cursor: pointer;
	font: inherit;
}

.shc-share a:hover,
.shc-share a:focus,
.shc-share button:hover,
.shc-share button:focus {
	color: var(--shc-page);
	border-color: transparent;
	background: var(--shc-grad-primary);
	box-shadow: var(--shc-shadow-btn);
	transform: translateY(-2px);
}

.shc-share a:active,
.shc-share button:active {
	transform: scale(0.94);
}

.shc-share svg {
	width: 16px;
	height: 16px;
}

/* Empty until the share button reports back, so the card does not reserve a
   blank line for a message that is usually absent. */
.shc-share__status {
	margin: 0;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--shc-primary);
}

.shc-share__status:not(:empty) {
	margin-top: 12px;
}

/* =========================================================================
 * 10. Related posts.
 * ====================================================================== */

.shc-related {
	position: relative;
	margin-top: 80px;
	padding-top: 56px;
	border-top: 0;
}

.shc-related::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 1px;
	background: var(--shc-grad-rule);
}

.shc-related__title {
	margin: 0 0 32px;
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(24px, 2.6vw, 30px);
	line-height: 1.12;
	letter-spacing: -0.018em;
	color: var(--shc-ink);
}

.shc-related__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: 20px;
}

.shc-card-post {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--shc-card);
	border: 1px solid var(--shc-border);
	border-radius: 18px;
	overflow: hidden;
	box-shadow: var(--shc-shadow-hair);
	transition: transform 320ms var(--shc-ease), box-shadow 320ms var(--shc-ease), border-color 320ms var(--shc-ease);
}

@media (hover: hover) and (pointer: fine) {

	.shc-card-post:hover,
	.shc-card-post:focus-within {
		transform: translateY(-5px);
		box-shadow: var(--shc-shadow-float);
		border-color: var(--shc-info-line);
	}

	/* The image is the only thing that moves inside the card, and it moves
	   less than the card itself, so the two read as one gesture. */
	.shc-card-post:hover .shc-card-post__img,
	.shc-card-post:focus-within .shc-card-post__img {
		transform: scale(1.05);
	}
}

/* The thumbnail box is always present, in both states, and holds its aspect
   box open before anything loads, so the card height is fixed whether an
   image arrives or not: same box, no layout shift, no CLS. */
.shc-card-post__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	background: var(--shc-surface);
	overflow: hidden;
	border-bottom: 1px solid var(--shc-border);
}

.shc-card-post__media--empty {
	background: var(--shc-grad-surface);
}

/* A veil at the foot of the thumbnail, so a light photograph still separates
   from the white card body below it. */
.shc-card-post__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--shc-grad-veil);
	pointer-events: none;
}

/* Nothing to separate in the empty state, where the veil would only read as
   a smudge across a blank panel. */
.shc-card-post__media--empty::after {
	display: none;
}

.shc-card-post__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	transition: transform 620ms var(--shc-ease);
}

.shc-card-post__body {
	display: flex;
	flex-direction: column;
	gap: 9px;
	padding: 24px;
	flex: 1;
}

.shc-card-post__cat {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--shc-primary);
	margin: 0;
}

.shc-card-post__title {
	font-family: var(--shc-font-display);
	font-weight: 600;
	font-size: 19px;
	line-height: 1.3;
	color: var(--shc-ink);
	margin: 0;
	text-wrap: balance;
}

.shc-card-post__title a {
	color: inherit;
	text-decoration: none;
	transition: color 180ms var(--shc-ease);
}

.shc-card-post__title a:hover,
.shc-card-post__title a:focus {
	color: var(--shc-primary);
}

.shc-card-post__excerpt {
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--shc-body);
	margin: 0;
	text-wrap: pretty;
}

.shc-card-post__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 9px;
	margin: auto 0 0;
	padding-top: 6px;
	font-size: 13px;
	color: var(--shc-muted);
}

.shc-card-post__meta > * + *::before {
	content: "";
	display: inline-block;
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--shc-border-strong);
	vertical-align: middle;
	margin-right: 9px;
}

/* =========================================================================
 * 11. Blog index and post archives.
 *
 * Drawn by template-parts/archive.php. Shares the token block above and the
 * page shell rules at the top of this file, so a reader moving from the list
 * to an article stays in one design.
 * ====================================================================== */

.shc-archive {
	position: relative;
	padding-top: 72px;
	padding-bottom: 96px;
	isolation: isolate;
}

.shc-archive::before {
	content: "";
	position: absolute;
	inset: -320px 0 auto;
	height: 940px;
	background: var(--shc-halo);
	pointer-events: none;
	z-index: -1;
}

.shc-archive__container {
	max-width: var(--shc-container);
	margin: 0 auto;
	padding-inline: var(--shc-gutter);
}

/* ---- Intro ---- */

.shc-archive__intro {
	max-width: 720px;
}

/* The eyebrow is dropped on the main list, so whichever element comes first
   sits flush against the region padding either way. */
.shc-archive__intro > :first-child {
	margin-top: 0;
}

.shc-archive__title {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(34px, 4.4vw, 54px);
	line-height: 1.06;
	letter-spacing: -0.026em;
	color: var(--shc-ink);
	margin: 14px 0 0;
	text-wrap: balance;
}

.shc-archive__deck {
	font-size: 19px;
	line-height: 1.55;
	color: var(--shc-body);
	margin: 16px 0 0;
	max-width: 54ch;
	text-wrap: pretty;
}

/* ---- Category pills ---- */

.shc-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 36px;
	padding-bottom: 32px;
	border-bottom: 1px solid var(--shc-border);
}

.shc-filters__pill {
	display: inline-flex;
	align-items: center;
	background: var(--shc-grad-surface);
	border: 1px solid var(--shc-border);
	border-radius: 999px;
	padding: 7px 15px;
	font-size: 13px;
	font-weight: 600;
	color: var(--shc-body);
	text-decoration: none;
	transition: border-color 180ms var(--shc-ease), color 180ms var(--shc-ease), background 200ms var(--shc-ease), box-shadow 220ms var(--shc-ease), transform 200ms var(--shc-ease);
}

.shc-filters__pill:hover,
.shc-filters__pill:focus {
	color: var(--shc-primary);
	border-color: var(--shc-info-line);
	background: var(--shc-primary-tint);
	transform: translateY(-1px);
}

.shc-filters__pill.is-current {
	background: var(--shc-grad-primary);
	border-color: transparent;
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn);
}

/* ---- Lead card ----
   One wide card at the head of page one. Stacked by default; the image moves
   beside the text at the desktop breakpoint. */

.shc-lead {
	display: grid;
	gap: 24px;
	margin-top: 48px;
	padding-bottom: 48px;
	border-bottom: 1px solid var(--shc-border);
}

.shc-lead__media {
	display: block;
	position: relative;
	overflow: hidden;
	border: 1px solid var(--shc-border);
	border-radius: 18px;
	background: var(--shc-surface);
	aspect-ratio: 16 / 9;
	box-shadow: var(--shc-shadow-media);
	transition: box-shadow 320ms var(--shc-ease);
}

.shc-lead__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border: 0;
	border-radius: 0;
	transition: transform 720ms var(--shc-ease);
}

@media (hover: hover) and (pointer: fine) {

	.shc-lead:hover .shc-lead__img {
		transform: scale(1.04);
	}

	.shc-lead:hover .shc-lead__media {
		box-shadow: var(--shc-shadow-float);
	}
}

/* No image found. A plain panel holding exactly the space the image would
   have taken, so the row below never moves. No icon, no text, no <img>. */
.shc-lead__media--empty {
	background: var(--shc-placeholder);
}

.shc-lead__body {
	align-self: center;
}

.shc-lead__cat {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--shc-primary);
	margin: 0;
}

.shc-lead__title {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(24px, 3vw, 34px);
	line-height: 1.14;
	letter-spacing: -0.022em;
	margin: 14px 0 0;
	text-wrap: balance;
}

.shc-lead__title a {
	color: var(--shc-ink);
	text-decoration: none;
	transition: color 180ms var(--shc-ease);
}

.shc-lead__title a:hover,
.shc-lead__title a:focus {
	color: var(--shc-primary);
}

.shc-lead__excerpt {
	font-size: 16.5px;
	line-height: 1.65;
	color: var(--shc-body);
	margin: 14px 0 0;
	max-width: 60ch;
	text-wrap: pretty;
}

.shc-lead__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 9px;
	margin: 18px 0 0;
	font-size: 13px;
	color: var(--shc-muted);
}

.shc-lead__meta > * + *::before {
	content: "";
	display: inline-block;
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--shc-border-strong);
	vertical-align: middle;
	margin-right: 9px;
}

/* ---- Grid ---- */

.shc-archive__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 20px;
	margin-top: 48px;
}

.shc-archive__empty {
	margin-top: 48px;
	font-size: 17px;
	color: var(--shc-muted);
}

/* ---- Pagination ---- */

.shc-pager {
	margin-top: 56px;
	padding-top: 32px;
	border-top: 1px solid var(--shc-border);
}

.shc-pager__list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.shc-pager .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	padding: 8px 14px;
	border: 1px solid var(--shc-border);
	border-radius: 10px;
	background: var(--shc-card);
	font-size: 14px;
	font-weight: 600;
	color: var(--shc-body);
	text-decoration: none;
	transition: color 180ms var(--shc-ease), border-color 180ms var(--shc-ease), background 180ms var(--shc-ease), box-shadow 220ms var(--shc-ease), transform 200ms var(--shc-ease);
}

.shc-pager a.page-numbers:hover,
.shc-pager a.page-numbers:focus {
	color: var(--shc-primary);
	border-color: var(--shc-info-line);
	background: var(--shc-primary-tint);
	transform: translateY(-1px);
}

.shc-pager .page-numbers.current {
	background: var(--shc-grad-primary);
	border-color: transparent;
	color: var(--shc-page);
	box-shadow: var(--shc-shadow-btn);
}

/* The ellipsis core prints between distant page numbers is not a control, so
   it loses the box and keeps only the type. */
.shc-pager .page-numbers.dots {
	border-color: transparent;
	background: none;
	min-width: 0;
	padding: 8px 4px;
	color: var(--shc-muted-soft);
}

.shc-archive .shc-cta {
	margin-top: 64px;
}

/* =========================================================================
 * 12. Comments.
 *
 * Selectors follow the default comment walker rather than a custom callback,
 * so threading, the awaiting-moderation notice and the reply link all arrive
 * already wired and only need dressing.
 * ====================================================================== */

.shc-comments {
	margin-top: 80px;
	padding-top: 56px;
	border-top: 1px solid var(--shc-border);
}

.shc-comments__title,
.shc-comments .comment-reply-title {
	font-family: var(--shc-font-display);
	font-weight: 700;
	font-size: clamp(22px, 2.4vw, 28px);
	line-height: 1.14;
	letter-spacing: -0.018em;
	color: var(--shc-ink);
	margin: 0;
}

.shc-comments__list,
.shc-comments .children {
	list-style: none;
	margin: 32px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 18px;
}

/* Replies step in once and pick up a rule, so depth reads without indenting
   so far that a threaded comment runs out of column. */
.shc-comments .children {
	margin: 18px 0 0;
	padding-left: 28px;
	border-left: 1px solid var(--shc-border);
}

.shc-comments .comment-body {
	padding: 22px 24px;
	border: 1px solid var(--shc-border);
	border-radius: 18px;
	background: var(--shc-card);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
	transition: box-shadow 260ms var(--shc-ease), border-color 260ms var(--shc-ease);
}

@media (hover: hover) and (pointer: fine) {

	.shc-comments .comment-body:hover {
		border-color: var(--shc-border-strong);
		box-shadow: var(--shc-shadow-card);
	}
}

.shc-comments .comment-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
}

.shc-comments .comment-author {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 15px;
	color: var(--shc-ink);
}

.shc-comments .comment-author .avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--shc-surface);
}

.shc-comments .comment-author .fn {
	font-weight: 600;
	font-style: normal;
	color: var(--shc-ink);
}

.shc-comments .comment-author .says {
	display: none;
}

.shc-comments .comment-metadata,
.shc-comments .comment-metadata a {
	font-size: 12.5px;
	color: var(--shc-muted);
	text-decoration: none;
}

.shc-comments .comment-metadata a:hover,
.shc-comments .comment-metadata a:focus {
	color: var(--shc-primary);
}

.shc-comments .comment-content {
	margin-top: 13px;
	font-size: 15.5px;
	line-height: 1.7;
	color: var(--shc-body);
}

.shc-comments .comment-content p {
	margin: 0 0 12px;
}

.shc-comments .comment-content > :last-child {
	margin-bottom: 0;
}

.shc-comments .comment-awaiting-moderation {
	display: block;
	margin-top: 10px;
	font-size: 13.5px;
	font-style: italic;
	color: var(--shc-warning);
}

.shc-comments .reply {
	margin-top: 13px;
}

.shc-comments .comment-reply-link {
	font-size: 13.5px;
	font-weight: 600;
	color: var(--shc-primary);
	text-decoration: none;
}

.shc-comments .comment-reply-link:hover,
.shc-comments .comment-reply-link:focus {
	color: var(--shc-primary-dark);
}

.shc-comments__closed {
	margin-top: 24px;
	font-size: 14.5px;
	color: var(--shc-muted);
}

/* ---- Form ---- */

.shc-comments .comment-respond {
	margin-top: 44px;
	padding: 32px;
	border: 1px solid var(--shc-border);
	border-radius: 20px;
	background: var(--shc-grad-surface);
	box-shadow: var(--shc-shadow-hair), var(--shc-ring-hair);
}

.shc-comments .comment-reply-title {
	font-size: 21px;
	font-weight: 600;
}

.shc-comments .comment-reply-title small {
	display: inline-block;
	margin-left: 12px;
	font-size: 13.5px;
	font-weight: 600;
}

.shc-comments .comment-reply-title small a {
	color: var(--shc-primary);
	text-decoration: none;
}

.shc-comments__note,
.shc-comments .comment-notes,
.shc-comments .logged-in-as {
	margin: 12px 0 0;
	font-size: 13.5px;
	color: var(--shc-muted);
}

.shc-comments .comment-form p {
	margin: 18px 0 0;
}

.shc-comments .comment-form label {
	display: block;
	margin-bottom: 7px;
	font-size: 13.5px;
	font-weight: 600;
	color: var(--shc-ink);
}

.shc-comments .comment-form input[type="text"],
.shc-comments .comment-form input[type="email"],
.shc-comments .comment-form input[type="url"],
.shc-comments .comment-form textarea {
	width: 100%;
	padding: 12px 14px;
	font-family: var(--shc-font-body);
	font-size: 15px;
	line-height: 1.6;
	color: var(--shc-body);
	background: var(--shc-card);
	border: 1px solid var(--shc-border);
	border-radius: 10px;
	transition: border-color 180ms var(--shc-ease), box-shadow 180ms var(--shc-ease);
}

.shc-comments .comment-form textarea {
	resize: vertical;
	min-height: 130px;
	line-height: 1.65;
}

.shc-comments .comment-form :where(input, textarea):focus {
	outline: none;
	border-color: var(--shc-primary);
	box-shadow: 0 0 0 3px var(--shc-primary-ring);
}

.shc-comments .comment-form :where(input, textarea)::placeholder {
	color: var(--shc-muted-soft);
}

/* The consent checkbox is the one row that must not stretch. */
.shc-comments .comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
	gap: 9px;
}

.shc-comments .comment-form-cookies-consent input {
	width: auto;
	margin-top: 3px;
	accent-color: var(--shc-primary);
}

.shc-comments .comment-form-cookies-consent label {
	margin: 0;
	font-size: 13.5px;
	font-weight: 400;
	color: var(--shc-muted);
}

.shc-comments .form-submit {
	margin-top: 24px;
}

.shc-comments .form-submit .shc-btn {
	cursor: pointer;
	font-size: 15px;
	padding: 13px 26px;
	border-radius: 12px;
}

.shc-comments .shc-pager {
	margin-top: 32px;
	padding-top: 0;
	border-top: 0;
}

/* =========================================================================
 * 13. FAQ accordion.
 *
 * Built by inc/faq.php from the question and answer paragraphs the content
 * arrives with. Native <details>, like the table of contents, so it opens and
 * closes, takes keyboard focus and is searchable in page without a line of
 * JavaScript.
 * ====================================================================== */

.shc-faq {
	margin-top: 28px;
	border: 1px solid var(--shc-border);
	border-radius: 18px;
	background: var(--shc-card);
	box-shadow: var(--shc-shadow-card), var(--shc-ring-hair);
	overflow: hidden;
}

.shc-faq__intro {
	margin: 0;
	padding: 20px 24px;
	font-size: 16px;
	line-height: 1.7;
	color: var(--shc-body);
	border-bottom: 1px solid var(--shc-border);
}

.shc-faq__item + .shc-faq__item {
	border-top: 1px solid var(--shc-border);
}

.shc-faq__q {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 18px;
	padding: 20px 24px;
	cursor: pointer;
	font-family: var(--shc-font-display);
	font-weight: 600;
	font-size: 17px;
	line-height: 1.4;
	color: var(--shc-ink);
	list-style: none;
	transition: color 180ms var(--shc-ease), background 180ms var(--shc-ease);
}

/* Both are needed: the first hides the marker in Safari, the second in
   Chrome and Firefox. */
.shc-faq__q::-webkit-details-marker {
	display: none;
}

.shc-faq__q::marker {
	content: "";
}

.shc-faq__q:hover,
.shc-faq__item[open] > .shc-faq__q {
	color: var(--shc-primary);
	background: var(--shc-surface);
}

.shc-faq__item[open] > .shc-faq__q {
	background: var(--shc-grad-tint);
}

/* A plus that loses its upright stroke when the row opens, so one element
   carries both states and there is no second icon to keep in sync. */
.shc-faq__mark {
	position: relative;
	flex-shrink: 0;
	width: 14px;
	height: 14px;
	margin-top: 6px;
	color: var(--shc-primary);
}

.shc-faq__mark::before,
.shc-faq__mark::after {
	content: "";
	position: absolute;
	background: currentColor;
	border-radius: 1px;
}

.shc-faq__mark::before {
	inset: 6px 0 auto 0;
	height: 2px;
}

.shc-faq__mark::after {
	inset: 0 6px 0 6px;
	transition: transform 200ms var(--shc-ease);
}

.shc-faq__item[open] .shc-faq__mark::after {
	transform: scaleY(0);
}

.shc-faq__a {
	padding: 0 24px 22px;
}

.shc-faq__a p {
	margin: 0;
	font-size: 16px;
	line-height: 1.75;
	color: var(--shc-body);
	max-width: none;
}

.shc-faq__a p + p {
	margin-top: 12px;
}

/* =========================================================================
 * 14. Breakpoints. Mobile first; 360 is covered by the base rules.
 * ====================================================================== */

@media (min-width: 700px) {

	.shc-archive__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1025px) {

	.shc-single__row {
		flex-direction: row;
		gap: 64px;
	}

	.shc-single__main {
		flex: 1;
		max-width: none;
		min-width: 0;
	}

	/* Beside the featured image, and it stays there while the article
	   scrolls. SBP uses a 250px rail against a 780px measure. */
	.shc-single__rail {
		flex: 0 0 clamp(250px, 23%, 300px);
		width: auto;
		position: sticky;
		top: calc(var(--shc-header-h) + 24px);
		align-self: flex-start;
	}

	.shc-archive__grid {
		grid-template-columns: repeat(3, 1fr);
	}

	.shc-lead {
		grid-template-columns: 1.05fr 1fr;
		gap: 40px;
		align-items: center;
	}
}

@media (max-width: 1099px) {

	.shc-header__nav {
		display: none;
	}
}

@media (max-width: 781px) {

	:root {
		--shc-gutter: 20px;
	}

	.shc-single,
	.shc-archive {
		padding-top: 44px;
		padding-bottom: 64px;
	}

	.shc-media__img,
	.shc-media__placeholder {
		aspect-ratio: 16 / 10;
	}

	.shc-prose {
		font-size: 17px;
	}

	.shc-prose > h2::before {
		width: 28px;
		margin-bottom: 14px;
	}

	.shc-prose blockquote {
		padding: 22px 22px 22px 24px;
		font-size: 18.5px;
	}

	.shc-prose blockquote::before {
		font-size: 56px;
		right: 12px;
	}

	.shc-comments .comment-respond {
		padding: 22px;
	}

	.shc-comments .children {
		padding-left: 14px;
	}

	.shc-comments .comment-body {
		padding: 18px;
	}

	.shc-footer__nav {
		gap: 32px;
	}
}

@media (max-width: 600px) {

	/* Cells give back the horizontal room they can spare, so a table that has
	   to scroll scrolls as little as possible. */
	.shc-prose :where(th, td) {
		padding: 11px 13px;
	}

	.shc-prose table {
		font-size: 14.5px;
	}

	.shc-faq__q {
		font-size: 16px;
	}
}

@media (prefers-reduced-motion: reduce) {

	.shc-single *,
	.shc-single *::before,
	.shc-single *::after,
	.shc-archive *,
	.shc-chrome * {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	/* Nothing translates, scales or sweeps. Colour, shadow and border changes
	   are kept, since they carry the state without any motion. */
	.shc-card-post:hover,
	.shc-card-post:focus-within,
	.shc-card-post:hover .shc-card-post__img,
	.shc-lead:hover .shc-lead__img,
	.shc-btn:active,
	.shc-btn:hover,
	.shc-share a:hover,
	.shc-share button:hover,
	.shc-hero__cat:hover,
	.shc-filters__pill:hover,
	.shc-pager a.page-numbers:hover,
	.shc-footer__col a:hover,
	.shc-header__nav a:hover::after {
		transform: none;
	}

	.shc-toc a:hover,
	.shc-toc a:focus {
		transform: none;
	}

	/* The sweep is the whole point of this element, so it is removed rather
	   than frozen — parked at identity it would sit on the button as a wash. */
	.shc-btn::after {
		display: none;
	}
}

/* =========================================================================
 * 15. Print.
 *
 * An article is the one thing on this site a reader is likely to put on
 * paper, so the page is rebuilt for it rather than left to the browser:
 * navigation, the call to action, sharing and the contents box are all
 * screen furniture and come off, the column runs full width, and every
 * shadow, wash and tint is dropped so nothing prints as grey fog.
 * ====================================================================== */

@media print {

	.shc-header,
	.shc-footer,
	.shc-single__rail,
	.shc-cta,
	.shc-toc,
	.shc-comments,
	.shc-related,
	.shc-pager,
	.shc-filters {
		display: none !important;
	}

	.shc-single,
	.shc-archive {
		padding: 0;
	}

	.shc-single::before,
	.shc-archive::before,
	.shc-glance::before,
	.shc-prose blockquote::before {
		display: none;
	}

	/* A print job has no scroll timeline, so anything driven by one would be
	   held at the start of its reveal and print blank. Everything is put back
	   to its finished state before the page is composed. */
	.shc-single *,
	.shc-archive * {
		animation: none !important;
		opacity: 1 !important;
		translate: none !important;
		scale: none !important;
	}

	.shc-single__container,
	.shc-archive__container {
		max-width: none;
		padding: 0;
	}

	.shc-single__main {
		max-width: none;
	}

	.shc-prose {
		font-size: 11.5pt;
		line-height: 1.55;
		color: var(--shc-ink);
	}

	.shc-media__img,
	.shc-media__placeholder,
	.shc-prose img,
	.shc-prose pre,
	.shc-glance,
	.shc-faq,
	.shc-table-scroll {
		box-shadow: none;
	}

	.shc-prose pre {
		background: var(--shc-page);
		color: var(--shc-ink);
		border: 1px solid var(--shc-border-strong);
	}

	/* A URL a reader cannot click is worth printing next to its link text. */
	.shc-prose a:not(.shc-btn)::after {
		content: " (" attr(href) ")";
		font-size: 0.82em;
		color: var(--shc-muted);
		word-break: break-all;
	}

	.shc-prose a[href^="#"]::after {
		content: "";
	}

	/* Nothing splits across a page break that reads as one unit. */
	.shc-prose :where(h2, h3, h4) {
		break-after: avoid;
	}

	.shc-prose :where(figure, pre, blockquote, table, .shc-glance, .shc-faq__item) {
		break-inside: avoid;
	}
}
