{"id":341,"date":"2025-09-09T09:25:59","date_gmt":"2025-09-09T09:25:59","guid":{"rendered":"https:\/\/e2bet.poker\/?page_id=341"},"modified":"2025-09-09T09:33:02","modified_gmt":"2025-09-09T09:33:02","slug":"bdt","status":"publish","type":"page","link":"https:\/\/e2bet.poker\/index.php\/bdt\/","title":{"rendered":"BDT spin page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"341\" class=\"elementor elementor-341\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1cfc2ef e-con-full e-flex e-con e-parent\" data-id=\"1cfc2ef\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-1c61ed7 e-con-full e-flex e-con e-child\" data-id=\"1c61ed7\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62874f8 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"62874f8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\"\/>\r\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"\/>\r\n<title>Spin Wheel \u2013 clean metallic<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Lemon:wght@400;700&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  :root{ --wheel-size:560px; --green:#13926a; --green-d:#0d6a50; }\r\n  *{ -webkit-tap-highlight-color:transparent; box-sizing:border-box; }\r\n  html,body{ margin:0; background:#fff; color:#111; font-family:'Lemon',serif; }\r\n\r\n  .spin-wrap{ position:relative; width:min(92vw,var(--wheel-size)); aspect-ratio:1\/1; margin:12px auto 6px; }\r\n  .spin-ring{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; z-index:3; pointer-events:none; }\r\n  #wheel{ position:absolute; inset:9%; width:82%; height:82%; display:block; border-radius:50%; background:transparent; z-index:1; }\r\n  .spin-hub{ position:absolute; top:50%; left:50%; width:15%; transform:translate(-50%,-50%); z-index:4; pointer-events:none; filter:drop-shadow(0 2px 2px rgba(0,0,0,.25)); }\r\n\r\n  .cta{ display:flex; justify-content:center; }\r\n  .btn-metal{\r\n    appearance:none; border:none; cursor:pointer; color:#fff; font-weight:700; font-size:1.08rem; letter-spacing:.3px;\r\n    padding:.85rem 1.6rem; border-radius:999px; margin:14px 0 22px; position:relative; user-select:none; outline:none;\r\n    background:\r\n      radial-gradient(120% 180% at 50% 10%, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 60%),\r\n      linear-gradient(180deg,#1fc18b 0%,#17a576 20%,#118a63 50%,#0f7b59 70%,#0b644a 100%);\r\n    box-shadow: inset 0 px 0 rgba(255,255,255,.35), inset 0 -2px 0 rgba(0,0,0,.25),\r\n                0 10px 0 var(--green-d), 0 14px 24px rgba(0,0,0,.25);\r\n  }\r\n  .btn-metal:before{ content:\"\"; position:absolute; inset:0; border-radius:inherit; box-shadow:inset 0 0 0 2px rgba(255,255,255,.08), inset 0 0 20px rgba(255,255,255,.06); pointer-events:none; }\r\n  .btn-metal:active{ transform:translateY(2px); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), inset 0 -1px 0 rgba(0,0,0,.25), 0 6px 0 var(--green-d), 0 10px 18px rgba(0,0,0,.25); }\r\n\r\n  .win-overlay{ position:fixed; inset:0; display:none; align-items:center; justify-content:center; background:rgba(0,0,0,.65); z-index:60; opacity:0; }\r\n  .win-overlay.show{ display:flex; animation:overlayIn .25s ease-out forwards; }\r\n  @keyframes overlayIn{ from{opacity:0} to{opacity:1} }\r\n  .win-card{ position:relative; width:min(92vw,560px); }\r\n  .panel{ position:relative; background:#14151a; color:#fff; text-align:center; border-radius:16px; padding:24px 20px 22px; overflow:hidden; box-shadow:0 16px 40px rgba(0,0,0,.35); transform:scale(.86) translateY(12px); opacity:0; }\r\n  .win-overlay.show .panel{ animation:popIn .6s cubic-bezier(.2,.8,.2,1) .05s forwards; }\r\n  @keyframes popIn{ 0%{transform:scale(.86) translateY(12px); opacity:0;} 60%{transform:scale(1.03) translateY(0); opacity:1;} 100%{transform:scale(1) translateY(0); opacity:1;} }\r\n  .win-sun{ position:absolute; top:-8px; left:50%; width:120%; transform:translateX(-50%); opacity:.95; pointer-events:none; }\r\n  .win-money{ width:150px; margin:26px auto 8px; display:block; filter:drop-shadow(0 4px 6px rgba(0,0,0,.35)); animation:moneyBob 2.6s ease-in-out .2s infinite; }\r\n  @keyframes moneyBob{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }\r\n  .win-title{ font-size:28px; font-weight:700; margin:8px 0 6px; }\r\n  .win-amount{ color:#2ecc71; font-size:30px; margin:2px 0 14px; }\r\n\r\n  \/* Existing button look for popup CTA. Also make it work for <a> links *\/\r\n  .win-btn{\r\n    position:relative; appearance:none; border:none; cursor:pointer; color:#fff; font-weight:700; padding:.9rem 1.6rem; border-radius:999px; margin-top:8px; outline:none;\r\n    background: radial-gradient(120% 180% at 50% 10%, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 60%),\r\n               linear-gradient(180deg,#1fc18b 0%,#17a576 20%,#118a63 50%,#0f7b59 70%,#0b644a 100%);\r\n    box-shadow: inset 0 1px 0 rgba(255,255,255,.35), inset 0 -2px 0 rgba(0,0,0,.25), 0 10px 0 var(--green-d), 0 14px 24px rgba(0,0,0,.25);\r\n\r\n    \/* make anchors look like buttons *\/\r\n    text-decoration:none;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n  }\r\n  .win-btn:before{ content:\"\"; position:absolute; inset:0; border-radius:inherit; box-shadow:inset 0 0 0 2px rgba(255,255,255,.08), inset 0 0 20px rgba(255,255,255,.06); pointer-events:none; }\r\n  .win-btn:active{ transform:translateY(2px); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), inset 0 -1px 0 rgba(0,0,0,.25), 0 6px 0 var(--green-d), 0 10px 18px rgba(0,0,0,.25); }\r\n  .win-btn:link, .win-btn:visited{ color:#fff; }\r\n\r\n  #confettiCanvas{ position:fixed; inset:0; z-index:70; pointer-events:none; }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n  <div class=\"spin-wrap\" id=\"spinWrap\">\r\n    <img decoding=\"async\" class=\"spin-ring\" src=\"https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/Adobe-Express-file.png\" alt=\"Ring\">\r\n    <canvas id=\"wheel\"><\/canvas>\r\n    <img decoding=\"async\" class=\"spin-hub\" src=\"https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT_Image_Sep_3__2025__11_06_13_AM-removebg-preview.png\" alt=\"Center\">\r\n  <\/div>\r\n\r\n  <div class=\"cta\">\r\n    <button id=\"btnSpin\" class=\"btn-metal\" aria-label=\"Try Your Luck\" title=\"Try Your Luck\">\u0986\u09aa\u09a8\u09be\u09b0 \u09ad\u09be\u0997\u09cd\u09af \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8<\/button>\r\n  <\/div>\r\n\r\n  <div class=\"win-overlay\" id=\"winOverlay\" role=\"dialog\" aria-modal=\"true\">\r\n    <div class=\"win-card\">\r\n      <div class=\"panel\">\r\n        <img decoding=\"async\" class=\"win-sun\"   src=\"https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/sun.png\"   alt=\"\">\r\n        <img decoding=\"async\" class=\"win-money\" src=\"https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/money.png\" alt=\"\">\r\n        <div class=\"win-title\">\u0986\u09aa\u09a8\u09bf \u099c\u09bf\u09a4\u09c7\u099b\u09c7\u09a8<\/div>\r\n        <div class=\"win-amount\" id=\"winAmount\">\u099c\u09bf\u09b2\u09bf \u09b8\u09cd\u09aa\u09bf\u09a8 x18<\/div>\r\n\r\n        <!-- LINK styled as button (change href to your URL) -->\r\n        <a id=\"claimBtn\" class=\"win-btn\"\r\n           href=\"https:\/\/www.e2bet.com\/pk\/en\"\r\n           target=\"_blank\" rel=\"noopener\">\r\n          \u098f\u0996\u09a8\u0987 \u09aa\u09c1\u09b0\u09b7\u09cd\u0995\u09be\u09b0 \u09aa\u09be\u09a8\r\n        <\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <canvas id=\"confettiCanvas\"><\/canvas>\r\n\r\n<script>\r\n(async () => {\r\n  const canvas = document.getElementById('wheel');\r\n  const ctx = canvas.getContext('2d');\r\n\r\n  \/* -------------- SLICE CONFIG -------------- *\/\r\n  const slices = [\r\n    { theme:'dark',  img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-7-2025-02_40_28-PM-e1757230574747.png' },\r\n    { theme:'green', img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/pngimg.com-iphone16_PNG5.png' },\r\n    { theme:'dark',  img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-7-2025-02_16_34-PM-e1757229143985.png' },\r\n    { theme:'green', img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/Airpods-Pro-PNG-e1757230508392.png' },\r\n    { theme:'dark',  img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-7-2025-02_13_43-PM-e1757228979992.png' },\r\n    { theme:'green', img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/MXLJ3ref_VW_34FRwatch-case-42-aluminum-jetblack-nc-s10_VW_34FRwatch-face-42-aluminum-jetblack-s10_VW_34FR-e1757229664725.png' },\r\n    { theme:'dark',  img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-7-2025-02_11_53-PM-e1757228899306.png' },\r\n    { theme:'green', img:'https:\/\/e2bet.poker\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-7-2025-02_43_33-PM-e1757230757799.png' },\r\n  ];\r\n\r\n  \/\/ preload per-slice images\r\n  function loadImage(src){\r\n    return new Promise((res)=>{\r\n      if(!src){ res(null); return; }\r\n      const i=new Image(); i.crossOrigin=\"anonymous\";\r\n      i.onload=()=>res(i); i.onerror=()=>res(null);\r\n      i.src=src;\r\n    });\r\n  }\r\n  for (const s of slices) s._img = await loadImage(s.img);\r\n\r\n  function sizeCanvasToDisplay(){\r\n    const dpr = window.devicePixelRatio||1;\r\n    const rect = canvas.getBoundingClientRect();\r\n    canvas.width = Math.round(rect.width * dpr);\r\n    canvas.height= Math.round(rect.height* dpr);\r\n    ctx.setTransform(dpr,0,0,dpr,0,0);\r\n  }\r\n\r\n  function metalGradient(cx, cy, innerR, outerR, angle, theme){\r\n    const x0 = cx + Math.cos(angle)*innerR;\r\n    const y0 = cy + Math.sin(angle)*innerR;\r\n    const x1 = cx + Math.cos(angle)*outerR;\r\n    const y1 = cy + Math.sin(angle)*outerR;\r\n    const g = ctx.createLinearGradient(x0,y0,x1,y1);\r\n\r\n    if(theme==='green'){\r\n      g.addColorStop(0.00, '#0b5a45');\r\n      g.addColorStop(0.18, '#0f7b59');\r\n      g.addColorStop(0.50, '#18a271');\r\n      g.addColorStop(0.82, '#0f7b59');\r\n      g.addColorStop(1.00, '#0a513e');\r\n    } else {\r\n      g.addColorStop(0.00, '#0b0c10');\r\n      g.addColorStop(0.30, '#20232a');\r\n      g.addColorStop(0.70, '#1a1c22');\r\n      g.addColorStop(1.00, '#0a0b0f');\r\n    }\r\n    return g;\r\n  }\r\n\r\n  function drawWheel(rotationRad=0){\r\n    const rect = canvas.getBoundingClientRect();\r\n    const cx = rect.width\/2, cy = rect.height\/2;\r\n    const radius = Math.min(rect.width, rect.height)\/2 - 2;\r\n\r\n    ctx.clearRect(0,0,rect.width,rect.height);\r\n\r\n    \/\/ soft outer shadow\r\n    ctx.save();\r\n    ctx.beginPath();\r\n    ctx.arc(cx,cy,radius+6,0,Math.PI*2);\r\n    ctx.shadowColor='rgba(0,0,0,.35)';\r\n    ctx.shadowBlur=12;\r\n    ctx.strokeStyle='rgba(0,0,0,.45)';\r\n    ctx.lineWidth=10;\r\n    ctx.stroke();\r\n    ctx.restore();\r\n\r\n    const segAngle = (2*Math.PI)\/slices.length;\r\n    const innerR = radius*0.05;\r\n\r\n    slices.forEach((seg,i)=>{\r\n      const start = i*segAngle + rotationRad;\r\n      const end   = (i+1)*segAngle + rotationRad;\r\n\r\n      \/\/ slice\r\n      ctx.beginPath();\r\n      ctx.moveTo(cx,cy);\r\n      ctx.arc(cx,cy,radius,start,end);\r\n      ctx.closePath();\r\n\r\n      \/\/ metallic fill\r\n      const mid = (start+end)\/2;\r\n      ctx.fillStyle = metalGradient(cx,cy,innerR,radius,mid,seg.theme);\r\n      ctx.fill();\r\n\r\n      \/\/ faint rim gloss\r\n      ctx.save();\r\n      ctx.clip();\r\n      const gloss = ctx.createRadialGradient(cx,cy,radius*0.62, cx,cy,radius);\r\n      gloss.addColorStop(0,'rgba(255,255,255,0)');\r\n      gloss.addColorStop(1,'rgba(255,255,255,.05)');\r\n      ctx.fillStyle = gloss;\r\n      ctx.fillRect(cx-radius,cy-radius,radius*2,radius*2);\r\n      ctx.restore();\r\n\r\n      \/\/ slice image\r\n      const img = seg._img;\r\n      if(img){\r\n        const ang = mid;\r\n        const iconR = radius*0.68;\r\n        const w = radius*0.26;\r\n        const h = w*(img.height\/img.width);\r\n        const ix = cx + Math.cos(ang)*iconR;\r\n        const iy = cy + Math.sin(ang)*iconR;\r\n        ctx.save();\r\n        ctx.translate(ix,iy);\r\n        ctx.rotate(ang + Math.PI\/2);\r\n        ctx.globalAlpha = 0.98;\r\n        ctx.drawImage(img,-w\/2,-h\/2,w,h);\r\n        ctx.restore();\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ responsive\r\n  let currentRotation=0;\r\n  function redraw(){ sizeCanvasToDisplay(); drawWheel(currentRotation); }\r\n  window.addEventListener('resize', redraw, {passive:true});\r\n  redraw();\r\n\r\n  \/\/ stop at segment 0\r\n  const n = slices.length;\r\n  const segDeg = 360\/n;\r\n  const targetIndex = 0;\r\n  function finalDegForIndex(idx){ const center=idx*segDeg + segDeg\/2; return (360-center)%360; }\r\n\r\n  \/* ======= IMPROVED AUDIO (spin + ticks + win) ======= *\/\r\n  let AC, master, comp;\r\n  let noiseSrc, noiseGain, noiseFilter;\r\n  let lastTickIndex = -1;\r\n\r\n  function ensureAC(){\r\n    if(!AC){\r\n      AC = new (window.AudioContext||window.webkitAudioContext)();\r\n      comp = AC.createDynamicsCompressor();\r\n      comp.threshold.value = -10;\r\n      comp.knee.value = 20;\r\n      comp.ratio.value = 8;\r\n      comp.attack.value = 0.002;\r\n      comp.release.value = 0.15;\r\n      master = AC.createGain();\r\n      master.gain.value = 0.8;\r\n      comp.connect(master);\r\n      master.connect(AC.destination);\r\n    }\r\n    return AC;\r\n  }\r\n\r\n  function mkNoiseBuffer(){\r\n    const ac = ensureAC();\r\n    const buf = ac.createBuffer(1, ac.sampleRate*2, ac.sampleRate);\r\n    const d = buf.getChannelData(0);\r\n    for(let i=0;i<d.length;i++) d[i] = (Math.random()*2-1)*0.7; \/\/ white-ish\r\n    return buf;\r\n  }\r\n\r\n  function startSpinAudio(msTotal){\r\n    const ac = ensureAC();\r\n    \/\/ whoosh noise with band-pass sweep\r\n    noiseSrc = ac.createBufferSource();\r\n    noiseSrc.buffer = mkNoiseBuffer();\r\n    noiseSrc.loop = true;\r\n\r\n    noiseFilter = ac.createBiquadFilter();\r\n    noiseFilter.type = 'bandpass';\r\n    noiseFilter.Q.value = 0.8;\r\n    const t0 = ac.currentTime;\r\n    noiseFilter.frequency.setValueAtTime(500, t0);\r\n    noiseFilter.frequency.linearRampToValueAtTime(1400, t0 + msTotal\/1000);\r\n\r\n    noiseGain = ac.createGain();\r\n    noiseGain.gain.setValueAtTime(0.0001, t0);\r\n    noiseGain.gain.linearRampToValueAtTime(0.12, t0 + 0.2);\r\n    noiseGain.gain.setValueAtTime(0.12, t0 + msTotal\/1000 - 0.2);\r\n    noiseGain.gain.exponentialRampToValueAtTime(0.0001, t0 + msTotal\/1000);\r\n\r\n    noiseSrc.connect(noiseFilter);\r\n    noiseFilter.connect(noiseGain);\r\n    noiseGain.connect(comp);\r\n\r\n    noiseSrc.start();\r\n  }\r\n  function stopSpinAudio(){\r\n    try{\r\n      if(noiseSrc){ noiseSrc.stop(); }\r\n    }catch(e){}\r\n    noiseSrc = noiseGain = noiseFilter = null;\r\n    lastTickIndex = -1;\r\n  }\r\n\r\n  \/\/ subtle per-boundary click\r\n  function playTick(){\r\n    try{\r\n      const ac = ensureAC();\r\n      const t = ac.currentTime;\r\n      const o = ac.createOscillator();\r\n      const g = ac.createGain();\r\n      const hp = ac.createBiquadFilter(); hp.type='highpass'; hp.frequency.value=900;\r\n\r\n      o.type='triangle'; o.frequency.setValueAtTime(1100, t);\r\n      g.gain.setValueAtTime(0.0001, t);\r\n      g.gain.linearRampToValueAtTime(0.06, t+0.008);\r\n      g.gain.exponentialRampToValueAtTime(0.0001, t+0.08);\r\n\r\n      o.connect(g); g.connect(hp); hp.connect(comp);\r\n      o.start(t); o.stop(t+0.1);\r\n    }catch(e){}\r\n  }\r\n\r\n  function playWinJingle(){\r\n    const ac = ensureAC();\r\n    const delay = ac.createDelay(0.3);\r\n    const fb = ac.createGain(); fb.gain.value = 0.25;\r\n    const wet = ac.createGain(); wet.gain.value = 0.35;\r\n    delay.connect(fb); fb.connect(delay);\r\n    delay.connect(master);\r\n\r\n    function tone(freq, t, dur=0.35, vol=0.12){\r\n      const o = ac.createOscillator();\r\n      const g = ac.createGain();\r\n      o.type='triangle'; o.frequency.value=freq;\r\n      g.gain.setValueAtTime(0.0001, t);\r\n      g.gain.linearRampToValueAtTime(vol, t+0.02);\r\n      g.gain.exponentialRampToValueAtTime(0.0001, t+dur);\r\n      o.connect(g); g.connect(comp); g.connect(delay); \/\/ dry + wet\r\n      o.start(t); o.stop(t+dur+0.05);\r\n    }\r\n\r\n    const t0 = ac.currentTime;\r\n    \/\/ little arpeggio (C major)\r\n    [523.25, 659.25, 783.99, 1046.50].forEach((f,i)=> tone(f, t0 + i*0.12));\r\n\r\n    \/\/ coin-like up-gliss\r\n    const coinO = ac.createOscillator(), coinG = ac.createGain();\r\n    coinO.type='sine';\r\n    coinO.frequency.setValueAtTime(800, t0+0.05);\r\n    coinO.frequency.exponentialRampToValueAtTime(1900, t0+0.28);\r\n    coinG.gain.setValueAtTime(0.0001, t0+0.05);\r\n    coinG.gain.linearRampToValueAtTime(0.18, t0+0.10);\r\n    coinG.gain.exponentialRampToValueAtTime(0.0001, t0+0.35);\r\n    coinO.connect(coinG); coinG.connect(comp);\r\n    coinO.start(t0+0.05); coinO.stop(t0+0.38);\r\n\r\n    \/\/ sparkle noise burst\r\n    const buf = mkNoiseBuffer();\r\n    const n = ac.createBufferSource(); n.buffer=buf; n.loop=false;\r\n    const hpf = ac.createBiquadFilter(); hpf.type='highpass'; hpf.frequency.value=3000;\r\n    const ng = ac.createGain(); ng.gain.value=0.12;\r\n    n.connect(hpf); hpf.connect(ng); ng.connect(comp);\r\n    n.start(t0+0.04); n.stop(t0+0.16);\r\n  }\r\n  \/* ======================================= *\/\r\n\r\n  let spinning=false;\r\n  document.getElementById('btnSpin').addEventListener('click', ()=>{\r\n    if(spinning) return; spinning=true;\r\n\r\n    const spins=6;\r\n    const stopAt=finalDegForIndex(targetIndex);\r\n    const targetDeg=spins*360+stopAt;\r\n    const start=performance.now();\r\n    const duration=5000;\r\n\r\n    startSpinAudio(duration);\r\n\r\n    function animate(now){\r\n      const t=Math.min((now-start)\/duration,1);\r\n      const ease=1-Math.pow(1-t,3);\r\n      const deg=ease*targetDeg;\r\n\r\n      \/\/ tick on segment boundary\r\n      const segIndex = Math.floor(((deg%360)+360)%360 \/ (360\/slices.length));\r\n      if(segIndex !== lastTickIndex){\r\n        lastTickIndex = segIndex;\r\n        playTick();\r\n      }\r\n\r\n      currentRotation=deg*Math.PI\/180;\r\n      drawWheel(currentRotation);\r\n      if(t<1) requestAnimationFrame(animate);\r\n      else {\r\n        spinning=false;\r\n        stopSpinAudio();\r\n        playWinJingle();\r\n        document.getElementById('winOverlay').classList.add('show');\r\n        launchConfetti();\r\n      }\r\n    }\r\n    requestAnimationFrame(animate);\r\n  });\r\n\r\n  \/\/ popup close on backdrop\r\n  const overlay=document.getElementById('winOverlay');\r\n  overlay.addEventListener('click',(e)=>{ if(e.target===overlay) overlay.classList.remove('show'); });\r\n  \/\/ also close when the link is clicked (navigation will proceed)\r\n  document.getElementById('claimBtn').addEventListener('click',()=> overlay.classList.remove('show'));\r\n\r\n  \/* confetti *\/\r\n  const c=document.getElementById('confettiCanvas'), cctx=c.getContext('2d');\r\n  function sizeConfetti(){ const dpr=window.devicePixelRatio||1; c.width=Math.round(innerWidth*dpr); c.height=Math.round(innerHeight*dpr); cctx.setTransform(dpr,0,0,dpr,0,0); }\r\n  window.addEventListener('resize', sizeConfetti); sizeConfetti();\r\n  function launchConfetti(duration=2200,count=200){\r\n    sizeConfetti();\r\n    const colors=['#ff3b30','#34c759','#0a84ff','#af52de','#ff9f0a','#ffd60a'];\r\n    const parts=[];\r\n    for(let i=0;i<count;i++){ parts.push({x:Math.random()*innerWidth,y:-10-Math.random()*innerHeight\/3,r:4+Math.random()*6,t:Math.random()*Math.PI,vy:2+Math.random()*3,vx:(Math.random()-0.5)*2,color:colors[i%colors.length]}); }\r\n    let start;\r\n    function frame(now){\r\n      if(!start) start=now;\r\n      const elapsed=now-start;\r\n      cctx.clearRect(0,0,innerWidth,innerHeight);\r\n      parts.forEach(p=>{ p.y+=p.vy; p.x+=p.vx; p.t+=0.1; cctx.save(); cctx.translate(p.x,p.y); cctx.rotate(p.t); cctx.fillStyle=p.color; cctx.fillRect(-p.r\/2,-p.r\/2,p.r,p.r*2); cctx.restore(); });\r\n      if(elapsed<duration) requestAnimationFrame(frame); else cctx.clearRect(0,0,innerWidth,innerHeight);\r\n    }\r\n    requestAnimationFrame(frame);\r\n  }\r\n\r\n  \/* keep main button label *\/\r\n  (function keepBtn(){\r\n    const WANT='Try Your Luck';\r\n    const b=document.getElementById('btnSpin');\r\n    function set(){ if(b && b.textContent.trim()!=WANT){ b.textContent=WANT; b.setAttribute('aria-label',WANT); b.title=WANT; } }\r\n    document.addEventListener('DOMContentLoaded', set); new MutationObserver(set).observe(document.body,{childList:true,subtree:true});\r\n  })();\r\n\r\n  \/* Public API: change slice image later *\/\r\n  window.setSliceImage = async function(index, url){\r\n    if(index<0 || index>=slices.length) return;\r\n    slices[index].img = url || null;\r\n    slices[index]._img = await loadImage(url);\r\n    drawWheel(currentRotation);\r\n  };\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Spin Wheel \u2013 clean metallic \u0986\u09aa\u09a8\u09be\u09b0 \u09ad\u09be\u0997\u09cd\u09af \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8 \u0986\u09aa\u09a8\u09bf \u099c\u09bf\u09a4\u09c7\u099b\u09c7\u09a8 \u099c\u09bf\u09b2\u09bf \u09b8\u09cd\u09aa\u09bf\u09a8 x18 \u098f\u0996\u09a8\u0987 \u09aa\u09c1\u09b0\u09b7\u09cd\u0995\u09be\u09b0 \u09aa\u09be\u09a8<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-341","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/pages\/341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/comments?post=341"}],"version-history":[{"count":12,"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/pages\/341\/revisions"}],"predecessor-version":[{"id":353,"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/pages\/341\/revisions\/353"}],"wp:attachment":[{"href":"https:\/\/e2bet.poker\/index.php\/wp-json\/wp\/v2\/media?parent=341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}