/* ============================================================================
   Buchungsstrecke im Design „Schnitt" (Friseur Schilling)
   ---------------------------------------------------------------------------
   Rein additiv: ueberschreibt das Bootstrap-Standardlayout von
   Easy!Appointments. Kein Eingriff in die Buchungslogik.

   Uebernommen aus ~/Friseur Website/assets/css/style.css:
   Farbtokens, Syne/Schibsted/DM-Mono, Schnittlinie als Strukturprinzip
   (Label ueber der Linie, Titel darunter), scharfe Kanten, Signalrot in
   Flaechen statt als Deko, Kornstruktur.
   ========================================================================== */

:root {
  --paper: #ffffff;
  --ink: #111111;
  --signal: #da1f14;
  --ash: #6e6e6e;
  --haze: #f1f0ed;
  --night: #0b0b0b;
  --line: rgba(17, 17, 17, 0.14);
  --line-strong: rgba(17, 17, 17, 0.28);

  --f-disp: "Syne", "Trebuchet MS", sans-serif;
  --f-body: "Schibsted Grotesk", "Helvetica Neue", Arial, sans-serif;
  --f-mono: "DM Mono", "SFMono-Regular", Menlo, monospace;

  --gut: clamp(1.25rem, 5vw, 4rem);
  --ease: cubic-bezier(0.2, 0.7, 0.3, 1);
  --snap: cubic-bezier(0.16, 1.2, 0.3, 1);
}

/* Easy!Appointments faerbt Buttons, Slots und Kalender ueber die
   Bootstrap-Primaerfarbe (ein Gruen). Ein Tausch an der Wurzel ist
   wirksamer als Dutzende Einzelregeln. */
:root,
#book-appointment-wizard,
.flatpickr-calendar {
  --bs-primary: #da1f14 !important;
  --bs-primary-rgb: 218, 31, 20 !important;
  --bs-link-color: #da1f14 !important;
  --bs-link-hover-color: #111111 !important;
}

/* ------------------------------------------------------------------ Grund */
body {
  font-family: var(--f-body) !important;
  color: var(--ink);
  background: var(--paper) !important;
  -webkit-font-smoothing: antialiased;
}

/* Kornstruktur — Fotopapier statt Bildschirm. */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 60;
  pointer-events: none;
  opacity: 0.045;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

::selection { background: var(--signal); color: #fff; }

:focus-visible {
  outline: 2px solid var(--signal);
  outline-offset: 3px;
  border-radius: 0;
}

/* Die zentrierte Bootstrap-Box aufloesen — moderne Buchungstools nutzen die
   volle Breite und fuehren stattdessen ueber Typografie. */
#main.container {
  max-width: none !important;
  padding: 0 !important;
}
#main .row.wrapper { margin: 0 !important; }

#book-appointment-wizard {
  max-width: 68rem;
  width: 100%;
  margin-inline: auto !important;
  background: var(--paper) !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
}

/* ---------------------------------------------------------------- Header */
#header {
  background: var(--paper) !important;
  border-bottom: 1px solid var(--line);
  padding: 1.5rem var(--gut) 1.25rem !important;
  align-items: flex-end !important;
  gap: 1.5rem;
}

#company-logo { display: none !important; }

#company-name {
  color: var(--ink) !important;
  font-family: var(--f-disp) !important;
  font-weight: 800 !important;
  font-size: clamp(1.35rem, 1rem + 1.6vw, 2.1rem) !important;
  line-height: 1 !important;
  letter-spacing: -0.03em;
  text-transform: uppercase;
  margin: 0 !important;
}

/* „Dienstleistung │ Mitarbeiter" — die Brotkrume unter der Wortmarke */
.display-booking-selection {
  display: inline-block;
  margin-top: 0.7rem;
  font-family: var(--f-mono) !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ash) !important;
}

/* ------------------------------------------------------- Schritt-Anzeige */
/* Statt Kreisen: eine Leiste aus Ziffern auf einer Linie. Der aktive
   Schritt traegt den roten Block — dieselbe Geste wie .sec-head__rule. */
#steps {
  width: auto !important;
  display: flex !important;
  gap: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
}

/* Easy!Appointments setzt hier selbst `#book-appointment-wizard .book-step:not(.active-step)`
   mit !important — die Selektoren muessen diese Spezifitaet erreichen. */
#book-appointment-wizard .book-step,
#book-appointment-wizard .book-step:not(.active-step),
#book-appointment-wizard .book-step.active-step {
  position: relative;
  display: grid !important;
  place-items: center;
  width: 2.75rem !important;
  height: 2.25rem !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-top: 2px solid var(--line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transition: border-color 0.35s var(--ease);
}
#book-appointment-wizard .book-step strong,
#book-appointment-wizard .book-step:not(.active-step) strong {
  font-family: var(--f-mono) !important;
  font-size: 0.8rem !important;
  font-weight: 400 !important;
  color: var(--ash) !important;
  transition: color 0.35s var(--ease);
}
#book-appointment-wizard .book-step.active-step {
  border-top-color: var(--signal) !important;
}
#book-appointment-wizard .book-step.active-step strong {
  color: var(--signal) !important;
  font-size: 0.8rem !important;
}

/* --------------------------------------------------------------- Frames */
.wizard-frame {
  padding: clamp(2rem, 5vw, 3.5rem) var(--gut) 0 !important;
}
.frame-container {
  min-height: 0 !important;
  padding: 0 !important;
}

/* Schnittlinie als Strukturprinzip: Label ueber der Linie, Titel darunter. */
.frame-title {
  position: relative;
  margin: 0 0 clamp(2rem, 4vw, 3rem) !important;
  padding-top: 2.35rem;
  font-family: var(--f-disp) !important;
  font-weight: 700 !important;
  font-size: clamp(1.85rem, 1.2rem + 2.4vw, 3.25rem) !important;
  line-height: 0.98 !important;
  letter-spacing: -0.035em;
  color: var(--ink) !important;
  text-align: left !important;
}
.frame-title::before {
  content: attr(data-label);
  position: absolute;
  left: 0;
  top: 0;
  font-family: var(--f-mono);
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--signal);
}
.frame-title::after {
  content: "";
  position: absolute;
  left: 0;
  top: 1.65rem;
  width: 100%;
  height: 1px;
  background: var(--line);
}
/* der rote Block auf der Linie */
.frame-title .rule-mark {
  position: absolute;
  left: 0;
  top: calc(1.65rem - 3px);
  width: 3.5rem;
  height: 7px;
  background: var(--signal);
}

.frame-content { margin: 0 !important; }
.frame-content > [class*="col"] {
  width: 100% !important;
  max-width: none !important;
  flex: 0 0 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ------------------------------------------------------- Auswahl-Karten */
/* Die nativen <select> bleiben im DOM (versteckt) — die gesamte JS-Logik
   von Easy!Appointments haengt daran. Die Karten spiegeln sie nur. */
.sch-native { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

.sch-label {
  display: block;
  margin: 0 0 1rem;
  font-family: var(--f-mono);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ash);
}
.sch-label i { font-style: normal; color: var(--signal); padding-inline: 0.2em; }

.sch-block + .sch-block { margin-top: clamp(2.25rem, 4vw, 3.25rem); }

/* Trennlinien liegen auf den Karten, nicht als Rasterluecke im Hintergrund —
   sonst erscheint bei ungerader Kartenzahl eine graue Leerzelle. */
.sch-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  background: transparent;
  border-top: 1px solid var(--line);
}
.sch-cards .sch-card { border-bottom: 1px solid var(--line); }

@media (min-width: 46rem) {
  .sch-cards--split { grid-template-columns: 1fr 1fr; }
  .sch-cards--split .sch-card:nth-child(odd) {
    border-right: 1px solid var(--line);
  }
}

.sch-card {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: 0.35rem 1.25rem;
  padding: 1.35rem 1.15rem 1.4rem;
  background: var(--paper);
  cursor: pointer;
  text-align: left;
  border: 0;
  width: 100%;
  transition: background 0.3s var(--ease);
}
.sch-card:hover { background: var(--haze); }

/* rote Kante beim Hover und in der Auswahl — wie .tcard__meta::after */
.sch-card::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 2px;
  background: var(--signal);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.4s var(--ease);
}
.sch-card:hover::after { transform: scaleX(0.35); }
.sch-card.is-selected::after { transform: scaleX(1); }
.sch-card.is-selected { background: var(--haze); }

.sch-card__name {
  font-family: var(--f-disp);
  font-weight: 700;
  font-size: 1.08rem;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--ink);
}
.sch-card__desc {
  grid-column: 1 / -1;
  margin: 0.35rem 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--ash);
  max-width: 48ch;
}
.sch-card__price {
  font-family: var(--f-mono);
  font-size: 0.95rem;
  font-variant-numeric: tabular-nums;
  color: var(--signal);
  white-space: nowrap;
}
.sch-card__dur {
  grid-column: 1 / -1;
  margin-top: 0.5rem;
  font-family: var(--f-mono);
  font-size: 0.7rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--ash);
}

/* -------- Mitarbeiter-Karten: Monogramm statt Foto (keine Bilder in EA) */
.sch-card--person {
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 0 1rem;
}
.sch-mono {
  width: 2.9rem;
  height: 2.9rem;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-family: var(--f-disp);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  color: var(--ink);
  transition: border-color 0.3s var(--ease), background 0.3s var(--ease), color 0.3s var(--ease);
}
.sch-card:hover .sch-mono { border-color: var(--signal); }
.sch-card.is-selected .sch-mono {
  background: var(--signal);
  border-color: var(--signal);
  color: #fff;
}
.sch-card--person .sch-card__role {
  margin-top: 0.2rem;
  font-family: var(--f-mono);
  font-size: 0.7rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--ash);
}
/* „Egal wer" bekommt ein Rautenzeichen statt Initialen */
.sch-card--any .sch-mono { font-family: var(--f-mono); font-size: 1.2rem; color: var(--ash); }

/* Beschreibungstext, den EA per JS fuellt */
#service-description {
  margin-top: 1.5rem !important;
  padding: 1.15rem 1.25rem !important;
  max-height: none !important;
  background: var(--haze);
  border-left: 2px solid var(--signal);
  font-size: 0.9rem !important;
  color: var(--ash);
}
#service-description:empty { display: none; }

/* -------------------------------------------------- Termin absagen/ändern */
/* Wer aus der Mail kommt, will meist genau eines: absagen oder verschieben.
   Der Bereich steht deshalb deutlich oben, nicht als blasser Hinweisstreifen. */
#cancel-appointment-frame,
.booking-header-bar {
  background: var(--haze) !important;
  border: 0 !important;
  border-left: 3px solid var(--signal) !important;
  border-radius: 0 !important;
  margin: 0 var(--gut) clamp(1.5rem, 3vw, 2.5rem) !important;
  padding: 1.25rem 1.35rem !important;
  align-items: center;
}
#cancel-appointment-frame small,
.booking-header-bar small {
  font-size: 0.95rem !important;
  line-height: 1.5;
  color: var(--ink) !important;
}

/* Wegbeschreibung: was der Kunde hier tun kann */
.sch-manage__label {
  margin: 0 0 0.5rem !important;
  font-family: var(--f-mono);
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--signal);
}
.sch-manage__title {
  margin: 0 0 1.4rem !important;
  font-family: var(--f-disp);
  font-weight: 700;
  font-size: clamp(1.3rem, 1rem + 1vw, 1.75rem);
  letter-spacing: -0.025em;
  color: var(--ink);
}
.sch-manage__options {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.35rem;
}
@media (min-width: 46rem) {
  .sch-manage__options { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
}
.sch-manage__option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0 0.9rem;
  align-items: start;
}
.sch-manage__num {
  font-family: var(--f-mono);
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  color: var(--signal);
  padding-top: 0.15rem;
}
.sch-manage__option strong {
  display: block;
  font-family: var(--f-disp);
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin-bottom: 0.3rem;
}
.sch-manage__option p {
  margin: 0 0 0.9rem !important;
  font-size: 0.9rem !important;
  line-height: 1.5;
  color: var(--ash) !important;
}
.sch-manage__option form { margin: 0; }
#cancel-appointment-frame .btn,
.booking-header-bar .btn {
  height: 2.9rem;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding-inline: 1.5rem !important;
  border-radius: 0 !important;
  font-family: var(--f-body) !important;
  font-size: 0.9rem !important;
  font-weight: 600 !important;
  background: var(--signal) !important;
  border: 1px solid var(--signal) !important;
  color: #fff !important;
  white-space: nowrap;
  transition: background 0.25s var(--ease), transform 0.25s var(--snap);
}
#cancel-appointment-frame .btn:hover,
.booking-header-bar .btn:hover {
  background: var(--ink) !important;
  border-color: var(--ink) !important;
  transform: translateY(-2px);
}
#cancel-appointment-frame .btn i,
.booking-header-bar .btn i { display: none; }

/* ----------------------------------------------------------- Datum/Zeit */
#wizard-frame-2 .frame-content {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
}
@media (min-width: 52rem) {
  #wizard-frame-2 .frame-content { grid-template-columns: 1.1fr 0.9fr; align-items: start; }
}
#select-date { margin: 0 !important; }
#select-time { max-width: none !important; margin: 0 !important; padding: 0 !important; }

/* Zeitzone ist fest Berlin — Feld bleibt im DOM, verschwindet aber optisch. */
.sch-hidden { display: none !important; }

#select-timezone {
  border: 1px solid var(--line-strong) !important;
  border-radius: 0 !important;
  font-family: var(--f-mono) !important;
  font-size: 0.82rem !important;
  padding: 0.7rem 0.9rem !important;
  color: var(--ink) !important;
  background-color: var(--paper) !important;
}
#select-timezone:focus { box-shadow: none !important; border-color: var(--signal) !important; }
label[for="select-timezone"] {
  font-family: var(--f-mono) !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ash) !important;
  margin-bottom: 0.6rem !important;
}

#available-hours {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr));
  gap: 0.5rem;
  background: transparent;
  max-height: none !important;
  margin: 1.5rem 0 0 !important;
  padding: 0 !important;
  overflow: visible !important;
}

#available-hours .available-hour,
#available-hours .btn.available-hour {
  display: grid !important;
  place-items: center;
  width: 100% !important;
  padding: 0.8rem 0.25rem !important;
  background: var(--paper) !important;
  border: 1px solid var(--line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-family: var(--f-mono) !important;
  font-size: 0.85rem !important;
  font-weight: 400 !important;
  font-variant-numeric: tabular-nums;
  color: var(--ink) !important;
  cursor: pointer;
  transition: background 0.2s var(--ease), color 0.2s var(--ease),
    border-color 0.2s var(--ease);
}
#available-hours .available-hour:hover {
  background: var(--haze) !important;
  border-color: var(--ink) !important;
}
#available-hours .available-hour.selected-hour,
#available-hours .btn.available-hour.selected-hour {
  background: var(--signal) !important;
  border-color: var(--signal) !important;
  color: #fff !important;
}

/* Kalender (flatpickr) — das Materialgruen raus, Schnitt-Optik rein.
   Das mitgelieferte Theme `material_green` nutzt zusammengesetzte Selektoren;
   die Regeln hier muessen deshalb ueber `.flatpickr-calendar.inline` gehen. */
.flatpickr-calendar.inline {
  box-shadow: none !important;
  border: 1px solid var(--line) !important;
  border-radius: 0 !important;
  background: var(--paper) !important;
  font-family: var(--f-body) !important;
  width: 100% !important;
  max-width: none !important;
  padding: 0 !important;
}

.flatpickr-calendar.inline .flatpickr-months,
.flatpickr-calendar.inline .flatpickr-month,
.flatpickr-calendar.inline .flatpickr-weekdays,
.flatpickr-calendar.inline span.flatpickr-weekday {
  background: var(--paper) !important;
  border-radius: 0 !important;
  color: var(--ink) !important;
  fill: var(--ink) !important;
}

.flatpickr-calendar.inline .flatpickr-months {
  padding: 0.85rem 0.5rem 0.4rem;
  border-bottom: 1px solid var(--line) !important;
}
.flatpickr-calendar.inline .flatpickr-current-month,
.flatpickr-calendar.inline .flatpickr-current-month .cur-month,
.flatpickr-calendar.inline .flatpickr-current-month input.cur-year {
  font-family: var(--f-disp) !important;
  font-weight: 700 !important;
  font-size: 1.05rem !important;
  color: var(--ink) !important;
}
/* Das Monats-Auswahlfeld erbt sonst die Primaerfarbe als Flaeche. */
.flatpickr-calendar.inline .flatpickr-monthDropdown-months,
.flatpickr-calendar.inline .flatpickr-monthDropdown-months:hover,
.flatpickr-calendar.inline .flatpickr-monthDropdown-month {
  background: transparent !important;
  color: var(--ink) !important;
  font-family: var(--f-disp) !important;
  font-weight: 700 !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: none !important;
}
.flatpickr-calendar.inline .numInputWrapper,
.flatpickr-calendar.inline .numInputWrapper:hover {
  background: transparent !important;
}

/* Der Tagesraster hat eine feste Breite — sonst bleibt rechts eine Spalte leer. */
.flatpickr-calendar.inline .flatpickr-innerContainer,
.flatpickr-calendar.inline .flatpickr-rContainer,
.flatpickr-calendar.inline .flatpickr-days,
.flatpickr-calendar.inline .dayContainer,
.flatpickr-calendar.inline .flatpickr-weekdaycontainer {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
}
.flatpickr-calendar.inline .dayContainer {
  display: grid !important;
  grid-template-columns: repeat(7, 1fr);
}

.flatpickr-calendar.inline .flatpickr-prev-month svg,
.flatpickr-calendar.inline .flatpickr-next-month svg {
  fill: var(--ink) !important;
}
.flatpickr-calendar.inline .flatpickr-prev-month:hover svg,
.flatpickr-calendar.inline .flatpickr-next-month:hover svg {
  fill: var(--signal) !important;
}

.flatpickr-calendar.inline span.flatpickr-weekday {
  font-family: var(--f-mono) !important;
  font-size: 0.62rem !important;
  font-weight: 400 !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ash) !important;
}

.flatpickr-calendar.inline .flatpickr-day {
  border-radius: 0 !important;
  border-color: transparent !important;
  background: transparent !important;
  font-family: var(--f-mono) !important;
  font-size: 0.85rem !important;
  color: var(--ink) !important;
  /* flatpickr gibt den Tagen feste Prozentbreiten — im Raster muessen sie
     die Zelle fuellen, sonst schrumpft die Auswahlflaeche zum Streifen. */
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  flex-basis: auto !important;
  height: 2.6rem;
  line-height: 2.6rem;
}
.flatpickr-calendar.inline .flatpickr-day:hover {
  background: var(--haze) !important;
  border-color: var(--haze) !important;
}
.flatpickr-calendar.inline .flatpickr-day.today {
  box-shadow: inset 0 -2px 0 var(--signal) !important;
}
.flatpickr-calendar.inline .flatpickr-day.selected,
.flatpickr-calendar.inline .flatpickr-day.selected:hover,
.flatpickr-calendar.inline .flatpickr-day.selected:focus {
  background: var(--signal) !important;
  border-color: var(--signal) !important;
  color: #fff !important;
  box-shadow: none !important;
}
.flatpickr-calendar.inline .flatpickr-day.flatpickr-disabled,
.flatpickr-calendar.inline .flatpickr-day.prevMonthDay,
.flatpickr-calendar.inline .flatpickr-day.nextMonthDay {
  color: rgba(17, 17, 17, 0.22) !important;
}

/* -------------------------------------------------------------- Formular */
.sch-form-grid {
  display: grid !important;
  grid-template-columns: 1fr;
  gap: 0 2.5rem;
}
@media (min-width: 46rem) {
  .sch-form-grid { grid-template-columns: 1fr 1fr; }
}
.sch-form-grid .field-col {
  width: 100% !important;
  max-width: none !important;
  flex: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

#wizard-frame-3 label,
#wizard-frame-4 label {
  font-family: var(--f-mono) !important;
  font-size: 0.7rem !important;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ash) !important;
  margin-bottom: 0.5rem !important;
}
#wizard-frame-3 .form-control,
#wizard-frame-3 .form-select,
#wizard-frame-3 textarea {
  border: 0 !important;
  border-bottom: 1px solid var(--line-strong) !important;
  border-radius: 0 !important;
  padding: 0.55rem 0 !important;
  font-family: var(--f-body) !important;
  font-size: 1rem !important;
  background: transparent !important;
  color: var(--ink) !important;
  transition: border-color 0.25s var(--ease);
}
#wizard-frame-3 .form-control:focus,
#wizard-frame-3 textarea:focus {
  box-shadow: none !important;
  border-bottom-color: var(--signal) !important;
}
#wizard-frame-3 .form-control::placeholder { color: rgba(17, 17, 17, 0.3); }

/* --------------------------------------------------------- Bestaetigung */
#wizard-frame-4 .frame-content {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 3rem);
}
@media (min-width: 46rem) { #wizard-frame-4 .frame-content { grid-template-columns: 1.2fr 0.8fr; } }

#appointment-details,
#customer-details {
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
}
#appointment-details h4,
#customer-details h4 {
  font-family: var(--f-mono) !important;
  font-size: 0.72rem !important;
  font-weight: 400 !important;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--signal) !important;
  padding-bottom: 0.7rem;
  border-bottom: 1px solid var(--line-strong);
  margin-bottom: 1.1rem !important;
}
#appointment-details div,
#customer-details div { font-size: 0.98rem; }
#appointment-details strong,
#customer-details strong { font-family: var(--f-disp); font-weight: 700; letter-spacing: -0.01em; }

/* ------------------------------------------------------------- Buttons */
.command-buttons {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center;
  gap: 1rem;
  margin: clamp(2.5rem, 5vw, 4rem) 0 0 !important;
  padding: 1.5rem 0 clamp(2.5rem, 5vw, 4rem);
  border-top: 1px solid var(--line);
}

.command-buttons .btn {
  --bh: 3.25rem;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  height: var(--bh);
  min-width: 0 !important;
  padding-inline: 1.75rem !important;
  margin: 0 !important;
  border-radius: 0 !important;
  font-family: var(--f-body) !important;
  font-size: 0.9375rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.005em;
  border: 1px solid transparent !important;
  transition: background 0.25s var(--ease), color 0.25s var(--ease),
    transform 0.25s var(--snap), border-color 0.25s var(--ease);
}

.command-buttons .button-next,
.command-buttons #book-appointment-submit {
  background: var(--signal) !important;
  color: #fff !important;
  width: auto !important;
}
.command-buttons .button-next:hover,
.command-buttons #book-appointment-submit:hover {
  background: var(--ink) !important;
  transform: translateY(-2px);
}
.command-buttons #book-appointment-form { display: inline-flex !important; }

.command-buttons .button-back {
  background: transparent !important;
  color: var(--ink) !important;
  border-color: var(--line-strong) !important;
  font-family: var(--f-mono) !important;
  font-weight: 400 !important;
}
.command-buttons .button-back:hover {
  background: var(--ink) !important;
  color: var(--paper) !important;
  border-color: var(--ink) !important;
  transform: translateY(-2px);
}

.command-buttons .btn i { display: none; }

/* Deaktivierter Weiter-Button: sichtbar gesperrt statt stumm */
.command-buttons .btn:disabled,
.command-buttons .btn.disabled {
  background: var(--haze) !important;
  color: rgba(17, 17, 17, 0.35) !important;
  transform: none !important;
  cursor: not-allowed;
}

/* ------------------------------------------------ Einwilligungen (DSGVO) */
/* Die allgemeine Label-Regel setzt Mono-Versalien - fuer Feldbeschriftungen
   richtig, fuer einen Einwilligungstext unlesbar. Hier gilt Fliesstext. */
#wizard-frame-4 .form-check {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin: 0 0 0.9rem !important;
  padding: 0 !important;
  text-align: left;
}
#wizard-frame-4 .form-check-input {
  flex: none;
  width: 1.15rem;
  height: 1.15rem;
  margin: 0.1rem 0 0 !important;
  border-radius: 0 !important;
  border: 1px solid var(--line-strong) !important;
}
#wizard-frame-4 .form-check-input:checked {
  background-color: var(--signal) !important;
  border-color: var(--signal) !important;
}
#wizard-frame-4 .form-check-input:focus {
  box-shadow: none !important;
  border-color: var(--signal) !important;
}
#wizard-frame-4 .form-check-label {
  font-family: var(--f-body) !important;
  font-size: 0.92rem !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  line-height: 1.5;
  color: var(--ink) !important;
  margin: 0 !important;
}
#wizard-frame-4 .form-check-label a {
  color: var(--signal) !important;
  text-decoration: underline;
  text-underline-offset: 2px;
}
#wizard-frame-4 .form-check-label a:hover { color: var(--ink) !important; }

/* Der Einwilligungsblock steht linksbuendig unter der Uebersicht. */
#wizard-frame-4 .frame-content + div,
#wizard-frame-4 .form-check-container { text-align: left !important; }

/* --------------------------------------------------------------- Dialoge */
/* Storno-Nachfrage, Hinweise, Bestaetigungen. */
.modal-content {
  border-radius: 0 !important;
  border: 1px solid var(--line-strong) !important;
  box-shadow: none !important;
  background: var(--paper) !important;
}
.modal-header {
  border-bottom: 1px solid var(--line) !important;
  padding: 1.4rem 1.6rem 1.1rem !important;
}
.modal-title {
  font-family: var(--f-disp) !important;
  font-weight: 700 !important;
  font-size: 1.35rem !important;
  letter-spacing: -0.025em;
  color: var(--ink) !important;
}
.modal-body {
  padding: 1.5rem 1.6rem !important;
  color: var(--ash);
}
.modal-body p { margin-bottom: 1rem; }
.modal-footer {
  border-top: 1px solid var(--line) !important;
  padding: 1.1rem 1.6rem 1.4rem !important;
  gap: 0.6rem;
}
.modal-content .btn-close { border-radius: 0 !important; }

.modal-content textarea,
.modal-content .form-control {
  border: 1px solid var(--line-strong) !important;
  border-radius: 0 !important;
  font-family: var(--f-body) !important;
  font-size: 0.98rem !important;
  padding: 0.75rem 0.9rem !important;
  background: var(--paper) !important;
  color: var(--ink) !important;
}
.modal-content textarea:focus,
.modal-content .form-control:focus {
  box-shadow: none !important;
  border-color: var(--signal) !important;
}

.modal-footer .btn,
.modal-content .btn {
  height: 2.9rem;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding-inline: 1.5rem !important;
  border-radius: 0 !important;
  font-family: var(--f-body) !important;
  font-size: 0.9rem !important;
  font-weight: 600 !important;
  transition: background 0.25s var(--ease), color 0.25s var(--ease),
    border-color 0.25s var(--ease), transform 0.25s var(--snap);
}
/* Bestaetigen */
.modal-content .btn-primary,
.modal-content .btn-success,
.modal-content .btn-danger {
  background: var(--signal) !important;
  border: 1px solid var(--signal) !important;
  color: #fff !important;
}
.modal-content .btn-primary:hover,
.modal-content .btn-success:hover,
.modal-content .btn-danger:hover {
  background: var(--ink) !important;
  border-color: var(--ink) !important;
  transform: translateY(-2px);
}
/* Abbrechen */
.modal-content .btn-secondary,
.modal-content .btn-outline-primary,
.modal-content .btn-outline-secondary,
.modal-content .btn-light {
  background: transparent !important;
  color: var(--ink) !important;
  border: 1px solid var(--line-strong) !important;
}
.modal-content .btn-secondary:hover,
.modal-content .btn-outline-primary:hover,
.modal-content .btn-outline-secondary:hover,
.modal-content .btn-light:hover {
  background: var(--ink) !important;
  color: var(--paper) !important;
  border-color: var(--ink) !important;
  transform: translateY(-2px);
}

/* --------------------------------------------------------------- Footer */
#frame-footer {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.5rem;
  padding: 1.4rem var(--gut) !important;
  border-top: 1px solid var(--line) !important;
  text-align: left !important;
  font-family: var(--f-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ash);
}
/* Die mitgelieferten Schalter sind absolut bzw. gefloatet positioniert —
   im Flex-Fluss wuerden sie sich sonst ueberlagern. */
#frame-footer > * {
  position: static !important;
  float: none !important;
  margin: 0 !important;
}
/* Der Footer traegt seinen gesamten Inhalt in einem einzigen <small>. */
#frame-footer > small {
  display: flex !important;
  flex: 1 1 auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 1.5rem;
  width: 100%;
  font-size: inherit !important;
}
#frame-footer > small > * {
  position: static !important;
  float: none !important;
  margin: 0 !important;
}
#frame-footer a {
  color: var(--ash) !important;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.2s var(--ease), border-color 0.2s var(--ease);
}
#frame-footer a:hover {
  color: var(--signal) !important;
  border-bottom-color: var(--signal);
}
/* Anmelde- und Sprachschalter unauffaellig halten.
   Der Anmelden-Schalter ist `btn-primary` — die Selektoren muessen das
   uebertreffen, sonst steht rote Schrift auf rotem Grund. */
#frame-footer .btn,
#frame-footer .btn.btn-primary,
#frame-footer .btn.btn-outline-primary,
#frame-footer .btn.btn-light {
  border-radius: 0 !important;
  font-family: var(--f-mono) !important;
  font-size: 0.7rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 0.55rem 0.9rem !important;
  background: transparent !important;
  color: var(--ash) !important;
  border: 1px solid var(--line) !important;
}
#frame-footer .btn:hover,
#frame-footer .btn.btn-primary:hover {
  background: var(--ink) !important;
  color: var(--paper) !important;
  border-color: var(--ink) !important;
}
#frame-footer .btn i,
#frame-footer .btn svg { color: inherit !important; fill: currentColor !important; }

/* Der Anmelden-Link ist ein `badge bg-primary`, kein Button — sonst stuende
   graue Schrift auf rotem Grund. */
#frame-footer a.backend-link,
#frame-footer a.badge,
#frame-footer a.badge.bg-primary {
  background: transparent !important;
  color: var(--ash) !important;
  border: 1px solid var(--line) !important;
  border-radius: 0 !important;
  padding: 0.5rem 0.85rem !important;
  font-family: var(--f-mono) !important;
  font-size: 0.7rem !important;
  font-weight: 400 !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
#frame-footer a.backend-link:hover,
#frame-footer a.badge.bg-primary:hover {
  background: var(--ink) !important;
  color: var(--paper) !important;
  border-color: var(--ink) !important;
}

/* ------------------------------------------------------------ Erfolgsbild */
/* Bestaetigungsseite nach der Buchung */
.booking-message-frame,
#message-frame {
  padding: clamp(3rem, 8vw, 6rem) var(--gut) !important;
  text-align: left !important;
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
