/*!
 * AERA Core Motion — v1.0.0
 * Only what Elementor cannot do natively: smooth-scroll plumbing, motion states,
 * masks, cursor, hover micro-interactions, header states, mobile menu reveal.
 * Layout, spacing, colour and typography live in Elementor + Site Settings.
 */

/* ------------------------------------------------------------------
 * Foundations
 * ---------------------------------------------------------------- */
html.lenis,
html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }

html, body { overflow-x: clip; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }

::selection { background: var(--e-global-color-secondary, #B08657); color: var(--e-global-color-aeralight, #FAF6F0); }

:where(a, button, [role="button"], input, select, textarea, .elementor-menu-toggle):focus-visible {
	outline: 2px solid var(--e-global-color-secondary, #B08657);
	outline-offset: 3px;
}

/* Opening scene waits for the engine (max 3.5s fail-safe — see head flag). */
html.cm-js:not(.cm-ready) [data-core-scene="hero-arch"] [data-core-role] { opacity: 0; }

/* Split text: keep descenders inside line masks. */
.cm-line { padding-bottom: 0.08em; margin-bottom: -0.08em; }

/* Restrained film grain. */
body.aera-grain::after {
	content: "";
	position: fixed;
	inset: -50%;
	z-index: 9990;
	pointer-events: none;
	opacity: 0.045;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

/* ------------------------------------------------------------------
 * Header states (Theme Builder header, scene "header")
 * ---------------------------------------------------------------- */
.aera-header {
	transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.1, 1), min-height 0.5s cubic-bezier(0.2, 0.7, 0.1, 1);
}
.aera-header::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	opacity: 0;
	background: color-mix(in srgb, var(--e-global-color-aerabone, #F3EDE4) 82%, transparent);
	-webkit-backdrop-filter: blur(16px) saturate(1.1);
	backdrop-filter: blur(16px) saturate(1.1);
	border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-primary, #1E1B18) 8%, transparent);
	transition: opacity 0.5s ease, background-color 0.5s ease;
}
.aera-header.is-scrolled::after { opacity: 1; }
@media (min-width: 1025px) {
	.aera-header.is-scrolled { --min-height: 76px !important; }
}
.aera-header.is-hidden { transform: translateY(-105%); }
.aera-header .aera-header__logo img { transition: filter 0.5s ease, transform 0.6s cubic-bezier(0.2, 0.7, 0.1, 1); transform-origin: 0 50%; }
.aera-header.is-scrolled .aera-header__logo img { transform: scale(0.92); }

/* Over dark scenes the header inverts. */
.aera-header.is-dark::after {
	background: color-mix(in srgb, var(--e-global-color-aeradark, #171512) 72%, transparent);
	border-bottom-color: rgba(250, 246, 240, 0.08);
}
.aera-header.is-dark .aera-header__logo img { filter: brightness(0) invert(0.96) sepia(0.12); }
.aera-header.is-dark .elementor-nav-menu--main .elementor-item,
.aera-header.is-dark .elementor-menu-toggle { color: var(--e-global-color-aeralight, #FAF6F0) !important; }
.aera-header.is-dark .elementor-menu-toggle svg { fill: var(--e-global-color-aeralight, #FAF6F0) !important; }
.aera-header.is-dark .aera-header__cta .elementor-button { color: var(--e-global-color-aeralight, #FAF6F0) !important; border-color: rgba(250, 246, 240, 0.5) !important; }
.aera-header .elementor-nav-menu--main .elementor-item,
.aera-header .aera-header__cta .elementor-button { transition: color 0.4s ease, border-color 0.4s ease, background-color 0.4s ease; }

/* Mobile / tablet menu — Elementor Pro dropdown, enhanced into a full-screen panel. */
@media (max-width: 1024px) {
	.aera-header .elementor-nav-menu--dropdown.elementor-nav-menu__container {
		height: calc(100svh - var(--aera-header-h, 72px));
		max-height: none !important;
		transform: none !important;
		overflow-y: auto !important;
		margin-top: 0 !important;
		display: flex;
		flex-direction: column;
		justify-content: center;
		padding: 0 0 12vh;
		background: var(--e-global-color-aeradark, #171512);
		clip-path: inset(0 0 100% 0);
		visibility: hidden;
		transition: clip-path 0.75s cubic-bezier(0.7, 0, 0.2, 1), visibility 0s linear 0.75s;
	}
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
		clip-path: inset(0 0 0 0);
		visibility: visible;
		transition: clip-path 0.75s cubic-bezier(0.7, 0, 0.2, 1), visibility 0s linear 0s;
	}
	.aera-header .elementor-nav-menu--dropdown .menu-item {
		opacity: 0;
		transform: translateY(28px);
		transition: opacity 0.4s ease, transform 0.7s cubic-bezier(0.2, 0.7, 0.1, 1);
	}
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item { opacity: 1; transform: none; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(1) { transition-delay: 0.18s; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(2) { transition-delay: 0.23s; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(3) { transition-delay: 0.28s; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(4) { transition-delay: 0.33s; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(5) { transition-delay: 0.38s; }
	.aera-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container .menu-item:nth-child(n+6) { transition-delay: 0.42s; }
	.aera-header .elementor-nav-menu--dropdown a.elementor-item { border-bottom: 1px solid rgba(250, 246, 240, 0.1); }
	html.cm-menu-open .aera-header::after { opacity: 1; background: var(--e-global-color-aeradark, #171512); }
	html.cm-menu-open .aera-header .aera-header__logo img { filter: brightness(0) invert(0.96) sepia(0.12); }
	html.cm-menu-open .aera-header .elementor-menu-toggle { color: var(--e-global-color-aeralight, #FAF6F0) !important; }
	html.cm-menu-open .aera-header .elementor-menu-toggle svg { fill: var(--e-global-color-aeralight, #FAF6F0) !important; }
}

/* ------------------------------------------------------------------
 * Buttons: magnetic + directional light fill, text roll, editorial links
 * ---------------------------------------------------------------- */
[data-core-hover="magnetic"] .elementor-button {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	will-change: transform;
}
[data-core-hover="magnetic"] .elementor-button::before {
	content: "";
	position: absolute;
	left: var(--cm-x, 50%);
	top: var(--cm-y, 50%);
	width: 260%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: currentColor;
	opacity: 0.14;
	transform: translate(-50%, -50%) scale(0);
	transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.1, 1);
	z-index: -1;
	pointer-events: none;
}
[data-core-hover="magnetic"] .elementor-button.cm-fill-in::before { transform: translate(-50%, -50%) scale(1); }

:is([data-core-hover="magnetic"], [data-core-hover="roll"]) .elementor-button-content-wrapper {
	overflow: hidden;
	height: 1.4em;
	align-items: flex-start;
}
:is([data-core-hover="magnetic"], [data-core-hover="roll"]) .elementor-button-text {
	display: block;
	line-height: 1.4em;
	text-shadow: 0 1.4em 0 currentColor;
	transition: transform 0.6s cubic-bezier(0.7, 0, 0.2, 1);
}
:is([data-core-hover="magnetic"], [data-core-hover="roll"]) .elementor-button:hover .elementor-button-text,
:is([data-core-hover="magnetic"], [data-core-hover="roll"]) .elementor-button:focus-visible .elementor-button-text { transform: translateY(-1.4em); }

/* Editorial text link: hairline that draws, arrow that travels. */
.aera-link-button .elementor-button { position: relative; }
.aera-link-button .elementor-button::after {
	content: "";
	position: absolute;
	left: 0;
	right: 1.6em;
	bottom: 2px;
	height: 1px;
	background: currentColor;
	transform-origin: 100% 50%;
	transition: transform 0.7s cubic-bezier(0.7, 0, 0.2, 1);
}
.aera-link-button .elementor-button:hover::after { transform: scaleX(0); transform-origin: 100% 50%; animation: cm-line-redraw 0.9s cubic-bezier(0.7, 0, 0.2, 1) 0.35s forwards; }
@keyframes cm-line-redraw { from { transform: scaleX(0); transform-origin: 0 50%; } to { transform: scaleX(1); transform-origin: 0 50%; } }
.aera-link-button .elementor-button-content-wrapper::after {
	content: "→";
	margin-left: 0.7em;
	display: inline-block;
	line-height: 1.4em;
	transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.1, 1);
}
.aera-link-button .elementor-button:hover .elementor-button-content-wrapper::after { transform: translateX(6px); }

/* ------------------------------------------------------------------
 * Custom cursor (desktop, fine pointer only — never required for use)
 * ---------------------------------------------------------------- */
.cm-cursor {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 9999;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.3s ease;
}
.cm-cursor.is-visible { opacity: 1; }
.cm-cursor__ring {
	position: absolute;
	left: 0;
	top: 0;
	width: 12px;
	height: 12px;
	margin: -6px 0 0 -6px;
	border-radius: 50%;
	background: #fff;
	mix-blend-mode: difference;
	transition: transform 0.5s cubic-bezier(0.2, 0.7, 0.1, 1), opacity 0.3s ease, background-color 0.3s ease;
}
.cm-cursor__label {
	position: absolute;
	left: 0;
	top: 0;
	width: 96px;
	height: 96px;
	margin: -48px 0 0 -48px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--e-global-color-secondary, #B08657);
	color: var(--e-global-color-aeralight, #FAF6F0);
	font-family: var(--e-global-typography-accent-font-family, sans-serif), sans-serif;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	transform: scale(0);
	transition: transform 0.55s cubic-bezier(0.2, 0.7, 0.1, 1);
}
.cm-cursor.is-link .cm-cursor__ring { transform: scale(3.4); }
.cm-cursor.is-label .cm-cursor__ring { transform: scale(0); }
.cm-cursor.is-label .cm-cursor__label { transform: scale(1); }
.cm-cursor.is-field .cm-cursor__ring { opacity: 0; }
.cm-cursor.is-down .cm-cursor__ring { transform: scale(0.6); }
.cm-cursor.is-link.is-down .cm-cursor__ring { transform: scale(2.6); }
html.cm-has-cursor [data-core-cursor] { cursor: none; }
html.cm-has-cursor [data-core-cursor] a { cursor: none; }

/* ------------------------------------------------------------------
 * Image interactions
 * ---------------------------------------------------------------- */
[data-core-hover="zoom"] .elementor-widget-container,
[data-core-hover="zoom"]:not(:has(.elementor-widget-container)) { overflow: hidden; }
[data-core-hover="zoom"] img { transition: transform 1.4s cubic-bezier(0.2, 0.7, 0.1, 1); }
[data-core-hover="zoom"]:hover img { transform: scale(1.06); }

/* ------------------------------------------------------------------
 * Marquee
 * ---------------------------------------------------------------- */
.cm-marquee-on { overflow: hidden; }
.cm-marquee-on .elementor-heading-title { white-space: nowrap; }
.cm-marquee__track { display: inline-flex; white-space: nowrap; will-change: transform; }
.cm-marquee__item { display: inline-block; padding-right: 0.3em; }
.aera-marquee--outline .elementor-heading-title {
	color: transparent !important;
	-webkit-text-stroke: 1px color-mix(in srgb, var(--e-global-color-aeralight, #FAF6F0) 70%, transparent);
}

/* ------------------------------------------------------------------
 * Scene details
 * ---------------------------------------------------------------- */

/* Opening: scroll cue line. */
.aera-scroll-cue__line { transform-origin: 50% 0; }

/* Practice: the rising horizon line + Pilates structural grid. */
.cm-horizon {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 1px;
	z-index: 3;
	pointer-events: none;
	background: var(--e-global-color-secondary, #B08657);
	box-shadow: 0 0 24px 2px color-mix(in srgb, var(--e-global-color-secondary, #B08657) 45%, transparent);
}
.aera-panel--dark { --cm-grid: 1; }
.aera-panel--dark::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 0;
	background-image: linear-gradient(to right, rgba(250, 246, 240, 0.06) 1px, transparent 1px);
	background-size: calc(100% / 6) 100%;
	transform: scaleY(var(--cm-grid));
	transform-origin: 50% 0;
}
.aera-panel--dark > .e-con-inner { position: relative; z-index: 1; }

/* Experience: cards dim as the next one stacks over. */
.aera-card { --cm-dim: 0; will-change: transform; }
.aera-card::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: #0b0a08;
	opacity: var(--cm-dim);
	z-index: 2;
}

/* Classes: editorial list rows. */
.aera-class-row { position: relative; isolation: isolate; text-decoration: none; }
.aera-class-row::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--e-global-color-aerastone, #E7DCCC);
	transform: scaleY(0);
	transform-origin: 50% 100%;
	transition: transform 0.6s cubic-bezier(0.7, 0, 0.2, 1);
}
.aera-class-row .aera-class-row__title,
.aera-class-row .aera-class-row__num { transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.1, 1), color 0.4s ease; }
.aera-class-row .aera-class-row__arrow .elementor-heading-title { display: inline-block; transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.1, 1); }
@media (hover: hover) {
	.aera-class-row:hover::before,
	.aera-class-row:focus-visible::before { transform: scaleY(1); transform-origin: 50% 0; }
	.aera-class-row:hover .aera-class-row__title { transform: translateX(18px); }
	.aera-class-row:hover .aera-class-row__num { transform: translateX(10px); }
	.aera-class-row:hover .aera-class-row__arrow .elementor-heading-title { transform: translateX(-6px) rotate(-45deg); }
}

/* Pointer-follow media for the class list. */
.cm-follow {
	position: fixed;
	top: 0;
	left: 0;
	width: clamp(240px, 22vw, 360px);
	aspect-ratio: 4 / 5;
	z-index: 50;
	pointer-events: none;
	overflow: hidden;
	border-radius: 999px 999px 0 0;
}
.cm-follow img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Begin: Elementor Pro form on a dark ground. */
.aera-form ::placeholder { color: rgba(250, 246, 240, 0.38); opacity: 1; }
.aera-form select { color: inherit; }
.aera-form select option { color: #1E1B18; }
.aera-form .elementor-field-group .elementor-select-wrapper::before { color: rgba(250, 246, 240, 0.6); }
.aera-form .elementor-field-textual:focus { box-shadow: none; border-color: var(--e-global-color-secondary, #B08657) !important; }

/* Footer wordmark. */
.aera-wordmark .elementor-heading-title { user-select: none; }

/* ------------------------------------------------------------------
 * Reduced motion: present everything, still and composed.
 * ---------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.aera-header,
	.aera-header::after,
	[data-core-hover] *,
	.aera-class-row *,
	.aera-class-row::before,
	.aera-link-button * { transition-duration: 0.01ms !important; animation: none !important; }
	.aera-header.is-hidden { transform: none; }
	.cm-cursor { display: none !important; }
}
