|
|
| 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ße 13 – Für Kinder ab 4 Jahren mit einem Elternteil – Anmeldung wird benö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é frieDa – Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tü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ä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üngeren Kindern – Keine Anmeldung erforderlich.</li>
| |
| <li><strong>06.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit Sä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ü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>09.08.2026</strong> – 14:00 - 17:00 – Eiscafé frieDa – Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tü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ä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änzen – Zielgruppe bitte ergänzen.</li>
| |
| <li><strong>13.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit Sä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ü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>16.08.2026</strong> – 14:00 - 17:00 – Eiscafé frieDa – Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tü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 & Cake-Pops – Ort bitte ergänzen – Zielgruppe bitte ergänzen.</li>
| |
| <li><strong>18.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit Sä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änzen – Zielgruppe bitte ergänzen.</li>
| |
| <li><strong>20.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit Sä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ü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>23.08.2026</strong> – 14:00 - 17:00 – Eiscafé frieDa – Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tü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ä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änzen – Zielgruppe bitte ergänzen.</li>
| |
| <li><strong>27.08.2026</strong> – 09:30 - 11:30 – BabyBrunch – elkiko Familienzentrum – Eltern mit Sä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é frieDa – Café frieDa, Friedrich-Dannenmann-Straße 69, 72070 Tübingen – Familien, Nachbarn, Menschen mit und ohne Behinderung – Mehr Infos: https://www.lebenshilfe-tuebingen.de/service/termine/
| |
| </ul>
| |