/* Property Listings — grid, card, modal, share, and toast styles.
   Self-contained premium blue design system (white / gray / deep-blue /
   neon-blue glow). Tokens live on :root (not scoped to .ncpl-grid-wrap)
   since the lead modal and toast are printed as separate wp_footer
   siblings, not descendants of the grid wrapper. */

:root {
	--ncpl-white:     #ffffff;
	--ncpl-gray-50:   #f7f8fa;
	--ncpl-gray-100:  #e9edf2;
	--ncpl-gray-400:  #94a3b8;
	--ncpl-gray-600:  #55627a;
	--ncpl-ink:       #101828;
	--ncpl-blue-deep: #163ea6;
	--ncpl-blue:      #2f6fed;
	--ncpl-neon:      #4fc3ff;
	--ncpl-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;

	--ncpl-shadow-card:      0 1px 2px rgba( 16, 24, 40, .04 ), 0 12px 32px -16px rgba( 16, 24, 40, .12 );
	--ncpl-shadow-card-hover: 0 1px 2px rgba( 16, 24, 40, .04 ), 0 22px 48px -18px rgba( 16, 24, 40, .18 ), 0 0 0 1px rgba( 79, 195, 255, .25 ), 0 0 26px rgba( 79, 195, 255, .28 );
	--ncpl-glow-ring:        0 0 0 3px rgba( 79, 195, 255, .35 );

	/* Filter bar accent -- deliberately violet, not blue, so the filter
	   bar's glow reads as a distinct UI zone from the cards' blue border/glow. */
	--ncpl-accent:      #7c3aed;
	--ncpl-accent-glow: rgba( 124, 58, 237, .3 );
}

.ncpl-grid-wrap {
	background: var( --ncpl-gray-50 );
	color: var( --ncpl-ink );
	font-family: var( --ncpl-font );
	padding: 3rem 0 6rem; /* extra bottom clearance so the floating CTA never sits over the last card's CTA row */
	-webkit-font-smoothing: antialiased;
}

.ncpl-empty {
	text-align: center;
	opacity: .7;
	padding: 3rem 1rem;
}

.ncpl-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.75rem;
	max-width: 640px;
	margin: 0 auto;
	padding: 0 1.25rem;
}
@media ( max-width: 480px ) {
	.ncpl-grid { gap: 1.25rem; padding: 0 1rem; }
}

/* ── Filter bar ───────────────────────────────────────────────────── */

.ncpl-filters-wrap {
	width: calc( 100% - 2.5rem );
	max-width: 900px;
	box-sizing: border-box;
	margin: 0 auto 1.75rem;
}
@media ( max-width: 480px ) {
	.ncpl-filters-wrap { width: auto; margin: 0 1rem 1.25rem; max-width: none; }
}

/* Collapsed by default (the panel starts [hidden]) -- tap to reveal. */
.ncpl-filters-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	width: 100%;
	box-sizing: border-box;
	padding: .8rem 1.25rem;
	background: var( --ncpl-white );
	color: var( --ncpl-ink );
	border: 1px solid rgba( 124, 58, 237, .25 );
	border-radius: 1rem;
	font-family: var( --ncpl-font );
	font-size: .9rem;
	font-weight: 700;
	cursor: pointer;
	box-shadow: var( --ncpl-shadow-card );
	transition: border-color .2s ease, box-shadow .2s ease, border-radius .2s ease;
}
.ncpl-filters-toggle:hover { border-color: rgba( 124, 58, 237, .5 ); }
.ncpl-filters-toggle .ncpl-btn-icon { width: 18px; height: 18px; color: var( --ncpl-blue-deep ); }
.ncpl-filters-toggle-caret { width: 16px; height: 16px; transition: transform .2s ease; }
.ncpl-filters-toggle[aria-expanded="true"] {
	border-radius: 1rem 1rem 0 0;
	border-bottom-color: transparent;
}
.ncpl-filters-toggle[aria-expanded="true"] .ncpl-filters-toggle-caret { transform: rotate( 180deg ); }

.ncpl-filters[hidden] { display: none; }
.ncpl-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 1.25rem;
	width: 100%;
	box-sizing: border-box;
	padding: 1.75rem 2rem;
	background: var( --ncpl-white );
	border: 1px solid rgba( 124, 58, 237, .25 );
	border-top: none;
	border-radius: 0 0 1rem 1rem;
	box-shadow: var( --ncpl-shadow-card ), 0 0 22px var( --ncpl-accent-glow );
	transition: border-color .25s ease, box-shadow .25s ease;
}
.ncpl-filters:focus-within {
	border-color: rgba( 124, 58, 237, .5 );
	box-shadow: var( --ncpl-shadow-card ), 0 0 30px rgba( 124, 58, 237, .4 );
}
@media ( max-width: 480px ) {
	.ncpl-filters { flex-direction: column; align-items: stretch; gap: .6rem; padding: 1.4rem; }
}

.ncpl-filter-field {
	display: flex;
	flex-direction: column;
	gap: .4rem;
	flex: 1 1 160px;
	min-width: 140px;
}
.ncpl-filter-field label {
	font-size: .78rem;
	font-weight: 600;
	color: var( --ncpl-gray-600 );
}
.ncpl-filter-price { flex: 2 1 240px; min-width: 220px; }

.ncpl-filter-select {
	padding: .6rem .75rem;
	border-radius: .65rem;
	border: 1.5px solid var( --ncpl-gray-100 );
	background: var( --ncpl-white );
	color: var( --ncpl-ink );
	font-size: .9rem;
	font-family: var( --ncpl-font );
	transition: border-color .2s ease, box-shadow .2s ease;
}
.ncpl-filter-select:focus {
	outline: none;
	border-color: var( --ncpl-blue );
	box-shadow: var( --ncpl-glow-ring );
}

.ncpl-price-slider {
	position: relative;
	height: 32px;
	display: flex;
	align-items: center;
}
.ncpl-price-slider-track {
	position: absolute;
	left: 0;
	right: 0;
	height: 4px;
	border-radius: 999px;
	background: var( --ncpl-gray-100 );
}
.ncpl-price-slider-fill {
	position: absolute;
	height: 4px;
	border-radius: 999px;
	background: linear-gradient( 90deg, var( --ncpl-blue-deep ), var( --ncpl-blue ) );
	box-shadow: 0 0 10px rgba( 79, 195, 255, .35 );
}
.ncpl-price-range {
	position: absolute;
	left: 0;
	width: 100%;
	margin: 0;
	appearance: none;
	-webkit-appearance: none;
	background: transparent;
	pointer-events: none;
}
.ncpl-price-range::-webkit-slider-runnable-track { background: transparent; }
.ncpl-price-range::-moz-range-track { background: transparent; border: none; }
.ncpl-price-range::-webkit-slider-thumb {
	-webkit-appearance: none;
	pointer-events: auto;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var( --ncpl-white );
	border: 3px solid var( --ncpl-blue-deep );
	box-shadow: 0 2px 8px rgba( 16, 24, 40, .25 ), 0 0 0 3px rgba( 79, 195, 255, .2 );
	cursor: pointer;
}
.ncpl-price-range::-moz-range-thumb {
	pointer-events: auto;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var( --ncpl-white );
	border: 3px solid var( --ncpl-blue-deep );
	box-shadow: 0 2px 8px rgba( 16, 24, 40, .25 ), 0 0 0 3px rgba( 79, 195, 255, .2 );
	cursor: pointer;
}
.ncpl-price-range:focus-visible::-webkit-slider-thumb,
.ncpl-price-range:focus-visible::-moz-range-thumb {
	box-shadow: 0 2px 8px rgba( 16, 24, 40, .25 ), var( --ncpl-glow-ring );
}

.ncpl-price-labels {
	display: flex;
	justify-content: space-between;
	font-size: .8rem;
	font-weight: 700;
	color: var( --ncpl-blue-deep );
	margin-top: .3rem;
}

.ncpl-filter-reset {
	background: none;
	border: 1.5px solid var( --ncpl-gray-100 );
	color: var( --ncpl-gray-600 );
	padding: .6rem 1rem;
	border-radius: .65rem;
	font-size: .85rem;
	font-weight: 600;
	cursor: pointer;
	transition: border-color .2s ease, color .2s ease;
	font-family: var( --ncpl-font );
}
.ncpl-filter-reset:hover { border-color: var( --ncpl-blue ); color: var( --ncpl-blue-deep ); }

.ncpl-no-results[hidden] { display: none; }
.ncpl-no-results {
	text-align: center;
	color: var( --ncpl-gray-600 );
	padding: 2.5rem 1rem;
	font-size: .95rem;
}

.ncpl-card-hidden { display: none !important; }

/* ── Card ─────────────────────────────────────────────────────────── */

.ncpl-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var( --ncpl-white );
	border: 1px solid var( --ncpl-gray-100 );
	border-radius: 1.25rem;
	box-shadow: var( --ncpl-shadow-card );
	overflow: hidden;
	transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
@media ( hover: hover ) {
	.ncpl-card:hover {
		transform: translateY( -4px );
		border-color: rgba( 79, 195, 255, .5 );
		box-shadow: var( --ncpl-shadow-card-hover );
	}
}

.ncpl-card.ncpl-highlight {
	animation: ncpl-pulse 1.4s ease-in-out 2;
}
@keyframes ncpl-pulse {
	0%, 100% { box-shadow: var( --ncpl-shadow-card ); }
	50% { box-shadow: 0 0 0 6px rgba( 79, 195, 255, .45 ), 0 0 32px rgba( 79, 195, 255, .35 ); }
}

.ncpl-card-image {
	position: relative;
	aspect-ratio: 4 / 3;
	background: var( --ncpl-gray-100 );
	/* No overflow:hidden here (the outer .ncpl-card already clips the
	   overall shape) -- this container also hosts the share dropdown when
	   share_icon_placement is "image_top_right", and clipping here would
	   cut the open menu off instead of letting it drop below the image. */
}
.ncpl-card-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.ncpl-card-image-placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	color: var( --ncpl-gray-400 );
	font-size: .8rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .08em;
}
.ncpl-placeholder-icon { width: 2rem; height: 2rem; }

.ncpl-card-body {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	flex: 1;
	padding: 1.5rem;
}
@media ( max-width: 480px ) {
	.ncpl-card-body { padding: 1.15rem; gap: 1rem; }
}

/* ── Pricing ──────────────────────────────────────────────────────── */

.ncpl-price-inline { display: flex; align-items: baseline; gap: .65rem; flex-wrap: wrap; }
.ncpl-price-stacked { display: flex; flex-direction: column; gap: .3rem; }

.ncpl-price-discounted {
	font-family: var( --ncpl-font );
	font-size: 1.55rem;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var( --ncpl-blue-deep );
	line-height: 1.15;
}
.ncpl-price-original {
	font-size: .95rem;
	color: var( --ncpl-gray-400 );
	text-decoration: line-through;
}
.ncpl-price-original.ncpl-price-solo {
	font-family: var( --ncpl-font );
	font-size: 1.4rem;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var( --ncpl-ink );
	text-decoration: none;
}
.ncpl-discount-badge {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	background: var( --ncpl-white );
	color: #15803d;
	border: 1px solid rgba( 34, 197, 94, .4 );
	box-shadow: 0 0 14px rgba( 34, 197, 94, .22 );
	font-size: .95rem;
	font-weight: 700;
	padding: .4rem .85rem;
	border-radius: 999px;
	white-space: nowrap;
}
.ncpl-discount-icon {
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}

.ncpl-move-in-badge {
	position: absolute;
	top: .85rem;
	left: .85rem;
	z-index: 2;
	background: var( --ncpl-white );
	color: var( --ncpl-blue-deep );
	border: 1px solid rgba( 47, 111, 237, .35 );
	box-shadow: 0 0 14px rgba( 47, 111, 237, .22 );
	font-size: .8rem;
	font-weight: 700;
	padding: .35rem .8rem;
	border-radius: 999px;
	white-space: nowrap;
}

/* Small inline chips (Builder Incentive / Tour Available) -- unlike the
   image-overlay move-in badge, these sit inline in the card body so they
   never compete for the same corner space. */
.ncpl-badges-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.ncpl-chip {
	display: inline-block;
	font-size: .72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .03em;
	padding: .3rem .65rem;
	border-radius: 999px;
	white-space: nowrap;
}
.ncpl-chip-incentive {
	background: rgba( 47, 111, 237, .08 );
	color: var( --ncpl-blue-deep );
	border: 1px solid rgba( 47, 111, 237, .25 );
}
.ncpl-chip-tour {
	background: var( --ncpl-gray-50 );
	color: var( --ncpl-gray-600 );
	border: 1px solid var( --ncpl-gray-100 );
}

/* ── Details row ──────────────────────────────────────────────────── */

.ncpl-details-row {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem 1.1rem;
	font-size: .875rem;
}
.ncpl-detail-item { display: inline-flex; align-items: center; gap: .4rem; }
.ncpl-detail-icon { width: 17px; height: 17px; color: var( --ncpl-blue ); flex-shrink: 0; }
img.ncpl-detail-icon { object-fit: contain; }
.ncpl-detail-value { color: var( --ncpl-ink ); font-weight: 500; }

.ncpl-location-row {
	display: flex;
	align-items: center;
	gap: .4rem;
	font-size: .85rem;
	color: var( --ncpl-gray-600 );
}

.ncpl-spacer { flex: 1 1 auto; }

/* ── Builder row ──────────────────────────────────────────────────── */

.ncpl-builder-row { display: flex; align-items: center; }
.ncpl-builder-logo { max-height: 52px; max-width: 200px; object-fit: contain; }
.ncpl-builder-name {
	font-size: .78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .07em;
	color: var( --ncpl-gray-600 );
}

/* ── CTA buttons ──────────────────────────────────────────────────── */

.ncpl-cta-row { display: flex; gap: .65rem; margin-top: .1rem; }
.ncpl-cta-row.ncpl-cta-side_by_side { flex-wrap: wrap; }
.ncpl-cta-row.ncpl-cta-stacked { flex-direction: column; }
@media ( max-width: 520px ) {
	.ncpl-cta-row.ncpl-cta-side_by_side { flex-direction: column; }
}

.ncpl-btn {
	flex: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55rem;
	text-align: center;
	padding: .8rem 1.2rem;
	border-radius: .85rem;
	font-size: .92rem;
	font-weight: 700;
	border: none;
	cursor: pointer;
	transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
	font-family: var( --ncpl-font );
	min-height: 46px; /* comfortable tap target on mobile */
}
.ncpl-btn-icon { width: 18px; height: 18px; flex-shrink: 0; }
.ncpl-btn-secondary .ncpl-btn-icon { color: var( --ncpl-blue-deep ); }
.ncpl-btn-primary {
	background: linear-gradient( 135deg, var( --ncpl-blue-deep ), var( --ncpl-blue ) );
	color: var( --ncpl-white );
	box-shadow: 0 10px 24px -8px rgba( 22, 62, 166, .5 );
}
.ncpl-btn-primary:hover {
	transform: translateY( -2px );
	box-shadow: 0 14px 30px -8px rgba( 22, 62, 166, .55 ), 0 0 24px rgba( 79, 195, 255, .5 );
}
.ncpl-btn-primary:focus-visible {
	outline: none;
	box-shadow: var( --ncpl-glow-ring ), 0 10px 24px -8px rgba( 22, 62, 166, .5 );
}
.ncpl-btn-secondary {
	background: var( --ncpl-white );
	color: var( --ncpl-blue-deep );
	border: 1.5px solid var( --ncpl-gray-100 );
}
.ncpl-btn-secondary:hover {
	border-color: var( --ncpl-blue );
	background: var( --ncpl-gray-50 );
	box-shadow: 0 0 0 3px rgba( 79, 195, 255, .15 );
}
.ncpl-btn-secondary:focus-visible {
	outline: none;
	border-color: var( --ncpl-blue );
	box-shadow: var( --ncpl-glow-ring );
}

/* ── Share button + menu ──────────────────────────────────────────── */

.ncpl-share { position: relative; }
.ncpl-share-image { position: absolute; top: .85rem; right: .85rem; z-index: 2; }
.ncpl-share-near-cta { display: inline-flex; }
.ncpl-share-bottom { display: flex; justify-content: center; padding-top: .25rem; }

.ncpl-share-toggle {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid var( --ncpl-gray-100 );
	background: var( --ncpl-white );
	color: var( --ncpl-ink );
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 4px 14px rgba( 16, 24, 40, .14 );
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.ncpl-share-toggle:hover {
	transform: scale( 1.06 );
	border-color: var( --ncpl-blue );
	box-shadow: 0 4px 14px rgba( 16, 24, 40, .14 ), 0 0 0 3px rgba( 79, 195, 255, .3 );
}
.ncpl-share-toggle svg, .ncpl-share-toggle i { width: 16px; height: 16px; }

.ncpl-share-menu[hidden] { display: none; }
.ncpl-share-menu {
	position: absolute;
	top: calc( 100% + 8px );
	right: 0;
	background: var( --ncpl-white );
	color: var( --ncpl-ink );
	border: 1px solid var( --ncpl-gray-100 );
	border-radius: .85rem;
	box-shadow: 0 22px 50px -15px rgba( 16, 24, 40, .28 );
	padding: .4rem;
	display: flex;
	flex-direction: column;
	min-width: 180px;
	z-index: 10;
}
.ncpl-share-action {
	display: flex;
	align-items: center;
	gap: .5rem;
	background: none;
	border: none;
	text-align: left;
	padding: .55rem .6rem;
	border-radius: .55rem;
	font-size: .85rem;
	cursor: pointer;
	color: inherit;
	font-family: var( --ncpl-font );
	transition: background .15s ease, color .15s ease;
}
.ncpl-share-action:hover { background: var( --ncpl-gray-50 ); color: var( --ncpl-blue-deep ); }
.ncpl-share-action i, .ncpl-share-action svg { width: 15px; height: 15px; color: var( --ncpl-blue ); }

/* ── Modal ────────────────────────────────────────────────────────── */

.ncpl-modal[hidden] { display: none; }
.ncpl-modal {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	font-family: var( --ncpl-font );
}
.ncpl-modal-backdrop {
	position: absolute;
	inset: 0;
	background: rgba( 16, 24, 40, .55 );
}
.ncpl-modal-dialog {
	position: relative;
	background: var( --ncpl-white );
	color: var( --ncpl-ink );
	border: 1px solid var( --ncpl-gray-100 );
	border-radius: 1.25rem;
	padding: 2rem;
	max-width: 420px;
	width: 100%;
	max-height: 90vh;
	overflow-y: auto;
	box-shadow: 0 30px 80px -20px rgba( 16, 24, 40, .35 ), 0 0 40px rgba( 79, 195, 255, .12 );
	font-family: var( --ncpl-font );
}
@media ( max-width: 480px ) {
	.ncpl-modal-dialog { padding: 1.25rem; border-radius: 1rem; }
	.ncpl-modal-title { margin-bottom: .2rem; font-size: 1.1rem; }
	.ncpl-modal-property { margin-bottom: .85rem; }
	.ncpl-form-field { margin-bottom: .6rem; }
	.ncpl-tile-group { gap: .4rem; margin-top: .4rem; }
	.ncpl-tile { padding: .45rem .75rem; font-size: .8rem; }
	.ncpl-budget-slider { margin-top: 1.75rem; }
	.ncpl-modal-submit { margin-top: .3rem; }
}
.ncpl-modal-close {
	position: absolute;
	top: .85rem;
	right: .85rem;
	width: 32px;
	height: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var( --ncpl-gray-50 );
	border: none;
	border-radius: 50%;
	font-size: 1.35rem;
	line-height: 1;
	cursor: pointer;
	color: var( --ncpl-gray-600 );
	transition: background .15s ease, color .15s ease;
}
.ncpl-modal-close:hover { background: var( --ncpl-gray-100 ); color: var( --ncpl-ink ); }
.ncpl-modal-title { margin: 0 0 .3rem; font-family: var( --ncpl-font ); font-weight: 700; font-size: 1.25rem; color: var( --ncpl-ink ); padding-right: 1.5rem; }
.ncpl-modal-property { margin: 0 0 1.25rem; font-size: .875rem; color: var( --ncpl-gray-600 ); }

.ncpl-form-field { display: block; margin-bottom: .9rem; font-size: .8rem; font-weight: 600; color: var( --ncpl-gray-600 ); }
.ncpl-form-field[hidden] { display: none; }
.ncpl-form-field input,
.ncpl-form-field select {
	display: block;
	width: 100%;
	margin-top: .35rem;
	padding: .65rem .85rem;
	border-radius: .65rem;
	border: 1.5px solid var( --ncpl-gray-100 );
	font-size: .95rem;
	font-weight: 400;
	color: var( --ncpl-ink );
	background: var( --ncpl-white );
	box-sizing: border-box;
	font-family: var( --ncpl-font );
	transition: border-color .2s ease, box-shadow .2s ease;
}
.ncpl-form-field input:focus,
.ncpl-form-field select:focus {
	outline: none;
	border-color: var( --ncpl-blue );
	box-shadow: var( --ncpl-glow-ring ), 0 0 16px rgba( 79, 195, 255, .18 );
}
.ncpl-form-field select { cursor: pointer; appearance: auto; }

/* The generic text-input box styling above (border/padding/white
   background) matches on any <input> inside .ncpl-form-field, including
   range sliders like the budget control -- that opaque background was
   painting over the track/fill underneath and the border/padding were
   turning it into a bordered box instead of a bare slider. Strip it back
   off here so .ncpl-price-range's own transparent/absolute styling shows
   through as intended. */
.ncpl-form-field input[type="range"] {
	border: none;
	padding: 0;
	margin-top: 0;
	background: transparent;
}
.ncpl-form-field input[type="range"]:focus {
	box-shadow: none;
}
.ncpl-tour-date-display {
	display: block;
	margin-top: .4rem;
	font-size: .85rem;
	font-weight: 700;
	color: var( --ncpl-blue-deep );
	min-height: 1.1em;
}
.ncpl-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

.ncpl-modal-submit { width: 100%; margin-top: .5rem; }
.ncpl-modal-status { font-size: .8rem; margin: .6rem 0 0; min-height: 1.1em; }
.ncpl-modal-status.ncpl-status-error { color: #c0392b; }
.ncpl-modal-status.ncpl-status-success { color: #1e824c; }

/* ── Toast ────────────────────────────────────────────────────────── */

.ncpl-toast[hidden] { display: none; }
.ncpl-toast {
	position: fixed;
	bottom: 1.5rem;
	left: 50%;
	transform: translateX( -50% );
	background: var( --ncpl-ink );
	color: var( --ncpl-white );
	padding: .65rem 1.15rem;
	border-radius: 999px;
	font-size: .85rem;
	font-family: var( --ncpl-font );
	z-index: 100000;
	box-shadow: 0 12px 30px rgba( 16, 24, 40, .35 ), 0 0 0 1px rgba( 79, 195, 255, .25 );
}

/* ── Floating "Customize Your List" CTA ──────────────────────────────
   Available wherever [property_grid]/[property_list] renders (see the
   wp_footer hook in render-grid.php) -- not landing-page-specific. Sits
   below both .ncpl-modal (99999) and .ncpl-toast (100000) so either can
   still cover it, and stays clear of the toast's bottom-center position by
   living in the opposite (right) corner. */
.ncpl-floating-cta {
	position: fixed;
	right: 1.25rem;
	bottom: calc( 1.25rem + env( safe-area-inset-bottom, 0px ) );
	z-index: 9000;
	box-shadow: 0 10px 24px -8px rgba( 22, 62, 166, .5 ), 0 0 20px rgba( 79, 195, 255, .35 );
}
@media ( max-width: 600px ) {
	.ncpl-floating-cta {
		right: .75rem;
		bottom: calc( .75rem + env( safe-area-inset-bottom, 0px ) );
		padding: .6rem .8rem;
		font-size: .8rem;
	}
	.ncpl-floating-cta .ncpl-btn-icon { width: 16px; height: 16px; }
}

/* ── Tile groups (budget / area selection) ───────────────────────────── */

.ncpl-tile-group {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin-top: .5rem;
}
.ncpl-tile {
	font-family: var( --ncpl-font );
	font-size: .85rem;
	font-weight: 600;
	color: var( --ncpl-ink );
	background: var( --ncpl-white );
	border: 1.5px solid var( --ncpl-gray-100 );
	border-radius: .65rem;
	padding: .55rem .9rem;
	cursor: pointer;
	transition: border-color .2s ease, background .2s ease, color .2s ease, box-shadow .2s ease;
}
.ncpl-tile:hover {
	border-color: var( --ncpl-blue );
}
.ncpl-tile:focus-visible {
	outline: none;
	box-shadow: var( --ncpl-glow-ring );
}
.ncpl-tile.is-active {
	background: linear-gradient( 135deg, var( --ncpl-blue-deep ), var( --ncpl-blue ) );
	border-color: var( --ncpl-blue-deep );
	color: var( --ncpl-white );
	box-shadow: 0 0 14px rgba( 79, 195, 255, .35 );
}

/* ── Budget slider (reuses .ncpl-price-slider structure/classes) ────────
   Same "moving dot" concept as a floating value tooltip that tracks the
   thumb -- own blue tokens/sizing, not the reference's purple/scale. */

.ncpl-budget-slider {
	margin-top: 2.25rem; /* room above the track for the floating tooltip */
}

.ncpl-budget-tooltip {
	position: absolute;
	bottom: 100%;
	left: 0%; /* JS updates this per the thumb's current position */
	transform: translateX( -50% );
	margin-bottom: 12px;
	background: linear-gradient( 135deg, var( --ncpl-blue-deep ), var( --ncpl-blue ) );
	color: var( --ncpl-white );
	font-family: var( --ncpl-font );
	font-size: .78rem;
	font-weight: 700;
	padding: .3rem .6rem;
	border-radius: .55rem;
	white-space: nowrap;
	box-shadow: 0 4px 12px rgba( 22, 62, 166, .35 );
	pointer-events: none;
}
.ncpl-budget-tooltip::after {
	content: '';
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX( -50% );
	width: 0;
	height: 0;
	border-left: 5px solid transparent;
	border-right: 5px solid transparent;
	border-top: 6px solid var( --ncpl-blue-deep );
}

.ncpl-privacy-note {
	margin: 1.25rem 0 0;
	font-size: .78rem;
	color: var( --ncpl-gray-400 );
}
