/*!
 * GYM Family Connect – Online-Mitgliedschaft und Probetraining-Buchung.
 * Farben über CSS-Variablen anpassbar (Plugin-Einstellung „Akzentfarbe“), Schriften kommen von der Website.
 * „.gfc:not(#gfc-x)“ hebt Buttons und Felder über Theme- und Elementor-Vorgaben (Gewicht einer ID, ohne ID im HTML).
 */
.gfc,
.gfc-overlay,
.gfc-sheet {
	--gfc-accent: #E6005A;
	--gfc-accent-dark: #C9004F;
	--gfc-ink: #2B303A;
	--gfc-text: #475569;
	--gfc-muted: #64748B;
	--gfc-line: #E2E8F0;
	--gfc-soft: #F8FAFC;
	--gfc-ok: #13795B;
	--gfc-error: #C2412D;
	--gfc-radius: 18px;
	--gfc-btn-radius: 999px;
	--gfc-field-line: #CBD5E1;
	--gfc-check-line: #94A3B8;
	--gfc-head-font: "PUMP Montserrat", "Family Montserrat", Montserrat, sans-serif;
	--gfc-tint: #FDE6EF; /* Akzentfarbe hell (Symbol-Flächen) */
}
@supports (color: color-mix(in srgb, red 10%, white)) {
	.gfc,
	.gfc-overlay,
	.gfc-sheet { --gfc-tint: color-mix(in srgb, var(--gfc-accent) 10%, #fff); }
}
.gfc {
	color: var(--gfc-text);
	font-family: inherit;
	font-size: 16px;
	line-height: 1.55;
	text-align: left;
	-webkit-font-smoothing: antialiased;
}
.gfc,
.gfc *,
.gfc *::before,
.gfc *::after,
.gfc-overlay,
.gfc-overlay *,
.gfc-overlay *::before,
.gfc-overlay *::after,
.gfc-sheet,
.gfc-sheet * { box-sizing: border-box; }
.gfc:not(#gfc-x) p { margin: 0 0 .75em; }
.gfc:not(#gfc-x) p:last-child { margin-bottom: 0; }
.gfc:not(#gfc-x) a { color: var(--gfc-accent); text-decoration: underline; text-underline-offset: 2px; }
.gfc strong { color: var(--gfc-ink); font-weight: 700; }

/* Kopf */
.gfc .gfc-head { margin: 0 0 22px; }
.gfc .gfc-top--center { text-align: center; }
.gfc .gfc-eyebrow {
	display: block;
	margin: 0 0 6px;
	color: var(--gfc-accent);
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: .12em;
	line-height: 1.3;
	text-transform: uppercase;
}
.gfc .gfc-title {
	margin: 0;
	padding: 0;
	color: var(--gfc-ink);
	font-family: var(--gfc-head-font);
	font-size: clamp(24px, 3vw, 30px);
	font-weight: 700;
	letter-spacing: -.01em;
	line-height: 1.2;
	text-transform: none;
}
.gfc .gfc-title:focus { outline: none; }
.gfc:not(#gfc-x) .gfc-sub { margin: 10px 0 0; color: var(--gfc-text); font-size: 16px; }
.gfc .gfc-muted { color: var(--gfc-muted); font-size: 14px; }
.gfc:not(#gfc-x) .gfc-note { margin: 16px 0 0; }
.gfc .gfc-loading {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 28px 0;
	color: var(--gfc-muted);
}
.gfc .gfc-loading::before {
	content: "";
	width: 22px;
	height: 22px;
	border: 3px solid var(--gfc-line);
	border-top-color: var(--gfc-accent);
	border-radius: 50%;
	animation: gfcSpin .8s linear infinite;
}
@keyframes gfcSpin { to { transform: rotate(360deg); } }

.gfc .gfc-box {
	margin: 0 0 18px;
	padding: 16px 18px;
	border: 1px solid var(--gfc-line);
	border-radius: 14px;
	background: var(--gfc-soft);
	color: var(--gfc-ink);
}
.gfc .gfc-box--error { border-color: var(--gfc-error); background: #fff; color: var(--gfc-error); }
.gfc:not(#gfc-x) .gfc-box--error a { color: var(--gfc-error); }
.gfc:not(#gfc-x) .gfc-box .gfc-btn { margin-top: 4px; }

/* Buttons */
.gfc:not(#gfc-x) .gfc-btn,
.gfc:not(#gfc-x) a.gfc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 52px;
	margin: 0;
	padding: 14px 28px;
	border: 2px solid var(--gfc-accent);
	border-radius: var(--gfc-btn-radius);
	background: var(--gfc-accent);
	box-shadow: none;
	color: #fff;
	cursor: pointer;
	font-family: inherit;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: .01em;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	text-transform: none;
	white-space: normal;
	transition: background-color .2s, border-color .2s, color .2s, transform .2s;
}
.gfc:not(#gfc-x) .gfc-btn:hover,
.gfc:not(#gfc-x) .gfc-btn:focus-visible { background: var(--gfc-accent-dark); border-color: var(--gfc-accent-dark); color: #fff; }
.gfc:not(#gfc-x) .gfc-btn:active { transform: translateY(1px); }
.gfc:not(#gfc-x) .gfc-btn[disabled] { opacity: .6; cursor: progress; }
.gfc:not(#gfc-x) .gfc-btn.gfc-btn--ghost { background: #fff; color: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-btn.gfc-btn--ghost:hover,
.gfc:not(#gfc-x) .gfc-btn.gfc-btn--ghost:focus-visible { background: var(--gfc-accent); border-color: var(--gfc-accent); color: #fff; }
.gfc:not(#gfc-x) .gfc-btn--strong { min-width: 260px; }
.gfc:not(#gfc-x) .gfc-link {
	display: inline;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	color: var(--gfc-accent);
	cursor: pointer;
	font: inherit;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 2px;
	text-transform: none;
	white-space: normal;
}
.gfc:not(#gfc-x) .gfc-link:hover,
.gfc:not(#gfc-x) .gfc-link:focus-visible { background: none; color: var(--gfc-accent-dark); }
.gfc .gfc-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 26px; }
.gfc .gfc-actions:has(> :only-child) { justify-content: flex-end; }
.gfc .gfc-actions--center,
.gfc .gfc-actions--center:has(> :only-child) { justify-content: center; }
.gfc :focus-visible { outline: 3px solid var(--gfc-accent); outline-offset: 2px; }

/* Probetraining: Termine (je Tag ein Kalenderblatt) */
.gfc .gfc-days { display: grid; gap: 14px; }
.gfc .gfc-day {
	display: grid;
	grid-template-columns: 58px 1fr;
	align-items: center;
	gap: 16px;
	padding: 0 0 14px;
	border-bottom: 1px solid var(--gfc-line);
}
.gfc .gfc-day:last-child { padding-bottom: 0; border-bottom: 0; }
.gfc .gfc-day__head { padding: 0; color: var(--gfc-text); font-size: 15px; }
.gfc .gfc-cal {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 58px;
	overflow: hidden;
	border: 1.5px solid var(--gfc-line);
	border-radius: 12px;
	background: #fff;
	line-height: 1;
	text-align: center;
}
.gfc .gfc-cal__wd {
	align-self: stretch;
	padding: 5px 0 4px;
	background: var(--gfc-accent);
	color: #fff;
	font-family: var(--gfc-ui-font, inherit);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.gfc .gfc-cal__d { padding: 7px 0 2px; color: var(--gfc-ink); font-family: var(--gfc-head-font); font-size: 21px; font-weight: 700; font-variant-numeric: tabular-nums; }
.gfc .gfc-cal__m { padding: 0 0 7px; color: var(--gfc-muted); font-size: 11px; font-weight: 600; }
.gfc .gfc-day__slots { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 8px; }
.gfc:not(#gfc-x) .gfc-slot {
	min-width: 76px;
	min-height: 44px;
	margin: 0;
	padding: 10px 14px;
	border: 1.5px solid var(--gfc-line);
	border-radius: 12px;
	background: #fff;
	box-shadow: none;
	color: var(--gfc-ink);
	cursor: pointer;
	font-family: inherit;
	font-size: 15px;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	line-height: 1.2;
	text-transform: none;
	white-space: nowrap;
	transition: border-color .15s, background-color .15s, color .15s;
}
.gfc:not(#gfc-x) .gfc-slot:hover,
.gfc:not(#gfc-x) .gfc-slot:focus-visible { border-color: var(--gfc-accent); background: var(--gfc-accent); color: #fff; }

/* Gewählter Termin / Tarif */
.gfc .gfc-pick {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 0 22px;
	padding: 14px 18px;
	border: 1.5px solid var(--gfc-accent);
	border-radius: 14px;
	background: #fff;
	color: var(--gfc-text);
	font-size: 15px;
	line-height: 1.45;
}
.gfc .gfc-pick > div { flex: 1; min-width: 0; }
.gfc .gfc-pick .gfc-eyebrow { margin-bottom: 2px; font-size: 11px; }
.gfc .gfc-pick__icon {
	display: grid;
	flex: 0 0 36px;
	place-items: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--gfc-accent);
	color: #fff;
	font-weight: 700;
}

/* Formular */
.gfc .gfc-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px 14px; }
.gfc .gfc-grid--spaced { margin-top: 20px; }
.gfc .gfc-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.gfc .gfc-field--full { grid-column: 1 / -1; }
.gfc .gfc-field--half,
.gfc .gfc-field--pair { grid-column: span 3; }
.gfc .gfc-field--third { grid-column: span 2; }
.gfc .gfc-field--twothird { grid-column: span 4; }
.gfc .gfc-hint:empty { display: none; }
.gfc .gfc-field label {
	margin: 0;
	padding: 0;
	color: var(--gfc-ink);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
}
.gfc .gfc-req { color: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-field input,
.gfc:not(#gfc-x) .gfc-field select,
.gfc:not(#gfc-x) .gfc-field textarea {
	display: block;
	width: 100%;
	max-width: none;
	min-height: 50px;
	margin: 0;
	padding: 12px 14px;
	border: 1.5px solid var(--gfc-field-line);
	border-radius: 12px;
	background: #fff;
	box-shadow: none;
	color: var(--gfc-ink);
	font-family: inherit;
	font-size: 16px;
	line-height: 1.3;
	transition: border-color .15s, box-shadow .15s;
	-webkit-appearance: none;
	appearance: none;
}
.gfc:not(#gfc-x) .gfc-field select {
	padding-right: 40px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2364748B' stroke-width='2'/%3E%3C/svg%3E");
	background-position: right 16px center;
	background-repeat: no-repeat;
}
.gfc:not(#gfc-x) .gfc-field textarea { min-height: 90px; resize: vertical; }
.gfc:not(#gfc-x) .gfc-field input:focus,
.gfc:not(#gfc-x) .gfc-field select:focus,
.gfc:not(#gfc-x) .gfc-field textarea:focus { border-color: var(--gfc-accent); box-shadow: 0 0 0 3px rgba(230, 0, 90, .14); outline: 0; }
.gfc:not(#gfc-x) .is-invalid input,
.gfc:not(#gfc-x) .is-invalid select,
.gfc:not(#gfc-x) .is-invalid textarea { border-color: var(--gfc-error); }
.gfc .gfc-hint { color: var(--gfc-muted); font-size: 13px; line-height: 1.4; }
.gfc .gfc-ok { color: var(--gfc-ok); font-weight: 600; }
.gfc .gfc-err { display: none; color: var(--gfc-error); font-size: 13px; font-weight: 600; line-height: 1.4; }
.gfc .is-invalid > .gfc-err { display: block; }

.gfc .gfc-check {
	display: grid;
	grid-template-columns: 22px 1fr;
	align-items: start;
	gap: 4px 12px;
	margin: 18px 0 0;
	color: var(--gfc-text);
	font-size: 14.5px;
	line-height: 1.5;
}
.gfc:not(#gfc-x) .gfc-check input[type=checkbox] {
	position: relative;
	width: 22px;
	height: 22px;
	min-height: 0;
	margin: 1px 0 0;
	padding: 0;
	border: 1.5px solid var(--gfc-check-line);
	border-radius: 6px;
	background: #fff;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}
.gfc:not(#gfc-x) .gfc-check input[type=checkbox]:checked { border-color: var(--gfc-accent); background: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-check input[type=checkbox]:checked::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 7px;
	width: 5px;
	height: 10px;
	border: solid #fff;
	border-width: 0 2.5px 2.5px 0;
	transform: rotate(45deg);
}
.gfc:not(#gfc-x) .is-invalid input[type=checkbox] { border-color: var(--gfc-error); }
.gfc:not(#gfc-x) .gfc-check label { display: block; margin: 0; color: inherit; font-size: inherit; font-weight: 400; line-height: 1.5; vertical-align: baseline; cursor: pointer; }
.gfc .gfc-check .gfc-err { grid-column: 2; }

.gfc:not(#gfc-x) .gfc-demo {
	margin: 16px 0 0;
	padding: 10px 14px;
	border: 1px dashed #94A3B8;
	border-radius: 10px;
	color: var(--gfc-muted);
	font-size: 13.5px;
	text-align: center;
}

/* Erfolg */
.gfc .gfc-done { padding: 12px 0 6px; text-align: center; }
.gfc:not(#gfc-x) .gfc-done .gfc-sub { max-width: 520px; margin-right: auto; margin-left: auto; }
.gfc .gfc-done__icon {
	position: relative;
	display: grid;
	place-items: center;
	width: 68px;
	height: 68px;
	margin: 0 auto 18px;
	border-radius: 50%;
	background: var(--gfc-accent);
	color: #fff;
	font-size: 30px;
	font-weight: 700;
	animation: gfcPop .45s cubic-bezier(.2, 1.4, .4, 1) both;
}
/* Haken zeichnet sich, ein Ring läuft einmal nach außen */
.gfc:not(#gfc-x) .gfc-done__icon svg { display: block; width: 36px; height: 36px; max-width: none; fill: none; stroke: currentColor; stroke-width: 4.5; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
.gfc .gfc-done__check { stroke-dasharray: 34; stroke-dashoffset: 34; animation: gfcDraw .5s .35s cubic-bezier(.6, 0, .3, 1) forwards; }
.gfc .gfc-done__icon::after {
	content: "";
	position: absolute;
	inset: -10px;
	border: 2px solid var(--gfc-done-ring, var(--gfc-accent));
	border-radius: 50%;
	opacity: 0;
	animation: gfcRing 1.1s .3s ease-out;
	pointer-events: none;
}
@keyframes gfcPop { from { transform: scale(.4); opacity: 0; } }
@keyframes gfcDraw { to { stroke-dashoffset: 0; } }
@keyframes gfcRing { from { opacity: .5; transform: scale(.78); } to { opacity: 0; transform: scale(1.28); } }

/* Eckdaten als Kacheln (Erfolg) */
.gfc .gfc-facts {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	max-width: 640px;
	margin: 22px auto 0;
	padding: 0;
	list-style: none;
	text-align: left;
}
.gfc .gfc-facts li {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--gfc-line);
	border-radius: 14px;
	background: #fff;
}
.gfc .gfc-facts li::before { content: none; }
.gfc .gfc-facts li:last-child:nth-child(odd) { grid-column: 1 / -1; }
.gfc .gfc-facts__text { display: block; min-width: 0; }
.gfc .gfc-facts small { display: block; margin: 0 0 2px; color: var(--gfc-muted); font-family: var(--gfc-ui-font, inherit); font-size: 11.5px; font-weight: 600; letter-spacing: .08em; line-height: 1.3; text-transform: uppercase; }
.gfc .gfc-facts strong { display: block; color: var(--gfc-ink); font-size: 14.5px; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.gfc:not(#gfc-x) .gfc-facts a { color: var(--gfc-ink); text-decoration-color: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-facts + .gfc-sub { margin-top: 20px; }

/* Vertrag: Schritte – Symbol je Schritt, Haken für erledigte, Linie dazwischen */
.gfc .gfc-steps {
	display: flex;
	gap: 0;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
	counter-reset: none;
}
.gfc .gfc-steps li {
	position: relative;
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	min-width: 0;
	margin: 0;
	padding: 0;
	color: var(--gfc-muted);
	font-family: var(--gfc-ui-font, inherit);
	font-size: 12.5px;
	font-weight: 600;
	line-height: 1.25;
	text-align: center;
}
.gfc .gfc-steps li::before { content: none; }
.gfc .gfc-steps li:not(:last-child)::after {
	content: "";
	position: absolute;
	top: 20px;
	right: calc(-50% + 27px);
	left: calc(50% + 27px);
	height: 2px;
	border-radius: 2px;
	background: var(--gfc-line);
}
.gfc .gfc-steps li.done:not(:last-child)::after { background: var(--gfc-accent); }
.gfc .gfc-steps__dot {
	position: relative;
	z-index: 1;
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border: 2px solid var(--gfc-line);
	border-radius: 50%;
	background: #fff;
	color: var(--gfc-muted);
	transition: background-color .25s, border-color .25s, color .25s, box-shadow .25s;
}
.gfc:not(#gfc-x) .gfc-steps__dot .gfc-ico { width: 19px; height: 19px; }
.gfc .gfc-steps li.done .gfc-steps__dot,
.gfc .gfc-steps li.now .gfc-steps__dot { border-color: var(--gfc-accent); background: var(--gfc-accent); color: #fff; }
.gfc .gfc-steps li.now .gfc-steps__dot { box-shadow: 0 0 0 5px var(--gfc-tint); }
.gfc .gfc-steps li.now { color: var(--gfc-ink); }
.gfc .gfc-steps__label { display: block; max-width: 100%; }

/* Vertrag: Tarife */
.gfc .gfc-terms { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.gfc:not(#gfc-x) .gfc-term {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	height: auto;
	min-height: 0;
	margin: 0;
	padding: 20px 20px 18px;
	border: 1.5px solid var(--gfc-line);
	border-radius: var(--gfc-radius);
	background: #fff;
	box-shadow: none;
	color: var(--gfc-text);
	cursor: pointer;
	font-family: inherit;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.45;
	text-align: left;
	text-transform: none;
	white-space: normal;
	transition: border-color .15s, box-shadow .15s, transform .15s;
}
.gfc:not(#gfc-x) .gfc-term:hover,
.gfc:not(#gfc-x) .gfc-term:focus-visible { border-color: var(--gfc-accent); background: #fff; box-shadow: 0 10px 28px rgba(31, 36, 48, .08); color: var(--gfc-text); transform: translateY(-2px); }
.gfc:not(#gfc-x) .gfc-term.is-selected { border-color: var(--gfc-accent); box-shadow: 0 0 0 1.5px var(--gfc-accent); }
.gfc .gfc-term__name { color: var(--gfc-ink); font-family: var(--gfc-head-font); font-size: 17px; font-weight: 700; }
.gfc .gfc-term__offer { color: var(--gfc-muted); font-size: 13px; }
.gfc .gfc-term__price { margin-top: 8px; font-family: var(--gfc-head-font); color: var(--gfc-accent); font-size: 32px; font-weight: 800; letter-spacing: -.02em; line-height: 1.05; }
.gfc .gfc-term__freq { color: var(--gfc-ink); font-size: 14px; font-weight: 600; }
.gfc .gfc-term__facts { flex: 1; margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--gfc-line); list-style: none; }
.gfc .gfc-term__facts li { position: relative; margin: 0 0 6px; padding: 0 0 0 26px; font-size: 13.5px; line-height: 1.4; }
.gfc .gfc-term__facts li::before { content: none; }
.gfc:not(#gfc-x) .gfc-term__facts .gfc-ico { position: absolute; top: 0; left: 0; width: 17px; height: 17px; color: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-term__cta .gfc-ico,
.gfc:not(#gfc-x) .gfc-offer__cta .gfc-ico { width: 15px; height: 15px; margin: -2px 0 0 7px; transition: transform .2s; }
.gfc:not(#gfc-x) .gfc-term__cta .gfc-ico--lead { margin: -2px 7px 0 0; }
.gfc:not(#gfc-x) .gfc-term:hover .gfc-term__cta .gfc-ico:not(.gfc-ico--lead),
.gfc:not(#gfc-x) .gfc-offer:hover .gfc-offer__cta .gfc-ico { transform: translateX(3px); }
.gfc:not(#gfc-x) .gfc-term__badge .gfc-ico { width: 13px; height: 13px; margin: -2px 6px 0 0; }
.gfc .gfc-term__cta {
	align-self: stretch;
	margin-top: 14px;
	padding: 11px 16px;
	border-radius: var(--gfc-btn-radius);
	background: var(--gfc-accent);
	color: #fff;
	font-size: 15px;
	font-weight: 700;
	text-align: center;
}
.gfc .gfc-terms--badge { padding-top: 14px; }
.gfc .gfc-term { position: relative; }
.gfc:not(#gfc-x) .gfc-term.gfc-term--best { border-color: var(--gfc-accent); }
.gfc .gfc-term__badge {
	position: absolute;
	top: -13px;
	left: 50%;
	padding: 7px 14px;
	border-radius: 20px;
	background: var(--gfc-accent);
	color: #fff;
	font-family: var(--gfc-ui-font, inherit);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .08em;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
	transform: translateX(-50%);
}
.gfc-overlay .gfc-dialog.gfc-dialog--wide { max-width: 1120px; }
.gfc:not(#gfc-x) .gfc-footnote { margin: 18px 0 0; color: var(--gfc-muted); font-size: 13px; line-height: 1.5; }

/* Vertrag: SEPA, Übersicht, Texte */
.gfc .gfc-mandate {
	margin: 20px 0 0;
	padding: 16px 18px;
	border-radius: 14px;
	background: var(--gfc-soft);
	color: var(--gfc-text);
	font-size: 13.5px;
	line-height: 1.55;
}
.gfc .gfc-mandate strong { display: block; margin-bottom: 6px; font-size: 14px; }
.gfc .gfc-mandate .gfc-mandate__head { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; }
.gfc .gfc-mandate .gfc-mandate__head strong { display: inline; margin: 0; font-size: 14.5px; }
.gfc .gfc-mandate .gfc-chip { width: 32px; height: 32px; background: #fff; }
.gfc .gfc-mandate__text { max-height: 160px; overflow: auto; }

/* Übersicht: zwei Karten (Tarif, Angaben), je Zeile ein Symbol */
.gfc .gfc-review { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 16px; margin: 0 0 6px; }
.gfc .gfc-review__card { min-width: 0; margin: 0; padding: 16px 18px 4px; border: 1px solid var(--gfc-line); border-radius: 16px; background: #fff; }
.gfc:not(#gfc-x) .gfc-review__head {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	padding: 0 0 12px;
	border-bottom: 1px solid var(--gfc-line);
	color: var(--gfc-ink);
	font-family: var(--gfc-ui-font, var(--gfc-head-font));
	font-size: 15.5px;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 1.3;
	text-transform: none;
}
.gfc .gfc-review__head .gfc-thumb,
.gfc .gfc-review__head .gfc-chip { width: 40px; height: 40px; }
.gfc .gfc-review__list { margin: 0; padding: 0; }
.gfc .gfc-review__list > div { padding: 11px 0; border-bottom: 1px solid var(--gfc-line); }
.gfc .gfc-review__list > div:last-child { border-bottom: 0; }
.gfc .gfc-review__list dt { display: flex; align-items: center; gap: 7px; margin: 0 0 3px; color: var(--gfc-muted); font-family: var(--gfc-ui-font, inherit); font-size: 11.5px; font-weight: 600; letter-spacing: .08em; line-height: 1.3; text-transform: uppercase; }
.gfc:not(#gfc-x) .gfc-review__list dt .gfc-ico { width: 15px; height: 15px; color: var(--gfc-accent); }
.gfc .gfc-review__list dd { margin: 0; padding: 0 0 0 22px; color: var(--gfc-ink); font-size: 14.5px; line-height: 1.45; overflow-wrap: anywhere; }
.gfc .gfc-block { margin: 14px 0 0; border: 1px solid var(--gfc-line); border-radius: 12px; }
.gfc .gfc-block summary { padding: 12px 16px; color: var(--gfc-ink); cursor: pointer; font-weight: 600; }
.gfc:not(#gfc-x) .gfc-block > p { margin: 0; padding: 0 16px 12px; font-size: 13.5px; }

/* Overlay */
html.gfc-lock,
html.gfc-lock body { overflow: hidden; }
.gfc-overlay {
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 4vh 16px;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	background: rgba(15, 18, 26, .62);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	animation: gfcFade .2s ease both;
}
@keyframes gfcFade { from { opacity: 0; } }
.gfc-overlay .gfc-dialog {
	position: relative;
	width: 100%;
	max-width: 780px;
	margin: auto 0;
	padding: 40px 40px 34px;
	border-radius: 26px;
	background: #fff;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .28);
	animation: gfcRise .28s cubic-bezier(.2, .9, .3, 1) both;
}
@keyframes gfcRise { from { transform: translateY(18px); opacity: 0; } }
.gfc-overlay .gfc-close,
.gfc-sheet .gfc-close {
	position: absolute;
	top: 14px;
	right: 14px;
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #F1F5F9;
	box-shadow: none;
	color: #2B303A;
	cursor: pointer;
	font-family: Arial, sans-serif;
	font-size: 26px;
	font-weight: 400;
	line-height: 1;
	transition: background-color .15s, color .15s;
}
.gfc-overlay .gfc-close:hover,
.gfc-overlay .gfc-close:focus-visible,
.gfc-sheet .gfc-close:hover,
.gfc-sheet .gfc-close:focus-visible { background: var(--gfc-accent); color: #fff; }
.gfc-sheet {
	position: fixed;
	inset: 0;
	z-index: 2147483001;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background: rgba(15, 18, 26, .5);
	animation: gfcFade .15s ease both;
}
.gfc-sheet__inner {
	position: relative;
	width: 100%;
	max-width: 720px;
	max-height: 86vh;
	padding: 34px 32px 28px;
	overflow: auto;
	border-radius: 22px;
	background: #fff;
	color: #475569;
	font-size: 14.5px;
	line-height: 1.6;
}
.gfc-sheet__inner .gfc-title { margin: 0 0 14px; color: var(--gfc-ink); font-family: var(--gfc-head-font); font-size: 24px; font-weight: 700; line-height: 1.2; }
.gfc-sheet:not(#gfc-x) .gfc-sheet__text p { margin: 0 0 .8em; padding: 0; color: inherit; font-size: inherit; line-height: inherit; }
.gfc-sheet:not(#gfc-x) .gfc-sheet__text p:last-child { margin-bottom: 0; }

/* Eingebettet (Shortcode): bei genug Breite Termine zweispaltig (Klasse setzt das Skript) */
.gfc.gfc--wide .gfc-days { grid-template-columns: 1fr 1fr; column-gap: 44px; }
.gfc.gfc--wide .gfc-day:nth-last-child(2):nth-child(odd) { padding-bottom: 0; border-bottom: 0; }
.gfc.gfc--inline {
	padding: 34px 34px 30px;
	border: 1px solid var(--gfc-line);
	border-radius: 26px;
	background: #fff;
	box-shadow: 0 18px 50px rgba(31, 36, 48, .07);
}

@media (max-width: 767px) {
	.gfc-overlay { display: block; padding: 0; }
	.gfc-overlay .gfc-dialog { min-height: 100%; margin: 0; padding: 60px 18px 28px; border-radius: 0; }
	.gfc-overlay .gfc-close { top: 10px; right: 10px; }
	.gfc.gfc--inline { padding: 24px 18px 22px; border-radius: 20px; }
	.gfc .gfc-day { grid-template-columns: 52px 1fr; gap: 12px; }
	.gfc .gfc-cal { width: 52px; }
	.gfc:not(#gfc-x) .gfc-slot { flex: 0 0 calc((100% - 16px) / 3); min-width: 0; padding: 10px 6px; }
	.gfc .gfc-field--half { grid-column: 1 / -1; }
	.gfc .gfc-steps li { font-size: 11px; }
	.gfc .gfc-steps__dot { width: 36px; height: 36px; }
	.gfc:not(#gfc-x) .gfc-steps__dot .gfc-ico { width: 17px; height: 17px; }
	.gfc .gfc-steps li:not(:last-child)::after { top: 17px; right: calc(-50% + 23px); left: calc(50% + 23px); }
	.gfc .gfc-review,
	.gfc .gfc-facts { grid-template-columns: 1fr; }
	.gfc .gfc-actions { flex-direction: column-reverse; align-items: stretch; }
	.gfc:not(#gfc-x) .gfc-btn,
	.gfc:not(#gfc-x) .gfc-btn--strong { width: 100%; min-width: 0; }
	.gfc-sheet__inner { padding: 30px 20px 22px; }
}
@media (prefers-reduced-motion: reduce) {
	.gfc *,
	.gfc *::after,
	.gfc-overlay,
	.gfc-overlay .gfc-dialog { animation: none !important; transition: none !important; }
	.gfc .gfc-done__check { stroke-dashoffset: 0; }
}

/* ------------------------------------------------------------------
 * Tarif-Übersicht (Shortcode [gymfamily_tarife] bzw. Auswahl im Fenster)
 * ---------------------------------------------------------------- */
.gfc .gfc-offers { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 18px; padding-top: 4px; }
.gfc .gfc-offers--compact { grid-template-columns: repeat(auto-fit, minmax(270px, 460px)); justify-content: center; }
/* Auswahl im Fenster: die 4 Mitgliedschaften in einer Reihe (auf schmaleren Fenstern 2 × 2 bzw. untereinander) */
.gfc .gfc-offers--pick { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.gfc:not(#gfc-x) .gfc-offer {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	height: auto;
	min-height: 0;
	margin: 0;
	padding: 28px 22px 22px;
	border: 1px solid var(--gfc-line);
	border-radius: var(--gfc-radius);
	background: #fff;
	box-shadow: 0 14px 34px rgba(18, 20, 24, .07);
	color: var(--gfc-text);
	font-family: inherit;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.45;
	text-align: center;
	text-transform: none;
	white-space: normal;
	transition: border-color .2s, box-shadow .2s, transform .2s;
}
.gfc:not(#gfc-x) button.gfc-offer { cursor: pointer; }
.gfc:not(#gfc-x) .gfc-offer:hover,
.gfc:not(#gfc-x) .gfc-offer:focus-within,
.gfc:not(#gfc-x) button.gfc-offer:focus-visible { border-color: var(--gfc-accent); background: #fff; box-shadow: 0 20px 44px rgba(18, 20, 24, .12); color: var(--gfc-text); transform: translateY(-3px); }
/* Kopf der Karte: Foto des Tarifs (falls eingestellt) mit Symbol darauf, sonst nur das Symbol */
.gfc:not(#gfc-x) .gfc-offer.gfc-offer--img { padding-top: 0; }
.gfc .gfc-offer__media {
	position: relative;
	display: block;
	align-self: stretch;
	height: 132px;
	margin: 0 -22px;
	overflow: hidden;
	border-radius: calc(var(--gfc-radius) - 1px) calc(var(--gfc-radius) - 1px) 0 0;
	/* Fläche in der Akzentfarbe, solange (oder falls) das Foto nicht lädt */
	background: radial-gradient(130% 150% at 0 0, rgba(255, 255, 255, .28), rgba(255, 255, 255, 0) 60%), linear-gradient(135deg, var(--gfc-accent), var(--gfc-accent-dark));
}
.gfc .gfc-offer--hi .gfc-offer__media { border-radius: calc(var(--gfc-radius) - 2px) calc(var(--gfc-radius) - 2px) 0 0; }
.gfc .gfc-offer__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 55%, rgba(0, 0, 0, .14)); pointer-events: none; }
.gfc:not(#gfc-x) .gfc-offer__media img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	object-fit: cover;
	transition: transform .6s cubic-bezier(.2, .8, .2, 1);
}
.gfc:not(#gfc-x) .gfc-offer:hover .gfc-offer__media img { transform: scale(1.05); }
.gfc .gfc-offer__icon {
	position: relative;
	z-index: 1;
	display: grid;
	flex: none;
	place-items: center;
	width: 56px;
	height: 56px;
	margin: 0 0 12px;
	border-radius: 50%;
	background: var(--gfc-tint);
	color: var(--gfc-accent);
	transition: transform .25s;
}
.gfc:not(#gfc-x) .gfc-offer__icon .gfc-ico { width: 26px; height: 26px; }
.gfc .gfc-offer__media + .gfc-offer__icon { margin-top: -28px; background: #fff; box-shadow: 0 8px 20px rgba(18, 20, 24, .16); }
.gfc:not(#gfc-x) .gfc-offer:hover .gfc-offer__icon { transform: translateY(-2px); }
.gfc:not(#gfc-x) .gfc-offer__name {
	display: block;
	margin: 0;
	padding: 0;
	color: var(--gfc-ink);
	font-family: var(--gfc-ui-font, var(--gfc-head-font));
	font-size: 16px;
	font-weight: 600;
	letter-spacing: .08em;
	line-height: 1.3;
	text-transform: uppercase;
}
.gfc .gfc-offer__price { margin-top: 10px; color: var(--gfc-ink); font-family: var(--gfc-head-font); font-size: 36px; font-weight: 800; letter-spacing: -.01em; line-height: 1.05; }
.gfc .gfc-offer__price small { color: var(--gfc-muted); font-size: 15px; font-weight: 600; letter-spacing: 0; }
.gfc .gfc-offer__freq { color: var(--gfc-ink); font-size: 14px; font-weight: 600; }
.gfc .gfc-offer__facts { align-self: stretch; flex: 1; margin: 14px 0 0; padding: 14px 0 0; border-top: 1px solid var(--gfc-line); list-style: none; text-align: left; }
.gfc .gfc-offer__facts li { position: relative; margin: 0 0 7px; padding: 0 0 0 26px; font-size: 14px; line-height: 1.45; }
.gfc .gfc-offer__facts li::before,
.gfc .gfc-offerhead__facts li::before {
	content: "";
	position: absolute;
	top: 1px;
	left: 0;
	width: 17px;
	height: 17px;
	border-radius: 50%;
	background: var(--gfc-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1.5 5.2l3 3L10.5 1.8' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 9px no-repeat;
}
.gfc .gfc-offer__terms { margin-top: 12px; color: var(--gfc-muted); font-size: 13px; }
.gfc.gfc--fallback { padding: 6px 0; text-align: center; }
.gfc .gfc-offer__fees { margin-top: 4px; color: var(--gfc-muted); font-size: 12.5px; line-height: 1.4; }
.gfc:not(#gfc-x) .gfc-offer__cta {
	display: block;
	align-self: stretch;
	margin-top: 16px;
	padding: 12px 16px;
	border: 2px solid var(--gfc-accent);
	border-radius: var(--gfc-btn-radius);
	background: transparent;
	color: var(--gfc-accent);
	font-family: var(--gfc-ui-font, inherit);
	font-size: 13.5px;
	font-weight: 600;
	letter-spacing: .05em;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .2s, color .2s;
}
.gfc:not(#gfc-x) .gfc-offer:hover .gfc-offer__cta,
.gfc:not(#gfc-x) .gfc-offer__cta:focus-visible { background: var(--gfc-accent); color: #fff; }
.gfc:not(#gfc-x) .gfc-offer.gfc-offer--hi { border: 2px solid var(--gfc-accent); }
.gfc .gfc-offerhead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 22px; margin: 0 0 18px; }
.gfc .gfc-offerhead__facts { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0; padding: 0; color: var(--gfc-text); font-size: 13.5px; list-style: none; }
.gfc .gfc-offerhead__facts li { position: relative; margin: 0; padding: 0 0 0 23px; }

/* ------------------------------------------------------------------
 * Markendesigns (Einstellung „Design“): „pump“ wie pump.jetzt (dunkel), „family“ wie family.jetzt (Lila).
 * Gemeinsame Regeln unter .gfc--brand, die Farben je Marke über Variablen.
 * ---------------------------------------------------------------- */
.gfc--brand {
	--gfc-ink: #2B303A;
	--gfc-text: #4A4F57;
	--gfc-muted: #7C8087;
	--gfc-line: #E6E6E9;
	--gfc-soft: #F6F6F7;
	--gfc-field-line: #D5D6D9;
	--gfc-check-line: #A2A5AA;
	--gfc-radius: 16px;
	--gfc-btn-radius: 40px;
}
.gfc--pump {
	--gfc-ui-font: "PUMP Poppins", "Family Poppins", Poppins, sans-serif;
	--gfc-band: #2B303A;
	--gfc-band-accent: var(--gfc-accent);
	--gfc-band-line: rgba(255, 255, 255, .16);
	--gfc-band-hover: var(--gfc-accent);
	--gfc-best-bg: #343A41;
	--gfc-best-price: var(--gfc-accent);
	--gfc-best-cta-bg: var(--gfc-accent);
	--gfc-best-cta-color: #fff;
	--gfc-best-badge-bg: var(--gfc-accent);
	--gfc-best-badge-color: #fff;
	--gfc-best-check: var(--gfc-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1.5 5.2l3 3L10.5 1.8' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 9px no-repeat;
	/* Symbole: in der dunklen Kopfzeile pink, auf der hervorgehobenen Karte pink auf Anthrazit */
	--gfc-band-chip-bg: var(--gfc-accent);
	--gfc-band-chip-color: #fff;
	--gfc-band-icon: var(--gfc-accent);
	--gfc-band-glow: rgba(230, 0, 90, .32);
	--gfc-best-icon: var(--gfc-accent);
	--gfc-best-chip-bg: rgba(230, 0, 90, .16);
	--gfc-best-chip-color: var(--gfc-accent);
}
.gfc--family {
	--gfc-ui-font: "Family Poppins", Poppins, sans-serif;
	--gfc-head-font: "Family Montserrat", Montserrat, sans-serif;
	--gfc-radius: 22px;
	--gfc-band: var(--gfc-accent);
	--gfc-band-accent: #fff;
	--gfc-band-line: rgba(255, 255, 255, .32);
	--gfc-band-hover: rgba(255, 255, 255, .78);
	--gfc-best-bg: var(--gfc-accent);
	--gfc-best-price: #fff;
	--gfc-best-cta-bg: #fff;
	--gfc-best-cta-color: var(--gfc-accent);
	--gfc-best-badge-bg: #fff;
	--gfc-best-badge-color: var(--gfc-accent);
	--gfc-best-check: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1.5 5.2l3 3L10.5 1.8' fill='none' stroke='%23E6005A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 9px no-repeat;
	/* Symbole: in der Lila-Kopfzeile weiß, auf der hervorgehobenen Karte weiß */
	--gfc-band-chip-bg: #fff;
	--gfc-band-chip-color: var(--gfc-accent);
	--gfc-band-icon: #fff;
	--gfc-band-glow: rgba(255, 255, 255, .26);
	--gfc-best-icon: #fff;
	--gfc-best-chip-bg: rgba(255, 255, 255, .18);
	--gfc-best-chip-color: #fff;
}
.gfc--brand .gfc-eyebrow { font-family: var(--gfc-ui-font); font-size: 12.5px; font-weight: 600; letter-spacing: .16em; }
.gfc--pump .gfc-eyebrow { font-family: var(--gfc-head-font); }
.gfc--brand .gfc-title { font-weight: 600; letter-spacing: .02em; }

/* Kopfzeile in Markenfarbe (pump: Anthrazit, family: Lila) */
.gfc--brand .gfc-top {
	margin: -40px -40px 28px;
	padding: 34px 40px 26px;
	border-radius: 26px 26px 0 0;
	background: var(--gfc-band);
	color: rgba(255, 255, 255, .78);
}
.gfc--brand.gfc--inline .gfc-top { margin: -34px -34px 26px; padding: 30px 34px 24px; }
.gfc--brand .gfc-top .gfc-head { margin-bottom: 0; }
.gfc--brand .gfc-top .gfc-eyebrow { color: var(--gfc-band-accent); }
.gfc--brand .gfc-top .gfc-title { color: #fff; }
.gfc.gfc--brand:not(#gfc-x) .gfc-top .gfc-sub { color: rgba(255, 255, 255, .78); }
.gfc.gfc--brand:not(#gfc-x) .gfc-top a { color: #fff; }
.gfc--brand .gfc-top .gfc-steps { margin: 24px 0 0; }
.gfc--brand .gfc-top .gfc-steps li { color: rgba(255, 255, 255, .6); }
.gfc--brand .gfc-top .gfc-steps li.now { color: #fff; }
.gfc--brand .gfc-top .gfc-steps li:not(:last-child)::after { background: var(--gfc-band-line); }
.gfc--brand .gfc-top .gfc-steps li.done:not(:last-child)::after { background: var(--gfc-band-accent); }
.gfc--brand .gfc-top .gfc-steps__dot { border-color: var(--gfc-band-line); background: transparent; color: rgba(255, 255, 255, .62); }
.gfc--brand .gfc-top .gfc-steps li.done .gfc-steps__dot,
.gfc--brand .gfc-top .gfc-steps li.now .gfc-steps__dot { border-color: var(--gfc-band-chip-bg); background: var(--gfc-band-chip-bg); color: var(--gfc-band-chip-color); }
.gfc--brand .gfc-top .gfc-steps li.now .gfc-steps__dot { box-shadow: 0 0 0 5px var(--gfc-band-glow); }
/* Symbole und Tarif-Bild in der Kopfzeile */
.gfc--brand .gfc-top .gfc-thumb { background: var(--gfc-band-chip-bg); color: var(--gfc-band-chip-color); box-shadow: 0 0 0 3px rgba(255, 255, 255, .16); }
.gfc--brand .gfc-top .gfc-perks li { background: rgba(255, 255, 255, .1); color: #fff; }
.gfc.gfc--brand:not(#gfc-x) .gfc-top .gfc-perks .gfc-ico { color: var(--gfc-band-icon); }
.gfc--brand { --gfc-done-ring: rgba(255, 255, 255, .7); }
.gfc--brand .gfc-top .gfc-pick { margin: 20px 0 0; border: 1px solid rgba(255, 255, 255, .2); background: rgba(255, 255, 255, .07); color: rgba(255, 255, 255, .78); }
.gfc--brand .gfc-top .gfc-pick .gfc-eyebrow { color: var(--gfc-band-accent); }
.gfc--brand .gfc-top .gfc-pick strong { color: #fff; }
.gfc--brand .gfc-top .gfc-pick .gfc-muted { color: rgba(255, 255, 255, .6); }
.gfc--brand .gfc-top .gfc-pick__icon { background: #fff; color: var(--gfc-accent); }
.gfc--pump .gfc-top .gfc-pick__icon { background: var(--gfc-accent); color: #fff; }
.gfc.gfc--brand:not(#gfc-x) .gfc-top .gfc-link { color: #fff; }
.gfc.gfc--brand:not(#gfc-x) .gfc-top .gfc-link:hover,
.gfc.gfc--brand:not(#gfc-x) .gfc-top .gfc-link:focus-visible { color: var(--gfc-band-hover); }
.gfc--brand .gfc-top--center { padding-top: 42px; padding-bottom: 34px; }
.gfc--brand .gfc-done { padding-top: 0; }
.gfc--brand .gfc-done__icon { box-shadow: 0 12px 30px rgba(0, 0, 0, .22); }
.gfc--family .gfc-done__icon { background: #fff; color: var(--gfc-accent); }
.gfc-overlay.gfc--brand .gfc-dialog:has(.gfc-top) > .gfc-close { background: rgba(255, 255, 255, .12); color: #fff; }
.gfc-overlay.gfc--family .gfc-dialog:has(.gfc-top) > .gfc-close { background: rgba(255, 255, 255, .18); }
.gfc-overlay.gfc--pump .gfc-dialog:has(.gfc-top) > .gfc-close:hover,
.gfc-overlay.gfc--pump .gfc-dialog:has(.gfc-top) > .gfc-close:focus-visible { background: var(--gfc-accent); color: #fff; }
.gfc-overlay.gfc--family .gfc-dialog:has(.gfc-top) > .gfc-close:hover,
.gfc-overlay.gfc--family .gfc-dialog:has(.gfc-top) > .gfc-close:focus-visible { background: #fff; color: var(--gfc-accent); }

/* Buttons und Termine als Pillen in Großbuchstaben */
.gfc.gfc--brand:not(#gfc-x) .gfc-btn { min-height: 50px; padding: 15px 30px; font-family: var(--gfc-ui-font); font-size: 14px; font-weight: 500; letter-spacing: .05em; text-transform: uppercase; }
.gfc.gfc--brand:not(#gfc-x) .gfc-btn.gfc-btn--ghost { background: transparent; }
.gfc.gfc--brand:not(#gfc-x) .gfc-btn.gfc-btn--ghost:hover,
.gfc.gfc--brand:not(#gfc-x) .gfc-btn.gfc-btn--ghost:focus-visible { background: var(--gfc-accent); color: #fff; }
.gfc.gfc--brand:not(#gfc-x) .gfc-slot { min-width: 84px; border-radius: 40px; }
.gfc.gfc--brand:not(#gfc-x) .gfc-field input,
.gfc.gfc--brand:not(#gfc-x) .gfc-field select,
.gfc.gfc--brand:not(#gfc-x) .gfc-field textarea { border-radius: 10px; }
.gfc.gfc--brand:not(#gfc-x) .gfc-offer__cta { font-weight: 500; }

/* Tarifkarten wie auf den Landingpages */
.gfc--brand .gfc-terms { gap: 18px; }
.gfc.gfc--brand:not(#gfc-x) .gfc-term {
	align-items: center;
	padding: 34px 22px 22px;
	border: 1px solid var(--gfc-line);
	border-radius: var(--gfc-radius);
	box-shadow: 0 14px 34px rgba(18, 20, 24, .08);
	text-align: center;
}
.gfc.gfc--brand:not(#gfc-x) .gfc-term:hover,
.gfc.gfc--brand:not(#gfc-x) .gfc-term:focus-visible { border-color: var(--gfc-accent); box-shadow: 0 20px 44px rgba(18, 20, 24, .12); }
.gfc.gfc--brand:not(#gfc-x) .gfc-term.is-selected { border-color: var(--gfc-accent); box-shadow: 0 0 0 1px var(--gfc-accent), 0 14px 34px rgba(18, 20, 24, .08); }
.gfc--brand .gfc-term__name { font-family: var(--gfc-ui-font); font-size: 16px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; }
.gfc--brand .gfc-term__price { margin-top: 10px; color: var(--gfc-ink); font-size: 38px; font-weight: 800; }
.gfc--brand .gfc-term__freq { font-size: 14px; font-weight: 600; }
.gfc--brand .gfc-term__facts { align-self: stretch; margin-top: 16px; padding-top: 16px; text-align: left; }
.gfc--brand .gfc-term__facts li { margin-bottom: 8px; padding-left: 28px; color: var(--gfc-text); font-size: 14px; }
.gfc.gfc--brand:not(#gfc-x) .gfc-term__facts .gfc-ico { top: 0; width: 18px; height: 18px; }
.gfc--brand .gfc-term__cta {
	margin-top: 18px;
	padding: 12px 16px;
	border: 2px solid var(--gfc-accent);
	background: transparent;
	color: var(--gfc-accent);
	font-family: var(--gfc-ui-font);
	font-size: 13.5px;
	font-weight: 500;
	letter-spacing: .05em;
	text-transform: uppercase;
	transition: background-color .2s, color .2s;
}
.gfc.gfc--brand:not(#gfc-x) .gfc-term:hover .gfc-term__cta,
.gfc--brand .gfc-term.is-selected .gfc-term__cta { background: var(--gfc-accent); color: #fff; }

/* hervorgehobene Karte („Bester Preis“ bzw. Empfehlung) */
.gfc.gfc--brand:not(#gfc-x) .gfc-term.gfc-term--best,
.gfc.gfc--brand:not(#gfc-x) .gfc-term.gfc-term--best:hover,
.gfc.gfc--brand:not(#gfc-x) .gfc-offer.gfc-offer--hi,
.gfc.gfc--brand:not(#gfc-x) .gfc-offer.gfc-offer--hi:hover { border: 2px solid var(--gfc-accent); background: var(--gfc-best-bg); color: rgba(255, 255, 255, .8); }
.gfc--brand .gfc-term--best .gfc-term__name,
.gfc--brand .gfc-term--best .gfc-term__freq,
.gfc.gfc--brand:not(#gfc-x) .gfc-offer--hi .gfc-offer__name,
.gfc--brand .gfc-offer--hi .gfc-offer__freq { color: #fff; }
.gfc--brand .gfc-term--best .gfc-term__price,
.gfc--brand .gfc-offer--hi .gfc-offer__price { color: var(--gfc-best-price); }
.gfc--brand .gfc-offer--hi .gfc-offer__price small,
.gfc--brand .gfc-offer--hi .gfc-offer__terms,
.gfc--brand .gfc-offer--hi .gfc-offer__fees { color: rgba(255, 255, 255, .66); }
.gfc--brand .gfc-term--best .gfc-term__facts,
.gfc--brand .gfc-offer--hi .gfc-offer__facts { border-top-color: rgba(255, 255, 255, .18); }
.gfc--brand .gfc-term--best .gfc-term__facts li,
.gfc--brand .gfc-offer--hi .gfc-offer__facts li { color: rgba(255, 255, 255, .9); }
.gfc--brand .gfc-offer--hi .gfc-offer__facts li::before { background: var(--gfc-best-check); }
.gfc.gfc--brand:not(#gfc-x) .gfc-term--best .gfc-term__facts .gfc-ico { color: var(--gfc-best-icon); }
.gfc--brand .gfc-offer--hi .gfc-offer__icon { background: var(--gfc-best-chip-bg); color: var(--gfc-best-chip-color); }
.gfc--brand .gfc-offer--hi .gfc-offer__media + .gfc-offer__icon { background: #fff; color: var(--gfc-accent); }
.gfc--brand .gfc-term--best .gfc-term__cta,
.gfc.gfc--brand:not(#gfc-x) .gfc-offer--hi .gfc-offer__cta,
.gfc.gfc--brand:not(#gfc-x) .gfc-offer--hi:hover .gfc-offer__cta { border-color: var(--gfc-best-cta-bg); background: var(--gfc-best-cta-bg); color: var(--gfc-best-cta-color); }
.gfc--brand .gfc-term--best .gfc-term__badge { background: var(--gfc-best-badge-bg); color: var(--gfc-best-badge-color); }

@media (max-width: 767px) {
	.gfc--brand .gfc-top { margin: -60px -18px 22px; padding: 58px 18px 22px; border-radius: 0; }
	.gfc--brand.gfc--inline .gfc-top { margin: -24px -18px 22px; padding: 24px 18px 20px; border-radius: 20px 20px 0 0; }
	.gfc--brand .gfc-top--center { padding-top: 64px; }
	.gfc--brand.gfc--inline .gfc-top--center { padding-top: 30px; }
	.gfc.gfc--brand:not(#gfc-x) .gfc-slot { min-width: 70px; }
	.gfc .gfc-offers { grid-template-columns: 1fr; }
	.gfc .gfc-offer__media { height: 120px; }
}

/* ------------------------------------------------------------------
 * Symbole im Ablauf (ab 1.2.0): eigene Linien-Icons als Inline-SVG, Farbe über currentColor
 * ---------------------------------------------------------------- */
.gfc:not(#gfc-x) .gfc-ico {
	display: inline-block;
	flex: none;
	width: 20px;
	height: 20px;
	max-width: none;
	margin: 0;
	fill: none;
	stroke: currentColor;
	vertical-align: middle;
	overflow: visible;
}
.gfc:not(#gfc-x) .gfc-ico * { fill: none; }
.gfc .gfc-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	border: 0;
	white-space: nowrap;
}
/* rundes Symbol */
.gfc .gfc-chip {
	display: inline-grid;
	flex: none;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--gfc-tint);
	color: var(--gfc-accent);
}
.gfc:not(#gfc-x) .gfc-chip .gfc-ico { width: 18px; height: 18px; }
.gfc .gfc-facts .gfc-chip { width: 40px; height: 40px; }
.gfc:not(#gfc-x) .gfc-facts .gfc-chip .gfc-ico { width: 20px; height: 20px; }
/* rundes Tarif-Bild (Foto oder Symbol) */
.gfc .gfc-thumb {
	position: relative;
	display: grid;
	flex: none;
	place-items: center;
	width: 46px;
	height: 46px;
	overflow: hidden;
	border-radius: 50%;
	background: var(--gfc-tint);
	color: var(--gfc-accent);
}
.gfc:not(#gfc-x) .gfc-thumb .gfc-ico { width: 22px; height: 22px; }
.gfc:not(#gfc-x) .gfc-thumb img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	object-fit: cover;
}
.gfc .gfc-thumb--lg { width: 62px; height: 62px; }
.gfc:not(#gfc-x) .gfc-thumb--lg .gfc-ico { width: 28px; height: 28px; }
.gfc .gfc-head--thumb { display: flex; align-items: center; gap: 16px; }
.gfc .gfc-head--thumb > div { min-width: 0; }
.gfc:not(#gfc-x) .gfc-pick__icon .gfc-ico { width: 18px; height: 18px; }

/* Buttons und Links mit Symbol */
.gfc:not(#gfc-x) .gfc-btn .gfc-ico { width: 18px; height: 18px; }
.gfc:not(#gfc-x) .gfc-ico--back { transform: rotate(180deg); }
.gfc:not(#gfc-x) .gfc-ok .gfc-ico { width: 15px; height: 15px; margin: -2px 5px 0 0; stroke-width: 2.6; }

/* Formular in Gruppen mit Überschrift */
.gfc:not(#gfc-x) .gfc-set { min-width: 0; margin: 0 0 24px; padding: 0; border: 0; border-radius: 0; background: none; }
.gfc:not(#gfc-x) .gfc-set > legend {
	display: block;
	float: none;
	width: 100%;
	max-width: none;
	margin: 0 0 14px;
	padding: 0;
	border: 0;
	color: var(--gfc-ink);
	font: inherit;
	line-height: inherit;
	text-transform: none;
}
.gfc .gfc-set__head {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 0 10px;
	border-bottom: 1px solid var(--gfc-line);
	color: var(--gfc-ink);
	font-family: var(--gfc-ui-font, inherit);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 1.3;
}
.gfc .gfc-set__head .gfc-chip { width: 32px; height: 32px; }
.gfc:not(#gfc-x) .gfc-set__head .gfc-chip .gfc-ico { width: 17px; height: 17px; }

/* Zahlung: Hinweis zur Übertragung, Vertragsbeginn */
.gfc:not(#gfc-x) .gfc-secure { display: flex; align-items: center; gap: 8px; margin: -10px 0 18px; color: var(--gfc-muted); font-size: 13.5px; line-height: 1.4; }
.gfc:not(#gfc-x) .gfc-secure .gfc-ico { width: 16px; height: 16px; color: var(--gfc-ok); }
.gfc .gfc-secure + .gfc-mandate { margin-top: 0; }
.gfc:not(#gfc-x) .gfc-check + .gfc-set { margin-top: 26px; }
.gfc .gfc-note--ico { display: flex; align-items: center; gap: 8px; }
.gfc:not(#gfc-x) .gfc-note--ico .gfc-ico { width: 16px; height: 16px; color: var(--gfc-accent); }

/* Probetraining: Vorteile unter der Überschrift */
.gfc .gfc-perks { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; padding: 0; list-style: none; }
.gfc .gfc-perks li {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 0;
	padding: 7px 14px 7px 11px;
	border-radius: 40px;
	background: var(--gfc-tint);
	color: var(--gfc-ink);
	font-family: var(--gfc-ui-font, inherit);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
}
.gfc .gfc-perks li::before { content: none; }
.gfc:not(#gfc-x) .gfc-perks .gfc-ico { width: 16px; height: 16px; color: var(--gfc-accent); }

/* Fehlermeldungen mit Warnsymbol */
.gfc .gfc-box--error { position: relative; padding-left: 50px; }
.gfc .gfc-box--error::before {
	content: "";
	position: absolute;
	top: 16px;
	left: 17px;
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: 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='M10.3 4.3 2.6 17.6A2 2 0 0 0 4.3 20.5h15.4a2 2 0 0 0 1.7-2.9L13.7 4.3a2 2 0 0 0-3.4 0z'/%3E%3Cpath d='M12 9.5v4.5M12 17.2v.3'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: 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='M10.3 4.3 2.6 17.6A2 2 0 0 0 4.3 20.5h15.4a2 2 0 0 0 1.7-2.9L13.7 4.3a2 2 0 0 0-3.4 0z'/%3E%3Cpath d='M12 9.5v4.5M12 17.2v.3'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ------------------------------------------------------------------
 * Kündigungsbutton (§ 312k BGB): Link unten auf jeder Seite, Seite „Verträge hier kündigen“
 * ---------------------------------------------------------------- */
.gfc-cancelbar { padding: 12px 16px; background: #fff; text-align: center; font-size: 13px; line-height: 1.4; }
.gfc-cancelbar.gfc--family { background: var(--gfc-accent); }
.gfc-cancelbar a,
.gfc-cancelbar a:visited { color: #2B303A; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.gfc-cancelbar.gfc--family a,
.gfc-cancelbar.gfc--family a:visited { color: #fff; }
.gfc-cancelbar a:hover,
.gfc-cancelbar a:focus-visible { text-decoration-thickness: 2px; }
.gfc-cancelpage { display: block; max-width: 860px; margin: 0 auto; padding: 48px 16px 64px; }
.gfc-cancelpage .gfc-cancel .gfc-title { font-size: 30px; }
.gfc .gfc-choice { margin: 0 0 20px; padding: 0; border: 0; }
.gfc:not(#gfc-x) .gfc-choice legend { margin: 0 0 8px; padding: 0; color: var(--gfc-ink); font-size: 14px; font-weight: 600; }
.gfc:not(#gfc-x) .gfc-radio { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 0 0 8px; color: var(--gfc-text); font-size: 15px; font-weight: 400; line-height: 1.4; cursor: pointer; }
.gfc:not(#gfc-x) .gfc-radio input[type=radio] { width: 18px; height: 18px; margin: 0; accent-color: var(--gfc-accent); }
.gfc:not(#gfc-x) .gfc-radio input[type=date] { width: auto; min-height: 40px; padding: 6px 10px; border: 1px solid var(--gfc-field-line, #cbd5e1); border-radius: 10px; background: #fff; color: var(--gfc-ink); font: inherit; }
.gfc .gfc-choice.is-invalid .gfc-error,
.gfc .gfc-field .gfc-error { display: block; margin-top: 6px; color: var(--gfc-error); font-size: 13px; }
.gfc .gfc-reason { margin-bottom: 20px; }
.gfc .gfc-grid + .gfc-choice { margin-top: 22px; }
.gfc .gfc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
@media print {
	.gfc-cancelbar { display: none; }
	.gfc-cancelpage .gfc-actions { display: none; }
}

/* „Ab“-Preis-Hinweis ([gymfamily_ab_preis]) */
.gfc-pricechip { display: inline-flex; align-items: center; padding: 7px 14px; border-radius: 30px; background: rgba(230, 0, 90, .08); color: var(--gfc-accent, #E6005A); font-weight: 600; font-size: 14px; line-height: 1.3; }
.gfc-pricechip:empty { display: none; }
