/* ACE Terminkalender – Frontend. Alle Klassen mit Präfix .ace-tk-, keine externen Ressourcen/Schriften.
   Farben lassen sich über CSS-Variablen am Element .ace-tk überschreiben. */
.ace-tk{
	--ace-tk-accent:#7EAB93;
	--ace-tk-accent-dark:#47765e;
	--ace-tk-ink:#202724;
	--ace-tk-muted:#59645d;
	--ace-tk-line:#b7c6bb;
	--ace-tk-soft:#e9eee9;
	--ace-tk-card:#f7f9f5;
	--ace-tk-max:1340px;
	width:min(var(--ace-tk-max),calc(100% - 44px));
	margin:0 auto;
	color:var(--ace-tk-ink);
	font-family:inherit;
	line-height:1.65;
}
.ace-tk *,.ace-tk *::before,.ace-tk *::after{box-sizing:border-box}
.ace-tk-main{padding:70px 0 110px}
.ace-tk .ace-tk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ace-tk .ace-tk-heading{font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.15;letter-spacing:-.04em;margin:0 0 28px}
.ace-tk .ace-tk-empty{color:var(--ace-tk-muted);margin:24px 0}

/* Layout: Veranstaltungen links (ca. 60 %), kompakter Kalender rechts (ca. 40 %), oben bündig */
.ace-tk-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:clamp(36px,5vw,84px);align-items:start}
.ace-tk-layout .ace-tk-heading{margin-bottom:26px}

/* Kalender (kompakt, ohne Rahmen und Fläche) */
.ace-tk-cal{margin:0}
.ace-tk-cal[aria-busy="true"]{opacity:.55;transition:opacity .2s}
.ace-tk-cal__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.ace-tk .ace-tk-cal__title{font-size:1.05rem;font-weight:700;line-height:1.2;letter-spacing:-.01em;margin:0;text-align:center;flex:1}
.ace-tk-cal__nav{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--ace-tk-line);color:var(--ace-tk-ink);font-size:1.15rem;line-height:1;text-decoration:none;transition:background .2s,color .2s,border-color .2s}
.ace-tk-cal__nav:hover,.ace-tk-cal__nav:focus-visible{background:var(--ace-tk-ink);border-color:var(--ace-tk-ink);color:#fff}
.ace-tk-cal__grid{width:100%;border-collapse:separate;border-spacing:2px;table-layout:fixed;margin:0}
.ace-tk-cal__grid th{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--ace-tk-muted);padding:4px 0;text-align:center;border:0}
.ace-tk-cal__grid abbr{text-decoration:none}
.ace-tk-cal__grid td{padding:0;border:0;text-align:center}
.ace-tk-day>a,.ace-tk-day>span{display:flex;align-items:center;justify-content:center;width:100%;height:36px;font-size:.85rem;color:var(--ace-tk-muted);text-decoration:none}
.ace-tk-day.is-today>span,.ace-tk-day.is-today>a{box-shadow:inset 0 -2px 0 var(--ace-tk-accent)}
.ace-tk-day.has-events>a{background:var(--ace-tk-accent);color:var(--ace-tk-ink);font-weight:700;transition:background .2s}
.ace-tk-day.has-events>a:hover,.ace-tk-day.has-events>a:focus-visible{background:#a3c3b0}
.ace-tk-day.is-selected>a{background:var(--ace-tk-ink);color:#fff}
.ace-tk .ace-tk-cal .ace-tk-empty{font-size:.88rem;margin:14px 0 0}

/* Tagesliste unter dem Kalender */
.ace-tk-panels{margin-top:8px}
.ace-tk-day-panel{display:none;margin-top:18px;padding-top:16px;border-top:1px solid var(--ace-tk-line)}
.ace-tk-day-panel.is-open{display:block}
.ace-tk .ace-tk-day-panel__title{font-size:.95rem;font-weight:700;letter-spacing:-.01em;margin:0 0 12px}

/* Veranstaltungskarten: Bild links, Text rechts, einheitliches Bildformat */
.ace-tk-cards{display:grid;grid-template-columns:1fr;gap:22px}
.ace-tk-card{display:flex;flex-direction:row;align-items:stretch;background:var(--ace-tk-card);border:1px solid var(--ace-tk-line);transition:transform .25s ease,box-shadow .25s ease}
.ace-tk-card:hover,.ace-tk-card:focus-within{transform:translateY(-3px);box-shadow:0 20px 40px -26px rgba(32,39,36,.4)}
.ace-tk-card__media{position:relative;display:block;flex:0 0 38%;min-height:190px;overflow:hidden;background:var(--ace-tk-soft)}
.ace-tk-card__media img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:transform .6s ease,filter .4s ease}
.ace-tk-card:hover .ace-tk-card__media img{transform:scale(1.035);filter:grayscale(.55)}
.ace-tk-card__placeholder{position:absolute;inset:0;display:block;background:linear-gradient(135deg,var(--ace-tk-accent) 0%,#a3c3b0 50%,#dbe3dc 100%)}
.ace-tk-card__body{display:flex;flex-direction:column;flex:1;min-width:0;padding:24px 26px 26px}
.ace-tk .ace-tk-card__date{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;margin:0 0 12px;padding-left:10px;border-left:3px solid var(--ace-tk-accent)}
.ace-tk .ace-tk-card__title{font-size:1.35rem;line-height:1.2;letter-spacing:-.03em;margin:0 0 10px}
.ace-tk-card__title a{color:inherit;text-decoration:none;background:linear-gradient(var(--ace-tk-accent),var(--ace-tk-accent)) 0 100%/0 2px no-repeat;transition:background-size .3s}
.ace-tk-card__title a:hover,.ace-tk-card__title a:focus-visible{background-size:100% 2px}
.ace-tk .ace-tk-card__text{color:var(--ace-tk-muted);font-size:.93rem;margin:0 0 18px;flex:1}
.ace-tk-link{align-self:flex-start;font-size:.82rem;font-weight:700;color:var(--ace-tk-ink);text-decoration:none;border-bottom:1px solid var(--ace-tk-accent);padding-bottom:4px}
.ace-tk-link:hover,.ace-tk-link:focus-visible{border-color:var(--ace-tk-ink)}

/* Kompakte Karten in der Tagesliste */
.ace-tk-day-panel .ace-tk-cards{gap:12px}
.ace-tk-day-panel .ace-tk-card__media{flex-basis:30%;min-height:96px}
.ace-tk-day-panel .ace-tk-card__body{padding:12px 14px 14px}
.ace-tk .ace-tk-day-panel .ace-tk-card__title{font-size:1rem;margin-bottom:6px}
.ace-tk .ace-tk-day-panel .ace-tk-card__date{font-size:.7rem;margin-bottom:6px}
.ace-tk-day-panel .ace-tk-card__text{display:none}
.ace-tk-day-panel .ace-tk-link{font-size:.76rem}

/* Veranstaltungsseite */
.ace-tk-event{padding-bottom:20px}
.ace-tk-event__hero{margin-bottom:46px}
.ace-tk-event__image{display:block;width:100%;max-height:620px;object-fit:cover;filter:grayscale(1)}
.ace-tk .ace-tk-event__title{font-size:clamp(2.4rem,5vw,4.6rem);line-height:1.08;letter-spacing:-.05em;margin:0 0 30px}
.ace-tk-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 36px;margin:0 0 34px;padding:0;border-top:1px solid var(--ace-tk-line)}
.ace-tk-facts>div{padding:18px 0;border-bottom:1px solid var(--ace-tk-line)}
.ace-tk-facts dt{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--ace-tk-muted);margin:0 0 4px}
.ace-tk-facts dd{margin:0;font-size:1.05rem}
.ace-tk-event__content{max-width:760px;font-size:1.08rem;line-height:1.8;margin:46px 0 70px}
.ace-tk-event__content>*:first-child{margin-top:0}
.ace-tk-button{display:inline-flex;align-items:center;justify-content:center;padding:15px 28px;background:var(--ace-tk-accent);border:1px solid var(--ace-tk-accent);color:var(--ace-tk-ink);font:inherit;font-weight:600;font-size:.88rem;text-decoration:none;cursor:pointer;transition:background .2s,color .2s}
.ace-tk-button:hover,.ace-tk-button:focus-visible{background:var(--ace-tk-ink);border-color:var(--ace-tk-ink);color:#fff}

/* Anmeldung */
.ace-tk-register{background:var(--ace-tk-soft);padding:clamp(24px,4vw,56px);scroll-margin-top:24px}
.ace-tk .ace-tk-lead{max-width:640px;color:var(--ace-tk-muted);margin:0 0 26px}
.ace-tk-form{max-width:760px}
.ace-tk-form p{margin:0 0 20px}
.ace-tk-form__row{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.ace-tk-form label{display:block;font-size:.84rem;font-weight:600;margin-bottom:6px}
.ace-tk-form input[type=text],.ace-tk-form input[type=email],.ace-tk-form input[type=number],.ace-tk-form textarea{display:block;width:100%;padding:13px 14px;border:1px solid var(--ace-tk-line);background:#fff;color:var(--ace-tk-ink);font:inherit;border-radius:0}
.ace-tk-form input:focus,.ace-tk-form textarea:focus{outline:2px solid var(--ace-tk-accent);outline-offset:1px;border-color:var(--ace-tk-accent-dark)}
.ace-tk-consent label{display:flex;gap:12px;align-items:flex-start;font-weight:400;font-size:.9rem}
.ace-tk-consent input{margin-top:5px;flex:none}
.ace-tk-consent a{color:var(--ace-tk-accent-dark)}
.ace-tk-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.ace-tk-notice{max-width:760px;padding:16px 20px;border-left:4px solid var(--ace-tk-accent);background:#fff;margin:0 0 22px}
.ace-tk-notice--success{border-left-color:var(--ace-tk-accent-dark)}
.ace-tk-notice--error{border-left-color:#b3402a}
.ace-tk-notice--admin{border-left-color:#c9a227;font-size:.9rem}
.ace-tk-notice ul{margin:0;padding-left:1.1em}

/* Externe Anmeldung */
.ace-tk-button--small{align-self:flex-start;padding:12px 20px;font-size:.82rem}
.ace-tk-button--large{padding:17px 34px;font-size:.95rem}
.ace-tk-card__book{margin-top:14px}
.ace-tk-day-panel .ace-tk-card__book{display:none}
.ace-tk-register--external .ace-tk-lead{margin-bottom:22px}

/* Hinweis ohne kommende Termine */
.ace-tk-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;background:var(--ace-tk-card);border:1px solid var(--ace-tk-line);border-top:3px solid var(--ace-tk-accent);padding:clamp(36px,6vw,64px) clamp(22px,5vw,56px)}
.ace-tk-empty-state__icon{color:var(--ace-tk-accent-dark);opacity:.8;margin-bottom:18px}
.ace-tk .ace-tk-empty-state__title{font-size:clamp(1.4rem,2.6vw,1.9rem);line-height:1.2;letter-spacing:-.03em;margin:0 0 10px}
.ace-tk .ace-tk-empty-state__text{max-width:34em;margin:0;color:var(--ace-tk-muted)}

@media(max-width:900px){
	.ace-tk-layout{grid-template-columns:1fr;gap:56px}
}
@media(max-width:600px){
	.ace-tk-button--large,.ace-tk-register--external .ace-tk-button{width:100%}
	.ace-tk-card__book{align-self:stretch}
	.ace-tk{width:min(100% - 32px,var(--ace-tk-max))}
	.ace-tk-main{padding:46px 0 80px}
	.ace-tk-card{flex-direction:column}
	.ace-tk-card__media{flex:none;width:100%;min-height:0;aspect-ratio:16/10}
	.ace-tk-card__body{padding:20px 20px 24px}
	.ace-tk-form__row{grid-template-columns:1fr}
	.ace-tk-day>a,.ace-tk-day>span{height:40px}
	.ace-tk-day-panel .ace-tk-card{flex-direction:row}
	.ace-tk-day-panel .ace-tk-card__media{flex:0 0 30%;width:auto;aspect-ratio:auto;min-height:90px}
}
@media(prefers-reduced-motion:reduce){
	.ace-tk-card,.ace-tk-card__media img,.ace-tk-day.has-events>a,.ace-tk-card__title a{transition:none}
	.ace-tk-card:hover,.ace-tk-card:focus-within,.ace-tk-day.has-events>a:hover{transform:none}
}
