/* Gilden-Eventkalender – Frontend */

.gek {
	--gek-primary: #1f3a2b;
	--gek-accent: #a8823a;
	--gek-members: #7a1f2b;
	--gek-public: #2f6b3f;
	--gek-ring: #fff;
	--gek-line: rgba(0, 0, 0, .13);
	--gek-line: color-mix(in srgb, currentColor 14%, transparent);
	--gek-soft: rgba(0, 0, 0, .035);
	--gek-soft: color-mix(in srgb, currentColor 4%, transparent);
	--gek-radius: 6px;
	box-sizing: border-box;
	line-height: 1.5;
}
.gek *, .gek *::before, .gek *::after { box-sizing: inherit; }
.gek svg { width: 1em; height: 1em; flex: none; vertical-align: -.14em; }
.gek button { font: inherit; color: inherit; cursor: pointer; margin: 0; }
.gek :focus-visible { outline: 2px solid var(--gek-accent); outline-offset: 2px; }

/* ---------- Layout ---------- */

.gek-cal {
	display: grid;
	grid-template-columns: minmax(0, 1.65fr) minmax(17rem, 1fr);
	gap: clamp(1rem, 2.5vw, 2rem);
	align-items: start;
	margin: 1.5rem 0;
}
@media (max-width: 900px) {
	.gek-cal { grid-template-columns: 1fr; }
}

/* ---------- Kopfzeile ---------- */

.gek-cal__bar {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding-bottom: .75rem;
	margin-bottom: .9rem;
	border-bottom: 3px double var(--gek-accent);
}
.gek-cal__title {
	margin: 0 auto 0 0 !important;
	font-size: clamp(1.3rem, 2.6vw, 1.75rem) !important;
	line-height: 1.15 !important;
	color: var(--gek-primary);
}
.gek-iconbtn {
	display: inline-grid;
	place-items: center;
	width: 2.4rem;
	height: 2.4rem;
	padding: 0 !important;
	border: 1px solid var(--gek-line) !important;
	border-radius: 50% !important;
	background: transparent !important;
	color: inherit !important;
	font-size: 1.05rem;
}
.gek-iconbtn:hover { border-color: var(--gek-primary) !important; color: var(--gek-primary) !important; }
.gek-todaybtn {
	padding: .45rem 1.1rem !important;
	border: 1px solid var(--gek-primary) !important;
	border-radius: 999px !important;
	background: var(--gek-primary) !important;
	color: #fff !important;
	font-size: .875rem !important;
	font-weight: 600;
	line-height: 1.2;
}
.gek-todaybtn:hover { background: transparent !important; color: var(--gek-primary) !important; }

/* ---------- Monatsraster ---------- */

.gek-grid {
	border: 1px solid var(--gek-line);
	border-radius: var(--gek-radius);
	overflow: hidden;
	transition: opacity .2s;
}
.gek-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.gek-row + .gek-row { border-top: 1px solid var(--gek-line); }
.gek-row--head { background: var(--gek-primary); color: #fff; }
.gek-wd { padding: .55rem .25rem; text-align: center; font-size: .8rem; font-weight: 600; }
.gek-wd abbr { text-decoration: none; border: 0; cursor: default; }

.gek-cell {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 2px;
	min-height: 6rem;
	padding: .3rem .3rem .4rem !important;
	border: 0 !important;
	border-left: 1px solid var(--gek-line) !important;
	border-radius: 0 !important;
	background: transparent !important;
	color: inherit !important;
	text-align: left;
	overflow: hidden;
	font-weight: 400;
}
.gek-row .gek-cell:first-child { border-left: 0 !important; }
.gek-cell.is-weekend { background: var(--gek-soft) !important; }
.gek-cell:hover { background: color-mix(in srgb, var(--gek-primary) 6%, transparent) !important; }
.gek-cell.is-out { opacity: .42; }
.gek-cell.is-selected { background: color-mix(in srgb, var(--gek-primary) 9%, transparent) !important; }

.gek-num {
	display: inline-grid;
	place-items: center;
	width: 2.05rem;
	height: 2.05rem;
	margin-bottom: 2px;
	border-radius: 50%;
	font-size: .875rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}
.gek-cell.is-today .gek-num {
	color: var(--gek-accent);
	box-shadow: inset 0 0 0 2px var(--gek-accent);
}
/* Ausgewählter Tag als Schießscheibe */
.gek-cell.is-selected .gek-num {
	color: #fff;
	box-shadow: none;
	background: var(--gek-primary);
	background: radial-gradient(circle closest-side,
		var(--gek-primary) 0 56%,
		var(--gek-ring) 57% 65%,
		var(--gek-primary) 66% 76%,
		var(--gek-ring) 77% 85%,
		var(--gek-primary) 86% 100%);
}

.gek-chip {
	display: block;
	padding: .1rem .35rem;
	border-radius: 3px;
	background: var(--c, var(--gek-primary));
	color: #fff;
	font-size: .72rem;
	line-height: 1.4;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.gek-chip b { font-weight: 700; margin-right: .3em; }
.gek-chip svg { margin-right: .25em; width: .9em; height: .9em; }
.gek-chip.is-members {
	background: var(--c);
	background: repeating-linear-gradient(-45deg,
		var(--c) 0 5px,
		color-mix(in srgb, var(--c) 75%, #000) 5px 10px);
}
.gek-chip.is-cont {
	margin-left: -.3rem;
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
	opacity: .78;
}
.gek-more { padding-left: .2rem; font-size: .7rem; opacity: .75; }
.gek-dots { display: none; justify-content: center; gap: 3px; }
.gek-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--c); }

@media (max-width: 640px) {
	.gek-cell { min-height: 3.5rem; align-items: center; padding: .25rem .1rem !important; }
	.gek-chip, .gek-more { display: none; }
	.gek-dots { display: flex; }
	.gek-num { width: 1.95rem; height: 1.95rem; }
	.gek-wd { font-size: .72rem; }
	.gek-cal__title { font-size: 1.25rem !important; }
}

/* ---------- Legende & Badges ---------- */

.gek-legend {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem .75rem;
	margin: .85rem 0 0 !important;
	padding: 0 !important;
	list-style: none !important;
}
.gek-legend li { margin: 0 !important; }

.gek-badges { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .55rem; }
.gek-badge {
	display: inline-flex;
	align-items: center;
	gap: .35em;
	padding: .34em .7em;
	border: 1px solid currentColor;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
}
.gek-badge--public { color: var(--gek-public); }
.gek-badge--members { background: var(--gek-members); border-color: var(--gek-members); color: #fff; }
.gek-badge--rec { color: var(--gek-accent); }
.gek-badge--multi { color: var(--gek-primary); }

/* ---------- Tagesübersicht ---------- */

.gek-day {
	position: sticky;
	top: 1rem;
	padding: 1rem 1.1rem;
	border: 1px solid var(--gek-line);
	border-top: 4px solid var(--gek-primary);
	border-radius: var(--gek-radius);
}
@media (max-width: 900px) {
	.gek-day { position: static; }
}
.gek-day__bar { display: flex; align-items: center; gap: .5rem; padding-bottom: .5rem; }
.gek-day__label { flex: 1; margin: 0 !important; text-align: center; line-height: 1.25 !important; font-size: 1.15rem !important; }
.gek-day__wd { display: block; font-size: .82rem; font-weight: 500; opacity: .7; }
.gek-day__date { display: block; color: var(--gek-primary); }

.gek-ev {
	display: grid;
	grid-template-columns: 5.5rem minmax(0, 1fr);
	gap: .9rem;
	padding: .9rem 0 .9rem .8rem;
	border-top: 1px solid var(--gek-line);
	border-left: 4px solid var(--c, var(--gek-primary));
	margin-top: .6rem;
}
.gek-ev.no-img { grid-template-columns: minmax(0, 1fr); }
.gek-ev__img img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 4px; }
.gek-ev__cat { display: block; font-size: .75rem; font-weight: 600; color: var(--c, var(--gek-primary)); }
.gek-ev__title { margin: .1rem 0 .35rem !important; font-size: 1.05rem !important; line-height: 1.3 !important; }
.gek-ev__title a { color: inherit; text-decoration: none; }
.gek-ev__title a:hover { text-decoration: underline; text-underline-offset: .15em; }
.gek-ev__meta { display: flex; align-items: flex-start; gap: .45em; margin: .15rem 0 !important; font-size: .875rem; }
.gek-ev__meta svg { margin-top: .22em; color: var(--gek-primary); }
.gek-ev__note { display: flex; gap: .45em; margin: .55rem 0 0 !important; font-size: .85rem; color: var(--gek-members); }
.gek-ev__note svg { margin-top: .2em; }
.gek-ev__exc { margin: .55rem 0 0 !important; font-size: .875rem; opacity: .85; }
.gek-ev__actions { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; margin-top: .65rem; font-size: .85rem; }
.gek-ev__actions a { display: inline-flex; align-items: center; gap: .35em; color: var(--gek-primary); font-weight: 600; }

.gek-empty { padding: 1.5rem .5rem; text-align: center; opacity: .8; }
.gek-empty p { margin: 0; }

.gek-day__foot {
	display: flex;
	justify-content: space-between;
	gap: .5rem;
	margin-top: .9rem;
	padding-top: .75rem;
	border-top: 1px solid var(--gek-line);
}
.gek-link {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	padding: .3rem 0 !important;
	border: 0 !important;
	background: none !important;
	color: var(--gek-primary) !important;
	font-size: .85rem !important;
	font-weight: 600;
}
.gek-link:hover { text-decoration: underline; }
.gek-day__msg { margin: .5rem 0 0 !important; font-size: .85rem; opacity: .8; }
.gek-day__msg:empty { display: none; }

.gek.is-loading .gek-grid,
.gek.is-loading .gek-day__list { opacity: .45; pointer-events: none; }

/* ---------- Terminliste [gilden_termine] ---------- */

.gek-list { margin: 1rem 0 !important; padding: 0 !important; list-style: none !important; }
.gek-list__item {
	display: grid;
	grid-template-columns: 3.75rem minmax(0, 1fr);
	gap: 1rem;
	margin: 0 !important;
	padding: .95rem 0;
	border-top: 1px solid var(--gek-line);
}
.gek-list__item:first-child { border-top: 0; }
.gek-list__date, .gek-info__date {
	display: flex;
	flex-direction: column;
	align-items: center;
	align-self: start;
	padding: .45rem 0 .4rem;
	border: 2px solid var(--c, var(--gek-primary));
	border-radius: var(--gek-radius);
	line-height: 1;
	text-align: center;
}
.gek-list__d { font-size: 1.55rem; font-weight: 700; color: var(--gek-primary); font-variant-numeric: tabular-nums; }
.gek-list__m { margin-top: .25rem; font-size: .75rem; }

/* ---------- Einzelansicht ---------- */

.gek-info {
	display: grid;
	grid-template-columns: 4.75rem minmax(0, 1fr);
	gap: 1.25rem;
	margin: 0 0 1.75rem;
	padding: 1.25rem;
	border: 1px solid var(--gek-line);
	border-left: 5px solid var(--c, var(--gek-primary));
	border-radius: var(--gek-radius);
	background: var(--gek-soft);
}
.gek-info .gek-list__d { font-size: 1.9rem; }
.gek-info__actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
@media (max-width: 520px) {
	.gek-info { grid-template-columns: 1fr; }
	.gek-info__date { flex-direction: row; gap: .5rem; justify-self: start; padding: .4rem .8rem; }
	.gek-info__date .gek-list__m { margin-top: 0; }
}

.gek-btn {
	display: inline-flex;
	align-items: center;
	gap: .45em;
	padding: .55rem 1.1rem;
	border: 1px solid var(--gek-primary);
	border-radius: 999px;
	background: var(--gek-primary);
	color: #fff !important;
	font-size: .875rem;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none !important;
}
.gek-btn:hover { background: transparent; color: var(--gek-primary) !important; }
.gek-btn--ghost { background: transparent; color: var(--gek-primary) !important; }
.gek-btn--ghost:hover { background: var(--gek-primary); color: #fff !important; }

.gek-locked {
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	border-left: 4px solid var(--gek-members);
	background: rgba(122, 31, 43, .07);
	background: color-mix(in srgb, var(--gek-members) 8%, transparent);
}
.gek-locked p { margin: .25rem 0 !important; }
.gek-locked svg { color: var(--gek-members); }

.gek-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
	gap: .5rem;
	margin: 1.75rem 0;
}
.gek-gallery a { display: block; }
.gek-gallery img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: 4px; }

.gek-dates { margin: 1.75rem 0; }
.gek-dates ul { columns: 2 16rem; margin: .5rem 0 0; padding-left: 1.1rem; }
.gek-dates .is-current { font-weight: 700; }

/* ---------- Teilnahme ---------- */

.gek-rsvp {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem .85rem;
	margin-top: .75rem;
	padding-top: .65rem;
	border-top: 1px dashed var(--gek-line);
	font-size: .85rem;
}
.gek-rsvp__count { display: inline-flex; align-items: center; gap: .4em; opacity: .85; }
.gek-rsvp__btn {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	padding: .5rem 1.05rem !important;
	border: 1px solid var(--gek-accent) !important;
	border-radius: 999px !important;
	background: var(--gek-accent) !important;
	color: #fff !important;
	font-size: .875rem !important;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none !important;
	cursor: pointer;
}
.gek-rsvp__btn:hover { background: transparent !important; color: var(--gek-accent) !important; }
.gek-rsvp__btn--ghost { padding: .35rem .85rem !important; background: transparent !important; color: var(--gek-members) !important; border-color: currentColor !important; font-weight: 600; }
.gek-rsvp__btn--ghost:hover { background: var(--gek-members) !important; border-color: var(--gek-members) !important; color: #fff !important; }
.gek-rsvp__btn[disabled] { opacity: .55; cursor: wait; }
.gek-rsvp__state { font-weight: 600; }
.gek-rsvp__state.is-yes { display: inline-flex; align-items: center; gap: .35em; color: var(--gek-public); }
.gek-rsvp__left { opacity: .75; }
.gek-rsvp__names { flex-basis: 100%; }
.gek-rsvp__names summary { cursor: pointer; color: var(--gek-primary); font-weight: 600; }
.gek-rsvp__names p { margin: .3rem 0 0 !important; }
.gek-rsvp__msg { flex-basis: 100%; color: var(--gek-members); font-weight: 600; }
.gek-rsvp__msg:empty { display: none; }
.gek-info .gek-rsvp { margin-top: 1rem; padding-top: .9rem; }
.gek-chip.is-going { box-shadow: inset 0 0 0 2px var(--gek-accent); }

@media (prefers-reduced-motion: reduce) {
	.gek * { transition: none !important; }
}
