/*
 * Fahrschul-Kurse: Ausgabe auf der Website.
 * Schrift und Grundfarben kommen vom Theme. Anpassbar über:
 *   --fsk-akzent, --fsk-akzent-text, --fsk-linie, --fsk-flaeche
 */

.fsk-kurse {
	--fsk-akzent: #c8102e;
	--fsk-akzent-text: #fff;
	--fsk-linie: rgba(127, 127, 127, .3);
	--fsk-flaeche: rgba(127, 127, 127, .09);
	margin: 1.5em 0;
}

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

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

.fsk-gruppe + .fsk-gruppe { margin-top: 2.75em; }
.fsk-kurse .fsk-gruppe-titel { margin: 0 0 .6em; }

.fsk-kurse .fsk-liste {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--fsk-linie);
}

/* Ein Kurs: Kalenderblatt | Inhalt | Button */
.fsk-kurse .fsk-kurs {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: .25rem 1.4rem;
	align-items: start;
	margin: 0;
	padding: 1.4rem 0;
	border-bottom: 1px solid var(--fsk-linie);
}

.fsk-blatt {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 5rem;
	padding: .55rem .25rem .6rem;
	border-radius: 6px;
	background: var(--fsk-akzent);
	color: var(--fsk-akzent-text);
	line-height: 1;
	text-align: center;
}
.fsk-blatt-tag { font-size: .8rem; font-weight: 600; opacity: .85; }
.fsk-blatt-zahl { margin: .2rem 0 .25rem; font-size: 2.1rem; font-weight: 800; letter-spacing: -.02em; }
.fsk-blatt-monat { font-size: .78rem; font-weight: 600; white-space: nowrap; }

.fsk-kurse .fsk-inhalt > * { margin: 0; }
.fsk-kurse .fsk-inhalt > * + * { margin-top: .35rem; }

.fsk-oben {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .3rem .75rem;
	font-size: .9em;
}
.fsk-klasse { color: var(--fsk-akzent); font-weight: 700; }

.fsk-status {
	display: inline-block;
	padding: .1em .55em;
	border: 1px solid currentColor;
	border-radius: 4px;
	font-size: .85em;
	font-weight: 600;
}
.fsk-status--wenige { color: #946200; }
.fsk-status--ausgebucht { color: #b3261e; }
.fsk-status--abgesagt { color: #6b6b6b; }

.fsk-kurse .fsk-titel {
	margin: 0;
	font-size: 1.25em;
	line-height: 1.25;
}

.fsk-eckdaten { font-variant-numeric: tabular-nums; }

/* Terminliste */
.fsk-kurse .fsk-termine { margin-top: .6rem; }
.fsk-termine summary {
	display: inline-block;
	color: var(--fsk-akzent);
	font-weight: 600;
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: .2em;
}
.fsk-termine summary::-webkit-details-marker { display: none; }
.fsk-termine[open] .fsk-zu,
.fsk-termine:not([open]) .fsk-auf { display: none; }

.fsk-kurse .fsk-terminliste {
	max-width: 26rem;
	margin: .6rem 0 0;
	padding: 0;
	list-style: none;
	font-variant-numeric: tabular-nums;
}
.fsk-kurse .fsk-terminliste li {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	margin: 0;
	padding: .35rem .6rem;
	border-radius: 4px;
}
.fsk-kurse .fsk-terminliste li:nth-child(odd) { background: var(--fsk-flaeche); }

.fsk-ort,
.fsk-hinweis { font-size: .92em; opacity: .85; }

/* Button */
.fsk-aktion { align-self: center; }
.fsk-kurse .fsk-button {
	display: inline-block;
	padding: .7em 1.25em;
	border-radius: 6px;
	background: var(--fsk-akzent);
	color: var(--fsk-akzent-text);
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
	white-space: nowrap;
}
.fsk-kurse .fsk-button:hover { filter: brightness(1.1); color: var(--fsk-akzent-text); }
.fsk-kurse .fsk-button:focus-visible,
.fsk-termine summary:focus-visible { outline: 3px solid var(--fsk-akzent); outline-offset: 3px; }

/* Ausgebucht / abgesagt: zurückgenommen, aber lesbar */
.fsk-kurs--ausgebucht .fsk-blatt,
.fsk-kurs--abgesagt .fsk-blatt { background: #8a8a8a; }
.fsk-kurs--abgesagt .fsk-titel { text-decoration: line-through; }

.fsk-leer {
	margin: 0;
	padding: 1.1rem 1.25rem;
	border: 1px dashed var(--fsk-linie);
	border-radius: 6px;
}

.fsk-kurse .fsk-variante {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	margin: 0 0 1.25rem;
	padding: 0;
	border: 0;
}
.fsk-kurse .fsk-variante legend { width: 100%; margin-bottom: .4rem; padding: 0; font-size: .92em; font-weight: 600; }
.fsk-variante-option {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .55em .9em;
	border: 1px solid rgba(127, 127, 127, .55);
	border-radius: 5px;
	background: var(--fsk-feld, #fff);
	color: #1d1d1d;
	cursor: pointer;
}
.fsk-variante-option:has(input:checked) { border-color: var(--fsk-akzent); box-shadow: inset 0 0 0 1px var(--fsk-akzent); }
.fsk-variante-option input { margin: 0; accent-color: var(--fsk-akzent); }
.fsk-variante .fsk-fehler { width: 100%; }

/* Button "Zum Kurs anmelden": aufgeklappt als Rahmen-Variante */
.fsk-kurse .fsk-oeffnen[aria-expanded="true"] {
	background: transparent;
	color: var(--fsk-akzent);
	box-shadow: inset 0 0 0 2px var(--fsk-akzent);
}
.fsk-kurse button.fsk-button { border: 0; font: inherit; font-weight: 700; cursor: pointer; }
.fsk-kurse button.fsk-button:disabled { opacity: .6; cursor: wait; }

/* Anmeldeformular unter dem Kurs */
.fsk-anmeldung {
	display: none;
	grid-column: 1 / -1;
	margin-top: 1rem;
	padding: 1.25rem 1.4rem 1.4rem;
	border-left: 4px solid var(--fsk-akzent);
	border-radius: 6px;
	background: var(--fsk-flaeche);
}
.fsk-anmeldung.ist-offen,
.fsk-anmeldung:target { display: block; }

.fsk-form-kopf {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	margin-bottom: 1.1rem;
}
.fsk-kurse .fsk-form-titel { margin: 0; }
.fsk-kurse .fsk-schliessen {
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	font-size: .9em;
	text-decoration: underline;
	text-underline-offset: .2em;
	cursor: pointer;
}

.fsk-felder {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem 1.25rem;
}
.fsk-kurse .fsk-feld {
	display: flex;
	flex-direction: column;
	gap: .3rem;
	margin: 0;
}
.fsk-kurse .fsk-feld[hidden] { display: none; }
.fsk-feld--breit { grid-column: 1 / -1; }

.fsk-feld label { font-size: .92em; font-weight: 600; }
.fsk-stern { color: var(--fsk-akzent); }

.fsk-kurse .fsk-feld input,
.fsk-kurse .fsk-feld textarea {
	width: 100%;
	margin: 0;
	padding: .6em .75em;
	border: 1px solid rgba(127, 127, 127, .55);
	border-radius: 5px;
	background: var(--fsk-feld, #fff);
	color: #1d1d1d;
	font: inherit;
	line-height: 1.4;
}
.fsk-kurse .fsk-feld input:focus,
.fsk-kurse .fsk-feld textarea:focus {
	outline: 2px solid var(--fsk-akzent);
	outline-offset: 1px;
	border-color: var(--fsk-akzent);
}
.fsk-kurse [aria-invalid="true"] { border-color: #b3261e !important; box-shadow: 0 0 0 1px #b3261e; }

.fsk-hilfe { font-size: .85em; opacity: .75; }
.fsk-fehler { color: #b3261e; font-size: .88em; font-weight: 600; }
.fsk-fehler[hidden] { display: none; }

.fsk-kurse .fsk-zustimmung {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: .2rem .6rem;
	align-items: start;
	margin: 1.25rem 0 0;
	font-size: .92em;
}
.fsk-zustimmung input { width: 1.15em; height: 1.15em; margin: .15em 0 0; accent-color: var(--fsk-akzent); }
.fsk-zustimmung .fsk-fehler { grid-column: 2; }
.fsk-zustimmung a { color: inherit; text-decoration: underline; }

.fsk-form-fuss {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem 1.25rem;
	margin-top: 1.25rem;
}
.fsk-pflicht-hinweis { font-size: .85em; opacity: .75; }

.fsk-kurse .fsk-meldung { margin: .75rem 0 0; }
.fsk-kurse .fsk-meldung:empty { display: none; }
.fsk-meldung--fehler { color: #b3261e; font-weight: 600; }

.fsk-erfolg { outline: none; }
.fsk-kurse .fsk-erfolg p { margin: 0; font-weight: 600; font-size: 1.05em; }

.fsk-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Handy: Button unter den Inhalt */
@media (max-width: 600px) {
	.fsk-kurse .fsk-kurs { grid-template-columns: auto minmax(0, 1fr); gap: .9rem 1rem; }
	.fsk-blatt { width: 4.25rem; }
	.fsk-blatt-zahl { font-size: 1.8rem; }
	.fsk-aktion { grid-column: 2; }
	.fsk-felder { grid-template-columns: minmax(0, 1fr); }
	.fsk-anmeldung { padding: 1rem; }
	.fsk-form-kopf { flex-direction: column; gap: .4rem; }
}
