{"id":13463,"date":"2026-07-01T21:00:29","date_gmt":"2026-07-01T19:00:29","guid":{"rendered":"https:\/\/flutur.shop\/?page_id=13463"},"modified":"2026-07-01T21:44:58","modified_gmt":"2026-07-01T19:44:58","slug":"game","status":"publish","type":"page","link":"https:\/\/flutur.shop\/sq\/game\/","title":{"rendered":"Game"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"13463\" class=\"elementor elementor-13463\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3fc0da9 e-flex e-con-boxed ecomus-responsive-column ecomus-tablet-column--default ecomus-responsive-column ecomus-mobile-column--default ecomus-responsive-column ecomus-motion--var(--position) e-con e-parent\" data-id=\"3fc0da9\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eafa5a2 elementor-widget elementor-widget-heading\" data-id=\"eafa5a2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Luaj dhe Fito<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6d356e1 e-flex e-con-boxed ecomus-responsive-column ecomus-tablet-column--default ecomus-responsive-column ecomus-mobile-column--default ecomus-responsive-column ecomus-motion--var(--position) e-con e-parent\" data-id=\"6d356e1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38f67c6 elementor-widget elementor-widget-html\" data-id=\"38f67c6\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\n  ============================================================================\n  FLUTUR COSMETICS - \"Lash Catcher\" arcade game\n  ============================================================================\n  Move the pink Flutur bag to CATCH the good items (lashes, butterflies,\n  hearts, sunglasses, nail charms) and AVOID the bad ones (broken lash,\n  smudged mascara, coffee spill, \"no plans\" card). Your score unlocks a\n  discount voucher. Reach 96+ to chase the Flutura e Art&#235; for 50% off.\n\n  HOW TO ADD IT TO flutur.shop (WordPress \/ Elementor):\n    1. Create a page, add an \"HTML\" widget (Elementor) or \"Custom HTML\"\n       block (Gutenberg).\n    2. Paste this ENTIRE file in and publish. It is fully self-contained.\n\n  ---------------------------------------------------------------------------\n  SHARED LEADERBOARD + EMAIL CAPTURE (optional but recommended)\n  ---------------------------------------------------------------------------\n  The game works immediately with a device-only leaderboard. To make the\n  leaderboard SHARED across all visitors and to collect player emails,\n  create a free Supabase project (supabase.com) and:\n\n  1. In Supabase -> SQL Editor, run:\n\n     create table if not exists scores (\n       id uuid primary key default gen_random_uuid(),\n       created_at timestamptz default now(),\n       name text not null,\n       score int not null,\n       week text not null\n     );\n     create table if not exists signups (\n       id uuid primary key default gen_random_uuid(),\n       created_at timestamptz default now(),\n       email text not null,\n       discount int,\n       score int\n     );\n     alter table scores enable row level security;\n     alter table signups enable row level security;\n     create policy \"public read scores\"   on scores  for select using (true);\n     create policy \"public insert scores\"  on scores  for insert with check (true);\n     create policy \"public insert signups\" on signups for insert with check (true);\n\n  2. In Supabase -> Project Settings -> API, copy the Project URL and the\n     \"anon public\" key, and paste them into FLUTUR_CONFIG below.\n\n  3. Edit the CODES below to match the WooCommerce coupon codes you create.\n\n  Emails land in the Supabase \"signups\" table (export any time, or connect\n  Zapier\/Make to your email tool to auto-send the code).\n  ============================================================================\n-->\n<div id=\"flutur-game-root\">\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap');\n#flutur-game-root{\n  --fg-pink:#e14a8b; --fg-pink-dark:#c43574; --fg-pink-soft:#fbe4ef; --fg-pink-tint:#fdf4f8;\n  --fg-ink:#2c2230; --fg-muted:#8a7d86; --fg-line:#f0dbe6; --fg-gold:#e8b53a;\n  font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  color:var(--fg-ink); max-width:480px; margin:0 auto; padding:8px; box-sizing:border-box;\n}\n#flutur-game-root *{box-sizing:border-box;}\n.fg-shell{\n  position:relative; background:#fff; border:1px solid var(--fg-line); border-radius:24px;\n  box-shadow:0 22px 50px -28px rgba(200,60,120,.5); overflow:hidden;\n}\n.fg-stage{position:relative; width:100%;}\n#fg-canvas{display:block; width:100%; height:auto; background:linear-gradient(180deg,#ffd9ec 0%,#ffeef6 55%,#ffe4f1 100%);}\n\/* overlays *\/\n.fg-overlay{\n  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center;\n  justify-content:center; text-align:center; padding:26px 22px; gap:12px;\n  background:linear-gradient(180deg,rgba(255,247,251,.94),rgba(255,235,244,.97));\n  backdrop-filter:blur(2px); overflow-y:auto;\n}\n.fg-overlay.hidden{display:none;}\n.fg-kicker{display:inline-block; background:var(--fg-pink); color:#fff; padding:5px 14px;\n  border-radius:999px; font-size:.68rem; letter-spacing:2px; text-transform:uppercase; font-weight:700;}\n.fg-title{font-size:1.7rem; font-weight:800; margin:2px 0 0; line-height:1.1;}\n.fg-sub{color:var(--fg-muted); font-weight:300; margin:0; font-size:.95rem; max-width:340px;}\n.fg-legend{display:flex; gap:16px; justify-content:center; margin:6px 0 2px; flex-wrap:wrap;}\n.fg-legend div{font-size:.78rem; color:var(--fg-muted);}\n.fg-legend .em{font-size:1.35rem; display:block;}\n.fg-legend .good b{color:#2e9d63;} .fg-legend .bad b{color:#d64545;}\n.fg-btn{font-family:inherit; font-weight:700; font-size:1rem; border:none; border-radius:999px;\n  padding:14px 34px; cursor:pointer; background:var(--fg-pink); color:#fff; transition:all .18s;}\n.fg-btn:hover{background:var(--fg-pink-dark); transform:translateY(-2px);}\n.fg-btn-ghost{background:transparent; color:var(--fg-muted); border:1.5px solid var(--fg-line); padding:11px 22px; font-size:.9rem;}\n.fg-btn-ghost:hover{color:var(--fg-pink); border-color:var(--fg-pink); background:transparent;}\n.fg-hint{font-size:.76rem; color:var(--fg-muted);}\n\/* HUD *\/\n.fg-hud{display:flex; justify-content:space-between; align-items:center; padding:12px 16px;\n  background:#fff; border-top:1px solid var(--fg-line); font-weight:600; font-size:.9rem;}\n.fg-hud .fg-score{color:var(--fg-pink);}\n.fg-hud .fg-lives{letter-spacing:2px;}\n.fg-hud .fg-time{color:var(--fg-muted);}\n\/* result *\/\n.fg-voucher{background:linear-gradient(135deg,var(--fg-pink),#f186b6); color:#fff; border-radius:18px;\n  padding:16px 20px; width:100%; max-width:340px;}\n.fg-voucher.gold{background:linear-gradient(135deg,#f4c752,#e79a2a); color:#4a2f00;}\n.fg-voucher .pct{font-size:2.4rem; font-weight:800; line-height:1;}\n.fg-voucher .lbl{font-size:.8rem; text-transform:uppercase; letter-spacing:1.5px; opacity:.95;}\n.fg-form{display:flex; flex-direction:column; gap:8px; width:100%; max-width:340px;}\n.fg-row{display:flex; gap:8px;}\n.fg-input{flex:1; font-family:inherit; font-size:.92rem; padding:12px 14px; border:1.5px solid var(--fg-line);\n  border-radius:12px; outline:none; color:var(--fg-ink); background:#fff; min-width:0;}\n.fg-input:focus{border-color:var(--fg-pink);}\n.fg-input.short{max-width:78px; flex:0 0 auto;}\n.fg-code{background:var(--fg-pink-tint); border:1.5px dashed var(--fg-pink); border-radius:12px;\n  padding:12px; font-weight:700; color:var(--fg-pink-dark); letter-spacing:1px; width:100%; max-width:340px;}\n.fg-msg{font-size:.82rem; color:var(--fg-muted); min-height:1em;}\n.fg-board{width:100%; max-width:340px; text-align:left;}\n.fg-board h3{font-size:.78rem; letter-spacing:1.5px; text-transform:uppercase; color:var(--fg-pink);\n  font-weight:700; margin:0 0 8px; display:flex; align-items:center; gap:8px;}\n.fg-board h3::after{content:\"\"; flex:1; height:1px; background:var(--fg-line);}\n.fg-board ol{list-style:none; margin:0; padding:0; counter-reset:rank;}\n.fg-board li{display:flex; justify-content:space-between; align-items:center; padding:7px 10px;\n  border-radius:10px; font-size:.9rem;}\n.fg-board li:nth-child(odd){background:var(--fg-pink-tint);}\n.fg-board li .rk{color:var(--fg-muted); font-weight:700; width:26px;}\n.fg-board li .nm{flex:1; font-weight:500;}\n.fg-board li .sc{font-weight:700; color:var(--fg-pink);}\n.fg-board li.me{outline:2px solid var(--fg-pink);}\n.fg-board .empty{font-size:.82rem; color:var(--fg-muted); padding:8px 0;}\n.fg-actions{display:flex; gap:10px; flex-wrap:wrap; justify-content:center;}\n\/* live board under the window *\/\n.fg-live{margin-top:12px; background:#fff; border:1px solid var(--fg-line); border-radius:20px;\n  box-shadow:0 18px 44px -30px rgba(200,60,120,.45); padding:14px 18px;}\n.fg-live .fg-board{max-width:none; width:100%;}\n.fg-live-dot{width:8px; height:8px; border-radius:50%; background:#2e9d63; display:inline-block; animation:fgpulse 1.5s infinite;}\n@keyframes fgpulse{0%,100%{opacity:1; transform:scale(1);} 50%{opacity:.3; transform:scale(.6);}}\n.fg-updated{font-size:.7rem; color:var(--fg-muted); text-align:right; margin-top:8px;}\n@media(max-width:420px){ .fg-title{font-size:1.45rem;} .fg-voucher .pct{font-size:2rem;} }\n<\/style>\n\n<div class=\"fg-shell\">\n  <div class=\"fg-stage\">\n    <canvas id=\"fg-canvas\" width=\"440\" height=\"600\"><\/canvas>\n\n    <!-- START -->\n    <div class=\"fg-overlay\" id=\"fg-start\">\n      <span class=\"fg-kicker\">Flutur Cosmetics<\/span>\n      <h2 class=\"fg-title\">Lash Catcher<\/h2>\n      <p class=\"fg-sub\">Kap g&#235;rat e bukura n&#235; &#231;ant&#235;n Flutur. Shmang katastrofat. Rezultati yt = zbritja jote.<\/p>\n      <div class=\"fg-legend\">\n        <div class=\"good\"><span class=\"em\">&#128133;&#128132;&#129419;&#128151;<\/span><b>KAP<\/b><\/div>\n        <div class=\"bad\"><span class=\"em\">&#128683;&#129344;<\/span><b>SHMANG<\/b><\/div>\n      <\/div>\n      <button class=\"fg-btn\" id=\"fg-start-btn\">Luaj tani &#127882;<\/button>\n      <p class=\"fg-hint\">L&#235;vize me gisht, maus ose me shigjeta<\/p>\n    <\/div>\n\n    <!-- GAME OVER -->\n    <div class=\"fg-overlay hidden\" id=\"fg-over\"><\/div>\n  <\/div>\n\n  <div class=\"fg-hud\">\n    <span>Pik&#235;: <span class=\"fg-score\" id=\"fg-score\">0<\/span><\/span>\n    <span class=\"fg-lives\" id=\"fg-lives\">&#10084;&#65039;&#10084;&#65039;&#10084;&#65039;<\/span>\n    <span class=\"fg-time\">&#9201;&#65039; <span id=\"fg-time\">45<\/span>s<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"fg-live\">\n  <div class=\"fg-board\">\n    <h3>Top 10 Vajzat Flutur K&#235;t&#235; Jav&#235; <span class=\"fg-live-dot\" title=\"LIVE\"><\/span><\/h3>\n    <ol id=\"fg-live-list\"><li class=\"empty\">Duke u ngarkuar&#8230;<\/li><\/ol>\n    <div class=\"fg-updated\" id=\"fg-live-updated\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  \"use strict\";\n\n  \/* ======================= CONFIG (edit me) ========================= *\/\n  var FLUTUR_CONFIG = {\n    SUPABASE_URL: \"https:\/\/ggdzngxirdaojqygtjxh.supabase.co\",\n    SUPABASE_ANON_KEY: \"sb_publishable_0hU_9IwMlXppG_jLlZJ6xg_fihW081E\",\n    SHOP_URL: \"https:\/\/flutur.shop\/sq\/shop\/\",\n    CODES: {10:\"FLUTUR10\", 15:\"FLUTUR15\", 20:\"FLUTUR20\", 25:\"FLUTUR25\", 30:\"FLUTUR30\", 50:\"GOLDEN50\"},\n    ROUND_SECONDS: 45,\n    LIVES: 3\n  };\n\n  \/* ======================= ELEMENTS ========================= *\/\n  var canvas=document.getElementById('fg-canvas');\n  var ctx=canvas.getContext('2d');\n  var elScore=document.getElementById('fg-score');\n  var elLives=document.getElementById('fg-lives');\n  var elTime=document.getElementById('fg-time');\n  var startOv=document.getElementById('fg-start');\n  var overOv=document.getElementById('fg-over');\n  var startBtn=document.getElementById('fg-start-btn');\n\n  \/* ======================= ITEM TYPES ========================= *\/\n  \/\/ good items (emoji, points)\n  var GOOD=[\n    {e:\"\\ud83d\\udc85\",p:3},   \/\/ thonj (nails)\n    {e:\"\\ud83d\\udc84\",p:3},   \/\/ buze (lipstick)\n    {e:\"\\ud83e\\udd8b\",p:3},   \/\/ flutura (butterfly)\n    {e:\"\\ud83d\\udc97\",p:3}    \/\/ zemra pink (pink heart)\n  ];\n  var BAD=[\n    {e:\"\\ud83d\\udeab\"},   \/\/ no plans \/ e ndaluar\n    {e:\"\\ud83e\\udd40\"}    \/\/ trendafili i thate (wilted rose)\n  ];\n  var GOLD={e:\"\\ud83e\\udd8b\", gold:true};\n\n  \/* ======================= STATE ========================= *\/\n  var DPR=Math.max(1,Math.min(2,window.devicePixelRatio||1));\n  var W=440,H=600;            \/\/ logical size\n  var items=[], bagX=W\/2, targetX=null, keyDir=0;\n  var score=0, lives=FLUTUR_CONFIG.LIVES, timeLeft=FLUTUR_CONFIG.ROUND_SECONDS;\n  var running=false, lastT=0, spawnT=0, elapsed=0, goldenActive=false, goldenCaught=false;\n  var flashes=[]; \/\/ score popups\n\n  function resize(){\n    var cssW=canvas.clientWidth||W;\n    W=cssW; H=Math.round(cssW*1.36);\n    canvas.width=W*DPR; canvas.height=H*DPR;\n    canvas.style.height=H+\"px\";\n    ctx.setTransform(DPR,0,0,DPR,0,0);\n    if(bagX>W-40) bagX=W\/2;\n  }\n\n  \/* ======================= INPUT ========================= *\/\n  function pointer(x){ var r=canvas.getBoundingClientRect(); targetX=(x-r.left); }\n  canvas.addEventListener('mousemove',function(e){ if(running) pointer(e.clientX); });\n  canvas.addEventListener('touchmove',function(e){ if(running){ pointer(e.touches[0].clientX); e.preventDefault(); } },{passive:false});\n  canvas.addEventListener('touchstart',function(e){ if(running){ pointer(e.touches[0].clientX); } },{passive:true});\n  window.addEventListener('keydown',function(e){\n    if(e.key==='ArrowLeft'||e.key==='a'){keyDir=-1;}\n    else if(e.key==='ArrowRight'||e.key==='d'){keyDir=1;}\n  });\n  window.addEventListener('keyup',function(e){\n    if((e.key==='ArrowLeft'||e.key==='a')&&keyDir<0)keyDir=0;\n    if((e.key==='ArrowRight'||e.key==='d')&&keyDir>0)keyDir=0;\n  });\n\n  \/* ======================= GAME FLOW ========================= *\/\n  function startGame(){\n    resize();\n    items=[]; flashes=[]; score=0; lives=FLUTUR_CONFIG.LIVES;\n    timeLeft=FLUTUR_CONFIG.ROUND_SECONDS; elapsed=0; spawnT=0;\n    goldenActive=false; goldenCaught=false; bagX=W\/2; targetX=null; keyDir=0;\n    running=true; startOv.classList.add('hidden'); overOv.classList.add('hidden');\n    updateHUD(); lastT=performance.now(); requestAnimationFrame(loop);\n  }\n  startBtn.addEventListener('click',startGame);\n\n  function endGame(){\n    running=false;\n    renderGameOver();\n  }\n\n  function updateHUD(){\n    elScore.textContent=score;\n    elTime.textContent=Math.max(0,Math.ceil(timeLeft));\n    var s=\"\"; for(var i=0;i<lives;i++) s+=\"\\u2764\\ufe0f\";\n    for(var j=lives;j<FLUTUR_CONFIG.LIVES;j++) s+=\"\\ud83e\\udd0d\";\n    elLives.innerHTML=s;\n  }\n\n  function spawn(){\n    var difficulty=Math.min(1, elapsed\/24);\n    var r=Math.random();\n    var type;\n    if(score>=96 && !goldenCaught && !goldenActive && Math.random()<0.15){\n      type=GOLD; goldenActive=true;\n    } else if(r < 0.32 + difficulty*0.16){ \/\/ bad share grows a bit\n      type=BAD[(Math.random()*BAD.length)|0];\n    } else {\n      type=GOOD[(Math.random()*GOOD.length)|0];\n    }\n    var size=34;\n    items.push({\n      x:20+Math.random()*(W-40), y:-30,\n      vy:(200+difficulty*300+Math.random()*90),\n      e:type.e, good:!type.e||GOOD.indexOf(type)>-1, bad:BAD.indexOf(type)>-1,\n      gold:!!type.gold, p:type.p||0, size:size, rot:(Math.random()-0.5)*0.5\n    });\n  }\n\n  function loop(now){\n    if(!running) return;\n    var dt=Math.min(0.05,(now-lastT)\/1000); lastT=now;\n    elapsed+=dt; timeLeft-=dt; spawnT-=dt;\n\n    if(timeLeft<=0){ updateHUD(); endGame(); return; }\n\n    \/\/ spawn cadence speeds up over time\n    var interval=Math.max(0.28, 0.80 - elapsed*0.018);\n    if(spawnT<=0){ spawn(); spawnT=interval; }\n\n    \/\/ move bag\n    if(targetX!=null){ bagX += (targetX-bagX)*Math.min(1,dt*17); }\n    if(keyDir!==0){ bagX += keyDir*480*dt; targetX=null; }\n    bagX=Math.max(34,Math.min(W-34,bagX));\n\n    var bagY=H-46, catchHalf=40;\n    for(var i=items.length-1;i>=0;i--){\n      var it=items[i]; it.y+=it.vy*dt;\n      \/\/ catch\n      if(it.y>=bagY-24 && it.y<=bagY+32 && Math.abs(it.x-bagX)<catchHalf){\n        if(it.gold){ goldenCaught=true; goldenActive=false; score+=10; addFlash(it.x,it.y,\"+50% \\ud83e\\udd8b\",\"#e79a2a\"); }\n        else if(it.bad){ lives--; score=Math.max(0,score-4); addFlash(it.x,it.y,\"-4\",\"#d64545\"); if(lives<=0){ items.splice(i,1); updateHUD(); endGame(); return; } }\n        else { score+=it.p; addFlash(it.x,it.y,\"+\"+it.p,\"#2e9d63\"); }\n        items.splice(i,1); updateHUD(); continue;\n      }\n      \/\/ fell off\n      if(it.y>H+40){ if(it.gold) goldenActive=false; items.splice(i,1); }\n    }\n    draw();\n    requestAnimationFrame(loop);\n  }\n\n  function addFlash(x,y,txt,col){ flashes.push({x:x,y:y,txt:txt,col:col,life:0.8}); }\n\n  \/* ======================= DRAW ========================= *\/\n  function draw(){\n    ctx.clearRect(0,0,W,H);\n    \/\/ falling items\n    for(var i=0;i<items.length;i++){\n      var it=items[i];\n      if(it.bad){ \/\/ red warning ring\n        ctx.beginPath(); ctx.arc(it.x,it.y,it.size*0.72,0,Math.PI*2);\n        ctx.fillStyle=\"rgba(214,69,69,0.14)\"; ctx.fill();\n      } else if(it.gold){\n        ctx.beginPath(); ctx.arc(it.x,it.y,it.size*0.95,0,Math.PI*2);\n        ctx.fillStyle=\"rgba(231,154,42,0.28)\"; ctx.fill();\n      }\n      ctx.save(); ctx.translate(it.x,it.y); ctx.rotate(it.rot);\n      ctx.font=(it.gold?it.size*1.25:it.size)+\"px 'Segoe UI Emoji','Apple Color Emoji',sans-serif\";\n      ctx.textAlign=\"center\"; ctx.textBaseline=\"middle\";\n      ctx.fillText(it.e,0,0); ctx.restore();\n    }\n    \/\/ score flashes\n    for(var f=flashes.length-1;f>=0;f--){\n      var fl=flashes[f]; fl.life-=0.03; fl.y-=0.8;\n      if(fl.life<=0){ flashes.splice(f,1); continue; }\n      ctx.globalAlpha=Math.max(0,fl.life); ctx.fillStyle=fl.col;\n      ctx.font=\"700 16px 'Poppins',sans-serif\"; ctx.textAlign=\"center\";\n      ctx.fillText(fl.txt,fl.x,fl.y); ctx.globalAlpha=1;\n    }\n    drawBag(bagX,H-46);\n  }\n\n  function drawBag(x,y){\n    ctx.save(); ctx.translate(x,y);\n    var w=72, h=56;\n    var top=-h*0.60, bottom=h*0.46;\n    var halfTop=w\/2, halfBot=w\/2-5;\n    var pink=\"#ff2ea0\", pink2=\"#ff6bc0\", black=\"#141216\";\n    \/\/ black cord handles\n    ctx.strokeStyle=\"#17141a\"; ctx.lineWidth=3; ctx.lineCap=\"round\";\n    ctx.beginPath(); ctx.arc(-w*0.20, top+1, 12, Math.PI*1.02, Math.PI*1.98); ctx.stroke();\n    ctx.beginPath(); ctx.arc(w*0.20, top+1, 12, Math.PI*1.02, Math.PI*1.98); ctx.stroke();\n    \/\/ tapered bag body: black fill + hot-pink edge\n    ctx.beginPath();\n    ctx.moveTo(-halfTop, top); ctx.lineTo(halfTop, top);\n    ctx.lineTo(halfBot, bottom); ctx.lineTo(-halfBot, bottom); ctx.closePath();\n    ctx.fillStyle=black; ctx.fill();\n    ctx.lineJoin=\"round\"; ctx.lineWidth=4; ctx.strokeStyle=pink; ctx.stroke();\n    \/\/ pink top rim\n    ctx.fillStyle=pink; ctx.fillRect(-halfTop, top-3, w, 5);\n    \/\/ pink butterfly logo (two wing pairs + body line)\n    var cy=top+(bottom-top)*0.44;\n    ctx.fillStyle=pink2;\n    ctx.beginPath(); ctx.ellipse(-6, cy-4, 5.5, 7, -0.5, 0, Math.PI*2); ctx.fill();\n    ctx.beginPath(); ctx.ellipse( 6, cy-4, 5.5, 7,  0.5, 0, Math.PI*2); ctx.fill();\n    ctx.beginPath(); ctx.ellipse(-5, cy+5, 4.2, 5.5, 0.5, 0, Math.PI*2); ctx.fill();\n    ctx.beginPath(); ctx.ellipse( 5, cy+5, 4.2, 5.5, -0.5, 0, Math.PI*2); ctx.fill();\n    ctx.strokeStyle=black; ctx.lineWidth=1.6;\n    ctx.beginPath(); ctx.moveTo(0, cy-8); ctx.lineTo(0, cy+9); ctx.stroke();\n    \/\/ FLUTUR wordmark\n    ctx.fillStyle=pink2; ctx.font=\"700 8px 'Poppins',sans-serif\";\n    ctx.textAlign=\"center\"; ctx.textBaseline=\"middle\";\n    ctx.fillText(\"FLUTUR\", 0, bottom-9);\n    ctx.restore();\n  }\n  function roundRect(x,y,w,h,r){ ctx.beginPath(); ctx.moveTo(x+r,y);\n    ctx.arcTo(x+w,y,x+w,y+h,r); ctx.arcTo(x+w,y+h,x,y+h,r);\n    ctx.arcTo(x,y+h,x,y,r); ctx.arcTo(x,y,x+w,y,r); ctx.closePath(); }\n\n  \/* ======================= VOUCHER ========================= *\/\n  function discountFor(sc,golden){\n    if(golden) return 50;\n    if(sc>=96) return 30;\n    if(sc>=81) return 30;\n    if(sc>=61) return 25;\n    if(sc>=41) return 20;\n    if(sc>=21) return 15;\n    return 10;\n  }\n\n  \/* ======================= LEADERBOARD (Supabase + local) ========= *\/\n  function weekKey(){\n    var d=new Date(); var day=(d.getUTCDay()+6)%7;\n    d.setUTCDate(d.getUTCDate()-day+3);\n    var firstThu=new Date(Date.UTC(d.getUTCFullYear(),0,4));\n    var week=1+Math.round(((d-firstThu)\/86400000-3+((firstThu.getUTCDay()+6)%7))\/7);\n    return d.getUTCFullYear()+\"-W\"+(week<10?\"0\"+week:week);\n  }\n  function sbEnabled(){ return !!(FLUTUR_CONFIG.SUPABASE_URL && FLUTUR_CONFIG.SUPABASE_ANON_KEY); }\n  function sbHeaders(extra){\n    var h={\"apikey\":FLUTUR_CONFIG.SUPABASE_ANON_KEY,\n      \"Authorization\":\"Bearer \"+FLUTUR_CONFIG.SUPABASE_ANON_KEY,\n      \"Content-Type\":\"application\/json\"};\n    if(extra) for(var k in extra) h[k]=extra[k];\n    return h;\n  }\n  function localBoard(){ try{ return JSON.parse(localStorage.getItem(\"flutur_board_\"+weekKey())||\"[]\"); }catch(e){ return []; } }\n  function saveLocal(rec){\n    var b=localBoard(); b.push(rec); b.sort(function(a,c){return c.score-a.score;});\n    b=b.slice(0,20); localStorage.setItem(\"flutur_board_\"+weekKey(),JSON.stringify(b)); return b;\n  }\n  function submitScore(name,sc,cb){\n    var rec={name:name,score:sc,week:weekKey()};\n    saveLocal(rec);\n    if(sbEnabled()){\n      fetch(FLUTUR_CONFIG.SUPABASE_URL+\"\/rest\/v1\/scores\",\n        {method:\"POST\",headers:sbHeaders({\"Prefer\":\"return=minimal\"}),body:JSON.stringify(rec)})\n        .then(function(){cb&&cb(true);}).catch(function(){cb&&cb(false);});\n    } else { cb&&cb(true); }\n  }\n  function fetchBoard(cb){\n    if(sbEnabled()){\n      var u=FLUTUR_CONFIG.SUPABASE_URL+\"\/rest\/v1\/scores?select=name,score&week=eq.\"+weekKey()+\"&order=score.desc&limit=10\";\n      fetch(u,{headers:sbHeaders()}).then(function(r){return r.json();})\n        .then(function(d){ cb(Array.isArray(d)?d:localBoard().slice(0,10)); })\n        .catch(function(){ cb(localBoard().slice(0,10)); });\n    } else { cb(localBoard().slice(0,10)); }\n  }\n  function saveSignup(email,discount,sc){\n    if(sbEnabled()){\n      fetch(FLUTUR_CONFIG.SUPABASE_URL+\"\/rest\/v1\/signups\",\n        {method:\"POST\",headers:sbHeaders({\"Prefer\":\"return=minimal\"}),\n         body:JSON.stringify({email:email,discount:discount,score:sc})}).catch(function(){});\n    }\n    try{ localStorage.setItem(\"flutur_last_email\",email); }catch(e){}\n  }\n\n  \/* ======================= GAME OVER SCREEN ========================= *\/\n  function esc(s){return String(s).replace(\/[&<>\"]\/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];});}\n\n  function renderGameOver(){\n    var disc=discountFor(score,goldenCaught);\n    var gold=goldenCaught;\n    var code=FLUTUR_CONFIG.CODES[disc]||(\"FLUTUR\"+disc);\n    var h=\"\";\n    h+='<span class=\"fg-kicker\">'+(gold?\"Fitore e art\\u00eb! \\ud83e\\udd8b\":\"Loja mbaroi\")+'<\/span>';\n    h+='<h2 class=\"fg-title\">'+score+' pik\\u00eb<\/h2>';\n    h+='<div class=\"fg-voucher'+(gold?' gold':'')+'\"><div class=\"lbl\">Zhbllokove<\/div>'+\n       '<div class=\"pct\">'+disc+'% ZBRITJE<\/div>'+\n       (gold?'<div class=\"lbl\">Flutura e Art\\u00eb \\u2013 50%!<\/div>':'')+'<\/div>';\n\n    \/\/ email capture\n    h+='<div class=\"fg-form\" id=\"fg-email-form\">'+\n        '<div class=\"fg-hint\" style=\"text-align:center\">Shkruaj email-in p\\u00ebr t\\u00eb marr\\u00eb kodin '+disc+'% <\/div>'+\n        '<div class=\"fg-row\"><input class=\"fg-input\" id=\"fg-email\" type=\"email\" placeholder=\"your@email.com\" autocomplete=\"email\">'+\n        '<button class=\"fg-btn\" id=\"fg-email-btn\" style=\"padding:12px 20px\">Merr<\/button><\/div>'+\n        '<div class=\"fg-msg\" id=\"fg-email-msg\"><\/div>'+\n       '<\/div>';\n    h+='<div id=\"fg-code-wrap\"><\/div>';\n\n    \/\/ leaderboard submit\n    h+='<div class=\"fg-form\" id=\"fg-name-form\">'+\n        '<div class=\"fg-hint\" style=\"text-align:center\">Shto rezultatin n\\u00eb tabel\\u00ebn e lider\\u00ebve<\/div>'+\n        '<div class=\"fg-row\"><input class=\"fg-input\" id=\"fg-fname\" placeholder=\"Emri\" maxlength=\"18\">'+\n        '<input class=\"fg-input short\" id=\"fg-linit\" placeholder=\"M.\" maxlength=\"1\">'+\n        '<button class=\"fg-btn\" id=\"fg-name-btn\" style=\"padding:12px 18px\">Shto<\/button><\/div>'+\n        '<div class=\"fg-msg\" id=\"fg-name-msg\"><\/div>'+\n       '<\/div>';\n\n    \/\/ board\n    h+='<div class=\"fg-board\"><h3>Top 10 Vajzat Flutur K\\u00ebt\\u00eb Jav\\u00eb<\/h3><ol id=\"fg-board-list\"><li class=\"empty\">Duke u ngarkuar\\u2026<\/li><\/ol><\/div>';\n\n    \/\/ actions\n    h+='<div class=\"fg-actions\">'+\n        '<button class=\"fg-btn\" id=\"fg-again\">Luaj p\\u00ebrseri<\/button>'+\n        '<button class=\"fg-btn fg-btn-ghost\" id=\"fg-share\">Ndaj rezultatin<\/button>'+\n        '<a class=\"fg-btn fg-btn-ghost\" href=\"'+FLUTUR_CONFIG.SHOP_URL+'\" target=\"_blank\" rel=\"noopener\">Bli tani<\/a>'+\n       '<\/div>';\n\n    overOv.innerHTML=h; overOv.classList.remove('hidden');\n    wireGameOver(disc,code);\n    loadBoard(null);\n  }\n\n  function loadBoard(myName){\n    fetchBoard(function(rows){\n      var ol=document.getElementById('fg-board-list'); if(!ol) return;\n      if(!rows||!rows.length){ ol.innerHTML='<li class=\"empty\">B\\u00ebhu e para n\\u00eb tabel\\u00eb!<\/li>'; return; }\n      ol.innerHTML=rows.map(function(r,i){\n        var me=(myName && r.name===myName)?' me':'';\n        return '<li class=\"'+me+'\"><span class=\"rk\">'+(i+1)+'<\/span>'+\n          '<span class=\"nm\">'+esc(r.name)+'<\/span><span class=\"sc\">'+r.score+'<\/span><\/li>';\n      }).join('');\n    });\n  }\n\n  var liveTimer=null;\n  function renderLive(){\n    fetchBoard(function(rows){\n      var ol=document.getElementById('fg-live-list'); if(!ol) return;\n      if(!rows||!rows.length){ ol.innerHTML='<li class=\"empty\">B\\u00ebhu e para n\\u00eb tabel\\u00eb!<\/li>'; }\n      else { ol.innerHTML=rows.map(function(r,i){\n        return '<li><span class=\"rk\">'+(i+1)+'<\/span><span class=\"nm\">'+esc(r.name)+'<\/span><span class=\"sc\">'+r.score+'<\/span><\/li>';\n      }).join(''); }\n      var u=document.getElementById('fg-live-updated');\n      if(u){ u.textContent=\"P\\u00ebrdit\\u00ebsuar \"+(new Date()).toLocaleTimeString(); }\n    });\n  }\n\n  function wireGameOver(disc,code){\n    document.getElementById('fg-again').addEventListener('click',startGame);\n\n    document.getElementById('fg-email-btn').addEventListener('click',function(){\n      var v=(document.getElementById('fg-email').value||\"\").trim();\n      var msg=document.getElementById('fg-email-msg');\n      if(!\/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\/.test(v)){ msg.style.color=\"#d64545\"; msg.textContent=\"T\\u00eb lutem shkruaj nj\\u00eb email t\\u00eb vlefsh\\u00ebm.\"; return; }\n      saveSignup(v,disc,score);\n      msg.style.color=\"#2e9d63\"; msg.textContent=\"Urime! Ky \\u00ebsht\\u00eb kodi yt \\ud83d\\udc96\";\n      document.getElementById('fg-email-form').style.opacity=\".6\";\n      document.getElementById('fg-code-wrap').innerHTML=\n        '<div class=\"fg-code\">'+esc(code)+' &nbsp;\\u2022&nbsp; '+disc+'% ZBRITJE<\/div>';\n    });\n\n    document.getElementById('fg-name-btn').addEventListener('click',function(){\n      var fn=(document.getElementById('fg-fname').value||\"\").trim();\n      var li=(document.getElementById('fg-linit').value||\"\").trim();\n      var msg=document.getElementById('fg-name-msg');\n      if(fn.length<2){ msg.style.color=\"#d64545\"; msg.textContent=\"Shto emrin t\\u00ebnd.\"; return; }\n      var display=fn.charAt(0).toUpperCase()+fn.slice(1)+(li?\" \"+li.charAt(0).toUpperCase()+\".\":\"\");\n      msg.style.color=\"#8a7d86\"; msg.textContent=\"Duke ruajtur\\u2026\";\n      submitScore(display,score,function(){\n        msg.style.color=\"#2e9d63\"; msg.textContent=\"Je n\\u00eb tabel\\u00eb!\";\n        document.getElementById('fg-name-form').style.opacity=\".6\";\n        loadBoard(display); renderLive();\n      });\n    });\n\n    document.getElementById('fg-share').addEventListener('click',function(){\n      var txt=\"B\\u00ebra \"+score+\" pik\\u00eb n\\u00eb Flutur Lash Catcher dhe fitova \"+disc+\"% zbritje! A m\\u00eb kalon dot? \\ud83e\\udd8b\";\n      var url=location.href;\n      if(navigator.share){ navigator.share({title:\"Flutur Lash Catcher\",text:txt,url:url}).catch(function(){}); }\n      else if(navigator.clipboard){ navigator.clipboard.writeText(txt+\" \"+url); var b=this; b.textContent=\"U kopjua!\"; setTimeout(function(){b.textContent=\"Ndaj rezultatin\";},1500); }\n    });\n  }\n\n  \/* ======================= BOOT ========================= *\/\n  window.addEventListener('resize',function(){ if(!running) resize(); });\n  resize(); draw();\n  renderLive();\n  liveTimer=setInterval(renderLive, 12000);\n})();\n<\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Luaj dhe Fito Flutur Cosmetics Lash Catcher Kap g&#235;rat e bukura n&#235; &#231;ant&#235;n Flutur. Shmang katastrofat. Rezultati yt = zbritja jote. &#128133;&#128132;&#129419;&#128151;KAP &#128683;&#129344;SHMANG Luaj tani &#127882; L&#235;vize me gisht, maus ose me shigjeta Pik&#235;: 0 &#10084;&#65039;&#10084;&#65039;&#10084;&#65039; &#9201;&#65039; 45s Top 10 Vajzat Flutur K&#235;t&#235; Jav&#235; Duke u ngarkuar&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-13463","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/pages\/13463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/comments?post=13463"}],"version-history":[{"count":0,"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/pages\/13463\/revisions"}],"wp:attachment":[{"href":"https:\/\/flutur.shop\/sq\/wp-json\/wp\/v2\/media?parent=13463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}