/* ============================================================
   CENTRAL PARK RESIDENCES — ELEMENTOR / THEME OVERRIDE GUARD
   overrides.css
   ------------------------------------------------------------
   Loaded LAST in the design-system chain so our rules win over
   Elementor's and the theme's defaults on equal specificity.
   Scoped to CP widgets only — it never touches Elementor's UI
   or other widgets on the page.
   ============================================================ */

/* Each CP widget renders its own full <section> with its own padding.
   Neutralize the spacing Elementor injects around/inside the widget
   wrapper AND the section/column so the sections butt together exactly
   like the design (no doubled vertical gaps). */
[class*="elementor-widget-cp-"] > .elementor-widget-container { margin: 0; padding: 0; }
.elementor-element [class*="elementor-widget-cp-"] { margin: 0 !important; }
[class*="elementor-widget-cp-"] > .elementor-widget-container > * { margin-top: 0; margin-bottom: 0; }

/* Zero Elementor's OWN section + column padding on every row that holds a
   full-section CP widget, so ONLY each CP section's own design padding sets
   the vertical rhythm (equal, HTML-matching). The Contact section holds
   cp-contact-block / form widgets, which are NOT in this list, so it keeps
   its band padding. Works live without a page rebuild. */
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-hero),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-cards),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-stats-strip),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-gallery),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-image-content),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-accordion),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-grid),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-see-inside),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-interactive-map),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-testimonial),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-faq),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-cta),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-team),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-process),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-feature-grid),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-metric-table),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-page-hero),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-stack),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-media-quote),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-owner-report),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-compare),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-returns-table),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-market),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-story),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-track),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-owner-spotlight),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-walk),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-included),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-res-cta),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-overview),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-media),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-amenities),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-finance),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-why-invest),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-residence-location),
.elementor-section:has(> .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-cp-other-residences) {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-hero),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-cards),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-stats-strip),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-gallery),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-image-content),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-accordion),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-grid),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-see-inside),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-interactive-map),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-testimonial),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-faq),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-cta),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-team),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-process),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-feature-grid),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-metric-table),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-page-hero),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-stack),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-media-quote),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-owner-report),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-compare),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-returns-table),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-market),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-story),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-track),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-owner-spotlight),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-walk),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-included),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-res-cta),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-overview),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-media),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-amenities),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-finance),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-why-invest),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-residence-location),
.elementor-element-populated:has(> .elementor-widget-wrap > .elementor-widget-cp-other-residences) {
	padding: 0 !important;
}

/* ============================================================
   FINAL SECTION SPACING
   The design gives EVERY section its own `padding: clamp(80px,9vw,140px) 0`
   (top AND bottom), so between two sections the space doubles (~280px).
   Here we set ONE consistent, tighter vertical rhythm on every CP content
   section — equal spacing, no oversized doubling — and also give the MAP
   section the padding it was missing. Change --cp-sy to tune the whole page.
   ============================================================ */
:root { --cp-sy: clamp(52px, 5.5vw, 88px); }

.solutionss,
.developments,
.value,
.cp-interactive-map,
.amen,
.insight,
.statband,
.testi,
.faq,
.team,
.process,
.cp-features,
.cp-metric-section,
.story,
.river,
.market,
.how,
.principals,
.track,
.getting,
.opmodel,
.report,
.stack,
.fees,
.walk,
.explore,
.included,
.res-cta,
.cp-contact-page {
	padding-top: var(--cp-sy) !important;
	padding-bottom: var(--cp-sy) !important;
}

/* Map section: it renders .cp-interactive-map (not the design's .location),
   which had no padding at all — this gives it the same rhythm as the rest. */
.cp-interactive-map .cp-map-stage { margin-top: clamp(24px,3vw,40px); }

/* ---- FULL-BLEED ----
   Force the full-width section widgets to span the whole viewport, even when
   Elementor keeps the container "boxed". The 100vw break-out is safe because
   body has overflow-x:hidden. Each CP section still centers its own content
   via its internal .wrap (max 1280px), exactly like the HTML. */
.elementor-widget-cp-hero > .elementor-widget-container,
.elementor-widget-cp-cards > .elementor-widget-container,
.elementor-widget-cp-stats-strip > .elementor-widget-container,
.elementor-widget-cp-gallery > .elementor-widget-container,
.elementor-widget-cp-image-content > .elementor-widget-container,
.elementor-widget-cp-residence-accordion > .elementor-widget-container,
.elementor-widget-cp-residence-grid > .elementor-widget-container,
.elementor-widget-cp-see-inside > .elementor-widget-container,
.elementor-widget-cp-interactive-map > .elementor-widget-container,
.elementor-widget-cp-testimonial > .elementor-widget-container,
.elementor-widget-cp-faq > .elementor-widget-container,
.elementor-widget-cp-cta > .elementor-widget-container,
.elementor-widget-cp-contact > .elementor-widget-container,
.elementor-widget-cp-team > .elementor-widget-container,
.elementor-widget-cp-process > .elementor-widget-container,
.elementor-widget-cp-feature-grid > .elementor-widget-container,
.elementor-widget-cp-metric-table > .elementor-widget-container,
.elementor-widget-cp-page-hero > .elementor-widget-container,
.elementor-widget-cp-stack > .elementor-widget-container,
.elementor-widget-cp-media-quote > .elementor-widget-container,
.elementor-widget-cp-owner-report > .elementor-widget-container,
.elementor-widget-cp-compare > .elementor-widget-container,
.elementor-widget-cp-returns-table > .elementor-widget-container,
.elementor-widget-cp-market > .elementor-widget-container,
.elementor-widget-cp-story > .elementor-widget-container,
.elementor-widget-cp-track > .elementor-widget-container,
.elementor-widget-cp-owner-spotlight > .elementor-widget-container,
.elementor-widget-cp-walk > .elementor-widget-container,
.elementor-widget-cp-included > .elementor-widget-container,
.elementor-widget-cp-res-cta > .elementor-widget-container,
.elementor-widget-cp-residence-overview > .elementor-widget-container,
.elementor-widget-cp-residence-media > .elementor-widget-container,
.elementor-widget-cp-amenities > .elementor-widget-container,
.elementor-widget-cp-residence-finance > .elementor-widget-container,
.elementor-widget-cp-why-invest > .elementor-widget-container,
.elementor-widget-cp-residence-location > .elementor-widget-container,
.elementor-widget-cp-other-residences > .elementor-widget-container,
.elementor-widget-cp-single-residence-hero > .elementor-widget-container,
.elementor-widget-cp-residence-detail-preview > .elementor-widget-container {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

/* Opportunity group: the source shows pillars + snapshot + image-cards inside
   ONE section. We render them as three sections, so collapse the section
   padding between them and let the elements' own top-margins provide the
   gaps — exactly like the single HTML section. */
.cp-op-1 .solutions { padding-bottom: 0 !important; }
.cp-op-2 .solutions { padding: 0 !important; }
.cp-op-2 .snapshot { margin-top: clamp(40px,5vw,64px) !important; }
.cp-op-3 .solutions { padding-top: 0 !important; }

/* ---- HEADER: CTA MOVES INTO THE MOBILE DROPDOWN ----
   On desktop the "Request Package" button lives in .nav-right. On mobile
   (nav breakpoint) hide that one and show the copy inside the dropdown menu. */
.nav-menu-cta { display: none; }
@media (max-width: 980px) {
	.nav .nav-right .btn { display: none !important; }
	.nav-menu-cta { display: inline-flex !important; width: 100%; justify-content: center; margin-top: 8px; }
}

/* ---- DEVICE-WISE CAROUSEL ----
   Any CP card grid tagged `.cp-carousel .is-{device}` becomes a swipeable
   scroll-snap slider at that breakpoint (team, amenity, district, walkability).
   The per-device flag classes are emitted by the widget's Carousel controls. */
.cp-carousel { scrollbar-width: none; -ms-overflow-style: none; }
.cp-carousel::-webkit-scrollbar { display: none; }
@media (max-width: 760px) {
	.cp-carousel.is-mobile {
		display: flex !important; grid-template-columns: none !important;
		overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
		gap: 16px; scroll-padding-left: 4px; padding-bottom: 8px;
	}
	.cp-carousel.is-mobile > * { flex: 0 0 84% !important; scroll-snap-align: start; min-width: 0; }
}
@media (min-width: 761px) and (max-width: 1024px) {
	.cp-carousel.is-tablet {
		display: flex !important; grid-template-columns: none !important;
		overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
		gap: 20px; scroll-padding-left: 4px; padding-bottom: 8px;
	}
	.cp-carousel.is-tablet > * { flex: 0 0 46% !important; scroll-snap-align: start; min-width: 0; }
}
@media (min-width: 1025px) {
	.cp-carousel.is-desktop {
		display: flex !important; grid-template-columns: none !important;
		overflow-x: auto; scroll-snap-type: x mandatory;
		gap: 24px; scroll-padding-left: 4px; padding-bottom: 8px;
	}
	.cp-carousel.is-desktop > * { flex: 0 0 31.5% !important; scroll-snap-align: start; min-width: 0; }
}
.cp-dots { display: none; gap: 8px; justify-content: center; margin-top: 18px; }
.cp-dots button { width: 8px; height: 8px; border-radius: 50%; background: var(--line); border: none; cursor: pointer; padding: 0; transition: all .35s var(--ease); }
.cp-dots button.active { background: var(--ink); width: 24px; border-radius: 5px; }

/* ---- ICON SIZING ----
   Our widgets use icon-library icons in place of the design's inline SVGs.
   Size them to match the source (≈22px inside the 46/48px chips) whether they
   render as an <svg> or a font <i>. */
.pillar .pi svg, .vrow .vi svg, .howc .hi svg { width: 22px; height: 22px; }
.pillar .pi i, .vrow .vi i, .howc .hi i { font-size: 21px; line-height: 1; }
.pillar .pi, .vrow .vi, .howc .hi { color: var(--ink); }
.cpoint .ci svg, .rrow .ri svg { width: 15px; height: 15px; }
.acard .ai svg { width: 48px; height: 48px; }

/* ---- IMAGE FILL ----
   Counter theme/Elementor rules like `img{height:auto}` that break our
   aspect-ratio crops, so every design image fills its box via object-fit. */
.hero-bg img, .sb-bg img, .inside-bg img, .cta-bg img, .faq-bg img, .dhero-bg img,
.acc-photo img, .amen-photo img, .img-card img, .ins-photo img, .value-photo img,
.srow-media img, .cp-acc-preview-media img, .amen-card .amen-photo img,
.wcard-photo img, .ocard-photo img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	max-width: none;
}
/* Fixed-size thumbnails/avatars keep their exact dimensions. */
.hero-card img { width: 88px !important; height: 72px !important; object-fit: cover; flex: 0 0 auto; }
.testi-author .ph img, .sb-agent img, .cp-map-popup-img img { object-fit: cover; }

/* Re-assert design fundamentals inside CP sections, in case the active
   theme or Elementor reset them (font, heading weight, link decoration). */
.cp-hero, .cp-cards, .cp-stats, .cp-stats-snapshot, .developments, .value,
.cp-see-inside, .cp-interactive-map, .testi, .faq, .cta, .foot, .nav,
.snapshot-band, .dhero, .cp-residence-list, .cp-res-cards, .cp-residence-accordion {
	font-family: var(--sans);
}
.cp-residence-accordion .acc-title,
.cp-hero h1, .cta h2, .kicker, .snapshot-band h2 { font-weight: 500; }
.nav a, .foot a, .acc a, .srow a, .btn { text-decoration: none; }

/* Accordion: single column when the side preview panel is OFF (matches the
   source, photo shown inline inside each open item). */
.acc-inner-nophoto { grid-template-columns: 1fr; }
@media (max-width: 760px) { .acc-inner { grid-template-columns: 1fr; } }

/* ============================================================
   NATIVE ELEMENTOR FORM styled as the design's .form-card / .aform
   (used by the Private Request section — the form is a real Elementor
   Pro Form widget so fields, email and submissions are managed in the UI).
   ============================================================ */
.form-card.cp-form, .cp-form.form-card {
	background: var(--dark-card);
	border: 1px solid var(--line-d);
	border-radius: var(--r-lg);
	padding: clamp(26px,3vw,40px);
}
.cp-form .fc-heading .elementor-heading-title { font-size: 22px; font-weight: 600; color: #fff; margin: 0 0 6px; letter-spacing: -.01em; }
.cp-form .fc-sub-el, .cp-form .fc-sub-el p { color: var(--muted-d); font-size: 14px; margin: 0 0 20px; }
.cp-form .elementor-form-fields-wrapper { margin: 0 -9px; }
.cp-form .elementor-field-group { padding: 0 9px 18px; margin: 0; }
.cp-form .elementor-field-label { font-size: 12px; color: var(--muted-d); font-weight: 500; margin-bottom: 9px; line-height: 1.4; }
.cp-form .elementor-field-textual,
.cp-form .elementor-field-textual.elementor-size-sm {
	background: rgba(255,255,255,.04) !important;
	border: 1px solid var(--line-d) !important;
	border-radius: var(--r-sm) !important;
	color: #fff !important;
	font-family: var(--sans) !important;
	font-size: 15px !important;
	padding: 14px 16px !important;
	height: auto !important;
	line-height: 1.4 !important;
	box-shadow: none !important;
	width: 100%;
}
.cp-form textarea.elementor-field-textual { min-height: 96px; resize: none; }
.cp-form .elementor-field-textual:focus { border-color: var(--lime) !important; }
.cp-form .elementor-field-textual::placeholder { color: #6e6e66; }
.cp-form select.elementor-field-textual option { background: var(--dark-2); color: #fff; }
.cp-form .elementor-field-type-submit { padding-top: 6px; }
.cp-form .elementor-button {
	background: var(--lime) !important;
	color: var(--ink) !important;
	font-family: var(--sans) !important;
	font-weight: 600 !important;
	font-size: 15px !important;
	padding: 15px 30px !important;
	border-radius: var(--r-pill) !important;
	border: none !important;
	width: 100%;
	justify-content: center;
	transition: all .35s var(--ease);
}
.cp-form .elementor-button:hover { background: var(--lime-deep) !important; }
.cp-form .elementor-message { font-size: 14px; margin-top: 10px; color: var(--muted-d); }
.cp-form .elementor-message.elementor-message-success { color: var(--lime); }

/* Contact section: copy column spacing to approximate the .contact-grid gap. */
@media (min-width: 768px) {
	.cp-contact-el > .elementor-container > .elementor-column:first-child > .elementor-widget-wrap { padding-right: clamp(16px,3vw,48px); }
}
