/* aplus: front-end styles.
   Colours, fonts and base spacing come from theme.json; everything specific to this design lives here.
   Layout is plain CSS on class names, so it does not depend on WordPress's generated layout classes.

   Contents: variables · base · buttons · header · hero · sections · prices · calculator · visit
             · footer · page head and legal pages · fail-safes */

/* ---------------------------------------------------------------- variables */
:root {
	--a-navy-900: var(--wp--preset--color--navy-900, #0a1424);
	--a-navy-800: var(--wp--preset--color--navy-800, #0e1a2b);
	--a-navy-700: var(--wp--preset--color--navy-700, #17283e);
	--a-steel: var(--wp--preset--color--steel, #46586e);
	--a-mist: var(--wp--preset--color--mist, #b6c2d1);
	--a-silver: var(--wp--preset--color--silver, #d3dbe5);
	--a-fog: var(--wp--preset--color--fog, #eceff3);
	--a-paper: var(--wp--preset--color--paper, #f7f8fa);
	--a-ink: var(--wp--preset--color--ink, #0e1a2b);
	--a-red: var(--wp--preset--color--red, #d4181f);
	--a-red-hot: var(--wp--preset--color--red-hot, #f0323a);
	--a-font: var(--wp--preset--font-family--archivo, "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif);
	--a-gutter: clamp(20px, 4vw, 56px);
	--a-max: 1280px;
	--a-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* ---------------------------------------------------------------- base */
html {
	scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
}

body {
	margin: 0;
	font-family: var(--a-font);
	-webkit-font-smoothing: antialiased;
}

:where(.wp-site-blocks) :where(h1, h2, h3, h4, p, ul, ol, figure, table, blockquote) {
	margin: 0;
}

.wp-site-blocks img {
	max-width: 100%;
	height: auto;
}

:focus-visible {
	outline: 3px solid var(--a-red-hot);
	outline-offset: 3px;
}

/* text for screen readers only */
.aplus-sr {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.aplus-wrap {
	width: min(var(--a-max), 100% - 2 * var(--a-gutter));
	margin-inline: auto;
}

.aplus-section {
	padding-block: clamp(72px, 10vw, 140px);
	scroll-margin-top: 40px;
}

.aplus-section--paper { background: var(--a-paper); }
.aplus-section--fog { background: var(--a-fog); }
.aplus-section--dark { background: var(--a-navy-900); color: #fff; }

.aplus-h2 {
	max-width: 14em;
	font-size: clamp(2rem, 4.2vw, 3.5rem);
	font-weight: 800;
	line-height: 1.04;
	letter-spacing: -0.025em;
	text-wrap: balance;
}

.aplus-lead {
	max-width: 46ch;
	margin-top: 20px;
	color: var(--a-steel);
}

/* the "display" look: wide italic, like the logo's wordmark */
.is-style-aplus-display,
.aplus-section--dark .aplus-h2 {
	font-stretch: 118%;
	font-style: italic;
}

/* ---------------------------------------------------------------- buttons */
.wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

.wp-block-button.is-style-aplus-skew .wp-block-button__link,
.wp-block-button.is-style-aplus-skew-ghost .wp-block-button__link,
.wp-block-button.is-style-aplus-skew-dark .wp-block-button__link {
	position: relative;
	isolation: isolate;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.95em 1.7em;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #fff;
	font-family: var(--a-font);
	font-size: 1rem;
	font-stretch: 118%;
	font-style: italic;
	font-weight: 700;
	line-height: 1.1;
	text-decoration: none;
	cursor: pointer;
}

/* the slanted shape is a pseudo-element, so the text itself stays upright */
.wp-block-button.is-style-aplus-skew .wp-block-button__link::before,
.wp-block-button.is-style-aplus-skew-ghost .wp-block-button__link::before,
.wp-block-button.is-style-aplus-skew-dark .wp-block-button__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border: 2px solid transparent;
	border-radius: 4px;
	transform: skewX(-10deg);
	transition: background-color 0.2s, border-color 0.2s, transform 0.2s;
}

.wp-block-button.is-style-aplus-skew .wp-block-button__link::before { background: var(--a-red); }
.wp-block-button.is-style-aplus-skew .wp-block-button__link:hover::before { background: var(--a-red-hot); transform: skewX(-10deg) translateX(3px); }

.wp-block-button.is-style-aplus-skew-ghost .wp-block-button__link::before { border-color: rgba(255, 255, 255, 0.4); }
.wp-block-button.is-style-aplus-skew-ghost .wp-block-button__link:hover::before { border-color: #fff; background: rgba(255, 255, 255, 0.08); transform: skewX(-10deg) translateX(3px); }

.wp-block-button.is-style-aplus-skew-dark .wp-block-button__link::before { background: var(--a-navy-800); }
.wp-block-button.is-style-aplus-skew-dark .wp-block-button__link:hover::before { background: var(--a-red); transform: skewX(-10deg) translateX(3px); }

/* ---------------------------------------------------------------- header */
.aplus-header {
	position: fixed;
	inset: 0 0 auto 0;
	z-index: 50;
	color: #fff;
	transition: background-color 0.3s, box-shadow 0.3s;
}

/* with the admin bar showing, aplus.js moves the header down by exactly the bar's visible height */

/* The frosted-glass bar lives on its own layer behind the header. It must NOT be a backdrop-filter on the
   header itself: that would make the header the reference frame for the full-screen mobile menu, and the menu
   would then open squeezed into the header bar instead of covering the screen. */
.aplus-header::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgba(10, 20, 36, 0.92);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	opacity: 0;
	transition: opacity 0.3s;
	pointer-events: none;
}

.aplus-header.is-solid::before { opacity: 1; }
.aplus-header.is-solid { box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08); }

.aplus-header__in {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: min(var(--a-max), 100% - 2 * var(--a-gutter));
	height: 80px;
	margin-inline: auto;
}

.aplus-brand { margin: 0; flex: none; }
.aplus-brand a { display: block; }
.aplus-brand img { display: block; width: auto; height: 60px; }
.aplus-brand--footer img { height: 84px; }

.aplus-nav {
	font-size: 0.95rem;
	font-weight: 500;
	gap: clamp(20px, 3vw, 40px);
}

.aplus-nav a,
.aplus-nav .wp-block-navigation-item__content {
	color: var(--a-mist);
	text-decoration: none;
	transition: color 0.2s;
}

.aplus-nav a:hover { color: #fff; }

.aplus-nav .wp-block-navigation__responsive-container-open,
.aplus-nav .wp-block-navigation__responsive-container-close { color: #fff; }

.aplus-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 32px var(--a-gutter); }
.aplus-nav .wp-block-navigation__responsive-container.is-menu-open a { color: #fff; font-size: 1.4rem; }

.aplus-header__cta .wp-block-button__link { padding: 0.7em 1.3em; font-size: 0.92rem; white-space: nowrap; }

/* "Anrufen" inside the navigation: only visible in the opened phone menu */
.wp-block-navigation.aplus-nav .aplus-nav__call { display: none; }

/* below 782px the navigation becomes a burger button (three lines). Then the header is just logo + burger
   (the burger sits at the right, where the call button was) and "Anrufen" moves into the opened menu. */
@media (max-width: 781px) {
	.aplus-header__in { height: 68px; }

	/* no call button in the bar: it lives in the opened menu. !important because WordPress's layout classes
	   set display on every Buttons block */
	.aplus-header .aplus-header__cta { display: none !important; }
	.aplus-nav { margin-left: auto; }

	/* WordPress shows the inline links from 600px up; on tablets we keep the burger instead */
	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }

	.aplus-nav .wp-block-navigation__responsive-container-open {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		margin-right: -10px;
		padding: 0;
		border-radius: 8px;
		color: #fff;
	}
	.aplus-nav .wp-block-navigation__responsive-container-open svg { width: 28px; height: 28px; }
	.aplus-nav .wp-block-navigation__responsive-container-open:hover { background: rgba(255, 255, 255, 0.08); }

	/* The opened menu. WordPress styles its overlay with strong selectors, so these are long on purpose. */
	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 20px var(--a-gutter) 32px; }

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 28px; }

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
		align-items: stretch;
		gap: 0;
		width: 100%;
	}

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item {
		align-items: stretch;
		width: 100%;
	}

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content {
		display: block;
		width: 100%;
		padding: 16px 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.12);
		color: #fff;
		font-size: 1.4rem;
		font-weight: 600;
		text-decoration: none;
	}

	/* "Anrufen": the same slanted red button as in the header on larger screens */
	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .aplus-nav__call {
		display: flex;
		align-items: flex-start;
		margin-top: 32px;
	}

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .aplus-nav__call .wp-block-navigation-item__content {
		display: inline-block;
		width: auto;
		padding: 0.95em 1.9em;
		border: 0;
		background: var(--a-red);
		color: #fff;
		font-size: 1.05rem;
		font-stretch: 118%;
		font-style: italic;
		font-weight: 700;
		transform: skewX(-10deg);
	}

	.wp-block-navigation.aplus-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .aplus-nav__call .wp-block-navigation-item__label {
		display: inline-block;
		transform: skewX(10deg);
	}
}

@media (max-width: 400px) {
	.aplus-brand img { height: 50px; }
	.aplus-header__cta .wp-block-button__link { padding: 0.65em 1em; font-size: 0.85rem; }
}

/* ---------------------------------------------------------------- hero */
.aplus-hero {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	/* full screen on laptops, but not endlessly tall on large monitors */
	min-height: 100vh;
	min-height: clamp(640px, 100svh, 780px);
	padding-top: 100px;
	overflow: hidden;
	color: #fff;
	background: var(--a-navy-900);
}

/* The photo, tinted navy. It is a close-up, so instead of filling the whole hero it is shown smaller on the right:
   the wheel looks further away, and the edges fade into the dark background. Change --a-photo-w to zoom:
   a smaller number zooms out, a larger one zooms in. */
.aplus-hero {
	--a-photo-w: min(68%, 1000px);
}

.aplus-hero::before {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	z-index: -3;
	width: var(--a-photo-w);
	aspect-ratio: 2400 / 1597;
	background:
		linear-gradient(rgba(16, 35, 63, 0.8), rgba(16, 35, 63, 0.8)),
		url("../images/hero-wheel.jpg") center / cover no-repeat;
	background-blend-mode: color, normal;
	filter: saturate(0.85) contrast(1.12) brightness(1.06);
	/* soft edges: fades in from the left, and out at the top and bottom */
	-webkit-mask-image:
		linear-gradient(90deg, transparent 0, #000 34%),
		linear-gradient(180deg, transparent 0, #000 18%, #000 82%, transparent 100%);
	mask-image:
		linear-gradient(90deg, transparent 0, #000 34%),
		linear-gradient(180deg, transparent 0, #000 18%, #000 82%, transparent 100%);
	-webkit-mask-composite: source-in;
	mask-composite: intersect;
	transform: translateY(calc(-50% + var(--a-bg-y, 0px))) scale(var(--a-bg-scale, 1));
	transform-origin: 60% 50%;
	will-change: transform;
}

/* dark where the text is, opening toward the right; deep at the top and bottom like a film frame */
.aplus-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(8, 16, 28, 0.9) 0%, rgba(8, 16, 28, 0.74) 32%, rgba(8, 16, 28, 0.3) 64%, rgba(8, 16, 28, 0.08) 100%),
		linear-gradient(180deg, rgba(8, 16, 28, 0.55) 0%, rgba(8, 16, 28, 0) 24%, rgba(8, 16, 28, 0) 52%, rgba(10, 20, 36, 0.97) 100%);
}

.aplus-hero__content {
	position: relative;
	z-index: 2;
	margin-block: auto;
	padding-block: 28px 36px;
}

.aplus-hero__title {
	font-size: clamp(2.5rem, 5.6vw, 5rem);
	font-stretch: 125%;
	font-style: italic;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.03em;
	text-shadow: 0 2px 30px rgba(8, 16, 28, 0.45);
	color: #fff;
}

/* the title is split into lines by aplus.js; each line is masked so it can slide up */
.aplus-line {
	display: block;
	overflow: hidden;
	padding: 0.06em 0.12em 0.1em 0;
	margin-right: -0.12em;
}

.aplus-line__in { display: block; }

.aplus-hero__lead {
	max-width: 42ch;
	margin-top: 28px;
	color: #cdd8e6;
	font-size: 1.15rem;
}

.aplus-hero__actions { margin-top: 36px; }

/* the selector is long on purpose: WordPress gives every plain Separator "width: 100px", and this has to win */
.aplus-hero hr.wp-block-separator.aplus-road {
	position: relative;
	z-index: 3;
	box-sizing: border-box;
	width: 100%;
	max-width: none;
	height: 3px;
	margin: 0;
	border: 0;
	background: linear-gradient(90deg, var(--a-red-hot) 0 30%, rgba(255, 255, 255, 0.2) 30%);
	opacity: 1;
}

.aplus-hero__foot {
	position: relative;
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 4px 40px;
	min-height: 96px;
	padding-block: 16px;
	color: #c3cfde;
	font-size: 0.95rem;
}

@media (max-width: 760px) {
	/* On phones the text no longer sits on top of the photo (that made it hard to read and dulled the wheel).
	   The text has plain dark navy behind it, and the wheel gets its own bright band underneath, above the road line. */
	.aplus-hero {
		--a-photo-h: calc(100vw * 0.72);
		padding-top: 100px;
	}

	.aplus-hero::before {
		left: 0;
		right: 0;
		top: auto;
		bottom: 113px; /* the height of the opening-hours strip below the road line, plus the line itself */
		width: auto;
		height: var(--a-photo-h);
		aspect-ratio: auto;
		background:
			radial-gradient(circle at 0% 100%, rgba(10, 20, 36, 0.92) 0, rgba(10, 20, 36, 0) 52%),
			linear-gradient(rgba(16, 35, 63, 0.72), rgba(16, 35, 63, 0.72)),
			url("../images/hero-wheel.jpg") 58% 52% / cover no-repeat;
		/* the shorthand above resets the blend mode, so it is set again: "color" gives the photo the navy hue,
		   which removes the warm orange of the original while keeping its light and dark. The dark corner at the
		   bottom left hides the pale floor of the photo. */
		background-blend-mode: normal, color, normal;
		filter: saturate(1) contrast(1.16) brightness(1.3);
		/* fades in from the top only; the bottom ends on the road line */
		-webkit-mask-image: linear-gradient(180deg, transparent 0, #000 42%, #000 100%);
		mask-image: linear-gradient(180deg, transparent 0, #000 42%, #000 100%);
		-webkit-mask-composite: source-over;
		mask-composite: add;
		/* No scroll drift here: the band is pinned to the road line, and sliding it would push it over the
		   opening hours. The slow zoom-in at the start grows upward from the line, so the bottom edge stays put. */
		transform: scale(var(--a-bg-scale, 1));
		transform-origin: 58% 100%;
	}

	/* the opening-hours strip is solid, so the photo can never show through it */
	.aplus-hero__foot { background: var(--a-navy-900); }

	/* the overlay is only a light vignette now: nothing has to be darkened for the text */
	.aplus-hero::after {
		background: linear-gradient(180deg, rgba(8, 16, 28, 0) 62%, rgba(9, 18, 33, 0.6) 100%);
	}

	/* room under the buttons for the photo band (its top 42% is faded out) */
	.aplus-hero__content { padding-bottom: calc(var(--a-photo-h) * 0.74); }

	.aplus-hero__title { font-size: clamp(2.1rem, 9.4vw, 3rem); }
	.aplus-hero__lead { color: #dde6f1; font-size: 1.08rem; line-height: 1.55; }
	.aplus-hero__actions .wp-block-button { flex: 1 1 auto; }
	.aplus-hero__actions .wp-block-button__link { width: 100%; }
	.aplus-hero__foot { min-height: 110px; }

	/* the burger: a soft white focus ring instead of the red box, and a little more presence for the logo */
	.aplus-nav .wp-block-navigation__responsive-container-open:focus-visible,
	.aplus-nav .wp-block-navigation__responsive-container-close:focus-visible {
		outline: 2px solid rgba(255, 255, 255, 0.85);
		outline-offset: 2px;
		border-radius: 8px;
	}
	.aplus-brand img { height: 54px; }
}

/* ---------------------------------------------------------------- prices */
.aplus-prices__grid {
	display: grid;
	grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
	gap: clamp(32px, 6vw, 96px);
	align-items: start;
}

.aplus-prices__head { position: sticky; top: 120px; }
.aplus-prices__cta { margin-top: 32px; }
.aplus-prices__body { display: grid; gap: clamp(48px, 6vw, 80px); }

.aplus-block__title {
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.005em;
}

.aplus-block__note {
	margin-top: 4px;
	color: var(--a-steel);
	font-size: 0.95rem;
}

.aplus-price {
	font-stretch: 125%;
	font-style: italic;
	font-weight: 800;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* one price, shown big */
.aplus-single {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 24px;
	margin-top: 12px;
	padding: 28px 0;
	border-block: 2px solid var(--a-ink);
}

.aplus-single .aplus-block__note { margin: 0; }
.aplus-price--xl { font-size: clamp(2.6rem, 6vw, 4.8rem); line-height: 1; }

/* tables: the core Table block, restyled */
.wp-block-table[class*="aplus-"] table { width: 100%; border: 0; border-collapse: collapse; }
.wp-block-table[class*="aplus-"] :is(th, td) { padding: 0; border: 0; }

/* header rows are read by screen readers only */
.wp-block-table[class*="aplus-"] thead {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.aplus-matrix table { margin-top: 16px; }
.wp-block-table.aplus-matrix table thead { position: static; width: auto; height: auto; overflow: visible; clip-path: none; border-bottom: 0; }
.wp-block-table.aplus-matrix table th { padding: 0 16px 12px; color: var(--a-steel); font-size: 0.95rem; font-weight: 600; text-align: right; }
.wp-block-table.aplus-matrix table th:first-child { text-align: left; }
.wp-block-table.aplus-matrix table tbody tr { border-top: 1px solid rgba(14, 26, 43, 0.18); transition: background-color 0.2s; }
.wp-block-table.aplus-matrix table tbody tr:last-child { border-bottom: 1px solid rgba(14, 26, 43, 0.18); }
.wp-block-table.aplus-matrix table tbody tr:hover { background: var(--a-fog); }
.wp-block-table.aplus-matrix table td { padding: 18px 16px; text-align: right; }
.wp-block-table.aplus-matrix table td:first-child { font-size: 1.05rem; font-weight: 700; text-align: left; }
.wp-block-table.aplus-matrix table td:not(:first-child) {
	font-size: clamp(1.4rem, 2.8vw, 2.3rem);
	font-stretch: 125%;
	font-style: italic;
	font-weight: 800;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* menu-style lists: name, dotted leader, price */
.aplus-rates { margin-top: 12px; border-top: 2px solid var(--a-ink); }
.aplus-rates :is(table, tbody) { display: block; }
.aplus-rates tr { display: flex; align-items: baseline; gap: 14px; padding: 13px 8px; transition: background-color 0.2s; }
.aplus-rates tr:hover { background: var(--a-fog); }
.aplus-rates td:first-child { display: flex; flex: 1; align-items: center; gap: 14px; font-weight: 500; }
.aplus-rates td:first-child::after {
	content: "";
	flex: 1;
	min-width: 24px;
	height: 4px;
	transform: scaleX(var(--a-leader, 1));
	transform-origin: 0 50%;
	background: radial-gradient(circle, rgba(14, 26, 43, 0.4) 1px, transparent 1.6px) 0 50% / 8px 4px repeat-x;
}
.aplus-rates td:last-child { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }

.aplus-callout {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px 24px;
	padding: 22px 24px;
	border-left: 6px solid var(--a-red);
	background: var(--a-fog);
}

.aplus-callout__title { font-size: 1rem; font-weight: 700; }
.aplus-callout__price { font-size: 1.3rem; font-stretch: 112%; font-weight: 800; }

@media (max-width: 960px) {
	.aplus-prices__grid { grid-template-columns: 1fr; }
	.aplus-prices__head { position: static; }
}

@media (max-width: 520px) {
	.wp-block-table.aplus-matrix table :is(th, td) { padding-inline: 8px; }
	.aplus-single { flex-direction: column; gap: 8px; }
}

/* ---------------------------------------------------------------- calculator (built by aplus.js) */
.aplus-calc__grid {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(32px, 6vw, 96px);
	align-items: center;
}

.aplus-calc__panel {
	position: relative;
	padding: clamp(28px, 4vw, 48px) clamp(28px, 4vw, 48px) clamp(52px, 5vw, 68px);
	border-radius: 32px 32px 10px 10px;
	background: var(--a-navy-800);
	color: #fff;
	overflow: hidden;
}

/* the red rim line from the logo */
.aplus-calc__panel::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 6px; background: var(--a-red); }

/* tread blocks along the bottom edge */
.aplus-calc__panel::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 22px;
	background: repeating-linear-gradient(-68deg, #223652 0 16px, transparent 16px 26px);
}

.aplus-calc__nojs { color: var(--a-mist); }
.aplus-calc.is-ready .aplus-calc__nojs { display: none; }
.aplus-calc__cta { margin-top: 28px; }

.aplus-calc__group { display: flex; flex-wrap: wrap; gap: 10px; min-width: 0; margin: 0 0 24px; padding: 0; border: 0; }
.aplus-calc__label { float: left; width: 100%; margin-bottom: 8px; padding: 0; color: var(--a-mist); font-size: 0.9rem; }

.aplus-pill { position: relative; }
.aplus-pill input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.aplus-pill span {
	display: block;
	padding: 0.55em 1.2em;
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: 999px;
	font-size: 0.95rem;
	font-weight: 600;
	transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}
.aplus-pill input:checked + span { background: #fff; border-color: #fff; color: var(--a-navy-800); }
.aplus-pill input:disabled { cursor: not-allowed; }
.aplus-pill input:disabled + span { opacity: 0.35; }
.aplus-pill input:focus-visible + span { outline: 3px solid var(--a-red-hot); outline-offset: 3px; }
.aplus-pill small { margin-left: 0.5em; font-size: 0.85em; font-weight: 500; opacity: 0.75; }

.aplus-calc__result { margin-top: 8px; padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, 0.16); }
.aplus-calc__total { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 20px; }
.aplus-calc__num {
	font-size: clamp(2.6rem, 6vw, 4.6rem);
	font-stretch: 125%;
	font-style: italic;
	font-weight: 800;
	line-height: 1.05;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
}
.aplus-calc__tag { color: var(--a-mist); font-size: 0.95rem; }
.aplus-calc__lines { display: grid; gap: 6px; margin: 16px 0 0; padding: 0; list-style: none; color: var(--a-mist); font-size: 0.95rem; }
.aplus-calc__lines li { display: flex; justify-content: space-between; gap: 16px; }
.aplus-calc__lines li span:last-child { color: #fff; font-variant-numeric: tabular-nums; white-space: nowrap; }
.aplus-calc__fine { margin: 16px 0 0; color: var(--a-mist); font-size: 0.85rem; }

@media (max-width: 960px) { .aplus-calc__grid { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- visit */
.aplus-visit__grid {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(32px, 6vw, 96px);
	align-items: stretch;
}

.aplus-visit__info { display: grid; align-content: start; gap: 28px; }
.aplus-visit__info .aplus-h2 { margin-bottom: 12px; color: #fff; }
.aplus-info__label { color: var(--a-mist); font-size: 0.9rem; }
.aplus-info__value { margin-top: 4px; font-size: 1.15rem; font-weight: 500; }

.aplus-visit a { color: #fff; }
.aplus-info__value a { border-bottom: 2px solid var(--a-red-hot); text-decoration: none; }
.aplus-info__value a:hover { color: var(--a-red-hot); }

/* Social Icons block: WordPress styles it itself (grey pill, tiny label), so these rules are deliberately specific */
.aplus-visit .wp-block-social-links.aplus-social {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
	margin: 4px 0 0;
	padding: 0;
	list-style: none;
	font-size: 1.15rem;
}

.aplus-visit .wp-block-social-links.aplus-social .wp-social-link {
	margin: 0;
	padding: 0;
	background: transparent;
	color: #fff;
	font-size: inherit;
}

.aplus-visit .wp-block-social-links.aplus-social .wp-social-link .wp-block-social-link-anchor {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 0;
	border-bottom: 2px solid var(--a-red-hot);
	color: #fff;
	font-size: inherit;
	font-weight: 500;
	text-decoration: none;
}

.aplus-visit .wp-block-social-links.aplus-social .wp-social-link .wp-block-social-link-anchor:hover {
	color: var(--a-red-hot);
}

.aplus-visit .wp-block-social-links.aplus-social .wp-block-social-link-label {
	font-size: inherit;
	margin: 0;
}

.aplus-visit .wp-block-social-links.aplus-social svg {
	width: 1.1em;
	height: 1.1em;
	fill: currentColor;
}

.aplus-hours { max-width: 360px; margin-top: 4px; }
.wp-block-table.aplus-hours :is(table, tbody) { display: block; }
.wp-block-table.aplus-hours tr { display: flex; justify-content: space-between; gap: 24px; padding: 10px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.14); }
.wp-block-table.aplus-hours td { font-weight: 500; font-variant-numeric: tabular-nums; }

.aplus-map {
	position: relative;
	min-height: 380px;
	border-radius: 10px;
	overflow: hidden;
	background:
		repeating-linear-gradient(-68deg, rgba(255, 255, 255, 0.03) 0 16px, transparent 16px 26px),
		var(--a-navy-700);
}

.aplus-map__stage { display: grid; align-content: center; gap: 24px; min-height: 380px; padding: clamp(24px, 4vw, 48px); }
.aplus-map__note { max-width: 44ch; color: var(--a-mist); }
.aplus-map iframe { display: block; width: 100%; height: 100%; min-height: 380px; border: 0; filter: grayscale(0.35) contrast(1.05); }
.aplus-map.is-loaded .aplus-map__stage { display: none; }
.aplus-map__live { position: absolute; inset: 0; }
.aplus-map__route { position: absolute; left: 20px; bottom: 20px; }
.aplus-map__route .wp-block-button__link { padding: 0.7em 1.3em; font-size: 0.92rem; }

@media (max-width: 960px) { .aplus-visit__grid { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- footer */
.aplus-footer {
	padding: 40px 0 48px;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	background: var(--a-navy-900);
	color: var(--a-mist);
	font-size: 0.9rem;
}

.aplus-footer__in {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px 40px;
	width: min(var(--a-max), 100% - 2 * var(--a-gutter));
	margin-inline: auto;
}

.aplus-footer__addr { font-style: normal; line-height: 1.6; }
.aplus-footer a { color: var(--a-mist); text-decoration: none; }
.aplus-footer a:hover { color: #fff; text-decoration: underline; }
.aplus-footer__nav { gap: 8px 24px; font-size: 0.9rem; }
.aplus-footer .wp-block-navigation-item__content { color: var(--a-mist); }

/* ---------------------------------------------------------------- page head, legal pages, text pages */
.aplus-page-head {
	position: relative;
	padding: 150px 0 56px;
	background: radial-gradient(55% 90% at 85% 40%, #1b3354 0%, transparent 72%), var(--a-navy-800);
	color: #fff;
}

/* the red road line, as on the home page */
.aplus-page-head::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 3px;
	background: linear-gradient(90deg, var(--a-red-hot) 0 30%, rgba(255, 255, 255, 0.2) 30%);
}

.aplus-page-head__back { margin-bottom: 28px; font-size: 0.95rem; }
.aplus-page-head__back a { color: var(--a-mist); text-decoration: none; }
.aplus-page-head__back a:hover { color: #fff; text-decoration: underline; }

.aplus-page-head__title {
	margin: 0;
	color: #fff;
	font-size: clamp(1.7rem, 5vw, 4.2rem);
	font-stretch: 125%;
	font-style: italic;
	font-weight: 800;
	line-height: 1.02;
	letter-spacing: -0.03em;
	overflow-wrap: anywhere;
	hyphens: auto;
}

.aplus-legal { padding: clamp(48px, 7vw, 96px) 0 clamp(80px, 10vw, 140px); background: var(--a-paper); }

/* the contents list is built by aplus.js; until then (or without it) the text is simply one column */
.aplus-legal__inner.has-toc {
	display: grid;
	grid-template-columns: minmax(0, 250px) minmax(0, 1fr);
	gap: clamp(32px, 6vw, 96px);
	align-items: start;
}

.aplus-toc { position: sticky; top: 110px; font-size: 0.95rem; }
.aplus-toc__title { margin-bottom: 12px; color: var(--a-steel); font-size: 0.9rem; }
.aplus-toc ol { display: grid; gap: 2px; margin: 0; padding: 0; border-left: 2px solid rgba(14, 26, 43, 0.14); list-style: none; }
.aplus-toc a {
	display: block;
	margin-left: -2px;
	padding: 8px 14px;
	border-left: 2px solid transparent;
	color: var(--a-steel);
	line-height: 1.35;
	text-decoration: none;
	transition: color 0.2s, border-color 0.2s;
}
.aplus-toc a:hover { color: var(--a-ink); }
.aplus-toc a.is-active { border-left-color: var(--a-red); color: var(--a-ink); font-weight: 600; }

.aplus-legal__body,
.aplus-legal__inner:not(.has-toc),
.aplus-prose { max-width: 74ch; hyphens: auto; -webkit-hyphens: auto; }

.aplus-legal__inner:not(.has-toc) { margin-inline: auto; width: min(74ch, 100% - 2 * var(--a-gutter)); }
.aplus-prose { padding-block: clamp(48px, 7vw, 96px); }

:is(.aplus-legal, .aplus-prose) h2 {
	margin: 64px 0 18px;
	padding-top: 24px;
	border-top: 1px solid rgba(14, 26, 43, 0.18);
	font-size: clamp(1.45rem, 2.4vw, 2rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	scroll-margin-top: 110px;
}

:is(.aplus-legal, .aplus-prose) :is(h2):first-child { margin-top: 0; padding-top: 0; border-top: 0; }
:is(.aplus-legal, .aplus-prose) h3 { margin: 36px 0 10px; font-size: 1.2rem; line-height: 1.3; letter-spacing: -0.01em; }
:is(.aplus-legal, .aplus-prose) h4 { margin: 26px 0 8px; color: var(--a-steel); font-size: 1.02rem; line-height: 1.35; letter-spacing: 0; }
:is(.aplus-legal, .aplus-prose) p { margin: 0 0 16px; }
:is(.aplus-legal, .aplus-prose) ul { margin: 0 0 18px; padding-left: 1.3em; list-style: disc; }
:is(.aplus-legal, .aplus-prose) li { margin-bottom: 6px; padding-left: 0.2em; }
:is(.aplus-legal, .aplus-prose) a { text-underline-offset: 3px; overflow-wrap: anywhere; }

.aplus-notfound { padding-block: 200px 120px; }
.aplus-notfound .aplus-lead { margin-bottom: 32px; }

@media (max-width: 900px) {
	.aplus-legal__inner.has-toc { grid-template-columns: minmax(0, 1fr); }
	.aplus-toc { display: none; }
}

/* ---------------------------------------------------------------- fail-safes */
/* While the intro script has not run yet, the hero text waits; if it never runs, it shows after 3 seconds. */
.aplus-js:not(.aplus-ready) :is(.aplus-hero__lead, .aplus-hero__actions, .aplus-hero__foot) { opacity: 0; animation: aplus-show 0s 3s forwards; }
.aplus-js:not(.aplus-ready) .aplus-hero__title { visibility: hidden; animation: aplus-show-v 0s 3s forwards; }
@keyframes aplus-show { to { opacity: 1; } }
@keyframes aplus-show-v { to { visibility: visible; } }

@media (prefers-reduced-motion: reduce) {
	.aplus-js:not(.aplus-ready) :is(.aplus-hero__lead, .aplus-hero__actions, .aplus-hero__foot) { opacity: 1; animation: none; }
	.aplus-js:not(.aplus-ready) .aplus-hero__title { visibility: visible; animation: none; }
}
