/* ─── Echea block style variations ─────────────────────────────────
   Registered via functions.php register_block_style() calls.
   Slugs match the `name` arg passed to register_block_style().
   Enqueued on both wp_enqueue_scripts + enqueue_block_editor_assets
   so the editor preview matches frontend.

   NOTE: core/paragraph rendered HTML is a bare <p class="is-style-X">
   with NO `wp-block-paragraph` wrapper class. Selector must be
   `p.is-style-X`, not `.wp-block-paragraph.is-style-X`. Cover and
   separator blocks do emit their wp-block-* class — those can stay.
   ──────────────────────────────────────────────────────────────── */

/* ── core/paragraph ──────────────────────────────── */

p.is-style-eyebrow-blue {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--blue);
}

p.is-style-eyebrow-on-noir {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.2em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.62;
}

p.is-style-term-link,
p.is-style-term-link a {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

p.is-style-editorial-display {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(24px, 2.4vw, 32px);
	font-weight: 300;
	line-height: 1.25;
	letter-spacing: -0.01em;
}

p.is-style-italic-spectral {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(22px, 2.2vw, 28px);
	font-weight: 300;
	font-style: italic;
	line-height: 1.5;
}

p.is-style-pull-quote-on-noir {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(22px, 2.6vw, 30px);
	font-weight: 300;
	font-style: italic;
	line-height: 1.45;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.88;
}

p.is-style-attribution-on-noir {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.2em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.38;
}

p.is-style-footer-col-title {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.2em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.4;
	margin-bottom: 16px;
}

p.is-style-footer-legal-small {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 400;
	line-height: 1.75;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.28;
}

p.is-style-footer-state-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.22em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.86;
	margin-bottom: 12px;
}

p.is-style-footer-lead {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 24px;
	font-weight: 300;
	line-height: 1.35;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.92;
}

p.is-style-footer-entity {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 22px;
	font-weight: 300;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.92;
	margin-bottom: 12px;
}

/* Footer top region — brand lockup LEFT + 3-col sitemap RIGHT (Polish 17b grid layout
   per live canonical `.footer-brand-bar`). Mobile collapse below 1000px. */
.footer-top-grid {
	display: grid;
	grid-template-columns: minmax(300px, 1fr) minmax(520px, 1.1fr);
	gap: 48px;
	align-items: start;
}

.footer-top-grid > .wp-block-columns {
	margin-block: 0;
}

@media (max-width: 1000px) {
	.footer-top-grid {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

/* Footer link styling — plain by default (no underline bleed from global hover style),
   hover-only underline. Scoped to footer template-part wrapper so other links unaffected. */
.wp-block-template-part footer a,
.wp-block-template-part footer .wp-block-list a,
.wp-block-template-part footer ul.wp-block-list a {
	text-decoration: none;
	color: var(--wp--preset--color--accent-5);
	opacity: 0.82;
}

.wp-block-template-part footer a:hover,
.wp-block-template-part footer .wp-block-list a:hover,
.wp-block-template-part footer ul.wp-block-list a:hover {
	opacity: 1;
}

/* ── core/cover ──────────────────────────────────── */

.wp-block-cover.is-style-hero-noir {
	min-height: 680px;
	padding: 80px 64px;
}

.wp-block-cover.is-style-closing-beat-noir {
	min-height: 560px;
	padding: 104px 64px;
}

/* Beige close-block variation — designer .s-edit.s-beige rhythm. Used on
   home §close per spec; cover bg is beige (no dark overlay), H2 noir, body
   mid color. Companion to closing-beat-noir for tonal rotation across pages. */
.wp-block-cover.is-style-closing-beat-beige {
	min-height: 360px;
	padding: 80px 64px;
	background-color: var(--wp--preset--color--beige);
}

.wp-block-cover.is-style-closing-beat-beige .wp-block-cover__background {
	background-color: var(--wp--preset--color--beige) !important;
	opacity: 1;
}

.wp-block-cover.is-style-closing-beat-beige h1,
.wp-block-cover.is-style-closing-beat-beige h2,
.wp-block-cover.is-style-closing-beat-beige h3 {
	color: var(--wp--preset--color--noir);
}

.wp-block-cover.is-style-closing-beat-beige p {
	color: var(--wp--preset--color--mid);
}

/* ═══ /listing/<slug>/ §1 hero (Polish #27a) ═══════════════════════
   Full-bleed 16:9 image (background-image — no <img>) + meta block below
   with composite eyebrow + H1.title + price + 6-cell stat row. Pure
   typography per spec — no chrome on stat row except top/bottom rules.
   ──────────────────────────────────────────────────────────────── */

.echea-listing-hero {
	width: 100%;
	max-width: none;
}

.echea-listing-hero__image {
	width: 100%;
	aspect-ratio: 16 / 9;
	background-color: var(--wp--preset--color--noir);
	background-size: cover;
	background-position: center;
}

.echea-listing-hero__image--placeholder {
	background-color: var(--wp--preset--color--noir);
}

.echea-listing-hero__meta {
	max-width: 1200px;
	margin: 0 auto;
	padding: 40px var(--wp--preset--spacing--60) 0;
}

.echea-listing-hero__eyebrow {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.18em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin: 0 0 18px;
}

.echea-listing-hero__title-row {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	margin: 0 0 36px;
}

.echea-listing-hero__title {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(36px, 5vw, 60px);
	font-weight: 300;
	line-height: 1.05;
	letter-spacing: -0.015em;
	color: var(--wp--preset--color--noir);
	margin: 0;
	flex: 1 1 480px;
	max-width: 22ch;
}

.echea-listing-hero__price {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(28px, 3.5vw, 42px);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--noir);
	margin: 0;
	white-space: nowrap;
	flex-shrink: 0;
}

.echea-listing-hero__stats {
	margin-top: 28px;
	padding-top: 28px;
	border-top: 1px solid var(--wp--preset--color--rule);
	display: flex;
	gap: 48px;
	flex-wrap: wrap;
}

.echea-listing-hero__stat {
	display: flex;
	flex-direction: column;
	gap: 4px;
	font-family: var(--wp--preset--font-family--manrope);
	color: var(--wp--preset--color--noir);
}

.echea-listing-hero__stat-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.18em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
}

.echea-listing-hero__stat-value {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--wp--preset--color--noir);
}

/* §2 body wrap — defeat is-layout-constrained auto-center so 720px column
   stays left-aligned (per spec listing.html:184). Without this override,
   max-width:720px column would be centered horizontally in 1200px parent. */
.wp-block-group.echea-listing-body-wrap {
	margin-left: 0 !important;
	margin-right: auto !important;
	max-width: 720px !important;
}

/* Children of body-wrap also need left-anchoring (paragraphs from shortcode
   inherit is-layout-constrained > * { margin: auto } from outer parent — kill it). */
.wp-block-group.echea-listing-body-wrap > *,
.wp-block-group.echea-listing-body-wrap p {
	margin-left: 0 !important;
	margin-right: auto !important;
	max-width: 100% !important;
}

@media (max-width: 760px) {
	.echea-listing-hero__stats {
		gap: 28px;
	}
}

/* ═══ /listing/<slug>/ hero slider + lightbox (Polish #28) ═════════
   Slider: stacked images opacity-fade w/ prev/next + count + view-all.
   Lightbox: fullscreen overlay w/ keyboard nav + click-outside close. */

.echea-hero-slider {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background-color: var(--wp--preset--color--noir);
	outline: none;
}

.echea-hero-slider__track {
	position: absolute;
	inset: 0;
}

.echea-hero-slider__slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 400ms ease;
	cursor: zoom-in;
}

.echea-hero-slider__slide.is-active {
	opacity: 1;
}

.echea-hero-slider__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 44px;
	height: 44px;
	border: 0;
	background: rgba(255, 255, 255, 0.9);
	color: var(--wp--preset--color--noir);
	font-size: 24px;
	line-height: 1;
	cursor: pointer;
	z-index: 2;
	transition: background 0.15s, transform 0.15s;
}

.echea-hero-slider__nav:hover {
	background: rgba(255, 255, 255, 1);
}

.echea-hero-slider__nav--prev {
	left: 16px;
}

.echea-hero-slider__nav--next {
	right: 16px;
}

.echea-hero-slider__count {
	position: absolute;
	top: 16px;
	right: 16px;
	padding: 8px 14px;
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.08em;
	z-index: 2;
}

.echea-hero-slider__viewall {
	position: absolute;
	bottom: 16px;
	right: 16px;
	padding: 10px 18px;
	border: 0;
	background: rgba(255, 255, 255, 0.95);
	color: var(--wp--preset--color--noir);
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
	z-index: 2;
	transition: background 0.15s;
}

.echea-hero-slider__viewall:hover {
	background: rgba(255, 255, 255, 1);
}

@media (max-width: 540px) {
	.echea-hero-slider__nav {
		width: 36px;
		height: 36px;
		font-size: 20px;
	}
	.echea-hero-slider__viewall {
		padding: 8px 12px;
		font-size: 10px;
	}
}

/* Lightbox — singleton appended to body on first open. */
.echea-lightbox {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.92);
	z-index: 9999;
	align-items: center;
	justify-content: center;
}

.echea-lightbox.is-open {
	display: flex;
}

.echea-lightbox__img {
	max-width: 90vw;
	max-height: 85vh;
	object-fit: contain;
}

.echea-lightbox__close {
	position: absolute;
	top: 16px;
	right: 16px;
	width: 44px;
	height: 44px;
	border: 0;
	background: transparent;
	color: rgba(255, 255, 255, 0.85);
	font-size: 32px;
	line-height: 1;
	cursor: pointer;
	z-index: 2;
}

.echea-lightbox__close:hover {
	color: #fff;
}

.echea-lightbox__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 56px;
	height: 56px;
	border: 0;
	background: rgba(255, 255, 255, 0.1);
	color: rgba(255, 255, 255, 0.85);
	font-size: 32px;
	line-height: 1;
	cursor: pointer;
	z-index: 2;
	transition: background 0.15s, color 0.15s;
}

.echea-lightbox__nav:hover {
	background: rgba(255, 255, 255, 0.2);
	color: #fff;
}

.echea-lightbox__nav--prev {
	left: 24px;
}

.echea-lightbox__nav--next {
	right: 24px;
}

.echea-lightbox__count {
	position: absolute;
	bottom: 24px;
	left: 50%;
	transform: translateX(-50%);
	padding: 8px 14px;
	background: rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.85);
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.08em;
	z-index: 2;
}

@media (max-width: 540px) {
	.echea-lightbox__nav {
		width: 40px;
		height: 40px;
		font-size: 22px;
	}
	.echea-lightbox__nav--prev { left: 8px; }
	.echea-lightbox__nav--next { right: 8px; }
}

/* ═══ /listing/<slug>/ §2 features tables (Polish #27b) ═══════════
   2-col grid (Interior | Exterior) — collapses to single col <720px.
   Each table = section heading + bordered key/value rows. */

.echea-listing-features {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 48px;
	margin-top: var(--wp--preset--spacing--40);
}

.echea-listing-features--single {
	grid-template-columns: 1fr;
}

@media (max-width: 720px) {
	.echea-listing-features {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

.echea-listing-features__heading {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.18em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin: 0 0 16px;
}

.echea-listing-features__rows {
	border-top: 1px solid var(--wp--preset--color--rule);
}

.echea-listing-features__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.echea-listing-features__key {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--mid);
	flex-shrink: 0;
}

.echea-listing-features__value {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 16px;
	font-weight: 300;
	color: var(--wp--preset--color--noir);
	text-align: right;
}

/* ═══ /listing/<slug>/ §3 location + facts + financial (Polish #27c) ═
   Stacks: intro (eyebrow + city H2 + composite address) → map placeholder
   → 3-col facts grid (Walkability / Area & Lot / Financial) → optional
   neighborhood term-link. */

.echea-listing-location__intro {
	margin-bottom: 32px;
}

.echea-listing-location__intro .is-style-eyebrow-blue {
	margin: 0 0 14px;
}

.echea-listing-location__heading {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(28px, 3vw, 38px);
	font-weight: 300;
	line-height: 1.15;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--noir);
	margin: 0 0 12px;
}

.echea-listing-location__address {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--mid);
	margin: 0;
}

.echea-listing-location__map {
	position: relative;
	height: 440px;
	margin: 0 0 40px;
	background: var(--wp--preset--color--beige);
	border: 1px solid var(--wp--preset--color--rule);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
}

.echea-listing-location__map-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	opacity: 0.6;
}

.echea-listing-location__map-coords {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 14px;
	color: var(--wp--preset--color--mid);
	opacity: 0.8;
}

.echea-listing-location__facts {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 48px;
	border-top: 1px solid var(--wp--preset--color--rule);
	padding-top: 32px;
}

.echea-listing-location__facts-heading {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.18em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin: 0 0 18px;
}

.echea-listing-location__rows {
	display: flex;
	flex-direction: column;
}

.echea-listing-location__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	padding: 12px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.echea-listing-location__row:last-child {
	border-bottom: 0;
}

.echea-listing-location__row-key {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--mid);
	flex-shrink: 0;
}

.echea-listing-location__row-value {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 14px;
	color: var(--wp--preset--color--noir);
	text-align: right;
}

.echea-listing-location__walk-score {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(48px, 6vw, 72px);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--noir);
	margin: 0 0 6px;
}

.echea-listing-location__walk-score-suffix {
	font-size: 0.4em;
	color: var(--wp--preset--color--mid);
	margin-left: 4px;
}

.echea-listing-location__walk-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--noir);
	margin: 0 0 8px;
}

.echea-listing-location__walk-blurb {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--mid);
	margin: 0;
}

.echea-listing-location__monthly {
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.echea-listing-location__monthly-label {
	display: block;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin: 0 0 6px;
}

.echea-listing-location__monthly-amount {
	display: block;
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(20px, 2.4vw, 26px);
	font-weight: 300;
	line-height: 1;
	color: var(--wp--preset--color--noir);
}

.echea-listing-location__monthly-caveat {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	line-height: 1.6;
	color: var(--wp--preset--color--mid);
	margin: 8px 0 0;
}

.echea-listing-location__neigh-link {
	margin-top: 32px;
}

.echea-listing-location__neigh-link a {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--noir);
	text-decoration: none;
}

.echea-listing-location__neigh-link a:hover {
	text-decoration: underline;
}

@media (max-width: 900px) {
	.echea-listing-location__facts {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	.echea-listing-location__map {
		height: 320px;
	}
}

/* ═══ /properties/ catalog filter system (Polish #23) ═══════════════
   .tool-intro flex layout (intro left + tool-meta count right)
   .echea-filter-strip pill toolbar (Market + Price groups)
   ──────────────────────────────────────────────────────────────── */

.tool-intro {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 32px;
}

.tool-intro__left {
	flex: 1 1 480px;
	min-width: 0;
}

.tool-intro__left p,
.tool-intro__left h2 {
	margin: 0 0 14px;
}

.tool-intro__left p:last-child {
	margin-bottom: 0;
}

.tool-meta {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	white-space: nowrap;
	flex-shrink: 0;
}

@media (max-width: 720px) {
	.tool-intro {
		flex-direction: column;
		align-items: flex-start;
	}
}

.echea-filter-strip {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
	padding: 14px 0;
	border-top: 1px solid var(--wp--preset--color--rule);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.echea-filter-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin-right: 8px;
}

.echea-filter-group {
	display: flex;
	gap: 4px;
	flex-wrap: wrap;
}

.echea-filter-divider {
	display: inline-block;
	width: 1px;
	height: 18px;
	background: var(--wp--preset--color--rule);
}

.echea-filter-pill {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 8px 14px;
	background: var(--wp--preset--color--accent-5);
	color: var(--wp--preset--color--mid);
	border: 1px solid var(--wp--preset--color--rule);
	cursor: pointer;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.echea-filter-pill:hover {
	color: var(--wp--preset--color--noir);
	border-color: var(--wp--preset--color--noir);
}

.echea-filter-pill.is-active {
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--accent-5);
	border-color: var(--wp--preset--color--noir);
}

/* ── core/separator ──────────────────────────────── */

.wp-block-separator.is-style-thin-rule-on-noir {
	max-width: 40px;
	margin-left: auto;
	margin-right: auto;
	background-color: var(--wp--preset--color--accent-5);
	border: none;
	height: 1px;
	opacity: 0.2;
}

/* ═══════════════════════════════════════════════════════════════════
   Phase 10 — sticky nav + mega-menu + mobile overlay + call bar
   Designer class names (.snav-* / .mobile-*) are nav infrastructure
   exception to the Purist rule (editorial blocks still use is-style-*).
   ═══════════════════════════════════════════════════════════════════ */

/* ── Sticky nav container ──────────────────────── */

.snav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	padding: 18px 64px;
	max-width: 1440px;
	margin: 0 auto;
	width: 100%;
	box-sizing: border-box;
}

.snav-brand {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	flex-shrink: 0;
	text-decoration: none;
}

.snav-logo img {
	height: 56px;
	display: block;
}

.snav-subline {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	opacity: 0.85;
	margin-left: 2px;
}

.snav-items {
	display: flex;
	align-items: center;
	gap: 32px;
	flex: 1;
	justify-content: center;
}

.snav-item {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	cursor: pointer;
	white-space: nowrap;
	padding: 8px 0;
	transition: color .15s;
}

.snav-item:hover,
.snav-item.on {
	color: var(--wp--preset--color--noir);
}

/* ── Mega-menu dropdowns (CSS hover, no JS) ────── */

.snav-dropdown {
	position: relative;
}

/* Chevron arrow on dropdown trigger — CSS-triangle, rotates on hover/focus.
   Ported from designer canon shared/styles.css:44-69 (Polish #22). */
.snav-dropdown > .snav-item::after {
	content: '';
	display: inline-block;
	margin-left: 7px;
	width: 0;
	height: 0;
	border-left: 3.5px solid transparent;
	border-right: 3.5px solid transparent;
	border-top: 4px solid currentColor;
	opacity: 0.5;
	transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.25s ease;
	vertical-align: 1px;
}

.snav-dropdown:hover > .snav-item::after,
.snav-dropdown:focus-within > .snav-item::after {
	transform: rotate(180deg);
	opacity: 1;
}

/* Invisible hover-bridge — keeps hover alive while cursor travels from
   trigger to menu (clears the calc(100% + 18px) gap below). */
.snav-dropdown::after {
	content: '';
	position: absolute;
	top: 100%;
	left: -16px;
	right: -16px;
	height: 18px;
	pointer-events: none;
}

.snav-dropdown:hover::after,
.snav-dropdown:focus-within::after {
	pointer-events: auto;
}

.snav-dropdown__menu {
	position: absolute;
	top: calc(100% + 18px);
	left: 50%;
	transform: translateX(-50%) translateY(-6px);
	min-width: 320px;
	background: var(--wp--preset--color--accent-5);
	border: 1px solid var(--wp--preset--color--rule);
	box-shadow: 0 8px 32px rgba(10, 9, 8, 0.08);
	padding: 16px 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s linear 0.25s;
	z-index: 200;
}

.snav-dropdown:hover .snav-dropdown__menu,
.snav-dropdown:focus-within .snav-dropdown__menu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
	transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s linear 0s;
}

.snav-dropdown__item {
	display: block;
	padding: 14px 20px;
	text-decoration: none;
	color: inherit;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.snav-dropdown__item:last-child {
	border-bottom: none;
}

.snav-dropdown__item:hover {
	background: var(--wp--preset--color--fog);
}

.snav-dropdown__eyebrow {
	display: block;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 9px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--blue);
	margin-bottom: 6px;
}

.snav-dropdown__label {
	display: block;
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 16px;
	font-weight: 400;
	color: var(--wp--preset--color--noir);
	margin-bottom: 4px;
}

.snav-dropdown__hint {
	display: block;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	color: var(--wp--preset--color--mid);
	line-height: 1.5;
}

/* ── Right side: phone + Schedule CTA + burger ─── */

.snav-right {
	display: flex;
	align-items: center;
	gap: 18px;
	flex-shrink: 0;
}

.snav-phone-link {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--noir);
	text-decoration: none;
	white-space: nowrap;
}

.snav-phone-link--fl {
	color: var(--wp--preset--color--mid);
}

.snav-cta {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	background: var(--wp--preset--color--noir);
	padding: 10px 18px;
	text-decoration: none;
	white-space: nowrap;
}

.snav-cta:hover {
	background: var(--wp--preset--color--blue);
}

.snav-burger {
	display: none;
	background: transparent;
	border: 0;
	padding: 8px;
	cursor: pointer;
}

.snav-burger span,
.snav-burger span::before,
.snav-burger span::after {
	display: block;
	width: 22px;
	height: 1.5px;
	background: var(--wp--preset--color--noir);
	position: relative;
}

.snav-burger span::before {
	content: '';
	position: absolute;
	top: -7px;
}

.snav-burger span::after {
	content: '';
	position: absolute;
	top: 7px;
}

/* ── Mobile breakpoint (<1100px collapses items, <768px goes mobile) */

@media (max-width: 1100px) {
	.snav-items { display: none; }
	.snav-burger { display: block; }
	.snav-cta { display: none; }
}

@media (max-width: 768px) {
	.snav { padding: 14px 24px; gap: 16px; }
	.snav-subline { display: none; }
	.snav-phone-link--fl { display: none; }
}

/* ── Mobile overlay (full-screen drawer) ──────── */

.mobile-overlay {
	position: fixed;
	inset: 0;
	background: var(--wp--preset--color--accent-5);
	z-index: 9999;
	padding: 24px;
	display: none;
	overflow-y: auto;
	flex-direction: column;
}

.mobile-overlay.on {
	display: flex;
}

.mobile-overlay-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-bottom: 24px;
	border-bottom: 1px solid var(--wp--preset--color--rule);
	margin-bottom: 24px;
}

.mobile-overlay-close {
	background: transparent;
	border: 0;
	font-size: 28px;
	color: var(--wp--preset--color--noir);
	cursor: pointer;
	line-height: 1;
}

.mobile-overlay-items {
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
}

.mobile-overlay-items .snav-item {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: 22px;
	font-weight: 300;
	color: var(--wp--preset--color--noir);
	padding: 12px 0;
}

.mobile-overlay-section-label {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 9px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--mid);
	margin: 24px 0 8px;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.mobile-overlay-actions {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-top: 24px;
	margin-top: 24px;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.mobile-overlay-phone {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--noir);
	text-decoration: none;
}

.mobile-overlay-cta {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-5);
	background: var(--wp--preset--color--noir);
	padding: 14px 20px;
	text-align: center;
	text-decoration: none;
	margin-top: 8px;
}

/* ── Sticky mobile call bar (GREC 520-1-.09) ──── */

.mobile-call-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9000;
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--accent-5);
	display: none;
	align-items: center;
	justify-content: space-between;
	padding: 12px 18px;
	box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.18);
}

.mobile-call-bar a {
	color: var(--wp--preset--color--accent-5);
	text-decoration: none;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.04em;
	display: flex;
	align-items: center;
	gap: 10px;
}

.mobile-call-bar svg { flex-shrink: 0; }

.mobile-call-bar-close {
	background: transparent;
	border: 0;
	color: var(--wp--preset--color--accent-5);
	font-size: 22px;
	cursor: pointer;
	opacity: 0.55;
	line-height: 1;
	padding: 4px 8px;
}

.mobile-call-bar.dismissed { display: none !important; }

@media (max-width: 768px) {
	.mobile-call-bar:not(.dismissed) { display: flex; }
	body { padding-bottom: 56px; }
}

/* ── Partner Strip — Designer canon CSS port (Polish #18e) ────────
   Live shape: full-bleed fog header band + full-bleed noir logo strip.
   Row inside noir spans content-max + flex space-between distribution
   w/ 1px hairline dividers between partners. Per shared/styles.css
   .s-partners-* + .partner-* class set.
*/
.s-partners-header {
	background: var(--wp--preset--color--fog);
	padding: 28px 24px;
	text-align: center;
}
.s-partners-eyebrow {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(15px, 1.6vw, 20px);
	font-weight: 300;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--noir);
}
.s-partners-strip {
	background: var(--wp--preset--color--noir);
	padding: 48px 24px;
}
.s-partners-row {
	max-width: 1440px;
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0;
}
.partner-logo {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 0 24px;
	min-height: 80px;
	color: var(--wp--preset--color--white);
	text-align: center;
}
.partner-logo .partner-mark {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(16px, 1.6vw, 20px);
	font-weight: 300;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--white);
	line-height: 1.1;
}
.partner-logo .partner-mark.partner-script {
	font-family: var(--wp--preset--font-family--spectral);
	font-size: clamp(20px, 2vw, 26px);
	font-weight: 300;
	font-style: italic;
	letter-spacing: 0.02em;
	text-transform: none;
}
.partner-logo .partner-sub {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 9px;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--white);
	opacity: 0.7;
}
.partner-divider {
	width: 1px;
	align-self: stretch;
	background: rgba(255, 255, 255, 0.16);
	flex: 0 0 1px;
}

@media (max-width: 900px) {
	.s-partners-strip { padding: 32px 16px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.s-partners-row { justify-content: flex-start; gap: 0; min-width: 780px; }
	.partner-logo { flex: 0 0 130px; padding: 0 16px; }
}

/* ═══ /listing/<slug>/ §4 market context (Polish #27d) ════════ */
.echea-listing-context__comps { width: 100%; border-collapse: collapse; margin-bottom: 32px; }
.echea-listing-context__comps th { text-align: left; padding: 12px 14px 12px 0; font-family: var(--wp--preset--font-family--manrope); font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--mid); border-bottom: 1px solid var(--wp--preset--color--rule); }
.echea-listing-context__comps td { padding: 14px 14px 14px 0; font-family: var(--wp--preset--font-family--manrope); font-size: 14px; color: var(--wp--preset--color--noir); border-bottom: 1px solid var(--wp--preset--color--rule); }
.echea-listing-context__avgs { display: flex; gap: 64px; flex-wrap: wrap; padding: 24px 0; border-top: 1px solid var(--wp--preset--color--rule); border-bottom: 1px solid var(--wp--preset--color--rule); margin-bottom: 28px; }
.echea-listing-context__avgs > div { display: flex; flex-direction: column; gap: 6px; }
.echea-listing-context__avgs .lbl { font-family: var(--wp--preset--font-family--manrope); font-size: 10px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--wp--preset--color--mid); }
.echea-listing-context__avgs .val { font-family: var(--wp--preset--font-family--spectral); font-size: 22px; font-weight: 300; color: var(--wp--preset--color--noir); }
.echea-listing-context__signal { font-family: var(--wp--preset--font-family--spectral); font-size: clamp(20px, 2vw, 24px); font-weight: 300; line-height: 1.5; color: var(--wp--preset--color--noir); margin: 0; }
.echea-listing-context__signal em { font-style: italic; color: var(--wp--preset--color--noir); }

/* ═══ /listing/<slug>/ §6 FAQ accordion (Polish #27d) ════════ */
.echea-listing-faq { display: flex; flex-direction: column; }
.echea-listing-faq__item { border-bottom: 1px solid var(--wp--preset--color--rule); padding: 22px 0; }
.echea-listing-faq__item:first-child { border-top: 1px solid var(--wp--preset--color--rule); }
.echea-listing-faq__item summary { font-family: var(--wp--preset--font-family--spectral); font-size: clamp(18px, 2vw, 22px); font-weight: 300; line-height: 1.35; color: var(--wp--preset--color--noir); cursor: pointer; list-style: none; padding-right: 24px; position: relative; }
.echea-listing-faq__item summary::-webkit-details-marker { display: none; }
.echea-listing-faq__item summary::after { content: '+'; position: absolute; right: 0; top: 0; font-size: 22px; font-weight: 300; color: var(--wp--preset--color--mid); transition: transform 0.2s; }
.echea-listing-faq__item[open] summary::after { content: '−'; }
.echea-listing-faq__answer { padding: 16px 0 4px; font-family: var(--wp--preset--font-family--manrope); font-size: 15px; line-height: 1.7; color: var(--wp--preset--color--noir); max-width: 720px; }
