| Server IP : 217.160.0.244 / Your IP : 216.73.216.25 Web Server : Apache System : Linux infong-eu155 4.4.400-icpu-108 #2 SMP Wed Feb 11 11:51:01 UTC 2026 x86_64 User : u100174116 ( 6746176) PHP Version : 8.5.10 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /homepages/13/d818981593/htdocs/GutTrechowNeu/assets/js/ |
Upload File : |
(function () {
var doc = document;
var body = doc.body;
var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
var MENU_DATA = [{"title": "Burgensemble", "path": "burgensemble/index.html", "children": [{"title": "Burg", "path": "burgensemble/burg/index.html", "children": [{"title": "Angebote/Unterkünfte", "path": "burgensemble/burg/angebote-unterkuenfte/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/burg/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/burg/historie/index.html", "children": []}]}, {"title": "Gästebuch", "path": "burgensemble/gaestebuch/index.html", "children": [{"title": "Einträge", "path": "burgensemble/gaestebuch/eintraege/index.html", "children": []}, {"title": "Selbst eintragen", "path": "burgensemble/gaestebuch/selbst-eintragen/index.html", "children": []}]}, {"title": "Kornspeicher", "path": "burgensemble/kornspeicher/index.html", "children": [{"title": "Angebote/Unterkünfte", "path": "burgensemble/kornspeicher/angebote-unterkuenfte/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/kornspeicher/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/kornspeicher/historie/index.html", "children": []}]}, {"title": "Marstall", "path": "burgensemble/marstall/index.html", "children": [{"title": "Angebote", "path": "burgensemble/marstall/angebote/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/marstall/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/marstall/historie/index.html", "children": []}]}, {"title": "Presse", "path": "burgensemble/presse/index.html", "children": [{"title": "Aktuelles", "path": "burgensemble/presse/aktuelles/index.html", "children": []}, {"title": "Archiv", "path": "burgensemble/presse/archiv/index.html", "children": []}]}, {"title": "Projekte", "path": "burgensemble/projekte/index.html", "children": [{"title": "Bauvorhaben", "path": "burgensemble/projekte/bauvorhaben/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/projekte/fotogalerie/index.html", "children": []}]}]}, {"title": "Museum der Evolution", "path": "museum-der-evolution/index.html", "children": [{"title": "Fotogalerie", "path": "museum-der-evolution/fotogalerie/index.html", "children": []}, {"title": "Philosophie", "path": "museum-der-evolution/philosophie/index.html", "children": []}, {"title": "Öffnungszeiten/Angebote", "path": "museum-der-evolution/oeffnungszeiten-angebote/index.html", "children": []}]}, {"title": "Landwirtschaft", "path": "landwirtschaft/index.html", "children": [{"title": "Bewirtschaftung", "path": "landwirtschaft/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "landwirtschaft/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "landwirtschaft/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "landwirtschaft/produkte-angebote/index.html", "children": []}]}, {"title": "Wald", "path": "wald/index.html", "children": [{"title": "Bewirtschaftung", "path": "wald/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "wald/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "wald/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "wald/produkte-angebote/index.html", "children": []}]}, {"title": "See", "path": "see/index.html", "children": [{"title": "Bewirtschaftung", "path": "see/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "see/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "see/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "see/produkte-angebote/index.html", "children": []}]}, {"title": "Kapelle", "path": "kapelle/index.html", "children": [{"title": "Historie", "path": "kapelle/historie/index.html", "children": []}, {"title": "Termine/Angebote", "path": "kapelle/termine-angebote/index.html", "children": []}]}, {"title": "Hofladen", "path": "hofladen/index.html", "children": [{"title": "Öffnungszeiten/Angebote", "path": "hofladen/oeffnungszeiten-angebote/index.html", "children": []}]}, {"title": "Veranstaltungen", "path": "veranstaltungen/index.html", "children": []}, {"title": "Förderkreis", "path": "foerderkreis/index.html", "children": [{"title": "Fotogalerie", "path": "foerderkreis/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "foerderkreis/historie/index.html", "children": []}, {"title": "Konzepte/Philosophie", "path": "foerderkreis/konzepte-philosophie/index.html", "children": []}, {"title": "Spendenkonto", "path": "foerderkreis/spendenkonto/index.html", "children": []}, {"title": "Tätigkeiten", "path": "foerderkreis/taetigkeiten/index.html", "children": []}]}];
function setScrolledState() {
body.classList.toggle('is-scrolled', window.scrollY > 8);
}
setScrolledState();
window.addEventListener('scroll', setScrolledState, { passive: true });
function rootPrefix() {
var cssLink = doc.querySelector('link[href*="assets/css/styles.css"]');
if (!cssLink) return '';
return cssLink.getAttribute('href').replace(/assets\/css\/styles\.css.*$/, '');
}
var root = rootPrefix();
var iconMap = [
{ match: 'museum-der-evolution', src: 'assets/uploads/2021/01/LOGO_MUSEUM_DER_EVOLUTIONEUM_II-79x53.png' },
{ match: 'landwirtschaft', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
{ match: 'wald', src: 'assets/uploads/2020/03/gt_menu_wald-93x53.jpg' },
{ match: 'kapelle', src: 'assets/uploads/2020/03/gt_menu_kapelle-93x53.jpg' },
{ match: 'hofladen', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
{ match: 'veranstaltungen', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
{ match: 'foerderkreis', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' },
{ match: 'see', src: 'assets/uploads/2020/03/gt_menu_see-93x53.jpg' },
{ match: 'burgensemble', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'burg/', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'kornspeicher', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'marstall', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'projekte', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'presse', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
{ match: 'gaestebuch', src: 'assets/uploads/2026/03/buch.png' },
{ match: 'fotogalerie', src: 'assets/uploads/2026/03/buch.png' },
{ match: 'historie', src: 'assets/uploads/2020/03/gt_menu_burgensemble-36x20.jpg' },
{ match: 'angebote', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
{ match: 'unterkuenfte', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
{ match: 'bewirtschaftung', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
{ match: 'produkte', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
{ match: 'philosophie', src: 'assets/uploads/2021/01/LOGO_MUSEUM_DER_EVOLUTIONEUM_II-79x53.png' },
{ match: 'aktuelles', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
{ match: 'archiv', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
{ match: 'spendenkonto', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' },
{ match: 'taetigkeiten', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' }
];
function iconFor(href, label) {
href = (href || '').toLowerCase();
label = (label || '').toLowerCase();
for (var i = 0; i < iconMap.length; i += 1) {
if (href.indexOf(iconMap[i].match) !== -1 || label.indexOf(iconMap[i].match) !== -1) {
return root + iconMap[i].src;
}
}
return root + 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg';
}
function enhanceLink(link) {
if (!link || link.classList.contains('link-enhanced')) return;
var label = (link.textContent || '').replace(/\s+/g, ' ').trim();
var href = link.getAttribute('href') || '';
var src = iconFor(href, label);
var thumb = doc.createElement('img');
thumb.className = 'nav-thumb';
thumb.alt = '';
thumb.setAttribute('aria-hidden', 'true');
thumb.src = src;
var span = doc.createElement('span');
span.className = 'nav-label';
span.textContent = label;
link.textContent = '';
link.appendChild(thumb);
link.appendChild(span);
link.classList.add('link-enhanced');
}
doc.querySelectorAll('.main-nav a, .sidebar-menu a').forEach(enhanceLink);
function resolvePath(href) {
try {
var url = new URL(href, doc.baseURI);
return url.pathname.replace(/\\/g, '/');
} catch (e) {
return href;
}
}
function findNodeByHref(href) {
var path = resolvePath(href);
var result = null;
function walk(node) {
if (!node || result) return;
if (path.slice(-node.path.length) === node.path) {
result = node;
return;
}
(node.children || []).forEach(walk);
}
MENU_DATA.forEach(walk);
return result;
}
function buildFlyoutItem(item) {
var block = doc.createElement('div');
block.className = 'nav-flyout-item';
var link = doc.createElement('a');
link.href = root + item.path;
link.className = 'nav-flyout-link';
link.textContent = item.title;
block.appendChild(link);
enhanceLink(link);
if (item.children && item.children.length) {
var sub = doc.createElement('div');
sub.className = 'nav-flyout-sub';
item.children.forEach(function (child) {
var childLink = doc.createElement('a');
childLink.href = root + child.path;
childLink.className = 'nav-flyout-sub-link';
childLink.textContent = child.title;
sub.appendChild(childLink);
});
block.appendChild(sub);
}
return block;
}
function buildFlyouts() {
if (window.innerWidth <= 860) return;
doc.querySelectorAll('.main-nav li > a').forEach(function (link) {
var node = findNodeByHref(link.getAttribute('href') || '');
if (!node || !node.children || !node.children.length) return;
var li = link.parentElement;
if (!li || li.querySelector('.nav-flyout')) return;
var fly = doc.createElement('div');
fly.className = 'nav-flyout';
var childCount = node.children.length;
var grandChildCount = node.children.reduce(function (sum, item) {
return sum + ((item.children && item.children.length) || 0);
}, 0);
if (childCount >= 5 || grandChildCount >= 8) {
fly.classList.add('is-two-column');
}
node.children.forEach(function (item) {
fly.appendChild(buildFlyoutItem(item));
});
li.appendChild(fly);
/* Position:fixed braucht explizite top-Koordinate */
function positionFlyout() {
var rect = li.getBoundingClientRect();
var winH = window.innerHeight;
var flyH = fly.scrollHeight || 300;
var top = Math.min(rect.top, winH - flyH - 20);
fly.style.top = Math.max(10, top) + 'px';
}
li.addEventListener('mouseenter', positionFlyout);
li.addEventListener('focusin', positionFlyout);
});
}
buildFlyouts();
/* ── Gästebuch via GT API ── */
function buildEntryEl(entry) {
var article = doc.createElement('article');
article.className = 'guestbook-entry reveal';
var head = doc.createElement('div');
head.className = 'guestbook-entry-head';
var nameEl = doc.createElement('div');
nameEl.className = 'guestbook-entry-name';
nameEl.textContent = entry.name + (entry.context ? ' – ' + entry.context : '');
var dateEl = doc.createElement('div');
dateEl.className = 'guestbook-entry-date';
var d = new Date(entry.date);
dateEl.textContent = isNaN(d.getTime()) ? '' : d.toLocaleDateString('de-DE');
head.appendChild(nameEl);
head.appendChild(dateEl);
var msg = doc.createElement('p');
msg.textContent = entry.message;
article.appendChild(head);
article.appendChild(msg);
return article;
}
function renderGuestbook() {
var list = doc.getElementById('guestbookEntries');
var empty = doc.getElementById('guestbookEmpty');
if (!list) return;
list.innerHTML = '<p style="font-family:CardoGT,serif;font-size:1.6rem;opacity:.5;padding:1rem 0">Einträge werden geladen …</p>';
var api = window.GT;
if (!api) { list.innerHTML = ''; if (empty) empty.hidden = false; return; }
api.getPublicEntries().then(function(entries) {
list.innerHTML = '';
entries.forEach(function(entry, i) {
var el = buildEntryEl(entry);
el.style.setProperty('--reveal-delay', (i * 60) + 'ms');
list.appendChild(el);
setTimeout(function() { el.classList.add('is-visible'); }, 80 + i * 60);
});
if (empty) empty.hidden = entries.length > 0;
}).catch(function() {
list.innerHTML = '';
if (empty) { empty.hidden = false; empty.textContent = 'Einträge konnten nicht geladen werden.'; }
});
}
function bindGuestbookForm() {
var form = doc.getElementById('guestbookForm');
if (form && form.dataset.gtBound === '1') return;
if (form) form.dataset.gtBound = '1';
var status = doc.getElementById('guestbookStatus');
if (!form) return;
var api = window.GT;
if (api && !api.isConfigured()) {
var notice = doc.createElement('div');
notice.className = 'gt-api-notice';
notice.innerHTML = 'Offline-Modus aktiv. Für echte Online-Speicherung bitte <code>assets/js/api.js</code> konfigurieren (JSONBin.io).';
form.parentNode.insertBefore(notice, form);
}
form.addEventListener('submit', function(event) {
event.preventDefault();
var btn = form.querySelector('button');
var data = new FormData(form);
var entry = {
name: String(data.get('name') || '').trim(),
context: String(data.get('context') || '').trim(),
message: String(data.get('message') || '').trim()
};
if (!entry.name || !entry.message) return;
if (btn) { btn.disabled = true; btn.textContent = 'Wird gespeichert …'; }
var promise = api ? api.submitEntry(entry) : Promise.reject();
promise.then(function() {
form.reset();
if (btn) { btn.disabled = false; btn.textContent = 'Eintrag speichern'; }
if (status) {
status.hidden = false;
status.innerHTML = '<span style="color:#4a7a2a">✓</span> Dein Eintrag wurde eingereicht und erscheint nach Prüfung durch den Administrator.';
}
}).catch(function() {
if (btn) { btn.disabled = false; btn.textContent = 'Eintrag speichern'; }
if (status) { status.hidden = false; status.textContent = 'Fehler beim Speichern. Bitte später erneut versuchen.'; }
});
});
}
function renderEventsPage() {
var cal = doc.getElementById('eventsCalendar');
if (!cal || !window.GT) return;
var MONTHS = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
function escHtml(s){ return String(s || '').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); }
cal.innerHTML = '<p class="events-empty">Veranstaltungen werden geladen …</p>';
window.GT.getEvents().then(function(evs){
if (!evs || !evs.length) { cal.innerHTML = '<p class="events-empty">Derzeit keine Veranstaltungen geplant.</p>'; return; }
var now = new Date().toISOString().slice(0,10);
var future = evs.filter(function(e){ return (e.date || '') >= now; });
if (!future.length) { cal.innerHTML = '<p class="events-empty">Derzeit keine kommenden Veranstaltungen.</p>'; return; }
cal.innerHTML = future.map(function(e){
var d = new Date(e.date);
var day = isNaN(d) ? '–' : d.getDate();
var mon = isNaN(d) ? '' : MONTHS[d.getMonth()];
var yr = isNaN(d) ? '' : d.getFullYear();
return '<div class="event-card"><div class="event-date-block"><div class="event-day">' + day + '</div><div class="event-month">' + mon + '</div><div class="event-year">' + yr + '</div></div><div class="event-body"><div class="event-title">' + escHtml(e.title) + '</div>' + ((e.time || e.location) ? '<div class="event-meta">' + (e.time ? '🕐 ' + escHtml(e.time) + ' ' : '') + (e.location ? '📍 ' + escHtml(e.location) : '') + '</div>' : '') + (e.description ? '<div class="event-desc">' + escHtml(e.description) + '</div>' : '') + '</div></div>';
}).join('');
}).catch(function(){
cal.innerHTML = '<p class="events-empty">Veranstaltungen konnten nicht geladen werden.</p>';
});
}
/* Wartungsmodus beim Laden prüfen */
(function checkMaintenance() {
var api = window.GT;
if (!api) return;
api.getMaintenance().then(function(active) {
if (!active) return;
doc.body.classList.add('gt-maintenance-on');
if (!doc.querySelector('.gt-maintenance-overlay')) {
var cssLink = doc.querySelector('link[href*="styles.css"]');
var root = cssLink ? cssLink.getAttribute('href').replace('assets/css/styles.css', '') : '';
var ov = doc.createElement('div');
ov.className = 'gt-maintenance-overlay';
ov.innerHTML =
'<img class="maint-logo" src="' + root + 'assets/images/logo-gut-trechow.png" alt="Gut Trechow">' +
'<h2>Wartungsarbeiten</h2>' +
'<div class="maint-ornament">· · ·</div>' +
'<p>Diese Seite wird gerade gewartet und ist vorübergehend nicht erreichbar.<br>Wir sind bald wieder für Sie da.</p>';
doc.body.appendChild(ov);
}
});
})();
renderGuestbook();
bindGuestbookForm();
renderEventsPage();
var toggle = doc.querySelector('.nav-toggle');
var nav = doc.getElementById('mainNav');
if (toggle && nav) {
toggle.addEventListener('click', function () {
nav.classList.toggle('is-open');
var expanded = nav.classList.contains('is-open');
toggle.setAttribute('aria-expanded', expanded ? 'true' : 'false');
});
nav.querySelectorAll('a').forEach(function (link) {
link.addEventListener('click', function () {
nav.classList.remove('is-open');
toggle.setAttribute('aria-expanded', 'false');
});
});
}
doc.querySelectorAll('[data-slider]').forEach(function (slider) {
var slides = Array.prototype.slice.call(slider.querySelectorAll('.hero-slide'));
if (slides.length < 2) return;
var prev = slider.querySelector('.hero-prev');
var next = slider.querySelector('.hero-next');
var index = 0;
var timer = null;
function show(i) {
index = (i + slides.length) % slides.length;
slides.forEach(function (slide, n) {
var active = n === index;
slide.classList.toggle('is-active', active);
slide.setAttribute('aria-hidden', active ? 'false' : 'true');
if (!active) {
var img = slide.querySelector('img');
var overlay = slide.querySelector('.hero-overlay');
if (img) img.style.transform = '';
if (overlay) overlay.style.transform = '';
}
});
}
function advance(step) {
show(index + step);
}
function stop() {
if (timer) {
clearInterval(timer);
timer = null;
}
}
function start() {
if (prefersReducedMotion) return;
stop();
timer = setInterval(function () {
advance(1);
}, 5200);
}
if (prev) {
prev.addEventListener('click', function () {
advance(-1);
start();
});
}
if (next) {
next.addEventListener('click', function () {
advance(1);
start();
});
}
slider.addEventListener('mouseenter', stop);
slider.addEventListener('mouseleave', start);
slider.addEventListener('focusin', stop);
slider.addEventListener('focusout', start);
if (!prefersReducedMotion) {
slider.addEventListener('pointermove', function (event) {
var rect = slider.getBoundingClientRect();
var x = (event.clientX - rect.left) / rect.width - 0.5;
var y = (event.clientY - rect.top) / rect.height - 0.5;
var activeSlide = slides[index];
if (!activeSlide) return;
var img = activeSlide.querySelector('img');
var overlay = activeSlide.querySelector('.hero-overlay');
if (img) img.style.transform = 'translate(' + (-x * 12).toFixed(2) + 'px,' + (-y * 10).toFixed(2) + 'px) scale(1.03)';
if (overlay) overlay.style.transform = 'translate(' + (x * 10).toFixed(2) + 'px,' + (y * 8).toFixed(2) + 'px)';
});
slider.addEventListener('pointerleave', function () {
var activeSlide = slides[index];
if (!activeSlide) return;
var img = activeSlide.querySelector('img');
var overlay = activeSlide.querySelector('.hero-overlay');
if (img) img.style.transform = '';
if (overlay) overlay.style.transform = '';
});
}
show(0);
start();
});
doc.querySelectorAll('.page-content p').forEach(function (paragraph) {
var images = paragraph.querySelectorAll('img');
if (images.length < 2) return;
var clone = paragraph.cloneNode(true);
clone.querySelectorAll('img, br').forEach(function (node) {
node.remove();
});
var text = (clone.textContent || '').replace(/\s+/g, ' ').trim();
if (text.length <= 36) {
paragraph.classList.add('image-cluster');
}
});
var revealTargets = Array.prototype.slice.call(
doc.querySelectorAll('.hero-slider, .hero-banner, .panel, .notice-card, .menu-card, .sidebar-card, .page-content')
);
revealTargets.forEach(function (el, index) {
el.classList.add('reveal');
el.style.setProperty('--reveal-delay', Math.min(index * 70, 350) + 'ms');
});
if (prefersReducedMotion || !('IntersectionObserver' in window)) {
revealTargets.forEach(function (el) {
el.classList.add('is-visible');
});
} else {
var observer = new IntersectionObserver(function (entries, io) {
entries.forEach(function (entry) {
if (!entry.isIntersecting) return;
entry.target.classList.add('is-visible');
io.unobserve(entry.target);
});
}, {
threshold: 0.01,
rootMargin: '0px 0px 0px 0px'
});
revealTargets.forEach(function (el) {
observer.observe(el);
});
}
})();
/* ── Dynamischer Seiten-Inhalt von API laden ── */
(function(){
if (!window.GT) return;
var pc = document.querySelector('.page-content');
if (!pc) return;
// Slug aus URL ableiten
var path = window.location.pathname.replace(/\/index\.html$/, '').replace(/\/$/, '');
var parts = path.split('/').filter(Boolean);
// Finde den Basis-Slug (ohne 'gt' prefix wenn lokal)
var slug = '';
var knownRoots = ['burgensemble','landwirtschaft','wald','see','kapelle','hofladen',
'veranstaltungen','foerderkreis','museum-der-evolution','kontakt','impressum',
'datenschutzerklaerung','index'];
for (var i = parts.length - 1; i >= 0; i--) {
if (knownRoots.indexOf(parts[i]) !== -1) {
slug = parts.slice(i).join('/');
break;
}
}
if (!slug) {
// Fallback: letzter Pfadteil
slug = parts.length ? parts[parts.length - 1] : 'index';
if (slug === '' || slug === 'gt') slug = 'index';
}
window.GT.getPage(slug).then(function(data) {
if (!data || !data.content) return;
// Nur ersetzen wenn API-Inhalt vorhanden
var cb = pc.querySelector('.content-block');
var target = cb || pc;
target.innerHTML = data.content;
// Seitenspezifische Initialisierung nach dem Ersetzen des HTML erneut ausführen
renderGuestbook();
bindGuestbookForm();
renderEventsPage();
target.classList.add('reveal');
setTimeout(function(){ target.classList.add('is-visible'); }, 50);
}).catch(function(){
// Kein API-Inhalt = HTML-Inhalt behalten (kein Fehler)
});
})();