1 line
31 KiB
HTML
1 line
31 KiB
HTML
<!DOCTYPE html><!--gDQd4Qw7W4pjnupMrm0GS--><html lang="en" class="plus_jakarta_sans_9d745193-module__Fxzc9a__variable jetbrains_mono_82c618bd-module__kTeI0q__variable font-sans geist_da832ead-module__aN_Ytq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/fba5a26ea33df6a3-s.p.1bbdebe6.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/d98b6e292e3c6ff3.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e963b1b8f6521ab3.js"/><script src="/_next/static/chunks/82abf2d65f5428ae.js" async=""></script><script src="/_next/static/chunks/a1f1bf215259d4a7.js" async=""></script><script src="/_next/static/chunks/0381c808fbaec563.js" async=""></script><script src="/_next/static/chunks/turbopack-493ae4ac5a159bd3.js" async=""></script><script src="/_next/static/chunks/f6c940a452dd3dee.js" async=""></script><script src="/_next/static/chunks/91a2481ea586968a.js" async=""></script><script src="/_next/static/chunks/b40235c9485dbf9a.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script><script src="/_next/static/chunks/2367e69f782007bc.js" async=""></script><meta name="next-size-adjust" content=""/><title>Ghost Node — Auction Sniper</title><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="bg-g-base text-g-text min-h-screen antialiased"><div hidden=""><!--$--><!--/$--></div><div class="fixed inset-0 -z-10 overflow-hidden pointer-events-none" aria-hidden="true"><div class="absolute -top-[40%] -left-[20%] w-[70vw] h-[70vw] rounded-full opacity-[0.035]" style="background:radial-gradient(circle, #00e87b 0%, transparent 70%);animation:float-orb 20s ease-in-out infinite"></div><div class="absolute -bottom-[30%] -right-[20%] w-[60vw] h-[60vw] rounded-full opacity-[0.025]" style="background:radial-gradient(circle, #06b6d4 0%, transparent 70%);animation:float-orb 25s ease-in-out infinite reverse"></div><div class="absolute top-[40%] left-[50%] w-[40vw] h-[40vw] rounded-full opacity-[0.02]" style="background:radial-gradient(circle, #a78bfa 0%, transparent 70%);animation:float-orb 30s ease-in-out infinite 5s"></div><div class="absolute inset-0 opacity-[0.03]" style="background-image:radial-gradient(circle, #8896b8 1px, transparent 1px);background-size:32px 32px"></div><div class="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-g-green/20 to-transparent"></div></div><header class="glass-strong sticky top-0 z-40"><div class="absolute bottom-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-g-green/30 to-transparent"></div><div class="flex items-center justify-between px-6 h-[56px]"><a class="flex items-center gap-3.5 group cursor-pointer" href="/"><div class="relative"><div class="flex h-9 w-9 items-center justify-center rounded-xl bg-gradient-to-br from-g-green/25 to-g-cyan/15 border border-g-green/20 group-hover:border-g-green/40 transition-colors"><span class="font-extrabold text-g-green text-sm leading-none">G</span></div><div class="absolute inset-0 rounded-xl bg-g-green/10 blur-lg -z-10 group-hover:bg-g-green/20 transition-colors"></div></div><div class="flex flex-col"><span class="text-[15px] font-bold text-g-text tracking-tight leading-none group-hover:text-g-green transition-colors">Ghost Node</span><span class="text-[10px] text-g-faint leading-none mt-1 tracking-[0.15em] uppercase">Auction Sniper · v2.7</span></div></a><div class="flex items-center gap-2.5"><div class="flex items-center gap-2 px-3.5 py-1.5 rounded-full text-xs font-semibold mr-1 border transition-all duration-300 bg-g-faint/10 border-g-border text-g-muted"><span class="w-2 h-2 rounded-full transition-all duration-300 bg-g-faint"></span>Idle</div><button class="g-btn text-xs h-8">Pause</button><button class="g-btn text-xs h-8">Resume</button><button class="g-btn text-xs h-8">Restart</button><button class="g-btn-danger text-xs h-8">Kill</button><div class="w-px h-5 bg-g-border/50 mx-0.5"></div><button class="relative g-btn h-8 w-8 px-0 flex items-center justify-center overflow-hidden" title="Switch to light mode" aria-label="Switch to light mode" tabindex="0"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity:1;transform:none"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></button></div></div></header><div class="flex items-center gap-6 bg-g-base/60 backdrop-blur-sm border-b border-g-border/30 px-6 py-1.5 text-xs text-g-faint"><span class="flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full flex-shrink-0 bg-g-faint"></span><span class="text-g-faint/70">Engine</span><span class="font-medium tabular-nums text-g-muted">Idle</span></span><span class="flex items-center gap-1.5"><span class="text-g-faint/70">Uptime</span><span class="font-medium tabular-nums text-g-muted">0m</span></span><span class="flex items-center gap-1.5"><span class="text-g-faint/70">Scanned</span><span class="tabular-nums text-g-text font-semibold">0</span></span><span class="flex items-center gap-1.5"><span class="text-g-faint/70">Alerts</span><span class="font-medium tabular-nums text-g-muted">0</span></span></div><nav class="glass sticky top-[56px] z-30"><div class="absolute bottom-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-g-border to-transparent"></div><div class="flex gap-0.5 px-6 overflow-x-auto scrollbar-none"><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-green" href="/dashboard"><span class="text-[11px] transition-all duration-200 text-g-green opacity-100">◈</span>Dashboard<span class="absolute bottom-0 inset-x-2 h-[2px] rounded-full bg-gradient-to-r from-g-green to-g-cyan shadow-[0_0_8px_rgba(0,232,123,0.5)]"></span></a><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-faint hover:text-g-muted" href="/listings"><span class="text-[11px] transition-all duration-200 text-g-faint opacity-50">≡</span>Listings</a><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-faint hover:text-g-muted" href="/keywords"><span class="text-[11px] transition-all duration-200 text-g-faint opacity-50">⌖</span>Targets</a><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-faint hover:text-g-muted" href="/sites"><span class="text-[11px] transition-all duration-200 text-g-faint opacity-50">⬡</span>Sites</a><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-faint hover:text-g-muted" href="/settings"><span class="text-[11px] transition-all duration-200 text-g-faint opacity-50">⚙</span>Settings</a><a class="relative flex items-center gap-1.5 px-4 py-3 text-[13px] font-semibold whitespace-nowrap transition-all duration-200 text-g-faint hover:text-g-muted" href="/ai-log"><span class="text-[11px] transition-all duration-200 text-g-faint opacity-50">◎</span>AI Log</a></div></nav><main class="relative px-6 py-8"><div class="mx-auto max-w-[1400px]"><div class="space-y-8"><div class="flex items-end justify-between" style="opacity:1;transform:translateY(-10px)"><div class="space-y-1"><div class="flex items-center gap-3"><h1 class="text-[22px] font-extrabold tracking-[-0.04em] leading-none bg-gradient-to-r from-g-text to-g-muted bg-clip-text text-transparent">Mission Control</h1><div class="inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full border text-[10px] font-bold tracking-wide transition-all duration-500 bg-g-green/8 border-g-green/15 text-g-green"><span class="w-1.5 h-1.5 rounded-full" style="background:#00e87b;box-shadow:0 0 6px #00e87b80;animation:pulse-ring 2s ease-out infinite"></span>LIVE</div></div><p class="text-[12px] text-g-faint font-medium">Auction intelligence engine · Ghost Node v2.7</p></div><div class="flex items-center gap-4"><span class="text-[12px] font-mono text-g-faint/60 tabular-nums tracking-widest select-none"></span><a href="http://localhost:8000/api/export/csv" target="_blank" rel="noopener noreferrer" class="g-btn h-8 px-3 text-[11px] gap-1.5" title="Export all listings as CSV"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>Export</a></div></div><div class="glow-line"></div><section><div class="grid grid-cols-2 xl:grid-cols-4 gap-4"><div class="g-card-glow p-5 flex flex-col gap-3.5 group cursor-default select-none" style="opacity:1;transform:translateY(18px) scale(0.97)"><div class="relative z-10 flex items-start justify-between gap-2"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint leading-none mt-0.5">Lots Scanned</span><div class="shrink-0 w-7 h-7 rounded-lg flex items-center justify-center transition-all duration-300 group-hover:scale-110" style="background:linear-gradient(135deg, #00e87b18, #06b6d410);border:1px solid #00e87b25;color:#00e87b;box-shadow:0 0 12px #00e87b15"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg></div></div><div class="relative z-10"><span class="g-stat-num transition-colors duration-300 text-g-text">0</span></div><p class="relative z-10 text-[10px] text-g-faint/50 leading-none font-medium">Processed this session</p><div class="absolute bottom-0 left-0 right-0 h-px opacity-20 group-hover:opacity-40 transition-opacity" style="background:linear-gradient(90deg, transparent, #00e87b80, #06b6d450, transparent)"></div></div><div class="g-card-glow p-5 flex flex-col gap-3.5 group cursor-default select-none" style="opacity:1;transform:translateY(18px) scale(0.97)"><div class="relative z-10 flex items-start justify-between gap-2"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint leading-none mt-0.5">Alerts Fired</span><div class="shrink-0 w-7 h-7 rounded-lg flex items-center justify-center transition-all duration-300 group-hover:scale-110" style="background:linear-gradient(135deg, #fbbf2418, #f59e0b10);border:1px solid #fbbf2425;color:#fbbf24;box-shadow:0 0 12px #fbbf2415"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg></div></div><div class="relative z-10"><span class="g-stat-num transition-colors duration-300 text-g-text">0</span></div><p class="relative z-10 text-[10px] text-g-faint/50 leading-none font-medium">Qualifying matches</p><div class="absolute bottom-0 left-0 right-0 h-px opacity-20 group-hover:opacity-40 transition-opacity" style="background:linear-gradient(90deg, transparent, #fbbf2480, #f59e0b50, transparent)"></div></div><div class="g-card-glow p-5 flex flex-col gap-3.5 group cursor-default select-none" style="opacity:1;transform:translateY(18px) scale(0.97)"><div class="relative z-10 flex items-start justify-between gap-2"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint leading-none mt-0.5">Active Targets</span><div class="shrink-0 w-7 h-7 rounded-lg flex items-center justify-center transition-all duration-300 group-hover:scale-110" style="background:linear-gradient(135deg, #a78bfa18, #3b82f610);border:1px solid #a78bfa25;color:#a78bfa;box-shadow:0 0 12px #a78bfa15"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg></div></div><div class="relative z-10"><span class="g-stat-num transition-colors duration-300 text-g-text">0</span></div><p class="relative z-10 text-[10px] text-g-faint/50 leading-none font-medium">Keyword strategies</p><div class="absolute bottom-0 left-0 right-0 h-px opacity-20 group-hover:opacity-40 transition-opacity" style="background:linear-gradient(90deg, transparent, #a78bfa80, #3b82f650, transparent)"></div></div><div class="g-card-glow p-5 flex flex-col gap-3.5 group cursor-default select-none" style="opacity:1;transform:translateY(18px) scale(0.97)"><div class="relative z-10 flex items-start justify-between gap-2"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint leading-none mt-0.5">Engine Uptime</span><div class="shrink-0 w-7 h-7 rounded-lg flex items-center justify-center transition-all duration-300 group-hover:scale-110" style="background:linear-gradient(135deg, #3b82f618, #06b6d410);border:1px solid #3b82f625;color:#3b82f6;box-shadow:0 0 12px #3b82f615"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div></div><div class="relative z-10"><span class="g-stat-num transition-colors duration-300 text-g-text">0m</span></div><p class="relative z-10 text-[10px] text-g-faint/50 leading-none font-medium">Continuous runtime</p><div class="absolute bottom-0 left-0 right-0 h-px opacity-20 group-hover:opacity-40 transition-opacity" style="background:linear-gradient(90deg, transparent, #3b82f680, #06b6d450, transparent)"></div></div></div></section><section class="space-y-3"><div class="flex items-center gap-3"><span class="text-[10px] font-bold uppercase tracking-[0.16em] text-g-faint/70 whitespace-nowrap">Live Feed</span><div class="flex-1 h-px bg-gradient-to-r from-g-border/60 to-transparent"></div></div><div class="grid grid-cols-1 xl:grid-cols-[1fr_360px] gap-5"><div class="g-card flex flex-col overflow-hidden" style="opacity:1;transform:translateY(12px)"><div class="flex items-center gap-3 px-5 py-3.5 border-b border-g-border/40 shrink-0"><div class="flex items-center gap-2.5"><span class="g-pulse-dot"></span><span class="text-sm font-bold text-g-text tracking-tight">Recent Captures</span></div><span class="text-[10px] text-g-faint tabular-nums font-mono">0<!-- --> lots</span><div class="ml-auto flex items-center gap-2"><button class="g-btn h-7 px-2.5 text-xs gap-1.5" title="Refresh now"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 .49-3.51"></path></svg>Refresh</button></div></div><div class="flex-1 overflow-y-auto min-h-0" style="max-height:440px"><div class="space-y-0"><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div><div class="flex items-center gap-3 px-5 py-3 border-b border-g-border/20 last:border-0"><div class="w-9 h-9 rounded-lg bg-g-raised shrink-0 shimmer"></div><div class="flex-1 space-y-1.5"><div class="h-3 bg-g-raised rounded shimmer w-3/4"></div><div class="h-2.5 bg-g-raised rounded shimmer w-1/3"></div></div><div class="h-3 w-12 bg-g-raised rounded shimmer"></div></div></div></div></div><div class="g-card flex flex-col overflow-hidden" style="opacity:1;transform:translateX(12px)"><div class="px-5 pt-5 pb-4 border-b border-g-border/40 space-y-4"><div class="flex items-center justify-between"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint">Engine Status</span></div><div class="flex items-center gap-2.5"><div class="relative flex items-center justify-center"><span class="relative inline-flex rounded-full" style="width:10px;height:10px;background:#3d4f78;box-shadow:0 0 10px rgba(61,79,120,0.3)"></span></div><span class="text-[13px] font-bold tracking-tight" style="color:#3d4f78">Idle</span></div><div class="grid grid-cols-2 gap-3"><div class="bg-g-raised/50 rounded-xl p-3 border border-g-border/30"><p class="text-[9px] uppercase tracking-widest text-g-faint font-bold mb-1">Uptime</p><p class="text-sm font-bold text-g-text tabular-nums font-mono">0m</p></div><div class="bg-g-raised/50 rounded-xl p-3 border border-g-border/30"><p class="text-[9px] uppercase tracking-widest text-g-faint font-bold mb-1">Last Scan</p><p class="text-sm font-bold text-g-text tabular-nums font-mono">—</p></div><div class="bg-g-raised/50 rounded-xl p-3 border border-g-border/30 col-span-2"><p class="text-[9px] uppercase tracking-widest text-g-faint font-bold mb-1">Lots Scanned</p><p class="text-sm font-bold text-g-text tabular-nums font-mono">٠</p></div></div></div><div class="px-5 py-4 border-b border-g-border/40 space-y-2.5"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint block">Controls</span><div class="grid grid-cols-2 gap-2"><button disabled="" class="flex items-center justify-center gap-1.5 rounded-xl text-[11px] font-semibold px-3 py-2.5 transition-all duration-200 border disabled:opacity-40 disabled:cursor-not-allowed border-g-border/60 bg-g-raised/60 text-g-muted hover:text-g-text hover:border-g-line hover:bg-g-raised hover:shadow-[0_4px_16px_rgba(0,0,0,0.4)]"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect></svg>Pause</button><button disabled="" class="flex items-center justify-center gap-1.5 rounded-xl text-[11px] font-semibold px-3 py-2.5 transition-all duration-200 border disabled:opacity-40 disabled:cursor-not-allowed border-g-border/60 bg-g-raised/60 text-g-muted hover:text-g-text hover:border-g-line hover:bg-g-raised hover:shadow-[0_4px_16px_rgba(0,0,0,0.4)]"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>Resume</button><button class="flex items-center justify-center gap-1.5 rounded-xl text-[11px] font-semibold px-3 py-2.5 transition-all duration-200 border disabled:opacity-40 disabled:cursor-not-allowed border-g-border/60 bg-g-raised/60 text-g-muted hover:text-g-text hover:border-g-line hover:bg-g-raised hover:shadow-[0_4px_16px_rgba(0,0,0,0.4)]" tabindex="0"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 .49-3.51"></path></svg>Restart</button><button class="flex items-center justify-center gap-1.5 rounded-xl text-[11px] font-semibold px-3 py-2.5 transition-all duration-200 border disabled:opacity-40 disabled:cursor-not-allowed border-g-red/25 bg-g-red/8 text-g-red hover:bg-g-red/15 hover:border-g-red/40 hover:shadow-[0_0_20px_rgba(244,63,94,0.12)]" tabindex="0"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>Kill</button></div></div><div class="flex flex-col flex-1 min-h-0"><div class="flex items-center gap-2 px-4 py-2.5 border-b border-g-border/25"><span class="text-[10px] font-bold uppercase tracking-[0.14em] text-g-faint">Sites</span><span class="text-[10px] text-g-faint/50 font-mono ml-auto">0<!-- -->/<!-- -->0<!-- --> active</span></div><div class="flex-1 overflow-y-auto" style="max-height:200px"><p class="text-[11px] text-g-faint/40 text-center py-6">No sites configured</p></div></div></div></div></section><section class="space-y-3"><div class="flex items-center gap-3"><span class="text-[10px] font-bold uppercase tracking-[0.16em] text-g-faint/70 whitespace-nowrap">Activity Log</span><div class="flex-1 h-px bg-gradient-to-r from-g-border/60 to-transparent"></div></div><div class="g-card overflow-hidden" style="opacity:1;transform:translateY(12px)"><div class="flex items-center gap-3 px-5 py-3.5 border-b border-g-border/40"><div class="flex items-center gap-2.5"><span class="g-pulse-dot"></span><span class="text-sm font-bold text-g-text tracking-tight">Activity Log</span></div><span class="text-[10px] text-g-faint font-mono tabular-nums">1<!-- --> events</span><div class="ml-auto flex items-center gap-2"><input placeholder="Filter events…" class="g-input w-36 h-7 text-[11px] py-0 px-2.5" value=""/><button class="g-btn h-7 px-2 text-xs" title="Scroll to bottom"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg></button><button class="g-btn h-7 px-2.5 text-xs hover:!text-g-red hover:!border-g-red/30">Clear</button></div></div><div class="h-48 overflow-y-auto p-4 font-mono"><div class="flex items-start gap-3 py-1.5 group" style="opacity:1;transform:none"><span class="shrink-0 text-[10px] text-g-faint/40 pt-px tabular-nums leading-relaxed">٣:١٧:١٩ ص</span><span class="w-1 h-1 rounded-full mt-1.5 shrink-0 bg-g-green"></span><span class="text-[11px] leading-relaxed transition-opacity group-hover:opacity-100 opacity-80 text-g-green">Ghost Node dashboard initialised.</span></div><div></div></div></div></section></div><!--$--><!--/$--></div></main><script src="/_next/static/chunks/e963b1b8f6521ab3.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[96923,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\"],\"default\"]\n3:I[94313,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\"],\"default\"]\n4:I[93983,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\"],\"default\"]\n5:I[3802,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\"],\"default\"]\n6:I[34172,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\"],\"default\"]\n7:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n8:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n9:I[47257,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ClientPageRoot\"]\na:I[78928,[\"/_next/static/chunks/f6c940a452dd3dee.js\",\"/_next/static/chunks/91a2481ea586968a.js\",\"/_next/static/chunks/b40235c9485dbf9a.js\",\"/_next/static/chunks/2367e69f782007bc.js\"],\"default\"]\nd:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\n12:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\n14:I[68027,[],\"default\"]\n:HL[\"/_next/static/chunks/d98b6e292e3c6ff3.css\",\"style\"]\n:HL[\"/_next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/fba5a26ea33df6a3-s.p.1bbdebe6.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"gDQd4Qw7W4pjnupMrm0GS\",\"c\":[\"\",\"dashboard\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"dashboard\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d98b6e292e3c6ff3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/f6c940a452dd3dee.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/91a2481ea586968a.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/b40235c9485dbf9a.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"plus_jakarta_sans_9d745193-module__Fxzc9a__variable jetbrains_mono_82c618bd-module__kTeI0q__variable font-sans geist_da832ead-module__aN_Ytq__variable\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-g-base text-g-text min-h-screen antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"main\",null,{\"className\":\"relative px-6 py-8\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-[1400px]\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L9\",null,{\"Component\":\"$a\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@b\",\"$@c\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2367e69f782007bc.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"b:{}\nc:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"15:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"IconMark\"]\nf:null\n13:[[\"$\",\"title\",\"0\",{\"children\":\"Ghost Node — Auction Sniper\"}],[\"$\",\"link\",\"1\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L15\",\"2\",{}]]\n"])</script></body></html> |