/* ============================================================
   JW&Co — interactive states for primitive blocks.
   Resting styles are inline (pixel-exact from JSX); these rules add
   only :hover / :focus / lift transitions that inline styles can't do.
   ============================================================ */

/* -- Button (from Button.jsx hoverIn/hoverOut) -- */
/* Resting styles: helper-rendered .jw-btn carry them inline (pixel-exact); these
   class-level rules (same tokens) let hand-written <a class="jw-btn jw-btn--*">
   render identically without inline styles. */
.jw-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; font-family: var(--font-sans); font-weight: var(--fw-semibold); font-size: var(--fs-button); letter-spacing: var(--ls-button); line-height: 1; padding: .75rem 2rem; border-radius: var(--radius-btn); border: 1.5px solid transparent; cursor: pointer; text-decoration: none; transition: transform var(--ease), box-shadow var(--ease), background-color var(--ease), border-color var(--ease), color var(--ease); }
.jw-btn--gold { background: var(--action); color: var(--jw-white); border-color: var(--action); }
.jw-btn--navy-ghost { background: transparent; color: var(--jw-navy); border-color: var(--jw-navy); }
.jw-btn--white-ghost { background: transparent; color: var(--jw-white); border-color: rgba(255, 255, 255, .6); }
.jw-btn:hover { text-decoration: none; }
.jw-btn:hover { transform: translateY(-2px); }
.jw-btn--gold:hover { background: var(--action-hover); border-color: var(--action-hover); box-shadow: var(--shadow-gold); }
.jw-btn--navy-ghost:hover { background: var(--jw-navy); color: var(--jw-white); }
.jw-btn--white-ghost:hover { background: rgba(255,255,255,.1); border-color: var(--jw-white); }
.jw-btn:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* -- Native core/button, styled pixel-identical to jw/button.
   Variants are block styles (register_block_style in functions.php):
   Gold (default), Navy Ghost, White Ghost. Uses the same tokens as .jw-btn.
   High specificity (.wp-element-button) overrides core's default button CSS. -- */
.wp-block-button .wp-block-button__link.wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	font-family: var(--font-sans);
	font-weight: var(--fw-semibold);
	font-size: var(--fs-button);
	letter-spacing: var(--ls-button);
	line-height: 1;
	padding: .75rem 2rem;
	border-radius: var(--radius-btn);
	border: 1.5px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: transform var(--ease), box-shadow var(--ease), background-color var(--ease), border-color var(--ease), color var(--ease);
}
.wp-block-button .wp-block-button__link.wp-element-button:hover { transform: translateY(-2px); }
.wp-block-button .wp-block-button__link.wp-element-button:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* Gold — default (also applies when no style class is set) */
.wp-block-button:not(.is-style-navy-ghost):not(.is-style-white-ghost) .wp-block-button__link.wp-element-button {
	background: var(--action);
	color: var(--jw-white);
	border-color: var(--action);
}
.wp-block-button:not(.is-style-navy-ghost):not(.is-style-white-ghost) .wp-block-button__link.wp-element-button:hover {
	background: var(--action-hover);
	border-color: var(--action-hover);
	box-shadow: var(--shadow-gold);
}
/* Navy ghost */
.wp-block-button.is-style-navy-ghost .wp-block-button__link.wp-element-button {
	background: transparent;
	color: var(--jw-navy);
	border-color: var(--jw-navy);
}
.wp-block-button.is-style-navy-ghost .wp-block-button__link.wp-element-button:hover {
	background: var(--jw-navy);
	color: var(--jw-white);
}
/* White ghost */
.wp-block-button.is-style-white-ghost .wp-block-button__link.wp-element-button {
	background: transparent;
	color: var(--jw-white);
	border-color: rgba(255, 255, 255, .6);
}
.wp-block-button.is-style-white-ghost .wp-block-button__link.wp-element-button:hover {
	background: rgba(255, 255, 255, .1);
	border-color: var(--jw-white);
}
/* Sizes (md is the base above). Apply via the block's Additional CSS class:
   jw-btn-sm or jw-btn-lg. */
.wp-block-button.jw-btn-sm .wp-block-button__link.wp-element-button {
	padding: .6rem 1.4rem;
	font-size: .82rem;
}
.wp-block-button.jw-btn-lg .wp-block-button__link.wp-element-button {
	padding: .9rem 2.4rem;
}

/* ============================================================
   Native block PATTERN helpers (core blocks styled to match the JW design).
   Used by /patterns/*.php so sections stay fully editable on the canvas.
   ============================================================ */

/* Eyebrow (teal, uppercase) on a core paragraph */
.jw-eyebrow-text {
	display: inline-block;
	font-family: var(--font-sans);
	font-size: var(--fs-eyebrow);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	color: var(--accent);
	margin: 0 0 16px;
}
/* Constrain a heading's line length (matches the 22ch prototype wrap) */
.jw-heading-clamp { max-width: 22ch; margin: 0; color: var(--jw-navy); }
/* Eyebrow→heading gap: WP flow forces a 24px heading margin-top. Pin every
   section heading to the design's 16px, everywhere (0,2,0 beats that 0,1,0). */
.jw-heading-clamp.jw-heading-clamp,
.jw-hero-heading.jw-hero-heading { margin-top: 16px; }
.jw-heading-clamp.is-on-dark { color: #fff; }

/* Eyebrow tone modifiers (base is teal --accent) */
.jw-eyebrow-text.is-on-dark { color: var(--stat-on-dark); }
.jw-eyebrow-text.is-gold { color: var(--jw-gold); }

/* These grid helpers are core Groups (is-layout-flow), so style.css's global
   `.is-layout-flow > * { margin-block-start: 24px }` rhythm pushes every non-first
   cell down 24px and eats its stretch height. Grids space via `gap`, not margin —
   zero it. Doubled class = 0,2,0 to beat that 0,1,0 rule (style.css loads later). */
/* blockGap is 0, so structural Groups should NOT inherit style.css's global
   24px `.is-layout-flow/constrained > * { margin-block-start:24px }` rhythm
   (that rule is meant for prose — headings/paragraphs/lists). Zero it on every
   Group; patterns space via explicit gap/margins. 0,2,0 beats that 0,1,0 rule. */
.wp-block-group.wp-block-group { margin-block-start: 0; }

/* ...but the section grids DO want a gap below the section head. Restore it with
   a doubled class (0,2,0) placed AFTER the zero rule so it wins the tie. */
.jw-feature-grid.jw-feature-grid { margin-top: 48px; }
.jw-path-grid.jw-path-grid { margin-top: 48px; }
.jw-tomb-grid.jw-tomb-grid { margin-top: 44px; }
.jw-ind-grid.jw-ind-grid { margin-top: 44px; }

.jw-feature-grid.jw-feature-grid > *,
.jw-path-grid.jw-path-grid > *,
.jw-calc-grid.jw-calc-grid > *,
.jw-tomb-grid.jw-tomb-grid > *,
.jw-ind-grid.jw-ind-grid > *,
.jw-ind-card.jw-ind-card > *,
.jw-path-card.jw-path-card > * { margin-block-start: 0; }

/* Teal check-circle list on a core/list */
.jw-check-list { list-style: none; padding: 0; margin: 28px 0 0; display: grid; gap: 18px; }
.jw-check-list li {
	position: relative;
	padding-left: 32px;
	color: var(--jw-muted);
	line-height: 1.6;
}
.jw-check-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 2px;
	width: 20px;
	height: 20px;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23007B66' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><path d='m9 12 2 2 4-4'/></svg>");
}

/* Value-split columns gap + CTA spacing */
.jw-vs-cols { gap: 64px; }
.jw-vs-cta { margin-top: 30px; }

/* Media placeholder card (offwhite, rounded, centered icon + label) */
.jw-media-card {
	min-height: 360px;
	border-radius: var(--radius-xl);
	background: var(--jw-offwhite-2);
	border: 1px solid var(--jw-border);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 24px;
	color: var(--jw-muted);
}
.jw-media-card::before {
	content: "";
	width: 26px;
	height: 26px;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 24 24' fill='none' stroke='%23616A75' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><rect width='18' height='18' x='3' y='3' rx='2' ry='2'/><circle cx='9' cy='9' r='2'/><path d='m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/></svg>");
}
.jw-media-label { font-size: .78rem; letter-spacing: .04em; color: var(--jw-muted); margin: 0; }

@media (max-width: 781px) {
	.jw-vs-cols { gap: 40px; }
}

/* Feature Cards pattern — centered head + 2×2 numbered card grid + ghost CTA */
.jw-section-head { text-align: center; max-width: 720px; margin: 0 auto; }
.jw-section-head .jw-heading-clamp { margin-left: auto; margin-right: auto; }

.jw-feature-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	margin-top: 48px;
}
.jw-feature-card {
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-card);
	padding: var(--sp-8);
	color: var(--text-body);
	box-shadow: var(--shadow-xs);
	transition: transform var(--ease), box-shadow var(--ease);
}
.jw-feature-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-feature-card .jw-card-num {
	font-family: var(--font-display);
	font-weight: 900;
	font-size: 34px;
	color: var(--jw-gold);
	line-height: 1;
	margin: 0;
}
.jw-feature-card h3 { margin: 14px 0 8px; }
.jw-feature-card .jw-card-body {
	color: var(--jw-muted);
	font-size: .95rem;
	line-height: 1.6;
	margin: 0;
}
.jw-feature-cta { margin-top: 40px; }

@media (max-width: 781px) {
	.jw-feature-grid { grid-template-columns: 1fr; }
}

/* Three-Paths pattern — centered head + 3-col icon card grid (icon variant) */
.jw-path-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-top: 48px;
}
.jw-path-card {
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-xl);
	padding: var(--sp-10);
	box-shadow: var(--shadow-feature);
	display: flex;
	flex-direction: column;
}
.jw-path-icon {
	width: 46px;
	height: 46px;
	border-radius: 10px;
	background: var(--jw-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 0 18px;
	color: var(--jw-gold-light);
}
/* core/icon inside the navy tile — outline, gold, 22px */
.jw-path-icon .wp-block-icon { display: inline-flex; line-height: 0; margin: 0; }
.jw-path-icon .wp-block-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; }
/* beat WP's `:root :where(.is-layout-flow) > *{margin-block-end:0}` (0,1,0) */
.jw-path-card .jw-path-icon { margin-bottom: 18px; }
.jw-path-card h3 { margin: 0 0 10px; }
.jw-path-card .jw-card-body {
	color: var(--jw-muted);
	font-size: .95rem;
	line-height: 1.6;
	margin: 0;
	flex: 1;
}
.jw-path-card .jw-path-link { margin: 18px 0 0; }
.jw-path-link a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--jw-teal);
	font-weight: 500;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.jw-path-link a:hover { color: var(--text-link-hover); }
/* Arrow after the text (order:1), drawn as a box → not underlined */
.jw-path-link a::after {
	content: "";
	order: 1;
	width: 15px;
	height: 15px;
	flex: 0 0 auto;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23007B66' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='m12 5 7 7-7 7'/></svg>");
}

@media (max-width: 781px) {
	.jw-path-grid { grid-template-columns: 1fr; }
}

/* Calculator Teaser pattern — navy split: copy left + result card right */
.jw-calc-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
}
.jw-calc-lead { margin-top: 18px; color: rgba(255, 255, 255, .72); }

/* Check row — a core/list; gold check-circle drawn with CSS (no icon markup) */
.jw-calc-checks {
	list-style: none;
	padding: 0;
	margin: 24px 0 28px;
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
}
.jw-calc-checks li {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: .85rem;
	color: var(--jw-gold-light);
}
.jw-calc-checks li::before {
	content: "";
	width: 15px;
	height: 15px;
	flex: 0 0 auto;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23DAA24F' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><path d='m9 12 2 2 4-4'/></svg>");
}

/* Gold CTA — core/button (gold is the default style); arrow via CSS */
.jw-calc-cta { margin: 0; }
.jw-calc-cta .wp-element-button::after { content: "\2192"; }

.jw-calc-card {
	background: #fff;
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-xl);
	padding: var(--sp-10);
	color: var(--text-body);
	box-shadow: var(--shadow-feature);
}
.jw-calc-card .jw-eyebrow-text { margin-bottom: 0; }
/* Beat .jw-band-navy h3 / .jw-on-dark h3 (both 0,1,1) in every load order (front + editor) */
.jw-band-navy .jw-calc-card h3,
.jw-on-dark .jw-calc-card h3 { margin: 8px 0 16px; color: var(--text-body); }

/* Result rows — a core/list; label = text, value = <strong> */
.jw-calc-rows {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: 14px;
}
.jw-calc-rows li {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	background: var(--jw-offwhite);
	border-radius: 8px;
	font-size: .9rem;
	color: var(--jw-muted);
}
.jw-calc-rows li strong { color: var(--text-body); font-weight: 700; }
.jw-calc-rows li:last-child {
	padding: 16px;
	background: var(--jw-navy);
	color: rgba(255, 255, 255, .7);
}
.jw-calc-rows li:last-child strong {
	color: var(--jw-gold-light);
	font-family: var(--font-display);
	font-size: 1.15rem;
}

@media (max-width: 781px) {
	.jw-calc-grid { grid-template-columns: 1fr; gap: 40px; }
}

/* Tombstone Grid pattern — left head + 4-col navy transaction cards */
.jw-tomb-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	align-items: stretch;
	gap: 20px;
	margin-top: 44px;
}
.jw-tomb-card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: var(--surface-card-dark);
	border: 1px solid var(--border-on-dark);
	border-radius: var(--radius-card);
	padding: var(--sp-8);
	color: var(--text-on-dark);
}
/* Scope inner rules under .jw-tomb-card (0,2,0) so they beat style.css's
   `.is-layout-flow > * { margin-block-start: 24px }` (0,1,0, loads later) —
   otherwise the name gains a stray 24px and the outcome loses margin-top:auto. */
.jw-tomb-card .jw-eyebrow-text { margin: 0; }
.jw-tomb-card .jw-tomb-name {
	margin: 0;
	color: #fff;
	font-size: 1.1rem;
	line-height: 1.25;
}
.jw-tomb-card .jw-tomb-outcome {
	margin: auto 0 0;
	padding-top: 14px;
	border-top: 1px solid rgba(255, 255, 255, .1);
	font-family: var(--font-display);
	font-weight: 700;
	color: var(--jw-gold-light);
	font-size: .95rem;
}

@media (max-width: 781px) {
	.jw-tomb-grid { grid-template-columns: 1fr; }
}

/* Responsive section rhythm — sections carry inline 96px vertical padding, so
   dial it down on smaller screens (!important to beat the inline style). Covers
   the native band patterns, the hero, and the one remaining dynamic section. */
@media (max-width: 900px) {
	.jw-band-white,
	.jw-band-alt,
	.jw-band-navy,
	.wp-block-jw-testimonial {
		padding-top: 64px !important;
		padding-bottom: 64px !important;
	}
	.jw-hero-inner { padding-top: 80px !important; padding-bottom: 56px !important; }
}
@media (max-width: 540px) {
	.jw-band-white,
	.jw-band-alt,
	.jw-band-navy,
	.wp-block-jw-testimonial {
		padding-top: 48px !important;
		padding-bottom: 48px !important;
	}
	.jw-hero-inner { padding-top: 60px !important; padding-bottom: 44px !important; }
}

/* ============================================================
   Services page — hero pill, core-service rows, process cards.
   ============================================================ */
.jw-svc-pill.jw-svc-pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: fit-content;
	margin: 28px 0 0;
	padding: 7px 16px;
	border-radius: 999px;
	background: rgba(199, 138, 59, .15);
	border: 1px solid rgba(199, 138, 59, .4);
	color: var(--jw-gold-light);
	font-size: .8rem;
	font-weight: 600;
	letter-spacing: .02em;
}
.jw-svc-pill .wp-block-icon { display: inline-flex; line-height: 0; margin: 0; }
.jw-svc-pill .wp-block-icon svg { width: 14px; height: 14px; fill: none; stroke: currentColor; }
.jw-svc-pill p { margin: 0; }

/* Core service rows: navy panel | 2-col checklist */
.jw-svc-stack.jw-svc-stack { display: grid; gap: 20px; margin-top: 48px; }
.jw-svc-row {
	display: grid;
	grid-template-columns: 340px 1fr;
	border: 1px solid var(--jw-border);
	border-radius: var(--radius-xl);
	overflow: hidden;
	position: relative;
	transition: transform var(--ease), box-shadow var(--ease), border-color var(--ease);
}
.jw-svc-row:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); border-color: var(--jw-navy); }
/* Whole service box clickable — stretch the "Learn More" link over the row. */
.jw-svc-more a::before { content: ""; position: absolute; inset: 0; z-index: 1; }
.jw-svc-row.jw-svc-row > * { margin-block-start: 0; }
.jw-svc-panel {
	display: flex;
	flex-direction: column;
	background: var(--jw-navy);
	color: #fff;
	padding: 32px;
}
.jw-svc-panel.jw-svc-panel > * { margin-block-start: 0; }
.jw-svc-icon {
	width: 44px;
	height: 44px;
	border-radius: 10px;
	background: var(--jw-navy-mid);
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 0 20px;
	color: var(--jw-gold-light);
}
.jw-svc-icon .wp-block-icon { display: inline-flex; line-height: 0; margin: 0; }
.jw-svc-icon .wp-block-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; }
.jw-svc-panel .jw-svc-title { color: #fff; font-size: 1.35rem; margin: 0 0 10px; }
.jw-svc-panel .jw-svc-desc { color: rgba(255, 255, 255, .62); font-size: .9rem; line-height: 1.6; margin: 0; flex: 1; }
.jw-svc-more.jw-svc-more { margin: 18px 0 0; }
.jw-svc-more a { display: inline-flex; align-items: center; gap: 6px; color: var(--jw-gold-light); font-weight: 500; font-size: .9rem; text-decoration: none; }
.jw-svc-more a::after { content: "\2192"; }
.jw-svc-checklist { background: var(--jw-offwhite); padding: 32px; }
.jw-svc-checklist ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px 28px;
}
.jw-svc-checklist li {
	position: relative;
	padding-left: 28px;
	font-size: .9rem;
	line-height: 1.4;
	color: var(--jw-navy);
}
.jw-svc-checklist li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 2px;
	width: 17px;
	height: 17px;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%23007B66' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><path d='m9 12 2 2 4-4'/></svg>");
}

/* Process — 5 numbered step cards */
.jw-process-grid.jw-process-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px; margin-top: 48px; }
.jw-process-grid.jw-process-grid > * { margin-block-start: 0; }
.jw-process-card {
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-card);
	padding: 24px;
	box-shadow: var(--shadow-xs);
}
.jw-process-card.jw-process-card > * { margin-block-start: 0; }
.jw-process-num { font-family: var(--font-display); font-weight: 900; font-size: 28px; line-height: 1; color: var(--jw-gold); margin: 0; }
.jw-process-card .jw-process-name { font-size: 1.1rem; margin: 8px 0 6px; }
.jw-process-desc { color: var(--jw-muted); font-size: .85rem; margin: 0; }

@media (max-width: 900px) {
	.jw-svc-row { grid-template-columns: 1fr; }
	.jw-process-grid.jw-process-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.jw-svc-checklist ul { grid-template-columns: 1fr; }
	.jw-process-grid.jw-process-grid { grid-template-columns: 1fr; }
}

/* Detail service pages. One centered 1152 container per section (.jw-detail-wrap);
   everything inside flows left — no per-element margin/centering hacks. */
.jw-detail-wrap { max-width: calc(var(--container-max) - (var(--container-pad) * 2)); margin-inline: auto; }
.jw-section-head.is-left { text-align: left; max-width: none; margin: 0; }
.jw-section-head.is-left .jw-heading-clamp { margin-left: 0; margin-right: 0; max-width: 26ch; }

.jw-step-list.jw-step-list { display: grid; gap: 16px; margin-top: 48px; }
.jw-step-list.jw-step-list > * { margin-block-start: 0; }
.jw-step-row {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 24px;
	align-items: start;
	padding: 24px;
	border: 1px solid var(--jw-border);
	border-radius: var(--radius-card);
}
.jw-step-row.jw-step-row > * { margin-block-start: 0; }
.jw-step-num { font-family: var(--font-display); font-weight: 900; font-size: 1.8rem; line-height: 1; color: var(--jw-gold); margin: 0; }
.jw-step-body.jw-step-body > * { margin-block-start: 0; }
.jw-step-body .jw-step-title { font-size: 1.15rem; margin: 0 0 8px; }
.jw-step-desc { color: var(--jw-muted); font-size: .92rem; line-height: 1.6; margin: 0; }

.jw-detail-intro { margin-top: 16px; font-size: 1.05rem; line-height: 1.7; color: var(--jw-muted); max-width: 64ch; }
.jw-fee-grid.jw-fee-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 36px; }
.jw-fee-grid.jw-fee-grid > * { margin-block-start: 0; }
.jw-fee-card {
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-xl);
	padding: var(--sp-10);
	box-shadow: var(--shadow-feature);
}
.jw-fee-card.jw-fee-card > * { margin-block-start: 0; }
.jw-fee-card .jw-fee-title { font-size: 1.15rem; margin: 0 0 10px; }
.jw-fee-desc { color: var(--jw-muted); font-size: .92rem; line-height: 1.6; margin: 0; }
.jw-fee-note { margin-top: 24px; font-size: .92rem; color: var(--jw-muted); max-width: 64ch; }

@media (max-width: 700px) {
	.jw-fee-grid.jw-fee-grid { grid-template-columns: 1fr; }
	.jw-step-row { grid-template-columns: 44px 1fr; gap: 16px; padding: 20px; }
}

/* ============================================================
   Listings page — listing cards, For-Buyers form, brand Fluent Forms.
   ============================================================ */
.jw-listing-grid.jw-listing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 44px; }
.jw-listing-grid.jw-listing-grid > * { margin-block-start: 0; }
.jw-listing-card { display: flex; flex-direction: column; background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-card); padding: var(--sp-8); box-shadow: var(--shadow-xs); transition: transform var(--ease), box-shadow var(--ease); }
.jw-listing-card.jw-listing-card > * { margin-block-start: 0; }
.jw-listing-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-listing-meta.jw-listing-meta { display: flex; justify-content: space-between; align-items: center; min-height: 24px; margin-bottom: 14px; }
.jw-listing-cat { font-size: var(--fs-eyebrow); font-weight: var(--fw-semibold); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--jw-gold); margin: 0; }
.jw-badge-new { margin: 0; padding: 3px 10px; border-radius: 999px; background: var(--jw-teal); color: #fff; font-size: .66rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.jw-listing-title { font-size: 1.15rem; line-height: 1.3; min-height: calc(1.3em * 2); margin: 0 0 14px; color: var(--jw-navy); }
.jw-listing-rows.jw-listing-rows { display: grid; gap: 9px; }
.jw-listing-rows.jw-listing-rows > * { margin-block-start: 0; }
.jw-listing-row.jw-listing-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: .88rem; }
.jw-listing-row .jw-row-label { color: var(--jw-muted); margin: 0; }
.jw-listing-row .jw-row-val { font-weight: 700; color: var(--jw-navy); margin: 0; }

.jw-buyers-cols { gap: 56px; align-items: center; }
.jw-buyers-lead.jw-buyers-lead { margin-top: 18px; font-size: 1.05rem; font-weight: 300; line-height: 1.6; color: rgba(255, 255, 255, .72); max-width: 46ch; }
.jw-buyers-card { background: #fff; border-radius: var(--radius-xl); padding: var(--sp-10); box-shadow: var(--shadow-feature); }
.jw-buyers-card.jw-buyers-card > * { margin-block-start: 0; }

.jw-listing-cta .jw-detail-wrap { max-width: 700px; text-align: center; }
.jw-listing-cta-lead.jw-listing-cta-lead { margin-top: 14px; font-size: 1.05rem; color: var(--jw-muted); line-height: 1.6; }
.jw-listing-cta-btn.jw-listing-cta-btn { margin-top: 26px; }

@media (max-width: 900px) { .jw-listing-grid.jw-listing-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .jw-listing-grid.jw-listing-grid { grid-template-columns: 1fr; } }

/* Fluent Forms — brand styling (labels, inputs, gold submit) */
/* Kill plugin's uneven per-field margins → one consistent field gap */
.fluentform .ff-el-group,
.fluentform .ff-name-field-wrapper,
.fluentform > .fluent_form_wrapper .ff-field_container { margin: 0 0 16px !important; }
.fluentform .ff-el-group:last-of-type,
.fluentform .ff-el-group.ff_submit_btn_wrapper,
.fluentform .ff-t-container .ff-el-group:last-child { margin-bottom: 0 !important; }
.fluentform .ff-el-input--content { margin: 0 !important; }
.fluentform .ff-el-input--label { padding: 0 !important; margin: 0 0 6px !important; }
.fluentform .ff-el-input--label label { font-family: var(--font-sans); font-weight: 600; font-size: .85rem; color: var(--jw-navy); margin: 0; padding: 0; }

/* Inputs — identical border / radius / height across all field types */
.fluentform .ff-el-form-control,
.fluentform input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.fluentform textarea,
.fluentform select {
	box-sizing: border-box;
	width: 100%;
	height: 42px;
	border: 1px solid var(--jw-border);
	border-radius: 6px;
	padding: 0 14px;
	font-family: var(--font-sans);
	font-size: .95rem;
	line-height: 40px;
	color: var(--jw-navy);
	background: #fff;
	box-shadow: none;
	margin: 0;
	transition: border-color var(--ease), box-shadow var(--ease);
}
.fluentform textarea {
	height: auto;
	min-height: 120px;
	padding: 12px 14px;
	line-height: 1.5;
	border-radius: 6px;
}
.fluentform .ff-el-form-control::placeholder { color: var(--jw-muted); opacity: 1; }
.fluentform .ff-el-form-control:focus,
.fluentform input:focus,
.fluentform textarea:focus,
.fluentform select:focus { border-color: var(--jw-teal); outline: none; box-shadow: 0 0 0 3px rgba(20, 130, 130, .15); }

/* Submit — full-width gold */
.fluentform .ff-el-group.ff_submit_btn_wrapper { margin-top: 16px !important; }
.fluentform .ff-btn-submit,
.fluentform button.ff-btn-submit,
.fluentform .ff_submit_btn_wrapper button {
	width: 100%;
	height: 42px;
	background: var(--action) !important;
	color: var(--jw-white) !important;
	border: 1.5px solid var(--action) !important;
	font-family: var(--font-sans);
	font-weight: 600;
	letter-spacing: var(--ls-button);
	font-size: var(--fs-button);
	padding: 0 2rem;
	border-radius: 6px;
	cursor: pointer;
	box-shadow: none;
	transition: background var(--ease), box-shadow var(--ease), transform var(--ease);
}
.fluentform .ff-btn-submit:hover,
.fluentform button.ff-btn-submit:hover { background: var(--action-hover) !important; border-color: var(--action-hover) !important; box-shadow: var(--shadow-gold); transform: translateY(-2px); }

/* Validation + success message — branded */
.fluentform .error.text-danger,
.fluentform .ff-el-is-error .text-danger { color: #c0392b; font-size: .8rem; margin-top: 5px; }
.fluentform .ff-el-is-error input,
.fluentform .ff-el-is-error textarea,
.fluentform .ff-el-is-error select { border-color: #c0392b; }
.ff-message-success,
.fluentform_wrapper .ff-message-success,
.flu_form_success .ff-message-success {
	background: rgba(20, 130, 130, .08);
	border: 1px solid var(--jw-teal);
	border-left: 4px solid var(--jw-teal);
	border-radius: var(--radius-btn);
	padding: 18px 20px;
	color: var(--jw-navy);
	font-family: var(--font-sans);
	font-size: .95rem;
	line-height: 1.55;
}

/* ============================================================
   Insights (blog index) — sticky filter bar + AJAX article grid.
   ============================================================ */
.jw-insights { background: #fff; }
/* Sticky category / search bar */
.jw-insights-filterbar { background: #fff; border-bottom: 1px solid var(--jw-border); position: sticky; top: 72px; z-index: 20; }
.jw-insights-filterinner { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; padding-top: 16px; padding-bottom: 16px; }
.jw-insights-chips { display: flex; gap: 10px; flex-wrap: wrap; }
.jw-chip { font-family: var(--font-sans); font-size: .82rem; font-weight: var(--fw-semibold); color: var(--jw-muted); background: #fff; border: 1px solid var(--jw-border); border-radius: 999px; padding: 7px 16px; cursor: pointer; line-height: 1; transition: color var(--ease), background var(--ease), border-color var(--ease); }
.jw-chip:hover { color: var(--jw-navy); border-color: var(--jw-navy); }
.jw-chip.is-active { color: #fff; background: var(--jw-navy); border-color: var(--jw-navy); }
.jw-insights-search { position: relative; width: 240px; max-width: 100%; }
.jw-insights-search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--jw-muted); display: inline-flex; width: 15px; height: 15px; pointer-events: none; }
.jw-insights-search-input { box-sizing: border-box; width: 100%; height: 40px; border: 1px solid var(--jw-border); border-radius: 6px; padding: 0 12px 0 34px; font-family: var(--font-sans); font-size: .9rem; color: var(--jw-navy); background: #fff; }
.jw-insights-search-input:focus { outline: none; border-color: var(--jw-teal); box-shadow: 0 0 0 3px rgba(20, 130, 130, .15); }

/* Body: count + eyebrow + grid */
.jw-insights-body { background: #fff; padding: 56px 0 88px; }
.jw-insights-count { color: var(--jw-muted); font-size: .85rem; margin-bottom: 8px; }
.jw-insights-eyebrow { display: block; margin-bottom: 24px; }
.jw-insights-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; transition: opacity var(--ease); }
.jw-insights-grid.is-loading { opacity: .45; pointer-events: none; }
.jw-insights-empty { grid-column: 1 / -1; color: var(--jw-muted); padding: 24px 0; }

/* Article card */
.jw-icard { display: flex; flex-direction: column; background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-xl); overflow: hidden; text-decoration: none; color: var(--text-body); box-shadow: var(--shadow-xs); transition: transform var(--ease), box-shadow var(--ease); }
.jw-icard:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-icard-body { display: flex; flex-direction: column; flex: 1; padding: var(--sp-8); }
/* 16:9 media at the top of article cards (jw-icard + jw/post-grid) */
.jw-icard-media, .jw-pg-media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--jw-offwhite); }
.jw-icard-media img, .jw-pg-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.jw-icard, .jw-icard *, .jw-icard:hover, .jw-icard:hover *, .jw-icard:focus, .jw-icard:focus * { text-decoration: none !important; }
.jw-icard-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.jw-icard-cat { font-family: var(--font-sans); font-size: var(--fs-eyebrow); font-weight: var(--fw-semibold); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; }
.jw-icard-read { display: inline-flex; align-items: center; gap: 5px; font-size: .78rem; color: var(--jw-muted); white-space: nowrap; }
.jw-icard-title { font-size: 1.3rem; line-height: 1.2; margin: 0 0 10px; color: var(--jw-navy); }
.jw-icard-desc { color: var(--jw-muted); font-size: .92rem; line-height: 1.6; margin: 0; }
.jw-icard-link { margin-top: 16px; display: inline-flex; align-items: center; gap: 6px; }

@media (max-width: 720px) {
	.jw-insights-grid { grid-template-columns: 1fr; }
	.jw-insights-filterinner { align-items: flex-start; }
	.jw-insights-search { width: 100%; }
}

/* Newsletter band */
.jw-news-band { background: var(--jw-navy); color: #fff; }
.jw-news-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.jw-news-cols > * { margin-block-start: 0; }
.jw-news-heading.jw-news-heading { color: #fff; max-width: 16ch; margin: 12px 0 0; }
.jw-news-lead.jw-news-lead { color: rgba(255, 255, 255, .7); margin-top: 14px; max-width: 42ch; line-height: 1.6; }
.jw-news-form { display: flex; gap: 12px; align-items: stretch; }
.jw-news-form > * { margin-block-start: 0; }
.jw-news-form .jw-input { flex: 1; margin: 0; }
.jw-news-form .jw-input > div { height: 100%; }
.jw-news-form .jw-input-field { box-sizing: border-box; width: 100%; height: 48px; padding: 0 16px !important; border-radius: 6px !important; }
.jw-news-form .wp-block-buttons { margin: 0; display: flex; }
.jw-news-form .wp-block-button { margin: 0; display: flex; }
.jw-news-form .wp-block-button__link { display: inline-flex; align-items: center; height: 48px; padding-top: 0; padding-bottom: 0; border-radius: 6px; }
@media (max-width: 720px) {
	.jw-news-cols { grid-template-columns: 1fr; gap: 28px; }
	.jw-news-form { flex-wrap: wrap; }
}

/* ============================================================
   Single article — navy hero + long-form body + sticky sidebar.
   ============================================================ */
.jw-article { background: #fff; }
.jw-article-hero { padding: 72px 1.5rem 64px; }
.jw-article-hero-inner { position: relative; z-index: 1; max-width: 900px; margin-inline: auto; }
.jw-article-hero-top { display: flex; align-items: center; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.jw-article-back { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; color: rgba(255, 255, 255, .7); text-decoration: none; transition: color var(--ease); }
.jw-article-back:hover { color: #fff; }
.jw-article-title { color: #fff; font-size: clamp(2rem, 4vw, 3.2rem); line-height: 1.1; margin: 0; }
.jw-article-lead.jw-article-lead { margin-top: 20px; color: rgba(255, 255, 255, .75); max-width: 60ch; }
.jw-article-meta { display: flex; gap: 24px; margin-top: 26px; color: rgba(255, 255, 255, .6); font-size: .85rem; flex-wrap: wrap; }
.jw-article-meta span { display: inline-flex; align-items: center; gap: 7px; }
.jw-article-meta-read { color: var(--jw-gold-light); }

.jw-article-wrap { max-width: calc(var(--container-max) - (var(--container-pad) * 2)); margin-inline: auto; padding: 64px 1.5rem 88px; }
.jw-article-grid { display: grid; grid-template-columns: 1fr 320px; gap: 56px; align-items: start; }

/* Long-form body */
.jw-article-body { max-width: 680px; }
.jw-article-body > * { margin: 0 0 18px; }
.jw-article-body p { color: var(--jw-navy); font-size: 1.05rem; line-height: 1.75; }
.jw-article-body h2 { font-size: 1.7rem; line-height: 1.25; color: var(--jw-navy); margin: 36px 0 16px; }
.jw-article-body h3 { font-size: 1.3rem; color: var(--jw-navy); margin: 28px 0 12px; }
.jw-article-body ul, .jw-article-body ol { padding-left: 1.2em; color: var(--jw-navy); font-size: 1.05rem; line-height: 1.75; }
.jw-article-body li { margin-bottom: 8px; }
.jw-article-body strong { color: var(--jw-navy); font-weight: 700; }
.jw-article-body a { color: var(--jw-teal); }
.jw-article-body blockquote { margin: 28px 0; padding: 4px 0 4px 22px; border-left: 3px solid var(--jw-teal); font-family: var(--font-display); font-size: 1.4rem; font-weight: 700; color: var(--jw-navy); line-height: 1.3; }
.jw-article-body img { border-radius: var(--radius-card); }

/* Sticky sidebar */
.jw-article-side { position: sticky; top: 96px; display: grid; gap: 20px; }
.jw-side-card { border-radius: var(--radius-xl); padding: var(--sp-8); }
.jw-side-card--navy { background: var(--jw-navy); color: #fff; }
.jw-side-card--standard { background: var(--surface-card); border: 1px solid var(--border-hairline); }
.jw-side-title { margin: 8px 0; color: #fff; font-size: 1.2rem; line-height: 1.25; }
.jw-side-title--dark { color: var(--jw-navy); font-size: 1.1rem; }
.jw-side-lead { color: rgba(255, 255, 255, .7); font-size: .88rem; line-height: 1.55; margin: 0 0 16px; }
.jw-side-lead--muted { color: var(--jw-muted); }
.jw-side-btn { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; font-family: var(--font-sans); font-weight: var(--fw-semibold); font-size: var(--fs-button); letter-spacing: var(--ls-button); line-height: 1; padding: .8rem 1.4rem; border-radius: var(--radius-btn); border: 1.5px solid transparent; text-decoration: none; margin-top: 4px; }
.jw-side-btn.jw-btn--gold { background: var(--action); color: var(--jw-white); border-color: var(--action); }
.jw-side-btn.jw-btn--navy-ghost { background: transparent; color: var(--jw-navy); border-color: var(--jw-navy); }
.jw-side-btn:hover, .jw-side-btn:focus, .jw-article-back:hover, .jw-side-related-item:hover { text-decoration: none; }
.jw-side-btn.jw-btn--gold:hover { background: var(--action-hover); border-color: var(--action-hover); box-shadow: var(--shadow-gold); }
.jw-side-btn.jw-btn--navy-ghost:hover { background: var(--jw-navy); color: var(--jw-white); border-color: var(--jw-navy); }
.jw-eyebrow-text.is-muted { color: var(--jw-muted); }
.jw-side-related .jw-eyebrow-text { display: block; margin-bottom: 14px; }
.jw-side-related-list { display: grid; gap: 14px; }
.jw-side-related-item { display: flex; gap: 8px; align-items: flex-start; color: var(--jw-navy); font-size: .9rem; font-weight: 500; line-height: 1.4; text-decoration: none; transition: color var(--ease); }
.jw-side-related-item:hover { color: var(--jw-teal); }

@media (max-width: 900px) {
	.jw-article-grid { grid-template-columns: 1fr; gap: 40px; }
	.jw-article-side { position: static; }
}

/* ============================================================
   Contact page (jw/contact block).
   ============================================================ */
.jw-eyebrow-text.is-teal { color: var(--jw-teal); }

.jw-contact-hero { padding: 96px 0 64px; }
.jw-contact-hero-inner { position: relative; z-index: 1; }
.jw-contact-title.jw-contact-title { max-width: 18ch; }
.jw-contact-lead.jw-contact-lead { margin-top: 22px; color: rgba(255, 255, 255, .75); max-width: 56ch; }

.jw-contact-body { background: #fff; padding: 88px 0; }
.jw-contact-grid.jw-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; margin: 0; }
.jw-contact-grid .wp-block-column { margin: 0; }
.jw-contact-grid .jw-eyebrow-text { display: block; margin-bottom: 16px; }
.jw-contact-h2.jw-contact-h2 { max-width: 20ch; margin: 0; color: var(--jw-navy); }
.jw-contact-p.jw-contact-p { margin-top: 16px; margin-bottom: 0; font-size: 1rem; line-height: 1.7; color: var(--jw-muted); }

.jw-contact-card { background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-xl); padding: var(--sp-8); }
.jw-contact-formcard.jw-contact-formcard { margin-top: 28px; box-shadow: var(--shadow-feature); }
.jw-contact-embed.jw-contact-embed { display: flex; align-items: center; justify-content: center; gap: 10px; text-align: center; min-height: 180px; margin: 0 0 20px; border: 1px dashed var(--jw-border); border-radius: var(--radius-card); background: var(--jw-offwhite); color: var(--jw-muted); font-size: .9rem; padding: 20px; }
.jw-contact-embed p { margin: 0; color: var(--jw-muted); font-size: .9rem; }
.jw-contact-embed .wp-block-icon { margin: 0; line-height: 0; }
.jw-contact-embed .wp-block-icon svg { width: 20px; height: 20px; color: var(--jw-muted); }

.jw-contact-people.jw-contact-people { display: grid; gap: 16px; margin-top: 28px; }
.jw-person-card { padding: var(--sp-6); }
.jw-person-head.jw-person-head { display: flex; align-items: center; gap: 16px; }
.jw-person-avatar.jw-person-avatar { width: 52px; height: 52px; border-radius: 50%; overflow: hidden; flex: 0 0 auto; display: block; margin: 0; }
.jw-person-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.jw-person-id { flex: 1; }
.jw-person-name.jw-person-name { margin: 0; }
.jw-person-name a { font-weight: 600; font-size: 1rem; color: var(--jw-navy); text-decoration: none; }
.jw-person-name a:hover { color: var(--jw-teal); }
.jw-person-title.jw-person-title { margin: 2px 0 0; color: var(--jw-muted); font-size: .85rem; }
.jw-person-contact.jw-person-contact { display: grid; gap: 8px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--jw-border); }
.jw-pc-row.jw-pc-row { display: flex; align-items: center; gap: 9px; }
.jw-pc-row p { margin: 0; font-size: .9rem; color: var(--jw-navy); }
.jw-pc-row a { color: var(--jw-navy); text-decoration: none; }
.jw-pc-row a:hover { color: var(--jw-teal); }
.jw-pc-row .wp-block-icon { margin: 0; line-height: 0; flex: 0 0 auto; }
.jw-pc-row .wp-block-icon svg { width: 15px; height: 15px; color: var(--jw-teal); }

.jw-contact-confidential { background: var(--jw-offwhite); padding: 56px 0; }
.jw-contact-confidential-inner { display: flex; align-items: center; gap: 16px; justify-content: center; flex-wrap: wrap; text-align: center; }
.jw-contact-confidential p { font-size: 1.05rem; color: var(--jw-navy); max-width: 56ch; margin: 0; }
.jw-contact-confidential .wp-block-icon { margin: 0; line-height: 0; }
.jw-contact-confidential .wp-block-icon svg { width: 20px; height: 20px; color: var(--jw-teal); }

.jw-contact-cta { padding: 96px 0; text-align: center; }
.jw-contact-cta-inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.jw-contact-cta .jw-eyebrow-text { display: block; margin-bottom: 12px; }
.jw-contact-cta-title { color: #fff; margin: 0; }
.jw-contact-cta-lead { margin: 18px auto 0; color: rgba(255, 255, 255, .72); }
.jw-contact-cta-btn { margin-top: 32px; }

@media (max-width: 860px) {
	.jw-contact-grid { grid-template-columns: 1fr; gap: 44px; }
}

/* ============================================================
   Free Market Assessment page (native blocks).
   ============================================================ */
.jw-assess-hero-actions.jw-assess-hero-actions { margin-top: 32px; gap: 16px; }

/* Eligibility bar */
.jw-elig-bar { background: #fff; border-bottom: 1px solid var(--jw-border); }
.jw-elig-inner { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.jw-elig-inner > * { margin-block-start: 0; }
.jw-elig-pill.jw-elig-pill { display: inline-flex; align-items: center; gap: 7px; margin: 0; padding: 7px 15px; border-radius: 999px; background: rgba(20, 130, 130, .1); color: var(--jw-teal); font-size: .85rem; font-weight: 600; }
.jw-elig-pill .wp-block-icon { margin: 0; line-height: 0; }
.jw-elig-pill .wp-block-icon svg { width: 14px; height: 14px; color: var(--jw-teal); }
.jw-elig-note.jw-elig-note { margin: 0; color: var(--jw-muted); font-size: .92rem; }

/* What's included — deliverable cards */
.jw-del-grid.jw-del-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 44px; }
.jw-del-grid.jw-del-grid > * { margin-block-start: 0; }
.jw-del-card { background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-card); padding: var(--sp-8); box-shadow: var(--shadow-xs); transition: transform var(--ease), box-shadow var(--ease); }
.jw-del-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-del-card--center { grid-column: 2 / span 1; }
.jw-del-iconbox.jw-del-iconbox { width: 44px; height: 44px; border-radius: 10px; background: var(--jw-navy); display: flex; align-items: center; justify-content: center; margin: 0 0 16px; }
.jw-del-iconbox .wp-block-icon { margin: 0; line-height: 0; }
.jw-del-iconbox .wp-block-icon svg { width: 20px; height: 20px; color: var(--jw-gold-light); }
.jw-del-card h3 { font-size: 1.1rem; margin: 0 0 8px; color: var(--jw-navy); }
.jw-del-card p { color: var(--jw-muted); font-size: .92rem; line-height: 1.6; margin: 0; }

/* Beyond a broker's opinion */
.jw-beyond-grid.jw-beyond-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.jw-beyond-grid.jw-beyond-grid > * { margin-block-start: 0; }
.jw-beyond-h2.jw-beyond-h2 { max-width: 20ch; margin: 0; color: var(--jw-navy); }
.jw-sample-card { background: var(--jw-navy); color: #fff; border-radius: var(--radius-xl); padding: var(--sp-8); }
.jw-sample-card .jw-eyebrow-text { display: block; margin-bottom: 14px; }
.jw-sample-rows { display: grid; gap: 12px; }
.jw-sample-rows > * { margin-block-start: 0; }
.jw-sample-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 14px; background: var(--jw-navy-mid); border-radius: 8px; font-size: .9rem; }
.jw-sample-row .jw-sample-label { color: rgba(255, 255, 255, .65); margin: 0; }
.jw-sample-row .jw-sample-val { color: #fff; font-weight: 700; margin: 0; }
.jw-sample-row .jw-sample-val.is-gold { color: var(--jw-gold-light); }

/* Stats band */
.jw-astats-band { background: var(--jw-navy); color: #fff; }
.jw-astats-grid.jw-astats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; text-align: center; }
.jw-astats-grid.jw-astats-grid > * { margin-block-start: 0; }
.jw-astats-grid .jw-stat { margin: 0; color: var(--jw-gold-light); }
.jw-astats-grid .jw-stat-label { margin: 6px 0 0; color: rgba(255, 255, 255, .6); }

/* Closing CTA */
.jw-assess-cta { background: var(--jw-offwhite); }
.jw-assess-cta-inner { max-width: 760px; margin-inline: auto; text-align: center; display: flex; flex-direction: column; align-items: center; }
.jw-assess-cta-inner .jw-eyebrow-text { display: block; margin-bottom: 16px; }
.jw-assess-cta-title { margin: 0; color: var(--jw-navy); }
.jw-assess-cta-lead.jw-assess-cta-lead { margin: 18px auto 0; color: var(--jw-muted); }
.jw-assess-cta-actions.jw-assess-cta-actions { margin-top: 32px; gap: 16px; justify-content: center; }

@media (max-width: 900px) {
	.jw-del-grid.jw-del-grid { grid-template-columns: 1fr 1fr; }
	.jw-del-card--center { grid-column: auto; }
	.jw-beyond-grid.jw-beyond-grid { grid-template-columns: 1fr; gap: 40px; }
	.jw-astats-grid.jw-astats-grid { grid-template-columns: 1fr 1fr; row-gap: 28px; }
}
@media (max-width: 600px) {
	.jw-del-grid.jw-del-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Tools — embedded valuation calculator.
   ============================================================ */
.jw-tool-hero-inner { position: relative; z-index: 1; max-width: 900px; margin-inline: auto; text-align: center; display: flex; flex-direction: column; align-items: center; }
.jw-tool-hero-inner .jw-eyebrow-text { display: block; margin-bottom: 16px; }
.jw-tool-hero-title.jw-tool-hero-title { color: #fff; margin: 0; }
.jw-tool-hero-lead.jw-tool-hero-lead { margin: 18px auto 0; color: rgba(255, 255, 255, .75); max-width: 52ch; }
.jw-tool-badges.jw-tool-badges { display: flex; gap: 22px; justify-content: center; flex-wrap: wrap; margin-top: 24px; }
.jw-tool-badges.jw-tool-badges > * { margin-block-start: 0; }
.jw-tool-badge { display: inline-flex; align-items: center; gap: 7px; font-size: .82rem; color: var(--jw-gold-light); }
.jw-tool-badge p { margin: 0; color: var(--jw-gold-light); font-size: .82rem; }
.jw-tool-badge .wp-block-icon { margin: 0; line-height: 0; }
.jw-tool-badge .wp-block-icon svg { width: 14px; height: 14px; color: var(--jw-gold-light); }

.jw-calc-embed { max-width: 640px; margin: 0 auto; }
.jw-calc-embed iframe { background: #F4F3F0; border-radius: var(--rlg, 16px); }
.jw-tool-cta { max-width: 640px; margin: 32px auto 0; background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-xl); padding: var(--sp-8); text-align: center; }
.jw-tool-cta .jw-eyebrow-text { display: block; margin-bottom: 8px; }
.jw-tool-cta-title { margin: 0 0 8px; color: var(--jw-navy); font-size: 1.2rem; }
.jw-tool-cta-lead.jw-tool-cta-lead { margin: 0 0 18px; color: var(--jw-muted); font-size: .92rem; line-height: 1.55; }

/* ============================================================
   Team — index cards + member bio page.
   ============================================================ */
/* Team INDEX cards */
.jw-team-grid.jw-team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 44px; }
.jw-team-grid.jw-team-grid > * { margin-block-start: 0; }
.jw-teamcard { position: relative; display: flex; flex-direction: column; background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-xl); overflow: hidden; transition: transform var(--ease), box-shadow var(--ease), border-color var(--ease); }
.jw-teamcard.jw-teamcard > * { margin-block-start: 0; }
.jw-teamcard:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); border-color: var(--jw-teal); }
.jw-teamcard-photo { position: relative; aspect-ratio: 1 / 1; margin: 0; overflow: hidden; background: var(--jw-offwhite); }
.jw-teamcard-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.jw-teamcard-body { display: flex; flex-direction: column; gap: 8px; flex: 1; padding: var(--sp-8); }
.jw-teamcard-body.jw-teamcard-body > * { margin-block-start: 0; }
.jw-teamcard-title { font-size: var(--fs-eyebrow); font-weight: var(--fw-semibold); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--jw-gold); margin: 0; }
.jw-teamcard-name { font-size: 1.25rem; margin: 0; color: var(--jw-navy); }
.jw-teamcard-tag { color: var(--jw-muted); font-size: .9rem; line-height: 1.6; margin: 0; flex: 1; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.jw-teamcard-more.jw-teamcard-more { margin-top: 4px; }
.jw-teamcard-more a { position: static; display: inline-flex; align-items: center; gap: 6px; color: var(--jw-teal); font-weight: 600; font-size: .88rem; text-decoration: none; }
.jw-teamcard-more a::after { content: "\2192"; }
.jw-teamcard-more a::before { content: ""; position: absolute; inset: 0; }

/* Team BIO — hero avatar + 2-col */
.jw-teambio-hero { display: grid; grid-template-columns: 140px 1fr; gap: 32px; align-items: center; }
.jw-teambio-hero.jw-teambio-hero > * { margin-block-start: 0; }
.jw-teambio-avatar { position: relative; width: 140px; height: 140px; margin: 0; border-radius: 50%; overflow: hidden; border: 3px solid rgba(255, 255, 255, .15); background: var(--jw-navy-mid); }
.jw-teambio-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.jw-teambio-name { color: #fff; font-size: clamp(2rem, 4.5vw, 3.2rem); margin: 0; }
.jw-teamabout-cols { gap: 56px; align-items: start; }
.jw-teamabout-media { min-height: 280px; height: 100%; }
.jw-teamabout-bio.jw-teamabout-bio { margin-top: 18px; font-size: 1rem; line-height: 1.75; color: var(--jw-muted); }
/* stats */
.jw-teamstat-grid.jw-teamstat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; text-align: center; }
.jw-teamstat-grid.jw-teamstat-grid > * { margin-block-start: 0; }
.jw-teamstat-grid .jw-stat { margin: 0; }
.jw-teamstat-grid .jw-stat-label { margin: 6px 0 0; }
/* industries pills */
.jw-pill-row.jw-pill-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.jw-pill-row.jw-pill-row > * { margin-block-start: 0; }
.jw-npill { margin: 0; padding: 8px 16px; border-radius: 999px; background: var(--jw-navy); color: #fff; font-size: .85rem; font-weight: 500; }
/* published work cards */
.jw-pub-grid.jw-pub-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 44px; }
.jw-pub-grid.jw-pub-grid > * { margin-block-start: 0; }
.jw-pub-card { background: var(--surface-card); border: 1px solid var(--border-hairline); border-radius: var(--radius-card); padding: var(--sp-8); box-shadow: var(--shadow-xs); transition: transform var(--ease), box-shadow var(--ease); }
.jw-pub-card.jw-pub-card > * { margin-block-start: 0; }
.jw-pub-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-pub-card .jw-pub-cat.jw-pub-cat { font-size: var(--fs-eyebrow); font-weight: var(--fw-semibold); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--jw-gold); margin: 0; }
.jw-pub-card .jw-pub-title.jw-pub-title { font-size: 1.1rem; line-height: 1.25; color: var(--jw-navy); margin: 12px 0 10px; }
.jw-pub-card .jw-pub-desc.jw-pub-desc { color: var(--jw-muted); font-size: .9rem; line-height: 1.6; margin: 0; }
@media (max-width: 900px) { .jw-team-grid.jw-team-grid { grid-template-columns: repeat(2, 1fr); } .jw-pub-grid.jw-pub-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .jw-team-grid.jw-team-grid { grid-template-columns: 1fr; } .jw-teambio-hero { grid-template-columns: 1fr; gap: 20px; } }

/* Industries INDEX — track-record stat band */
.jw-trust-grid.jw-trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 44px; text-align: center; }
.jw-trust-grid.jw-trust-grid > * { margin-block-start: 0; }
.jw-trust-grid .jw-stat { margin: 0; color: var(--jw-gold); }
.jw-trust-grid .jw-stat-label { margin: 6px 0 0; }
@media (max-width: 781px) { .jw-trust-grid.jw-trust-grid { grid-template-columns: 1fr 1fr; gap: 28px; } }

/* Industries INDEX — rich sector cards (image + icon/title + intro + stat + link) */
.jw-sector-grid.jw-sector-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 44px; }
.jw-sector-grid.jw-sector-grid > * { margin-block-start: 0; }
.jw-secard {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-xl);
	overflow: hidden;
	transition: transform var(--ease), box-shadow var(--ease), border-color var(--ease);
}
.jw-secard.jw-secard > * { margin-block-start: 0; }
.jw-secard:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); border-color: var(--jw-teal); }
/* Media = a real core/image block (upload directly). Empty → shows an offwhite
   box + image glyph; once set, the photo covers the 16:10 area. */
.jw-secard-media {
	position: relative;
	aspect-ratio: 16 / 10;
	margin: 0;
	overflow: hidden;
	background: var(--jw-offwhite);
	border-bottom: 1px solid var(--border-hairline);
}
.jw-secard-media::before {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 28px;
	height: 28px;
	background: no-repeat center / contain url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 24 24' fill='none' stroke='%23616A75' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><rect width='18' height='18' x='3' y='3' rx='2' ry='2'/><circle cx='9' cy='9' r='2'/><path d='m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/></svg>");
}
.jw-secard-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.jw-secard-body { display: flex; flex-direction: column; gap: 10px; flex: 1; padding: var(--sp-8); }
.jw-secard-body.jw-secard-body > * { margin-block-start: 0; }
.jw-secard-head { display: flex; align-items: center; gap: 10px; color: var(--jw-teal); }
.jw-secard-head .wp-block-icon { display: inline-flex; line-height: 0; margin: 0; }
.jw-secard-head .wp-block-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; }
.jw-secard-name { font-size: 1.15rem; margin: 0; color: var(--jw-navy); }
.jw-secard-intro { color: var(--jw-muted); font-size: .9rem; line-height: 1.6; margin: 0; flex: 1; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.jw-secard-meta { font-size: .8rem; font-weight: 600; color: var(--jw-navy); margin: 4px 0 0; }
.jw-secard-meta strong { color: var(--jw-gold); }
.jw-secard-more.jw-secard-more { margin-top: 4px; }
.jw-secard-more a { position: static; display: inline-flex; align-items: center; gap: 6px; color: var(--jw-teal); font-weight: 600; font-size: .88rem; text-decoration: none; }
.jw-secard-more a::after { content: "\2192"; }
.jw-secard-more a::before { content: ""; position: absolute; inset: 0; }
@media (max-width: 980px) { .jw-sector-grid.jw-sector-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .jw-sector-grid.jw-sector-grid { grid-template-columns: 1fr; } }

/* ============================================================
   Industry landing pages — stat band, market overview, related posts.
   Tombstones reuse .jw-tomb-grid / .jw-tomb-card from the home pattern.
   ============================================================ */
.jw-ind-statband { border-bottom: 1px solid var(--jw-border); }
.jw-ind-stat3.jw-ind-stat3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; text-align: center; }
.jw-ind-stat3.jw-ind-stat3 > * { margin-block-start: 0; }
.jw-ind-stat3col { padding: 0 24px; }
.jw-ind-stat3col.is-mid { border-left: 1px solid var(--jw-border); border-right: 1px solid var(--jw-border); }
.jw-ind-stat3col.is-mid.is-mid > * { margin-block-start: 0; }
.jw-ind-stat3-label { font-size: .72rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--jw-teal); margin: 0 0 8px; }
.jw-ind-stat3-num { font-family: var(--font-display); font-weight: 700; font-size: 1.6rem; margin: 0; color: var(--jw-navy); }

.jw-ind-overview { max-width: 760px; }
.jw-ind-overview-text.jw-ind-overview-text { margin-top: 18px; font-size: 1.05rem; line-height: 1.7; color: var(--jw-muted); }
/* 2-col market overview: copy left, image right */
.jw-ind-overview-cols { gap: 56px; align-items: center; }
.jw-ind-overview-cols .jw-media-card { min-height: 340px; height: 100%; }
@media (max-width: 781px) { .jw-ind-overview-cols { gap: 40px; } }

.jw-ipost-grid.jw-ipost-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 44px; }
.jw-ipost-grid.jw-ipost-grid > * { margin-block-start: 0; }
.jw-ipost-more.jw-ipost-more { margin-top: 16px; }
.jw-ipost-more a { display: inline-flex; align-items: center; gap: 6px; color: var(--jw-teal); font-weight: 600; font-size: .9rem; text-decoration: none; }
.jw-ipost-more a::after { content: "\2192"; }
.jw-post-card .jw-read-time .wp-block-icon { display: inline-flex; line-height: 0; margin: 0; }
.jw-post-card .jw-read-time .wp-block-icon svg { width: 13px; height: 13px; fill: none; stroke: currentColor; }

@media (max-width: 900px) {
	.jw-ind-stat3.jw-ind-stat3 { grid-template-columns: 1fr; gap: 24px; }
	.jw-ind-stat3col.is-mid { border: 0; }
	.jw-ipost-grid.jw-ipost-grid { grid-template-columns: 1fr; }
}

/* Hero (native pattern) — navy gradient band, cursor glow layer, stat bar.
   The glow is animated by assets/js/heroglow.js (attaches to .jw-heroglow). */
.jw-hero-band { position: relative; overflow: hidden; background: var(--gradient-navy); color: #fff; }
.jw-hero-band .jw-heroglow { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.jw-hero-inner { position: relative; z-index: 1; }
/* Centered 1200 container so hero content lines up with every other section;
   children left-aligned within it (default block flow). */
/* Match the site container's CONTENT width (1200 box − 2×24 gutter = 1152) so
   the hero lines up with header, footer and every other section. */
.jw-hero-container { max-width: calc(var(--container-max) - (var(--container-pad) * 2)); margin-inline: auto; }
.jw-hero-container .jw-hero-heading { max-width: 16ch; }
.jw-hero-heading { color: #fff; }
.jw-hero-heading mark { background: transparent; color: var(--jw-gold-light); }
.jw-hero-lead.jw-hero-lead { margin-top: 24px; max-width: 44rem; color: rgba(255, 255, 255, .75); }
.jw-hero-actions.jw-hero-actions { margin-top: 36px; gap: 16px; }
.jw-btn-arrow .wp-element-button::after { content: "\2192"; }
.jw-hero-stats { position: relative; z-index: 1; border-top: 1px solid rgba(255, 255, 255, .1); background: rgba(0, 0, 0, .15); }
.jw-hero-statgrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.jw-hero-statgrid.jw-hero-statgrid > * { margin-block-start: 0; }
.jw-hero-statgrid .jw-stat { margin: 0; }
.jw-hero-statgrid .jw-stat-label { margin: 6px 0 0; }
@media (max-width: 781px) {
	.jw-hero-statgrid { grid-template-columns: 1fr 1fr; row-gap: 20px; }
}

/* Industry Grid pattern — centered head + 4-col icon-link cards (teal lucide via CSS) */
.jw-ind-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 18px;
	margin-top: 44px;
}
.jw-ind-card {
	position: relative;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 20px 22px;
	border: 1px solid var(--jw-border);
	border-radius: 8px;
	background: #fff;
	transition: transform var(--ease), border-color var(--ease), box-shadow var(--ease);
}
.jw-ind-card:hover { border-color: var(--jw-teal); box-shadow: var(--shadow-lift); transform: translateY(-3px); }
/* core/icon svg strokes currentColor, so tint via the card; label stays navy */
.jw-ind-card { color: var(--jw-teal); }
.jw-ind-card .wp-block-icon { display: inline-flex; flex: 0 0 auto; line-height: 0; margin: 0; }
/* core sets .wp-block-icon svg{fill:currentColor}; these are outline icons, so
   override to stroke-only or they fill in as solid blobs */
.jw-ind-card .wp-block-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; }
.jw-ind-label { margin: 0; font-weight: 500; font-size: .92rem; }
/* legacy style.css `a:hover{text-decoration:underline}` underlines on hover/focus — kill it */
.jw-ind-card .jw-ind-label a,
.jw-ind-card .jw-ind-label a:hover,
.jw-ind-card .jw-ind-label a:focus { color: var(--jw-navy); text-decoration: none; }
.jw-ind-card:hover .jw-ind-label a { color: var(--jw-teal); }
/* stretched link — whole card is clickable */
.jw-ind-card .jw-ind-label a::after { content: ""; position: absolute; inset: 0; }

@media (max-width: 781px) {
	.jw-ind-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 540px) {
	.jw-ind-grid { grid-template-columns: 1fr; }
}

/* CTA band (native, synced pattern) — centered on navy, gold + white-ghost buttons.
   Doubled class beats style.css's `.is-layout-flow/constrained > *{margin-block-start:24px}` */
.jw-cta-lead.jw-cta-lead { margin: 18px auto 0; }
.jw-cta-actions.jw-cta-actions { margin-top: 32px; gap: 16px; }

/* Insights — native Query Loop post grid (head row + 3-col post cards) */
.jw-post-head { align-items: flex-end; gap: 16px; }
.jw-post-heading { max-width: 26ch; }
.jw-post-query.jw-post-query { margin-top: 44px; }
.jw-post-grid {
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin: 0;
}
.jw-post-card {
	height: 100%;
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: var(--surface-card);
	border: 1px solid var(--border-hairline);
	border-radius: var(--radius-xl);
	padding: 0;
	overflow: hidden;
	box-shadow: var(--shadow-xs);
	transition: transform var(--ease), box-shadow var(--ease);
}
.jw-post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.jw-post-card.jw-post-card > * { margin-block-start: 0; }
/* 16:9 cover image, flush to the card's top + side edges */
.jw-post-media {
	margin: 0;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--jw-offwhite);
}
.jw-post-media a, .jw-post-media img { display: block; width: 100%; height: 100%; }
.jw-post-media img { object-fit: cover; }
/* Text content is padded; the image stays edge-to-edge */
.jw-post-card > :not(.jw-post-media) { margin-left: var(--sp-8); margin-right: var(--sp-8); }
.jw-post-card > .jw-post-meta { margin-top: var(--sp-6); }
.jw-post-card > :last-child { margin-bottom: var(--sp-8); }
.jw-post-meta { align-items: center; gap: 12px; }
.jw-post-cat {
	font-family: var(--font-sans);
	font-size: var(--fs-eyebrow);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
}
.jw-post-cat a { color: var(--jw-gold); text-decoration: none; }
.jw-read-time {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: .78rem;
	color: var(--jw-muted);
	white-space: nowrap;
}
.jw-post-title { font-size: 1.3rem; line-height: 1.2; }
.jw-post-title a { color: var(--jw-navy); text-decoration: none; }
.jw-post-title a:hover { color: var(--jw-teal); }
.jw-post-excerpt { color: var(--jw-muted); font-size: .92rem; line-height: 1.6; }
.jw-post-card .jw-post-more {
	margin-top: auto;
	margin-bottom: var(--sp-8) !important;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--jw-navy);
	font-weight: var(--fw-semibold);
	font-size: .9rem;
	text-decoration: none;
}
.jw-post-more::after { content: "\2192"; }

@media (max-width: 781px) {
	.jw-post-grid { grid-template-columns: 1fr; }
}

/* Testimonial (jw/testimonial) — static quote, or auto-advancing slider with 2+ */
.jw-tm .jw-tm-quote {
	font-family: var(--font-display);
	font-weight: 700;
	font-size: clamp(1.15rem, 2vw, 1.55rem);
	line-height: 1.4;
	color: var(--jw-navy);
	margin: 20px 0 28px;
	text-wrap: balance;
}
.jw-tm .jw-tm-name { font-weight: 600; }
.jw-tm .jw-tm-meta { color: var(--jw-muted); font-size: .9rem; }
.jw-tm .jw-tm-slide { margin: 0; }
.jw-tm .jw-tm-logo { margin-top: 20px; }
.jw-tm .jw-tm-logo img {
	display: inline-block;
	width: auto;
	max-width: 250px;
	max-height: 72px;
	height: auto;
	object-fit: contain;
}

/* Slider: stack slides, crossfade the active one */
.jw-tm.is-slider .jw-tm-track { position: relative; }
.jw-tm.is-slider .jw-tm-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .5s ease;
}
.jw-tm.is-slider .jw-tm-slide.is-active {
	position: relative;
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}
.jw-tm-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin-top: 28px;
}
.jw-tm-arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--jw-border);
	border-radius: 50%;
	background: transparent;
	color: var(--jw-navy);
	cursor: pointer;
	transition: background var(--ease), border-color var(--ease), color var(--ease);
}
.jw-tm-arrow:hover { background: var(--jw-navy); color: #fff; border-color: var(--jw-navy); }
.jw-tm-arrow:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.jw-tm-dots { display: inline-flex; align-items: center; gap: 8px; }
.jw-tm-dot {
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--jw-border);
	cursor: pointer;
	transition: background var(--ease), transform var(--ease);
}
.jw-tm-dot.is-active { background: var(--jw-gold); transform: scale(1.15); }
.jw-tm-dot:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* Editor canvas: preview jw/testimonial like the front (offwhite band, centered
   column, gold quote icon, items stacked with a soft divider). Editor-only classes. */
.jw-tm-editor-band { background: var(--jw-offwhite); padding: 56px 24px; }
.jw-tm-editor { max-width: 1000px; margin: 0 auto; text-align: center; }
.jw-tm-editor-icon { display: inline-flex; justify-content: center; color: var(--jw-gold); margin-bottom: 8px; }
.jw-tm-editor-icon svg { width: 34px; height: 34px; }
.jw-tm-editor .jw-tm-slide { position: static; opacity: 1; visibility: visible; }
.jw-tm-editor .jw-tm-slide + .jw-tm-slide { margin-top: 28px; padding-top: 28px; border-top: 1px dashed var(--jw-border); }

/* -- Card lift (from Card.jsx onEnter/onLeave) -- */
.jw-card { transition: transform var(--ease), box-shadow var(--ease); }
.jw-card--lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }

/* -- Input focus ring (from Input.jsx focused state) -- */
.jw-input-field:focus { border-color: var(--jw-teal); outline: 2px solid var(--jw-teal); outline-offset: 1px; }

/* Home industry quick-links (from HomeScreen.jsx) */
.jw-industry-link { transition: transform var(--ease), box-shadow var(--ease); }
.jw-industry-link:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); }

/* ============================================================
   Legal pages (Privacy Policy / Terms) — long-form body.
   ============================================================ */
.jw-legal-meta.jw-legal-meta { margin-top: 14px; color: rgba(255, 255, 255, .7); font-size: .9rem; }
.jw-legal-body { background: #fff; }
.jw-legal-body .jw-legal-h2.jw-legal-h2 { font-size: 1.4rem; line-height: 1.3; color: var(--jw-navy); margin: 44px 0 14px; padding-top: 22px; border-top: 1px solid var(--border-hairline); }
.jw-legal-body > .jw-legal-h2:first-of-type { margin-top: 8px; }
.jw-legal-body .jw-legal-h3.jw-legal-h3 { font-size: 1.06rem; line-height: 1.4; color: var(--jw-navy); margin: 26px 0 10px; }
.jw-legal-body .jw-legal-p.jw-legal-p { color: var(--jw-navy); font-size: 1rem; line-height: 1.75; margin: 0 0 16px; }
.jw-legal-body .jw-legal-p a, .jw-legal-body .jw-legal-list a { color: var(--jw-teal); }
.jw-legal-short.jw-legal-short { margin: 0 0 18px; padding: 14px 18px; background: var(--jw-offwhite); border-left: 3px solid var(--jw-teal); color: var(--jw-muted); font-size: .95rem; line-height: 1.65; border-radius: 0 6px 6px 0; }
.jw-legal-body .jw-legal-list.jw-legal-list { margin: 0 0 18px; padding-left: 1.3em; color: var(--jw-navy); }
.jw-legal-body .jw-legal-list li { margin-bottom: 8px; line-height: 1.7; font-size: 1rem; }
.jw-legal-table.jw-legal-table { margin: 0 0 22px; }
.jw-legal-table table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.jw-legal-table th { text-align: left; background: var(--jw-navy); color: #fff; font-weight: 600; padding: 10px 12px; border: 1px solid var(--jw-navy); }
.jw-legal-table td { padding: 10px 12px; border: 1px solid var(--border-hairline); color: var(--jw-navy); line-height: 1.5; vertical-align: top; }
.jw-legal-table tr:nth-child(even) td { background: var(--jw-offwhite); }

/* Team member — author-filtered recent posts ([jw_author_posts]) */
.jw-authorposts .jw-eyebrow-text { display: block; margin-bottom: 12px; }
.jw-authorposts-title.jw-authorposts-title { margin: 0 0 28px; color: var(--jw-navy); }
.jw-authorposts-grid.jw-authorposts-grid { margin-top: 0; }
