39246-vm/frontend/out/dashboard.html
2026-03-14 17:32:05 +03:00

1 line
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>