/* ==========================================================================
   PrymeX V1.0 theme styles
   Tokens follow spec section 6. No hex values outside :root.
   ========================================================================== */

@font-face {
	font-family: "PX Display";
	src: url("../fonts/instrument-sans-latin-600-normal.woff2") format("woff2");
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "PX Display";
	src: url("../fonts/instrument-sans-latin-500-normal.woff2") format("woff2");
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Inter";
	src: url("../fonts/inter-latin-wght-normal.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Inter";
	src: url("../fonts/inter-latin-ext-wght-normal.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
	/* Colour (spec section 6) */
	--px-green: #0F3D2E;
	--px-green-deep: #06261A;
	--px-ivory: #F7F3EC;
	--px-charcoal: #1A1A1A;
	--px-stone: #6B6B63;
	--px-sand: #C9B98B;
	--px-white: #FFFFFF;
	--px-error: #B03A2E;
	--px-success: #1E6B4F;

	/* Derived tints (alpha of brand colours, not new hues) */
	--px-line: rgb(26 26 26 / 0.12);
	--px-line-strong: rgb(26 26 26 / 0.22);
	--px-line-dark: rgb(247 243 236 / 0.14);
	--px-ivory-dim: rgb(247 243 236 / 0.72);
	--px-ivory-ghost: rgb(247 243 236 / 0.22);
	--px-charcoal-ghost: rgb(26 26 26 / 0.2);
	--px-lit-dark: rgb(247 243 236 / 0.5);
	--px-lit-light: rgb(26 26 26 / 0.64);

	/* Type */
	--px-font-display: "PX Display", "Inter", system-ui, sans-serif;
	--px-font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
	--fs-display-xl: 40px;
	--fs-display-l: 32px;
	--fs-display-m: 26px;
	--fs-heading-s: 20px;
	--fs-body-l: 18px;
	--fs-body: 16px;
	--fs-body-s: 14px;
	--fs-eyebrow: 12px;

	/* Space: 4px base */
	--s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px; --s-6: 32px;
	--s-7: 48px; --s-8: 64px; --s-9: 96px; --s-10: 128px; --s-11: 160px;
	--section-y: 56px;
	--gutter: 20px;
	--container: 1280px;
	--radius: 14px;
	--radius-l: 24px;

	/* Motion */
	--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
	--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
	--t-hover: 150ms;
	--t-reveal: 700ms;

	--header-h: 72px;
}
@media (min-width: 640px) {
	:root { --section-y: 80px; --gutter: 40px; }
}
@media (min-width: 1024px) {
	:root {
		--fs-display-xl: 72px;
		--fs-display-l: 48px;
		--fs-display-m: 36px;
		--fs-heading-s: 24px;
		--fs-body-l: 20px;
		--fs-body: 17px;
		--fs-eyebrow: 13px;
		--section-y: 128px;
		--gutter: 80px;
		--header-h: 84px;
	}
}

/* ------------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 64px); }
body {
	margin: 0;
	background: var(--px-ivory);
	color: var(--px-charcoal);
	font-family: var(--px-font-body);
	font-size: var(--fs-body);
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
p { margin: 0 0 1em; }
h1, h2, h3, h4 { margin: 0; font-family: var(--px-font-display); font-weight: 600; }
ul, ol { margin: 0; padding: 0; }
address { font-style: normal; }
button, input, select, textarea { font: inherit; color: inherit; }
::selection { background: var(--px-green); color: var(--px-ivory); }

:focus { outline: none; }
:focus-visible { outline: 2px solid var(--px-sand); outline-offset: 2px; border-radius: 4px; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.px-skip {
	position: fixed; top: 12px; left: 12px; z-index: 1000;
	background: var(--px-green-deep); color: var(--px-ivory);
	padding: 12px 18px; border-radius: 999px; transform: translateY(-200%);
	transition: transform var(--t-hover);
}
.px-skip:focus { transform: none; }

.px-container { width: 100%; max-width: calc(var(--container) + var(--gutter) * 2); margin: 0 auto; padding: 0 var(--gutter); }
.px-measure { max-width: calc(68ch + var(--gutter) * 2); margin-left: 0; }

/* ------------------------------------------------------------ typography */
.px-h1 {
	font-size: var(--fs-display-xl); line-height: 1.05; letter-spacing: -0.02em; font-weight: 600;
	text-wrap: balance; max-width: 16ch;
}
.px-h1--page { max-width: 20ch; }
.px-h1--article { max-width: 24ch; font-size: clamp(32px, 4.4vw, 56px); line-height: 1.08; }
.px-h2 { font-size: var(--fs-display-l); line-height: 1.1; letter-spacing: -0.015em; text-wrap: balance; max-width: 22ch; }
.px-h3 { font-size: var(--fs-display-m); line-height: 1.15; letter-spacing: -0.01em; }
.px-eyebrow {
	font-family: var(--px-font-body); font-size: var(--fs-eyebrow); font-weight: 600; line-height: 1.2;
	letter-spacing: 0.12em; text-transform: uppercase; margin: 0 0 var(--s-5); color: var(--px-green);
	display: inline-flex; align-items: center; gap: 12px;
}
.px-eyebrow::before { content: ""; width: 24px; height: 1px; background: currentColor; opacity: 0.7; }
.px-lead { font-size: var(--fs-body-l); line-height: 1.6; max-width: 60ch; margin-top: var(--s-6); }
.px-body { max-width: 68ch; }
.px-body--l { font-size: var(--fs-body-l); line-height: 1.6; }
.px-note { font-size: var(--fs-body-s); line-height: 1.5; color: var(--px-stone); max-width: 68ch; margin-top: var(--s-6); padding-top: var(--s-5); border-top: 1px solid var(--px-line); }
.px-meta { font-size: var(--fs-body-s); color: var(--px-stone); margin-top: var(--s-5); }

/* ---------------------------------------------------------------- themes */
.px-theme-light { background: var(--px-ivory); color: var(--px-charcoal); }
.px-theme-white { background: var(--px-white); color: var(--px-charcoal); }
.px-theme-dark { background: var(--px-green-deep); color: var(--px-ivory); }
.px-theme-dark .px-eyebrow { color: var(--px-sand); }
.px-theme-dark .px-note, .px-theme-dark .px-meta { color: var(--px-ivory-dim); border-color: var(--px-line-dark); }
.px-theme-dark a:not(.px-btn) { color: var(--px-ivory); }

.px-section { padding: var(--section-y) 0; position: relative; }

/* Section edges: where green meets ivory (either way), the next section rises over the previous one
   as a panel with large rounded top corners, like stacked cards. No fades. */
:root { --panel-r: 28px; }
@media (min-width: 1024px) { :root { --panel-r: 48px; } }
.px-theme-dark + .px-theme-light, .px-theme-dark + .px-subnav + .px-theme-light,
.px-theme-dark + .px-theme-white, .px-theme-dark + .px-subnav + .px-theme-white,
.px-theme-light + .px-theme-dark, .px-theme-light + .px-subnav + .px-theme-dark,
.px-theme-white + .px-theme-dark, .px-theme-white + .px-subnav + .px-theme-dark,
.px-article + .px-theme-dark,
.px-main:has(> .px-theme-light:last-child) + .px-footer,
.px-main:has(> .px-theme-white:last-child) + .px-footer {
	position: relative; z-index: 2;
	margin-top: calc(var(--panel-r) * -1);
	border-radius: var(--panel-r) var(--panel-r) 0 0;
	padding-top: calc(var(--section-y) + var(--panel-r) * 0.5);
}
/* The pinned approach section manages its own top spacing. */
.px-theme-light + .px-approach { padding-top: 0; }
/* Leave room at the bottom of dark heroes for the panel that rises over them. */
.px-hero.px-hero--home, .px-hero.px-hero--service { padding-bottom: calc(var(--s-8) + var(--panel-r)); }
@media (min-width: 1024px) {
	.px-hero.px-hero--home, .px-hero.px-hero--service { padding-bottom: calc(var(--s-9) + var(--panel-r)); }
}
.px-hero .px-hero__scroll { bottom: calc(24px + var(--panel-r)); }

/* Ivory after ivory: no colour change, a hairline across the content width and a tighter top gap. */
.px-theme-light + .px-theme-light,
.px-theme-light + .px-subnav + .px-theme-light { padding-top: calc(var(--section-y) * 0.75); }
.px-theme-light + .px-theme-light::before,
.px-theme-light + .px-subnav + .px-theme-light::before {
	content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); height: 1px;
	width: min(var(--container), calc(100% - var(--gutter) * 2)); background: var(--px-line);
}
/* Dark note directly under the dark careers form: one continuous block. */
.px-formsection + .px-noteband.px-theme-dark { padding-top: 0; }

/* --------------------------------------------------------------- buttons */
.px-btn {
	--btn-bg: var(--px-green); --btn-fg: var(--px-ivory); --btn-icon-bg: var(--px-ivory); --btn-icon-fg: var(--px-green);
	display: inline-flex; align-items: center; gap: 12px;
	min-height: 52px; padding: 6px 6px 6px 24px; border-radius: 999px;
	background: var(--btn-bg); color: var(--btn-fg); border: 1px solid var(--btn-bg);
	font-family: var(--px-font-body); font-size: 15px; font-weight: 600; line-height: 1.2; letter-spacing: 0;
	text-decoration: none; cursor: pointer; white-space: nowrap;
	transition: background-color var(--t-hover) ease, color var(--t-hover) ease, border-color var(--t-hover) ease, transform var(--t-hover) ease;
}
.px-btn__icon {
	display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%;
	background: var(--btn-icon-bg); color: var(--btn-icon-fg); overflow: hidden; flex: none;
	transition: transform 300ms var(--ease-out);
}
.px-btn__icon .px-arrow, .px-btn__icon svg { transition: transform 300ms var(--ease-out); }
.px-btn:hover .px-btn__icon svg { transform: translateX(3px); }
.px-btn:hover { --btn-bg: var(--px-green-deep); }
.px-btn:active { transform: scale(0.98); }
.px-btn[disabled], .px-btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }
.px-btn--secondary { --btn-bg: transparent; --btn-fg: var(--px-green); --btn-icon-bg: var(--px-green); --btn-icon-fg: var(--px-ivory); border-color: var(--px-green); }
.px-btn--secondary:hover { --btn-bg: var(--px-green); --btn-fg: var(--px-ivory); --btn-icon-bg: var(--px-ivory); --btn-icon-fg: var(--px-green); }
.px-theme-dark .px-btn--primary { --btn-bg: var(--px-ivory); --btn-fg: var(--px-green-deep); --btn-icon-bg: var(--px-green); --btn-icon-fg: var(--px-ivory); }
.px-theme-dark .px-btn--primary:hover { --btn-bg: var(--px-white); }
.px-theme-dark .px-btn--secondary { --btn-fg: var(--px-ivory); --btn-icon-bg: var(--px-ivory); --btn-icon-fg: var(--px-green-deep); border-color: var(--px-ivory-ghost); }
.px-theme-dark .px-btn--secondary:hover { --btn-bg: var(--px-ivory); --btn-fg: var(--px-green-deep); --btn-icon-bg: var(--px-green-deep); --btn-icon-fg: var(--px-ivory); border-color: var(--px-ivory); }
.px-btn--tertiary {
	background: none; border: 0; padding: 4px 0; min-height: 44px; color: var(--px-green); gap: 10px;
	position: relative; border-radius: 0;
}
.px-btn--tertiary span { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size 300ms var(--ease-out); padding-bottom: 2px; }
.px-btn--tertiary:hover span { background-size: 100% 1px; }
.px-btn--tertiary .px-arrow { transition: transform 300ms var(--ease-out); }
.px-btn--tertiary:hover .px-arrow { transform: translateX(4px); }
.px-theme-dark .px-btn--tertiary { color: var(--px-ivory); }
.px-btn--choice { padding: 0 22px; min-height: 44px; --btn-bg: transparent; --btn-fg: var(--px-ivory); border-color: var(--px-ivory); }
.px-btn--choice:hover { --btn-bg: var(--px-ivory); --btn-fg: var(--px-green-deep); }
.px-actions { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin-top: var(--s-6); }
.px-actions--center { justify-content: center; }

/* ---------------------------------------------------------------- header */
.px-header {
	position: fixed; inset: 0 0 auto 0; z-index: 100; padding: 12px var(--s-3) 0;
	pointer-events: none; transition: transform 400ms var(--ease-out);
}
.px-header__bar {
	pointer-events: auto;
	max-width: calc(var(--container) + 48px); margin: 0 auto;
	display: flex; align-items: center; gap: 24px;
	height: calc(var(--header-h) - 12px); padding: 0 8px 0 20px; border-radius: 999px;
	background: transparent; border: 1px solid transparent;
	color: var(--px-charcoal);
	transition: background-color 300ms ease, border-color 300ms ease, color 300ms ease, box-shadow 300ms ease;
}
.px-hero-dark .px-header:not(.is-solid) .px-header__bar { color: var(--px-ivory); }
.px-header.is-solid .px-header__bar {
	background: var(--px-ivory); border-color: var(--px-line);
	box-shadow: 0 10px 40px -20px rgb(6 38 26 / 0.35);
	color: var(--px-charcoal);
}
.px-header.is-hidden { transform: translateY(-120%); }
/* Clear the WordPress admin bar when logged in. */
.admin-bar .px-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .px-header { top: 46px; } }
.px-header.is-menu-open .px-header__bar { background: var(--px-green-deep); color: var(--px-ivory); border-color: transparent; box-shadow: none; }

.px-logo { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: inherit; flex: none; }
/* Two logo files: light shows over the dark hero, dark shows once the header turns ivory. */
.px-logo__img--light { display: none; }
.px-hero-dark .px-header:not(.is-solid) .px-logo__img--dark,
.px-header.is-menu-open .px-logo__img--dark { display: none; }
.px-hero-dark .px-header:not(.is-solid) .px-logo__img--light,
.px-header.is-menu-open .px-logo__img--light { display: block; }
.px-logo__img { height: 38px; width: auto; max-width: 180px; object-fit: contain; }
@media (min-width: 1024px) { .px-logo__img { height: 42px; } }
.px-logo__bg { fill: var(--px-green); }
.px-logo__p { stroke: var(--px-ivory); }
.px-logo__x { stroke: var(--px-sand); }
.px-logo__word { font-family: var(--px-font-display); font-weight: 600; font-size: 22px; letter-spacing: -0.02em; }
.px-hero-dark .px-header:not(.is-solid) .px-logo__bg,
.px-header.is-menu-open .px-logo__bg,
.px-footer .px-logo__bg { fill: var(--px-ivory); }
.px-hero-dark .px-header:not(.is-solid) .px-logo__p,
.px-header.is-menu-open .px-logo__p,
.px-footer .px-logo__p { stroke: var(--px-green-deep); }

.px-nav { display: none; margin-left: auto; }
.px-nav__list { list-style: none; display: flex; gap: 4px; }
.px-nav__item { position: relative; }
.px-nav__link {
	display: inline-flex; align-items: center; gap: 6px; padding: 10px 14px; border-radius: 999px;
	text-decoration: none; font-size: 15px; font-weight: 500; transition: background-color var(--t-hover);
}
.px-nav__link:hover { background: rgb(26 26 26 / 0.06); }
.px-hero-dark .px-header:not(.is-solid) .px-nav__link:hover { background: rgb(247 243 236 / 0.1); }
.px-nav__link[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--px-sand); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.px-caret { transition: transform 200ms var(--ease-out); }
.px-nav__item--has-sub.is-open .px-caret { transform: rotate(180deg); }
.px-dropdown {
	position: absolute; top: calc(100% + 12px); right: -12px; left: auto; width: 400px;
	background: var(--px-white); color: var(--px-charcoal); border-radius: var(--radius-l); border: 1px solid var(--px-line);
	box-shadow: 0 30px 60px -30px rgb(6 38 26 / 0.45); padding: 10px;
	opacity: 0; visibility: hidden; transform: translateY(-6px);
	transition: opacity 200ms ease, transform 300ms var(--ease-out), visibility 0s linear 200ms;
}
.px-dropdown::before { content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
.px-nav__item--has-sub.is-open .px-dropdown { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.px-dropdown ul { list-style: none; }
.px-dropdown a {
	display: block; padding: 12px 16px; border-radius: 12px;
	text-decoration: none; font-size: 15px; font-weight: 500; line-height: 1.35; transition: background-color var(--t-hover);
}
.px-dropdown a:hover, .px-dropdown a:focus-visible { background: var(--px-ivory); }
.px-dropdown__n { font-family: var(--px-font-display); color: var(--px-stone); font-size: 13px; }

.px-header__cta { margin-left: auto; min-height: 44px; padding: 4px 4px 4px 16px; font-size: 14px; }
.px-header__cta .px-btn__icon { width: 36px; height: 36px; }
.px-header__cta-full { display: none; }
.px-hero-dark .px-header:not(.is-solid) .px-header__cta,
.px-header.is-menu-open .px-header__cta { --btn-bg: var(--px-ivory); --btn-fg: var(--px-green-deep); --btn-icon-bg: var(--px-green); --btn-icon-fg: var(--px-ivory); }

.px-burger {
	width: 44px; height: 44px; border-radius: 50%; border: 1px solid currentColor; background: transparent;
	display: inline-grid; place-content: center; gap: 6px; cursor: pointer; flex: none; opacity: 0.9;
}
.px-burger__l { display: block; width: 18px; height: 1.5px; background: currentColor; transition: transform 300ms var(--ease-out); }
.px-burger[aria-expanded="true"] .px-burger__l:first-of-type { transform: translateY(3.75px) rotate(45deg); }
.px-burger[aria-expanded="true"] .px-burger__l:last-of-type { transform: translateY(-3.75px) rotate(-45deg); }

.px-mobile {
	position: fixed; inset: 0; z-index: 90; background: var(--px-green-deep); color: var(--px-ivory);
	padding: calc(var(--header-h) + 32px) var(--gutter) 32px; overflow-y: auto;
	display: flex; flex-direction: column;
}
.px-mobile[hidden] { display: none; }
.px-mobile nav { display: flex; flex-direction: column; flex: 1; }
.px-mobile__list { list-style: none; }
.px-mobile__list > li { border-bottom: 1px solid var(--px-line-dark); }
.px-mobile__list a { display: block; padding: 16px 0; font-family: var(--px-font-display); font-size: 28px; font-weight: 600; letter-spacing: -0.01em; text-decoration: none; }
.px-mobile__row { display: flex; align-items: center; justify-content: space-between; }
.px-mobile__row button { width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--px-line-dark); background: none; display: grid; place-items: center; cursor: pointer; }
.px-mobile__row button[aria-expanded="true"] svg { transform: rotate(180deg); }
.px-mobile__sub { list-style: none; padding-bottom: 12px; }
.px-mobile__sub a { font-family: var(--px-font-body); font-size: 17px; font-weight: 500; padding: 10px 0 10px 16px; border-left: 1px solid var(--px-sand); }
.px-mobile__foot { margin-top: auto; padding-top: 32px; }
.px-mobile__foot p { margin-top: 20px; color: var(--px-ivory-dim); }
.px-mobile__list > li { opacity: 0; transform: translateY(12px); }
.px-mobile.is-open .px-mobile__list > li { opacity: 1; transform: none; transition: opacity 400ms ease, transform 500ms var(--ease-out); }
.px-mobile.is-open .px-mobile__list > li:nth-child(2) { transition-delay: 40ms; }
.px-mobile.is-open .px-mobile__list > li:nth-child(3) { transition-delay: 80ms; }
.px-mobile.is-open .px-mobile__list > li:nth-child(4) { transition-delay: 120ms; }
.px-mobile.is-open .px-mobile__list > li:nth-child(5) { transition-delay: 160ms; }
body.is-locked { overflow: hidden; }

@media (min-width: 1024px) {
	.px-nav { display: block; }
	.px-header__cta { margin-left: 8px; }
	.px-header__cta-full { display: inline; }
	.px-header__cta-short { display: none; }
	.px-burger { display: none; }
	.px-mobile { display: none !important; }
}

/* ---------------------------------------------------------------- hero */
.px-hero { position: relative; overflow: hidden; isolation: isolate; }
.px-hero__inner { position: relative; z-index: 2; }
.px-hero--home {
	min-height: 80vh; min-height: 80svh; display: flex; flex-direction: column; justify-content: flex-end;
	padding: calc(var(--header-h) + 64px) 0 var(--s-8);
}
@media (min-width: 1024px) {
	.px-hero--home { min-height: 100vh; min-height: 100svh; padding-bottom: var(--s-9); }
}
.px-hero--home .px-lead { color: var(--px-ivory-dim); max-width: 56ch; }
.px-hero__ctas { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin-top: var(--s-7); }
@media (min-width: 640px) { .px-hero__ctas { flex-direction: row; align-items: center; } }

.px-hero__art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.px-hero__grid {
	position: absolute; inset: 0;
	background-image:
		linear-gradient(to right, var(--px-line-dark) 1px, transparent 1px);
	background-size: calc((min(100vw, var(--container) + var(--gutter) * 2) - var(--gutter) * 2) / 6) 100%;
	background-position: center top;
	-webkit-mask-image: linear-gradient(to bottom, transparent, black 30%, black 70%, transparent);
	mask-image: linear-gradient(to bottom, transparent, black 30%, black 70%, transparent);
	opacity: 0.6;
}
.px-hero__glow { display: none; }
.px-hero__x {
	position: absolute; right: -18vw; top: 50%; width: min(110vw, 900px); height: auto;
	transform: translateY(-50%); opacity: 0.4;
}
@media (min-width: 1024px) { .px-hero__x { right: -6vw; width: min(62vw, 980px); opacity: 0.9; } }
.px-hero__x { overflow: visible; }
.px-hero__x path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.px-x-stem, .px-x-bowl { stroke: var(--px-ivory-ghost); stroke-width: 1.5; }
.js .px-hero__x path { stroke-dasharray: var(--len, 2000); stroke-dashoffset: var(--len, 2000); }
.is-ready .px-hero__x path { animation: px-draw 2200ms var(--ease-in-out) forwards; }
.is-ready .px-hero__x .px-x-bowl { animation-delay: 300ms; }
.px-x-logo { filter: brightness(0) invert(1); opacity: 0.07; }
.js .px-x-logo { opacity: 0; }
.is-ready .px-x-logo { opacity: 0.07; transition: opacity 2000ms ease 200ms; }


/* home hero statement: uppercase per spec section 4 rule 7 */
.px-hero--home .px-h1 { text-transform: uppercase; letter-spacing: -0.015em; line-height: 0.98; max-width: 14ch; }
@media (min-width: 1024px) { .px-hero--home .px-h1 { font-size: clamp(56px, 5.6vw, 88px); max-width: 15ch; } }

/* ------------------------------------------------------------- intro */
.px-intro { display: none; }
.px-intro-on .px-intro {
	display: block; position: fixed; inset: 0; z-index: 1000; background: var(--px-green-deep); color: var(--px-ivory);
	overflow: hidden; cursor: pointer; clip-path: inset(0 0 0 0);
	animation: px-intro-failsafe 0s linear 6s forwards;
}
@keyframes px-intro-failsafe { to { visibility: hidden; opacity: 0; } }
.px-intro.is-leaving { clip-path: inset(0 0 100% 0); transition: clip-path 900ms cubic-bezier(0.76, 0, 0.24, 1); }
.px-intro.is-leaving .px-intro__center { transform: translateY(-8vh) scale(0.96); opacity: 0; transition: transform 900ms var(--ease-in-out), opacity 600ms ease; }
.px-intro__center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px; }
.px-intro__mark { width: 88px; height: 88px; overflow: visible; }
.px-intro__logo { width: auto; height: auto; max-height: 120px; max-width: min(70vw, 360px); opacity: 0; transform: scale(0.94); animation: px-logo-in 900ms var(--ease-out) 200ms forwards; }
@keyframes px-logo-in { to { opacity: 1; transform: none; } }
.px-intro__p { stroke: var(--px-ivory); stroke-dasharray: 60; stroke-dashoffset: 60; animation: px-draw 900ms var(--ease-in-out) 150ms forwards; }
.px-intro__x { stroke: var(--px-sand); stroke-dasharray: 30; stroke-dashoffset: 30; animation: px-draw 260ms ease-out 980ms forwards; filter: drop-shadow(0 0 3px var(--px-sand)); }
.px-intro__word { margin: 0; display: flex; gap: 0.32em; font-family: var(--px-font-display); font-weight: 600; font-size: clamp(28px, 5vw, 44px); letter-spacing: 0.3em; padding-left: 0.3em; overflow: hidden; }
.px-intro__word span { display: inline-block; transform: translateY(110%); animation: px-rise 800ms var(--ease-out) forwards; }
.px-intro__word span:nth-child(1) { animation-delay: 1150ms; }
.px-intro__word span:nth-child(2) { animation-delay: 1210ms; }
.px-intro__word span:nth-child(3) { animation-delay: 1270ms; }
.px-intro__word span:nth-child(4) { animation-delay: 1330ms; }
.px-intro__word span:nth-child(5) { animation-delay: 1390ms; }
.px-intro__word span:nth-child(6) { animation-delay: 1450ms; }
@keyframes px-rise { to { transform: none; } }
.px-intro__tag { margin: 0; padding: 0 24px; text-align: center; font-size: 10px; font-weight: 600; letter-spacing: 0.24em; text-transform: uppercase; color: var(--px-sand); opacity: 0; animation: px-fade 900ms ease 1750ms forwards; }
@keyframes px-fade { to { opacity: 1; } }
@media (min-width: 640px) { .px-intro__tag { font-size: 12px; letter-spacing: 0.32em; } }
.px-intro__hint { position: absolute; left: 0; right: 0; bottom: 28px; margin: 0; text-align: center; font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--px-ivory-dim); opacity: 0; animation: px-fade 600ms ease 900ms forwards; }
/* Hold hero motion until the intro hands over. */
.px-intro-on .px-hero [data-reveal] { opacity: 0 !important; transform: translateY(12px) !important; }
.px-intro-on .px-hero [data-split] .px-w > span { transform: translateY(105%) !important; }
.px-intro-on .px-header { opacity: 0; }
.px-header { transition: transform 400ms var(--ease-out), opacity 700ms ease 200ms; }
.px-intro-on body { overflow: hidden; }
@keyframes px-draw { to { stroke-dashoffset: 0; } }

.px-hero__scroll { position: absolute; left: 50%; bottom: 24px; z-index: 2; width: 44px; height: 56px; display: none; }
@media (min-width: 1024px) { .px-hero__scroll { display: block; } }
.px-hero__scroll-line { position: absolute; left: 50%; top: 6px; width: 1px; height: 44px; background: var(--px-ivory-ghost); overflow: hidden; }
.px-hero__scroll-line::after { content: ""; position: absolute; inset: 0; background: var(--px-sand); transform: translateY(-100%); animation: px-scrollcue 2200ms var(--ease-in-out) infinite 2600ms; }
@keyframes px-scrollcue { 0% { transform: translateY(-100%); } 60%, 100% { transform: translateY(100%); } }

.px-hero--service { padding: calc(var(--header-h) + 72px) 0 var(--s-8); }
@media (min-width: 1024px) { .px-hero--service { padding: calc(var(--header-h) + 120px) 0 var(--s-9); min-height: 72vh; display: flex; align-items: flex-end; } }
.px-hero--service .px-lead { color: var(--px-ivory-dim); }
.px-hero--service .px-h1 { max-width: 18ch; }
.px-hero__art--lines .px-hero__grid { opacity: 0.45; }
.px-hero__rule { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--px-sand); transform-origin: left; transform: scaleX(0); }
.is-ready .px-hero__rule { transform: scaleX(1); transition: transform 1600ms var(--ease-in-out) 300ms; }
.px-hero--light { padding: calc(var(--header-h) + 72px) 0 var(--s-8); max-height: none; }
@media (min-width: 1024px) { .px-hero--light { padding: calc(var(--header-h) + 112px) 0 var(--s-9); min-height: 0; } }
.px-hero--light .px-lead { color: var(--px-stone); }

/* breadcrumbs */
.px-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; font-size: var(--fs-body-s); margin-bottom: var(--s-6); }
.px-crumbs li { display: inline-flex; align-items: center; gap: 8px; }
.px-crumbs li + li::before { content: "/"; opacity: 0.45; }
.px-crumbs a { text-decoration: none; opacity: 0.75; }
.px-crumbs a:hover { opacity: 1; text-decoration: underline; }
.px-theme-light .px-crumbs { color: var(--px-stone); }

/* --------------------------------------------------------------- subnav */
.px-subnav {
	position: sticky; top: calc(var(--header-h) + 4px); z-index: 50; padding: 0 var(--s-3);
	margin-top: -28px; height: 0; pointer-events: none; display: none;
}
@media (min-width: 1024px) { .px-subnav { display: block; } }
.px-subnav__inner {
	pointer-events: auto; width: max-content; max-width: calc(100% - 16px); margin: 0 auto;
	background: rgb(255 255 255 / 0.86); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	border: 1px solid var(--px-line); border-radius: 999px; padding: 6px; overflow-x: auto;
	box-shadow: 0 10px 30px -18px rgb(6 38 26 / 0.4);
	opacity: 0; transform: translateY(-8px); transition: opacity 300ms ease, transform 400ms var(--ease-out);
}
.px-subnav.is-visible .px-subnav__inner { opacity: 1; transform: none; }
.px-subnav ul { list-style: none; display: flex; gap: 2px; }
.px-subnav a {
	display: block; padding: 8px 14px; border-radius: 999px; font-size: 13px; font-weight: 500; white-space: nowrap;
	text-decoration: none; color: var(--px-stone); transition: background-color var(--t-hover), color var(--t-hover);
}
.px-subnav a:hover { color: var(--px-charcoal); }
.px-subnav a.is-active { background: var(--px-green); color: var(--px-ivory); }

/* ---------------------------------------------------------- generic block */
.px-head { margin-bottom: var(--s-7); }
.px-split { display: grid; gap: var(--s-6); }
.px-split .px-head { margin-bottom: 0; }
@media (min-width: 1024px) {
	.px-split { grid-template-columns: 5fr 7fr; gap: var(--s-9); align-items: start; }
	.px-split .px-head { position: sticky; top: calc(var(--header-h) + 72px); }
	.px-split .px-content > :first-child { margin-top: 0; }
}
.px-content > .px-body:last-child { margin-bottom: 0; }
.px-after { margin-top: var(--s-7); max-width: 68ch; }
.px-after--narrow { margin-left: auto; margin-right: auto; text-align: center; }
.px-theme-dark .px-body { color: var(--px-ivory); }
.px-theme-dark .px-after .px-body, .px-theme-dark .px-content .px-body { color: var(--px-ivory-dim); }
.px-theme-dark .px-body strong { color: var(--px-ivory); }

/* lists */
.px-list { list-style: none; margin: var(--s-5) 0; }
.px-list li { position: relative; padding: 14px 0 14px 32px; border-top: 1px solid var(--px-line); max-width: 68ch; }
.px-list li:last-child { border-bottom: 1px solid var(--px-line); }
.px-theme-dark .px-list li { border-color: var(--px-line-dark); }
.px-list--dash li::before { content: ""; position: absolute; left: 0; top: 27px; width: 16px; height: 1px; background: var(--px-green); }
.px-theme-dark .px-list--dash li::before { background: var(--px-sand); }
.px-list--checks li { padding-left: 40px; }
.px-check { position: absolute; left: 0; top: 13px; width: 26px; height: 26px; border-radius: 50%; background: var(--px-green); color: var(--px-ivory); display: grid; place-items: center; }
.px-check svg { width: 14px; height: 14px; }
.px-check path { stroke-dasharray: 20; stroke-dashoffset: 20; transition: stroke-dashoffset 500ms var(--ease-out) 250ms; }
.is-in .px-check path, .no-motion .px-check path { stroke-dashoffset: 0; }
.px-theme-dark .px-check { background: var(--px-sand); color: var(--px-green-deep); }
@media (min-width: 640px) {
	.px-list--cols2 { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--s-6); }
	.px-list--cols2 li:nth-last-child(2) { border-bottom: 1px solid var(--px-line); }
	.px-theme-dark .px-list--cols2 li:nth-last-child(2) { border-color: var(--px-line-dark); }
}
.px-list--chips { display: flex; flex-wrap: wrap; gap: 12px; }
.px-list--chips li {
	border: 1px solid var(--px-line-dark); border-radius: 999px; padding: 12px 22px;
	font-family: var(--px-font-display); font-size: var(--fs-heading-s); font-weight: 500; line-height: 1.2;
}
.px-list--chips li:last-child { border-bottom: 1px solid var(--px-line-dark); }
.px-list--chips li::before { display: none; }
.px-theme-light .px-list--chips li { border-color: var(--px-line-strong); }

/* items */
.px-items { display: grid; gap: var(--s-6); }
.px-item__title { font-size: var(--fs-heading-s); line-height: 1.25; letter-spacing: 0; margin-bottom: 10px; }
.px-item__text { margin: 0; max-width: 60ch; color: var(--px-stone); }
.px-theme-dark .px-item__text { color: var(--px-ivory-dim); }
.px-items--rules { gap: 0; }
.px-items--rules .px-item { padding: var(--s-5) 0; border-top: 1px solid var(--px-sand); }
.px-items--rules .px-item:last-child { padding-bottom: 0; }
.px-items--grid2, .px-items--grid3 { gap: 0; border-top: 1px solid var(--px-line); }
.px-theme-dark .px-items--grid2, .px-theme-dark .px-items--grid3 { border-color: var(--px-line-dark); }
.px-items--grid2 .px-item, .px-items--grid3 .px-item { padding: var(--s-6) 0; border-bottom: 1px solid var(--px-line); }
.px-theme-dark .px-items--grid2 .px-item, .px-theme-dark .px-items--grid3 .px-item { border-color: var(--px-line-dark); }
@media (min-width: 640px) {
	.px-items--grid2 { grid-template-columns: 1fr 1fr; }
	.px-items--grid2 .px-item:nth-child(odd) { padding-right: var(--s-6); border-right: 1px solid var(--px-line); }
	.px-items--grid2 .px-item:nth-child(even) { padding-left: var(--s-6); }
	.px-theme-dark .px-items--grid2 .px-item:nth-child(odd) { border-color: var(--px-line-dark); }
}
@media (min-width: 1024px) {
	.px-items--grid2 .px-item { padding: var(--s-7) var(--s-7) var(--s-7) 0; }
	.px-items--grid2 .px-item:nth-child(even) { padding: var(--s-7) 0 var(--s-7) var(--s-7); }
	.px-items--grid3 { grid-template-columns: repeat(3, 1fr); }
	.px-items--grid3 .px-item { padding: var(--s-7) var(--s-6); border-right: 1px solid var(--px-line); }
	.px-items--grid3 .px-item:nth-child(3n+1) { padding-left: 0; }
	.px-items--grid3 .px-item:nth-child(3n) { border-right: 0; padding-right: 0; }
	.px-theme-dark .px-items--grid3 .px-item { border-color: var(--px-line-dark); }
}
.px-items--numbered { gap: 0; counter-reset: n; }
.px-items--numbered .px-item {
	display: grid; grid-template-columns: 56px 1fr; column-gap: var(--s-5);
	padding: var(--s-6) 0; border-top: 1px solid var(--px-line);
}
.px-items--numbered .px-item:last-child { border-bottom: 1px solid var(--px-line); }
.px-theme-dark .px-items--numbered .px-item { border-color: var(--px-line-dark); }
.px-items--numbered .px-item__num, .px-items--scale .px-item__num {
	grid-row: span 2; font-family: var(--px-font-display); font-size: var(--fs-display-m); line-height: 1; color: var(--px-sand); letter-spacing: -0.02em;
}
@media (min-width: 1024px) {
	.px-items--numbered .px-item { grid-template-columns: 120px minmax(0, 4fr) minmax(0, 6fr); column-gap: var(--s-7); padding: var(--s-7) 0; }
	.px-items--numbered .px-item__num { grid-row: auto; font-size: var(--fs-display-l); }
	.px-items--numbered .px-item__title { margin: 0; font-size: var(--fs-display-m); line-height: 1.15; }
}
.px-items--scale { counter-reset: none; }
.px-items--scale .px-item { position: relative; padding-top: 28px; }
.px-items--scale .px-item::before {
	content: ""; position: absolute; top: 0; left: 0; height: 4px; border-radius: 4px; background: var(--px-line);
	width: 100%;
}
.px-items--scale .px-item::after {
	content: ""; position: absolute; top: 0; left: 0; height: 4px; border-radius: 4px; background: var(--px-green);
	width: 0; transition: width 1000ms var(--ease-out) 200ms;
}
.px-items--scale .px-item:nth-child(1).is-in::after { width: 33%; }
.px-items--scale .px-item:nth-child(2).is-in::after { width: 66%; }
.px-items--scale .px-item:nth-child(3).is-in::after { width: 100%; }
.no-motion .px-items--scale .px-item:nth-child(1)::after { width: 33%; }
.no-motion .px-items--scale .px-item:nth-child(2)::after { width: 66%; }
.no-motion .px-items--scale .px-item:nth-child(3)::after { width: 100%; }
.px-items--scale .px-item__num { display: block; font-size: 14px; color: var(--px-stone); margin-bottom: 8px; font-family: var(--px-font-body); letter-spacing: 0.12em; }
@media (min-width: 1024px) { .px-items--scale { grid-template-columns: repeat(3, 1fr); gap: var(--s-7); } }

/* --------------------------------------------------- statement (scroll-lit) */
.px-statement__inner { display: grid; gap: var(--s-6); }
@media (min-width: 1024px) {
	.px-statement__inner { grid-template-columns: 4fr 8fr; gap: var(--s-9); align-items: start; }
	.px-statement .px-head { position: sticky; top: calc(var(--header-h) + 72px); margin: 0; }
}
.px-statement__p {
	font-family: var(--px-font-display); font-weight: 500; font-size: clamp(22px, 2.6vw, 34px); line-height: 1.3; letter-spacing: -0.01em;
	max-width: 30ch; margin-bottom: 1em;
}
@media (min-width: 1024px) { .px-statement__p { max-width: 34ch; } }
.px-statement__p:last-child { margin-bottom: 0; }
.px-lit-word { transition: color 250ms linear; }
.px-theme-dark [data-lit].is-split .px-lit-word { color: var(--px-lit-dark); }
.px-theme-dark [data-lit].is-split .px-lit-word.on { color: var(--px-ivory); }
.px-theme-light [data-lit].is-split .px-lit-word { color: var(--px-lit-light); }
.px-theme-light [data-lit].is-split .px-lit-word.on { color: var(--px-charcoal); }

/* ------------------------------------------------------- home services */
.px-svclist__list { list-style: none; border-top: 1px solid var(--px-line-strong); }
.px-svclist__row { border-bottom: 1px solid var(--px-line-strong); }
.px-svclist__link {
	display: grid; grid-template-columns: 48px 1fr; gap: var(--s-4); align-items: start;
	padding: var(--s-6) 0; text-decoration: none; position: relative; isolation: isolate;
}
.px-svclist__link::before {
	content: ""; position: absolute; inset: 0 calc(var(--gutter) * -0.5); z-index: -1; border-radius: var(--radius);
	background: var(--px-white); opacity: 0; transform: scaleY(0.92); transition: opacity 300ms ease, transform 400ms var(--ease-out);
}
.px-svclist__link:hover::before, .px-svclist__link:focus-visible::before { opacity: 1; transform: none; }
.px-svclist__num { font-family: var(--px-font-display); font-size: var(--fs-display-m); line-height: 1; color: var(--px-green); letter-spacing: -0.02em; }
.px-svclist__main { display: grid; gap: 8px; }
.px-svclist__title { font-family: var(--px-font-display); font-weight: 600; font-size: var(--fs-display-m); line-height: 1.15; letter-spacing: -0.01em; }
.px-svclist__line { color: var(--px-stone); max-width: 60ch; }
.px-svclist__more { display: inline-flex; align-items: center; gap: 8px; color: var(--px-green); font-weight: 600; font-size: 15px; margin-top: 4px; }
.px-svclist__go { display: none; }
@media (min-width: 1024px) {
	.px-svclist__link { grid-template-columns: 120px minmax(0, 1fr) 64px; gap: var(--s-6); align-items: center; padding: var(--s-7) 0; }
	.px-svclist__link::before { inset: 0 -24px; }
	.px-svclist__num { font-size: var(--fs-display-l); color: var(--px-sand); transition: color 300ms ease; }
	.px-svclist__link:hover .px-svclist__num { color: var(--px-green); }
	.px-svclist__main { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); column-gap: var(--s-7); align-items: center; }
	.px-svclist__title { font-size: 32px; }
	.px-svclist__more { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.px-svclist__go {
		display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--px-line-strong);
		color: var(--px-green); transition: background-color 300ms ease, color 300ms ease, transform 400ms var(--ease-out), border-color 300ms;
	}
	.px-svclist__link:hover .px-svclist__go { background: var(--px-green); color: var(--px-ivory); border-color: var(--px-green); transform: rotate(-45deg); }
}

/* --------------------------------------------------- approach (pinned) */
.px-approach { padding-bottom: var(--section-y); padding-top: 0; }
.px-approach__track { position: relative; }
.px-approach__sticky { padding-top: var(--section-y); }
.px-approach__stages { list-style: none; display: grid; gap: 0; margin-top: var(--s-6); }
.px-approach__stage { display: flex; align-items: baseline; gap: 16px; padding: 12px 0; border-top: 1px solid var(--px-line-dark); }
.px-approach__n { font-size: 13px; letter-spacing: 0.12em; color: var(--px-sand); font-weight: 600; }
.px-approach__word { font-family: var(--px-font-display); font-weight: 600; font-size: clamp(40px, 11vw, 64px); line-height: 1; letter-spacing: -0.03em; color: var(--px-ivory); }
.px-approach__rail { display: none; }
.px-approach__after { margin-top: var(--s-7); }
.px-approach__after .px-body { color: var(--px-ivory-dim); }
@media (min-width: 1024px) {
	.px-approach__track { height: 300vh; }
	.px-approach__sticky { position: sticky; top: 0; height: 100vh; display: flex; align-items: center; padding: 0; overflow: hidden; }
	.px-approach__sticky .px-container { width: 100%; display: grid; grid-template-columns: 5fr 7fr; gap: var(--s-9); align-items: center; position: relative; }
	.px-approach .px-head { margin: 0; }
	.px-approach__stages { margin: 0; gap: 0; }
	.px-approach__stage { gap: 28px; border: 0; padding: 4px 0; align-items: center; }
	.px-approach__n { width: 32px; transition: color 500ms ease; color: var(--px-ivory-ghost); }
	.px-approach__stage.is-on .px-approach__n { color: var(--px-sand); }
	.px-approach__word { font-size: clamp(64px, 7.4vw, 120px); line-height: 1.02; color: rgb(247 243 236 / 0.4); transition: color 500ms ease, transform 700ms var(--ease-out); transform: translateX(-12px); }
	.px-approach__stage.is-on .px-approach__word { color: var(--px-ivory); transform: none; }
	.px-approach__stage.is-current .px-approach__word { color: var(--px-sand); }
	.px-approach__rail { display: block; position: absolute; left: var(--gutter); bottom: calc(-1 * var(--s-8)); width: calc(5 / 12 * (100% - var(--gutter) * 2) - var(--s-9) * 0.5); height: 1px; background: var(--px-line-dark); }
	.px-approach__fill { position: absolute; inset: 0; background: var(--px-sand); transform-origin: left; transform: scaleX(var(--p, 0)); }
	.px-approach__after { display: grid; grid-template-columns: 7fr 5fr; gap: var(--s-9); align-items: end; margin-top: 0; }
	.no-motion .px-approach__track { height: auto; }
	.no-motion .px-approach__sticky { position: static; height: auto; padding: var(--section-y) 0 var(--s-7); }
	.no-motion .px-approach__word { color: var(--px-ivory); transform: none; }
}

/* ------------------------------------------------ services overview block */
.px-svcblock__grid { display: grid; gap: var(--s-5); }
.px-svcblock__num { font-family: var(--px-font-display); font-size: 72px; line-height: 0.9; color: var(--px-sand); letter-spacing: -0.04em; }
.px-svcblock .px-h2 { margin-bottom: var(--s-6); }
@media (min-width: 1024px) {
	.px-svcblock__grid { grid-template-columns: 4fr 8fr; gap: var(--s-9); }
	.px-svcblock__num { font-size: 160px; position: sticky; top: calc(var(--header-h) + 72px); }
}

/* --------------------------------------------------------------- models */
.px-models__grid { display: grid; gap: var(--s-5); }
@media (min-width: 1024px) { .px-models__grid { grid-template-columns: 1fr 1fr; gap: var(--s-6); } }
.px-model {
	padding: var(--s-6); border-radius: var(--radius-l); border: 1px solid var(--px-line-strong); background: var(--px-white);
	transition: transform 500ms var(--ease-out), box-shadow 500ms var(--ease-out);
}
@media (min-width: 1024px) {
	.px-model { padding: var(--s-7); }
	.px-model:hover { transform: translateY(-4px); box-shadow: 0 40px 60px -40px rgb(6 38 26 / 0.35); }
}
.px-theme-dark .px-model { background: rgb(247 243 236 / 0.04); border-color: var(--px-line-dark); }
.px-model__tag { margin-bottom: var(--s-4); }
.px-model__title { font-size: var(--fs-display-m); line-height: 1.15; letter-spacing: -0.01em; margin-bottom: var(--s-5); max-width: 18ch; }
.px-model .px-body { color: var(--px-stone); }
.px-theme-dark .px-model .px-body { color: var(--px-ivory-dim); }
.px-model .px-body:last-child { margin-bottom: 0; }

/* -------------------------------------------------------------- journey */
.px-journey__steps { list-style: none; position: relative; display: grid; gap: 0; margin-top: var(--s-5); }
.px-journey__step { position: relative; display: grid; grid-template-columns: 24px 40px 1fr; align-items: center; gap: 12px; padding: 14px 0; }
.px-journey__steps::before { content: ""; position: absolute; left: 11px; top: 24px; bottom: 24px; width: 1px; background: var(--px-line-dark); }
.px-journey__steps::after { content: ""; position: absolute; left: 11px; top: 24px; bottom: 24px; width: 1px; background: var(--px-sand); transform-origin: top; transform: scaleY(0); transition: transform 1800ms var(--ease-in-out); }
.px-journey__steps.is-in::after { transform: scaleY(1); }
.px-journey__dot { width: 23px; height: 23px; border-radius: 50%; border: 1px solid var(--px-sand); background: var(--px-green-deep); position: relative; z-index: 1; transform: scale(0.6); opacity: 0.4; transition: transform 500ms var(--ease-out), opacity 500ms, background-color 500ms; transition-delay: calc(var(--i) * 180ms); }
.px-journey__steps.is-in .px-journey__dot { transform: none; opacity: 1; }
.px-journey__steps.is-in .px-journey__step:last-child .px-journey__dot { background: var(--px-sand); }
.px-journey__n { font-size: 12px; letter-spacing: 0.12em; color: var(--px-sand); font-weight: 600; }
.px-theme-light .px-journey__n { color: var(--px-green); }
.px-theme-light .px-journey__steps::before { background: var(--px-line-strong); }
.px-journey__label { font-family: var(--px-font-display); font-weight: 600; font-size: var(--fs-heading-s); line-height: 1.2; opacity: 0.35; transition: opacity 500ms; transition-delay: calc(var(--i) * 180ms); }
.px-journey__steps.is-in .px-journey__label { opacity: 1; }
.px-theme-light .px-journey__dot { background: var(--px-ivory); border-color: var(--px-green); }
.px-theme-light .px-journey__steps::after { background: var(--px-green); }
@media (min-width: 1024px) {
	.px-journey__steps { grid-template-columns: repeat(var(--steps), minmax(0, 1fr)); margin-top: var(--s-8); }
	.px-journey__steps::before, .px-journey__steps::after { left: 11px; right: calc(100% / var(--steps) - 12px); top: 11px; bottom: auto; width: auto; height: 1px; }
	.px-journey__steps::after { transform-origin: left; transform: scaleX(0); }
	.px-journey__steps.is-in::after { transform: scaleX(1); }
	.px-journey__step { grid-template-columns: 1fr; align-items: start; align-content: start; gap: 14px; padding: 0 16px 0 0; }
	.px-journey__label { font-size: 18px; }
}

/* ------------------------------------------------------------ timeline */
.px-timeline__list { list-style: none; position: relative; padding-left: 0; }
.px-timeline__rail { position: absolute; left: 27px; top: 0; bottom: 0; width: 1px; background: var(--px-line); }
.px-timeline__fill { position: absolute; inset: 0; background: var(--px-sand); transform-origin: top; transform: scaleY(var(--p, 0)); }
.px-timeline__item { position: relative; display: grid; grid-template-columns: 56px 1fr; gap: var(--s-5); padding: var(--s-6) 0; }
.px-timeline__num {
	width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center;
	background: var(--px-ivory); border: 1px solid var(--px-line-strong); font-family: var(--px-font-display); font-weight: 600; font-size: 18px; color: var(--px-green);
	position: relative; z-index: 1; transition: background-color 400ms, color 400ms, border-color 400ms;
}
.px-timeline__item.is-in .px-timeline__num { background: var(--px-green); color: var(--px-ivory); border-color: var(--px-green); }
.px-timeline__title { font-size: var(--fs-display-m); line-height: 1.15; letter-spacing: -0.01em; margin: 10px 0 var(--s-3); }
.px-timeline__item .px-body { color: var(--px-stone); margin: 0; }
@media (min-width: 1024px) {
	.px-timeline__rail { left: 47px; }
	.px-timeline__item { grid-template-columns: 96px 4fr 7fr; gap: var(--s-7); padding: var(--s-7) 0; align-items: start; }
	.px-timeline__num { width: 96px; height: 96px; font-size: 28px; }
	.px-timeline__item > div { display: contents; }
	.px-timeline__title { margin-top: 28px; font-size: var(--fs-display-l); }
	.px-timeline__item .px-body { margin-top: 32px; }
}

/* --------------------------------------------------------------- stat */
.px-stat__inner { text-align: left; }
.px-stat__figure {
	font-family: var(--px-font-display); font-weight: 600; letter-spacing: -0.04em; line-height: 0.95;
	font-size: clamp(72px, 15vw, 200px); color: var(--px-sand); margin: 0 0 var(--s-5);
}
.px-stat__line { font-size: var(--fs-heading-s); line-height: 1.4; max-width: 40ch; font-family: var(--px-font-display); font-weight: 500; }
.px-stat__body { color: var(--px-ivory-dim); margin-top: var(--s-6); }
.px-theme-light .px-stat__figure { color: var(--px-green); }
.px-theme-light .px-stat__body { color: var(--px-stone); }

/* ---------------------------------------------------------- principles */
.px-principles__list { list-style: none; border-top: 1px solid var(--px-line); }
.px-principles__list li {
	font-family: var(--px-font-display); font-weight: 600; font-size: clamp(28px, 4.6vw, 64px); line-height: 1.08; letter-spacing: -0.02em;
	padding: var(--s-5) 0; border-bottom: 1px solid var(--px-line);
}
.px-principles__b { color: var(--px-stone); }
.px-theme-dark .px-principles__list, .px-theme-dark .px-principles__list li { border-color: var(--px-line-dark); }
.px-theme-dark .px-principles__b { color: var(--px-ivory-ghost); }
.px-principles__list li:hover .px-principles__b { color: var(--px-green); }
.px-theme-dark .px-principles__list li:hover .px-principles__b { color: var(--px-sand); }
.px-principles__b { transition: color 300ms ease; }

/* company */
.px-company__details { font-size: var(--fs-body-l); line-height: 1.8; }
.px-company__details strong { font-family: var(--px-font-display); font-size: var(--fs-heading-s); }

/* ------------------------------------------------------------ CTA band */
.px-ctaband { text-align: center; overflow: hidden; overflow: clip visible; }
.px-ctaband__inner { display: flex; flex-direction: column; align-items: center; }
.px-ctaband__h { max-width: 18ch; margin: 0 auto; }
.px-ctaband--big .px-ctaband__h { font-size: clamp(40px, 6.2vw, 88px); line-height: 1.02; letter-spacing: -0.03em; max-width: 14ch; }
.px-ctaband__body { color: var(--px-ivory-dim); margin: var(--s-5) auto 0; max-width: 56ch; }
.px-btn--wa {
	--btn-bg: transparent; --btn-fg: var(--px-ivory);
	min-height: 60px; padding: 8px 24px 8px 18px; gap: 12px; border: 1px solid var(--px-ivory-ghost);
}
.px-btn--wa:hover { --btn-bg: rgb(247 243 236 / 0.08); border-color: var(--px-ivory); }
.px-btn--wa__icon { color: var(--px-sand); flex: none; transition: transform 300ms var(--ease-out); }
.px-btn--wa:hover .px-btn--wa__icon { transform: scale(1.08) rotate(-6deg); }
.px-btn--wa__text { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.15; text-align: left; }
.px-btn--wa__label { font-size: 15px; font-weight: 600; }
.px-btn--wa__num { font-size: 12px; font-weight: 500; color: var(--px-ivory-dim); letter-spacing: 0.02em; margin-top: 3px; }
.px-ctaband::before {
	content: ""; position: absolute; left: 50%; top: 0; width: 1px; height: var(--s-8); background: var(--px-sand);
	transform: translateX(-50%) scaleY(0); transform-origin: top; transition: transform 1000ms var(--ease-in-out);
}
.px-ctaband.is-in::before, .no-motion .px-ctaband::before { transform: translateX(-50%) scaleY(1); }
.px-ctaband .px-btn { min-height: 60px; font-size: 16px; padding-left: 28px; }
.px-ctaband .px-btn__icon { width: 48px; height: 48px; }
.px-noteband { padding: var(--s-8) 0; text-align: center; }
.px-noteband .px-body { margin: 0 auto; }

/* -------------------------------------------------------------- forms */
.px-form { position: relative; }
.px-form__title { font-size: var(--fs-display-m); line-height: 1.15; margin-bottom: var(--s-6); }
.px-form__grid { display: grid; gap: var(--s-5); }
@media (min-width: 640px) { .px-form__grid { grid-template-columns: 1fr 1fr; column-gap: var(--s-5); } }
.px-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; border: 0; padding: 0; margin: 0; }
.px-field--wide, .px-field--phone { grid-column: 1 / -1; }
@media (min-width: 1024px) { .px-field--phone { grid-column: auto; } }
.px-field > label, .px-field legend { font-size: var(--fs-body-s); font-weight: 500; letter-spacing: 0.01em; color: var(--px-charcoal); padding: 0; }
.px-optional { color: var(--px-stone); font-weight: 400; }
.px-field input[type="text"], .px-field input[type="email"], .px-field input[type="tel"], .px-field input[type="url"],
.px-field textarea, .px-field select, .px-phone select {
	width: 100%; min-height: 52px; padding: 13px 16px; border-radius: 12px;
	border: 1px solid var(--px-line-strong); background: var(--px-white); color: var(--px-charcoal);
	font-size: 16px; line-height: 1.4; transition: border-color var(--t-hover), box-shadow var(--t-hover);
	-webkit-appearance: none; appearance: none;
}
.px-field textarea { resize: vertical; min-height: 140px; }
.px-field input:hover, .px-field textarea:hover, .px-field select:hover { border-color: var(--px-stone); }
.px-field input:focus-visible, .px-field textarea:focus-visible, .px-field select:focus-visible, .px-phone select:focus-visible {
	outline: 2px solid var(--px-sand); outline-offset: 2px; border-color: var(--px-green);
}
.px-select { position: relative; }
.px-select::after, .px-phone::after {
	content: ""; position: absolute; right: 18px; top: 50%; width: 8px; height: 8px; margin-top: -6px;
	border-right: 1.5px solid var(--px-stone); border-bottom: 1.5px solid var(--px-stone); transform: rotate(45deg); pointer-events: none;
}
.px-phone { display: grid; grid-template-columns: 132px 1fr; gap: 8px; position: relative; }
.px-phone::after { left: 108px; right: auto; }
.px-phone select { padding-right: 32px; }
.px-field__help { font-size: var(--fs-body-s); color: var(--px-stone); margin: 0; }
.px-field__other { margin-top: 8px; }
.px-field__other[hidden] { display: none; }
.px-field__count { font-size: 12px; color: var(--px-stone); margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.px-field__error { margin: 0; font-size: var(--fs-body-s); color: var(--px-error); font-weight: 500; min-height: 0; }
.px-field__error:empty { display: none; }
.px-field.is-invalid input, .px-field.is-invalid textarea, .px-field.is-invalid select { border-color: var(--px-error); }
.px-field__warn { margin: 0; font-size: var(--fs-body-s); color: var(--px-stone); }
.px-radios { border: 0; }
.px-radios__row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.px-radio { position: relative; cursor: pointer; }
.px-radio input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.px-radio span {
	display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 20px; border-radius: 999px;
	border: 1px solid var(--px-line-strong); background: var(--px-white); font-size: 15px; font-weight: 500; transition: all var(--t-hover);
}
.px-radio span::before { content: ""; width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--px-stone); transition: all var(--t-hover); }
.px-radio input:checked + span { border-color: var(--px-green); background: var(--px-green); color: var(--px-ivory); }
.px-radio input:checked + span::before { border: 4px solid var(--px-ivory); background: var(--px-green); }
.px-radio input:focus-visible + span { outline: 2px solid var(--px-sand); outline-offset: 2px; }
.px-field--check { flex-direction: row; flex-wrap: wrap; align-items: flex-start; gap: 12px; }
.px-field--check input { width: 22px; height: 22px; margin: 2px 0 0; accent-color: var(--px-green); flex: none; }
.px-field--check label { flex: 1; font-size: var(--fs-body-s); font-weight: 400; line-height: 1.5; color: var(--px-charcoal); }
.px-field--check .px-field__error { flex-basis: 100%; padding-left: 34px; }
.px-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.px-form__status { margin: var(--s-5) 0 0; font-size: var(--fs-body-s); color: var(--px-error); font-weight: 500; }
.px-form__status:empty { display: none; }
.px-form__fallback { display: block; margin-top: var(--s-4); }
.px-form__fallback .px-btn { padding: 0 24px; white-space: normal; text-align: center; }
.px-form__submit { margin-top: var(--s-6); }
.px-form__submit.is-busy .px-btn__icon svg { animation: px-pulse 900ms ease-in-out infinite; }
@keyframes px-pulse { 50% { transform: translateX(4px); opacity: 0.5; } }
.px-form__success { padding: var(--s-6); border-radius: var(--radius); background: var(--px-success); color: var(--px-white); margin-top: var(--s-5); }
.px-form__success p { margin: 0; font-size: var(--fs-body-l); }
.px-file input[type="file"] {
	width: 100%; padding: 14px; border: 1px dashed var(--px-line-strong); border-radius: 12px; background: var(--px-white); font-size: 15px;
}
.cf-turnstile { grid-column: 1 / -1; margin-top: var(--s-4); }

/* dark form (careers) */
.px-form--dark .px-field > label, .px-form--dark .px-field legend, .px-form--dark .px-field--check label { color: var(--px-ivory); }
.px-form--dark .px-field__help, .px-form--dark .px-field__count, .px-form--dark .px-optional { color: var(--px-ivory-dim); }
.px-form--dark .px-field__error, .px-form--dark .px-form__status { color: var(--px-ivory); background: var(--px-error); padding: 4px 10px; border-radius: 6px; align-self: flex-start; }
.px-form--dark .px-file input[type="file"] { border-color: var(--px-line-dark); background: rgb(247 243 236 / 0.06); color: var(--px-ivory); }
.px-form--dark .px-field--check .px-field__error { margin-left: 34px; padding-left: 10px; }

/* ------------------------------------------------------------ contact */
.px-contact { padding-top: calc(var(--header-h) + 56px); }
@media (min-width: 1024px) { .px-contact { padding-top: calc(var(--header-h) + 72px); } }
.px-contact__head { margin-bottom: var(--s-7); }
.px-contact__head .px-lead { color: var(--px-stone); margin-top: var(--s-5); }
.px-contact__grid { display: grid; gap: var(--s-7); }
.px-contact__form { background: var(--px-white); border: 1px solid var(--px-line); border-radius: var(--radius-l); padding: var(--s-5); }
@media (min-width: 640px) { .px-contact__form { padding: var(--s-7); } }
.px-contact__aside h2 { margin-bottom: var(--s-5); font-size: var(--fs-heading-s); }
.px-contact__aside address { margin-bottom: var(--s-5); line-height: 1.7; }
.px-contact__meta { color: var(--px-stone); font-size: var(--fs-body-s); }
@media (min-width: 1024px) {
	.px-contact__head { display: grid; grid-template-columns: 7fr 5fr; gap: var(--s-9); align-items: end; }
	.px-contact__head .px-eyebrow { grid-column: 1 / -1; margin-bottom: 0; }
	.px-contact__head .px-lead { margin: 0; }
	.px-contact__grid { grid-template-columns: 3fr 2fr; gap: var(--s-8); align-items: start; }
	.px-contact__aside { position: sticky; top: calc(var(--header-h) + 32px); padding-top: var(--s-7); }
}

/* ------------------------------------------------------- thanks / 404 */
.px-thanks, .px-404, .px-pagehead, .px-insights-head, .px-article__head { padding-top: calc(var(--header-h) + 72px); }
@media (min-width: 1024px) { .px-thanks, .px-404, .px-pagehead, .px-insights-head, .px-article__head { padding-top: calc(var(--header-h) + 112px); } }
.px-thanks { min-height: 80vh; }
.px-thanks__mark { color: var(--px-green); display: block; margin-bottom: var(--s-6); }
.px-thanks__tick { stroke-dasharray: 40; stroke-dashoffset: 40; animation: px-draw 800ms var(--ease-out) 400ms forwards; }
.px-404__big { font-family: var(--px-font-display); font-weight: 600; font-size: clamp(120px, 26vw, 360px); line-height: 0.85; letter-spacing: -0.06em; color: var(--px-green); margin: 0 0 var(--s-6); opacity: 0.12; }
.px-404__links { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 32px; margin-top: var(--s-6); }
.px-thanks .px-lead, .px-404 .px-lead, .px-insights-head .px-lead, .px-article__head .px-lead { color: var(--px-stone); }
.px-pagehead { padding-bottom: var(--s-7); }

/* --------------------------------------------------------- insights */
.px-insights-head { padding-bottom: var(--s-7); }
.px-insights { padding-top: 0; }
.px-card { border-top: 1px solid var(--px-line-strong); }
.px-card__link { display: block; position: relative; text-decoration: none; padding: var(--s-6) 64px var(--s-6) 0; }
.px-card__title { font-size: var(--fs-heading-s); line-height: 1.25; letter-spacing: -0.005em; margin-bottom: 12px; transition: color var(--t-hover); }
.px-card__link:hover .px-card__title { color: var(--px-green); }
.px-card__stand { color: var(--px-stone); margin-bottom: 12px; max-width: 60ch; }
.px-card__meta { font-size: var(--fs-body-s); color: var(--px-stone); margin: 0; }
.px-card__go { position: absolute; right: 0; top: var(--s-6); width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--px-line-strong); display: grid; place-items: center; color: var(--px-green); transition: all 300ms var(--ease-out); }
.px-card__link:hover .px-card__go { background: var(--px-green); color: var(--px-ivory); border-color: var(--px-green); transform: rotate(-45deg); }
.px-card--featured { border: 0; margin-bottom: var(--s-7); }
.px-card--featured .px-card__link { background: var(--px-green-deep); color: var(--px-ivory); border-radius: var(--radius-l); padding: var(--s-6); }
.px-card--featured .px-card__label { color: var(--px-sand); }
.px-card--featured .px-card__title { font-size: var(--fs-display-m); line-height: 1.15; max-width: 22ch; }
.px-card--featured .px-card__link:hover .px-card__title { color: var(--px-ivory); }
.px-card--featured .px-card__stand, .px-card--featured .px-card__meta { color: var(--px-ivory-dim); }
.px-card--featured .px-card__go { position: static; margin-top: var(--s-6); border-color: var(--px-ivory-ghost); color: var(--px-ivory); }
.px-card--featured .px-card__link:hover .px-card__go { background: var(--px-ivory); color: var(--px-green-deep); }
@media (min-width: 1024px) {
	.px-card--featured .px-card__link { padding: var(--s-8); }
	.px-card--featured .px-card__title { font-size: var(--fs-display-l); }
	.px-insights__grid { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--s-7); }
}
.px-pagination { margin-top: var(--s-7); }
.px-pagination ul { list-style: none; display: flex; gap: 8px; }
.px-pagination a, .px-pagination span { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--px-line-strong); text-decoration: none; }
.px-pagination .current { background: var(--px-green); color: var(--px-ivory); border-color: var(--px-green); }

/* -------------------------------------------------------------- article */
.px-article__measure { max-width: calc(72ch + var(--gutter) * 2); }
.px-article__head { padding-bottom: var(--s-7); }
.px-article__bodywrap { padding-top: var(--s-8); }
.px-article__image { margin: 0 0 var(--s-7); border-radius: var(--radius); overflow: hidden; }
.px-article__related { margin-top: var(--s-8); padding-top: var(--s-6); border-top: 1px solid var(--px-line); }
.px-article__related .px-eyebrow { display: flex; margin-bottom: var(--s-3); }
.px-readbar { position: fixed; left: 0; right: 0; top: 0; height: 3px; z-index: 120; pointer-events: none; }
.px-readbar span { display: block; height: 100%; background: var(--px-sand); transform-origin: left; transform: scaleX(var(--p, 0)); }

/* prose: legal pages + articles */
.px-prose { max-width: 72ch; font-size: var(--fs-body-l); line-height: 1.7; }
.px-prose > * { margin: 0; }
.px-prose > * + * { margin-top: 1.1em; }
.px-prose > h2 { font-size: var(--fs-display-m); line-height: 1.15; letter-spacing: -0.01em; margin-top: 2em; }
.px-prose > h3 { font-size: var(--fs-heading-s); line-height: 1.25; margin-top: 1.6em; }
.px-prose > h2 + *, .px-prose > h3 + * { margin-top: 0.6em; }
.px-prose ul, .px-prose ol { padding-left: 1.4em; }
.px-prose li + li { margin-top: 0.5em; }
.px-prose li::marker { color: var(--px-green); font-weight: 600; }
.px-prose a { color: var(--px-green); }
.px-prose blockquote {
	margin: 2em 0; padding: 0 0 0 var(--s-6); border-left: 2px solid var(--px-sand);
	font-family: var(--px-font-display); font-size: var(--fs-display-m); line-height: 1.25; font-weight: 500;
}
.px-prose img { border-radius: var(--radius); }
.px-prose--article > p:first-child { font-size: 1.12em; }

/* ---------------------------------------------------------------- footer */
.px-footer { padding: var(--s-9) 0 var(--s-6); position: relative; overflow: hidden; overflow: clip visible; }
.px-footer__top { display: grid; gap: var(--s-7); }
.px-footer__tag { color: var(--px-ivory-dim); margin-top: var(--s-4); }
.px-footer__cols { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-6); }
.px-footer__h { font-family: var(--px-font-body); font-size: var(--fs-eyebrow); letter-spacing: 0.12em; text-transform: uppercase; color: var(--px-sand); margin-bottom: var(--s-4); font-weight: 600; }
.px-footer ul { list-style: none; display: grid; gap: 10px; font-size: 15px; }
.px-footer a { text-decoration: none; color: var(--px-ivory-dim); transition: color var(--t-hover); }
.px-footer a:hover { color: var(--px-ivory); text-decoration: underline; }
.px-footer li { color: var(--px-ivory-dim); }
.px-footer .px-logo { color: var(--px-ivory); }
.px-footer__word {
	font-family: var(--px-font-display); font-weight: 600; letter-spacing: -0.05em; line-height: 0.8;
	font-size: clamp(96px, 24vw, 380px); color: rgb(247 243 236 / 0.05);
	margin: var(--s-8) 0 var(--s-5); white-space: nowrap; user-select: none;
	transform: translateY(var(--fy, 0));
}
.px-footer__word::before { content: attr(data-word); }
.px-footer__base { display: flex; flex-direction: column; gap: 6px; padding-top: var(--s-5); border-top: 1px solid var(--px-line-dark); font-size: var(--fs-body-s); color: var(--px-ivory-dim); }
.px-footer__base p { margin: 0; }
@media (min-width: 1024px) {
	.px-footer__top { grid-template-columns: 4fr 8fr; }
	.px-footer__cols { grid-template-columns: repeat(4, 1fr); }
	.px-footer__base { flex-direction: row; justify-content: space-between; }
}

/* ----------------------------------------------------------- WhatsApp */
.px-wa {
	position: fixed; right: 16px; bottom: 16px; z-index: 80;
	display: inline-flex; align-items: center; gap: 10px; height: 56px; padding: 0 15px; border-radius: 999px;
	background: var(--px-green); color: var(--px-ivory); text-decoration: none; font-weight: 600; font-size: 14px;
	border: 1px solid var(--px-ivory-ghost);
	box-shadow: 0 16px 40px -16px rgb(6 38 26 / 0.6); transition: transform 300ms var(--ease-out), opacity 300ms, background-color var(--t-hover);
}
.px-wa:hover { background: var(--px-green-deep); }
.px-wa__label { max-width: 0; overflow: hidden; white-space: nowrap; transition: max-width 400ms var(--ease-out); }
@media (min-width: 1024px) {
	.px-wa:hover .px-wa__label, .px-wa:focus-visible .px-wa__label { max-width: 220px; }
}
.px-wa.is-tucked { transform: translateY(140%); opacity: 0; pointer-events: none; }

/* --------------------------------------------------------- cookie banner */
.px-cookie {
	position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 70;
	background: var(--px-green); color: var(--px-ivory); border: 1px solid var(--px-line-dark);
	border-radius: 16px; padding: 14px 16px; box-shadow: 0 20px 40px -20px rgb(0 0 0 / 0.5);
	max-width: 360px; font-size: 13px; line-height: 1.5;
}
.px-cookie[hidden] { display: none; }
.px-cookie p { margin: 0 0 12px; color: var(--px-ivory); }
.px-cookie a { color: var(--px-ivory); }
.px-cookie__btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.px-cookie__btns .px-btn { justify-content: center; min-height: 36px; padding: 0 14px; font-size: 13px; }
.has-cookie .px-wa { bottom: calc(16px + var(--cookie-h, 0px)); }
@media (min-width: 640px) { .px-cookie { left: 16px; bottom: 16px; } .has-cookie .px-wa { bottom: 16px; } }

/* -------------------------------------------------------------- motion */
.js [data-reveal] { opacity: 0; transform: translateY(12px); transition: opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out); }
.js [data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal][data-delay="1"] { transition-delay: 120ms; }
[data-reveal][data-delay="2"] { transition-delay: 450ms; }
[data-reveal][data-delay="3"] { transition-delay: 650ms; }
.px-hero [data-reveal][data-delay="2"] { transition-delay: 700ms; }
.px-hero [data-reveal][data-delay="3"] { transition-delay: 900ms; }

[data-split] .px-w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: 0.08em; margin-bottom: -0.08em; }
[data-split] .px-w > span { display: inline-block; transform: translateY(105%); transition: transform 900ms var(--ease-out); transition-delay: calc(var(--wi) * 45ms); }
[data-split].is-in .px-w > span { transform: none; }
[data-split="hero"] .px-w > span { transition-duration: 1100ms; transition-delay: calc(150ms + var(--wi) * 70ms); }


/* Reduced motion: disable entirely (spec section 6). */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation: none !important; transition: none !important; }
	[data-reveal] { opacity: 1 !important; transform: none !important; }
	[data-split] .px-w > span { transform: none !important; }
	.px-hero__x path { stroke-dashoffset: 0 !important; }
	.px-intro { display: none !important; }
	.px-journey__steps::after { transform: scaleX(1) !important; }
	.px-journey__dot, .px-journey__label { opacity: 1 !important; transform: none !important; }
	.px-check path { stroke-dashoffset: 0 !important; }
	.px-thanks__tick { stroke-dashoffset: 0 !important; }
	.px-hero__rule { transform: scaleX(1) !important; }
	.px-hero__scroll-line::after { display: none; }
}

/* print */
@media print {
	.px-header, .px-wa, .px-cookie, .px-subnav, .px-readbar, .px-hero__art { display: none !important; }
	.px-theme-dark { background: none; color: black; }
	[data-reveal] { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------- contact map */
.px-map { margin-top: clamp(48px, 7vw, 88px); border: 1px solid rgba(15, 61, 46, .14); border-radius: 20px; overflow: hidden; background: #fff; }
.px-map__frame { position: relative; aspect-ratio: 21 / 8; min-height: 280px; background:
	linear-gradient(rgba(15, 61, 46, .05) 1px, transparent 1px) 0 0 / 40px 40px,
	linear-gradient(90deg, rgba(15, 61, 46, .05) 1px, transparent 1px) 0 0 / 40px 40px,
	#F4F1EA; }
.px-map__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.px-map__load { position: absolute; inset: 0; width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 24px; border: 0; background: transparent; color: #0F3D2E; font: inherit; cursor: pointer; text-align: center; }
.px-map__pin { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: #0F3D2E; color: #fff; box-shadow: 0 10px 30px rgba(15, 61, 46, .25); transition: transform .3s cubic-bezier(.2, .7, .2, 1); }
.px-map__load:hover .px-map__pin, .px-map__load:focus-visible .px-map__pin { transform: translateY(-4px); }
.px-map__load:focus-visible { outline: 2px solid #0F3D2E; outline-offset: -6px; }
.px-map__title { font-weight: 600; font-size: 1.05rem; margin-top: 6px; }
.px-map__hint { font-size: .85rem; color: #4B5A54; max-width: 34ch; }
.px-map__bar { display: flex; flex-wrap: wrap; gap: 12px 32px; align-items: center; justify-content: space-between; padding: 18px 24px; border-top: 1px solid rgba(15, 61, 46, .1); font-size: .95rem; }
.px-map__bar p { margin: 0; }
.px-map__links { display: flex; gap: 20px; }
.px-map__links a { color: #0F3D2E; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 720px) { .px-map__frame { aspect-ratio: 4 / 3; } .px-map__bar { padding: 16px; } }
