/*
Theme Name: Rudolf Weber Events
Theme URI: https://rudolfweber-events.de
Author: eBakery
Description: Custom Elementor-ready WordPress theme for Rudolf Weber Events, built from Figma design.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: rudolf-weber-events
*/

/* -----------------------------------------------------------
   Design tokens
----------------------------------------------------------- */
:root {
	--rwe-color-accent: #91181a;
	--rwe-color-accent-dark: #711214;
	--rwe-color-black: #000000;
	--rwe-color-ink: #1a1a1a;
	--rwe-color-muted: #949494;
	--rwe-color-muted-2: #787575;
	--rwe-color-muted-light: #c4c4c4;
	--rwe-color-surface: #f9f9f9;
	--rwe-color-surface-2: #f7f7f7;
	--rwe-color-border: #f3f3f3;
	--rwe-color-dark-input: #282828;
	--rwe-color-white: #ffffff;

	--rwe-font-base: 'Roboto Condensed', 'Roboto', Arial, sans-serif;

	--rwe-radius-pill: 30px;
	--rwe-radius-card: 24px;
	--rwe-radius-input: 40px;

	--rwe-container-max: 1600px;
	--rwe-container-pad: 24px;
}

/* -----------------------------------------------------------
   Reset & base
----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

body {
	font-family: var(--rwe-font-base);
	color: var(--rwe-color-ink);
	background: var(--rwe-color-white);
	margin: 0;
	line-height: 1.4;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
button, input, textarea, select { font-family: inherit; font-size: inherit; }
button { cursor: pointer; }

h1, h2, h3, h4, p { margin: 0; }

.rwe-container {
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2));
	margin-inline: auto;
	padding-inline: var(--rwe-container-pad);
}

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

/* -----------------------------------------------------------
   Buttons
----------------------------------------------------------- */
.rwe-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	background: var(--rwe-color-accent);
	color: var(--rwe-color-white);
	font-weight: 700;
	font-size: 20px;
	padding: 15px 30px;
	border-radius: var(--rwe-radius-pill);
	border: none;
	white-space: nowrap;
	transition: background-color .15s ease, transform .1s ease;
}
.rwe-btn:hover { background: var(--rwe-color-accent-dark); color: var(--rwe-color-white); }
.rwe-btn:active { transform: scale(0.98); }
.rwe-btn--block { width: 100%; }
.rwe-btn--outline {
	background: transparent;
	border: 1px solid var(--rwe-color-black);
	color: var(--rwe-color-black);
}
.rwe-btn--outline:hover { background: var(--rwe-color-black); color: var(--rwe-color-white); }

/* -----------------------------------------------------------
   Site header
----------------------------------------------------------- */
.site-topbar {
	background: var(--rwe-color-white);
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 74px;
	padding: 8px 24px;
	font-size: 15px;
	flex-wrap: wrap;
}

.site-header-main {
	background: var(--rwe-color-black);
	position: relative;
}
.site-header-inner {
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2));
	margin-inline: auto;
	padding: 18px var(--rwe-container-pad);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}
.site-logo img { height: 98px; width: auto; }
.site-logo { flex-shrink: 0; }
.custom-logo-link img {    height: 90px;
    width: 180px;
    object-fit: contain; }
.site-search-form {
	background: var(--rwe-color-white);
	display: flex;
	align-items: center;
	border-radius: var(--rwe-radius-pill);
	padding: 4px 4px 4px 20px;
	flex: 1 1 320px;
	max-width: 538px;
	gap: 12px;
}
.site-search-form input {
	border: none;
	background: none;
	flex: 1;
	font-size: 16px;
	color: var(--rwe-color-ink);
	outline: none;
}
.site-search-form input::placeholder { color: var(--rwe-color-muted-2); }
.site-search-form button {
	background: var(--rwe-color-accent);
	border: none;
	border-radius: var(--rwe-radius-pill);
	width: 81px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--rwe-color-white);
	flex-shrink: 0;
}

.site-nav ul {
	display: flex;
	align-items: center;
	gap: 24px;
	flex-wrap: wrap;
}
.site-nav a { color: var(--rwe-color-white); font-size: 16px; }
.site-nav a:hover { color: var(--rwe-color-muted-light); }

.site-header-actions { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.site-header-actions .rwe-icon-link { position: relative; color: var(--rwe-color-white); display: inline-flex; }
.rwe-cart-count {
	position: absolute;
	top: -6px; right: -10px;
	background: var(--rwe-color-accent);
	color: var(--rwe-color-white);
	font-size: 11px;
	line-height: 16px;
	width: 16px; height: 16px;
	border-radius: 50%;
	text-align: center;
}


.site-header-toggle {
	display: none;
	background: none;
	border: none;
	padding: 6px;
	margin: -6px;
	color: var(--rwe-color-white);
	align-items: center;
	justify-content: center;
	border-radius: 8px;
}
.site-header-toggle:hover { background: rgba(255, 255, 255, .10); }
.site-header-toggle__icon { display: inline-flex; }
.site-header-toggle__icon[hidden] { display: none; }

@media (max-width: 900px) {
	.site-topbar { gap: 20px; font-size: 12px; }

	/*
	 * Explicit order keeps the first row to logo | account+cart | burger,
	 * with the search on its own row. Without it the actions block wrapped
	 * onto a row of its own and the header took up most of a phone screen.
	 */
	.site-header-inner {
		flex-wrap: wrap;
		gap: 14px;
		padding: 12px var(--rwe-container-pad);
	}
	.site-logo { order: 1; }
	/* Covers the custom-logo rule above, which otherwise keeps its fixed
	   180px width on a phone and squeezes the icons and burger. */
	.site-logo img,
	.custom-logo-link img { height: 60px; width: auto; max-width: 150px; }
	.site-header-actions { order: 2; gap: 18px; margin-left: auto; }
	.site-header-toggle { order: 3; display: inline-flex; }
	.site-search-form { order: 4; max-width: 100%; flex-basis: 100%; }

	/*
	 * Mobile menu: a full-width panel on its own row under the header bar,
	 * with one tappable row per link.
	 */
	.site-nav {
		display: none;
		order: 5;
		flex-basis: 100%;
		width: 100%;
		border-top: 1px solid rgba(255, 255, 255, .14);
	}
	.site-nav.is-open { display: block; }
	.site-nav ul {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		flex-wrap: nowrap;
	}
	.site-nav li + li { border-top: 1px solid rgba(255, 255, 255, .10); }
	.site-nav a {
		display: block;
		padding: 15px 2px;
		font-size: 17px;
		font-weight: 600;
	}
	.site-nav a:active { color: var(--rwe-color-muted-light); }
}

@media (max-width: 400px) {
	/* Narrow phones: shrink the logo rather than letting the row wrap. */
	.site-header-inner { gap: 10px; }
	.site-header-actions { gap: 14px; }
	.site-topbar { gap: 12px; font-size: 11px; }
}
/* -----------------------------------------------------------
   Hero
----------------------------------------------------------- */
.hero-intro {
	text-align: center;
	padding: 60px 24px 40px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 30px;
}
.hero-intro h1 { font-size: 48px; font-weight: 700; }
.hero-intro p { font-size: 18px; max-width: 720px; }

@media (max-width: 900px) {
	.hero-intro { padding: 44px 24px 32px; gap: 22px; }
	.hero-intro h1 { font-size: 36px; }
}

@media (max-width: 620px) {
	.hero-intro { padding: 32px 20px 26px; gap: 18px; }
	.hero-intro h1 { font-size: 28px; }
	.hero-intro p { font-size: 16px; }
}

.hero-media {
	position: relative;
	max-width: 100%;
	margin-inline: auto;
}
.hero-media__frame {
	position: relative;
	overflow: hidden;
	aspect-ratio: 1920 / 730;
	background: var(--rwe-color-black);
}
/*
 * Mobile: the 1920/730 cinema strip leaves the video only ~140px tall on a
 * phone and crops it hard, so switch to 16:9 once the site is in its mobile
 * layout (same 900px breakpoint as the header). Per block overridable with
 * [rwe_video ratio_mobile="4 / 3"].
 */
@media (max-width: 900px) {
	.hero-media__frame {
		aspect-ratio: var(--rwe-video-ratio-mobile, 16 / 9);
	}
}
.hero-media__frame img, .hero-media__frame video {
	width: 100%; height: 100%; object-fit: cover;
}
/* Video controls: mute pinned top-left, play/pause centred over the frame. */
.hero-media__mute {
	position: absolute;
	left: 24px; top: 24px;
	width: 38px; height: 38px;
	border-radius: 50%;
	background: rgba(0,0,0,.55);
	color: var(--rwe-color-white);
	border: none;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 2;
}
.hero-media__mute:hover { background: rgba(0,0,0,.75); }

.hero-media__play {
	position: absolute;
	top: 50%; left: 50%;
	transform: translate(-50%, -50%);
	width: 72px; height: 72px;
	border-radius: 50%;
	background: rgba(255,255,255,.22);
	border: 1px solid rgba(255,255,255,.55);
	color: var(--rwe-color-white);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 2;
	transition: opacity .2s ease, background-color .2s ease;
}
.hero-media__play:hover { background: rgba(255,255,255,.34); }
/* Fade the overlay down while playing so it doesn't sit on the video. */
.hero-media__play[data-playing="true"] { opacity: .55; }
.hero-media__play[data-playing="true"]:hover,
.hero-media__play:focus-visible { opacity: 1; }

/*
 * Only the icon matching the current state is shown. Visibility is driven by
 * the `hidden` attribute (set server-side, toggled in main.js) so the buttons
 * stay correct even if this stylesheet is stale in a browser cache.
 */
.hero-media__icon { display: inline-flex; }
.hero-media__icon[hidden] { display: none; }
.hero-media__mute[aria-pressed="true"] .hero-media__icon[data-state="unmuted"],
.hero-media__mute[aria-pressed="false"] .hero-media__icon[data-state="muted"],
.hero-media__play[data-playing="true"] .hero-media__icon[data-state="paused"],
.hero-media__play[data-playing="false"] .hero-media__icon[data-state="playing"] { display: none; }

@media (max-width: 620px) {
	.hero-media__mute { left: 14px; top: 14px; }
	.hero-media__play { width: 56px; height: 56px; }
.site-search-form button {
	width: 48px;
	height: 30px;


}

}

/* -----------------------------------------------------------
   Ticket filter bar
----------------------------------------------------------- */
.ticket-filter-bar {
	background: var(--rwe-color-surface);
	padding: 24px;
}
.ticket-filter-bar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 16px;
	max-width: 1600px;
    margin: 0 auto;

}
.ticket-filter-bar h2 { font-size: 32px;    font-size: clamp(27px, 2.5vw, 32px); font-weight: 700; }
.ticket-filter-bar__filters { display: flex; gap: 14px; flex-wrap: wrap; }
.ticket-filter-chip {
	background: var(--rwe-color-white);
	border: 1px solid var(--rwe-color-border);
	border-radius: var(--rwe-radius-input);
	padding: 10px 28px;
	font-weight: 700;
	font-size: 16px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}


/*
 * The Zeitraum / Ort chips are real <select> elements so the bar actually
 * filters; these rules keep the chip look, with a chevron drawn via
 * background-image since appearance:none removes the native arrow.
 */
.ticket-filter-chip--select { padding: 0; position: relative; }
.ticket-filter-chip--select select {
	appearance: none;
	-webkit-appearance: none;
	background: transparent;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 16px center;
	border: none;
	border-radius: var(--rwe-radius-input);
	font-weight: 700;
	font-size: 16px;
	color: inherit;
	padding: 10px 44px 10px 28px;
	margin: 0;
	cursor: pointer;
	outline: none;
	max-width: 260px;
	text-overflow: ellipsis;
}
.ticket-filter-chip--select select:disabled { color: var(--rwe-color-muted); cursor: not-allowed; }

.ticket-filter-chip--submit {
	background: var(--rwe-color-accent);
	border-color: var(--rwe-color-accent);
	color: var(--rwe-color-white);
	cursor: pointer;
}
.ticket-filter-chip--submit:hover { background: var(--rwe-color-accent-dark); border-color: var(--rwe-color-accent-dark); }

/* Active-filter summary above the results. */
.ticket-filter-active {
	display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
	margin-bottom: 24px; font-size: 15px; color: var(--rwe-color-muted-2);
}
.ticket-filter-active strong { color: var(--rwe-color-ink); }
.ticket-filter-active a { text-decoration: underline; }


/* -----------------------------------------------------------
   Event category rows + cards
----------------------------------------------------------- */
.event-category-row { padding: 40px var(--rwe-container-pad) 0; max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2)); margin-inline: auto; }
.event-category-row__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 20px;
}
.event-category-row__head h2 { font-size: 32px; font-weight: 700; }
.event-category-row__nav { display: flex; gap: 16px; }
.event-category-row__nav button {
	width: 36px; height: 36px;
	border-radius: 50%;
	border: 1px solid var(--rwe-color-border);
	background: var(--rwe-color-white);
	display: flex; align-items: center; justify-content: center;
}
.event-category-row__nav button:last-child { transform: scaleX(-1); }

.event-card-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 32px;
}
@media (max-width: 1200px) { .event-card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .event-card-grid { grid-template-columns: 1fr; } }

.event-card-grid--carousel {
	display: flex;
	gap: 32px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	padding-bottom: 4px;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.event-card-grid--carousel::-webkit-scrollbar {
	display: none;
}
.event-card-grid--carousel .event-card {
	flex: 0 0 calc(25% - 24px);
	scroll-snap-align: start;
	min-width: 260px;
}
@media (max-width: 1200px) { .event-card-grid--carousel .event-card { flex-basis: calc(50% - 16px); } }
@media (max-width: 620px) { .event-card-grid--carousel .event-card { flex-basis: 85%; } }

.event-card {
	background: var(--rwe-color-surface-2);
	border-radius: var(--rwe-radius-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.event-card__media { aspect-ratio: 376 / 376; overflow: hidden; }
.event-card__media img { width: 100%; height: 100%; object-fit: cover; }
.event-card__body { padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.event-card__badge {
	align-self: flex-start;
	background: var(--rwe-color-white);
	border: 0.7px solid var(--rwe-color-black);
	border-radius: 50px;
	padding: 5px 10px;
	font-size: 14px;
	font-weight: 700;
}
.event-card__title { font-size: 24px; font-weight: 700;display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis; }
.event-card__price { display: flex; align-items: baseline; gap: 6px; font-weight: 700; }
.event-card__price span { font-size: 24px; }
.event-card__price small { font-size: 16px; font-weight: 400; color: var(--rwe-color-muted); }

/* News card variant */
.news-card__body { padding: 14px; }
.news-card__meta { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.news-card__tag {
	background: var(--rwe-color-black);
	color: var(--rwe-color-white);
	font-size: 13px;
	font-weight: 700;
	border-radius: 20px;
	padding: 5px 10px;
}
.news-card__date { font-size: 15px; color: var(--rwe-color-muted-2); }
.news-card__title { font-size: 22px; font-weight: 700; }

/* -----------------------------------------------------------
   Footer
----------------------------------------------------------- */
.site-footer {
	background: var(--rwe-color-black);
	color: var(--rwe-color-white);
	padding: 50px var(--rwe-container-pad) 30px;
	margin-top: 60px;
}
.site-footer__grid {
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2));
	margin-inline: auto;
	display: flex;
	flex-wrap: wrap;
	gap: 50px;
	padding-bottom: 60px;
}
.site-footer__about { flex: 1 1 320px; max-width: 376px; }
.site-footer__about img { height: 55px; width: auto; margin-bottom: 20px; }
.site-footer__about p { color: var(--rwe-color-muted-light); font-size: 16px; line-height: 1.5; margin-bottom: 20px; }
.site-footer__social { display: flex; gap: 14px; }
.site-footer__social a {
	width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
	color: var(--rwe-color-white);
}

.site-footer__cols { display: flex; gap: 60px; flex-wrap: wrap; flex: 2 1 500px; }
.site-footer__col h3 { font-size: 24px; font-weight: 700; margin-bottom: 16px; }
.site-footer__col ul { display: flex; flex-direction: column; gap: 14px; }
.site-footer__col a, .site-footer__col li { color: var(--rwe-color-muted-light); font-size: 18px; }
.site-footer__col a:hover { color: var(--rwe-color-white); }

.site-footer__newsletter { flex: 1 1 400px; max-width: 542px; }
.site-footer__newsletter h3 { font-size: 24px; font-weight: 700; margin-bottom: 18px; }
.site-footer__newsletter p { color: var(--rwe-color-muted-light); font-size: 18px; margin-top: 18px; }
.site-footer__newsletter-form { position: relative; display: flex; }
.site-footer__newsletter-form input {
	background: var(--rwe-color-dark-input);
	border: none;
	border-radius: 60px;
	padding: 14px 150px 14px 20px;
	color: var(--rwe-color-muted-light);
	width: 100%;
}
.site-footer__newsletter-form .rwe-btn { position: absolute; right: 0; top: 0; height: 100%; }

.site-footer__bottom { text-align: center; color: var(--rwe-color-muted-light); font-size: 18px; }

@media (max-width: 700px) {
	.site-footer__grid { gap: 30px; }
	.site-footer__cols { gap: 30px; }
        .rwe-btn {    padding: 6px 30px;}
}

/* -----------------------------------------------------------
   Page header / breadcrumb
----------------------------------------------------------- */
.page-breadcrumb {
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2));
	margin-inline: auto;
	padding: 24px var(--rwe-container-pad) 0;
	font-size: 15px;
	/* Current page reads darker than the parent links, as in the design. */
	color: var(--rwe-color-ink);
}
.page-breadcrumb a { color: var(--rwe-color-muted-2); }
.page-breadcrumb a:hover { color: var(--rwe-color-accent); }

.page-title-block {
	text-align: center;
	padding: 40px 24px;
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2)); margin-inline: auto; padding: 40px var(--rwe-container-pad);
}
.page-title-block h1 { font-size: 48px; font-weight: 700; margin-bottom: 12px; }
.page-title-block p { font-size: 18px; }

/* -----------------------------------------------------------
   Generic section utilities
----------------------------------------------------------- */
.rwe-section { max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2)); margin-inline: auto; padding: 40px var(--rwe-container-pad); }
.rwe-section h2 { font-size: 32px; font-weight: 700; margin-bottom: 24px; }

/* Über uns hero + text block (code-rendered page) */
.about-hero {
	background:var(--rwe-color-white);
	color:  var(--rwe-color-black);
	text-align: center;
	padding: 48px 24px;
}
.about-hero h1 { font-size: 42px; font-weight: 700; margin-bottom: 14px; }
.about-hero__intro {
	max-width: 900px;
	margin-inline: auto;
	font-size: 17px;
	line-height: 1.6;
	color: var(--rwe-color-black);
}
.about-hero__intro p { margin: 0; }

.about-text { text-align: center; }
.about-text h2 { font-size: 32px; font-weight: 700; margin-bottom: 16px; }
.about-text__body {
	max-width: 900px;
	margin-inline: auto;
	font-size: 16px;
	line-height: 1.7;
	color: var(--rwe-color-muted-2);
}
.about-text__body a { color: var(--rwe-color-accent); text-decoration: underline; }

@media (max-width: 620px) {
	.about-hero h1 { font-size: 30px; }
	.about-text h2 { font-size: 24px; }
}

/* Stats counters (Über uns) */
.stats-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 36px; text-align: center; }
.stats-row__item {
	background: var(--rwe-color-surface-2);
	border-radius: 36px;
	width: 282px;
	/* 282 + the page gutters overflows a 320px screen without this. */
	max-width: 100%;
	min-height: 232px;
	padding: 68px 40px 20px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 12px;
}
.stats-row__number { font-size: 58px; font-weight: 700; color: var(--rwe-color-accent); display: block; }
.stats-row__label { font-size: 22px; display: block; }


/* FAQ accordion */
.faq-list { max-width: 844px; margin-inline: auto; }
.faq-item {     border-bottom: 0px solid var(--rwe-color-border);
    margin: 20px 0px;background: #F7F7F7;
    border-radius: 50px;
    padding: 0px 20px; }
.faq-item.is-open {border-radius: 0px; }
.faq-item__question {
	width: 100%;
	background: none;
	border: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 20px 10px;
	font-size: 20px;
	font-weight: 700;
	text-align: left;
	color: var(--rwe-color-ink);
}
.faq-item__question .rwe-icon { transition: transform .2s ease; }
.faq-item.is-open .faq-item__question .rwe-icon { transform: rotate(90deg); }
.faq-item__answer {
	display: none;
	padding: 0 10px 20px;
	color: var(--rwe-color-muted-2);
	font-size: 16px;
	line-height: 1.6;
}
.faq-item.is-open .faq-item__answer { display: block; }

/* Contact form */
.contact-layout { display: flex; gap: 60px; flex-wrap: wrap; background: var(--rwe-color-surface); border-radius: var(--rwe-radius-card); padding: 30px; }
/* Kontakt panel: red card holding the white form card + info column. */
.contact-panel {
	display: flex;
	flex-wrap: wrap;
	gap: 40px;
	background: var(--rwe-color-accent);
	border-radius: var(--rwe-radius-card);
	padding: 30px;
}
.contact-panel__form {
	flex: 1 1 460px;
	background: var(--rwe-color-white);
	border-radius: 20px;
	padding: 30px;
}
.contact-panel .contact-form h2 { font-size: clamp(1.4rem, 4vw + 1rem, 2.4rem); margin-bottom: 24px; }

.contact-panel .contact-info { color: var(--rwe-color-white); }
.contact-panel .contact-info h3 { font-size: 38px; font-weight: 700; margin-bottom: 20px; }
.contact-info__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px 24px;
}
.contact-panel .contact-info__row { margin-bottom: 0; align-items: flex-start; font-size: 20px; line-height: 1.5; }
.contact-panel .contact-info__row .rwe-icon { color: var(--rwe-color-white); margin-top: 2px; }
.contact-info__socials { display: flex; gap: 16px; margin-top: 24px; }
.contact-info__socials a { color: var(--rwe-color-white); display: inline-flex; }
.contact-info__socials a:hover { color: var(--rwe-color-muted-light); }

@media (max-width: 700px) {
	.contact-panel { padding: 18px; gap: 24px; }
	.contact-panel__form { padding: 20px; }
	.contact-info__grid { grid-template-columns: 1fr; }
.contact-form .form-consent {
    display: block !important;}
}

.contact-form { flex: 1 1 500px; }
.contact-form h2 { font-size: 36px; margin-bottom: 30px; }
.contact-form .form-row { margin-bottom: 30px; }
.contact-form label { display: block; font-size: 15px; font-weight: 700; margin-bottom: 6px; }
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea {
	width: 100%;
	border: none;
	border-radius: 30px;
	padding: 23px 24px;
	background: var(--rwe-color-surface-2);
}
.contact-form textarea { min-height: 207px; border-radius: 24px; resize: vertical; }
.contact-form .form-consent { display: flex; align-items: center; gap: 10px; font-size: 20px; margin: 20px 0; }
.contact-form .form-consent input[type="checkbox"] {
	width: 20px;
	height: 20px;
	accent-color: var(--rwe-color-accent);
}
.contact-info { flex: 1 1 400px; }
.contact-info__image { overflow: hidden; margin-bottom: 24px;    max-height: 500px;}
.contact-info__image img { border-radius: var(--rwe-radius-card); object-fit: cover;max-height: 500px; }
.contact-info h3 { font-size: 24px; margin-bottom: 16px; }
.contact-info__row { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; font-size: 16px; }
.contact-info__row .rwe-icon { flex-shrink: 0; color: var(--rwe-color-accent); }

/* Venue address / map */
.venue-address { display: flex; gap: 40px; flex-wrap: wrap; align-items: flex-start; padding: 30px; background: var(--rwe-color-surface); border-radius: var(--rwe-radius-card); }
.venue-address__details { flex: 1 1 260px; }
.venue-address__details h3 { font-size: 24px; margin-bottom: 16px; }
.venue-address__details p { color: var(--rwe-color-muted-2); margin-bottom: 20px; white-space: pre-line; }
.venue-address__map { flex: 2 1 500px; min-height: 288px; border-radius: 16px; overflow: hidden; }
.venue-address__map iframe { width: 100%; height: 100%; min-height: 288px; border: 0; }
.venue-address__map-placeholder {
	background: var(--rwe-color-border);
	width: 100%;
	min-height: 288px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--rwe-color-muted-2);
}
.venue-address__note { width: 100%; font-size: 15px; color: var(--rwe-color-muted-2); margin-top: 8px; white-space: pre-line; }


/* Tabs (product / article) */
.rwe-tabs__nav { display: flex; gap: 30px; border-bottom: 1px solid var(--rwe-color-border); margin-bottom: 24px; }
.rwe-tabs__nav button {
	background: none; border: none; padding: 16px 0; font-size: 18px; font-weight: 700;
	color: var(--rwe-color-muted-2); border-bottom: 3px solid transparent;
}
.rwe-tabs__nav button.is-active { color: var(--rwe-color-ink); border-color: var(--rwe-color-accent); }
.rwe-tabs__panel { display: none; }
.rwe-tabs__panel.is-active { display: block; }

/* -----------------------------------------------------------
   Single product / news layout
----------------------------------------------------------- */
/*
 * Product hero: white card on a light grey page (see body.single-product
 * below). .article-hero keeps sharing the layout but isn't used by any
 * template right now.
 */
.product-hero, .article-hero {
	display: flex;
	gap: 60px;
	flex-wrap: wrap;
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 30px;
	position: relative;
}
/* Grey page behind the white product card, as in the design. */
body.single-product { background: var(--rwe-color-surface-2); }
/* 615 main image + 90 thumb column + 16 gap = 721 on desktop. */
.product-hero__gallery { display: flex; gap: 16px; flex: 1 1 340px; max-width: 721px; }
.product-hero__thumbs { display: flex; flex-direction: column; gap: 16px; }
.product-hero__thumbs img { width: 90px; height: 90px; object-fit: cover; border-radius: 16px; }
.product-hero__main { flex: 1; border-radius: 20px; overflow: hidden; aspect-ratio: 1/1; }
.product-hero__main img { width: 100%; height: 100%; object-fit: cover; }
.product-hero__info { flex: 1 1 400px; }
.product-hero__info h1 { font-size: 40px; font-weight: 700; margin-bottom: 16px;margin-top: 50px; }
.product-hero__info .lead { font-size: 18px; color: var(--rwe-color-muted-2); margin-bottom: 50px; }
.product-hero__meta { margin-bottom: 50px; }
.product-hero__venue-pill {color: #949494; display: inline-block; background: var(--rwe-color-surface-2); border-radius: 999px; padding: 6px 16px; font-size: 16px; font-weight: 700; margin: 0 8px 8px 0; }
.product-hero__date { margin-top: 8px; color: var(--rwe-color-muted-2); font-size: 20px; }
.product-hero__price { font-size: 34px; font-weight: 700; margin-bottom: 24px; }
.product-hero__price small { font-size: 16px; font-weight: 400; color: var(--rwe-color-muted); margin-left: 8px; }
.product-hero__badge {
	position: absolute; top: 30px; right: 30px;
	background: var(--rwe-color-white); border: 1px solid var(--rwe-color-muted-light);
	border-radius: 40px; padding: 9px 18px; font-weight: 700; font-size: 20px;
	display: inline-flex; align-items: center; gap: 8px;
}

/*
 * Quantity row: label above a grey pill holding - / value / +, with the
 * running total in a tinted pill on the right, matching the design.
 */
/* Variable products: the "Spiel wählen" dropdown above the booking box. */
.variation-picker { margin-bottom: 24px; }
.variation-picker__row { margin-bottom: 14px; }
.variation-picker__label {
	display: block;
	font-weight: 700;
	font-size: 20px;
	margin-bottom: 10px;
}
.variation-picker__control { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.variation-picker select {
	flex: 1 1 260px;
	min-width: 0;
	max-width: 100%;
	appearance: none;
	-webkit-appearance: none;
	background-color: var(--rwe-color-surface-2);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 20px center;
	border: none;
	border-radius: var(--rwe-radius-pill);
	padding: 14px 48px 14px 24px;
	font-size: 17px;
	font-weight: 600;
	color: var(--rwe-color-ink);
	cursor: pointer;
	outline: none;
}
.variation-picker select option:disabled { color: var(--rwe-color-muted); }
.variation-picker .reset_variations {
	font-size: 15px;
	color: var(--rwe-color-muted-2);
	text-decoration: underline;
}
.variation-picker .reset_variations:hover { color: var(--rwe-color-accent); }

/* WooCommerce disables the CTA until a variation is chosen. */
.single_add_to_cart_button.disabled,
.single_add_to_cart_button.wc-variation-selection-needed,
.single_add_to_cart_button.wc-variation-is-unavailable { opacity: .45; cursor: not-allowed; }
.woocommerce-variation-price { display: none; }
.woocommerce-variation-availability { font-size: 15px; color: var(--rwe-color-muted-2); margin-bottom: 12px; }

@media (max-width: 620px) {
	.variation-picker__label { font-size: 17px; }
	.variation-picker select { padding: 12px 42px 12px 18px; font-size: 16px; }
}

.qty-selector {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 20px;
	flex-wrap: wrap;
}
.qty-selector__field { flex: 1 1 320px; }
.qty-selector__label { font-weight: 700; font-size: 20px; margin-bottom: 10px; }
.qty-selector__label span { font-weight: 400; font-size: 12px; color: var(--rwe-color-muted-2); margin-left: 4px; }

.qty-selector__control {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	background: var(--rwe-color-surface-2);
	border-radius: var(--rwe-radius-pill);
	padding: 12px 24px;
}
.qty-selector__control button {
	width: 24px; height: 24px;
	background: none; border: none; padding: 0;
	color: var(--rwe-color-ink);
	display: inline-flex; align-items: center; justify-content: center;
	flex-shrink: 0;
}
.qty-selector__control input {
	flex: 1;
	min-width: 40px;
	text-align: center;
	border: none;
	background: none;
	font-size: 20px;
	font-weight: 700;
	color: var(--rwe-color-ink);
	outline: none;
}

.qty-selector__total { text-align: right; flex-shrink: 0; }
.qty-selector__total span { display: block; font-size: 14px; color: var(--rwe-color-muted-2); margin-bottom: 10px; }
.qty-selector__total strong {
	display: inline-block;
	background: rgba(145, 24, 26, .10);
	color: var(--rwe-color-accent);
	border-radius: var(--rwe-radius-pill);
	padding: 12px 26px;
	font-size: 20px;
	font-weight: 700;
	white-space: nowrap;
}

@media (max-width: 620px) {
	.qty-selector { align-items: stretch; }
	.qty-selector__total { text-align: left; }
}

/* Stand-in for the booking block when the product is not purchasable. */
.product-hero__unavailable { max-width: 100%; }
.product-hero__unavailable p {
	margin-bottom: 16px;
	color: var(--rwe-color-muted-2);
	font-size: 16px;
	line-height: 1.5;
}

/*
 * Overflow guards for the booking column.
 *
 * Flex items default to min-width:auto, so an unbreakable child — the
 * nowrap "Jetzt buchen" label, the nowrap total pill — can push the column
 * wider than the card and spill past its rounded edge. min-width:0 lets
 * them shrink; the max-widths stop any single element exceeding its row.
 */
.product-hero__info,
.product-hero__gallery { min-width: 0; }

.qty-selector { max-width: 100%; }
.qty-selector__field { min-width: 0; max-width: 100%; }
.qty-selector__control { max-width: 100%; }
.qty-selector__total { min-width: 0; max-width: 100%; }
.qty-selector__total strong { max-width: 100%; }
.rwe-btn--block { max-width: 100%; }

/* -----------------------------------------------------------
   Product detail page — responsive
   The hero keeps its desktop proportions; below that the two columns
   stack, the type scale comes down and the tab strip scrolls instead of
   overflowing the viewport.
----------------------------------------------------------- */
@media (max-width: 1100px) {
	.product-hero, .article-hero { gap: 32px; }
}

@media (max-width: 900px) {
	.product-hero, .article-hero { gap: 24px; padding: 20px; }

	/* The 50px top margin exists to clear the badge beside the title on
	   desktop; stacked, it is just a gap. */
	.product-hero__info h1 { font-size: 30px; margin-top: 0; margin-bottom: 12px; }
	.product-hero__info .lead { font-size: 16px; margin-bottom: 24px; }
	.product-hero__meta { margin-bottom: 24px; }
	.product-hero__venue-pill { font-size: 15px; }
	.product-hero__date { font-size: 16px; }
	.product-hero__price { font-size: 28px; margin-bottom: 18px; }
	.product-hero__badge { top: 20px; right: 20px; font-size: 15px; padding: 7px 14px; }

	/* Tabs scroll horizontally rather than spilling off-screen. */
	.woocommerce-tabs ul.tabs {
		flex-wrap: nowrap;
		overflow-x: auto;
		gap: 20px;
		scrollbar-width: none;
		-ms-overflow-style: none;
	}
	.woocommerce-tabs ul.tabs::-webkit-scrollbar { display: none; }
	.woocommerce-tabs ul.tabs li a { font-size: 16px; white-space: nowrap; }

	.venue-address { padding: 20px; gap: 24px; }
	.venue-address__map { flex-basis: 100%; }
}

@media (max-width: 620px) {
	.product-hero, .article-hero { padding: 16px; }

	/* Below this width the nowrap CTA is the widest thing in the column,
	   so let it break rather than dictate the column width. */
	.product-hero__info .rwe-btn,
	.qty-selector + .rwe-btn { white-space: normal; padding: 14px 20px; font-size: 18px; }
	.qty-selector__control { padding: 10px 14px; gap: 10px; }
	.qty-selector__control input { font-size: 18px; min-width: 32px; }
	.qty-selector__label { font-size: 17px; }
	.product-hero__info h1 { font-size: 26px; }
	.product-hero__price { font-size: 24px; }
	.product-hero__price small { font-size: 14px; }
	.product-hero__badge { top: 14px; right: 14px; font-size: 14px; padding: 6px 12px; }

	.qty-selector__control { padding: 10px 16px; }
	.qty-selector__label { font-size: 15px; }
	.qty-selector__total strong { padding: 10px 18px; font-size: 18px; }

	body.single-product .rwe-section { padding: 24px var(--rwe-container-pad); }
	.venue-address__details h3 { font-size: 20px; }
}

/*
 * Search results page: grey behind the white result cards, so they read as
 * cards the way the product page already does.
 */
body.search.post-type-archive-product { background: var(--rwe-color-surface-2); }

/* The "Suchergebnisse für … — N Veranstaltungen" line above the results. */
.search-results-head {
	max-width: calc(var(--rwe-container-max) + (var(--rwe-container-pad) * 2));
	margin-inline: auto;
	padding: 20px var(--rwe-container-pad) 0;
}
.search-results-head h1 {
	font-size: 15px;
	font-weight: 400;
	color: var(--rwe-color-muted-2);
}

/* Search results */
/*
 * A tour is one white card holding a row per date. The left block — city,
 * date, venue and price — is a single link, so the whole event is clickable.
 */
.search-group {
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 4px 30px 8px;
	margin-bottom: 24px;
}
.search-result-row {
	display: flex; align-items: center; justify-content: space-between; gap: 24px;
	padding: 30px 0; border-bottom: 1px solid var(--rwe-color-border); flex-wrap: wrap;
}
.search-group .search-result-row:last-child { border-bottom: none; }

.search-result-row__event { flex: 1 1 320px; min-width: 0; display: block; }
.search-result-row__event:hover .search-result-row__city { color: var(--rwe-color-accent); }
.search-result-row__headline { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; }
.search-result-row__city { font-size: 24px; font-weight: 700; transition: color .15s ease; }
.search-result-row__date { font-size: 24px; font-weight: 700; }
.search-result-row__venue { display: block; color: var(--rwe-color-muted-2); font-size: 17px; margin-top: 6px; }
.search-result-row__price { display: block; font-size: 22px; font-weight: 700; margin-top: 12px; }
.search-result-row__price small { font-size: 14px; font-weight: 400; color: var(--rwe-color-muted); margin-left: 6px; }

.search-result-row__title { font-size: 22px; font-weight: 700; }
.search-result-row__meta { color: var(--rwe-color-muted-2); font-size: 16px; margin-top: 6px; }
.search-result-row__actions { display: flex; align-items: center; gap: 20px; flex-shrink: 0; }

/* Sold out: the CTA stays visible but reads as unavailable. */
.rwe-btn--muted { background: var(--rwe-color-muted-light); color: var(--rwe-color-ink); }
.rwe-btn--muted:hover { background: var(--rwe-color-muted); color: var(--rwe-color-ink); }

@media (max-width: 900px) {
	.search-group { padding: 4px 20px 8px; }
	.search-result-row__city,
	.search-result-row__date { font-size: 20px; }
}

@media (max-width: 620px) {
	.search-group { padding: 4px 16px 8px; }
	.search-result-row { gap: 14px; padding: 18px 0; }
	.search-result-row__headline { gap: 8px; }
	.search-result-row__city,
	.search-result-row__date { font-size: 18px; }
	.search-result-row__venue { font-size: 15px; }
	.search-result-row__price { font-size: 19px; margin-top: 8px; }
	.search-result-row__actions { width: 100%; justify-content: space-between; gap: 12px; }
}
.status-badge { font-size: 15px; font-weight: 700; }
.status-badge--available { color: #1e9e3e; }
.status-badge--low { color: #c99400; }
.status-badge--soldout { color: var(--rwe-color-accent); }

/*
 * Featured card: the identity of one bundle — image, artist, article number /
 * categories / tag, availability. The dates themselves follow in .search-group.
 */
.featured-result {
	display: flex;
	align-items: center;
	gap: 30px;
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 24px;
	margin-bottom: 20px;
	position: relative;
}
.featured-result__media { flex-shrink: 0; display: block; }
.featured-result img { width: 216px; height: 216px; object-fit: cover; border-radius: 20px; }
/* No right gutter any more: the bundle badge that used to sit there is gone. */
.featured-result__body { flex: 1 1 auto; min-width: 0; }
.featured-result__title {
	display: block;
	font-size: 32px;
	font-weight: 700;
	margin-bottom: 12px;
	transition: color .15s ease;
}
.featured-result__title:hover { color: var(--rwe-color-accent); }
.featured-result__meta { color: var(--rwe-color-muted-2); font-size: 16px; line-height: 1.7; }
.featured-result__meta-item + .featured-result__meta-item { margin-left: 10px; }
.featured-result__meta a { color: var(--rwe-color-muted-2); text-decoration: underline; }
.featured-result__meta a:hover { color: var(--rwe-color-accent); }
.featured-result__badge {
	position: absolute;
	top: 24px;
	right: 24px;
	background: var(--rwe-color-white);
	border: 1px solid var(--rwe-color-muted-light);
	border-radius: var(--rwe-radius-pill);
	padding: 9px 20px;
	font-size: 17px;
	font-weight: 700;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	white-space: nowrap;
}

/* Single event: the whole result is one card, so the date, price and CTA
   sit inside it rather than in a second card underneath. */
.featured-result--single { align-items: center; margin-bottom: 20px; }
.featured-result--single .featured-result__body { padding-right: 24px; }
.featured-result__event { display: block; margin-top: 14px; }
.featured-result__event:hover .search-result-row__city { color: var(--rwe-color-accent); }
.featured-result--single .search-result-row__price { margin-top: 8px; }
.featured-result--single .search-result-row__actions { flex-shrink: 0; }

@media (max-width: 900px) {
	.featured-result { gap: 20px; padding: 18px; }
	.featured-result img { width: 150px; height: 150px; }
	.featured-result__title { font-size: 24px; }
	.featured-result__body { padding-right: 0; }
	.featured-result__badge { position: static; align-self: flex-start; }
}

@media (max-width: 620px) {
	.featured-result { flex-wrap: wrap; gap: 16px; }
	.featured-result--single .featured-result__body { padding-right: 0; }
	.featured-result--single .search-result-row__actions { width: 100%; justify-content: space-between; }
	.featured-result img { width: 110px; height: 110px; }
	.featured-result__title { font-size: 21px; margin-bottom: 8px; }
	.featured-result__meta { font-size: 14px; }
	.featured-result__badge { order: 3; width: 100%; justify-content: center; }
}

/*
 * Pagination
 *
 * the_posts_pagination() wraps the links in <nav class="navigation"> <div
 * class="nav-links">, so the row has to be laid out on .nav-links. On
 * .rwe-pagination itself the <nav> is the only flex item, and the links —
 * each display:flex, so block level — stack in a column instead.
 */
.rwe-pagination { margin-top: 40px; }
.rwe-pagination .navigation { width: 100%; }
.rwe-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 12px;
}
/* A number keeps the 50px circle; "Nächste"/"Vorherige" grow into a pill. */
.rwe-pagination .page-numbers {
	min-width: 50px;
	height: 50px;
	padding: 0 14px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50px;
	font-weight: 700;
	transition: background-color .15s ease, color .15s ease;
}
/* A tint rather than a grey, so hover is visible on the grey search page too. */
.rwe-pagination .page-numbers:hover {
	background: rgba(145, 24, 26, .10);
	color: var(--rwe-color-accent);
}
.rwe-pagination .page-numbers.current {
	background: var(--rwe-color-accent);
	color: var(--rwe-color-white);
}
.rwe-pagination .page-numbers.dots { min-width: 0; padding: 0 4px; }
.rwe-pagination .page-numbers.dots:hover { background: none; color: inherit; }

@media (max-width: 620px) {
	.rwe-pagination { margin-top: 28px; }
	.rwe-pagination .nav-links { gap: 8px; }
	.rwe-pagination .page-numbers {
		min-width: 42px;
		height: 42px;
		padding: 0 12px;
		font-size: 15px;
	}
}

/* Category filter tabs (Aktuelles) */
.category-filter-tabs { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin: 24px 0 40px; }
.category-filter-tabs a {
	padding: 10px 32px; border-radius: var(--rwe-radius-pill); border: 1px solid var(--rwe-color-border); font-weight: 700;
}
.category-filter-tabs a.is-active { background: var(--rwe-color-black); color: var(--rwe-color-white); border-color: var(--rwe-color-black); }

/* -----------------------------------------------------------
   WooCommerce native gallery + tabs restyled to match Figma
----------------------------------------------------------- */
.woocommerce-product-gallery { display: flex; flex-direction: row-reverse; gap: 16px; width: 100%; }
.woocommerce-product-gallery__wrapper { flex: 1; margin: 0; }
.woocommerce-product-gallery .woocommerce-product-gallery__image { border-radius: 20px; overflow: hidden; }

/*
 * Flexslider containment. WooCommerce's own stylesheet (disabled in
 * inc/woocommerce.php so the theme can own the styling) is what normally
 * clips the slider track — without this the gallery renders every slide
 * side by side instead of one main image.
 */
.woocommerce-product-gallery .flex-viewport { flex: 1; overflow: hidden; border-radius: 20px; }
.woocommerce-product-gallery__image img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.woocommerce-product-gallery .flex-control-thumbs {
	display: flex; flex-direction: column; gap: 16px; width: 90px; margin: 0; padding: 0; list-style: none;
}
.woocommerce-product-gallery .flex-control-thumbs li { list-style: none; }
.woocommerce-product-gallery .flex-control-thumbs img { border-radius: 16px; cursor: pointer; opacity: .6; }
.woocommerce-product-gallery .flex-control-thumbs img.flex-active { opacity: 1; }
/* Desktop: fixed 615 x 615 main image. */
/*
 * Desktop main image tops out at 615x615 (615 + 90 thumbs + 16 gap = the
 * 721 cap on .product-hero__gallery). It is a max, not a fixed size: pinning
 * 615px made the gallery wider than its own column between ~1024 and 1300px
 * and pushed the page into horizontal scroll.
 */
.woocommerce-product-gallery .flex-viewport { max-width: 615px; }
.woocommerce-product-gallery__image img { max-width: 615px; }

@media (max-width: 700px) {
	.woocommerce-product-gallery { flex-direction: column-reverse; }
	.woocommerce-product-gallery .flex-control-thumbs {
		flex-direction: row;
		width: 100%;
		overflow-x: auto;
		scrollbar-width: none;
	}
	.woocommerce-product-gallery .flex-control-thumbs::-webkit-scrollbar { display: none; }
	.woocommerce-product-gallery .flex-control-thumbs li { flex: 0 0 64px; }
	/* Thumbs scroll horizontally instead of squashing the strip. */
	.woocommerce-product-gallery .flex-control-thumbs img { width: 64px; height: 64px; object-fit: cover; }
	.woocommerce-product-gallery .flex-viewport,
	.woocommerce-product-gallery__image img { max-width: 100%; }
	.page-title-block {
    padding: 0px 24px;
	}
	.rwe-section {
		padding: 20px var(--rwe-container-pad);
	}
	.contact-form input[type="text"], .contact-form input[type="email"], .contact-form textarea {
		padding: 12px 24px;

	}
	.contact-form .form-row {
		margin-bottom: 15px;
	}

}

.woocommerce-tabs ul.tabs { display: flex; gap: 30px; border-bottom: 1px solid var(--rwe-color-border); margin: 0 0 24px; padding: 0; list-style: none; }
.woocommerce-tabs ul.tabs li { list-style: none; margin: 0; }
.woocommerce-tabs ul.tabs li a { display: inline-block; padding: 16px 0; font-size: 18px; font-weight: 700; color: var(--rwe-color-muted-2); border-bottom: 3px solid transparent; }
.woocommerce-tabs ul.tabs li.active a { color: var(--rwe-color-ink); border-color: var(--rwe-color-accent); }
.woocommerce-tabs .woocommerce-Tabs-panel { font-size: 16px; line-height: 1.7; color: var(--rwe-color-ink); }

/*
 * Pasted copy inside the tabs (product description + the admin-managed
 * sections). The base reset zeroes paragraph margins and strips list bullets
 * site-wide — right for the layout blocks, but it turns a description into one
 * unreadable run of lines. Restored here only, so the rest of the theme keeps
 * its reset.
 */
.woocommerce-tabs .woocommerce-Tabs-panel p,
.rwe-tabs__panel p { margin: 0 0 1em; }
.woocommerce-tabs .woocommerce-Tabs-panel p:last-child,
.rwe-tabs__panel p:last-child { margin-bottom: 0; }

.woocommerce-tabs .woocommerce-Tabs-panel ul,
.rwe-tabs__panel ul {
	list-style: disc;
	margin: 0 0 1em;
	padding-left: 1.4em;
}
.woocommerce-tabs .woocommerce-Tabs-panel ol,
.rwe-tabs__panel ol {
	list-style: decimal;
	margin: 0 0 1em;
	padding-left: 1.5em;
}
.woocommerce-tabs .woocommerce-Tabs-panel li,
.rwe-tabs__panel li { margin-bottom: .5em; }

.woocommerce-tabs .woocommerce-Tabs-panel h2,
.woocommerce-tabs .woocommerce-Tabs-panel h3,
.woocommerce-tabs .woocommerce-Tabs-panel h4,
.rwe-tabs__panel h2, .rwe-tabs__panel h3, .rwe-tabs__panel h4 { margin: 1.4em 0 .5em; }
.woocommerce-tabs .woocommerce-Tabs-panel > h2:first-child,
.rwe-tabs__panel > h2:first-child { margin-top: 0; }

.woocommerce-tabs .woocommerce-Tabs-panel a,
.rwe-tabs__panel a { text-decoration: underline; }

/* -----------------------------------------------------------
   Cart ([woocommerce_cart])

   WooCommerce's own stylesheet is disabled (see inc/woocommerce.php), and it
   is what normally constrains the cart thumbnail and lays out the coupon row.
   Without these rules the product image renders at its full stored size and
   the coupon/update buttons sit flush against each other.
----------------------------------------------------------- */
.woocommerce-cart table.cart img,
.woocommerce table.cart img {
	width: 90px;
	height: auto;
	border-radius: 12px;
}
.woocommerce table.cart td.product-thumbnail { width: 110px; }
.woocommerce table.cart th,
.woocommerce table.cart td { vertical-align: middle; }
.woocommerce table.cart td.product-name a { font-weight: 700; }
.woocommerce table.cart .product-remove { width: 40px; text-align: center; }
.woocommerce table.cart .product-remove a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px; height: 26px;
	border-radius: 50%;
	font-size: 18px;
	line-height: 1;
	color: var(--rwe-color-muted-2);
}
.woocommerce table.cart .product-remove a.remove:hover {
	background: rgba(145, 24, 26, .10);
	color: var(--rwe-color-accent);
}

/* Coupon field and the two buttons: a row with real gaps, not a stack. */
.woocommerce table.cart td.actions { padding: 22px 12px; }
.woocommerce table.cart td.actions .coupon {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}
.woocommerce table.cart td.actions .coupon label { display: none; }
.woocommerce table.cart td.actions .coupon .input-text {
	flex: 1 1 260px;
	width: auto;
	max-width: 420px;
	margin: 0;
}
.woocommerce table.cart td.actions .button { margin: 0; float: none; }

.woocommerce .quantity .qty {
	width: 90px;
	max-width: 100%;
	text-align: center;
	padding: 12px 10px;
}

/* Totals + the stack of express-checkout buttons underneath it. */
.woocommerce .cart-collaterals { margin-top: 36px; }
.woocommerce .cart_totals h2 { font-size: 26px; font-weight: 700; margin-bottom: 16px; }
.woocommerce .cart_totals table.shop_table { margin-bottom: 20px; }
.woocommerce .wc-proceed-to-checkout {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 12px;
	margin-top: 20px;
}
.woocommerce .wc-proceed-to-checkout > * { margin: 0 !important; }
.woocommerce .wc-proceed-to-checkout .checkout-button { align-self: flex-start; }

@media (max-width: 782px) {
	/*
	 * No WooCommerce CSS means shop_table_responsive never collapses, so the
	 * cart table is rebuilt as stacked rows with the column name in front.
	 */
	.woocommerce table.cart thead { display: none; }
	.woocommerce table.cart,
	.woocommerce table.cart tbody,
	.woocommerce table.cart tr,
	.woocommerce table.cart td { display: block; width: 100%; }
	.woocommerce table.cart tr.cart_item {
		position: relative;
		border-bottom: 1px solid var(--rwe-color-border);
		padding: 14px 0 14px 110px;
		min-height: 104px;
	}
	.woocommerce table.cart tr.cart_item td { border: none; padding: 2px 0; }
	.woocommerce table.cart tr.cart_item td.product-thumbnail {
		position: absolute;
		left: 0; top: 14px;
		width: 90px;
		padding: 0;
	}
	.woocommerce table.cart tr.cart_item td.product-remove {
		position: absolute;
		right: 0; top: 14px;
		width: auto;
		padding: 0;
	}
	.woocommerce table.cart tr.cart_item td::before {
		content: attr(data-title) ": ";
		font-weight: 700;
		margin-right: 6px;
	}
	.woocommerce table.cart tr.cart_item td.product-thumbnail::before,
	.woocommerce table.cart tr.cart_item td.product-remove::before,
	.woocommerce table.cart tr.cart_item td.product-name::before { content: none; }
	.woocommerce table.cart td.actions .coupon .input-text { flex-basis: 100%; max-width: 100%; }
	.woocommerce table.cart td.actions .button { width: 100%; }
}

/* -----------------------------------------------------------
   My Account / member area
   WooCommerce's own stylesheets are disabled (see inc/woocommerce.php),
   so the account screens are styled here from scratch: a nav card beside
   a content card, with the theme's pill inputs and buttons.
----------------------------------------------------------- */
body.woocommerce-account { background: var(--rwe-color-surface-2); }

.woocommerce-account .rwe-page-content > .woocommerce {
	display: flex;
	align-items: flex-start;
	gap: 30px;
	flex-wrap: wrap;
}

/* --- navigation ---------------------------------------------------- */
.woocommerce-MyAccount-navigation {
	flex: 0 0 280px;
	max-width: 100%;
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 16px;
}
.woocommerce-MyAccount-navigation ul { display: block; }
.woocommerce-MyAccount-navigation li { list-style: none; margin: 0; }
.woocommerce-MyAccount-navigation li + li { border-top: 1px solid var(--rwe-color-border); }
.woocommerce-MyAccount-navigation a {
	display: block;
	padding: 14px 18px;
	border-radius: var(--rwe-radius-pill);
	font-size: 17px;
	font-weight: 600;
	color: var(--rwe-color-ink);
	transition: background-color .15s ease, color .15s ease;
}
.woocommerce-MyAccount-navigation a:hover {
	background: var(--rwe-color-surface-2);
	color: var(--rwe-color-accent);
}
.woocommerce-MyAccount-navigation li.is-active { border-top-color: transparent; }
.woocommerce-MyAccount-navigation li.is-active + li { border-top-color: transparent; }
.woocommerce-MyAccount-navigation li.is-active a {
	background: var(--rwe-color-accent);
	color: var(--rwe-color-white);
}
.woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--rwe-color-muted-2); }

/* --- content panel -------------------------------------------------- */
.woocommerce-MyAccount-content {
	flex: 1 1 420px;
	min-width: 0;
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 30px;
}
.woocommerce-MyAccount-content > p { margin-bottom: 16px; line-height: 1.6; }
.woocommerce-MyAccount-content h2,
.woocommerce-MyAccount-content h3 { font-size: 24px; font-weight: 700; margin-bottom: 18px; }
.woocommerce-MyAccount-content a { color: var(--rwe-color-accent); text-decoration: underline; }
.woocommerce-MyAccount-content a.button,
.woocommerce-MyAccount-content a.woocommerce-Button { text-decoration: none; }

/* --- forms ---------------------------------------------------------- */
.woocommerce form .form-row { margin-bottom: 18px; display: block; }
.woocommerce form .form-row label,
.woocommerce-EditAccountForm label,
.woocommerce-address-fields label {
	display: block;
	font-size: 15px;
	font-weight: 700;
	margin-bottom: 8px;
}
.woocommerce form .form-row .required { color: var(--rwe-color-accent); text-decoration: none; border: 0; }

.woocommerce input.input-text,
.woocommerce textarea,
.woocommerce select,
.woocommerce .woocommerce-Input {
	width: 100%;
	max-width: 100%;
	border: 1px solid var(--rwe-color-border);
	border-radius: var(--rwe-radius-pill);
	padding: 14px 22px;
	background: var(--rwe-color-surface-2);
	font-size: 16px;
	color: var(--rwe-color-ink);
	outline: none;
}
.woocommerce textarea { border-radius: 20px; min-height: 120px; resize: vertical; }
.woocommerce input.input-text:focus,
.woocommerce textarea:focus,
.woocommerce select:focus { border-color: var(--rwe-color-muted-light); }

/* Two-up rows (first/last name, address lines). */
@media (min-width: 620px) {
	.woocommerce form .form-row-first,
	.woocommerce form .form-row-last {
		width: calc(50% - 9px);
		display: inline-block;
		vertical-align: top;
	}
	.woocommerce form .form-row-first { margin-right: 14px; }
}

/* Password-change block. */
.woocommerce fieldset {
	border: 1px solid var(--rwe-color-border);
	border-radius: var(--rwe-radius-card);
	padding: 20px 24px;
	margin: 24px 0;
}
.woocommerce fieldset legend { font-weight: 700; font-size: 17px; padding: 0 8px; }

/* Show/hide password toggle WooCommerce injects. */
.woocommerce .password-input { display: block; position: relative; }
.woocommerce .show-password-input {
	position: absolute;
	right: 18px;
	top: 50%;
	transform: translateY(-50%);
	cursor: pointer;
}

.woocommerce-form__label-for-checkbox {
	display: flex;
	align-items: center;
	gap: 10px;
	font-weight: 400;
}
.woocommerce-form__input-checkbox {
	width: 18px;
	height: 18px;
	accent-color: var(--rwe-color-accent);
}

/* --- buttons -------------------------------------------------------- */
.woocommerce .button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button,
.woocommerce .woocommerce-Button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	background: var(--rwe-color-accent);
	color: var(--rwe-color-white);
	font-weight: 700;
	font-size: 17px;
	padding: 13px 28px;
	border-radius: var(--rwe-radius-pill);
	border: none;
	cursor: pointer;
	transition: background-color .15s ease;
}
.woocommerce .button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button:hover,
.woocommerce .woocommerce-Button:hover { background: var(--rwe-color-accent-dark); color: var(--rwe-color-white); }

.woocommerce-form-login__rememberme { display: inline-flex; align-items: center; gap: 8px; margin-right: 16px; }
.woocommerce-LostPassword { margin-top: 12px; font-size: 15px; }

/* --- notices -------------------------------------------------------- */
.woocommerce-info,
.woocommerce-message,
.woocommerce-error {
	list-style: none;
	border-radius: var(--rwe-radius-card);
	padding: 16px 22px;
	margin-bottom: 22px;
	font-size: 16px;
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}
.woocommerce-info { background: var(--rwe-color-surface-2); }
.woocommerce-message { background: #e6f6ea; color: #1e7a33; }
.woocommerce-error { background: #fbe9e9; color: var(--rwe-color-accent); }
.woocommerce-error li { list-style: none; }
.woocommerce-info .button,
.woocommerce-message .button { margin-left: auto; }

/* --- tables (orders, downloads) -------------------------------------- */
.woocommerce table.shop_table,
.woocommerce-orders-table,
.woocommerce table.woocommerce-MyAccount-orders {
	width: 100%;
	border-collapse: collapse;
	font-size: 16px;
}
.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	text-align: left;
	padding: 14px 12px;
	border-bottom: 1px solid var(--rwe-color-border);
}
.woocommerce table.shop_table th { font-weight: 700; }
.woocommerce table.shop_table td.woocommerce-orders-table__cell-order-actions { text-align: right; }

/* Tables scroll rather than breaking the card on small screens. */
.woocommerce-MyAccount-content .woocommerce-orders-table,
.woocommerce-MyAccount-content table.shop_table { display: table; }
.woocommerce-MyAccount-content { overflow-x: auto; }

/* --- addresses ------------------------------------------------------- */
.woocommerce-Addresses {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	margin-top: 8px;
}
.woocommerce-Address {
	background: var(--rwe-color-surface-2);
	border-radius: var(--rwe-radius-card);
	padding: 22px 24px;
}
.woocommerce-Address-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.woocommerce-Address-title h2,
.woocommerce-Address-title .title { font-size: 20px; margin: 0; }
.woocommerce-Address address { font-style: normal; line-height: 1.7; color: var(--rwe-color-muted-2); }

/* --- login / register ------------------------------------------------ */
#customer_login {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 30px;
}
#customer_login > div {
	background: var(--rwe-color-white);
	border-radius: var(--rwe-radius-card);
	padding: 30px;
}
#customer_login h2 { font-size: 26px; font-weight: 700; margin-bottom: 20px; }
.woocommerce-account:not(.logged-in) .rwe-page-content > .woocommerce { display: block; }

@media (max-width: 900px) {
	.woocommerce-account .rwe-page-content > .woocommerce { gap: 20px; }
	.woocommerce-MyAccount-navigation { flex-basis: 100%; }
	.woocommerce-MyAccount-navigation ul { display: flex; flex-wrap: wrap; gap: 6px; }
	.woocommerce-MyAccount-navigation li { flex: 1 1 auto; }
	.woocommerce-MyAccount-navigation li + li { border-top: none; }
	.woocommerce-MyAccount-navigation a { padding: 11px 16px; font-size: 16px; text-align: center; }
	.woocommerce-MyAccount-content { flex-basis: 100%; padding: 22px; }
	#customer_login { grid-template-columns: 1fr; gap: 20px; }
	.woocommerce-Addresses { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
	.woocommerce-MyAccount-content { padding: 18px; }
	.woocommerce fieldset { padding: 16px; }
	#customer_login > div { padding: 22px; }
}

/* -----------------------------------------------------------
   Elementor widgets — reskin from Elementor's default blue to
   the site's brand palette so editor-added content matches.
----------------------------------------------------------- */
.elementor-widget-heading .elementor-heading-title {
	color: var(--rwe-color-ink) !important;
	font-family: var(--rwe-font-base);
}
.elementor-widget-text-editor {
	color: var(--rwe-color-ink);
	font-family: var(--rwe-font-base);
}
.elementor-counter-number-wrapper,
.elementor-counter-title {
	color: var(--rwe-color-accent) !important;
	font-family: var(--rwe-font-base);
}
.elementor-counter-title { color: var(--rwe-color-ink) !important; font-weight: 400; }
.elementor-accordion .elementor-tab-title,
.elementor-accordion .elementor-tab-title a {
	font-family: var(--rwe-font-base);
	color: var(--rwe-color-ink) !important;
	text-decoration: none !important;
}
.elementor-accordion .elementor-tab-title.elementor-active {
	color: var(--rwe-color-accent) !important;
}
body .elementor-accordion .elementor-tab-title .elementor-accordion-icon,
body .elementor-accordion .elementor-tab-title .elementor-accordion-icon i,
body .elementor-accordion .elementor-tab-title .elementor-accordion-icon svg,
body .elementor-accordion .elementor-tab-title .elementor-accordion-icon svg path {
	color: var(--rwe-color-ink) !important;
	fill: var(--rwe-color-ink) !important;
}
.elementor-icon-list-items .elementor-icon-list-icon i {
	color: var(--rwe-color-accent) !important;
}
.elementor-widget-shortcode { font-family: var(--rwe-font-base); }
.elementor-button, a.elementor-button {
	background: var(--rwe-color-accent) !important;
	border-radius: var(--rwe-radius-pill) !important;
	font-family: var(--rwe-font-base);
}

/* -----------------------------------------------------------
   Kontakt page — dark contact card, venue card, FAQ pills
----------------------------------------------------------- */
.rwe-contact-card { color: #fff; }
.rwe-contact-info-col .elementor-heading-title,
.rwe-contact-info-col .elementor-icon-list-text,
.rwe-contact-info-heading.elementor-widget-heading .elementor-heading-title {
	color: #fff !important;
}
.rwe-contact-info-col .elementor-icon-list-icon i,
.rwe-contact-info-col .elementor-icon-list-icon svg,
.rwe-contact-info-col .elementor-icon-list-icon svg path {
	color: #fff !important;
	fill: #fff !important;
}
.rwe-contact-photo img {
	filter: grayscale(1);
	border-radius: var(--rwe-radius-card);
	aspect-ratio: 4 / 3;
	object-fit: cover;
}
.rwe-contact-social .elementor-social-icons-wrapper a {
	background: rgba(255, 255, 255, 0.12) !important;
}
.rwe-venue-card .elementor-heading-title { font-size: 24px; }
.rwe-venue-map .elementor-custom-embed,
.rwe-venue-map iframe {
	border-radius: 16px;
	min-height: 260px;
	width: 100%;
}

.rwe-faq-pills .elementor-accordion-item {
	background: var(--rwe-color-surface-2);
	border: none !important;
	border-radius: 20px;
	margin-bottom: 14px;
	overflow: hidden;
}
.rwe-faq-pills .elementor-tab-title { padding: 18px 24px; }
.rwe-faq-pills .elementor-tab-content { padding: 0 24px 20px; border: none !important; }
.rwe-faq-pills .elementor-tab-title.elementor-active .elementor-accordion-icon {
	transform: rotate(180deg);
}
.rwe-faq-pills .elementor-accordion-icon { transition: transform .2s ease; }

/* WooCommerce loop reuse */
ul.products { list-style: none; display: grid; grid-template-columns: repeat(4,1fr); gap: 32px; margin: 0; padding: 0; }
ul.products li.product { list-style: none; }
@media (max-width: 1200px) { ul.products { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 620px) { ul.products { grid-template-columns: 1fr; }
.ticket-filter-bar__filters {
    justify-content: center;
} 

}
a.woocommerce-product-gallery__trigger {
    display: none;
}
/* -----------------------------------------------------------
   Login / register modal (product detail page booking gate)
   Server-rendered and [hidden] until "Jetzt buchen" is clicked,
   so the links inside stay crawlable — see initLoginModal().
----------------------------------------------------------- */
.rwe-modal {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}
.rwe-modal[hidden] { display: none; }
body.rwe-modal-open { overflow: hidden; }

.rwe-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .55);
}

.rwe-modal__panel {
	position: relative;
	width: 100%;
	max-width: 400px;
	max-height: calc(100vh - 48px);
	overflow-y: auto;
	background: var(--rwe-color-white);
	border-radius: 12px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, .3);
}
.rwe-modal__panel:focus { outline: none; }

.rwe-modal__header {
	position: relative;
	background: var(--rwe-color-black);
	padding: 18px 24px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 12px 12px 0 0;
}
.rwe-modal__logo img { height: 44px; width: auto; }
.rwe-modal__close {
	position: absolute;
	top: 50%;
	right: 16px;
	transform: translateY(-50%);
	background: none;
	border: none;
	color: var(--rwe-color-white);
	display: inline-flex;
	padding: 4px;
}

.rwe-modal__body { padding: 24px; }

.rwe-modal__notice {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin-bottom: 22px;
	padding: 12px 14px;
	border-radius: 8px;
	border: 1px solid rgba(145, 24, 26, .35);
	background: rgba(145, 24, 26, .07);
	color: var(--rwe-color-accent);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
}
.rwe-modal__notice svg { flex-shrink: 0; margin-top: 1px; }

.rwe-modal .rwe-field { margin-bottom: 16px; }
.rwe-modal .rwe-field label {
	display: block;
	margin-bottom: 6px;
	font-size: 14px;
	font-weight: 700;
}
.rwe-modal .rwe-field input {
	width: 100%;
	padding: 12px 14px;
	border: 1px solid var(--rwe-color-border);
	border-radius: 8px;
	background: var(--rwe-color-surface-2);
	color: var(--rwe-color-ink);
	outline: none;
}
.rwe-modal .rwe-field input:focus { border-color: var(--rwe-color-accent); }

.rwe-modal__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 20px;
	font-size: 14px;
}
.rwe-modal__remember { display: inline-flex; align-items: center; gap: 8px; }
.rwe-modal__link { color: var(--rwe-color-accent); font-weight: 700; text-decoration: underline; }

.rwe-modal__divider {
	position: relative;
	text-align: center;
	margin: 20px 0 14px;
	color: var(--rwe-color-muted-2);
	font-size: 14px;
}
.rwe-modal__divider::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--rwe-color-border);
}
.rwe-modal__divider span {
	position: relative;
	background: var(--rwe-color-white);
	padding: 0 12px;
}

.rwe-modal__signup {
	text-align: center;
	font-size: 14px;
	color: var(--rwe-color-muted-2);
}


body.search-results {
	background: #F7F7F7;
}