/* Chandler & Co - site effects (cursor, hover, reveal). Loaded on the front end only. */

:root {
	--cc-pink: #D40E8B;
	--cc-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* Smooth scroll (Lenis) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* ---------- Custom cursor (desktop / mouse only) ----------
 * Outer element = position (moved by JS), inner element = size (scaled with
 * transform, so it stays smooth - no width/height animation).
 */
.cc-dot,
.cc-bubble {
	position: fixed;
	top: 0;
	left: 0;
	pointer-events: none;
	will-change: transform;
}
/* small dot, inverts the colour under it */
.cc-dot {
	z-index: 2147483001;
	width: 44px;
	height: 44px;
	margin: -22px 0 0 -22px;
	mix-blend-mode: difference;
	opacity: 0;
	transition: opacity .4s ease;
}
.cc-dot i {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	background: #fff;
	transform: scale(.23);            /* = 10px */
	transition: transform .5s var(--cc-ease);
}
.cc-dot.is-on { opacity: 1; }
.cc-dot.is-link i { transform: scale(1); }      /* = 44px */
.cc-dot.is-down i { transform: scale(.14); }    /* = 6px  */
.cc-dot.is-link.is-down i { transform: scale(.85); }
.cc-dot.is-hidden { opacity: 0; }
.cc-dot.is-hidden i { transform: scale(0); }

/* "Drag" / "View" bubble */
.cc-bubble {
	z-index: 2147483000;
	width: 88px;
	height: 88px;
	margin: -44px 0 0 -44px;
}
.cc-bubble-in {
	position: relative;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	background: var(--cc-pink);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: "Poppins", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: .02em;
	transform: scale(0);
	opacity: 0;
	transition: transform .55s var(--cc-ease), opacity .35s ease, background-color .35s ease;
}
.cc-bubble.is-on .cc-bubble-in { transform: scale(1); opacity: 1; }
.cc-bubble.is-on.is-down .cc-bubble-in { transform: scale(.9); }
.cc-bubble.is-view .cc-bubble-in { background: #182333; }
/* little arrows either side of "Drag" */
.cc-bubble-in::before,
.cc-bubble-in::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 6px;
	height: 6px;
	margin-top: -3px;
	border-top: 1px solid currentColor;
	border-left: 1px solid currentColor;
	transition: opacity .3s ease;
}
.cc-bubble-in::before { left: 12px; transform: rotate(-45deg); }
.cc-bubble-in::after { right: 12px; transform: rotate(135deg); }
.cc-bubble.is-view .cc-bubble-in::before,
.cc-bubble.is-view .cc-bubble-in::after { opacity: 0; }

/* ---------- Hover effects ---------- */
.elementor-button,
.e-button-base,
.elementor-widget-button a,
.re-search-btn0,
.wpcf7-submit,
.wpforms-submit,
.property-read-more {
	transition: transform .35s var(--cc-ease), box-shadow .35s var(--cc-ease), background-color .25s ease, color .25s ease !important;
}
.elementor-button:hover,
.e-button-base:hover,
.elementor-widget-button a:hover,
.wpcf7-submit:hover,
.wpforms-submit:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(0, 0, 0, .12);
}

/* property cards: soft image zoom */
.e-loop-item .swiper-slide img,
.e-loop-item .elementor-widget-image img,
.e-loop-item .pimage {
	transition: transform .8s var(--cc-ease) !important;
}
.e-loop-item:hover .swiper-slide img,
.e-loop-item:hover .elementor-widget-image img,
.e-loop-item:hover .pimage {
	transform: scale(1.04);
}
.e-loop-item .swiper,
.e-loop-item .elementor-widget-image {
	overflow: hidden;
}

/* magnetic buttons: smooth follow + spring back */
.cc-magnet {
	transition: transform .4s var(--cc-ease), box-shadow .35s var(--cc-ease), background-color .25s ease, color .25s ease !important;
	will-change: transform;
}

/* carousel arrows */
.elementor-swiper-button {
	transition: transform .3s var(--cc-ease), opacity .3s ease !important;
}
.elementor-swiper-button:hover {
	transform: scale(1.08);
}

/* ---------- Reveal on scroll ---------- */
.cc-reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .9s var(--cc-ease), transform .9s var(--cc-ease);
	transition-delay: var(--cc-delay, 0s);
}
.cc-reveal.cc-in {
	opacity: 1;
	transform: none;
}

/* Respect "reduce motion" */
@media (prefers-reduced-motion: reduce) {
	.cc-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
	.cc-dot, .cc-bubble { display: none !important; }
	.e-loop-item:hover img { transform: none !important; }
}

/* ---------- Team cards (home "Meet the team" carousel) ----------
 * Dark layer slides up from the bottom on hover, then the details fade in.
 * Content (phone, email, link, headline/bio if filled in) comes from the synced team data.
 */
.elementor-element-088d599 {
	overflow: hidden;
}
.elementor-element-088d599 .elementor-element-67cf135 img {
	transition: transform .9s var(--cc-ease) !important;
}
.elementor-element-088d599:hover .elementor-element-67cf135 img {
	transform: scale(1.05);
}
.elementor-element-3e81b62 {
	opacity: 1 !important;
	visibility: visible !important;
	clip-path: inset(100% 0 0 0);
	transition: clip-path .65s var(--cc-ease) !important;
}
.elementor-element-088d599:hover .elementor-element-3e81b62,
.elementor-element-088d599:focus-within .elementor-element-3e81b62 {
	clip-path: inset(0 0 0 0);
}
.elementor-element-3e81b62 > * {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity .45s ease, transform .6s var(--cc-ease) !important;
}
.elementor-element-088d599:hover .elementor-element-3e81b62 > *,
.elementor-element-088d599:focus-within .elementor-element-3e81b62 > * {
	opacity: 1;
	transform: none;
}
.elementor-element-088d599:hover .elementor-element-3e81b62 > *:nth-child(1) { transition-delay: .18s !important; }
.elementor-element-088d599:hover .elementor-element-3e81b62 > *:nth-child(2) { transition-delay: .26s !important; }
.elementor-element-088d599:hover .elementor-element-3e81b62 > *:nth-child(3) { transition-delay: .34s !important; }
.elementor-element-088d599:hover .elementor-element-3e81b62 > *:nth-child(4) { transition-delay: .42s !important; }
/* "More about" arrow nudges on hover */
.elementor-element-3e81b62 .elementor-button-icon {
	transition: transform .35s var(--cc-ease);
}
.elementor-element-3e81b62 .elementor-button:hover .elementor-button-icon {
	transform: translateX(4px);
}
/* touch screens: no hover, keep the photo clean */
@media (hover: none) {
	.elementor-element-3e81b62 { clip-path: inset(100% 0 0 0) !important; }
}

/* ---------- Back to top ---------- */
.cc-to-top {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 9990;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #CDCDCD; /* light grey so it stands out on the dark footer */
	color: #182333;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 6px 18px rgba(0, 0, 0, .18);
	opacity: 0;
	visibility: hidden;
	transform: translateY(16px);
	transition: opacity .4s ease, visibility .4s ease, transform .5s var(--cc-ease), background-color .25s ease;
}
.cc-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}
.cc-to-top:hover,
.cc-to-top:focus-visible {
	background: var(--cc-pink);
	color: #fff;
}
.cc-to-top svg {
	transition: transform .35s var(--cc-ease);
}
.cc-to-top:hover svg {
	transform: translateY(-3px);
}
@media (max-width: 767px) {
	.cc-to-top { right: 16px; bottom: 16px; width: 44px; height: 44px; }
}

/* ---------- Header: hide on scroll down, show on scroll up ---------- */
.cc-sticky-header .elementor-location-header {
	position: sticky !important;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 999;
	transition: transform .5s var(--cc-ease), box-shadow .4s ease;
	will-change: transform;
}
.cc-sticky-header .elementor-location-header.cc-header-scrolled {
	box-shadow: 0 6px 24px rgba(0, 0, 0, .18);
}
.cc-sticky-header .elementor-location-header.cc-header-hidden {
	transform: translateY(calc(-100% - var(--wp-admin--admin-bar--height, 0px)));
	box-shadow: none;
}
/* WP admin bar is not fixed on small phones */
@media (max-width: 600px) {
	.cc-sticky-header .elementor-location-header { top: 0; }
	.cc-sticky-header .elementor-location-header.cc-header-hidden { transform: translateY(-100%); }
}

/* Scrolled header: dark glass (blur) + slightly tighter padding (24px -> 16px) */
.cc-sticky-header .elementor-location-header .elementor-element-ab0f8aa {
	transition: background-color .4s ease, backdrop-filter .4s ease;
}
.cc-sticky-header .elementor-location-header .elementor-element-c8ee614 {
	transition: padding .4s var(--cc-ease);
}
.cc-sticky-header .elementor-location-header.cc-header-scrolled .elementor-element-ab0f8aa {
	background-color: rgba(31, 31, 33, .72) !important;
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	backdrop-filter: blur(14px) saturate(140%);
}
.cc-sticky-header .elementor-location-header.cc-header-scrolled .elementor-element-c8ee614 {
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

/* Property card photo arrows: easy to hit, small lift on hover */
.acf-gallery-prev,
.acf-gallery-next {
	cursor: pointer;
	transition: transform .3s var(--cc-ease), opacity .3s ease;
}
.acf-gallery-prev:hover,
.acf-gallery-next:hover {
	transform: scale(1.15);
}

/* card photo zoom: clip each slide so the next photo doesn't peek in on the right */
.e-loop-item .swiper-slide { overflow: hidden; }

/* Team card hover: tighter title, top padding, content starts at the top so long bios don't push the title off the card */
.elementor-element-3e81b62 {
	justify-content: flex-start !important;
	gap: 12px !important;
	padding: 24px 16px 16px !important;
}
.elementor-element-3e81b62 .elementor-element-d24886a h2,
.elementor-element-3e81b62 .e-heading-base {
	line-height: 1.25 !important;
}
.elementor-element-3e81b62 .elementor-element-baea364 {
	margin-top: auto;
}

/* card photo zoom: round the clipping box so the top corners stay rounded while zoomed */
.e-loop-item .gallery-image-wrap,
.e-loop-item .acf-gallery-slider {
	border-radius: 4px 4px 0 0;
	overflow: hidden;
	-webkit-mask-image: -webkit-radial-gradient(white, black); /* Safari: keep the clip on transformed images */
}

/* team card phone / email links: keep the card text colour, pink on hover */
.cc-contact-link,
.cc-contact-link:visited {
	color: inherit !important;
	text-decoration: none !important;
	transition: color .2s ease;
}
.cc-contact-link:hover,
.cc-contact-link:focus-visible {
	color: #D40E8B !important;
}
