/** * DAILY HOROSCOPE GENERATOR * Generates unique, context-rich daily horoscopes per zodiac per day */ const LOVE_ADVICE = [ 'Hari ini cocok untuk mengungkapkan perasaan. Jangan ragu!', 'Bersikaplah terbuka dengan pasangan. Komunikasi adalah kunci.', 'Jangan terburu-buru dalam masalah cinta. Biarkan semuanya mengalir.', 'Cinta akan datang dari arah yang tidak kamu duga.', 'Hari yang baik untuk kencan romantis. Buatlah kejutan!', 'Jika ada masalah dengan pasangan, bicarakan baik-baik.', 'Seseorang diam-diam memperhatikanmu. Buka matamu!', 'Cinta sejati membutuhkan kesabaran. Jangan menyerah.', 'Hari ini hubunganmu akan semakin mesra. Nikmati momennya.', 'Jangan terlalu posesif. Beri pasanganmu ruang.' ]; const CAREER_ADVICE = [ 'Peluang besar datang dari rekan kerja lama. Jaga hubungan baik.', 'Kreativitasmu akan bersinar hari ini. Manfaatkan!', 'Jangan takut mengambil risiko dalam karir. Hitung dulu matang-matang.', 'Atasanmu akan memperhatikan kerja kerasmu. Tunjukkan yang terbaik!', 'Pertemuan penting akan terjadi. Persiapkan dirimu.', 'Ini saat yang tepat untuk memulai proyek baru.', 'Kerja tim akan membawa hasil yang memuaskan.', 'Jangan menunda pekerjaan penting. Selesaikan hari ini.', 'Ide-idemu akan dihargai. Jangan ragu untuk berbagi.', 'Kesabaran dalam bekerja akan membuahkan hasil manis.' ]; const HEALTH_ADVICE = [ 'Jaga pola makan. Hindari makanan terlalu pedas.', 'Luangkan waktu untuk olahraga ringan. Jalan kaki 15 menit.', 'Stres bisa naik hari ini. Cobalah meditasi singkat.', 'Tidur cukup sangat penting. Matikan HP 1 jam sebelum tidur.', 'Minum air putih minimal 8 gelas hari ini.', 'Coba yoga atau peregangan untuk relaksasi.', 'Kurangi kafein. Minum teh herbal lebih baik.', 'Jaga kesehatan mata. Istirahatkan dari layar.', 'Makanan fermentasi baik untuk pencernaanmu.', 'Udara segar akan menyegarkan pikiranmu.' ]; const FORTUNE_NUMBERS = [ [3, 7, 12, 21, 33], [5, 8, 15, 22, 28], [1, 9, 17, 25, 34], [4, 11, 19, 27, 36], [2, 6, 14, 23, 31], [8, 13, 20, 29, 35], [7, 10, 18, 26, 30], [3, 9, 16, 24, 32], [6, 12, 19, 28, 34], [5, 10, 17, 23, 29], [4, 8, 15, 26, 33], [2, 11, 20, 27, 35] ]; const MOODS = [ ['Semangat membara 🔥', 'Penuh energi, hari yang produktif'], ['Tenang dan damai 🌊', 'Hari yang tepat untuk refleksi'], ['Ceria dan bahagia ☀️', 'Energi positif mengelilingimu'], ['Fokus tajam 🎯', 'Konsentrasi tinggi, selesaikan target'], ['Lembut dan bijak 🌙', 'Intuisi kuat, percayalah pada hatimu'], ['Bersemangat 🚀', 'Aksi hari ini akan membawa perubahan'], ['Santai tapi waspada 🧘', 'Tetap tenang dalam menghadapi apapun'] ]; function getDailyHoroscope(zodiacId, date) { const zIndex = ZODIAC.findIndex(z => z.id === zodiacId); if (zIndex === -1) return null; const d = date || new Date(); const seed = d.getFullYear() * 10000 + (d.getMonth() + 1) * 100 + d.getDate() + zIndex * 37; // Simple deterministic random const seededRandom = (s) => { const x = Math.sin(s * 9301 + 49297) * 49297; return x - Math.floor(x); }; const r = (arr, seedOffset = 0) => { const idx = Math.floor(seededRandom(seed + seedOffset + zIndex) * arr.length); return arr[idx]; }; const zodiac = ZODIAC[zIndex]; const element = zodiac.element; const mood = r(MOODS); const love = r(LOVE_ADVICE); const career = r(CAREER_ADVICE, 100); const health = r(HEALTH_ADVICE, 200); const numbers = FORTUNE_NUMBERS[zIndex]; const luckScore = Math.floor(seededRandom(seed + zIndex * 13) * 40) + 60; // 60-99 const overallTemplates = { 'Api': [ 'Energimu membara hari ini! Gunakan semangat ini untuk menyelesaikan proyek yang tertunda.', 'Kobaran semangatmu akan menginspirasi orang di sekitarmu. Jadilah pemimpin!', 'Keberanianmu akan diuji. Hadapi dengan kepala tegak!' ], 'Tanah': [ 'Hari yang stabil dan produktif. Kerja kerasmu akan terbayar.', 'Kesabaran adalah kunci hari ini. Hasilnya akan memuaskan.', 'Fokus pada hal-hal mendasar. Jangan tergoda hal yang tidak perlu.' ], 'Udara': [ 'Pikiranmu tajam dan jernih. Hari yang tepat untuk membuat keputusan penting.', 'Komunikasi adalah kunci hari ini. Bicaralah dengan bijak.', 'Ide-idemu akan mengalir deras. Catat semuanya!' ], 'Air': [ 'Intuisimu kuat hari ini. Percayalah pada firasatmu.', 'Perasaanmu peka. Gunakan empati untuk memahami orang lain.', 'Alirkan emosimu dengan positif. Jangan biarkan perasaan negatif menguasai.' ] }; const overall = r(overallTemplates[element] || overallTemplates['Tanah'], zIndex * 7); return { zodiac: zodiac.idn, date: d.toLocaleDateString('id-ID', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }), element: element, mood: mood, luckScore: luckScore, overall: overall, love: love, career: career, health: health, numbers: numbers, luckyColor: ['Merah', 'Emas', 'Hijau', 'Biru', 'Ungu', 'Putih', 'Hitam'][zIndex % 7], luckyTime: `${7 + (zIndex % 10)}:00 - ${9 + (zIndex % 10)}:00` }; } function getAllDailyHoroscopes(date) { return ZODIAC.map(z => ({ ...getDailyHoroscope(z.id, date), id: z.id, englishName: z.en })); }