/* Terminkalender (ab 1.11.0) – Seite mit dem Shortcode [terminkalender].
   Symbole: Lucide (ISC-Lizenz, siehe LIZENZEN.txt), als Daten-Adresse eingebettet – es wird nichts von außen geladen. */

.mosaik-kal {
	--kal-termin: var(--mosaik-rot);
	--kal-frei: var(--wp--preset--color--gelb-hell);
	--kal-frei-rand: var(--mosaik-gelb);
	--kal-feiertag: var(--wp--preset--color--rot-hell);
	--kal-sym-abo: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8'/%3E%3Cpath d='M3 10h18'/%3E%3Cpath d='M16 19h6'/%3E%3Cpath d='M19 16v6'/%3E%3C/svg%3E");
	--kal-sym-datei: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3Cpath d='M12 15V3'/%3E%3C/svg%3E");
	--kal-sym-druck: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3Cpath d='M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6'/%3E%3Crect x='6' y='14' width='12' height='8' rx='1'/%3E%3C/svg%3E");
	--kal-sym-sonne: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2'/%3E%3Cpath d='M12 20v2'/%3E%3Cpath d='m4.93 4.93 1.41 1.41'/%3E%3Cpath d='m17.66 17.66 1.41 1.41'/%3E%3Cpath d='M2 12h2'/%3E%3Cpath d='M20 12h2'/%3E%3Cpath d='m6.34 17.66-1.41 1.41'/%3E%3Cpath d='m19.07 4.93-1.41 1.41'/%3E%3C/svg%3E");
	margin-block: 1.5rem 2rem;
}
.mosaik-kal [hidden] { display: none !important; }

/* ---------- Leiste: Abonnieren, Auswahl, Hilfe ---------- */
.mosaik-kal__leiste {
	background: var(--mosaik-weiss);
	border-radius: var(--mosaik-radius);
	box-shadow: var(--mosaik-schatten);
	padding: 1.1rem 1.25rem;
	display: grid;
	gap: 0.9rem;
}
.mosaik-kal__abo { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.mosaik-kal__knopf {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 46px;
	padding: 0.55rem 1.05rem;
	border-radius: 999px;
	border: 2px solid var(--mosaik-linie);
	background: transparent;
	color: var(--mosaik-tinte) !important;
	font: inherit;
	font-weight: 800;
	line-height: 1.2;
	text-decoration: none !important;
	cursor: pointer;
	transition: transform .15s ease, border-color .15s ease, background-color .15s ease;
}
.mosaik-kal__knopf::before {
	content: "";
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: var(--kal-sym) center / contain no-repeat;
	mask: var(--kal-sym) center / contain no-repeat;
}
.mosaik-kal__knopf--abo { --kal-sym: var(--kal-sym-abo); background: var(--mosaik-navy); border-color: var(--mosaik-navy); color: #fff !important; }
.mosaik-kal__knopf--datei { --kal-sym: var(--kal-sym-datei); }
.mosaik-kal__knopf--druck { --kal-sym: var(--kal-sym-druck); }
.mosaik-kal__knopf:hover { transform: translateY(-2px); border-color: var(--mosaik-blau); }
.mosaik-kal__knopf--abo:hover { background: #0A2E6E; border-color: #0A2E6E; }

.mosaik-kal__filter { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
.mosaik-kal__filtertitel { font-weight: 800; margin-right: 0.3rem; }
.mosaik-kal__filter button {
	min-width: 44px;
	min-height: 44px;
	padding: 0.3rem 0.85rem;
	border-radius: 999px;
	border: 2px solid var(--mosaik-linie);
	background: transparent;
	color: var(--mosaik-tinte);
	font: inherit;
	font-weight: 800;
	cursor: pointer;
}
.mosaik-kal__filter button:hover { border-color: var(--mosaik-blau); }
.mosaik-kal__filter button[aria-pressed="true"] { background: var(--mosaik-gruen); border-color: var(--mosaik-gruen); color: #10240B; }
.mosaik-kal__auswahl { margin: 0; font-size: 0.95rem; color: var(--mosaik-grau); }

.mosaik-kal__hilfe summary, .mosaik-kal__frueher > summary {
	cursor: pointer;
	font-weight: 800;
	color: var(--mosaik-text-akzent);
	padding: 0.35rem 0;
	width: fit-content;
}
.mosaik-kal__hilfetext { font-size: 0.97rem; line-height: 1.55; max-width: 62em; }
.mosaik-kal__hilfetext p, .mosaik-kal__hilfetext ul { margin: 0.6rem 0; }
.mosaik-kal__hilfetext ul { padding-left: 1.2rem; }
.mosaik-kal__hilfetext li { margin: 0.3rem 0; }
.mosaik-kal__code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.92em; }
.mosaik-kal__adresse { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.mosaik-kal__adresse label { font-weight: 800; flex-basis: 100%; }
.mosaik-kal__adresse input {
	flex: 1 1 260px;
	min-width: 0;
	min-height: 44px;
	padding: 0.4rem 0.7rem;
	border: 2px solid var(--mosaik-linie);
	border-radius: 10px;
	background: var(--mosaik-feld);
	color: var(--mosaik-tinte);
	font: inherit;
	font-size: 0.92rem;
}
.mosaik-kal__kopieren {
	min-height: 44px;
	padding: 0.4rem 0.9rem;
	border-radius: 999px;
	border: 2px solid var(--mosaik-linie);
	background: transparent;
	color: var(--mosaik-tinte);
	font: inherit;
	font-weight: 800;
	cursor: pointer;
}
.mosaik-kal__klein { font-size: 0.87rem; color: var(--mosaik-grau); }
.mosaik-kal.hat-skript .mosaik-kal__ohnejs { display: none; }

/* ---------- Legende ---------- */
.mosaik-kal__legende {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0.5rem;
	margin: 1.1rem 0 0.4rem !important;
	font-size: 0.87rem;
	color: var(--mosaik-grau);
}
.mosaik-kal__probe { display: inline-block; width: 18px; height: 18px; border-radius: 6px; margin-left: 0.6rem; }
.mosaik-kal__probe:first-child { margin-left: 0; }
.mosaik-kal__probe--termin { background: var(--kal-termin); border-radius: 50%; transform: scale(.55); }
.mosaik-kal__probe--frei { background: var(--kal-frei); box-shadow: inset 0 0 0 2px var(--kal-frei-rand); }
.mosaik-kal__probe--feiertag { background: var(--kal-feiertag); box-shadow: inset 0 0 0 2px var(--mosaik-rot); }
.mosaik-kal__probe--heute { box-shadow: inset 0 0 0 3px var(--mosaik-blau); }

/* ---------- Monat ---------- */
.mosaik-kal__monat {
	display: grid;
	grid-template-columns: 252px minmax(0, 1fr);
	grid-template-areas: "titel titel" "raster liste";
	gap: 0.6rem 1.75rem;
	align-items: start;
	padding: 1.4rem 0 1.5rem;
	border-top: 2px dashed var(--mosaik-linie);
	scroll-margin-top: 1rem;
}
.mosaik-kal__leiste + .mosaik-kal__legende + .mosaik-kal__monat,
.mosaik-kal__frueher + .mosaik-kal__monat { border-top: 0; }
.mosaik-kal__monatstitel {
	grid-area: titel;
	margin: 0 !important;
	font-size: clamp(1.35rem, 1.1rem + 1vw, 1.7rem);
	display: flex;
	align-items: center;
	gap: 0.6rem;
}
.mosaik-kal__monat.ist-aktuell .mosaik-kal__monatstitel::after {
	content: "aktueller Monat";
	font-family: var(--wp--preset--font-family--body, inherit);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0;
	color: var(--mosaik-text-gruen);
	background: var(--wp--preset--color--gruen-hell);
	border-radius: 999px;
	padding: 0.15rem 0.6rem;
}
.mosaik-kal__raster {
	grid-area: raster;
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 3px;
	background: var(--mosaik-weiss);
	border-radius: var(--mosaik-radius-s);
	box-shadow: var(--mosaik-schatten);
	padding: 0.7rem;
	font-size: 0.85rem;
	font-variant-numeric: tabular-nums;
	text-align: center;
	user-select: none;
}
.mosaik-kal__wt { font-size: 0.72rem; font-weight: 800; color: var(--mosaik-grau); padding-bottom: 2px; }
.mosaik-kal__tag {
	position: relative;
	aspect-ratio: 1;
	display: grid;
	place-items: center;
	border-radius: 8px;
	color: var(--mosaik-tinte);
}
.mosaik-kal__tag.ist-we { color: var(--mosaik-grau); }
.mosaik-kal__tag.ist-frei { background: var(--kal-frei); }
.mosaik-kal__tag.ist-feiertag { background: var(--kal-feiertag); color: var(--mosaik-text-rot); font-weight: 800; }
.mosaik-kal__tag.hat-termin { font-weight: 800; }
.mosaik-kal__tag.hat-termin::after {
	content: "";
	position: absolute;
	bottom: 3px;
	left: 50%;
	width: 6px;
	height: 6px;
	margin-left: -3px;
	border-radius: 50%;
	background: var(--kal-termin);
}
.mosaik-kal__tag.ist-heute { box-shadow: inset 0 0 0 2px var(--mosaik-blau); }

.mosaik-kal__spalte { grid-area: liste; min-width: 0; }
.mosaik-kal__liste { list-style: none; margin: 0 !important; padding: 0 !important; display: grid; gap: 0.55rem; }
.mosaik-kal__leer { margin: 0.6rem 0 0 !important; color: var(--mosaik-grau); font-size: 0.95rem; }
.mosaik-kal__liste + .mosaik-kal__leer { padding-left: 0.2rem; }

.mosaik-kal__eintrag {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	margin: 0 !important;
	background: var(--mosaik-weiss);
	border-radius: var(--mosaik-radius-s);
	box-shadow: var(--mosaik-schatten);
	padding: 0.7rem 0.9rem;
	scroll-margin-top: 1rem;
}
.mosaik-kal__eintrag:target { outline: 3px solid var(--mosaik-blau); outline-offset: 2px; }
.mosaik-kal__eintrag.ist-vorbei { opacity: .62; box-shadow: none; }
.mosaik-kal__eintrag.ist-schulfrei { background: var(--kal-frei); }
.mosaik-kal__text { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; flex: 1 1 auto; }
.mosaik-kal__titel { font-size: 1.05rem; line-height: 1.3; }
.mosaik-kal__titel a { color: var(--mosaik-tinte); text-decoration-color: var(--mosaik-linie); text-decoration-thickness: 2px; }
.mosaik-kal__titel a:hover { color: var(--mosaik-text-akzent); text-decoration-color: currentColor; }
.mosaik-kal__wann { font-size: 0.92rem; color: var(--mosaik-grau); line-height: 1.45; }
.mosaik-kal__marken { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.15rem; }
.mosaik-kal__marke {
	font-size: 0.78rem;
	font-weight: 800;
	border-radius: 999px;
	padding: 0.05rem 0.6rem;
	background: var(--mosaik-tint-navy);
	color: var(--mosaik-text-akzent);
}
.mosaik-kal__marke--frei { background: var(--mosaik-gelb); color: #3A2C00; }
.mosaik-kal__hinweis { font-size: 0.92rem; line-height: 1.45; margin-top: 0.15rem; }
.mosaik-kal__merken {
	flex: 0 0 auto;
	align-self: center;
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0.25rem 0.8rem;
	border-radius: 999px;
	border: 2px solid var(--mosaik-linie);
	font-size: 0.85rem;
	font-weight: 800;
	white-space: nowrap;
	color: var(--mosaik-text-akzent) !important;
	text-decoration: none !important;
}
.mosaik-kal__merken:hover { border-color: var(--mosaik-blau); }

/* Ferien und Feiertage: schmale Bänder */
.mosaik-kal__eintrag--ferien, .mosaik-kal__eintrag--feiertag {
	background: var(--kal-frei);
	box-shadow: none;
	padding: 0.5rem 0.9rem;
	gap: 0.7rem;
}
.mosaik-kal__eintrag--feiertag { background: var(--kal-feiertag); }
.mosaik-kal__band {
	flex: 0 0 22px;
	width: 22px;
	height: 22px;
	background: var(--mosaik-text-gelb);
	-webkit-mask: var(--kal-sym-sonne) center / contain no-repeat;
	mask: var(--kal-sym-sonne) center / contain no-repeat;
}
.mosaik-kal__eintrag--feiertag .mosaik-kal__band { background: var(--mosaik-text-rot); }
.mosaik-kal__eintrag--ferien .mosaik-kal__text, .mosaik-kal__eintrag--feiertag .mosaik-kal__text { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0.1rem 0.7rem; }
.mosaik-kal__eintrag--ferien .mosaik-kal__titel, .mosaik-kal__eintrag--feiertag .mosaik-kal__titel { font-size: 1rem; }
.mosaik-kal__eintrag--ferien .mosaik-kal__wann, .mosaik-kal__eintrag--feiertag .mosaik-kal__wann { color: var(--mosaik-tinte); }

/* Bereits vorbei */
.mosaik-kal__frueher { margin: 0.6rem 0 0; }
.mosaik-kal__frueher[open] { margin-bottom: 0.5rem; }
.mosaik-kal__frueher[open] > summary { margin-bottom: 0.2rem; }
.mosaik-kal__frueher .mosaik-kal__monat:first-of-type { border-top: 0; }

.mosaik-kal__fuss { margin: 1.2rem 0 0 !important; padding-top: 1rem; border-top: 2px dashed var(--mosaik-linie); font-size: 0.87rem; color: var(--mosaik-grau); }

/* Auswahl nach Jahrgangsstufe: nicht passende Termine ausblenden */
.mosaik-kal__eintrag.passt-nicht { display: none; }

/* ---------- schmale Bildschirme ---------- */
@media (max-width: 780px) {
	.mosaik-kal__monat { grid-template-columns: minmax(0, 1fr); grid-template-areas: "titel" "raster" "liste"; gap: 0.7rem; }
	.mosaik-kal__raster { max-width: 340px; width: 100%; }
}
@media (max-width: 520px) {
	.mosaik-kal__leiste { padding: 0.9rem; }
	.mosaik-kal__knopf { flex: 1 1 100%; justify-content: center; }
	.mosaik-kal__eintrag--termin { flex-wrap: wrap; row-gap: 0.3rem; padding: 0.65rem 0.75rem; }
	.mosaik-kal__eintrag--termin .mosaik-kal__text { flex-basis: calc(100% - 58px - 0.9rem); }
	.mosaik-kal__eintrag--termin .mosaik-datum--mehrtaegig + .mosaik-kal__text { flex-basis: calc(100% - 65px - 0.9rem); }
	.mosaik-kal__merken { margin-left: calc(58px + 0.9rem); min-height: 34px; padding: 0.1rem 0.7rem; font-size: 0.82rem; }
	.mosaik-kal__raster { max-width: none; }
}

@media (prefers-color-scheme: dark) {
	.mosaik-kal__knopf--abo { background: var(--mosaik-blau); border-color: var(--mosaik-blau); color: #06121F !important; }
	.mosaik-kal__knopf--abo:hover { background: #6FD0F7; border-color: #6FD0F7; }
	.mosaik-kal__marke--frei { background: #FFD65A; color: #2B2100; }
	.mosaik-kal__filter button[aria-pressed="true"] { color: #0B1A07; }
}

@media (prefers-reduced-motion: reduce) {
	.mosaik-kal__knopf:hover { transform: none; }
}

/* ---------- Drucken: der ganze Plan, ohne Bedienelemente ---------- */
@media print {
	.mosaik-kal__leiste, .mosaik-kal__legende, .mosaik-kal__merken, .mosaik-kal__frueher > summary { display: none !important; }
	.mosaik-kal__monat { grid-template-columns: 190px minmax(0, 1fr); padding: 0.5rem 0; border-top: 1px solid #999; }
	.mosaik-kal__monatstitel { break-after: avoid; }
	.mosaik-kal__raster { break-inside: avoid; font-size: 0.72rem; }
	.mosaik-kal__tag.hat-termin::after { bottom: 0; width: 4px; height: 4px; margin-left: -2px; }
	.mosaik-kal__raster, .mosaik-kal__eintrag { box-shadow: none !important; border: 1px solid #bbb; }
	.mosaik-kal__eintrag { padding: 0.3rem 0.6rem; break-inside: avoid; opacity: 1 !important; }
	.mosaik-kal__eintrag.passt-nicht { display: none !important; }
	.mosaik-kal__liste { gap: 0.25rem; }
	.mosaik-kal .mosaik-datum { height: 44px; flex-basis: 44px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
	.mosaik-kal__tag, .mosaik-kal__eintrag--ferien, .mosaik-kal__eintrag--feiertag { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
	.mosaik-kal__monat.ist-aktuell .mosaik-kal__monatstitel::after { display: none; }
}
