<?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-05-21T05:00:00.211+05:30</updated><category term="Hadees"/><category term="Quran"/><category term="April"/><category term="March"/><category term="February"/><category term="May"/><category term="Qur&#39;aan"/><category term="Bukhari"/><category term="Ilm and Dhikr"/><category term="IslamicKnowledge"/><category term="Morning Zikr"/><category term="zikr"/><category term="Tirmizi"/><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="Tirimizi"/><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-Bani Israel"/><category term="Sura-e-Nisa"/><category term="Suwar"/><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="qareeb"/><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="zina"/><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>196</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-7961267168339362461</id><published>2026-05-21T05:00:00.008+05:30</published><updated>2026-05-21T05:00:00.207+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 May 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/7961267168339362461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/21-may-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/7961267168339362461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7961267168339362461'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/21-may-morning-zikr-2026.html' title='21 May 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-5795893686569764717</id><published>2026-05-21T05:00:00.004+05:30</published><updated>2026-05-21T05:00:00.207+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>21 MAY (Hadees) - Jo (Maalik) Apne Ghulaam Par Tohmat Lagaaye</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&amp;lt;&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;Huzoor ﷺ ne irshaad farmaaya: Jo (maalik) apne gulaam par tohmat lagaaye; haalaanke woh gulaam begunaah hai, to qayaamat ke din us maalik ko had ke taur par kode maare jaaenge. (Abu Daaood: 5165)&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%20Huzoor%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Jo%20(maalik)%20apne%20gulaam%20par%20tohmat%20lagaaye;%20haalaanke%20woh%20gulaam%20begunaah%20hai,%20to%20qayaamat%20ke%20din%20us%20maalik%20ko%20had%20ke%20taur%20par%20kode%20maare%20jaaenge.%20(Abu%20Daaood:%205165)%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/Spm1U3sJzzA/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/Spm1U3sJzzA?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/Spm1U3sJzzA&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/5795893686569764717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5795893686569764717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5795893686569764717'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-21.html' title='21 MAY (Hadees) - Jo (Maalik) Apne Ghulaam Par Tohmat Lagaaye'/><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/Spm1U3sJzzA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-1235985273546506847</id><published>2026-05-20T16:30:00.000+05:30</published><updated>2026-05-20T16:30:00.121+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'>20 May Evening Zikr</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;height: 0px; max-width: 800px; padding-bottom: 60%; position: relative; width: 100%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;height: 200px; max-width: 640px; width: 100%;&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; font-weight: bold; margin-bottom: 1px; margin-top: -15px; text-align: center;&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-color: currentcolor; border-image: initial; border-radius: 50%; border-style: none; border-width: medium; 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;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt;
  &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot;&gt;&lt;/meta&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 frameborder=&quot;0&quot; height=&quot;552&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot; width=&quot;100%&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&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 id=&quot;latestBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 0px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 0px 0px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;border-collapse: collapse; width: 100%;&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;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;📅 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;border-collapse: collapse; width: 100%;&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;
&amp;nbsp;&amp;nbsp;
  &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 50 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 rgb(51, 65, 85); 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; letter-spacing: 0.12em; margin-bottom: 8px; text-align: center; text-transform: uppercase;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!--Progress Bar: Dark Track with Vibrant Glow--&gt;
    &lt;div style=&quot;background: rgb(30, 41, 59); border-radius: 10px; border: 1px solid rgb(51, 65, 85); height: 6px; margin: 0px 0px 10px; overflow: hidden;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, rgb(251, 191, 36), rgb(245, 158, 11)); box-shadow: rgba(251, 191, 36, 0.4) 0px 0px 8px; height: 100%; width: 0%;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!--Summary Box: DEEP DARK BACKGROUND--&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: rgb(15, 23, 42); border-radius: 12px; border: 1px solid rgb(30, 41, 59); box-shadow: rgba(0, 0, 0, 0.4) 0px 4px 20px; padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; font-size: 11px; gap: 5px;&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: rgba(251, 191, 36, 0.2) 0px 0px 5px;&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, 50);

        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;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/1235985273546506847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/20-may-evening-zikr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1235985273546506847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1235985273546506847'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/20-may-evening-zikr.html' title='20 May Evening Zikr'/><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-8090482276401144926</id><published>2026-05-20T05:00:00.006+05:30</published><updated>2026-05-20T05:00:00.120+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'>20 May 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/8090482276401144926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/20-may-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/8090482276401144926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/8090482276401144926'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/20-may-morning-zikr-2026.html' title='20 May 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-3557011673551001146</id><published>2026-05-20T05:00:00.003+05:30</published><updated>2026-05-20T05:00:00.120+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>20 MAY (Hadees) - Qayaamat Ka Din Hoga To Mujhe Shafaat Ki Ijaazat Di Jayegi</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 (Raziyallahu &#39;anhu) farmaate hain ke maine Nabi Kareem ﷺ  ko ye irshaad farmaate hue suna: Jab Qayaamat ka din hoga to mujhe shafaat ki ijaazat di jayegi. Main arz karunga: Aye mere Rabb! jannat mein har us shakhs ko daakhil farmaa dijiye jiske dil mein raaee ke daane ke baraabar bhi (imaan) ho, (Allah Ta&#39;ala meri is shafaat ko qubool farmaalenge) aur woh log jannat mein daakhil hojayeingey. Phir main arz karunga jannat mein har us shakhs ko daakhil farmaa dijiye jis ke dil mein zaraasa bhi (imaan) ho. (Bukhari: 7509)&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%20Hazrat%20Anas%20(Raziyallahu%20&#39;anhu)%20farmaate%20hain%20ke%20maine%20Nabi%20Kareem%20%EF%B7%BA%20%20ko%20ye%20irshaad%20farmaate%20hue%20suna:%20Jab%20Qayaamat%20ka%20din%20hoga%20to%20mujhe%20shafaat%20ki%20ijaazat%20di%20jayegi.%20Main%20arz%20karunga:%20Aye%20mere%20Rabb!%20jannat%20mein%20har%20us%20shakhs%20ko%20daakhil%20farmaa%20dijiye%20jiske%20dil%20mein%20raaee%20ke%20daane%20ke%20baraabar%20bhi%20(imaan)%20ho,%20(Allah%20Ta&#39;ala%20meri%20is%20shafaat%20ko%20qubool%20farmaalenge)%20aur%20woh%20log%20jannat%20mein%20daakhil%20hojayeingey.%20Phir%20main%20arz%20karunga%20jannat%20mein%20har%20us%20shakhs%20ko%20daakhil%20farmaa%20dijiye%20jis%20ke%20dil%20mein%20zaraasa%20bhi%20(imaan)%20ho.%20(Bukhari:%207509)%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&gt;&lt;center&gt;
&lt;b&gt;For Audio Click Below&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;iframe frameborder=&quot;0&quot; height=&quot;150&quot; src=&quot;https://www.youtube-nocookie.com/embed/ulhqs52Vln0?showinfo=0&amp;amp;rel=0&amp;amp;cc_load_policy=1&amp;amp;iv_load_policy=3&amp;amp;theme=light&amp;amp;fs=0&amp;amp;color=white&amp;amp;autohide=0&amp;amp;controls=0&amp;amp;disablekb=1&quot; width=&quot;250&quot;&gt;&lt;/iframe&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/3557011673551001146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3557011673551001146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/3557011673551001146'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-20.html' title='20 MAY (Hadees) - Qayaamat Ka Din Hoga To Mujhe Shafaat Ki Ijaazat Di Jayegi'/><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-7294075768290843846</id><published>2026-05-19T16:30:00.000+05:30</published><updated>2026-05-19T16:30:00.120+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'>19 May Evening Zikr </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;height: 0px; max-width: 800px; padding-bottom: 60%; position: relative; width: 100%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;height: 200px; max-width: 640px; width: 100%;&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; font-weight: bold; margin-bottom: 1px; margin-top: -15px; text-align: center;&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-color: currentcolor; border-image: initial; border-radius: 50%; border-style: none; border-width: medium; 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;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt;
  &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot;&gt;&lt;/meta&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 frameborder=&quot;0&quot; height=&quot;552&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot; width=&quot;100%&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&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 id=&quot;latestBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 0px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 0px 0px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;border-collapse: collapse; width: 100%;&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;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;📅 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;border-collapse: collapse; width: 100%;&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;
&amp;nbsp;&amp;nbsp;
  &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 50 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 rgb(51, 65, 85); 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; letter-spacing: 0.12em; margin-bottom: 8px; text-align: center; text-transform: uppercase;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!--Progress Bar: Dark Track with Vibrant Glow--&gt;
    &lt;div style=&quot;background: rgb(30, 41, 59); border-radius: 10px; border: 1px solid rgb(51, 65, 85); height: 6px; margin: 0px 0px 10px; overflow: hidden;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, rgb(251, 191, 36), rgb(245, 158, 11)); box-shadow: rgba(251, 191, 36, 0.4) 0px 0px 8px; height: 100%; width: 0%;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!--Summary Box: DEEP DARK BACKGROUND--&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: rgb(15, 23, 42); border-radius: 12px; border: 1px solid rgb(30, 41, 59); box-shadow: rgba(0, 0, 0, 0.4) 0px 4px 20px; padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; font-size: 11px; gap: 5px;&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: rgba(251, 191, 36, 0.2) 0px 0px 5px;&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, 50);

        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;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/7294075768290843846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/19-may-evening-zikr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7294075768290843846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7294075768290843846'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/19-may-evening-zikr.html' title='19 May Evening Zikr '/><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-701765147395280880</id><published>2026-05-19T05:00:00.005+05:30</published><updated>2026-05-19T05:00:00.130+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'>19 May 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/701765147395280880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/19-may-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/701765147395280880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/701765147395280880'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/19-may-morning-zikr-2026.html' title='19 May 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-582578197272227605</id><published>2026-05-19T05:00:00.002+05:30</published><updated>2026-05-19T05:00:00.130+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 19</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&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;Rasoolullah ﷺ ka irshaad hai ke jo shakhs 2 namaazon ko bagair kisi uzr ke ek waqt mein padhe, woh kabeera gunaahon ke darwaazon mein se ek darwaazeh par pahonch gaya. (Tirmizi: 188)&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%20Rasoolullah%20%EF%B7%BA%20ka%20irshaad%20hai%20ke%20jo%20shakhs%202%20namaazon%20ko%20bagair%20kisi%20uzr%20ke%20ek%20waqt%20mein%20padhe,%20woh%20kabeera%20gunaahon%20ke%20darwaazon%20mein%20se%20ek%20darwaazeh%20par%20pahonch%20gaya.%20(Tirmizi:%20188)%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&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;150&quot; src=&quot;https://www.youtube-nocookie.com/embed/sHTtU8mtwqs?showinfo=0&amp;amp;rel=0&amp;amp;cc_load_policy=1&amp;amp;iv_load_policy=3&amp;amp;theme=light&amp;amp;fs=0&amp;amp;color=white&amp;amp;autohide=0&amp;amp;controls=0&amp;amp;disablekb=1&quot; width=&quot;150&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;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/sHTtU8mtwqs/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/sHTtU8mtwqs?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/sHTtU8mtwqs&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/582578197272227605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-19.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/582578197272227605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/582578197272227605'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-19.html' title='May - 19'/><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/sHTtU8mtwqs/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-6876700709553169229</id><published>2026-05-18T16:30:00.000+05:30</published><updated>2026-05-18T16:30:00.119+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'>18 May Evening Zikr</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;height: 0px; max-width: 800px; padding-bottom: 60%; position: relative; width: 100%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;height: 200px; max-width: 640px; width: 100%;&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; font-weight: bold; margin-bottom: 1px; margin-top: -15px; text-align: center;&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-color: currentcolor; border-image: initial; border-radius: 50%; border-style: none; border-width: medium; 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;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt;
  &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot;&gt;&lt;/meta&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 frameborder=&quot;0&quot; height=&quot;552&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot; width=&quot;100%&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&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 id=&quot;latestBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 0px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 0px 0px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;border-collapse: collapse; width: 100%;&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;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;📅 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;border-collapse: collapse; width: 100%;&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;
&amp;nbsp;&amp;nbsp;
  &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 50 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 rgb(51, 65, 85); 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; letter-spacing: 0.12em; margin-bottom: 8px; text-align: center; text-transform: uppercase;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!--Progress Bar: Dark Track with Vibrant Glow--&gt;
    &lt;div style=&quot;background: rgb(30, 41, 59); border-radius: 10px; border: 1px solid rgb(51, 65, 85); height: 6px; margin: 0px 0px 10px; overflow: hidden;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, rgb(251, 191, 36), rgb(245, 158, 11)); box-shadow: rgba(251, 191, 36, 0.4) 0px 0px 8px; height: 100%; width: 0%;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!--Summary Box: DEEP DARK BACKGROUND--&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: rgb(15, 23, 42); border-radius: 12px; border: 1px solid rgb(30, 41, 59); box-shadow: rgba(0, 0, 0, 0.4) 0px 4px 20px; padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; font-size: 11px; gap: 5px;&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: rgba(251, 191, 36, 0.2) 0px 0px 5px;&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, 50);

        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;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/6876700709553169229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/18-may-evening-zikr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6876700709553169229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6876700709553169229'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/18-may-evening-zikr.html' title='18 May Evening Zikr'/><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-5147838657905126810</id><published>2026-05-18T05:00:00.005+05:30</published><updated>2026-05-18T05:00:00.183+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'>18 May 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/5147838657905126810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/18-may-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/5147838657905126810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5147838657905126810'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/18-may-morning-zikr-2026.html' title='18 May 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-2363195427402484475</id><published>2026-05-18T05:00:00.002+05:30</published><updated>2026-05-18T05:00:00.183+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 18</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;Huzoor ﷺ ne farmaaya ke jis shakhs ne Qur&#39;aan padha, phir us ko zabaani yaad kiya aur us ke halaal ko halaal aur haraam ko haraam jaana to Haq Ta&#39;ala Shaanuhu us ko Jannat mein daakhil farmaaeinge aur us ke gharaane mein se aise das aadmiyon ke baare mein us ki shafa&#39;at qubool farmaaeinge jin ke liye Jahannam waajib ho chuki ho. (Tirmizi: 2905)&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%20Huzoor%20%EF%B7%BA%20ne%20farmaaya%20ke%20jis%20shakhs%20ne%20Qur&#39;aan%20padha,%20phir%20us%20ko%20zabaani%20yaad%20kiya%20aur%20us%20ke%20halaal%20ko%20halaal%20aur%20haraam%20ko%20haraam%20jaana%20to%20Haq%20Ta&#39;ala%20Shaanuhu%20us%20ko%20Jannat%20mein%20daakhil%20farmaaeinge%20aur%20us%20ke%20gharaane%20mein%20se%20aise%20das%20aadmiyon%20ke%20baare%20mein%20us%20ki%20shafa&#39;at%20qubool%20farmaaeinge%20jin%20ke%20liye%20Jahannam%20waajib%20ho%20chuki%20ho.%20(Tirmizi:%202905)%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/hDI_OxhPoTQ/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/hDI_OxhPoTQ?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/hDI_OxhPoTQ&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/2363195427402484475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2363195427402484475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2363195427402484475'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-18.html' title='May - 18'/><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/hDI_OxhPoTQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-4572808843647849994</id><published>2026-05-17T16:30:00.000+05:30</published><updated>2026-05-17T16:30:00.112+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'>17 May Evening Zikr</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;height: 0px; max-width: 800px; padding-bottom: 60%; position: relative; width: 100%;&quot;&gt;
  
&lt;div id=&quot;player&quot; style=&quot;height: 200px; max-width: 640px; width: 100%;&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; font-weight: bold; margin-bottom: 1px; margin-top: -15px; text-align: center;&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-color: currentcolor; border-image: initial; border-radius: 50%; border-style: none; border-width: medium; 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;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt;
  &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot;&gt;&lt;/meta&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 frameborder=&quot;0&quot; height=&quot;552&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; src=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdrX6-hzpENQ5oogEZHFEcpME8lq-A0XqkN-XpM3JRCDqmVxQ/viewform?embedded=true&quot; width=&quot;100%&quot;&gt;
      Loading…
    &lt;/iframe&gt;
  &lt;/div&gt;

&lt;/body&gt;
  &lt;/html&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 id=&quot;latestBox&quot; style=&quot;background: rgb(255, 255, 255); border-radius: 16px; border: 0px solid rgb(241, 245, 249); box-shadow: rgba(0, 0, 0, 0.03) 0px 0px 0px; font-size: 13px; padding: 0px;&quot;&gt;
      &lt;table style=&quot;border-collapse: collapse; width: 100%;&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;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;📅 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;border-collapse: collapse; width: 100%;&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;
&amp;nbsp;&amp;nbsp;
  &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 50 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 rgb(51, 65, 85); 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; letter-spacing: 0.12em; margin-bottom: 8px; text-align: center; text-transform: uppercase;&quot;&gt;All Dhikr Summary&lt;/div&gt;
    
    &lt;!--Progress Bar: Dark Track with Vibrant Glow--&gt;
    &lt;div style=&quot;background: rgb(30, 41, 59); border-radius: 10px; border: 1px solid rgb(51, 65, 85); height: 6px; margin: 0px 0px 10px; overflow: hidden;&quot;&gt;
        &lt;div id=&quot;levelProgressBar&quot; style=&quot;background: linear-gradient(90deg, rgb(251, 191, 36), rgb(245, 158, 11)); box-shadow: rgba(251, 191, 36, 0.4) 0px 0px 8px; height: 100%; width: 0%;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!--Summary Box: DEEP DARK BACKGROUND--&gt;
    &lt;div id=&quot;summarySection&quot; style=&quot;background: rgb(15, 23, 42); border-radius: 12px; border: 1px solid rgb(30, 41, 59); box-shadow: rgba(0, 0, 0, 0.4) 0px 4px 20px; padding: 12px;&quot;&gt;
      &lt;div id=&quot;summaryList&quot; style=&quot;color: #cbd5e1; display: flex; flex-direction: column; font-size: 11px; gap: 5px;&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: rgba(251, 191, 36, 0.2) 0px 0px 5px;&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, 50);

        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;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/4572808843647849994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/05/17-may-evening-zikr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4572808843647849994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4572808843647849994'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/05/17-may-evening-zikr.html' title='17 May Evening Zikr'/><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-213166410637629152</id><published>2026-05-17T05:00:00.006+05:30</published><updated>2026-05-17T05:00:00.123+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'>17 May 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/213166410637629152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2026/03/17-May-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/213166410637629152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/213166410637629152'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2026/03/17-May-morning-zikr-2026.html' title='17 May 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-7889276398526548676</id><published>2026-05-17T05:00:00.003+05:30</published><updated>2026-05-17T05:00:00.123+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 17</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 Nabi Kareem ﷺ ne irshaad farmaaya: Imaan ye hai ki tum Allah Ta&#39;ala ko uske farishton ko aur (aakhirat mein) Allah Ta&#39;ala se milne ko aur uske Rasoolon ko haq jaano aur haq maano (aur mout ke baad dubaara) uthaye jaane ko haq jaano aur haq maano. (Bukhari: 50)&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%20Hazrat%20Abu%20Hurairah%20(Raziyallahu%20&#39;anhu)%20se%20riwaayat%20hai%20ke%20Nabi%20Kareem%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Imaan%20ye%20hai%20ki%20tum%20Allah%20Ta&#39;ala%20ko%20uske%20farishton%20ko%20aur%20(aakhirat%20mein)%20Allah%20Ta&#39;ala%20se%20milne%20ko%20aur%20uske%20Rasoolon%20ko%20haq%20jaano%20aur%20haq%20maano%20(aur%20mout%20ke%20baad%20dubaara)%20uthaye%20jaane%20ko%20haq%20jaano%20aur%20haq%20maano.%20(Bukhari:%2050)%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/8WkKtVNhQ1o/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/8WkKtVNhQ1o?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/8WkKtVNhQ1o&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/7889276398526548676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7889276398526548676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7889276398526548676'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-17.html' title='May - 17'/><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/8WkKtVNhQ1o/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-619256424922312100</id><published>2026-05-16T05:00:00.003+05:30</published><updated>2026-05-16T05:00:00.121+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bukhari"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 16</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;Rasullulah ﷺ ne irshaad farmaaya: Jab tum mein se koi so kar uthe, to bartan mein haath daalne se pehle haathon ko dhole. (Bukhari: 162)&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%20Rasullulah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Jab%20tum%20mein%20se%20koi%20so%20kar%20uthe,%20to%20bartan%20mein%20haath%20daalne%20se%20pehle%20haathon%20ko%20dhole.%20(Bukhari:%20162)%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/uBnaa-1OLbY/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/uBnaa-1OLbY?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/uBnaa-1OLbY&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/619256424922312100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/619256424922312100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/619256424922312100'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-16.html' title='May - 16'/><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/uBnaa-1OLbY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-1477679955544939496</id><published>2026-05-15T05:00:00.003+05:30</published><updated>2026-05-15T05:00:00.193+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bukhari"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>15 MAY (Hadees) - Aadmi Ka Jamaat Se Namaaz Padhna</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 riwaayat karte hain ke Rasulullah ﷺ ne irshaad farmaaya: Aadmi ka jamaat se namaaz padhna apne ghar aur baazar mein namaaz padhne se pachees (25) darje zyaada sawaab rakhta hai. (Bukhari: 647)&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%20Hazrat%20Abu%20Hurairah%20Raziyallahu%20%27anhu%20riwaayat%20karte%20hain%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Aadmi%20ka%20jamaat%20se%20namaaz%20padhna%20apne%20ghar%20aur%20baazar%20mein%20namaaz%20padhne%20se%20pachees%20(25)%20darje%20zyaada%20sawaab%20rakhta%20hai.%20(Bukhari:%20647)%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 App* Goo.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*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%20Hazrat%20Abu%20Hurairah%20Raziyallahu%20&#39;anhu%20riwaayat%20karte%20hain%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Aadmi%20ka%20jamaat%20se%20namaaz%20padhna%20apne%20ghar%20aur%20baazar%20mein%20namaaz%20padhne%20se%20pachees%20(25)%20darje%20zyaada%20sawaab%20rakhta%20hai.%20(Bukhari:%20647)%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/UHp_XwV8GTM/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/UHp_XwV8GTM?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/UHp_XwV8GTM&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/1477679955544939496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1477679955544939496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/1477679955544939496'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-15.html' title='15 MAY (Hadees) - Aadmi Ka Jamaat Se Namaaz Padhna'/><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/UHp_XwV8GTM/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-457387461420246134</id><published>2026-05-14T05:00:00.004+05:30</published><updated>2026-05-14T05:00:00.216+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bukhari"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 14</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 Raziyallahu &#39;anhu se riwaayat hai ke Nabi Kareem  ﷺ ne irshaad farmaaya: Apni safon ko seedha kiya karo, kyunki Namaaz ko achchhi tarah adaa karne mein safon ko seedha karna shaamil hai. (Bukhari: 723)&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%20Hazrat%20Anas%20Raziyallahu%20&#39;anhu%20se%20riwaayat%20hai%20ke%20Nabi%20Kareem%20%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Apni%20safon%20ko%20seedha%20kiya%20karo,%20kyunki%20Namaaz%20ko%20achchhi%20tarah%20adaa%20karne%20mein%20safon%20ko%20seedha%20karna%20shaamil%20hai.%20(Bukhari:%20723)%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/4RQ9PmDBeg4/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/4RQ9PmDBeg4?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/4RQ9PmDBeg4&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/457387461420246134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/457387461420246134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/457387461420246134'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-14.html' title='May - 14'/><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/4RQ9PmDBeg4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-5104452094558407845</id><published>2026-05-13T05:00:00.003+05:30</published><updated>2026-05-13T05:00:00.123+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><category scheme="http://www.blogger.com/atom/ns#" term="Tirimizi"/><title type='text'>13 MAY (Hadees) - Khade ho kar Namaaz padho, agar khade hone ki taaqat na ho to baithh kar padho</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;Aaj Ki 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;Rasullulah ﷺ ne farmaaya: Khade ho kar Namaaz padho, agar khade hone ki taaqat na ho to baithh kar padho aur agar baithh kar padhne ki bhi taaqat na ho to karwat par let kar padho. (Tirimizi: 372)&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%20Rasullulah%20%EF%B7%BA%20ne%20farmaaya:%20Khade%20ho%20kar%20Namaaz%20padho,%20agar%20khade%20hone%20ki%20taaqat%20na%20ho%20to%20baithh%20kar%20padho%20aur%20agar%20baithh%20kar%20padhne%20ki%20bhi%20taaqat%20na%20ho%20to%20karwat%20par%20let%20kar%20padho.%20(Tirimizi:%20372)%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/Jz7rRpPzWaE/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/Jz7rRpPzWaE?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/Jz7rRpPzWaE&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/5104452094558407845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5104452094558407845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5104452094558407845'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-13.html' title='13 MAY (Hadees) - Khade ho kar Namaaz padho, agar khade hone ki taaqat na ho to baithh kar padho'/><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/Jz7rRpPzWaE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-4523362529393639811</id><published>2026-05-12T05:00:00.005+05:30</published><updated>2026-05-12T05:00:00.121+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><category scheme="http://www.blogger.com/atom/ns#" term="Tirmizi"/><title type='text'>12 MAY (Hadees) - Aapas Mein Hadiya Liya Diya 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;Huzoor ﷺ ne farmaaya: Aapas mein hadiya liya diya Karo, kyun ke hadiya aur tohfa dilon se keene ko khatm kar deta hai. (Tirmizi: 2130)&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%20Huzoor%20%EF%B7%BA%20ne%20farmaaya:%20Aapas%20mein%20hadiya%20liya%20diya%20Karo,%20kyun%20ke%20hadiya%20aur%20tohfa%20dilon%20se%20keene%20ko%20khatm%20kar%20deta%20hai.%20(Tirmizi:%202130)%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/36Fs-rlenXA/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/36Fs-rlenXA?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/36Fs-rlenXA&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/4523362529393639811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4523362529393639811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/4523362529393639811'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-12.html' title='12 MAY (Hadees) - Aapas Mein Hadiya Liya Diya 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/36Fs-rlenXA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-5914723238414164017</id><published>2026-05-11T05:00:00.004+05:30</published><updated>2026-05-11T05:00:00.131+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>11 MAY (Aaj Ki Hadees) - Chehre Wuzu Mein Dhulne Ki Wajahse Raoshan Aur Chamakdaar Hongey</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;Aaj Ki 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 Anhu se riwaayat hai ke maine Rasulullah ﷺ ko ye irshaad farmaate hue suna: Meri Ummat Qayamat ke din is haal mein bulaayee jaayegi ke unke haath paon aur chehre wuzu mein dhulne ki wajahse raoshan aur chamakdaar hongey. Lihaaza jo shakhs apni raoshni badhana chahe, to use chahiye ke wo ise badhaaye. (Bukhari: 136)&lt;/b&gt;&lt;/center&gt;
&lt;center&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/center&gt;
&lt;center&gt;
Faida: Matlab ye hai ke wuzu is ehtemaam se kiya jaye ke azaa-e-wazu mein koi jagah khushk na rahe.&lt;br /&gt;
  &lt;br /&gt;
&lt;center&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%20Hazrat%20Abu%20Hurairah%20Raziyallahu%20Anhu%20se%20riwaayat%20hai%20ke%20maine%20Rasulullah%20%EF%B7%BA%20ko%20ye%20irshaad%20farmaate%20hue%20suna:%20Meri%20Ummat%20Qayamat%20ke%20din%20is%20haal%20mein%20bulaayee%20jaayegi%20ke%20unke%20haath%20paon%20aur%20chehre%20wuzu%20mein%20dhulne%20ki%20wajahse%20raoshan%20aur%20chamakdaar%20hongey.%20Lihaaza%20jo%20shakhs%20apni%20raoshni%20badhana%20chahe,%20to%20use%20chahiye%20ke%20wo%20ise%20badhaaye.%20(Bukhari:%20136)%0D%0A%0D%0A%E2%9C%BA%20Faida:%20Matlab%20ye%20hai%20ke%20wuzu%20is%20ehtemaam%20se%20kiya%20jaye%20ke%20azaa-e-wazu%20mein%20koi%20jagah%20khushk%20na%20rahe.%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;b&gt; &lt;/b&gt;&lt;/center&gt;
&lt;/center&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/IPvFlHZcUmo/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/IPvFlHZcUmo?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/IPvFlHZcUmo&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;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://dism1.blogspot.com/feeds/5914723238414164017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5914723238414164017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5914723238414164017'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-11.html' title='11 MAY (Aaj Ki Hadees) - Chehre Wuzu Mein Dhulne Ki Wajahse Raoshan Aur Chamakdaar Hongey'/><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/IPvFlHZcUmo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-6205682413008256999</id><published>2026-05-10T05:00:00.003+05:30</published><updated>2026-05-10T05:00:00.121+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>10 MAY (Hadees) - Allah Ta&#39;ala Safon Ke Daayein Jaanib Khade Hone Waalon Par Rehmat Naazil farmaate 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 A&#39;ishah Raziyallahu &#39;anha riwaayat karti hain ke Rasulullah ﷺ ne irshaad farmaaya: Allah Ta&#39;ala safon ke daayein jaanib khade hone waalon par rehmat naazil farmaate hain aur farishte unke liye maghfirat ki dua karte hain. (Abu Dawud: 676)&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%20A%27ishah%20Raziyallahu%20%27anha%20riwaayat%20karti%20hain%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Allah%20Ta%27ala%20safon%20ke%20daayein%20jaanib%20khade%20hone%20waalon%20par%20rehmat%20naazil%20farmaate%20hain%20aur%20farishte%20unke%20liye%20maghfirat%20ki%20dua%20karte%20hain.%20(Abu%20Dawud:%20676)%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%20A&#39;ishah%20Raziyallahu%20&#39;anha%20riwaayat%20karti%20hain%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Allah%20Ta&#39;ala%20safon%20ke%20daayein%20jaanib%20khade%20hone%20waalon%20par%20rehmat%20naazil%20farmaate%20hain%20aur%20farishte%20unke%20liye%20maghfirat%20ki%20dua%20karte%20hain.%20(Abu%20Dawud:%20676)%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/H8J0DAeHo7Y/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/H8J0DAeHo7Y?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/H8J0DAeHo7Y&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/6205682413008256999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6205682413008256999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/6205682413008256999'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-10.html' title='10 MAY (Hadees) - Allah Ta&#39;ala Safon Ke Daayein Jaanib Khade Hone Waalon Par Rehmat Naazil farmaate 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/H8J0DAeHo7Y/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-7373885819167535072</id><published>2026-05-09T05:00:00.002+05:30</published><updated>2026-05-09T05: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="May"/><title type='text'>09 MAY (Hadees) - Saari Makhlooq Allah Ta&#39;ala Ki Ayaal (Aur Ghar Ke Afraad Ki Haisiyat Rakhti) 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;Allah ke Rasool ﷺ ne farmaaya: Saari makhlooq Allah Ta&#39;ala ki ayaal (aur ghar ke afraad ki haisiyat rakhti) hai aur Allah Ta&#39;ala ko sab se ziyaada mehboob woh aadmi hai, jo us ki ayaal ke saath achchha bartaao aur ehsaan ka muaamla kare. (Sho&#39;abul Iman: 8448)&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:%20Allah%20ke%20Rasool%20%EF%B7%BA%20ne%20farmaaya:%20Saari%20makhlooq%20Allah%20Ta%27ala%20ki%20ayaal%20(aur%20ghar%20ke%20afraad%20ki%20haisiyat%20rakhti)%20hai%20aur%20Allah%20Ta%27ala%20ko%20sab%20se%20ziyaada%20mehboob%20woh%20aadmi%20hai,%20jo%20us%20ki%20ayaal%20ke%20saath%20achchha%20bartaao%20aur%20ehsaan%20ka%20muaamla%20kare.%20(Sho%27abul%20Iman:%208448)%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:%20Allah%20ke%20Rasool%20%EF%B7%BA%20ne%20farmaaya:%20Saari%20makhlooq%20Allah%20Ta&#39;ala%20ki%20ayaal%20(aur%20ghar%20ke%20afraad%20ki%20haisiyat%20rakhti)%20hai%20aur%20Allah%20Ta&#39;ala%20ko%20sab%20se%20ziyaada%20mehboob%20woh%20aadmi%20hai,%20jo%20us%20ki%20ayaal%20ke%20saath%20achchha%20bartaao%20aur%20ehsaan%20ka%20muaamla%20kare.%20(Sho&#39;abul%20Iman:%208448)%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/FgLrWtEpzY0/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/FgLrWtEpzY0?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/FgLrWtEpzY0&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/7373885819167535072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-09.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7373885819167535072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/7373885819167535072'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-09.html' title='09 MAY (Hadees) - Saari Makhlooq Allah Ta&#39;ala Ki Ayaal (Aur Ghar Ke Afraad Ki Haisiyat Rakhti) 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/FgLrWtEpzY0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-62054965798678943</id><published>2026-05-08T05:00:00.003+05:30</published><updated>2026-05-08T05: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="May"/><title type='text'>08 MAY (Hadees) - Tum Log Zameen Waalon Par Rahem Karo, Aasmaan Waala Rab Tum Par Rahem Karega</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;Huzoor ﷺ ne farmaaya: Tum log zameen waalon par rahem karo, aasmaan waala rab tum par rahem karega. (Abu Dawood: 4941)&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;https://api.whatsapp.com/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:%20Huzoor%20%EF%B7%BA%20ne%20farmaaya:%20Tum%20log%20zameen%20waalon%20par%20rahem%20karo,%20aasmaan%20waala%20rab%20tum%20par%20rahem%20karega.%20(Abu%20Dawood:%204941)%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/vu1IF1029ww/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/vu1IF1029ww?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/vu1IF1029ww&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/62054965798678943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-08.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/62054965798678943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/62054965798678943'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-08.html' title='08 MAY (Hadees) - Tum Log Zameen Waalon Par Rahem Karo, Aasmaan Waala Rab Tum Par Rahem Karega'/><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/vu1IF1029ww/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-2708676302731564524</id><published>2026-05-07T05:00:00.003+05:30</published><updated>2026-05-07T05:00:00.202+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>07 MAY (Hadees) - Allah Ta&#39;ala Agli Safon Se Qareeb Saf Waalon Par Rehmat Naazil Farmaate 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 Bara Bin &#39;Azib Raziyallahu &#39;anhuma riwaayat karte hain ke Rasulullah ﷺ ne irshaad farmaaya: Allah Ta&#39;ala agli safon se qareeb saf waalon par rehmat naazil farmaate hain aur uske farishte unke liye dua karte hain. Allah Ta&#39;ala ko us qadam se zyaada koi qadam mehboob nahin, jisko insaan saf ki khaali jagah ko pur karne ke liye uthhaata hai. (Abu Dawud: 543)&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;https://api.whatsapp.com/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%20Bara%20Bin%20&#39;Azib%20Raziyallahu%20&#39;anhuma%20riwaayat%20karte%20hain%20ke%20Rasulullah%20%EF%B7%BA%20ne%20irshaad%20farmaaya:%20Allah%20Ta&#39;ala%20agli%20safon%20se%20qareeb%20saf%20waalon%20par%20rehmat%20naazil%20farmaate%20hain%20aur%20uske%20farishte%20unke%20liye%20dua%20karte%20hain.%20Allah%20Ta&#39;ala%20ko%20us%20qadam%20se%20zyaada%20koi%20qadam%20mehboob%20nahin,%20jisko%20insaan%20saf%20ki%20khaali%20jagah%20ko%20pur%20karne%20ke%20liye%20uthhaata%20hai.%20(Abu%20Dawud:%20543)%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/Aj0uAeNzlQ4/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/Aj0uAeNzlQ4?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/Aj0uAeNzlQ4&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/2708676302731564524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-07.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2708676302731564524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/2708676302731564524'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-07.html' title='07 MAY (Hadees) - Allah Ta&#39;ala Agli Safon Se Qareeb Saf Waalon Par Rehmat Naazil Farmaate 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/Aj0uAeNzlQ4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2619536654761151932.post-5011863655061769400</id><published>2026-05-06T05:00:00.003+05:30</published><updated>2026-05-06T05:00:00.128+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadees"/><category scheme="http://www.blogger.com/atom/ns#" term="May"/><title type='text'>May - 06</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 Bara Bin &#39;Azib Raziyallahu &#39;anhuma se riwaayat hai ke Rasulullah ﷺ saf mein ek kinaare se dusre kinaare tak tashreef laate, humare sinon aur kaandhon par haath mubaarak phair kar safon ko seedha farmaate aur irshaad farmaate: (Safon mein) aage peeche na raho, agar aisa hua to tumhare dilon mein ek dusre se ikhtilaaf paida ho jayega aur farmaaya karte: Allah Ta&#39;ala agli saf waalon par rehmatein naazil farmaate hain aur unke liye farishte maghfirat ki dua karte hain. (Abu Dawud: 664)&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%20Bara%20Bin%20%27Azib%20Raziyallahu%20%27anhuma%20se%20riwaayat%20hai%20ke%20Rasulullah%20%EF%B7%BA%20saf%20mein%20ek%20kinaare%20se%20dusre%20kinaare%20tak%20tashreef%20laate,%20humare%20sinon%20aur%20kaandhon%20par%20haath%20mubaarak%20phair%20kar%20safon%20ko%20seedha%20farmaate%20aur%20irshaad%20farmaate:%20(Safon%20mein)%20aage%20peeche%20na%20raho,%20agar%20aisa%20hua%20to%20tumhare%20dilon%20mein%20ek%20dusre%20se%20ikhtilaaf%20paida%20ho%20jayega%20aur%20farmaaya%20karte:%20Allah%20Ta%27ala%20agli%20saf%20waalon%20par%20rehmatein%20naazil%20farmaate%20hain%20aur%20unke%20liye%20farishte%20maghfirat%20ki%20dua%20karte%20hain.%20(Abu%20Dawud:%20664)%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%20Bara%20Bin%20&#39;Azib%20Raziyallahu%20&#39;anhuma%20se%20riwaayat%20hai%20ke%20Rasulullah%20%EF%B7%BA%20saf%20mein%20ek%20kinaare%20se%20dusre%20kinaare%20tak%20tashreef%20laate,%20humare%20sinon%20aur%20kaandhon%20par%20haath%20mubaarak%20phair%20kar%20safon%20ko%20seedha%20farmaate%20aur%20irshaad%20farmaate:%20(Safon%20mein)%20aage%20peeche%20na%20raho,%20agar%20aisa%20hua%20to%20tumhare%20dilon%20mein%20ek%20dusre%20se%20ikhtilaaf%20paida%20ho%20jayega%20aur%20farmaaya%20karte:%20Allah%20Ta&#39;ala%20agli%20saf%20waalon%20par%20rehmatein%20naazil%20farmaate%20hain%20aur%20unke%20liye%20farishte%20maghfirat%20ki%20dua%20karte%20hain.%20(Abu%20Dawud:%20664)%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/TYsg3L0odMA/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/TYsg3L0odMA?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/TYsg3L0odMA&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/5011863655061769400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dism1.blogspot.com/2020/05/may-06.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5011863655061769400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2619536654761151932/posts/default/5011863655061769400'/><link rel='alternate' type='text/html' href='http://dism1.blogspot.com/2020/05/may-06.html' title='May - 06'/><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/TYsg3L0odMA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>