.booking-section { padding: 8px 20px 90px; min-height: 0; }
        /* Embed-Modus (z.B. ICOONE-LP /icoone-laser): Header/Footer aus, Schritt-1-Zurück (führt zum Rechner) aus. */
        .embed-mode body { background: #fff; }
        .embed-mode header, .embed-mode footer { display: none !important; }
        .embed-mode .booking-section { padding: 24px 16px 36px; min-height: 0; }
        .embed-mode #step1 .actions .cta-secondary { display: none; }
        @media (max-width: 800px) { .embed-mode .booking-section { padding: 16px 12px 24px; } }
        .booking-container { max-width: 1100px; margin: 0 auto; }
        .booking-step { display: none; }
        .booking-step.active { display: block; animation: fadeIn 0.3s ease; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

        /* Nummeriertes Fortschrittsband: aktiv = rot, erledigt = gold, kommend = sanft grau.
         * Ersetzt Titel + Untertitel + die alten Striche (waren doppelt zur Schritt-Logik). */
        .step-progress { display: flex; justify-content: center; align-items: center; gap: 0; margin-bottom: 40px; }
        .step-pip { display: flex; align-items: center; gap: 10px; color: #b8a9a0; font-size: 13px; letter-spacing: 0.5px; }
        .step-pip:not(:last-child)::after { content: ''; width: 40px; height: 2px; background: #e8dcd0; margin: 0 16px; border-radius: 2px; transition: background 0.3s; }
        .step-pip-num { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; border: 2px solid #e8dcd0; background: #fff; font-weight: 600; font-size: 14px; transition: all 0.3s; flex-shrink: 0; }
        .step-pip-label { font-weight: 500; }
        .step-pip.active { color: var(--deep-rose); }
        .step-pip.active .step-pip-num { border-color: var(--deep-rose); background: var(--deep-rose); color: #fff; }
        .step-pip.done { color: var(--primary-gold); }
        .step-pip.done .step-pip-num { border-color: var(--primary-gold); background: var(--primary-gold); color: var(--charcoal); }
        .step-pip.done::after { background: var(--primary-gold); }
        @media (max-width: 600px) {
            .step-pip-label { display: none; }
            .step-pip:not(:last-child)::after { width: 28px; margin: 0 10px; }
        }

        /* Layout: 2 Spalten — Kalender links, Zusammenfassung rechts (Desktop) */
        .booking-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 32px; align-items: start; }
        @media (max-width: 800px) { .booking-grid { grid-template-columns: 1fr; } }

        .panel { background: white; border-radius: 2px; box-shadow: 0 2px 15px rgba(0,0,0,0.05); padding: 28px; }
        .panel h3 { font-size: 13px; letter-spacing: 2px; text-transform: uppercase; color: var(--deep-rose); font-weight: 500; margin-bottom: 20px; }

        /* Selection-Summary (Sticky rechts; sticky bietet zugleich den Positionierungs-Kontext fuer das absolute Rabatt-Badge). */
        .summary-panel { background: var(--deep-rose); color: white; box-shadow: 0 4px 18px rgba(139,76,92,0.18); position: sticky; top: 100px; }
        /* Sommer-Promo Rabatt-Tag: gleiches gelbes Label-Format wie auf /preise und /buchen, oben rechts auf der Box. */
        .summary-savings-badge { position: absolute; top: -10px; right: 8px; z-index: 2; background: var(--primary-gold); color: var(--charcoal); padding: 9px 18px 10px 18px; border-radius: 2px; text-align: center; box-shadow: 0 3px 10px rgba(0,0,0,0.18); line-height: 1.25; }
        .summary-savings-badge .badge-label { display: block; font-size: 10px; letter-spacing: 1.5px; text-transform: uppercase; font-weight: 600; opacity: 0.85; }
        .summary-savings-badge .badge-value { display: block; font-family: 'Merriweather', serif; font-style: italic; font-weight: 300; font-size: 18px; margin-top: 2px; }
        .summary-panel h3 { color: rgba(255,255,255,0.85); }
        .summary-panel .sum-line { display: flex; justify-content: space-between; padding: 8px 0; font-size: 14px; border-bottom: 1px solid rgba(255,255,255,0.12); }
        .summary-panel .sum-line:last-of-type { border-bottom: none; }
        .summary-panel .sum-label { color: rgba(255,255,255,0.85); }
        .summary-panel .sum-total { display: flex; justify-content: space-between; align-items: baseline; padding: 16px 0 8px; border-top: 2px solid rgba(255,255,255,0.3); margin-top: 14px; font-weight: 500; }
        .summary-panel .sum-total .total-amount { font-family: 'Merriweather', serif; font-size: 22px; font-style: italic; color: var(--primary-gold); }
        .summary-panel .sum-meta { font-size: 12px; color: rgba(255,255,255,0.6); margin-top: 8px; line-height: 1.6; }
        .summary-panel .sum-when { background: rgba(255,255,255,0.1); padding: 14px; margin-top: 18px; border-radius: 2px; font-size: 14px; }
        .summary-panel .sum-when strong { display: block; font-weight: 500; margin-bottom: 4px; color: white; }
        /* 3. Spalte: rote Box oben, "Weiter" ausserhalb unten -> Unterkante buendig mit der laengsten Spalte (Kalender/Uhrzeit). */
        .summary-col { display: flex; flex-direction: column; align-self: stretch; }
        .summary-col .cta-button { margin-top: auto; align-self: flex-end; }
        .summary-col .cta-button:disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
        @media (max-width: 900px) { .summary-col .cta-button { margin-top: 16px; } }
        /* Im Embed ist "Zurueck" ausgeblendet -> leere Actions-Zeile entfernen. */
        .embed-mode #step1 .actions { display: none; }

        /* Kalender */
        .cal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
        .cal-month { font-family: 'Merriweather', serif; font-size: 18px; font-weight: 300; }
        .cal-nav { display: flex; gap: 8px; }
        .cal-nav button { background: white; border: 1px solid #e8dcd0; width: 36px; height: 36px; border-radius: 2px; cursor: pointer; font-size: 16px; color: var(--deep-rose); transition: all 0.2s; }
        .cal-nav button:hover:not(:disabled) { border-color: var(--primary-gold); }
        .cal-nav button:disabled { opacity: 0.3; cursor: not-allowed; }
        .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
        .cal-weekday { text-align: center; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: #999; padding: 8px 0; }
        .cal-day { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; font-size: 14px; border: 1px solid transparent; border-radius: 2px; cursor: pointer; transition: all 0.15s; user-select: none; }
        .cal-day.empty { cursor: default; }
        .cal-day.disabled { color: #ccc; cursor: not-allowed; background: #fafafa; }
        .cal-day:not(.disabled):not(.empty):hover { border-color: var(--primary-gold); background: var(--soft-cream); }
        .cal-day.today {
            background: #fff8d6;
            border: 2px solid #d4a017;
            font-weight: 500;
            color: var(--charcoal);
        }
        .cal-day.today.disabled {
            background: #fff8d6;
            border: 2px solid #d4a017;
            color: #b3a45f;
            font-weight: 500;
            cursor: not-allowed;
        }
        .cal-day.next-available:not(.selected) {
            background: #fdecec;
            border: 1px solid #c0392b;
            color: #c0392b;
            font-weight: 500;
        }
        .cal-day.selected { background: var(--deep-rose); color: white; border-color: var(--deep-rose); font-weight: 500; }
        .cal-day.selected.today { color: white; background: var(--deep-rose); border-color: var(--deep-rose); }

        /* Slots */
        .slots-wrapper { margin-top: 28px; padding-top: 24px; border-top: 1px solid #f0e8e0; }
        .slots-header { font-size: 13px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--charcoal); margin-bottom: 12px; }
        .slots-empty { color: #999; font-size: 14px; font-style: italic; padding: 16px 0; }
        .slots-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; }
        .slot-btn { background: white; border: 1px solid #e8dcd0; padding: 10px 8px; font-family: 'Montserrat', sans-serif; font-size: 14px; color: var(--charcoal); cursor: pointer; transition: all 0.2s; border-radius: 2px; font-variant-numeric: tabular-nums; }
        .slot-btn:hover { border-color: var(--primary-gold); background: var(--soft-cream); }
        .slot-btn.selected { background: var(--deep-rose); color: white; border-color: var(--deep-rose); }
        .slots-loading { color: #999; font-size: 14px; padding: 16px 0; }

        /* Schritt 1: 3 Spalten — Datum | Uhrzeit | Auswahl. Kompakter, "Weiter" näher. */
        .booking-grid-cal { grid-template-columns: 340px 1.25fr 0.85fr; }
        @media (max-width: 900px) { .booking-grid-cal { grid-template-columns: 1fr; } }
        .slots-grid { grid-template-columns: 1fr; }            /* Desktop: Uhrzeiten in schmaler Mittel-Spalte untereinander */
        .slots-panel .slots-wrapper { margin-top: 0; padding-top: 0; border-top: none; }
        .slots-panel #slotsContent { max-height: none; overflow: visible; }   /* max. 8 Slots passen immer ohne Scrollbar */
        .slots-panel .slots-header { display: none; }          /* Datum steht bereits in der Auswahl-Box */
        /* Mobile: Slots-Panel ist volle Breite -> Uhrzeiten in 4er-Raster (passt logisch zu halbstuendiger Granularitaet, 8 Slots = 2 Reihen). */
        @media (max-width: 900px) {
            .slots-grid { grid-template-columns: repeat(4, 1fr); gap: 6px; }
            .slot-btn { padding: 11px 2px; font-size: 13.5px; }
        }
        @media (max-width: 360px) {
            .slots-grid { grid-template-columns: repeat(2, 1fr); }
            .slot-btn { padding: 11px 4px; }
        }

        /* Mobile-Flow-Optimierung der "Deine Auswahl"-Box:
         *  - Schritt 2 (Terminauswahl): Box komplett ausblenden, nur "Weiter"-Button zeigen
         *    -> kuerzerer, knackigerer Schritt.
         *  - Schritt 3 (Kontaktdaten): Box als erste Karte ANZEIGEN, darunter Kontaktdaten,
         *    dann Buttons "Zurueck / Termin bestaetigen". So fehlt im Prozess nichts. */
        @media (max-width: 900px) {
            #step1 .summary-panel { display: none; }
            #step1 .summary-col { display: none; }
            #step2 .summary-panel { order: -1; }
            /* Beide Action-Buttons auf gleicher Hoehe und gut sichtbar. */
            #step1 .actions { display: flex; flex-wrap: wrap; gap: 10px; }
            #step1 .actions .cta-button { flex: 1 1 auto; padding: 14px 20px; text-align: center; }
        }

        /* Form */
        .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
        @media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } }
        .field { display: flex; flex-direction: column; }
        .field label { font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: #666; margin-bottom: 6px; }
        .field input, .field textarea { font-family: 'Montserrat', sans-serif; font-size: 15px; padding: 12px 14px; border: 1px solid #e8dcd0; border-radius: 2px; background: #fdfaf6; color: var(--charcoal); transition: border-color 0.2s; }
        .field input:focus, .field textarea:focus { outline: none; border-color: var(--primary-gold); background: white; }
        .field.full { grid-column: 1 / -1; }
        .field-error { color: #c0392b; font-size: 12px; margin-top: 4px; }
        .consent { display: flex; align-items: flex-start; gap: 10px; margin-top: 16px; font-size: 13px; line-height: 1.5; color: #666; }
        .consent input { margin-top: 3px; appearance: none; width: 18px; height: 18px; border: 1px solid #d0c8c0; border-radius: 2px; cursor: pointer; flex-shrink: 0; position: relative; }
        .consent input:checked { background: var(--deep-rose); border-color: var(--deep-rose); }
        .consent input:checked::after { content: '✓'; position: absolute; top: -3px; left: 2px; color: white; font-size: 14px; font-weight: 600; }
        .consent a { color: var(--deep-rose); }
        /* Geschlecht-Radios in CI-Farbe statt Browser-Blau. */
        #genderSwitch input[type="radio"] { accent-color: var(--deep-rose); }

        .actions { display: flex; gap: 12px; justify-content: flex-end; margin-top: 24px; }
        .actions .cta-button.cta-secondary { background: white; color: var(--charcoal); border-color: #e8dcd0; }
        .actions .cta-button:disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }

        .alert { padding: 14px 18px; border-radius: 2px; margin-bottom: 20px; font-size: 14px; }
        .alert-error { background: #fdecec; color: #c0392b; border-left: 3px solid #c0392b; }
        .alert-info { background: var(--soft-cream); color: var(--charcoal); border-left: 3px solid var(--primary-gold); }

        .success-panel { text-align: center; padding: 60px 32px; background: white; border-radius: 2px; box-shadow: 0 2px 15px rgba(0,0,0,0.05); }
        .success-icon { width: 80px; height: 80px; margin: 0 auto 24px; border-radius: 50%; background: var(--soft-cream); display: flex; align-items: center; justify-content: center; }
        .success-icon svg { width: 40px; height: 40px; color: var(--deep-rose); }
        .success-panel h2 { font-family: 'Merriweather', serif; font-weight: 300; font-size: 28px; color: var(--charcoal); margin-bottom: 12px; }
        .success-panel p { color: #666; line-height: 1.7; max-width: 480px; margin: 0 auto 16px; }
        .success-when { display: inline-block; background: var(--soft-cream); padding: 14px 24px; margin: 16px 0 24px; border-left: 3px solid var(--primary-gold); font-weight: 500; }

        .nodata-state { text-align: center; padding: 60px 32px; color: #666; }
        .nodata-state h2 { font-family: 'Merriweather', serif; font-weight: 300; font-size: 24px; color: var(--charcoal); margin-bottom: 12px; }

.lp-booking-section .booking-section { padding: 0; background: transparent; min-height: 0; }
.lp-booking-section .booking-container { max-width: none; padding: 0; }

/* buchen-test: Behandlerin oben in der roten Box */
.summary-panel .summary-practitioner { display: flex; align-items: center; gap: 12px; padding-bottom: 14px; margin-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,0.18); }
.summary-panel .summary-practitioner img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; object-position: top center; flex-shrink: 0; }
.summary-panel .summary-practitioner .sp-role { font-size: 10px; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,0.7); margin-bottom: 2px; }
.summary-panel .summary-practitioner .sp-name { font-family: 'Merriweather', serif; font-style: italic; font-size: 16px; color: #fff; line-height: 1.1; }


/* Etappe 2: rote Box links als Anker, Inhalt rechts */
.booking-grid-cal .summary-col { order: -1; }
#step2 .booking-grid { grid-template-columns: 340px 1fr; }
#step2 .summary-panel { order: -1; }
.booking-step.active { animation-name: bwFade; }
@keyframes bwFade { from { opacity: 0; } to { opacity: 1; } }

/* Primaere CTAs (Weiter / abschliessen) in Gold, wie der Rechner-Button */
#toStep2, #submitBooking { background: var(--primary-gold) !important; color: var(--charcoal) !important; border: 1px solid var(--primary-gold) !important; font-weight: 600; box-shadow: 0 6px 18px rgba(212,175,55,0.38); }
/* Beide Aktions-Buttons identische Box, unabhaengig von <a> vs <button> (gleiche Hoehe). */
.actions .cta-button { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding-top: 0; padding-bottom: 0; line-height: 1.2; -webkit-appearance: none; appearance: none; }
.actions .cta-button.cta-secondary { border-width: 1px; border-style: solid; }
#toStep2:hover, #submitBooking:hover { background: #caa62f !important; border-color: #caa62f !important; color: var(--charcoal) !important; }
#toStep2[disabled] { box-shadow: none; }

/* ============================================================
   Onlinetool — Buchungs-Teil: Mobile + Buttons (aus buchen.html konsolidiert).
   NUR Booking-Selektoren (#step1/#step2/#bookingFlow/.booking-section, #toStep2),
   damit das neue Widget auch als Embed (z.B. Erstberatung auf LPs) mobil stimmt,
   OHNE einen separaten Rechner auf derselben Seite zu beeinflussen.
   Die step-termin-Umschaltung + rechner-spezifische Regeln bleiben inline in buchen.html.
   ============================================================ */
#toStep2::after { content: "\2192"; display: inline-block; margin-left: 10px; transition: transform 0.2s ease; }
#toStep2:hover::after { transform: translateX(5px); }
.pay-note-box { font-size: 12px; color: rgba(255,255,255,0.6); line-height: 1.5; margin-top: 8px; }

@media (max-width: 767px) {
    #bookingFlow .summary-panel { position: relative !important; top: auto !important; max-width: none !important; margin: 0 !important; }
    #step1 .booking-grid-cal { grid-template-columns: 1.45fr 0.7fr; gap: 8px; align-items: start; }
    #step1 .booking-grid-cal > .panel { min-width: 0; background: transparent; box-shadow: none; padding: 0; border: none; }
    #step1 .summary-panel, #step1 .summary-col { display: block !important; }
    #step1 .summary-col { grid-column: 1 / -1; order: 2; margin-top: 18px; }
    #step1 .slots-grid { grid-template-columns: 1fr; gap: 6px; }
    #step1 .cal-grid { gap: 2px; }
    #step1 .cal-month { font-size: 15px; }
    #step1 .cal-day { font-size: 12px; }
    #step1 .cal-weekday { font-size: 8.5px; letter-spacing: 0; padding: 3px 0; }
    #step1 .cal-nav button { width: 28px; height: 28px; font-size: 14px; }
    #step1 .cal-header { margin-bottom: 10px; }
    #step1 .slot-btn { padding: 10px 6px; font-size: 13px; }
    #step2 .booking-grid { grid-template-columns: 1fr; }
    #step2 .booking-grid > .panel:not(.summary-panel) { background: transparent; box-shadow: none; padding: 0; border: none; }
    #step2 .summary-panel { order: 2; margin-top: 18px; }
    #bookingFlow .summary-panel #summaryItems, #bookingFlow .summary-panel #summaryItems2 { display: none; }
    #bookingFlow .summary-panel .sum-total { border-top: none; margin-top: 4px; padding-top: 4px; }
    #bookingFlow .booking-step > .actions { margin-top: 16px; margin-bottom: 4px; }
    #bookingFlow .booking-step > .summary-col, #bookingFlow .booking-step > .summary-panel { margin-top: 16px !important; margin-bottom: 8px !important; }
    .booking-section .actions { display: flex; gap: 10px; }
    .booking-section .actions .cta-button { flex: 1; }
}
