/*
 * Rad Cans theme chrome: reset, top bar, header, footer, blog fallback, 404.
 * Page bodies are Elementor's job. Only token variables from tokens.css are used here.
 */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var(--rc-color-bg);
	color: var(--rc-color-text);
	font-family: var(--rc-font-body);
	font-size: var(--rc-text-base);
	line-height: var(--rc-leading-body);
	-webkit-font-smoothing: antialiased;
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.site-main {
	flex: 1 0 auto;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
	display: block;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--rc-font-heading);
	font-weight: var(--rc-heading-weight);
	font-style: var(--rc-heading-style);
	text-transform: var(--rc-heading-transform);
	letter-spacing: var(--rc-heading-tracking);
	line-height: var(--rc-leading-tight);
	margin: 0 0 var(--rc-space-4);
}

h1 { font-size: var(--rc-text-h1); }
h2 { font-size: var(--rc-text-h2); }
h3 { font-size: var(--rc-text-h3); }
h4 { font-size: var(--rc-text-2xl); font-weight: 800; }

a {
	color: var(--rc-color-accent);
	text-decoration: none;
}

a:hover {
	color: var(--rc-color-secondary);
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

.skip-link:focus {
	position: fixed;
	top: var(--rc-space-2);
	left: var(--rc-space-2);
	z-index: 100000;
	width: auto;
	height: auto;
	clip: auto;
	padding: var(--rc-space-2) var(--rc-space-4);
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	border-radius: var(--rc-radius-pill);
}

.content-wrap {
	width: 100%;
	max-width: var(--rc-container);
	margin-inline: auto;
	padding: var(--rc-space-16) var(--rc-gutter);
}

/* Buttons: pill, condensed italic, hard shadow */
.button {
	display: inline-block;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: var(--rc-text-lead);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1;
	padding: 14px 34px;
	border-radius: var(--rc-radius-pill);
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	box-shadow: var(--rc-shadow-hard);
	transition: background 0.2s, color 0.2s, transform 0.1s;
}

.button:hover {
	background: var(--rc-color-primary-contrast);
	color: var(--rc-color-primary);
}

.button:active {
	transform: translateY(2px);
}

.button--cta {
	font-size: 19px;
	padding: 10px 22px;
	box-shadow: var(--rc-shadow-hard-sm);
	white-space: nowrap;
}

.button--sm {
	font-size: 18px;
	padding: 10px 22px;
	box-shadow: none;
}

/* Social circles */
.social {
	display: flex;
	gap: 6px;
}

.social a {
	width: 24px;
	height: 24px;
	border-radius: 50%;
	border: 1.5px solid rgba(255, 255, 255, 0.5);
	color: var(--rc-color-primary-contrast);
	display: grid;
	place-items: center;
	font-size: 10px;
	font-weight: 800;
	font-family: var(--rc-font-body);
}

.social a:hover {
	background: var(--rc-color-primary-contrast);
	color: var(--rc-color-accent);
}

.social a svg {
	width: 11px;
	height: 11px;
	display: block;
}

.social--footer a svg {
	width: 16px;
	height: 16px;
}

.social--footer {
	gap: 8px;
	margin-top: var(--rc-space-6);
}

.social--footer a {
	width: 36px;
	height: 36px;
	border: 0;
	background: var(--rc-color-navy-surface);
	font-size: 12px;
}

.social--footer a:hover {
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
}

/* Top bar */
.topbar {
	position: relative;
	z-index: 31;
	background: linear-gradient(90deg, var(--rc-color-accent), var(--rc-color-secondary));
	color: var(--rc-color-primary-contrast);
	font-size: var(--rc-text-xs);
	font-weight: 600;
}

.topbar__inner {
	max-width: var(--rc-container-wide);
	margin-inline: auto;
	padding: 0 var(--rc-gutter);
	min-height: 40px;
	display: flex;
	align-items: stretch;
	justify-content: space-between;
	gap: var(--rc-space-4);
	flex-wrap: wrap;
}

.topbar__contact,
.topbar__right {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0;
}

.topbar__right {
	gap: var(--rc-space-4);
}

.topbar__contact > * {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 40px;
	padding: 0 18px;
	border-right: 1px solid rgba(255, 255, 255, 0.2);
}

.topbar__contact > :first-child {
	padding-left: 0;
}

.topbar__contact > :last-child {
	border-right: 0;
}

.topbar__phone {
	color: var(--rc-color-primary-contrast);
	font-weight: 700;
}

.topbar__email {
	color: var(--rc-color-ice-pale);
}

.topbar__email:hover,
.topbar__phone:hover {
	color: var(--rc-color-primary-contrast);
}

.topbar__hours {
	color: var(--rc-color-ice-soft);
}

.topbar__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--rc-color-success);
}

.topbar__promo {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--rc-color-primary-contrast);
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 15px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.topbar__promo:hover {
	color: var(--rc-color-ice-soft);
}

.topbar__pill {
	background: var(--rc-color-primary-contrast);
	color: var(--rc-color-accent);
	font-family: var(--rc-font-body);
	font-style: normal;
	font-size: 10px;
	letter-spacing: 0.1em;
	padding: 2px 7px;
	border-radius: var(--rc-radius-pill);
}

.social--topbar {
	border-left: 1px solid rgba(255, 255, 255, 0.2);
	padding-left: var(--rc-space-4);
}

/* Header: transparent over the page's first section, translucent + blur once scrolled */
:root {
	--rc-header-h: 84px;
}

.site-main {
	background: var(--rc-color-primary);
	margin-top: calc(-1 * var(--rc-header-h));
	padding-top: 0;
}

.site-header {
	position: sticky;
	top: 0;
	z-index: 30;
	color: var(--rc-color-primary-contrast);
	background: transparent;
	transition: background 0.3s, backdrop-filter 0.3s;
}

.site-header.is-scrolled,
.site-header:has(.menu--primary > li:hover),
.site-header:has(.menu--primary > li.is-open),
body.nav-open .site-header {
	background: rgba(11, 14, 23, 0.82);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
}

.site-header__inner {
	max-width: var(--rc-container-wide);
	margin-inline: auto;
	padding: 10px var(--rc-gutter);
	min-height: var(--rc-header-h);
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--rc-space-6);
}

.site-header__brand img,
.site-header__brand .custom-logo {
	height: 56px;
	width: auto;
}

.site-header__title,
.site-footer__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: var(--rc-text-2xl);
	text-transform: uppercase;
	color: var(--rc-color-primary-contrast);
	line-height: 1;
}

.site-header__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 0;
}

.menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}

.menu--primary {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 19px;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	justify-content: center;
}

.menu--primary > li > a {
	position: relative;
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 10px 14px;
	border-radius: var(--rc-radius-pill);
	color: var(--rc-color-border);
	white-space: nowrap;
	transition: background 0.25s, box-shadow 0.25s, color 0.2s;
}

/* Glass pill: border + radial sheen + a small white reflection, fading in on hover */
.menu--primary > li > a::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--rc-radius-pill);
	border: 1.5px solid rgba(255, 255, 255, 0.55);
	background:
		radial-gradient(ellipse 60% 50% at 30% 20%, rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0) 70%),
		radial-gradient(ellipse 60% 60% at 75% 90%, rgba(10, 61, 219, 0.35), rgba(10, 61, 219, 0) 70%);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.25s;
}

.menu--primary > li > a::after {
	content: "";
	position: absolute;
	top: 4px;
	left: 12px;
	width: 14px;
	height: 6px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.9);
	transform: rotate(-20deg);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.25s;
}

.menu--primary > li.menu-item-has-children > a .menu-caret {
	font-size: 10px;
	opacity: 0.7;
	font-style: normal;
}



/* Active state: hovered/open item or the current page. (The design also lit the first item when idle; Brandon dropped that, 2026-09-23.) */
.menu--primary > li:hover > a,
.menu--primary > li.is-open > a,
.menu--primary > li.current-menu-item > a,
.menu--primary > li.current-menu-ancestor > a {
	color: var(--rc-color-primary-contrast);
	background: rgba(10, 61, 219, 0.1);
	box-shadow: inset 0 0 12px rgba(10, 61, 219, 0.35), 0 6px 18px rgba(10, 61, 219, 0.25);
}

.menu--primary > li:hover > a::before,
.menu--primary > li:hover > a::after,
.menu--primary > li.is-open > a::before,
.menu--primary > li.is-open > a::after,
.menu--primary > li.current-menu-item > a::before,
.menu--primary > li.current-menu-item > a::after,
.menu--primary > li.current-menu-ancestor > a::before,
.menu--primary > li.current-menu-ancestor > a::after {
	opacity: 1;
}

/* Mega menu: centered panel under the header; featured card left, links right */
/* The panel hangs from its own menu item (li is the positioning context) and is centered
 * under it; nav.js nudges it with --mega-shift when that would push it off screen. */
.menu--primary > li {
	position: relative;
}

.mega {
	position: absolute;
	left: 50%;
	top: 100%;
	width: min(840px, calc(100vw - 2 * var(--rc-gutter)));
	transform: translateX(calc(-50% + var(--mega-shift, 0px)));
	display: none;
	justify-content: center;
	padding: 6px 0 24px;
	pointer-events: none;
	z-index: 5;
}

.menu--primary > li:hover > .mega,
.menu--primary > li:focus-within > .mega,
.menu--primary > li.is-open > .mega {
	display: flex;
}

.mega__panel {
	pointer-events: auto;
	position: relative;
	overflow: hidden;
	width: 100%;
	display: grid;
	grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
	gap: 24px;
	padding: 24px;
	background: var(--rc-color-primary);
	border: 1.5px solid rgba(255, 255, 255, 0.18);
	border-radius: var(--rc-radius-lg);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.45);
	color: var(--rc-color-primary-contrast);
	font-family: var(--rc-font-body);
	font-style: normal;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	font-size: var(--rc-text-sm);
}

.mega__bubbles {
	position: absolute;
	inset: 0;
	overflow: hidden;
	pointer-events: none;
}

.mega__bubbles span {
	position: absolute;
	border-radius: 0 50% 50% 50%;
	transform: rotate(45deg);
	background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.9) 0 12%, var(--rc-color-blue-light) 14%);
	box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18);
	pointer-events: none;
}

.mega__bubbles span:first-child {
	left: 84%;
	top: 4%;
	width: 14px;
	height: 14px;
}

.mega__bubbles span:last-child {
	left: 90%;
	top: 30%;
	width: 8px;
	height: 8px;
}

.mega__card {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 22px;
	border-radius: var(--rc-radius-md);
	background: linear-gradient(160deg, var(--rc-color-accent), var(--rc-color-secondary));
}

.mega__eyebrow {
	color: var(--rc-color-ice-soft);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: var(--rc-eyebrow-tracking);
	text-transform: uppercase;
}

.mega__title {
	margin-top: 8px;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: 30px;
	line-height: 0.95;
	text-transform: uppercase;
}

.mega__blurb {
	margin-top: 10px;
	color: var(--rc-color-ice-pale);
	font-size: 14px;
	line-height: 1.45;
}

.mega__blurb {
	margin-bottom: 18px;
}

.mega__cta {
	display: inline-flex;
	align-self: flex-start;
	margin-top: auto;
	background: var(--rc-color-primary-contrast);
	color: var(--rc-color-accent);
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 17px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 9px 18px;
	border-radius: var(--rc-radius-pill);
}

.mega__cta:hover {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
}

.mega__links {
	list-style: none;
	margin: 0;
	padding: 0;
	position: relative;
	display: grid;
	gap: 2px;
	align-content: start;
}

.mega__item a {
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas: "label arrow" "sub arrow";
	align-items: center;
	column-gap: 12px;
	padding: 11px 14px;
	border-radius: var(--rc-radius-sm);
	color: var(--rc-color-primary-contrast);
}

.mega__item a:hover {
	background: var(--rc-color-navy-raised);
	color: var(--rc-color-primary-contrast);
}

.mega__label {
	grid-area: label;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 18px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1;
}

.mega__sub {
	grid-area: sub;
	margin-top: 4px;
	color: var(--rc-color-muted-on-dark);
	font-size: 14px;
	line-height: 1.35;
}

.mega__arrow {
	grid-area: arrow;
	font-size: 14px;
	color: var(--rc-color-blue-light);
}

/* Plain nested lists (non-mega, e.g. items without descriptions at depth 2+) */
.menu--primary .sub-menu {
	list-style: none;
	margin: 0;
	padding: 10px;
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	min-width: 260px;
	display: none;
	flex-direction: column;
	gap: 2px;
	background: var(--rc-color-primary);
	border: 1.5px solid rgba(255, 255, 255, 0.18);
	border-radius: var(--rc-radius-lg);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.45);
	font-size: 18px;
	letter-spacing: 0.04em;
}

.menu--primary > li:hover > .sub-menu,
.menu--primary > li:focus-within > .sub-menu,
.menu--primary > li.is-open > .sub-menu {
	display: flex;
}

.menu--primary .sub-menu a {
	display: block;
	padding: 9px 12px;
	border-radius: var(--rc-radius-sm);
	color: var(--rc-color-primary-contrast);
	white-space: nowrap;
}

.menu--primary .sub-menu a:hover {
	background: var(--rc-color-navy-raised);
}

.site-header__cta--mobile {
	display: none;
}

/* Mobile nav toggle */
.nav-toggle {
	display: none;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 1.5px solid rgba(255, 255, 255, 0.55);
	border-radius: var(--rc-radius-pill);
	background:
		radial-gradient(ellipse 60% 50% at 30% 20%, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 70%),
		radial-gradient(ellipse 60% 60% at 75% 90%, rgba(10, 61, 219, 0.35), rgba(10, 61, 219, 0) 70%),
		rgba(10, 61, 219, 0.1);
	box-shadow: inset 0 0 12px rgba(10, 61, 219, 0.35), 0 6px 18px rgba(10, 61, 219, 0.25);
	cursor: pointer;
	position: relative;
	justify-self: end;
	-webkit-tap-highlight-color: transparent;
}

.nav-toggle__bar,
.nav-toggle__bar::before,
.nav-toggle__bar::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 20px;
	height: 2px;
	margin-left: -10px;
	margin-top: -1px;
	background: var(--rc-color-primary-contrast);
	border-radius: 2px;
	transition: transform 0.25s ease, opacity 0.2s ease;
}

.nav-toggle__bar::before {
	transform: translateY(-6px);
}

.nav-toggle__bar::after {
	transform: translateY(6px);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar {
	background: transparent;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar::before {
	transform: rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar::after {
	transform: rotate(-45deg);
}

/* Footer */
.site-footer {
	background: var(--rc-color-navy-deep);
	color: var(--rc-color-muted-on-dark);
	position: relative;
	overflow: hidden;
	font-size: var(--rc-text-sm);
}

.site-footer__wave {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 60px;
	pointer-events: none;
}

.site-footer__wave svg {
	width: 100%;
	height: 60px;
}

.site-footer__inner {
	position: relative;
	max-width: var(--rc-container-wide);
	margin-inline: auto;
	padding: 90px var(--rc-gutter) 0;
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
	gap: 40px;
}

.site-footer__brand img,
.site-footer__brand .custom-logo {
	height: 64px;
	width: auto;
}

.site-footer__blurb {
	margin: 18px 0 0;
	max-width: 320px;
	line-height: 1.55;
}

.site-footer__col {
	display: grid;
	gap: 10px;
	align-content: start;
}

.site-footer__heading {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 20px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--rc-color-primary-contrast);
	margin-bottom: 6px;
}

.menu--footer {
	flex-direction: column;
	gap: 10px;
}

.menu--footer a,
.site-footer__contact a:not(.button) {
	color: var(--rc-color-muted-on-dark);
}

.menu--footer a:hover,
.site-footer__contact a:not(.button):hover {
	color: var(--rc-color-primary-contrast);
}

.site-footer__phone {
	color: var(--rc-color-primary-contrast) !important;
	font-weight: 700;
	font-size: var(--rc-text-lg);
}

.site-footer__contact .button {
	justify-self: start;
	margin-top: var(--rc-space-2);
}

/* Booking QR tile (template-parts/footer.php): links to Square and shows on every breakpoint (Brandon, 2026-09-28). */
.site-footer__qr {
	display: grid;
	grid-template-columns: 96px 1fr;
	align-items: center;
	gap: 12px;
	justify-self: start;
	margin-top: var(--rc-space-3);
	max-width: 260px;
	text-decoration: none;
}

.site-footer__qr img {
	width: 96px;
	height: 96px;
	border-radius: 10px;
	background: var(--rc-color-primary-contrast);
	padding: 4px;
	box-sizing: border-box;
}

.site-footer__qr span {
	font-size: var(--rc-text-xs);
	line-height: 1.35;
	color: var(--rc-color-muted-on-dark);
}


.site-footer__bar {
	position: relative;
	max-width: var(--rc-container-wide);
	margin: 44px auto 0;
	padding: 0 var(--rc-gutter);
}

.site-footer__bar-inner {
	border-top: 1px solid var(--rc-color-navy-raised);
	padding: 20px 0 28px;
	display: flex;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	font-size: var(--rc-text-xs);
}

.site-footer__legal {
	display: flex;
	align-items: center;
	gap: 18px;
}

.menu--legal {
	gap: 18px;
}

.menu--legal a {
	color: var(--rc-color-muted-on-dark);
}

.menu--legal a:hover {
	color: var(--rc-color-primary-contrast);
}

.site-footer__tagline {
	color: var(--rc-color-blue-light);
	font-weight: 700;
}

/* Blog fallback, search, 404 */
.entry--summary + .entry--summary {
	margin-top: var(--rc-space-8);
	padding-top: var(--rc-space-8);
	border-top: 1px solid var(--rc-color-border);
}

.entry__title a {
	color: var(--rc-color-primary);
}

.entry__meta {
	color: var(--rc-color-text-muted);
	font-size: var(--rc-text-sm);
}

.entry__content {
	font-size: var(--rc-text-lg);
}

.not-found {
	text-align: center;
	padding-block: var(--rc-space-24);
}

/* Responsive */
@media (max-width: 1023px) {
	/* Top bar: keep phone + promo, drop the social icons (they live in the footer) */
	.social--topbar {
		display: none;
	}

	.topbar__right {
		gap: 0;
	}

	.site-header__inner {
		grid-template-columns: auto 1fr auto;
	}

	.nav-toggle {
		display: block;
		grid-column: 3;
		grid-row: 1;
	}

	.site-header__brand {
		grid-column: 1;
		grid-row: 1;
	}

	.site-header__cta {
		display: none;
	}

	.site-header__cta--mobile {
		display: inline-block;
		margin-top: var(--rc-space-4);
		align-self: flex-start;
	}

	.site-header__nav {
		display: none;
		grid-column: 1 / -1;
		grid-row: 2;
		flex-direction: column;
		align-items: stretch;
		padding: var(--rc-space-2) 0 var(--rc-space-6);
	}

	body.nav-open .site-header__nav {
		display: flex;
	}

	.menu--primary {
		flex-direction: column;
		gap: 2px;
	}

	.menu--primary > li > a {
		border-radius: var(--rc-radius-sm);
	}

	.menu--primary .sub-menu {
		position: static;
		box-shadow: none;
		border: 0;
		padding: 0 0 6px 18px;
		min-width: 0;
	}

	.mega {
		position: static;
		width: auto;
		transform: none;
		padding: 4px 0 10px;
	}

	.mega__panel {
		grid-template-columns: 1fr;
		width: 100%;
	}

	.mega__card {
		display: none;
	}

	.site-footer__inner {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	/* Top bar becomes one 40px row: phone on the left, promo on the right. Email, hours and
	 * location are in the footer; the hero already says where they clean. */
	.topbar__inner {
		flex-wrap: nowrap;
		gap: var(--rc-space-2);
	}

	.topbar__email,
	.topbar__hours {
		display: none;
	}

	.topbar__contact > * {
		padding: 0;
		border-right: 0;
		white-space: nowrap;
	}

	.topbar__promo {
		font-size: 14px;
		letter-spacing: 0.04em;
		white-space: nowrap;
		min-width: 0;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.topbar__pill {
		display: none;
	}

	/* Heroes reserve 200px for the desktop header; phones need far less */
	.elementor > .rc-section:first-child {
		padding-block-start: 120px !important;
		padding-block-end: 140px !important;
	}

	.blog-hero {
		padding-top: 120px;
		padding-bottom: 130px;
	}

	/* Decorative drops crowd the copy on small screens (Elementor's base class sets display:block) */
	.elementor .rc-drop,
	.blog-hero__drop {
		display: none !important;
	}

	/* Rotated photo cards must never cause sideways scrolling */
	.site-main,
	.site-footer {
		overflow-x: clip;
	}
}

@media (max-width: 599px) {
	.topbar__contact > * {
		padding: 0;
	}

	/* Footer stacks into one centered column on phones */
	.site-footer__inner {
		grid-template-columns: 1fr;
		gap: 36px;
		padding-top: 72px;
		text-align: center;
		justify-items: center;
	}

	.site-footer__brand {
		display: grid;
		justify-items: center;
	}

	.site-footer__brand img,
	.site-footer__brand .custom-logo {
		margin-inline: auto;
	}

	.site-footer__blurb {
		max-width: 340px;
		margin-inline: auto;
	}

	.social--footer {
		justify-content: center;
		margin-top: 18px;
	}

	.site-footer__col {
		justify-items: center;
		width: 100%;
	}

	.site-footer__heading {
		margin-bottom: 2px;
	}

	.menu--footer {
		align-items: center;
	}

	.site-footer__contact .button,
	.site-footer__qr {
		justify-self: center;
	}

	.site-footer__bar-inner {
		flex-direction: column;
		align-items: center;
		text-align: center;
		gap: 14px;
		padding: 22px 0 30px;
	}

	.site-footer__legal {
		flex-direction: column;
		gap: 10px;
	}

	.menu--legal {
		justify-content: center;
	}

	.content-wrap {
		padding-block: var(--rc-space-12);
	}
}

/* Motion primitives for Elementor sections (the design's floating drops and scrolling waves).
   Elementor element CSS can reference these by name: animation: rc-drop 9s ease-in-out infinite; */
@keyframes rc-drop {
	0% { transform: translateY(0) rotate(45deg); }
	50% { transform: translateY(-14px) rotate(45deg); }
	100% { transform: translateY(0) rotate(45deg); }
}

@keyframes rc-wave {
	from { transform: translateX(0); }
	to { transform: translateX(-25%); }
}

@media (prefers-reduced-motion: reduce) {
	/* Every decorative animation in the theme: drops (Elementor pages + blog hero) and both wave variants. */
	.rc-drop,
	.rc-wave,
	.rc-wave-anim,
	.blog-hero__drop,
	.theme-wave--anim {
		animation: none !important;
	}
}

/* ---------------------------------------------------------------------------
 * Elementor helpers. Elementor's style parser only stores properties it knows,
 * so the design's decorative primitives (masked wave dividers, floating drops,
 * hero glow, heading highlights) are supplied here and attached in Elementor
 * through global classes of the same name. Sizes/positions/colors stay in
 * Elementor; only what Elementor cannot express lives here.
 * ------------------------------------------------------------------------- */

/* Highlight word inside any heading (the design colors every heading <span>) */
.elementor h1 span,
.elementor h2 span,
.elementor h3 span {
	color: var(--rc-color-blue-light);
}

/* On electric-blue sections (global class rc-on-blue) the highlight becomes navy for contrast */
.rc-on-blue h1 span,
.rc-on-blue h2 span,
.rc-on-blue h3 span {
	color: var(--rc-color-primary);
}

/* Section glow behind hero content */
.rc-glow {
	background: radial-gradient(ellipse 70% 60% at 50% 0%, rgba(10, 61, 219, 0.28), transparent 70%) !important;
	pointer-events: none;
}

/* Floating water drops. Size and position come from Elementor; tint via --rc-drop-tint. */
.rc-drop {
	border-radius: 0 50% 50% 50% !important;
	background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.9) 0 12%, var(--rc-drop-tint, var(--rc-color-blue-light)) 14%) !important;
	box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18);
	animation: rc-drop 9s ease-in-out infinite;
	pointer-events: none;
}

.rc-drop-2 { animation-duration: 7s; animation-delay: -0.9s; }
.rc-drop-3 { animation-duration: 8s; animation-delay: -1.8s; }
.rc-drop-4 { animation-duration: 11s; animation-delay: -2.7s; }
.rc-drop-5 { animation-duration: 6s; animation-delay: -3.6s; }
.rc-drop-6 { animation-duration: 10s; animation-delay: -4.5s; }
.rc-drop-7 { animation-duration: 7s; animation-delay: -5.4s; }
.rc-drop-8 { animation-duration: 9s; animation-delay: -6.3s; }
.rc-drop-9 { animation-duration: 12s; animation-delay: -7.2s; }
.rc-drop-10 { animation-duration: 6s; animation-delay: -8.1s; }
.rc-drop-11 { animation-duration: 6s; animation-delay: -9s; }
.rc-drop-12 { animation-duration: 8s; animation-delay: -9.9s; }

/* Drops on white sections use the accent blue */
.rc-drop-accent { --rc-drop-tint: var(--rc-color-accent); }

/* Wave dividers: shape from a masked SVG, color from Elementor's background-color */
.rc-wave,
.rc-wave-anim {
	pointer-events: none;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: 100% 100%;
	mask-size: 100% 100%;
	-webkit-mask-position: bottom;
	mask-position: bottom;
}

.rc-wave-1 { -webkit-mask-image: url(../img/waves/w1.svg); mask-image: url(../img/waves/w1.svg); }
.rc-wave-2 { -webkit-mask-image: url(../img/waves/w2.svg); mask-image: url(../img/waves/w2.svg); }
.rc-wave-3 { -webkit-mask-image: url(../img/waves/w3.svg); mask-image: url(../img/waves/w3.svg); }
.rc-wave-4 { -webkit-mask-image: url(../img/waves/w4.svg); mask-image: url(../img/waves/w4.svg); }
.rc-wave-5 { -webkit-mask-image: url(../img/waves/w5.svg); mask-image: url(../img/waves/w5.svg); }

.rc-wave-anim {
	-webkit-mask-image: url(../img/waves/wide.svg);
	mask-image: url(../img/waves/wide.svg);
	opacity: 0.35;
	animation: rc-wave 14s linear infinite;
}

/* ---------------------------------------------------------------------------
 * Contact Form 7. The form lives in a CF7 form post ("Contact page", seeded by
 * scripts/seed-content.sh) and is dropped into Elementor as a shortcode inside
 * an e-paragraph; the_content's do_shortcode expands it. Styling matches the
 * design's inputs (2px navy border, 12px radius) and pill button.
 * ------------------------------------------------------------------------- */
.wpcf7 form {
	display: grid;
	gap: var(--rc-space-3);
	margin-top: var(--rc-space-1);
}

.wpcf7 .rc-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--rc-space-3);
}

@media (max-width: 600px) {
	.wpcf7 .rc-form__row {
		grid-template-columns: 1fr;
	}
}

.wpcf7 label {
	display: grid;
	gap: 6px;
	font-family: var(--rc-font-body);
	font-weight: 700;
	font-size: var(--rc-text-xs);
	letter-spacing: var(--rc-eyebrow-tracking);
	text-transform: uppercase;
	color: var(--rc-color-accent);
}

.wpcf7 .wpcf7-form-control-wrap {
	display: block;
	position: relative;
}

.wpcf7 input:not([type="submit"]),
.wpcf7 select,
.wpcf7 textarea {
	width: 100%;
	border: 2px solid var(--rc-color-primary);
	border-radius: var(--rc-radius-sm);
	padding: 13px 16px;
	font-family: var(--rc-font-body);
	font-weight: 400;
	font-size: var(--rc-text-base);
	line-height: 1.4;
	letter-spacing: 0;
	text-transform: none;
	color: var(--rc-color-primary);
	background: var(--rc-color-bg);
	outline: 0;
	appearance: none;
	-webkit-appearance: none;
}

.wpcf7 select {
	background-image: linear-gradient(45deg, transparent 50%, var(--rc-color-primary) 50%), linear-gradient(135deg, var(--rc-color-primary) 50%, transparent 50%);
	background-position: calc(100% - 22px) 50%, calc(100% - 16px) 50%;
	background-size: 6px 6px;
	background-repeat: no-repeat;
	padding-right: 44px;
}

.wpcf7 textarea {
	resize: vertical;
	min-height: 120px;
}

.wpcf7 input:focus,
.wpcf7 select:focus,
.wpcf7 textarea:focus {
	border-color: var(--rc-color-accent);
	box-shadow: 0 0 0 3px var(--rc-color-ice-pale);
}

.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder {
	color: var(--rc-color-muted-soft);
}

.wpcf7 .wpcf7-submit {
	width: 100%;
	border: 0;
	cursor: pointer;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: var(--rc-text-lead);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1;
	padding: 14px 34px;
	border-radius: var(--rc-radius-pill);
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	box-shadow: var(--rc-shadow-hard-sm);
	transition: background 0.2s, color 0.2s, transform 0.1s;
}

.wpcf7 .wpcf7-submit:hover {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
}

.wpcf7 .wpcf7-submit:active {
	transform: translateY(2px);
}

.wpcf7 .wpcf7-spinner {
	display: none;
}

.wpcf7 form.submitting .wpcf7-submit {
	opacity: 0.6;
	cursor: wait;
}

.wpcf7 .wpcf7-not-valid-tip {
	display: block;
	margin-top: 4px;
	font-family: var(--rc-font-body);
	font-weight: 500;
	font-size: 13px;
	letter-spacing: 0;
	text-transform: none;
	color: var(--rc-color-error);
}

.wpcf7 .wpcf7-not-valid {
	border-color: var(--rc-color-error);
}

.wpcf7 form .wpcf7-response-output {
	margin: 0;
	padding: 12px 16px;
	border: 2px solid var(--rc-color-primary);
	border-radius: var(--rc-radius-sm);
	font-family: var(--rc-font-body);
	font-weight: 500;
	font-size: 14px;
	line-height: 1.4;
	color: var(--rc-color-primary);
	background: var(--rc-color-surface);
}

.wpcf7 form.sent .wpcf7-response-output {
	border-color: var(--rc-color-accent);
	background: var(--rc-color-surface-blue);
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output {
	border-color: var(--rc-color-error);
}

/* ---------------------------------------------------------------------------
 * Blog (theme templates: home.php, archive.php, single.php). Elementor Free has
 * no posts widget, so the blog index and posts are rendered by the theme in
 * the same visual language as the Elementor pages.
 * ------------------------------------------------------------------------- */
.blog-hero {
	position: relative;
	overflow: hidden;
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
	padding: 200px var(--rc-gutter) 190px;
}

.blog-hero__glow {
	position: absolute;
	inset: 0;
	background: radial-gradient(ellipse 70% 60% at 50% 0%, rgba(10, 61, 219, 0.28), transparent 70%);
	pointer-events: none;
}

.blog-hero__drop {
	position: absolute;
	border-radius: 0 50% 50% 50%;
	transform: rotate(45deg);
	background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.9) 0 12%, var(--rc-color-blue-light) 14%);
	box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18);
	animation: rc-drop 9s ease-in-out infinite;
	pointer-events: none;
}

.blog-hero__drop--1 { left: 4%; top: 22%; width: 42px; height: 42px; }
.blog-hero__drop--2 { left: 88%; top: 18%; width: 30px; height: 30px; animation-duration: 8s; animation-delay: -1s; }
.blog-hero__drop--3 { left: 92%; top: 62%; width: 18px; height: 18px; animation-duration: 6s; animation-delay: -2s; }

.blog-hero__inner {
	position: relative;
	max-width: var(--rc-container-narrow);
	margin: 0 auto;
}

.blog-hero--center .blog-hero__inner {
	text-align: center;
}

.blog-hero--single .blog-hero__inner {
	max-width: 900px;
}

.blog-hero__pill {
	display: inline-block;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: var(--rc-eyebrow-tracking);
	text-transform: uppercase;
	padding: 8px 16px;
	border-radius: var(--rc-radius-pill);
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
}

.blog-hero__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: clamp(56px, 7.5vw, 112px);
	line-height: 0.9;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	margin: 24px 0 0;
	text-wrap: balance;
}

.blog-hero--single .blog-hero__title {
	font-size: clamp(44px, 6vw, 84px);
}

.blog-hero__title span {
	color: var(--rc-color-blue-light);
}

.blog-hero__lead {
	font-size: var(--rc-text-lead);
	line-height: 1.45;
	color: var(--rc-color-ice);
	max-width: 540px;
	margin: 24px auto 0;
	text-wrap: pretty;
}

.blog-hero__meta {
	margin: 20px 0 0;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--rc-color-muted-on-dark);
}

.blog-hero__wave {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 140px;
	background: var(--rc-color-bg);
	-webkit-mask-image: url(../img/waves/w1.svg);
	mask-image: url(../img/waves/w1.svg);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: 100% 100%;
	mask-size: 100% 100%;
	-webkit-mask-position: bottom;
	mask-position: bottom;
	pointer-events: none;
}

.blog-posts {
	position: relative;
	overflow: hidden;
	background: var(--rc-color-bg);
	color: var(--rc-color-text);
	padding: 40px var(--rc-gutter) 190px;
}

.blog-posts__inner {
	max-width: var(--rc-container);
	margin: 0 auto;
}

.blog-cats {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

.blog-cats__item {
	border: 2px solid var(--rc-color-primary);
	background: var(--rc-color-bg);
	color: var(--rc-color-primary);
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 18px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 8px 18px;
	border-radius: var(--rc-radius-pill);
	transition: background 0.2s, color 0.2s;
}

.blog-cats__item:hover,
.blog-cats__item.is-active {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
}

.post-card {
	display: flex;
	flex-direction: column;
	background: var(--rc-color-surface);
	color: var(--rc-color-text);
	border: 2px solid var(--rc-color-primary);
	border-radius: var(--rc-radius-lg);
	overflow: hidden;
	box-shadow: var(--rc-shadow-hard);
	transition: transform 0.2s;
}

.post-card:hover {
	color: var(--rc-color-text);
	transform: translateY(-3px);
}

.post-card__media {
	position: relative;
	aspect-ratio: 16 / 10;
	background: var(--rc-color-surface-blue);
}

.post-card__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.post-card__body {
	padding: 22px 22px 26px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.post-card__meta {
	display: flex;
	gap: 10px;
	align-items: center;
	flex-wrap: wrap;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.post-card__cat {
	color: var(--rc-color-accent);
}

.post-card__date {
	color: var(--rc-color-muted-soft);
}

.post-card__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: 28px;
	line-height: 1;
	text-transform: uppercase;
	margin: 10px 0 0;
}

.post-card__excerpt {
	font-size: var(--rc-text-sm);
	line-height: 1.5;
	color: var(--rc-color-text-muted);
	margin: 10px 0 0;
}

.post-card--featured {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
	margin-top: 40px;
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
	border: 0;
	border-radius: var(--rc-radius-xl);
	box-shadow: var(--rc-shadow-hard-accent);
}

.post-card--featured:hover {
	color: var(--rc-color-primary-contrast);
}

.post-card--featured .post-card__media {
	aspect-ratio: auto;
	min-height: 320px;
	background: var(--rc-color-navy-surface);
}

.post-card--featured .post-card__body {
	padding: 40px;
	justify-content: center;
}

.post-card--featured .post-card__meta {
	font-size: 13px;
}

.post-card--featured .post-card__cat {
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	padding: 5px 12px;
	border-radius: var(--rc-radius-pill);
}

.post-card--featured .post-card__date {
	color: var(--rc-color-muted-on-dark);
}

.post-card--featured .post-card__title {
	font-size: clamp(36px, 4vw, 54px);
	line-height: 0.95;
	margin-top: 16px;
}

.post-card--featured .post-card__excerpt {
	font-size: 17px;
	line-height: 1.55;
	color: var(--rc-color-ice);
	margin-top: 14px;
}

.post-card__more {
	margin-top: 20px;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 20px;
	text-transform: uppercase;
	color: var(--rc-color-blue-light);
}

.post-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr));
	gap: 26px;
	margin-top: 40px;
}

.blog-posts .pagination,
.blog-posts .navigation.pagination {
	margin-top: 40px;
	text-align: center;
}

.blog-posts .nav-links {
	display: inline-flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

.blog-posts .page-numbers {
	display: inline-block;
	border: 2px solid var(--rc-color-primary);
	color: var(--rc-color-primary);
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 18px;
	text-transform: uppercase;
	padding: 8px 16px;
	border-radius: var(--rc-radius-pill);
}

.blog-posts .page-numbers.current,
.blog-posts .page-numbers:hover {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
}

.blog-empty {
	text-align: center;
	color: var(--rc-color-text-muted);
	margin: 40px 0 0;
}

/* Single post: article + sticky sidebar */
.entry-wrap {
	position: relative;
	overflow: clip; /* not "hidden": a scroll container would break the sticky sidebar */
	background: var(--rc-color-bg);
	color: var(--rc-color-text);
	padding: 40px var(--rc-gutter) 190px;
}

.entry-wrap__inner {
	max-width: var(--rc-container);
	margin: 0 auto;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: 56px;
	align-items: start;
}

.entry--single {
	min-width: 0;
}

.entry--single .entry__thumb {
	margin: 0 0 40px;
	border-radius: var(--rc-radius-xl);
	overflow: hidden;
	border: 3px solid var(--rc-color-primary);
	box-shadow: var(--rc-shadow-hard-lg);
	transform: rotate(-1deg);
}

.entry--single .entry__thumb img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 10;
	height: auto;
	object-fit: cover;
}

.entry--single .entry__content {
	font-size: 18px;
	line-height: 1.65;
	color: var(--rc-color-text);
}

.entry--single .entry__content > * + * {
	margin-top: 0.85em;
}

.entry--single .entry__content > p:first-child {
	font-size: 21px;
	line-height: 1.5;
	color: var(--rc-color-text-muted);
}

.entry--single .entry__content h2,
.entry--single .entry__content h3 {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	text-transform: uppercase;
	line-height: 0.95;
	margin-top: 0.9em;
	margin-bottom: 0;
}

.entry--single .entry__content h2 + *,
.entry--single .entry__content h3 + * {
	margin-top: 0.5em;
}

.entry--single .entry__content h2 { font-size: clamp(32px, 4vw, 44px); }
.entry--single .entry__content h3 { font-size: clamp(26px, 3vw, 32px); }

.entry--single .entry__content h2 span,
.entry--single .entry__content h3 span {
	color: var(--rc-color-accent);
}

.entry--single .entry__content a {
	color: var(--rc-color-accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.entry--single .entry__content img {
	max-width: 100%;
	height: auto;
	border-radius: var(--rc-radius-md);
}

.entry--single .entry__content ul,
.entry--single .entry__content ol {
	padding-left: 1.4em;
}

.entry--single .entry__content li + li {
	margin-top: 0.5em;
}

.entry--single .entry__content li::marker {
	color: var(--rc-color-accent);
	font-weight: 700;
}

.entry--single .entry__content blockquote {
	margin: 1.6em 0;
	padding: 20px 24px;
	border-left: 4px solid var(--rc-color-accent);
	background: var(--rc-color-surface-blue);
	border-radius: 0 var(--rc-radius-md) var(--rc-radius-md) 0;
	font-style: italic;
}

.entry__footer {
	margin-top: 48px;
	padding-top: 24px;
	border-top: 2px solid var(--rc-color-border);
	display: flex;
	gap: 14px;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
}

.entry__tag {
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--rc-color-accent);
	border: 2px solid var(--rc-color-accent);
	border-radius: var(--rc-radius-pill);
	padding: 6px 12px;
}

.entry__tag:hover {
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
}

.entry__back {
	background: var(--rc-color-primary);
}

/* Sidebar */
.entry__aside {
	position: sticky;
	top: calc(var(--rc-header-h, 84px) + 24px);
	align-self: start;
	display: grid;
	gap: 22px;
	align-content: start;
}

.aside-card {
	border-radius: var(--rc-radius-lg);
	padding: 28px;
	background: var(--rc-color-surface);
	border: 2px solid var(--rc-color-primary);
	box-shadow: var(--rc-shadow-hard);
	color: var(--rc-color-text);
}

.aside-card--cta {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
	border-color: var(--rc-color-primary);
	box-shadow: var(--rc-shadow-hard-accent);
}

.aside-card__eyebrow {
	display: block;
	font-weight: 700;
	font-size: 12px;
	letter-spacing: var(--rc-eyebrow-tracking);
	text-transform: uppercase;
	color: var(--rc-color-blue-light);
}

.aside-card__eyebrow--dark {
	color: var(--rc-color-accent);
}

.aside-card__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: 34px;
	line-height: 0.95;
	text-transform: uppercase;
	margin: 10px 0 0;
}

.aside-card__title span {
	color: var(--rc-color-blue-light);
}

.aside-card__list {
	list-style: none;
	margin: 18px 0 0;
	padding: 0;
	display: grid;
	gap: 10px;
	font-size: 15px;
	line-height: 1.45;
	color: var(--rc-color-ice);
}

.aside-card__list li {
	position: relative;
	padding-left: 26px;
}

.aside-card__list li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 1px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	font-size: 11px;
	font-weight: 800;
	display: grid;
	place-items: center;
}

.aside-card__button {
	display: block;
	text-align: center;
	margin-top: 22px;
	font-size: 20px;
	padding: 13px 24px;
	box-shadow: var(--rc-shadow-hard-sm);
}

.aside-card__link {
	display: block;
	margin-top: 14px;
	text-align: center;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 17px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--rc-color-blue-light);
}

.aside-card__link:hover {
	color: var(--rc-color-primary-contrast);
}

.aside-card__phone {
	display: block;
	margin-top: 8px;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: 30px;
	line-height: 1;
	color: var(--rc-color-primary);
}

.aside-card__phone:hover {
	color: var(--rc-color-accent);
}

.aside-card__hours {
	display: block;
	margin-top: 6px;
	font-size: 14px;
	color: var(--rc-color-text-muted);
}

.aside-recent {
	list-style: none;
	margin: 14px 0 0;
	padding: 0;
	display: grid;
	gap: 12px;
}

.aside-recent__item {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr);
	gap: 12px;
	align-items: center;
	color: var(--rc-color-text);
}

.aside-recent__thumb {
	display: block;
	width: 64px;
	height: 64px;
	border-radius: var(--rc-radius-sm);
	overflow: hidden;
	background: var(--rc-color-surface-blue);
	border: 2px solid var(--rc-color-primary);
}

.aside-recent__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.aside-recent__title {
	display: block;
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 800;
	font-size: 18px;
	line-height: 1;
	text-transform: uppercase;
}

.aside-recent__item:hover .aside-recent__title {
	color: var(--rc-color-accent);
}

.aside-recent__meta {
	display: block;
	margin-top: 4px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rc-color-muted-soft);
}

/* Related posts */
.entry-related {
	max-width: var(--rc-container);
	margin: 72px auto 0;
}

.entry-related__eyebrow {
	display: block;
	font-weight: 700;
	font-size: 14px;
	letter-spacing: var(--rc-eyebrow-tracking);
	text-transform: uppercase;
	color: var(--rc-color-accent);
}

.entry-related__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: clamp(36px, 4.5vw, 56px);
	line-height: 0.95;
	text-transform: uppercase;
	margin: 8px 0 0;
}

.entry-related .post-grid {
	margin-top: 28px;
}

@media (max-width: 1023px) {
	.entry-wrap__inner {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	.entry__aside {
		position: static;
		grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
	}
}

/* Closing CTA under blog pages (mirrors the Elementor closing CTA, waves included) */
.blog-cta {
	position: relative;
	overflow: hidden;
	background: var(--rc-color-accent);
	color: var(--rc-color-primary-contrast);
	text-align: center;
	padding: 80px var(--rc-gutter) 200px;
}

.blog-cta__inner {
	position: relative;
	z-index: 1;
}

.blog-cta__title {
	font-family: var(--rc-font-heading);
	font-style: italic;
	font-weight: 900;
	font-size: clamp(44px, 6vw, 80px);
	line-height: 0.9;
	text-transform: uppercase;
	margin: 0;
}

.blog-cta__button {
	margin-top: 28px;
	background: var(--rc-color-primary-contrast);
	color: var(--rc-color-primary);
}

.blog-cta__button:hover {
	background: var(--rc-color-primary);
	color: var(--rc-color-primary-contrast);
}

/* Generic wave divider for theme sections: --wave-color = next section's background */
.theme-wave {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 140px;
	background: var(--wave-color, var(--rc-color-primary));
	pointer-events: none;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: 100% 100%;
	mask-size: 100% 100%;
	-webkit-mask-position: bottom;
	mask-position: bottom;
}

.theme-wave--1 { -webkit-mask-image: url(../img/waves/w1.svg); mask-image: url(../img/waves/w1.svg); }
.theme-wave--2 { -webkit-mask-image: url(../img/waves/w2.svg); mask-image: url(../img/waves/w2.svg); }
.theme-wave--3 { -webkit-mask-image: url(../img/waves/w3.svg); mask-image: url(../img/waves/w3.svg); }
.theme-wave--4 { -webkit-mask-image: url(../img/waves/w4.svg); mask-image: url(../img/waves/w4.svg); }
.theme-wave--5 { -webkit-mask-image: url(../img/waves/w5.svg); mask-image: url(../img/waves/w5.svg); }

.theme-wave--anim {
	right: auto;
	width: 200%;
	height: 170px;
	opacity: 0.35;
	-webkit-mask-image: url(../img/waves/wide.svg);
	mask-image: url(../img/waves/wide.svg);
	animation: rc-wave 14s linear infinite;
}

@media (max-width: 767px) {
	.blog-hero {
		padding: 150px var(--rc-gutter) 150px;
	}

	.post-card--featured .post-card__body {
		padding: 26px;
	}
}

/* ---------------------------------------------------------------------------
 * Cursor glow + tap pulse (assets/js/cursor.js). A soft blue shadow trails
 * the pointer and grows over interactive elements; taps and clicks leave a
 * soft pulse that fades out. Fixed, pointer-events none,
 * so nothing underneath changes behaviour.
 * ------------------------------------------------------------------------- */
.rc-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(91, 134, 255, 0.55) 0%, rgba(91, 134, 255, 0.25) 45%, rgba(91, 134, 255, 0) 72%);
	pointer-events: none;
	z-index: 9999;
	opacity: 0;
	transition: width 0.2s ease, height 0.2s ease, opacity 0.25s ease, background 0.2s ease;
	will-change: transform;
}

.rc-cursor.is-visible {
	opacity: 1;
}

.rc-cursor.is-hover {
	width: 56px;
	height: 56px;
	background: radial-gradient(circle, rgba(91, 134, 255, 0.45) 0%, rgba(91, 134, 255, 0.18) 50%, rgba(91, 134, 255, 0) 72%);
}

.rc-cursor.is-down {
	width: 20px;
	height: 20px;
}

.rc-tap {
	position: fixed;
	left: 0;
	top: 0;
	width: 12px;
	height: 12px;
	margin: -6px 0 0 -6px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(91, 134, 255, 0.6) 0%, rgba(91, 134, 255, 0.25) 50%, rgba(91, 134, 255, 0) 72%);
	pointer-events: none;
	z-index: 9998;
	animation: rc-tap 0.55s ease-out forwards;
}

.rc-tap--big {
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	animation-duration: 0.7s;
}

@keyframes rc-tap {
	0% { transform: scale(1); opacity: 0.9; }
	100% { transform: scale(5); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.rc-cursor,
	.rc-tap {
		display: none;
	}
}

/* Plain WordPress pages (Privacy, Terms): single reading column */
.entry-wrap--plain .entry-wrap__inner {
	grid-template-columns: minmax(0, 1fr);
	max-width: 820px;
}

.entry-wrap--plain .entry__content > p:first-child {
	font-size: 18px;
	color: var(--rc-color-text);
}

/* ---------------------------------------------------------------------------
   Service-area maps ([radcans_map], inc/maps.php). Light colors live inside the
   generated SVG (var(--rc-*) with token fallbacks); the dark modifier swaps them
   for navy sections. Never edit the SVGs by hand: scripts/build-maps.py.
   --------------------------------------------------------------------------- */
.rc-map-wrap { display: block; width: 100%; }
.rc-map-wrap--utah { max-width: 900px; margin-inline: auto; }
.rc-map--dark .rc-map__state { fill: var(--rc-color-navy-surface); stroke: var(--rc-color-navy-border); }
.rc-map--dark .rc-map__grid { stroke: var(--rc-color-navy-border); }
.rc-map--dark .rc-map__county { fill: var(--rc-color-navy-raised); stroke: var(--rc-color-blue-light); }
.rc-map--dark .rc-map__county--hi { fill: var(--rc-color-accent); stroke: var(--rc-color-blue-light); }
.rc-map--dark .rc-map__dot { fill: var(--rc-color-ice-soft); stroke: var(--rc-color-primary); }
.rc-map--dark .rc-map__text { fill: var(--rc-color-primary-contrast); }
.rc-map--dark .rc-map__county-name { fill: var(--rc-color-blue-light); }
.rc-map--dark .rc-map__leader { stroke: var(--rc-color-blue-light); }
@media (max-width: 640px) {
	/* The SVG scales with its box, so labels sized for 800px would shrink to ~8px on phones. */
	.rc-map--area .rc-map__label { font-size: 30px; }
	.rc-map--area .rc-map__county-name { font-size: 52px; }
	.rc-map--area .rc-map__dot { r: 9; }
}

/* Contact form honeypot (inc/forms.php): off-screen, not display:none, so bots still fill it. */
.rc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Square Appointments embed ([radcans_square_embed], inc/square.php). Square sizes its own iframe. */
.rc-square-embed { display: block; width: 100%; }
/* Square writes an inline min-height:500px on the iframe, which clips the service list; !important is the only way past it. */
.rc-square-embed iframe { display: block; width: 100% !important; max-width: 100%; min-height: 620px !important; border: 0; border-radius: 18px; }
@media (max-width: 767px) { .rc-square-embed iframe { min-height: 600px !important; } }

/* Inline links inside Elementor paragraphs (cross-links added 2026-09-28). Inherit the paragraph color so
   they read on navy, blue and white alike; the underline is what marks them. Buttons are never nested here. */
.e-paragraph-base a {
	color: inherit;
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: var(--rc-color-blue-light);
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}

.e-paragraph-base a:hover,
.e-paragraph-base a:focus-visible {
	color: var(--rc-color-blue-light);
}
