/* ============================================================
   TERMINBUCHUNG · Aussehen
   ------------------------------------------------------------
   Liegt meist auf dunklem Grund. Die Farben sind deshalb ueber
   Variablen gesetzt, damit die Buchung auch auf hellem
   Hintergrund funktioniert.
   ============================================================ */

.buchung {
  --bu-text:   var(--auf-dunkel);
  --bu-leise:  color-mix(in srgb, var(--papier) 58%, var(--tinte));
  --bu-linie:  color-mix(in srgb, var(--papier) 18%, transparent);
  --bu-feld:   color-mix(in srgb, var(--papier) 7%, transparent);
  --bu-aktiv:  var(--marke);
  color: var(--bu-text);
}
/* Auf hellem Grund (falls der Abschnitt nicht dunkel ist) */
.sektion:not(.sektion--dunkel) .buchung {
  --bu-text:  var(--text);
  --bu-leise: var(--text-leise);
  --bu-linie: var(--linie);
  --bu-feld:  var(--papier);
  background: var(--papier);
  border-color: var(--linie);
}

/* ---------- Fortschritt ---------- */
.bu-schritte {
  display: flex; align-items: center;
  list-style: none; margin: 0 0 clamp(1.5rem, 3.5vw, 2.5rem); padding: 0;
  gap: .35rem;
}
.bu-schritte li {
  display: flex; align-items: center; gap: .5rem;
  flex: 1; min-width: 0;
  font-size: var(--gr-xs); letter-spacing: .04em;
  color: var(--bu-leise);
  position: relative;
}
.bu-schritte li:not(:last-child)::after {
  content: ''; flex: 1; height: 1px; background: var(--bu-linie); min-width: .5rem;
}
.bu-schritte__nr {
  display: grid; place-items: center; flex: none;
  width: 1.6rem; height: 1.6rem; border-radius: 50%;
  border: 1px solid var(--bu-linie);
  font-size: .75rem; font-weight: 600;
  font-variant-numeric: lining-nums;
}
.bu-schritte .ist-hier { color: var(--bu-text); font-weight: 600; }
.bu-schritte .ist-hier .bu-schritte__nr {
  background: var(--bu-aktiv); border-color: var(--bu-aktiv); color: #fff;
}
.bu-schritte .ist-fertig .bu-schritte__nr {
  border-color: var(--bu-aktiv); color: var(--bu-aktiv);
}
@media (max-width: 620px) {
  .bu-schritte__text { display: none; }
  .bu-schritte li { flex: none; }
  .bu-schritte li:not(:last-child)::after { min-width: 1.25rem; }
}

/* ---------- Allgemeines ---------- */
.bu-inhalt { animation: bu-herein .34s cubic-bezier(.16,1,.3,1) both; }
@keyframes bu-herein { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

.bu-frage {
  font-size: var(--gr-xl); margin-bottom: .3rem;
  color: inherit;
}
.sektion--dunkel .bu-frage { color: var(--papier); }
.bu-unter { color: var(--bu-leise); font-size: var(--gr-s); margin-bottom: var(--r5); }
.bu-gruppe {
  font-family: var(--schrift-klein);
  font-size: var(--gr-xs); font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--bu-leise);
  margin: var(--r5) 0 var(--r3);
}
.bu-zurueck {
  background: none; border: 0; padding: 0 0 var(--r4);
  color: var(--bu-leise); font-size: var(--gr-s); cursor: pointer;
  transition: color var(--schnell);
}
.bu-zurueck:hover { color: var(--bu-aktiv); }

.bu-laedt {
  display: flex; flex-direction: column; align-items: center; gap: var(--r4);
  padding: var(--r9) var(--r4); color: var(--bu-leise); font-size: var(--gr-s);
}
.bu-kreisel {
  width: 1.6rem; height: 1.6rem; border-radius: 50%;
  border: 2px solid var(--bu-linie); border-top-color: var(--bu-aktiv);
  animation: bu-dreht .8s linear infinite;
}
@keyframes bu-dreht { to { transform: rotate(360deg); } }

.bu-fehler, .bu-leer {
  text-align: center; padding: var(--r7) var(--r4);
  color: var(--bu-leise); font-size: var(--gr-s);
}
.bu-fehler .knopf { margin-top: var(--r4); }

/* ---------- Leistungsauswahl ---------- */
.bu-wahl {
  display: grid; gap: .6rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}
.bu-karte {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--r4);
  padding: 1rem 1.15rem;
  background: var(--bu-feld);
  border: 1px solid var(--bu-linie);
  border-radius: var(--ecke-m);
  color: inherit; text-align: left; cursor: pointer;
  transition: border-color var(--schnell), background var(--schnell), transform var(--schnell);
}
.bu-karte:hover {
  border-color: var(--bu-aktiv);
  background: color-mix(in srgb, var(--bu-aktiv) 12%, transparent);
  transform: translateY(-1px);
}
.bu-karte__name { font-size: var(--gr-m); line-height: 1.3; }
.bu-karte__dauer {
  font-size: var(--gr-xs); color: var(--bu-leise); white-space: nowrap;
  font-variant-numeric: lining-nums;
}

/* ---------- Kalender ---------- */
.bu-monatswahl {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--r4); margin: var(--r5) 0 var(--r4);
}
.bu-monatsname {
  font-family: var(--schrift-titel); font-size: var(--gr-l);
  font-variant-numeric: lining-nums;
}
.sektion--dunkel .bu-monatsname { color: var(--papier); }
.bu-pfeil {
  width: 2.4rem; height: 2.4rem; flex: none;
  display: grid; place-items: center;
  background: var(--bu-feld); color: inherit;
  border: 1px solid var(--bu-linie); border-radius: var(--ecke-rund);
  font-size: 1.25rem; line-height: 1; cursor: pointer;
  transition: border-color var(--schnell), background var(--schnell);
}
.bu-pfeil:hover:not(:disabled) { border-color: var(--bu-aktiv); }
.bu-pfeil:disabled { opacity: .3; cursor: not-allowed; }

.bu-wochentage {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: .3rem;
  margin-bottom: .3rem;
}
.bu-wochentage span {
  text-align: center; font-size: var(--gr-xs);
  color: var(--bu-leise); letter-spacing: .08em; padding-bottom: .3rem;
}

.bu-kalender { display: grid; grid-template-columns: repeat(7, 1fr); gap: .3rem; }
.bu-tag {
  position: relative;
  aspect-ratio: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .18rem;
  background: transparent; color: var(--bu-leise);
  border: 1px solid transparent; border-radius: var(--ecke-m);
  font-size: var(--gr-s); cursor: default;
  font-variant-numeric: lining-nums;
  transition: background var(--schnell), border-color var(--schnell), color var(--schnell);
}
.bu-tag--leer { visibility: hidden; }
.bu-tag:disabled { opacity: .32; }
.bu-tag.ist-frei {
  color: var(--bu-text);
  background: var(--bu-feld);
  border-color: var(--bu-linie);
  cursor: pointer;
}
.bu-tag.ist-frei:hover {
  border-color: var(--bu-aktiv);
  background: color-mix(in srgb, var(--bu-aktiv) 16%, transparent);
}
.bu-tag.ist-gewaehlt {
  background: var(--bu-aktiv); border-color: var(--bu-aktiv); color: #fff;
}
.bu-tag__punkt {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--bu-aktiv);
}
.bu-tag.ist-gewaehlt .bu-tag__punkt { background: #fff; }

.bu-legende {
  display: flex; align-items: center; gap: .5rem;
  margin-top: var(--r4); font-size: var(--gr-xs); color: var(--bu-leise);
}

/* ---------- Uhrzeiten ---------- */
.bu-zeiten {
  display: grid; gap: .45rem;
  grid-template-columns: repeat(auto-fill, minmax(5.2rem, 1fr));
}
.bu-zeit {
  padding: .7rem .4rem;
  background: var(--bu-feld); color: inherit;
  border: 1px solid var(--bu-linie); border-radius: var(--ecke-m);
  font-size: var(--gr-s); font-weight: 500; cursor: pointer;
  font-variant-numeric: lining-nums tabular-nums;
  transition: border-color var(--schnell), background var(--schnell), transform var(--schnell);
}
.bu-zeit:hover {
  border-color: var(--bu-aktiv);
  background: color-mix(in srgb, var(--bu-aktiv) 16%, transparent);
  transform: translateY(-1px);
}

/* ---------- Zusammenfassung und Formular ---------- */
.bu-zusammenfassung {
  padding: var(--r4) var(--r5);
  background: color-mix(in srgb, var(--bu-aktiv) 13%, transparent);
  border: 1px solid color-mix(in srgb, var(--bu-aktiv) 40%, transparent);
  border-radius: var(--ecke-m);
  margin-block: var(--r4) var(--r5);
}
.bu-zusammenfassung > div { display: flex; flex-direction: column; gap: .12rem; }
.bu-zusammenfassung__label {
  font-size: var(--gr-xs); letter-spacing: .14em; text-transform: uppercase;
  color: var(--bu-leise); margin-bottom: .25rem;
}
.bu-zusammenfassung strong {
  font-family: var(--schrift-titel); font-size: var(--gr-l); font-weight: 500;
}
.sektion--dunkel .bu-zusammenfassung strong { color: var(--papier); }
.bu-zusammenfassung span { font-size: var(--gr-s); color: var(--bu-leise); }

.bu-formular { display: grid; gap: var(--r4); }
.bu-reihe { display: grid; gap: var(--r4); grid-template-columns: 1fr 1fr; }
@media (max-width: 560px) { .bu-reihe { grid-template-columns: 1fr; } }

.bu-formular .feld > label { color: inherit; }
.sektion--dunkel .bu-formular .feld > label { color: var(--papier); }
.bu-formular input, .bu-formular textarea {
  background: var(--bu-feld);
  border-color: var(--bu-linie);
  color: inherit;
}
.sektion--dunkel .bu-formular input::placeholder,
.sektion--dunkel .bu-formular textarea::placeholder {
  color: color-mix(in srgb, var(--papier) 42%, transparent);
}
.bu-formular .haken { color: var(--bu-leise); }
.bu-hinweis { font-size: var(--gr-xs); color: var(--bu-leise); }
.bu-honig { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }

.bu-meldung { margin: 0; font-size: var(--gr-s); min-height: 1.2em; }
.bu-meldung.ist-fehler { color: #ffb4a8; font-weight: 600; }
.sektion:not(.sektion--dunkel) .bu-meldung.ist-fehler { color: #c0392b; }

/* ---------- Bestätigung ---------- */
.bu-fertig {
  text-align: center; padding: var(--r7) var(--r4);
  display: flex; flex-direction: column; align-items: center; gap: var(--r4);
  animation: bu-herein .45s cubic-bezier(.16,1,.3,1) both;
}
.bu-fertig svg { color: var(--bu-aktiv); }
.bu-fertig h3 { font-size: var(--gr-xl); margin: 0; }
.sektion--dunkel .bu-fertig h3 { color: var(--papier); }
.bu-fertig__karte {
  display: flex; flex-direction: column; gap: .2rem;
  padding: var(--r5) var(--r6);
  background: var(--bu-feld);
  border: 1px solid var(--bu-linie);
  border-radius: var(--ecke-m);
}
.bu-fertig__karte strong {
  font-family: var(--schrift-titel); font-size: var(--gr-l); font-weight: 500;
}
.sektion--dunkel .bu-fertig__karte strong { color: var(--papier); }
.bu-fertig__karte span { font-size: var(--gr-s); color: var(--bu-leise); }
.bu-fertig p { color: var(--bu-leise); font-size: var(--gr-s); max-width: 42ch; margin: 0; }
.bu-fertig__freuen {
  font-family: var(--schrift-titel); font-size: var(--gr-l) !important;
  color: var(--bu-text) !important; margin-top: var(--r2) !important;
}
