`;
const toggle = el.querySelector(".nav-toggle");
const links = el.querySelector(".nav-links");
toggle.addEventListener("click", () => {
const open = links.classList.toggle("open");
toggle.setAttribute("aria-expanded", String(open));
});
el.querySelectorAll(".nav-group > button").forEach((btn) => {
btn.addEventListener("click", () => {
const group = btn.parentElement;
const wasOpen = group.classList.contains("open");
el.querySelectorAll(".nav-group.open").forEach((g) => g.classList.remove("open"));
if (!wasOpen) group.classList.add("open");
btn.setAttribute("aria-expanded", String(!wasOpen));
});
});
document.addEventListener("click", (e) => {
if (!el.contains(e.target)) {
el.querySelectorAll(".nav-group.open").forEach((g) => g.classList.remove("open"));
}
});
}
function renderFooter() {
const el = document.getElementById("site-footer");
if (!el) return;
const year = new Date().getFullYear();
el.innerHTML = `
`;
}
function renderFog() {
if (document.querySelector(".fog-layer")) return;
const layer = document.createElement("div");
layer.className = "fog-layer";
layer.setAttribute("aria-hidden", "true");
const blobs = 6;
let html = "";
for (let i = 0; i < blobs; i++) {
const size = 220 + Math.round(Math.random() * 260);
const top = Math.round(Math.random() * 100);
const left = Math.round(Math.random() * 100);
const delay = (Math.random() * 10).toFixed(1);
html += ``;
}
layer.innerHTML = html;
document.body.prepend(layer);
}
/* ===================================================================
Musik-Knopf (unten rechts, auf jeder Seite)
Kleiner schwebender Knopf, der ein Feld mit den Spotify-Playern von
Hasidog und Van-Van aufklappt. Genauso gelöst wie im Analyse-Tool.
Zwei bewusste Entscheidungen:
1. Das Feld hängt direkt am , nicht in einem Abschnitt — so
kann kein Neuaufbau der Seite den laufenden Player unterbrechen.
2. Die Player werden ERST beim ersten Öffnen geladen (src wird dann
gesetzt). Sonst würde jede Seite zwei fremde Einbettungen laden,
auch wenn niemand Musik hören will.
=================================================================== */
const SPOTIFY_ARTISTS = [
{ name: "Hasidog", id: "2INiE1VVJGUQdEURsltuJU" },
{ name: "Van-Van", id: "4J9PcKZBkh6V8dVY3CGliw" },
];
function renderMusicWidget() {
if (document.getElementById("music-widget")) return;
const widget = document.createElement("div");
widget.className = "music-widget";
widget.id = "music-widget";
widget.innerHTML = `
Musik von Team Dogi 🎵
Läuft weiter, solange du auf dieser Seite bleibst. 🩵