Masjid Gratis: Aplikasi Jam Digital

/* jadwal sholat grid */ .prayer-times margin-top: 28px; display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 12px; background: rgba(0, 0, 0, 0.5); border-radius: 48px; padding: 18px 12px;

// Update jam digital & tgl & cek azan function updateClockAndDate() const now = new Date(); // jam const jam = now.getHours().toString().padStart(2,'0'); const menit = now.getMinutes().toString().padStart(2,'0'); const detik = now.getSeconds().toString().padStart(2,'0'); jamElement.innerText = `$jam:$menit:$detik`; // tanggal Masehi const options = weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' ; tanggalElement.innerText = now.toLocaleDateString('id-ID', options); // cek azan setiap detik checkAzanSchedule(now); // update highlight tiap menit mungkin atau tiap detik juga gpp renderPrayerTimes(now);

// Data jadwal sholat let prayerSchedule = Imsak: "04:30", Subuh: "04:45", Dzuhur: "12:00", Ashar: "15:20", Maghrib: "18:00", Isya: "19:15" ; // fallback sementara aplikasi jam digital masjid gratis

<div class="azan-status" id="azanStatusArea"> <span class="alert-badge">๐Ÿ”Š Status Azan: </span> <span id="azanMessage" class="alert-badge">Menunggu waktu salat</span> </div> <div style="display: flex; justify-content: center; gap: 15px;"> <button id="testAzanBtn">๐Ÿ”” Uji Coba Azan (Demo)</button> <button id="resetAzanBtn">๐Ÿ”‡ Hentikan Suara</button> </div> <div class="footer-note"> โฐ Waktu salat berdasarkan kota Jakarta (otomatis deteksi lokasi atau default) โ€ข Azan berupa notifikasi suara & visual </div> </div> </div>

.prayer-card background: linear-gradient(135deg, #1f3b35, #102622); border-radius: 32px; text-align: center; padding: 12px 5px; transition: all 0.2s ease; border: 1px solid #2f8b72; box-shadow: 0 4px 6px #00000030; /* jadwal sholat grid */

/* status azan & alarm */ .azan-status margin: 20px 12px 8px; text-align: center; background: #00000070; border-radius: 60px; padding: 10px; font-size: 1rem; font-weight: bold; display: flex; justify-content: center; gap: 15px; flex-wrap: wrap;

/* area jam digital LED */ .jam-led background: #0a0f0e; border-radius: 48px; padding: 25px 15px; text-align: center; box-shadow: inset 0 0 12px #00b89433, 0 10px 20px rgba(0,0,0,0.3); border: 1px solid #2e7d64; padding: 18px 12px

.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;

function useOfflineSchedule() // Jadwal offline standar masjid umum (kota Jakarta rata2) prayerSchedule = Subuh: "04:45", Dzuhur: "12:05", Ashar: "15:25", Maghrib: "18:02", Isya: "19:18" ; // Hijriah offline sederhana (coba generate dari tanggal masehi) const today = new Date(); hijriElement.innerText = `๐Ÿ“… Estimasi Hijriah ยท $today.toLocaleDateString()`; document.getElementById('lokasiMasjid').innerHTML = `๐Ÿ•Œ Masjid (Mode Offline)`; renderPrayerTimes(new Date());

// stop suara function stopAzanSound() if (currentAudio) currentAudio.close().catch(e=>console.log); currentAudio = null; azanMsgSpan.innerText = "โน๏ธ Suara dihentikan"; setTimeout(() => if (azanMsgSpan.innerText === "โน๏ธ Suara dihentikan") // refresh nanti update otomatis , 1500);