{"id":4153,"date":"2026-02-22T23:50:49","date_gmt":"2026-02-22T22:50:49","guid":{"rendered":"https:\/\/www.claus-blumenauer.de\/events\/"},"modified":"2026-05-21T17:08:18","modified_gmt":"2026-05-21T15:08:18","slug":"events","status":"publish","type":"page","link":"https:\/\/www.claus-blumenauer.de\/en\/events\/","title":{"rendered":"Events"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4153\" class=\"elementor elementor-4153 elementor-3605\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-65cb70b e-con-full e-flex e-con e-parent\" data-id=\"65cb70b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-fee0180 e-flex e-con-boxed e-con e-child\" data-id=\"fee0180\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bd57d84 elementor-widget-tablet__width-initial elementor-widget-mobile__width-inherit elementor-invisible elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading\" data-id=\"bd57d84\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"theme-post-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Events<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8549a20 e-flex e-con-boxed e-con e-parent\" data-id=\"8549a20\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fec93a8 e-con-full e-flex e-con e-child\" data-id=\"fec93a8\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-0469e2f e-con-full e-flex e-con e-child\" data-id=\"0469e2f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7a3279d elementor-widget elementor-widget-html\" data-id=\"7a3279d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div>\n\n\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Event Calendar \u2013 Claus Blumenauer Real Estate<\/title>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=IBM+Plex+Serif:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&display=swap\" rel=\"stylesheet\">\n  <style>\n    \/* \u2500\u2500 Reset & Base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --gold:   #ac914c;\n      --brown:  #594f48;\n      --cream:  #efe9e0;\n      --white:  #ffffff;\n      --gold-light: #c8ab6e;\n      --brown-dark: #3d3530;\n      --cream-dark: #ddd4c5;\n      --serif: 'IBM Plex Serif', Georgia, serif;\n      --sans:  'IBM Plex Sans', Arial, sans-serif;\n    }\n\n    body {\n      font-family: var(--sans);\n      background: var(--white);\n      color: var(--brown);\n    }\n\n    \/* \u2500\u2500 Wrapper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-calendar {\n      max-width: 960px;\n      margin: 0 auto;\n      padding: 0 20px 60px;\n    }\n\n    \/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-header {\n      text-align: center;\n      padding: 52px 0 36px;\n      border-bottom: 1px solid var(--cream-dark);\n      margin-bottom: 36px;\n    }\n    .cb-header__eyebrow {\n      font-family: var(--sans);\n      font-size: 11px;\n      font-weight: 500;\n      letter-spacing: 3px;\n      text-transform: uppercase;\n      color: var(--gold);\n      margin-bottom: 14px;\n    }\n    .cb-header__title {\n      font-family: var(--serif);\n      font-size: clamp(26px, 4vw, 38px);\n      font-weight: 400;\n      color: var(--brown);\n      line-height: 1.25;\n      margin-bottom: 14px;\n    }\n    .cb-header__subtitle {\n      font-size: 15px;\n      font-weight: 300;\n      color: var(--brown);\n      opacity: 0.75;\n      max-width: 540px;\n      margin: 0 auto;\n      line-height: 1.7;\n    }\n\n    \/* \u2500\u2500 View Toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-toggle {\n      display: flex;\n      justify-content: center;\n      gap: 0;\n      margin-bottom: 36px;\n    }\n    .cb-toggle__btn {\n      font-family: var(--sans);\n      font-size: 12px;\n      font-weight: 500;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      padding: 11px 28px;\n      border: 1px solid var(--gold);\n      background: transparent;\n      color: var(--gold);\n      cursor: pointer;\n      transition: background 0.25s, color 0.25s;\n    }\n    .cb-toggle__btn:first-child { border-right: none; }\n    .cb-toggle__btn:last-child  { border-left: none; }\n    .cb-toggle__btn.active,\n    .cb-toggle__btn:hover {\n      background: var(--gold);\n      color: var(--white);\n    }\n\n    \/* \u2500\u2500 Month Navigation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-nav {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      margin-bottom: 24px;\n    }\n    .cb-nav__arrow {\n      width: 40px;\n      height: 40px;\n      background: transparent;\n      border: 1px solid var(--cream-dark);\n      color: var(--brown);\n      font-size: 18px;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: background 0.2s, border-color 0.2s, color 0.2s;\n    }\n    .cb-nav__arrow:hover {\n      background: var(--gold);\n      border-color: var(--gold);\n      color: var(--white);\n    }\n    .cb-nav__label {\n      font-family: var(--serif);\n      font-size: 22px;\n      font-weight: 400;\n      color: var(--brown);\n      letter-spacing: 0.5px;\n    }\n\n    \/* \u2500\u2500 Grid View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-grid { display: block; }\n\n    .cb-weekdays {\n      display: grid;\n      grid-template-columns: repeat(7, 1fr);\n      margin-bottom: 4px;\n    }\n    .cb-weekdays span {\n      font-size: 10px;\n      font-weight: 600;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      color: var(--gold);\n      text-align: center;\n      padding: 6px 0 10px;\n    }\n\n    .cb-days {\n      display: grid;\n      grid-template-columns: repeat(7, 1fr);\n      gap: 3px;\n    }\n    .cb-day {\n      min-height: 88px;\n      background: var(--cream);\n      padding: 8px;\n      position: relative;\n      cursor: default;\n      transition: background 0.2s;\n    }\n    .cb-day:hover { background: #e7dfd3; }\n    .cb-day--empty { background: transparent; cursor: default; }\n    .cb-day--empty:hover { background: transparent; }\n    .cb-day--today .cb-day__num {\n      background: var(--gold);\n      color: var(--white);\n      border-radius: 50%;\n      width: 24px;\n      height: 24px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .cb-day__num {\n      font-size: 12px;\n      font-weight: 500;\n      color: var(--brown);\n      margin-bottom: 6px;\n      width: 24px;\n      height: 24px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .cb-day__events { display: flex; flex-direction: column; gap: 3px; }\n    .cb-event-chip {\n      font-size: 9.5px;\n      font-weight: 500;\n      background: var(--gold);\n      color: var(--white);\n      padding: 2px 6px;\n      line-height: 1.4;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      cursor: pointer;\n      border-radius: 1px;\n      transition: background 0.2s;\n    }\n    .cb-event-chip:hover { background: var(--brown); }\n    .cb-event-chip--featured {\n      background: linear-gradient(135deg, #8a7a3a, var(--gold)) !important;\n      font-weight: 600;\n      box-shadow: 0 1px 4px rgba(89,79,72,0.25);\n    }\n    .cb-event-chip--featured:hover { background: var(--brown) !important; }\n    .cb-event-chip--more {\n      background: transparent;\n      color: var(--gold);\n      font-weight: 600;\n      padding: 0 4px;\n    }\n    .cb-event-chip--more:hover { background: transparent; color: var(--brown); }\n\n    \/* \u2500\u2500 List View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-list { display: none; }\n\n    .cb-list-month {\n      margin-bottom: 36px;\n    }\n    .cb-list-month__title {\n      font-family: var(--serif);\n      font-size: 15px;\n      font-weight: 400;\n      color: var(--gold);\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      border-bottom: 1px solid var(--cream-dark);\n      padding-bottom: 10px;\n      margin-bottom: 16px;\n    }\n\n    .cb-list-item {\n      display: grid;\n      grid-template-columns: 64px 1fr;\n      gap: 0 20px;\n      align-items: start;\n      padding: 16px 0;\n      border-bottom: 1px solid var(--cream);\n      cursor: pointer;\n      transition: background 0.15s;\n    }\n    .cb-list-item:hover { background: #f9f5f0; margin: 0 -16px; padding: 16px 16px; }\n    .cb-list-item:last-child { border-bottom: none; }\n\n    .cb-list-item--featured {\n      position: relative;\n      border: 1px solid var(--gold) !important;\n      border-bottom: 1px solid var(--gold) !important;\n      border-radius: 2px;\n      background: linear-gradient(135deg, #faf7f2 0%, #fff 45%, #f5efe6 100%);\n      box-shadow: 0 4px 24px rgba(172, 145, 76, 0.18);\n      padding: 20px 18px !important;\n      margin-bottom: 12px !important;\n      cursor: pointer;\n    }\n    \/* Letzte Zeile im Monat: Theme setzt oft border-bottom:none \u2013 untere Kante erzwingen *\/\n    .cb-list-item.cb-list-item--featured:last-child {\n      border-bottom: 1px solid var(--gold) !important;\n    }\n    .cb-list-item--featured:hover {\n      background: linear-gradient(135deg, #f5efe6 0%, #fff 50%, #efe9e0 100%);\n      margin: 0 -12px !important;\n      padding: 20px 30px !important;\n    }\n    .cb-list-item--featured .cb-list-date {\n      background: var(--white);\n      border-top-width: 3px;\n    }\n    .cb-featured-head {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      justify-content: flex-start;\n      gap: 10px;\n      margin-bottom: 12px;\n    }\n    .cb-featured-badge {\n      display: inline-block;\n      font-size: 9px;\n      font-weight: 700;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      background: linear-gradient(135deg, #9a8340, var(--gold));\n      color: var(--white);\n      padding: 5px 12px;\n      margin: 0;\n      border-radius: 1px;\n      flex-shrink: 0;\n    }\n    .cb-featured-thumb {\n      margin: 0;\n      padding: 4px 8px;\n      border-radius: 2px;\n      border: 1px solid rgba(172, 145, 76, 0.35);\n      background: var(--white);\n      flex-shrink: 0;\n      box-sizing: border-box;\n    }\n    .cb-featured-thumb img {\n      width: auto;\n      height: auto;\n      max-width: min(100%, 280px);\n      max-height: 88px;\n      object-fit: contain;\n      object-position: center center;\n      display: block;\n      margin: 0;\n      vertical-align: top;\n    }\n    .cb-calendar a.cb-list-item__cta,\n    .cb-list-item__cta {\n      display: inline-block;\n      margin-top: 14px;\n      font-family: var(--sans);\n      font-size: 11px;\n      font-weight: 600;\n      letter-spacing: 1.5px;\n      text-transform: uppercase;\n      text-decoration: none !important;\n      \/* WP-Themes: Linkfarbe \u00fcberschreiben (sonst Gold auf Gold = unsichtbar) *\/\n      color: #ffffff !important;\n      -webkit-text-fill-color: #ffffff !important;\n      background-color: #ac914c !important;\n      border: 1px solid #ac914c !important;\n      padding: 12px 22px;\n      line-height: 1.45 !important;\n      transition: background 0.2s, color 0.2s, border-color 0.2s;\n    }\n    .cb-calendar a.cb-list-item__cta:hover,\n    .cb-list-item__cta:hover {\n      background-color: #594f48 !important;\n      border-color: #594f48 !important;\n      color: #ffffff !important;\n      -webkit-text-fill-color: #ffffff !important;\n    }\n\n    .cb-list-date {\n      text-align: center;\n      padding: 10px 8px;\n      background: var(--cream);\n      border-top: 2px solid var(--gold);\n    }\n    .cb-list-date__day {\n      font-family: var(--serif);\n      font-size: 26px;\n      font-weight: 300;\n      color: var(--brown);\n      line-height: 1;\n    }\n    .cb-list-date__month {\n      font-size: 9px;\n      font-weight: 600;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      color: var(--gold);\n      margin-top: 3px;\n    }\n    .cb-list-info__title {\n      font-family: var(--serif);\n      font-size: 17px;\n      font-weight: 400;\n      color: var(--brown);\n      margin-bottom: 5px;\n      line-height: 1.3;\n    }\n    .cb-list-info__meta {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 14px;\n      font-size: 12px;\n      font-weight: 300;\n      color: var(--brown);\n      opacity: 0.7;\n    }\n    .cb-list-info__meta span {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n    }\n    .cb-list-info__meta svg {\n      width: 12px;\n      height: 12px;\n      flex-shrink: 0;\n      opacity: 0.6;\n    }\n    .cb-list-info__desc {\n      font-size: 13px;\n      font-weight: 300;\n      color: var(--brown);\n      opacity: 0.65;\n      margin-top: 7px;\n      line-height: 1.6;\n    }\n    .cb-badge-multiday {\n      display: inline-block;\n      font-size: 9px;\n      font-weight: 600;\n      letter-spacing: 1.5px;\n      text-transform: uppercase;\n      background: var(--brown);\n      color: var(--cream);\n      padding: 2px 8px;\n      margin-left: 8px;\n      vertical-align: middle;\n      border-radius: 1px;\n      white-space: nowrap;\n    }\n    .cb-list-date--multiday {\n      border-top-color: var(--brown);\n    }\n    .cb-list-date--multiday .cb-list-date__day {\n      font-size: 16px;\n      line-height: 1.2;\n    }\n\n    \/* \u2500\u2500 Modal Overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cb-overlay {\n      display: none;\n      position: fixed;\n      inset: 0;\n      background: rgba(89,79,72,0.55);\n      z-index: 9999;\n      align-items: center;\n      justify-content: center;\n      padding: 20px;\n    }\n    .cb-overlay.open { display: flex; }\n\n    .cb-modal {\n      background: var(--white);\n      max-width: 480px;\n      width: 100%;\n      padding: 40px;\n      position: relative;\n      animation: modalIn 0.25s ease;\n    }\n    @keyframes modalIn {\n      from { opacity: 0; transform: translateY(16px); }\n      to   { opacity: 1; transform: translateY(0); }\n    }\n    .cb-modal__close {\n      position: absolute;\n      top: 16px; right: 20px;\n      background: none;\n      border: none;\n      font-size: 22px;\n      color: var(--brown);\n      opacity: 0.5;\n      cursor: pointer;\n      line-height: 1;\n    }\n    .cb-modal__close:hover { opacity: 1; }\n    .cb-modal__eyebrow {\n      font-size: 10px;\n      font-weight: 600;\n      letter-spacing: 3px;\n      text-transform: uppercase;\n      color: var(--gold);\n      margin-bottom: 12px;\n    }\n    .cb-modal__title {\n      font-family: var(--serif);\n      font-size: 22px;\n      font-weight: 400;\n      color: var(--brown);\n      margin-bottom: 20px;\n      line-height: 1.3;\n    }\n    .cb-modal__divider {\n      height: 1px;\n      background: var(--cream-dark);\n      margin-bottom: 20px;\n    }\n    .cb-modal__row {\n      display: flex;\n      gap: 10px;\n      margin-bottom: 12px;\n      font-size: 13px;\n      font-weight: 300;\n      color: var(--brown);\n      line-height: 1.5;\n    }\n    .cb-modal__row svg {\n      width: 15px;\n      height: 15px;\n      flex-shrink: 0;\n      margin-top: 1px;\n      color: var(--gold);\n    }\n    .cb-modal__desc {\n      margin-top: 16px;\n      font-size: 14px;\n      font-weight: 300;\n      color: var(--brown);\n      opacity: 0.75;\n      line-height: 1.7;\n    }\n    .cb-modal__cta-wrap {\n      margin-top: 24px;\n      padding-top: 20px;\n      border-top: 1px solid var(--cream-dark);\n    }\n    .cb-calendar a.cb-modal__cta,\n    .cb-modal__cta {\n      display: inline-block;\n      font-family: var(--sans);\n      font-size: 12px;\n      font-weight: 600;\n      letter-spacing: 1.5px;\n      text-transform: uppercase;\n      text-decoration: none !important;\n      color: #ffffff !important;\n      -webkit-text-fill-color: #ffffff !important;\n      background-color: #ac914c !important;\n      border: 1px solid #ac914c !important;\n      padding: 12px 26px;\n      line-height: 1.45 !important;\n      transition: background 0.2s, border-color 0.2s, color 0.2s;\n    }\n    .cb-calendar a.cb-modal__cta:hover,\n    .cb-modal__cta:hover {\n      background-color: #594f48 !important;\n      border-color: #594f48 !important;\n      color: #ffffff !important;\n      -webkit-text-fill-color: #ffffff !important;\n    }\n\n    \/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    @media (max-width: 600px) {\n      .cb-day { min-height: 60px; padding: 5px; }\n      .cb-day__num { font-size: 11px; }\n      .cb-event-chip { font-size: 8px; padding: 1px 4px; }\n      .cb-list-item { grid-template-columns: 52px 1fr; gap: 0 12px; }\n      .cb-list-item--featured { padding: 16px 12px !important; }\n      .cb-list-item--featured:hover { margin: 0 -8px !important; padding: 16px 20px !important; }\n      .cb-list-date__day { font-size: 20px; }\n      .cb-list-item__cta { display: block; text-align: center; width: 100%; box-sizing: border-box; }\n      .cb-featured-head {\n        gap: 8px;\n      }\n      .cb-featured-thumb img {\n        max-width: min(100%, 220px);\n        max-height: 72px;\n      }\n      .cb-modal { padding: 28px 22px; }\n    }\n  <\/style>\n\n\n\n<div class=\"cb-calendar\">\n\n  <!-- Header -->\n  <div class=\"cb-header\">\n    <p class=\"cb-header__eyebrow\">Events & Dates<\/p>\n    <h1 class=\"cb-header__title\">Event Calendar<\/h1>\n    <p class=\"cb-header__subtitle\">\n Exclusive events, viewings, and functions in K\u00f6nigstein, Oberursel\n and the region \u2013 including in the K\u00f6nigsteinzimmer, at the Elaya Hotel Oberursel\n and at other selected locations.\n    <\/p>\n  <\/div>\n\n  <!-- Toggle -->\n  <div class=\"cb-toggle\">\n    <button class=\"cb-toggle__btn\" id=\"btnGrid\" onclick=\"switchView('grid')\">Month View<\/button>\n    <button class=\"cb-toggle__btn active\" id=\"btnList\" onclick=\"switchView('list')\">List View<\/button>\n  <\/div>\n\n  <!-- Navigation -->\n  <div class=\"cb-nav\">\n    <button class=\"cb-nav__arrow\" onclick=\"changeMonth(-1)\" aria-label=\"Vorheriger Monat\">\u2190<\/button>\n    <span class=\"cb-nav__label\" id=\"navLabel\"><\/span>\n    <button class=\"cb-nav__arrow\" onclick=\"changeMonth(1)\" aria-label=\"N\u00e4chster Monat\">\u2192<\/button>\n  <\/div>\n\n  <!-- Grid View -->\n  <div class=\"cb-grid\" id=\"viewGrid\" style=\"display:none\">\n    <div class=\"cb-weekdays\">\n      <span>Mon<\/span><span>Tue<\/span><span>Wed<\/span>\n      <span>Thu<\/span><span>Fri<\/span><span>Sat<\/span><span>Sun<\/span>\n    <\/div>\n    <div class=\"cb-days\" id=\"calDays\"><\/div>\n  <\/div>\n\n  <!-- List View -->\n  <div class=\"cb-list\" id=\"viewList\" style=\"display:block\"><\/div>\n\n<\/div>\n\n<!-- Modal -->\n<div class=\"cb-overlay\" id=\"overlay\" onclick=\"closeModal(event)\">\n  <div class=\"cb-modal\" id=\"modal\">\n    <button class=\"cb-modal__close\" onclick=\"closeModalBtn()\">\u00d7<\/button>\n    <p class=\"cb-modal__eyebrow\" id=\"mEyebrow\"><\/p>\n    <h2 class=\"cb-modal__title\" id=\"mTitle\"><\/h2>\n    <div class=\"cb-modal__divider\"><\/div>\n    <div class=\"cb-modal__row\">\n      <!-- calendar icon -->\n      <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"><\/rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"><\/line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"><\/line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"><\/line><\/svg>\n      <span id=\"mDate\"><\/span>\n    <\/div>\n    <div class=\"cb-modal__row\" id=\"mTimeRow\">\n      <!-- clock icon -->\n      <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><polyline points=\"12 7 12 12 15 15\"><\/polyline><\/svg>\n      <span id=\"mTime\"><\/span>\n    <\/div>\n    <div class=\"cb-modal__row\" id=\"mLocRow\">\n      <!-- pin icon -->\n      <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M12 2C8.68 2 6 4.68 6 8c0 5.25 6 13 6 13s6-7.75 6-13c0-3.32-2.68-6-6-6z\"><\/path><circle cx=\"12\" cy=\"8\" r=\"2.5\"><\/circle><\/svg>\n      <span id=\"mLoc\"><\/span>\n    <\/div>\n    <p class=\"cb-modal__desc\" id=\"mDesc\"><\/p>\n    <div class=\"cb-modal__cta-wrap\" id=\"mCtaWrap\" style=\"display:none\">\n      <a class=\"cb-modal__cta\" id=\"mCta\" href=\"#\">To Invitation & Registration<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/* \u2500\u2500 Event Data \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Passe die Ereignisse hier an oder verbinde sie mit einer API.\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nconst EVENTS = [\n  {\n    id: 1,\n    date: '2026-02-11',\n    time: '14:56',\n    title: '60. Geburtstag im K\u00f6nigsteinzimmer',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Exklusive Geburtstagsfeier im stilvollen Ambiente des K\u00f6nigsteinzimmers. Gastgeberin: Petra Krause.'\n  },\n  {\n    id: 2,\n    date: '2026-02-27',\n    time: '16:53',\n    title: 'Open House \u2013 Villa Vie Wiesbaden',\n    location: 'Sven Echternach, Sonnenberger Str. 20, 65193 Wiesbaden',\n    desc: 'Gemeinsame Besichtigung der Villa Vie Wiesbaden in Kooperation mit dem renommierten Auktionshaus.'\n  },\n  {\n    id: 3,\n    date: '2026-02-28',\n    dateEnd: '2026-03-01',\n    multiDay: true,\n    title: 'Informationsveranstaltung Coaching2Lead',\n    location: 'Gutsche & Bork GbR, Am Lichtetal 1, K\u00f6nigstein',\n    desc: 'Zweit\u00e4gige Informationsveranstaltung f\u00fcr ausgew\u00e4hlte Interessenten. Veranstalter: Gutsche & Bork GbR \u2013 Coaching2Lead.'\n  },\n  {\n    id: 4,\n    date: '2026-03-05',\n    time: '16:57',\n    title: 'Vernissage \u2013 Leske \u00fcber Dr. Astrid von Luxburg',\n    location: 'Kultur-Erlebnis, Rattener Str. 13, 55425 Walddalheim',\n    desc: 'Kunstvernissage mit Werken von Leske. Vortrag \u00fcber das Leben und Schaffen von Dr. Astrid von Luxburg.'\n  },\n  {\n    id: 5,\n    date: '2026-03-08',\n    time: '16:46',\n    title: 'Anmietung \u2013 Brautmode & Kosmetik',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Exklusiver Showroom f\u00fcr Brautmode und Kosmetik. Besondere Atmosph\u00e4re f\u00fcr einen unvergesslichen Anlass.'\n  },\n  {\n    id: 6,\n    date: '2026-03-10',\n    time: '09:00\u201313:00',\n    title: 'CDU \u2013 Politisches Informationsgespr\u00e4ch mit Christina Stumpp',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Exklusive Informationsveranstaltung der CDU mit Christina Stumpp im K\u00f6nigsteinzimmer.'\n  },\n  {\n    id: 7,\n    date: '2026-03-18',\n    time: '18:00',\n    title: 'Coco Chanel Lesung',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Literarische Lesung \u00fcber das Leben und das Verm\u00e4chtnis von Coco Chanel \u2013 Mode, Stil und Charakter.'\n  },\n  {\n    id: 8,\n    date: '2026-03-28',\n    time: '16:49',\n    title: 'Informationsveranstaltung Coaching2Lead',\n    location: 'Gutsche & Bork GbR, Am Lichtetal 1, K\u00f6nigstein',\n    desc: 'Weitere Informationsveranstaltung mit Coaching2Lead f\u00fcr neue Interessenten.'\n  },\n  {\n    id: 9,\n    date: '2026-04-12',\n    time: '16:49',\n    title: 'Brautfrisuren \u2013 Antonia Franke',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Pr\u00e4sentation aktueller Brautfrisuren-Trends mit Stylistin Antonia Franke. Pers\u00f6nliche Beratung auf Anfrage.'\n  },\n  {\n    id: 10,\n    date: '2026-04-18',\n    time: '16:50',\n    title: 'Informationsveranstaltung Coaching2Lead',\n    location: 'Gutsche & Bork GbR, Am Lichtetal 1, K\u00f6nigstein',\n    desc: 'Exklusives Informationsevent. Veranstalter: Gutsche & Bork GbR \u2013 Coaching2Lead.'\n  },\n  {\n    id: 11,\n    date: '2026-05-15',\n    time: '18:00',\n    title: 'Immobilienabend \u2013 Markt & Perspektiven',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein',\n    desc: 'Exklusiver Abend f\u00fcr Immobilieninteressenten mit aktuellen Marktanalysen und pers\u00f6nlicher Beratung durch das Team Blumenauer.'\n  },\n  {\n    id: 13,\n    date: '2026-05-28',\n    time: 'Einlass 19:00 \u00b7 Beginn 19:30',\n    timeDetailed: true,\n    title: 'Klang & Kapital',\n    location: 'K\u00f6nigsteinzimmer, Frankfurter Str. 1, 61462 K\u00f6nigstein im Taunus',\n    desc: 'Wenn Musik zur Verm\u00f6gensklasse wird: Kammermusik und Investmentperspektive mit VIOLIN ASSETS, INSTRUMENTUM Foundation und Christian Reister \u2013 dazu Laura Zari\u0146a (Violine) und Una\u00ed S\u00e1nchez (Violoncello). Dr. Astrid von Luxburg kuratiert den Abend. Begrenzte Pl\u00e4tze.',\n    featured: true,\n    thumbUrl: 'https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2026\/03\/titelbild-klang-kapital.png',\n    registerUrl: 'https:\/\/www.claus-blumenauer.de\/klang-kapital\/'\n  },\n  {\n    id: 12,\n    date: '2026-06-20',\n    time: '16:51',\n    title: 'Informationsveranstaltung Coaching2Lead',\n    location: 'Gutsche & Bork GbR, Am Lichtetal 1, K\u00f6nigstein',\n    desc: 'Regelm\u00e4\u00dfiges Informationsevent von Coaching2Lead im K\u00f6nigsteinzimmer.'\n  },\n  {\n    id: 14,\n    date: '2026-06-01',\n    time: '19:00',\n    title: 'Werte treffen Wirtschaft',\n    location: 'Nicola Sch\u00e4fer, Hauptstra\u00dfe 41, 61462 K\u00f6nigstein im Taunus',\n    desc: 'Netzwerk f\u00fcr Unternehmer- und Freiberuflerinnen \u2013 bereits zum dritten Mal: Gemeinsam Zukunft gestalten. Keynote von Christiane Harriehausen (Journalistin, Beirat Wertekommission): \u201eWerte schaffen Werte \u2013 was Selbstverantwortung und Vertrauen in Unternehmen bewirken\u201c. Ein Abend voller Inspiration, Austausch und echter Verbindung. Gastgeberinnen: Nicola Sch\u00e4fer, Christiane Harriehausen, Heidi Ehniss, Ivonne Mumm und Martina G\u00fcttler. Anmeldung bei Martina G\u00fcttler (guettler@claus-blumenauer.de, 0160-97744086) oder Heidi Ehniss (heidi.ehniss@t-online.de).',\n    featured: true,\n    thumbUrl: 'https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2026\/05\/Werte-treffen-Wirtschaft-Flyer-14.8-x-14.8-cm-23.04.2026-3.png',\n    registerUrl: 'https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2026\/05\/Werte-treffen-Wirtschaft-Flyer-14.8-x-14.8-cm-23.04.2026-3.png'\n  },\n  {\n    id: 15,\n    date: '2026-03-26',\n    time: '19:00',\n    title: 'Fokus O: Anforderungen von Banken und Sparkassen an die Immobilie',\n    location: 'Elaya Hotel Frankfurt Oberursel, Zimmersm\u00fchlenweg 35, 61440 Oberursel',\n    desc: 'Welche F\u00f6rderdarlehen und Zusch\u00fcsse \u2013 warum ist es heute wichtiger denn je, sich nicht nur auf die sogenannte Hausbank zu verlassen? Referent: Firmengruppe Mockenhaupt, Armin Mockenhaupt. Status: zugesagt.'\n  },\n  {\n    id: 16,\n    date: '2026-06-25',\n    time: '19:00',\n    title: 'Fokus O: Umr\u00fcstung von fossilen Brennstoffen auf erneuerbare Energien',\n    location: 'Elaya Hotel Frankfurt Oberursel, Zimmersm\u00fchlenweg 35, 61440 Oberursel',\n    desc: 'Anhand von Praxisbeispielen. Referent: LOK, Herr Fr\u00f6nicke. Status: zugesagt.'\n  },\n  {\n    id: 17,\n    date: '2026-08-27',\n    time: '19:00',\n    title: 'Fokus O: Regionaler Fl\u00e4chennutzungsplan',\n    location: 'Elaya Hotel Frankfurt Oberursel, Zimmersm\u00fchlenweg 35, 61440 Oberursel',\n    desc: 'Referenten: Stadt Oberursel, B\u00fcrgermeisterin Antje Runge mit Daniel Bauer (GBL Stadtentwicklung). Status: zugesagt.'\n  },\n  {\n    id: 18,\n    date: '2026-09-24',\n    time: '19:00',\n    title: 'Fokus O: Steuerliche Aspekte beim An- und Verkauf von Immobilien',\n    location: 'Elaya Hotel Frankfurt Oberursel, Zimmersm\u00fchlenweg 35, 61440 Oberursel',\n    desc: 'Referent: btu-beraterpartner, Benjamin M\u00fcller. Status: zugesagt.'\n  },\n  {\n    id: 19,\n    date: '2026-11-26',\n    time: '19:00',\n    title: 'Fokus O: Status W\u00e4rmeleitplanung',\n    location: 'Elaya Hotel Frankfurt Oberursel, Zimmersm\u00fchlenweg 35, 61440 Oberursel',\n    desc: 'Referent: Stadtwerke OBU, Jens Hardick. Status: offen.'\n  },\n];\n\n\/* \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nconst today = new Date();\nlet currentYear  = today.getFullYear();\nlet currentMonth = today.getMonth(); \/\/ 0-indexed\nlet viewMode = 'list';\n\nconst MONTHS_DE = ['Januar','Februar','M\u00e4rz','April','Mai','Juni',\n                   'Juli','August','September','Oktober','November','Dezember'];\nconst MONTHS_SHORT = ['Jan','Feb','M\u00e4r','Apr','Mai','Jun',\n                      'Jul','Aug','Sep','Okt','Nov','Dez'];\n\n\/* \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction eventsForDate(dateStr) {\n  return EVENTS.filter(e => {\n    if (e.multiDay && e.dateEnd) return e.date <= dateStr && dateStr <= e.dateEnd;\n    return e.date === dateStr;\n  });\n}\nfunction formatDateLong(dateStr) {\n  const [y, m, d] = dateStr.split('-').map(Number);\n  const dt = new Date(y, m - 1, d);\n  const days = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'];\n  return `${days[dt.getDay()]}, ${d}. ${MONTHS_DE[m-1]} ${y}`;\n}\nfunction formatDateRange(ev) {\n  if (ev.multiDay && ev.dateEnd) {\n    const [y1,m1,d1] = ev.date.split('-').map(Number);\n    const [y2,m2,d2] = ev.dateEnd.split('-').map(Number);\n    return `${d1}. ${MONTHS_DE[m1-1]} \u2013 ${d2}. ${MONTHS_DE[m2-1]} ${y2}`;\n  }\n  return formatDateLong(ev.date);\n}\nfunction ymd(y, m, d) {\n  return `${y}-${String(m+1).padStart(2,'0')}-${String(d).padStart(2,'0')}`;\n}\n\n\/* \u2500\u2500 Switch View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction switchView(mode) {\n  viewMode = mode;\n  document.getElementById('viewGrid').style.display = mode === 'grid' ? 'block' : 'none';\n  document.getElementById('viewList').style.display = mode === 'list' ? 'block' : 'none';\n  document.getElementById('btnGrid').classList.toggle('active', mode === 'grid');\n  document.getElementById('btnList').classList.toggle('active', mode === 'list');\n  renderAll();\n}\n\n\/* \u2500\u2500 Change Month \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction changeMonth(delta) {\n  currentMonth += delta;\n  if (currentMonth > 11) { currentMonth = 0; currentYear++; }\n  if (currentMonth < 0)  { currentMonth = 11; currentYear--; }\n  renderAll();\n}\n\n\/* \u2500\u2500 Render \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction renderAll() {\n  document.getElementById('navLabel').textContent = `${MONTHS_DE[currentMonth]} ${currentYear}`;\n  if (viewMode === 'grid') renderGrid();\n  else renderList();\n}\n\nfunction renderGrid() {\n  const container = document.getElementById('calDays');\n  container.innerHTML = '';\n\n  const firstDay = new Date(currentYear, currentMonth, 1);\n  \/\/ Monday-based: Mon=0 \u2026 Sun=6\n  let startOffset = firstDay.getDay() - 1;\n  if (startOffset < 0) startOffset = 6;\n\n  const daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate();\n  const totalCells  = Math.ceil((startOffset + daysInMonth) \/ 7) * 7;\n\n  for (let i = 0; i < totalCells; i++) {\n    const dayNum = i - startOffset + 1;\n    const cell = document.createElement('div');\n\n    if (dayNum < 1 || dayNum > daysInMonth) {\n      cell.className = 'cb-day cb-day--empty';\n    } else {\n      const dateStr = ymd(currentYear, currentMonth, dayNum);\n      const isToday = (currentYear === today.getFullYear() &&\n                       currentMonth === today.getMonth() &&\n                       dayNum === today.getDate());\n      cell.className = 'cb-day' + (isToday ? ' cb-day--today' : '');\n\n      const numEl = document.createElement('div');\n      numEl.className = 'cb-day__num';\n      numEl.textContent = dayNum;\n      cell.appendChild(numEl);\n\n      const evList = eventsForDate(dateStr);\n      const evWrap = document.createElement('div');\n      evWrap.className = 'cb-day__events';\n\n      const maxShow = 2;\n      evList.slice(0, maxShow).forEach(ev => {\n        const chip = document.createElement('div');\n        chip.className = 'cb-event-chip' + (ev.featured ? ' cb-event-chip--featured' : '');\n        chip.textContent = ev.title;\n        chip.title = ev.title;\n        chip.onclick = () => openModal(ev);\n        evWrap.appendChild(chip);\n      });\n\n      if (evList.length > maxShow) {\n        const more = document.createElement('div');\n        more.className = 'cb-event-chip cb-event-chip--more';\n        more.textContent = `+${evList.length - maxShow} weitere`;\n        more.onclick = () => openModal(evList[maxShow]);\n        evWrap.appendChild(more);\n      }\n      cell.appendChild(evWrap);\n    }\n    container.appendChild(cell);\n  }\n}\n\nfunction renderList() {\n  const container = document.getElementById('viewList');\n  container.innerHTML = '';\n\n  \/\/ Group events by month (multi-day events appear in each affected month)\n  const grouped = {};\n  EVENTS.forEach(ev => {\n    const addToKey = (key) => {\n      if (!grouped[key]) grouped[key] = [];\n      if (!grouped[key].find(e => e.id === ev.id)) grouped[key].push(ev);\n    };\n    const [y1, m1] = ev.date.split('-').map(Number);\n    addToKey(`${y1}-${String(m1).padStart(2,'0')}`);\n    if (ev.multiDay && ev.dateEnd) {\n      const [y2, m2] = ev.dateEnd.split('-').map(Number);\n      const k2 = `${y2}-${String(m2).padStart(2,'0')}`;\n      if (k2 !== `${y1}-${String(m1).padStart(2,'0')}`) addToKey(k2);\n    }\n  });\n\n  \/\/ Show current month onwards\n  const fromKey = `${currentYear}-${String(currentMonth+1).padStart(2,'0')}`;\n  const keys = Object.keys(grouped).filter(k => k >= fromKey).sort();\n\n  if (keys.length === 0) {\n    const empty = document.createElement('p');\n    empty.style.cssText = 'text-align:center;color:#ac914c;font-style:italic;padding:40px 0;font-family:IBM Plex Serif,serif;';\n    empty.textContent = 'Keine Veranstaltungen in diesem Zeitraum.';\n    container.appendChild(empty);\n    return;\n  }\n\n  keys.forEach(key => {\n    const [y, m] = key.split('-').map(Number);\n    const section = document.createElement('div');\n    section.className = 'cb-list-month';\n\n    const heading = document.createElement('div');\n    heading.className = 'cb-list-month__title';\n    heading.textContent = `${MONTHS_DE[m-1]} ${y}`;\n    section.appendChild(heading);\n\n    grouped[key].sort((a, b) => a.date.localeCompare(b.date)).forEach(ev => {\n      const d = parseInt(ev.date.split('-')[2], 10);\n      const isMulti = ev.multiDay && ev.dateEnd;\n      const [d2] = isMulti ? ev.dateEnd.split('-').map(Number).slice(2) : [];\n      const timeLine = ev.time\n        ? (ev.timeDetailed ? ev.time : `${ev.time} Uhr`)\n        : '';\n      const row = document.createElement('div');\n      row.className = 'cb-list-item' + (ev.featured ? ' cb-list-item--featured' : '');\n      row.onclick = (e) => {\n        if (e.target.closest && e.target.closest('.cb-list-item__cta')) return;\n        openModal(ev);\n      };\n      row.innerHTML = `\n        <div class=\"cb-list-date${isMulti ? ' cb-list-date--multiday' : ''}\">\n          ${isMulti\n            ? `<div class=\"cb-list-date__day\">${d}\u2013${parseInt(ev.dateEnd.split('-')[2],10)}<\/div>`\n            : `<div class=\"cb-list-date__day\">${d}<\/div>`\n          }\n          <div class=\"cb-list-date__month\">${MONTHS_SHORT[m-1]}<\/div>\n        <\/div>\n        <div class=\"cb-list-info\">\n          ${ev.featured ? `\n          <div class=\"cb-featured-head\">\n            <span class=\"cb-featured-badge\">Highlight<\/span>\n            ${ev.thumbUrl ? `<div class=\"cb-featured-thumb\"><img decoding=\"async\" src=\"${ev.thumbUrl}\" alt=\"${ev.title}\" loading=\"lazy\" \/><\/div>` : ''}\n          <\/div>` : ''}\n          <div class=\"cb-list-info__title\">\n            ${ev.title}\n            ${isMulti ? '<span class=\"cb-badge-multiday\">2-Tagesveranstaltung<\/span>' : ''}\n          <\/div>\n          <div class=\"cb-list-info__meta\">\n            ${timeLine ? `<span>\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><polyline points=\"12 7 12 12 15 15\"\/><\/svg>\n              ${timeLine}\n            <\/span>` : ''}\n            ${ev.location ? `<span>\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M12 2C8.68 2 6 4.68 6 8c0 5.25 6 13 6 13s6-7.75 6-13c0-3.32-2.68-6-6-6z\"\/><circle cx=\"12\" cy=\"8\" r=\"2.5\"\/><\/svg>\n              ${ev.location.split(',')[0]}\n            <\/span>` : ''}\n          <\/div>\n          ${ev.desc ? `<div class=\"cb-list-info__desc\">${ev.desc}<\/div>` : ''}\n          ${ev.registerUrl ? `<a href=\"${ev.registerUrl}\" class=\"cb-list-item__cta\" onclick=\"event.stopPropagation()\">Zur Einladung &amp; Anmeldung<\/a>` : ''}\n        <\/div>\n      `;\n      section.appendChild(row);\n    });\n\n    container.appendChild(section);\n  });\n}\n\n\n\/* \u2500\u2500 Modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction openModal(ev) {\n  document.getElementById('mEyebrow').textContent = ev.multiDay\n    ? '2-Tagesveranstaltung'\n    : (ev.featured ? 'Highlight' : 'Veranstaltungsdetails');\n  document.getElementById('mTitle').textContent  = ev.title;\n  document.getElementById('mDate').textContent   = formatDateRange(ev);\n\n  const timeRow = document.getElementById('mTimeRow');\n  if (ev.time) {\n    document.getElementById('mTime').textContent = ev.timeDetailed ? ev.time : `${ev.time} Uhr`;\n    timeRow.style.display = 'flex';\n  } else {\n    timeRow.style.display = 'none';\n  }\n\n  const locRow = document.getElementById('mLocRow');\n  if (ev.location) {\n    document.getElementById('mLoc').textContent = ev.location;\n    locRow.style.display = 'flex';\n  } else {\n    locRow.style.display = 'none';\n  }\n\n  document.getElementById('mDesc').textContent = ev.desc || '';\n\n  const ctaWrap = document.getElementById('mCtaWrap');\n  const cta = document.getElementById('mCta');\n  if (ev.registerUrl) {\n    cta.href = ev.registerUrl;\n    ctaWrap.style.display = 'block';\n  } else {\n    ctaWrap.style.display = 'none';\n  }\n\n  document.getElementById('overlay').classList.add('open');\n}\n\nfunction closeModalBtn() {\n  document.getElementById('overlay').classList.remove('open');\n}\nfunction closeModal(e) {\n  if (e.target === document.getElementById('overlay')) closeModalBtn();\n}\ndocument.addEventListener('keydown', e => { if (e.key === 'Escape') closeModalBtn(); });\n\n\/* \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nrenderAll();\n<\/script>\n\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2df83e2 e-con-full e-flex e-con e-child\" data-id=\"2df83e2\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3baa9b0 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"3baa9b0\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Exclusive Event Location<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a193d1 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"9a193d1\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">The K\u00f6nigsteinzimmer<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a2d5b40 elementor-widget elementor-widget-text-editor\" data-id=\"a2d5b40\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Where elegance meets modernity. Your exclusive location for unforgettable events in the heart of K\u00f6nigstein im Taunus. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6a6f5be e-con-full e-flex e-con e-child\" data-id=\"6a6f5be\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-78fed25 e-con-full e-flex e-con e-child\" data-id=\"78fed25\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-01ef630 elementor-widget elementor-widget-image\" data-id=\"01ef630\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"625\" height=\"352\" src=\"https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2025\/09\/csm_gente-negocios-trabajando-equipo-oficina_1303-22867_f4e15fb8d3.jpeg\" class=\"attachment-large size-large wp-image-3940\" alt=\"\" srcset=\"https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2025\/09\/csm_gente-negocios-trabajando-equipo-oficina_1303-22867_f4e15fb8d3.jpeg 625w, https:\/\/www.claus-blumenauer.de\/wp-content\/uploads\/2025\/09\/csm_gente-negocios-trabajando-equipo-oficina_1303-22867_f4e15fb8d3-300x169.jpeg 300w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a283a18 e-con-full e-flex e-con e-child\" data-id=\"a283a18\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b438aa1 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"b438aa1\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Learn more?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1de10e elementor-align-left elementor-invisible elementor-widget elementor-widget-button\" data-id=\"a1de10e\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/koenigsteinzimmer.de\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-arrow-right\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">To the Event Location<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Event Calendar \u2013 Claus Blumenauer Real Estate Events &#038; Dates Event Calendar Exclusive events, viewings, and functions in K\u00f6nigstein, Oberursel and the region \u2013 including in the K\u00f6nigsteinzimmer, at the Elaya Hotel Oberursel and at other selected locations. Month View List View \u2190 \u2192 MonTueWed ThuFriSatSun \u00d7 To Invitation &#038; Registration Exclusive Event Location The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-4153","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/pages\/4153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/comments?post=4153"}],"version-history":[{"count":3,"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/pages\/4153\/revisions"}],"predecessor-version":[{"id":6984,"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/pages\/4153\/revisions\/6984"}],"wp:attachment":[{"href":"https:\/\/www.claus-blumenauer.de\/en\/wp-json\/wp\/v2\/media?parent=4153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}