/* =========================================================
   Zum Brathaus — Design System
   Swiss-Grid-Diszipin + Dimensional Layering, "Modern Clean"
   ========================================================= */

:root {
	--color-primary: #1c6fb8;
	--color-primary-dark: #145184;
	--color-accent: #0ea5a4;
	--color-bg: #ffffff;
	--color-surface: #f6f9fb;
	--color-text: #0f172a;
	--color-text-muted: #475569;
	--color-border: #e2e8f0;

	--font-heading: 'Poppins', 'Segoe UI', sans-serif;
	--font-body: 'Open Sans', 'Segoe UI', sans-serif;

	--radius-sm: 8px;
	--radius-md: 14px;
	--radius-pill: 999px;

	--shadow-1: 0 1px 3px rgba(15, 23, 42, 0.08);
	--shadow-2: 0 6px 16px rgba(15, 23, 42, 0.10);
	--shadow-3: 0 16px 32px rgba(15, 23, 42, 0.14);
	--shadow-4: 0 28px 56px rgba(15, 23, 42, 0.18);

	--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
	--dur-fast: 160ms;
	--dur-base: 220ms;
	--dur-slow: 420ms;

	--header-h: 84px;
	--container-w: 1200px;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}
body {
	margin: 0;
	font-family: var(--font-body);
	font-size: 16px;
	line-height: 1.65;
	color: var(--color-text);
	background: var(--color-bg);
	-webkit-font-smoothing: antialiased;
}
img, svg, video, iframe { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; cursor: pointer; background: none; border: none; color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 700; line-height: 1.2; margin: 0 0 0.6em; color: var(--color-text); text-wrap: balance; }
p { margin: 0 0 1em; max-width: 68ch; }
.container p { max-width: none; }

.icon { width: 1.4em; height: 1.4em; flex: 0 0 auto; vertical-align: middle; }

.container {
	width: 100%;
	max-width: var(--container-w);
	margin: 0 auto;
	padding: 0 24px;
}

.screen-reader-text, .skip-link {
	position: absolute;
	left: -9999px;
	top: auto;
}
.skip-link:focus {
	left: 16px;
	top: 16px;
	z-index: 200;
	background: var(--color-primary);
	color: #fff;
	padding: 12px 20px;
	border-radius: var(--radius-sm);
}
:focus-visible {
	outline: 3px solid var(--color-accent);
	outline-offset: 3px;
}

/* ---------- Buttons ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 14px 28px;
	border-radius: var(--radius-pill);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 0.98rem;
	transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
	min-height: 44px;
}
.btn:active { transform: scale(0.97); }
.btn--primary {
	background: var(--color-primary);
	color: #fff;
	box-shadow: var(--shadow-2);
}
.btn--primary:hover { background: var(--color-primary-dark); box-shadow: var(--shadow-3); transform: translateY(-2px); }
.btn--ghost {
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	border: 1.5px solid rgba(255, 255, 255, 0.55);
	backdrop-filter: blur(6px);
}
.btn--ghost:hover { background: rgba(255, 255, 255, 0.26); transform: translateY(-2px); }
.btn--outline {
	background: transparent;
	color: var(--color-primary);
	border: 1.5px solid var(--color-primary);
}
.btn--outline:hover { background: var(--color-primary); color: #fff; }
.btn--on-dark {
	background: #fff;
	color: var(--color-primary-dark);
	box-shadow: var(--shadow-3);
}
.btn--on-dark:hover { transform: translateY(-2px); box-shadow: var(--shadow-4); }
.btn--lg { padding: 16px 32px; font-size: 1.05rem; }

/* ---------- Header ---------- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	border-bottom: 1px solid transparent;
	transition: box-shadow var(--dur-base) var(--ease-out), padding var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
.site-header.is-scrolled {
	box-shadow: var(--shadow-2);
	border-color: var(--color-border);
}
.site-header__inner {
	max-width: var(--container-w);
	margin: 0 auto;
	padding: 18px 24px;
	display: flex;
	align-items: center;
	gap: 32px;
	min-height: var(--header-h);
	transition: min-height var(--dur-base) var(--ease-out), padding var(--dur-base) var(--ease-out);
}
.site-header.is-scrolled .site-header__inner {
	min-height: 64px;
	padding-top: 10px;
	padding-bottom: 10px;
}
.site-logo { display: flex; align-items: center; }
.site-logo__text {
	font-family: var(--font-heading);
	font-weight: 800;
	font-size: 1.35rem;
	color: var(--color-primary-dark);
	letter-spacing: -0.01em;
}
.primary-nav { flex: 1; display: flex; justify-content: center; }
.primary-nav__list { display: flex; align-items: center; gap: 36px; flex-wrap: wrap; }
.primary-nav__list > li > a {
	font-family: var(--font-heading);
	font-weight: 500;
	font-size: 0.98rem;
	padding: 8px 2px;
	position: relative;
}
.primary-nav__list > li > a::after {
	content: '';
	position: absolute;
	left: 0; right: 100%;
	bottom: 0;
	height: 2px;
	background: var(--color-accent);
	transition: right var(--dur-base) var(--ease-out);
}
.primary-nav__list > li > a:hover::after,
.primary-nav__list > li.current-menu-item > a::after { right: 0; }
.primary-nav__list li.has-dropdown { position: relative; }
.primary-nav__list .sub-menu {
	position: absolute;
	top: calc(100% + 14px);
	left: 50%;
	transform: translateX(-50%) translateY(8px);
	background: #fff;
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-3);
	padding: 10px;
	min-width: 220px;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), visibility var(--dur-base);
}
.primary-nav__list li.has-dropdown:hover > .sub-menu,
.primary-nav__list li.has-dropdown:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
}
.primary-nav__list .sub-menu li a {
	display: block;
	padding: 10px 14px;
	border-radius: var(--radius-sm);
	font-weight: 500;
	white-space: nowrap;
}
.primary-nav__list .sub-menu li a:hover { background: var(--color-surface); color: var(--color-primary); }

.site-header__cta { flex: 0 0 auto; }

.burger {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 44px;
	height: 44px;
	flex: 0 0 auto;
}
.burger span {
	display: block;
	width: 24px;
	height: 2px;
	background: var(--color-text);
	transition: transform var(--dur-base) var(--ease-out), opacity var(--dur-base) var(--ease-out);
	margin: 0 auto;
}
.burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-drawer {
	position: fixed;
	top: 0;
	right: 0;
	height: 100%;
	width: min(340px, 86vw);
	background: #fff;
	box-shadow: var(--shadow-4);
	z-index: 210;
	padding: calc(var(--header-h) + 16px) 28px 28px;
	transform: translateX(100%);
	transition: transform var(--dur-slow) var(--ease-out);
	overflow-y: auto;
}
.mobile-drawer.is-open { transform: translateX(0); }
.mobile-drawer__list { display: flex; flex-direction: column; gap: 4px; }
.mobile-drawer__list li a {
	display: block;
	padding: 14px 6px;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 1.1rem;
	border-bottom: 1px solid var(--color-border);
	min-height: 44px;
}
.mobile-drawer__cta { margin-top: 24px; width: 100%; justify-content: center; }
.mobile-drawer-overlay {
	position: fixed;
	inset: 0;
	background: rgba(15, 23, 42, 0.45);
	z-index: 205;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--dur-base) var(--ease-out), visibility var(--dur-base);
}
.mobile-drawer-overlay.is-open { opacity: 1; visibility: visible; }

/* ---------- Hero ---------- */
.hero {
	position: relative;
	min-height: 92vh;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	color: #fff;
}
.hero-slider { position: absolute; inset: 0; }
.hero-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 900ms var(--ease-out);
}
.hero-slide.is-active { opacity: 1; }
.hero-slide__media { position: absolute; inset: 0; }
.hero-slide__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.06);
	transition: transform 8s linear;
}
.hero-slide.is-active .hero-slide__img { transform: scale(1); }
.hero-slide__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(15, 23, 42, 0.35) 0%, rgba(15, 23, 42, 0.35) 40%, rgba(15, 23, 42, 0.82) 100%);
}
.hero-dots {
	position: absolute;
	right: 28px;
	bottom: 140px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	z-index: 2;
}
.hero-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.45);
	transition: background var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.hero-dot.is-active { background: #fff; transform: scale(1.3); }
.hero__content {
	position: relative;
	z-index: 2;
	padding-bottom: 100px;
}
.hero__title {
	font-size: clamp(2.4rem, 5.6vw, 4.4rem);
	letter-spacing: -0.02em;
	color: #fff;
	max-width: 16ch;
	margin-bottom: 0.35em;
}
.hero__subtitle {
	font-size: clamp(1.05rem, 2vw, 1.3rem);
	max-width: 46ch;
	color: rgba(255, 255, 255, 0.92);
	margin-bottom: 1.6em;
}
.hero__actions { display: flex; flex-wrap: wrap; gap: 16px; }
.hero__scroll-cue {
	position: absolute;
	left: 50%;
	bottom: 32px;
	transform: translateX(-50%);
	width: 26px;
	height: 42px;
	border: 2px solid rgba(255, 255, 255, 0.7);
	border-radius: var(--radius-pill);
	z-index: 2;
}
.hero__scroll-cue span {
	position: absolute;
	top: 8px;
	left: 50%;
	width: 4px;
	height: 8px;
	background: #fff;
	border-radius: 2px;
	transform: translateX(-50%);
	animation: scrollCue 1.8s var(--ease-out) infinite;
}
@keyframes scrollCue {
	0% { opacity: 1; top: 8px; }
	70% { opacity: 0; top: 22px; }
	100% { opacity: 0; top: 22px; }
}
@media (prefers-reduced-motion: reduce) {
	.hero__scroll-cue span { animation: none; opacity: 1; }
	.hero-slide__img { transition: none; transform: none; }
}

/* ---------- Sections ---------- */
.section { padding: clamp(64px, 9vw, 120px) 0; }
.section-head { max-width: 640px; margin: 0 auto 56px; text-align: center; }
.section-head h2 { font-size: clamp(1.9rem, 3.4vw, 2.6rem); letter-spacing: -0.02em; }
.section-head p { color: var(--color-text-muted); font-size: 1.1rem; margin: 0 auto; }
.services { background: var(--color-surface); }

/* ---------- Reveal (scroll animation) ---------- */
.reveal {
	opacity: 1;
	transform: none;
}
.reveal[data-reveal] {
	transition: transform var(--dur-slow) var(--ease-out);
}
.js-reveal-ready .reveal[data-reveal] {
	transform: translateY(28px);
}
.js-reveal-ready .reveal[data-reveal].is-visible {
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.js-reveal-ready .reveal[data-reveal] { transform: none; transition: none; }
}

/* ---------- Service cards (3D tilt + elevation) ---------- */
.service-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 28px;
}
.tilt { perspective: 1000px; }
.service-card {
	--rx: 0deg;
	--ry: 0deg;
	display: block;
	background: #fff;
	border-radius: var(--radius-md);
	overflow: hidden;
	box-shadow: var(--shadow-2);
	transform: rotateX(var(--rx)) rotateY(var(--ry)) translateZ(0);
	transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
	transform-style: preserve-3d;
}
.service-card:hover, .service-card:focus-visible {
	box-shadow: var(--shadow-4);
}
.service-card__media { aspect-ratio: 4 / 3; overflow: hidden; }
.service-card__img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-slow) var(--ease-out); }
.service-card:hover .service-card__img { transform: scale(1.06); }
.service-card__body { padding: 26px 26px 28px; }
.service-card__body h3 { font-size: 1.25rem; margin-bottom: 0.4em; }
.service-card__body p { color: var(--color-text-muted); font-size: 0.98rem; }
.service-card__link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 14px;
	font-family: var(--font-heading);
	font-weight: 600;
	color: var(--color-primary);
}
.service-card__link .icon { transition: transform var(--dur-base) var(--ease-out); }
.service-card:hover .service-card__link .icon { transform: translateX(4px); }

/* ---------- About + stats ---------- */
.about__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	align-items: center;
}
.about__img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-3);
}
.about__content h2 { font-size: clamp(1.9rem, 3.2vw, 2.5rem); letter-spacing: -0.02em; }
.about__content p { color: var(--color-text-muted); font-size: 1.08rem; }
.stat-row {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin: 32px 0 36px;
	padding: 24px 0;
	border-top: 1px solid var(--color-border);
	border-bottom: 1px solid var(--color-border);
}
.stat__value, .stat__suffix {
	font-family: var(--font-heading);
	font-weight: 800;
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	color: var(--color-primary);
}
.stat__label { display: block; color: var(--color-text-muted); font-size: 0.88rem; margin-top: 4px; }

/* ---------- Gallery strip ---------- */
.gallery-strip__row {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}
.gallery-strip__item {
	margin: 0;
	border-radius: var(--radius-md);
	overflow: hidden;
	box-shadow: var(--shadow-2);
	transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
	transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.gallery-strip__item:hover { box-shadow: var(--shadow-4); }
.gallery-strip__img { aspect-ratio: 3 / 4; object-fit: cover; width: 100%; height: 100%; transition: transform var(--dur-slow) var(--ease-out); }
.gallery-strip__item:hover .gallery-strip__img { transform: scale(1.05); }

/* ---------- CTA band ---------- */
.cta-band {
	background: linear-gradient(120deg, var(--color-primary-dark), var(--color-primary) 60%, var(--color-accent));
	color: #fff;
	text-align: center;
}
.cta-band__inner h2 { color: #fff; font-size: clamp(1.8rem, 3.2vw, 2.4rem); }
.cta-band__inner p { color: rgba(255, 255, 255, 0.9); max-width: 52ch; margin: 0 auto 28px; }

/* ---------- Contact ---------- */
.contact__grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 56px;
}
.contact__info h2 { font-size: clamp(1.8rem, 3vw, 2.3rem); }
.contact-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
	color: var(--color-text-muted);
}
.contact-row .icon { flex-shrink: 0; color: var(--color-primary); }
.contact-row--hours .icon { align-self: flex-start; margin-top: 3px; }
.contact-row a:hover { color: var(--color-primary); }
.contact__map {
	margin-top: 24px;
	border-radius: var(--radius-md);
	overflow: hidden;
	box-shadow: var(--shadow-2);
	aspect-ratio: 16 / 10;
}
.contact__map iframe { width: 100%; height: 100%; border: 0; }

/* Kontaktformular-Plugin (eigenes Inline-CSS) mit doppelter Spezifität überschreiben */
.contact__form .contact__form .wpscp-form-wrap,
.contact__form.contact__form .wpscp-form-wrap {
	background: var(--color-surface);
	border-radius: var(--radius-md);
	padding: 32px;
	box-shadow: var(--shadow-2);
}
.contact .contact .wpscp-form input[type="text"],
.contact .contact .wpscp-form input[type="email"],
.contact .contact .wpscp-form textarea {
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	font-family: var(--font-body);
}
.contact .contact .wpscp-form button,
.contact .contact .wpscp-form input[type="submit"] {
	background: var(--color-primary) !important;
	border-radius: var(--radius-pill) !important;
	font-family: var(--font-heading) !important;
	font-weight: 600 !important;
	transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out) !important;
}
.contact .contact .wpscp-form button:hover,
.contact .contact .wpscp-form input[type="submit"]:hover {
	background: var(--color-primary-dark) !important;
	transform: translateY(-2px);
}

/* ---------- Footer ---------- */
.site-footer {
	background: var(--color-text);
	color: rgba(255, 255, 255, 0.82);
	padding: 72px 0 0;
}
.site-footer__inner {
	max-width: var(--container-w);
	margin: 0 auto;
	padding: 0 24px;
	display: grid;
	grid-template-columns: 1.2fr 1fr 1fr;
	gap: 48px;
	padding-bottom: 48px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.site-footer .site-logo__text { color: #fff; font-size: 1.3rem; }
.site-footer h3 { color: #fff; font-size: 1.05rem; margin-bottom: 16px; }
.site-footer .contact-row .icon { color: var(--color-accent); }
.site-footer .contact-row a:hover { color: #fff; }
.footer-nav__list { display: flex; flex-direction: column; gap: 10px; }
.footer-nav__list a:hover { color: #fff; }
.site-footer__bottom {
	max-width: var(--container-w);
	margin: 0 auto;
	padding: 22px 24px 28px;
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.55);
}

/* ---------- Page hero (Unterseiten) ---------- */
.page-hero {
	position: relative;
	padding: calc(var(--header-h) + 56px) 0 72px;
	overflow: hidden;
}
.page-hero--image { color: #fff; padding-top: calc(var(--header-h) + 100px); padding-bottom: 100px; }
.page-hero__media { position: absolute; inset: 0; z-index: 0; }
.page-hero__img { width: 100%; height: 100%; object-fit: cover; }
.page-hero__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,23,42,.55), rgba(15,23,42,.72)); }
.page-hero__inner { position: relative; z-index: 1; }
.page-hero__title {
	font-size: clamp(2.1rem, 4.6vw, 3.4rem);
	letter-spacing: -0.02em;
	color: inherit;
	max-width: 20ch;
}
.page-hero__lead { max-width: 56ch; font-size: 1.1rem; color: inherit; opacity: 0.92; }
.page-article { padding: 12px 0 96px; }
.page-content { max-width: 74ch; }
.page-content h2 { font-size: 1.7rem; margin-top: 1.6em; }
.page-content h3 { font-size: 1.3rem; margin-top: 1.4em; }
.page-content ul { list-style: disc; padding-left: 1.4em; margin-bottom: 1.2em; }
.page-content ul li { margin-bottom: 0.4em; }
.page-content p { color: var(--color-text-muted); }

/* ---------- Utility: dimensional card (menu/impressum lists etc.) ---------- */
.info-card {
	background: var(--color-surface);
	border-radius: var(--radius-md);
	padding: 28px 32px;
	box-shadow: var(--shadow-1);
}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 900px) {
	.primary-nav, .site-header__cta { display: none; }
	.burger { display: flex; }
	.about__grid, .contact__grid { grid-template-columns: 1fr; gap: 40px; }
	.gallery-strip__row { grid-template-columns: repeat(2, 1fr); }
	.site-footer__inner { grid-template-columns: 1fr 1fr; }
	.hero { min-height: 82vh; }
}

@media (max-width: 600px) {
	.container { padding: 0 18px; }
	.section { padding: 56px 0; }
	.hero__actions { flex-direction: column; align-items: stretch; }
	.hero__actions .btn { justify-content: center; }
	.stat-row { grid-template-columns: 1fr; gap: 16px; }
	.gallery-strip__row { grid-template-columns: 1fr 1fr; gap: 12px; }
	.site-footer__inner { grid-template-columns: 1fr; }
	.hero-dots { right: 14px; bottom: 110px; }
	.hero__content { padding-bottom: 64px; }
	.page-hero { padding-top: calc(var(--header-h) + 32px); }
}

/* Nie horizontales Scrollen */
html, body { overflow-x: hidden; }
