const EVENTS = [
  { id: 'luna', title: 'LUNA//WAVE Jakarta Night', artist: 'LUNA//WAVE', city: 'Jakarta', venue: 'Beach City International Stadium', date: '24 Agu 2026', time: '19:30', genre: 'K-Pop', price: 550000, sold: 84, cover: 'linear-gradient(135deg,#8B5CF6,#F472B6 55%,#22D3EE)', accent: '#F472B6' },
  { id: 'pulang', title: 'Festival Pulang Malam', artist: 'Svara Selatan', city: 'Bandung', venue: 'Sabuga Bandung', date: '02 Sep 2026', time: '15:00', genre: 'Indie', price: 325000, sold: 67, cover: 'linear-gradient(135deg,#22D3EE,#2563EB 55%,#A3E635)', accent: '#22D3EE' },
  { id: 'synth', title: 'Jakarta Synth Week', artist: 'Neon Riots', city: 'Jakarta', venue: 'JIEXPO Kemayoran', date: '18 Sep 2026', time: '20:00', genre: 'EDM', price: 475000, sold: 72, cover: 'linear-gradient(135deg,#111827,#8B5CF6 45%,#22D3EE)', accent: '#8B5CF6' },
  { id: 'bali', title: 'Sunset Frequencies Bali', artist: 'Nara Bloom', city: 'Bali', venue: 'GWK Cultural Park', date: '05 Okt 2026', time: '17:00', genre: 'Festival', price: 690000, sold: 51, cover: 'linear-gradient(135deg,#FB7185,#FBBF24 55%,#A3E635)', accent: '#FBBF24' },
];
const ARTISTS = ['LUNA//WAVE', 'Nara Bloom', 'The Midnight Kota', 'Svara Selatan', 'Neon Riots', 'Asteria Seoul'];
const COMMUNITIES = [
  { name: 'Lunatics Jakarta', members: '18.4K', match: 96, city: 'Jakarta', tag: 'K-Pop' },
  { name: 'Indie Anak Senayan', members: '7.8K', match: 89, city: 'Jakarta', tag: 'Indie' },
  { name: 'Festival Buddy ID', members: '22.1K', match: 84, city: 'Nasional', tag: 'Festival' },
  { name: 'Bandung Gig Circle', members: '5.2K', match: 91, city: 'Bandung', tag: 'Local gigs' },
];
const TIER_PRICES = [
  { name: 'Festival A', price: 1250000, left: 214, perk: 'Dekat panggung + early entry' },
  { name: 'Festival B', price: 850000, left: 640, perk: 'Standing area reguler' },
  { name: 'Tribune', price: 550000, left: 1180, perk: 'Seat view nyaman' },
  { name: 'VIP Soundcheck', price: 2400000, left: 48, perk: 'Soundcheck + collectible pass' },
];
const ATTENDEES = ['Alya', 'Raka', 'Nadine', 'Bima', 'Kei', 'Dita', 'Mika'];
const BADGES = ['Front Row Energy', 'Festival Runner', 'K-Pop Guardian', 'Indie Explorer', 'Queue Survivor'];
const PAYMENTS = ['QRIS', 'GoPay', 'OVO', 'DANA', 'BCA Virtual Account', 'Kartu Debit/Kredit'];
const ACTIVITY = [
  'Alya join circle Lunatics Jakarta',
  'Raka beli Festival B untuk LUNA//WAVE',
  'Nadine unlock badge Front Row Energy',
  'Festival Buddy ID buat meetup di Gate 3',
];
const fmtIDR = (n) => new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', maximumFractionDigits: 0 }).format(n);
Object.assign(window, { EVENTS, ARTISTS, COMMUNITIES, TIER_PRICES, ATTENDEES, BADGES, PAYMENTS, ACTIVITY, fmtIDR });
