Recommended
Lucky Ace
Lucky Ace Casino
100% up to $500 + 50 Free Spins
Fast payouts within 24 hours
Crypto-friendly (BTC, ETH)
Licensed & regulated
Exclusive slots and live dealers
Play Now
Royal Spins
Royal Spins Casino
200% up to $1,000 + 100 Free Spins
Top-tier game providers
VIP rewards & cashback
Secure payments
24/7 multilingual support
Play Now
Golden Tiger
Golden Tiger Casino
120% up to $600 + 30 Free Spins
Lightning-fast withdrawals
Mobile-first gameplay
Responsible gaming tools
Generous daily promotions
Play Now
Disclaimer: Gambling involves risk. Only play if you are 18+ (or the legal age in your jurisdiction). Bonuses and terms may change. Always check the operator’s website for the latest information.
2) styles.css
:root {
--bg: #0b1220;
--card: #0f1a2b;
--text: #e6f1ff;
--muted: #8aa3c9;
--accent: #2cb67d;
--accent-2: #7c3aed;
--warning: #f59e0b;
--border: rgba(255,255,255,0.08);
--shadow: 0 6px 24px rgba(0,0,0,0.35);
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body {
margin: 0;
font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
background: radial-gradient(1200px 600px at 10% 0%, #0d1630 0%, #0b1220 60%) no-repeat, var(--bg);
color: var(--text);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.container { width: min(1100px, 92%); margin: 0 auto; }
.site-header { padding: 36px 0 16px; text-align: center; }
.site-header h1 { margin: 0 0 8px; font-size: 1.9rem; line-height: 1.2; }
.subheadline { margin: 0; color: var(--muted); font-size: 1rem; }
.casino-grid {
display: grid;
grid-template-columns: 1fr;
gap: 18px;
margin: 22px 0 8px;
}
.casino-card {
position: relative;
background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.0)) padding-box, linear-gradient(135deg, rgba(44,182,125,0.35), rgba(124,58,237,0.25)) border-box;
border: 1px solid var(--border);
border-radius: 14px;
padding: 16px;
cursor: pointer;
box-shadow: var(--shadow);
transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
outline: none;
}
.casino-card:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(0,0,0,0.45); }
.casino-card:focus-visible { box-shadow: 0 0 0 3px rgba(44,182,125,0.5), var(--shadow); }
.casino-card.recommended { border-color: rgba(44,182,125,0.5); }
.recommended-badge {
position: absolute; top: 12px; left: 12px;
background: linear-gradient(90deg, var(--accent), #45dfa3);
color: #051114;
font-weight: 700; font-size: .72rem;
padding: 6px 10px; border-radius: 999px;
box-shadow: 0 4px 12px rgba(44,182,125,0.35);
}
.logo { display: flex; align-items: center; justify-content: center; height: 64px; margin-bottom: 10px; }
.logo-svg { width: 160px; height: 60px; filter: drop-shadow(0 2px 10px rgba(0,0,0,0.35)); }
.casino-name { margin: 6px 0 6px; font-size: 1.2rem; }
.bonus { margin: 0 0 10px; color: #dffbe9; font-weight: 600; }
.features { margin: 0 0 14px; padding-left: 18px; color: var(--muted); }
.features li { margin: 6px 0; }
.cta {
--btn-shadow: 0 8px 18px rgba(44,182,125,0.28);
display: inline-flex; align-items: center; justify-content: center;
gap: 8px;
background: linear-gradient(180deg, #35d18f, #24b574);
color: #051114;
border: none; border-radius: 10px;
padding: 12px 16px; font-weight: 800; letter-spacing: .2px;
box-shadow: var(--btn-shadow);
cursor: pointer;
transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
}
.cta:hover { transform: translateY(-2px); filter: brightness(1.02); box-shadow: 0 10px 24px rgba(44,182,125,0.38); }
.cta:active { transform: translateY(0); filter: brightness(.98); box-shadow: 0 6px 16px rgba(44,182,125,0.28); }
.cta:focus-visible { outline: 3px solid rgba(44,182,125,.5); outline-offset: 2px; }
.trust { margin: 26px 0 36px; padding: 16px; border: 1px solid var(--border); border-radius: 12px; background: rgba(255,255,255,0.02); }
.badges { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
.badge-item { display: inline-flex; align-items: center; gap: 8px; color: #dbe6ff; background: rgba(255,255,255,0.03); border: 1px solid var(--border); padding: 8px 10px; border-radius: 999px; }
.disclaimer { margin: 10px 0 0; color: var(--muted); font-size: .92rem; line-height: 1.5; }
.site-footer { padding: 24px 0 40px; color: var(--muted); text-align: center; font-size: .95rem; }
@media (min-width: 640px) {
.casino-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}
@media (min-width: 960px) {
.casino-grid { grid-template-columns: repeat(3, 1fr); gap: 22px; }
}
/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce) {
.casino-card, .cta { transition: none; }
}
3) script.js
/*
Affiliate Landing Page Script
- Stores all affiliate URLs in a single config
- Tracks clicks (casino_id, timestamp, device type)
- Redirects via JS to cardUrl or ctaUrl
*/
// Easy-to-edit affiliate config
const AFFILIATE_CONFIG = {
casinos: [
{
id: 'casino1',
cardUrl: 'https://example.com/lucky-ace-card?affid=123',
ctaUrl: 'https://example.com/lucky-ace-cta?affid=123'
},
{
id: 'casino2',
cardUrl: 'https://example.com/royal-spins-card?affid=456',
ctaUrl: 'https://example.com/royal-spins-cta?affid=456'
},
{
id: 'casino3',
cardUrl: 'https://example.com/golden-tiger-card?affid=789',
ctaUrl: 'https://example.com/golden-tiger-cta?affid=789'
}
]
};
// Device detection (simple, fast)
function getDeviceType() {
return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent) ? 'mobile' : 'desktop';
}
// Tracking function: logs to console
function trackClick(casinoId, source) {
const event = {
casino_id: casinoId,
timestamp: new Date().toISOString(),
device: getDeviceType()
};
// Log required fields and source context
console.log('TRACKING', JSON.stringify(event), `source=${source}`);
}
// Navigate helper
function navigate(url) {
// JS-based redirect
window.location.href = url;
}
// Bind events for cards and CTA buttons
function bindAffiliateLinks() {
const map = new Map(AFFILIATE_CONFIG.casinos.map(c => [c.id, c]));
// Card click handlers
document.querySelectorAll('[data-casino-id]').forEach(card => {
const casinoId = card.getAttribute('data-casino-id');
const cfg = map.get(casinoId);
if (!cfg) return;
// Card click
card.addEventListener('click', () => {
trackClick(casinoId, 'card');
navigate(cfg.cardUrl);
});
// Keyboard support (Enter/Space)
card.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
trackClick(casinoId, 'card-key');
navigate(cfg.cardUrl);
}
});
// CTA button inside the card
const cta = card.querySelector(`[data-cta-for="${casinoId}"]`);
if (cta) {
cta.addEventListener('click', (e) => {
// Prevent the card's click from firing
e.stopPropagation();
trackClick(casinoId, 'cta');
navigate(cfg.ctaUrl);
});
}
});
}
// Init
document.addEventListener('DOMContentLoaded', () => {
bindAffiliateLinks();
const y = document.getElementById('year');
if (y) y.textContent = String(new Date().getFullYear());
});