<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>SI – DAS GEDICHT DER ERDE</title> </head> <body> <main class="poem-container">

HERZLOSE TRÄNEN</h<>

herzlos bin ich schenke es dir mein Herz
schlägt zusammen mit
deinem in dir – erspürt
wie einsam du bist
weil es sind deine Tränen
die ich weine, meine Tränen
können es nicht sein; wie
kann ich weinen - verlassen und leer - bin ich mein Herz los
</main>
<script> const b1 = document.getElementById('block-1'); const b2 = document.getElementById('block-2'); const b3 = document.getElementById('block-3'); const b4 = document.getElementById('block-4'); const b5 = document.getElementById('block-5'); const BLOCKS = [b1,b2,b3,b4,b5]; function wait(ms) { return new Promise(r => setTimeout(r, ms)); } function op(el, val, dur) { el.style.transition = `opacity ${dur||2}s ease-in-out`; el.style.opacity = val; } // ── Flaggen ── const FLAGS = [ { label:'DE', bg:'linear-gradient(180deg,#222 33%,#CC0000 33%,#CC0000 66%,#FFCE00 66%)' }, { label:'ES', bg:'linear-gradient(180deg,#AA151B 25%,#F1BF00 25%,#F1BF00 75%,#AA151B 75%)' }, { label:'EN', bg:'#003087' }, { label:'FR', bg:'linear-gradient(90deg,#002395 33%,#EEE 33%,#EEE 66%,#ED2939 66%)' }, { label:'IT', bg:'linear-gradient(90deg,#009246 33%,#EEE 33%,#EEE 66%,#CE2B37 66%)' }, { label:'PT', bg:'linear-gradient(90deg,#006600 38%,#EE0000 38%)' }, { label:'RU', bg:'linear-gradient(180deg,#EEE 33%,#003580 33%,#003580 66%,#DC143C 66%)' }, { label:'AR', bg:'#006C35' }, { label:'ZH', bg:'#DE2910' }, { label:'JA', bg:'#f5f5f5' }, { label:'UA', bg:'linear-gradient(180deg,#005BBB 50%,#FFD500 50%)' }, { label:'NL', bg:'linear-gradient(180deg,#AE1C28 33%,#EEE 33%,#EEE 66%,#21468B 66%)' }, { label:'PL', bg:'linear-gradient(180deg,#EEE 50%,#DC143C 50%)' }, { label:'TR', bg:'#E30A17' }, ]; // Fahnen-Elemente aufbauen const fz = document.getElementById('flagZone'); FLAGS.forEach(f => { const el = document.createElement('div'); el.className = 'ff'; el.style.background = f.bg; el.title = f.label; fz.appendChild(el); }); const fEls = Array.from(fz.querySelectorAll('.ff')); // Zufällig n Fahnen einblenden, nach dur ms ausblenden async function flashFlags(n, dur, markGreen) { fEls.forEach(f => { f.classList.remove('ein','aktiv'); }); const chosen = [...fEls].sort(() => Math.random()-0.5).slice(0,n); chosen.forEach((f,i) => { setTimeout(() => f.classList.add('ein'), i*80); if (markGreen) setTimeout(() => f.classList.add('aktiv'), i*80+200); }); await wait(dur); chosen.forEach(f => { f.classList.remove('ein','aktiv'); }); } // Dauerhafter sanfter Loop: alle paar Sekunden 2–4 Fahnen function startFlagLoop() { async function loop() { await wait(1500 + Math.random()*3000); await flashFlags(2 + Math.floor(Math.random()*3), 1000 + Math.random()*800); loop(); } loop(); } // Alle Fahnen gleichzeitig einblenden (für Klimax) async function allFlagsOn(dur) { fEls.forEach((f,i) => setTimeout(() => f.classList.add('ein','aktiv'), i*40)); await wait(dur); fEls.forEach(f => f.classList.remove('ein','aktiv')); } // ── HAUPTSEQUENZ ── async function runSequence() { document.getElementById('startBtn').disabled = true; document.getElementById('navLabel').classList.add('ein'); // Flaggen-Loop startet parallel startFlagLoop(); // ── Phase 1: Ankommen (33%) ── op(b3,'0.33'); await wait(3000); op(b3,'0'); await wait(2000); op(b2,'0.33'); await wait(3000); op(b2,'0'); await wait(2000); op(b4,'0.33'); await wait(2000); op(b1,'0.33'); await wait(3000); // ── Phase 2: Verdichtung (66%) ── op(b3,'0.66'); await wait(2500); op(b2,'0.66'); await wait(2000); // Flaggen-Aufleuchten zwischen den Verdichtungen await flashFlags(4, 1200); op(b4,'0.66'); await wait(2000); op(b1,'0.66'); await wait(3000); // ── Phase 3: Klimax — alle Fahnen + 100% ── allFlagsOn(2500); // läuft parallel await wait(400); for (const b of [b3,b1,b2,b4]) { b.style.transition = 'opacity 2.5s ease-in-out, color 2.5s ease, text-shadow 2.5s ease'; b.style.opacity = '1'; b.classList.add('voll'); await wait(1800); } // Alle vollständig geladen — kurze Pause await wait(2000); // ── Phase 4: Endlosschleife ── loopForever(); } // ── SCHLEIFE: pulsiert zwischen 40% und 100%, Fahnen blitzen zwischendurch ── async function loopForever() { while (true) { // Abdunkeln auf 40% BLOCKS.forEach(b => { b.style.transition = 'opacity 4s ease-in-out'; b.style.opacity = '0.4'; b.classList.remove('voll'); }); await wait(5000); // Fahnen-Flash während Abdunkelung await flashFlags(3+Math.floor(Math.random()*4), 1400); await wait(1500); // Wieder aufhellen — zufällige Reihenfolge, einer nach dem anderen const order = [...BLOCKS].sort(() => Math.random()-0.5); for (const b of order) { b.style.transition = 'opacity 2.5s ease-in-out, color 2.5s ease, text-shadow 2.5s ease'; b.style.opacity = '1'; b.classList.add('voll'); await wait(1200 + Math.random()*600); } await wait(2500); // Gelegentlich: alle Fahnen kurz auf einmal if (Math.random() > 0.5) { await allFlagsOn(1800); await wait(1000); } } } </script> </body> </html>