/* ==========================================================================
   Reconleap theme — main stylesheet
   Source of truth: Reconleap Design System (tokens below mirror it).
   Architecture: 1 Fonts · 2 Tokens · 3 Base · 4 Layout · 5 Header/Footer ·
   6 Buttons · 7 Hero · 8 Sections & components · 9 Blocks/patterns ·
   10 Motion · 11 Utilities
   ========================================================================== */

/* 1. Fonts (self-hosted variable Plus Jakarta Sans, SIL OFL) ------------- */
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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;
}
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-latin-wght-normal.woff2") format("woff2");
	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;
}

/* 2. Design tokens -------------------------------------------------------- */
:root {
	/* Colour */
	--rl-navy: #071b33;
	--rl-dark-navy: #0b2748;
	--rl-near-black: #030b14;
	--rl-line-dark: #2a4a72;
	--rl-technical-blue: #1261a0;
	--rl-signal-blue: #2c83c8;
	--rl-sky: #6aaee3;
	--rl-signal-red: #d82f3f;
	--rl-deep-red: #a91f2d;
	--rl-red-on-dark: #ff6b76;
	--rl-white: #ffffff;
	--rl-soft-white: #f5f7f9;
	--rl-cool-gray: #d9e0e7;
	--rl-gray-300: #a9b6c6;
	--rl-mid-gray: #697586;
	--rl-muted: #5b6676;
	--rl-charcoal: #17202a;

	/* Semantic */
	--rl-bg: var(--rl-white);
	--rl-text: var(--rl-charcoal);
	--rl-link: var(--rl-technical-blue);
	--rl-border: var(--rl-cool-gray);
	--rl-border-strong: var(--rl-mid-gray);
	--rl-focus: var(--rl-technical-blue);

	/* Typography */
	--rl-font: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	--rl-fs-display: clamp(2.5rem, 5.6vw, 5.25rem);
	--rl-fs-h1: clamp(2.25rem, 4.4vw, 4rem);
	--rl-fs-h2: clamp(1.9375rem, 3.4vw, 3rem);
	--rl-fs-h3: clamp(1.5625rem, 2.2vw, 1.875rem);
	--rl-fs-h4: 1.3125rem;
	--rl-fs-lead: clamp(1.125rem, 1.6vw, 1.3125rem);
	--rl-fs-body: 1.0625rem;
	--rl-fs-small: 0.875rem;
	--rl-fs-eyebrow: 0.75rem;
	--rl-fs-button: 0.9375rem;
	--rl-fs-meta: 0.8125rem;
	--rl-fs-spec-label: 0.75rem;

	/* Spacing (4px based) */
	--rl-space-xs: 0.5rem;
	--rl-space-sm: 1rem;
	--rl-space-md: 1.5rem;
	--rl-space-lg: 2rem;
	--rl-space-xl: 3rem;
	--rl-space-2xl: 4rem;
	--rl-space-3xl: clamp(4rem, 9vw, 8rem);
	--rl-section-y: var(--rl-space-3xl);

	/* Layout */
	--rl-narrow: 760px;
	--rl-container: 1280px;
	--rl-wide: 1440px;
	--rl-gutter: clamp(1rem, 2.5vw, 2rem);
	--rl-header-h: 80px;

	/* Shape and depth */
	--rl-radius-0: 0;
	--rl-radius-xs: 2px;
	--rl-radius-sm: 4px;
	--rl-shadow-raised: 0 16px 40px -16px rgba(7, 27, 51, 0.22);

	/* Motion */
	--rl-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--rl-duration: 600ms;
	--rl-duration-fast: 200ms;
	--rl-stagger: 110ms;
	--rl-travel: 24px;

	/* Layers */
	--rl-z-content: 1;
	--rl-z-sticky: 50;
	--rl-z-header: 100;
	--rl-z-menu: 200;
	--rl-z-skip: 300;
}

@media (max-width: 767px) {
	:root { --rl-travel: 16px; --rl-header-h: 64px; }
}

/* 3. Base ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--rl-bg);
	color: var(--rl-text);
	font-family: var(--rl-font);
	font-size: var(--rl-fs-body);
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--rl-link); text-underline-offset: 0.2em; }
a:hover { color: var(--rl-navy); }
h1, h2, h3, h4 { font-family: var(--rl-font); margin: 0 0 var(--rl-space-sm); color: inherit; text-wrap: balance; }
h1 { font-size: var(--rl-fs-h1); font-weight: 700; line-height: 1.05; letter-spacing: -0.025em; }
h2 { font-size: var(--rl-fs-h2); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; }
h3 { font-size: var(--rl-fs-h3); font-weight: 600; line-height: 1.2; letter-spacing: -0.01em; }
h4 { font-size: var(--rl-fs-h4); font-weight: 600; line-height: 1.3; }
p { margin: 0 0 var(--rl-space-sm); }
ul, ol { margin: 0; padding: 0; }
:focus-visible { outline: 2px solid var(--rl-focus); outline-offset: 2px; }
.rl-section--dark :focus-visible, .rl-header :focus-visible, .rl-footer :focus-visible { outline-color: var(--rl-sky); }
::selection { background: var(--rl-navy); color: var(--rl-white); }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal;
}
.rl-skip-link {
	position: absolute; left: var(--rl-space-sm); top: -100px; z-index: var(--rl-z-skip);
	background: var(--rl-white); color: var(--rl-navy); padding: 0.75rem 1rem; font-weight: 600; border-radius: var(--rl-radius-sm);
}
.rl-skip-link:focus { top: var(--rl-space-sm); }

/* 4. Layout ----------------------------------------------------------------- */
.rl-container { width: 100%; max-width: var(--rl-container); margin-inline: auto; padding-inline: var(--rl-gutter); }
.rl-container--wide { max-width: var(--rl-wide); }
.rl-container--text { max-width: calc(var(--rl-narrow) + var(--rl-gutter) * 2); }
.rl-section { padding-block: var(--rl-section-y); background: var(--rl-bg); color: var(--rl-text); }
.rl-section--soft { background: var(--rl-soft-white); }
.rl-section--dark { background: var(--rl-navy); color: var(--rl-white); }
.rl-section--dark .rl-muted, .rl-section--dark .rl-lead { color: var(--rl-gray-300); }
.rl-section--dark a:not(.rl-btn) { color: var(--rl-sky); }
.rl-section__head { max-width: var(--rl-narrow); margin-bottom: var(--rl-space-xl); }
.rl-split { display: grid; gap: var(--rl-space-2xl); grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); align-items: start; }
@media (min-width: 900px) { .rl-split { grid-template-columns: 1fr 1.2fr; } .rl-split--form { grid-template-columns: 1.4fr 1fr; } }
.rl-grid { display: grid; gap: var(--rl-space-lg); list-style: none; }
.rl-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.rl-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr)); }
.rl-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.rl-main { display: block; }
.rl-main:focus { outline: none; }
.rl-content > *:not(.alignfull):not(.alignwide):not(.rl-section) { max-width: calc(var(--rl-narrow) + var(--rl-gutter) * 2); margin-inline: auto; padding-inline: var(--rl-gutter); }
.rl-content--full > * { max-width: none; }
.rl-container--text.rl-content > * { padding-inline: 0; }
.rl-content > .alignfull { width: 100%; max-width: none; }
.rl-content > .alignwide { max-width: var(--rl-container); margin-inline: auto; }
.rl-lead { font-size: var(--rl-fs-lead); line-height: 1.55; max-width: 60ch; margin-bottom: var(--rl-space-md); }
.rl-lead--ink { color: var(--rl-charcoal); }
.rl-muted { color: var(--rl-muted); }
.rl-small { font-size: var(--rl-fs-small); }
.rl-meta { font-size: var(--rl-fs-meta); font-weight: 500; letter-spacing: 0.02em; font-variant-numeric: tabular-nums; color: var(--rl-muted); margin: 0 0 var(--rl-space-xs); }
.rl-subhead { font-size: var(--rl-fs-h4); margin-top: var(--rl-space-lg); }
.rl-eyebrow {
	font-size: var(--rl-fs-eyebrow); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--rl-technical-blue); margin: 0 0 var(--rl-space-sm); line-height: 1.3;
}
.rl-section--dark .rl-eyebrow, .rl-hero .rl-eyebrow { color: var(--rl-sky); }
.rl-tag {
	display: inline-block; margin-left: var(--rl-space-sm); padding: 0.2rem 0.5rem; border: 1px solid currentColor;
	border-radius: var(--rl-radius-xs); font-size: var(--rl-fs-eyebrow); letter-spacing: 0.08em;
}
.rl-statement { font-size: var(--rl-fs-h3); font-weight: 600; letter-spacing: -0.01em; margin-top: var(--rl-space-xl); }

/* 5. Header and footer -------------------------------------------------------- */
.rl-header {
	position: sticky; top: 0; z-index: var(--rl-z-header);
	background: var(--rl-navy); color: var(--rl-white); border-bottom: 1px solid var(--rl-line-dark);
	transition: box-shadow var(--rl-duration-fast) ease;
}
.rl-header.is-scrolled { box-shadow: var(--rl-shadow-raised); }
.rl-header__inner { min-height: var(--rl-header-h); display: flex; align-items: center; justify-content: space-between; gap: var(--rl-space-md); }
.rl-wordmark { color: var(--rl-white); text-decoration: none; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; font-size: 1.125rem; }
.rl-wordmark:hover { color: var(--rl-sky); }
.rl-brand .custom-logo { max-height: 40px; width: auto; }
.rl-brand .custom-logo-link { display: block; }
.rl-nav-wrap { display: flex; align-items: center; gap: var(--rl-space-lg); }
.rl-menu { list-style: none; display: flex; gap: var(--rl-space-lg); margin: 0; padding: 0; }
.rl-menu li { position: relative; }
.rl-menu a { color: var(--rl-white); text-decoration: none; font-size: var(--rl-fs-button); font-weight: 500; display: inline-flex; align-items: center; min-height: 44px; }
.rl-menu a:hover, .rl-menu .current-menu-item > a, .rl-menu a[aria-current="page"] { color: var(--rl-sky); }
.rl-menu .sub-menu {
	list-style: none; margin: 0; padding: var(--rl-space-xs) 0; position: absolute; left: 0; top: 100%; min-width: 14rem;
	background: var(--rl-navy); border: 1px solid var(--rl-line-dark); box-shadow: var(--rl-shadow-raised);
	opacity: 0; visibility: hidden; transform: translateY(4px); transition: opacity var(--rl-duration-fast) ease, transform var(--rl-duration-fast) ease, visibility var(--rl-duration-fast);
}
.rl-menu li:hover > .sub-menu, .rl-menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.rl-menu .sub-menu a { padding: 0 var(--rl-space-md); width: 100%; }
.rl-nav-toggle { display: none; align-items: center; gap: 0.75rem; min-height: 44px; min-width: 44px; padding: 0 0.75rem; background: transparent; color: var(--rl-white); border: 1px solid var(--rl-gray-300); border-radius: var(--rl-radius-sm); font: inherit; font-weight: 600; cursor: pointer; }
.rl-nav-toggle__bars, .rl-nav-toggle__bars::before, .rl-nav-toggle__bars::after { display: block; width: 20px; height: 2px; background: currentColor; transition: transform var(--rl-duration-fast) ease, opacity var(--rl-duration-fast) ease; }
.rl-nav-toggle__bars { position: relative; }
.rl-nav-toggle__bars::before, .rl-nav-toggle__bars::after { content: ""; position: absolute; left: 0; }
.rl-nav-toggle__bars::before { top: -6px; }
.rl-nav-toggle__bars::after { top: 6px; }
.rl-nav-toggle[aria-expanded="true"] .rl-nav-toggle__bars { background: transparent; }
.rl-nav-toggle[aria-expanded="true"] .rl-nav-toggle__bars::before { transform: translateY(6px) rotate(45deg); }
.rl-nav-toggle[aria-expanded="true"] .rl-nav-toggle__bars::after { transform: translateY(-6px) rotate(-45deg); }

@media (max-width: 1023px) {
	.rl-header__inner { flex-wrap: wrap; padding-block: var(--rl-space-xs); }
	.js .rl-nav-toggle { display: inline-flex; }
	.rl-nav-wrap { flex-direction: column; align-items: stretch; width: 100%; gap: var(--rl-space-md); padding-bottom: var(--rl-space-md); }
	.js .rl-header__inner { flex-wrap: nowrap; padding-block: 0; }
	.js .rl-nav-wrap {
		position: absolute; left: 0; right: 0; top: 100%; z-index: var(--rl-z-menu); width: auto;
		padding: var(--rl-space-md) var(--rl-gutter) var(--rl-space-lg); background: var(--rl-navy);
		border-top: 1px solid var(--rl-line-dark); box-shadow: var(--rl-shadow-raised); display: none; max-height: calc(100vh - var(--rl-header-h)); overflow-y: auto;
	}
	.js .rl-nav-wrap.is-open { display: flex; }
	.rl-menu { flex-direction: column; gap: 0; }
	.rl-menu a { font-size: var(--rl-fs-h4); font-weight: 600; width: 100%; min-height: 52px; border-bottom: 1px solid var(--rl-line-dark); }
	.rl-menu .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; border: 0; box-shadow: none; padding-left: var(--rl-space-md); }
	.rl-header__cta .rl-btn { width: 100%; }
}

.rl-footer { background: var(--rl-near-black); color: var(--rl-gray-300); padding-block: var(--rl-space-2xl) var(--rl-space-lg); }
.rl-footer a { color: var(--rl-sky); text-decoration: none; }
.rl-footer a:hover { text-decoration: underline; color: var(--rl-white); }
.rl-footer__top { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--rl-space-xl); }
.rl-footer__brand { max-width: 36ch; }
.rl-footer__brand p { margin-top: var(--rl-space-sm); font-size: 0.9375rem; }
.rl-footer__contact { list-style: none; font-size: 0.9375rem; display: grid; gap: 0.25rem; }
.rl-footer .rl-menu, .rl-footer__menu { list-style: none; display: flex; flex-wrap: wrap; gap: var(--rl-space-xs) var(--rl-space-lg); margin: 0; padding: 0; }
.rl-footer .rl-menu a { color: var(--rl-sky); min-height: 44px; font-weight: 500; font-size: 0.9375rem; border: 0; }
.rl-footer__bottom { border-top: 1px solid var(--rl-line-dark); margin-top: var(--rl-space-xl); padding-top: var(--rl-space-md); font-size: var(--rl-fs-meta); letter-spacing: 0.02em; }

/* 6. Buttons ---------------------------------------------------------------------- */
.rl-btn, .wp-block-button__link {
	display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 1.5rem;
	border: 1px solid transparent; border-radius: var(--rl-radius-sm); font-family: var(--rl-font); font-size: var(--rl-fs-button);
	font-weight: 600; letter-spacing: 0.01em; line-height: 1; text-decoration: none; cursor: pointer;
	transition: background-color var(--rl-duration-fast) ease, color var(--rl-duration-fast) ease, border-color var(--rl-duration-fast) ease, transform var(--rl-duration-fast) var(--rl-ease);
}
.rl-btn--red, .is-style-rl-red .wp-block-button__link { background: var(--rl-signal-red); color: var(--rl-white); }
.rl-btn--red:hover, .is-style-rl-red .wp-block-button__link:hover { background: var(--rl-deep-red); color: var(--rl-white); transform: translateY(-1px); }
.rl-btn--navy, .is-style-rl-navy .wp-block-button__link { background: var(--rl-navy); color: var(--rl-white); }
.rl-btn--navy:hover, .is-style-rl-navy .wp-block-button__link:hover { background: var(--rl-dark-navy); color: var(--rl-white); transform: translateY(-1px); }
.rl-btn--ghost, .is-style-rl-ghost .wp-block-button__link { background: transparent; color: var(--rl-white); border-color: var(--rl-gray-300); }
.rl-btn--ghost:hover, .is-style-rl-ghost .wp-block-button__link:hover { background: var(--rl-dark-navy); color: var(--rl-white); }
.rl-btn--outline { background: transparent; color: var(--rl-navy); border-color: var(--rl-navy); }
.rl-btn--outline:hover { background: var(--rl-navy); color: var(--rl-white); }
.rl-actions { display: flex; flex-wrap: wrap; gap: var(--rl-space-sm); margin-top: var(--rl-space-md); }
.wp-block-buttons { gap: var(--rl-space-sm); margin-top: var(--rl-space-md); }

/* 7. Hero --------------------------------------------------------------------------- */
.rl-hero { padding-block: clamp(3rem, 7vw, 7rem); }
.rl-hero .rl-breadcrumbs { margin-bottom: var(--rl-space-xl); }
.rl-hero__grid { display: grid; gap: var(--rl-space-2xl); align-items: center; }
@media (min-width: 900px) { .rl-hero__grid--split { grid-template-columns: 1.1fr 1fr; } }
.rl-hero__title { font-size: var(--rl-fs-h1); max-width: 18ch; }
.rl-hero--home .rl-hero__title, .rl-display { font-size: var(--rl-fs-display); font-weight: 800; line-height: 1; letter-spacing: -0.03em; max-width: 14ch; }
.rl-hero__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--rl-radius-0); }
.rl-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; padding: 0; margin: 0; font-size: var(--rl-fs-meta); font-weight: 500; letter-spacing: 0.02em; }
.rl-breadcrumbs li + li::before { content: "/"; margin-right: 0.5rem; opacity: 0.6; }
.rl-breadcrumbs a { color: var(--rl-sky); }
.rl-breadcrumbs [aria-current] { color: var(--rl-gray-300); }
.rl-final-cta .rl-container > h2 { max-width: 22ch; }

/* 8. Sections and components ------------------------------------------------------------ */
.rl-card { background: var(--rl-white); border: 1px solid var(--rl-border); border-radius: var(--rl-radius-sm); overflow: hidden; display: flex; flex-direction: column; transition: border-color var(--rl-duration-fast) ease, transform var(--rl-duration-fast) var(--rl-ease); }
.rl-card:hover, .rl-card:focus-within { border-color: var(--rl-technical-blue); transform: translateY(-2px); }
.rl-card__link { display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none; }
.rl-card__media { aspect-ratio: 16 / 10; background: var(--rl-soft-white); border-bottom: 1px solid var(--rl-border); display: flex; align-items: flex-end; overflow: hidden; }
.rl-card__media img { width: 100%; height: 100%; object-fit: cover; }
.rl-card__body { padding: var(--rl-space-lg); display: flex; flex-direction: column; gap: 0.25rem; flex: 1; }
.rl-card__title { font-size: var(--rl-fs-h3); margin-bottom: var(--rl-space-xs); }
.rl-card--mission .rl-card__title { font-size: var(--rl-fs-h4); }
.rl-card__body p { color: var(--rl-muted); font-size: 1rem; }
.rl-card__body .rl-eyebrow { margin-bottom: var(--rl-space-xs); }
.rl-card__cta { margin-top: auto; padding-top: var(--rl-space-sm); font-weight: 600; color: var(--rl-technical-blue); }
.rl-placeholder__label { padding: var(--rl-space-sm); font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rl-muted); }

.rl-tile { background: var(--rl-white); border: 1px solid var(--rl-border); border-radius: var(--rl-radius-sm); padding: var(--rl-space-lg); }
.rl-tile h3 { font-size: var(--rl-fs-h4); margin-bottom: var(--rl-space-xs); }
.rl-tile p { color: var(--rl-muted); font-size: 1rem; margin: 0; }
.rl-section--soft .rl-tile { background: var(--rl-white); }

.rl-linklist { list-style: none; border-top: 1px solid var(--rl-border); margin-top: var(--rl-space-md); }
.rl-linklist li { padding: var(--rl-space-sm) 0; border-bottom: 1px solid var(--rl-border); font-size: 1.1875rem; font-weight: 500; }

.rl-chain { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); border-top: 1px solid var(--rl-line-dark); }
.rl-chain__node { padding: var(--rl-space-md) var(--rl-space-md) 0 0; display: flex; flex-direction: column; gap: 0.5rem; position: relative; }
.rl-chain__num { font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; color: var(--rl-gray-300); font-variant-numeric: tabular-nums; }
.rl-chain__name { font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.rl-chain__note { font-size: var(--rl-fs-small); color: var(--rl-gray-300); }
.rl-chain__flag { display: inline-flex; align-items: center; gap: 0.5rem; font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rl-red-on-dark); }
.rl-chain__flag::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--rl-red-on-dark); }
.rl-chain--light { border-top-color: var(--rl-navy); }
.rl-chain--light .rl-chain__num, .rl-chain--light .rl-chain__note { color: var(--rl-muted); }
.rl-chain--light .rl-chain__flag { color: var(--rl-deep-red); }
.rl-chain--light .rl-chain__flag::before { background: var(--rl-signal-red); }

.rl-steps { list-style: none; display: grid; gap: var(--rl-space-lg); grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.rl-steps li { border-top: 1px solid var(--rl-border); padding-top: var(--rl-space-md); }
.rl-steps__num { width: 40px; height: 40px; border-radius: 50%; background: var(--rl-navy); color: var(--rl-white); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; margin-bottom: var(--rl-space-sm); }
.rl-steps li:last-child .rl-steps__num { background: var(--rl-signal-red); }
.rl-steps h3 { font-size: var(--rl-fs-h4); margin-bottom: var(--rl-space-xs); }
.rl-steps p { color: var(--rl-muted); }

.rl-specs { width: 100%; border-collapse: collapse; border-top: 1px solid var(--rl-charcoal); margin-bottom: var(--rl-space-md); font-variant-numeric: tabular-nums; }
.rl-specs th, .rl-specs td { text-align: left; padding: 1.25rem 1rem 1.25rem 0; border-bottom: 1px solid var(--rl-border); vertical-align: top; }
.rl-specs tbody th { width: 34%; font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rl-muted); }
.rl-specs td { font-size: 1rem; font-weight: 500; }
@media (max-width: 767px) {
	.rl-specs, .rl-specs tbody, .rl-specs tr, .rl-specs th, .rl-specs td { display: block; width: 100%; }
	.rl-specs tbody th { padding: 1rem 0 0.25rem; border-bottom: 0; width: 100%; }
	.rl-specs td { padding: 0 0 1rem; }
}

.rl-faq { border-top: 1px solid var(--rl-charcoal); }
.rl-faq__item { border-bottom: 1px solid var(--rl-border); }
.rl-faq__item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: var(--rl-space-sm); min-height: 44px; padding: 1.25rem 0; font-size: var(--rl-fs-h4); font-weight: 600; }
.rl-faq__item summary::-webkit-details-marker { display: none; }
.rl-faq__item summary::after { content: "+"; font-size: 1.5rem; color: var(--rl-technical-blue); flex: none; }
.rl-faq__item[open] summary::after { content: "−"; }
.rl-faq__item p { color: var(--rl-muted); margin: 0 0 1.25rem; max-width: 62ch; }

.rl-form-wrap { max-width: 44rem; }
.rl-form-fallback { border: 1px dashed var(--rl-border-strong); border-radius: var(--rl-radius-sm); background: var(--rl-soft-white); padding: var(--rl-space-lg); }
.rl-form-wrap label { display: block; font-size: 0.9375rem; font-weight: 600; margin-bottom: 0.4rem; }
.rl-form-wrap input[type="text"], .rl-form-wrap input[type="email"], .rl-form-wrap input[type="tel"], .rl-form-wrap input[type="url"], .rl-form-wrap select, .rl-form-wrap textarea,
.search-field {
	width: 100%; min-height: 48px; padding: 0.75rem 1rem; border: 1px solid var(--rl-border-strong); border-radius: var(--rl-radius-xs);
	background: var(--rl-soft-white); color: var(--rl-charcoal); font: inherit; font-size: 1rem;
}
.rl-form-wrap textarea { min-height: 7.5rem; resize: vertical; }
.rl-form-wrap input[type="checkbox"], .rl-form-wrap input[type="radio"] { width: 24px; height: 24px; accent-color: var(--rl-navy); }
.rl-form-wrap input[type="submit"], .rl-form-wrap button[type="submit"], .search-submit { min-height: 48px; padding: 0 1.5rem; border: 0; border-radius: var(--rl-radius-sm); background: var(--rl-signal-red); color: var(--rl-white); font: inherit; font-weight: 600; cursor: pointer; }
.rl-form-wrap input[type="submit"]:hover, .rl-form-wrap button[type="submit"]:hover, .search-submit:hover { background: var(--rl-deep-red); }
.rl-form-wrap [aria-invalid="true"], .wpcf7-not-valid { border-color: var(--rl-deep-red); }
.rl-form-wrap .wpcf7-not-valid-tip, .rl-form-wrap .validation_message, .rl-form-wrap .wpforms-error { color: var(--rl-deep-red); font-size: var(--rl-fs-small); font-weight: 500; }
.rl-aside { border-top: 1px solid var(--rl-charcoal); padding-top: var(--rl-space-md); }
.rl-search-form { max-width: 36rem; margin-bottom: var(--rl-space-xl); }
.search-form { display: flex; gap: var(--rl-space-xs); }
.rl-figure { margin: 0 0 var(--rl-space-lg); }

.pagination { margin-top: var(--rl-space-xl); }
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: var(--rl-space-xs); }
.pagination .page-numbers { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 0.75rem; border: 1px solid var(--rl-border-strong); border-radius: var(--rl-radius-sm); text-decoration: none; font-weight: 600; }
.pagination .page-numbers.current { background: var(--rl-navy); border-color: var(--rl-navy); color: var(--rl-white); }

/* 9. Blocks / patterns ------------------------------------------------------------------------ */
.wp-block-group.rl-section { padding-inline: var(--rl-gutter); }
.wp-block-group.rl-section > * { max-width: var(--rl-container); }
.wp-block-group.rl-section > .wp-block-group { padding: 0; }
.rl-section h1, .rl-section h2, .rl-section h3, .rl-section p { color: inherit; }
.rl-section--dark .wp-block-heading, .rl-section--dark p { color: var(--rl-white); }
.rl-section--dark p.rl-lead, .rl-section--dark p.rl-muted, .rl-section--dark .rl-note { color: var(--rl-gray-300); }
.wp-block-group.rl-grid { display: grid; }
.wp-block-group.rl-grid > * { margin: 0; max-width: none; }
.wp-block-group.rl-tile > *:last-child { margin-bottom: 0; }
.rl-section--dark .rl-tile { background: var(--rl-dark-navy); border-color: var(--rl-line-dark); }
.rl-section--dark .rl-tile h3, .rl-section--dark .rl-tile p { color: var(--rl-white); }
.rl-section--dark .rl-tile p { color: var(--rl-gray-300); }
.rl-sequence { display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); border: 1px solid var(--rl-border); }
.rl-sequence > * { padding: var(--rl-space-lg); border-right: 1px solid var(--rl-border); margin: 0; }
.rl-sequence > *:last-child { border-right: 0; background: var(--rl-soft-white); }
.rl-sequence .rl-meta { margin-bottom: var(--rl-space-sm); }
.rl-sequence .is-priority .rl-meta { color: var(--rl-deep-red); }
.rl-sequence .is-priority .rl-meta::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--rl-signal-red); margin-right: 0.5rem; }
.rl-nodes { display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); border-top: 1px solid var(--rl-navy); }
.rl-nodes > * { padding: var(--rl-space-md) var(--rl-space-md) 0 0; margin: 0; }
.rl-nodes .is-human .rl-meta { color: var(--rl-deep-red); }
.rl-nodes .is-human .rl-meta::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--rl-signal-red); margin-right: 0.5rem; }
.rl-section--dark .rl-nodes { border-top-color: var(--rl-line-dark); }
.rl-section--dark .rl-nodes .rl-meta { color: var(--rl-gray-300); }
.rl-section--dark .rl-nodes .is-human .rl-meta { color: var(--rl-red-on-dark); }
.rl-section--dark .rl-nodes .is-human .rl-meta::before { background: var(--rl-red-on-dark); }
.rl-checklist > * { padding: 1rem 0; border-top: 1px solid var(--rl-border); margin: 0; font-size: 1.1875rem; font-weight: 500; }
.rl-checklist > *:last-child { border-bottom: 1px solid var(--rl-border); }
.rl-image-slot { aspect-ratio: 4 / 3; background: var(--rl-soft-white); border: 1px solid var(--rl-border); display: flex; align-items: flex-end; padding: var(--rl-space-md); }
.rl-section--dark .rl-image-slot { background: var(--rl-dark-navy); border-color: var(--rl-line-dark); }
.rl-image-slot p { font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rl-muted); margin: 0; }
.rl-section--dark .rl-image-slot p { color: var(--rl-gray-300); }
.wp-block-image.rl-image img { width: 100%; height: auto; }
.wp-block-table.rl-spec-table table { border-top: 1px solid var(--rl-charcoal); font-variant-numeric: tabular-nums; }
.wp-block-table.rl-spec-table td { padding: 1.25rem 1rem 1.25rem 0; border: 0; border-bottom: 1px solid var(--rl-border); vertical-align: top; }
.wp-block-table.rl-spec-table td:first-child { width: 34%; font-size: var(--rl-fs-spec-label); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rl-muted); }
@media (max-width: 767px) {
	.wp-block-table.rl-spec-table table, .wp-block-table.rl-spec-table tbody, .wp-block-table.rl-spec-table tr, .wp-block-table.rl-spec-table td { display: block; width: 100%; }
	.wp-block-table.rl-spec-table td:first-child { padding-bottom: 0.25rem; border-bottom: 0; width: 100%; }
}
.rl-quote { border: 0; border-top: 1px solid var(--rl-navy); padding: var(--rl-space-lg) 0 0; margin: 0; font-size: var(--rl-fs-h3); font-weight: 600; letter-spacing: -0.01em; line-height: 1.25; }
.rl-callout { border: 1px solid var(--rl-border); border-left: 4px solid var(--rl-navy); border-radius: var(--rl-radius-sm); padding: var(--rl-space-lg); background: var(--rl-soft-white); }
.rl-note { font-size: var(--rl-fs-meta); font-weight: 500; letter-spacing: 0.02em; color: var(--rl-muted); }

/* 10. Motion ---------------------------------------------------------------------------------- */
/* Content is visible by default. Hiding only applies when JS has flagged the document (js-anim). */
.js-anim .rl-reveal { opacity: 0; transform: translateY(var(--rl-travel)); transition: opacity var(--rl-duration) var(--rl-ease), transform var(--rl-duration) var(--rl-ease); transition-delay: calc(var(--rl-i, 0) * var(--rl-stagger)); will-change: opacity, transform; }
.js-anim .rl-reveal.is-visible { opacity: 1; transform: none; will-change: auto; }
.js-anim .rl-reveal--mask { transform: none; clip-path: inset(0 0 100% 0); transition: opacity var(--rl-duration) var(--rl-ease), clip-path 800ms var(--rl-ease); }
.js-anim .rl-reveal--mask.is-visible { clip-path: inset(0 0 0 0); }
.js-anim .rl-draw path, .js-anim .rl-draw line { stroke-dasharray: var(--rl-len, 1); stroke-dashoffset: var(--rl-len, 1); transition: stroke-dashoffset 1200ms var(--rl-ease); }
.js-anim .rl-draw.is-visible path, .js-anim .rl-draw.is-visible line { stroke-dashoffset: 0; }
.rl-no-anim .rl-reveal, .rl-no-anim .rl-reveal--mask { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: none !important; }
@media (max-width: 767px) { .js-anim .rl-reveal--mask { clip-path: none; } }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; transition-delay: 0ms !important; }
	.js-anim .rl-reveal, .js-anim .rl-reveal--mask { opacity: 1; transform: none; clip-path: none; }
	.rl-card:hover, .rl-btn:hover { transform: none; }
}

/* 11. Utilities -------------------------------------------------------------------------------- */
.alignwide { max-width: var(--rl-container); margin-inline: auto; }
.alignfull { width: 100%; max-width: none; }
.has-text-align-center { text-align: center; }

/* Pattern layout resets (group blocks add flow margins) */
.wp-block-group.rl-split > *, .wp-block-group.rl-steps > * { margin: 0; max-width: none; }
.rl-draw { width: 100%; height: 12px; margin-bottom: var(--rl-space-sm); color: var(--rl-sky); }
.rl-hero--home .wp-block-heading.rl-hero__title { font-size: var(--rl-fs-display); font-weight: 800; line-height: 1; letter-spacing: -0.03em; }
.rl-hero .wp-block-buttons { margin-top: var(--rl-space-md); }

.rl-hero__audience { margin-top: var(--rl-space-md); color: var(--rl-gray-300); }
.rl-section--dark .rl-tile .rl-meta { color: var(--rl-gray-300); }

/* Filled image slot */
.rl-image-slot:has(img) { position: relative; display: block; padding: 0; overflow: hidden; }
.rl-image-slot:has(img) > .wp-block-image { position: absolute; inset: 0; margin: 0; width: 100%; height: 100%; }
.rl-image-slot:has(img) > .wp-block-image img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center; }

/* Product card image: show the whole product, uncropped */
.rl-card--product .rl-card__media { align-items: center; justify-content: center; }
.rl-card--product .rl-card__media img { width: 100%; height: 100%; object-fit: contain; }

/* Approach flow */
.rl-approach{--flow-gap:clamp(48px,6vw,96px);--flow-line:var(--rl-sky);--flow-human:var(--rl-red-on-dark);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--flow-gap);row-gap:var(--rl-space-lg);align-items:start;margin-top:var(--rl-space-xl)}
.rl-approach__lead{color:var(--rl-gray-300);max-width:456px;margin:0}
.rl-approach .rl-stage{display:flex;flex-direction:column;margin:0;position:relative}
.rl-approach .rl-stage__meta{margin:0 0 4px;font-size:12px;line-height:16px;font-weight:600;letter-spacing:.04em;color:var(--rl-sky)}
.rl-approach .rl-stage--human .rl-stage__meta{color:var(--flow-human)}
.rl-approach .rl-stage__title{margin:0 0 var(--rl-space-md);font-size:20px;line-height:28px;font-weight:700;color:var(--rl-white)}
.rl-approach .rl-sources{position:relative;display:grid;grid-template-rows:repeat(4,52px);gap:16px;height:256px;margin:0}
.rl-approach .rl-source{position:relative;display:flex;align-items:center;height:52px;margin:0;padding:0 16px;box-sizing:border-box;background:var(--rl-dark-navy);border:1px solid var(--rl-line-dark);border-left:3px solid var(--rl-sky);border-radius:var(--rl-radius-sm);font-size:15px;font-weight:600;color:var(--rl-white)}
.rl-approach .rl-source::after{content:'';position:absolute;left:100%;top:50%;width:calc(var(--flow-gap) / 2);height:2px;margin-top:-1px;background:var(--flow-line)}
.rl-approach .rl-sources::before{content:'';position:absolute;left:calc(100% + var(--flow-gap) / 2 - 1px);top:26px;width:2px;height:204px;background:var(--flow-line)}
.rl-approach .rl-sources::after{content:'';position:absolute;left:calc(100% + var(--flow-gap) / 2);top:123px;width:calc(var(--flow-gap) / 2);height:10px;background:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 10%27%3E%3Cpath d=%27M0 0L8 5L0 10Z%27 fill=%27%236aaee3%27/%3E%3C/svg%3E') right center/8px 10px no-repeat,linear-gradient(var(--flow-line),var(--flow-line)) left center/calc(100% - 2px) 2px no-repeat}
.rl-approach .rl-stage__card{position:relative;display:flex;flex-direction:column;justify-content:flex-end;box-sizing:border-box;min-height:256px;margin:0;padding:24px;background-color:var(--rl-dark-navy);background-repeat:no-repeat;background-position:24px 24px;background-size:32px 32px;border:1px solid var(--rl-line-dark);border-radius:var(--rl-radius-sm);font-size:15px;line-height:24px;font-weight:500;color:var(--rl-gray-300)}
.rl-approach .rl-stage--edge .rl-stage__card{background-image:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236aaee3%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Crect x=%276%27 y=%276%27 width=%2712%27 height=%2712%27 rx=%271%27/%3E%3Crect x=%279.5%27 y=%279.5%27 width=%275%27 height=%275%27/%3E%3Cpath d=%27M9 2v4M15 2v4M9 18v4M15 18v4M2 9h4M2 15h4M18 9h4M18 15h4%27/%3E%3C/svg%3E')}
.rl-approach .rl-stage--mission .rl-stage__card{background-image:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236aaee3%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 3 3 8l9 5 9-5-9-5z%27/%3E%3Cpath d=%27M3 12l9 5 9-5%27/%3E%3Cpath d=%27M3 16l9 5 9-5%27/%3E%3C/svg%3E')}
.rl-approach .rl-stage--human .rl-stage__card{border:2px solid var(--flow-human);background-image:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%23ff6b76%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%278%27 r=%273.5%27/%3E%3Cpath d=%27M5 20c0-3.9 3.1-7 7-7s7 3.1 7 7%27/%3E%3C/svg%3E')}
.rl-approach .rl-stage--edge .rl-stage__card::after,.rl-approach .rl-stage--mission .rl-stage__card::after{content:'';position:absolute;left:calc(100% + 1px);top:127px;width:var(--flow-gap);height:10px;margin-top:-5px;background:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 10%27%3E%3Cpath d=%27M0 0L8 5L0 10Z%27 fill=%27%236aaee3%27/%3E%3C/svg%3E') right center/8px 10px no-repeat,linear-gradient(var(--flow-line),var(--flow-line)) left center/calc(100% - 2px) 2px no-repeat}
.rl-approach .rl-stage--mission .rl-stage__card::after{background:url('data:image/svg+xml;utf8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 10%27%3E%3Cpath d=%27M0 0L8 5L0 10Z%27 fill=%27%23ff6b76%27/%3E%3C/svg%3E') right center/8px 10px no-repeat,linear-gradient(var(--flow-human),var(--flow-human)) left center/calc(100% - 2px) 2px no-repeat}
.rl-approach .rl-stage--edge .rl-stage__card::before,.rl-approach .rl-stage--mission .rl-stage__card::before{position:absolute;left:calc(100% + 1px);top:103px;width:var(--flow-gap);text-align:center;font-size:13px;line-height:16px;font-weight:500;color:var(--rl-gray-300);white-space:nowrap}
.rl-approach .rl-stage--edge .rl-stage__card::before{content:'Events'}
.rl-approach .rl-stage--mission .rl-stage__card::before{content:'Evidence'}
.rl-approach .rl-flow-note{margin:0;padding-top:14px;border-top:3px solid var(--rl-signal-blue);font-size:16px;line-height:24px;font-weight:700;color:var(--rl-sky)}
.rl-approach .rl-flow-note--ai{grid-column:2/4;grid-row:2}
.rl-approach .rl-flow-note--human{grid-column:4;grid-row:2;border-top-color:var(--flow-human);color:var(--flow-human)}
@media (max-width:1099px){
.rl-approach{grid-template-columns:1fr;row-gap:0}
.rl-approach .rl-stage:not(:last-child)::after{content:'';display:block;width:2px;height:28px;margin:0 0 0 32px;background:var(--flow-line)}
.rl-approach .rl-stage--mission::after{background:var(--flow-human)!important}
.rl-approach .rl-sources{grid-template-rows:none;grid-auto-rows:44px;height:auto;gap:8px}
.rl-approach .rl-source{height:44px}
.rl-approach .rl-source::after,.rl-approach .rl-sources::before,.rl-approach .rl-sources::after,.rl-approach .rl-stage__card::before,.rl-approach .rl-stage__card::after{display:none!important}
.rl-approach .rl-stage__card{min-height:0;padding-top:72px}
.rl-approach .rl-flow-note--ai,.rl-approach .rl-flow-note--human{grid-column:auto;grid-row:auto;margin-top:var(--rl-space-md)}
}

/* Home hero illustration (no box, sits on hero navy) */
.rl-section--dark.rl-hero--home .rl-image-slot:has(img){background:transparent;border:0}
.rl-section--dark.rl-hero--home .rl-image-slot:has(img) > .wp-block-image{inset:0;width:100%;height:100%}
.rl-section--dark.rl-hero--home .rl-image-slot:has(img) > .wp-block-image img{object-fit:contain}

/* Product badge: corner ribbon */
.rl-card--product .rl-card__media{position:relative;overflow:hidden}
.rl-badge{position:absolute;top:26px;right:-52px;z-index:2;width:200px;padding:6px 0;background:var(--rl-signal-red);color:var(--rl-white);text-align:center;transform:rotate(45deg);transform-origin:center;box-shadow:0 2px 6px rgba(7,27,51,.25);font-size:12px;line-height:16px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;pointer-events:none}

/* Hero strip */
.rl-hero__media{position:relative}
.rl-hero__strip{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;align-items:center;gap:12px;margin:0;padding:14px 18px;background:var(--rl-signal-red);color:var(--rl-white);font-size:13px;line-height:18px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.rl-hero__strip-icon{flex:none}
@media (max-width:480px){.rl-hero__strip{font-size:11px;padding:10px 12px;gap:8px}}
