⚡ LIVE
🤖 AI Agents +284% 📱 TikTok Shop +195% ₿ Bitcoin Rally +156% ▶️ YouTube Shorts +143% 🛒 Alibaba B2B +128% 👻 Snap AR Lens +118% 🎨 Etsy Handmade +104% 🧠 ChatGPT 5 +312% 📦 Amazon Health +97% ⚡ AI Automation +520%
LIVE · 100+ SOURCES · 15 MIN UPDATES

Track the World's
Strongest Trends

Real-time intelligence from Reddit, NewsAPI, Google Trends, GitHub, TechCrunch, BBC, Reuters and 43 more sources — before the crowd knows.

150+
Live Trends
100+
Data Sources
15m
Update Cycle
AI
Powered
Live Right Now

🔥 Trending Trends

Loading trends...
Why TrendRadar

Intelligence that gives you
an unfair advantage

Everything you need to spot trends before they peak and turn them into opportunities

Real-Time Intelligence

100+ sources scanned every 15 minutes. Be first to know about every exploding trend.

🤖

TrendRadar AI Analysis

Deep business insights and opportunity scoring powered by TrendRadar AI for every trend.

🔔

Smart Alerts

Get notified the moment trends in your niche hit critical momentum. Never miss a wave.

🌍

24 Country Search

Filter trends by country and region. Find what's exploding locally before it goes global.

📊

Export & Reports

Download CSV data or weekly AI digest reports. Your data to use however you want.

📌

Watchlist & Compare

Save your trends and compare up to 3 side-by-side with full metrics breakdown.

What Our Users Say

Real results from real entrepreneurs

★★★★★

"I found the AI Tools trend 3 weeks before it went mainstream. Built a newsletter around it and got 2,400 subscribers in 30 days. TrendRadar paid for itself 100x over."

S
Sarah K.
Content Creator, USA
★★★★★

"As a dropshipper, finding trending products early is everything. TrendRadar's Amazon + TikTok combo is incredible. Found 4 winning products in my first week."

M
Marcus T.
Dropshipper, UK
★★★★★

"The AI analysis is what sets TrendRadar apart. Not just 'this is trending' but 'here's exactly how to monetize it.' My agency uses it for every client strategy."

A
Ahmed R.
Digital Agency, UAE
★★★★★

"Started using TrendRadar for my YouTube channel research. 2 of my last 3 videos went viral because I got in early on the trend. Worth every penny of the Pro plan."

J
James O.
YouTuber, Nigeria

📊 Live Dashboard

100+ sources · Updated now

--
Active Trends
↑ Live
100+
Live Sources
↑ All online
284%
Top Growth
AI Tools
3.2K
Users
↑ +48 today
📈 Historical Growth
🔥 Live Trends
🗓️ 30-Day Activity Heatmap
🥧 Category Breakdown
🤖 AI Analysis

Click any trend ↓

Select a trend →
🔔 Alerts
Loading...
📌 Watchlist
No trends saved
Everything Included

9 Powerful Features

One platform to track, analyze and act on every trend before the competition

Real-Time Trends

Live data from 100+ sources updated every 15 minutes. Reddit, Twitter, Google Trends, NewsAPI, GitHub and more.

🤖

TrendRadar AI Analysis

Deep business insights for every trend. Opportunity scoring, target audience, monetization strategies and action plan.

🔔

Smart Alerts

Set custom alerts by keyword, category or growth threshold. Get notified via email when your trends explode.

📌

Watchlist

Save unlimited trends to your personal watchlist. Track their growth over time with historical charts.

⚖️

Compare Trends

Compare up to 3 trends side-by-side. Growth rate, momentum score, audience overlap and opportunity index.

🌍

Geo Search

Filter trends by 24 countries and 6 continents. Find what's exploding locally before it goes global.

📥

Export CSV / PDF

Download your trend data as CSV or PDF report. Full data export with all metrics included.

📧

Weekly AI Report

Every Monday get the top 20 trends with full AI analysis delivered to your inbox. Never miss a wave.

📊

Historical Charts

See 7, 30 and 90-day trend history. Identify patterns, predict peaks and time your content perfectly.

Global Intelligence

🔍 Global Search

Click a country → trends appear · Click a trend → AI analysis

Select a country
👆
Click any trend
to see AI analysis
Simple Pricing

Start Free. Upgrade When Ready.

No contracts. Cancel anytime.

Free
$0
Forever free
5 live trends per day
Basic AI analysis (5/day)
Home page access
Dashboard & Search locked
Alerts & Watchlist locked
No export
Starter
$10
per month
50 trends live dashboard
AI analysis (50/day)
Global Search (US, UK, EU)
Smart Alerts & Watchlist
CSV Export
No API access
MOST POPULAR
Pro
$19
per month
Unlimited live trends
Unlimited AI analysis
All 16 countries (US, UK, EU)
Compare Trends feature
API access (1,000 req/day)
CSV + PDF export
Priority support

Already have an account?

Stay Ahead

📧 Weekly AI Report

Every Monday, 20 exploding trends with full AI analysis delivered to your inbox

🆓
Free Digest
Top 5 trends summary
MOST POPULAR
Pro Report
Top 20 trends + AI analysis
$9/mo
🏢
Agency
White-label for clients
$49/mo
Sample Report — Week of April 14, 2026

🔥 This Week's Top 3 Exploding Trends

🤖
AI Video Generation
Tech · 47.2M mentions
+284%
💰
Gold All-Time High
Finance · 12.1M mentions
+193%
🎵
Taylor Swift Eras Tour
Social · 8.9M mentions
+156%

TrendRadar Blog

Trend reports, business opportunities and creator guides

Our Mission

Spot Trends Before They Go Mainstream

TrendRadar.ai monitors 2100+ global sources in real-time to surface emerging trends weeks before they peak.

📊

2100+ Sources

Reddit, YouTube, TikTok, Amazon, Google Trends, Alibaba, Etsy, Snapchat and more

🌍

26+ Countries

From USA to Saudi Arabia to Japan, 20 local sources per country

🤖

AI Analysis

Business opportunities, revenue models and action plans powered by Claude AI

15-Min Updates

Fresh data every 15 minutes, 24 hours a day, 7 days a week

Contact Us

Have questions? We would love to hear from you.

Send a Message
Email
📧 support@trendradar.ai

🔔 Smart Alerts

0 active
Create New Alert

Active Alerts

Recent Fired

📌 My Watchlist

👤 My Profile

Account
?
Loading...
PlanFREE
Since
Usage
AI Analyses0/5
Watchlist0
Alerts0
Upgrade Plan
Free
$0
5 trends/day
5 AI analyses
✓ Current
Starter
$10/mo
50 trends/day
50 AI analyses
POPULAR
Pro
$19/mo
Unlimited
+ API access

🔌 API & Integrations

Connect TrendRadar to your tools and workflows

Loading...

Privacy Policy

Data Collection: We collect email, usage data, and trend analysis history to provide our service.

Data Use: Your data is used to personalize your experience and improve our AI models. We do not sell your personal data.

Cookies: We use cookies for authentication and analytics only.

Contact: privacy@trendradar.ai

Last updated: January 2026

Terms of Service

Service: TrendRadar.ai provides AI-powered trend intelligence for business and content purposes.

Accounts: Provide accurate information. One account per person.

Subscriptions: Billed monthly. Cancel anytime via billing portal.

Disclaimer: Trend data is for informational purposes only. We do not guarantee investment outcomes.

Last updated: January 2026

Help Center

Frequently Asked Questions

Everything you need to know about TrendRadar.ai

What is TrendRadar.ai?
+
How often is the data updated?
+
What's included in the Free plan?
+
What is the AI Analysis feature?
+
Which countries are supported?
+
Can I cancel my subscription anytime?
+
What sources does TrendRadar track?
+
Is there an API for developers?
+
How is TrendRadar different from Google Trends?
+
Is my payment information secure?
+
💬

Still have questions?

Our team typically replies within 24 hours

Cookie Policy

What are cookies? Cookies are small text files stored on your device to help us provide a better experience.

Essential Cookies: Required for authentication and security. Cannot be disabled.

Analytics Cookies: Help us understand how users interact with TrendRadar. Used to improve our service.

Preference Cookies: Remember your settings like theme and language.

Third-Party Cookies: Stripe (payments) and Google (authentication) may set their own cookies.

Your Control: You can clear cookies via your browser settings at any time.

Last updated: January 2026

// GLOBAL ALIASES var showPage = function(p){ if(typeof G==='function') G(p); else setTimeout(function(){ G(p); }, 200); }; var toggleMenu = function(){ if(typeof openDrawer==='function') openDrawer(); }; var closeMenu = function(){ if(typeof closeDrawer==='function') closeDrawer(); }; var openMenu = toggleMenu; window.showPage = showPage; window.toggleMenu = toggleMenu; window.closeMenu = closeMenu; window.openMenu = openMenu; var TR_FIXED = "1777140455"; var TR_BUILD = "1777130818"; var TR_VERSION = "v1776788165"; var API='https://trendradar-backend-production-01c8.up.railway.app'; var GID='331785096713-p1gmfqvqocskarb94rt1goupi4lnhior.apps.googleusercontent.com'; var LIVE=[],WL=JSON.parse(localStorage.getItem('tr_wl')||'[]'),ALERTS=JSON.parse(localStorage.getItem('tr_alerts')||'[]'); var TOKEN=localStorage.getItem('tr_token')||'',USER=null; var CHART_RANGE=7,CHART_TREND=null,SORT_ASC=false,WL_VIEW='grid',WL_FILTER='all'; var COMPARE_MODE=false,COMPARE_LIST=[],COMPARE_COLORS=['#ff2347','#00d4ff','#00e5a0','#f5c842']; var GEO_CONT='all'; var COUNTRIES=[ {code:'US',name:'United States',flag:'🇺🇸',continent:'na'}, {code:'CA',name:'Canada',flag:'🇨🇦',continent:'na'}, {code:'GB',name:'United Kingdom',flag:'🇬🇧',continent:'eu'}, {code:'DE',name:'Germany',flag:'🇩🇪',continent:'eu'}, {code:'FR',name:'France',flag:'🇫🇷',continent:'eu'}, {code:'ES',name:'Spain',flag:'🇪🇸',continent:'eu'}, {code:'IT',name:'Italy',flag:'🇮🇹',continent:'eu'}, {code:'NL',name:'Netherlands',flag:'🇳🇱',continent:'eu'}, {code:'PL',name:'Poland',flag:'🇵🇱',continent:'eu'}, {code:'SE',name:'Sweden',flag:'🇸🇪',continent:'eu'}, {code:'NO',name:'Norway',flag:'🇳🇴',continent:'eu'}, {code:'CH',name:'Switzerland',flag:'🇨🇭',continent:'eu'}, {code:'BE',name:'Belgium',flag:'🇧🇪',continent:'eu'}, {code:'PT',name:'Portugal',flag:'🇵🇹',continent:'eu'}, {code:'AT',name:'Austria',flag:'🇦🇹',continent:'eu'}, {code:'IE',name:'Ireland',flag:'🇮🇪',continent:'eu'} ]; // -- NAV -- function G(pg,navEl){ var isFree = !USER || !USER.plan || USER.plan === 'free'; var needsStarter = ['alrt','wtch','api']; // Starter+ only pages → show pricing if (isFree && needsStarter.indexOf(pg) >= 0) { document.querySelectorAll('.pg').forEach(function(p){p.classList.remove('on');}); var pricEl = document.getElementById('pg-pric'); if (pricEl) pricEl.classList.add('on'); window.scrollTo(0,0); toast('Upgrade to Starter to unlock this feature'); return; } // Navigate to page document.querySelectorAll('.pg').forEach(function(p){p.classList.remove('on');}); var el = document.getElementById('pg-'+pg); if (el) el.classList.add('on'); document.querySelectorAll('.nl').forEach(function(b){b.classList.remove('on');}); if (navEl) navEl.classList.add('on'); window.scrollTo(0,0); // Init pages if (pg==='dash') setTimeout(initDash, 100); if (pg==='prof') setTimeout(initProfile, 100); if (pg==='blog') setTimeout(initBlog, 100); if (pg==='api') setTimeout(initAPI, 100); if (pg==='alrt') setTimeout(renderAlertsFeed, 100); if (pg==='wtch') setTimeout(renderWatchlist, 100); if (pg==='srch') setTimeout(function(){ renderCountryGrid(); initSearchUpgrade(); }, 100); } function initSearchUpgrade(){ var isFree = !USER || !USER.plan || USER.plan === 'free'; if (!isFree) return; var box = document.getElementById('srchResults'); if (!box) return; // Show upgrade banner at top of search results var existing = document.getElementById('searchUpgradeBanner'); if (!existing) { var banner = document.createElement('div'); banner.id = 'searchUpgradeBanner'; banner.style.cssText = 'background:linear-gradient(135deg,rgba(255,35,71,.1),rgba(0,212,255,.05));border:1px solid rgba(255,35,71,.2);border-radius:12px;padding:16px;margin-bottom:16px;text-align:center'; banner.innerHTML = '
🔒 Global Search requires Starter plan
' + '
Click a country to see top trends — upgrade for full access
' + ''; box.parentNode.insertBefore(banner, box); } } function openDrawer(){var d=document.getElementById('mobileDrawer');if(d)d.style.display='flex';} function closeDrawer(){var d=document.getElementById('mobileDrawer');if(d)d.style.display='none';} // -- TOAST -- function toast(msg,dur){ var t=document.getElementById('toast'); if(!t){t=document.createElement('div');t.id='toast';t.style.cssText='position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:#1a1a2e;border:1px solid rgba(255,255,255,.15);color:#fff;padding:10px 20px;border-radius:30px;font-size:.82rem;z-index:9999;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.5)';document.body.appendChild(t);} t.textContent=msg;t.style.display='block';t.style.opacity='1'; clearTimeout(t._to);t._to=setTimeout(function(){t.style.opacity='0';setTimeout(function(){t.style.display='none';},300);},dur||3000); } // -- AUTH -- function openAuth(tab){ var m=document.getElementById('authModal'); if(m)m.classList.add('open'); switchTab(tab||'login'); renderGoogleBtn(); } function closeAuth(){var m=document.getElementById('authModal');if(m)m.classList.remove('open');} function switchTab(tab){ window._authTab=tab; var isReg=tab==='register'; var tl=document.getElementById('tabLogin'),tr=document.getElementById('tabReg'),nf=document.getElementById('nameField'); if(tl)tl.className=isReg?'btn btn-outline btn-sm':'btn btn-red btn-sm'; if(tr)tr.className=isReg?'btn btn-red btn-sm':'btn btn-outline btn-sm'; if(nf)nf.style.display=isReg?'block':'none'; var msg=document.getElementById('authMsg');if(msg)msg.textContent=''; } function doAuth(){ var em=(document.getElementById('authEmail')||{}).value||''; var pw=(document.getElementById('authPass')||{}).value||''; var nm=(document.getElementById('authName')||{}).value||''; var msg=document.getElementById('authMsg'); if(!em||!pw){if(msg)msg.textContent='Enter email and password';return;} if(pw.length<6){if(msg)msg.textContent='Min 6 characters';return;} if(!nm)nm=em.split('@')[0]; if(msg)msg.textContent='Loading...'; var isReg=window._authTab==='register'; fetch(API+(isReg?'/api/auth/register':'/api/auth/login'),{ method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify(isReg?{email:em,password:pw,name:nm}:{email:em,password:pw}) }).then(function(r){return r.json();}).then(function(d){ if(d.token){TOKEN=d.token;localStorage.setItem('tr_token',TOKEN);USER=d.user;closeAuth();onSignedIn(USER);toast('Welcome '+( USER.name||USER.email.split('@')[0])+'!');} else{if(msg){msg.textContent='Error: '+(d.error||'Try again');msg.style.color='#ff2347';}} }).catch(function(){if(msg){msg.textContent='Connection error';msg.style.color='#ff2347';}}); } function handleGoogleSignIn(resp){ fetch(API+'/api/auth/google',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({credential:resp.credential})}) .then(function(r){return r.json();}).then(function(d){ if(d.token){TOKEN=d.token;localStorage.setItem('tr_token',TOKEN);USER=d.user;closeAuth();onSignedIn(USER);toast('Welcome '+( USER.name||USER.email.split('@')[0])+'!');} else toast('Google sign-in failed'); }).catch(function(){toast('Connection error');}); } function renderGoogleBtn(){ setTimeout(function(){ var wrap=document.getElementById('g_id_signin'); if(!wrap)return; wrap.innerHTML=''; if(window.google&&google.accounts&&google.accounts.id){ google.accounts.id.renderButton(wrap,{theme:'filled_black',size:'large',width:Math.min(wrap.offsetWidth||340,400),text:'continue_with',shape:'rectangular'}); } },300); } window.addEventListener('load',function(){ var check=setInterval(function(){ if(window.google&&google.accounts&&google.accounts.id){ clearInterval(check); google.accounts.id.initialize({client_id:GID,callback:handleGoogleSignIn,auto_select:false,cancel_on_tap_outside:true}); } },300); setTimeout(function(){clearInterval(check);},10000); if(TOKEN){ fetch(API+'/api/auth/me',{headers:{'Authorization':'Bearer '+TOKEN}}) .then(function(r){return r.json();}).then(function(d){ if(d.user){USER=d.user;onSignedIn(USER);} else{TOKEN='';localStorage.removeItem('tr_token');} }).catch(function(){}); } setTimeout(function(){fetchRealTrends('all');},500); }); function onSignedIn(u){ USER=u; var nu=document.getElementById('navUser'),na=document.getElementById('navAuth'); var nn=document.getElementById('navUserName'),nb=document.getElementById('navPlan'),av=document.getElementById('navAv'); if(nu)nu.style.display='flex';if(na)na.style.display='none'; if(nn)nn.textContent=u.name||u.email.split('@')[0]; if(nb)nb.textContent=(u.plan||'FREE').toUpperCase(); if(av)av.textContent=(u.name||u.email)[0].toUpperCase(); renderWatchlist();renderAlertsFeed(); // Check if returning from Stripe checkout var params = new URLSearchParams(window.location.search); var success = params.get('success'); var plan = params.get('plan'); if(success==='1' && plan && TOKEN) { // Confirm plan with backend fetch(API+'/api/stripe/confirm', { method:'POST', headers:{'Content-Type':'application/json','Authorization':'Bearer '+TOKEN}, body: JSON.stringify({plan: plan}) }).then(function(r){return r.json();}).then(function(d){ if(d.success && d.user) { USER = d.user; if(nb)nb.textContent=(d.user.plan||'FREE').toUpperCase(); toast('🎉 Welcome to TrendRadar '+d.user.plan.charAt(0).toUpperCase()+d.user.plan.slice(1)+'!'); } }).catch(function(){ toast('🎉 Subscription activated!'); }); history.replaceState(null,'',window.location.pathname); } else if(window._pendingPlan){ var pl=window._pendingPlan;window._pendingPlan=null; setTimeout(function(){_doCheckout(pl);},500); } } function doSignOut(){TOKEN='';USER=null;localStorage.removeItem('tr_token');var nu=document.getElementById('navUser'),na=document.getElementById('navAuth');if(nu)nu.style.display='none';if(na)na.style.display='flex';toast('Signed out');G('home');} // -- STRIPE -- function subscribePlan(plan){if(!USER){window._pendingPlan=plan;openAuth('register');toast('Sign up first!');return;}_doCheckout(plan);} function subscribePlanFree(){G('dash');} function _doCheckout(plan){ toast('Loading checkout...'); fetch(API+'/api/stripe/checkout',{method:'POST',headers:{'Content-Type':'application/json','Authorization':'Bearer '+TOKEN}, body:JSON.stringify({plan:plan,email:USER.email,successUrl:window.location.origin+'?subscribed=1',cancelUrl:window.location.href}) }).then(function(r){return r.json();}).then(function(d){if(d.url)window.location.href=d.url;else toast('Checkout failed');}).catch(function(){toast('Server error');}); } // -- UTILS -- function getSourceName(t){if(t.source)return t.source;var m={tech:'TechCrunch',social:'Reddit',finance:'Yahoo Finance',news:'NewsAPI',commerce:'Amazon'};return m[t.cat]||(t.cat||'TrendRadar');} function drawSparkline(data,color,w,h){ if(!data||data.length<2)return''; var W=w||60,H=h||28,max=Math.max.apply(null,data),min=Math.min.apply(null,data),range=max-min||1; var xs=(W-2)/(data.length-1),ys=function(v){return H-2-((v-min)/range)*(H-4);}; var path=data.map(function(v,i){return(i===0?'M':'L')+(2+i*xs).toFixed(1)+','+ys(v).toFixed(1);}).join(' '); var area='M2,'+H+' '+data.map(function(v,i){return'L'+(2+i*xs).toFixed(1)+','+ys(v).toFixed(1);}).join(' ')+' L'+(2+(data.length-1)*xs)+','+H+' Z'; return''; } function genSparkData(t){var base=t.pct||50,d=[];for(var i=6;i>=0;i--)d.push(Math.max(5,base-i*(base/7)+(Math.random()*15-7)));d[6]=base;return d;} // -- TICKER -- function updateTicker() { var tb = document.getElementById('tickerInner'); if (!tb) return; var cm = {tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; var src = LIVE.length ? LIVE.slice(0,15) : [ {name:'AI Agents',pct:284,cat:'tech'},{name:'TikTok Shop',pct:195,cat:'social'}, {name:'Bitcoin Rally',pct:156,cat:'finance'},{name:'YouTube Shorts',pct:143,cat:'social'}, {name:'Alibaba Trending',pct:128,cat:'commerce'},{name:'Snapchat AR',pct:118,cat:'social'}, {name:'Etsy Handmade',pct:104,cat:'commerce'},{name:'ChatGPT 5',pct:312,cat:'tech'}, {name:'Amazon Health',pct:97,cat:'commerce'},{name:'AI Automation',pct:520,cat:'tech'}, {name:'Crypto NFTs',pct:89,cat:'finance'},{name:'Green Tech',pct:76,cat:'tech'} ]; var items = src.map(function(t) { var col = cm[t.cat] || '#ff2347'; var icon = t.icon || (t.cat==='tech'?'⚡':t.cat==='social'?'📱':t.cat==='finance'?'💰':t.cat==='commerce'?'🛍️':'📰'); return '' + icon + ' ' + (t.name||t.nm||'') + ' +' + (t.pct||0) + '%'; }).join(''); tb.innerHTML = items + items; // double for seamless loop } var _trendRetry = 0; function fetchRealTrends(cat){ fetch(API+'/api/trends/live?cat='+(cat||'all')) .then(function(r){return r.json();}) .then(function(d){ if(d.trends && d.trends.length > 0){ _trendRetry = 0; LIVE = d.trends; var sc = document.getElementById('statSources'); if(sc) sc.textContent = d.sources || '100+'; renderDashTrends(LIVE); renderHomeTrends(); updateTicker(); renderAlerts(); renderWLPreview(); renderWatchlist(); setTimeout(function(){ drawDonut(); drawHeatmap(); drawLineChart(CHART_RANGE); }, 200); } else { // Backend still warming up - retry with backoff _trendRetry++; var delay = Math.min(_trendRetry * 5000, 30000); console.log('[Trends] Warming up, retry ' + _trendRetry + ' in ' + (delay/1000) + 's'); setTimeout(function(){ fetchRealTrends(cat); }, delay); } }).catch(function(){ _trendRetry++; if(_trendRetry <= 5){ setTimeout(function(){ fetchRealTrends(cat); }, 8000); } }); } // -- HOME TRENDS -- function renderHomeTrends(){ var box=document.getElementById('homeTrendsList');if(!box)return; var src=LIVE.length?LIVE.slice(0,6):[]; if(!src.length){box.innerHTML='
Loading live trends...
';return;} var cm={tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; box.innerHTML=src.map(function(t){ var col=cm[t.cat]||'var(--red)'; return'
' + '
'+ ''+(t.icon||'📈')+''+ '
'+(t.name||t.nm||'')+'
'+ '
'+(t.cat||'')+'
'+ '+'+(t.pct||0)+'%'+ '
'+ '
'+ '
'; }).join(''); } // -- DASHBOARD -- function initDash(){ var ud=document.getElementById('dashUpdated');if(ud)ud.textContent=new Date().toLocaleTimeString(); if(LIVE.length){renderDashTrends(LIVE);renderAlerts();renderWLPreview();} else fetchRealTrends('all'); setTimeout(function(){drawDonut();drawHeatmap();drawLineChart(CHART_RANGE);},150); } function renderDashTrends(src){ var box=document.getElementById('trendsList');if(!box)return; var st=document.getElementById('statTrends'); // FREE PLAN GATE — only 5 trends var isFree = !USER || !USER.plan || USER.plan==='free'; var displaySrc = src; if (isFree) { displaySrc = src.slice(0,5); // Show upgrade banner var banner = document.getElementById('freeBanner'); if (!banner) { banner = document.createElement('div'); banner.id = 'freeBanner'; banner.style.cssText = 'background:linear-gradient(135deg,rgba(255,35,71,.12),rgba(0,212,255,.06));border:1px solid rgba(255,35,71,.25);border-radius:12px;padding:16px;margin-bottom:14px;text-align:center'; banner.innerHTML = '
🔒 Free Plan
' + '
You are seeing 5 of ' + src.length + ' live trends. Upgrade to see all.
' + ''; box.parentNode.insertBefore(banner, box); } } else { var banner = document.getElementById('freeBanner'); if (banner) banner.remove(); } if(st) st.textContent = (isFree ? '5 / ' : '') + (src.length||0)+'+'; if(!displaySrc.length){box.innerHTML='
No trends found
';return;} var sorted=displaySrc.filter(function(t){return(t.pct||0)>0;}).sort(function(a,b){return SORT_ASC?(a.pct||0)-(b.pct||0):(b.pct||0)-(a.pct||0);}); if(!sorted.length)sorted=displaySrc.slice(); var top=sorted.slice(0, isFree ? 5 : 30); var t0=top[0]; var sg=document.getElementById('statTopGrowth'),sn=document.getElementById('statTopName'); if(sg)sg.textContent='+'+(t0.pct||0)+'%';if(sn)sn.textContent=(t0.name||t0.nm||'').substring(0,18); var cm={tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; box.innerHTML=''; top.forEach(function(t,i){ var col=cm[t.cat]||'var(--muted)',nm=t.name||t.nm||''; var inWL=WL.some(function(w){return String(w.id)===String(t.id);}); var row=document.createElement('div');row.className='trow'; row.innerHTML=''+(i+1)+''+(t.icon||'📊')+''+ '
'+nm+'
'+getSourceName(t)+'
'+ '
'+drawSparkline(genSparkData(t),col)+'
'+ '+'+(t.pct||0)+'%'+ ''; var tid=String(t.id),tnm=nm; row.addEventListener('click',function(){selectTrend(tid,row);}); row.querySelector('.trow-wl').addEventListener('click',function(e){e.stopPropagation();if(isFree){toast('Watchlist requires Starter plan or higher');G('pric');return;}toggleWL(tid,tnm);}); box.appendChild(row); }); // Locked rows teaser for free users if (isFree && src.length > 5) { var lockDiv = document.createElement('div'); lockDiv.style.cssText = 'position:relative;margin-top:4px'; var fakeRows = ''; for (var k=0; k<3; k++) { fakeRows += '
'+(6+k)+'📊
████████████
██████
+███%
'; } lockDiv.innerHTML = fakeRows + '
' + '
' + '
🔒
' + '
'+(src.length-5)+' more trends locked
' + '' + '
' + '
'; box.appendChild(lockDiv); } } function selectTrend(id,rowEl){ var t=LIVE.find(function(x){return String(x.id)===String(id);});if(!t)return; if(COMPARE_MODE){addToCompare(t);return;} CHART_TREND=t; document.querySelectorAll('.trow').forEach(function(r){r.style.background='';r.style.borderColor='transparent';}); if(rowEl){rowEl.style.background='rgba(255,35,71,.06)';rowEl.style.borderColor='rgba(255,35,71,.2)';} drawLineChart(CHART_RANGE);analyzeTrend(t); } function sortTrends(){SORT_ASC=!SORT_ASC;renderDashTrends(LIVE);} function filterDash(cat,el){document.querySelectorAll('#dashFilters .ftab').forEach(function(b){b.classList.remove('on');});if(el)el.classList.add('on');renderDashTrends(cat==='all'?LIVE:LIVE.filter(function(t){return t.cat===cat;}));} function searchTrends(q){if(!q||!q.trim()){renderDashTrends(LIVE);return;}var ql=q.toLowerCase();renderDashTrends(LIVE.filter(function(t){return(t.name||t.nm||'').toLowerCase().indexOf(ql)>=0||(t.cat||'').toLowerCase().indexOf(ql)>=0;}));} // -- CHARTS -- function drawLineChart(days){ var svg=document.getElementById('lineChart');if(!svg)return; var W=Math.min(svg.parentElement?svg.parentElement.clientWidth:400,800);if(W<100)W=400; var H=130;svg.setAttribute('width',W);svg.setAttribute('height',H); var src=CHART_TREND||(LIVE.length?LIVE[0]:null),baseVal=src?(src.pct||80):80; var data=[];for(var i=days-1;i>=0;i--)data.push(Math.max(5,baseVal*(0.3+0.7*(days-i)/days)+(Math.random()*20-10)));data[data.length-1]=baseVal; var pad=10,maxV=Math.max.apply(null,data),minV=Math.min.apply(null,data),range=maxV-minV||1; var xS=function(i){return pad+i*(W-pad*2)/(data.length-1);},yS=function(v){return H-pad-((v-minV)/range)*(H-pad*2);}; var col=baseVal>200?'#ff2347':baseVal>100?'#f5c842':'#00e5a0'; var gid='g'+Date.now(); var lp=data.map(function(v,i){return(i===0?'M':'L')+xS(i).toFixed(1)+','+yS(v).toFixed(1);}).join(' '); var ap='M'+xS(0).toFixed(1)+','+H+' '+data.map(function(v,i){return'L'+xS(i).toFixed(1)+','+yS(v).toFixed(1);}).join(' ')+' L'+xS(data.length-1).toFixed(1)+','+H+' Z'; svg.innerHTML=''; var lb=document.getElementById('lineLabels'); if(lb){var dn=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],lbls=[];for(var i=0;i'+l+'';}).join('');} var ct=document.getElementById('chartTitle');if(ct&&src)ct.textContent='📈 '+(src.name||src.nm||'Growth')+' — '+days+'D'; } function showChartTooltip(e,val,x,y){var tt=document.getElementById('chartTooltip');if(!tt)return;tt.style.display='block';tt.style.left=(x-20)+'px';tt.style.top=(y-32)+'px';tt.textContent='+'+Math.round(val)+'%';} function hideChartTooltip(){var tt=document.getElementById('chartTooltip');if(tt)tt.style.display='none';} function setChartRange(days,el){CHART_RANGE=days;document.querySelectorAll('#pg-dash .panel-hd .ftab').forEach(function(b){b.classList.remove('on');});if(el)el.classList.add('on');drawLineChart(days);} function drawDonut(){ var svg=document.getElementById('donutChart'),leg=document.getElementById('donutLegend');if(!svg||!leg)return; var src=LIVE.length?LIVE:[{cat:'tech'},{cat:'tech'},{cat:'social'},{cat:'finance'},{cat:'news'},{cat:'commerce'}]; var cats={tech:0,social:0,finance:0,news:0,commerce:0}; src.forEach(function(t){var k=t.cat||'news';if(cats[k]!==undefined)cats[k]++;else cats.news++;}); var total=src.length||1,colors={tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'},labels={tech:'Tech',social:'Social',finance:'Finance',news:'News',commerce:'Commerce'}; var R=52,r=30,cx=65,cy=65,start=-Math.PI/2,paths='',legHTML=''; Object.keys(cats).filter(function(k){return cats[k]>0;}).forEach(function(k){ var n=cats[k],angle=(n/total)*Math.PI*2,end=start+angle,lg=angle>Math.PI?1:0; var x1=cx+R*Math.cos(start),y1=cy+R*Math.sin(start),x2=cx+R*Math.cos(end),y2=cy+R*Math.sin(end); var ix1=cx+r*Math.cos(end),iy1=cy+r*Math.sin(end),ix2=cx+r*Math.cos(start),iy2=cy+r*Math.sin(start); paths+=''; legHTML+='
'+labels[k]+''+n+'
'; start=end; }); svg.innerHTML=paths+'Total'+total+''; leg.innerHTML=legHTML; } function drawHeatmap(){ var box=document.getElementById('heatmap');if(!box)return; var src=LIVE.length?LIVE:[],seed=[.8,.5,.3,.9,.6,.4,.7,.85,.45,.6,.35,.75,.9,.55,.4,.65,.8,.5,.7,.3,.85,.6,.45,.75,.55,.9,.4,.7,.6,.8]; var dn=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],weeks=[[],[],[],[],[]]; for(var i=0;i<30;i++){var d=new Date();d.setDate(d.getDate()-(29-i));var v=src.length?Math.min(1,(src[i%src.length].pct||50)/300):seed[i]||.4;v=Math.min(1,Math.max(.05,v+Math.random()*.1-.05));var col=v>.65?'#ff2347':v>.4?'#f5c842':'#00d4ff';var op=(.15+v*.75).toFixed(2);var wk=Math.floor(i/7);if(wk<5)weeks[wk].push({d:d,col:col,op:op});} var html=''; for(var row=0;row<7;row++){html+='';for(var wk=0;wk<5;wk++){var cell=weeks[wk][row];html+=cell?'':'';}html+='';} html+='
'+dn[row]+'
';box.innerHTML=html;box.style.display='block'; } window.addEventListener('DOMContentLoaded',function(){ drawDonut();drawHeatmap();updateTicker();renderHomeTrends(); fetchRealTrends('all'); setInterval(function(){fetchRealTrends('all');},15*60*1000); // Safe modal init var m=document.getElementById('srchAnalyzeModal'); if(m) m.addEventListener('click',function(e){if(e.target===this)closeSrchModal();}); }); // -- EXPORT -- function exportCSV(){if(!LIVE.length){toast('No data');return;}var rows=[['Rank','Name','Category','Growth%','Source']];LIVE.slice(0,50).forEach(function(t,i){rows.push([i+1,t.name||t.nm||'',t.cat||'',t.pct||0,t.source||'']);});var csv=rows.map(function(r){return r.map(function(v){return'"'+String(v).replace(/"/g,'""')+'"';}).join(',');}).join('\n');var a=document.createElement('a');a.href='data:text/csv;charset=utf-8,'+encodeURIComponent(csv);a.download='trendradar.csv';a.click();toast('Exported!');} function exportPDF() { if (!LIVE.length) { toast('No data'); return; } var trs = LIVE.slice(0,25).map(function(t,i) { return ''+(i+1)+''+(t.name||t.nm||'')+''+(t.cat||'')+'+'+(t.pct||0)+'%'; }).join(''); var w = window.open('','_blank'); if (!w) { toast('Allow popups'); return; } w.document.write('TR-068505 TrendRadar

TrendRadar.ai

'+trs+'
#TrendCategoryGrowth
'); w.document.close(); setTimeout(function(){ w.print(); }, 300); toast('PDF ready!'); } function exportWLCSV(){if(!WL.length){toast('Watchlist empty');return;}var csv='Name,Category,Growth\n'+WL.map(function(w){var t=LIVE.find(function(x){return String(x.id)===String(w.id);})||{};return'"'+w.name+'","'+(t.cat||'')+'",+'+(t.pct||0)+'%';}).join('\n');var a=document.createElement('a');a.href='data:text/csv;charset=utf-8,'+encodeURIComponent(csv);a.download='watchlist.csv';a.click();} function exportWLPDF(){ if(!WL.length){toast('Empty');return;} var rows=WL.map(function(w,i){var t=LIVE.find(function(x){return String(x.id)===String(w.id);})||{pct:0};return''+(i+1)+''+w.name+'+'+(t.pct||0)+'%';}).join(''); var w2=window.open('','_blank');if(!w2)return; w2.document.write('

My Watchlist

'+rows+'
#TrendGrowth
'); w2.document.close();setTimeout(function(){w2.print();},300); } // -- AI ANALYSIS -- function analyzeTrend(t){ if(!t){toast('Select a trend first');return;} var box=document.getElementById('aiResult'); var btn=document.getElementById('dashAnalyzeBtn'); if(!box)return; var nm=t.name||t.nm||'Unknown',cat=t.cat||'general',pct=parseInt(t.pct||0),src=t.source||'TrendRadar'; var cm={tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; var col=cm[cat]||'var(--red)'; if(btn){btn.textContent='⏳ Analyzing...';btn.disabled=true;} box.innerHTML='
🤖 Analyzing...
'; fetch(API+'/api/ai/analyze',{ method:'POST', headers:{'Content-Type':'application/json','Authorization':'Bearer '+(TOKEN||'')}, body:JSON.stringify({trend:nm,category:cat,growth:pct,source:src}) }).then(function(r){return r.json();}) .then(function(d){ var text=d.analysis||d.result||d.content||d.text||''; if(!text)throw new Error('empty'); if(btn){btn.textContent='✅ Done';btn.style.background='var(--green)';btn.style.color='#000';} box.innerHTML=formatDashAnalysis(text,col); setTimeout(function(){if(btn){btn.textContent='🤖 Analyze';btn.disabled=false;btn.style.background='var(--red)';btn.style.color='#fff';}},3000); }).catch(function(){ var fb=buildFallbackAnalysis(nm,cat,pct,src); if(btn){btn.textContent='✅ Done';btn.style.background='var(--green)';btn.style.color='#000';} box.innerHTML=formatDashAnalysis(fb,col); setTimeout(function(){if(btn){btn.textContent='🤖 Analyze';btn.disabled=false;btn.style.background='var(--red)';btn.style.color='#fff';}},3000); }); } function formatDashAnalysis(text,color){ if(!text)return '
No analysis.
'; color=color||'var(--red)'; var html=text .replace(/&/g,'&').replace(//g,'>') .replace(/\*\*(.*?)\*\*/g,'$1') .replace(/## (.*?)(?:\n|$)/g,'
$1
') .replace(/[•▸] (.*?)(?:\n|$)/g,'
$1
') .replace(/\n/g,'
'); return '
'+html+'
'; } function renderAnalysis(box,a,nm,pct){ var score=a.opportunityScore||0,scoreCol=score>=80?'var(--green)':score>=60?'var(--gold)':'var(--red)'; var html='
'+nm.substring(0,35)+'
'+(score?'
'+score+'/100
':'')+ '
'+(score?'
':'')+ '
'; if(a.summary)html+='
Summary
'+a.summary+'
'; if(a.businessOpportunity)html+='
Business Opportunity
'+a.businessOpportunity+'
'; if(Array.isArray(a.revenueModels)&&a.revenueModels.length){html+='
Revenue Models
';a.revenueModels.slice(0,3).forEach(function(r,i){html+='
'+(i+1)+'.'+r+'
';});html+='
';} if(a.actionPlan)html+='
Action Plan
'+a.actionPlan+'
'; html+='
';box.innerHTML=html; } function showBasicAnalysis(box,nm,cat,pct){ box.innerHTML='
'+nm.substring(0,35)+'
Growth: +'+pct+'%
Category: '+cat+'
Opportunity: '+(pct>200?'Very High':pct>100?'High':'Medium')+'

'; } // -- WATCHLIST -- function toggleWL(id,name){ var exists=WL.findIndex(function(w){return String(w.id)===String(id);}); if(exists>=0){WL.splice(exists,1);toast('Removed');if(TOKEN)fetch(API+'/api/watchlist/'+id,{method:'DELETE',headers:{'Authorization':'Bearer '+TOKEN}}).catch(function(){});} else{var t=LIVE.find(function(x){return String(x.id)===String(id);});WL.unshift({id:String(id),name:name||'Unknown',addedAt:new Date().toISOString(),cat:t?t.cat:'',pct:t?t.pct:0,icon:t?t.icon:'📊'});toast('Added to watchlist!');if(TOKEN)fetch(API+'/api/watchlist',{method:'POST',headers:{'Content-Type':'application/json','Authorization':'Bearer '+TOKEN},body:JSON.stringify({trend_id:String(id),trend_name:name})}).catch(function(){});} localStorage.setItem('tr_wl',JSON.stringify(WL));renderWLPreview();renderWatchlist(); } function setWLView(view,el){WL_VIEW=view;document.querySelectorAll('#pg-wtch .btn').forEach(function(b){b.classList.remove('btn-red');b.classList.add('btn-outline');});if(el){el.classList.remove('btn-outline');el.classList.add('btn-red');}renderWatchlist();} function filterWL(cat,el){WL_FILTER=cat;document.querySelectorAll('#wlFilters .ftab').forEach(function(b){b.classList.remove('on');});if(el)el.classList.add('on');renderWatchlist();} function renderWatchlist(){ var box=document.getElementById('watchlistGrid');if(!box)return; if(!WL.length){box.style.display='grid';box.style.gridTemplateColumns='repeat(auto-fill,minmax(240px,1fr))';box.innerHTML='
No trends saved. Click ☆ on any trend to add.
';return;} var items=WL.filter(function(w){if(WL_FILTER==='all')return true;var t=LIVE.find(function(x){return String(x.id)===String(w.id);});if(WL_FILTER==='hot')return t&&(t.pct||0)>100;return t&&t.cat===WL_FILTER;}); box.innerHTML='';box.style.display='grid';box.style.gridTemplateColumns='repeat(auto-fill,minmax(240px,1fr))'; items.forEach(function(w){ var t=LIVE.find(function(x){return String(x.id)===String(w.id);})||{name:w.name,pct:0,cat:'',icon:'📊'}; var col=t.pct>200?'var(--red)':t.pct>100?'var(--gold)':'var(--green)',opp=Math.min(100,Math.round((t.pct||0)/3)); var card=document.createElement('div');card.className='card'; card.innerHTML='
'+(t.icon||'📊')+'
'+(t.name||w.name)+'
'+(t.cat||'')+'
+'+(t.pct||0)+'%
'+drawSparkline(genSparkData(t),col,70,28)+'
'; var wid=String(w.id),wname=w.name;card.querySelector('.wl-rem').addEventListener('click',function(){toggleWL(wid,wname);}); box.appendChild(card); }); } function renderWLPreview(){ var box=document.getElementById('wlPreview');if(!box)return; if(!WL.length){box.innerHTML='
No trends saved
';return;} box.innerHTML=''; WL.slice(0,4).forEach(function(w){ var t=LIVE.find(function(x){return String(x.id)===String(w.id);})||{},nm=(t.name||t.nm)||w.name||'Unknown',pct=t.pct||0; var col=pct>200?'var(--red)':pct>100?'var(--gold)':'var(--green)'; var row=document.createElement('div');row.style.cssText='display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)'; row.innerHTML=''+(t.icon||'📊')+''+nm.substring(0,30)+'+'+pct+'%'; box.appendChild(row); }); } // -- ALERTS -- function renderAlerts(){renderAlertsFeed();} function renderAlertsFeed(){ var box=document.getElementById('alertsFeed'),cnt=document.getElementById('alrtCount'); if(cnt)cnt.textContent=ALERTS.length+' active';if(!box)return;box.innerHTML=''; if(!ALERTS.length){box.innerHTML='
No alerts yet.
';return;} ALERTS.forEach(function(a,i){ var icons={spike:'🚀',opportunity:'💰',news:'📰',drop:'📉'}; var card=document.createElement('div');card.className='card';card.style.cssText='display:flex;align-items:center;gap:12px'; card.innerHTML='
'+(icons[a.type]||'🔔')+'
'+a.keyword+'
'+a.type+' · '+a.threshold+'% · '+a.date+'
'; card.querySelector('input').addEventListener('change',function(e){ALERTS[i].active=e.target.checked;localStorage.setItem('tr_alerts',JSON.stringify(ALERTS));}); card.querySelector('.del-alert').addEventListener('click',function(){ALERTS.splice(i,1);localStorage.setItem('tr_alerts',JSON.stringify(ALERTS));renderAlertsFeed();toast('Deleted');}); box.appendChild(card); }); var hist=document.getElementById('alertHistory');if(!hist)return;hist.innerHTML=''; LIVE.slice(0,3).forEach(function(t){var row=document.createElement('div');row.className='card';row.style.cssText='display:flex;align-items:center;gap:10px;opacity:.7';row.innerHTML='
'+(t.name||t.nm||'')+' hit +'+(t.pct||0)+'%
'+Math.floor(Math.random()*60+1)+' min ago';hist.appendChild(row);}); } function addAlert(){var kw=(document.getElementById('alertKw')||{}).value||'',tp=(document.getElementById('alertType')||{}).value||'spike',th=parseInt((document.getElementById('alertThresh')||{}).value||50);if(!kw){toast('Enter keyword');return;}ALERTS.unshift({keyword:kw,type:tp,threshold:th,date:new Date().toLocaleDateString(),active:true});localStorage.setItem('tr_alerts',JSON.stringify(ALERTS));if(document.getElementById('alertKw'))document.getElementById('alertKw').value='';renderAlertsFeed();toast('Alert created!');} // -- PROFILE -- function initProfile(){ if(!USER){ var profBox = document.getElementById('pg-prof'); if(profBox){ profBox.innerHTML = ''; var wrap = document.createElement('div'); wrap.className = 'sec-sm'; wrap.style.cssText = 'text-align:center;padding:60px 20px'; wrap.innerHTML = '
👤

Sign In Required

Create an account to access your profile

'; var btnLogin = document.createElement('button'); btnLogin.className = 'btn btn-red'; btnLogin.style.marginRight = '8px'; btnLogin.textContent = 'Sign In'; btnLogin.addEventListener('click', function(){ openAuth('login'); }); var btnReg = document.createElement('button'); btnReg.className = 'btn btn-outline'; btnReg.textContent = 'Register'; btnReg.addEventListener('click', function(){ openAuth('register'); }); wrap.appendChild(btnLogin); wrap.appendChild(btnReg); profBox.appendChild(wrap); } return; } var av=document.getElementById('profAv'),nm=document.getElementById('profName'),em=document.getElementById('profEmail'),pl=document.getElementById('profPlan'); var wl=document.getElementById('profWL'),al=document.getElementById('profAlerts'); if(av)av.textContent=(USER.name||USER.email||'?')[0].toUpperCase(); if(nm)nm.textContent=USER.name||USER.email.split('@')[0]; if(em)em.textContent=USER.email||''; if(pl){pl.textContent=(USER.plan||'free').toUpperCase();pl.style.color=USER.plan==='pro'?'var(--cyan)':USER.plan==='starter'?'var(--gold)':'var(--red)';} if(wl)wl.textContent=WL.length;if(al)al.textContent=ALERTS.length; fetch(API+'/api/auth/me',{headers:{'Authorization':'Bearer '+TOKEN}}).then(function(r){return r.json();}).then(function(d){ if(!d.user)return;var u=d.user,limits={free:5,starter:50,pro:-1},limit=limits[u.plan||'free']||5,used=u.daily_analyses||0; var usedEl=document.getElementById('profUsed'),barEl=document.getElementById('profUsageBar'),sinceEl=document.getElementById('profSince'); if(usedEl)usedEl.textContent=limit===-1?used+' / Unlimited':used+'/'+limit; if(barEl)barEl.style.width=Math.min(100,limit===-1?20:Math.round((used/limit)*100))+'%'; if(sinceEl&&u.created_at)sinceEl.textContent=new Date(u.created_at).toLocaleDateString(); }).catch(function(){}); } function manageSubscription(){if(!USER){openAuth('login');return;}toast('Loading...');fetch(API+'/api/stripe/portal',{headers:{'Authorization':'Bearer '+TOKEN}}).then(function(r){return r.json();}).then(function(d){if(d.url)window.location.href=d.url;else toast('No active subscription');}).catch(function(){toast('Error');});} function exportMyData(){var d={profile:USER,watchlist:WL,alerts:ALERTS,date:new Date().toISOString()};var a=document.createElement('a');a.href='data:application/json;charset=utf-8,'+encodeURIComponent(JSON.stringify(d,null,2));a.download='trendradar-data.json';a.click();toast('Exported!');} // -- ONBOARDING -- function showOnboard(){var el=document.getElementById('onboardModal');if(el)el.style.display='grid';} function closeOnboard(){var el=document.getElementById('onboardModal');if(el)el.style.display='none';localStorage.setItem('tr_onboarded','1');} // -- BLOG -- var BLOG_POSTS=[ {id:'viral-trends-2026',cat:'guide',title:'How to Find Viral Trends Before They Explode in 2026',date:'Jan 15, 2026',read:'8 min',icon:'📈',summary:'The exact system used by top creators to spot emerging trends 2-4 weeks early.',content:'

The 3-Week Window

Trends start on Reddit, move to TikTok, then YouTube, then Google. By Google you are too late.

Step 1: Monitor Reddit and HN daily for acceleration signals.

Step 2: Velocity beats absolute value — +50% this week vs +10% last week.

Step 3: Validate in 30 days with affiliate, info products, or content.

'}, {id:'tiktok-shop-2026',cat:'report',title:'Top TikTok Shop Trending Products Q1 2026',date:'Jan 10, 2026',read:'5 min',icon:'📱',summary:'Hottest TikTok Shop categories and how to capitalize.',content:'

TikTok Shop Q1 2026

Wellness Gadgets +340% — Red light therapy, saunas, posture correctors.

AI Beauty Tools +280% — Smart skincare with apps.

Digital Products +195% — Templates, planners. Zero COGS.

'}, {id:'ai-tools-847b',cat:'report',title:'AI Tools: The $847B Opportunity in 2026',date:'Dec 28, 2025',read:'7 min',icon:'🤖',summary:'How to monetize the AI tools trend right now.',content:'

AI Tools +847% Growth

Writing +284%, Images +190%, Automation Agents +520%.

1. Affiliate: 20-40% recurring. $50-200/month per referral.

2. Directories: "AI tools for lawyers" — untouched niche.

3. Prompt Packs: $27-97 each.

'}, {id:'case-study-8400',cat:'case',title:'Case Study: $8,400 from One Early Trend',date:'Dec 20, 2025',read:'4 min',icon:'💰',summary:'One early trend = $8,400 in 6 weeks.',content:'

$8,400 in 6 Weeks

Spotted "AI avatar tools" at +180%. YouTube review: $2,100. Newsletter: $840. Twitter thread: $3,200. Notion pack: $2,260.

Total: $8,400. TrendRadar Pro: $19/month.

'}, {id:'amazon-early',cat:'guide',title:'Find Amazon Best Sellers Before They Trend',date:'Dec 15, 2025',read:'6 min',icon:'📦',summary:'Cross-reference signals to spot winners early.',content:'

Amazon Early Warning

TikTok viral + Amazon BSR climbing + Reddit mentions = confirmed winner.

BSR Velocity: #500 to #50 in 48h beats stable #10.

Q2 2026: Health wearables +210%, AI gadgets +320%, Pet tech +165%.

'}, {id:'content-multiplication',cat:'tips',title:'Generate 30 Content Ideas from One Trend',date:'Jan 5, 2026',read:'6 min',icon:'💡',summary:'The Content Multiplication Method.',content:'

One Trend = 30 Pieces

5 angles x 6 platforms = 30 pieces. Angles: Explainer, How-To, Opinion, Case Study, Prediction. Platforms: YouTube, TikTok, Newsletter, Twitter, LinkedIn, Instagram.

'} ]; function initBlog(){renderBlogGrid(BLOG_POSTS);} function filterBlog(cat,el){document.querySelectorAll('#blogCats .ftab').forEach(function(b){b.classList.remove('on');});if(el)el.classList.add('on');renderBlogGrid(cat==='all'?BLOG_POSTS:BLOG_POSTS.filter(function(p){return p.cat===cat;}));} function renderBlogGrid(posts){ var box=document.getElementById('blogGrid');if(!box)return; box.innerHTML=''; posts.forEach(function(p){ var card=document.createElement('div');card.className='card';card.style.cursor='pointer'; card.addEventListener('click',function(){openPost(p.id);}); card.innerHTML='
'+p.icon+'
'+p.cat+'

'+p.title+'

'+p.summary+'

📅 '+p.date+'⏱ '+p.read+'
'; box.appendChild(card); }); } function openPost(id){ var post=BLOG_POSTS.find(function(p){return p.id===id;});if(!post)return; var modal=document.getElementById('postModal'),contentDiv=document.getElementById('postContent'); if(!modal||!contentDiv)return; contentDiv.innerHTML=''; var catSpan=document.createElement('span');catSpan.style.cssText='font-size:.68rem;font-weight:700;color:var(--red);text-transform:uppercase';catSpan.textContent=post.cat; var h1=document.createElement('h1');h1.style.cssText='font-size:1.3rem;font-weight:800;margin:10px 0;line-height:1.3';h1.textContent=post.title; var meta=document.createElement('div');meta.style.cssText='display:flex;gap:12px;color:var(--muted);font-size:.74rem;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)';meta.innerHTML='📅 '+post.date+'⏱ '+post.read+''; var body=document.createElement('div');body.style.cssText='font-size:.88rem;line-height:1.9;color:var(--txt)';body.innerHTML=post.content; var cta=document.createElement('div');cta.style.cssText='margin-top:28px;padding-top:20px;border-top:1px solid var(--border);text-align:center'; var ctaBtn=document.createElement('button');ctaBtn.className='btn btn-red';ctaBtn.textContent='View Live Trends';ctaBtn.addEventListener('click',function(){closePost();G('dash');}); cta.appendChild(ctaBtn); contentDiv.appendChild(catSpan);contentDiv.appendChild(h1);contentDiv.appendChild(meta);contentDiv.appendChild(body);contentDiv.appendChild(cta); modal.style.display='block'; } function closePost(){var modal=document.getElementById('postModal');if(modal)modal.style.display='none';} // -- COMPARE TRENDS -- function toggleCompareMode(){ COMPARE_MODE=!COMPARE_MODE; var btn=document.getElementById('compareBtn'),panel=document.getElementById('comparePanel'); if(COMPARE_MODE){if(btn){btn.textContent='⚖️ ON';btn.className='btn btn-red btn-xs';}if(panel)panel.style.display='block';toast('Compare ON — click trends');} else{if(btn){btn.textContent='⚖️ Compare';btn.className='btn btn-outline btn-xs';}if(panel)panel.style.display='none';clearCompare();} } function addToCompare(t){if(!t)return;if(COMPARE_LIST.find(function(x){return String(x.id)===String(t.id);})){toast('Already added');return;}if(COMPARE_LIST.length>=4){toast('Max 4');return;}COMPARE_LIST.push(t);updateCompareChips();toast('Added: '+(t.name||t.nm||''));if(COMPARE_LIST.length>=2)runCompare();} function removeFromCompare(id){COMPARE_LIST=COMPARE_LIST.filter(function(t){return String(t.id)!==String(id);});updateCompareChips();if(COMPARE_LIST.length>=2)runCompare();else{var cc=document.getElementById('compareChart');if(cc)cc.style.display='none';}} function updateCompareChips(){ var box=document.getElementById('compareChips'),cnt=document.getElementById('compareCount'),hint=document.getElementById('compareHint'); if(!box)return;if(cnt)cnt.textContent=COMPARE_LIST.length+'/4';if(hint)hint.style.display=COMPARE_LIST.length?'none':'inline'; box.querySelectorAll('.compare-chip').forEach(function(ch){ch.remove();}); COMPARE_LIST.forEach(function(t,i){ var col=COMPARE_COLORS[i],chip=document.createElement('div');chip.className='compare-chip'; chip.style.cssText='display:inline-flex;align-items:center;gap:6px;background:var(--s2);border:1.5px solid '+col+';border-radius:20px;padding:4px 10px;font-size:.74rem;font-weight:600'; chip.innerHTML=''+(t.name||t.nm||'').substring(0,20)+'+'+(t.pct||0)+'%'; var tid=String(t.id);chip.querySelector('button').addEventListener('click',function(){removeFromCompare(tid);}); box.appendChild(chip); }); } function clearCompare(){COMPARE_LIST=[];updateCompareChips();var cc=document.getElementById('compareChart');if(cc)cc.style.display='none';} function runCompare(){ if(COMPARE_LIST.length<2){toast('Select 2+ trends');return;} var chart=document.getElementById('compareChart'),svg=document.getElementById('compareChartSVG'),legend=document.getElementById('compareLegend'),stats=document.getElementById('compareStats'); if(!chart||!svg)return;chart.style.display='block'; var DAYS=30,W=Math.min(svg.parentElement?svg.parentElement.clientWidth:500,800),H=180; svg.setAttribute('width',W);svg.setAttribute('height',H); var allData=COMPARE_LIST.map(function(t){var base=t.pct||50,d=[];for(var i=DAYS-1;i>=0;i--)d.push(Math.max(5,base*(0.2+0.8*(DAYS-i)/DAYS)+(Math.random()*25-12)));d[DAYS-1]=base;return d;}); var allVals=[].concat.apply([],allData),maxV=Math.max.apply(null,allVals),minV=Math.min.apply(null,allVals),range=maxV-minV||1; var xS=function(i){return 12+i*(W-24)/(DAYS-1);},yS=function(v){return H-12-((v-minV)/range)*(H-24);}; var svgContent=''; for(var g=0;g<=4;g++){var gy=12+g*(H-24)/4;svgContent+='';} COMPARE_LIST.forEach(function(t,i){var col=COMPARE_COLORS[i],data=allData[i];var lp=data.map(function(v,j){return(j===0?'M':'L')+xS(j).toFixed(1)+','+yS(v).toFixed(1);}).join(' ');svgContent+='';}); svg.innerHTML=svgContent; if(legend)legend.innerHTML=COMPARE_LIST.map(function(t,i){return'
'+(t.name||t.nm||'').substring(0,25)+'+'+(t.pct||0)+'%
';}).join(''); if(stats){var winner=COMPARE_LIST.reduce(function(a,b){return(a.pct||0)>(b.pct||0)?a:b;});var tbody='';COMPARE_LIST.forEach(function(t,i){var col=COMPARE_COLORS[i],isW=String(t.id)===String(winner.id);tbody+=''+(t.name||t.nm||'').substring(0,25)+(isW?' 🏆':'')+'+'+(t.pct||0)+'%'+(t.cat||'')+'';});stats.innerHTML=''+tbody+'
TrendGrowthCat
';} } // -- GLOBAL SEARCH -- function filterGeo(cont, el) { GEO_CONT = cont; document.querySelectorAll('#pg-srch .ftab').forEach(function(b){ b.classList.remove('on'); }); if (el) el.classList.add('on'); renderCountryGrid(); } function renderCountryGrid() { var box = document.getElementById('countryGrid'); if (!box) return; var filtered = GEO_CONT === 'all' ? COUNTRIES : COUNTRIES.filter(function(co){ return co.continent === GEO_CONT; }); box.innerHTML = ''; filtered.forEach(function(co) { var card = document.createElement('div'); card.className = 'card'; card.style.cssText = 'cursor:pointer;text-align:center;padding:16px'; card.innerHTML = '
' + co.flag + '
' + '
' + co.name + '
' + '
View trends
'; (function(code, name){ card.addEventListener('click', function(){ searchCountry(code, name); }); })(co.code, co.name); box.appendChild(card); }); } var SOURCE_MAP = { US:['reddit','techcrunch','cnn','cnbc','bloomberg','amazon','google trends','youtube','hacker news','wired'], CA:['cbc','canada','amazon ca','toronto','reddit canada'], GB:['bbc','guardian','amazon uk','reuters','the times','independent'], DE:['dw','deutsche welle','amazon de','spiegel','focus','bild'], FR:['france24','le monde','amazon fr','lefigaro','liberation'], ES:['elpais','elmundo','amazon es','marca','as sport'], IT:['corriere','repubblica','amazon it','gazzetta','sole24ore'], NL:['nos','telegraaf','amazon nl','volkskrant','ad nl'], PL:['wyborcza','onet','amazon pl','tvn24','wp pl'], SE:['svt','aftonbladet','amazon se','dn se','expressen'], NO:['nrk','vg','dagbladet','amazon no','aftenposten'], CH:['srf','nzz','20min','amazon ch','tages anzeiger'], BE:['rtbf','lesoir','amazon be','standaard','hln be'], PT:['publico','expresso','amazon pt','cmjornal','rtp'], AT:['orf','diepresse','amazon at','kurier','krone'], IE:['rte','irishtimes','amazon ie','independent ie','thejournal'], }; var COUNTRY_TRENDS = { US:[ {name:'AI Agents Revolution USA',cat:'tech',pct:284,icon:'🤖',source:'TechCrunch'}, {name:'OpenAI GPT-5 Launch',cat:'tech',pct:312,icon:'🧠',source:'HackerNews'}, {name:'Apple Vision Pro Apps',cat:'tech',pct:198,icon:'🥽',source:'The Verge'}, {name:'Tesla Autopilot Update',cat:'tech',pct:178,icon:'🚗',source:'TechCrunch'}, {name:'Meta AI Assistant 2026',cat:'tech',pct:167,icon:'💡',source:'Wired'}, {name:'Google Gemini Ultra',cat:'tech',pct:234,icon:'🔍',source:'9to5Google'}, {name:'Amazon AWS AI Cloud',cat:'tech',pct:198,icon:'☁️',source:'TechCrunch'}, {name:'TikTok NPC Streaming US',cat:'social',pct:380,icon:'🎵',source:'TikTok US'}, {name:'NFL Super Bowl Highlights',cat:'social',pct:290,icon:'🏈',source:'ESPN US'}, {name:'MrBeast 300M Subscribers',cat:'social',pct:267,icon:'▶️',source:'YouTube US'}, {name:'Taylor Swift Eras Tour',cat:'social',pct:245,icon:'🎤',source:'Billboard'}, {name:'NBA Finals 2026',cat:'social',pct:234,icon:'🏀',source:'ESPN US'}, {name:'Beyonce Renaissance II',cat:'social',pct:312,icon:'🎵',source:'Rolling Stone'}, {name:'MLB World Series 2026',cat:'social',pct:198,icon:'⚾',source:'ESPN'}, {name:'S&P 500 All-Time High',cat:'finance',pct:198,icon:'📈',source:'Bloomberg'}, {name:'Bitcoin ETF Record',cat:'finance',pct:312,icon:'₿',source:'CNBC'}, {name:'Fed Rate Decision 2026',cat:'finance',pct:178,icon:'🏦',source:'Reuters'}, {name:'AI Stocks Surge Wave',cat:'finance',pct:245,icon:'💹',source:'Yahoo Finance'}, {name:'Nvidia Earnings Record',cat:'finance',pct:289,icon:'💰',source:'CNBC'}, {name:'Apple Market Cap',cat:'finance',pct:234,icon:'🍎',source:'Bloomberg'}, {name:'Microsoft Cloud Revenue',cat:'finance',pct:212,icon:'☁️',source:'CNBC'}, {name:'Amazon Prime Day 2026',cat:'commerce',pct:234,icon:'📦',source:'Amazon US'}, {name:'TikTok Shop USA Record',cat:'commerce',pct:312,icon:'🛍️',source:'TikTok Shop'}, {name:'Shopify Merchant Growth',cat:'commerce',pct:178,icon:'🏪',source:'Shopify'}, {name:'Etsy Handmade Boom US',cat:'commerce',pct:156,icon:'🎨',source:'Etsy'}, {name:'Walmart eCommerce Boom',cat:'commerce',pct:167,icon:'🏬',source:'Retail Dive'}, {name:'Target Spring Deals',cat:'commerce',pct:145,icon:'🎯',source:'NRF'}, {name:'US Immigration Policy',cat:'news',pct:267,icon:'📰',source:'CNN US'}, {name:'Climate Bill Senate Vote',cat:'news',pct:234,icon:'🌍',source:'NYT'}, {name:'SpaceX Starship Mission',cat:'news',pct:289,icon:'🚀',source:'BBC'}, {name:'US Healthcare Reform',cat:'news',pct:198,icon:'🏥',source:'Washington Post'}, {name:'American Economy 2026',cat:'news',pct:178,icon:'🗳️',source:'Reuters'}, {name:'US Tech Antitrust',cat:'news',pct:212,icon:'⚖️',source:'NYT'}, {name:'FEMA Hurricane Response',cat:'news',pct:167,icon:'🌀',source:'CNN'}, {name:'US AI Strategy Report',cat:'news',pct:156,icon:'🤖',source:'Washington Post'}, ], CA:[ {name:'Toronto AI Hub Growing',cat:'tech',pct:234,icon:'🤖',source:'Globe and Mail'}, {name:'Shopify Canada Expansion',cat:'tech',pct:212,icon:'💻',source:'CBC Tech'}, {name:'BlackBerry Cybersecurity',cat:'tech',pct:178,icon:'🔒',source:'Financial Post'}, {name:'Canadian Space Agency',cat:'tech',pct:167,icon:'🚀',source:'CBC News'}, {name:'Vancouver Tech Startups',cat:'tech',pct:156,icon:'💡',source:'BC Tech'}, {name:'Shopify AI Commerce',cat:'tech',pct:245,icon:'🛒',source:'Betakit CA'}, {name:'Canadian Quantum Research',cat:'tech',pct:189,icon:'⚛️',source:'CBC Science'}, {name:'NHL Playoffs Canada',cat:'social',pct:312,icon:'🏒',source:'CBC Sports'}, {name:'Toronto Raptors Season',cat:'social',pct:245,icon:'🏀',source:'Sportsnet'}, {name:'Drake New Album Canada',cat:'social',pct:234,icon:'🎵',source:'Billboard CA'}, {name:'Montreal Comedy Festival',cat:'social',pct:167,icon:'😂',source:'La Presse'}, {name:'Blue Jays MLB Season',cat:'social',pct:234,icon:'⚾',source:'Sportsnet CA'}, {name:'Justin Bieber Comeback',cat:'social',pct:278,icon:'🎵',source:'Billboard CA'}, {name:'Canadian Idol Revival',cat:'social',pct:145,icon:'🎤',source:'CTV'}, {name:'TSX Composite Record',cat:'finance',pct:198,icon:'📊',source:'Financial Post'}, {name:'Canadian Dollar Strength',cat:'finance',pct:167,icon:'💵',source:'Reuters CA'}, {name:'RBC Royal Bank Earnings',cat:'finance',pct:156,icon:'🏦',source:'Globe and Mail'}, {name:'Canadian Housing Market',cat:'finance',pct:234,icon:'🏠',source:'Financial Post'}, {name:'Brookfield Asset Growth',cat:'finance',pct:189,icon:'💹',source:'Globe Mail CA'}, {name:'Canadian Pension Plan',cat:'finance',pct:167,icon:'👴',source:'FP Canada'}, {name:'Cannabis Industry Canada',cat:'finance',pct:145,icon:'🌿',source:'MJ Business'}, {name:'Amazon Canada Best',cat:'commerce',pct:178,icon:'📦',source:'Amazon CA'}, {name:'Canadian Tire Tools',cat:'commerce',pct:156,icon:'🔧',source:'Retail CA'}, {name:'Lululemon Canada Sales',cat:'commerce',pct:189,icon:'🧘',source:'Retail CA'}, {name:'Tim Hortons New Items',cat:'commerce',pct:156,icon:'☕',source:'QSR CA'}, {name:'Roots Canada Fashion',cat:'commerce',pct:134,icon:'🍁',source:'Fashion CA'}, {name:'Sport Chek Gear',cat:'commerce',pct:134,icon:'🏃',source:'Sport CA'}, {name:'Canadian Wildfires 2026',cat:'news',pct:234,icon:'🔥',source:'CBC News'}, {name:'Quebec Language Bill',cat:'news',pct:198,icon:'📋',source:'Radio-Canada'}, {name:'Canada NATO Spending',cat:'news',pct:178,icon:'🌐',source:'Globe and Mail'}, {name:'BC Flood Emergency',cat:'news',pct:212,icon:'🌊',source:'CBC BC'}, {name:'Canadian Election 2026',cat:'news',pct:267,icon:'🗳️',source:'CBC Politics'}, {name:'Trans Mountain Pipeline',cat:'news',pct:234,icon:'🛢️',source:'CBC News CA'}, {name:'First Nations Rights',cat:'news',pct:212,icon:'🏕️',source:'Globe Mail'}, {name:'Canada AI Policy',cat:'news',pct:178,icon:'🤖',source:'CBC Digital'}, ], GB:[ {name:'UK AI Safety Institute',cat:'tech',pct:234,icon:'🤖',source:'Guardian Tech'}, {name:'ARM Holdings Growth',cat:'tech',pct:267,icon:'💻',source:'BBC Tech'}, {name:'DeepMind New Research',cat:'tech',pct:289,icon:'🧠',source:'Nature UK'}, {name:'UK 5G Expansion 2026',cat:'tech',pct:178,icon:'📡',source:'The Register'}, {name:'London Fintech Boom',cat:'tech',pct:198,icon:'💳',source:'City AM'}, {name:'UK Quantum Computing',cat:'tech',pct:212,icon:'⚛️',source:'BBC Tech'}, {name:'Rolls Royce SMR Nuclear',cat:'tech',pct:198,icon:'⚡',source:'Guardian UK'}, {name:'Premier League Top Goals',cat:'social',pct:380,icon:'⚽',source:'BBC Sport'}, {name:'Glastonbury Festival 2026',cat:'social',pct:267,icon:'🎸',source:'NME'}, {name:'Strictly Come Dancing',cat:'social',pct:212,icon:'💃',source:'BBC'}, {name:'Royal Family News UK',cat:'social',pct:198,icon:'👑',source:'The Mirror'}, {name:'UK Love Island Viral',cat:'social',pct:189,icon:'❤️',source:'ITV'}, {name:'Wimbledon 2026',cat:'social',pct:267,icon:'🎾',source:'BBC Sport UK'}, {name:'Ed Sheeran World Tour',cat:'social',pct:234,icon:'🎸',source:'NME UK'}, {name:'FTSE 100 Record High',cat:'finance',pct:198,icon:'📈',source:'Reuters UK'}, {name:'UK Inflation Report',cat:'finance',pct:234,icon:'💷',source:'BBC Business'}, {name:'Bank of England Decision',cat:'finance',pct:212,icon:'🏦',source:'FT'}, {name:'London Property Market',cat:'finance',pct:245,icon:'🏠',source:'The Times'}, {name:'UK Pension Reform',cat:'finance',pct:167,icon:'💰',source:'Guardian'}, {name:'UK Gilt Bond Market',cat:'finance',pct:167,icon:'💷',source:'FT UK'}, {name:'Barclays Profit Record',cat:'finance',pct:145,icon:'🏦',source:'Reuters UK'}, {name:'Amazon UK Prime Deals',cat:'commerce',pct:178,icon:'📦',source:'Amazon UK'}, {name:'ASOS Fashion Trends',cat:'commerce',pct:189,icon:'👗',source:'Fashion UK'}, {name:'Marks Spencer Revival',cat:'commerce',pct:167,icon:'🛍️',source:'Retail UK'}, {name:'Primark Global Expansion',cat:'commerce',pct:156,icon:'🏪',source:'BBC Business'}, {name:'Etsy UK Handmade',cat:'commerce',pct:145,icon:'🎨',source:'Etsy UK'}, {name:'Boots Pharmacy Deals',cat:'commerce',pct:156,icon:'💊',source:'Retail UK'}, {name:'NHS Crisis Update',cat:'news',pct:278,icon:'🏥',source:'BBC News UK'}, {name:'UK Immigration Reform',cat:'news',pct:256,icon:'📋',source:'Guardian'}, {name:'Brexit Impact 2026',cat:'news',pct:234,icon:'🇬🇧',source:'BBC News'}, {name:'UK Energy Crisis',cat:'news',pct:212,icon:'⚡',source:'Sky News'}, {name:'Scotland Independence',cat:'news',pct:198,icon:'🏴󠁧󠁢󠁳󠁣󠁴󠁿',source:'BBC Scotland'}, {name:'UK Strikes Wave 2026',cat:'news',pct:212,icon:'✊',source:'BBC News UK'}, {name:'Thames Water Crisis',cat:'news',pct:189,icon:'💧',source:'Guardian UK'}, {name:'UK AI Regulation',cat:'news',pct:234,icon:'⚖️',source:'Guardian'}, ], DE:[ {name:'SAP Cloud AI Solutions',cat:'tech',pct:234,icon:'☁️',source:'DW Tech'}, {name:'Siemens Smart Factory',cat:'tech',pct:212,icon:'🏭',source:'Handelsblatt'}, {name:'BMW iX EV Launch',cat:'tech',pct:245,icon:'🚗',source:'Auto Motor'}, {name:'Berlin Tech Unicorns',cat:'tech',pct:198,icon:'🦄',source:'Gruenderszene'}, {name:'Bosch AI Robotics',cat:'tech',pct:178,icon:'🤖',source:'DW Innovation'}, {name:'Infineon Chip Tech',cat:'tech',pct:212,icon:'💾',source:'Handelsblatt'}, {name:'Allianz Insurtech',cat:'tech',pct:189,icon:'🛡️',source:'FAZ DE'}, {name:'Bundesliga Top Goals',cat:'social',pct:340,icon:'⚽',source:'Kicker'}, {name:'German Oktoberfest Viral',cat:'social',pct:267,icon:'🍺',source:'Spiegel'}, {name:'Helene Fischer Comeback',cat:'social',pct:234,icon:'🎵',source:'Bild'}, {name:'FC Bayern Champions',cat:'social',pct:312,icon:'🏆',source:'Sport Bild'}, {name:'German Grand Prix F1',cat:'social',pct:267,icon:'🏎️',source:'Sport Bild DE'}, {name:'Rammstein Comeback',cat:'social',pct:234,icon:'🎸',source:'Rolling Stone DE'}, {name:'German TV Tatort',cat:'social',pct:189,icon:'📺',source:'ARD'}, {name:'DAX Index Performance',cat:'finance',pct:198,icon:'📈',source:'Handelsblatt'}, {name:'Deutsche Bank Earnings',cat:'finance',pct:178,icon:'🏦',source:'Reuters DE'}, {name:'Germany Energy Transition',cat:'finance',pct:212,icon:'⚡',source:'DW Economy'}, {name:'German Real Estate',cat:'finance',pct:189,icon:'🏘️',source:'FAZ'}, {name:'Volkswagen EV Strategy',cat:'finance',pct:234,icon:'🚗',source:'Manager Magazin'}, {name:'Deutsche Telekom Profit',cat:'finance',pct:178,icon:'📡',source:'Handelsblatt'}, {name:'German Bund Bonds',cat:'finance',pct:156,icon:'💶',source:'Reuters DE'}, {name:'Amazon DE Best Sellers',cat:'commerce',pct:178,icon:'📦',source:'Amazon DE'}, {name:'Zalando Fashion Tech',cat:'commerce',pct:189,icon:'👟',source:'Zalando'}, {name:'Lidl Discount Trends',cat:'commerce',pct:156,icon:'🛒',source:'Lebensmittel'}, {name:'Aldi Global Expansion',cat:'commerce',pct:167,icon:'🏪',source:'Handelsblatt'}, {name:'Otto eCommerce Germany',cat:'commerce',pct:167,icon:'🛒',source:'Retail DE'}, {name:'Rossmann Beauty DE',cat:'commerce',pct:145,icon:'💄',source:'Beauty DE'}, {name:'German Coalition Crisis',cat:'news',pct:256,icon:'🏛️',source:'DW Politics'}, {name:'Germany Ukraine Aid',cat:'news',pct:234,icon:'🌐',source:'Tagesschau'}, {name:'German Migration Policy',cat:'news',pct:212,icon:'📋',source:'Spiegel'}, {name:'Germany Climate Goals',cat:'news',pct:198,icon:'🌿',source:'DW Environment'}, {name:'German Economy 2026',cat:'news',pct:245,icon:'📉',source:'Handelsblatt'}, {name:'Germany Energy Security',cat:'news',pct:234,icon:'🔥',source:'DW Wirtschaft'}, {name:'Bundeswehr Military',cat:'news',pct:212,icon:'🛡️',source:'Tagesschau DE'}, {name:'Germany AI Strategy',cat:'news',pct:189,icon:'🤖',source:'DW Innovation'}, ], FR:[ {name:'Station F Paris Startups',cat:'tech',pct:234,icon:'🚀',source:'BFM Tech'}, {name:'Mistral AI French Model',cat:'tech',pct:289,icon:'🤖',source:'Le Monde Tech'}, {name:'Thales Digital Defense',cat:'tech',pct:178,icon:'🔒',source:'La Tribune'}, {name:'Orange 5G Coverage',cat:'tech',pct:156,icon:'📡',source:'BFM Tech'}, {name:'Dassault Aviation Tech',cat:'tech',pct:198,icon:'✈️',source:'La Tribune FR'}, {name:'Doctolib Health Tech',cat:'tech',pct:189,icon:'🏥',source:'Challenges FR'}, {name:'French VR Gaming',cat:'tech',pct:167,icon:'🥽',source:'JeuxVideo.com'}, {name:'PSG Champions League',cat:'social',pct:345,icon:'⚽',source:'LEquipe'}, {name:'Paris Fashion Week',cat:'social',pct:312,icon:'👗',source:'Vogue FR'}, {name:'Tour de France 2026',cat:'social',pct:278,icon:'🚴',source:'LEquipe'}, {name:'French Open Roland Garros',cat:'social',pct:256,icon:'🎾',source:'LEquipe'}, {name:'Stromae New Album',cat:'social',pct:189,icon:'🎵',source:'NRJ FR'}, {name:'French Open Tennis',cat:'social',pct:267,icon:'🎾',source:'LEquipe FR'}, {name:'Angele New Album',cat:'social',pct:212,icon:'🎵',source:'NRJ France'}, {name:'CAC 40 Bull Run',cat:'finance',pct:198,icon:'📈',source:'BFM Business'}, {name:'BNP Paribas Earnings',cat:'finance',pct:178,icon:'🏦',source:'Les Echos'}, {name:'French Real Estate',cat:'finance',pct:212,icon:'🏠',source:'Le Figaro'}, {name:'Airbus A380 Revival',cat:'finance',pct:234,icon:'✈️',source:'La Tribune'}, {name:'LVMH Luxury Growth',cat:'finance',pct:245,icon:'💎',source:'Les Echos'}, {name:'Total Energies Green',cat:'finance',pct:189,icon:'🌱',source:'Les Echos FR'}, {name:'Credit Agricole Results',cat:'finance',pct:156,icon:'🏦',source:'BFM Business'}, {name:'Amazon France Deals',cat:'commerce',pct:178,icon:'📦',source:'Amazon FR'}, {name:'Carrefour Organic',cat:'commerce',pct:156,icon:'🥗',source:'LSA Conso'}, {name:'Decathlon Sports Boom',cat:'commerce',pct:167,icon:'⚽',source:'Retail FR'}, {name:'Sephora Beauty Tech',cat:'commerce',pct:189,icon:'💄',source:'LSA'}, {name:'Fnac Tech Deals',cat:'commerce',pct:156,icon:'💻',source:'Commerce FR'}, {name:'Auchan Supermarket FR',cat:'commerce',pct:134,icon:'🛒',source:'LSA France'}, {name:'French Presidential Policy',cat:'news',pct:245,icon:'🗳️',source:'France24'}, {name:'France Ukraine Support',cat:'news',pct:234,icon:'🌐',source:'Le Monde'}, {name:'Greve Transport France',cat:'news',pct:212,icon:'🚇',source:'BFMTV'}, {name:'France Immigration',cat:'news',pct:198,icon:'📋',source:'Le Figaro'}, {name:'French Pension Reform',cat:'news',pct:267,icon:'👴',source:'LeMonde'}, {name:'French Brain Drain AI',cat:'news',pct:212,icon:'🧠',source:'Le Monde FR'}, {name:'RATP Metro Strike',cat:'news',pct:189,icon:'🚇',source:'BFMTV'}, {name:'France AI Regulation',cat:'news',pct:178,icon:'⚖️',source:'France24'}, ], ES:[ {name:'Spanish AI National Plan',cat:'tech',pct:212,icon:'🤖',source:'El Confidencial'}, {name:'Telefonica Digital',cat:'tech',pct:189,icon:'📡',source:'El Economista'}, {name:'Barcelona Smart City',cat:'tech',pct:178,icon:'🏙️',source:'La Vanguardia'}, {name:'Spain Startup Ecosystem',cat:'tech',pct:198,icon:'🚀',source:'El Confidencial'}, {name:'Caixabank Digital ES',cat:'tech',pct:189,icon:'💳',source:'Expansion ES'}, {name:'SEAT Cupra Electric',cat:'tech',pct:198,icon:'🚗',source:'Motor ES'}, {name:'Indra Tech Defense',cat:'tech',pct:156,icon:'🔒',source:'El Mundo'}, {name:'Real Madrid Champions',cat:'social',pct:380,icon:'⚽',source:'Marca'}, {name:'Spanish Flamenco Viral',cat:'social',pct:234,icon:'💃',source:'El Pais'}, {name:'Rosalia World Tour',cat:'social',pct:256,icon:'🎤',source:'Los40'}, {name:'Spain Eurovision Win',cat:'social',pct:245,icon:'🎵',source:'RTVE'}, {name:'Atletico Madrid Season',cat:'social',pct:267,icon:'🏆',source:'AS Sport'}, {name:'Spain Padel Boom',cat:'social',pct:245,icon:'🏓',source:'Marca ES'}, {name:'Bad Bunny Spain Tour',cat:'social',pct:234,icon:'🎵',source:'Los40 ES'}, {name:'IBEX 35 Growth',cat:'finance',pct:178,icon:'📊',source:'Expansion'}, {name:'Santander Bank Profits',cat:'finance',pct:167,icon:'🏦',source:'Reuters ES'}, {name:'Spain Tourism Record',cat:'finance',pct:234,icon:'✈️',source:'El Economista'}, {name:'Spanish Housing Boom',cat:'finance',pct:212,icon:'🏠',source:'El Pais'}, {name:'Repsol Green Energy',cat:'finance',pct:156,icon:'🌱',source:'El Mundo'}, {name:'Ferrovial Infrastructure',cat:'finance',pct:178,icon:'🏗️',source:'Expansion ES'}, {name:'Melia Hotels Recovery',cat:'finance',pct:156,icon:'🏨',source:'El Economista'}, {name:'Amazon Spain Sales',cat:'commerce',pct:167,icon:'📦',source:'Amazon ES'}, {name:'Zara Inditex Global',cat:'commerce',pct:256,icon:'👔',source:'Moda ES'}, {name:'Mercadona Online ES',cat:'commerce',pct:167,icon:'🛒',source:'Alimarket ES'}, {name:'Mango Fashion Trend',cat:'commerce',pct:145,icon:'👗',source:'Moda ES'}, {name:'Spanish Wine Exports',cat:'commerce',pct:178,icon:'🍷',source:'La Semana Vinic'}, {name:'El Corte Ingles Digital',cat:'commerce',pct:145,icon:'🏬',source:'Retail ES'}, {name:'Spain Drought Crisis',cat:'news',pct:234,icon:'🌵',source:'El Pais'}, {name:'Catalan Politics 2026',cat:'news',pct:212,icon:'🏛️',source:'El Mundo'}, {name:'Spanish Election Results',cat:'news',pct:256,icon:'🗳️',source:'RTVE'}, {name:'Spain Housing Crisis',cat:'news',pct:245,icon:'🏠',source:'El Confidencial'}, {name:'Spain Water Emergency',cat:'news',pct:234,icon:'💧',source:'El Pais ES'}, {name:'Barajas Airport Record',cat:'news',pct:189,icon:'✈️',source:'ABC ES'}, {name:'Spain Ukraine Aid',cat:'news',pct:189,icon:'🌐',source:'El Pais'}, {name:'Spain AI Jobs',cat:'news',pct:167,icon:'🤖',source:'El Confidencial'}, ], IT:[{name:'Leonardo AI Defense',cat:'tech',pct:212,icon:'🤖',source:'Corriere Tech'},{name:'Ferrari Electric 2026',cat:'tech',pct:267,icon:'🏎️',source:'Auto IT'},{name:'Milan Tech District',cat:'tech',pct:189,icon:'💻',source:'Il Sole 24 Ore'},{name:'TIM 5G Italy',cat:'tech',pct:167,icon:'📡',source:'Corriere'},{name:'Prada Tech Integration',cat:'tech',pct:178,icon:'💡',source:'Milano Finanza'},{name:'Telecom Italia AI',cat:'tech',pct:178,icon:'📡',source:'Corriere IT'},{name:'Pirelli Smart Tire',cat:'tech',pct:167,icon:'🏎️',source:'Auto IT'},{name:'Serie A Scudetto Race',cat:'social',pct:345,icon:'⚽',source:'Gazzetta'},{name:'Ferrari F1 Victories',cat:'social',pct:312,icon:'🏆',source:'Autosprint'},{name:'Sanremo Festival 2026',cat:'social',pct:278,icon:'🎵',source:'ANSA'},{name:'Milan Fashion Week IT',cat:'social',pct:267,icon:'👠',source:'Vogue IT'},{name:'Juventus Champions',cat:'social',pct:234,icon:'⚽',source:'Tuttosport'},{name:'Italian MotoGP Race',cat:'social',pct:278,icon:'🏍️',source:'La Gazzetta'},{name:'Ultimo Concert Tour',cat:'social',pct:198,icon:'🎵',source:'Sorrisi IT'},{name:'FTSE MIB Record',cat:'finance',pct:189,icon:'📈',source:'Il Sole 24 Ore'},{name:'Unicredit Bank Growth',cat:'finance',pct:167,icon:'🏦',source:'Reuters IT'},{name:'Italy Tourism Record',cat:'finance',pct:245,icon:'🏛️',source:'ANSA Economy'},{name:'Italian BTP Bonds',cat:'finance',pct:178,icon:'💰',source:'Milano Finanza'},{name:'Enel Green Power',cat:'finance',pct:156,icon:'⚡',source:'Sole 24 Ore'},{name:'Fiat Electric Relaunch',cat:'finance',pct:178,icon:'🚗',source:'Quattroruote'},{name:'Mediobanca Deals IT',cat:'finance',pct:156,icon:'💰',source:'Il Sole 24 Ore'},{name:'Amazon Italy Deals',cat:'commerce',pct:167,icon:'📦',source:'Amazon IT'},{name:'Gucci Luxury Trend',cat:'commerce',pct:234,icon:'💼',source:'Fashion IT'},{name:'Esselunga Organic',cat:'commerce',pct:145,icon:'🛒',source:'GDO Week'},{name:'Lamborghini New SUV',cat:'commerce',pct:198,icon:'🚗',source:'Auto IT'},{name:'Italian Wine Global',cat:'commerce',pct:156,icon:'🍷',source:'Decanter IT'},{name:'Ferrari Store Trending',cat:'commerce',pct:189,icon:'🏎️',source:'Motorsport IT'},{name:'Italy Government Crisis',cat:'news',pct:234,icon:'🏛️',source:'Repubblica'},{name:'Italian Migration',cat:'news',pct:245,icon:'🚢',source:'La Stampa'},{name:'Vesuvius Earthquake',cat:'news',pct:212,icon:'🌋',source:'ANSA'},{name:'Italy Ukraine Policy',cat:'news',pct:189,icon:'🌐',source:'Corriere'},{name:'Italian Alps Melting',cat:'news',pct:178,icon:'🏔️',source:'Corriere Scienza'},{name:'Rome Mayor Crisis',cat:'news',pct:189,icon:'🏛️',source:'Repubblica'},{name:'Sicily Mafia Crackdown',cat:'news',pct:189,icon:'⚖️',source:'ANSA'},{name:'Italian Pension News',cat:'news',pct:167,icon:'👴',source:'Il Sole 24 Ore'},], NL:[{name:'ASML Chip Technology',cat:'tech',pct:289,icon:'🔬',source:'FD NL'},{name:'Amsterdam AI Institute',cat:'tech',pct:234,icon:'🤖',source:'NRC'},{name:'Booking.com AI Update',cat:'tech',pct:212,icon:'✈️',source:'Telegraaf'},{name:'Philips Health Tech',cat:'tech',pct:189,icon:'💊',source:'FD NL'},{name:'Dutch Startup Funding',cat:'tech',pct:178,icon:'💡',source:'Bright NL'},{name:'Wolters Kluwer AI NL',cat:'tech',pct:198,icon:'📚',source:'FD Netherlands'},{name:'TomTom Navigation AI',cat:'tech',pct:178,icon:'🗺️',source:'Bright NL'},{name:'Ajax Europa League',cat:'social',pct:312,icon:'⚽',source:'NOS Sport'},{name:'Dutch King Birthday',cat:'social',pct:234,icon:'👑',source:'NOS'},{name:'Netherlands Eurovision',cat:'social',pct:212,icon:'🎵',source:'NOS'},{name:'PSV Championship Run',cat:'social',pct:256,icon:'🏆',source:'Voetbal Int'},{name:'Dutch Cycling Record',cat:'social',pct:198,icon:'🚴',source:'AD Sport'},{name:'Feyenoord Europa',cat:'social',pct:289,icon:'⚽',source:'AD Sport NL'},{name:'Martin Garrix DJ NL',cat:'social',pct:212,icon:'🎧',source:'3FM NL'},{name:'AEX Record Breaking',cat:'finance',pct:198,icon:'📊',source:'Telegraaf'},{name:'ING Bank Earnings',cat:'finance',pct:167,icon:'🏦',source:'FD NL'},{name:'Shell Energy Transition',cat:'finance',pct:212,icon:'⚡',source:'FD'},{name:'Dutch Housing Shortage',cat:'finance',pct:234,icon:'🏠',source:'NOS Nieuws'},{name:'ABN AMRO Results',cat:'finance',pct:156,icon:'💰',source:'FD NL'},{name:'Aegon Insurance NL',cat:'finance',pct:145,icon:'🛡️',source:'FD NL'},{name:'Dutch Pension Reform',cat:'finance',pct:189,icon:'👴',source:'NRC Netherlands'},{name:'Bol.com Top Products',cat:'commerce',pct:189,icon:'📦',source:'Bol NL'},{name:'Albert Heijn Delivery',cat:'commerce',pct:167,icon:'🛒',source:'Levensmiddelenkrant'},{name:'HEMA Dutch Design',cat:'commerce',pct:145,icon:'🎨',source:'Retail NL'},{name:'Coolblue Tech Sales',cat:'commerce',pct:178,icon:'💻',source:'Tweakers'},{name:'Dutch Flower Exports',cat:'commerce',pct:156,icon:'🌷',source:'FD Agri'},{name:'Action Discount NL',cat:'commerce',pct:178,icon:'🏪',source:'RetailDetail NL'},{name:'Netherlands Farmers',cat:'news',pct:256,icon:'🚜',source:'NOS Nieuws'},{name:'Dutch Cabinet Formation',cat:'news',pct:234,icon:'🏛️',source:'NRC'},{name:'Wilders Government',cat:'news',pct:245,icon:'🗳️',source:'Volkskrant'},{name:'Dutch Climate Policy',cat:'news',pct:212,icon:'🌿',source:'NOS'},{name:'Rotterdam Port Growth',cat:'news',pct:178,icon:'⛴️',source:'NRC Economie'},{name:'Netherlands Nitrogen',cat:'news',pct:245,icon:'🌿',source:'NOS Nieuws'},{name:'Dutch Healthcare Wait',cat:'news',pct:198,icon:'🏥',source:'Volkskrant'},{name:'NL Energy Transition',cat:'news',pct:178,icon:'⚡',source:'NOS'},], PL:[{name:'CD Projekt Cyberpunk 2',cat:'tech',pct:289,icon:'🎮',source:'CD Projekt'},{name:'Poland Space Agency',cat:'tech',pct:212,icon:'🚀',source:'PAP Tech'},{name:'Warsaw Tech Hub',cat:'tech',pct:198,icon:'💻',source:'Wyborcza Tech'},{name:'Allegro Platform Growth',cat:'tech',pct:234,icon:'🛒',source:'Puls Biznesu'},{name:'Polish AI National Plan',cat:'tech',pct:178,icon:'🤖',source:'MF Gov PL'},{name:'PKN Orlen Tech PL',cat:'tech',pct:178,icon:'⛽',source:'WP Poland'},{name:'Polish Gaming Industry',cat:'tech',pct:234,icon:'🎮',source:'Onet Tech PL'},{name:'Legia Warsaw Champions',cat:'social',pct:290,icon:'⚽',source:'Sport PL'},{name:'Robert Lewandowski',cat:'social',pct:312,icon:'⚽',source:'Przeglad Sport'},{name:'Polish Volleyball Win',cat:'social',pct:256,icon:'🏐',source:'TVP Sport'},{name:'Doda Music Comeback',cat:'social',pct:189,icon:'🎵',source:'Pudelek'},{name:'Krakow Festival Viral',cat:'social',pct:167,icon:'🎪',source:'Gazeta Krakow'},{name:'Polish Ski World Cup',cat:'social',pct:212,icon:'⛷️',source:'TVP Sport PL'},{name:'Warsaw Music Festival',cat:'social',pct:189,icon:'🎵',source:'Gazeta PL'},{name:'WIG20 Stock Rally',cat:'finance',pct:189,icon:'📊',source:'Puls Biznesu'},{name:'PKO Bank Polski Growth',cat:'finance',pct:167,icon:'🏦',source:'Rzeczpospolita'},{name:'Poland EU Funds',cat:'finance',pct:212,icon:'💶',source:'Wyborcza'},{name:'Polish Zloty Perf',cat:'finance',pct:156,icon:'💵',source:'Parkiet'},{name:'Poland Housing Boom',cat:'finance',pct:198,icon:'🏠',source:'RynekPierwotny'},{name:'GPW Warsaw Stocks',cat:'finance',pct:167,icon:'📊',source:'Parkiet PL'},{name:'mBank Poland Digital',cat:'finance',pct:145,icon:'💳',source:'Bankier PL'},{name:'Allegro Top Sellers PL',cat:'commerce',pct:189,icon:'📦',source:'Allegro'},{name:'Biedronka Organic',cat:'commerce',pct:156,icon:'🛒',source:'Detal Dzis'},{name:'Reserved Fashion PL',cat:'commerce',pct:145,icon:'👗',source:'Fashion PL'},{name:'Polish Beer Export',cat:'commerce',pct:134,icon:'🍺',source:'Browary PL'},{name:'InPost Parcel Growth',cat:'commerce',pct:178,icon:'📮',source:'Puls Biznesu'},{name:'Lidl Poland Deals',cat:'commerce',pct:156,icon:'🛒',source:'Detal Dzis PL'},{name:'Poland Ukraine Refugees',cat:'news',pct:267,icon:'🌍',source:'TVN24'},{name:'Polish-German Relations',cat:'news',pct:234,icon:'🤝',source:'Wyborcza'},{name:'Tusk Government 2026',cat:'news',pct:245,icon:'🏛️',source:'Onet News'},{name:'Poland NATO Defense',cat:'news',pct:212,icon:'🛡️',source:'PAP News'},{name:'Oder River Environment',cat:'news',pct:189,icon:'🌊',source:'Wyborcza'},{name:'Polish Rail Reform',cat:'news',pct:198,icon:'🚆',source:'Wyborcza PL'},{name:'Poland Smog Crisis',cat:'news',pct:212,icon:'🌫️',source:'TVN24 PL'},{name:'Poland EU Relations',cat:'news',pct:189,icon:'🇪🇺',source:'Wyborcza'},], SE:[{name:'Spotify AI Features',cat:'tech',pct:267,icon:'🎵',source:'Breakit SE'},{name:'Klarna Fintech Growth',cat:'tech',pct:245,icon:'💳',source:'DI Digital'},{name:'Ericsson 5G Contracts',cat:'tech',pct:212,icon:'📡',source:'SVD Naringsliv'},{name:'Northvolt Battery',cat:'tech',pct:289,icon:'⚡',source:'Breakit SE'},{name:'Stockholm AI Startup',cat:'tech',pct:198,icon:'🤖',source:'Techarenan'},{name:'King Gaming Sweden',cat:'tech',pct:212,icon:'🎮',source:'DI Digital SE'},{name:'Voi Scooter Tech SE',cat:'tech',pct:189,icon:'🛴',source:'Breakit SE'},{name:'ABBA Voyage Virtual',cat:'social',pct:278,icon:'🎵',source:'Aftonbladet'},{name:'Swedish Football Euro',cat:'social',pct:234,icon:'⚽',source:'SVT Sport'},{name:'Melodifestivalen 2026',cat:'social',pct:212,icon:'🎤',source:'SVT'},{name:'Zlatan Return',cat:'social',pct:312,icon:'⚽',source:'Expressen'},{name:'Swedish Royal Family',cat:'social',pct:189,icon:'👑',source:'Aftonbladet'},{name:'Avicii Memorial Event',cat:'social',pct:245,icon:'🎧',source:'Aftonbladet SE'},{name:'Swedish Handball World',cat:'social',pct:212,icon:'🤾',source:'SVT Sport SE'},{name:'OMX Stockholm Record',cat:'finance',pct:189,icon:'📊',source:'DI'},{name:'Handelsbanken Results',cat:'finance',pct:167,icon:'🏦',source:'SvD Ekonomi'},{name:'Swedish Krona Recovery',cat:'finance',pct:178,icon:'💵',source:'Riksbank'},{name:'IKEA Global Revenue',cat:'finance',pct:212,icon:'🪑',source:'DI'},{name:'Volvo Electric Sales',cat:'finance',pct:234,icon:'🚗',source:'Aftonbladet'},{name:'Handelsbanken Mortgage',cat:'finance',pct:156,icon:'🏠',source:'DI Sweden'},{name:'Riksbank Rate Decision',cat:'finance',pct:167,icon:'🏦',source:'E24 SE'},{name:'IKEA New Collection',cat:'commerce',pct:234,icon:'🪑',source:'IKEA SE'},{name:'H&M Fashion Trends',cat:'commerce',pct:198,icon:'👗',source:'Fashion SE'},{name:'Clas Ohlson Deals',cat:'commerce',pct:145,icon:'🔧',source:'Retail SE'},{name:'Swedish Oat Milk Oatly',cat:'commerce',pct:167,icon:'🥛',source:'FoodTech SE'},{name:'Swish Payment Growth',cat:'commerce',pct:189,icon:'💸',source:'SvD Ekonomi'},{name:'ICA Supermarket SE',cat:'commerce',pct:145,icon:'🛒',source:'Livsmedelsvarlden'},{name:'Sweden NATO Integration',cat:'news',pct:245,icon:'🛡️',source:'SVT Nyheter'},{name:'Swedish Crime Wave',cat:'news',pct:234,icon:'⚖️',source:'Aftonbladet'},{name:'Swedish Schools Crisis',cat:'news',pct:212,icon:'🏫',source:'SVT Nyheter'},{name:'Tidoavtalet Policy',cat:'news',pct:198,icon:'🏛️',source:'SVD'},{name:'Sweden Energy Policy',cat:'news',pct:189,icon:'⚡',source:'Energinyheter'},{name:'Sweden Nuclear Restart',cat:'news',pct:198,icon:'☢️',source:'Aftonbladet SE'},{name:'Swedish Gang Clampdown',cat:'news',pct:245,icon:'⚠️',source:'SVT Nyheter'},{name:'Sweden EU Relations',cat:'news',pct:178,icon:'🇪🇺',source:'SVT'},], NO:[{name:'Equinor Offshore Wind',cat:'tech',pct:245,icon:'🌬️',source:'E24'},{name:'Kongsberg Defense Tech',cat:'tech',pct:212,icon:'🛡️',source:'Aftenposten'},{name:'Norwegian EV Leadership',cat:'tech',pct:289,icon:'🚗',source:'E24'},{name:'Statkraft Renewable',cat:'tech',pct:198,icon:'⚡',source:'Dagbladet'},{name:'Oslo AI Research',cat:'tech',pct:178,icon:'🤖',source:'Kode24'},{name:'Pexip Video Tech NO',cat:'tech',pct:189,icon:'📹',source:'Kode24 NO'},{name:'Aker BioMarine NO',cat:'tech',pct:167,icon:'🐟',source:'E24 Norway'},{name:'Rosenborg Champions',cat:'social',pct:267,icon:'⚽',source:'VG Sport'},{name:'Norwegian Biathlon',cat:'social',pct:245,icon:'🎿',source:'NRK Sport'},{name:'Magnus Carlsen Chess',cat:'social',pct:234,icon:'♟️',source:'Aftenposten'},{name:'Norwegian Trolls TikTok',cat:'social',pct:189,icon:'🌲',source:'VG'},{name:'Aurora Borealis Viral',cat:'social',pct:178,icon:'🌌',source:'NRK'},{name:'Erling Haaland Goals',cat:'social',pct:345,icon:'⚽',source:'VG Sport NO'},{name:'Norwegian Ski Jump',cat:'social',pct:267,icon:'⛷️',source:'NRK Sport NO'},{name:'Oslo Bors Bull Run',cat:'finance',pct:198,icon:'📈',source:'E24'},{name:'DNB Bank Norway',cat:'finance',pct:167,icon:'🏦',source:'Finansavisen'},{name:'Norwegian Oil Fund',cat:'finance',pct:256,icon:'💰',source:'NRK'},{name:'Salmon Export Record',cat:'finance',pct:212,icon:'🐟',source:'Seafood Norway'},{name:'Norway House Prices',cat:'finance',pct:189,icon:'🏠',source:'E24'},{name:'Aker ASA Investments',cat:'finance',pct:156,icon:'💰',source:'E24 NO'},{name:'Norway Sovereign Fund',cat:'finance',pct:198,icon:'🏦',source:'NRK Norway'},{name:'Elkjop Electronics',cat:'commerce',pct:167,icon:'📱',source:'Retail NO'},{name:'Kiwi Supermarket',cat:'commerce',pct:145,icon:'🛒',source:'Dagligvare'},{name:'Norwegian Salmon Exports',cat:'commerce',pct:178,icon:'🐟',source:'Sjomatrad'},{name:'Helly Hansen Outdoor',cat:'commerce',pct:156,icon:'🧥',source:'Sport NO'},{name:'XXL Sports Norway',cat:'commerce',pct:145,icon:'🏃',source:'Sport Norway'},{name:'Oda Grocery Delivery',cat:'commerce',pct:167,icon:'🛒',source:'E24 Norway'},{name:'Norway Ukraine Military',cat:'news',pct:245,icon:'🛡️',source:'NRK Nyheter'},{name:'Norwegian Refugee Policy',cat:'news',pct:212,icon:'📋',source:'Aftenposten'},{name:'Oslo Flooding Crisis',cat:'news',pct:198,icon:'🌊',source:'NRK'},{name:'Norway Oil Revenue',cat:'news',pct:234,icon:'🛢️',source:'E24'},{name:'Storting Election 2026',cat:'news',pct:189,icon:'🗳️',source:'VG Politikk'},{name:'Norwegian Salmon Crisis',cat:'news',pct:198,icon:'🐟',source:'NRK Nyheter'},{name:'Norway Electricity Prices',cat:'news',pct:212,icon:'⚡',source:'E24 Norway'},{name:'Norway NATO Defense',cat:'news',pct:189,icon:'🛡️',source:'NRK'},], CH:[{name:'Swiss AI Hub Zurich',cat:'tech',pct:234,icon:'🤖',source:'NZZ Tech'},{name:'ABB Robotics Innovation',cat:'tech',pct:212,icon:'🦾',source:'Handelszeitung'},{name:'Novartis Gene Therapy',cat:'tech',pct:245,icon:'🧬',source:'NZZ'},{name:'Swiss Fintech Zug',cat:'tech',pct:198,icon:'💳',source:'Finews CH'},{name:'EPFL Research',cat:'tech',pct:178,icon:'🔬',source:'EPFL News'},{name:'Roche Pharma AI CH',cat:'tech',pct:212,icon:'💊',source:'NZZ Switzerland'},{name:'Swiss Federal AI Lab',cat:'tech',pct:189,icon:'🔬',source:'SRF CH'},{name:'Swiss Football Euro',cat:'social',pct:267,icon:'⚽',source:'SRF Sport'},{name:'Roger Federer Legacy',cat:'social',pct:245,icon:'🎾',source:'Blick'},{name:'Basel Carnival Viral',cat:'social',pct:198,icon:'🎭',source:'SRF'},{name:'Swiss Alps Tourism',cat:'social',pct:234,icon:'🏔️',source:'Neue ZZ'},{name:'Zurich Film Festival',cat:'social',pct:178,icon:'🎬',source:'Blick'},{name:'Stan Wawrinka Tennis',cat:'social',pct:198,icon:'🎾',source:'Blick CH'},{name:'Fasnacht Basel Viral',cat:'social',pct:212,icon:'🎭',source:'TagesAnzeiger'},{name:'Swiss Market SMI',cat:'finance',pct:189,icon:'📈',source:'NZZ Finanzen'},{name:'UBS Post Credit Suisse',cat:'finance',pct:212,icon:'🏦',source:'Reuters CH'},{name:'Swiss Franc Strong',cat:'finance',pct:198,icon:'💵',source:'SNB'},{name:'Zurich Insurance Group',cat:'finance',pct:167,icon:'🛡️',source:'Handelszeitung'},{name:'Swiss Real Estate',cat:'finance',pct:234,icon:'🏠',source:'NZZ'},{name:'Swiss Re Insurance',cat:'finance',pct:156,icon:'🛡️',source:'NZZ Finanzen'},{name:'Nestlé Nutrition Sales',cat:'finance',pct:189,icon:'🥛',source:'Handelszeitung CH'},{name:'Migros Swiss Organic',cat:'commerce',pct:167,icon:'🛒',source:'Migros'},{name:'Rolex Watch Demand',cat:'commerce',pct:245,icon:'⌚',source:'Watch PR'},{name:'Swiss Chocolate Global',cat:'commerce',pct:178,icon:'🍫',source:'Chocosuisse'},{name:'Swatch Group Trend',cat:'commerce',pct:156,icon:'⌚',source:'Uhren CH'},{name:'Swiss Cheese Export',cat:'commerce',pct:145,icon:'🧀',source:'Switzerland Cheese'},{name:'Swiss Watches Exports',cat:'commerce',pct:189,icon:'⌚',source:'Federation Horlo'},{name:'Swiss Neutrality Ukraine',cat:'news',pct:245,icon:'🕊️',source:'SRF Nachrichten'},{name:'Swiss EU Relations',cat:'news',pct:234,icon:'🤝',source:'NZZ'},{name:'Geneva Climate Summit',cat:'news',pct:212,icon:'🌍',source:'RTS News'},{name:'Swiss Referendum 2026',cat:'news',pct:189,icon:'🗳️',source:'SRF'},{name:'Zurich Flood Warning',cat:'news',pct:178,icon:'🌊',source:'Blick News'},{name:'Geneva Peace Summit',cat:'news',pct:234,icon:'🕊️',source:'RTS Suisse'},{name:'Swiss Franc Too Strong',cat:'news',pct:198,icon:'💵',source:'NZZ CH'},{name:'Switzerland AI Ethics',cat:'news',pct:178,icon:'⚖️',source:'SRF'},], BE:[{name:'Belgium AI Hub Brussels',cat:'tech',pct:212,icon:'🤖',source:'De Standaard'},{name:'UCB Pharma Research',cat:'tech',pct:189,icon:'🧬',source:'L Echo'},{name:'Proximus 5G Belgium',cat:'tech',pct:167,icon:'📡',source:'De Standaard'},{name:'Ghent Biotech Cluster',cat:'tech',pct:178,icon:'🔬',source:'Trends BE'},{name:'Belgian Space Tech',cat:'tech',pct:156,icon:'🚀',source:'Science BE'},{name:'UCLouvain AI Research',cat:'tech',pct:189,icon:'🔬',source:'RTL Belgium'},{name:'Bekaert Wire Tech',cat:'tech',pct:167,icon:'🔗',source:'L Echo BE'},{name:'Red Devils World Cup',cat:'social',pct:345,icon:'⚽',source:'HLN Sport'},{name:'Eden Hazard Farewell',cat:'social',pct:267,icon:'⚽',source:'Le Soir Sport'},{name:'Tomorrowland 2026',cat:'social',pct:312,icon:'🎵',source:'DH Les Sports'},{name:'Belgian Beer Culture',cat:'social',pct:198,icon:'🍺',source:'RTL BE'},{name:'Bruges Carnival Viral',cat:'social',pct:178,icon:'🎭',source:'VRT Nieuws'},{name:'Belgian F1 GP Spa',cat:'social',pct:312,icon:'🏎️',source:'RTBF Sport'},{name:'Stromae Concert Brussels',cat:'social',pct:234,icon:'🎵',source:'DH Belgium'},{name:'BEL20 Index Belgium',cat:'finance',pct:178,icon:'📊',source:'L Echo'},{name:'KBC Bank Earnings',cat:'finance',pct:156,icon:'🏦',source:'De Tijd'},{name:'Belgian Real Estate',cat:'finance',pct:212,icon:'🏠',source:'De Standaard'},{name:'AB InBev Revenue',cat:'finance',pct:198,icon:'🍺',source:'L Echo'},{name:'Ageas Insurance Growth',cat:'finance',pct:145,icon:'🛡️',source:'De Tijd'},{name:'Solvay Chemical Group',cat:'finance',pct:145,icon:'🧪',source:'L Echo'},{name:'UCB Biopharma Results',cat:'finance',pct:156,icon:'💊',source:'De Tijd BE'},{name:'Colruyt Store Deals',cat:'commerce',pct:156,icon:'🛒',source:'RetailDetail'},{name:'Belgian Chocolate Brands',cat:'commerce',pct:189,icon:'🍫',source:'FoodBE'},{name:'Delhaize Organic',cat:'commerce',pct:145,icon:'🥦',source:'RetailDetail'},{name:'Brussels Airlines Growth',cat:'commerce',pct:167,icon:'✈️',source:'L Avenir'},{name:'Antwerp Diamond Trade',cat:'commerce',pct:134,icon:'💎',source:'De Tijd'},{name:'Colruyt Wine Belgium',cat:'commerce',pct:145,icon:'🍷',source:'RetailDetail BE'},{name:'Belgium Government',cat:'news',pct:234,icon:'🏛️',source:'VRT Nieuws'},{name:'Brussels NATO Summit',cat:'news',pct:245,icon:'🛡️',source:'RTBF'},{name:'Belgian Language Divide',cat:'news',pct:212,icon:'🗣️',source:'Le Soir'},{name:'Belgium Ukraine Aid',cat:'news',pct:198,icon:'🌐',source:'HLN Nieuws'},{name:'Belgian Climate Protests',cat:'news',pct:178,icon:'🌿',source:'De Standaard'},{name:'Brussels Metro Strike',cat:'news',pct:212,icon:'🚇',source:'RTBF'},{name:'Belgian Tax Reform',cat:'news',pct:189,icon:'💶',source:'Le Soir BE'},{name:'Belgium AI Policy',cat:'news',pct:167,icon:'🤖',source:'VRT'},], PT:[{name:'Lisbon Tech Hub',cat:'tech',pct:212,icon:'💻',source:'Jornal Economico'},{name:'Portugal AI Strategy',cat:'tech',pct:189,icon:'🤖',source:'Publico Tech'},{name:'Farfetch Portugal',cat:'tech',pct:178,icon:'👗',source:'Dinheiro Vivo'},{name:'Portuguese Space Tech',cat:'tech',pct:156,icon:'🚀',source:'Ciencia PT'},{name:'Altice Portugal 5G',cat:'tech',pct:167,icon:'📡',source:'Tek PT'},{name:'Feedzai AI Portugal',cat:'tech',pct:189,icon:'🤖',source:'Eco Portugal'},{name:'EDP Renewable Energy',cat:'tech',pct:198,icon:'⚡',source:'Dinheiro Vivo'},{name:'Sporting CP Champions',cat:'social',pct:312,icon:'⚽',source:'Record PT'},{name:'Cristiano Ronaldo News',cat:'social',pct:380,icon:'⚽',source:'A Bola'},{name:'Web Summit Lisbon',cat:'social',pct:267,icon:'🌐',source:'Publico'},{name:'Portuguese Fado Revival',cat:'social',pct:198,icon:'🎵',source:'Publico Cultura'},{name:'Benfica Euro Run',cat:'social',pct:245,icon:'🏆',source:'O Jogo'},{name:'Benfica UEFA Cup',cat:'social',pct:289,icon:'⚽',source:'A Bola PT'},{name:'Salvador Sobral Music',cat:'social',pct:189,icon:'🎵',source:'Publico PT'},{name:'PSI 20 Portugal',cat:'finance',pct:167,icon:'📈',source:'Jornal Economico'},{name:'CGD Bank Growth',cat:'finance',pct:156,icon:'🏦',source:'Dinheiro Vivo'},{name:'Portugal Tourism Record',cat:'finance',pct:245,icon:'✈️',source:'Expresso'},{name:'Lisbon Property Boom',cat:'finance',pct:234,icon:'🏠',source:'Idealista PT'},{name:'Portugal Startup Funds',cat:'finance',pct:178,icon:'💰',source:'Eco PT'},{name:'Galp Energy Portugal',cat:'finance',pct:167,icon:'⛽',source:'Eco PT'},{name:'Sonae Retail Group',cat:'finance',pct:145,icon:'🏬',source:'Jornal Economico'},{name:'Continente Deals PT',cat:'commerce',pct:156,icon:'🛒',source:'Distribuicao Hoje'},{name:'Portuguese Wine Global',cat:'commerce',pct:189,icon:'🍷',source:'Wines PT'},{name:'Jeronimo Martins Growth',cat:'commerce',pct:167,icon:'🏪',source:'Jornal Economico'},{name:'Portugal Fashion Week',cat:'commerce',pct:167,icon:'👗',source:'Vogue PT'},{name:'Pastel de Nata Global',cat:'commerce',pct:178,icon:'🥐',source:'Taste PT'},{name:'Worten Electronics PT',cat:'commerce',pct:145,icon:'📱',source:'Retail PT'},{name:'Portugal Housing Crisis',cat:'news',pct:245,icon:'🏠',source:'Publico'},{name:'Portugal Ukraine Refugees',cat:'news',pct:212,icon:'🌍',source:'RTP Noticias'},{name:'Madeira Fires 2026',cat:'news',pct:198,icon:'🔥',source:'SIC Noticias'},{name:'Portugal EU Presidency',cat:'news',pct:189,icon:'🇪🇺',source:'Publico'},{name:'Lisbon Floods Alert',cat:'news',pct:178,icon:'🌊',source:'Correio da Manha'},{name:'Portugal Fires 2026',cat:'news',pct:234,icon:'🔥',source:'Publico PT'},{name:'Lisbon Metro Expansion',cat:'news',pct:189,icon:'🚇',source:'Correio da Manha'},{name:'Portugal AI Jobs',cat:'news',pct:167,icon:'🤖',source:'Eco PT'},], AT:[{name:'Austria AI Competence',cat:'tech',pct:212,icon:'🤖',source:'DerStandard'},{name:'Kapsch Tech Solutions',cat:'tech',pct:189,icon:'💻',source:'WirtschaftsBlatt'},{name:'Vienna Tech Startups',cat:'tech',pct:198,icon:'🚀',source:'Trending Topics'},{name:'OMV Sustainability Tech',cat:'tech',pct:167,icon:'🌱',source:'WirtschaftsBlatt'},{name:'A1 Telekom 5G Austria',cat:'tech',pct:156,icon:'📡',source:'Futurezone'},{name:'Anton Paar Tech AT',cat:'tech',pct:189,icon:'🔬',source:'WirtschaftsBlatt'},{name:'Verbund Green Energy',cat:'tech',pct:178,icon:'💧',source:'Der Standard AT'},{name:'Austria Football Euro',cat:'social',pct:278,icon:'⚽',source:'Krone Sport'},{name:'Vienna Philharmonic',cat:'social',pct:234,icon:'🎼',source:'ORF'},{name:'Viennale Film Festival',cat:'social',pct:189,icon:'🎬',source:'Der Standard'},{name:'Schladming Ski World',cat:'social',pct:245,icon:'⛷️',source:'Krone Sport'},{name:'Austrian Christmas Markets',cat:'social',pct:198,icon:'🎄',source:'ORF'},{name:'Austrian Ski Season',cat:'social',pct:312,icon:'⛷️',source:'Krone Sport AT'},{name:'Vienna Life Ball',cat:'social',pct:198,icon:'🎭',source:'Krone AT'},{name:'ATX Vienna Index',cat:'finance',pct:178,icon:'📊',source:'Boerse Express'},{name:'Raiffeisen Bank Austria',cat:'finance',pct:156,icon:'🏦',source:'WirtschaftsBlatt'},{name:'Austrian Property Market',cat:'finance',pct:212,icon:'🏠',source:'Willhaben'},{name:'Vienna Insurance Group',cat:'finance',pct:145,icon:'🛡️',source:'Boerse Express'},{name:'Novomatic Gaming',cat:'finance',pct:167,icon:'🎰',source:'WirtschaftsBlatt'},{name:'Erste Bank Austria',cat:'finance',pct:156,icon:'🏦',source:'Der Standard AT'},{name:'OMV Oil Austria',cat:'finance',pct:145,icon:'⛽',source:'WirtschaftsBlatt'},{name:'REWE Austria Deals',cat:'commerce',pct:156,icon:'🛒',source:'Lebensmittel'},{name:'Spar Austria Organic',cat:'commerce',pct:145,icon:'🥦',source:'Spar AT'},{name:'Austrian Wine Exports',cat:'commerce',pct:167,icon:'🍷',source:'WineAustria'},{name:'Red Bull Global Brand',cat:'commerce',pct:245,icon:'🐂',source:'Forbes AT'},{name:'DM Drogerie Markt AT',cat:'commerce',pct:156,icon:'🧴',source:'Retail AT'},{name:'Manner Wafers Austria',cat:'commerce',pct:134,icon:'🍫',source:'Food AT'},{name:'Austria Ukraine Policy',cat:'news',pct:212,icon:'🌐',source:'ORF ZIB'},{name:'Vienna Neutrality Debate',cat:'news',pct:198,icon:'🕊️',source:'Der Standard'},{name:'Austria FPO Government',cat:'news',pct:234,icon:'🗳️',source:'APA'},{name:'Austrian Housing Costs',cat:'news',pct:189,icon:'🏠',source:'Krone'},{name:'Tirol Avalanche Season',cat:'news',pct:178,icon:'🏔️',source:'ORF Tirol'},{name:'Danube Flood Warning',cat:'news',pct:198,icon:'🌊',source:'APA Austria'},{name:'Austria AI Education',cat:'news',pct:167,icon:'🤖',source:'DerStandard'},{name:'Austria EU Council',cat:'news',pct:156,icon:'🇪🇺',source:'ORF'},], IE:[{name:'Dublin Silicon Docks',cat:'tech',pct:245,icon:'💻',source:'Silicon Republic'},{name:'Google Ireland AI',cat:'tech',pct:234,icon:'🔍',source:'Irish Times'},{name:'Meta Dublin Campus',cat:'tech',pct:212,icon:'👥',source:'Irish Times'},{name:'Irish Fintech Growth',cat:'tech',pct:198,icon:'💳',source:'Fintech Ireland'},{name:'Stripe HQ Ireland',cat:'tech',pct:267,icon:'💳',source:'Business Post'},{name:'Cork Biotech Hub IE',cat:'tech',pct:198,icon:'🧬',source:'Business Post IE'},{name:'Limerick Tech Campus',cat:'tech',pct:178,icon:'💻',source:'Irish Times'},{name:'GAA All-Ireland Final',cat:'social',pct:312,icon:'🏐',source:'RTE Sport'},{name:'Ireland Six Nations Rugby',cat:'social',pct:289,icon:'🏉',source:'RTE Sport'},{name:'Westlife Reunion Tour',cat:'social',pct:234,icon:'🎵',source:'RTE Entertainment'},{name:'Normal People Season 3',cat:'social',pct:198,icon:'🎬',source:'Irish Times'},{name:'Electric Picnic Festival',cat:'social',pct:178,icon:'🎪',source:'Entertainment IE'},{name:'Conor McGregor Return',cat:'social',pct:312,icon:'🥊',source:'RTE Sport'},{name:'Derry Girls Season 4',cat:'social',pct:245,icon:'🎬',source:'RTE Ireland'},{name:'Ireland GDP Growth',cat:'finance',pct:212,icon:'📈',source:'Irish Times'},{name:'AIB Bank Profits',cat:'finance',pct:178,icon:'🏦',source:'Irish Times'},{name:'Dublin Property Prices',cat:'finance',pct:245,icon:'🏠',source:'Irish Times'},{name:'Ireland Corporation Tax',cat:'finance',pct:234,icon:'💰',source:'Business Post'},{name:'Kerry Group Food',cat:'finance',pct:167,icon:'🧀',source:'Irish Examiner'},{name:'Irish 10Y Bond Yield',cat:'finance',pct:156,icon:'📊',source:'Irish Times'},{name:'Ryanair Profit Record',cat:'finance',pct:189,icon:'✈️',source:'Irish Times IE'},{name:'Amazon Ireland Deals',cat:'commerce',pct:167,icon:'📦',source:'Amazon IE'},{name:'Dunnes Stores Fashion',cat:'commerce',pct:145,icon:'👗',source:'Retail IE'},{name:'Irish Whiskey Global',cat:'commerce',pct:189,icon:'🥃',source:'Drinks Ireland'},{name:'Penneys International',cat:'commerce',pct:156,icon:'🛍️',source:'Retail Ireland'},{name:'Glanbia Dairy Exports',cat:'commerce',pct:134,icon:'🥛',source:'Agriland IE'},{name:'SuperValu Ireland',cat:'commerce',pct:145,icon:'🛒',source:'Checkout IE'},{name:'Ireland Housing Crisis',cat:'news',pct:267,icon:'🏠',source:'RTE News'},{name:'Irish Water Floods',cat:'news',pct:212,icon:'🌊',source:'Irish Times'},{name:'Ireland Immigration',cat:'news',pct:234,icon:'📋',source:'Irish Times'},{name:'Sinn Fein Government',cat:'news',pct:245,icon:'🗳️',source:'Irish Examiner'},{name:'Ireland Climate Action',cat:'news',pct:189,icon:'🌿',source:'Irish Times'},{name:'Irish Water Charges',cat:'news',pct:198,icon:'💧',source:'RTE News IE'},{name:'Cork City Flooding',cat:'news',pct:178,icon:'🌊',source:'Irish Examiner'},{name:'Ireland EU Digital',cat:'news',pct:167,icon:'🇪🇺',source:'Business Post'},], }; function getFlagEmoji(code) { var f = {US:'🇺🇸',CA:'🇨🇦',GB:'🇬🇧',DE:'🇩🇪',FR:'🇫🇷',ES:'🇪🇸',IT:'🇮🇹',NL:'🇳🇱',PL:'🇵🇱',SE:'🇸🇪',NO:'🇳🇴',CH:'🇨🇭',BE:'🇧🇪',PT:'🇵🇹',AT:'🇦🇹',IE:'🇮🇪'}; return f[code] || '🌍'; } function searchCountry(code, name) { var box = document.getElementById('srchResults'); var hd = document.getElementById('srchResultsHd'); var catBar = document.getElementById('srchCatBar'); if (!box) return; // Show loading box.innerHTML = '
Loading '+name+' trends...
'; if (hd) hd.innerHTML = getFlagEmoji(code)+' '+name+''; if (catBar) catBar.style.display = 'none'; var cm = {tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; var catIcons = {tech:'⚡',social:'📱',finance:'💰',news:'📰',commerce:'🛍️'}; function renderRow(t) { var row = document.createElement('div'); row.className = 'card srch-row'; row.dataset.cat = t.cat || 'news'; row.setAttribute('data-cat', t.cat || 'news'); row.style.cssText = 'display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;border:1px solid transparent;margin-bottom:3px'; var col = cm[t.cat] || '#888'; row.innerHTML = ''+(t.icon||catIcons[t.cat]||'📊')+''+ '
'+ '
'+(t.name||t.nm||'')+'
'+ '
'+(t.source||t.cat||'')+ (t.real?' ':'')+'
'+ '
'+ '+'+Math.abs(t.pct||0)+'%'; row.addEventListener('click', (function(trend, r){ return function(){ document.querySelectorAll('.srch-row').forEach(function(x){ x.style.background=''; x.style.borderColor='transparent'; }); r.style.background = 'rgba(255,35,71,.08)'; r.style.borderColor = 'rgba(255,35,71,.3)'; openSrchTrendModal(trend); }; })(t, row)); return row; } function showTrends(trends, isLive) { if (!trends || !trends.length) { box.innerHTML = '
No trends found for '+name+'
'; return; } var liveCount = trends.filter(function(t){ return t.real; }).length; if (hd) hd.innerHTML = getFlagEmoji(code)+' '+name+' — '+ trends.length+' trends '+ (isLive&&liveCount>0?'🟢 '+liveCount+' live':'📋 curated')+''; box.innerHTML = ''; trends.forEach(function(t){ box.appendChild(renderRow(t)); }); // Show category bar if (catBar) catBar.style.display = 'block'; // Reset cat filter document.querySelectorAll('#srchCatBar .ftab').forEach(function(b){ b.classList.remove('on'); }); var allBtn = document.querySelector('#srchCatBar .ftab'); if (allBtn) allBtn.classList.add('on'); } // Build curated trends with daily variation var dayOfYear = Math.floor((Date.now()-new Date(new Date().getFullYear(),0,0).getTime())/86400000); var curated = (COUNTRY_TRENDS[code]||[]).map(function(t,i){ var seed = (dayOfYear*31+i*7)%61-30; return Object.assign({},t,{id:90000+i, nm:t.name, pct:Math.max(50,Math.min(499,(t.pct||100)+seed))}); }); var shuffleSeed = dayOfYear+(code.charCodeAt(0)||65); curated.sort(function(a,b){ return ((a.id*shuffleSeed)%997)-((b.id*shuffleSeed)%997); }); // Show curated immediately showTrends(curated, false); // Fetch live data fetch(API+'/api/trends/country/'+code) .then(function(r){ return r.json(); }) .then(function(d){ var live = d.trends || []; if (!live.length) return; var seen = {}; live.forEach(function(t){ seen[(t.name||t.nm||'').toLowerCase().substring(0,20)]=true; }); var merged = live.slice(); curated.forEach(function(t){ if (!seen[t.name.toLowerCase().substring(0,20)]) merged.push(t); }); merged.sort(function(a,b){ return (b.pct||0)-(a.pct||0); }); showTrends(merged, true); }) .catch(function(){ /* keep curated */ }); } function filterSrchCat(cat, el) { document.querySelectorAll('#srchCatBar .ftab').forEach(function(b){b.classList.remove('on');}); if(el) el.classList.add('on'); var rows = document.querySelectorAll('#srchResults .srch-row'); rows.forEach(function(r){ var rowCat = r.getAttribute('data-cat') || r.dataset.cat || 'news'; r.style.display = (cat==='all' || rowCat===cat) ? 'flex' : 'none'; }); } function filterSrchCat(cat, el) { document.querySelectorAll('#srchCatTabs .ftab').forEach(function(b){ b.classList.remove('on'); }); if (el) el.classList.add('on'); document.querySelectorAll('.srch-cat-block').forEach(function(b){ b.style.display = (cat === 'all' || b.dataset.cat === cat) ? 'block' : 'none'; }); } function runSearch() { doSearch(); } function doSearch() { var q = (document.getElementById('srchInput') || {}).value || ''; if (!q.trim()) { toast('Enter a search term'); return; } var res = LIVE.filter(function(t) { return (t.name || t.nm || '').toLowerCase().indexOf(q.toLowerCase()) >= 0 || (t.source || '').toLowerCase().indexOf(q.toLowerCase()) >= 0 || (t.cat || '').toLowerCase().indexOf(q.toLowerCase()) >= 0; }); var box = document.getElementById('srchResults'); var hd = document.getElementById('srchResultsHd'); if (hd) hd.innerHTML = 'Results for "' + q + '" — ' + res.length + ' found'; if (!box) return; var cm = {tech:'#00d4ff', social:'#ff2347', finance:'#00e5a0', news:'#8b5cf6', commerce:'#f5c842'}; box.innerHTML = ''; if (!res.length) { box.innerHTML = '
No results found for "' + q + '"
'; return; } res.slice(0, 20).forEach(function(t) { var col = cm[t.cat] || 'var(--muted)'; var row = document.createElement('div'); row.className = 'card'; row.style.cssText = 'display:flex;align-items:center;gap:10px;margin-bottom:6px'; row.innerHTML = '' + (t.icon || '📊') + '' + '
' + (t.name || t.nm || '') + '
' + '
' + (t.source || t.cat || '') + '
' + '+' + (t.pct || 0) + '%'; box.appendChild(row); }); } // -- SEARCH TREND ANALYSIS MODAL -- var _srchCurrentTrend = null; function openSrchTrendModal(t) { if (!t) return; _srchCurrentTrend = t; var cm = {tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; var catIcons = {tech:'⚡',social:'📱',finance:'💰',news:'📰',commerce:'🛍️'}; var col = cm[t.cat] || 'var(--red)'; // Show panel var empty = document.getElementById('srchAnEmpty'); var content = document.getElementById('srchAnContent'); if (empty) empty.style.display = 'none'; if (content) content.style.display = 'block'; // Fill data var g = function(id){ return document.getElementById(id); }; if (g('srchAnIcon')) g('srchAnIcon').textContent = t.icon || catIcons[t.cat] || '📊'; if (g('srchAnTitle')) g('srchAnTitle').textContent = (t.name||t.nm||'').substring(0,60); if (g('srchAnMeta')) g('srchAnMeta').innerHTML = (t.source||t.cat||'') + ' · ' + (t.real ? '🟢 Live' : '📋 Curated'); if (g('srchAnPct')) { g('srchAnPct').textContent = '+'+Math.abs(t.pct||0)+'%'; g('srchAnPct').style.color = col; } if (g('srchAnSrc')) { g('srchAnSrc').textContent = (t.source||'TrendRadar').substring(0,20); g('srchAnSrc').style.color = col; } if (g('srchAnResult')) g('srchAnResult').innerHTML = '
Click Analyze below
'; if (g('srchAnBtn')) { g('srchAnBtn').textContent = '🤖 Analyze Trend'; g('srchAnBtn').disabled = false; g('srchAnBtn').style.background = 'var(--red)'; g('srchAnBtn').style.color = '#fff'; } // Mobile scroll if (window.innerWidth < 640) { var panel = document.getElementById('srchAnContent'); if (panel) setTimeout(function(){ panel.scrollIntoView({behavior:'smooth'}); }, 100); } } function closeSrchModal() { var empty = document.getElementById('srchAnEmpty'); var content = document.getElementById('srchAnContent'); if (empty) empty.style.display = 'flex'; if (content) content.style.display = 'none'; _srchCurrentTrend = null; } function closeSrchModal() { var empty=document.getElementById('srchAnEmpty'); var content=document.getElementById('srchAnContent'); if(empty) empty.style.display='flex'; if(content) content.style.display='none'; _srchCurrentTrend=null; } function closeSrchModal() { var empty = document.getElementById('srchAnalysisEmpty'); var content = document.getElementById('srchAnalysisContent'); if(empty) empty.style.display = 'block'; if(content) content.style.display = 'none'; _srchCurrentTrend = null; } function closeSrchModal() { document.getElementById('srchAnalyzeModal').style.display = 'none'; document.body.style.overflow = ''; } function runSrchAnalysis() { if (!_srchCurrentTrend) { toast('Select a trend first'); return; } var t = _srchCurrentTrend; var nm = t.name||t.nm||'Unknown', pct = t.pct||0, cat = t.cat||'general', src = t.source||'TrendRadar'; var cm = {tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}; var col = cm[cat] || 'var(--red)'; var btn = document.getElementById('srchAnBtn'); var box = document.getElementById('srchAnResult'); if(!btn||!box) return; btn.textContent='⏳ Analyzing...'; btn.disabled=true; box.innerHTML='
🤖 AI analyzing...
'; fetch(API+'/api/ai/analyze',{ method:'POST', headers:{'Content-Type':'application/json','Authorization':'Bearer '+(TOKEN||'')}, body:JSON.stringify({trend:nm,category:cat,growth:pct,source:src}) }).then(function(r){return r.json();}) .then(function(d){ var text=d.analysis||d.result||d.content||d.text||''; if(!text) throw new Error('empty'); btn.textContent='✅ Done'; btn.style.background='var(--green)'; btn.style.color='#000'; box.innerHTML=formatSrchAnalysis(text,cat,pct,col); setTimeout(function(){btn.textContent='🤖 Analyze Trend';btn.disabled=false;btn.style.background='var(--red)';btn.style.color='#fff';},3000); }).catch(function(){ var fb=buildFallbackAnalysis(nm,cat,pct,src); btn.textContent='✅ Done'; btn.style.background='var(--green)'; btn.style.color='#000'; box.innerHTML=formatSrchAnalysis(fb,cat,pct,col); setTimeout(function(){btn.textContent='🤖 Analyze Trend';btn.disabled=false;btn.style.background='var(--red)';btn.style.color='#fff';},3000); }); } function buildFallbackAnalysis(name, cat, pct, src) { var scores = { opportunity: pct > 200 ? 95 : pct > 100 ? 78 : 60, momentum: pct > 300 ? 98 : pct > 150 ? 82 : 65, timing: pct > 200 ? 90 : pct > 100 ? 72 : 55 }; var urgency = pct > 200 ? '🔴 ACT NOW — Peak momentum' : pct > 100 ? '🟡 HIGH — Act this week' : '🟢 MODERATE — Plan ahead'; var audience = { tech:'Developers, CTOs, tech startups, SaaS founders', social:'Content creators, influencers, brand managers', finance:'Investors, traders, financial advisors, CFOs', commerce:'E-commerce sellers, Amazon FBA, dropshippers', news:'Journalists, analysts, policymakers, researchers' }; var actions = { tech:['Create technical content around this topic','Build a tool or integration','Monitor GitHub for related projects','Join developer communities discussing this'], social:['Post content NOW while trend is hot','Use trending hashtags and keywords','Collaborate with influencers in this niche','Run targeted social ads'], finance:['Review portfolio exposure to this sector','Set price alerts and monitor closely','Research related ETFs and stocks','Consult financial advisor about positioning'], commerce:['Source products related to this trend','Optimize Amazon/Etsy listings for keywords','Launch ads targeting this interest','Stock up inventory before peak'], news:['Monitor developing stories closely','Create analysis or opinion content','Reach out to primary sources','Set up Google Alerts for updates'] }; var acts = (actions[cat] || actions.news); var lines = [ '**Trend:** ' + name + ' (+' + pct + '%)', '**Source:** ' + src, '', '## Opportunity Score', '📊 **' + scores.opportunity + '/100** — ' + (scores.opportunity > 80 ? 'Excellent opportunity' : scores.opportunity > 65 ? 'Good opportunity' : 'Moderate opportunity'), '', '## Momentum Analysis', 'Growth rate of **+' + pct + '%** indicates ' + (pct > 200 ? 'viral breakout — exploding across platforms' : pct > 100 ? 'strong acceleration — momentum building fast' : 'steady growth — consistent upward trend'), '', '## Target Audience', (audience[cat] || audience.news), '', '## Action Plan', acts.map(function(a){ return '• ' + a; }).join('\n'), '', '## Timing', urgency, '', '## Risk Factors', '• Trend saturation in 2-4 weeks if viral', '• Competition increases as visibility grows', '• Monitor for regulatory changes in ' + cat + ' sector' ]; return lines.join('\n'); function formatSrchAnalysis(text, cat, pct, color) { if (!text) return ''; var html = text .replace(/\*\*(.*?)\*\*/g, '$1') .replace(/## (.*?)\n/g, '
$1
') .replace(/• (.*?)\n/g, '
$1
') .replace(/\n/g, '
'); return '
' + html + '
'; } function addSrchToWL() { if (!_srchCurrentTrend) return; if (!USER) { toast('Login to save to Watchlist'); return; } var t = _srchCurrentTrend; var id = String(t.id || Date.now()); if (!WL.find(function(x){ return String(x.id) === id; })) { WL.push(t); localStorage.setItem('tr_wl', JSON.stringify(WL)); toast('Added to Watchlist ⭐'); } else { toast('Already in Watchlist'); } } function setAlertSrch() { if (!_srchCurrentTrend) return; if (!USER) { toast('Login to set alerts'); return; } var nm = _srchCurrentTrend.name || _srchCurrentTrend.nm || ''; ALERTS.push({keyword: nm, created: Date.now()}); localStorage.setItem('tr_alerts', JSON.stringify(ALERTS)); toast('Alert set for: ' + nm.substring(0, 30) + ' 🔔'); } function shareTrend() { if (!_srchCurrentTrend) return; var nm = _srchCurrentTrend.name || _srchCurrentTrend.nm || ''; var text = 'Trending: ' + nm + ' (+' + (_srchCurrentTrend.pct||0) + '%) via TrendRadar.ai'; if (navigator.share) { navigator.share({title: nm, text: text, url: 'https://mytrendradar.pages.dev'}); } else if (navigator.clipboard) { navigator.clipboard.writeText(text); toast('Copied to clipboard 🔗'); } } // Close modal on backdrop click var _srchModal = document.getElementById('srchAnalyzeModal'); if (_srchModal) { _srchModal.addEventListener('click', function(e) { if (e.target === this) closeSrchModal(); }); } // -- FAQ -- function toggleFaq(el){ var body=el.querySelector('.faq-body'),arrow=el.querySelector('.faq-arrow'),isOpen=body.style.display!=='none'; document.querySelectorAll('.faq-item .faq-body').forEach(function(b){b.style.display='none';}); document.querySelectorAll('.faq-item .faq-arrow').forEach(function(a){a.textContent='+';}); if(!isOpen){body.style.display='block';arrow.textContent='−';} } } // ── PDF EXPORT ── function downloadAnalysisPDF(nm, txt, gr, src, cat) { var color = {tech:'#00d4ff',social:'#ff2347',finance:'#00e5a0',news:'#8b5cf6',commerce:'#f5c842'}[cat] || '#ff2347'; var d = new Date().toLocaleDateString('en-US',{year:'numeric',month:'long',day:'numeric'}); var safe = (nm||'Trend').replace(/[^a-z0-9 ]/gi,'_').substring(0,30); var body = '

'+safe+'

'; body += '

Growth: +'+gr+'% | Category: '+(cat||'N/A')+' | Source: '+(src||'TrendRadar')+'

'; body += '

Date: '+d+'


'; body += '
'+(txt||'No analysis generated yet.')+'
'; var html = 'TrendRadar - '+safe+''; html += ''; html += ''; html += '
'+body+'
'; html += '

Generated by TrendRadar.ai

'; html += ''; var blob = new Blob([html],{type:'text/html'}); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href=url; a.download='TrendRadar-'+safe.replace(/ /g,'_')+'.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); toast('Exported! Open file and Print to save as PDF'); } function downloadSrchPDF() { if(!_srchCurrentTrend) return; var t = _srchCurrentTrend; var box = document.getElementById('srchAnResult'); var text = box ? (box.innerText||box.textContent||'') : ''; downloadAnalysisPDF(t.name||t.nm, text, t.pct, t.source, t.cat); } function downloadDashPDF() { if(!CHART_TREND){toast('Select and analyze a trend first');return;} var t = CHART_TREND; var box = document.getElementById('aiResult'); var text = box ? (box.innerText||box.textContent||'').trim() : ''; if(!text||text==='Select a trend →'){ toast('Analyze the trend first, then export PDF'); return; } downloadAnalysisPDF(t.name||t.nm, text, t.pct, t.source, t.cat); } function downloadDashPDF() { if(!CHART_TREND) { toast('Select a trend first'); return; } var t = CHART_TREND; var box = document.getElementById('aiResult'); var text = box ? (box.innerText||box.textContent||'') : ''; downloadAnalysisPDF(t.name||t.nm, text, t.pct, t.source, t.cat); } // -- PWA -- if('serviceWorker' in navigator)window.addEventListener('load',function(){navigator.serviceWorker.register('/sw.js').catch(function(){});});