const menuButton = document.querySelector("[data-menu-button]"); const mobileNav = document.querySelector("[data-mobile-nav]"); const dialog = document.querySelector("[data-dialog]"); const dialogTitle = document.querySelector("[data-dialog-title]"); const dialogKicker = document.querySelector("[data-dialog-kicker]"); const dialogContent = document.querySelector("[data-dialog-content]"); const dialogActions = document.querySelector("[data-dialog-actions]"); const dialogClose = document.querySelector("[data-dialog-close]"); const detailContent = { schulanfang: { kicker: "Für zukünftige Erstklässler*innen", title: "Ein guter Start in die Schule", html: `
Die Hardtschule informiert Familien rechtzeitig über Schulanmeldung, Kennenlernnachmittag, Elternabend und Einschulung.
Für verbindliche Termine des kommenden Schuljahres wenden Sie sich bitte an das Sekretariat. So landen keine veralteten Termine aus dem Webarchiv auf Ihrer Merkliste.
Vorgesehen sind aktuelle Listen für Klasse 1, 2, 3, 4 sowie die VKL. Frühere Listen aus dem Schuljahr 2025/26 wurden bewusst nicht als aktuell übernommen.
Bis die neuen PDF-Dateien von der Schule eingestellt sind, erhalten Familien die verbindliche Liste über die Klassenleitung oder das Sekretariat.
Die Hardtschule ist seit 2010 als Grundschule mit sport- und bewegungserzieherischem Schwerpunkt zertifiziert und wurde 2016 erfolgreich rezertifiziert.
So können Kinder nach konzentrierten Arbeitsphasen neue Energie sammeln und Lernen mit allen Sinnen erleben.
`, actions: [{ label: "Zur Schulgemeinschaft", href: "#gemeinschaft", primary: true }], }, miteinander: { kicker: "Soziales Lernen", title: "Respekt wird jeden Tag geübt", html: `Das 2023 verabschiedete Sozialcurriculum bildet die Grundlage für Prävention und soziales Lernen.
Ergänzend finden bedarfsgerechte Projekte mit externen Partnern statt – etwa Theaterpädagogik, Selbstbehauptung und Klassentraining.
`, actions: [{ label: "Beratung kennenlernen", action: "beratung", primary: true }], }, sprache: { kicker: "VKL & Deutschförderung", title: "Sprache schafft Zugehörigkeit", html: `In der Vorbereitungsklasse (VKL) lernen neu zugewanderte Kinder Deutsch und finden schrittweise in den Schulalltag hinein.
Die Förderung verbindet sprachliches Lernen mit Begegnung, Orientierung und der Teilnahme an der Schulgemeinschaft. Nach dem Wechsel in eine Regelklasse kann nachgehende Deutschförderung unterstützen.
Im historischen Schulhaus befinden sich Klassenräume, Sekretariat und Rektorat. Das Lesezimmer wird auch für den Unterricht der VKL genutzt.
Der denkmalgeschützte Anbau von 1906 wurde 2020 behutsam saniert. Historische Materialien blieben dabei erhalten.
`, actions: [ { label: "Anfahrt ansehen", href: "#kontakt", primary: true }, { label: "Städtisches Bauprojekt", href: "https://www.karlsruhe.de/mobilitaet-stadtbild/hochbau-und-architektur/neubauten-und-bauen-im-bestand/hardtschule-brandschutz-und-wc-sanierung", external: true }, ], }, mitbestimmung: { kicker: "Schüler*innenparlament", title: "Kinder gestalten ihre Schule mit", html: `Klassensprecher*innen bringen die Perspektiven ihrer Klassen in das Schüler*innenparlament ein. Sie hören zu, vertreten Interessen und helfen dabei, gemeinsame Lösungen zu finden.
Klassenrat, Pausenengel und soziale Lernstunden geben Beteiligung einen festen Platz im Alltag – nicht nur bei besonderen Projekten.
`, actions: [{ label: "Mehr zum sozialen Lernen", action: "miteinander", primary: true }], }, beratung: { kicker: "Schulsozialarbeit", title: "Vertrauliche Hilfe direkt an der Schule", html: `Die Schulsozialarbeit ist ein Beratungsangebot der Stadt Karlsruhe für Schüler*innen, Erziehungsberechtigte und das Kollegium.
Telefon Schulsozialarbeit: 0721 133-5755
Sprechzeiten: Montag, Mittwoch, Donnerstag und Freitag, 9:00–13:00 Uhr. Individuelle Termine sind möglich.
Der Förderverein unterstützt Lern- und Erfahrungsmöglichkeiten, die allen Kindern der Hardtschule zugutekommen.
Mitgliedschaft und Mithilfe stärken ein solidarisches Miteinander im Interesse aller Kinder.
`, actions: [{ label: "Mitgliedschaft anfragen", href: "mailto:schulleitung@hardtschule-karlsruhe.de?subject=Kontakt%20zum%20F%C3%B6rderverein", primary: true }], }, }; function setMenu(open) { if (!menuButton || !mobileNav) return; menuButton.setAttribute("aria-expanded", String(open)); mobileNav.hidden = !open; document.body.classList.toggle("menu-open", open); } menuButton?.addEventListener("click", () => { setMenu(menuButton.getAttribute("aria-expanded") !== "true"); }); mobileNav?.querySelectorAll("a").forEach((link) => { link.addEventListener("click", () => setMenu(false)); }); function renderActions(actions = []) { dialogActions.innerHTML = ""; actions.forEach((action) => { const element = document.createElement("a"); element.className = `button ${action.primary ? "button-dark" : "button-outline"}`; element.textContent = action.label; if (action.action) { element.href = "#"; element.addEventListener("click", (event) => { event.preventDefault(); openDetail(action.action); }); } else { element.href = action.href; if (action.external) { element.target = "_blank"; element.rel = "noreferrer"; } if (action.href?.startsWith("#")) { element.addEventListener("click", () => dialog.close()); } } const arrow = document.createElementNS("http://www.w3.org/2000/svg", "svg"); arrow.setAttribute("aria-hidden", "true"); const use = document.createElementNS("http://www.w3.org/2000/svg", "use"); use.setAttribute("href", "#icon-arrow"); arrow.append(use); element.append(arrow); dialogActions.append(element); }); } function openDetail(key) { const content = detailContent[key]; if (!content || !dialog) return; dialogKicker.textContent = content.kicker; dialogTitle.textContent = content.title; dialogContent.innerHTML = content.html; renderActions(content.actions); if (!dialog.open) dialog.showModal(); document.body.classList.add("dialog-open"); } document.querySelectorAll("[data-detail]").forEach((trigger) => { trigger.addEventListener("click", () => openDetail(trigger.dataset.detail)); }); dialogClose?.addEventListener("click", () => dialog.close()); dialog?.addEventListener("click", (event) => { if (event.target === dialog) dialog.close(); }); dialog?.addEventListener("close", () => { document.body.classList.remove("dialog-open"); }); document.querySelectorAll("[data-year]").forEach((element) => { element.textContent = new Date().getFullYear(); }); const revealElements = document.querySelectorAll(".reveal"); const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (reduceMotion || !("IntersectionObserver" in window)) { revealElements.forEach((element) => element.classList.add("is-visible")); } else { const revealObserver = new IntersectionObserver( (entries, observer) => { entries.forEach((entry) => { if (!entry.isIntersecting) return; entry.target.classList.add("is-visible"); observer.unobserve(entry.target); }); }, { threshold: 0.12, rootMargin: "0px 0px -40px" }, ); revealElements.forEach((element) => revealObserver.observe(element)); } const navLinks = [...document.querySelectorAll(".desktop-nav a")]; const sections = navLinks .map((link) => document.querySelector(link.getAttribute("href"))) .filter(Boolean); if ("IntersectionObserver" in window && navLinks.length) { const sectionObserver = new IntersectionObserver( (entries) => { const visible = entries .filter((entry) => entry.isIntersecting) .sort((a, b) => b.intersectionRatio - a.intersectionRatio)[0]; if (!visible) return; navLinks.forEach((link) => { const active = link.getAttribute("href") === `#${visible.target.id}`; if (active) link.setAttribute("aria-current", "true"); else link.removeAttribute("aria-current"); }); }, { rootMargin: "-30% 0px -60%", threshold: [0, 0.1, 0.3] }, ); sections.forEach((section) => sectionObserver.observe(section)); }