/* Aus lp/assets/css/base.css uebernommen (Zeilen 474-733).
   Beim Zusammenlegen von /lp/ und der neuen Website zu einer Datei machen. */

/* ---------- Buchungs-Modal (Calendly) ----------
   Statt auf eine eigene Seite zu springen, oeffnet der CTA hier ein Fenster.
   Die Hoehe ist bewusst nicht fix: Calendly bekommt die verfuegbare Flaeche
   ueber Flex zugewiesen, damit sein iframe intern scrollt statt die Seite. */
.bk{
  position:fixed;inset:0;z-index:120;display:none;
  align-items:center;justify-content:center;padding:16px;
  background:rgba(7,26,44,.72);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
}
.bk.is-open{display:flex}

.bk__box{
  display:flex;flex-direction:column;
  width:min(900px,100%);
  /* Hoehe folgt dem Inhalt, mit Ober- und Untergrenze. Eine feste Hoehe liess
     unter dem Kalender eine grosse leere Flaeche stehen. */
  min-height:min(520px,calc(100vh - 32px));
  max-height:calc(100vh - 32px);
  min-height:min(520px,calc(100dvh - 32px));
  max-height:min(880px,calc(100dvh - 32px));
  background:var(--white);
  border-radius:var(--r);
  overflow:hidden;
  box-shadow:0 24px 60px rgba(7,26,44,.34);
}

.bk__head{
  flex:none;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:15px 18px;
  border-bottom:1px solid var(--line);
}
.bk__title{margin:0;font-size:1.05rem;line-height:1.25;color:var(--ink-900)}
.bk__close{
  flex:none;width:38px;height:38px;border-radius:50%;
  background:var(--bg-soft);color:var(--ink-900);
  display:grid;place-items:center;
}
.bk__close:hover{background:var(--akzent-050);color:var(--akzent-800)}

/* Traegt die volle Resthoehe – Calendly rendert sein iframe hier hinein.
   Unter ~620px wird der Buchungskalender zu eng, deshalb die Mindesthoehe:
   auf flachen Schirmen scrollt dann dieser Bereich statt Calendly intern. */
.bk__body{flex:1 1 auto;min-height:0;position:relative;overflow-y:auto}
/* Im Wizard scrollt der Inhaltsbereich selbst, damit die Navigation unten
   stehen bleibt. Calendly bekommt dagegen weiter die nackte Flaeche. */
.bk__body.is-wizard{display:flex;overflow:hidden;padding:16px 20px 18px}
.bk__cal{width:100%;height:100%;min-height:620px;min-width:320px}
.bk__cal iframe{width:100%;height:100%;border:0;display:block}

.bk__note{
  position:absolute;inset:0;
  display:grid;place-items:center;
  padding:20px;text-align:center;color:var(--muted);font-size:.9rem;
  pointer-events:none; /* darf das Widget darunter nie blockieren */
}
.bk__note[hidden]{display:none}

/* Auf dem Handy den ganzen Schirm nutzen – Calendly braucht die Hoehe. */
@media (max-width:640px){
  .bk{padding:0}
  .bk__box{
    width:100%;
    height:100vh;
    height:100dvh;
    border-radius:0;
  }
}

/* ---------- Buchungs-Wizard ----------
   Mehrstufig statt Endlosformular: auf dem Handy ist immer nur eine
   Fragengruppe sichtbar, die Navigation klebt unten. */
.wz{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0}

.wz__bar{flex:none;height:3px;background:var(--line);border-radius:999px;overflow:hidden}
.wz__bar span{display:block;height:100%;background:var(--akzent-600);transition:width .25s ease}
.wz__zaehler{
  flex:none;margin:10px 0 14px;
  font-size:.8rem;font-weight:600;letter-spacing:.02em;color:var(--muted);
}

.wz__inhalt{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}

.wz__feld{margin-bottom:18px;max-width:620px}
.wz__feld:last-child{margin-bottom:4px}
.wz__feld label{
  display:block;margin-bottom:6px;
  font-size:.92rem;font-weight:600;line-height:1.4;color:var(--ink-900);
}
.wz__pflicht{color:var(--rose-600)}
.wz__hinweis{margin:0 0 8px;font-size:.82rem;line-height:1.45;color:var(--muted)}

.wz__feld input[type=text],
.wz__feld input[type=email],
.wz__feld input[type=tel],
.wz__feld textarea{
  width:100%;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:10px;
  font:inherit;font-size:1rem;   /* 16px – verhindert den Zoom auf iOS */
  color:var(--ink-900);
  background:var(--white);
}
.wz__feld textarea{resize:vertical;min-height:84px;line-height:1.5}
.wz__feld input:focus,
.wz__feld textarea:focus{outline:none;border-color:var(--akzent-500);box-shadow:0 0 0 3px var(--akzent-050)}

.wz__radios{display:grid;gap:6px}
.wz__radio{
  display:flex;align-items:center;gap:10px;
  min-height:44px;            /* Untergrenze fuer sichere Bedienung */
  padding:8px 12px;
  border:1px solid var(--line-soft);border-radius:9px;
  font-size:.9rem;line-height:1.35;cursor:pointer;
  transition:border-color .14s ease,background-color .14s ease;
}
.wz__radio:hover{border-color:var(--akzent-500)}
.wz__radio:has(input:checked){border-color:var(--akzent-500);background:var(--akzent-025)}
.wz__radio input{accent-color:var(--akzent-600);width:16px;height:16px;flex:none}
.wz__radio:focus-within{border-color:var(--akzent-500);box-shadow:0 0 0 3px var(--akzent-050)}

.wz__fehler{
  flex:none;margin:12px 0 0;padding:10px 13px;
  background:var(--rose-050);color:#9C3540;
  border-radius:10px;font-size:.88rem;line-height:1.45;
}
.wz__fehler[hidden]{display:none}

.wz__nav{flex:none;display:flex;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.wz__nav .btn{flex:0 0 auto;min-height:48px;padding:13px 24px}
.wz__weiter{margin-left:auto;min-width:170px}
.wz__zurueck:disabled{opacity:.4;cursor:not-allowed}
.wz__zurueck:disabled:hover{transform:none;border-color:var(--line);color:var(--ink-900)}

/* ---------- Kalender im Wizard ---------- */
.kal__kopf{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.kal__kopf strong{font-family:var(--f-head);font-size:1rem;color:var(--ink-900)}
.kal__pfeil{
  width:38px;height:38px;border-radius:10px;border:1px solid var(--line);
  font-size:1.3rem;line-height:1;color:var(--ink-900);
  display:grid;place-items:center;
}
.kal__pfeil:hover:not(:disabled){border-color:var(--akzent-500);color:var(--akzent-700)}
.kal__pfeil:disabled{opacity:.35;cursor:not-allowed}

.kal__split{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
/* Ohne Deckel werden die Tageszellen auf breiten Schirmen riesig, weil
   aspect-ratio:1 die Zellenbreite in die Hoehe uebersetzt. */
@media (min-width:720px){.kal__split{grid-template-columns:330px minmax(0,1fr)}}

.kal__wt{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px;max-width:340px}
.kal__wt span{text-align:center;font-size:.72rem;font-weight:600;color:var(--muted)}
.kal__tage{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;max-width:340px}
.kal__leer{display:block}
.kal__tag{
  aspect-ratio:1;min-height:38px;max-height:46px;
  border-radius:10px;
  font-size:.92rem;font-weight:500;color:var(--muted);
  display:grid;place-items:center;
  cursor:default;
}
.kal__tag.is-frei{background:var(--akzent-050);color:var(--akzent-800);font-weight:700;cursor:pointer}
.kal__tag.is-frei:hover{background:var(--akzent-100)}
.kal__tag.is-aktiv{background:var(--akzent-600);color:#fff}
.kal__tag:disabled{opacity:.45}

.kal__slots{display:flex;flex-direction:column;gap:8px}
.kal__slotkopf{margin:0 0 2px;font-size:.85rem;font-weight:600;color:var(--ink-900)}
.kal__hint{margin:0;font-size:.85rem;line-height:1.5;color:var(--muted)}
.kal__laden{margin:14px 0 0;font-size:.85rem;color:var(--muted)}
.kal__slot{
  min-height:46px;padding:12px;
  border:1px solid var(--akzent-100);border-radius:10px;
  background:var(--white);color:var(--akzent-800);
  font-size:.98rem;font-weight:600;
}
.kal__slot:hover{border-color:var(--akzent-500);background:var(--akzent-025)}
.kal__slot.is-aktiv{background:var(--akzent-600);border-color:var(--akzent-600);color:#fff}
.kal__tz{margin:14px 0 0;font-size:.76rem;color:var(--muted)}

@media (max-width:640px){
  .wz__nav .btn{min-height:46px;font-size:.9rem;padding:12px 10px}
  .kal__tag{min-height:38px;font-size:.88rem}
}

/* Leerer Monat im Buchungskalender – bei knapper Verfuegbarkeit der Normalfall,
   deshalb sichtbar in der Mitte statt als Randnotiz. */
.kal__leerMonat{
  margin-top:18px;
  padding:22px 18px;
  background:var(--bg-soft);
  border-radius:12px;
  text-align:center;
}
.kal__leerMonat p{margin:0 0 14px;font-size:.95rem;color:var(--body)}
.kal__weiter{
  display:inline-flex;align-items:center;gap:6px;
  min-height:44px;padding:11px 18px;
  border:1px solid var(--akzent-100);border-radius:10px;
  background:var(--white);color:var(--akzent-800);
  font-family:var(--f-head);font-size:.92rem;font-weight:600;
}
.kal__weiter:hover{border-color:var(--akzent-500);background:var(--akzent-025)}

/* Gewaehlter Termin in den Formularschritten – zeigt, worum es geht, und
   fuehrt mit einem Klick zurueck zur Auswahl. */
.wz__gewaehlt{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-bottom:18px;padding:11px 14px;
  background:var(--akzent-025);
  border:1px solid var(--akzent-100);
  border-radius:10px;
  font-size:.88rem;line-height:1.4;color:var(--ink-800);
  max-width:620px;
}
.wz__gewaehlt b{color:var(--ink-900)}
.wz__gewaehlt button{
  flex:none;
  background:none;border:0;padding:4px 2px;
  font:inherit;font-size:.85rem;font-weight:600;
  color:var(--akzent-800);text-decoration:underline;cursor:pointer;
}
.wz__gewaehlt button:hover{color:var(--akzent-600)}

/* ---------- Knopf-Varianten des Wizards ----------
   booking.js setzt fest "btn btn--primary" bzw. "btn btn--ghost". Unter /lp/
   kommen die aus base.css; hier fehlen sie, also stehen sie an dieser Stelle.
   Die Grundklasse .btn liefert site.css – nur die Varianten sind neu, und die
   Versalien der Website passen im Formular nicht, deshalb hier zurueckgesetzt. */
.wz .btn{text-transform:none;letter-spacing:0;font-size:.9375rem;border-radius:12px}
.btn--primary{background:var(--akzent-700);color:#fff;box-shadow:0 8px 20px rgba(124,47,11,.24)}
.btn--primary:hover{background:var(--akzent-800);color:#fff;box-shadow:0 12px 26px rgba(124,47,11,.30)}
.btn--ghost{background:#fff;color:var(--ink-900);box-shadow:inset 0 0 0 1px var(--line)}
.btn--ghost:hover{box-shadow:inset 0 0 0 1px var(--akzent-500);color:var(--akzent-700)}
