/**
 * Global theme CSS (not block-scoped).
 * Enqueued by inc/enqueue.php when this file exists.
 *
 * Currently: the site header — a fixed, transparent overlay over the dark
 * hero (white logo + white nav), turning into a dark translucent bar on
 * scroll. Mirrors the static reference's `.nav` behaviour.
 */

/* ── Global box model ──────────────────────────────────────────────
 * The blocks throughout this theme were authored assuming border-box —
 * they routinely pair `width: 100%` / a fixed `max-width` with their own
 * padding and/or a border on the same element (section `&__inner`
 * wrappers, the archive filter inputs, the sl-hero journey cards, the
 * final-cta buttons, …). No reset was ever declared, though, so the
 * browser default (content-box) made every one of those elements size to
 * `width + padding + border` and overflow its container by 2×padding
 * (+2×border). The final-cta buttons spilled ~46px; the cpt-detail hero
 * (`.rwi-detail__hero-inner`) overran its parent by 48px and lost its
 * right gutter. Declaring the reset once here matches the authoring
 * intent and fixes the whole class of bug rather than each offender. */
*,
*::before,
*::after {
	box-sizing: border-box;
}

/* ── Global scale (laptop / desktop density) ────────────────────────
 * The fluid type + spacing peak around 1300–1400px, so on laptops — incl.
 * 13–15" MacBooks at default scaling (≈1470px CSS) — everything sits at its
 * maximum and reads a little oversized. Gently scale the rem base down from
 * 16px at 1024px toward 13.5px on wide screens. Because the whole system is
 * rem-based (type + spacing), this rebalances density on laptops/desktops
 * while phones and tablets (< 1024px) stay exactly as they were. */
@media (min-width: 1024px) {
	html {
		font-size: clamp(13px, calc(16px - (100vw - 1024px) * 0.0054), 16px);
	}
}

/* The fixed header overlays the first section, so the default WordPress
   block-gap margin above <main> (24px, applied because <main> follows the
   header template-part) shows as a white strip above the dark hero. Remove
   it so the hero gradient reaches the very top. The same block-gap margin
   lands on the footer template part (it follows <main>) and shows as a
   white strip between the last dark section and the dark footer — zero
   that one too. */
.wp-site-blocks > main,
.wp-site-blocks > footer {
	margin-block-start: 0;
}

/* ── Header: fixed transparent overlay ───────────────────────────── */
.rwi-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	padding: 16px 0;
	background: transparent;
	border-bottom: 1px solid transparent;
	transition:
		background 280ms cubic-bezier(.4, 0, .2, 1),
		border-color 280ms cubic-bezier(.4, 0, .2, 1),
		backdrop-filter 280ms cubic-bezier(.4, 0, .2, 1),
		padding 280ms cubic-bezier(.4, 0, .2, 1);
}

.rwi-header.is-scrolled {
	background: rgba(11, 14, 46, 0.72);
	-webkit-backdrop-filter: saturate(180%) blur(18px);
	backdrop-filter: saturate(180%) blur(18px);
	border-bottom-color: var(--wp--custom--color--line-on-dark);
	padding: 9px 0;
}

/* Mobile drawer fix: the drawer (.rwi-nav__panel) is position:fixed INSIDE the
   header. Once scrolled, the header's backdrop-filter makes it the containing
   block for fixed descendants — so the open drawer's inset:0 resolves to the
   ~60px header instead of the viewport, and it appears cut off. While the drawer
   is open it covers the header anyway, so drop the filter (and any transform)
   to hand the drawer back to the viewport. Uses body.rwi-nav-lock, already
   toggled by main.js on open. */
body.rwi-nav-lock .rwi-header {
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	transform: none;
	/* Clear the filter INSTANTLY (the header otherwise transitions backdrop-filter
	   over 280ms, during which it's still a containing block — so the drawer would
	   open cut-off and only snap to full-screen mid-animation when scrolled, which
	   reads as "opens differently than at the top"). */
	transition: none;
}

/* Offset the fixed header below the WP admin bar for logged-in users, so it
   isn't clipped under it. (Front-end visitors have no admin bar → top:0.) */
.admin-bar .rwi-header {
	top: 32px;
}
@media screen and (max-width: 782px) {
	.admin-bar .rwi-header {
		top: 46px;
	}
}

.rwi-header__inner {
	max-width: 1280px;
	margin-inline: auto;
	padding-inline: clamp(20px, 4vw, 48px);
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 24px;
}

/* Logo (white wordmark over the dark hero) */
.rwi-header .wp-block-site-logo {
	flex: 0 0 auto;
	line-height: 0;
}
.rwi-header .wp-block-site-logo img,
.rwi-header .custom-logo {
	height: 44px;
	width: auto;
	transition: height 280ms cubic-bezier(.4, 0, .2, 1);
}
.rwi-header.is-scrolled .custom-logo {
	height: 34px;
}

/* Centered nav menu, white links */
.rwi-header__menu {
	flex: 1 1 auto;
	justify-content: center;
}
/* Force white over the dark hero — the WP Navigation block otherwise
   inherits the dark body/link colour. */
.rwi-header .wp-block-navigation,
.rwi-header .wp-block-navigation a,
.rwi-header .wp-block-navigation .wp-block-navigation-item__content,
.rwi-header__menu a {
	color: #fff !important;
	font-size: 0.9375rem;
	font-weight: 500;
}

/* Legibility guard for the white header chrome. While the dark `is-scrolled`
   background fades in (280ms) the white wordmark + links briefly sit over
   light sections with no backdrop yet → a white-on-white flash on fast scroll.
   A soft always-on shadow is invisible over the dark hero but keeps the text
   readable over light content during that transition. */
.rwi-header .wp-block-navigation a,
.rwi-header__menu a,
.rwi-header .rwi-langswitch a {
	text-shadow: 0 1px 12px rgba(11, 14, 46, 0.55);
}
.rwi-header .custom-logo,
.rwi-header .wp-block-site-logo img {
	filter: drop-shadow(0 1px 10px rgba(11, 14, 46, 0.45));
}
/* Once the solid backdrop is in, the halo is redundant — drop it. */
.rwi-header.is-scrolled .wp-block-navigation a,
.rwi-header.is-scrolled .rwi-header__menu a,
.rwi-header.is-scrolled .rwi-langswitch a,
.rwi-header.is-scrolled .custom-logo,
.rwi-header.is-scrolled .wp-block-site-logo img {
	text-shadow: none;
	filter: none;
	transition: text-shadow 280ms ease, filter 280ms ease;
}
.rwi-header__menu .wp-block-navigation-item {
	opacity: 0.9;
	transition: opacity 280ms ease;
}
.rwi-header__menu .wp-block-navigation-item:hover {
	opacity: 1;
}

/* Active page — visible "you are here". Replaces the near-invisible default
   (active item was styled identically to the rest). The WP Navigation block
   marks the current item with .current-menu-item on the <li> and
   aria-current="page" on its <a>. Underline stays brand-cyan on every page. */
.rwi-header__menu .wp-block-navigation-item.current-menu-item,
.rwi-header__menu .current-menu-item {
	opacity: 1;
}
.rwi-header__menu .current-menu-item > a,
.rwi-header__menu a[aria-current="page"] {
	font-weight: 700;
	position: relative;
}
.rwi-header__menu .current-menu-item > a::after,
.rwi-header__menu a[aria-current="page"]::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -7px;
	height: 3px;
	border-radius: 2px;
	background: var(--wp--preset--color--accent);
}
/* On the mobile drawer the underline would look odd — keep just the weight. */
.rwi-header .wp-block-navigation__responsive-container.is-menu-open a[aria-current="page"]::after {
	display: none;
}
/* Mobile overlay (drawer): dark surface + white links. The block's
   overlayBackgroundColor/overlayTextColor handle most of it; these ensure
   our forced-white nav links stay readable and the close icon is visible. */
.rwi-header .wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--grad-4);
}
.rwi-header .wp-block-navigation__responsive-container.is-menu-open a,
.rwi-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	color: #fff !important;
}
.rwi-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	color: #fff;
}

/* ── Mobile header bar (≤781px): logo + lang + hamburger only ───────
   The CTA button overflows the bar on narrow screens; hide it (the nav
   drawer already contains the Contactos link). Lang stays — it's small
   and language switching should remain one tap away on a bilingual site. */
@media (max-width: 899px) {
	.rwi-header__right .wp-block-buttons {
		display: none;
	}
	/* Lang switcher moves into the hamburger drawer (cloned via main.js). */
	.rwi-header__right .rwi-langswitch {
		display: none;
	}
	.rwi-header__inner {
		gap: 14px;
	}
}

/* Cloned language switcher inside the mobile drawer: centered, spaced below
   the menu items, sized up for touch. Lives inside the dark overlay. */
.rwi-langswitch--in-drawer {
	display: flex;
	justify-content: center;
	margin-top: 28px;
	padding-top: 24px;
	border-top: 1px solid var(--wp--custom--color--line-on-dark);
	font-size: 1rem;
}
.rwi-langswitch--in-drawer a {
	color: rgba( 255, 255, 255, 0.7 ) !important;
	padding: 8px 6px;
}
.rwi-langswitch--in-drawer .current-lang a,
.rwi-langswitch--in-drawer .current-lang > a {
	color: #fff !important;
	font-weight: 600;
}

/* Right tools cluster */
.rwi-header__right {
	flex: 0 0 auto;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 18px;
}

/* CTA button — cyan pill (theme button styles handle the base look) */
.rwi-header__right .wp-block-button__link {
	white-space: nowrap;
}

/* Mobile overlay (WP navigation block) inherits dark theme */
@media (max-width: 899px) {
	.rwi-header__menu { flex: 0 0 auto; }
}

/* ───────────────────────────────────────────────────────────────────
   Classic header menu — rwi/primary-menu block (wp_nav_menu).
   Reuses .rwi-header__menu link colour + active-underline rules above
   (wp_nav_menu marks the active <li> with .current-menu-item and the
   <a> with aria-current="page", which those selectors already target).
   ─────────────────────────────────────────────────────────────────── */
.rwi-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
}
.rwi-nav__panel { display: contents; }           /* desktop: ul flows into the centred flex */
.rwi-nav__list {
	display: flex;
	align-items: center;
	gap: clamp(18px, 2.4vw, 34px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.rwi-nav__list .menu-item {
	opacity: 0.9;
	transition: opacity 280ms ease;
}
.rwi-nav__list .menu-item:hover,
.rwi-nav__list .menu-item.current-menu-item { opacity: 1; }
.rwi-nav__list a { text-decoration: none; white-space: nowrap; }
.rwi-nav__toggle { display: none; }              /* hidden on desktop */

@media (max-width: 899px) {
	.rwi-header__menu.rwi-nav { margin-left: auto; width: auto; }
	.rwi-nav { justify-content: flex-end; }
	.rwi-nav__toggle {
		display: inline-flex;
		flex-direction: column;
		justify-content: center;
		gap: 5px;
		width: 44px;
		height: 44px;
		padding: 0;
		background: transparent;
		border: 0;
		cursor: pointer;
		position: relative;
		z-index: 140;
	}
	.rwi-nav__toggle span {
		display: block;
		width: 24px;
		height: 2px;
		border-radius: 2px;
		background: #fff;
		margin-inline: auto;
		transition: transform 300ms ease, opacity 200ms ease;
	}
	.rwi-nav.is-open .rwi-nav__toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
	.rwi-nav.is-open .rwi-nav__toggle span:nth-child(2) { opacity: 0; }
	.rwi-nav.is-open .rwi-nav__toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

	.rwi-nav__panel {
		position: fixed;
		inset: 0;
		z-index: 130;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 6px;
		padding: 96px 24px 48px;
		overflow-y: auto;
		background: var(--wp--preset--color--grad-4);
		transform: translateX(100%);
		transition: transform 380ms cubic-bezier(.4, 0, .2, 1);
	}
	.rwi-nav.is-open .rwi-nav__panel { transform: none; }
	.rwi-nav__list { flex-direction: column; align-items: center; gap: 4px; }
	.rwi-nav__list a { display: block; padding: 12px 8px; font-size: 1.6rem; font-weight: 600; }
	/* the cyan underline looks odd at drawer scale → keep just the weight */
	.rwi-nav__panel .current-menu-item > a::after { display: none; }
}
body.rwi-nav-lock { overflow: hidden; }

/* ── Pinned horizontal-scroll showcase heading ──────────────────────────
   Shared heading for the logo wall + testimonials when they run in
   "pinned horizontal scroll" mode. It lives INSIDE the pinned section (not
   in a separate block above it) so the title stays attached to the cards
   while they scrub — no detached band / white gap. Global so both blocks
   render it without each shipping a copy. Mirrors rwi/section-heading. */
.rwi-scrollhead {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	max-width: 1080px;
	margin-inline: auto;
	padding-inline: clamp(24px, 5vw, 56px);
	text-align: center;
}
.rwi-scrollhead__kicker {
	font-family: var(--wp--preset--font-family--geist-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: lowercase;
	margin: 0;
	color: var(--wp--preset--color--accent-deep);
}
.rwi-scrollhead__title {
	font-family: var(--wp--preset--font-family--inter);
	font-weight: 800;
	font-size: clamp(1.875rem, 3.5vw, 2.875rem);
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--ink);
	margin: 0;
}
.rwi-scrollhead__lead {
	font-size: clamp(1rem, 1.2vw, 1.125rem);
	line-height: 1.55;
	color: var(--wp--preset--color--ink-2);
	margin: 0;
	max-width: 56ch;
}

/* ── Sub-menus (dropdowns) ──────────────────────────────────────────
   wp_nav_menu nests children in <ul class="sub-menu"> under
   .menu-item-has-children. Desktop = hover/focus flyout; mobile = nested
   list inside the drawer. */
.rwi-nav__list .menu-item-has-children { position: relative; }
.rwi-nav__list .sub-menu { list-style: none; margin: 0; padding: 0; }
/* caret affordance — skipped on active/ancestor items so the cyan underline stays */
.rwi-nav__list .menu-item-has-children:not(.current-menu-item):not(.current-menu-ancestor) > a::after {
	content: "▾";
	display: inline-block;
	margin-left: 6px;
	font-size: 0.7em;
	opacity: 0.6;
	transition: transform 240ms ease;
}

@media (min-width: 900px) {
	/* invisible hover bridge so the gap to the dropdown doesn't drop hover */
	.rwi-nav__list .menu-item-has-children::before {
		content: "";
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		height: 14px;
	}
	.rwi-nav__list .sub-menu {
		position: absolute;
		top: calc(100% + 4px);
		left: 50%;
		transform: translateX(-50%) translateY(8px);
		min-width: 210px;
		display: flex;
		flex-direction: column;
		gap: 2px;
		padding: 8px;
		background: rgba(11, 14, 46, 0.96);
		-webkit-backdrop-filter: saturate(180%) blur(18px);
		backdrop-filter: saturate(180%) blur(18px);
		border: 1px solid var(--wp--custom--color--line-on-dark);
		border-radius: 14px;
		box-shadow: 0 24px 60px -22px rgba(0, 0, 0, 0.65);
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition: opacity 220ms ease, transform 220ms ease;
		z-index: 120;
	}
	.rwi-nav__list .menu-item-has-children:hover > .sub-menu,
	.rwi-nav__list .menu-item-has-children:focus-within > .sub-menu {
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		transform: translateX(-50%) translateY(0);
	}
	.rwi-nav__list .menu-item-has-children:hover > a::after { transform: translateY(2px); }
	.rwi-nav__list .sub-menu .menu-item { opacity: 1; }
	.rwi-nav__list .sub-menu a {
		display: block;
		padding: 9px 14px;
		border-radius: 8px;
		font-size: 0.95rem;
		font-weight: 500;
		white-space: nowrap;
		opacity: 0.85;
	}
	.rwi-nav__list .sub-menu a:hover,
	.rwi-nav__list .sub-menu .current-menu-item > a { opacity: 1; background: rgba(255, 255, 255, 0.06); }
	/* the cyan underline is for the top bar only — never inside the dropdown */
	.rwi-nav__list .sub-menu .current-menu-item > a::after,
	.rwi-nav__list .sub-menu a[aria-current="page"]::after { display: none; }
}

@media (max-width: 899px) {
	/* drawer: children sit nested + indented under the parent, always visible */
	.rwi-nav__list .menu-item-has-children > a::after { display: none; } /* no caret in the drawer */
	.rwi-nav__list .sub-menu {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 2px;
		padding: 2px 0 8px;
	}
	.rwi-nav__list .sub-menu a {
		display: block;
		padding: 8px;
		font-size: 1.05rem;
		font-weight: 500;
		opacity: 0.72;
	}
	.rwi-nav__list .sub-menu .current-menu-item > a::after { display: none; }
}

/* Push non-overlay scroll anchoring below the fixed header. */
:root {
	scroll-padding-top: 84px;
}

/* ── Full-bleed section stacks: no inter-section gap ─────────────────
   Pages are stacks of full-bleed sections, each owning its vertical
   padding. The editor's default block-gap (24px) inserts a body-coloured
   strip between them, breaking the seamless flow (e.g. hero → next band).
   Zero the gap between top-level sections; their own padding spaces them.
   (0,1,1 specificity beats the core :where() block-gap rule, no !important.) */
.wp-block-post-content > * { margin-block-start: 0; margin-block-end: 0; }

/* ===================================================================
 * Global ambient layer — film grain, scroll progress, custom cursor,
 * magnetic CTAs. DOM nodes are injected by assets/js/main.js. All of it
 * is disabled for touch / coarse pointers and prefers-reduced-motion.
 * =================================================================== */

/* Film grain overlay */
.rwi-grain {
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 9999;
	opacity: 0.045;
	mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='200' height='200' filter='url(%23n)' opacity='1'/></svg>");
}

/* Scroll progress bar */
.rwi-progress {
	position: fixed;
	top: 0; left: 0; right: 0;
	height: 2px;
	z-index: 1000;
	background: rgba(0, 208, 248, 0.08);
	pointer-events: none;
}
.rwi-progress__bar {
	display: block;
	height: 100%;
	width: 100%;
	transform: scaleX(0);
	transform-origin: 0 50%;
	background: linear-gradient(90deg, var(--wp--preset--color--accent) 0%, var(--wp--preset--color--accent-2) 100%);
}

/* Custom cursor + ring */
.rwi-cursor, .rwi-cursor-ring {
	position: fixed;
	top: 0; left: 0;
	pointer-events: none;
	z-index: 9998;
	transform: translate(-50%, -50%);
	mix-blend-mode: difference;
	will-change: transform;
}
.rwi-cursor {
	width: 6px; height: 6px;
	background: #fff;
	border-radius: 50%;
}
.rwi-cursor-ring {
	width: 32px; height: 32px;
	border: 1px solid rgba(255, 255, 255, 0.55);
	border-radius: 50%;
	transition: width 0.3s ease, height 0.3s ease, border-color 0.3s ease, background 0.3s ease;
}
.rwi-cursor-ring.is-hover {
	width: 64px; height: 64px;
	background: rgba(0, 208, 248, 0.12);
	border-color: var(--wp--preset--color--accent);
}

/* Magnetic CTAs — JS adds .rwi-magnetic + inline transform on hover */
.rwi-magnetic { transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1); }

/* Hide cursor / kill ambient motion where it doesn't belong */
@media (hover: none), (pointer: coarse) {
	.rwi-cursor, .rwi-cursor-ring { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.rwi-cursor, .rwi-cursor-ring, .rwi-grain { display: none; }
	.rwi-magnetic { transition: none; }
}

/* ── MVV pinned panels (scroll-driven stacked sections) ─────────────
   Sections inside a .rwi-mvv wrapper run as stacked pinned panels with
   overscroll — the 'mvv-pinned' mode in assets/js/animations.js (used by
   the quem-somos MVV essays and the como-trabalhamos act 03). Lives here
   (not in a block stylesheet) because the wrapper orchestrates blocks of
   different types and must load wherever it's used. All clipping/viewport
   sizing is gated behind .is-ready (added by JS): no-JS and
   prefers-reduced-motion visitors keep the normal stacked flow. The JS
   tags each panel with data-mvv-panel BEFORE pinning — once ScrollTrigger
   pins, every panel is wrapped in a .pin-spacer, so a `> *` child
   selector would silently stop matching the panels. */
.rwi-mvv.is-ready [data-mvv-panel] {
	height: 100svh;
	overflow: hidden;
	display: grid;            /* grid centring keeps the inner's natural
	                             height measurable (flex would stretch it) */
	align-content: center;
	position: relative;
	margin-block: 0;          /* kill block-gap margins; the fake-scroll
	                             margin is set inline by the JS */
}
/* taller-than-viewport panel: content reveals from the top while the JS
   fake-scrolls its overflow */
.rwi-mvv.is-ready [data-mvv-panel].is-tall { align-content: start; }

/* Panels KEEP their native section padding — shrinking it inside the
   wrapper made the pinned section's rhythm visibly tighter than its
   unpinned siblings (act 03 vs act 04). The fake-scroll math in
   animations.js accounts for the panel's vertical padding instead. */
.rwi-mvv.is-ready .rwi-ess { border-top: 0; }

/* composite panel (Valores essay + values list on quem-somos) */
.rwi-mvv.is-ready .rwi-mvv__panel { background: var(--wp--preset--color--bg-white); }
.rwi-mvv.is-ready .rwi-mvv__panel-inner .rwi-ess {
	height: auto;
	overflow: visible;
}

/* ── Site footer ────────────────────────────────────────────────────
   Dark footer: brand (logo + address + phone + email), nav columns,
   social + legal, and a base meta row. Ported from the static reference
   design (.footer__*) onto the theme's tokens. */
.rwi-footer {
	background: var(--wp--preset--color--grad-4);
	color: var(--wp--preset--color--on-dark);
	border-top: 1px solid var(--wp--custom--color--line-on-dark);
}
.rwi-footer__grid {
	display: grid;
	/* Mobile/tablet: 2×2 (brand + the three link groups) so the footer fills the
	   width instead of stacking into one left-hugging column with the right half
	   empty. Desktop fans out to the four-column rail. */
	grid-template-columns: 1fr 1fr;
	gap: 36px 28px;
	align-items: start;
	padding-bottom: 56px;
	border-bottom: 1px solid var(--wp--custom--color--line-on-dark);
}
@media (min-width: 900px) {
	.rwi-footer__grid { grid-template-columns: 1.8fr 1fr 1fr 1fr; gap: 40px; }
}
/* the footer is built from layout-flow groups; kill the inherited block-gap
   so the explicit margins below control spacing exactly. */
.rwi-footer__grid > *,
.rwi-footer__base > *,
.rwi-footer__brand > *:not(.rwi-footer__head--space),
.rwi-footer__col > *:not(.rwi-footer__head--space) { margin-block-start: 0; }

.rwi-footer__brand .wp-block-site-logo { margin: 0 0 22px; line-height: 0; }
.rwi-footer__brand .wp-block-site-logo img,
.rwi-footer__brand .custom-logo { width: 172px; height: auto; max-width: 100%; }
.rwi-footer__addr {
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--wp--custom--color--on-dark-2);
	margin: 0 0 16px;
}
.rwi-footer__phone { margin: 0; }
.rwi-footer__email { margin: 8px 0 0; }
.rwi-footer__phone a,
.rwi-footer__email a {
	font-family: var(--wp--preset--font-family--geist-mono);
	/* scale down on narrow mobile so the long mono email fits one clean line in
	   the 2-column footer cell (back to full size on the desktop rail) */
	font-size: clamp(0.6rem, 2.8vw, 0.875rem);
	overflow-wrap: anywhere;
	text-decoration: none;
	padding-bottom: 2px;
	border-bottom: 1px solid var(--wp--custom--color--line-on-dark);
	transition: color var(--wp--custom--duration--default) var(--wp--custom--ease--default),
		border-color var(--wp--custom--duration--default) var(--wp--custom--ease--default);
}
.rwi-footer__phone a { color: var(--wp--preset--color--accent); border-bottom-color: rgba(0, 208, 248, 0.3); }
.rwi-footer__email a { color: var(--wp--custom--color--on-dark-2); }
.rwi-footer__phone a:hover,
.rwi-footer__email a:hover { color: var(--wp--preset--color--accent); border-bottom-color: var(--wp--preset--color--accent); }

.rwi-footer__head {
	font-family: var(--wp--preset--font-family--geist-mono);
	font-size: 0.75rem;
	color: var(--wp--preset--color--accent);
	text-transform: lowercase;
	margin: 0 0 18px;
}
.rwi-footer__head--space { margin: 28px 0 18px; }
.rwi-footer__col ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.rwi-footer__col li { margin: 0; }
.rwi-footer__col a {
	font-size: 0.9375rem;
	color: var(--wp--custom--color--on-dark-2);
	text-decoration: none;
	transition: color var(--wp--custom--duration--default) var(--wp--custom--ease--default);
}
.rwi-footer__col a:hover { color: var(--wp--preset--color--on-dark); }

.rwi-footer__base {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px 20px;
	padding-top: 24px;
}
.rwi-footer__copy,
.rwi-footer__base-meta { font-size: 0.8125rem; color: var(--wp--custom--color--on-dark-3); margin: 0; }
.rwi-footer__base-meta {
	font-family: var(--wp--preset--font-family--geist-mono);
	display: flex;
	flex-wrap: wrap;
	gap: 6px 12px;
	align-items: baseline;
}

/* Header CTA relocated into the mobile drawer (placeCta in main.js): full-width
   pill under the menu + language switcher, comfortably tappable. */
.rwi-headercta--in-drawer {
	margin: 18px auto 0;
	display: flex;
	justify-content: center;
}
.rwi-headercta--in-drawer .wp-block-button__link {
	font-size: 1rem;
	padding: 0.9rem 2.2rem;
}
