.kalender{ padding:10px 24px 100px; }
.kalender__month{ margin-bottom:34px; }
.kalender__month h2{ font-size:20px; margin-bottom:14px; color:var(--c-red); }
.kalender__list{ display:flex; flex-direction:column; gap:10px; }
.kalender__item{
	display:flex; align-items:center; gap:18px;
	background:var(--c-surface); border:1px solid var(--c-border); border-left:3px solid transparent; border-radius:var(--radius-md);
	padding:16px 18px; transition:box-shadow .15s ease, transform .15s ease, border-left-color .15s ease;
}
.kalender__item:hover{ box-shadow:var(--shadow-md); border-left-color:var(--c-red); }
.kalender__date{
	flex-shrink:0; width:56px; height:56px; border-radius:14px; background:var(--c-red-tint); color:var(--c-red);
	display:flex; flex-direction:column; align-items:center; justify-content:center; font-family:var(--font-display);
}
.kalender__day{ font-size:19px; font-weight:800; line-height:1; }
.kalender__wd{ font-size:11px; text-transform:uppercase; letter-spacing:.04em; }
.kalender__meta{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.kalender__title{ font-weight:700; }
.kalender__sub{ font-size:13.5px; color:var(--c-text-muted); overflow-wrap:anywhere; }
.kalender__tag{ flex-shrink:0; font-size:12px; font-weight:700; padding:6px 12px; border-radius:var(--radius-xs); background:var(--c-bg-alt); color:var(--c-text-muted); }
@media (max-width:600px){
	.kalender__item{ flex-wrap:wrap; }
	.kalender__tag{ order:3; margin-left:74px; }
}
.termin-meta{ font-size:15px; margin-bottom:20px; }

/* ---------- Planer: Teilnahme und Kalender-Download ---------- */
.kalender__intro-actions{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:18px 0 0; }
.kalender__actions{ display:flex; align-items:center; gap:8px; flex-shrink:0; margin-left:auto; }
.kalender__attend{
	display:inline-flex; align-items:center; gap:8px;
	padding:8px 14px; border-radius:var(--radius-xs); cursor:pointer;
	border:1px solid var(--c-border); background:var(--c-surface);
	font-family:inherit; font-size:12.5px; font-weight:700; color:var(--c-text);
	transition:background .15s ease, border-color .15s ease, color .15s ease;
}
.kalender__attend:hover{ border-color:var(--c-red); color:var(--c-red); }
.kalender__attend.is-attending{ background:var(--c-red); border-color:var(--c-red); color:#fff; }
.kalender__attend-count{
	min-width:20px; padding:0 6px; border-radius:6px; text-align:center;
	background:var(--c-bg-alt); color:var(--c-text-muted); font-size:11px;
}
.kalender__attend.is-attending .kalender__attend-count{ background:rgba(255,255,255,.24); color:#fff; }
.kalender__count{ font-size:12px; color:var(--c-text-muted); }
.kalender__ics{
	display:inline-flex; align-items:center;
	padding:8px 12px; border-radius:var(--radius-xs);
	border:1px solid var(--c-border); background:var(--c-surface);
	font-size:12.5px; font-weight:600; color:var(--c-text-muted);
}
.kalender__ics:hover{ border-color:var(--c-red); color:var(--c-red); }

@media (max-width:640px){
	/* Auf schmalen Bildschirmen unter den Termin statt daneben. */
	.kalender__item{ flex-wrap:wrap; }
	.kalender__actions{ margin-left:56px; width:calc(100% - 56px); }
}

/* ---------- Kalender-Kopfzeile ---------- */
.kal-bar{
	display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
	padding:14px 16px; margin-bottom:22px;
	background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius-md);
}
.kal-bar__nav{ display:flex; align-items:center; gap:10px; }
.kal-bar__step{
	width:34px; height:34px; flex-shrink:0;
	display:flex; align-items:center; justify-content:center;
	border:1px solid var(--c-border); border-radius:var(--radius-xs);
	font-size:18px; line-height:1; color:var(--c-text);
}
.kal-bar__step:hover{ border-color:var(--c-red); color:var(--c-red); }
.kal-bar__title{ font-family:var(--font-display); font-weight:800; font-size:17px; min-width:150px; }
.kal-bar__views{ display:flex; gap:4px; background:var(--c-bg-alt); padding:4px; border-radius:var(--radius-xs); }
.kal-bar__view{
	padding:7px 14px; border-radius:calc(var(--radius-xs) - 2px);
	font-size:13px; font-weight:600; color:var(--c-text-muted);
}
.kal-bar__view:hover{ color:var(--c-text); }
.kal-bar__view.is-active{ background:var(--c-surface); color:var(--c-red); box-shadow:var(--shadow-sm); }
.kal-bar__actions{ display:flex; align-items:center; gap:8px; }
.kal-bar__today, .kal-bar__ics{
	padding:8px 14px; border-radius:var(--radius-xs);
	border:1px solid var(--c-border); font-size:12.5px; font-weight:600; color:var(--c-text-muted);
}
.kal-bar__today:hover, .kal-bar__ics:hover{ border-color:var(--c-red); color:var(--c-red); }

/* ---------- Monatsraster ---------- */
.kal-grid{
	display:grid; grid-template-columns:repeat(7, 1fr); gap:6px;
	margin-bottom:32px;
}
.kal-grid__head{
	text-align:center; padding:6px 0; font-size:11.5px; font-weight:700;
	text-transform:uppercase; letter-spacing:.05em; color:var(--c-text-muted);
}
.kal-grid__cell{
	display:flex; flex-direction:column; gap:4px;
	min-height:96px; padding:8px;
	background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius-sm);
	transition:border-color .15s ease, box-shadow .15s ease;
}
.kal-grid__cell:hover{ border-color:var(--c-red); box-shadow:var(--shadow-sm); }
.kal-grid__cell--empty{ background:transparent; border-color:transparent; pointer-events:none; }
.kal-grid__num{ font-size:13px; font-weight:700; color:var(--c-text); }
.kal-grid__cell.is-today{ border-color:var(--c-red); }
.kal-grid__cell.is-today .kal-grid__num{
	display:inline-flex; align-items:center; justify-content:center;
	width:24px; height:24px; border-radius:var(--radius-xs);
	background:var(--c-red); color:#fff;
}
.kal-grid__events{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.kal-grid__event{
	font-size:11px; line-height:1.3; padding:3px 6px; border-radius:4px;
	background:var(--c-red-tint); color:var(--c-red); font-weight:600;
	overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.kal-grid__more{ font-size:10.5px; color:var(--c-text-muted); padding-left:6px; }

/* ---------- Jahresübersicht ---------- */
.kal-year{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:32px; }
.kal-year__month{
	display:flex; flex-direction:column; gap:4px; padding:18px;
	background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius-md);
	transition:border-color .15s ease, transform .15s ease;
}
.kal-year__month:hover{ border-color:var(--c-red); }
.kal-year__month.has-events{ border-left:3px solid var(--c-red); }
.kal-year__name{ font-family:var(--font-display); font-weight:800; font-size:15px; color:var(--c-text); }
.kal-year__count{ font-size:12.5px; color:var(--c-text-muted); }

.kal-empty{ padding:28px 0; }
.kal-monthlist{ border-top:1px solid var(--c-border); padding-top:24px; }

@media (max-width:860px){
	.kal-year{ grid-template-columns:repeat(3, 1fr); }
}
@media (max-width:700px){
	/* Kopfzeile gestapelt, damit nichts gedrängt wird. */
	.kal-bar{ flex-direction:column; align-items:stretch; gap:12px; }
	.kal-bar__nav{ justify-content:space-between; }
	.kal-bar__title{ min-width:0; text-align:center; }
	.kal-bar__views{ justify-content:space-between; }
	.kal-bar__view{ flex:1; text-align:center; padding:8px 6px; }
	.kal-bar__actions{ justify-content:space-between; }
	.kal-bar__today, .kal-bar__ics{ flex:1; text-align:center; }

	/* Monatsraster kompakter: nur noch Punkte statt Termintitel. */
	.kal-grid{ gap:4px; }
	.kal-grid__cell{ min-height:56px; padding:5px; }
	.kal-grid__event{
		font-size:0; padding:0; height:5px; border-radius:999px;
		background:var(--c-red);
	}
	.kal-grid__events{ flex-direction:row; gap:3px; flex-wrap:wrap; }
	.kal-grid__event{ width:5px; }
	.kal-grid__more{ font-size:9.5px; padding:0; }

	.kal-year{ grid-template-columns:repeat(2, 1fr); }
}

/* =========================================================
   v1.9.0 - Kalender: Split-Ansicht und lesbare Eintraege
   ========================================================= */

/* Monatsansicht: links Raster, rechts Liste - halb/halb ab 1025px.
   Die Liste bleibt beim Blaettern im Blick (sticky). */
.kal-split{
	display:grid;
	grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
	gap:var(--sp-6, 32px);
	align-items:start;
	margin-bottom:var(--sp-6, 32px);
}
.kal-split__cal .kal-grid{ margin-bottom:0; }
.kal-split__list{
	position:sticky; top:calc(var(--header-offset, var(--header-h)) + 16px);
	max-height:calc(100vh - var(--header-h) - 64px);
	overflow-y:auto;
	padding-right:var(--sp-1, 4px);
}
.kal-split__heading{
	font-family:var(--font-display); font-weight:800;
	font-size:clamp(1rem, .95rem + .4vw, 1.25rem);
	margin:0 0 var(--sp-3, 12px); color:var(--c-red);
}
@media (max-width:1024px){
	/* Tablet und Mobil: untereinander wie gehabt, Liste unter dem Raster. */
	.kal-split{ grid-template-columns:1fr; gap:var(--sp-5, 24px); }
	.kal-split__list{ position:static; max-height:none; overflow:visible; }
	.kal-split__list{ border-top:1px solid var(--c-border); padding-top:var(--sp-5, 24px); }
}

/* Termine direkt im Raster lesbar: Uhrzeit + Titel, mit Umbruch statt
   Abschneiden. Die Zellen wachsen dafuer mit dem Inhalt. */
.kal-grid__cell{ min-height:120px; }
.kal-grid__event{
	display:flex; flex-direction:column; gap:1px;
	font-size:.75rem; line-height:1.25;
	padding:4px 6px; border-radius:6px;
	background:var(--c-red-tint); color:var(--c-red); font-weight:600;
	white-space:normal; overflow:hidden; text-overflow:clip;
	border-left:3px solid var(--c-red);
	text-align:left;
}
.kal-grid__event-time{ font-size:.6875rem; font-weight:700; opacity:.85; }
.kal-grid__event-title{
	font-weight:600; color:var(--c-text);
	display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.kal-grid__more{ font-size:.6875rem; color:var(--c-text-muted); padding-left:2px; }

/* Zwischen 521 und 700px bleiben die Titel lesbar (nur kompakter) -
   die frueheren reinen Punkte erst auf sehr schmalen Geraeten. */
@media (max-width:700px){
	.kal-grid__cell{ min-height:88px; padding:6px; }
	.kal-grid__event{
		font-size:.6875rem; padding:3px 5px; height:auto; width:auto;
		border-radius:5px; background:var(--c-red-tint); color:var(--c-red);
	}
	.kal-grid__events{ flex-direction:column; gap:3px; flex-wrap:nowrap; }
	.kal-grid__event-title{ -webkit-line-clamp:1; }
	.kal-grid__more{ font-size:.625rem; }
}
@media (max-width:520px){
	/* Sehr schmal: Uhrzeit entfaellt, Titel bleibt einzeilig sichtbar. */
	.kal-grid{ gap:4px; }
	.kal-grid__cell{ min-height:74px; padding:4px; }
	.kal-grid__event-time{ display:none; }
	.kal-grid__event{ padding:2px 4px; border-left-width:2px; }
}

.kalender__hint{ display:block; margin-top:4px; font-size:.8125rem; font-weight:600; color:var(--c-red); }
.kalender__details{ margin-top:6px; font-size:.875rem; }
.kalender__details summary{ display:inline-flex; align-items:center; gap:6px; cursor:pointer; font-weight:700; color:var(--c-text-muted); list-style:none; }
.kalender__details summary::-webkit-details-marker{ display:none; }
.kalender__details summary::after{ content:'+'; font-weight:400; color:var(--c-red); transition:transform .2s ease; }
.kalender__details[open] summary::after{ transform:rotate(45deg); }
.kalender__desc{ display:block; margin-top:6px; color:var(--c-text-muted); line-height:1.55; }
.kalender__desc p{ margin:0 0 .5em; }
.kalender__desc a{ color:var(--c-red); text-decoration:underline; overflow-wrap:anywhere; }
.kalender__item--closed{ border-left-color:var(--c-text); }
.kalender__item--closed .kalender__date{ background:var(--c-bg-alt); color:var(--c-text); }
.kalender--sperren{ padding-top:0; }
.kalender__more{ margin:var(--sp-6, 32px) 0 0; }

.kal-next{ padding-top:0; padding-bottom:var(--sp-6, 32px); }
.kal-next__heading{ font-size:clamp(1.125rem, 1rem + .6vw, 1.375rem); margin:0 0 var(--sp-4, 16px); }
.kal-next__grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:var(--sp-3, 12px); }
.kal-next__card{
	display:flex; align-items:flex-start; gap:var(--sp-3, 12px); padding:var(--sp-4, 16px);
	background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius-md);
	box-shadow:var(--shadow-sm); transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.kal-next__card:hover{ box-shadow:var(--shadow-md); border-color:var(--c-red); }
.kal-next__date{
	flex:none; width:52px; height:52px; border-radius:12px;
	display:flex; flex-direction:column; align-items:center; justify-content:center;
	background:var(--c-red); color:#fff;
}
.kal-next__day{ font-size:1.125rem; font-weight:800; line-height:1; }
.kal-next__mon{ font-size:.6875rem; text-transform:uppercase; letter-spacing:.05em; margin-top:2px; }
.kal-next__body{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.kal-next__title{ font-weight:700; line-height:1.3; overflow-wrap:anywhere; }
.kal-next__meta{ font-size:.8125rem; color:var(--c-text-muted); line-height:1.4; }
@media (max-width:1100px){ .kal-next__grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); } }
@media (max-width:600px){ .kal-next__grid{ grid-template-columns:1fr; } }
.t-info{ position:relative; display:inline-flex; vertical-align:middle; margin-left:8px; }
.t-info__btn{ width:24px; height:24px; min-width:24px; border-radius:50%; border:1.5px solid var(--c-red); background:#fff; color:var(--c-red); font:700 .8125rem/1 Georgia, serif; font-style:italic; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; padding:0; transition:background .15s ease, color .15s ease; position:relative; }
.t-info__btn::before{ content:''; position:absolute; inset:-10px; }
.t-info__btn[aria-expanded="true"]{ background:var(--c-red); color:#fff; }
.t-info__btn:focus-visible{ outline:3px solid var(--c-red); outline-offset:2px; }
.t-info__pop{ position:absolute; z-index:1000; top:calc(100% + 10px); left:50%; transform:translateX(-50%); }
.t-info__pop.is-portal{ position:fixed; transform:none; width:min(320px, 86vw); background:#fff; color:var(--c-text, #12181F); border:1px solid #E4E9EE; border-radius:12px; box-shadow:0 12px 32px rgba(18,24,31,.16); padding:14px 16px; font-size:.875rem; font-weight:400; line-height:1.5; text-align:left; display:flex; flex-direction:column; gap:8px; }
.t-info__pop[hidden]{ display:none; }
.t-info__pop::before{ content:''; position:absolute; top:-10px; left:0; right:0; height:10px; }
.t-info.is-right .t-info__pop{ left:auto; right:-8px; transform:none; }
.t-info.is-left .t-info__pop{ left:-8px; transform:none; }
.t-info__title{ font-size:.9375rem; }
.t-info__rows{ display:flex; flex-direction:column; gap:4px; }
.t-info__row{ display:grid; grid-template-columns:110px 1fr; gap:8px; }
.t-info__k{ color:var(--c-text-muted); font-size:.8125rem; }
.t-info__desc p{ margin:0 0 .5em; }
.t-info__desc a, .t-info__link{ color:var(--c-red); text-decoration:underline; overflow-wrap:anywhere; font-weight:700; }
@media (max-width:600px){
	.t-info__pop{ position:fixed; left:12px; right:12px; bottom:12px; top:auto; transform:none; width:auto; max-height:70vh; overflow:auto; }
	.t-info.is-right .t-info__pop, .t-info.is-left .t-info__pop{ left:12px; right:12px; }
	.t-info__row{ grid-template-columns:1fr; gap:0; }
}

.t-info__pop.is-portal::before{ display:none; }
.t-info__nw{ white-space:nowrap; }
.t-info__files{ display:flex; flex-direction:column; gap:6px; padding-top:4px; border-top:1px solid #E4E9EE; }
.t-info__link.is-file::before{ content:'↓'; display:inline-block; margin-right:6px; text-decoration:none; }
