/*
Theme Name:   OceanWP Child (TTC Gnadental)
Template:     oceanwp
Version:      1.16.0
Text Domain:  oceanwp-child
*/

/* ---------- Header ---------- */

/* Shield logo + site name */
#site-logo #site-logo-inner a.custom-logo-link {
	display: flex;
	align-items: center;
	gap: 14px;
	text-decoration: none;
}
#site-logo #site-logo-inner a img.custom-logo {
	width: auto;
}
.ttc-logo-text {
	font-family: 'Lora', serif;
	font-size: 23px;
	font-weight: 600;
	color: #33291f;
	white-space: nowrap;
}
a.custom-logo-link:hover .ttc-logo-text {
	color: #17158a;
}
@media (max-width: 480px) {
	.ttc-logo-text {
		font-size: 19px;
	}
}
/* Between the mobile breakpoint (1220px) and wide screens the full menu needs the room – the shield alone carries the name. */
@media (min-width: 1221px) and (max-width: 1439px) {
	.ttc-logo-text {
		display: none;
	}
}
@media (min-width: 1221px) {
	#site-header.is-full-width #site-header-inner,
	#site-header #site-header-inner {
		padding-left: 32px;
		padding-right: 32px;
	}
}

/* Top-level menu items: larger than the Customizer's 15px (inline CSS with the same selector, hence
   the extra body); tighter spacing so all items still fit in one row. */
body #site-navigation-wrap .dropdown-menu > li > a {
	padding-left: 8px;
	padding-right: 8px;
	font-size: 17px;
	letter-spacing: 0;
}
/* Wide screens (laptops with 1920px and up) have room for more. */
@media (min-width: 1600px) {
	body #site-navigation-wrap .dropdown-menu > li > a {
		padding-left: 13px;
		padding-right: 13px;
		font-size: 19px;
	}
	#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta > a .text-wrap {
		padding: 14px 30px;
		font-size: 16px;
	}
}
@media (min-width: 1800px) {
	body #site-navigation-wrap .dropdown-menu > li > a {
		padding-left: 17px;
		padding-right: 17px;
		font-size: 20px;
	}
}

/* "Mitglied werden" – menu item with CSS class ttc-menu-cta, shown as a pill button. */
#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta {
	margin-left: 14px;
}
#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta > a {
	padding-right: 0;
}
#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta > a .text-wrap {
	display: inline-block;
	padding: 12px 26px;
	border-radius: 24px;
	background: #17158a;
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	transition: background-color .2s;
}
#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta > a:hover .text-wrap,
#site-navigation-wrap .dropdown-menu > li.ttc-menu-cta.current-menu-item > a .text-wrap {
	background: #0e0d5e;
	color: #fff;
}

/* Dropdowns: rounded card look matching the design. */
#site-navigation-wrap .dropdown-menu .sub-menu {
	border-radius: 0 0 10px 10px;
	box-shadow: 0 10px 24px rgba(51, 41, 31, .08);
	padding: 6px 0;
}

/* Mobile header + dropdown menu */
@media (max-width: 1220px) {
	#site-header #site-header-inner {
		padding-left: 16px;
		padding-right: 16px;
	}
}
/* OceanWP 4.2+: entries with a submenu are buttons instead of links (its a11y.min.css loads after this
   file – hence the same selector plus body). */
body #mobile-dropdown,
body #mobile-dropdown ul,
body #mobile-dropdown ul li a,
body #mobile-dropdown ul li > button.menu-link.dropdown-toggle {
	background-color: #fff9f2;
}
body #mobile-dropdown {
	border-top: 1px solid #ecdfd0;
	/* OceanWP limits the menu to 400px – on phones "Mitglied werden" then hides below. Use the screen
	   height below the header instead (it still scrolls when submenus are open). */
	max-height: calc(100vh - 120px);
	max-height: calc(100dvh - 120px);
}
#mobile-dropdown ul li a,
body #mobile-dropdown ul li > button.menu-link.dropdown-toggle {
	font-family: 'Karla', sans-serif;
	font-weight: 500;
	border-color: #f0e2ce;
}
#mobile-dropdown li.ttc-menu-cta > a {
	color: #17158a;
	font-weight: 600;
}

/* ---------- Footer ---------- */

/* Partner carousel: logos on cream cards, round arrow buttons, faded edges. */
.ttc-partner-carousel .elementor-image-carousel-wrapper {
	position: relative;
	padding: 4px 56px;
}
.ttc-partner-carousel .elementor-image-carousel-wrapper::before,
.ttc-partner-carousel .elementor-image-carousel-wrapper::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	width: 116px;
	z-index: 2;
	pointer-events: none;
}
.ttc-partner-carousel .elementor-image-carousel-wrapper::before {
	left: -1px;
	background: linear-gradient(90deg, #17158a 60px, rgba(23, 21, 138, 0));
}
.ttc-partner-carousel .elementor-image-carousel-wrapper::after {
	right: -1px;
	background: linear-gradient(270deg, #17158a 60px, rgba(23, 21, 138, 0));
}
.ttc-partner-carousel .swiper-slide-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 96px;
	margin: 0;
	padding: 18px 26px;
	background: #fff9f2;
	border-radius: 16px;
}
.ttc-partner-carousel .swiper-slide-inner img.swiper-slide-image {
	width: auto;
	max-width: 100%;
	max-height: 58px;
	object-fit: contain;
}
#footer .ttc-partner-carousel .elementor-swiper-button {
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid rgba(255, 255, 255, .4);
	border-radius: 50%;
	transition: background-color .2s;
}
#footer .ttc-partner-carousel .elementor-swiper-button:hover {
	background: rgba(255, 255, 255, .12);
}
#footer .ttc-partner-carousel .elementor-swiper-button-prev {
	left: 0;
}
#footer .ttc-partner-carousel .elementor-swiper-button-next {
	right: 0;
}

/* Bottom bar */
.ttc-footer-bottom p {
	margin: 0;
}
#footer .ttc-footer-links a {
	color: inherit;
	margin-left: 28px;
}
#footer .ttc-footer-links a:first-child {
	margin-left: 0;
}
#footer .ttc-footer-links a:hover {
	color: #fff;
	text-decoration: underline;
}
@media (max-width: 767px) {
	.ttc-partner-carousel .elementor-image-carousel-wrapper {
		padding: 4px 44px;
	}
	.ttc-partner-carousel .elementor-image-carousel-wrapper::before,
	.ttc-partner-carousel .elementor-image-carousel-wrapper::after {
		width: 45px;
		background: #17158a;
	}
	.ttc-partner-carousel .swiper-slide-inner {
		height: 76px;
		padding: 14px 16px;
	}
	#footer .ttc-footer-links a {
		margin: 0 12px;
	}
	.ttc-footer-bottom .elementor-column + .elementor-column {
		margin-top: 8px;
	}
}

/* Homepage buttons "Termine ansehen" / "Neuigkeiten lesen" jump to the sections #termine and
   #neuigkeiten: scroll smoothly and keep a little room above the section title. */
html {
	scroll-behavior: smooth;
}
#termine,
#neuigkeiten {
	scroll-margin-top: 24px;
}

/* ---------- Page building blocks (usable on any Elementor page via CSS classes) ---------- */

/* Section title with a short blue rule above it: heading widget + class ttc-section-title */
.ttc-section-title .elementor-heading-title::before {
	content: '';
	display: block;
	width: 44px;
	height: 4px;
	margin-bottom: 14px;
	border-radius: 2px;
	background: #17158a;
}

/* "Alle … →" link next to a section title: text widget + class ttc-more-link */
.ttc-more-link p {
	margin: 0;
}
.elementor-widget.ttc-more-link a {
	color: #c1543c;
	font-size: 15px;
	font-weight: 600;
}
.elementor-widget.ttc-more-link a:hover {
	color: #0e0d5e;
}

/* Rounded photo: image widget + class ttc-hero-image */
.elementor-widget.ttc-hero-image img {
	width: 100%;
	height: 380px;
	object-fit: cover;
	border-radius: 20px;
}
.ttc-hero-text p {
	max-width: 460px;
}
/* Intro text on department pages: text widget + class ttc-intro-text */
.ttc-intro-text p {
	max-width: 760px;
}

/* Team / group photo in a row of cards: image widget + class ttc-team-photo */
.elementor-widget.ttc-team-photo img {
	width: 100%;
	height: 240px;
	object-fit: cover;
	border-radius: 18px;
}
/* Portrait of a contact person: additionally class ttc-portrait */
.elementor-widget.ttc-portrait img {
	height: 320px;
	object-position: center top;
}
/* Photo next to a contact card (image widget + class ttc-contact-photo alone): small framed
   portrait, so tightly cropped head shots and cut-out PNGs keep their shoulders. */
.elementor-widget.ttc-contact-photo img {
	width: 100%;
	max-width: 220px;
	height: auto;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center top;
	border: 1px solid #f0e2ce;
	border-radius: 18px;
	background: #f3e6d6;
}

/* Offer card (text widget + class ttc-offer): the bold first line is the card title */
.ttc-offer p {
	margin: 0 0 12px;
}
.ttc-offer p > strong:first-child {
	display: block;
	margin-bottom: 6px;
	color: #33291f;
	font-family: 'Lora', serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 1.35;
}

/* Row of cards with equal height: inner section + class ttc-equal-cards */
.ttc-equal-cards > .elementor-container > .elementor-column > .elementor-widget-wrap {
	height: calc(100% - 24px);
	align-content: flex-start;
}

/* Tables in text widgets (e.g. Ausschuss, Förderverein): text widget + class ttc-table */
.ttc-table table {
	width: 100%;
	margin: 8px 0 16px;
	border-collapse: collapse;
	border: 0;
}
.ttc-table th,
.ttc-table td {
	padding: 10px 12px 10px 0;
	border: 0;
	border-bottom: 1px solid #f0e2ce;
	text-align: left;
	vertical-align: top;
}
.ttc-table th {
	color: #c1543c;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .5px;
	text-transform: uppercase;
}
.ttc-table td:last-child {
	color: #33291f;
	font-weight: 600;
}
.ttc-table h3 {
	margin: 24px 0 8px;
	font-size: 20px;
}

/* Flyer / poster image: image widget + class ttc-flyer */
.elementor-widget.ttc-flyer img {
	width: 100%;
	border-radius: 18px;
	box-shadow: 0 12px 30px rgba(51, 41, 31, .12);
}

@media (max-width: 767px) {
	.elementor-widget.ttc-hero-image img {
		height: 240px;
		margin-top: 16px;
	}
	.ttc-flyer {
		margin-bottom: 20px;
	}
}

/* ---------- Report cards (Essential Addons post grid + class ttc-report-grid) ---------- */
/* Colours, border, typography and spacing are widget settings; only what EA has no control for lives here. */
.ttc-report-grid .eael-grid-post-holder {
	height: 100%;
	overflow: hidden;
	transition: box-shadow .2s, transform .2s, border-color .2s;
}
.ttc-report-grid .eael-grid-post-holder:hover {
	border-color: #17158a;
	box-shadow: 0 10px 24px rgba(51, 41, 31, .08);
	transform: translateY(-2px);
}
/* The card shows a 16:9 cut-out: take it from the upper third instead of the middle, so upright photos
   of people keep their faces (landscape photos hardly change). */
.ttc-report-grid .eael-grid-post .eael-entry-thumbnail img {
	object-position: 50% 25%;
}
/* EA 6.8.8 sets .eael-grid-post .eael-entry-wrapper { padding: 15px } after this file – hence the extra class. */
.ttc-report-grid .eael-grid-post .eael-entry-wrapper {
	display: flex;
	flex-direction: column;
	padding: 22px;
}
.ttc-report-grid .eael-entry-header-after {
	order: -1;
	margin-bottom: 8px;
}
.ttc-report-grid .eael-entry-meta i {
	display: none;
}
.ttc-report-grid .eael-grid-post-excerpt p {
	margin: 0;
}
.ttc-report-grid .eael-entry-overlay {
	display: none;
}

/* ---------- Page title bar (OceanWP page header) ---------- */
.page-header .page-header-title {
	font-family: 'Lora', serif;
	font-size: 34px;
	font-weight: 600;
	line-height: 1.25;
}
.site-breadcrumbs,
.site-breadcrumbs a {
	font-size: 14px;
}
.page-header .site-breadcrumbs a {
	color: #c1543c;
}
.page-header .site-breadcrumbs a:hover {
	color: #17158a;
}
@media (max-width: 767px) {
	.page-header .page-header-title {
		font-size: 26px;
	}
}
/* Single report: title bar on the same 1000px column as the text below (OceanWP "content max width"). */
.single-post.content-max-width .page-header .container {
	max-width: 1000px;
	padding-left: 20px;
	padding-right: 20px;
}
/* … where the breadcrumbs no longer fit next to a long title: below it instead. */
.single-post.content-max-width .page-header .site-breadcrumbs {
	position: static;
	max-width: none;
	margin: 10px 0 0;
	transform: none;
	text-align: left;
	white-space: normal;
}
.single-post.content-max-width .page-header .site-breadcrumbs .trail-items {
	white-space: normal;
}

/* Text pasted from Outlook/Word comes as <div> blocks (OceanWP's 1000px column only covers p, h2,
   ul, …): put them into the same column, and use the club fonts instead of pasted Calibri/Aptos 12pt. */
.single-post.content-max-width .entry-content > div:not([class*="elementor"]):not(.thumbnail):not(.wp-block-group),
.single-post.content-max-width .entry-content > table {
	box-sizing: border-box;
	max-width: 1000px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 20px;
	padding-right: 20px;
}
.single-post .entry-content [style*="font-family"] {
	font-family: inherit !important;
}
.single-post .entry-content div[style*="font-size"],
.single-post .entry-content span[style*="font-size"],
.single-post .entry-content p[style*="font-size"] {
	font-size: inherit !important;
}
.single-post .entry-content [style*="color: #000000"],
.single-post .entry-content [style*="color:#000000"],
.single-post .entry-content [style*="color: rgb(0, 0, 0)"],
.single-post .entry-content [style*="color: black"] {
	color: inherit !important;
}

/* Further photos of a report from the "Neuer Post" form (WP User Frontend field "Weitere Bilder"):
   large and one below the other instead of small squares. The image size: functions.php. */
.single-post.content-max-width .entry-content ul.wpuf_customs {
	margin: 32px auto 0;
	padding: 0 20px;
	list-style: none;
}
.single-post.content-max-width .entry-content ul.wpuf_customs > li {
	display: flex;
	flex-direction: column;
	gap: 20px;
	margin: 0;
	padding: 0;
}
.single-post.content-max-width .entry-content ul.wpuf_customs > li > label {
	margin: 0;
	color: #33291f;
	font-family: 'Lora', serif;
	font-size: 22px;
	font-weight: 600;
}
.single-post.content-max-width .entry-content ul.wpuf_customs a.oceanwp-lightbox {
	display: block;
}
.single-post.content-max-width .entry-content ul.wpuf_customs img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 14px;
}

/* ---------- Events (The Events Calendar + "Events Widgets for Elementor" list) ---------- */
/* Calendar views (/events/): palette and fonts via TEC's own variables. html:root beats TEC's
   :root, which also derives the search button and date colours from these. */
html:root {
	--tec-font-family-sans-serif: 'Karla', sans-serif;
	--tec-color-text-primary: #33291f;
	--tec-color-text-secondary: #6b5f50;
	--tec-color-accent-primary: #17158a;
	--tec-color-accent-primary-hover: #0e0d5e;
	--tec-color-accent-primary-active: #0e0d5e;
	--tec-color-button-primary: #17158a;
	--tec-color-button-primary-hover: #0e0d5e;
	--tec-color-button-primary-active: #0e0d5e;
	--tec-color-link-accent: #c1543c;
	--tec-color-link-accent-hover: #17158a;
	--tec-color-background-events-bar-submit-button: #17158a;
	--tec-color-background-events-bar-submit-button-hover: #0e0d5e;
	--tec-color-background-events-bar-submit-button-active: #0e0d5e;
}
.tribe-common.tribe-events .tribe-events-calendar-list__event-title,
.tribe-common.tribe-events .tribe-events-calendar-list__event-title-link,
.tribe-common.tribe-events .tribe-events-c-top-bar__datepicker-button,
.tribe-common.tribe-events .tribe-events-calendar-list__month-separator-text {
	font-family: 'Lora', serif;
}
.tribe-common.tribe-events button.tribe-events-c-search__button {
	border-radius: 24px;
}
/* Event list widget (ectbe) as cream cards; its colours are widget settings (step 7 script) */
/* ectbe 1.9.4 sets 15px via .ectbe-list-wrapper.style-1 and loads after this file – hence the
   repeated class. */
.ectbe-list-wrapper.ectbe-list-wrapper .ectbe-inner-wrapper.ectbe-inner-wrapper {
	overflow: hidden;
	border: 1px solid #f0e2ce;
	border-radius: 18px;
	background: #fff9f2;
}
.ectbe-list-wrapper .ectbe-date-area span {
	color: #dcdcf2;
}
.ectbe-list-wrapper .ectbe-date-area .ectbe-ev-day {
	color: #fff;
	font-family: 'Lora', serif;
	font-weight: 600;
}
.ectbe-list-wrapper .ectbe-content-box,
.ectbe-list-wrapper .ectbe-evt-more-box {
	background: transparent;
}
.ectbe-list-wrapper .ectbe-evt-title a.ectbe-evt-url {
	color: #33291f;
	font-family: 'Lora', serif;
	font-weight: 600;
}
.ectbe-list-wrapper .ectbe-evt-title a.ectbe-evt-url:hover {
	color: #17158a;
}
.ectbe-list-wrapper .ectbe-evt-time,
.ectbe-list-wrapper .ectbe-evt-time i {
	color: #c1543c;
	font-weight: 600;
}
.ectbe-list-wrapper .ectbe-evt-venue,
.ectbe-list-wrapper .ectbe-evt-description {
	color: #6b5f50;
}
.ectbe-list-wrapper a.ectbe-evt-read-more {
	color: #c1543c;
	font-weight: 600;
}
.ectbe-list-wrapper a.ectbe-evt-read-more:hover {
	color: #17158a;
}

/* ---------- Internal area: side menu (Essential Addons "Simple Menu" with the menu "Interner Bereich") ---------- */
/* Targets the menu by its ID, so it applies on every page that shows it and beats the widget's own
   styles without changing the pages. */
.eael-simple-menu-container:has(#menu-menu-interner-bereich) {
	padding: 10px;
	border: 1px solid #f0e2ce;
	border-radius: 18px;
	background: #fff9f2;
}
#menu-menu-interner-bereich {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
#menu-menu-interner-bereich li {
	border: 0;
}
#menu-menu-interner-bereich li a {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 16px;
	border: 0;
	border-radius: 12px;
	color: #33291f;
	font-family: 'Karla', sans-serif;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
	text-align: left;
	transition: background-color .15s, color .15s;
}
#menu-menu-interner-bereich li a:hover,
#menu-menu-interner-bereich li a:focus-visible {
	background: #dcdcf2;
	color: #17158a;
}
#menu-menu-interner-bereich li.current-menu-item > a {
	background: #17158a;
	color: #fff;
}
/* Icon per entry (by link target), drawn in the text colour */
#menu-menu-interner-bereich li a::before {
	content: '';
	flex: none;
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask: var(--ttc-icon) center / contain no-repeat;
	mask: var(--ttc-icon) center / contain no-repeat;
	--ttc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5V20a1 1 0 0 1-1 1h-5v-6h-6v6H4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E");
}
#menu-menu-interner-bereich li a[href*="neuer-post"]::before {
	--ttc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E");
}
#menu-menu-interner-bereich li a[href*="neue-veranstaltung"]::before {
	--ttc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='17' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18M12 14v4M10 16h4'/%3E%3C/svg%3E");
}
#menu-menu-interner-bereich li a[href*="downloads"]::before {
	--ttc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3'/%3E%3C/svg%3E");
}
/* Tablet/phone: Essential Addons switches to its hamburger (black button, cyan drop-down). With four
   entries, a 2×2 grid that is always visible works better. */
.eael-simple-menu-container.eael-simple-menu-hamburger:has(#menu-menu-interner-bereich) .eael-simple-menu-toggle {
	display: none;
}
.eael-simple-menu-container.eael-simple-menu-hamburger #menu-menu-interner-bereich {
	display: grid;
	position: static;
	grid-template-columns: 1fr 1fr;
	width: 100%;
	background: none;
}
.eael-simple-menu-container.eael-simple-menu-hamburger #menu-menu-interner-bereich li a {
	padding: 10px 12px;
	font-size: 15px;
	line-height: 1.3;
}
@media (min-width: 768px) {
	/* Tablet: the menu column still sits next to the form – one entry per row */
	.eael-simple-menu-container.eael-simple-menu-hamburger #menu-menu-interner-bereich {
		grid-template-columns: 1fr;
	}
}

/* ---------- Internal area: "Neuer Post" form (WP User Frontend, layout 1) ---------- */
/* Same look as the event form (plugin frontend-event-form-extended); green action button.
   WPUF's own rules use :not(.wpuf-theme-style) and !important on the upload buttons – hence the same here. */
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) {
	padding: 32px;
	border: 1px solid #f0e2ce;
	border-radius: 18px;
	background: #fff9f2;
	font-family: 'Karla', sans-serif;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li {
	margin: 0 0 24px;
	padding: 0;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-label {
	margin: 0 0 8px;
	padding: 0;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-label label {
	color: #33291f;
	font-family: 'Karla', sans-serif;
	font-size: 15px;
	font-weight: 700;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .required {
	color: #c1543c;
	font-size: 15px;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields input[type=text],
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields select,
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields textarea {
	width: 100%;
	min-height: 48px;
	padding: 12px 14px;
	border: 1px solid #e6d5bf;
	border-radius: 10px;
	background-color: #fff;
	box-shadow: none;
	color: #33291f;
	font-family: 'Karla', sans-serif;
	font-size: 16px;
	transition: border-color .15s, box-shadow .15s;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields select {
	padding-right: 40px;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields input[type=text]::placeholder {
	color: #a3927d;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields input[type=text]:focus,
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields select:focus,
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields textarea:focus {
	border-color: #17158a;
	box-shadow: 0 0 0 3px rgba(23, 21, 138, .15);
	outline: 0;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) .wpuf-help,
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields .wpuf-help {
	margin-top: 6px;
	color: #6b5f50;
	font-family: 'Karla', sans-serif;
	font-size: 14px;
}
/* Image uploads as drop zones */
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields a.file-selector {
	display: flex;
	align-items: center;
	justify-content: center !important;
	gap: 8px;
	width: 100%;
	min-height: 0;
	padding: 22px !important;
	border: 2px dashed #e6d5bf !important;
	border-radius: 14px !important;
	background: #fff !important;
	box-shadow: none;
	color: #17158a !important;
	font-family: 'Karla', sans-serif;
	font-size: 16px;
	font-weight: 700;
	text-decoration: none;
	transition: border-color .15s, background-color .15s;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li .wpuf-fields a.file-selector:hover {
	border-color: #17158a !important;
	background: #f6f6fc !important;
}
/* Text editor: same frame as the fields */
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) .wp-editor-wrap {
	overflow: hidden;
	border: 1px solid #e6d5bf;
	border-radius: 10px;
	background: #fff;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) .wp-editor-wrap .mce-tinymce,
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) .wp-editor-wrap .mce-panel {
	border: 0;
	box-shadow: none;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) .wp-editor-wrap .mce-toolbar-grp {
	border-bottom: 1px solid #f0e2ce;
	background: #faf3ea;
}
/* Submit: green pill like the event form */
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li.wpuf-submit {
	margin: 8px 0 0;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form li.wpuf-submit .wpuf-label {
	display: none;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form .wpuf-submit input[type=submit] {
	padding: 12px 28px;
	border: 0 !important;
	border-radius: 999px;
	background: #4caf50;
	box-shadow: none;
	color: #fff;
	font-family: 'Karla', sans-serif;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: background-color .15s;
}
body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) ul.wpuf-form .wpuf-submit input[type=submit]:hover {
	background: #3d8b40;
}
@media (max-width: 767px) {
	body .wpuf-form-add.wpuf-form-layout1:not(.wpuf-theme-style) {
		padding: 20px;
	}
}

/* Footer partner logos run continuously (settings: functions.php) – evenly, not easing in and out. */
.ttc-partner-carousel .swiper-wrapper {
	transition-timing-function: linear !important;
}
@media (prefers-reduced-motion: reduce) {
	.ttc-partner-carousel .swiper-wrapper {
		transition-duration: 0s !important;
	}
}

/* Members-only page seen by a guest: note + login form (functions.php) */
.ttc-login-required {
	max-width: 480px;
}
.ttc-login-required > p {
	margin: 0 0 16px;
	color: #33291f;
	font-weight: 600;
}

/* ---------- Homepage ---------- */
/* Department tiles ([ttc_abteilungen], functions.php) */
.ttc-departments {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 18px;
}
a.ttc-department {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	padding: 26px 16px 22px;
	border: 1px solid #f0e2ce;
	border-radius: 18px;
	background: #fff9f2;
	color: #33291f;
	text-align: center;
	text-decoration: none;
	transition: border-color .2s, box-shadow .2s, transform .2s;
}
a.ttc-department:hover,
a.ttc-department:focus-visible {
	border-color: #17158a;
	box-shadow: 0 10px 24px rgba(51, 41, 31, .08);
	transform: translateY(-2px);
}
.ttc-department__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 60px;
	height: 60px;
	margin-bottom: 8px;
	border-radius: 50%;
	background: #dcdcf2;
	color: #17158a;
	transition: background-color .2s, color .2s;
}
a.ttc-department:hover .ttc-department__icon {
	background: #17158a;
	color: #fff;
}
.ttc-department__icon svg {
	width: 30px;
	height: 30px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.7;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.ttc-department__name {
	font-family: 'Lora', serif;
	font-size: 18px;
	font-weight: 600;
}
.ttc-department__line {
	color: #6b5f50;
	font-size: 14px;
	line-height: 1.4;
}
@media (max-width: 767px) {
	.ttc-departments {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}
	a.ttc-department {
		padding: 20px 12px 18px;
	}
}

/* Report grid with a lead report (homepage: class ttc-report-grid--lead): the newest one across the
   full width with the picture beside the text, the next three below. */
.ttc-report-grid .eael-entry-media {
	position: relative;
}
.ttc-report-grid .eael-entry-media::after {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 2;
	padding: 5px 12px;
	border-radius: 999px;
	background: #c1543c;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .5px;
	text-transform: uppercase;
}
@media (min-width: 768px) {
	.ttc-report-grid--lead .eael-post-grid {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 28px;
		margin: 0;
	}
	.ttc-report-grid--lead .eael-post-grid > article.eael-grid-post {
		float: none;
		width: auto;
		margin: 0;
		padding: 0;
	}
	.ttc-report-grid--lead .eael-post-grid > article.eael-grid-post:first-child {
		grid-column: 1 / -1;
	}
	.ttc-report-grid--lead article.eael-grid-post:first-child .eael-grid-post-holder-inner {
		display: flex;
		flex-direction: row;
		height: 100%;
	}
	.ttc-report-grid--lead article.eael-grid-post:first-child .eael-entry-media {
		flex: 0 0 56%;
	}
	.ttc-report-grid--lead article.eael-grid-post:first-child .eael-entry-wrapper {
		flex: 1;
		justify-content: center;
		padding: 36px 40px;
	}
	.ttc-report-grid--lead article.eael-grid-post:first-child .eael-entry-title,
	.ttc-report-grid--lead article.eael-grid-post:first-child .eael-entry-title a {
		font-size: 28px;
		line-height: 1.25;
	}
}
@media (min-width: 768px) and (max-width: 1024px) {
	.ttc-report-grid--lead .eael-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	/* 1 + 2 on tablets: the 4th report would stand alone */
	.ttc-report-grid--lead .eael-post-grid > article.eael-grid-post:nth-child(n+4) {
		display: none;
	}
}

/* "Mitglied werden" band (section class ttc-join-band) */
.ttc-join-band .elementor-heading-title {
	color: #fff;
}
.ttc-join-band .elementor-widget-text-editor {
	color: #dcdcf2;
}

/* ---------- Header stays visible while scrolling ---------- */
/* #wrap: OceanWP sets #site-header { position: relative } in a file loaded after this one */
#wrap #site-header {
	position: sticky;
	top: 0;
	z-index: 999;
	transition: box-shadow .2s;
}
#wrap #site-header.ttc-scrolled {
	box-shadow: 0 6px 18px rgba(51, 41, 31, .08);
}
/* below the WordPress admin bar (logged in); on phones the bar scrolls away */
body.admin-bar #wrap #site-header {
	top: 32px;
}
@media (max-width: 782px) {
	body.admin-bar #wrap #site-header {
		top: 46px;
	}
}
@media (max-width: 600px) {
	body.admin-bar #wrap #site-header {
		top: 0;
	}
}
/* jump links (#termine, #trainingszeiten …) end below the header, not under it */
html {
	scroll-padding-top: 110px;
}

/* ---------- "Text prüfen" below the editor of the post forms (textcheck.php, assets/textcheck.js) ---------- */
.ttc-textcheck {
	margin-top: 14px;
	padding: 16px 18px;
	border: 1px solid #f0e2ce;
	border-radius: 14px;
	background: #fff9f2;
}
.ttc-textcheck__bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 16px;
}
body .ttc-textcheck button.ttc-textcheck__button {
	padding: 9px 20px;
	border: 0;
	border-radius: 999px;
	background: #17158a;
	color: #fff;
	font-family: 'Karla', sans-serif;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	text-transform: none;
	letter-spacing: 0;
	cursor: pointer;
}
body .ttc-textcheck button.ttc-textcheck__button:hover {
	background: #0e0d5e;
}
body .ttc-textcheck button.ttc-textcheck__button:disabled {
	opacity: .6;
	cursor: wait;
}
.ttc-textcheck__status {
	color: #6b5f50;
	font-weight: 700;
}
.ttc-textcheck__status.is-ok {
	color: #2f7a3b;
}
.ttc-textcheck__status.is-hints {
	color: #c1543c;
}
.ttc-textcheck__status.is-error {
	color: #b3261e;
}
.ttc-textcheck__note {
	margin: 8px 0 0;
	color: #6b5f50;
	font-size: 13px;
	line-height: 1.5;
}
.ttc-textcheck__list:not(:empty) {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: 14px;
}
.ttc-textcheck__item {
	padding: 12px 14px;
	border: 1px solid #e6d5bf;
	border-radius: 12px;
	background: #fff;
}
.ttc-textcheck__item[hidden] {
	display: none;
}
.ttc-textcheck__context {
	margin: 0 0 4px;
	color: #4a3f33;
	line-height: 1.5;
}
.ttc-textcheck__context mark {
	padding: 0 2px;
	border-bottom: 2px solid #c1543c;
	background: #fbe3dc;
	color: #33291f;
}
.ttc-textcheck__message {
	margin: 0 0 8px;
	color: #6b5f50;
	font-size: 14px;
}
.ttc-textcheck__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}
body .ttc-textcheck .ttc-textcheck__actions button {
	padding: 5px 12px;
	border-radius: 999px;
	font-family: 'Karla', sans-serif;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	text-transform: none;
	letter-spacing: 0;
	cursor: pointer;
}
body .ttc-textcheck button.ttc-textcheck__fix {
	border: 1px solid #2f7a3b;
	background: #2f7a3b;
	color: #fff;
}
body .ttc-textcheck button.ttc-textcheck__fix:hover {
	background: #245f2e;
}
body .ttc-textcheck button.ttc-textcheck__skip {
	border: 1px solid #e6d5bf;
	background: transparent;
	color: #6b5f50;
}
body .ttc-textcheck button.ttc-textcheck__skip:hover {
	background: #f3e6d6;
}
