/* RDN Repair Tickets – Terminbuchung Frontend (v2.4 UI-Overhaul)
   Eigenständiges, sauberes Wizard-Design. Scope: .rdn-cal-flow
   Nutzt eigene Variablen mit Fallbacks; bleibt cohesion-fähig zum Theme. */

.rdn-cal-flow{
  --rdn-accent:#2f5d3a;
  --rdn-accent-soft:#e9f1ea;
  --rdn-accent-ring:rgba(47,93,58,.18);
  --rdn-ink:#1f2733;
  --rdn-muted:#6b7280;
  --rdn-line:#e5e7eb;
  --rdn-card:#ffffff;
  --rdn-radius:14px;
  --rdn-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);
  max-width:760px;
  margin:0 auto;
  color:var(--rdn-ink);
}
.rdn-cal-flow *{ box-sizing:border-box; }
.rdn-cal-flow h3{ font-size:1.35rem; margin:6px 0 4px; }
.rdn-cal-flow h4{ font-size:1.05rem; margin:18px 0 8px; }
.rdn-cal-flow .rdn-cal-sub{ color:var(--rdn-muted); margin:0 0 18px; }

/* ---- Theme-Pseudoelemente (Mesmerize-Clearfix u.ä.) auf Layout-Containern neutralisieren.
   Sonst erzeugt ein Theme-::before in einem grid/flex-Container eine Phantom-Zelle und
   verschiebt z.B. die Kalendertage um einen Tag. ---- */
.rdn-cal-flow .rdn-cal-grid::before,
.rdn-cal-flow .rdn-cal-grid::after,
.rdn-cal-flow .rdn-cal-steps::after,
.rdn-cal-flow .rdn-cal-srow-main::before,
.rdn-cal-flow .rdn-cal-srow-main::after,
.rdn-cal-flow .rdn-cal-service-main::before,
.rdn-cal-flow .rdn-cal-service-main::after,
.rdn-cal-flow .rdn-cal-summbar::before,
.rdn-cal-flow .rdn-cal-summbar::after,
.rdn-cal-flow .rdn-cal-cal-head::before,
.rdn-cal-flow .rdn-cal-cal-head::after,
.rdn-cal-flow .rdn-cal-payments::before,
.rdn-cal-flow .rdn-cal-payments::after,
.rdn-cal-flow .rdn-cal-legend::before,
.rdn-cal-flow .rdn-cal-legend::after{
  content:none !important;
}

/* ---- Fortschritts-Anzeige (echte Elemente, kein content-::before) ---- */
.rdn-cal-steps{
  display:flex; align-items:flex-start; justify-content:space-between;
  list-style:none; padding:0; margin:0 0 26px; position:relative;
}
.rdn-cal-steps::before{
  content:""; position:absolute; top:17px; left:8%; right:8%; height:2px;
  background:var(--rdn-line); z-index:0;
}
.rdn-cal-step{
  position:relative; z-index:1; flex:1; text-align:center;
  font-size:.8rem; color:var(--rdn-muted); list-style:none;
}
.rdn-cal-step::before,.rdn-cal-step::marker{ content:none; } /* evtl. Theme-Listenmarker entfernen */
.rdn-cal-step-dot{
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; margin:0 auto 8px; border-radius:50%;
  background:var(--rdn-card); border:2px solid var(--rdn-line);
  font-weight:700; color:var(--rdn-muted); transition:.2s;
}
.rdn-cal-step.done .rdn-cal-step-dot{ background:var(--rdn-accent); border-color:var(--rdn-accent); color:#fff; }
.rdn-cal-step.active .rdn-cal-step-dot{ border-color:var(--rdn-accent); color:var(--rdn-accent); box-shadow:0 0 0 4px var(--rdn-accent-ring); }
.rdn-cal-step.active{ color:var(--rdn-ink); font-weight:600; }
.rdn-cal-step-label{ display:block; }

/* ---- Karten allgemein ---- */
.rdn-cal-flow .rdn-rt-card{
  border:1px solid var(--rdn-line); border-radius:var(--rdn-radius);
  background:var(--rdn-card); box-shadow:var(--rdn-shadow); padding:18px 20px;
}

/* ---- Leistungs-Karten ---- */
.rdn-cal-service-card{
  border:1px solid var(--rdn-line); border-radius:var(--rdn-radius);
  background:var(--rdn-card); box-shadow:var(--rdn-shadow);
  padding:16px 18px; margin-bottom:14px; transition:border-color .15s, box-shadow .15s, background .15s;
}
.rdn-cal-service-card.is-selected{
  border-color:var(--rdn-accent); background:var(--rdn-accent-soft);
  box-shadow:0 0 0 3px var(--rdn-accent-ring);
}
.rdn-cal-service-main{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.rdn-cal-service-info{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.rdn-cal-service-title{ font-weight:700; font-size:1.05rem; }
.rdn-cal-service-meta{ color:var(--rdn-muted); font-size:.92rem; }
.rdn-cal-price-badge{ color:var(--rdn-accent); font-weight:700; }

/* Mengen-Stepper */
.rdn-cal-stepper{ display:inline-flex; align-items:center; gap:0; flex:none; }
.rdn-cal-stepper button{
  width:38px; height:38px; border:1px solid var(--rdn-line); background:#fff;
  font-size:1.25rem; line-height:1; cursor:pointer; color:var(--rdn-ink);
  display:flex; align-items:center; justify-content:center; transition:.12s;
}
.rdn-cal-stepper button:first-child{ border-radius:10px 0 0 10px; }
.rdn-cal-stepper button:last-child{ border-radius:0 10px 10px 0; }
.rdn-cal-stepper button:hover:not(:disabled){ border-color:var(--rdn-accent); color:var(--rdn-accent); }
.rdn-cal-stepper button:disabled{ opacity:.4; cursor:default; }
.rdn-cal-stepper .rdn-cal-qty-value{
  width:46px; height:38px; border:1px solid var(--rdn-line); border-left:0; border-right:0;
  display:flex; align-items:center; justify-content:center; font-weight:700; background:#fff;
}
.rdn-cal-qty-select{ min-width:72px; } /* Fallback ohne JS */

/* Beschreibung (aufklappbar) */
.rdn-cal-desc{ margin-top:12px; border-top:1px dashed var(--rdn-line); padding-top:10px; }
.rdn-cal-desc summary{
  cursor:pointer; list-style:none; color:var(--rdn-accent); font-weight:600; font-size:.92rem;
  display:inline-flex; align-items:center; gap:6px;
}
.rdn-cal-desc summary::-webkit-details-marker{ display:none; }
.rdn-cal-desc summary::before{ content:"▸"; transition:transform .15s; }
.rdn-cal-desc[open] summary::before{ transform:rotate(90deg); }
.rdn-cal-desc .rdn-rt-accordion-body{ padding-top:8px; color:var(--rdn-ink); }

/* Live-Summenleiste */
.rdn-cal-summbar{
  position:sticky; bottom:0; margin-top:18px;
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  background:var(--rdn-card); border:1px solid var(--rdn-line); border-radius:var(--rdn-radius);
  box-shadow:var(--rdn-shadow); padding:14px 18px;
}
.rdn-cal-summbar .rdn-cal-sum-text strong{ font-size:1.15rem; }
.rdn-cal-summbar .rdn-cal-sum-sub{ color:var(--rdn-muted); font-size:.85rem; display:block; }

/* ---- Tickets ---- */
.rdn-cal-tickets{ display:flex; flex-direction:column; gap:10px; }
.rdn-cal-ticket-row{
  display:flex; align-items:center; gap:10px; cursor:pointer;
  border:1px solid var(--rdn-line); border-radius:var(--rdn-radius); padding:12px 14px; background:#fff;
  transition:.12s;
}
.rdn-cal-ticket-row:hover{ border-color:var(--rdn-accent); }
.rdn-cal-ticket-row:has(input:checked){ border-color:var(--rdn-accent); background:var(--rdn-accent-soft); }

/* ---- Zeit-Slots ---- */
.rdn-cal-slots{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(86px,1fr)); gap:10px; margin:12px 0 4px;
}
.rdn-cal-slot{
  position:relative; border:1px solid var(--rdn-line); border-radius:10px; padding:12px 6px;
  text-align:center; cursor:pointer; background:#fff; font-weight:600; transition:.12s;
}
.rdn-cal-slot:hover{ border-color:var(--rdn-accent); color:var(--rdn-accent); }
.rdn-cal-slot input{ position:absolute; opacity:0; pointer-events:none; }
.rdn-cal-slot.is-selected,.rdn-cal-slot:has(input:checked){
  border-color:var(--rdn-accent); background:var(--rdn-accent); color:#fff;
}

/* ---- Übersicht ---- */
.rdn-cal-summary{ width:100%; border-collapse:collapse; margin:10px 0 16px; }
.rdn-cal-summary td{ padding:10px 6px; border-bottom:1px solid var(--rdn-line); }
.rdn-cal-summary td:last-child{ text-align:right; white-space:nowrap; }
.rdn-cal-summary .rdn-cal-total td{ border-top:2px solid var(--rdn-ink); border-bottom:none; padding-top:12px; }
.rdn-cal-payments{ display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }
.rdn-cal-payments label,.rdn-cal-consent{
  display:flex; align-items:center; gap:10px; border:1px solid var(--rdn-line);
  border-radius:10px; padding:12px 14px; cursor:pointer;
}
.rdn-cal-consent{ margin:14px 0; align-items:flex-start; }

/* ---- Buttons ---- */
.rdn-cal-flow .rdn-cal-btn,
.rdn-cal-flow .rdn-rt-btn-primary{
  display:inline-flex; align-items:center; gap:8px; border:0; cursor:pointer;
  background:var(--rdn-accent); color:#fff; font-weight:700; font-size:1rem;
  padding:13px 26px; border-radius:999px; transition:.15s; text-decoration:none;
}
.rdn-cal-flow .rdn-cal-btn:hover,
.rdn-cal-flow .rdn-rt-btn-primary:hover{ filter:brightness(1.07); transform:translateY(-1px); }
.rdn-cal-flow .rdn-cal-btn[disabled]{ opacity:.45; cursor:default; transform:none; filter:none; }
.rdn-cal-flow .rdn-cal-btn-ghost{
  background:transparent; color:var(--rdn-muted); padding:10px 14px; font-weight:600; border-radius:999px;
}
.rdn-cal-flow .rdn-cal-btn-ghost:hover{ color:var(--rdn-accent); transform:none; filter:none; }
.rdn-cal-secondary{
  background:#fff!important; color:var(--rdn-ink)!important; border:1px solid var(--rdn-line)!important;
}
.rdn-cal-back{ margin-top:16px; }

.rdn-cal-success{ text-align:center; border-color:var(--rdn-accent)!important; }
.rdn-cal-success .rdn-cal-check{
  width:56px;height:56px;border-radius:50%;background:var(--rdn-accent-soft);color:var(--rdn-accent);
  display:flex;align-items:center;justify-content:center;font-size:1.8rem;margin:0 auto 10px;
}

@media (max-width:600px){
  .rdn-cal-step-label{ display:none; }
  .rdn-cal-step.active .rdn-cal-step-label{ display:block; font-size:.72rem; }
  .rdn-cal-service-main{ flex-direction:column; align-items:flex-start; gap:14px; }
  .rdn-cal-stepper{ align-self:stretch; justify-content:space-between; width:100%; }
}

/* ===== v2.3.2: Suche, Kategorien, kompakte Zeilen ===== */
.rdn-cal-searchwrap{ margin:0 0 14px; }
.rdn-cal-search{
  width:100%; padding:12px 14px; border:1px solid var(--rdn-line); border-radius:999px;
  font-size:1rem; background:#fff;
}
.rdn-cal-search:focus{ outline:none; border-color:var(--rdn-accent); box-shadow:0 0 0 4px var(--rdn-accent-ring); }

.rdn-cal-list{
  border:1px solid var(--rdn-line); border-radius:var(--rdn-radius);
  background:var(--rdn-card); box-shadow:var(--rdn-shadow); overflow:hidden;
}

/* Kategorie-Kopf */
.rdn-cal-group + .rdn-cal-group{ border-top:1px solid var(--rdn-line); }
.rdn-cal-group-head{
  width:100%; display:flex; align-items:center; gap:10px; cursor:pointer;
  background:#f7f9f8; border:0; border-bottom:1px solid var(--rdn-line);
  padding:12px 16px; font-weight:700; color:var(--rdn-ink); font-size:.98rem; text-align:left;
}
.rdn-cal-group-title{ flex:1; }
.rdn-cal-group-count{
  background:#fff; border:1px solid var(--rdn-line); border-radius:999px;
  padding:1px 9px; font-size:.78rem; color:var(--rdn-muted); font-weight:700;
}
.rdn-cal-group-chevron{ transition:transform .15s; color:var(--rdn-muted); }
.rdn-cal-group.is-collapsed .rdn-cal-group-chevron{ transform:rotate(-90deg); }

/* Zeile */
.rdn-cal-srow{ padding:14px 16px; border-bottom:1px solid var(--rdn-line); transition:background .12s; }
.rdn-cal-srow:last-child{ border-bottom:0; }
.rdn-cal-srow.is-selected{ background:var(--rdn-accent-soft); }
.rdn-cal-srow-main{ display:flex; align-items:center; justify-content:space-between; gap:14px; }
.rdn-cal-srow-info{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.rdn-cal-srow-title{ font-weight:700; font-size:1.02rem; }
.rdn-cal-srow-meta{ color:var(--rdn-muted); font-size:.9rem; }
.rdn-cal-srow-ctrl{ flex:none; }

/* + Hinzufügen */
.rdn-cal-add-btn{
  border:1px solid var(--rdn-accent); background:#fff; color:var(--rdn-accent);
  font-weight:700; padding:9px 16px; border-radius:999px; cursor:pointer; white-space:nowrap; transition:.12s;
}
.rdn-cal-add-btn:hover{ background:var(--rdn-accent); color:#fff; }

.rdn-cal-noresults{ color:var(--rdn-muted); padding:14px 4px; }

/* Beschreibung in der Zeile etwas kompakter */
.rdn-cal-srow .rdn-cal-desc{ margin-top:10px; }

@media (max-width:600px){
  .rdn-cal-srow-main{ flex-direction:column; align-items:flex-start; gap:12px; }
  .rdn-cal-srow-ctrl{ align-self:stretch; }
  .rdn-cal-srow-ctrl .rdn-cal-stepper{ width:100%; justify-content:space-between; }
  .rdn-cal-add-btn{ width:100%; }
}

/* ===== v2.4.0: Monats-Kalender ===== */
.rdn-cal-calform{ margin:0 0 18px; }
.rdn-cal-cal{
  border:1px solid var(--rdn-line); border-radius:var(--rdn-radius);
  background:var(--rdn-card); box-shadow:var(--rdn-shadow); padding:16px;
}
.rdn-cal-cal-head{
  display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;
}
.rdn-cal-cal-title{ font-weight:700; font-size:1.15rem; text-transform:capitalize; }
.rdn-cal-nav{
  width:40px; height:40px; border:1px solid var(--rdn-line); background:#fff; border-radius:50%;
  font-size:1.4rem; line-height:1; cursor:pointer; color:var(--rdn-ink); transition:.12s;
}
.rdn-cal-nav:hover:not(:disabled){ border-color:var(--rdn-accent); color:var(--rdn-accent); }
.rdn-cal-nav:disabled{ opacity:.35; cursor:default; }

.rdn-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.rdn-cal-grid-head{ margin-bottom:6px; }
.rdn-cal-wd{ text-align:center; font-size:.8rem; font-weight:700; color:var(--rdn-muted); padding:4px 0; }

.rdn-cal-day{
  position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center;
  min-height:54px; border-radius:10px; border:1px solid transparent; background:#f4f6f5;
  font-weight:600; color:var(--rdn-ink); font-size:1rem; padding:0; font-family:inherit;
}
.rdn-cal-day.is-empty{ background:transparent; }
.rdn-cal-daynum{ line-height:1; }

button.rdn-cal-day.is-free{
  cursor:pointer; background:#fff; border-color:var(--rdn-accent); color:var(--rdn-accent); transition:.12s;
}
button.rdn-cal-day.is-free .rdn-cal-dot{
  width:6px; height:6px; border-radius:50%; background:var(--rdn-accent); margin-top:5px;
}
button.rdn-cal-day.is-free:hover{ background:var(--rdn-accent-soft); transform:translateY(-1px); }
button.rdn-cal-day.is-free.is-selected{ background:var(--rdn-accent); color:#fff; }
button.rdn-cal-day.is-free.is-selected .rdn-cal-dot{ background:#fff; }

.rdn-cal-day.is-full{ background:#fdecec; color:#c0392b; opacity:.85; }
.rdn-cal-day.is-closed{
  background:repeating-linear-gradient(45deg,#f1f1f1,#f1f1f1 5px,#e9e9e9 5px,#e9e9e9 10px);
  color:#9aa0a6;
}
.rdn-cal-day.is-disabled{ background:transparent; color:#c7ccd1; }

.rdn-cal-legend{
  display:flex; gap:18px; flex-wrap:wrap; margin-top:14px; padding-top:12px;
  border-top:1px solid var(--rdn-line); font-size:.85rem; color:var(--rdn-muted);
}
.rdn-cal-legend i{ display:inline-block; width:12px; height:12px; border-radius:3px; margin-right:5px; vertical-align:-1px; }
.rdn-cal-legend .lg-free{ background:#fff; border:1px solid var(--rdn-accent); }
.rdn-cal-legend .lg-full{ background:#fdecec; }
.rdn-cal-legend .lg-closed{ background:repeating-linear-gradient(45deg,#f1f1f1,#f1f1f1 3px,#e9e9e9 3px,#e9e9e9 6px); }

@media (max-width:600px){
  .rdn-cal-day{ min-height:46px; font-size:.95rem; }
  .rdn-cal-grid{ gap:4px; }
}

/* ===== v2.8.2: Pflicht-Hinweis Zeitrahmen / Anschlusstermin ===== */
.rdn-cal-ack{
  margin:16px 0; padding:14px 16px; border-radius:var(--rdn-radius);
  background:#fff8e6; border:1px solid #f1d18a; border-left:4px solid #e0a800;
}
.rdn-cal-ack label{ display:flex; align-items:flex-start; gap:10px; cursor:pointer; margin:0; }
.rdn-cal-ack input[type=checkbox]{ margin-top:3px; width:18px; height:18px; flex:none; }
.rdn-cal-ack span{ line-height:1.45; }
