/*
Theme Name: Hadjipetrou Cardiology
Theme URI: https://hadjipetroucardiology.com.au
Author: Databox Solutions
Author URI: https://databoxsolutions.com.au
Description: The practice site for Hadjipetrou Cardiology, Brisbane. Photography-led, typographic, and built for speed: one stylesheet, one self-hosted variable font, one small deferred script, no framework, no page builder, no third-party requests. Structured data covers MedicalClinic, Physician and MedicalProcedure. Built on the LocalPro engine by Databox Solutions.
Version: 1.1.1
Requires at least: 6.2
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: hadjipetrou
Tags: custom-logo, custom-menu, featured-images, translation-ready, block-styles, wide-blocks, accessibility-ready
*/

/* ==========================================================================
   1. Tokens

   Colour, radius, container and font tokens are overridden at runtime by the
   Customizer (printed inline in <head>, so there is no second request). The
   values here are the design-system defaults and the fallback if a theme mod
   is ever cleared.
   ========================================================================== */

:root {
	/* Brand — gradient stops taken verbatim from the logo mark. */
	--hc-brand: #db1a5c;            /* crimson — the single action colour   */
	--hc-brand-deep: #853787;       /* purple  — hover moves along the ramp */
	--hc-brand-soft: #fdeaf0;
	--hc-accent: #01a3d7;           /* cyan    — focus rings, info only     */

	--hc-dark: #12263a;             /* ink navy */
	--hc-dark-deep: #0b1a26;

	--hc-surface: #ffffff;
	--hc-surface-alt: #f2f5f8;
	--hc-ink: #12263a;
	--hc-ink-2: #33454f;
	--hc-ink-3: #6d7d8a;
	--hc-line: #d7dee5;

	/* The gradient is a rule, a mark and an indicator. Never a background
	   wash, and never behind text. */
	--hc-gradient: linear-gradient(90deg, var(--hc-accent) 0%, #3184bb 18%, var(--hc-brand) 50%, #9d2e7a 82%, var(--hc-brand-deep) 100%);

	/* Scrims — the only way text ever sits on a photograph. */
	/*
	 * Two layers. The vertical one anchors the bottom of the frame; the
	 * horizontal one protects the text, which always sits bottom-left. On a
	 * bright photograph the vertical gradient alone is thinnest exactly where
	 * the title sits — measured at 2.4:1 against a white wall, under the 3:1
	 * minimum for large text. The horizontal layer fades out by 70% so the
	 * right of the image, where the subject usually is, stays untouched.
	 */
	--hc-scrim-hero:
		linear-gradient(90deg, rgba(11, 26, 38, 0.84) 0%, rgba(11, 26, 38, 0.55) 42%, rgba(11, 26, 38, 0) 70%),
		linear-gradient(180deg, rgba(11, 26, 38, 0.28) 0%, rgba(11, 26, 38, 0.46) 42%, rgba(11, 26, 38, 0.78) 100%);
	--hc-scrim-flat: linear-gradient(180deg, rgba(11, 26, 38, 0.55) 0%, rgba(11, 26, 38, 0.72) 100%);
	--hc-glass: rgba(255, 255, 255, 0.14);
	--hc-on-ink: rgba(255, 255, 255, 0.20);

	--hc-radius-chrome: 4px;
	--hc-radius-input: 8px;
	--hc-radius-card: 14px;
	--hc-radius-panel: 24px;
	--hc-radius-btn: 999px;

	--hc-container: 1280px;
	--hc-gutter: clamp(20px, 5vw, 56px);
	--hc-pad-section: clamp(64px, 9vw, 128px);
	--hc-pad-band: clamp(56px, 7vw, 96px);

	--hc-font-body: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--hc-font-display: var(--hc-font-body);
	--hc-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	/* Shadow belongs to photographs, not to content cards. */
	--hc-shadow-image: 0 24px 60px -28px rgba(11, 26, 38, 0.45), 0 2px 8px -4px rgba(11, 26, 38, 0.12);
	--hc-shadow-pop: 0 10px 34px -12px rgba(11, 26, 38, 0.28);
	--hc-shadow-focus: 0 0 0 3px rgba(1, 163, 215, 0.45);

	--hc-step: 140ms cubic-bezier(0.2, 0.6, 0.2, 1);   /* interface feedback */
	--hc-ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);
	--hc-dur-zoom: 520ms;
	--hc-dur-reveal: 900ms;
}

@media (prefers-reduced-motion: reduce) {
	:root {
		--hc-step: 1ms;
		--hc-dur-zoom: 1ms;
		--hc-dur-reveal: 1ms;
	}
}

/* ==========================================================================
   2. Base
   ========================================================================== */

*,
*::before,
*::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	scroll-padding-top: 96px;
}

@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}

body {
	margin: 0;
	background: var(--hc-surface);
	color: var(--hc-ink-2);
	font-family: var(--hc-font-body);
	font-size: 17px;
	font-weight: 400;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

img, svg, video, iframe { max-width: 100%; }
img, svg, video { height: auto; display: block; }

/* Every image is cropped, never squashed. */
img { object-fit: cover; }

a {
	color: var(--hc-brand);
	text-decoration: none;
	transition: color var(--hc-step);
}
a:hover { color: var(--hc-brand-deep); }

h1, h2, h3, h4, h5, h6 {
	margin: 0;
	font-family: var(--hc-font-display);
	font-weight: 600;
	letter-spacing: -0.02em;
	line-height: 1.14;
	color: var(--hc-ink);
	text-wrap: balance;
}

p { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }

ul, ol { margin: 0; padding: 0; }
figure, blockquote, dl, dd { margin: 0; }

.hc-plain, .hc-nav__list, .hc-drawer__list, .hc-badges, .hc-footer__links,
.hc-footer__legal, .hc-socials, .hc-sidebar__list, .hc-logos__row, .hc-results,
.hc-scope__grid, .hc-tiles, .hc-gallery, .hc-proc__toc-list, .hc-hours,
.hc-slides__dots, .hc-people, .hc-contactblk__list { list-style: none; }

button { font: inherit; cursor: pointer; }

hr {
	height: 1px;
	margin: clamp(32px, 5vw, 56px) 0;
	border: 0;
	background: var(--hc-line);
}

/* The focus ring is cyan, 3px, and is never removed. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: none;
	box-shadow: var(--hc-shadow-focus);
	border-radius: var(--hc-radius-chrome);
}

::selection { background: var(--hc-brand); color: #fff; }

.screen-reader-text,
.hc-search__label span {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.hc-skip {
	position: absolute;
	top: -60px;
	left: 12px;
	z-index: 200;
	padding: 12px 20px;
	background: var(--hc-ink);
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	border-radius: var(--hc-radius-input);
	transition: top var(--hc-step);
}
.hc-skip:focus { top: 12px; color: #fff; }

.hc-container {
	width: 100%;
	max-width: var(--hc-container);
	margin: 0 auto;
	padding-inline: var(--hc-gutter);
}

/* Section rhythm. A page alternates white → tint → white, with at most one
   ink band plus the closing contact band. */
.hc-section { padding-block: var(--hc-pad-section); }
.hc-section--tint { background: var(--hc-surface-alt); }
.hc-section--ink {
	background: var(--hc-dark);
	color: rgba(255, 255, 255, 0.82);
}
.hc-section--ink h1, .hc-section--ink h2,
.hc-section--ink h3, .hc-section--ink h4 { color: #fff; }
.hc-section--band { padding-block: var(--hc-pad-band); }

/* A lead-in paragraph is not a section in its own right — it introduces the
   one below it, so it sits closer to it and shares the container's left edge
   rather than floating in a centred column of its own. */
.hc-section--lead { padding-block: clamp(40px, 5vw, 72px) clamp(32px, 4vw, 56px); }
.hc-lead--measure { max-width: 60ch; }

/*
 * Vertical rhythm between blocks.
 *
 * `.hc-section` and `.hc-panel` are one family here — a page mixes them
 * freely, so the rules have to treat them alike or the gap doubles wherever
 * the two meet.
 *
 * 1. Two blocks on the same ground share one gap, keeping the rhythm at 128px
 *    instead of stacking two paddings into 256px.
 * 2. Where the background changes, the gap is NOT shared: collapsing it would
 *    leave the next block's first element sitting on the seam.
 *
 * Both rules carry the same specificity, so source order decides — (2) must
 * stay below (1).
 */
:is(.hc-section, .hc-panel) + :is(.hc-section, .hc-panel):not(.hc-section--tint):not(.hc-section--ink):not(.hc-panel--tint):not(.hc-panel--ink) {
	padding-top: 0;
}

:is(.hc-section--tint, .hc-panel--tint, .hc-section--ink, .hc-panel--ink) + :is(.hc-section, .hc-panel):not(.hc-section--tint):not(.hc-section--ink):not(.hc-panel--tint):not(.hc-panel--ink) {
	padding-top: var(--hc-pad-section);
}

:is(.hc-section--tint, .hc-panel--tint) + :is(.hc-section--tint, .hc-panel--tint) { padding-top: 0; }

/*
 * `content-visibility: auto` was tried here and removed. It estimates the
 * height of skipped sections, which makes in-page anchor scrolling — the
 * procedure pages' table of contents — land in the wrong place. The pages are
 * 6–10 KB of HTML with natively lazy images, so there was little left to win.
 */

/* ==========================================================================
   3. Type
   ========================================================================== */

/* Three tracking levels only: 0 for body, .22em for eyebrows, .34em for the
   logotype descriptor. */
.hc-eyebrow {
	margin: 0 0 18px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-brand);
}
.hc-eyebrow--light { color: #fff; }
.hc-eyebrow--muted { color: var(--hc-ink-3); }

.hc-sec-head { max-width: min(680px, 100%); margin-bottom: clamp(36px, 5vw, 64px); }
.hc-sec-head--center { max-width: min(760px, 100%); margin-inline: auto; text-align: center; }

.hc-sec-title { font-size: clamp(1.75rem, 3.2vw, 2.75rem); }

/* Lead paragraph — Light, larger, looser. The one place weight 300 is used. */
.hc-sec-sub, .hc-lead {
	margin: 20px 0 0;
	font-size: clamp(1.0625rem, 1.35vw, 1.375rem);
	font-weight: 300;
	line-height: 1.65;
	color: var(--hc-ink-2);
}
.hc-section--ink .hc-sec-sub { color: rgba(255, 255, 255, 0.78); }

.hc-accent { color: var(--hc-brand); }

/* A 34×3px gradient rule. The gradient's only decorative role. */
.hc-rule {
	width: 34px;
	height: 3px;
	border: 0;
	margin: 0 0 22px;
	background: var(--hc-gradient);
	border-radius: 2px;
}
.hc-rule--wide { width: 64px; }

.hc-chip {
	display: inline-flex;
	align-items: center;
	padding: 6px 13px;
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-btn);
	background: transparent;
	color: var(--hc-ink-2);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.hc-empty { color: var(--hc-ink-3); }

/* ==========================================================================
   4. Buttons

   Hover moves crimson → purple, a hue shift along the brand gradient. Never a
   lighten or a darken.
   ========================================================================== */

.hc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 15px 30px;
	border: 1px solid transparent;
	border-radius: var(--hc-radius-btn);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	line-height: 1;
	text-align: center;
	transition: background-color var(--hc-step), color var(--hc-step),
		border-color var(--hc-step), opacity var(--hc-step), transform var(--hc-step);
}
.hc-btn:active { transform: scale(0.98); opacity: 0.9; }
.hc-btn svg { flex: none; width: 15px; height: 15px; }

.hc-btn--primary { background: var(--hc-brand); color: #fff; }
.hc-btn--primary:hover { background: var(--hc-brand-deep); color: #fff; }

.hc-btn--dark { background: var(--hc-ink); color: #fff; }
.hc-btn--dark:hover { background: var(--hc-brand); color: #fff; }

.hc-btn--ghost {
	background: transparent;
	border-color: var(--hc-line);
	color: var(--hc-ink);
}
.hc-btn--ghost:hover {
	background: var(--hc-surface-alt);
	border-color: var(--hc-ink);
	color: var(--hc-ink);
}

/* On photography: glass fill, hairline in white. */
.hc-btn--light {
	background: var(--hc-glass);
	border-color: var(--hc-on-ink);
	color: #fff;
	backdrop-filter: blur(6px);
}
.hc-btn--light:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }

.hc-btn--lg { padding: 18px 36px; font-size: 13px; }
.hc-btn--block { display: flex; width: 100%; }
.hc-btn--block + .hc-btn--block { margin-top: 10px; }

.hc-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 32px;
}
.hc-btn-row:empty { display: none; }

/* A text link with an arrow — the site's most common call to action. */
.hc-arrow {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-brand);
}
.hc-arrow svg { width: 14px; height: 14px; transition: transform var(--hc-step); }
.hc-arrow:hover { color: var(--hc-brand-deep); }
.hc-arrow:hover svg { transform: translateX(4px); }
.hc-arrow--light { color: #fff; }
.hc-arrow--light:hover { color: rgba(255, 255, 255, 0.8); }

/* Dark bands need light chrome on their ghost buttons. */
.hc-cta .hc-btn--ghost,
.hc-section--ink .hc-btn--ghost,
.hc-stats .hc-btn--ghost {
	border-color: var(--hc-on-ink);
	color: #fff;
}
.hc-cta .hc-btn--ghost:hover,
.hc-section--ink .hc-btn--ghost:hover,
.hc-stats .hc-btn--ghost:hover {
	background: var(--hc-glass);
	border-color: rgba(255, 255, 255, 0.45);
	color: #fff;
}

/* ==========================================================================
   5. Header

   The only fixed element on the site. Transparent over a photographic hero,
   solid white with a hairline everywhere else and once scrolled.
   ========================================================================== */

.hc-header {
	position: relative;
	z-index: 60;
	background: var(--hc-surface);
	border-bottom: 1px solid var(--hc-line);
}
.hc-has-sticky-header .hc-header { position: sticky; top: 0; }

/* Overlaid on the hero photograph until the page scrolls. */
.hc-has-overlay-header .hc-header {
	position: absolute;
	inset: 0 0 auto;
	background: transparent;
	border-bottom-color: transparent;
	transition: background-color var(--hc-step), border-color var(--hc-step);
}

/* Nav and logo sit on a photograph, so they get a scrim like any other text
   over imagery — the hero's own scrim is weakest at the top, which is exactly
   where the header is. */
.hc-has-overlay-header .hc-header::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 180px;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(11, 26, 38, 0.55) 0%, rgba(11, 26, 38, 0.22) 55%, rgba(11, 26, 38, 0) 100%);
	transition: opacity var(--hc-step);
}
.hc-has-overlay-header .hc-header.is-stuck::before { opacity: 0; }
.hc-header__inner, .hc-drawer { position: relative; }
.hc-has-overlay-header.hc-has-sticky-header .hc-header { position: fixed; }

/* Top-level links only. The dropdown keeps its own white panel, so turning
   every nav link white would put white text on it. */
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-nav__list > li > a,
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-header__phone { color: #fff; }
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-burger { border-color: var(--hc-on-ink); background: var(--hc-glass); }
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-burger span { background: #fff; }
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-brand__logo--colour { display: none; }
.hc-has-overlay-header .hc-header:not(.is-stuck) .hc-brand__logo--white { display: block; }
.hc-brand__logo--white { display: none; }

.hc-header.is-stuck {
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: saturate(150%) blur(10px);
	border-bottom-color: var(--hc-line);
}

.hc-header__inner {
	display: flex;
	align-items: center;
	gap: 24px;
	max-width: var(--hc-container);
	margin: 0 auto;
	padding: 18px var(--hc-gutter);
}

.hc-brand { flex: none; display: flex; align-items: center; }
/* An explicit height, not a max-height: the lockup is an SVG, and a percentage
   max-width against a shrink-to-fit parent collapses it to nothing. */
.hc-brand img, .custom-logo {
	height: clamp(34px, 3.2vw, 46px);
	width: auto;
	max-width: none;
	object-fit: contain;
}
.hc-brand__link { display: inline-flex; align-items: center; }

.hc-nav { margin-inline: auto; }
.hc-nav__list { display: flex; align-items: center; gap: 4px; }
.hc-nav__list li { position: relative; }
.hc-nav__list a {
	display: block;
	position: relative;
	padding: 10px 14px;
	color: var(--hc-ink-2);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	white-space: nowrap;
	transition: color var(--hc-step);
}
.hc-nav__list a:hover { color: var(--hc-brand); }

/* Current page carries a 1px crimson underline — no pill, no fill. */
.hc-nav__list .current-menu-item > a::after,
.hc-nav__list .current-page-ancestor > a::after,
.hc-nav__list .current-menu-parent > a::after {
	content: "";
	position: absolute;
	left: 14px;
	right: 14px;
	bottom: 2px;
	height: 1px;
	background: var(--hc-brand);
}

.hc-nav__list .sub-menu {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	z-index: 20;
	min-width: 260px;
	padding: 10px;
	margin: 0;
	list-style: none;
	background: var(--hc-surface);
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-card);
	box-shadow: var(--hc-shadow-pop);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity var(--hc-step), transform var(--hc-step), visibility var(--hc-step);
}
.hc-nav__list li:hover > .sub-menu,
.hc-nav__list li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.hc-nav__list .sub-menu a {
	color: var(--hc-ink-2);
	letter-spacing: 0.06em;
	text-transform: none;
	font-size: 13.5px;
	padding: 9px 12px;
	border-radius: var(--hc-radius-chrome);
	white-space: normal;
}
.hc-nav__list .sub-menu a:hover { background: var(--hc-surface-alt); color: var(--hc-brand); }
.hc-nav__list .sub-menu a::after { display: none; }

.hc-header__actions { display: flex; align-items: center; gap: 14px; flex: none; margin-left: auto; }
.hc-header__phone {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	font-weight: 600;
	color: var(--hc-ink);
	transition: color var(--hc-step);
}
.hc-header__phone:hover { color: var(--hc-brand); }
.hc-header__phone svg { width: 15px; height: 15px; }

.hc-burger {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 46px;
	height: 46px;
	padding: 0 12px;
	background: transparent;
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-btn);
	transition: background-color var(--hc-step), border-color var(--hc-step);
}
.hc-burger span {
	display: block;
	height: 1.5px;
	background: var(--hc-ink);
	border-radius: 2px;
	transition: transform var(--hc-step), opacity var(--hc-step);
}
.hc-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.hc-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hc-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

.hc-drawer {
	padding: 10px var(--hc-gutter) 28px;
	border-top: 1px solid var(--hc-line);
	background: var(--hc-surface);
	max-height: calc(100dvh - 82px);
	overflow-y: auto;
}
.hc-drawer[hidden] { display: none; }
.hc-drawer__list { display: grid; }
.hc-drawer__list a {
	display: block;
	padding: 15px 2px;
	border-bottom: 1px solid var(--hc-line);
	color: var(--hc-ink);
	font-size: 15px;
	font-weight: 600;
}
.hc-drawer__list .sub-menu { list-style: none; padding-left: 16px; }
.hc-drawer__list .sub-menu a { font-weight: 400; font-size: 14px; color: var(--hc-ink-2); }
.hc-drawer__ctas { display: grid; gap: 12px; margin-top: 22px; }
.hc-drawer__ctas .hc-btn { width: 100%; }

/* ==========================================================================
   6. Hero + hero slider

   Every page opens on a photograph. The title sits bottom-left over a gradient
   scrim — never on a solid capsule or a blurred pill.
   ========================================================================== */

.hc-hero { position: relative; isolation: isolate; }

.hc-hero--feature {
	display: flex;
	align-items: flex-end;
	min-height: clamp(420px, 62vh, 640px);
	padding-block: clamp(48px, 8vw, 96px) clamp(40px, 6vw, 72px);
	background: var(--hc-dark);
	color: #fff;
	overflow: hidden;
}

.hc-hero__img,
.hc-hero__bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -2;
}
.hc-hero--feature::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--hc-scrim-hero);
}

.hc-hero--feature .hc-hero__inner {
	position: relative;
	width: 100%;
	max-width: var(--hc-container);
	margin: 0 auto;
	padding-inline: var(--hc-gutter);
}
.hc-hero--feature .hc-hero__content { max-width: min(620px, 100%); }
.hc-hero--feature .hc-hero__title { max-width: 14em; }
/* 11px uppercase over photography needs the full 4.5:1, so it runs white. */
.hc-hero--feature .hc-eyebrow { color: #fff; }

.hc-hero__title {
	margin: 0;
	font-family: var(--hc-font-display);
	font-size: clamp(2.125rem, 5vw, 3.75rem);
	font-weight: 600;
	line-height: 1.14;
	letter-spacing: -0.03em;
	text-wrap: balance;
	color: inherit;
}
.hc-hero--feature .hc-hero__title { color: #fff; }
.hc-hero__title .hc-accent { display: block; }
.hc-hero--feature .hc-hero__title .hc-accent { color: rgba(255, 255, 255, 0.7); }

.hc-hero__sub {
	max-width: 34em;
	margin: 22px 0 0;
	font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
	font-weight: 300;
	line-height: 1.6;
}
.hc-hero--feature .hc-hero__sub { color: rgba(255, 255, 255, 0.88); }

/* Text-only and split heroes sit on light ground. */
.hc-hero--centered, .hc-hero--split, .hc-hero--form {
	padding-block: clamp(56px, 8vw, 112px);
	background: var(--hc-surface-alt);
}
.hc-hero--centered .hc-hero__inner,
.hc-hero--split .hc-hero__inner,
.hc-hero--form .hc-hero__inner {
	display: grid;
	gap: clamp(36px, 5vw, 72px);
	align-items: center;
}
.hc-hero--split .hc-hero__inner,
.hc-hero--form .hc-hero__inner { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
.hc-hero--centered .hc-hero__inner { justify-items: center; text-align: center; }
.hc-hero--centered .hc-hero__content { max-width: min(680px, 100%); }
.hc-hero--centered .hc-btn-row { justify-content: center; }
.hc-hero--split .hc-hero__media,
.hc-hero--form .hc-hero__media {
	border-radius: var(--hc-radius-card);
	overflow: hidden;
	box-shadow: var(--hc-shadow-image);
}
.hc-hero--split .hc-hero__img,
.hc-hero--form .hc-hero__img { position: static; aspect-ratio: 4 / 3; z-index: auto; }

.hc-badges { display: flex; flex-wrap: wrap; gap: 12px 26px; margin: 30px 0 0; }
.hc-badge {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 12.5px;
	font-weight: 500;
	color: inherit;
}
.hc-badge__icon { display: inline-flex; color: var(--hc-brand); }
.hc-hero--feature .hc-badge__icon { color: #fff; }

/* --- Hero slider: cross-fade only. No parallax, no scroll-jacking. ------- */

.hc-slides {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: flex-end;
	min-height: clamp(480px, 78vh, 780px);
	padding-block: clamp(56px, 9vw, 120px) clamp(48px, 6vw, 84px);
	background: var(--hc-dark);
	color: #fff;
	overflow: hidden;
}
.hc-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--hc-dur-reveal) var(--hc-ease-soft), visibility var(--hc-dur-reveal);
}
.hc-slide.is-active { opacity: 1; visibility: visible; }
.hc-slide__img { width: 100%; height: 100%; object-fit: cover; }
.hc-slides::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: var(--hc-scrim-hero);
	pointer-events: none;
}
.hc-slides__inner {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--hc-container);
	margin: 0 auto;
	padding-inline: var(--hc-gutter);
}
.hc-slides__panel { max-width: min(620px, 100%); }
.hc-slides__panel:not(.is-active) { display: none; }
/*
 * Only the first slide is the page's <h1>; the rest are <p>, because a
 * carousel must not emit three level-one headings. So this class states its
 * own typography rather than inheriting it from the global heading rule — a
 * <p> never matches that, and the slides would render at different weights
 * and leading as they rotated.
 */
/*
 * The front page wraps title and sub-line in a single h1 so the heading names
 * him and says what he does. These two carry all the styling and are used as
 * both block elements and spans, so the display is set explicitly and the h1
 * wrapper itself is neutral.
 */
.hc-slides__heading { margin: 0; font: inherit; letter-spacing: normal; color: inherit; }
.hc-slides__title, .hc-slides__sub { display: block; }

.hc-slides__title {
	max-width: 14em;
	margin: 0;
	font-family: var(--hc-font-display);
	font-size: clamp(2.25rem, 5.4vw, 4rem);
	font-weight: 600;
	line-height: 1.14;
	letter-spacing: -0.03em;
	text-wrap: balance;
	color: #fff;
}
.hc-slides__sub {
	max-width: 34em;
	margin: 20px 0 0;
	font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
	font-weight: 300;
	color: rgba(255, 255, 255, 0.9);
}

/* Progress indicators — a gradient sliver, the smallest use of the ramp. */
.hc-slides__dots {
	position: relative;
	z-index: 2;
	display: flex;
	gap: 10px;
	margin-top: 40px;
}
.hc-slides__dots button {
	width: 44px;
	height: 3px;
	padding: 0;
	border: 0;
	border-radius: 2px;
	background: var(--hc-on-ink);
	transition: background var(--hc-step);
}
.hc-slides__dots button[aria-current="true"] { background: var(--hc-gradient); }

/* ==========================================================================
   7. Content panels

   The workhorse section: an asymmetric two-column split, image alternating
   sides down the page.
   ========================================================================== */

.hc-panel { padding-block: var(--hc-pad-section); }
.hc-panel--tint { background: var(--hc-surface-alt); }
.hc-panel--ink { background: var(--hc-dark); color: rgba(255, 255, 255, 0.82); }
.hc-panel--ink h2, .hc-panel--ink h3 { color: #fff; }
.hc-panel--ink .hc-eyebrow { color: rgba(255, 255, 255, 0.6); }

/* Adjacency is handled once, for sections and panels together, in section 2. */

.hc-panel__inner {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: clamp(36px, 5vw, 80px);
	align-items: center;
}
.hc-panel--media-left .hc-panel__media { order: -1; }

.hc-panel__title { font-size: clamp(1.625rem, 2.8vw, 2.375rem); }
.hc-panel__body { margin-top: 24px; }
.hc-panel__body > p:first-child {
	font-size: clamp(1.0625rem, 1.2vw, 1.25rem);
	font-weight: 300;
	color: var(--hc-ink-2);
}
.hc-panel--ink .hc-panel__body > p:first-child { color: rgba(255, 255, 255, 0.88); }

.hc-panel__media {
	border-radius: var(--hc-radius-card);
	overflow: hidden;
	box-shadow: var(--hc-shadow-image);
}
.hc-panel--ink .hc-panel__media { box-shadow: none; }
.hc-panel__img { width: 100%; aspect-ratio: 4 / 3; }
.hc-panel--portrait .hc-panel__img { aspect-ratio: 4 / 5; }

/* A full-bleed panel: photograph edge to edge, copy in the column. */
.hc-panel--bleed { padding: 0; }
.hc-panel--bleed .hc-panel__inner { gap: 0; align-items: stretch; }
.hc-panel--bleed .hc-panel__media { border-radius: 0; box-shadow: none; }
.hc-panel--bleed .hc-panel__img { height: 100%; aspect-ratio: auto; min-height: 380px; }
.hc-panel--bleed .hc-panel__content {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: clamp(48px, 7vw, 104px) clamp(28px, 5vw, 80px);
}

/* ==========================================================================
   8. Scope — numbered service items

   Sections other practices would iconify use zero-padded numbers instead. The
   brand is typographic and photographic, not iconographic.
   ========================================================================== */

.hc-scope__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(24px, 3vw, 40px);
}
.hc-scope__item {
	padding-top: 22px;
	border-top: 1px solid var(--hc-line);
}
.hc-section--ink .hc-scope__item { border-top-color: var(--hc-on-ink); }

.hc-scope__num {
	display: block;
	margin-bottom: 14px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.22em;
	color: var(--hc-brand);
	font-variant-numeric: tabular-nums;
}
.hc-scope__title { font-size: 1.125rem; margin-bottom: 10px; }
.hc-scope__desc { font-size: 15px; color: var(--hc-ink-2); }
.hc-section--ink .hc-scope__desc { color: rgba(255, 255, 255, 0.72); }
.hc-scope__item a { color: inherit; }
.hc-scope__item a:hover .hc-scope__title { color: var(--hc-brand); }

/* ==========================================================================
   9. Image tiles

   Three across, image zooms to 1.04 on hover. The caption sits below the
   image, not on it.
   ========================================================================== */

.hc-tiles {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: clamp(20px, 2.5vw, 32px);
}
.hc-tile { display: flex; flex-direction: column; color: inherit; }
.hc-tile__media {
	overflow: hidden;
	border-radius: var(--hc-radius-card);
	background: var(--hc-surface-alt);
}
.hc-tile__img {
	width: 100%;
	aspect-ratio: 3 / 4;
	transition: transform var(--hc-dur-zoom) var(--hc-ease-soft);
}
.hc-tile:hover .hc-tile__img { transform: scale(1.04); }
.hc-tile__title { margin: 20px 0 8px; font-size: 1.25rem; }
.hc-tile .hc-arrow { margin-top: auto; padding-top: 4px; }
.hc-tile:hover .hc-tile__title { color: var(--hc-brand); }

/* ==========================================================================
   10. Pull quote breaker
   ========================================================================== */

.hc-pullquote {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: center;
	min-height: clamp(320px, 46vh, 460px);
	padding-block: var(--hc-pad-band);
	background: var(--hc-dark);
	color: #fff;
	overflow: hidden;
}
.hc-pullquote__img { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; }
.hc-pullquote::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--hc-scrim-flat);
}
.hc-pullquote__inner { max-width: min(760px, 100%); }
.hc-pullquote__text {
	font-size: clamp(1.5rem, 3.4vw, 2.5rem);
	font-weight: 300;
	line-height: 1.3;
	letter-spacing: -0.02em;
	color: #fff;
}
.hc-pullquote__cite {
	display: block;
	margin-top: 26px;
	font-size: 11px;
	font-style: normal;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.66);
}

/* ==========================================================================
   11. Gallery
   ========================================================================== */

/*
 * The row height is set by the grid, not by each image's aspect ratio.
 *
 * With per-item ratios the feature tile — two columns wide — came out taller
 * than the single-column tiles beside it, so it set the row height and they
 * left a white gap underneath. Sizing the rows here and letting every image
 * fill its cell means a tile is always exactly the box the grid gives it,
 * whatever the column count works out to.
 */
.hc-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	grid-auto-rows: clamp(150px, 16vw, 232px);
	grid-auto-flow: dense;
	gap: clamp(12px, 1.6vw, 20px);
}
.hc-gallery__item { margin: 0; min-height: 0; }
.hc-gallery__btn {
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: var(--hc-surface-alt);
	border-radius: var(--hc-radius-card);
	overflow: hidden;
}
.hc-gallery__img {
	width: 100%;
	height: 100%;
	transition: transform var(--hc-dur-zoom) var(--hc-ease-soft);
}
.hc-gallery__btn:hover .hc-gallery__img { transform: scale(1.04); }

/* One tile in seven runs at double size, so the grid reads as a gallery rather
   than a contact sheet. Two rows as well as two columns, so it stays roughly
   the same shape as the others. `dense` backfills the hole it would leave. */
.hc-gallery__item:nth-child(7n + 1):not(:nth-last-child(-n + 3)) {
	grid-column: span 2;
	grid-row: span 2;
}

.hc-lightbox {
	width: min(94vw, 1200px);
	max-width: 94vw;
	max-height: 92vh;
	padding: 0;
	border: 0;
	border-radius: var(--hc-radius-card);
	background: transparent;
	overflow: visible;
}
.hc-lightbox::backdrop { background: rgba(11, 26, 38, 0.86); backdrop-filter: blur(4px); }
.hc-lightbox img { width: 100%; max-height: 92vh; object-fit: contain; border-radius: var(--hc-radius-card); }
.hc-lightbox__close {
	position: absolute;
	top: -14px;
	right: -14px;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 50%;
	background: #fff;
	color: var(--hc-ink);
	font-size: 20px;
	line-height: 1;
	box-shadow: var(--hc-shadow-pop);
}
.hc-lightbox__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border: 1px solid var(--hc-on-ink);
	border-radius: 50%;
	background: var(--hc-glass);
	color: #fff;
	backdrop-filter: blur(6px);
}
.hc-lightbox__nav--prev { left: -60px; }
.hc-lightbox__nav--next { right: -60px; }
@media (max-width: 900px) {
	.hc-lightbox__nav--prev { left: 8px; }
	.hc-lightbox__nav--next { right: 8px; }
	.hc-lightbox__close { top: 8px; right: 8px; }
}

/* ==========================================================================
   12. Quotes ("Words from Peter") and patient testimonials

   Deliberately different treatments: Peter's first-person quotes run over a
   monochrome portrait; patient testimonials are quiet cards, verbatim.
   ========================================================================== */

.hc-quotes {
	position: relative;
	isolation: isolate;
	padding-block: var(--hc-pad-section);
	background: var(--hc-dark);
	color: #fff;
	overflow: hidden;
}
.hc-quotes__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: -2;
	filter: grayscale(1);
}
.hc-quotes::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--hc-scrim-flat);
}
.hc-quotes__inner { max-width: min(820px, 100%); }
.hc-quotes__item {
	font-size: clamp(1.25rem, 2.4vw, 1.875rem);
	font-weight: 300;
	line-height: 1.42;
	color: #fff;
}
.hc-quotes__item:not(.is-active) { display: none; }
.hc-quotes__dots { display: flex; gap: 10px; margin-top: 36px; list-style: none; }
.hc-quotes__dots button {
	width: 36px;
	height: 3px;
	padding: 0;
	border: 0;
	border-radius: 2px;
	background: var(--hc-on-ink);
	transition: background var(--hc-step);
}
.hc-quotes__dots button[aria-current="true"] { background: var(--hc-gradient); }

.hc-testimonials__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: clamp(20px, 2.4vw, 32px);
}

/* The only filled card on the site. Tint, 14px radius, gradient rule, no
   shadow. */
/* Cards in a row stretch to the tallest one. Laying them out as a column and
   pushing the attribution down means the slack sits between quote and name,
   and every name in a row lines up, instead of each card trailing dead space. */
.hc-quote {
	display: flex;
	flex-direction: column;
	padding: clamp(28px, 3vw, 40px);
	background: var(--hc-surface-alt);
	border-radius: var(--hc-radius-card);
}
.hc-quote__mark {
	display: block;
	width: 34px;
	height: 3px;
	margin-bottom: 24px;
	background: var(--hc-gradient);
	border-radius: 2px;
}
.hc-quote__text { font-size: 15.5px; color: var(--hc-ink-2); }
.hc-quote__cite { display: block; margin-top: auto; padding-top: 26px; font-style: normal; }
.hc-quote__name {
	display: block;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-ink);
}
.hc-quote__role { display: block; margin-top: 5px; font-size: 13px; color: var(--hc-ink-3); }

.hc-stars { display: flex; gap: 3px; margin-bottom: 16px; }
.hc-star { width: 14px; height: 14px; color: var(--hc-brand); }

/* ==========================================================================
   13. Team
   ========================================================================== */

.hc-people {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: clamp(32px, 4vw, 64px);
}
.hc-person__media {
	border-radius: var(--hc-radius-card);
	overflow: hidden;
	box-shadow: var(--hc-shadow-image);
	margin-bottom: 26px;
}
.hc-person__img { width: 100%; aspect-ratio: 4 / 5; }
.hc-person__name { font-size: 1.375rem; }
.hc-person__role {
	margin: 8px 0 18px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-brand);
}
.hc-person__bio { color: var(--hc-ink-2); }
.hc-people--single { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); align-items: center; }

/* ==========================================================================
   14. Procedure pages

   Long-form clinical content. A sticky table of contents on the left, the
   narrative on the right, benefits and risks as real lists and a real table —
   which is both better for a patient scanning it and better for search.
   ========================================================================== */

.hc-proc { padding-block: var(--hc-pad-section); }
.hc-proc__layout {
	display: grid;
	grid-template-columns: minmax(0, 240px) minmax(0, 1fr);
	gap: clamp(40px, 5vw, 88px);
	align-items: start;
}

.hc-proc__toc { position: sticky; top: 104px; }
.hc-proc__toc-title {
	margin-bottom: 18px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-ink-3);
}
.hc-proc__toc-list { display: grid; }
.hc-proc__toc-list a {
	display: block;
	padding: 11px 0 11px 16px;
	border-left: 1px solid var(--hc-line);
	color: var(--hc-ink-2);
	font-size: 14px;
	font-weight: 500;
	transition: border-color var(--hc-step), color var(--hc-step);
}
.hc-proc__toc-list a:hover,
.hc-proc__toc-list a.is-current { border-left-color: var(--hc-brand); color: var(--hc-brand); }

.hc-proc__lead {
	max-width: 60ch;
	margin-bottom: clamp(40px, 5vw, 72px);
	font-size: clamp(1.125rem, 1.5vw, 1.4375rem);
	font-weight: 300;
	line-height: 1.6;
	color: var(--hc-ink-2);
}

.hc-proc__sec { padding-top: clamp(40px, 5vw, 64px); }
.hc-proc__sec:first-child { padding-top: 0; }
.hc-proc__sec-title {
	margin-bottom: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--hc-line);
	font-size: clamp(1.375rem, 2.2vw, 1.75rem);
}
/* Type and measure come from .hc-prose, which this element also carries. */
.hc-proc__figure { margin: 32px 0 0; }
.hc-proc__figure img {
	width: 100%;
	aspect-ratio: 16 / 10;
	border-radius: var(--hc-radius-card);
	box-shadow: var(--hc-shadow-image);
}
.hc-proc__figure figcaption { margin-top: 12px; font-size: 13px; color: var(--hc-ink-3); }

.hc-proc__benefits { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.hc-proc__benefits li {
	display: flex;
	gap: 14px;
	align-items: baseline;
	padding: 16px 0;
	border-bottom: 1px solid var(--hc-line);
	font-size: 16px;
	color: var(--hc-ink);
}
.hc-proc__benefits li::before {
	content: counter(list-item, decimal-leading-zero);
	flex: none;
	width: 2.2em;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.18em;
	color: var(--hc-brand);
	font-variant-numeric: tabular-nums;
}

.hc-proc__risks { width: 100%; border-collapse: collapse; font-size: 15.5px; }
.hc-proc__risks caption {
	margin-bottom: 16px;
	text-align: left;
	font-size: 13px;
	color: var(--hc-ink-3);
}
.hc-proc__risks th, .hc-proc__risks td {
	padding: 15px 0;
	text-align: left;
	border-bottom: 1px solid var(--hc-line);
}
.hc-proc__risks thead th {
	padding-bottom: 12px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--hc-ink-3);
}
.hc-proc__risks tbody th { font-weight: 500; color: var(--hc-ink); }
.hc-proc__risks td { text-align: right; font-variant-numeric: tabular-nums; color: var(--hc-ink-2); }
/* The rate column's values are right-aligned, so its heading has to be too. */
.hc-proc__risks thead th:last-child { text-align: right; }
.hc-proc__note { margin-top: 20px; font-size: 13.5px; color: var(--hc-ink-3); }

.hc-proc__wrap { overflow-x: auto; }

/* ==========================================================================
   15. Index / card grids (the procedures archive)
   ========================================================================== */

.hc-index__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: clamp(24px, 3vw, 44px);
}
/* Procedure names run to one or two lines. Laying the card out as a column and
   pushing the link down keeps every "Procedure details" on the same baseline
   across a row. */
.hc-index__card { display: flex; flex-direction: column; color: inherit; }
.hc-index__media { overflow: hidden; border-radius: var(--hc-radius-card); background: var(--hc-surface-alt); }
.hc-index__img {
	width: 100%;
	aspect-ratio: 4 / 3;
	transition: transform var(--hc-dur-zoom) var(--hc-ease-soft);
}
.hc-index__card:hover .hc-index__img { transform: scale(1.04); }
.hc-index__title { margin: 22px 0 10px; font-size: 1.1875rem; }
.hc-index__card:hover .hc-index__title { color: var(--hc-brand); }
.hc-index__desc { font-size: 15px; color: var(--hc-ink-2); }
.hc-index__more { margin-top: auto; padding-top: 20px; }

/* ==========================================================================
   16. Contact block
   ========================================================================== */

.hc-contactblk__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: clamp(40px, 5vw, 80px);
	align-items: start;
}
/*
 * Before a form plugin is set up there is no second column, and a half-empty
 * grid leaves the details stranded against the left edge. Give the details a
 * readable measure instead.
 */
.hc-contactblk__layout:not(:has(> .hc-form-card)) { grid-template-columns: minmax(0, 640px); }
.hc-contactblk__list { display: grid; }
.hc-contactblk__row {
	display: grid;
	grid-template-columns: 26px 1fr;
	gap: 18px;
	align-items: start;
	padding: 22px 0;
	border-top: 1px solid var(--hc-line);
}
.hc-contactblk__row:last-child { border-bottom: 1px solid var(--hc-line); }
.hc-contactblk__icon { color: var(--hc-brand); padding-top: 3px; }
.hc-contactblk__label {
	display: block;
	margin-bottom: 6px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--hc-ink-3);
}
.hc-contactblk__value { font-size: 16.5px; color: var(--hc-ink); }
a.hc-contactblk__value:hover { color: var(--hc-brand); }

.hc-hours { display: grid; margin-top: 4px; font-size: 15px; }
.hc-hours li {
	display: flex;
	justify-content: space-between;
	gap: 24px;
	padding: 9px 0;
	border-bottom: 1px solid var(--hc-line);
	color: var(--hc-ink-2);
}
.hc-hours li:last-child { border-bottom: 0; }
.hc-hours .is-closed { color: var(--hc-ink-3); }

/*
 * Full-bleed map band. The iframe runs the whole viewport width with no radius
 * and no shadow — at this size it reads as a section of the page, not as a
 * photograph sitting on it, so the image treatment would be wrong.
 */
.hc-mapband {
	position: relative;
	background: var(--hc-surface-alt);
	line-height: 0;
}
.hc-mapband iframe {
	display: block;
	width: 100%;
	height: clamp(360px, 46vh, 560px);
	border: 0;
}
.hc-mapband__link {
	position: absolute;
	right: clamp(18px, 4vw, 40px);
	bottom: clamp(18px, 4vw, 40px);
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 12px 20px;
	border-radius: var(--hc-radius-btn);
	background: var(--hc-surface);
	box-shadow: var(--hc-shadow-image);
	color: var(--hc-ink);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .04em;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
	transition: color var(--hc-step), transform var(--hc-step);
}
.hc-mapband__link:hover { color: var(--hc-brand); transform: translateY(-1px); }
.hc-mapband__link:focus-visible { outline: none; box-shadow: var(--hc-shadow-focus); }

/* ==========================================================================
   17. Features, steps, stats, trust, logos
   ========================================================================== */

.hc-grid { display: grid; gap: clamp(24px, 3vw, 40px); }
.hc-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.hc-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.hc-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Hairline above the block, no fill, no shadow — the default separator. */
.hc-feature { padding-top: 22px; border-top: 1px solid var(--hc-line); }
.hc-feature__icon { margin-bottom: 16px; color: var(--hc-brand); }
.hc-feature__title { font-size: 1.125rem; margin-bottom: 10px; }
.hc-feature__desc { font-size: 15px; color: var(--hc-ink-2); }
.hc-feature__link { margin-top: 16px; }

.hc-steps__list { display: grid; gap: clamp(24px, 3vw, 40px); grid-template-columns: repeat(4, minmax(0, 1fr)); counter-reset: step; }
.hc-step { padding-top: 22px; border-top: 1px solid var(--hc-line); }
.hc-step__num {
	display: block;
	margin-bottom: 14px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.22em;
	color: var(--hc-brand);
	font-variant-numeric: tabular-nums;
}
.hc-step__title { font-size: 1.0625rem; margin-bottom: 8px; }
.hc-step__desc { font-size: 15px; color: var(--hc-ink-2); }

.hc-stats { padding-block: var(--hc-pad-band); background: var(--hc-dark); color: #fff; }
.hc-stats__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); }
.hc-stat { padding-top: 22px; border-top: 1px solid var(--hc-on-ink); }
.hc-stat__value { font-size: clamp(2rem, 3.6vw, 3rem); font-weight: 600; letter-spacing: -0.03em; color: #fff; }
.hc-stat__label { margin-top: 10px; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255, 255, 255, 0.66); }
.hc-stat__sub { margin-top: 8px; font-size: 14px; color: rgba(255, 255, 255, 0.6); }

.hc-trust { padding-block: clamp(36px, 4vw, 56px); border-bottom: 1px solid var(--hc-line); }
.hc-trust__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(20px, 3vw, 44px); }
.hc-trust__item { display: grid; grid-template-columns: 22px 1fr; gap: 14px; align-items: start; }
.hc-trust__icon { color: var(--hc-brand); padding-top: 2px; }
.hc-trust__title { font-size: 15px; margin-bottom: 4px; }
.hc-trust__desc { font-size: 14px; color: var(--hc-ink-3); }

.hc-logos { padding-block: clamp(40px, 5vw, 72px); }
.hc-logos__title { margin-bottom: 28px; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--hc-ink-3); text-align: center; }
.hc-logos__row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(28px, 5vw, 72px); }
.hc-logos__img { max-height: 54px; width: auto; object-fit: contain; opacity: 0.72; transition: opacity var(--hc-step); }
.hc-logos__item:hover .hc-logos__img { opacity: 1; }

/* ==========================================================================
   18. Accordion (FAQ)
   ========================================================================== */

/*
 * The FAQ spans the full container, like the card grids above and below it.
 * Never put a `max-width` on the element that also carries `.hc-container` —
 * it overrides the container and re-centres the whole section out of line with
 * the rest of the page. The answer text is what needs a measure, and it has
 * one of its own further down.
 */
.hc-accordion { display: grid; }
.hc-accordion__item { border-top: 1px solid var(--hc-line); }
.hc-accordion__item:last-child { border-bottom: 1px solid var(--hc-line); }
.hc-accordion__heading { margin: 0; }
.hc-accordion__button {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
	width: 100%;
	padding: 26px 0;
	background: none;
	border: 0;
	text-align: left;
	font-family: var(--hc-font-display);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--hc-ink);
	transition: color var(--hc-step);
}
.hc-accordion__button:hover { color: var(--hc-brand); }
.hc-accordion__chev { flex: none; margin-top: 4px; color: var(--hc-brand); transition: transform var(--hc-step); }
.hc-accordion__button[aria-expanded="true"] .hc-accordion__chev { transform: rotate(180deg); }
.hc-accordion__panel[hidden] { display: none; }
.hc-accordion__body { padding: 0 0 28px; color: var(--hc-ink-2); }

/* ==========================================================================
   19. Related + CTA band
   ========================================================================== */

.hc-related__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 2.5vw, 36px); }
.hc-related__grid { grid-auto-rows: 1fr; }
.hc-related__card { display: flex; flex-direction: column; padding-top: 22px; border-top: 1px solid var(--hc-line); color: inherit; }
.hc-related__card .hc-arrow { margin-top: auto; padding-top: 16px; }
.hc-related__title { font-size: 1.0625rem; margin-bottom: 8px; }
.hc-related__card:hover .hc-related__title { color: var(--hc-brand); }
.hc-related__desc { font-size: 14.5px; color: var(--hc-ink-2); }

/* The closing band. Ink navy, with the gradient as a 3px rule at the top. */
.hc-cta {
	position: relative;
	padding-block: var(--hc-pad-band);
	background: var(--hc-dark);
	color: rgba(255, 255, 255, 0.82);
	text-align: center;
}
.hc-cta::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 3px;
	background: var(--hc-gradient);
}
.hc-cta__inner { max-width: min(680px, 100%); margin-inline: auto; }
.hc-cta__title { font-size: clamp(1.625rem, 3vw, 2.5rem); color: #fff; }
.hc-cta__sub { margin: 20px 0 0; font-size: clamp(1rem, 1.2vw, 1.1875rem); font-weight: 300; color: rgba(255, 255, 255, 0.8); }
.hc-cta__btns { justify-content: center; }

/* ==========================================================================
   20. Body content + prose
   ========================================================================== */

.hc-body__layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(40px, 5vw, 80px); align-items: start; }
.hc-body__layout--single { grid-template-columns: minmax(0, 1fr); }
.hc-body__layout--narrow { grid-template-columns: minmax(0, 1fr); max-width: 760px; margin-inline: auto; }

/*
 * .hc-prose owns type and measure for body copy. The component classes that
 * sit alongside it — .hc-accordion__body, .hc-panel__body and friends — are
 * declared earlier with the same specificity, so anything they set here loses
 * silently. Set it in this section or not at all.
 *
 * The measure applies to a bare prose block, which would otherwise run the
 * full width of whatever contains it.
 */
.hc-prose { max-width: 62ch; font-size: 17px; }

/*
 * Where prose already sits in a column the layout has sized — an accordion
 * row, a panel's text column, a procedure section, a team bio — it fills that
 * column instead, so the copy lines up with the rules, headings and grids
 * around it. Two classes, to beat .hc-prose above.
 */
.hc-accordion__body.hc-prose,
.hc-panel__body.hc-prose,
.hc-person__bio.hc-prose,
.hc-proc__sec-body.hc-prose { max-width: none; }
.hc-prose > *:first-child { margin-top: 0; }
.hc-prose h2 { margin: clamp(40px, 5vw, 64px) 0 18px; font-size: clamp(1.375rem, 2.2vw, 1.875rem); }
.hc-prose h3 { margin: 36px 0 14px; font-size: 1.25rem; }
.hc-prose h4 { margin: 28px 0 12px; font-size: 1.0625rem; }
.hc-prose ul, .hc-prose ol { margin: 0 0 1.2em; padding-left: 1.3em; }
.hc-prose li { margin-bottom: 0.5em; }
.hc-prose li::marker { color: var(--hc-brand); }
.hc-prose img, .hc-prose .wp-block-image img { border-radius: var(--hc-radius-card); box-shadow: var(--hc-shadow-image); }
.hc-prose figure { margin: clamp(28px, 4vw, 44px) 0; }
.hc-prose figcaption { margin-top: 12px; font-size: 13px; color: var(--hc-ink-3); }
.hc-prose a { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }

.hc-prose blockquote {
	margin: clamp(28px, 4vw, 44px) 0;
	padding-top: 22px;
	border-top: 3px solid transparent;
	border-image: var(--hc-gradient) 1;
	border-width: 3px 0 0;
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	font-weight: 300;
	line-height: 1.45;
	color: var(--hc-ink);
}
.hc-prose blockquote cite { display: block; margin-top: 16px; font-size: 11px; font-style: normal; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--hc-ink-3); }

.hc-prose table { width: 100%; border-collapse: collapse; margin: 28px 0; font-size: 15.5px; }
.hc-prose th, .hc-prose td { padding: 14px 0; text-align: left; border-bottom: 1px solid var(--hc-line); }
.hc-prose thead th { font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--hc-ink-3); }

.hc-prose code { padding: 2px 6px; background: var(--hc-surface-alt); border-radius: var(--hc-radius-chrome); font-family: var(--hc-font-mono); font-size: 0.9em; }
.hc-prose pre { padding: 22px; background: var(--hc-surface-alt); border-radius: var(--hc-radius-card); overflow-x: auto; }
.hc-prose pre code { padding: 0; background: none; }

.hc-pagelinks { display: flex; gap: 10px; margin-top: 36px; font-size: 14px; }

/* ==========================================================================
   21. Forms

   Any form plugin's inputs pick these up: the selectors are generic on
   purpose so no plugin-specific styling is needed.
   ========================================================================== */

.hc-formsec__layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(40px, 5vw, 80px); align-items: start; }
.hc-formsec__layout--single { grid-template-columns: minmax(0, 1fr); max-width: 720px; margin-inline: auto; }

.hc-form input[type="text"], .hc-form input[type="email"], .hc-form input[type="tel"],
.hc-form input[type="url"], .hc-form input[type="number"], .hc-form input[type="date"],
.hc-form select, .hc-form textarea,
.hc-prose input[type="text"], .hc-prose input[type="email"], .hc-prose input[type="tel"],
.hc-prose select, .hc-prose textarea,
.wpforms-field input:not([type="submit"]), .wpforms-field select, .wpforms-field textarea,
.wpcf7 input:not([type="submit"]), .wpcf7 select, .wpcf7 textarea,
.frm_form_field input:not([type="submit"]), .frm_form_field select, .frm_form_field textarea,
.gform_wrapper input:not([type="submit"]), .gform_wrapper select, .gform_wrapper textarea,
.hc-search__input {
	width: 100%;
	padding: 14px 16px;
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-input);
	background: var(--hc-surface);
	color: var(--hc-ink);
	font-family: inherit;
	font-size: 16px;
	line-height: 1.5;
	transition: border-color var(--hc-step), box-shadow var(--hc-step);
}
.hc-form input:focus, .hc-form select:focus, .hc-form textarea:focus,
.wpforms-field input:focus, .wpforms-field select:focus, .wpforms-field textarea:focus,
.wpcf7 input:focus, .wpcf7 select:focus, .wpcf7 textarea:focus,
.gform_wrapper input:focus, .gform_wrapper select:focus, .gform_wrapper textarea:focus,
.hc-search__input:focus { outline: none; border-color: var(--hc-accent); box-shadow: var(--hc-shadow-focus); }

.hc-form textarea, .wpforms-field textarea, .wpcf7 textarea, .gform_wrapper textarea { min-height: 150px; resize: vertical; }

.hc-form label, .wpforms-field-label, .wpcf7 label, .gform_wrapper .gfield_label {
	display: block;
	margin-bottom: 8px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--hc-ink-2);
}

/* The one glyph drawn in CSS, so forms stay icon-library-free. */
.hc-form select, .wpforms-field select, .wpcf7 select, .gform_wrapper select {
	appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--hc-ink-3) 50%), linear-gradient(135deg, var(--hc-ink-3) 50%, transparent 50%);
	background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%;
	background-size: 6px 6px, 6px 6px;
	background-repeat: no-repeat;
	padding-right: 44px;
}

.hc-form input[type="submit"], .hc-form button[type="submit"],
.wpforms-submit, .wpcf7-submit, .gform_button, .frm_button_submit,
.hc-search__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 16px 34px;
	border: 0;
	border-radius: var(--hc-radius-btn);
	background: var(--hc-brand);
	color: #fff;
	font-family: inherit;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color var(--hc-step), transform var(--hc-step);
}
.hc-form input[type="submit"]:hover, .wpforms-submit:hover, .wpcf7-submit:hover,
.gform_button:hover, .hc-search__submit:hover { background: var(--hc-brand-deep); }
.hc-form input[type="submit"]:active, .wpforms-submit:active { transform: scale(0.98); }

/* ==========================================================================
   22. Sidebar
   ========================================================================== */

.hc-sidebar { position: sticky; top: 104px; display: grid; gap: 36px; }
.hc-sidebar__title { margin-bottom: 16px; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--hc-ink-3); }
.hc-sidebar__list { display: grid; }
.hc-sidebar__list a { display: block; padding: 12px 0; border-bottom: 1px solid var(--hc-line); color: var(--hc-ink-2); font-size: 14.5px; }
.hc-sidebar__list a:hover { color: var(--hc-brand); }
.hc-sidebar__list .current_page_item > a, .hc-sidebar__list .current-menu-item > a { color: var(--hc-brand); font-weight: 600; }

.hc-sidebar__cta { padding: 30px; background: var(--hc-surface-alt); border-radius: var(--hc-radius-card); }
.hc-sidebar__cta-title { font-size: 1.125rem; margin-bottom: 12px; }
.hc-sidebar__cta-text { font-size: 14.5px; color: var(--hc-ink-2); margin-bottom: 22px; }
.hc-sidebar__trust { display: grid; gap: 14px; }
.hc-widget { font-size: 15px; }
.hc-widget__title { margin-bottom: 14px; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--hc-ink-3); }

/* ==========================================================================
   23. Breadcrumbs, archives, posts, search, 404
   ========================================================================== */

.hc-breadcrumb {
	padding: 18px 0;
	font-size: 12.5px;
	color: var(--hc-ink-3);
}
.hc-breadcrumb a { color: var(--hc-ink-3); }
.hc-breadcrumb a:hover { color: var(--hc-brand); }
.hc-breadcrumb__sep { margin: 0 8px; opacity: 0.5; }

.hc-postgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 44px); }
.hc-post { display: block; color: inherit; }
.hc-post__media { overflow: hidden; border-radius: var(--hc-radius-card); background: var(--hc-surface-alt); }
.hc-post__img { width: 100%; aspect-ratio: 3 / 2; transition: transform var(--hc-dur-zoom) var(--hc-ease-soft); }
.hc-post:hover .hc-post__img { transform: scale(1.04); }
.hc-post__title { margin: 20px 0 10px; font-size: 1.125rem; }
.hc-post:hover .hc-post__title { color: var(--hc-brand); }
.hc-post__meta { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--hc-ink-3); }
.hc-post__excerpt { margin-top: 10px; font-size: 15px; color: var(--hc-ink-2); }

.hc-single__head { padding-block: clamp(48px, 6vw, 88px) 0; }
.hc-single__head-inner { max-width: 68ch; }
.hc-single__title { font-size: clamp(1.875rem, 4vw, 3rem); }
.hc-single__meta { margin-top: 20px; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--hc-ink-3); }
.hc-single__media { margin-top: clamp(32px, 4vw, 56px); border-radius: var(--hc-radius-card); overflow: hidden; box-shadow: var(--hc-shadow-image); }
.hc-single__img { width: 100%; aspect-ratio: 16 / 9; }
.hc-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 36px; }

.hc-search { display: flex; gap: 10px; }
.hc-results { display: grid; }
.hc-result { padding: 26px 0; border-bottom: 1px solid var(--hc-line); }
.hc-result__title { font-size: 1.125rem; margin-bottom: 6px; }
.hc-result__url { font-size: 12.5px; color: var(--hc-ink-3); margin-bottom: 10px; }
.hc-result__excerpt { font-size: 15px; color: var(--hc-ink-2); }

.hc-pagination { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(40px, 5vw, 64px); }
.hc-pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 42px;
	height: 42px;
	padding: 0 12px;
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-btn);
	color: var(--hc-ink-2);
	font-size: 14px;
	font-weight: 600;
	transition: border-color var(--hc-step), color var(--hc-step);
}
.hc-pagination .page-numbers:hover { border-color: var(--hc-ink); color: var(--hc-ink); }
.hc-pagination .page-numbers.current { background: var(--hc-ink); border-color: var(--hc-ink); color: #fff; }

.hc-404__inner { max-width: 52ch; margin-inline: auto; text-align: center; padding-block: clamp(72px, 10vw, 140px); }
.hc-404__search { margin-top: 32px; }
.hc-404__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 28px; list-style: none; }

.hc-comments { padding-block: var(--hc-pad-section); border-top: 1px solid var(--hc-line); }
.hc-comments__inner { max-width: 72ch; }
.hc-comments__title { margin-bottom: 28px; font-size: 1.375rem; }
.hc-comments__closed { color: var(--hc-ink-3); font-size: 14px; }

/* ==========================================================================
   24. Footer + floating CTA
   ========================================================================== */

.hc-footer {
	position: relative;
	padding-block: clamp(56px, 7vw, 96px) 40px;
	background: var(--hc-dark-deep);
	color: rgba(255, 255, 255, 0.68);
	font-size: 14.5px;
}
/* The 3px gradient rule — the identity's signature placement. */
.hc-footer::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 3px;
	background: var(--hc-gradient);
}
.hc-footer a { color: rgba(255, 255, 255, 0.68); }
.hc-footer a:hover { color: #fff; }

.hc-footer__grid { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: clamp(32px, 4vw, 64px); }
.hc-footer__logo { margin-bottom: 20px; }
.hc-footer__logo img { height: 48px; width: auto; max-width: none; object-fit: contain; }
.hc-footer__about { max-width: 42ch; margin: 0 0 16px; }
.hc-footer__creds { font-size: 12.5px; color: rgba(255, 255, 255, 0.5); }

.hc-footer__col-title { margin: 0 0 18px; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255, 255, 255, 0.5); }
.hc-footer__links { display: grid; gap: 11px; }
.hc-footer__widgets { margin-top: 40px; }

.hc-socials { display: flex; gap: 12px; margin-top: 22px; }
.hc-socials a {
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 50%;
	transition: border-color var(--hc-step), background-color var(--hc-step);
}
.hc-socials a:hover { border-color: rgba(255, 255, 255, 0.45); background: rgba(255, 255, 255, 0.08); }

.hc-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-top: clamp(40px, 5vw, 64px);
	padding-top: 28px;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	font-size: 12.5px;
	color: rgba(255, 255, 255, 0.5);
}
.hc-footer__bottom p { margin: 0; }
.hc-footer__legal { display: flex; flex-wrap: wrap; gap: 20px; }
.hc-footer__note { flex-basis: 100%; font-size: 12px; color: rgba(255, 255, 255, 0.4); }

.hc-float-cta {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 90;
	display: none;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--hc-brand);
	color: #fff;
	box-shadow: var(--hc-shadow-pop);
	transition: background-color var(--hc-step), transform var(--hc-step);
}
.hc-float-cta:hover { background: var(--hc-brand-deep); color: #fff; }
.hc-float-cta:active { transform: scale(0.95); }

/* ==========================================================================
   25. Scroll reveal — a 24px rise plus fade. No bounce, no spring.
   ========================================================================== */

/* Content is visible by default. The script opts in by putting `hc-reveal` on
   <html> once it has an observer running, so a failed or blocked script can
   never leave the page blank. */
.hc-reveal .hc-observe { opacity: 0; transform: translateY(24px); }
.hc-reveal .hc-observe.is-in {
	opacity: 1;
	transform: none;
	transition: opacity var(--hc-dur-reveal) var(--hc-ease-soft), transform var(--hc-dur-reveal) var(--hc-ease-soft);
}
@media (prefers-reduced-motion: reduce) {
	.hc-reveal .hc-observe { opacity: 1; transform: none; }
}

/* ==========================================================================
   26. Responsive
   ========================================================================== */

@media (max-width: 1080px) {
	.hc-scope__grid, .hc-steps__list, .hc-stats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hc-proc__layout { grid-template-columns: minmax(0, 1fr); }
	.hc-proc__toc { position: static; margin-bottom: 40px; }
	.hc-proc__toc-list { grid-auto-flow: column; grid-auto-columns: max-content; overflow-x: auto; gap: 4px; }
	.hc-proc__toc-list a { border-left: 0; border-bottom: 1px solid var(--hc-line); padding: 10px 14px; white-space: nowrap; }
	.hc-proc__toc-list a:hover, .hc-proc__toc-list a.is-current { border-bottom-color: var(--hc-brand); }
	.hc-body__layout { grid-template-columns: minmax(0, 1fr); }
	.hc-sidebar { position: static; }
}

@media (max-width: 980px) {
	.hc-nav, .hc-header__phone, .hc-header__cta { display: none; }
	.hc-burger { display: flex; }
	.hc-tiles, .hc-testimonials__grid, .hc-index__grid, .hc-postgrid,
	.hc-related__grid, .hc-grid--3, .hc-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hc-panel__inner, .hc-hero--split .hc-hero__inner, .hc-hero--form .hc-hero__inner,
	.hc-formsec__layout, .hc-contactblk__layout, .hc-people--single { grid-template-columns: minmax(0, 1fr); }
	.hc-panel--media-left .hc-panel__media { order: 0; }
	.hc-panel--bleed .hc-panel__img { min-height: 300px; }
	.hc-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hc-has-floating-cta .hc-float-cta { display: grid; }
	.hc-gallery__item:nth-child(7n + 1):not(:nth-last-child(-n + 3)) { grid-column: span 2; grid-row: span 1; }
}

@media (max-width: 680px) {
	body { font-size: 16px; }
	.hc-scope__grid, .hc-steps__list, .hc-stats__grid, .hc-tiles, .hc-testimonials__grid,
	.hc-index__grid, .hc-postgrid, .hc-related__grid, .hc-grid--2, .hc-grid--3, .hc-grid--4,
	.hc-footer__grid { grid-template-columns: minmax(0, 1fr); }

	/* Equal row heights exist so cards sitting side by side line up. In a
	   single column there is nothing to line up with, and forcing it just
	   opens a gap between the quote and the name. */
	.hc-tiles, .hc-testimonials__grid, .hc-index__grid, .hc-related__grid { grid-auto-rows: auto; }
	.hc-quote__cite, .hc-index__more, .hc-tile .hc-arrow, .hc-related__card .hc-arrow { margin-top: 0; }
	.hc-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hc-hero--feature, .hc-slides { min-height: clamp(400px, 68vh, 560px); }
	.hc-hero--feature .hc-hero__content, .hc-slides__panel, .hc-pullquote__inner { max-width: none; }
	.hc-btn { width: 100%; }
	.hc-btn-row { flex-direction: column; }
	.hc-footer__bottom { flex-direction: column; align-items: flex-start; }
	.hc-proc__risks { font-size: 14.5px; }
}

/* ==========================================================================
   27. Print
   ========================================================================== */

@media print {
	.hc-header, .hc-drawer, .hc-float-cta, .hc-cta,
	.hc-slides__dots, .hc-quotes__dots, .hc-proc__toc, .hc-skip { display: none !important; }
	body { font-size: 11pt; color: #000; }
	.hc-section, .hc-panel { padding-block: 18pt; }
	.hc-observe { opacity: 1; transform: none; }
	a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
}

/* Editor-only warning when a form shortcode does not resolve. */
.hc-formsec__notice {
	margin: 0;
	padding: 14px 16px;
	border: 1px dashed var(--hc-line);
	border-radius: var(--hc-radius-input);
	color: var(--hc-ink-3);
	font-size: 14px;
}

/* ==========================================================================
   21b. WPForms
   The generic selectors above cover most plugins, but WPForms enqueues its own
   stylesheet after the theme's and, since 1.8, drives everything through CSS
   custom properties scoped to `.wpforms-container`. Setting those properties is
   the supported way to rebrand it; the longer selectors afterwards cover the
   classic markup, which predates them and needs the specificity.
   ========================================================================== */

.wpforms-container {
	--wpforms-field-border-radius: var(--hc-radius-input);
	--wpforms-field-border-color: var(--hc-line);
	--wpforms-field-background-color: var(--hc-surface);
	--wpforms-field-text-color: var(--hc-ink);
	--wpforms-field-menu-color: var(--hc-surface);
	--wpforms-label-color: var(--hc-ink-2);
	--wpforms-label-sublabel-color: var(--hc-ink-3);
	--wpforms-label-error-color: var(--hc-brand);
	--wpforms-button-background-color: var(--hc-brand);
	--wpforms-button-text-color: #ffffff;
	--wpforms-button-border-radius: var(--hc-radius-btn);
	--wpforms-field-size-input-height: 52px;
	--wpforms-field-size-input-spacing: 18px;
	--wpforms-field-size-font-size: 16px;
	--wpforms-field-size-padding-h: 16px;
	--wpforms-field-size-checkbox-size: 18px;
	--wpforms-field-size-sublabel-spacing: 6px;
}

.wpforms-container.wpforms-container .wpforms-form input[type="text"],
.wpforms-container.wpforms-container .wpforms-form input[type="email"],
.wpforms-container.wpforms-container .wpforms-form input[type="tel"],
.wpforms-container.wpforms-container .wpforms-form input[type="url"],
.wpforms-container.wpforms-container .wpforms-form input[type="number"],
.wpforms-container.wpforms-container .wpforms-form select,
.wpforms-container.wpforms-container .wpforms-form textarea {
	padding: 14px 16px;
	border: 1px solid var(--hc-line);
	border-radius: var(--hc-radius-input);
	background: var(--hc-surface);
	color: var(--hc-ink);
	font-family: inherit;
	font-size: 16px;
	line-height: 1.5;
	box-shadow: none;
	transition: border-color var(--hc-step), box-shadow var(--hc-step);
}

.wpforms-container.wpforms-container .wpforms-form input:focus,
.wpforms-container.wpforms-container .wpforms-form select:focus,
.wpforms-container.wpforms-container .wpforms-form textarea:focus {
	outline: none;
	border-color: var(--hc-accent);
	box-shadow: var(--hc-shadow-focus);
}

.wpforms-container.wpforms-container .wpforms-form textarea { min-height: 150px; resize: vertical; }

.wpforms-container.wpforms-container .wpforms-form .wpforms-field-label {
	margin-bottom: 8px;
	color: var(--hc-ink-2);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.wpforms-container.wpforms-container .wpforms-form .wpforms-field-sublabel {
	color: var(--hc-ink-3);
	font-size: 12px;
	letter-spacing: 0;
	text-transform: none;
}

.wpforms-container.wpforms-container .wpforms-form .wpforms-required-label { color: var(--hc-brand); }

/* Match the theme's pill button exactly — crimson to purple on hover, never a
   lighten or a darken. */
.wpforms-container.wpforms-container .wpforms-form button[type="submit"],
.wpforms-container.wpforms-container .wpforms-form input[type="submit"],
.wpforms-container.wpforms-container .wpforms-form .wpforms-page-button {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 16px 32px;
	border: 0;
	border-radius: var(--hc-radius-btn);
	background: var(--hc-brand);
	color: #ffffff;
	font-family: inherit;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.14em;
	line-height: 1;
	text-transform: uppercase;
	cursor: pointer;
	transition: background var(--hc-step), transform var(--hc-step);
}

.wpforms-container.wpforms-container .wpforms-form button[type="submit"]:hover,
.wpforms-container.wpforms-container .wpforms-form input[type="submit"]:hover,
.wpforms-container.wpforms-container .wpforms-form .wpforms-page-button:hover { background: var(--hc-brand-deep); }

.wpforms-container.wpforms-container .wpforms-form button[type="submit"]:active,
.wpforms-container.wpforms-container .wpforms-form input[type="submit"]:active { transform: scale(0.98); }

.wpforms-container.wpforms-container .wpforms-form button[type="submit"]:focus-visible,
.wpforms-container.wpforms-container .wpforms-form input[type="submit"]:focus-visible {
	outline: none;
	box-shadow: var(--hc-shadow-focus);
}

/* The plugin's own container margins fight the card's padding. */
.hc-form-card .wpforms-container { margin: 0; }
.hc-form-card .wpforms-container.wpforms-container .wpforms-form .wpforms-field { padding: 0 0 18px; }

/*
 * Contact block: the two column heads start on the same line, so their eyebrows
 * align. Inside a column the head needs less space beneath it than it does when
 * it introduces a whole section.
 */
.hc-contactblk .hc-sec-head { max-width: 100%; margin-bottom: clamp(28px, 3.5vw, 44px); }
.hc-form-card .hc-eyebrow { margin-top: 0; }
.hc-form-card__title { margin: 10px 0 0; font-size: clamp(1.375rem, 2vw, 1.75rem); }
.hc-form-card__sub { margin: 14px 0 0; color: var(--hc-ink-2); font-size: 15.5px; line-height: 1.6; }
.hc-form-card .wpforms-container { margin-top: clamp(24px, 3vw, 34px); }

/*
 * A panel whose copy runs long — a biography, say. Centring the photograph
 * against four paragraphs strands it mid-column with dead space above and
 * below, so the columns align to the top and the photograph follows the reader
 * down instead. The reveal animation's translate is dropped for this media,
 * because a transformed element becomes a containing block and sticky would
 * silently stop working; the fade is kept.
 */
.hc-panel--long .hc-panel__inner {
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	align-items: start;
}
.hc-panel--long .hc-panel__body { max-width: 62ch; }
.hc-panel--long .hc-panel__media { position: sticky; top: clamp(96px, 12vh, 128px); }
.hc-reveal .hc-panel--long .hc-panel__media { transform: none; }

@media (max-width: 980px) {
	.hc-panel--long .hc-panel__media { position: static; }
	.hc-panel--long .hc-panel__body { max-width: none; }
}
