From a7edca9a5abebb6a8ecbdf9462970c13a6595a75 Mon Sep 17 00:00:00 2001 From: oimwiodev Date: Fri, 26 Jun 2026 21:25:23 +0100 Subject: [PATCH] Atlas: 3999 MAD limited offer, animated deal price + blinking tag --- templates/index.html | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/templates/index.html b/templates/index.html index 6dc754c..3f46e26 100644 --- a/templates/index.html +++ b/templates/index.html @@ -101,6 +101,23 @@ 50% { box-shadow: 0 0 20px rgba(59,130,246,0.6); } } + /* ── Limited offer ── */ + .old-price { text-decoration:line-through; color:var(--muted); font-size:18px; font-weight:400; } + .deal-price { font-size:32px; font-weight:800; color:#22c55e; animation: dealPulse 1.5s ease-in-out infinite; } + @keyframes dealPulse { + 0%, 100% { transform:scale(1); } + 50% { transform:scale(1.04); } + } + .limited-tag { + display:inline-block; background:#ef4444; color:#fff; + padding:3px 10px; border-radius:4px; font-size:11px; font-weight:700; + animation: blink 1s ease-in-out infinite; margin-top:4px; + } + @keyframes blink { + 0%, 100% { opacity:1; } + 50% { opacity:0.5; } + } + /* Why */ .reasons { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:24px; } .reason { text-align:center; padding:24px; } @@ -350,16 +367,23 @@ async function loadPricing() { } }; const lang = getLang(); - grid.innerHTML = tiers.map(t => ` + grid.innerHTML = tiers.map(t => { + const isAtlas = t.name === 'Atlas'; + const priceHTML = isAtlas + ? `
${Number(t.sell_price).toLocaleString('fr-MA')} MAD
+
3 999 MAD
+
${lang==='fr'?'Offre limitée':'Limited offer'}
` + : `
${Number(t.sell_price).toLocaleString('fr-MA')} MAD
`; + return `
- ${t.name === 'Atlas' ? '
LE BON CHOIX
' : ''} + ${isAtlas ? '
LE BON CHOIX
' : ''}

${t.name}

-
${Number(t.sell_price).toLocaleString('fr-MA')} MAD
+ ${priceHTML}
${(desc[lang]||desc.fr)[t.name] || t.description || ''}
${lang==='fr'?'Commander':'Order'} -
- `).join(''); + `; + }).join(''); } catch(e) { document.getElementById('pricingGrid').innerHTML = '

Pricing unavailable

'; } } loadPricing();