Aplikasi Jam Digital Masjid Gratis «95% LATEST»

.alert-badge background: #2e2420; color: #fbc490; padding: 5px 16px; border-radius: 28px;

.time-digits font-family: 'Courier New', 'Fira Mono', 'JetBrains Mono', monospace; font-size: 5rem; font-weight: bold; letter-spacing: 8px; color: #2ef7c4; text-shadow: 0 0 5px #00ffc3, 0 0 15px #00a37a; background: #010b09; display: inline-block; padding: 0.2rem 1rem; border-radius: 2rem; margin-bottom: 12px; aplikasi jam digital masjid gratis

.date-info font-size: 1.6rem; font-weight: 500; color: #f3e5ab; background: #1a2f2b80; display: inline-block; padding: 6px 20px; border-radius: 40px; backdrop-filter: blur(2px); margin-top: 8px; .alert-badge background: #2e2420

// Trigger azan (visual + suara) function triggerAzan(prayerName) if (!prayerName) return; azanMsgSpan.innerHTML = `🕌 WAKTU $prayerName.toUpperCase() · AZAN BERKUMANDANG 🕌`; azanMsgSpan.classList.add('azan-active'); playAzanSound(); // visual berkedip 8 detik lalu normal (tapi tetap pesan) setTimeout(() => if (azanMsgSpan.classList.contains('azan-active')) azanMsgSpan.classList.remove('azan-active'); azanMsgSpan.innerHTML = `✅ Azan $prayerName telah dikumandangkan`; setTimeout(() => if(azanMsgSpan.innerText.includes("telah dikumandangkan")) updateAzanMessageDefault(); , 4000); , 8000); padding: 5px 16px

// cek jadwal setiap detik, jika waktu saat ini sesuai dengan salah satu waktu sholat (menit ke-0 sampai ke-1) function checkAzanSchedule(now) const hours = now.getHours().toString().padStart(2,'0'); const minutes = now.getMinutes().toString().padStart(2,'0'); const currentHM = `$hours:$minutes`; for (let p of prayerNamesOrder) let waktu = prayerSchedule[p]; if (waktu && waktu === currentHM) if (lastAzanTriggerHourMin !== currentHM) lastAzanTriggerHourMin = currentHM; triggerAzan(p); return true; // reset flag ketika menit berubah & tidak ada kecocokan if (lastAzanTriggerHourMin !== currentHM) // tidak reset khusus, biarkan saja return false;