Familienangebote im August: Unterschied zwischen den Versionen

Aus Bündnis für Familie Tübingen.
(Änderung 8380 von Kerstin Koch (Diskussion) rückgängig gemacht.)
Markierungen: Rückgängigmachung Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 1: Zeile 1:
<!DOCTYPE html>
<html lang="de">
<html lang="de">
<head>
<head>
<meta charset="utf-8" />
  <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Familienangebote im August 2026</title>
  <title>Kalender - August 2026</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
   <style>
   <style>
     :root {
     *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
      --bg: #f7f6f2;
      --surface: #ffffff;
      --surface-2: #f3f0ec;
      --text: #28251d;
      --muted: #6f6a63;
      --border: rgba(40, 37, 29, 0.12);
      --primary: #01696f;
      --primary-soft: #dcebea;
      --shadow: 0 10px 28px rgba(36, 31, 24, 0.08);
      --radius: 18px;
      --radius-sm: 12px;
    }


    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
     body {
     body {
      margin: 0;
       font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
       font-family: 'Inter', system-ui, sans-serif;
       background: #f1f5f9;
       background: var(--bg);
       color: #1e293b;
       color: var(--text);
       padding: 1.5rem 1rem 3rem;
       line-height: 1.5;
     }
     }


     .calendar-app {
    /* ===== HEADER ===== */
       max-width: 1180px;
     .cal-header {
       margin: 0 auto;
       max-width: 860px;
       padding: 24px 16px 40px;
       margin-bottom: 1.25rem;
      display: flex;
      align-items: baseline;
       gap: 1rem;
     }
     }
 
     .cal-header h2 {
     .calendar-head {
       font-size: 1.6rem;
       display: flex;
       font-weight: 700;
      justify-content: space-between;
       color: #0f172a;
       align-items: end;
       letter-spacing: -0.03em;
       gap: 16px;
       margin-bottom: 18px;
      flex-wrap: wrap;
     }
     }
 
     .cal-header p {
     .calendar-title-wrap h1 {
       font-size: 0.8rem;
       margin: 0;
       color: #94a3b8;
       font-size: clamp(1.7rem, 2.8vw, 2.5rem);
       font-weight: 400;
       line-height: 1.1;
     }
     }


     .calendar-title-wrap p {
    /* ===== GRID WRAPPER ===== */
       margin: 8px 0 0;
     .cal-wrap {
       color: var(--muted);
       max-width: 860px;
       max-width: 70ch;
       display: grid;
       font-size: 0.98rem;
      grid-template-columns: repeat(7, 1fr);
       border-radius: 16px;
      overflow: hidden;
       box-shadow: 0 1px 3px rgba(0,0,0,.07), 0 8px 24px rgba(0,0,0,.08);
      border: 1px solid #e2e8f0;
      background: #e2e8f0; /* gap color between cells */
      gap: 1px;
     }
     }


     .badge {
    /* ===== COLUMN HEADERS ===== */
       display: inline-flex;
     .col-header {
       align-items: center;
       background: #1e293b;
      gap: 8px;
       text-align: center;
      background: var(--primary-soft);
       padding: 0.6rem 0.2rem;
      color: var(--primary);
       font-size: 0.7rem;
      border-radius: 999px;
       padding: 10px 14px;
       font-size: 0.92rem;
       font-weight: 600;
       font-weight: 600;
       white-space: nowrap;
       color: #94a3b8;
      letter-spacing: 0.08em;
      text-transform: uppercase;
     }
     }


     .weekday-row,
     /* ===== DAY CELLS ===== */
     .calendar-grid {
     .day-empty {
       display: grid;
       min-height: 90px;
      grid-template-columns: repeat(7, minmax(0, 1fr));
       background: #f8fafc;
       gap: 10px;
     }
     }


     .weekday {
     .day {
       text-align: center;
       min-height: 90px;
       padding: 12px 8px;
       padding: 0.5rem 0.5rem 0.4rem;
      color: var(--muted);
       background: #ffffff;
      font-weight: 700;
      font-size: 0.92rem;
    }
 
    .day-card {
      min-height: 146px;
       background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--radius);
      padding: 12px;
      box-shadow: var(--shadow);
       display: flex;
       display: flex;
       flex-direction: column;
       flex-direction: column;
       gap: 10px;
       gap: 0.3rem;
      position: relative;
      transition: background 0.1s;
     }
     }
    .day.we { background: #fafbff; }


     .day-card.empty {
     .day-num {
       background: transparent;
       font-size: 0.75rem;
       border-style: dashed;
       font-weight: 600;
       box-shadow: none;
       color: #64748b;
       min-height: 146px;
       line-height: 1;
    }
      width: 22px;
 
      height: 22px;
    .day-top {
       display: flex;
       display: flex;
      justify-content: space-between;
       align-items: center;
       align-items: center;
       gap: 8px;
       justify-content: center;
      border-radius: 50%;
      flex-shrink: 0;
     }
     }


     .day-number {
    /* ===== CSS-ONLY POPUP ===== */
      font-weight: 700;
     .ev-toggle { display: none; }
      font-size: 0.98rem;
      color: var(--muted);
    }


     .event-count {
     .ev-chip {
       font-size: 0.78rem;
       display: block;
       color: var(--primary);
       background: #eff6ff;
       background: var(--primary-soft);
      border-left: 3px solid #3b82f6;
       padding: 4px 8px;
      border-radius: 0 6px 6px 0;
       border-radius: 999px;
       padding: 0.22rem 0.4rem;
       font-weight: 600;
      font-size: 0.67rem;
      line-height: 1.35;
       cursor: pointer;
       user-select: none;
       transition: background 0.15s, transform 0.1s;
     }
     }
 
     .ev-chip:hover {
     .events-list {
       background: #dbeafe;
       display: flex;
       transform: translateY(-1px);
       flex-direction: column;
      gap: 8px;
     }
     }
    .chip-time  { font-weight: 700; color: #2563eb; display: block; }
    .chip-title { color: #1e40af; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }


     .event-chip {
    /* Overlay */
       width: 100%;
     .ev-overlay {
       text-align: left;
       display: none;
       border: 1px solid transparent;
       position: fixed;
       background: var(--surface-2);
       inset: 0;
       border-radius: var(--radius-sm);
       background: rgba(15, 23, 42, 0.6);
       padding: 10px 11px;
       backdrop-filter: blur(2px);
       z-index: 9998;
       cursor: pointer;
       cursor: pointer;
      transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, background .18s ease;
     }
     }


     .event-chip:hover,
    /* Modal */
    .event-chip:focus-visible {
     .ev-modal {
       transform: translateY(-1px);
      display: none;
       border-color: rgba(1, 105, 111, 0.3);
      position: fixed;
      box-shadow: 0 8px 18px rgba(1, 105, 111, 0.10);
      top: 50%;
      background: #eef6f5;
      left: 50%;
      outline: none;
      transform: translate(-50%, -50%);
      z-index: 9999;
      background: #fff;
      border-radius: 16px;
      max-width: 460px;
       width: calc(100% - 2rem);
       padding: 2rem;
      box-shadow: 0 20px 60px rgba(0,0,0,0.2), 0 2px 8px rgba(0,0,0,0.08);
     }
     }


     .event-time {
     .ev-toggle:checked ~ .ev-overlay { display: block; }
      display: block;
    .ev-toggle:checked ~ .ev-modal  { display: block; }
      color: var(--primary);
      font-weight: 700;
      font-size: 0.82rem;
      margin-bottom: 3px;
    }


     .event-title {
     .ev-modal-date {
      display: block;
       font-size: 0.72rem;
       font-size: 0.92rem;
       font-weight: 600;
       font-weight: 600;
       color: var(--text);
       color: #3b82f6;
    }
       letter-spacing: 0.07em;
 
       text-transform: uppercase;
    dialog {
       margin-bottom: 0.4rem;
       width: min(94vw, 620px);
      border: none;
      padding: 0;
       border-radius: 22px;
      overflow: hidden;
       box-shadow: 0 24px 60px rgba(0,0,0,.25);
    }
 
    dialog::backdrop {
      background: rgba(20, 24, 34, 0.55);
      backdrop-filter: blur(3px);
    }
 
    .modal-content {
      background: var(--surface);
      padding: 22px;
     }
     }
 
     .ev-modal-title {
     .modal-header {
       font-size: 1.3rem;
      display: flex;
      justify-content: space-between;
      gap: 12px;
      align-items: start;
      margin-bottom: 18px;
    }
 
    .modal-header h2 {
      margin: 0;
       font-size: 1.4rem;
      line-height: 1.2;
    }
 
    .modal-close {
      width: 42px;
      height: 42px;
      border-radius: 999px;
      border: 1px solid var(--border);
      background: var(--surface-2);
      font-size: 1.2rem;
      cursor: pointer;
      flex: 0 0 auto;
    }
 
    .detail-grid {
      display: grid;
      grid-template-columns: 140px 1fr;
      gap: 12px 14px;
      margin-bottom: 22px;
    }
 
    .detail-label {
       font-weight: 700;
       font-weight: 700;
       color: var(--muted);
       color: #0f172a;
      letter-spacing: -0.02em;
      margin-bottom: 0.75rem;
      line-height: 1.3;
     }
     }
 
     .ev-modal-time {
     .detail-value {
       display: inline-flex;
       min-width: 0;
      align-items: center;
      gap: 0.35rem;
      font-size: 0.82rem;
      font-weight: 600;
      color: #2563eb;
      background: #eff6ff;
      border-radius: 20px;
      padding: 0.3rem 0.8rem;
      margin-bottom: 1rem;
     }
     }
 
     .ev-modal-note {
     .modal-actions {
       font-size: 0.88rem;
       display: flex;
       color: #475569;
       justify-content: flex-end;
       line-height: 1.65;
       gap: 10px;
       margin-bottom: 1.25rem;
       flex-wrap: wrap;
     }
     }
 
     .ev-modal-link {
     .btn {
       display: inline-flex;
       display: inline-flex;
       align-items: center;
       align-items: center;
       justify-content: center;
       gap: 0.4rem;
       min-height: 44px;
       background: #2563eb;
       padding: 10px 16px;
       color: #fff;
      border-radius: 12px;
       text-decoration: none;
       text-decoration: none;
      font-size: 0.82rem;
       font-weight: 600;
       font-weight: 600;
       border: 1px solid var(--border);
       border-radius: 8px;
       color: var(--text);
       padding: 0.5rem 1rem;
       background: var(--surface);
       transition: background 0.15s;
     }
     }
    .ev-modal-link:hover { background: #1d4ed8; }


     .btn-primary {
    /* Close button */
       background: var(--primary);
     .ev-close {
       color: #fff;
      position: absolute;
       border-color: var(--primary);
      top: 1rem;
      right: 1rem;
       background: #f1f5f9;
      border: none;
      border-radius: 50%;
      width: 30px;
      height: 30px;
      cursor: pointer;
      font-size: 0.8rem;
       color: #64748b;
       display: flex;
      align-items: center;
      justify-content: center;
      user-select: none;
      transition: background 0.15s;
     }
     }
    .ev-close:hover { background: #e2e8f0; color: #0f172a; }


     .muted-empty {
     /* ===== MOBILE ===== */
      color: var(--muted);
     @media (max-width: 580px) {
      font-style: italic;
       body { padding: 1rem 0.5rem 2rem; }
    }
       .cal-header { flex-direction: column; gap: 0.2rem; }
 
       .cal-header h2 { font-size: 1.3rem; }
     @media (max-width: 780px) {
       .col-header { font-size: 0.58rem; padding: 0.5rem 0; }
       .weekday-row { display: none; }
       .day, .day-empty { min-height: 56px; }
       .calendar-grid { grid-template-columns: 1fr; }
       .day { padding: 0.3rem 0.25rem; }
       .day-card.empty { display: none; }
       .day-num { font-size: 0.68rem; }
       .day-card {
       .ev-chip { font-size: 0.6rem; padding: 0.15rem 0.25rem; }
        min-height: auto;
       .chip-title { display: none; }
        padding: 14px;
      }
       .day-top {
        align-items: start;
       }
       .day-number {
        font-size: 1rem;
      }
       .detail-grid {
        grid-template-columns: 1fr;
        gap: 6px 0;
       }
     }
     }
   </style>
   </style>
</head>
</head>
<body>
<body>
  <section class="calendar-app" aria-labelledby="calendar-heading">
    <div class="calendar-head">
      <div class="calendar-title-wrap">
        <h1 id="calendar-heading">Familienangebote im August 2026</h1>
        <p>In der Übersicht erscheinen nur Uhrzeit und Titel. Beim Klick öffnet sich ein Popup mit allen Details, Hinweisen zur Anmeldung und dem Link zu weiteren Informationen.</p>
      </div>
      <div class="badge">August 2026 · mobile optimiert</div>
    </div>
    <div class="weekday-row" aria-hidden="true">
      <div class="weekday">Mo</div>
      <div class="weekday">Di</div>
      <div class="weekday">Mi</div>
      <div class="weekday">Do</div>
      <div class="weekday">Fr</div>
      <div class="weekday">Sa</div>
      <div class="weekday">So</div>
    </div>


    <div class="calendar-grid" id="calendarGrid"></div>
<div class="cal-header">
   </section>
  <h2>Kalender - August 2026</h2>
   <p>Klick auf einen Termin fuer mehr Details</p>
</div>


  <dialog id="eventDialog" aria-labelledby="dialogTitle">
<div class="cal-wrap">
    <div class="modal-content">
  <span class="col-header">Mo</span>
      <div class="modal-header">
  <span class="col-header">Di</span>
        <h2 id="dialogTitle"></h2>
  <span class="col-header">Mi</span>
        <button class="modal-close" type="button" id="closeDialog" aria-label="Popup schließen"></button>
  <span class="col-header">Do</span>
      </div>
  <span class="col-header">Fr</span>
  <span class="col-header">Sa</span>
  <span class="col-header">So</span>


      <div class="detail-grid">
        <div class="detail-label">Datum</div>
        <div class="detail-value" id="dialogDate"></div>


        <div class="detail-label">Uhrzeit</div>
    <!-- ============================================================
        <div class="detail-value" id="dialogTime"></div>
    LEERE ZELLEN: August 2026 beginnt an einem Samstag (Spalte 6)
    -> 5 leere Zellen fuer Mo bis Fr
    ============================================================ -->
    <div class="day-empty"></div><!-- Mo -->
    <div class="day-empty"></div><!-- Di -->
    <div class="day-empty"></div><!-- Mi -->
    <div class="day-empty"></div><!-- Do -->
    <div class="day-empty"></div><!-- Fr -->


        <div class="detail-label">Ort</div>
    <!-- Sa  1 --> <div class="day we"><div class="day-num">1</div></div>
        <div class="detail-value" id="dialogLocation"></div>
    <!-- So  2 --> <div class="day we"><div class="day-num">2</div></div>
    <!-- Mo  3 --> <div class="day">  <div class="day-num">3</div></div>
    <!-- Di  4 --> <div class="day">  <div class="day-num">4</div></div>


        <div class="detail-label">Zielgruppe</div>
    <!-- ============================================================
        <div class="detail-value" id="dialogAudience"></div>
    TERMIN HINZUFUEGEN: Kopiere den Block zwischen den Stern-Kommentaren
    in den gewuenschten Tag. Aendere:
      - id="ev-XX" -> eindeutige ID, z.B. ev-04, ev-05 ...
      - chip-time  -> Uhrzeit
      - chip-title  -> Kurztitel (wird im Chip angezeigt)
      - ev-modal-date  -> Datum ausgeschrieben
      - ev-modal-title -> Voller Titel
      - ev-modal-time  -> Uhrzeit
      - ev-modal-note  -> Beschreibungstext
      - href          -> URL (oder ganzen <a>-Tag entfernen wenn keine URL)
    ============================================================ -->


         <div class="detail-label">Anmeldung</div>
    <!-- Mi  5 - TERMIN -->
         <div class="detail-value" id="dialogRegistration"></div>
    <div class="day">
      <div class="day-num">5</div>
      <!-- *** TERMIN ANFANG *** -->
      <input type="checkbox" class="ev-toggle" id="ev-01">
      <label class="ev-chip" for="ev-01">
        <span class="chip-time">14:00</span>
         <span class="chip-title">Stadtfest Tuebingen</span>
      </label>
      <label class="ev-overlay" for="ev-01"></label>
      <div class="ev-modal">
        <label class="ev-close" for="ev-01">✕</label>
        <div class="ev-modal-date">Mittwoch, 5. August 2026</div>
        <div class="ev-modal-title">Stadtfest Tuebingen</div>
         <div class="ev-modal-time">🕐 14:00 Uhr</div>
        <div class="ev-modal-note">Das jaehrliche Stadtfest in der Innenstadt mit Live-Musik, Essen und Marktstaenden. Parkplaetze sind begrenzt - Anreise mit OPNV empfohlen.</div>
        <a class="ev-modal-link" href="https://www.tuebingen.de" target="_blank" rel="noopener">🔗 Mehr Infos</a>
      </div>
      <!-- *** TERMIN ENDE *** -->
    </div>


        <div class="detail-label">Zusatztext</div>
    <!-- Do  6 --> <div class="day">  <div class="day-num">6</div></div>
        <div class="detail-value" id="dialogDescription"></div>
    <!-- Fr  7 --> <div class="day">  <div class="day-num">7</div></div>
      </div>
    <!-- Sa  8 --> <div class="day we"><div class="day-num">8</div></div>
    <!-- So  9 --> <div class="day we"><div class="day-num">9</div></div>
    <!-- Mo 10 --> <div class="day">  <div class="day-num">10</div></div>
    <!-- Di 11 --> <div class="day">  <div class="day-num">11</div></div>


       <div class="modal-actions">
    <!-- Mi 12 - TERMIN -->
         <button class="btn" type="button" id="dialogCloseBottom">Schließen</button>
    <div class="day">
         <a class="btn btn-primary" id="dialogLink" href="#" target="_blank" rel="noopener noreferrer">Mehr Infos</a>
       <div class="day-num">12</div>
      <!-- *** TERMIN ANFANG *** -->
      <input type="checkbox" class="ev-toggle" id="ev-02">
      <label class="ev-chip" for="ev-02">
        <span class="chip-time">09:30</span>
        <span class="chip-title">Netzwerktreffen Buendnis</span>
      </label>
      <label class="ev-overlay" for="ev-02"></label>
      <div class="ev-modal">
        <label class="ev-close" for="ev-02">✕</label>
         <div class="ev-modal-date">Mittwoch, 12. August 2026</div>
        <div class="ev-modal-title">Netzwerktreffen Buendnis fuer Familie</div>
        <div class="ev-modal-time">🕐 09:30 Uhr</div>
         <div class="ev-modal-note">Quartalsweise Netzwerktreffen aller Mitglieder des Buendnisses fuer Familie Tuebingen. Bitte Berichte bis 08.08. einreichen.</div>
        <a class="ev-modal-link" href="https://www.buendnis-fuer-familie-tuebingen.de/Netzwerke_und_Arbeitsgruppen" target="_blank" rel="noopener">🔗 Mehr Infos</a>
       </div>
       </div>
      <!-- *** TERMIN ENDE *** -->
     </div>
     </div>
  </dialog>


  <script>
    <!-- Do 13 --> <div class="day">  <div class="day-num">13</div></div>
    const events = [
    <!-- Fr 14 --> <div class="day">  <div class="day-num">14</div></div>
      {
    <!-- Sa 15 --> <div class="day we"><div class="day-num">15</div></div>
        date: "2026-08-01",
    <!-- So 16 --> <div class="day we"><div class="day-num">16</div></div>
        title: "Bächlewanderung mit Kind und Kescher",
    <!-- Mo 17 --> <div class="day">  <div class="day-num">17</div></div>
        time: "10:00 - 13:00",
    <!-- Di 18 --> <div class="day">  <div class="day-num">18</div></div>
        location: "Start und Treffpunkt ist am Parkplatz Bebenhausen.",
    <!-- Mi 19 --> <div class="day">  <div class="day-num">19</div></div>
        audience: "Geeignet für Familien mit Kindern ab 5 Jahren",
    <!-- Do 20 --> <div class="day">  <div class="day-num">20</div></div>
        registration: "wird benötigt",
    <!-- Fr 21 --> <div class="day">  <div class="day-num">21</div></div>
        url: "https://www.fbs-tuebingen.de/eltern-und-kinder/kw/bereich/kursdetails/kurs/261-2516B/kursname/Baechlewanderung%20mit%20Kind%20und%20Kescher/kategorie-id/11/",
    <!-- Sa 22 --> <div class="day we"><div class="day-num">22</div></div>
        description: "Wir wandern am Goldersbach entlang über die Tellerbrücke zur Teufelsbrücke."
      },
      {
        date: "2026-08-02",
        title: "Eiscafé frieDa",
        time: "14:00 - 17:00",
        location: "Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen",
        audience: "Familien, Nachbarn, Menschen mit und ohne Behinderung",
        registration: "Keine Angabe",
        url: "https://www.lebenshilfe-tuebingen.de/service/termine/",
        description: "Das Eiscafé frieDa ist ein Begegnungs-Ort."
      },
      {
        date: "2026-08-02",
        title: "Geschwisterchen auf dem Weg",
        time: "10:00 - 12:00",
        location: "FBS, Raum 003 Villa Metz, Hechingerstraße 13",
        audience: "Für Kinder ab 4 Jahren mit einem Elternteil",
        registration: "wird benötigt",
        url: "https://www.fbs-tuebingen.de/programm/kw/bereich/kursdetails/kurs/261-2509/kursname/Geschwisterchen%20auf%20dem%20Weg/",
        description: "Vorbereitung auf ein Geschwisterchen."
      },
      {
        date: "2026-08-04",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-05",
        title: "Spielplatztreff",
        time: "14:30 - 15:30",
        location: "Piratenspielplatz, Anlagenpark",
        audience: "Familien mit jüngeren Kindern",
        registration: "Keine Anmeldung erforderlich",
        url: "",
        description: "Treffpunkt zum Austausch mit der Familienbeauftragten."
      },
      {
        date: "2026-08-06",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-06",
        title: "Sommerferien mit dem LESE-HAUS",
        time: "11:00",
        location: "Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtbücherei, Nonnengasse 19, 72070 Tübingen",
        audience: "Kinder von 4 bis 8 Jahre mit Begleitpersonen",
        registration: "Keine Angabe",
        url: "https://tuebingen.ferienprogramm-online.de/",
        description: "Vorlesestunde zum Thema „Unsere Welt ist bunt“ mit Geschichten von Lesepatinnen und Lesepaten des LESE-HAUSes sowie Mitarbeitenden der Stadtbücherei. Bei schönem Wetter findet die Veranstaltung im Alten Botanischen Garten statt, bei schlechtem Wetter im Thekla-Waitz-Studio."
      },
      {
        date: "2026-08-09",
        title: "Eiscafé frieDa",
        time: "14:00 - 17:00",
        location: "Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen",
        audience: "Familien, Nachbarn, Menschen mit und ohne Behinderung",
        registration: "Keine Angabe",
        url: "https://www.lebenshilfe-tuebingen.de/service/termine/",
        description: "Das Eiscafé frieDa ist ein Begegnungs-Ort."
      },
      {
        date: "2026-08-11",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-12",
        title: "Spielplatztreff",
        time: "14:30 - 15:30",
        location: "Ort bitte ergänzen",
        audience: "Zielgruppe bitte ergänzen",
        registration: "Keine Angabe",
        url: "",
        description: ""
      },
      {
        date: "2026-08-13",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-13",
        title: "Sommerferien mit dem LESE-HAUS",
        time: "11:00",
        location: "Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtbücherei, Nonnengasse 19, 72070 Tübingen",
        audience: "Kinder von 4 bis 8 Jahre mit Begleitpersonen",
        registration: "Keine Angabe",
        url: "https://tuebingen.ferienprogramm-online.de/",
        description: "Vorlesestunde zum Thema „Unsere Welt ist bunt“ mit Geschichten von Lesepatinnen und Lesepaten des LESE-HAUSes sowie Mitarbeitenden der Stadtbücherei. Bei schönem Wetter findet die Veranstaltung im Alten Botanischen Garten statt, bei schlechtem Wetter im Thekla-Waitz-Studio."
      },
      {
        date: "2026-08-16",
        title: "Eiscafé frieDa",
        time: "14:00 - 17:00",
        location: "Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen",
        audience: "Familien, Nachbarn, Menschen mit und ohne Behinderung",
        registration: "Keine Angabe",
        url: "https://www.lebenshilfe-tuebingen.de/service/termine/",
        description: "Das Eiscafé frieDa ist ein Begegnungs-Ort."
      },
      {
        date: "2026-08-16",
        title: "Bunt backen mit Kindern: Regenbogen-Muffins & Cake-Pops",
        time: "16:00 - 18:30",
        location: "Ort bitte ergänzen",
        audience: "Zielgruppe bitte ergänzen",
        registration: "Keine Angabe",
        url: "",
        description: ""
      },
      {
        date: "2026-08-18",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-19",
        title: "Spielplatztreff",
        time: "14:30 - 15:30",
        location: "Ort bitte ergänzen",
        audience: "Zielgruppe bitte ergänzen",
        registration: "Keine Angabe",
        url: "",
        description: ""
      },
      {
        date: "2026-08-20",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-20",
        title: "Sommerferien mit dem LESE-HAUS",
        time: "11:00",
        location: "Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtbücherei, Nonnengasse 19, 72070 Tübingen",
        audience: "Kinder von 4 bis 8 Jahre mit Begleitpersonen",
        registration: "Keine Angabe",
        url: "https://tuebingen.ferienprogramm-online.de/",
        description: "Vorlesestunde zum Thema „Unsere Welt ist bunt“ mit Geschichten von Lesepatinnen und Lesepaten des LESE-HAUSes sowie Mitarbeitenden der Stadtbücherei. Bei schönem Wetter findet die Veranstaltung im Alten Botanischen Garten statt, bei schlechtem Wetter im Thekla-Waitz-Studio."
      },
      {
        date: "2026-08-23",
        title: "Eiscafé frieDa",
        time: "14:00 - 17:00",
        location: "Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen",
        audience: "Familien, Nachbarn, Menschen mit und ohne Behinderung",
        registration: "Keine Angabe",
        url: "https://www.lebenshilfe-tuebingen.de/service/termine/",
        description: "Das Eiscafé frieDa ist ein Begegnungs-Ort."
      },
      {
        date: "2026-08-25",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-26",
        title: "Spielplatztreff",
        time: "14:30 - 15:30",
        location: "Ort bitte ergänzen",
        audience: "Zielgruppe bitte ergänzen",
        registration: "Keine Angabe",
        url: "",
        description: ""
      },
      {
        date: "2026-08-27",
        title: "BabyBrunch",
        time: "09:30 - 11:30",
        location: "elkiko Familienzentrum",
        audience: "Eltern mit Säuglingen und Kleinkindern",
        registration: "babybrunch@elkiko.de",
        url: "https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html",
        description: ""
      },
      {
        date: "2026-08-27",
        title: "Sommerferien mit dem LESE-HAUS",
        time: "11:00",
        location: "Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtbücherei, Nonnengasse 19, 72070 Tübingen",
        audience: "Kinder von 4 bis 8 Jahre mit Begleitpersonen",
        registration: "Keine Angabe",
        url: "https://tuebingen.ferienprogramm-online.de/",
        description: "Vorlesestunde zum Thema „Unsere Welt ist bunt“ mit Geschichten von Lesepatinnen und Lesepaten des LESE-HAUSes sowie Mitarbeitenden der Stadtbücherei. Bei schönem Wetter findet die Veranstaltung im Alten Botanischen Garten statt, bei schlechtem Wetter im Thekla-Waitz-Studio."
      },
      {
        date: "2026-08-30",
        title: "Eiscafé frieDa",
        time: "14:00 - 17:00",
        location: "Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen",
        audience: "Familien, Nachbarn, Menschen mit und ohne Behinderung",
        registration: "Keine Angabe",
        url: "https://www.lebenshilfe-tuebingen.de/service/termine/",
        description: "Das Eiscafé frieDa ist ein Begegnungs-Ort."
      }
    ];


     const weekdayLabels = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"];
     <!-- So 23 - TERMIN -->
     const monthName = "August";
     <div class="day we">
    const year = 2026;
      <div class="day-num">23</div>
    const monthIndex = 7;
      <!-- *** TERMIN ANFANG *** -->
    const calendarGrid = document.getElementById("calendarGrid");
      <input type="checkbox" class="ev-toggle" id="ev-03">
    const dialog = document.getElementById("eventDialog");
       <label class="ev-chip" for="ev-03">
 
        <span class="chip-time">11:00</span>
    const grouped = events.reduce((acc, item) => {
        <span class="chip-title">Familienfest Stadtpark</span>
       const day = Number(item.date.split("-")[2]);
       </label>
      if (!acc[day]) acc[day] = [];
       <label class="ev-overlay" for="ev-03"></label>
      acc[day].push(item);
       <div class="ev-modal">
      return acc;
        <label class="ev-close" for="ev-03">✕</label>
    }, {});
         <div class="ev-modal-date">Sonntag, 23. August 2026</div>
 
         <div class="ev-modal-title">Familienfest im Stadtpark</div>
    const firstDay = new Date(year, monthIndex, 1);
        <div class="ev-modal-time">🕐 11:00 Uhr</div>
    const daysInMonth = new Date(year, monthIndex + 1, 0).getDate();
        <div class="ev-modal-note">Grosses Familienfest mit Spiel, Spass und Unterhaltung fuer Kinder jeden Alters. Eintritt frei, Anmeldung nicht erforderlich.</div>
    const offset = (firstDay.getDay() + 6) % 7;
         <a class="ev-modal-link" href="https://www.buendnis-fuer-familie-tuebingen.de/Aktuelles" target="_blank" rel="noopener">🔗 Mehr Infos</a>
 
      </div>
    for (let i = 0; i < offset; i++) {
      <!-- *** TERMIN ENDE *** -->
      const empty = document.createElement("div");
    </div>
      empty.className = "day-card empty";
      empty.setAttribute("aria-hidden", "true");
       calendarGrid.appendChild(empty);
    }
 
    for (let day = 1; day <= daysInMonth; day++) {
       const card = document.createElement("article");
      card.className = "day-card";
 
       const items = grouped[day] || [];
      const weekday = weekdayLabels[(offset + day - 1) % 7];
      const top = document.createElement("div");
      top.className = "day-top";
      top.innerHTML = `
         <div class="day-number">${weekday}, ${day}. ${monthName}</div>
         ${items.length ? `<div class="event-count">${items.length} Termin${items.length > 1 ? 'e' : ''}</div>` : ''}
      `;
      card.appendChild(top);
 
      const list = document.createElement("div");
      list.className = "events-list";
 
      if (!items.length) {
        const emptyText = document.createElement("div");
         emptyText.className = "muted-empty";
        emptyText.textContent = "Keine Einträge";
        list.appendChild(emptyText);
      } else {
        items.forEach(item => {
          const btn = document.createElement("button");
          btn.className = "event-chip";
          btn.type = "button";
          btn.innerHTML = `<span class="event-time">${item.time || 'Uhrzeit offen'}</span><span class="event-title">${item.title}</span>`;
          btn.addEventListener("click", () => openDialog(item));
          list.appendChild(btn);
        });
      }


      card.appendChild(list);
    <!-- Mo 24 --> <div class="day">  <div class="day-num">24</div></div>
      calendarGrid.appendChild(card);
    <!-- Di 25 --> <div class="day">  <div class="day-num">25</div></div>
     }
    <!-- Mi 26 --> <div class="day">  <div class="day-num">26</div></div>
    <!-- Do 27 --> <div class="day">  <div class="day-num">27</div></div>
    <!-- Fr 28 --> <div class="day">  <div class="day-num">28</div></div>
    <!-- Sa 29 --> <div class="day we"><div class="day-num">29</div></div>
    <!-- So 30 --> <div class="day we"><div class="day-num">30</div></div>
     <!-- Mo 31 --> <div class="day">  <div class="day-num">31</div></div>


     const fields = {
     <!-- ============================================================
      title: document.getElementById("dialogTitle"),
    LEERE ZELLEN NACH TAG 31
      date: document.getElementById("dialogDate"),
    31. August = Montag -> noch 6 leere Zellen (Di bis So)
      time: document.getElementById("dialogTime"),
    ============================================================ -->
      location: document.getElementById("dialogLocation"),
    <div class="day-empty"></div><!-- Di -->
      audience: document.getElementById("dialogAudience"),
    <div class="day-empty"></div><!-- Mi -->
      registration: document.getElementById("dialogRegistration"),
    <div class="day-empty"></div><!-- Do -->
      description: document.getElementById("dialogDescription"),
    <div class="day-empty"></div><!-- Fr -->
      link: document.getElementById("dialogLink")
    <div class="day-empty"></div><!-- Sa -->
    };
    <div class="day-empty"></div><!-- So -->


    function formatDate(dateString) {
</div><!-- .cal-wrap -->
      return new Date(dateString + "T00:00:00").toLocaleDateString("de-DE", {
        weekday: "long",
        day: "numeric",
        month: "long",
        year: "numeric"
      });
    }


    function fillValue(el, value, fallback = "Keine Angabe") {
      el.textContent = value && String(value).trim() ? value : fallback;
      el.classList.toggle("muted-empty", !(value && String(value).trim()));
    }
    function openDialog(item) {
      fields.title.textContent = item.title;
      fillValue(fields.date, formatDate(item.date));
      fillValue(fields.time, item.time, "Uhrzeit offen");
      fillValue(fields.location, item.location);
      fillValue(fields.audience, item.audience);
      fillValue(fields.registration, item.registration);
      fillValue(fields.description, item.description);
      if (item.url && item.url.trim()) {
        fields.link.href = item.url;
        fields.link.style.display = "inline-flex";
      } else {
        fields.link.removeAttribute("href");
        fields.link.style.display = "none";
      }
      dialog.showModal();
    }
    function closeDialog() {
      dialog.close();
    }
    document.getElementById("closeDialog").addEventListener("click", closeDialog);
    document.getElementById("dialogCloseBottom").addEventListener("click", closeDialog);
    dialog.addEventListener("click", (event) => {
      const rect = dialog.getBoundingClientRect();
      const clickedOutside = event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom;
      if (clickedOutside) dialog.close();
    });
  </script>
</body>
</body>
</html>
</html>
<h3>Details zu den Terminen</h3>
<ul>
  <li><strong>01.08.2026</strong> – 10:00 - 13:00 – Bächlewanderung mit Kind und Kescher – Start und Treffpunkt ist am Parkplatz Bebenhausen. – Geeignet für Familien mit Kindern ab 5 Jahren – Anmeldung wird benötigt – https://www.fbs-tuebingen.de/eltern-und-kinder/kw/bereich/kursdetails/kurs/261-2516B/kursname/Baechlewanderung%20mit%20Kind%20und%20Kescher/kategorie-id/11/ >Mehr Infos</a></li>
  <li><strong>02.08.2026</strong> – 10:00 - 12:00 – Geschwisterchen auf dem Weg – FBS, Raum 003 Villa Metz, Hechingerstra&szlig;e 13 – F&uuml;r Kinder ab 4 Jahren mit einem Elternteil – Anmeldung wird ben&ouml;tigt – <a href="https://www.fbs-tuebingen.de/programm/kw/bereich/kursdetails/kurs/261-2509/kursname/Geschwisterchen%20auf%20dem%20Weg/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>02.08.2026</strong> – 14:00 - 17:00 – Eiscaf&eacute; frieDa – Caf&eacute; frieDa, Friedrich-Dannenmann-Stra&szlig;e 69, 72070 T&uuml;bingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – <a href="https://www.lebenshilfe-tuebingen.de/service/termine/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>04.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>05.08.2026</strong> – 14:30 - 15:30 – Spielplatztreff – Piratenspielplatz, Anlagenpark – Familien mit j&uuml;ngeren Kindern – Keine Anmeldung erforderlich.</li>
  <li><strong>06.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>06.08.2026</strong> – 11:00 – Sommerferien mit dem LESE-HAUS – Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtb&uuml;cherei, Nonnengasse 19, 72070 T&uuml;bingen – Kinder von 4 bis 8 Jahre mit Begleitpersonen – <a href="https://tuebingen.ferienprogramm-online.de/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>09.08.2026</strong> – 14:00 - 17:00 – Eiscaf&eacute; frieDa – Caf&eacute; frieDa, Friedrich-Dannenmann-Stra&szlig;e 69, 72070 T&uuml;bingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – <a href="https://www.lebenshilfe-tuebingen.de/service/termine/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>11.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>12.08.2026</strong> – 14:30 - 15:30 – Spielplatztreff – Ort bitte erg&auml;nzen – Zielgruppe bitte erg&auml;nzen.</li>
  <li><strong>13.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>13.08.2026</strong> – 11:00 – Sommerferien mit dem LESE-HAUS – Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtb&uuml;cherei, Nonnengasse 19, 72070 T&uuml;bingen – Kinder von 4 bis 8 Jahre mit Begleitpersonen – <a href="https://tuebingen.ferienprogramm-online.de/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>16.08.2026</strong> – 14:00 - 17:00 – Eiscaf&eacute; frieDa – Caf&eacute; frieDa, Friedrich-Dannenmann-Stra&szlig;e 69, 72070 T&uuml;bingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – <a href="https://www.lebenshilfe-tuebingen.de/service/termine/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>16.08.2026</strong> – 16:00 - 18:30 – Bunt backen mit Kindern: Regenbogen-Muffins &amp; Cake-Pops – Ort bitte erg&auml;nzen – Zielgruppe bitte erg&auml;nzen.</li>
  <li><strong>18.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>19.08.2026</strong> – 14:30 - 15:30 – Spielplatztreff – Ort bitte erg&auml;nzen – Zielgruppe bitte erg&auml;nzen.</li>
  <li><strong>20.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>20.08.2026</strong> – 11:00 – Sommerferien mit dem LESE-HAUS – Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtb&uuml;cherei, Nonnengasse 19, 72070 T&uuml;bingen – Kinder von 4 bis 8 Jahre mit Begleitpersonen – <a href="https://tuebingen.ferienprogramm-online.de/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>23.08.2026</strong> – 14:00 - 17:00 – Eiscaf&eacute; frieDa – Caf&eacute; frieDa, Friedrich-Dannenmann-Stra&szlig;e 69, 72070 T&uuml;bingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – <a href="https://www.lebenshilfe-tuebingen.de/service/termine/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>25.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>26.08.2026</strong> – 14:30 - 15:30 – Spielplatztreff – Ort bitte erg&auml;nzen – Zielgruppe bitte erg&auml;nzen.</li>
  <li><strong>27.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit S&auml;uglingen und Kleinkindern – Anmeldung: <a href="mailto:babybrunch@elkiko.de">babybrunch@elkiko.de</a> – <a href="https://www.elkiko.de/content2/index.php/de/programm/babybrunch-brunch1plus.html" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>27.08.2026</strong> – 11:00 – Sommerferien mit dem LESE-HAUS – Alter Botanischer Garten, Wiese neben dem Kinderspielplatz; bei schlechtem Wetter: Thekla-Waitz-Studio, im EG der Stadtbücherei, Nonnengasse 19, 72070 Tübingen – Kinder von 4 bis 8 Jahre mit Begleitpersonen – <a href="https://tuebingen.ferienprogramm-online.de/" target="_blank" rel="noopener noreferrer">Mehr Infos</a></li>
  <li><strong>30.08.2026</strong> – 14:00 - 17:00 – Eiscaf&eacute; frieDa – Caf&eacute; frieDa, Friedrich-Dannenmann-Stra&szlig;e 69, 72070 T&uuml;bingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – Mehr Infos: https://www.lebenshilfe-tuebingen.de/service/termine/
</ul>

Version vom 10. Juni 2026, 11:30 Uhr

<!DOCTYPE html> Kalender - August 2026

Kalender - August 2026

Klick auf einen Termin fuer mehr Details

Mo Di Mi Do Fr Sa So
1
2
3
4
5
Mittwoch, 5. August 2026
Stadtfest Tuebingen
🕐 14:00 Uhr
Das jaehrliche Stadtfest in der Innenstadt mit Live-Musik, Essen und Marktstaenden. Parkplaetze sind begrenzt - Anreise mit OPNV empfohlen.
🔗 Mehr Infos
6
7
8
9
10
11
12
Mittwoch, 12. August 2026
Netzwerktreffen Buendnis fuer Familie
🕐 09:30 Uhr
Quartalsweise Netzwerktreffen aller Mitglieder des Buendnisses fuer Familie Tuebingen. Bitte Berichte bis 08.08. einreichen.
🔗 Mehr Infos
13
14
15
16
17
18
19
20
21
22
23
Sonntag, 23. August 2026
Familienfest im Stadtpark
🕐 11:00 Uhr
Grosses Familienfest mit Spiel, Spass und Unterhaltung fuer Kinder jeden Alters. Eintritt frei, Anmeldung nicht erforderlich.
🔗 Mehr Infos
24
25
26
27
28
29
30
31