.elementor-1367 .elementor-element.elementor-element-8816d7e{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--border-radius:25px 25px 25px 25px;--padding-top:50px;--padding-bottom:50px;--padding-left:40px;--padding-right:40px;}.elementor-1367 .elementor-element.elementor-element-8816d7e:not(.elementor-motion-effects-element-type-background), .elementor-1367 .elementor-element.elementor-element-8816d7e > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-88f18a8 );}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-size:var( --e-global-typography-primary-font-size );font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-1367 .elementor-element.elementor-element-1e4f04c{text-align:center;}.elementor-1367 .elementor-element.elementor-element-1e4f04c .elementor-heading-title{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-size:var( --e-global-typography-secondary-font-size );font-weight:var( --e-global-typography-secondary-font-weight );color:var( --e-global-color-secondary );}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-1367 .elementor-element.elementor-element-0b9416f{text-align:center;}.elementor-widget-form .elementor-field-group > label, .elementor-widget-form .elementor-field-subgroup label{color:var( --e-global-color-text );}.elementor-widget-form .elementor-field-group > label{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-field-type-html{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-field-group .elementor-field{color:var( --e-global-color-text );}.elementor-widget-form .elementor-field-group .elementor-field, .elementor-widget-form .elementor-field-subgroup label{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );text-transform:var( --e-global-typography-accent-text-transform );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form .e-form__buttons__wrapper__button-next{background-color:var( --e-global-color-accent );}.elementor-widget-form .elementor-button[type="submit"]{background-color:var( --e-global-color-accent );}.elementor-widget-form .e-form__buttons__wrapper__button-previous{background-color:var( --e-global-color-accent );}.elementor-widget-form .elementor-message{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .e-form__indicators__indicator, .elementor-widget-form .e-form__indicators__indicator__label{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );text-transform:var( --e-global-typography-accent-text-transform );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form{--e-form-steps-indicator-inactive-primary-color:var( --e-global-color-text );--e-form-steps-indicator-active-primary-color:var( --e-global-color-accent );--e-form-steps-indicator-completed-primary-color:var( --e-global-color-accent );--e-form-steps-indicator-progress-color:var( --e-global-color-accent );--e-form-steps-indicator-progress-background-color:var( --e-global-color-text );--e-form-steps-indicator-progress-meter-color:var( --e-global-color-text );}.elementor-widget-form .e-form__indicators__indicator__progress__meter{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );text-transform:var( --e-global-typography-accent-text-transform );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group{padding-right:calc( 10px/2 );padding-left:calc( 10px/2 );margin-bottom:12px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-form-fields-wrapper{margin-left:calc( -10px/2 );margin-right:calc( -10px/2 );margin-bottom:-12px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group.recaptcha_v3-bottomleft, .elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group.recaptcha_v3-bottomright{margin-bottom:0;}body.rtl .elementor-1367 .elementor-element.elementor-element-7456449 .elementor-labels-inline .elementor-field-group > label{padding-left:5px;}body:not(.rtl) .elementor-1367 .elementor-element.elementor-element-7456449 .elementor-labels-inline .elementor-field-group > label{padding-right:5px;}body .elementor-1367 .elementor-element.elementor-element-7456449 .elementor-labels-above .elementor-field-group > label{padding-bottom:5px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group > label{font-family:"kohinoor", Sans-serif;font-size:14px;font-weight:500;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-type-html{padding-bottom:0px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group .elementor-field:not(.elementor-select-wrapper){background-color:#ffffff;border-color:var( --e-global-color-88f18a8 );border-radius:5px 5px 5px 5px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group .elementor-select-wrapper select{background-color:#ffffff;border-color:var( --e-global-color-88f18a8 );border-radius:5px 5px 5px 5px;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-field-group .elementor-select-wrapper::before{color:var( --e-global-color-88f18a8 );}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button{font-family:var( --e-global-typography-3b1a333-font-family ), Sans-serif;font-size:var( --e-global-typography-3b1a333-font-size );font-weight:var( --e-global-typography-3b1a333-font-weight );text-transform:var( --e-global-typography-3b1a333-text-transform );letter-spacing:var( --e-global-typography-3b1a333-letter-spacing );border-radius:30px 30px 30px 30px;padding:16px 0px 16px 0px;}.elementor-1367 .elementor-element.elementor-element-7456449 .e-form__buttons__wrapper__button-next{background-color:var( --e-global-color-primary );color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button[type="submit"]{background-color:var( --e-global-color-primary );color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button[type="submit"] svg *{fill:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .e-form__buttons__wrapper__button-previous{background-color:var( --e-global-color-primary );color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .e-form__buttons__wrapper__button-next:hover{color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button[type="submit"]:hover{color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button[type="submit"]:hover svg *{fill:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449 .e-form__buttons__wrapper__button-previous:hover{color:#ffffff;}.elementor-1367 .elementor-element.elementor-element-7456449{--e-form-steps-indicators-spacing:20px;--e-form-steps-indicator-padding:30px;--e-form-steps-indicator-inactive-secondary-color:#ffffff;--e-form-steps-indicator-active-secondary-color:#ffffff;--e-form-steps-indicator-completed-secondary-color:#ffffff;--e-form-steps-divider-width:1px;--e-form-steps-divider-gap:10px;}#elementor-popup-modal-1367 .dialog-widget-content{animation-duration:1.2s;border-radius:25px 25px 25px 25px;box-shadow:2px 8px 23px 3px rgba(0,0,0,0.2);}#elementor-popup-modal-1367{background-color:rgba(0,0,0,.8);justify-content:center;align-items:center;pointer-events:all;}#elementor-popup-modal-1367 .dialog-message{width:680px;height:auto;}#elementor-popup-modal-1367 .dialog-close-button{display:flex;font-size:24px;}#elementor-popup-modal-1367 .dialog-close-button i{color:var( --e-global-color-primary );}#elementor-popup-modal-1367 .dialog-close-button svg{fill:var( --e-global-color-primary );}@media(max-width:1024px){.elementor-widget-heading .elementor-heading-title{font-size:var( --e-global-typography-primary-font-size );}.elementor-1367 .elementor-element.elementor-element-1e4f04c .elementor-heading-title{font-size:var( --e-global-typography-secondary-font-size );}.elementor-widget-text-editor{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-group > label{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-type-html{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-group .elementor-field, .elementor-widget-form .elementor-field-subgroup label{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-button{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form .elementor-message{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .e-form__indicators__indicator, .elementor-widget-form .e-form__indicators__indicator__label{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form .e-form__indicators__indicator__progress__meter{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button{font-size:var( --e-global-typography-3b1a333-font-size );letter-spacing:var( --e-global-typography-3b1a333-letter-spacing );}}@media(max-width:767px){.elementor-widget-heading .elementor-heading-title{font-size:var( --e-global-typography-primary-font-size );}.elementor-1367 .elementor-element.elementor-element-1e4f04c .elementor-heading-title{font-size:var( --e-global-typography-secondary-font-size );}.elementor-widget-text-editor{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-group > label{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-type-html{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-field-group .elementor-field, .elementor-widget-form .elementor-field-subgroup label{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .elementor-button{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form .elementor-message{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-form .e-form__indicators__indicator, .elementor-widget-form .e-form__indicators__indicator__label{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-widget-form .e-form__indicators__indicator__progress__meter{font-size:var( --e-global-typography-accent-font-size );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-1367 .elementor-element.elementor-element-7456449 .elementor-button{font-size:var( --e-global-typography-3b1a333-font-size );letter-spacing:var( --e-global-typography-3b1a333-letter-spacing );}}/* Start custom CSS for form, class: .elementor-element-7456449 */<style>
/* Einheitliche Schrift in allen Feldern */
.reservierungsformular input,
.reservierungsformular select,
.reservierungsformular textarea {
  font-size: 15px !important;
  color: #555555 !important;
}

/* Platzhalter */
.reservierungsformular ::placeholder {
  color: #b0b0b0 !important;
  font-size: 15px !important;
  opacity: 1 !important;
}

/* Auswahlfelder grau, solange noch nichts gewählt ist (wie ein Platzhalter) */
.reservierungsformular select:invalid {
  color: #b0b0b0 !important;
}
.reservierungsformular select option {
  color: #555555;
}

/* Datumsfeld: weiß statt grau, Hand-Cursor */
.reservierungsformular input.flatpickr-input[readonly] {
  background-color: #ffffff !important;
  cursor: pointer;
}

/* Kalender in euren Farben */
.flatpickr-day.selected,
.flatpickr-day.selected:hover {
  background: #727a3f;
  border-color: #727a3f;
}
.flatpickr-day.today {
  border-color: #727a3f;
}
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover {
  color: #d0d0d0;
}
</style>

<script>
document.addEventListener('DOMContentLoaded', function () {

  // ===== HIER ANPASSEN =====
  // 0 = Sonntag, 1 = Montag ... 6 = Samstag. Leeres [] = Ruhetag.
  const OEFFNUNGSZEITEN = {
    0: [],                                     // Sonntag: geschlossen
    1: [],                                     // Montag: geschlossen
    2: [['12:00','14:30']],                    // Dienstag
    3: [['12:00','14:30']],                    // Mittwoch
    4: [['12:00','14:30'], ['18:00','21:30']], // Donnerstag
    5: [['12:00','14:30'], ['18:00','21:30']], // Freitag
    6: [['10:00','13:00']]                     // Samstag
  };
  const GESCHLOSSEN = [];            // z. B. ['2026-12-24', '2026-12-31'] für Feiertage/Urlaub
  const TAKT_MINUTEN = 30;           // Abstand der Uhrzeiten
  const LETZTE_RES_VOR_SCHLUSS = 60; // letzte Reservierung 60 Min. vor Schluss
  const VORLAUF_MINUTEN = 60;        // heute frühestens in 60 Min.
  const MAX_TAGE_IM_VORAUS = 90;
  // =========================

  const form = document.querySelector('.reservierungsformular form');
  if (!form) return;
  const dateInput = form.querySelector('#form-field-datum');
  const timeSelect = form.querySelector('#form-field-uhrzeit');
  if (!dateInput || !timeSelect) return;

  const DEUTSCH = {
    weekdays: {
      shorthand: ['So','Mo','Di','Mi','Do','Fr','Sa'],
      longhand: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
    },
    months: {
      shorthand: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
      longhand: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']
    },
    firstDayOfWeek: 1,
    rangeSeparator: ' bis ',
    time_24hr: true
  };

  const zuMin = t => { const [h, m] = t.split(':').map(Number); return h * 60 + m; };
  const zuZeit = m => String(Math.floor(m / 60)).padStart(2, '0') + ':' + String(m % 60).padStart(2, '0');
  const zuISO = d => d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
  const ausISO = v => { if (!v) return null; const [y, m, d] = v.split('-').map(Number); return new Date(y, m - 1, d); };

  function slots(datum) {
    if (GESCHLOSSEN.includes(zuISO(datum))) return [];
    const jetzt = new Date();
    const heute = datum.toDateString() === jetzt.toDateString();
    const frueheste = heute ? jetzt.getHours() * 60 + jetzt.getMinutes() + VORLAUF_MINUTEN : 0;
    const liste = [];
    (OEFFNUNGSZEITEN[datum.getDay()] || []).forEach(([von, bis]) => {
      for (let t = zuMin(von); t <= zuMin(bis) - LETZTE_RES_VOR_SCHLUSS; t += TAKT_MINUTEN) {
        if (t >= frueheste) liste.push(zuZeit(t));
      }
    });
    return liste;
  }

  function uhrzeitenAktualisieren() {
    const datum = ausISO(dateInput.value);
    timeSelect.innerHTML = '';
    if (!datum) { timeSelect.add(new Option('Bitte zuerst Datum wählen', '')); return; }
    const liste = slots(datum);
    if (!liste.length) { timeSelect.add(new Option('An diesem Tag leider keine Reservierung möglich', '')); return; }
    timeSelect.add(new Option('Uhrzeit wählen', ''));
    liste.forEach(z => timeSelect.add(new Option(z + ' Uhr', z)));
  }

  let kalender = null;

  function kalenderEinrichten() {
    // Warten, bis Elementor seinen Kalender gestartet hat – dann durch unseren ersetzen
    if (!dateInput._flatpickr || typeof window.flatpickr !== 'function') return false;
    dateInput._flatpickr.destroy();
    const max = new Date(); max.setDate(max.getDate() + MAX_TAGE_IM_VORAUS);
    kalender = window.flatpickr(dateInput, {
      locale: DEUTSCH,
      dateFormat: 'Y-m-d',     // Wert, der in der E-Mail ankommt
      altInput: true,
      altFormat: 'D, d.m.Y',   // Anzeige für Gäste, z. B. „Do, 01.10.2026“
      altInputClass: '',
      disableMobile: true,     // überall derselbe Kalender, auch auf dem Handy
      minDate: 'today',
      maxDate: max,
      disable: [d => slots(d).length === 0],
      onChange: uhrzeitenAktualisieren
    });
    return true;
  }

  const warten = setInterval(() => { if (kalenderEinrichten()) clearInterval(warten); }, 200);
  setTimeout(() => clearInterval(warten), 10000);

  // Nach erfolgreichem Absenden alles zurücksetzen
  form.addEventListener('reset', () => setTimeout(() => {
    if (kalender) kalender.clear();
    uhrzeitenAktualisieren();
  }, 0));

  uhrzeitenAktualisieren();
});
</script>/* End custom CSS */