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

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

/* overflow-x nur auf body, nicht auf html: overflow auf html erzeugt einen
   neuen Scroll-Kontext auf dem Wurzelelement und bricht dadurch
   position: sticky für alle Nachfahren (z.B. NavBar, ReservationCountdownBar). */
body {
	overflow-x: hidden;
	max-width: 100%;
	margin: 0;
}

body {
	background: var(--bg);
	color: var(--ink);
	font-family: var(--font-body), sans-serif;
	background-image: radial-gradient(circle at 15% 20%, rgba(139, 74, 63, 0.05), transparent 40%),
		radial-gradient(circle at 85% 75%, rgba(92, 107, 79, 0.06), transparent 45%);
	background-attachment: fixed;
	line-height: 1.5;
}

img {
	max-width: 100%;
	display: block;
}

a {
	color: inherit;
	text-decoration: none;
}

.font-display {
	font-family: var(--font-display), serif;
}

.photo-slot {
	position: relative;
	border: 1.5px dashed rgba(43, 38, 33, 0.28);
	border-radius: 14px;
	background: repeating-linear-gradient(135deg, rgba(43, 38, 33, 0.03) 0 10px, transparent 10px 20px);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	gap: 8px;
	text-align: center;
	color: var(--taupe);
	overflow: hidden;
}

.photo-slot:has(img) {
	border-style: solid;
	background: none;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* --- Reused patterns (mk- prefix), see plan section 9 --- */

.mk-eyebrow {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--terracotta);
	margin-bottom: 1rem;
	display: block;
}

.mk-section-heading {
	font-family: var(--font-display), serif;
	font-weight: 300;
	font-size: 1.875rem;
	color: var(--ink);
	line-height: 1.2;
}
@media (min-width: 768px) {
	.mk-section-heading {
		font-size: 2.25rem;
	}
}

.mk-em-terracotta {
	font-style: italic;
	font-weight: 500;
	color: var(--terracotta);
}

.mk-pill-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 1rem 2rem;
	border-radius: 999px;
	background: var(--terracotta);
	color: var(--bg);
	font-weight: 600;
	font-size: 1rem;
	border: none;
	cursor: pointer;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.mk-pill-cta:hover {
	transform: translateY(-1px);
	box-shadow: 0 8px 20px rgba(122, 31, 43, 0.25);
}

.mk-badge-pulse {
	position: relative;
	display: inline-flex;
	width: 8px;
	height: 8px;
}
.mk-badge-pulse__ping {
	position: absolute;
	inset: 0;
	border-radius: 999px;
	background: #dc2626;
	animation: mk-ping 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
}
.mk-badge-pulse__dot {
	position: relative;
	width: 8px;
	height: 8px;
	border-radius: 999px;
	background: #dc2626;
}
@keyframes mk-ping {
	75%, 100% {
		transform: scale(2);
		opacity: 0;
	}
}
