<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2619536654761151932</id><updated>2026-04-29T05:00:00.120+05:30</updated><category term="Hadees"/><category term="Quran"/><category term="April"/><category term="March"/><category term="February"/><category term="Qur&#39;aan"/><category term="Ilm and Dhikr"/><category term="IslamicKnowledge"/><category term="Morning Zikr"/><category term="zikr"/><category term="Tirmizi"/><category term="Bukhari"/><category term="Qur&#39;an"/><category term="Ilm"/><category term="Imaan"/><category term="Abu Dawud"/><category term="Rabb"/><category term="azaab"/><category term="insaan"/><category term="rahem"/><category term="shaitaan"/><category term="Aasmaan"/><category term="Al-Baqarah"/><category term="Bayaan"/><category term="Ghaafil"/><category term="Iman"/><category term="Islam"/><category term="Kharch"/><category term="Namaaz"/><category term="Nek"/><category term="dozakh"/><category term="kaafir"/><category term="maaf"/><category term="muhabbat"/><category term="namaz"/><category term="rizq"/><category term="subah"/><category term="Al Nisa"/><category term="Al-&#39;Ankabut"/><category term="Al-Mu&#39;min"/><category term="Amal"/><category term="An-Nahl"/><category term="An-Naml"/><category term="An-Nisa"/><category term="At-Tauba"/><category term="Aurton"/><category term="Azmat"/><category term="Baagaat"/><category term="Dawud"/><category term="Deen"/><category term="Farz"/><category term="Fatir"/><category term="Hud"/><category term="Ibne Maaja"/><category term="Ibne Maajah"/><category term="Jannat"/><category term="Jhoot"/><category term="Khoon"/><category term="Mard"/><category term="Mohabbat"/><category term="Momineen"/><category term="Naseehat"/><category term="Nisai"/><category term="Nishaaniyaan"/><category term="Qayaamat"/><category term="Rozi"/><category term="Shaam"/><category term="Shoaib &#39;alaihissalam"/><category term="Sulaiman"/><category term="Sura-e-Aaraaf"/><category term="Sura-e-Ankaboot"/><category term="Sura-e-Bani Israail"/><category term="Sura-e-Nisa"/><category term="Suwar"/><category term="Tirimizi"/><category term="Yaad"/><category term="bakhsh"/><category term="bakhshish"/><category term="bande"/><category term="be-hayaai"/><category term="behayayi"/><category term="bhai"/><category term="bharosa"/><category term="burayee"/><category term="darte"/><category term="dua"/><category term="duniya"/><category term="dushmani"/><category term="ehkaam"/><category term="ehsanat"/><category term="fasaad"/><category term="fazal"/><category term="fazeelat"/><category term="fazilat"/><category term="fazl-o-karam"/><category term="ghafil"/><category term="ghamgeen"/><category term="ghosht"/><category term="ghussa"/><category term="ghusse"/><category term="gumraahi"/><category term="gunah"/><category term="hikmat"/><category term="insaaf"/><category term="isteghfaar"/><category term="istighfaar"/><category term="jaanne waale"/><category term="khajoor"/><category term="khazane"/><category term="khushnoodi"/><category term="kitaab"/><category term="kufr"/><category term="libaas"/><category term="maherbaan"/><category term="mardon"/><category term="mazboot"/><category term="meharbaan"/><category term="miqdar"/><category term="misaalein"/><category term="mu&#39;af"/><category term="musallat"/><category term="musalmaan"/><category term="naam"/><category term="nadaani"/><category term="nafarmani"/><category term="paak"/><category term="paakeezah"/><category term="paida"/><category term="rehmat"/><category term="saath"/><category term="sadaabahaar"/><category term="sarkashi"/><category term="saza"/><category term="shaan"/><category term="surat"/><category term="tahajjud"/><category term="tangi"/><category term="tareeqa"/><category term="tasbeeh"/><category term="tasbih"/><category term="touba"/><category term="waqt"/><category term="wiraasat"/><category term="wus&#39;at"/><category term="zaat"/><category term="zameen"/><category term="zindagi"/><title type='text'>Islamic Messages in Urdu-English Transliteration</title><subtitle type='html'>&lt;a href=&quot;https://www.youtube.com/c/dailyislamicmessages&quot;&gt;Daily Islamic Messages Youtube Channel&lt;/a&gt; | &lt;a href=&quot;https://www.youtube.com/Bayanats&quot;&gt;Bayanat YouTube Channel&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default?start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>173</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-1957591390090445674</id><published>2026-04-29T05:00:00.009+05:30</published><updated>2026-04-29T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>29 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/1957591390090445674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/29-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1957591390090445674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1957591390090445674'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/29-april-morning-zikr-2026.html' title='29 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-11579947613739160</id><published>2026-04-29T05:00:00.006+05:30</published><updated>2026-04-29T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hud"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><category scheme="http://www.blogger.com/atom/ns#" term="Shoaib &#39;alaihissalam"/><title type='text'>April - 29 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hazrat Shoaib &#39;alaihissalam ne apni qaum se farmaaya (Tarjama): (Aur main jis tarha in baaton ki tum ko taleem karta hoon, khud bhi to is par amal karta hoon) aur main ye nahi chahta ke jis kaam se tumhein mana karoon mein khud use karoon. (Hud 11: 88)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Main%20ye%20nahi%20chahta%20ke%20jis%20kaam%20se%20tumhein%20mana%20karoon%20mein%20khud%20use%20karoon&amp;amp;body=Hazrat%20Shoaib%20&#39;alaihissalam%20ne%20apni%20qaum%20se%20farmaaya%20(Tarjama):%20(Aur%20main%20jis%20tarha%20in%20baaton%20ki%20tum%20ko%20taleem%20karta%20hoon,%20khud%20bhi%20to%20is%20par%20amal%20karta%20hoon)%20aur%20main%20ye%20nahi%20chahta%20ke%20jis%20kaam%20se%20tumhein%20mana%20karoon%20mein%20khud%20use%20karoon.%20(Hud%2011:%2088)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Main ye nahi chahta ke jis kaam se tumhein mana karoon mein khud use karoon in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hazrat%20Shoaib%20%27alaihissalam%20ne%20apni%20qaum%20se%20farmaaya%20(Tarjama):%20(Aur%20main%20jis%20tarha%20in%20baaton%20ki%20tum%20ko%20taleem%20karta%20hoon,%20khud%20bhi%20to%20is%20par%20amal%20karta%20hoon)%20aur%20main%20ye%20nahi%20chahta%20ke%20jis%20kaam%20se%20tumhein%20mana%20karoon%20mein%20khud%20use%20karoon.%20(Hud%2011:%2088)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hazrat%20Shoaib%20&#39;alaihissalam%20ne%20apni%20qaum%20se%20farmaaya%20(Tarjama):%20(Aur%20main%20jis%20tarha%20in%20baaton%20ki%20tum%20ko%20taleem%20karta%20hoon,%20khud%20bhi%20to%20is%20par%20amal%20karta%20hoon)%20aur%20main%20ye%20nahi%20chahta%20ke%20jis%20kaam%20se%20tumhein%20mana%20karoon%20mein%20khud%20use%20karoon.%20(Hud%2011:%2088)%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/11579947613739160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/main-ye-nahi-chahta-ke-jis-kaam-se.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/11579947613739160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/11579947613739160'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/main-ye-nahi-chahta-ke-jis-kaam-se.html' title='April - 29 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-3586237731747368914</id><published>2026-04-29T05:00:00.004+05:30</published><updated>2026-04-29T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>29 APRIL (Hadees) - Qayaamat Ke Din Poore Poore Noor Ki Khush Khabri</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Buraidah Raziyallahu &#39;anhu se riwaayat hai ke Nabi-e-Kareem ﷺ ne irshaad farmaaya: Jo log andheron mein bakasrat masjidon ko jaate rehte hain unko Qayaamat ke din poore poore Noor ki khush khabri suna dijiye. (Abu Dawud: 561)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Buraidah%20Raziyallahu%20%27anhu%20se%20riwaayat%20hai%20ke%20Nabi-e-Kareem%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Jo%20log%20andheron%20mein%20bakasrat%20masjidon%20ko%20jaate%20rehte%20hain%20unko%20Qayaamat%20ke%20din%20poore%20poore%20Noor%20ki%20khush%20khabri%20suna%20dijiye.%20(Abu%20Dawud:%20561)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20*Download%20Qur%27an%20and%20Hadith%20Android%20App*%20-%20Goo.gl/ggEr5O&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Buraidah%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Nabi-e-Kareem%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Jo%20log%20andheron%20mein%20bakasrat%20masjidon%20ko%20jaate%20rehte%20hain%20unko%20Qayaamat%20ke%20din%20poore%20poore%20Noor%20ki%20khush%20khabri%20suna%20dijiye.%20(Abu%20Dawud:%20561)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/dMhKpuQaHVE/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/dMhKpuQaHVE?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/dMhKpuQaHVE&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/3586237731747368914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3586237731747368914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3586237731747368914'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-29.html' title='29 APRIL (Hadees) - Qayaamat Ke Din Poore Poore Noor Ki Khush Khabri'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/dMhKpuQaHVE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-6477402829605510232</id><published>2026-04-28T05:00:00.009+05:30</published><updated>2026-04-28T05:00:00.116+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>28 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/6477402829605510232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/28-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6477402829605510232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6477402829605510232'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/28-april-morning-zikr-2026.html' title='28 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-7963471540203161663</id><published>2026-04-28T05:00:00.006+05:30</published><updated>2026-04-28T05:00:00.116+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Azmat"/><category scheme="http://www.blogger.com/atom/ns#" term="bande"/><category scheme="http://www.blogger.com/atom/ns#" term="darte"/><category scheme="http://www.blogger.com/atom/ns#" term="Fatir"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><title type='text'>April - 28 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Allah Ta&#39;ala ka irshaad hai (Tarjama): Beshak Allah Ta&#39;ala se unke wohi bande darte hain jo unki Azmat ka Ilm rakhte hain. (Fatir 35: 28)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Allah%20Ta&#39;ala%20se%20unke%20wohi%20bande%20darte%20hain%20jo%20unki%20Azmat%20ka%20Ilm%20rakhte%20hain&amp;amp;body=Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Beshak%20Allah%20Ta&#39;ala%20se%20unke%20wohi%20bande%20darte%20hain%20jo%20unki%20Azmat%20ka%20Ilm%20rakhte%20hain.%20(Fatir%2035:%2028)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Allah Ta&#39;ala se unke wohi bande darte hain jo unki Azmat ka Ilm rakhte hain in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta%27ala%20ka%20irshaad%20hai%20(Tarjama):%20Beshak%20Allah%20Ta%27ala%20se%20unke%20wohi%20bande%20darte%20hain%20jo%20unki%20Azmat%20ka%20Ilm%20rakhte%20hain.%20(Fatir%2035:%2028)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Beshak%20Allah%20Ta&#39;ala%20se%20unke%20wohi%20bande%20darte%20hain%20jo%20unki%20Azmat%20ka%20Ilm%20rakhte%20hain.%20(Fatir%2035:%2028)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/7963471540203161663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-se-unke-wohi-bande-darte.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7963471540203161663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7963471540203161663'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-se-unke-wohi-bande-darte.html' title='April - 28 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-4300329083260248686</id><published>2026-04-28T05:00:00.005+05:30</published><updated>2026-04-28T05:00:00.116+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>28 APRIL (Hadees) Azaan Aur Iqaamat Ke Darmiyani Waqt Mein Ki Dua Rad Nahi Hoti Yani Qubool Hoti Hai</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Anas Bin Malik Raziyallahu &#39;anhu se riwaayat hai ke Rasulullah ﷺ ne irshaad farmaaya: Azaan aur iqaamat ke darmiyani waqt mein ki dua rad nahi hoti yani qubool hoti hai. Sahaaba-e-Kiraam Raziyallahu &#39;anhum ne arz kiya: Ya Rasulullah! Hum kya dua maange? Aap ﷺ ne irshaad farmaaya: Allah Ta&#39;ala se duniya wa aakhirat ki aafiyat maanga karo. (Tirmizi: 3594)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Anas%20Bin%20Malik%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Azaan%20aur%20iqaamat%20ke%20darmiyani%20waqt%20mein%20ki%20dua%20rad%20nahi%20hoti%20yani%20qubool%20hoti%20hai.%20Sahaaba-e-Kiraam%20Raziyallahu%20&#39;anhum%20ne%20arz%20kiya:%20Ya%20Rasulullah!%20Hum%20kya%20dua%20maange?%20Aap%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Allah%20Ta&#39;ala%20se%20duniya%20wa%20aakhirat%20ki%20aafiyat%20maanga%20karo.%20(Tirmizi:%203594)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/K5eAVnjOgEw/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/K5eAVnjOgEw?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/K5eAVnjOgEw&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/4300329083260248686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-28.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4300329083260248686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4300329083260248686'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-28.html' title='28 APRIL (Hadees) Azaan Aur Iqaamat Ke Darmiyani Waqt Mein Ki Dua Rad Nahi Hoti Yani Qubool Hoti Hai'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/K5eAVnjOgEw/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-978980323880213977</id><published>2026-04-27T05:00:00.007+05:30</published><updated>2026-04-27T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>27 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/978980323880213977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/27-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/978980323880213977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/978980323880213977'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/27-april-morning-zikr-2026.html' title='27 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-5083418106185892698</id><published>2026-04-27T05:00:00.005+05:30</published><updated>2026-04-27T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Al-&#39;Ankabut"/><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="misaalein"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><title type='text'>April - 27 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Allah Ta&#39;ala ka irshaad hai (Tarjama): Aur Hum ye misaalein logon ke liye bayaan karte hai, (lekin) inhe ilm waale hi samajhte hain. (Al-&#39;Ankabut 29: 43)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Hum%20ye%20misaalein%20logon%20ke%20liye%20bayaan%20karte%20hai&amp;amp;body=Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Hum%20ye%20misaalein%20logon%20ke%20liye%20bayaan%20karte%20hai,%20(lekin)%20inhe%20ilm%20waale%20hi%20samajhte%20hain.%20(Al-&#39;Ankabut%2029:%2043)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Hum ye misaalein logon ke liye bayaan karte hai in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta%27ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Hum%20ye%20misaalein%20logon%20ke%20liye%20bayaan%20karte%20hai,%20(lekin)%20inhe%20ilm%20waale%20hi%20samajhte%20hain.%20(Al-%27Ankabut%2029:%2043)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Hum%20ye%20misaalein%20logon%20ke%20liye%20bayaan%20karte%20hai,%20(lekin)%20inhe%20ilm%20waale%20hi%20samajhte%20hain.%20(Al-&#39;Ankabut%2029:%2043)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/5083418106185892698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/hum-ye-misaalein-logon-ke-liye-bayaan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5083418106185892698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5083418106185892698'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/hum-ye-misaalein-logon-ke-liye-bayaan.html' title='April - 27 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-5867016454395570238</id><published>2026-04-27T05:00:00.004+05:30</published><updated>2026-04-27T05:00:00.118+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>27 APRIL (Hadees) - Ya Rasulullah! Azaan Kehne Waale Ham Se Ajar Wo Sawaab Mein Badhehue Hain</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Abdullah Bin Umar Raziyallahu &#39;anhuma farmaate hain ke ek shakhs ne arz kiya: Ya Rasulullah! azaan kehne waale ham se Ajar wo swab mein badhehue hai (Kya koi aisa amal hai ke humein bhi azaan dene wali fazilat miljaaye ?) Rasulullah ﷺ ne irshaad farmaaya: Wohi kalimaat kaha karo jo mu&#39;azzin kehte hain phir jab tum azaan ka jawaab de chuke to dua maango (jo maangoge) wo diya jayega. (Abu Dawud: 524)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a apple-style-span=&quot;&quot; href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Abdullah%20Bin%20Umar%20Raziyallahu%20&#39;anhuma%20farmaate%20hain%20ke%20ek%20shakhs%20ne%20arz%20kiya:%20Ya%20Rasulullah!%20azaan%20kehne%20waale%20ham%20se%20Ajar%20wo%20swab%20mein%20badhehue%20hai%20(Kya%20koi%20aisa%20amal%20hai%20ke%20humein%20bhi%20azaan%20dene%20wali%20fazilat%20miljaaye%20?)%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Wohi%20kalimaat%20kaha%20karo%20jo%20mu&#39;azzin%20kehte%20hain%20phir%20jab%20tum%20azaan%20ka%20jawaab%20de%20chuka%20to%20dua%20maango%20(jo%20maangoge)%20wo%20diya%20jayega.%20(Abu%20Dawud:%20524)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/mgPgYF6ouv0/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/mgPgYF6ouv0?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/mgPgYF6ouv0&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/5867016454395570238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-27.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5867016454395570238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5867016454395570238'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-27.html' title='27 APRIL (Hadees) - Ya Rasulullah! Azaan Kehne Waale Ham Se Ajar Wo Sawaab Mein Badhehue Hain'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/mgPgYF6ouv0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-2366561197157948734</id><published>2026-04-26T05:00:00.007+05:30</published><updated>2026-04-26T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>26 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/2366561197157948734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/26-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2366561197157948734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2366561197157948734'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/26-april-morning-zikr-2026.html' title='26 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-2247452095271948923</id><published>2026-04-26T05:00:00.005+05:30</published><updated>2026-04-26T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Dawud"/><category scheme="http://www.blogger.com/atom/ns#" term="fazilat"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm"/><category scheme="http://www.blogger.com/atom/ns#" term="Imaan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><category scheme="http://www.blogger.com/atom/ns#" term="Sulaiman"/><title type='text'>April - 26 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Allah Ta&#39;ala ka irshaad hai (Tarjama): Aur bilashubah humne Dawud aur Sulaiman ko ilm ataa farmaaya aur us par un dono Nabiyon ne kaha ke sab tareefein us Allah Ta&#39;ala ke liye hain jinho ne hamein apne bahut se Imaan waale bandon par fazilat di. (An-Nam 27: 15)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Bilashubah%20humne%20Dawud%20aur%20Sulaiman%20ko%20ilm%20ataa%20farmaaya&amp;amp;body=Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20bilashubah%20humne%20Dawud%20aur%20Sulaiman%20ko%20ilm%20ataa%20farmaaya%20aur%20us%20par%20un%20dono%20Nabiyon%20ne%20kaha%20ke%20sab%20tareefein%20us%20Allah%20Ta&#39;ala%20ke%20liye%20hain%20jinho%20ne%20hamein%20apne%20bahut%20se%20Imaan%20waale%20bandon%20par%20fazilat%20di.%20(An-Nam%2027:%2015)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Bilashubah humne Dawud aur Sulaiman ko ilm ataa farmaaya in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta%27ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20bilashubah%20humne%20Dawud%20aur%20Sulaiman%20ko%20ilm%20ataa%20farmaaya%20aur%20us%20par%20un%20dono%20Nabiyon%20ne%20kaha%20ke%20sab%20tareefein%20us%20Allah%20Ta%27ala%20ke%20liye%20hain%20jinho%20ne%20hamein%20apne%20bahut%20se%20Imaan%20waale%20bandon%20par%20fazilat%20di.%20(An-Nam%2027:%2015)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20bilashubah%20humne%20Dawud%20aur%20Sulaiman%20ko%20ilm%20ataa%20farmaaya%20aur%20us%20par%20un%20dono%20Nabiyon%20ne%20kaha%20ke%20sab%20tareefein%20us%20Allah%20Ta&#39;ala%20ke%20liye%20hain%20jinho%20ne%20hamein%20apne%20bahut%20se%20Imaan%20waale%20bandon%20par%20fazilat%20di.%20(An-Nam%2027:%2015)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/2247452095271948923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/bilashubah-humne-dawud-aur-sulaiman-ko.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2247452095271948923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2247452095271948923'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/bilashubah-humne-dawud-aur-sulaiman-ko.html' title='April - 26 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-9073036387956270356</id><published>2026-04-26T05:00:00.004+05:30</published><updated>2026-04-26T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>26 APRIL (Hadees) - Achchha Khuwaab Allah Ta&#39;ala Ki Taraf Se Hai</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Abu Qatadah Raziyallahu &#39;anhu riwaayat karte hain ke maine Nabi Kareem ﷺ ko irshaad farmaate hue suna: Achchha Khuwaab Allah Ta&#39;ala ki taraf se hai aur bura khuwaab (jis mein ghabrahat ho) shaitan ki taraf se hai. Jab tum mein se koi khuwaab mein napasandida cheez dekhe to jis waqt uthe (apni bayein taraf) teen martaba thuthkaare aur us khuwaab ki burai se Allah Ta&#39;ala ki panah maange to woh khuwaab us shakhs ko nuqsaan na pahunchayega. (Bukhari: 5747)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Abu%20Qatadah%20Raziyallahu%20&#39;anhu%20riwaayat%20karte%20hain%20ke%20maine%20Nabi%20Kareem%20%EF%B7%BA%20ko%20irshaad%20farmaate%20hue%20suna:%20Achchha%20Khuwaab%20Allah%20Ta&#39;ala%20ki%20taraf%20se%20hai%20aur%20bura%20khuwaab%20(jis%20mein%20ghabrahat%20ho)%20shaitan%20ki%20taraf%20se%20hai.%20Jab%20tum%20mein%20se%20koi%20khuwaab%20mein%20napasandida%20cheez%20dekhe%20to%20jis%20waqt%20uthe%20(apni%20bayein%20taraf)%20teen%20martaba%20thuthkaare%20aur%20us%20khuwaab%20ki%20burai%20se%20Allah%20Ta&#39;ala%20ki%20panah%20maange%20to%20woh%20khuwaab%20us%20shakhs%20ko%20nuqsaan%20na%20pahunchayega.%20(Bukhari:%205747)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/qR0hhrEXhx4/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/qR0hhrEXhx4?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/qR0hhrEXhx4&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/9073036387956270356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/9073036387956270356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/9073036387956270356'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-26.html' title='26 APRIL (Hadees) - Achchha Khuwaab Allah Ta&#39;ala Ki Taraf Se Hai'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/qR0hhrEXhx4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-1641194044683501650</id><published>2026-04-25T05:00:00.006+05:30</published><updated>2026-04-25T05:00:00.114+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>25 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/1641194044683501650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/25-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1641194044683501650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1641194044683501650'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/25-april-morning-zikr-2026.html' title='25 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-363041729430960572</id><published>2026-04-25T05:00:00.004+05:30</published><updated>2026-04-25T05:00:00.114+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="dua"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><category scheme="http://www.blogger.com/atom/ns#" term="Rabb"/><title type='text'>April - 25 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Rasool Allah (Sallallahu-&#39;Alaihi-Wa-Sallam) se khitaab hai (Tarjama): Aur Aap ye dua kijiye ke Aye mere Rabb mera Ilm bada dijiye. (Ta Ha 20: 1 14)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Aap%20ye%20dua%20kijiye%20ke%20Aye%20mere%20Rabb%20mera%20Ilm%20bada%20dijiye&amp;amp;body=Rasool%20Allah%20(Sallallahu-&#39;Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Aur%20Aap%20ye%20dua%20kijiye%20ke%20Aye%20mere%20Rabb%20mera%20Ilm%20bada%20dijiye.%20(Ta%20Ha%2020:%201%2014)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Aap ye dua kijiye ke Aye mere Rabb mera Ilm bada dijiye in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Rasool%20Allah%20(Sallallahu-%27Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Aur%20Aap%20ye%20dua%20kijiye%20ke%20Aye%20mere%20Rabb%20mera%20Ilm%20bada%20dijiye.%20(Ta%20Ha%2020:%201%2014)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Rasool%20Allah%20(Sallallahu-&#39;Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Aur%20Aap%20ye%20dua%20kijiye%20ke%20Aye%20mere%20Rabb%20mera%20Ilm%20bada%20dijiye.%20(Ta%20Ha%2020:%201%2014)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/363041729430960572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/aap-ye-dua-kijiye-ke-aye-mere-rabb-mera.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/363041729430960572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/363041729430960572'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/aap-ye-dua-kijiye-ke-aye-mere-rabb-mera.html' title='April - 25 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-4232721048780226959</id><published>2026-04-25T05:00:00.003+05:30</published><updated>2026-04-25T05:00:00.114+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>25 APRIL (Hadees) - Jo Musalmaan Bhi Raat Ko Bawazu Zikr Karte Hue Sota Hai</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Mu&#39;az bin jabal Raziyallahu &#39;anhu se riwaayat hai ke Nabi Kareem ﷺ ne irshaad farmaaya: Jo Musalmaan bhi raat ko bawazu zikr karte hue sota hai phir jab kisi waqt raat mein uski aankh khulti hai aur wo Allah Ta&#39;ala se duniya wa aakhirat ki kisi bhi khair ka sawaal karta hai Allah Ta&#39;ala use wo cheez zaroor ataa farmaate hain. (Abu Dawud: 5042)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20*Hadees:%20Hazrat%20Mu&#39;az%20bin%20jabal%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Nabi%20Kareem%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Jo%20Musalmaan%20bhi%20raat%20ko%20bawazu%20zikr%20karte%20hue%20sota%20hai%20phir%20jab%20kisi%20waqt%20raat%20mein%20uski%20aankh%20khulti%20hai%20aur%20wo%20Allah%20Ta&#39;ala%20se%20duniya%20wa%20aakhirat%20ki%20kisi%20bhi%20khair%20ka%20sawaal%20karta%20hai%20Allah%20Ta&#39;ala%20use%20wo%20cheez%20zaroor%20ataa%20farmaate%20hain.%20(Abu%20Dawud:%205042)*%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/zPX4PRWlAAI/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/zPX4PRWlAAI?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/zPX4PRWlAAI&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/4232721048780226959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4232721048780226959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4232721048780226959'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-25.html' title='25 APRIL (Hadees) - Jo Musalmaan Bhi Raat Ko Bawazu Zikr Karte Hue Sota Hai'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/zPX4PRWlAAI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-8643667976828335320</id><published>2026-04-24T05:00:00.008+05:30</published><updated>2026-04-24T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>24 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/8643667976828335320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/24-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/8643667976828335320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/8643667976828335320'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/24-april-morning-zikr-2026.html' title='24 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-3206233937900507627</id><published>2026-04-24T05:00:00.006+05:30</published><updated>2026-04-24T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="An-Nisa"/><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="fazal"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm"/><category scheme="http://www.blogger.com/atom/ns#" term="kitaab"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><title type='text'>April - 24 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Rasool Allah (Sallallahu-&#39;Alaihi-Wa-Sallam) se khitaab hai (Tarjama): Allah Ta&#39;ala ne aap par kitaab aur ilm ki baatein nazil farmayi aur aap ko woh baatein sikhai jo aap na jaante the aur aap par Allah Ta&#39;ala ka bada fazal hai. (An-Nisa 4: 113)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Allah%20Ta&#39;ala%20ne%20aap%20par%20kitaab%20aur%20ilm%20ki%20baatein%20nazil%20farmayi&amp;amp;body=Rasool%20Allah%20(Sallallahu-&#39;Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Allah%20Ta&#39;ala%20ne%20aap%20par%20kitaab%20aur%20ilm%20ki%20baatein%20nazil%20farmayi%20aur%20aap%20ko%20woh%20baatein%20sikhai%20jo%20aap%20na%20jaante%20the%20aur%20aap%20par%20Allah%20Ta&#39;ala%20ka%20bada%20fazal%20hai.%20(An-Nisa%204:%20113)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Allah Ta&#39;ala ne aap par kitaab aur ilm ki baatein nazil farmayi in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Rasool%20Allah%20(Sallallahu-%27Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Allah%20Ta%27ala%20ne%20aap%20par%20kitaab%20aur%20ilm%20ki%20baatein%20nazil%20farmayi%20aur%20aap%20ko%20woh%20baatein%20sikhai%20jo%20aap%20na%20jaante%20the%20aur%20aap%20par%20Allah%20Ta%27ala%20ka%20bada%20fazal%20hai.%20(An-Nisa%204:%20113)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Rasool%20Allah%20(Sallallahu-&#39;Alaihi-Wa-Sallam)%20se%20khitaab%20hai%20(Tarjama):%20Allah%20Ta&#39;ala%20ne%20aap%20par%20kitaab%20aur%20ilm%20ki%20baatein%20nazil%20farmayi%20aur%20aap%20ko%20woh%20baatein%20sikhai%20jo%20aap%20na%20jaante%20the%20aur%20aap%20par%20Allah%20Ta&#39;ala%20ka%20bada%20fazal%20hai.%20(An-Nisa%204:%20113)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/3206233937900507627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-ne-aap-par-kitaab-aur-ilm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3206233937900507627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3206233937900507627'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-ne-aap-par-kitaab-aur-ilm.html' title='April - 24 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-3833128364018634393</id><published>2026-04-24T05:00:00.004+05:30</published><updated>2026-04-24T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>24 APRIL (Hadees) - Teen Duaain Khaas Taur Par Qubool Ki Jaati Hain</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Abu Hurairah Raziyallahu &#39;anhu se riwaayat hai ke Rasulullah ﷺ ne irshaad farmaaya: Teen duaain khaas taur par qubool ki jaati hain jin ke qubool hone mein koi shak nahi (aulaad ke haq mein) baap ki dua, musaafir ki dua aur mazloom ki dua. (Abu Dawud: 1536)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Abu%20Hurairah%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Teen%20duaain%20khaas%20taur%20par%20qubool%20ki%20jaati%20hain%20jin%20ke%20qubool%20hone%20mein%20koi%20shak%20nahi%20(aulaad%20ke%20haq%20mein)%20baap%20ki%20dua,%20musaafir%20ki%20dua%20aur%20mazloom%20ki%20dua.%20(Abu%20Dawud:%201536)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/Iw9hBHORt3U/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/Iw9hBHORt3U?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/Iw9hBHORt3U&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/3833128364018634393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-24.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3833128364018634393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3833128364018634393'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-24.html' title='24 APRIL (Hadees) - Teen Duaain Khaas Taur Par Qubool Ki Jaati Hain'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Iw9hBHORt3U/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-8450822255103579239</id><published>2026-04-23T05:00:00.006+05:30</published><updated>2026-04-23T05:00:00.115+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>23 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/8450822255103579239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/23-april-morning-zikr-2026_2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/8450822255103579239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/8450822255103579239'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/23-april-morning-zikr-2026_2.html' title='23 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-6020814562240584722</id><published>2026-04-23T05:00:00.004+05:30</published><updated>2026-04-23T05:00:00.115+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="At-Tauba"/><category scheme="http://www.blogger.com/atom/ns#" term="paak"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><title type='text'>April - 23 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Allah Ta&#39;ala ka irshaad hai (Tarjama): Aur Allah Ta&#39;ala khoob paak rehne waalon ko pasand farmate hain. (At-Tauba 9: 108)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Allah%20Ta&#39;ala%20khoob%20paak%20rehne%20waalon%20ko%20pasand%20farmate%20hain&amp;amp;body=Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Allah%20Ta&#39;ala%20khoob%20paak%20rehne%20waalon%20ko%20pasand%20farmate%20hain.%20(At-Tauba%209:%20108)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Allah Ta&#39;ala khoob paak rehne waalon ko pasand farmate hain in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta%27ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Allah%20Ta%27ala%20khoob%20paak%20rehne%20waalon%20ko%20pasand%20farmate%20hain.%20(At-Tauba%209:%20108)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Aur%20Allah%20Ta&#39;ala%20khoob%20paak%20rehne%20waalon%20ko%20pasand%20farmate%20hain.%20(At-Tauba%209:%20108)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/6020814562240584722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-khoob-paak-rehne-waalon-ko.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6020814562240584722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6020814562240584722'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/allah-taala-khoob-paak-rehne-waalon-ko.html' title='April - 23 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-3025289349568914781</id><published>2026-04-23T05:00:00.003+05:30</published><updated>2026-04-23T05:00:00.115+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>23 APRIL (Hadees) - Rasulullah ﷺ Hadiya Qubool Farmaate The</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat &#39;Aishah Raziyallahu &#39;anha farmaati hain ke Rasulullah ﷺ hadiya qubool farmaate the aur iske jawaab mein khwaah usi waqt ya dusre waqt khud bhi ataa farmaate the. (Bukhari: 2585)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20&#39;Aishah%20Raziyallahu%20&#39;anha%20farmaati%20hain%20ke%20Rasulullah%20%EF%B7%BA%20hadiya%20qubool%20farmaate%20the%20aur%20iske%20jawaab%20mein%20khwaah%20usi%20waqt%20ya%20dusre%20waqt%20khud%20bhi%20ataa%20farmaate%20the.%20(Bukhari:%202585)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/urY3nQw9dOI/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/urY3nQw9dOI?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/urY3nQw9dOI&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/3025289349568914781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-23.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3025289349568914781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3025289349568914781'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-23.html' title='23 APRIL (Hadees) - Rasulullah ﷺ Hadiya Qubool Farmaate The'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/urY3nQw9dOI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-7491485722789672319</id><published>2026-04-22T05:00:00.006+05:30</published><updated>2026-04-22T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>22 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/7491485722789672319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/22-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7491485722789672319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7491485722789672319'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/22-april-morning-zikr-2026.html' title='22 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-6744669953765094848</id><published>2026-04-22T05:00:00.004+05:30</published><updated>2026-04-22T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="An-Naml"/><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="isteghfaar"/><category scheme="http://www.blogger.com/atom/ns#" term="Qur&#39;aan"/><category scheme="http://www.blogger.com/atom/ns#" term="Quran"/><category scheme="http://www.blogger.com/atom/ns#" term="rahem"/><title type='text'>April - 22 (Quran)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Allah Ta&#39;ala ka irshaad hai (Tarjama): Tum log Allah Ta&#39;ala se isteghfaar kyun nahi karte taake tum par rahem kiya jaye. (An-Naml: 46)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;mailto:?subject=Tum%20log%20Allah%20Ta&#39;ala%20se%20isteghfaar%20kyun%20nahi%20karte&amp;amp;body=Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Tum%20log%20Allah%20Ta&#39;ala%20se%20isteghfaar%20kyun%20nahi%20karte%20taake%20tum%20par%20rahem%20kiya%20jaye.%20(An-Naml:%2046)%0D%0A%0D%0A%F0%9F%93%B2%20Aur%20Messages%20keliye%20Daily%20Islamic%20Messages%20Android%20app%20download%20karlein%20islinkse%20play.google.com/store/apps/details?id=com.dism&quot; target=&quot;_blank&quot; title=&quot;Send Tum log Allah Ta&#39;ala se isteghfaar kyun nahi karte in an Email&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Email&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;https://telegram.me/share/url?url=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta%27ala%20ka%20irshaad%20hai%20(Tarjama):%20Tum%20log%20Allah%20Ta%27ala%20se%20isteghfaar%20kyun%20nahi%20karte%20taake%20tum%20par%20rahem%20kiya%20jaye.%20(An-Naml:%2046)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%93%B2%20Download%20Islamic%20Messages%20Android%20App%20-%20Goo.gl/mg4455&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;Telegram&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*%D8%A8%D9%90%D8%B3%D9%92%D9%85%D9%90%20%D9%B1%D9%84%D9%84%D9%87%D9%90%20%D9%B1%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%92%D9%85%D9%B0%D9%86%D9%90%20%D8%A7%D9%84%D8%B1%D9%8E%D9%91%D8%AD%D9%90%D9%8A%D9%92%D9%85%D9%90*%20%E2%96%AB%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Allah%20Ta&#39;ala%20ka%20irshaad%20hai%20(Tarjama):%20Tum%20log%20Allah%20Ta&#39;ala%20se%20isteghfaar%20kyun%20nahi%20karte%20taake%20tum%20par%20rahem%20kiya%20jaye.%20(An-Naml:%2046)%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/6744669953765094848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2017/04/tum-log-allah-taala-se-isteghfaar-kyun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6744669953765094848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6744669953765094848'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2017/04/tum-log-allah-taala-se-isteghfaar-kyun.html' title='April - 22 (Quran)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-2780152415362868689</id><published>2026-04-22T05:00:00.003+05:30</published><updated>2026-04-22T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="April"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><title type='text'>22 APRIL (Hadees) - Bhooke Ko Khaana Khilaao, Beemaar Ki Ayadat Karo</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;  &lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hadees&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;center&gt;&lt;b&gt;Hazrat Abu Musa Ashari Raziyallahu &#39;anhu se riwaayat hai ke Nabi Kareem ﷺ ne irshaad farmaaya: Bhooke ko khaana khilaao, beemaar ki ayadat karo aur (nahaq) qaidi ko rihayi dilaane ki koshish karo. (Bukhari: 5373)&lt;/b&gt;&lt;/center&gt;
&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: blue;&quot;&gt;Share on:&lt;/span&gt; &lt;a href=&quot;whatsapp://send?text=%F0%9F%8C%B7%20%20%E2%96%AB%20%20*Aaj%20Ki%20Hadees*%20%20%E2%96%AB%20%20%F0%9F%8C%B7%0D%0A%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%E3%80%B0%0D%0A%F0%9F%8D%81%20Hadees:%20Hazrat%20Abu%20Musa%20Ashari%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Nabi%20Kareem%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Bhooke%20ko%20khaana%20khilaao,%20beemaar%20ki%20ayadat%20karo%20aur%20(nahaq)%20qaidi%20ko%20rihayi%20dilaane%20ki%20koshish%20karo.%20(Bukhari:%205373)%0D%0A📲  Join:  Islam316.blogspot.com&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #38761d;&quot;&gt;WhatsApp&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;height: 270px; overflow: hidden; position: relative; width: 320px;&quot;&gt;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/IPZqv9uWkZQ/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; id=&quot;okplayer&quot; mozallowfullscreen=&quot;mozallowfullscreen&quot; name=&quot;okplayer&quot; scrolling=&quot;no&quot; seamless=&quot;seamless&quot; src=&quot;https://youtube.com/embed/IPZqv9uWkZQ?rel=0&quot; style=&quot;height: 270px; left: 0px; position: absolute; top: 0px; width: 320px;&quot; webkitallowfullscreen=&quot;webkitAllowFullScreen&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;

&lt;tr&gt;  &lt;td style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;

&lt;span style=&quot;color: #660000;&quot;&gt;Share Youtube Link on: &lt;/span&gt;&lt;a href=&quot;whatsapp://send?text=https://youtu.be/IPZqv9uWkZQ&quot;&gt;&lt;span style=&quot;color: #339966;&quot;&gt;&lt;u&gt;WhatsApp&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/2780152415362868689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/04/april-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2780152415362868689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2780152415362868689'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/04/april-22.html' title='22 APRIL (Hadees) - Bhooke Ko Khaana Khilaao, Beemaar Ki Ayadat Karo'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/IPZqv9uWkZQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-41675156343819705</id><published>2026-04-21T05:00:00.007+05:30</published><updated>2026-04-21T05:00:00.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="Ilm and Dhikr"/><category scheme="http://www.blogger.com/atom/ns#" term="IslamicKnowledge"/><category scheme="http://www.blogger.com/atom/ns#" term="Morning Zikr"/><category scheme="http://www.blogger.com/atom/ns#" term="zikr"/><title type='text'>21 April Morning Zikr 2026</title><content type='html'>&lt;div class=&quot;light-theme&quot; id=&quot;tasbihThemeWrapper&quot; style=&quot;min-height: 4vh; padding-bottom: 0px; transition: background 0.4s;&quot;&gt; 
&lt;div id=&quot;tasbihApp&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(226, 232, 240); box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 60px; color: #1e293b; font-family: system-ui, sans-serif; margin: 0px auto; max-width: 440px; overflow: hidden; padding: 6px; position: relative; transition: 0.4s;&quot;&gt;

  &lt;div id=&quot;goalSuccess&quot; style=&quot;animation: 2s ease 0s infinite normal none running pulseGlow; background: rgba(34, 197, 94, 0.1); display: none; inset: 0px; pointer-events: none; position: absolute; z-index: 10;&quot;&gt;&lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; justify-content: space-between; margin-bottom: 4px;&quot;&gt;
    &lt;div style=&quot;display: flex; flex-direction: column; gap: 4px;&quot;&gt;
      &lt;div style=&quot;color: #0f172a; font-size: 18px; font-weight: 700; letter-spacing: 0.5px;&quot;&gt;Dhikr Counter&lt;/div&gt;
      &lt;div style=&quot;align-items: center; display: flex; flex-wrap: wrap; gap: 6px;&quot;&gt;
        &lt;div id=&quot;userLevelBadge&quot; style=&quot;background: rgb(254, 243, 199); border-radius: 6px; border: 1px solid rgb(252, 211, 77); color: #b45309; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;Lvl 1: Beginner&lt;/div&gt;
        &lt;div id=&quot;streakBadge&quot; style=&quot;background: rgb(254, 226, 226); border-radius: 6px; border: 1px solid rgb(252, 165, 165); color: #ef4444; font-size: 11px; font-weight: 800; padding: 2px 8px;&quot;&gt;🔥 &lt;span id=&quot;streakCount&quot;&gt;0&lt;/span&gt; Days&lt;/div&gt;
        &lt;div id=&quot;goalBadge&quot; style=&quot;animation: 0.3s ease 0s 1 normal none running popUp; background: rgb(22, 163, 74); border-radius: 4px; color: white; display: none; font-size: 10px; font-weight: 800; padding: 2px 6px;&quot;&gt;🏆 GOAL MET&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;soundToggle&quot; onclick=&quot;toggleSound()&quot; style=&quot;cursor: pointer; font-size: 26px; opacity: 0.8; transition: 0.2s;&quot;&gt;🔊&lt;/div&gt;
  &lt;/div&gt;


&lt;div style=&quot;position: relative; width: 100%; max-width: 800px; height: 0; padding-bottom: 60%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;width:100%; max-width:640px; height:200px;&quot;&gt;&lt;/div&gt;

&lt;script&gt;
async function loadVideo() {
  const sheetURL = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=867132479&amp;single=true&amp;output=csv&quot;;

  const response = await fetch(sheetURL);
  const text = await response.text();

  // Get first cell (video ID)
  const videoId = text.split(&quot;,&quot;)[0].trim();

  // Inject YouTube player
  document.getElementById(&quot;player&quot;).innerHTML = `
    &lt;iframe 
      width=&quot;100%&quot; 
      height=&quot;100%&quot; 
      src=&quot;https://www.youtube.com/embed/${videoId}?autoplay=1&amp;mute=0&amp;rel=0&quot;
      frameborder=&quot;0&quot;
      allow=&quot;autoplay; encrypted-media&quot;
      allowfullscreen&gt;
    &lt;/iframe&gt;
  `;
}

loadVideo();
&lt;/script&gt;
&lt;/div&gt;
  

  &lt;div style=&quot;display: flex; gap: 4px; margin: 12px 0px; text-align: center;&quot;&gt;
    &lt;select id=&quot;dhikrSelect&quot; onchange=&quot;loadDhikr(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 4px; border: 1px solid rgb(203, 213, 225); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 4px; color: #1e293b; cursor: pointer; flex: 1 1 0%; font-size: 12px; outline: none; padding: 2px;&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;Astaghfirullah&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;SubhanAllah&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;Alhamdulillah&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;Allahu Akbar&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;La ilaha illallah&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&lt;/option&gt;
      &lt;option value=&quot;6&quot;&gt;La hawla wala quwwata illa billah&lt;/option&gt;
      &lt;option value=&quot;7&quot;&gt;Hasbunallah wa ni&#39;mal wakeel&lt;/option&gt;
      &lt;option value=&quot;8&quot;&gt;SubhanAllahi wa bihamdihi&lt;/option&gt;
      &lt;option value=&quot;9&quot;&gt;Allahumma salli ala Muhammad&lt;/option&gt;
      &lt;option value=&quot;10&quot;&gt;Rabbighfir li (My Lord, forgive me)&lt;/option&gt;
      &lt;option value=&quot;11&quot;&gt;Allahumma inni as&#39;alukal jannah&lt;/option&gt;
      &lt;option value=&quot;12&quot;&gt;A&#39;udhu billahi minash shaytanir rajeem&lt;/option&gt;
      &lt;option value=&quot;13&quot;&gt;Bismillahilladhi la yadurru...&lt;/option&gt;
      &lt;option value=&quot;14&quot;&gt;La ilaha illallah wahdahu la sharika lah...&lt;/option&gt;
      &lt;option value=&quot;15&quot;&gt;Allahumma antas salam...&lt;/option&gt;
    &lt;/select&gt;
    &lt;div style=&quot;width: 8px;&quot;&gt;
        &lt;input id=&quot;dailyGoalInput&quot; onchange=&quot;updateGoal(this.value)&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 6px; border: 1px solid rgb(203, 213, 225); color: #d97706; font-size: 12px; font-weight: bold; padding: 2px; text-align: center; width: 100%;&quot; type=&quot;number&quot; value=&quot;100&quot; /&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div id=&quot;dhikrText&quot; style=&quot;color: #0284c7; font-size: 22px; font-weight: 700; line-height: 1.35; margin: 16px 0px 8px; min-height: 20px; padding: 0px 10px; text-align: center;&quot;&gt;Astaghfirullah (I seek forgiveness from Allah)&lt;/div&gt;

  &lt;div id=&quot;fazailBox&quot; style=&quot;background: rgb(241, 245, 249); border-radius: 6px; border: 1px solid rgb(226, 232, 240); color: #64748b; font-size: 13px; line-height: 1; margin: 0px 0px 24px; min-height: 20px; padding: 4px; text-align: center;&quot;&gt;Loading virtue...&lt;/div&gt;

  &lt;div style=&quot;color: #94a3b8; font-size: 11px; margin-bottom: 1px; margin-top: -15px; text-align: center; font-weight: bold;&quot;&gt;Session: &lt;span id=&quot;sessionTimer&quot;&gt;00:00&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;counterZone&quot; onclick=&quot;increment()&quot; style=&quot;cursor: pointer; height: 300px; margin: 0px auto 32px; position: relative; user-select: none; width: 300px;&quot;&gt;
    &lt;svg style=&quot;height: 100%; inset: 0px; position: absolute; width: 100%;&quot; viewbox=&quot;0 0 140 140&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; r=&quot;54&quot; stroke-width=&quot;10&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; opacity=&quot;0.6&quot; r=&quot;64&quot; stroke-width=&quot;4&quot; stroke=&quot;#e2e8f0&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;prog&quot; r=&quot;54&quot; stroke-dasharray=&quot;339.29&quot; stroke-dashoffset=&quot;339.29&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;10&quot; stroke=&quot;#22c55e&quot; style=&quot;transition: stroke-dashoffset 0.3s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
      &lt;circle cx=&quot;70&quot; cy=&quot;70&quot; fill=&quot;none&quot; id=&quot;dailyProg&quot; r=&quot;64&quot; stroke-dasharray=&quot;402.12&quot; stroke-dashoffset=&quot;402.12&quot; stroke-linecap=&quot;round&quot; stroke-width=&quot;4&quot; stroke=&quot;#f59e0b&quot; style=&quot;transition: stroke-dashoffset 0.5s;&quot; transform=&quot;rotate(-90 70 70)&quot;&gt;
    &lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/circle&gt;&lt;/svg&gt;
    &lt;div id=&quot;countDisplay&quot; style=&quot;color: #0f172a; display: grid; font-family: &amp;quot;Courier New&amp;quot;, monospace; font-size: 90px; font-weight: bold; inset: 0px; letter-spacing: 4px; place-items: center; position: absolute;&quot;&gt;00&lt;/div&gt;
    &lt;div id=&quot;percent&quot; style=&quot;bottom: 35px; color: #16a34a; font-size: 20px; font-weight: 800; left: 50%; position: absolute; transform: translateX(-50%);&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;color: #f59e0b; font-size: 13px; font-weight: 700; margin-bottom: 20px; margin-top: -10px; text-align: center;&quot;&gt;Daily Goal: &lt;span id=&quot;dailyGoalText&quot;&gt;0 / 100&lt;/span&gt;&lt;/div&gt;

  &lt;div style=&quot;color: #475569; display: flex; flex-wrap: wrap; font-size: 15px; font-weight: 600; gap: 16px; justify-content: space-around; margin: 20px 0px 36px;&quot;&gt;
    &lt;div&gt;Round: &lt;b id=&quot;round&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Today: &lt;b id=&quot;thisRound&quot; style=&quot;color: #d97706;&quot;&gt;0 / 100&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;Total: &lt;b id=&quot;total&quot; style=&quot;color: #d97706;&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div style=&quot;align-items: center; display: flex; flex-direction: column; gap: 36px; margin: 36px 0px;&quot;&gt;
    &lt;button id=&quot;tapBtn&quot; onclick=&quot;increment()&quot; style=&quot;background: linear-gradient(145deg, rgb(34, 197, 94), rgb(21, 128, 61)); border-radius: 50%; border: none; box-shadow: rgba(34, 197, 94, 0.4) 0px 12px 30px; color: white; cursor: pointer; font-size: 24px; font-weight: 800; height: 100px; transition: 0.18s; width: 100px;&quot;&gt;+1 Dhikr&lt;/button&gt;

    &lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;&quot;&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;decrement()&quot; style=&quot;--color: #ef4444;&quot;&gt;-1&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;resetCount()&quot; style=&quot;--color: #f59e0b;&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;exportCounts()&quot; style=&quot;--color: #8b5cf6;&quot;&gt;Export&lt;/button&gt;
      &lt;button class=&quot;control-btn&quot; onclick=&quot;shareToWhatsApp()&quot; style=&quot;--color: #22c55e;&quot;&gt;WhatsApp&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 20px;
      background: #f9f9f9;
    }
    .form-container {
      max-width: 700px;
      margin: 40px auto;
      background: white;
      padding: 30px;
      border-radius: 12px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    }
    h1 {
      text-align: center;
      color: #333;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;div class=&quot;form-container&quot;&gt;
  &lt;!-- Paste your Google Forms embed code here --&gt;
    &lt;iframe src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot;
            width=&quot;100%&quot;
            height=&quot;552&quot;
            frameborder=&quot;0&quot;
            marginheight=&quot;0&quot;
            marginwidth=&quot;0&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&gt;
  &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div id=&quot;latestBox&quot; style=&quot;background:#fff; border-radius:16px; border:0px solid #f1f5f9; padding:0px; font-size:13px; box-shadow:0 0px 0px rgba(0,0,0,0.03);&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;fetchtotal&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
 &lt;div style=&quot;margin-top:0px; padding-top:0px; border-top:1px solid #e2e8f0; text-align:center;&quot;&gt;
  &lt;div style=&quot;font-size:16px; color:#334155; margin-bottom:12px; font-weight:700;&quot;&gt;📅 Latest Submissions&lt;/div&gt;
  &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;
          &lt;tbody id=&quot;latestSubmissionsList&quot;&gt;
            &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;Loading recent submissions...&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
      &lt;/table&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div style=&quot;border-top: 1px solid rgb(226, 232, 240); margin-top: 0px; padding-top: 0px; text-align: center;&quot;&gt;
    &lt;div style=&quot;color: #334155; font-size: 16px; font-weight: 700; margin-bottom: 12px;&quot;&gt;🏆 Top 100 Leaderboard&lt;/div&gt;
    &lt;div id=&quot;leaderboardBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 1px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 4px 12px; font-size: 13px; padding: 0px;&quot;&gt;
        &lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
            &lt;tbody id=&quot;leaderboardList&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;Loading rankings...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;div style=&quot;border-top: 1px solid #334155; margin-top: 20px; padding-top: 12px;&quot;&gt;
    &lt;!-- Title: Muted Cyan-Grey --&gt;
    &lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800; margin-bottom: 8px; text-align: center; text-transform: uppercase; letter-spacing: 0.12em;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!-- Progress Bar: Dark Track with Vibrant Glow --&gt;
    &lt;div style=&quot;background: #1e293b; border-radius: 10px; height: 6px; margin: 0 0 10px; overflow: hidden; border: 1px solid #334155;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, #fbbf24, #f59e0b); height: 100%; width: 0%; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- Summary Box: DEEP DARK BACKGROUND --&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: #0f172a; border-radius: 12px; border: 1px solid #1e293b; box-shadow: 0 4px 20px rgba(0,0,0,0.4); padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; gap: 5px; font-size: 11px;&quot;&gt;&lt;/div&gt;
      
      &lt;!-- Grand Total: GOLD ACCENT BOX (Dark Mode Style) --&gt;
      &lt;div style=&quot;background: rgba(251, 191, 36, 0.1); border-radius: 8px; border: 1px solid rgba(251, 191, 36, 0.2); color: #fbbf24; font-size: 13px; font-weight: 900; margin-top: 10px; padding: 8px; text-align: center; text-shadow: 0 0 5px rgba(251, 191, 36, 0.2);&quot;&gt;
        Grand Total: &lt;span id=&quot;grandTotal&quot; style=&quot;color: #fcd34d;&quot;&gt;0&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
  .control-btn { width: 75px; height: 75px; border-radius: 50%; background: var(--color); color: #fff !important; font-size: 13px; font-weight: 700; border: none; cursor: pointer; box-shadow: 0 4px 10px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; transition: 0.2s; }
  .control-btn:active { transform: scale(0.9); }
  #counterZone:active { transform: scale(0.98); }
  @keyframes pulseGlow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } }
  @keyframes popUp { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
&lt;/style&gt;

&lt;script&gt;
const levels = [
  { min: 0, title: &quot;Lvl 1: Beginner&quot;, next: 100 }, { min: 100, title: &quot;Lvl 2: Seeker&quot;, next: 500 },
  { min: 500, title: &quot;Lvl 3: Devoted&quot;, next: 1000 }, { min: 1000, title: &quot;Lvl 4: Persistent&quot;, next: 5000 },
  { min: 5000, title: &quot;Lvl 5: Zakir&quot;, next: 10000 }, { min: 10000, title: &quot;Lvl 6: Master&quot;, next: 50000 }
];

const dhikrData = [
  { 
    name: &quot;Astaghfirullah&quot;, 
    translation: &quot;I seek forgiveness from Allah&quot;, 
    romanUrdu: &quot;Main Allah se mafi mangta hoon&quot;, 
    fazail: &quot;Major Fazilat &amp; Benefits of Istighfar (especially 100 times regularly): 1) Forgiveness of sins — even if they are as numerous as the foam of the sea (minor sins especially wiped away with sincere istighfar). 2) Relief from anxiety, distress &amp; worries — it brings peace to the heart and removes sadness. 3) Opening doors of rizq (provision/sustenance) — Allah removes hardship and brings barakah in wealth &amp; ease. 4) Mercy &amp; blessings descend — affairs become easy, knowledge increases, and protection from calamities. 5) Heart purification — polishes the heart, strengthens iman, and increases closeness to Allah. 6) Acceptance of dua — removes barriers between you and Allah. 7) Path to Jannah — regular istighfar is a means of entering Paradise and repelling harm. &#39;Scholars emphasize that while the number 100 is Sunnah (and easy — you can say Astaghfirullah over 100 times in just 1 minute), the key is sincerity and presence of heart, not just rushing through the count.&#39;&quot; 
  },
  { 
    name: &quot;SubhanAllah&quot;, 
    translation: &quot;Glory be to Allah&quot;, 
    romanUrdu: &quot;Pak hai Allah&quot;, 
    fazail: &quot;Fills scale of good deeds on Judgment Day (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Alhamdulillah&quot;, 
    translation: &quot;Praise be to Allah&quot;, 
    romanUrdu: &quot;Tamam tareefein Allah ke liye hain&quot;, 
    fazail: &quot;Fills half the scale - best dhikr (Tirmidhi 3383)&quot; 
  },
  { 
    name: &quot;Allahu Akbar&quot;, 
    translation: &quot;Allah is the Greatest&quot;, 
    romanUrdu: &quot;Allah sab se bada hai&quot;, 
    fazail: &quot;Greater than everything - fills heavens and earth (Muslim 2137)&quot; 
  },
  { 
    name: &quot;La ilaha illallah&quot;, 
    translation: &quot;There is no god but Allah&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi&quot;, 
    fazail: &quot;Heaviest on scale, key to Paradise (Bukhari 6403)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi SubhanAllahil Azeem&quot;, 
    translation: &quot;Glory be to Allah and Praise, Glory be to Allah the Supreme&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath, Pak hai Allah azmat wala&quot;, 
    fazail: &quot;Light on tongue, heavy on scale (Bukhari 6682)&quot; 
  },
  { 
    name: &quot;La hawla wala quwwata illa billah&quot;, 
    translation: &quot;There is no power nor might except with Allah&quot;, 
    romanUrdu: &quot;Na gunaah se bachne ki taqat hai na neki karne ki quwwat magar Allah ki tawfeeq se&quot;, 
    fazail: &quot;Treasure from Paradise (Bukhari 4205)&quot; 
  },
  { 
    name: &quot;Hasbunallah wa ni&#39;mal wakeel&quot;, 
    translation: &quot;Sufficient for us is Allah, and He is the best Disposer of affairs&quot;, 
    romanUrdu: &quot;Hamein Allah kafi hai aur woh behtareen karsaz hai&quot;, 
    fazail: &quot;Protection saved Ibrahim (Bukhari 3370)&quot; 
  },
  { 
    name: &quot;SubhanAllahi wa bihamdihi&quot;, 
    translation: &quot;Glory be to Allah and Praise be to Him&quot;, 
    romanUrdu: &quot;Pak hai Allah apni tareef ke sath&quot;, 
    fazail: &quot;100 times forgives sins (Muslim 2691)&quot; 
  },
  { 
    name: &quot;Allahumma salli ala Muhammad&quot;, 
    translation: &quot;O Allah, send blessings upon Muhammad&quot;, 
    romanUrdu: &quot;Ay Allah, Muhammad (S.A.W) par darood o salam bhej&quot;, 
    fazail: &quot;10 blessings for each salawat (Muslim 408)&quot; 
  },
  { 
    name: &quot;Rabbighfir li&quot;, 
    translation: &quot;My Lord, forgive me&quot;, 
    romanUrdu: &quot;Ay mere Rub, mujhe maaf kar de&quot;, 
    fazail: &quot;Prophet said 70-100 times (Bukhari 6307)&quot; 
  },
  { 
    name: &quot;Allahumma inni as&#39;alukal jannah&quot;, 
    translation: &quot;O Allah, I ask You for Paradise&quot;, 
    romanUrdu: &quot;Ay Allah, main Tujh se Jannat ka suwal karta hoon&quot;, 
    fazail: &quot;Sincere dua grants Jannah (Tirmidhi 2572)&quot; 
  },
  { 
    name: &quot;A&#39;udhu billahi minash shaytanir rajeem&quot;, 
    translation: &quot;I seek refuge in Allah from Satan the outcast&quot;, 
    romanUrdu: &quot;Main Allah ki panah mangta hoon shaitan mardood se&quot;, 
    fazail: &quot;Protection from Shaytan (Bukhari 6115)&quot; 
  },
  { 
    name: &quot;Bismillahilladhi la yadurru ma’asmihi shay’un fil-ardi wa la fis-sama’i wa huwas-Sami’ul-‘Alim&quot;, 
    translation: &quot;In the name of Allah, with whose name nothing can cause harm in the earth nor in the heavens&quot;, 
    romanUrdu: &quot;Allah ke naam ke sath jis ke naam ki barkat se zameen aur aasman ki koi cheez nuqsan nahi pahuncha sakti&quot;, 
    fazail: &quot;Protection from harm (Abu Dawud 5088)&quot; 
  },
  { 
    name: &quot;La ilaha illallahu wahdahu la sharika lah, lahul-mulku wa lahul-hamdu, wa huwa &#39;ala kulli shay&#39;in qadir.&quot;, 
    translation: &quot;There is no god but Allah alone, He has no partner, His is the dominion and His is the praise&quot;, 
    romanUrdu: &quot;Allah ke siwa koi mabood nahi, woh akela hai uska koi shareek nahi, usi ki badshahi hai aur usi ke liye tareef hai&quot;, 
    fazail: &quot;100 times is a great reward (Bukhari 3293)&quot; 
  },
  { 
    name: &quot;Allahumma antas-salamu wa minkas-salamu, tabarakta ya dhal-jalali wal-ikram.&quot;, 
    translation: &quot;O Allah, You are Peace and from You comes peace. Blessed are You, O Possessor of Majesty and Honor&quot;, 
    romanUrdu: &quot;Ay Allah, Tu salamti wala hai aur Tujhi se salamti hai, barkat wala hai Tu ay azmat aur buzurgi wale&quot;, 
    fazail: &quot;Beautiful ending dua (Muslim 592)&quot; 
  }
];
  
let currentIdx = 0, soundEnabled = true, totalCount = 0, roundCount = 0, roundsCompleted = 0;
let startTime = Date.now();

const els = {
  dhikrText: document.getElementById(&quot;dhikrText&quot;), fazailBox: document.getElementById(&quot;fazailBox&quot;),
  countDisplay: document.getElementById(&quot;countDisplay&quot;), percent: document.getElementById(&quot;percent&quot;),
  round: document.getElementById(&quot;round&quot;), thisRound: document.getElementById(&quot;thisRound&quot;),
  total: document.getElementById(&quot;total&quot;), prog: document.getElementById(&quot;prog&quot;),
  dailyProg: document.getElementById(&quot;dailyProg&quot;), dailyGoalText: document.getElementById(&quot;dailyGoalText&quot;),
  goalInput: document.getElementById(&quot;dailyGoalInput&quot;), summaryList: document.getElementById(&quot;summaryList&quot;),
  grandTotal: document.getElementById(&quot;grandTotal&quot;), levelBadge: document.getElementById(&quot;userLevelBadge&quot;),
  levelBar: document.getElementById(&quot;levelProgressBar&quot;), goalSuccess: document.getElementById(&quot;goalSuccess&quot;),
  goalBadge: document.getElementById(&quot;goalBadge&quot;), leaderboardList: document.getElementById(&quot;leaderboardList&quot;),
  streakCount: document.getElementById(&quot;streakCount&quot;), sessionTimer: document.getElementById(&quot;sessionTimer&quot;)
};

function format(n) { return n.toString().padStart(3, &quot;0&quot;); }

function checkStreak() {
    const today = new Date().toDateString();
    const lastDate = localStorage.getItem(&#39;lastDhikrDate&#39;);
    let streak = parseInt(localStorage.getItem(&#39;userStreak&#39;) || &quot;0&quot;);
    if (lastDate &amp;&amp; lastDate !== today) {
        const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1);
        if (lastDate === yesterday.toDateString()) { streak++; } 
        else { streak = 0; }
    }
    els.streakCount.textContent = streak;
    localStorage.setItem(&#39;userStreak&#39;, streak);
}

setInterval(() =&gt; {
    let diff = Math.floor((Date.now() - startTime) / 1000);
    let m = Math.floor(diff / 60).toString().padStart(2, &#39;0&#39;);
    let s = (diff % 60).toString().padStart(2, &#39;0&#39;);
    els.sessionTimer.textContent = `${m}:${s}`;
}, 1000);
  
 async function fetchtotalList() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=2066860714&amp;single=true&amp;output=csv&quot;;

    try {
        const res = await fetch(url);
        if (!res.ok) throw new Error();
        
        const csv = await res.text();
        const rows = csv.trim().split(&#39;\n&#39;).filter(line =&gt; line.trim() !== &#39;&#39;);
        const totalCount = rows.length &gt; 1 ? (rows.length - 1) : 0;
        const finalValue = totalCount + &quot;00&quot;;

        document.getElementById(&quot;fetchtotal&quot;).innerHTML = `
            &lt;div style=&quot;
                background: #e0f2fe;
                color: #0369a1;
                padding: 10px 14px;
                border-radius: 12px;
                text-align: center;
                font-family: sans-serif;
                max-width: 150px;
                margin: 10px auto;
            &quot;&gt;
                &lt;div style=&quot;
                    font-size: 0.6rem; 
                    font-weight: 800; 
                    text-transform: uppercase; 
                    letter-spacing: 0.05em; 
                    color: #0ea5e9;
                    margin-bottom: 2px;
                &quot;&gt;
                    Total Zikr Done
                &lt;/div&gt;
                &lt;div style=&quot;font-size: 1.6rem; font-weight: 900; line-height: 1;&quot;&gt;
                    ${finalValue}
                &lt;/div&gt;
            &lt;/div&gt;
        `;

    } catch (e) {
        document.getElementById(&quot;fetchtotal&quot;).innerText = &quot;000&quot;;
    }
}


    async function fetchLatestSubmissions() {
    // Use this export format — more reliable in 2026 for public sheets
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=1441647287&amp;single=true&amp;output=csv&quot;;

    try {
        // Optional: show loading
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; text-align:center;&#39;&gt;Loading submissions...&lt;/td&gt;&lt;/tr&gt;&quot;;

        const res = await fetch(url);
        if (!res.ok) {
            throw new Error(`HTTP error! Status: ${res.status}`);
        }

        const csv = await res.text();

        // Split into lines, trim, filter empty, then split by comma (still fragile — see note below)
        const rows = csv.trim().split(&#39;\n&#39;)
            .filter(line =&gt; line.trim() !== &#39;&#39;)
            .map(line =&gt; line.split(&#39;,&#39;));

        // Skip header row (row 0)
        const dataRows = rows.slice(1);

        let html = &quot;&quot;;
        if (dataRows.length === 0) {
            html = &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#64748b; text-align:center;&#39;&gt;No submissions yet&lt;/td&gt;&lt;/tr&gt;&quot;;
        } else {
            dataRows.forEach((row, i) =&gt; {
                // Column B = index 1 = Name
                let name = (row[1] || &#39;Anon&#39;).trim();

                // Basic HTML escape to prevent XSS
                name = name
                    .replace(/&amp;/g, &#39;&amp;amp;&#39;)
                    .replace(/&lt;/g, &#39;&amp;lt;&#39;)
                    .replace(/&gt;/g, &#39;&amp;gt;&#39;)
                    .replace(/&quot;/g, &#39;&amp;quot;&#39;);

                html += `&lt;tr style=&quot;border-bottom: 1px solid #f1f5f9; height: 34px; background-color: ${i &lt; 3 ? &#39;#fffbeb&#39; : &#39;transparent&#39;};&quot;&gt;
    &lt;!-- Rank Number: Larger, more legible bubble --&gt;
    &lt;td style=&quot;padding: 6px 10px; width: 35px; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            display: inline-block; 
            width: 22px; 
            height: 22px; 
            line-height: 22px; 
            text-align: center; 
            border-radius: 6px; 
            font-size: 0.8rem; 
            font-weight: 900;
            background: ${i === 0 ? &#39;#fbbf24&#39; : i === 1 ? &#39;#94a3b8&#39; : i === 2 ? &#39;#b45309&#39; : &#39;#f1f5f9&#39;};
            color: ${i &lt; 3 ? &#39;#ffffff&#39; : &#39;#475569&#39;};
        &quot;&gt;
            ${i + 1}
        &lt;/div&gt;
    &lt;/td&gt;
    
    &lt;!-- Name: Prominent and clear --&gt;
    &lt;td style=&quot;padding: 6px 10px; text-align: left; vertical-align: middle;&quot;&gt;
        &lt;div style=&quot;
            font-size: 0.9rem; 
            font-weight: ${i &lt; 3 ? &#39;800&#39; : &#39;600&#39;}; 
            color: ${i === 0 ? &#39;#92400e&#39; : &#39;#0f172a&#39;}; 
            letter-spacing: -0.01em;
            line-height: 1.2;
        &quot;&gt;
            ${name}
        &lt;/div&gt;
    &lt;/td&gt;

    &lt;!-- Icon/Points: Scaled up for balance --&gt;
    &lt;td style=&quot;padding: 6px 12px; text-align: right; vertical-align: middle;&quot;&gt;
        &lt;span style=&quot;font-size: 0.8rem; font-weight: 700; color: ${i &lt; 3 ? &#39;#fbbf24&#39; : &#39;#cbd5e1&#39;};&quot;&gt;
            ${i &lt; 3 ? &#39;★&#39; : &#39;✦&#39;}
        &lt;/span&gt;
    &lt;/td&gt;
&lt;/tr&gt;




`;
            });
        }

        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = html;

    } catch (e) {
        console.error(&quot;Fetch error:&quot;, e);
        document.getElementById(&quot;latestSubmissionsList&quot;).innerHTML = 
            &quot;&lt;tr&gt;&lt;td colspan=&#39;2&#39; style=&#39;padding:12px; color:#ef4444; text-align:center;&#39;&gt;Error loading submissions (check if sheet is still published)&lt;/td&gt;&lt;/tr&gt;&quot;;
    }
}

   async function fetchLeaderboard() {
    const url = &quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vS03daWU5zAUkAiqw25mELsgoYKPl0A2Z3KOpeYtStOyBi-amwG44n0DR78Ztyc1Go3yO50_Fav4D9i/pub?gid=189690890&amp;single=true&amp;output=csv&quot;;
    try {
        const res = await fetch(url); 
        const csv = await res.text();
        const rows = csv.split(&#39;\n&#39;).map(r =&gt; r.split(&#39;,&#39;)).slice(1);
        
        const leaderboardData = rows
            .map(c =&gt; ({ name: (c[1] || &#39;Anon&#39;).trim(), total: parseInt(c[2]) || 0 }))
            .sort((a, b) =&gt; b.total - a.total)
            .slice(0, 100);

        if (leaderboardData.length === 0) throw new Error();

        // 1. Separate the Champion
        const [champion, ...runnersUp] = leaderboardData;

        // 2. Render Champion Card (Unique Style)
        const championHTML = `
      &lt;div style=&quot;margin-bottom: 15px;&quot;&gt;
    &lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 0; background: linear-gradient(135deg, #fef3c7 0%, #fcd34d 100%); border: 2px solid #fbbf24; border-radius: 12px; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); overflow: hidden;&quot;&gt;
        &lt;tr&gt;
            &lt;td style=&quot;padding: 12px 20px; width: 50px; text-align: center; font-size: 1.8rem; vertical-align: middle;&quot;&gt;👑&lt;/td&gt;
            &lt;td style=&quot;padding: 12px 10px; vertical-align: middle;&quot;&gt;
               &lt;div style=&quot;text-transform: uppercase; font-size: 0.5rem; font-weight: 900; color: #92400e; letter-spacing: 0.15em; line-height: 1;&quot;&gt;Current Champion&lt;/div&gt;

         &lt;div style=&quot;font-size: 0.9rem; font-weight: 800; color: #1e3a8a; margin: 0; line-height: 1.1;&quot;&gt;${champion.name}&lt;/div&gt;


            &lt;td style=&quot;padding: 12px 20px; text-align: right; vertical-align: middle;&quot;&gt;
             &lt;div style=&quot;font-size: 0.75rem; font-weight: 900; color: #16a34a; white-space: nowrap; line-height: 1;&quot;&gt;
    ${champion.total.toLocaleString()}00 &lt;span style=&quot;font-size: 0.6rem; font-weight: 700; opacity: 0.8;&quot;&gt;ZIKR&lt;/span&gt;
&lt;/div&gt;


            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/div&gt;
     `;

        // 3. Render the rest of the list
        const rowsHTML = runnersUp.map((u, i) =&gt; {
            const rank = i + 2; // Offset by 2 because we sliced the first one
            const medal = rank === 2 ? &quot;🥈&quot; : rank === 3 ? &quot;🥉&quot; : rank;
            return `
                &lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
   &lt;tbody&gt;
    &lt;tr style=&quot;border-bottom: 1px solid #f1f5f9;&quot;&gt;
        &lt;!-- Medal --&gt;
        &lt;td style=&quot;padding: 4px 8px; font-size: 0.7rem; font-weight: bold; color: #64748b; width: 10px; line-height: 1;&quot;&gt;
            ${medal}
        &lt;/td&gt;
        
        &lt;!-- Name --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: left; font-size: 0.75rem; font-weight: 500; line-height: 1;&quot;&gt;
            ${u.name}
        &lt;/td&gt;
        
        &lt;!-- Total --&gt;
        &lt;td style=&quot;padding: 4px 8px; text-align: right; font-size: 0.75rem; font-weight: 800; color: #16a34a; line-height: 1;&quot;&gt;
            ${u.total.toLocaleString()}00
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;


&lt;/table&gt;`;
        }).join(&#39;&#39;);

        // Inject both into your container
        els.leaderboardList.innerHTML = championHTML + `&lt;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;${rowsHTML}&lt;/table&gt;`;

    } catch (e) { 
        els.leaderboardList.innerHTML = &quot;&lt;div style=&#39;text-align:center; padding:20px; color:#ef4444;&#39;&gt;Unable to load rankings&lt;/div&gt;&quot;; 
    }
}
         

// Auto-refresh latest every 60 seconds
setInterval(fetchLatestSubmissions, 60000);
  
function loadCurrent() {
  const data = JSON.parse(localStorage.getItem(`zikrCount_${currentIdx}`) || &#39;{&quot;total&quot;:0}&#39;);
  totalCount = data.total; roundCount = totalCount % 100;
  roundsCompleted = Math.floor(totalCount / 100);
  els.goalInput.value = localStorage.getItem(&#39;dailyGoal&#39;) || 100;
  updateUI(); fetchLeaderboard(); fetchLatestSubmissions(); checkStreak();fetchtotalList();
}

function updateUI() {
  // Modified: Using full name from dhikrData
  els.dhikrText.textContent = dhikrData[currentIdx].name;
  els.fazailBox.textContent = dhikrData[currentIdx].fazail;
  els.countDisplay.textContent = format(roundCount);
  els.total.textContent = totalCount; els.round.textContent = roundsCompleted;
  els.thisRound.textContent = `${roundCount} / 100`;
  const p = (roundCount / 100) * 100;
  els.percent.textContent = Math.round(p) + &quot;%&quot;;
  els.prog.setAttribute(&quot;stroke-dashoffset&quot;, 339.29 - (p / 100) * 339.29);
  updateStats();
}

function updateStats() {
  let grand = 0; let html = &quot;&quot;;
  dhikrData.forEach((item, i) =&gt; {
    const cnt = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
    grand += cnt;
    // Modified: Removed split to show full name in summary list
    html += `&lt;div style=&quot;display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid #f1f5f9; gap:10px;&quot;&gt;&lt;span style=&quot;text-align:left;&quot;&gt;${item.name}&lt;/span&gt;&lt;b style=&quot;color:#16a34a; white-space:nowrap;&quot;&gt;${cnt}&lt;/b&gt;&lt;/div&gt;`;
  });
  els.summaryList.innerHTML = html;
  els.grandTotal.textContent = grand;
  
  let lvl = levels.slice().reverse().find(l =&gt; grand &gt;= l.min) || levels[0];
  els.levelBadge.textContent = lvl.title;
  els.levelBar.style.width = lvl.next ? Math.min(((grand - lvl.min)/(lvl.next - lvl.min)) * 100, 100) + &quot;%&quot; : &quot;100%&quot;;
  
  const goal = parseInt(els.goalInput.value) || 100;
  els.dailyGoalText.textContent = `${grand} / ${goal}`;
  const dailyP = Math.min((grand / goal) * 100, 100);
  els.dailyProg.setAttribute(&quot;stroke-dashoffset&quot;, 402.12 - (dailyP / 100) * 402.12);

  if (grand &gt;= goal) {
      els.goalSuccess.style.display = &quot;block&quot;; els.goalBadge.style.display = &quot;block&quot;;
      localStorage.setItem(&#39;lastDhikrDate&#39;, new Date().toDateString());
  } else { els.goalSuccess.style.display = &quot;none&quot;; els.goalBadge.style.display = &quot;none&quot;; }
}

function increment() { 
  totalCount++; 
  roundCount = totalCount % 100;
  
  // Update Daily Total
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0, date: new Date().toLocaleDateString() };
  dailyData.count++;
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));

  if (roundCount === 0) { roundsCompleted++; vibrate(300, 100, 300); }
  else { vibrate(40); }
  
  saveCurrent(); updateUI(); playSound(&quot;clickSound&quot;); 
}
function saveCurrent() {
  const today = new Date().toLocaleDateString(); // Get today&#39;s date string
  
  // Save total count (Existing)
  localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount }));

  // Save daily count (New)
  let dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || {};
  
  // If the date in storage isn&#39;t today, reset the daily total
  if (dailyData.date !== today) {
    dailyData = { date: today, count: 0 };
  }
  
  // We increment this in the increment() function below
  localStorage.setItem(&#39;dailyZikr&#39;, JSON.stringify(dailyData));
}


function playSound(id) { if(soundEnabled) { const s = document.getElementById(id); s.currentTime = 0; s.play().catch(()=&gt;{}); } }
function decrement() { if(totalCount &gt; 0) { totalCount--; roundCount = totalCount % 100; roundsCompleted = Math.floor(totalCount / 100); saveCurrent(); updateUI(); playSound(&quot;decrementSound&quot;); vibrate(20); } }
function saveCurrent() { localStorage.setItem(`zikrCount_${currentIdx}`, JSON.stringify({ total: totalCount })); }
function resetCount() { if (confirm(`Reset counts for this Dhikr?`)) { totalCount = roundCount = roundsCompleted = 0; saveCurrent(); updateUI(); } }
function loadDhikr(i) { currentIdx = parseInt(i); loadCurrent(); }
function toggleSound() { soundEnabled = !soundEnabled; document.getElementById(&quot;soundToggle&quot;).textContent = soundEnabled ? &quot;🔊&quot; : &quot;🔇&quot;; }
function vibrate(...pattern) { if (typeof navigator !== &quot;undefined&quot; &amp;&amp; navigator.vibrate) navigator.vibrate(pattern); }
function updateGoal(v) { localStorage.setItem(&#39;dailyGoal&#39;, v); updateUI(); }
function shareToWhatsApp() {
  const dailyData = JSON.parse(localStorage.getItem(&#39;dailyZikr&#39;)) || { count: 0 };
  const zikrToday = dailyData.count;
  const dhikrName = dhikrData[currentIdx].name;
  const streak = document.getElementById(&quot;streakCount&quot;).textContent;

  // 1. Build your text message exactly as you want it to appear
  const message = `*My Dhikr Journey Today*
_Join me in earning rewards!_

*Current Status:*
*My Streak:* ${streak} Days
*Dhikr:* ${dhikrName}
*Total:* ${totalCount}
- - - - - - - - - - - - - - - - - - - - - - -
*All Zikr Done Today:* ${zikrToday}
*Grand Total of All Zikr:* ${els.grandTotal.textContent}
- - - - - - - - - - - - - - - - - - - - - - -
*Start your Dhikr now:*
https://islamizikr.blogspot.com
_Alhamdulillah! Keep going..._`;

  // 2. Use encodeURIComponent to make the message URL-safe
  const encodedMessage = encodeURIComponent(message);

  // 3. Use the correct Universal Link format
  // Format: https://wa.me[YOUR_ENCODED_TEXT]
  const whatsappUrl = `https://wa.me/?text=${encodedMessage}`;

  // 4. Open the link
  window.open(whatsappUrl, &#39;_blank&#39;);
}




function exportCounts() {
    let t = &quot;Dhikr Counts:\n\n&quot;;
    dhikrData.forEach((d, i) =&gt; {
        const c = JSON.parse(localStorage.getItem(`zikrCount_${i}`) || &#39;{&quot;total&quot;:0}&#39;).total;
        if (c &gt; 0) t += `${d.name}: ${c}\n`;
    });

    // Fallback for Android/WebViews
    const textArea = document.createElement(&quot;textarea&quot;);
    textArea.value = t;
    // Ensure it&#39;s not visible but exists in the DOM
    textArea.style.position = &quot;fixed&quot;;
    textArea.style.left = &quot;-9999px&quot;;
    textArea.style.top = &quot;0&quot;;
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();

    try {
        const successful = document.execCommand(&#39;copy&#39;);
        if (successful) {
            alert(&quot;All counts copied to clipboard!&quot;);
        } else {
            alert(&quot;Unable to copy. Please try manually.&quot;);
        }
    } catch (err) {
        alert(&quot;Copying not supported on this device.&quot;);
    }

    document.body.removeChild(textArea);
}

loadCurrent();
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/41675156343819705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/04/21-april-morning-zikr-2026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/41675156343819705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/41675156343819705'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/04/21-april-morning-zikr-2026.html' title='21 April Morning Zikr 2026'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/${videoId}/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>