/* Canonical Curvatura foundation and site chrome.
 * One source for every route: tokens, primitives, header, menu and footer.
 * Legacy page adapters must not target these owners. Articles load this shell
 * without the legacy child stylesheet or site-curvatura content adapter.
 * Zero-specificity subject boundaries keep every rule outside saved post HTML,
 * including authored elements that reuse a site class. Pages retain all rules.
 */

/* Page-specific rem sizing belongs to the page adapter. Pure posts retain the browser default. */
html:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { -webkit-text-size-adjust: 100%; }
body:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; }
*:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), *:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *))::before, *:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *))::after { box-sizing: border-box; }
[hidden]:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
.mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-family: var(--mpc-font); font-size: 16px; font-weight: 300; line-height: 1.95; letter-spacing: .25px; }
.mph-site .site-container:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: relative; }
:where(.mph-hdr, .mph-ftr, .mph-close) :where(button, input, select, textarea):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font: inherit; }
:where(.mph-hdr, .mph-ftr, .mph-close) a:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { color: inherit; text-decoration: none; }
:where(.mph-hdr, .mph-ftr, .mph-close) p:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding: 0; }
.screen-reader-text:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { 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; }

.mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) {
	/* Curvatura tokens */
	--mpc-ground: #FAFAF7; --mpc-ink: #13151B; --mpc-body: #2B2E36; --mpc-muted: #52555E; --mpc-rule: #DCDDE2;
	--mpc-accent: #2447E0; --mpc-pain: #E8431C; --mpc-tint: #EDF0FD; --mpc-navy: #0F1C57; --mpc-navy-lines: #879AEE;
	--mpc-white: #FFFFFF; --mpc-on-navy: #D7DCF0; --mpc-halo: rgba(36, 71, 224, .18);
	--mpc-font: 'Albert Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--mpc-display: 'Unbounded', 'Albert Sans', system-ui, sans-serif;
	--mpc-wrap: 1440px; --mpc-pad: 48px;
	/* inner-page title scale (the home sets its own sizes from the canvas: 74/48 desktop, 34/30 phone) */
	--mpc-h1: clamp(28px, 4.4vw, 56px); --mpc-h1-post: clamp(24px, 3vw, 42px); --mpc-h2: clamp(22px, 2.3vw, 32px);

	/* names the other stylesheets read, with the new values */
	--paper: var(--mpc-ground); --ink: var(--mpc-ink); --text: var(--mpc-body); --muted: var(--mpc-muted); --rule: var(--mpc-rule);
	--panel: var(--mpc-tint); --dark: var(--mpc-navy); --on-dark: var(--mpc-white);
	--wa: var(--mpc-accent); --wa-ink: var(--mpc-white); --green: var(--mpc-accent);
	--font: var(--mpc-font);
	--max: calc(var(--mpc-wrap) - 2 * var(--mpc-pad)); --gutter: var(--mpc-pad); --radius: 0px; --btn-radius: 999px;
	/* --h2 page section h2 (Unbounded), --h2-article post h2 (Albert Sans), --h3 sub-heads */
	--h2: var(--mpc-h2); --h2-article: clamp(25px, 2.4vw, 34px); --h3: clamp(21px, 1.9vw, 27px);
	/* Legacy page adapters read these booking colours. */
	--mp-whatsapp-green: var(--mpc-accent); --mp-whatsapp-green-hover: var(--mpc-accent); --mp-whatsapp-green-border: var(--mpc-accent); --mp-whatsapp-ink: var(--mpc-white);
	-webkit-font-smoothing: antialiased;
}
@media (max-width: 1024px) { .mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { --mpc-pad: 24px; } }
@media (max-width: 640px) { .mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { --mpc-pad: 16px; } }
body.mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--paper); color: var(--text); overflow-x: clip; }

/* Display components carry their own typography; prose never inherits it. */
.mph-site :is(.mpc-title, .mpc-subtitle):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-close h2:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) {
 font-family: var(--mpc-display); font-weight: 300; text-transform: uppercase; letter-spacing: .01em;
 line-height: 1.12; text-wrap: balance; overflow-wrap: break-word; hyphens: none;
}
.mph-site .mpc-subtitle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-weight: 400; }

/* ---------- primitives for new markup (documented in foundation.md) */
.mph-wrap:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mpc-wrap:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
/* section head: title, then the 1.5px ink rule */
.mph-site .mpc-head:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; padding: 0 0 20px; border-bottom: 1.5px solid var(--ink); }
.mph-site .mpc-title:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; font-size: clamp(30px, 3.4vw, 48px); line-height: 1.1; }
.mph-site .mpc-subtitle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; font-size: clamp(20px, 1.85vw, 26px); line-height: 1.2; }
@media (max-width: 640px) { .mph-site .mpc-head:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-bottom: 16px; } }
.mph-site .mpc-lead:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 28px 0 0; max-width: 820px; font-size: clamp(18px, 1.5vw, 21px); line-height: 1.5; color: var(--text); }
.mph-site .mpc-kicker:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; font-size: 14px; font-weight: 600; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.mph-site .mpc-band--tint:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-tint); }
.mph-site .mpc-band--navy:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-navy); color: var(--mpc-white); }
/* row link: text block, then the 48px circle with the arrow; rows are separated by 1px rules */
.mph-site .mpc-row:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: grid; grid-template-columns: minmax(0, 1fr) 48px; gap: 24px; align-items: center; padding: 22px 0; border-bottom: 1px solid var(--rule); text-decoration: none; color: var(--ink); }
.mph-site .mpc-row-title:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; font-size: clamp(19px, 1.5vw, 21px); font-weight: 600; line-height: 1.3; color: var(--ink); }
.mph-site .mpc-row-desc:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; margin-top: 6px; font-size: 17px; line-height: 1.5; color: var(--text); }
.mph-site .mpc-row:hover .mpc-row-title:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: underline; text-underline-offset: 5px; }
.mph-site .mpc-circle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; align-items: center; justify-content: center; flex: none; width: 48px; height: 48px; border-radius: 999px; box-shadow: inset 0 0 0 1.5px var(--ink); color: var(--ink); transition: background-color .15s ease, color .15s ease; }
.mph-site :is(.mpc-row:hover, .mpc-row:focus-visible) .mpc-circle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site a.mpc-circle:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--ink); color: var(--paper); }
@media (max-width: 640px) { .mph-site .mpc-row:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { grid-template-columns: minmax(0, 1fr) 44px; gap: 16px; padding: 18px 0; } .mph-site .mpc-circle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { width: 44px; height: 44px; } .mph-site .mpc-row-desc:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-size: 16px; } }
/* curvatura line bundles: decoration only. The parent must be position: relative and clip them (overflow: hidden
   or overflow-x: clip) so they never cause horizontal scroll; text sits above them (z-index 1). */
.mph-site .mpc-wave:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: absolute; left: 50%; top: 0; margin-left: -720px; max-width: none; overflow: visible; pointer-events: none; user-select: none; z-index: 0; }
.mph-site .mpc-wave--hero-phone:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mpc-wave--onde-phone:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { left: 0; margin-left: 0; }
.mph-site .mpc-ico:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { flex: none; display: block; }

/* Explicit pill components. URLs alone do not create buttons. */
.mph-site :is(.mpc-pill, :where(a).mph-btn):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) {
	display: inline-flex; align-items: center; justify-content: center; gap: 12px; box-sizing: border-box;
	width: auto; max-width: 100%; min-height: 56px; margin: 0; padding: 8px 28px; border: 0; border-radius: 999px;
	font-size: 17px; font-weight: 600; line-height: 1.2; letter-spacing: 0; text-transform: none; text-decoration: none; text-align: center;
	transform: none; cursor: pointer; transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}
.mph-site :is(.mpc-pill--primary, a.mph-btn-wa):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-accent); color: var(--mpc-white); box-shadow: none; }
.mph-site :is(.mpc-pill--primary, a.mph-btn-wa):is(:hover, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-accent); color: var(--mpc-white); box-shadow: 0 0 0 4px var(--mpc-halo); }
.mph-site .mpc-pill--ghost:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 14px; padding-inline: 26px; background: transparent; color: var(--mpc-ink); box-shadow: inset 0 0 0 1.5px var(--mpc-ink); }
.mph-site .mpc-pill--ghost:is(:hover, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-ink); color: var(--mpc-ground); }
.mph-site .mpc-pill--white:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: 60px; padding-inline: 30px; background: var(--mpc-white); color: var(--mpc-navy); font-size: 18px; font-weight: 700; box-shadow: none; }
.mph-site .mpc-pill--white:is(:hover, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-white); color: var(--mpc-navy); box-shadow: 0 0 0 4px rgba(255, 255, 255, .28); }
.mph-site .mpc-pill--on-navy:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: 60px; background: transparent; color: var(--mpc-white); font-size: 18px; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .75); }
.mph-site .mpc-pill--on-navy:is(:hover, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-white); color: var(--mpc-navy); }
.mph-site .mpc-pill--route:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { justify-content: space-between; gap: 16px; min-height: 68px; background: var(--mpc-ground); color: var(--mpc-ink); font-size: 19px; box-shadow: inset 0 0 0 1.5px var(--mpc-ink); }
.mph-site .mpc-pill--route:is(:hover, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-ink); color: var(--mpc-ground); }
.mph-site :is(.mpc-pill, a.mph-btn) svg:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { flex: none; }
.mph-actions:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mpc-actions:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
@media (max-width: 640px) {
	.mph-site :is(.mpc-actions, .mph-actions) > :is(.mpc-pill, a.mph-btn):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { width: 100%; font-size: 18px; }
	.mph-site .mpc-pill--route:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: 60px; padding-inline: 24px; font-size: 18px; }
}
/* Narrow booking controls retain the original phone size steps. */
@media (max-width: 430px) {
	.mph-site :is(.mpc-pill--ghost, .mpc-pill--white, .mpc-pill--on-navy, :is(.mpc-actions, .mph-actions) > :is(.mpc-pill, a.mph-btn)):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-inline: 18px; }
}
@media (max-width: 400px) {
	.mph-site :is(.mpc-pill--ghost, .mpc-pill--white, .mpc-pill--on-navy, :is(.mpc-actions, .mph-actions) > :is(.mpc-pill, a.mph-btn)):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 10px; font-size: 16px; }
}
@media (max-width: 359px) {
	.mph-site :is(.mpc-pill--ghost, .mpc-pill--white, .mpc-pill--on-navy, :is(.mpc-actions, .mph-actions) > :is(.mpc-pill, a.mph-btn)):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-inline: 16px; }
}

/* focus: one visible ring everywhere (white on the navy band) */
.mph-site :is(a, button, summary, input, select, textarea, [tabindex]):focus-visible:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { outline: 2px solid var(--mpc-accent); outline-offset: 3px; }
.mph-site .mph-close :is(a, button):focus-visible:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { outline-color: var(--mpc-white); }
/* Focus outlines appear immediately while colours may transition. */
.mph-site :is(a, button, summary, input, select, textarea, [tabindex]):focus-visible:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { transition-property: color, background-color, border-color, box-shadow, text-decoration-color, opacity, transform; }
/* The first keyboard stop becomes visible above the header on focus. */
.mph-site .marcuspai-skip-link:is(:focus, :focus-visible):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) {
	position: fixed; top: 12px; left: 12px; z-index: 100000;
	display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box;
	width: auto; height: auto; max-width: calc(100vw - 24px); min-height: 48px; margin: 0; padding: 8px 24px;
	clip: auto; clip-path: none; overflow: visible;
	border: 0; border-radius: 999px; background: var(--mpc-navy); color: var(--mpc-white); box-shadow: none;
	font-size: 16px; font-weight: 600; line-height: 1.2; letter-spacing: 0; text-transform: none; text-decoration: none;
	outline: 2px solid var(--mpc-accent); outline-offset: 3px;
}
/* Forced colours needs real borders because inset shadows disappear. */
@media (forced-colors: active) {
	.mph-site .mph-search-form input[type="search"]:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-search-form button:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mpc-circle:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)),
	.mph-site :is(.mpc-pill, :where(a).mph-btn, button.mpc-circle):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)),
	.mph-site .mph-menu.is-js button.mph-menu-btn:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { border: 1.5px solid ButtonText; }
}

/* ---------- chrome shared by every page */
.mph-tel:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-variant-numeric: tabular-nums; }
.mph-address:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-style: normal; }
.mph-address p:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; }


/* header: wordmark, five links, ghost pill; one row, 96px (64px with the round menu button on phones) */
.mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: relative; z-index: 50; background: var(--paper); }
.mph-hdr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; align-items: center; justify-content: space-between; gap: 32px; min-height: 96px; }
.mph-site .mpc-wordmark:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-family: var(--mpc-display); font-weight: 400; font-size: 18px; line-height: 1.2; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink); text-decoration: none; white-space: nowrap; }
.mph-site .mph-hdr a.mph-brand:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: inline-flex; align-items: center; min-height: 48px; }
.mph-nav:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; align-items: center; gap: 30px; font-size: 16px; }
.mph-site .mph-nav a.mpc-navlink:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: none; color: var(--ink); white-space: nowrap; font-size: 16px; font-weight: 400; line-height: 48px; }
.mph-site .mph-nav a.mpc-navlink:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-nav a.mpc-navlink[aria-current]:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-nav a.mpc-navlink.mpc-navlink--section:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: underline; text-underline-offset: 6px; }
/* the page's own link (aria-current) and, on a child page, its section's link (.mpc-navlink--section, lib/site-curvatura.php) */
.mph-site .mph-nav a.mpc-navlink:is([aria-current], .mpc-navlink--section):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration-color: var(--mpc-accent); text-decoration-thickness: 1.5px; }
.mph-site .mph-nav a.mph-nav-cta:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 10px; min-height: 48px; padding: 6px 22px; font-size: 16px; white-space: nowrap; }
.mph-site .mph-nav a.mph-nav-cta svg:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { width: 18px; height: 18px; }
.mph-menu:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
@media (min-width: 1024px) and (max-width: 1180px) { .mph-nav:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 20px; } .mph-hdr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 20px; } }
@media (max-width: 1023px) {
	.mph-site .mph-nav:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
	.mph-hdr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: 80px; }
	.mph-menu:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; }
	.mph-site .mph-menu-btn:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
	.mph-site .mph-menu.is-js .mph-menu-btn:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; min-height: 0; margin: 0; padding: 0; border: 0; border-radius: 999px; background: transparent; box-shadow: inset 0 0 0 1.5px var(--mpc-ink); color: var(--mpc-ink); text-transform: none; letter-spacing: 0; cursor: pointer; transition: background-color .15s ease, color .15s ease; }
	.mph-site .mph-menu.is-js .mph-menu-btn:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-menu.is-js .mph-menu-btn[aria-expanded="true"]:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { background: var(--mpc-ink); color: var(--mpc-ground); }
	.mph-site .mph-menu-btn .mpc-ico-close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-menu-btn[aria-expanded="true"] .mpc-ico-menu:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
	.mph-site .mph-menu-btn[aria-expanded="true"] .mpc-ico-close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; }
	/* without JavaScript the links wrap under the wordmark */
	.mph-site .mph-menu-list:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 18px; padding: 8px 0; }
	.mph-site .mph-menu:not(.is-js):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { flex: 1 1 100%; }
	.mph-site .mph-hdr-in:has(.mph-menu:not(.is-js)):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { flex-wrap: wrap; gap: 0 24px; padding-block: 12px; }
	/* the panel: a sheet that covers the screen below the header (the script sets its exact height and stops the page
	   behind it from scrolling), link rows with hairlines, the booking pill pinned to its bottom */
	.mph-site .mph-menu.is-js .mph-menu-list:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: absolute; left: 0; right: 0; top: 100%; z-index: 60; display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 0; min-height: calc(100vh - 80px); min-height: calc(100dvh - 80px); max-height: calc(100vh - 80px); max-height: calc(100dvh - 80px); overflow-y: auto; overscroll-behavior: contain; padding: 0 var(--gutter) calc(24px + env(safe-area-inset-bottom, 0px)); background: var(--paper); border-top: 1.5px solid var(--ink); border-bottom: 0; box-shadow: none; }
	.mph-site .mph-menu.is-js .mph-menu-list[hidden]:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: none; }
	html.mpc-menu-open:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), html.mpc-menu-open body.mph-site:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { overflow: hidden; }
	/* the home reserves scroll padding for its booking bar; with the sheet open it would scroll the page under the sheet when the pinned pill takes focus */
	html.mpc-menu-open:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { scroll-padding-bottom: 0; }
	.mph-site .mph-menu-list a.mpc-navlink:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: none; color: var(--ink); font-size: 19px; font-weight: 600; line-height: 1.3; }
	.mph-site .mph-menu.is-js .mph-menu-list a.mpc-navlink:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; flex: none; padding: 17px 0; border-bottom: 1px solid var(--rule); }
	.mph-site .mph-menu-list a.mpc-navlink:is([aria-current], .mpc-navlink--section):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { color: var(--mpc-accent); }
	.mph-site .mph-menu.is-js .mph-menu-list a.mph-nav-cta:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex: none; width: 100%; margin-top: auto; font-size: 18px; }
	.mph-site .mph-menu.is-js .mph-menu-list a.mpc-navlink:last-of-type:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-bottom: 24px; }
}
@media (max-width: 640px) {
	.mph-hdr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: 64px; }
	.mph-site .mph-menu.is-js .mph-menu-list:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { min-height: calc(100vh - 64px); min-height: calc(100dvh - 64px); max-height: calc(100vh - 64px); max-height: calc(100dvh - 64px); }
	.mph-site .mph-hdr .mpc-wordmark:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-size: 15px; letter-spacing: 0.1em; }
}

/* header that returns on scroll-up (2026-10-08; script in marcuspai_hw_header(), lib/site-curvatura.php, which sets
   the classes on <html>). Without JavaScript none of this applies and the header is the first block of the page.
   - Technique: position: fixed, not sticky. .site-container is "overflow: hidden" on every family but the articles
     (style.css), which makes it the scroll container a sticky header would stick to, and it never scrolls. Changing
     that overflow on every family to free a sticky header would be the larger risk.
   - No layout jump: the header becomes fixed only once it has left the screen, and in the same change
     .site-container takes its height as padding (--mpc-hdr-h, measured by the script). Its box is never resized or
     relaid: showing, hiding and the compact height are transform and clip-path only. From 1024px the 96px row is
     lifted 16px and its last 16px are clipped: 64px on screen, the 48px controls centred. Below 1024px the row is
     already 80/64px and stays so (no clip there: the menu sheet hangs from the header's bottom edge).
   - Back at the top of the page (scroll under 1px) the classes go and the header is the page's header again, in the
     same place: the fixed box and the block of the page coincide there.
   - The hairline is a pseudo-element with a border (a background would vanish in forced colours); it is off while
     the phone menu is open, whose sheet has its own ink rule.
   - Anchors: the scroll padding is the height of the floating header, so a jump (skip link, article contents,
     #agendar, FAQ) never ends under it; the phone booking bars set scroll-padding-bottom on their own.
   - Reduced motion: the matching header state below disables its transition.
   - Print: all of it is @media screen. */
@media screen {
	html.mpc-hdr-js:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { --mpc-hdr-float: 64px; scroll-padding-top: var(--mpc-hdr-float); }
	html.mpc-hdr-js .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { transition: transform .2s ease; }
	html.mpc-hdr-float .mph-site .site-container:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-top: var(--mpc-hdr-h, 96px); }
	html.mpc-hdr-float .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: fixed; top: 0; left: 0; right: 0; transform: translateY(-100%); }
	html.mpc-hdr-float.mpc-hdr-on .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { transform: translateY(calc(-1 * var(--mpc-hdr-lift, 0px))); }
	html.mpc-hdr-float .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *))::after { content: ''; position: absolute; left: 0; right: 0; bottom: var(--mpc-hdr-lift, 0px); height: 0; border-bottom: 1px solid var(--mpc-rule); pointer-events: none; }
	html.mpc-hdr-float.mpc-menu-open .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *))::after { display: none; }
	html.mpc-hdr-snap .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { transition: none; }
	/* WordPress toolbar (logged-in owner): fixed 32px bar from 783px, 46px from 601px, part of the page below that */
	html.mpc-hdr-float .mph-site.admin-bar .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { top: 32px; }
}
@media screen and (min-width: 641px) and (max-width: 1023px) { html.mpc-hdr-js:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { --mpc-hdr-float: 80px; } }
@media screen and (min-width: 1024px) {
	html.mpc-hdr-float .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { --mpc-hdr-lift: 16px; -webkit-clip-path: inset(0 0 16px 0); clip-path: inset(0 0 16px 0); }
}
@media screen and (max-width: 782px) { html.mpc-hdr-float .mph-site.admin-bar .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { top: 46px; } }
@media screen and (max-width: 600px) { html.mpc-hdr-float .mph-site.admin-bar .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { top: 0; } }

/* closing band on every page: navy, light curvatura lines on the left, the booking block on the right
   (canvas: 700px tall, block 620px wide). Below 1100px the block takes the row and the lines get their own strip
   under it, so they never run behind text. */
.mph-site .mph-close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: relative; overflow: hidden; background: var(--mpc-navy); color: var(--mpc-white); border-top: 0; padding: 0; text-align: left; letter-spacing: 0; }
.mph-site .mph-close-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: relative; display: flex; align-items: center; min-height: clamp(600px, 48.6vw, 700px); }
.mph-site .mph-close .mpc-wave--close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { left: calc(100% - 1392px); margin-left: 0; top: 50%; margin-top: -350px; }
.mph-site .mpc-close-copy:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { position: relative; z-index: 1; width: 620px; max-width: 100%; margin-left: auto; padding: clamp(72px, 8.3vw, 120px) 0; }
.mph-site .mph-close h2:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; color: var(--mpc-white); font-size: clamp(32px, 3.9vw, 56px); line-height: 1.08; }
.mph-site .mph-close-lead:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 24px 0 0; font-size: clamp(19px, 1.5vw, 21px); line-height: 1.5; color: var(--mpc-on-navy); }
.mph-site .mph-close .mph-address:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 28px; font-size: 18px; line-height: 1.5; color: var(--mpc-on-navy); }
.mph-site .mph-close .mph-address p:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { color: var(--mpc-on-navy); font-size: 18px; }
.mph-site .mph-close p.mph-close-tel:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin-top: 10px; }
.mph-site .mph-close .mpc-close-tel-label:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-size: 17px; color: var(--mpc-on-navy); }
.mph-site .mph-close .mph-tel:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-family: var(--mpc-display); font-weight: 300; font-size: clamp(26px, 2.5vw, 36px); line-height: 1.15; letter-spacing: 0.01em; color: var(--mpc-white); white-space: nowrap; }
.mph-site .mph-close .mph-actions:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 36px; }
@media (max-width: 1099px) {
	.mph-site .mph-close-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: block; min-height: 0; padding-bottom: 230px; }
	.mph-site .mpc-close-copy:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-left: 0; padding: 72px 0 0; }
	.mph-site .mph-close .mpc-wave--close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { left: -60px; top: auto; bottom: -270px; margin-top: 0; width: 1008px; height: 490px; }
}
@media (max-width: 640px) {
	.mph-site .mph-close-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-bottom: 190px; }
	.mph-site .mpc-close-copy:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-top: 56px; }
	.mph-site .mph-close .mpc-wave--close:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { left: -40px; bottom: -235px; width: 864px; height: 420px; }
}

/* footer: wordmark, address, contact, link column, legal line */
.mph-site .mph-ftr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding: 64px 0 48px; border-top: 0; background: var(--paper); color: var(--ink); font-size: 16px; line-height: 1.5; }
.mph-ftr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.mph-site .mph-ftr p:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 0; color: var(--ink); font-size: 16px; line-height: 1.5; }
.mph-site .mph-ftr p.mph-ftr-name:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-size: 20px; }
.mph-site .mph-ftr p.mpc-ftr-tag:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 12px; color: var(--muted); }
.mph-site .mph-ftr .mpc-kicker:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { font-size: 15px; color: var(--muted); }
.mph-site .mph-ftr .mph-address:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-ftr p.mpc-ftr-wa:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 10px; }
.mph-site .mph-ftr p.mph-ftr-social:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-wrap: wrap; gap: 0 20px; margin-top: 6px; }
.mph-site .mph-ftr-social a:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.mph-site .mph-ftr-social a:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration-color: var(--mpc-accent); }
.mph-ftr-links:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.mph-site .mph-ftr-links a:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: inline-block; padding: 0; color: var(--ink); font-size: 16px; line-height: 1.5; text-decoration: none; }
.mph-site .mph-ftr-links a:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: underline; text-underline-offset: 5px; }
.mph-site .mph-ftr p.mph-legal:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin: 48px 0 0; padding-top: 20px; border-top: 1px solid var(--rule); font-size: 15px; line-height: 1.5; color: var(--muted); }
/* two columns up to 1023px (was 900): from 901 to about 950 the 20px wordmark ran into the "Endereço" column of
   the four-column row (wave 2 shared fix, 2026-10-02); from 1024 the gutters are 48px and the row has room */
@media (max-width: 1023px) { .mph-ftr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 24px; } }
@media (max-width: 640px) {
	.mph-site .mph-ftr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding: 48px 0 40px; }
	.mph-ftr-in:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { grid-template-columns: minmax(0, 1fr); gap: 28px; }
	.mph-site .mph-ftr p.mph-legal:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 36px; }
	/* pages with a fixed phone booking bar: the bold pages (body.mpb-has-bar, lib/pages-bold.php), /contato/
	   (body.mpl-contact-page) and the treatment family (.mp-trb-bar, lib/treatments-bold.php). The bar is 80px high
	   and stays over the end of the page, so the footer leaves room for it and its last lines (CRM, RQE, legal line)
	   are never under the bar. Same sum as the home (home-curvatura.css). */
	.mph-site:is(.mpb-has-bar, .mpl-contact-page) .mph-ftr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-bottom: calc(40px + 84px + env(safe-area-inset-bottom, 0px)); }
	.mph-site:has(.mp-trb-bar) .mph-ftr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { padding-bottom: calc(40px + 84px + env(safe-area-inset-bottom, 0px)); } /* a rule of its own: a browser without :has() drops only this one */
}
/* The footer number remains a text link. */
.mph-site .mph-ftr a.mph-tel:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: inline; min-height: 0; padding: 0; border: 0; border-radius: 0; background: none; color: var(--ink); font-weight: 700; transform: none; line-height: inherit; text-decoration: none; }
.mph-site .mph-ftr a.mph-tel:hover:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { text-decoration: underline; text-underline-offset: 4px; }

/* touch layouts: every footer link is a 44 px target (wordmark link: 48 px at every width) */
@media (max-width: 1023px), (pointer: coarse) {
	.mph-ftr-links:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { gap: 0; }
	.mph-site .mph-ftr-links a:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)), .mph-site .mph-ftr-social a:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: inline-flex; align-items: center; min-height: 44px; padding: 0; }
	.mph-site .mph-ftr p.mph-ftr-social:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { margin-top: 0; }
	.mph-site .mph-ftr p.mpc-ftr-wa:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: flex; flex-wrap: wrap; align-items: center; gap: 0 6px; margin-top: 2px; }
	.mph-site .mph-ftr a.mph-tel:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { display: inline-flex; align-items: center; min-height: 44px; }
}


@media (prefers-reduced-motion: reduce) {
 html.mpc-hdr-js .mph-site .mph-hdr:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)),
 .mph-site .mph-menu.is-js .mph-menu-btn:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)),
 .mph-site :is(.mpc-pill, .mph-btn, .mph-menu-btn, .mpc-circle):not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { animation: none; transition: none; }
 html:not(:where(body.mp-post-pure .mp-post-body, body.mp-post-pure .mp-post-body *)) { scroll-behavior: auto; }
}
