/*
 * Responsive contract for shared theme and future page components.
 *
 * Page-specific templates can use the rd-grid, rd-media-cover,
 * rd-service-list, and rd-service-row primitives without re-solving mobile
 * layout or pricing readability.
 */

html,
body {
	max-width: 100%;
}

body {
	overflow-x: clip;
}

.site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	overflow-wrap: anywhere;
}

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

.site-footer {
	margin-block-start: auto;
}

.rd-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: clamp(var(--rd-space-4), 2.5vw, var(--rd-space-6));
}

.rd-media-cover,
.wp-block-cover img,
.wp-block-image.is-style-cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.rd-service-list {
	border-block-start: var(--rd-border);
}

.rd-service-row {
	display: grid;
	grid-template-columns: minmax(10rem, 1.1fr) minmax(14rem, 1.8fr) auto;
	align-items: center;
	gap: var(--rd-space-5);
	padding-block: var(--rd-space-4);
	border-block-end: var(--rd-border);
}

.rd-service-row__name,
.rd-service-row__description,
.rd-service-row__price {
	margin: 0;
}

.rd-service-row__name {
	font-weight: var(--rd-weight-semibold);
	letter-spacing: 0.025em;
	text-transform: uppercase;
}

.rd-service-row__description {
	color: var(--rd-color-muted);
}

.rd-service-row__price {
	justify-self: end;
	font-family: var(--rd-font-display);
	white-space: nowrap;
}

.wp-block-table {
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.wp-block-table table {
	width: 100%;
	border-collapse: collapse;
}

.wp-block-table th,
.wp-block-table td {
	padding: var(--rd-space-3);
	border: var(--rd-border);
	text-align: start;
}

@media (max-width: 75rem) {
	.site-header__inner,
	.site-main {
		width: min(100% - 3rem, var(--rd-wide-width));
	}
}

@media (max-width: 63.999rem) {
	:root {
		--rd-header-height: 4.5rem;
	}

	.has-open-menu {
		overflow: hidden;
	}

	.site-header__booking,
	.rd-menu-toggle,
	.rd-language-switcher__summary,
	.rd-language-switcher__link,
	.site-footer a[href^="tel:"] {
		min-width: 2.75rem;
		min-height: 2.75rem;
	}

	.site-navigation {
		justify-self: stretch;
		width: 100%;
	}

	.site-main {
		padding-block: var(--rd-space-6);
	}

	.rd-grid {
		grid-template-columns: repeat(8, minmax(0, 1fr));
	}

	.rd-service-row {
		grid-template-columns: minmax(9rem, 1fr) minmax(12rem, 1.5fr) auto;
		gap: var(--rd-space-4);
	}

	.rd-home-intro {
		gap: var(--rd-space-7);
	}

	.rd-home-services__grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.rd-home-contact {
		grid-template-columns: 1fr 1fr;
	}

	.rd-home-contact__button {
		grid-column: 1 / -1;
		width: fit-content;
	}
}

@media (max-width: 47.999rem) {
	.site-header__inner,
	.site-main {
		width: min(100% - 2rem, var(--rd-wide-width));
	}

	.site-main {
		padding-block: var(--rd-space-6);
	}

	.entry-title {
		margin-block-end: var(--rd-space-5);
	}

	.rd-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: var(--rd-space-4);
	}

	.rd-card {
		padding: var(--rd-space-5);
	}

	.rd-service-row {
		grid-template:
			"name price" auto
			"description description" auto
			/ minmax(0, 1fr) auto;
		gap: var(--rd-space-1) var(--rd-space-4);
	}

	.rd-service-row__name {
		grid-area: name;
		font-size: var(--rd-font-size-sm);
	}

	.rd-service-row__description {
		grid-area: description;
		font-size: var(--rd-font-size-sm);
	}

	.rd-service-row__price {
		grid-area: price;
	}

	.wp-block-table table {
		min-width: 34rem;
	}

	.wp-block-button,
	.wp-block-button__link,
	.button {
		max-width: 100%;
	}

	.rd-home-section,
	.rd-home-hero__inner,
	.rd-home-trust__inner {
		width: min(100% - 2rem, var(--rd-wide-width));
	}

	.rd-home-hero {
		min-height: 38rem;
	}

	.rd-home-hero__veil {
		background: linear-gradient(90deg, rgb(18 17 16 / 84%), rgb(18 17 16 / 28%));
	}

	.rd-home-intro {
		grid-template-columns: 1fr;
		gap: var(--rd-space-6);
		padding-block: var(--rd-space-7);
	}

	.rd-home-intro__media {
		aspect-ratio: 16 / 10;
	}

	.rd-home-intro__media img {
		object-position: center 58%;
		transform: none;
	}

	.rd-home-section__heading {
		display: block;
	}

	.rd-home-section__heading .rd-kicker {
		margin-block: 0 0 var(--rd-space-3);
	}

	.rd-home-services {
		padding-block-end: var(--rd-space-7);
	}

	.rd-home-services__grid li {
		min-height: 10rem;
	}

	.rd-home-trust {
		padding-block: var(--rd-space-7);
	}

	.rd-home-trust__grid {
		grid-template-columns: 1fr;
	}

	.rd-home-trust blockquote {
		min-height: 0;
		padding-inline: 0;
		border-block-end: 1px solid rgb(255 255 255 / 24%);
		border-inline-start: 0;
	}

	.rd-home-contact {
		grid-template-columns: 1fr;
		padding-block: var(--rd-space-7);
	}

	.rd-home-contact__button {
		grid-column: auto;
	}
}

@media (max-width: 29.999rem) {
	:root {
		--rd-font-size-base: 0.9375rem;
		--rd-space-7: 2.5rem;
		--rd-space-8: 3.5rem;
	}

	.site-header__inner,
	.site-main {
		width: min(100% - 1.5rem, var(--rd-wide-width));
	}

	.site-header__actions {
		gap: var(--rd-space-1);
	}

	.rd-language-switcher__summary,
	.rd-menu-toggle {
		width: 2.75rem;
	}

	.rd-service-row {
		padding-block: var(--rd-space-3);
	}

	.button,
	.wp-element-button,
	button[type="submit"],
	input[type="submit"] {
		width: 100%;
	}

	.rd-home-section,
	.rd-home-hero__inner,
	.rd-home-trust__inner {
		width: min(100% - 1.5rem, var(--rd-wide-width));
	}

	.rd-home-hero {
		min-height: 34rem;
	}

	.rd-home-hero__image {
		object-position: 63% center;
	}

	.rd-home-hero__veil {
		background: linear-gradient(90deg, rgb(18 17 16 / 90%), rgb(18 17 16 / 38%));
	}

	.rd-home-hero h1 {
		font-size: clamp(2.75rem, 14vw, 4.25rem);
	}

	.rd-home-services__grid {
		grid-template-columns: 1fr;
	}

	.rd-home-services__grid li {
		display: grid;
		grid-template-columns: auto 1fr;
		align-items: center;
		gap: var(--rd-space-5);
		min-height: 0;
	}

	.rd-home-services__grid h3 {
		max-width: none;
		margin: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
	}
}
