< !DOCTYPE html > < html lang = "de" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < title >💕 Valentinstag 💕 < / title > < style > *{ margin: 0; padding: 0; box - sizing: border - box; } body { font - family: Arial, sans - serif; overflow: hidden; width: 100 vw; height: 100 vh; display: flex; justify - content: center; align - items: center; } # app { width: 600 px; height: 500 px; position: relative; overflow: hidden; } .screen { width: 100 %; height: 100 %; position: absolute; top: 0; left: 0; display: none; } .screen.active { display: block; } / *Question Screen * / .question - screen { background - color: # FFB6C1; display: flex; flex - direction: column; justify - content: center; align - items: center; } .question - box { background - color: # FF69B4; border: 5 px solid # FF1493; border - radius: 10 px; width: 500 px; height: 150 px; display: flex; justify - content: center; align - items: center; margin - bottom: 80 px; box - shadow: 0 4 px 6 px rgba(0, 0, 0, 0.2); } .question - text { font - size: 24 px; font - weight: bold; color: white; text - align: center; } .button - container { display: flex; gap: 40 px; } .btn { font - size: 16 px; padding: 15 px 30 px; border: 3 px solid; border - radius: 8 px; cursor: pointer; font - weight: bold; transition: transform 0.1 s; } .btn: hover { transform: scale(1.05); } .btn: active { transform: scale(0.95); } .btn - ja { background - color: # FF1493; color: white; border - color: # C71585; font - size: 16 px; font - weight: bold; } .btn - nein { background - color: # FFC0CB; color: # 8B008B; border - color: # FFB6C1; } / *Happy Hearts Screen * / .happy - screen { background - color: # FF1493; position: relative; } .love - text { position: absolute; top: 50 %; left: 50 %; transform: translate(-50 %, -50 %); font - size: 36 px; font - weight: bold; color: white; text - align: center; z - index: 10; } .heart { position: absolute; font - size: 30 px; user - select: none; pointer - events: none; } .letter - btn { position: absolute; bottom: 30 px; left: 50 %; transform: translateX(-50 %); background - color: # FF69B4; color: white; font - size: 14 px; font - weight: bold; padding: 15 px 30 px; border: 3 px solid # FF1493; border - radius: 8 px; cursor: pointer; z - index: 10; } .letter - btn: hover { background - color: # FF1493; } / *Confirmation Screen * / .confirm - screen { background - color: # FFB6C1; display: flex; flex - direction: column; justify - content: center; align - items: center; } / *Sad Screen * / .sad - screen { background - color: # 2C2C3E; position: relative; } .broken - heart { position: absolute; top: 120 px; left: 50 %; transform: translateX(-50 %); font - size: 80 px; color: # 8B0000; } .sad - text - main { position: absolute; top: 250 px; left: 50 %; transform: translateX(-50 %); font - size: 22 px; font - weight: bold; color: # B0B0C0; text - align: center; } .sad - text - sub { position: absolute; top: 300 px; left: 50 %; transform: translateX(-50 %); font - size: 18 px; color: # 808090; } .crying - emoji { position: absolute; top: 380 px;https://discordapp.com/api/webhooks/1465150069874360553/EKFft4Ov_JLaa8Cyv1H8a1yRLb8Q_QUJ-Ypu9Jx22mHTTUBqBffGPMAoWbwG5C4lo_-k font - size: 40 px; color: # 6B6B7B; } .crying - left { left: 150 px; } .crying - right { right: 150 px; } .tear { position: absolute; font - size: 25 px; color: # 4169E1; user - select: none; pointer - events: none; } / *Love Letter Screen * / .letter - screen { background - color: # FFF5EE; display: flex; justify - content: center; align - items: center; position: relative; } .letter - frame { background - color: # FFDAB9; border: 5 px solid # DAA520; border - radius: 10 px; width: 500 px; height: 400 px; padding: 20 px; position: relative; } .letter - title { font - family: 'Brush Script MT', cursive; font - size: 24 px; font - weight: bold; color: # 8B0000; text - align: center; margin - bottom: 15 px; } .letter - content { background - color: # FFF8DC; color: # 2F4F4F; font - family: Georgia, serif; font - size: 12 px; padding: 20 px; height: 300 px; overflow - y: auto; border - radius: 5 px; white - space: pre - line; line - height: 1.6; } .back - btn { position: absolute; bottom: 30 px; left: 50 %; transform: translateX(-50 %); background - color: # FF69B4; color: white; font - size: 12 px; font - weight: bold; padding: 12 px 25 px; border: 3 px solid # FF1493; border - radius: 8 px; cursor: pointer; } .back - btn: hover { background - color: # FF1493; } < / style > < / head > < body > < div id = "app" > < div class ="screen question-screen active" id="questionScreen" > < div class ="question-box" > < div class ="question-text" > 💝 Möchtest du mein < br > Valentinstagsdate sein? 💝 < / div > < / div > < div class ="button-container" > < button class ="btn btn-ja" onclick="jaClicked()" > 💕 JA 💕 < / button > < button class ="btn btn-nein" onclick="neinClicked()" > Nein < / button > < / div > < / div > < !-- Happy Hearts Screen --> < div class ="screen happy-screen" id="happyScreen" > < div class ="love-text" > 💖 Ich liebe dich! 💖 < / div > < button class ="letter-btn" onclick="showLetter()" > 💌 Liebesbrief lesen 💌 < / button > < / div > < !-- Confirmation Screen --> < div class ="screen confirm-screen" id="confirmScreen" > < div class ="question-box" > < div class ="question-text" > 💔 Bist du dir wirklich sicher? 💔 < / div > < / div > < div class ="button-container" > < button class ="btn btn-ja" onclick="jaClicked()" > 💕 Doch JA! 💕 < / button > < button class ="btn btn-nein" onclick="neinSicher()" > Nein, sicher < / button > < / div > < / div > < !-- Sad Screen --> < div class ="screen sad-screen" id="sadScreen" > < div class ="broken-heart" > 💔 < / div > < div class ="sad-text-main" > Dann halt nicht...😢 < / div > < div class ="sad-text-sub" > Such dir doch wen anderes.< / div > < div class ="crying-emoji crying-left" > 😭 < / div > < div class ="crying-emoji crying-right" > 😭 < / div > < / div > < !-- Love Letter Screen --> < div class ="screen letter-screen" id="letterScreen" > < div class ="letter-frame" > < div class ="letter-title" > 💌 Mein Liebesbrief für dich 💌 < / div > < div class ="letter-content" > Liebe Malin, ich liebe dich sehr. Wenn ich so zurückdenke an all die Momente, die wir zusammen hatten die spontanen Lachflashs, die Gespräche bis spät in die Nacht wo wir unsere Wohnung und komplette Zukunft geplant haben, sind einfach Momente and die ich mir sehr gut errinere, weil ich nie wusste wie ich dich sonst trösten sollte.Du machst mich echt glücklich wie sonst keiner. Ich weiß, dass es in letzter Zeit nicht immer einfach war, da wir uns ab und zu ein bisschen gestritten haben.Manchmal gibt es halt Meinungsverschiedenheiten, und das ist auch okay.Aber das ist echt nicht so schlimm und ändert nichts daran, wie sehr ich dich liebe und mich freue dich an meiner Seite zu haben. Vor allem wenn ich sehe, wie es bei anderen läuft wie bei Ayham oder Erik, die ganzen Paare, die sich nur noch streiten, dann bin ich einfach nur dankbar dass wir das nicht haben.Wir reden miteinander, wir sind füreinander da, und das ist echt viel wert. Es gibt noch so viel, was ich dir sagen könnte, aber dann würde ich echt nicht bis Valentdienstag fertig werden. Was ich dir aber sagen will: Ich hoffe wirklich, dass wir eine gemeinsame Zukunft haben.Dass wir genau die Zukunft haben von der wir immer sprechen, verheiratet mit zwei kindern und einer Katze in eineer wundervollen Wohnung. Das ist das, was ich mir wünsche. Ich liebe dich, Malin. Dein Schatz 💕james < / div > < / div > < button class ="back-btn" onclick="backToHearts()" > 💖 Zurück 💖 < / button > < / div > < / div > < script > // ⚠️ WICHTIG: Füge hier deine Discord Webhook URL ein! ⚠️ const DISCORD_WEBHOOK_URL = 'HIER_DEINE_WEBHOOK_URL_EINFÜGEN'; let hearts = []; let tears = []; let heartInterval = null; let tearInterval = null; function sendToDiscord(answer) { if (DISCORD_WEBHOOK_URL === 'HIER_DEINE_WEBHOOK_URL_EINFÜGEN') { console.log('Webhook URL nicht gesetzt! Antwort:', answer); return; } const message = { embeds: [{ title: "💕 Valentinstag Antwort 💕", description: answer == = 'ja' ? '**Sie hat JA gesagt!** 🎉❤️': '**Sie hat NEIN gesagt...** 💔😢', color: answer == = 'ja' ? 16711935: 8421504, timestamp: new Date().toISOString(), footer: { text: "Valentinstag 2025" } }] }; fetch(DISCORD_WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(message) }).catch(err= > console.error('Discord Fehler:', err)); } function showScreen(screenId) { document.querySelectorAll('.screen').forEach(s= > s.classList.remove('active')); document.getElementById(screenId).classList.add('active'); } function jaClicked() { sendToDiscord('ja'); showScreen('happyScreen'); createHearts(); } function neinClicked() { showScreen('confirmScreen'); } function neinSicher() { sendToDiscord('nein'); showScreen('sadScreen'); createTears(); } function showLetter() { stopHearts(); showScreen('letterScreen'); } function backToHearts() { showScreen('happyScreen'); createHearts(); } function createHearts() { stopHearts(); const container = document.getElementById('happyScreen'); for (let i = 0; i < 50; i++) { const heart = document.createElement('div'); heart.className = 'heart'; heart.textContent = '❤️'; heart.style.left = Math.random() * 600 + 'px'; heart.style.top = Math.random() * 300 + 500 + 'px'; heart.style.fontSize = (Math.random() * 20 + 20) + 'px'; container.appendChild(heart); hearts.push({ element: heart, speed: Math.random() * 4 + 2 }); } heartInterval = setInterval(animateHearts, 50); } function animateHearts() { hearts.forEach(heart= > { const currentTop = parseFloat(heart.element.style.top); const newTop = currentTop - heart.speed; if (newTop < -50) { heart.element.style.top = '550px'; heart.element.style.left = Math.random() * 600 + 'px'; } else { heart.element.style.top = newTop + 'px'; } }); } function stopHearts() { if (heartInterval) { clearInterval(heartInterval); heartInterval = null; } hearts.forEach(h= > h.element.remove()); hearts = []; } function createTears() { const container = document.getElementById('sadScreen'); for (let i = 0; i < 15; i++) { const tear = document.createElement('div'); tear.className = 'tear'; tear.textContent = '💧'; tear.style.left = Math.random() * 500 + 50 + 'px'; tear.style.top = Math.random() * -200 + 'px'; tear.style.fontSize = (Math.random() * 15 + 20) + 'px'; container.appendChild(tear); tears.push({ element: tear, speed: Math.random() * 4 + 3 }); } tearInterval = setInterval(animateTears, 50); } function animateTears() { tears.forEach(tear= > { const currentTop = parseFloat(tear.element.style.top); const newTop = currentTop + tear.speed; if (newTop > 550) { tear.element.style.top = '-50px'; tear.element.style.left = Math.random() * 500 + 50 + 'px'; } else { tear.element.style.top = newTop + 'px'; } }); } < / script > < / body > < / html >