/* ==========================================================================
   PULSE — base layer: tokens, resets, nav, menu, buttons, cursor, modal,
   preloader, wipe, footer, shared type. Page-specific skin lives in
   assets/css/pages/{slug}.css. Bootstrap supplies the grid only.
   ========================================================================== */

:root {
	--brand-yellow: #FFE000;
	--yellow-dim: #E6CA00;
	--ink-black: #0A0A0A;
	--pure-white: #FFFFFF;
	--soft-grey: #F2F2F0;
	--mid-grey: #8A8A8A;

	--surface-1: #141414;
	--surface-2: #1a1a1a;
	--surface-3: #1e1e1e;
	--hairline: #1a1a1a;
	--hairline-card: #222;

	--cat-strength: #FFE000;
	--cat-cardio: #ff5b3a;
	--cat-mind: #7bd3c4;
	--cat-water: #57a8ff;

	--font-display: 'Anton', Impact, sans-serif;
	--font-body: 'Archivo', system-ui, -apple-system, sans-serif;

	--gutter: clamp(20px, 5vw, 64px);
	--section-y: clamp(70px, 10vh, 130px);
	--pill: 999px;

	--z-nav: 8000;
	--z-menu: 8500;
	--z-wipe: 9000;
	--z-modal: 9200;
	--z-cursor: 9500;
	--z-preloader: 9999;
}

/* ---------- reset / document ---------- */
* { margin: 0; padding: 0; box-sizing: border-box; }

html, body { background: var(--ink-black); }

body.pulse-body {
	font-family: var(--font-body);
	color: var(--pure-white);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overscroll-behavior: none;
}

.pulse-root { position: relative; width: 100%; overflow-x: hidden; background: var(--ink-black); }

a { color: var(--brand-yellow); text-decoration: none; }
a:hover { color: var(--yellow-dim); }

::selection { background: var(--brand-yellow); color: var(--ink-black); }

img, video { display: block; max-width: 100%; }

button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }

/* Bootstrap container gutters → brand gutter */
.container-fluid { padding-left: var(--gutter); padding-right: var(--gutter); }
#site-content .container { padding-left: var(--gutter); padding-right: var(--gutter); }

/* 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 hides the native one (desktop, motion-on only — set by JS) */
body.has-custom-cursor { cursor: none; }
body.has-custom-cursor a,
body.has-custom-cursor button { cursor: none; }

/* Body scroll lock while the modal is open */
body.is-locked { overflow: hidden; }

/* ---------- shared type ---------- */
.eyebrow {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .32em;
	text-transform: uppercase;
	margin-bottom: 14px;
	color: var(--ink-black);
}
.eyebrow--yellow { color: var(--brand-yellow); }

.section-h2 {
	font-family: var(--font-display);
	font-size: clamp(2.4rem, 6vw, 5rem);
	line-height: .92;
	letter-spacing: .01em;
	text-transform: uppercase;
	color: var(--pure-white);
}
.section-h2--dark { color: var(--ink-black); }
.section-h2--sm { font-size: clamp(2.2rem, 5vw, 4rem); }

.display-h1 {
	font-family: var(--font-display);
	font-size: clamp(3rem, 9vw, 7rem);
	line-height: .88;
	text-transform: uppercase;
}

/* ---------- icons ---------- */
.icon { width: 20px; height: 20px; flex: 0 0 auto; stroke-width: 1.75; }
.icon--15 { width: 15px; height: 15px; }
.icon--16 { width: 16px; height: 16px; }
.icon--18 { width: 18px; height: 18px; }
.icon--20 { width: 20px; height: 20px; }
.icon--22 { width: 22px; height: 22px; }
.icon--24 { width: 24px; height: 24px; }
.icon--26 { width: 26px; height: 26px; }
.icon--yellow { color: var(--brand-yellow); }
.icon--dim { color: #555; }
.icon--success { color: #1F8A5B; }
.icon--back { transform: rotate(-135deg); }

/* ---------- pill buttons ---------- */
.btn-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	padding: 17px 28px;
	border-radius: var(--pill);
	font-weight: 800;
	font-size: 14px;
	letter-spacing: .08em;
	text-transform: uppercase;
	border: 1.5px solid transparent;
	transition: background .3s ease, color .3s ease, border-color .3s ease;
	will-change: transform;
}
.btn-pill--sm { padding: 13px 20px; font-size: 13px; letter-spacing: .1em; gap: 8px; }
.btn-pill--block { width: 100%; padding: 16px 22px; }

.btn-pill--yellow { background: var(--brand-yellow); color: var(--ink-black); }
.btn-pill--yellow:hover { background: var(--yellow-dim); color: var(--ink-black); }

.btn-pill--ghost { background: transparent; color: var(--pure-white); border-color: rgba(255, 255, 255, .5); }
.btn-pill--ghost:hover { background: rgba(255, 255, 255, .1); color: var(--pure-white); }

.btn-pill--black { background: var(--ink-black); color: var(--pure-white); padding: 15px 24px; font-size: 13px; }
.btn-pill--black:hover { background: #222; color: var(--pure-white); }

.btn-pill--invert { background: var(--ink-black); color: var(--pure-white); padding: 18px 30px; }
.btn-pill--invert:hover { background: var(--pure-white); color: var(--ink-black); }

.btn-pill--outline { background: transparent; color: var(--pure-white); border: 1px solid rgba(255, 255, 255, .4); padding: 14px 22px; font-size: 13px; font-weight: 700; }
.btn-pill--outline:hover { background: rgba(255, 255, 255, .08); color: var(--pure-white); }

.btn-pill--outline-dark { background: transparent; color: var(--ink-black); border: 1px solid rgba(0, 0, 0, .25); padding: 14px 22px; font-size: 13px; font-weight: 700; }
.btn-pill--outline-dark:hover { background: rgba(0, 0, 0, .06); color: var(--ink-black); }

.btn-pill.is-submitted { opacity: .5; pointer-events: none; }

/* ---------- preloader ---------- */
.preloader {
	position: fixed;
	inset: 0;
	z-index: var(--z-preloader);
	background: var(--ink-black);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 34px;
}
.preloader.is-hidden { display: none; }
.preloader__mask { overflow: hidden; }
.preloader__word {
	font-family: var(--font-display);
	font-size: clamp(3.5rem, 14vw, 9rem);
	letter-spacing: .02em;
	line-height: .9;
	color: var(--pure-white);
	transform: translateY(110%);
}
.preloader__track { width: min(280px, 60vw); height: 3px; background: rgba(255, 255, 255, .14); overflow: hidden; }
.preloader__bar { width: 0%; height: 100%; background: var(--brand-yellow); }
.preloader__pct { font-size: 12px; letter-spacing: .35em; color: var(--mid-grey); }

/* ---------- wipe transition (progressive enhancement) ---------- */
.wipe {
	position: fixed;
	inset: 0;
	z-index: var(--z-wipe);
	background: var(--ink-black);
	display: flex;
	align-items: center;
	justify-content: center;
	transform: translateY(100%);
	pointer-events: none;
}
.wipe__word { font-family: var(--font-display); font-size: clamp(3rem, 12vw, 8rem); color: var(--brand-yellow); opacity: 0; }

/* ---------- custom cursor ---------- */
.cursor-dot,
.cursor-ring { display: none; }
body.has-custom-cursor .cursor-dot,
body.has-custom-cursor .cursor-ring { display: flex; }

.cursor-dot {
	position: fixed;
	top: 0; left: 0;
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--ink-black);
	z-index: var(--z-cursor);
	pointer-events: none;
	transform: translate(-50%, -50%);
	mix-blend-mode: difference;
}
.cursor-ring {
	position: fixed;
	top: 0; left: 0;
	width: 40px; height: 40px;
	border-radius: 50%;
	border: 1.5px solid var(--brand-yellow);
	z-index: var(--z-cursor);
	pointer-events: none;
	transform: translate(-50%, -50%) scale(1);
	align-items: center;
	justify-content: center;
}
.cursor-ring__label {
	font-family: var(--font-body);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .14em;
	color: var(--brand-yellow);
	opacity: 0;
}

/* ---------- nav ---------- */
.pulse-nav {
	position: fixed;
	top: 0; left: 0;
	width: 100%;
	z-index: var(--z-nav);
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 22px var(--gutter);
	background: transparent;
	transition: background .4s ease, padding .4s ease, backdrop-filter .4s ease;
}
.pulse-nav.is-scrolled {
	background: rgba(10, 10, 10, .85);
	backdrop-filter: blur(12px);
	padding: 14px var(--gutter);
}
.pulse-nav__logo {
	font-family: var(--font-display);
	font-size: 26px;
	letter-spacing: .04em;
	color: var(--pure-white);
	display: flex;
	align-items: center;
	gap: 9px;
}
.pulse-nav__logo:hover { color: var(--pure-white); }
.pulse-nav__dot { width: 11px; height: 11px; border-radius: 50%; background: var(--brand-yellow); display: inline-block; }

.pulse-nav__links { display: flex; align-items: center; gap: 38px; }
.pulse-nav__link {
	color: var(--pure-white);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	transition: color .25s ease;
}
.pulse-nav__link:hover { color: var(--brand-yellow); }

.pulse-nav__burger {
	display: none;
	width: 46px; height: 46px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .25);
	align-items: center;
	justify-content: center;
	flex-direction: column;
	gap: 5px;
}
.pulse-nav__burger-bar { width: 18px; height: 2px; background: var(--pure-white); display: block; }

/* ---------- mobile menu ---------- */
.pulse-menu {
	position: fixed;
	inset: 0;
	z-index: var(--z-menu);
	background: var(--ink-black);
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 0 8vw;
	transform: translateY(-100%);
	transition: transform .5s cubic-bezier(.76, 0, .24, 1);
	visibility: hidden;
}
.pulse-menu.is-open { transform: translateY(0); visibility: visible; }
.pulse-menu__close {
	position: absolute;
	top: 26px; right: 24px;
	width: 46px; height: 46px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .25);
	color: var(--pure-white);
	font-size: 26px;
	line-height: 1;
}
.pulse-menu__items { display: flex; flex-direction: column; gap: 4px; }
.pulse-menu__item {
	font-family: var(--font-display);
	font-size: clamp(2.6rem, 13vw, 5rem);
	color: var(--pure-white);
	line-height: 1.02;
	text-transform: uppercase;
}
.pulse-menu__item:hover { color: var(--brand-yellow); }
.pulse-menu__item--accent { color: var(--brand-yellow); }

.pulse-menu__social { margin-top: 48px; display: flex; gap: 22px; }
.pulse-menu__social-link { color: var(--mid-grey); }
.pulse-menu__social-link:hover { color: var(--brand-yellow); }

/* ---------- video modal ---------- */
.vmodal {
	position: fixed;
	inset: 0;
	z-index: var(--z-modal);
	background: rgba(10, 10, 10, .94);
	backdrop-filter: blur(6px);
	display: none;
	align-items: center;
	justify-content: center;
	padding: clamp(16px, 4vw, 56px);
	opacity: 0;
}
.vmodal.is-open { display: flex; }
.vmodal__close {
	position: absolute;
	top: 22px; right: 22px;
	width: 52px; height: 52px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .3);
	color: var(--pure-white);
	font-size: 24px;
	line-height: 1;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
}
.vmodal__close:hover { border-color: var(--brand-yellow); color: var(--brand-yellow); }
.vmodal__meta { position: absolute; top: 28px; left: clamp(20px, 4vw, 56px); z-index: 3; pointer-events: none; }
.vmodal__cat { font-size: 11px; font-weight: 700; letter-spacing: .2em; color: var(--brand-yellow); }
.vmodal__name {
	font-family: var(--font-display);
	font-size: clamp(1.6rem, 4vw, 2.6rem);
	text-transform: uppercase;
	line-height: 1;
	color: var(--pure-white);
	margin-top: 4px;
}
.vmodal__stage {
	position: relative;
	height: min(84vh, 860px);
	aspect-ratio: 9 / 16;
	max-width: 100%;
	background: #000;
	overflow: hidden;
	box-shadow: 0 40px 120px rgba(0, 0, 0, .6);
}
.vmodal__video { width: 100%; height: 100%; object-fit: cover; background: #000; }

/* ---------- footer ---------- */
.footer {
	background: var(--ink-black);
	color: var(--pure-white);
	padding: clamp(50px, 8vh, 90px) 0 0;
	border-top: 1px solid var(--hairline);
	overflow: hidden;
	position: relative;
	z-index: 2;
}
.footer__grid { padding-bottom: clamp(40px, 6vh, 70px); }
.footer__brand {
	font-family: var(--font-display);
	font-size: 30px;
	letter-spacing: .04em;
	display: flex;
	align-items: center;
	gap: 9px;
}
.footer__dot { width: 11px; height: 11px; border-radius: 50%; background: var(--brand-yellow); }
.footer__tagline { color: var(--mid-grey); font-size: 15px; line-height: 1.6; max-width: 300px; margin-top: 16px; }
.footer__heading { font-size: 11px; letter-spacing: .2em; color: var(--mid-grey); text-transform: uppercase; margin-bottom: 16px; }
.footer__links { display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.footer__link { color: var(--pure-white); }
.footer__link:hover { color: var(--brand-yellow); }
.footer__social { display: flex; gap: 14px; }
.footer__social-link { color: var(--pure-white); }
.footer__social-link:hover { color: var(--brand-yellow); }

.footer__legal {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 14px;
	padding: 20px 0;
	border-top: 1px solid var(--hairline);
	color: var(--mid-grey);
	font-size: 12px;
}
.footer__legal-links { display: flex; gap: 20px; }
.footer__legal-link { color: var(--mid-grey); }
.footer__legal-link:hover { color: var(--brand-yellow); }
.footer__lang { color: #333; }

.footer__wordmark-mask { overflow: hidden; line-height: .74; margin-top: 10px; }
.footer__wordmark {
	font-family: var(--font-display);
	font-size: clamp(4.5rem, 26vw, 24rem);
	text-align: center;
	letter-spacing: .02em;
	color: var(--surface-1);
	transform: translateY(18%);
	will-change: transform;
}

/* ---------- generic fallback template (index.php) ---------- */
.fallback { padding: clamp(140px, 20vh, 200px) 0 var(--section-y); background: var(--ink-black); }
.fallback__list { margin-top: clamp(30px, 5vh, 50px); }
.fallback__card { display: block; background: var(--surface-1); border: 1px solid var(--hairline-card); padding: 26px 22px; height: 100%; color: var(--pure-white); }
.fallback__card:hover { background: var(--surface-3); color: var(--pure-white); }
.fallback__title { font-family: var(--font-display); font-size: 1.35rem; text-transform: uppercase; line-height: 1; }
.fallback__excerpt { color: var(--mid-grey); font-size: 14px; line-height: 1.6; margin-top: 10px; }
.fallback__empty { color: var(--mid-grey); font-size: 16px; margin: 24px 0; }

/* ---------- brand svg icons ---------- */
.brand-icon { display: block; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
	.pulse-nav__links { display: none; }
	.pulse-nav__burger { display: flex; }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.preloader { display: none; }
	.wipe { display: none; }
	.cursor-dot, .cursor-ring { display: none !important; }
	.preloader__word { transform: none; }
	.footer__wordmark { transform: translateY(18%); }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
	}
}

/* footer inner wrapper (gutters come from .container-fluid) */
.footer__inner { position: relative; }

/* --- WP admin bar offset --- */
/* The WP admin bar is fixed at the viewport top (z-index 99999). A fixed/sticky
   header anchored at top:0 renders underneath it for logged-in users, so offset
   it by the bar's height. Below 600px WP makes the bar position:absolute (it
   scrolls away), so the header returns to top:0. */
body.admin-bar .pulse-nav { top: 32px; }
@media screen and (max-width: 782px) {
body.admin-bar .pulse-nav { top: 46px; }
}
@media screen and (max-width: 600px) {
body.admin-bar .pulse-nav { top: 0; }
}
