1<!DOCTYPE html><html lang="en" data-theme="light" class="" style="color-scheme:light;background-color:#FAF9F5"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/b35cdb2b5704b4e1.css?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-aa94d005184696cb.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq"/>
1<script src="/_next/static/chunks/4bd1b696-10cb4c9d2844a506.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/3794-4200e5b269841298.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/main-app-51e6280ff18d3220.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/4370-7f18a8a5bf918b7f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/8500-2c410174062153d2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/8118-a93262edaf52024b.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/(app)/layout-de3cb1624683d36f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/(app)/error-1190b7de617f7c8a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/(app)/forecasts/error-61a2dce190e47a81.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/7087-44af660cef3e17d0.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/6175-ac10baf27e59d0f2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/(app)/forecasts/page-99f4ece9706118e5.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/7805-2644b7bc0c2c7120.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/4493-e8c8ca94910ca175.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/201-a709e552d26d5cf6.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/4152-5e4b27685074741a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/layout-aaf723e39658d196.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="/_next/static/chunks/app/not-found-0cd18b5fc130b8fc.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" async=""></script>
1<script src="https://clerk.brunu.ai/npm/@clerk/clerk-js@5/dist/clerk.browser.js" data-clerk-js-script="true" async="" crossorigin="anonymous" data-clerk-publishable-key="pk_live_Y2xlcmsuYnJ1bnUuYWkk"></script>
1<link rel="dns-prefetch" href="https://clerk.brunu.ai"/><link rel="preconnect" href="https://clerk.brunu.ai" crossorigin="anonymous"/><link rel="dns-prefetch" href="https://www.google.com"/><link rel="dns-prefetch" href="https://egjuddsuwaorknzvdnkp.supabase.co"/><link rel="preconnect" href="https://egjuddsuwaorknzvdnkp.supabase.co" crossorigin="anonymous"/><link rel="dns-prefetch" href="https://va.vercel-scripts.com"/><meta name="theme-color" content="#FAF9F5"/><title>Brunu AI | Global Intelligence That Never Stops</title><meta name="description" content="Brunu AI is an always-on intelligence app for forecasts, alerts, and agentic analysis across geopolitics, climate, finance, conflict, infrastructure, and public risk. Verifiable AI accuracy with a public calibration log."/><meta name="application-name" content="Brunu AI"/><link rel="author" href="https://etra.global"/><meta name="author" content="Etra Global AI"/><link rel="manifest" href="/manifest.json"/><meta name="keywords" content="Brunu,Brunu AI,AI forecasting,AI intelligence app,global event prediction,probabilistic forecasting,AI risk monitoring,early warning system,geopolitical AI,Bayesian forecasting,agentic AI,AI analyst,prediction platform,AI consumer app,Canadian AI,real-time alerts,crisis intelligence,world events AI"/><meta name="creator" content="Etra Global AI"/><meta name="publisher" content="Etra Global AI"/><meta name="robots" content="index, follow"/><meta name="googlebot" content="index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"/><meta name="category" content="Technology"/><meta name="color-scheme" content="light dark"/><link rel="canonical" href="https://www.brunu.ai"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Brunu"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><meta property="og:title" content="Brunu AI | Global Intelligence That Never Stops"/><meta property="og:description" content="Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events. Verifiable accuracy. Public calibration log."/><meta property="og:url" content="https://www.brunu.ai"/><meta property="og:site_name" content="Brunu AI"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://www.brunu.ai/api/og"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Brunu AI â Global intelligence that never stops"/><meta property="og:image:type" content="image/png"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Brunu AI | Global Intelligence That Never Stops"/><meta name="twitter:description" content="Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events."/><meta name="twitter:image" content="https://www.brunu.ai/api/og"/><meta name="twitter:image:alt" content="Brunu AI"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.brunu.ai/#organization","name":"Brunu AI","alternateName":"Brunu","url":"https://www.brunu.ai","logo":"https://www.brunu.ai/apple-touch-icon.png","parentOrganization":{"@type":"Organization","name":"Etra Global AI","url":"https://etra.global"},"description":"Brunu AI is an always-on intelligence app for forecasts, alerts, and agentic analysis across global events."},{"@type":"WebSite","@id":"https://www.brunu.ai/#website","url":"https://www.brunu.ai","name":"Brunu AI","description":"Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events.","publisher":{"@id":"https://www.brunu.ai/#organization"},"inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.brunu.ai/?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"SoftwareApplication","@id":"https://www.brunu.ai/#app","name":"Brunu AI","operatingSystem":"iOS, Web","applicationCategory":"NewsApplication","applicationSubCategory":"AI Intelligence","url":"https://www.brunu.ai","downloadUrl":"https://apps.apple.com/app/id6761738315","installUrl":"https://apps.apple.com/app/id6761738315","publisher":{"@id":"https://www.brunu.ai/#organization"},"description":"AI-powered probabilistic forecasting and real-time alerts for emerging global events. Verifiable accuracy across geopolitics, climate, finance, conflict, infrastructure, and public risk.","offers":[{"@type":"Offer","name":"Explorer","price":"0","priceCurrency":"USD","description":"Free tier â view forecasts, limited chats"},{"@type":"Offer","name":"Companion","price":"9","priceCurrency":"USD","description":"Create forecasts + social features"},{"@type":"Offer","name":"Brunu","price":"29","priceCurrency":"USD","description":"Full analytics + extended chat"},{"@type":"Offer","name":"Professional","price":"59","priceCurrency":"USD","description":"Agent mode, trading, advanced features"},{"@type":"Offer","name":"Builder","price":"129","priceCurrency":"USD","description":"API access + enterprise features"}],"featureList":["Always-on intelligence monitoring","Probabilistic forecasts with public calibration","Real-time alerts for emerging global events","Agentic AI research and synthesis","Bayesian audit trail on every forecast","19+ external data feed integrations","MCP server for Claude Desktop integration"]}]}</script>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" noModule=""></script>
1</head><body class="app-body" style="background-color:#FAF9F5"><div hidden=""><!--$--><!--/$--></div><div id="brunu-loader" class="brunu-loader"><div class="brunu-loader-brand" style="font-weight:700">Brunu AI</div><div class="brunu-loader-line"><span class="brunu-loader-keep">Keep</span><span id="brunu-typing-word" class="brunu-loader-word">Exploring.</span></div></div>
1<script> 2 /* Pre-hydration Capacitor platform detection. The iOS gates 3 (hide Crypto + Trade tabs, re-route Stripe to IAP) run in 4 React useEffect, which means first paint briefly shows the 5 web version before hydration swaps it. Apple's reviewer 6 can screenshot that flash and read it as non-compliance. 7 Setting a classList flag BEFORE React hydrates lets CSS 8 hide the iOS-forbidden elements on the very first frame. */ 9 try { 10 var cap = window.Capacitor; 11 if (cap && cap.isNativePlatform && cap.isNativePlatform()) { 12 var p = cap.getPlatform && cap.getPlatform(); 13 if (p) document.documentElement.classList.add('capacitor-' + p); 14 document.documentElement.classList.add('capacitor-native'); 15 } 16 } catch(e) {} 17 /* Server already rendered data-theme + theme-color based on the 18 brunu-theme cookie. Only override here if localStorage 19 disagrees with the server theme (edge case: user set theme in 20 another browser / cleared cookies). Also persist the cookie 21 so the next SSR paint matches. */ 22 try { 23 var saved=localStorage.getItem('bruno_theme'); 24 var resolved=localStorage.getItem('brunu-theme'); 25 var theme=null; 26 if(saved==='System'){theme=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';} 27 else if(resolved==='dark'||saved==='Dark'){theme='dark';} 28 else if(resolved==='light'||saved==='Light'){theme='light';} 29 var current=document.documentElement.getAttribute('data-theme'); 30 if(theme && theme!==current){ 31 var bg=theme==='dark'?'#1F1F1E':'#FAF9F5'; 32 document.documentElement.setAttribute('data-theme',theme); 33 document.documentElement.classList.toggle('dark',theme==='dark'); 34 document.documentElement.style.colorScheme=theme; 35 document.documentElement.style.backgroundColor=bg; 36 if(document.body)document.body.style.backgroundColor=bg; 37 var existing=document.querySelectorAll('meta[name="theme-color"]'); 38 for(var i=0;i<existing.length;i++){existing[i].parentNode.removeChild(existing[i]);} 39 var meta=document.createElement('meta'); 40 meta.name='theme-color'; 41 meta.content=bg; 42 document.head.appendChild(meta); 43 var secure=location.protocol==='https:'?';secure':''; 44 document.cookie='brunu-theme='+theme+';path=/;max-age=31536000;samesite=lax'+secure; 45 } 46 } catch(e){} 47 (function(){ 48 function run(){ 49 var el=document.getElementById('brunu-typing-word'); 50 if(!el)return; 51 var words=['Exploring.','Thinking.','Creating.','Building.']; 52 // Start from empty and TYPE the first word in (was 53 // starting mid-word in delete mode before, which looked 54 // stuck). Faster per-character too so a full cycle fits
55 // inside the 2.2s window before we hide. 56 var wi=0,ci=0,del=false; 57 el.textContent=''; 58 function tick(){ 59 var ldr=document.getElementById('brunu-loader'); 60 if(!ldr||ldr.style.display==='none')return; 61 var w=words[wi]; 62 if(!del){ 63 el.textContent=w.substring(0,ci+1);ci++; 64 if(ci>=w.length){del=true;setTimeout(tick,450);return;} 65 setTimeout(tick,32); 66 } else { 67 el.textContent=w.substring(0,ci);ci--; 68 if(ci<0){del=false;ci=0;wi=(wi+1)%words.length;setTimeout(tick,80);return;} 69 setTimeout(tick,18); 70 } 71 } 72 // Start ticking immediately â no 600ms warm-up. 73 setTimeout(tick,30); 74 // Hide strategy (revised 2026-05-10): 75 // The PRIMARY signal is React itself â ClientShell calls 76 // window.__brunuHideLoader() on first paint. The signals 77 // below are fallbacks for when React fails to mount at 78 // all or when window.load never fires. 79 // 80 // - window.load + 250ms: covers the fast path. If all 81 // assets are loaded but React's mount is delayed, we 82 // still hide reasonably quickly. 83 // - 12s hard ceiling: catastrophic backstop. If neither 84 // React nor window.load fired in 12s, hide anyway so 85 // the user isn't trapped staring at the splash. 86 // 87 // The old 2.2s cap was REMOVED â it fired before bundles 88 // finished downloading on slow networks, leaving a blank 89 // WebView zone until React caught up. 90 var hidden=false; 91 function hide(){ 92 if(hidden)return;hidden=true; 93 var l=document.getElementById('brunu-loader');if(!l)return; 94 l.style.pointerEvents='none';l.style.opacity='0'; 95 setTimeout(function(){if(l)l.style.display='none';},220); 96 } 97 window.__brunuHideLoader=hide;
98 if(document.readyState==='complete'){setTimeout(hide,800);} 99 else{window.addEventListener('load',function(){setTimeout(hide,250);});} 100 setTimeout(hide,12000); 101 } 102 if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();} 103 })(); 104 </script>
104<div id="app-shell"><main id="page-content"><!--$--><!--/$--><div aria-hidden="true" style="position:fixed;inset:0;background-color:var(--brunu-bg, #FBFBFB);z-index:999999"></div><aside class="fixed top-0 left-0 bottom-0 z-[10] flex flex-col lg:hidden" style="width:64vw;max-width:230px;background-color:var(--background);border-right:1px solid var(--border);margin-top:calc(env(safe-area-inset-top, 0px) * -1);margin-bottom:calc(env(safe-area-inset-bottom, 0px) * -1);padding-top:env(safe-area-inset-top, 0px);padding-bottom:env(safe-area-inset-bottom, 0px);transform:translateX(-100%);transition:transform 300ms cubic-bezier(0.4,0,0.2,1);touch-action:pan-y"><div style="display:flex;align-items:center;gap:8px;padding-top:calc(var(--native-safe-top, 0px) + 12px);padding-left:12px;padding-right:12px;padding-bottom:8px"><img src="/brunu-logo-dark.png" alt="" style="width:22px;height:22px;object-fit:contain" class="brunu-nav-mark"/><span style="font-size:15px;font-weight:600;letter-spacing:0.04em;color:var(--foreground);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif">Brunu AI</span></div><style> 105 [data-theme="dark"] .brunu-nav-mark, .dark .brunu-nav-mark { 106 content: url('/brunu-logo-light.png'); 107 } 108 </style><nav style="flex:1;overflow-y:auto;padding:2px 10px 0"><div style="margin-bottom:6px"><div style="padding:0 10px;margin-bottom:2px;font-size:11px;font-weight:500;color:var(--muted-foreground);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">Intelligence</div><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/chat"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></span>Chat</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/chat/history"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-archive" aria-hidden="true"><rect width="20" height="5" x="2" y="3" rx="1"></rect><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"></path><path d="M10 12h4"></path></svg></span>Vault</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/chat/search"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></span>Search</a></div><div style="margin-bottom:6px"><div style="padding:0 10px;margin-bottom:2px;font-size:11px;font-weight:500;color:var(--muted-foreground);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">Dispatch</div><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--foreground);background-color:var(--muted);text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/forecasts"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:var(--foreground);color:var(--background);transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg></span>Forecasts</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/dispatch"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-radio" aria-hidden="true"><path d="M16.247 7.761a6 6 0 0 1 0 8.478"></path><path d="M19.075 4.933a10 10 0 0 1 0 14.134"></path><path d="M4.925 19.067a10 10 0 0 1 0-14.134"></path><path d="M7.753 16.239a6 6 0 0 1 0-8.478"></path><circle cx="12" cy="12" r="2"></circle></svg></span>News</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/finance"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-newspaper" aria-hidden="true"><path d="M15 18h-5"></path><path d="M18 14h-8"></path><path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2"></path><rect width="8" height="4" x="10" y="6" rx="1"></rect></svg></span>Finance</a></div><div style="margin-bottom:6px"><div style="padding:0 10px;margin-bottom:2px;font-size:11px;font-weight:500;color:var(--muted-foreground);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">
108Organize</div><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/calendar"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg></span>Calendar</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/projects"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase" aria-hidden="true"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg></span>Projects</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;transition:background-color 0.15s" href="/artifacts"><span style="display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open" aria-hidden="true"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg></span>Artifacts</a></div></nav><div style="border-top:1px solid var(--border);padding:4px 10px calc(var(--native-safe-bottom, 0px) + 12px)"><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/settings"><span style="display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></span>Settings</a><a style="display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:8px;font-size:15px;color:var(--muted-foreground);background-color:transparent;text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/incognito"><span style="display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;flex-shrink:0;background-color:transparent;color:inherit;transition:all 0.15s"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye-off" aria-hidden="true"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg></span>Incognito</a><a style="display:flex;align-items:center;justify-content:center;height:42px;padding:0 10px;border-radius:8px;font-size:15px;font-weight:600;color:var(--background);background-color:var(--foreground);text-decoration:none;margin-top:4px;margin-bottom:4px;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/login">Login</a><button aria-label="Toggle theme" style="display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;border-radius:8px;font-size:13px;color:var(--muted-foreground);background:none;border:none;cursor:pointer;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true" style="flex-shrink:0"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg>Dark mode</button></div></aside><div class="overflow-x-hidden lg:flex lg:h-screen lg:overflow-hidden" style="background-color:var(--background)"><aside class="hidden lg:flex flex-col h-screen sticky top-0 overflow-y-auto [&::-webkit-scrollbar]:hidden" style="background:var(--background);border-right:none;scrollbar-width:none;-ms-overflow-style:none;width:0;min-width:0;opacity:0;overflow:hidden;transition:width 0.25s cubic-bezier(0.32, 0.72, 0, 1), min-width 0.25s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.2s ease"><div class="px-3 pt-5 pb-2" style="display:flex;align-items:center;gap:8px"><img src="/brunu-logo-dark.png" alt="" class="brunu-sidebar-mark" style="width:22px;height:22px;object-fit:contain"/><span class="text-[13px] font-bold tracking-[0.06em] text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif">Brunu AI</span><style> 109 [data-theme="dark"] .brunu-sidebar-mark, .dark .brunu-sidebar-mark { 110 content: url('/brunu-logo-light.png'); 111 } 112 </style></div><nav class="flex-1 px-2 py-2 space-y-0.5"><p class="text-[10px] font-semibold tracking-[0.1em] uppercase text-muted-foreground px-2 mt-4 mb-1" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">Intelligence</p><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 113 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span>Chat</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 114 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/chat/history"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-archive w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><rect width="20" height="5" x="2" y="3" rx="1"></rect><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"></path><path d="M10 12h4"></path></svg><span>Vault</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 115 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/chat/search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><span>Search</span></a><p class="text-[10px] font-semibold tracking-[0.1em] uppercase text-muted-foreground px-2 mt-4 mb-1" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">Dispatch</p><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 116 text-foreground font-medium" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;background:var(--muted)" href="/forecasts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg><span>Forecasts</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 117 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/dispatch"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-radio w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M16.247 7.761a6 6 0 0 1 0 8.478"></path><path d="M19.075 4.933a10 10 0 0 1 0 14.134"></path><path d="M4.925 19.067a10 10 0 0 1 0-14.134"></path><path d="M7.753 16.239a6 6 0 0 1 0-8.478"></path><circle cx="12" cy="12" r="2"></circle></svg><span>News</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 118 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/finance"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-newspaper w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M15 18h-5"></path><path d="M18 14h-8"></path><path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2"></path><rect width="8" height="4" x="10" y="6" rx="1"></rect></svg><span>Finance</span></a><p class="text-[10px] font-semibold tracking-[0.1em] uppercase text-muted-foreground px-2 mt-4 mb-1" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif">Organize</p><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 119 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/calendar"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>Calendar</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 120 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/projects"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Projects</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 121 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/artifacts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>Artifacts</span></a></nav><div class="px-2 pb-8 pt-3 space-y-0.5" style="border-top:1px solid var(--border)"><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 122 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/finance/trading"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left-right w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M8 3 4 7l4 4"></path><path d="M4 7h16"></path><path d="m16 21 4-4-4-4"></path><path d="M20 17H4"></path></svg><span>Exchange</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 123 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg><span>Settings</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 124 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="#"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"
124stroke-linejoin="round" class="lucide lucide-moon w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span>Dark mode</span></a><a class="flex items-center gap-2.5 px-3 py-2 rounded-md text-[13px] transition-colors 125 text-muted-foreground hover:text-foreground" style="font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/incognito"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye-off w-[15px] h-[15px] flex-shrink-0" aria-hidden="true"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg><span>Incognito</span></a><a class="flex items-center justify-center py-2.5 mt-2 rounded-md text-[13px] font-semibold transition-colors" style="background:var(--foreground);color:var(--background);text-decoration:none;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif" href="/login">Login / Sign Up Free</a></div></aside><div class="flex-1 min-w-0 relative h-dvh lg:h-auto z-[20] lg:z-auto" style="transform:translateX(0);transition:transform 300ms cubic-bezier(0.4,0,0.2,1);background-color:var(--background)"><main class="h-full lg:overflow-y-auto" style="padding-bottom:0"><div style="max-width:1280px;margin-inline:auto;width:100%;height:100%;min-height:100%"><style> 126 .brunu-avatar { content: url('/brunu-logo-dark.png'); } 127 [data-theme="dark"] .brunu-avatar, .dark .brunu-avatar { content: url('/brunu-logo-light.png'); } 128 input[type="range"] { height: 4px; } 129 input[type="range"]::-webkit-slider-thumb { width: 18px; height: 18px; border-radius: 50%; background: white; cursor: pointer; } 130 button { font-family: inherit; } 131 button:hover { opacity: 0.85; } 132 ::-webkit-scrollbar { width: 3px; } 133 ::-webkit-scrollbar-thumb { background: var(--brunu-surface-2); border-radius: 2px; } 134 @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } 135 .forecast-layout { display: block; max-width: 520px; margin: 0 auto; } 136 .forecast-sidebar { display: none; } 137 .forecast-mobile-sections { display: block; } 138 @media (min-width: 900px) { 139 .forecast-layout { display: flex; gap: 24px; align-items: flex-start; max-width: 1100px; } 140 .forecast-feed { max-width: 600px; } 141 .forecast-sidebar { display: block; width: 320px; flex-shrink: 0; position: sticky; top: 20px; } 142 .forecast-mobile-sections { display: none; } 143 } 144 </style><div style="min-height:100vh;background:var(--brunu-bg);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif;color:var(--brunu-text)"><header class="glass-hdr" style="display:flex;flex-direction:column;width:100%;padding-top:var(--brunu-top-offset, 60px);padding-right:20px;padding-bottom:60px;padding-left:20px;flex-shrink:0;background:linear-gradient(to bottom, var(--background) 0%, var(--background) 50%, color-mix(in srgb, var(--background) 80%, transparent) 65%, color-mix(in srgb, var(--background) 40%, transparent) 80%, transparent 100%);border-bottom:none;position:sticky;top:0;z-index:30"><div style="display:flex;align-items:center;justify-content:space-between;width:100%;min-height:40px"><div style="display:flex;align-items:center;min-width:60px"></div><div style="flex:1;display:flex;align-items:center;justify-content:center;min-width:0"></div><div style="display:flex;align-items:center;justify-content:flex-end;min-width:60px;gap:8px"><div style="display:flex;align-items:center;gap:10px"><div style="display:flex;align-items:center;gap:10px"><div style="font-size:10px;color:var(--brunu-text-muted)"><span style="color:#73ba6e;font-weight:600;font-size:12px">0</span> active</div><a style="display:flex;align-items:center;gap:4px;font-size:10px;color:var(--brunu-text-muted);text-decoration:none" href="/leaderboard"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#d4a853" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-award" aria-hidden="true"><path d="m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526"></path><circle cx="12" cy="8" r="6"></circle></svg><span>Rankings</span></a></div></div><button aria-label="How Brunu works" style="width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted-foreground);font-size:15px;font-weight:600;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0">?</button></div></div><h1 style="margin:20px 0 0;font-size:22px;font-weight:600;line-height:1.2;letter-spacing:-0.01em;color:var(--foreground);font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif">Forecasts</h1></header><div style="padding:0 20px"></div><div style="padding:0 20px 100px"><div class="forecast-layout"><div class="forecast-feed" style="flex:1;min-width:0"><div class="forecast-mobile-sections"></div><div style="display:flex;gap:6px;margin-bottom:16px"><button style="padding:7px 14px;border-radius:20px;background:var(--brunu-surface-2);border:1px solid var(--brunu-border);color:var(--brunu-text);font-size:12px;font-weight:600;cursor:pointer;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif;display:flex;align-items:center;gap:5px"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>Active</button><button style="padding:7px 14px;border-radius:20px;background:transparent;border:1px solid transparent;color:var(--brunu-text-muted);font-size:12px;font-weight:400;cursor:pointer;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif;display:flex;align-items:center;gap:5px"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flame" aria-hidden="true"><path d="M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4"></path></svg>Trending</button><button style="padding:7px 14px;border-radius:20px;background:transparent;border:1px solid transparent;color:var(--brunu-text-muted);font-size:12px;font-weight:400;cursor:pointer;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif;display:flex;align-items:center;gap:5px"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg>Closing Soon</button><button style="padding:7px 14px;border-radius:20px;background:transparent;border:1px solid transparent;color:var(--brunu-text-muted);font-size:12px;font-weight:400;cursor:pointer;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif;display:flex;align-items:center;gap:5px"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell" aria-hidden="true"><path d="M10.268 21a2 2 0 0 0 3.464 0"></path><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"></path></svg>Watching</button></div><div style="display:flex;flex-direction:column;gap:16px;padding:12px 0"><div class="skeleton-pulse" style="width:100%;height:200px"></div><div class="skeleton-pulse" style="width:100%;height:160px"></div><div class="skeleton-pulse" style="width:100%;height:160px"></div></div><div style="padding-top:24px;font-size:9px;color:var(--brunu-text-muted);text-align:center;letter-spacing:0.06em;opacity:0.5;font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', system-ui, sans-serif">
144BRUNU IS IN BETA. FORECASTS ARE AI-GENERATED ANALYTICAL OUTPUTS AND CAN MAKE MISTAKES. PROBABILITIES ARE CONTINUOUSLY RECALIBRATED AS NEW SIGNALS ARE PROCESSED â THIS IS PART OF BRUNU'S SELF-IMPROVING INTELLIGENCE CYCLE. RECALIBRATED FORECASTS SHOW THEIR FULL PROBABILITY HISTORY FOR TRANSPARENCY. NOT FINANCIAL ADVICE.</div></div><div class="forecast-sidebar"></div></div></div></div><!--$--><!--/$--></div></main></div></div><div class="lg:hidden" aria-hidden="true" style="position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.38);z-index:50;transform:translateX(0);opacity:0;pointer-events:none;transition:transform 300ms cubic-bezier(0.4,0,0.2,1), opacity 300ms cubic-bezier(0.4,0,0.2,1)"></div><button aria-label="Open menu" class="" style="position:fixed;top:var(--brunu-top-offset, 60px);left:calc(env(safe-area-inset-left, 0px) + 8px + 0px);transition:left 0.25s cubic-bezier(0.32, 0.72, 0, 1);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--background);border:1px solid var(--border);box-shadow:0 2px 8px rgba(0,0,0,0.12);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--foreground);cursor:pointer;z-index:100;padding:0"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><line x1="4" y1="7" x2="20" y2="7"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="17" x2="20" y2="17"></line></svg></button><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></main></div>
144<script src="/_next/static/chunks/webpack-aa94d005184696cb.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq" id="_R_" async=""></script>
144<script>(self.__next_f=self.__next_f||[]).push([0])</script>
144<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[78616,[],\"ClientSegmentRoot\"]\n4:I[61224,[\"4370\",\"static/chunks/4370-7f18a8a5bf918b7f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"8500\",\"static/chunks/8500-2c410174062153d2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"8118\",\"static/chunks/8118-a93262edaf52024b.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4944\",\"static/chunks/app/(app)/layout-de3cb1624683d36f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"default\"]\n5:I[57121,[],\"\"]\n6:I[71684,[\"8880\",\"static/chunks/app/(app)/error-1190b7de617f7c8a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"default\"]\n7:I[74581,[],\"\"]\n8:I[83123,[\"7367\",\"static/chunks/app/(app)/forecasts/error-61a2dce190e47a81.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"default\"]\n9:I[61304,[],\"ClientPageRoot\"]\na:I[62441,[\"4370\",\"static/chunks/4370-7f18a8a5bf918b7f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"8500\",\"static/chunks/8500-2c410174062153d2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"7087\",\"static/chunks/7087-44af660cef3e17d0.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"6175\",\"static/chunks/6175-ac10baf27e59d0f2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"5646\",\"static/chunks/app/(app)/forecasts/page-99f4ece9706118e5.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"default\"]\nb:I[90484,[],\"OutletBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[90484,[],\"ViewportBoundary\"]\n10:I[90484,[],\"MetadataBoundary\"]\n12:I[27123,[],\"\"]\n19:I[81321,[\"4370\",\"static/chunks/4370-7f18a8a5bf918b7f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"7805\",\"static/chunks/7805-2644b7bc0c2c7120.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4493\",\"static/chunks/4493-e8c8ca94910ca175.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"201\",\"static/chunks/201-a709e552d26d5cf6.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4152\",\"static/chunks/4152-5e4b27685074741a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"7177\",\"static/chunks/app/layout-aaf723e39658d196.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"ClientClerkProvider\"]\n1a:I[67358,[\"4370\",\"static/chunks/4370-7f18a8a5bf918b7f.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"7805\",\"static/chunks/7805-2644b7bc0c2c7120.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4493\",\"static/chunks/4493-e8c8ca94910ca175.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"201\",\"static/chunks/201-a709e552d26d5cf6.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4152\",\"static/chunks/4152-5e4b27685074741a.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"7177\",\"static/chunks/app/layout-aaf723e39658d196.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"default\"]\n1b:I[98500,[\"8500\",\"static/chunks/8500-2c410174062153d2.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"4345\",\"static/chunks/app/not-found-0cd18b5fc130b8fc.js?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\"],\"\"]\n1c:I[86869,[],\"IconMark\"]\n:HL[\"/_next/static/css/b35cdb2b5704b4e1.css?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"style\"]\n"])</script>
144<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"WRP8BDoZdIPYszm8As6fG\",\"c\":[\"\",\"forecasts\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(app)\",{\"children\":[\"forecasts\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b35cdb2b5704b4e1.css?dpl=dpl_CZAQYGCoSRL8oyhrGgRe7V1n4JCq\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"Component\":\"$4\",\"slots\":{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$6\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":null}}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$8\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L9\",null,{\"Component\":\"$a\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\",\"promises\":null}}],null,[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@d\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L11\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"S\":false}\n"])</script>
144<script>self.__next_f.push([1,"13:T99f,"])</script>
144<script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.brunu.ai/#organization\",\"name\":\"Brunu AI\",\"alternateName\":\"Brunu\",\"url\":\"https://www.brunu.ai\",\"logo\":\"https://www.brunu.ai/apple-touch-icon.png\",\"parentOrganization\":{\"@type\":\"Organization\",\"name\":\"Etra Global AI\",\"url\":\"https://etra.global\"},\"description\":\"Brunu AI is an always-on intelligence app for forecasts, alerts, and agentic analysis across global events.\"},{\"@type\":\"WebSite\",\"@id\":\"https://www.brunu.ai/#website\",\"url\":\"https://www.brunu.ai\",\"name\":\"Brunu AI\",\"description\":\"Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events.\",\"publisher\":{\"@id\":\"https://www.brunu.ai/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://www.brunu.ai/?q={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}},{\"@type\":\"SoftwareApplication\",\"@id\":\"https://www.brunu.ai/#app\",\"name\":\"Brunu AI\",\"operatingSystem\":\"iOS, Web\",\"applicationCategory\":\"NewsApplication\",\"applicationSubCategory\":\"AI Intelligence\",\"url\":\"https://www.brunu.ai\",\"downloadUrl\":\"https://apps.apple.com/app/id6761738315\",\"installUrl\":\"https://apps.apple.com/app/id6761738315\",\"publisher\":{\"@id\":\"https://www.brunu.ai/#organization\"},\"description\":\"AI-powered probabilistic forecasting and real-time alerts for emerging global events. Verifiable accuracy across geopolitics, climate, finance, conflict, infrastructure, and public risk.\",\"offers\":[{\"@type\":\"Offer\",\"name\":\"Explorer\",\"price\":\"0\",\"priceCurrency\":\"USD\",\"description\":\"Free tier â view forecasts, limited chats\"},{\"@type\":\"Offer\",\"name\":\"Companion\",\"price\":\"9\",\"priceCurrency\":\"USD\",\"description\":\"Create forecasts + social features\"},{\"@type\":\"Offer\",\"name\":\"Brunu\",\"price\":\"29\",\"priceCurrency\":\"USD\",\"description\":\"Full analytics + extended chat\"},{\"@type\":\"Offer\",\"name\":\"Professional\",\"price\":\"59\",\"priceCurrency\":\"USD\",\"description\":\"Agent mode, trading, advanced features\"},{\"@type\":\"Offer\",\"name\":\"Builder\",\"price\":\"129\",\"priceCurrency\":\"USD\",\"description\":\"API access + enterprise features\"}],\"featureList\":[\"Always-on intelligence monitoring\",\"Probabilistic forecasts with public calibration\",\"Real-time alerts for emerging global events\",\"Agentic AI research and synthesis\",\"Bayesian audit trail on every forecast\",\"19+ external data feed integrations\",\"MCP server for Claude Desktop integration\"]}]}"])</script>
144<script>self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"light\",\"className\":\"\",\"style\":{\"colorScheme\":\"light\",\"backgroundColor\":\"#FAF9F5\"},\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"dns-prefetch\",\"href\":\"https://clerk.brunu.ai\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://clerk.brunu.ai\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"rel\":\"dns-prefetch\",\"href\":\"https://www.google.com\"}],[[\"$\",\"link\",null,{\"rel\":\"dns-prefetch\",\"href\":\"https://egjuddsuwaorknzvdnkp.supabase.co\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://egjuddsuwaorknzvdnkp.supabase.co\",\"crossOrigin\":\"anonymous\"}]],[\"$\",\"link\",null,{\"rel\":\"dns-prefetch\",\"href\":\"https://va.vercel-scripts.com\"}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$13\"}}]]}],[\"$\",\"body\",null,{\"className\":\"app-body\",\"style\":{\"backgroundColor\":\"#FAF9F5\"},\"children\":[[\"$\",\"div\",null,{\"id\":\"brunu-loader\",\"className\":\"brunu-loader\",\"children\":[[\"$\",\"div\",null,{\"className\":\"brunu-loader-brand\",\"style\":{\"fontWeight\":700},\"children\":\"Brunu AI\"}],[\"$\",\"div\",null,{\"className\":\"brunu-loader-line\",\"children\":[\"$L14\",\"$L15\"]}]]}],\"$L16\",\"$L17\"]}]]}]\n14:[\"$\",\"span\",null,{\"className\":\"brunu-loader-keep\",\"children\":\"Keep\"}]\n15:[\"$\",\"span\",null,{\"id\":\"brunu-typing-word\",\"className\":\"brunu-loader-word\",\"children\":\"Exploring.\"}]\n18:T164c,"])</script>
144<script>self.__next_f.push([1,"\n /* Pre-hydration Capacitor platform detection. The iOS gates\n (hide Crypto + Trade tabs, re-route Stripe to IAP) run in\n React useEffect, which means first paint briefly shows the\n web version before hydration swaps it. Apple's reviewer\n can screenshot that flash and read it as non-compliance.\n Setting a classList flag BEFORE React hydrates lets CSS\n hide the iOS-forbidden elements on the very first frame. */\n try {\n var cap = window.Capacitor;\n if (cap \u0026\u0026 cap.isNativePlatform \u0026\u0026 cap.isNativePlatform()) {\n var p = cap.getPlatform \u0026\u0026 cap.getPlatform();\n if (p) document.documentElement.classList.add('capacitor-' + p);\n document.documentElement.classList.add('capacitor-native');\n }\n } catch(e) {}\n /* Server already rendered data-theme + theme-color based on the\n brunu-theme cookie. Only override here if localStorage\n disagrees with the server theme (edge case: user set theme in\n another browser / cleared cookies). Also persist the cookie\n so the next SSR paint matches. */\n try {\n var saved=localStorage.getItem('bruno_theme');\n var resolved=localStorage.getItem('brunu-theme');\n var theme=null;\n if(saved==='System'){theme=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}\n else if(resolved==='dark'||saved==='Dark'){theme='dark';}\n else if(resolved==='light'||saved==='Light'){theme='light';}\n var current=document.documentElement.getAttribute('data-theme');\n if(theme \u0026\u0026 theme!==current){\n var bg=theme==='dark'?'#1F1F1E':'#FAF9F5';\n document.documentElement.setAttribute('data-theme',theme);\n document.documentElement.classList.toggle('dark',theme==='dark');\n document.documentElement.style.colorScheme=theme;\n document.documentElement.style.backgroundColor=bg;\n if(document.body)document.body.style.backgroundColor=bg;\n var existing=document.querySelectorAll('meta[name=\"theme-color\"]');\n for(var i=0;i\u003cexisting.length;i++){existing[i].parentNode.removeChild(existing[i]);}\n var meta=document.createElement('meta');\n meta.name='theme-color';\n meta.content=bg;\n document.head.appendChild(meta);\n var secure=location.protocol==='https:'?';secure':'';\n document.cookie='brunu-theme='+theme+';path=/;max-age=31536000;samesite=lax'+secure;\n }\n } catch(e){}\n (function(){\n function run(){\n var el=document.getElementById('brunu-typing-word');\n if(!el)return;\n var words=['Exploring.','Thinking.','Creating.','Building.'];\n // Start from empty and TYPE the first word in (was\n // starting mid-word in delete mode before, which looked\n // stuck). Faster per-character too so a full cycle fits\n // inside the 2.2
144s window before we hide.\n var wi=0,ci=0,del=false;\n el.textContent='';\n function tick(){\n var ldr=document.getElementById('brunu-loader');\n if(!ldr||ldr.style.display==='none')return;\n var w=words[wi];\n if(!del){\n el.textContent=w.substring(0,ci+1);ci++;\n if(ci\u003e=w.length){del=true;setTimeout(tick,450);return;}\n setTimeout(tick,32);\n } else {\n el.textContent=w.substring(0,ci);ci--;\n if(ci\u003c0){del=false;ci=0;wi=(wi+1)%words.length;setTimeout(tick,80);return;}\n setTimeout(tick,18);\n }\n }\n // Start ticking immediately â no 600ms warm-up.\n setTimeout(tick,30);\n // Hide strategy (revised 2026-05-10):\n // The PRIMARY signal is React itself â ClientShell calls\n // window.__brunuHideLoader() on first paint. The signals\n // below are fallbacks for when React fails to mount at\n // all or when window.load never fires.\n //\n // - window.load + 250ms: covers the fast path. If all\n // assets are loaded but React's mount is delayed, we\n // still hide reasonably quickly.\n // - 12s hard ceiling: catastrophic backstop. If neither\n // React nor window.load fired in 12s, hide anyway so\n // the user isn't trapped staring at the splash.\n //\n // The old 2.2s cap was REMOVED â it fired before bundles\n // finished downloading on slow networks, leaving a blank\n // WebView zone until React caught up.\n var hidden=false;\n function hide(){\n if(hidden)return;hidden=true;\n var l=document.getElementById('brunu-loader');if(!l)return;\n l.style.pointerEvents='none';l.style.opacity='0';\n setTimeout(function(){if(l)l.style.display='none';},220);\n }\n window.__brunuHideLoader=hide;
144\n if(document.readyState==='complete'){setTimeout(hide,800);}\n else{window.addEventListener('load',function(){setTimeout(hide,250);});}\n setTimeout(hide,12000);\n }\n if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',run);}else{run();}\n })();\n "])</script>
144<script>self.__next_f.push([1,"16:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$18\"}}]\n"])</script>
144<script>self.__next_f.push([1,"17:[\"$\",\"$L19\",null,{\"signInUrl\":\"\",\"signUpUrl\":\"\",\"signInFallbackRedirectUrl\":\"/chat\",\"signUpFallbackRedirectUrl\":\"/pricing-welcome\",\"afterSignOutUrl\":\"/chat\",\"publishableKey\":\"pk_live_Y2xlcmsuYnJ1bnUuYWkk\",\"clerkJSUrl\":\"$undefined\",\"clerkJSVersion\":\"$undefined\",\"proxyUrl\":\"\",\"domain\":\"\",\"isSatellite\":false,\"signInForceRedirectUrl\":\"\",\"signUpForceRedirectUrl\":\"\",\"afterSignInUrl\":\"\",\"afterSignUpUrl\":\"\",\"newSubscriptionRedirectUrl\":\"\",\"telemetry\":{\"disabled\":false,\"debug\":false},\"sdkMetadata\":{\"name\":\"@clerk/nextjs\",\"version\":\"6.37.1\",\"environment\":\"production\"},\"nonce\":\"\",\"initialState\":null,\"children\":[\"$\",\"div\",null,{\"id\":\"app-shell\",\"children\":[\"$\",\"main\",null,{\"id\":\"page-content\",\"children\":[\"$\",\"$L1a\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"style\":{\"minHeight\":\"100dvh\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"padding\":24,\"backgroundColor\":\"var(--brunu-bg)\",\"color\":\"var(--brunu-text)\",\"fontFamily\":\"-apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif\",\"textAlign\":\"center\"},\"children\":[[\"$\",\"h1\",null,{\"style\":{\"fontSize\":48,\"fontWeight\":300,\"margin\":\"0 0 8px\",\"letterSpacing\":2},\"children\":\"404\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":16,\"color\":\"var(--brunu-text-muted)\",\"margin\":\"0 0 32px\"},\"children\":\"This page doesn't exist.\"}],[\"$\",\"$L1b\",null,{\"href\":\"/chat\",\"style\":{\"padding\":\"12px 28px\",\"borderRadius\":100,\"backgroundColor\":\"var(--brunu-text)\",\"color\":\"var(--brunu-bg)\",\"fontSize\":14,\"fontWeight\":600,\"textDecoration\":\"none\"},\"children\":\"Back to Brunu\"}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]\n"])</script>
144<script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#FAF9F5\"}]]\nd:null\n"])</script>
144<script>self.__next_f.push([1,"11:[[\"$\",\"title\",\"0\",{\"children\":\"Brunu AI | Global Intelligence That Never Stops\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Brunu AI is an always-on intelligence app for forecasts, alerts, and agentic analysis across geopolitics, climate, finance, conflict, infrastructure, and public risk. Verifiable AI accuracy with a public calibration log.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Brunu AI\"}],[\"$\",\"link\",\"3\",{\"rel\":\"author\",\"href\":\"https://etra.global\"}],[\"$\",\"meta\",\"4\",{\"name\":\"author\",\"content\":\"Etra Global AI\"}],[\"$\",\"link\",\"5\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"6\",{\"name\":\"keywords\",\"content\":\"Brunu,Brunu AI,AI forecasting,AI intelligence app,global event prediction,probabilistic forecasting,AI risk monitoring,early warning system,geopolitical AI,Bayesian forecasting,agentic AI,AI analyst,prediction platform,AI consumer app,Canadian AI,real-time alerts,crisis intelligence,world events AI\"}],[\"$\",\"meta\",\"7\",{\"name\":\"creator\",\"content\":\"Etra Global AI\"}],[\"$\",\"meta\",\"8\",{\"name\":\"publisher\",\"content\":\"Etra Global AI\"}],[\"$\",\"meta\",\"9\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"10\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"11\",{\"name\":\"category\",\"content\":\"Technology\"}],[\"$\",\"meta\",\"12\",{\"name\":\"color-scheme\",\"content\":\"light dark\"}],[\"$\",\"link\",\"13\",{\"rel\":\"canonical\",\"href\":\"https://www.brunu.ai\"}],[\"$\",\"meta\",\"14\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"15\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Brunu\"}],[\"$\",\"meta\",\"16\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"default\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:title\",\"content\":\"Brunu AI | Global Intelligence That Never Stops\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:description\",\"content\":\"Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events. Verifiable accuracy. Public calibration log.\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:url\",\"content\":\"https://www.brunu.ai\"}],[\"$\",\"meta\",\"20\",{\"property\":\"og:site_name\",\"content\":\"Brunu AI\"}],[\"$\",\"meta\",\"21\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"22\",{\"property\":\"og:image\",\"content\":\"https://www.brunu.ai/api/og\"}],[\"$\",\"meta\",\"23\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"24\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"25\",{\"property\":\"og:image:alt\",\"content\":\"Brunu AI â Global intelligence that never stops\"}],[\"$\",\"meta\",\"26\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"27\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:title\",\"content\":\"Brunu AI | Global Intelligence That Never Stops\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:description\",\"content\":\"Always-on AI intelligence for forecasts, alerts, and agentic analysis across global events.\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image\",\"content\":\"https://www.brunu.ai/api/og\"}],[\"$\",\"meta\",\"32\",{\"name\":\"twitter:image:alt\",\"content\":\"Brunu AI\"}],[\"$\",\"link\",\"33\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"34\",{\"rel\":\"icon\",\"href\":\"/favicon.png\"}],[\"$\",\"link\",\"35\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$L1c\",\"36\",{}]]\n"])</script>
144</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.