/* LeadMotion — "La solidez de la roca. La claridad de la tecnología. La honestidad como identidad." */

@font-face {
	font-family: "Manrope";
	src: url("../fonts/manrope-variable-latin.woff2") format("woff2");
	font-weight: 200 800;
	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;
}

/* ───────────── Design tokens ─────────────
   One surface (rock + marble) and one colour (#0921D6).
   The blue is used as a fill (buttons, nodes, marks); on this dark surface thin strokes
   and text use warm white at different opacities, because #0921D6 on rock is only 2:1. */
:root {
	--rock: #0B0D10;
	--fg: #F1F0EC;
	--fg-soft: #C9CCD1;
	--muted: #A7ACB4;
	--line: rgba(241, 240, 236, .12);
	--line-strong: rgba(241, 240, 236, .34);
	--field-border: rgba(241, 240, 236, .42);
	--surface: rgba(241, 240, 236, .035);

	--blue: #0921D6;
	--blue-hover: #0718B0;
	--blue-glow: rgba(9, 33, 214, .55);

	--error: #FF8A7A;
	--focus: #F1F0EC;

	--font: "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--radius-s: 6px;
	--radius-m: 12px;
	--gutter: clamp(20px, 5vw, 56px);
	--section-y: clamp(80px, 11vw, 152px);
	--ease: cubic-bezier(.2, .7, .2, 1);
	--header-h: 72px;
}

/* ───────────── Base & the single background ───────────── */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; background: var(--rock); }
body.lm {
	position: relative;
	margin: 0;
	background: transparent;
	color: var(--fg);
	font-family: var(--font);
	font-size: 16px;
	font-weight: 450;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}
@media (min-width: 900px) { body.lm { font-size: 17px; } }

/* Fixed layer instead of background-attachment: fixed, which iOS ignores. */
body.lm::before {
	content: "";
	position: fixed; inset: 0; z-index: -1;
	background:
		radial-gradient(ellipse 85% 75% at 50% 50%, rgba(11, 13, 16, 0) 40%, rgba(11, 13, 16, .45)),
		var(--rock) url("../img/fondo-piedra.webp") center / cover no-repeat;
}

.lm ::selection { background: var(--blue); color: #fff; }
.lm img, .lm svg { display: block; max-width: 100%; }
:where(.lm) :is(h1, h2, h3) { margin: 0; color: inherit; font-weight: 600; text-wrap: balance; }
:where(.lm) p { margin: 0; text-wrap: pretty; }
.lm [hidden] { display: none !important; }
.lm h1 { font-size: clamp(2.3rem, 1.55rem + 3.1vw, 4.1rem); line-height: 1.06; letter-spacing: -.028em; }
.lm h2 { font-size: clamp(1.8rem, 1.35rem + 1.8vw, 2.75rem); line-height: 1.14; letter-spacing: -.02em; }
.lm h3 { font-size: 1.1rem; line-height: 1.35; letter-spacing: -.005em; }
.lm a { color: inherit; }
.lm :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 2px; }

/* Brand mark above every section heading: a short blue bar. */
.lm-section h2::before {
	content: "";
	display: block;
	width: 32px;
	height: 3px;
	margin-bottom: 28px;
	border-radius: 2px;
	background: var(--blue);
	transform: scaleX(var(--bar, 1));
	transform-origin: left center;
}
.lm-center h2::before { margin-inline: auto; transform-origin: center; }

.lm-skip { position: absolute; left: -9999px; top: 0; z-index: 50; }
.lm-skip:focus { left: var(--gutter); top: 12px; padding: 10px 14px; background: var(--fg); color: var(--rock); border-radius: var(--radius-s); }

.lm-container { width: 100%; max-width: 1200px; margin-inline: auto; padding-inline: var(--gutter); }
.lm-center { text-align: center; }
.lm-section { position: relative; padding-block: var(--section-y); scroll-margin-top: var(--header-h); }
/* Same background everywhere, so sections are separated by a hairline aligned to the content. */
.lm-section + .lm-section::before {
	content: "";
	position: absolute; top: 0; height: 1px;
	left: max(var(--gutter), calc((100% - 1200px) / 2 + var(--gutter)));
	right: max(var(--gutter), calc((100% - 1200px) / 2 + var(--gutter)));
	background: var(--line);
	transform: scaleX(var(--sep, 1));
}

.lm-eyebrow {
	display: inline-flex; align-items: center; gap: 12px;
	font-size: .78rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
	color: var(--muted);
}
.lm-eyebrow::before { content: ""; width: 24px; height: 3px; border-radius: 2px; background: var(--blue); }
.lm-lead { font-size: clamp(1.05rem, .98rem + .35vw, 1.22rem); line-height: 1.6; color: var(--fg-soft); max-width: 58ch; }
.lm-note { font-size: .9rem; color: var(--muted); }

/* ───────────── Buttons ───────────── */
.lm-btn {
	--btn-bg: var(--blue);
	--btn-fg: #fff;
	--btn-border: var(--blue);
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	min-height: 52px; padding: 12px 26px;
	border: 1px solid var(--btn-border); border-radius: var(--radius-s);
	background: var(--btn-bg); color: var(--btn-fg);
	font: inherit; font-size: .95rem; font-weight: 600; letter-spacing: .01em; line-height: 1.2;
	text-decoration: none; text-align: center; cursor: pointer;
	transition: border-color .45s var(--ease), color .45s var(--ease);
	position: relative; overflow: hidden; isolation: isolate;
}
/* Flat hover/focus: a solid stone-white wipe fills the button left to right and the label turns black. */
.lm-btn::after {
	content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: var(--fg);
	transform: scaleX(0); transform-origin: right center;
	transition: transform .45s var(--ease);
}
.lm-btn:hover, .lm-btn:focus-visible { --btn-fg: var(--rock); --btn-border: var(--fg); }
.lm-btn:hover::after, .lm-btn:focus-visible::after { transform: scaleX(1); transform-origin: left center; }
.lm a.lm-btn { color: var(--btn-fg); }
.lm-btn:active { opacity: .85; }
.lm-btn:disabled, .lm-btn[aria-disabled="true"], .lm-btn[aria-busy="true"] { --btn-fg: #fff; --btn-border: var(--blue); opacity: .6; cursor: not-allowed; }
.lm-btn[aria-busy="true"] { cursor: wait; }
.lm-btn:disabled::after, .lm-btn[aria-busy="true"]::after { transform: scaleX(0); }
.lm-btn--ghost { --btn-bg: transparent; --btn-fg: var(--fg); --btn-border: var(--line-strong); }
.lm-btn--sm { min-height: 40px; padding: 8px 16px; font-size: .86rem; }
.lm-btn--block { width: 100%; }
.lm-linkbtn { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* ───────────── Header ───────────── */
.lm-header {
	position: sticky; top: 0; z-index: 30;
	background: rgba(11, 13, 16, .55);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	backdrop-filter: blur(14px) saturate(140%);
	border-bottom: 1px solid transparent;
	transition: border-color .3s var(--ease), background-color .3s var(--ease);
}
.lm-header.is-scrolled { border-bottom-color: var(--line); background: rgba(11, 13, 16, .82); }
.lm-progress {
	position: absolute; left: 0; right: 0; bottom: -1px; height: 2px;
	background: var(--blue); transform: scaleX(0); transform-origin: left center; pointer-events: none;
}
.lm-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: var(--header-h); }
.lm-brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: var(--fg); }
.lm-brand__mark { width: 30px; height: auto; }
.lm-brand__name { font-size: 1.02rem; font-weight: 600; letter-spacing: .01em; }
@media (max-width: 359px) { .lm-header .lm-brand__name { display: none; } }

/* ───────────── Hero ───────────── */
.lm-hero { padding-block: clamp(64px, 9vw, 128px) clamp(80px, 9vw, 128px); overflow: hidden; }
.lm-hero__grid { display: grid; gap: 48px; align-items: center; }
.lm-hero__copy { display: grid; gap: 24px; justify-items: start; }
.lm-hero h1 { max-width: 15ch; }
.lm-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.lm-hero__art { width: 100%; max-width: 480px; justify-self: center; }
@media (min-width: 960px) {
	.lm-hero__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 64px; }
	.lm-hero__art { justify-self: end; }
}
@media (max-width: 959px) {
	.lm-hero__grid { gap: 32px; }
	.lm-hero__art { max-width: 300px; justify-self: end; margin-right: -8px; }
}
@media (max-width: 559px) {
	.lm-hero__art { max-width: 230px; }
	.lm-actions { width: 100%; }
	.lm-actions .lm-btn { width: 100%; }
}

.lm-hero__art { perspective: 1100px; }
.lm-art { width: 100%; height: auto; overflow: visible; transform-style: preserve-3d; }
.lm-art__comet { fill: #fff; }
.lm-art__pulse { fill: none; stroke: var(--blue); stroke-width: 1.5; }
.lm-art__stratum { stroke: var(--fg); stroke-opacity: var(--o); stroke-width: 1; }
.lm-art__gauge path { stroke: var(--fg); stroke-opacity: .2; stroke-width: 1; }
.lm-art__ticks path { stroke: var(--fg); stroke-opacity: .45; stroke-width: 1; }
.lm-art__route { stroke: var(--fg); stroke-opacity: .7; stroke-width: 1.5; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 0; }
.lm-art__node { fill: var(--rock); stroke: var(--fg); stroke-opacity: .8; stroke-width: 1.25; }
.lm-art__node--end { fill: var(--blue); stroke: var(--fg); stroke-opacity: .9; }
.lm-art__halo { fill: var(--blue-glow); fill-opacity: .35; stroke: var(--blue); stroke-width: 1.5; }

/* ───────────── Editorial layouts ───────────── */
.lm-split { display: grid; gap: 40px; }
@media (min-width: 960px) {
	.lm-split { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 80px; align-items: start; }
	.lm-split > h2 { position: sticky; top: calc(var(--header-h) + 40px); }
}
.lm-intro { display: grid; gap: 20px; max-width: 720px; }

/* Problem: numbered rows divided by hairlines. */
.lm-rows { counter-reset: row; border-top: 1px solid var(--line); }
.lm-row {
	counter-increment: row;
	display: grid; grid-template-columns: 44px minmax(0, 1fr); column-gap: 12px; row-gap: 8px;
	position: relative; padding-block: 28px;
}
.lm-row::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
	background: var(--line); transform: scaleX(var(--draw, 1)); transform-origin: left center;
}
.lm-row h3, .lm-row p { transition: transform .5s var(--ease); }
.lm-row:hover h3, .lm-row:hover p { transform: translateX(8px); }
.lm-row::before {
	content: counter(row, decimal-leading-zero);
	grid-row: span 2;
	font-size: .85rem; font-weight: 600; letter-spacing: .06em; color: var(--muted);
	padding-top: 3px; font-variant-numeric: tabular-nums;
}
.lm-row p { color: var(--muted); max-width: 52ch; }
@media (min-width: 700px) { .lm-row { grid-template-columns: 72px minmax(0, 1fr); column-gap: 16px; } }

/* Solution pillars: columns separated by vertical hairlines. */
.lm-pillars { display: grid; margin-top: clamp(48px, 6vw, 80px); border-top: 1px solid var(--line); }
.lm-pillar { position: relative; display: grid; gap: 12px; align-content: start; padding: 32px 0; border-bottom: 1px solid var(--line); }
.lm-pillar::after, .lm-fit__col::after {
	content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
	background: radial-gradient(380px circle at var(--mx, 50%) var(--my, 50%), rgba(241, 240, 236, .07), transparent 60%);
	opacity: 0; transition: opacity .4s var(--ease);
}
.lm-pillar:hover::after, .lm-fit__col:hover::after { opacity: 1; }
.lm-pillar p { color: var(--muted); }
.lm-icon { width: 40px; height: 40px; margin-bottom: 12px; fill: none; stroke: var(--fg); stroke-opacity: .85; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
@media (min-width: 960px) {
	.lm-pillars { grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); }
	.lm-pillar { padding: 40px 32px 44px; border-bottom: 0; }
	.lm-pillar + .lm-pillar { border-left: 1px solid var(--line); }
	.lm-pillar:first-child { padding-left: 0; }
	.lm-pillar:last-child { padding-right: 0; }
}

/* Deliverables checklist: solid blue mark with a white tick. */
.lm-checklist { list-style: none; margin: 0; padding: 0; display: grid; border-top: 1px solid var(--line); }
.lm-checklist li { position: relative; padding: 22px 0 22px 40px; border-bottom: 1px solid var(--line); color: var(--muted); }
.lm-checklist li strong { display: block; color: var(--fg); font-weight: 600; margin-bottom: 2px; }
.lm-checklist li::before {
	content: ""; position: absolute; left: 0; top: 25px; width: 22px; height: 22px; border-radius: 50%;
	transform: scale(var(--pop, 1));
	background: var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M6.5 11.2l3 3 6-6.4' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat;
}
@media (min-width: 700px) { .lm-checklist { grid-template-columns: 1fr 1fr; column-gap: 40px; } }

/* Process: a route connecting four nodes; the last one is the blue destination. */
.lm-steps {
	--node: 11px;
	list-style: none; margin: clamp(48px, 6vw, 80px) 0 0; padding: 0;
	display: grid; gap: 40px; position: relative;
}
.lm-steps::before {
	content: ""; position: absolute; left: calc(var(--node) / 2 - .5px); top: 6px; bottom: 6px; width: 1px;
	background: linear-gradient(180deg, var(--line-strong), var(--line));
	transform-origin: top; transition: transform 1.4s var(--ease);
}
.lm-steps li { position: relative; padding-left: 40px; display: grid; gap: 10px; align-content: start; }
.lm-steps li::before {
	content: ""; position: absolute; left: 0; top: 6px; width: var(--node); height: var(--node);
	border-radius: 50%; background: var(--rock); border: 1px solid var(--line-strong);
}
.lm-steps li:last-child::before { background: var(--blue); border-color: var(--fg); }
.lm-steps.is-scrubbed::before { transform: scaleY(var(--progress, 0)); background: linear-gradient(180deg, var(--fg), var(--line-strong)); transition: none; }
.lm-steps.is-scrubbed li { opacity: .72; transition: opacity .6s var(--ease); }
.lm-steps.is-scrubbed li.is-active { opacity: 1; }
.lm-steps.is-scrubbed li::before { transition: background-color .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease); }
.lm-steps.is-scrubbed li.is-active::before { border-color: var(--fg); background: var(--fg); box-shadow: 0 0 0 5px rgba(241, 240, 236, .08); }
.lm-steps.is-scrubbed li.is-active:last-child::before { background: var(--blue); box-shadow: 0 0 0 6px var(--blue-glow); }
.lm-steps__dot {
	position: absolute; left: calc(var(--node) / 2); top: calc(6px + (100% - 12px) * var(--progress, 0));
	width: 9px; height: 9px; margin: -4.5px 0 0 -4.5px; border-radius: 50%;
	background: #fff; box-shadow: 0 0 12px 3px rgba(241, 240, 236, .45), 0 0 26px 6px var(--blue-glow);
	pointer-events: none;
}
.lm-steps p { color: var(--muted); max-width: 30ch; }
.lm-steps h3 { font-size: 1.05rem; }
@media (min-width: 900px) {
	.lm-steps { grid-template-columns: repeat(4, 1fr); gap: 32px; padding-top: 44px; }
	.lm-steps::before { left: 0; right: 0; top: 5px; bottom: auto; width: auto; height: 1px; background: linear-gradient(90deg, var(--line-strong), var(--line)); transform-origin: left; }
	.lm-steps li { padding-left: 0; }
	.lm-steps li::before { top: -44px; }
	.lm-steps.is-scrubbed::before { transform: scaleX(var(--progress, 0)); background: linear-gradient(90deg, var(--fg), var(--line-strong)); }
	.lm-steps__dot { left: calc(100% * var(--progress, 0)); top: 5.5px; }
}

/* Fit / not fit. */
.lm-fit { display: grid; gap: 20px; margin-top: clamp(40px, 5vw, 64px); }
.lm-fit__col { position: relative; padding: clamp(28px, 4vw, 44px); border-radius: var(--radius-m); border: 1px solid var(--line); transform-style: preserve-3d; transition: border-color .4s var(--ease); }
.lm-fit__col:hover { border-color: var(--line-strong); }
.lm-fit__col h3 { margin-bottom: 20px; }
.lm-fit__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.lm-fit__col li { position: relative; padding-left: 28px; }
.lm-fit__col--yes { background: var(--surface); }
.lm-fit__col--yes::before { content: ""; position: absolute; top: -1px; left: clamp(28px, 4vw, 44px); width: 48px; height: 3px; border-radius: 0 0 2px 2px; background: var(--blue); }
.lm-fit__col--yes li::before { content: ""; position: absolute; left: 1px; top: .55em; width: 10px; height: 10px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 1px rgba(241, 240, 236, .5); transform: scale(var(--pop, 1)); }
.lm-fit__col--no { color: var(--muted); }
.lm-fit__col--no li::before { content: ""; position: absolute; left: 0; top: .82em; width: 12px; height: 1px; background: var(--muted); }
@media (min-width: 820px) { .lm-fit { grid-template-columns: 1fr 1fr; gap: 24px; } }

/* Investment: heading as a label, price as the protagonist. */
.lm-invest { overflow: hidden; }
.lm-invest .lm-container { position: relative; display: grid; justify-items: center; gap: 20px; }
.lm-rings {
	position: absolute; left: 50%; top: 50%; width: min(900px, 160vw); height: auto; translate: -50% -50%;
	fill: none; stroke: var(--fg); stroke-opacity: .09; stroke-width: 1; pointer-events: none;
}
.lm-rings circle:nth-child(2) { stroke-opacity: .7; stroke: var(--line-strong); }
.lm-rings__dot { fill: var(--blue); stroke: var(--fg); stroke-opacity: .8; stroke-width: 1.5; }
.lm-invest .lm-container::before, .lm-invest .lm-container::after {
	content: ""; width: 1px; height: 48px; background: linear-gradient(180deg, transparent, var(--line-strong));
}
.lm-invest .lm-container::after { background: linear-gradient(180deg, var(--line-strong), transparent); }
.lm-invest h2 { font-size: .8rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.lm-invest h2::before { display: none; }
.lm-price { font-size: clamp(2.6rem, 2rem + 3vw, 4.25rem); font-weight: 500; line-height: 1.05; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.lm-invest__terms { max-width: 52ch; color: var(--muted); }
.lm-invest .lm-btn { margin-top: 12px; }

/* Two diagnostics side by side; the integral one carries the blue bar and the solid button. */
.lm-plans { display: grid; gap: 20px; width: 100%; max-width: 920px; margin-top: 12px; }
@media (min-width: 820px) { .lm-plans { grid-template-columns: 1fr 1fr; gap: 24px; } }
.lm-plan {
	position: relative; display: flex; flex-direction: column; align-items: center; gap: 14px;
	padding: clamp(28px, 4vw, 44px); border-radius: var(--radius-m); border: 1px solid var(--line);
	transition: border-color .4s var(--ease);
}
.lm-plan:hover { border-color: var(--line-strong); }
.lm-plan--featured { background: var(--surface); }
.lm-plan--featured::before { content: ""; position: absolute; top: -1px; left: 50%; translate: -50% 0; width: 48px; height: 3px; border-radius: 0 0 2px 2px; background: var(--blue); }
.lm-plan__tagline { font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.lm-plan__name { font-size: 1.5rem; }
.lm-plan .lm-price { font-size: clamp(2rem, 1.6rem + 1.6vw, 2.75rem); }
/* "+ IVA" sits small next to the amount, so the amount never wraps. */
.lm-price__amount { white-space: nowrap; }
.lm-price__tax { font-size: .42em; font-weight: 500; letter-spacing: 0; color: var(--muted); white-space: nowrap; }
.lm-plan__text { color: var(--muted); max-width: 36ch; }
.lm-plan .lm-btn { margin-top: auto; }

/* FAQ. */
.lm-faqs { border-top: 1px solid var(--line); }
.lm-faq { border-bottom: 1px solid var(--line); }
.lm-faq summary {
	display: flex; justify-content: space-between; align-items: center; gap: 24px;
	padding: 24px 0; cursor: pointer; list-style: none; font-weight: 600; font-size: 1.05rem;
	transition: color .2s var(--ease);
}
.lm-faq summary::-webkit-details-marker { display: none; }
/* The question is an h3 (answer engines read it as a heading) but looks like the summary text. */
.lm-faq summary h3 { font: inherit; letter-spacing: inherit; }
.lm-faq summary::after {
	content: ""; flex: none; width: 14px; height: 14px;
	background:
		linear-gradient(var(--fg), var(--fg)) center / 14px 1.5px no-repeat,
		linear-gradient(var(--fg), var(--fg)) center / 1.5px 14px no-repeat;
	opacity: .7;
	transition: transform .3s var(--ease), opacity .2s var(--ease);
}
.lm-faq[open] summary::after { transform: rotate(45deg); opacity: 1; }
.lm-faq summary:hover { color: var(--fg-soft); }
.lm-faq summary:hover::after { opacity: 1; }
.lm-faq p { padding: 0 40px 26px 0; color: var(--muted); max-width: 62ch; overflow: hidden; }

/* ───────────── Request form (same surface as the page) ───────────── */
.lm-request { display: grid; gap: 40px; align-items: start; }
.lm-request__intro { display: grid; gap: 20px; }
@media (min-width: 1000px) {
	.lm-request { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 72px; }
	.lm-request__intro { position: sticky; top: calc(var(--header-h) + 40px); }
}
.lm-form__grid { display: grid; gap: 22px; }
@media (min-width: 640px) { .lm-form__grid { grid-template-columns: 1fr 1fr; column-gap: 20px; } .lm-field--full { grid-column: 1 / -1; } }
.lm-field { display: grid; gap: 8px; align-content: start; }
.lm-field label { font-size: .84rem; font-weight: 600; letter-spacing: .01em; color: var(--fg); }
.lm-field input, .lm-field select {
	width: 100%; min-height: 50px; padding: 12px 14px;
	border: 1px solid var(--field-border); border-radius: var(--radius-s);
	background-color: rgba(11, 13, 16, .55); color: var(--fg); font: inherit; font-size: 1rem;
	transition: border-color .2s var(--ease), box-shadow .2s var(--ease), background-color .2s var(--ease);
	-webkit-appearance: none; appearance: none;
	scroll-margin-top: calc(var(--header-h) + 56px);
}
.lm-field select {
	padding-right: 42px; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23A7ACB4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 16px center; background-size: 12px 8px;
}
.lm-field select:invalid { color: var(--muted); }
/* Phone: country prefix + national number side by side. */
.lm-phone { display: grid; grid-template-columns: 8.2em minmax(0, 1fr); gap: 8px; }
.lm-phone select { padding-left: 12px; font-variant-numeric: tabular-nums; }
.lm-phone input { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.lm-field select option { background: var(--rock); color: var(--fg); }
.lm-field input:hover, .lm-field select:hover { border-color: rgba(241, 240, 236, .7); }
.lm-field input:focus, .lm-field select:focus { outline: none; border-color: var(--fg); background-color: rgba(11, 13, 16, .75); box-shadow: 0 0 0 3px var(--blue-glow); }
.lm-field input:-webkit-autofill { -webkit-text-fill-color: var(--fg); box-shadow: 0 0 0 1000px #15181D inset; caret-color: var(--fg); }
.lm-field [aria-invalid="true"] { border-color: var(--error); }
.lm-field [aria-invalid="true"]:focus { box-shadow: 0 0 0 3px rgba(255, 138, 122, .25); }
.lm-error { font-size: .82rem; font-weight: 500; color: var(--error); }
.lm-error:empty { display: none; }
.lm-check { display: flex; gap: 12px; align-items: flex-start; margin-top: 28px; font-size: .92rem; color: var(--fg-soft); }
.lm-check input {
	flex: none; width: 20px; height: 20px; margin: 2px 0 0;
	-webkit-appearance: none; appearance: none;
	border: 1px solid var(--field-border); border-radius: 4px; background: rgba(11, 13, 16, .55);
	cursor: pointer; scroll-margin-top: calc(var(--header-h) + 56px);
	transition: background-color .2s var(--ease), border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.lm-check input:hover { border-color: rgba(241, 240, 236, .7); }
.lm-check input:checked {
	border-color: var(--blue);
	background: var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.2l3 3 6-6.4' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat;
}
.lm-check input:focus-visible { outline: none; border-color: var(--fg); box-shadow: 0 0 0 3px var(--blue-glow); }
.lm-check input[aria-invalid="true"] { border-color: var(--error); }
.lm-check a, .lm-legal a, .lm-cookies a { color: var(--fg); text-decoration: underline; text-decoration-color: rgba(241, 240, 236, .5); text-decoration-thickness: 1px; text-underline-offset: 3px; transition: text-decoration-color .2s var(--ease); }
.lm-check a:hover, .lm-legal a:hover, .lm-cookies a:hover { text-decoration-color: var(--fg); }
.lm-check + .lm-error { margin-top: 6px; }
.lm-legal-note { margin: 20px 0 24px; font-size: .78rem; line-height: 1.55; color: var(--muted); }
.lm-status { margin-top: 14px; font-size: .9rem; font-weight: 600; color: var(--error); }
.lm-status:empty { display: none; }
.lm-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.lm-success { display: grid; gap: 12px; justify-items: start; padding-top: 8px; }
.lm-success:focus { outline: none; }
.lm-success__icon { width: 48px; height: 48px; margin-bottom: 8px; fill: none; stroke: #fff; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lm-success__icon { overflow: visible; }
.lm-success__icon circle { fill: var(--blue); stroke: none; }
.lm-success__icon .lm-success__wave { fill: none; stroke: var(--blue); stroke-width: 1.5; opacity: 0; }
.lm-success h3 { font-size: 1.35rem; }
.lm-success p { color: var(--muted); }

/* ───────────── Footer & cookies ───────────── */
.lm-footer { position: relative; padding-block: 48px; font-size: .88rem; border-top: 1px solid var(--line); }
.lm-footer__inner { display: grid; gap: 24px; }
.lm-footer__nav { display: flex; flex-wrap: wrap; gap: 10px 24px; color: var(--muted); }
.lm-footer__nav a, .lm-footer__nav .lm-linkbtn {
	text-decoration: none; transition: color .2s var(--ease), background-size .4s var(--ease);
	background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; padding-bottom: 2px;
}
.lm-footer__nav a:hover, .lm-footer__nav .lm-linkbtn:hover, .lm-footer__nav a:focus-visible { background-size: 100% 1px; }
.lm-footer__nav a:hover, .lm-footer__nav .lm-linkbtn:hover { color: var(--fg); }
.lm-footer__nav .lm-linkbtn { text-decoration: none; color: inherit; }
.lm-footer__copy { color: var(--muted); }
@media (min-width: 900px) {
	.lm-footer__inner { grid-template-columns: auto 1fr auto; align-items: center; gap: 40px; }
	.lm-footer__nav { justify-content: center; }
}

.lm-cookies {
	position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 40;
	max-width: 520px; margin-inline: auto; padding: 22px;
	background: rgba(11, 13, 16, .9);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	border: 1px solid var(--line-strong); border-radius: var(--radius-m);
	font-size: .9rem;
}
.lm-cookies p { color: var(--fg-soft); }
.lm-cookies__actions { display: flex; gap: 10px; margin-top: 16px; }
.lm-cookies__actions .lm-btn { flex: 1; }

/* ───────────── 404 ───────────── */
.lm-notfound { min-height: calc(100vh - var(--header-h) - 120px); display: flex; align-items: center; }
.lm-notfound h1 { margin: 20px 0; max-width: 16ch; }
.lm-notfound .lm-actions { margin-top: 32px; }

/* ───────────── Legal pages ───────────── */
.lm-legal-page { min-height: 70vh; }
.lm-legal { max-width: 760px; }
.lm-legal h1 { font-size: clamp(2rem, 1.5rem + 2vw, 2.9rem); margin-bottom: 32px; }
.lm-legal h2 { font-size: 1.25rem; margin: 48px 0 14px; padding-top: 24px; border-top: 1px solid var(--line); }
.lm-legal h2::before { display: none; }
.lm-legal p, .lm-legal li { color: var(--fg-soft); }
.lm-legal p { margin-bottom: 14px; }
.lm-legal ul { padding-left: 20px; margin: 0 0 14px; }
.lm-legal li { margin-bottom: 6px; }
.lm-legal strong { color: var(--fg); }
.lm-legal table { width: 100%; border-collapse: collapse; margin: 8px 0 20px; font-size: .9rem; display: block; overflow-x: auto; }
.lm-legal th, .lm-legal td { border-bottom: 1px solid var(--line); padding: 12px 14px 12px 0; text-align: left; vertical-align: top; color: var(--fg-soft); }
.lm-legal th { font-weight: 600; color: var(--fg); white-space: nowrap; }

/* ───────────── Interaction & storytelling details ───────────── */

/* Navigation between the landing and the legal pages: a soft cross-document transition. */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: lm-vt-out .35s var(--ease) both; }
::view-transition-new(root) { animation: lm-vt-in .55s var(--ease) both; }
@keyframes lm-vt-out { to { opacity: 0; transform: translateY(-10px); } }
@keyframes lm-vt-in { from { opacity: 0; transform: translateY(14px); } }

/* Problem: reading focus — the row in the middle of the screen is lit, the others dim. */
.lm-row > *, .lm-row::before { transition: opacity .6s var(--ease), transform .5s var(--ease); }
.lm-rows.is-reading .lm-row:not(.is-focus) > *, .lm-rows.is-reading .lm-row:not(.is-focus)::before { opacity: .72; }

/* Solution: each icon explains itself on hover (loops only while hovered). */
.lm-pillar:hover .lm-icon circle { animation: lm-node 1.4s var(--ease) infinite; }
.lm-pillar:hover .lm-icon circle:nth-of-type(2) { animation-delay: .2s; }
.lm-pillar:hover .lm-icon circle:nth-of-type(3) { animation-delay: .4s; }
.lm-pillar:hover .lm-icon circle:nth-of-type(4) { animation-delay: .6s; }
.lm-pillar:hover .lm-icon path { stroke-dasharray: .22 .78; animation: lm-trace 1.8s linear infinite; }
@keyframes lm-node { 0%, 100% { fill: transparent; } 35% { fill: var(--blue); } }
@keyframes lm-trace { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }

/* FAQ: the summary nudges and the icon turns on hover. */
.lm-faq summary { transition: color .2s var(--ease), padding-left .4s var(--ease); }
.lm-faq summary:hover { padding-left: 6px; }
.lm-faq:not([open]) summary:hover::after { transform: rotate(90deg); }

/* Form microinteractions. */
.lm-field label { transition: color .25s var(--ease), letter-spacing .25s var(--ease); }
.lm-field:not(:focus-within) label { color: var(--fg-soft); }
.lm-field:focus-within label { letter-spacing: .03em; }
.lm-field select:focus { background-position: right 13px center; }
.lm-check input:checked { animation: lm-check-pop .35s var(--ease); }
@keyframes lm-check-pop { 40% { transform: scale(1.18); } }
.is-shake { animation: lm-shake .42s cubic-bezier(.36, .07, .19, .97); }
@keyframes lm-shake { 20%, 60% { transform: translateX(-5px); } 40%, 80% { transform: translateX(5px); } }
.lm-btn[aria-busy="true"]::before {
	content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 35%;
	background: #fff; animation: lm-busy 1s var(--ease) infinite;
}
@keyframes lm-busy { from { transform: translateX(-100%); } to { transform: translateX(300%); } }

/* Legal pages: content waits for its entrance only while motion is active. */
.lm-motion .lm-legal > * { opacity: 0; }

/* ───────────── Motion ───────────── */
.lm-gl {
	position: fixed; left: 0; top: 0; z-index: -1;
	width: 100vw; height: 100vh; height: 100lvh;
	opacity: 0; transition: opacity 1.6s var(--ease); pointer-events: none;
}
.lm-gl.is-ready { opacity: 1; }

/* Elements GSAP animates start hidden, but only while html.lm-motion is set (see head.php). */
.lm-motion .lm-rise, .lm-motion .lm-reveal, .lm-motion .lm-hero__art, .lm-motion .lm-panel { opacity: 0; }
.lm-line-mask { padding-bottom: .14em; margin-bottom: -.14em; }


@media (prefers-reduced-motion: reduce) {
	@view-transition { navigation: none; }
	html { scroll-behavior: auto; }
	.lm *, .lm *::before, .lm *::after { animation: none !important; transition: none !important; }
	::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}
