An ultra-modern, glass-smooth trading desk with three large, bezel-less 4K monitors forming a seamless panoramic curve, each display filled with clean, elegant forex dashboards: heatmaps of major currency pairs, uncluttered candlestick charts, and a discrete AI chat panel on the side. No keyboard or chair is visible, emphasizing the interface itself. The desk surface is matte black with a subtle texture, reflecting soft highlights. The environment is a dim, minimalistic room with city lights blurred through a distant window. Cool, diffused studio lighting from above creates a sophisticated, calm atmosphere. Shot at eye level with a slightly wide angle, sharp focus throughout, in photographic realism with a sleek, high-end fintech aesthetic.

Your AI forex desk analyst, on demand

Forex Insights — AI-Powered FX Market Intelligence

/* ── Reset & Base ─────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
–green: #00d97e;
–green-bright: #00f291;
–green-dim: rgba(0,217,126,0.65);
–green-glow: rgba(0,217,126,0.12);
–green-border: rgba(0,217,126,0.22);
–red: #ff4444;
–red-glow: rgba(255,68,68,0.12);
–amber: #ffb400;

–bg-0: #060606;
–bg-1: #0b0b0b;
–bg-2: #101010;
–surface: #141414;
–surface2: #1a1a1a;
–surface3: #202020;
–border: rgba(255,255,255,0.06);
–border2: rgba(255,255,255,0.11);

–t1: #ffffff;
–t2: #b8b8b8;
–t3: #888888;
–t4: #555555;
–t5: #333333;

–sans: ‘Inter’, -apple-system, BlinkMacSystemFont, sans-serif;
–mono: ‘JetBrains Mono’, ‘Courier New’, monospace;

–r: 8px;
–rl: 12px;
–rxl: 16px;
–nav: 68px;
}

html { scroll-behavior: smooth; }

body {
font-family: var(–sans);
background: var(–bg-0);
color: var(–t1);
line-height: 1.6;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5 {
font-weight: 700;
line-height: 1.12;
letter-spacing: -0.02em;
}

a { color: inherit; text-decoration: none; }

img { display: block; max-width: 100%; }

/* ── Layout ───────────────────────────────────────────────────────── */
.wrap {
max-width: 1180px;
margin: 0 auto;
padding: 0 24px;
}

section { padding: 100px 0; }

/* ── Labels ───────────────────────────────────────────────────────── */
.label {
display: inline-block;
font-family: var(–mono);
font-size: 10.5px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(–green);
}

/* ── Buttons ──────────────────────────────────────────────────────── */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 11px 22px;
border-radius: var(–r);
font-family: var(–sans);
font-size: 14px;
font-weight: 600;
letter-spacing: 0.01em;
cursor: pointer;
transition: all .2s ease;
white-space: nowrap;
border: none;
text-decoration: none;
}

.btn-ghost {
background: transparent;
color: var(–t2);
border: 1px solid var(–border2);
}
.btn-ghost:hover {
color: var(–t1);
background: rgba(255,255,255,0.05);
border-color: rgba(255,255,255,0.22);
}

.btn-primary {
background: var(–green);
color: #000;
}
.btn-primary:hover {
background: var(–green-bright);
transform: translateY(-1px);
box-shadow: 0 6px 22px rgba(0,217,126,0.28);
}

.btn-outline {
background: transparent;
color: var(–green);
border: 1px solid var(–green-border);
}
.btn-outline:hover {
background: var(–green-glow);
border-color: var(–green);
transform: translateY(-1px);
}

.btn-lg { padding: 15px 32px; font-size: 16px; border-radius: var(–rl); }
.btn-xl { padding: 18px 40px; font-size: 17px; border-radius: var(–rl); font-weight: 700; }

/* ── Live Pulse ───────────────────────────────────────────────────── */
.pulse {
display: inline-block;
width: 8px; height: 8px;
border-radius: 50%;
background: var(–green);
position: relative;
flex-shrink: 0;
}
.pulse::after {
content: ”;
position: absolute;
inset: -3px;
border-radius: 50%;
border: 1px solid var(–green);
opacity: 0;
animation: pulse-ring 2.2s ease-out infinite;
}
@keyframes pulse-ring {
0% { transform: scale(.7); opacity: .9; }
100% { transform: scale(2.2); opacity: 0; }
}

/* ── Navigation ───────────────────────────────────────────────────── */
#nav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 1000;
height: var(–nav);
background: rgba(6,6,6,0.88);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-bottom: 1px solid var(–border);
transition: background .3s ease;
}

.nav-inner {
max-width: 1180px;
margin: 0 auto;
padding: 0 24px;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}

.nav-logo {
display: flex;
align-items: center;
gap: 10px;
}

.nav-logo img {
height: 38px;
width: auto;
}

.nav-wordmark {
line-height: 1;
}

.nav-wordmark .name {
font-size: 14px;
font-weight: 800;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.nav-wordmark .name em { font-style: normal; color: var(–green); }

.nav-wordmark .sub {
font-family: var(–mono);
font-size: 9px;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(–t4);
margin-top: 3px;
display: flex;
align-items: center;
gap: 5px;
}

.nav-actions { display: flex; align-items: center; gap: 10px; }

/* ── Ticker Bar ───────────────────────────────────────────────────── */
.ticker-bar {
height: 36px;
background: var(–surface);
border-bottom: 1px solid var(–border);
overflow: hidden;
position: relative;
margin-top: var(–nav);
}

.ticker-bar::before,
.ticker-bar::after {
content: ”;
position: absolute;
top: 0; bottom: 0;
width: 72px;
z-index: 2;
pointer-events: none;
}
.ticker-bar::before { left: 0; background: linear-gradient(to right, var(–surface), transparent); }
.ticker-bar::after { right: 0; background: linear-gradient(to left, var(–surface), transparent); }

.ticker-track {
display: inline-flex;
align-items: center;
height: 100%;
white-space: nowrap;
animation: ticker 50s linear infinite;
}
.ticker-track:hover { animation-play-state: paused; }

@keyframes ticker {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}

.tick {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 0 20px;
font-family: var(–mono);
font-size: 11.5px;
border-right: 1px solid var(–border);
}

.tick-pair { color: var(–t3); font-weight: 600; }
.tick-price { color: var(–t2); }
.tick-chg.up { color: var(–green); }
.tick-chg.dn { color: var(–red); }

/* ── Hero ─────────────────────────────────────────────────────────── */
#hero {
padding-top: 72px;
padding-bottom: 0;
min-height: calc(100vh – var(–nav) – 36px);
display: flex;
flex-direction: column;
position: relative;
overflow: hidden;
}

.hero-bg-grid {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.022) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.022) 1px, transparent 1px);
background-size: 60px 60px;
mask-image: linear-gradient(to bottom, transparent 0%, black 15%, black 65%, transparent 100%);
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 15%, black 65%, transparent 100%);
}

.hero-glow {
position: absolute;
top: 25%; left: 50%;
transform: translateX(-50%);
width: 900px; height: 400px;
background: radial-gradient(ellipse, rgba(0,217,126,0.055) 0%, transparent 65%);
pointer-events: none;
}

.hero-body {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
padding: 0 24px 64px;
max-width: 920px;
margin: 0 auto;
width: 100%;
}

.hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 5px 14px;
background: rgba(0,217,126,0.07);
border: 1px solid var(–green-border);
border-radius: 100px;
font-family: var(–mono);
font-size: 10.5px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–green);
margin-bottom: 32px;
}

#hero h1 {
font-size: clamp(38px, 6.5vw, 76px);
font-weight: 800;
letter-spacing: -0.035em;
line-height: 1.06;
margin-bottom: 22px;
color: var(–t1);
}

#hero h1 em { font-style: normal; color: var(–green); }

.hero-sub {
font-size: clamp(16px, 2.2vw, 21px);
color: var(–t2);
line-height: 1.65;
max-width: 720px;
margin-bottom: 40px;
font-weight: 400;
}

.hero-ctas {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
margin-bottom: 14px;
}

.hero-note {
font-family: var(–mono);
font-size: 11px;
color: var(–t5);
letter-spacing: 0.06em;
}

.hero-img-wrap {
position: relative;
z-index: 1;
width: 100%;
max-width: 1120px;
margin: 0 auto;
padding: 0 24px;
}

.hero-img-wrap img {
width: 100%;
height: auto;
border-radius: var(–rl) var(–rl) 0 0;
border: 1px solid rgba(255,255,255,0.08);
border-bottom: none;
}

.hero-img-fade {
position: absolute;
bottom: 0; left: 24px; right: 24px;
height: 100px;
background: linear-gradient(to bottom, transparent, var(–bg-0));
border-radius: 0 0 var(–rl) var(–rl);
}

/* ── Problem ──────────────────────────────────────────────────────── */
#problem { background: var(–bg-1); }

.problem-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
}

#problem h2 {
font-size: clamp(28px, 4vw, 50px);
margin-bottom: 28px;
}

.body-copy {
font-size: 16.5px;
color: var(–t2);
line-height: 1.8;
}
.body-copy p { margin-bottom: 14px; }
.body-copy strong { color: var(–t1); font-weight: 600; }
.body-copy p:last-child { margin-bottom: 0; }

.data-pills {
display: flex;
flex-direction: column;
gap: 5px;
}

.dpill {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–r);
font-family: var(–mono);
font-size: 12.5px;
color: var(–t3);
transition: all .2s ease;
}
.dpill:hover { border-color: var(–border2); color: var(–t2); background: var(–surface2); }

.dpill-dot {
width: 7px; height: 7px;
border-radius: 2px;
flex-shrink: 0;
background: var(–red);
opacity: .7;
}

.verdict-box {
margin-top: 24px;
padding: 22px 22px 22px 20px;
border-left: 2px solid var(–red);
background: rgba(255,68,68,0.04);
border-radius: 0 var(–r) var(–r) 0;
}
.verdict-box p { font-size: 15px; color: var(–t2); line-height: 1.65; margin: 0; }
.verdict-box p + p { margin-top: 10px; }
.verdict-box strong { color: var(–t1); }

/* ── Solution ─────────────────────────────────────────────────────── */
#solution { background: var(–bg-0); }

.solution-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: start;
}

#solution h2 {
font-size: clamp(28px, 4vw, 50px);
margin-bottom: 24px;
}

.ob-list {
list-style: none;
display: flex;
flex-direction: column;
gap: 9px;
margin-top: 20px;
}
.ob-list li {
display: flex;
align-items: center;
gap: 12px;
font-size: 14.5px;
color: var(–t2);
}
.ob-list li::before {
content: ‘→’;
font-family: var(–mono);
color: var(–green);
font-size: 11px;
flex-shrink: 0;
}

.blockquote {
margin-top: 36px;
padding: 24px 24px 24px 22px;
border-left: 3px solid var(–green);
background: rgba(0,217,126,0.04);
border-radius: 0 var(–r) var(–r) 0;
}
.blockquote p {
font-size: 17.5px;
font-style: italic;
color: var(–t1);
line-height: 1.5;
font-weight: 500;
}

/* Chat card */
.chat-card {
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–rxl);
overflow: hidden;
}

.chat-header {
padding: 13px 18px;
background: var(–surface2);
border-bottom: 1px solid var(–border);
display: flex;
align-items: center;
gap: 8px;
}

.wdot { width: 10px; height: 10px; border-radius: 50%; }
.wdot.r { background: #ff5f57; }
.wdot.a { background: #febc2e; }
.wdot.g { background: #28c840; }

.chat-title {
font-family: var(–mono);
font-size: 10px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(–t4);
margin-left: 6px;
}

.chat-msgs {
padding: 18px;
display: flex;
flex-direction: column;
gap: 12px;
}

.cmsg {
display: flex;
align-items: flex-start;
gap: 10px;
}
.cmsg.user { flex-direction: row-reverse; }

.cavatar {
width: 26px; height: 26px;
border-radius: 6px;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
font-family: var(–mono);
font-size: 10px;
font-weight: 700;
}
.cavatar.ai { background: rgba(0,217,126,0.14); color: var(–green); }
.cavatar.user { background: rgba(255,255,255,0.07); color: var(–t3); }

.cbubble {
max-width: calc(100% – 36px);
padding: 9px 13px;
border-radius: 4px 11px 11px 11px;
font-size: 12.5px;
line-height: 1.55;
color: var(–t2);
background: var(–surface2);
border: 1px solid var(–border);
}
.cmsg.user .cbubble {
border-radius: 11px 4px 11px 11px;
background: rgba(0,217,126,0.06);
border-color: var(–green-border);
color: var(–t1);
}

/* ── How It Works ─────────────────────────────────────────────────── */
#hiw { background: var(–bg-1); }

.sec-hdr {
text-align: center;
margin-bottom: 60px;
}
.sec-hdr .label { margin-bottom: 12px; }
.sec-hdr h2 { font-size: clamp(28px, 4vw, 50px); margin-bottom: 14px; }
.sec-hdr p { font-size: 17px; color: var(–t2); max-width: 600px; margin: 0 auto; line-height: 1.65; }

.hiw-row {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2px;
}

.hiw-step {
background: var(–surface);
border: 1px solid var(–border);
padding: 32px 24px 28px;
position: relative;
transition: background .2s, border-color .2s;
}
.hiw-step:first-child { border-radius: var(–rl) 0 0 var(–rl); }
.hiw-step:last-child { border-radius: 0 var(–rl) var(–rl) 0; }
.hiw-step:hover { background: var(–surface2); border-color: var(–border2); z-index: 1; }

.hiw-connector {
position: absolute;
top: 36px; right: -12px;
width: 22px; height: 22px;
border-radius: 50%;
background: var(–bg-1);
border: 1px solid var(–border2);
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
color: var(–green);
font-size: 9px;
}
.hiw-step:last-child .hiw-connector { display: none; }

.hiw-num {
font-family: var(–mono);
font-size: 10px;
letter-spacing: 0.12em;
color: var(–t5);
margin-bottom: 14px;
}
.hiw-num span { color: var(–green); }

.hiw-icon {
width: 42px; height: 42px;
border-radius: 10px;
background: var(–green-glow);
border: 1px solid var(–green-border);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 18px;
}
.hiw-icon svg { width: 19px; height: 19px; stroke: var(–green); fill: none; stroke-width: 1.6; }

.hiw-step h3 { font-size: 19px; margin-bottom: 10px; letter-spacing: -0.01em; }

.hiw-step p { font-size: 13px; color: var(–t3); line-height: 1.6; margin-bottom: 16px; }

.hiw-tags {
display: flex;
flex-direction: column;
gap: 4px;
}
.htag {
font-family: var(–mono);
font-size: 10.5px;
color: var(–t4);
display: flex;
align-items: center;
gap: 6px;
}
.htag::before { content: ”; width: 3px; height: 3px; border-radius: 50%; background: var(–green); opacity: .55; flex-shrink: 0; }

/* ── Ecosystem ────────────────────────────────────────────────────── */
#ecosystem { background: var(–bg-0); }

.eco-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1px;
background: var(–border);
border: 1px solid var(–border);
border-radius: var(–rxl);
overflow: hidden;
}

.eco-card {
background: var(–bg-0);
padding: 30px 28px;
transition: background .2s ease;
}
.eco-card:hover { background: var(–surface); }

.eco-tag {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
border-radius: 100px;
font-family: var(–mono);
font-size: 9.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 14px;
}
.eco-tag.live { background: rgba(0,217,126,0.07); border: 1px solid var(–green-border); color: var(–green); }
.eco-tag.feature { background: rgba(255,255,255,0.04); border: 1px solid var(–border2); color: var(–t3); }

.eco-card h3 { font-size: 17px; font-weight: 700; margin-bottom: 9px; letter-spacing: -0.01em; }

.eco-card p { font-size: 13.5px; color: var(–t3); line-height: 1.65; margin-bottom: 14px; }

.eco-example {
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–r);
padding: 11px 13px;
font-family: var(–mono);
font-size: 11.5px;
line-height: 1.55;
}
.eco-q { color: var(–t4); }
.eco-a { color: var(–green); }

.status-chips { display: flex; flex-wrap: wrap; gap: 6px; }

.schip {
padding: 3px 9px;
border-radius: 100px;
font-family: var(–mono);
font-size: 9.5px;
font-weight: 600;
letter-spacing: 0.05em;
}
.s-clean { background: rgba(0,217,126,0.1); color: var(–green); border: 1px solid rgba(0,217,126,0.2); }
.s-caution { background: rgba(255,180,0,0.1); color: var(–amber); border: 1px solid rgba(255,180,0,0.2); }
.s-issues { background: rgba(255,68,68,0.1); color: var(–red); border: 1px solid rgba(255,68,68,0.2); }
.s-skip { background: rgba(255,255,255,0.04); color: var(–t4); border: 1px solid var(–border); }

/* Telegram preview */
.tg-preview {
background: #212121;
border: 1px solid rgba(255,255,255,0.08);
border-radius: 10px;
overflow: hidden;
}
.tg-header {
background: #2b2b2b;
padding: 9px 13px;
display: flex;
align-items: center;
gap: 10px;
border-bottom: 1px solid rgba(255,255,255,0.06);
}
.tg-avatar {
width: 28px; height: 28px;
border-radius: 50%;
background: var(–green-glow);
border: 1px solid var(–green-border);
display: flex; align-items: center; justify-content: center;
font-family: var(–mono); font-size: 9px; color: var(–green); font-weight: 700;
}
.tg-name { font-size: 12px; font-weight: 600; color: var(–t1); }
.tg-status { font-size: 10px; color: var(–green); display: flex; align-items: center; gap: 5px; }
.tg-body { padding: 12px; }
.tg-msg {
background: #2b2b2b;
border-radius: 4px 10px 10px 10px;
padding: 8px 11px;
font-family: var(–mono);
font-size: 11px;
color: var(–t2);
line-height: 1.5;
}
.tg-msg strong { color: var(–green); }

/* ── Screenshots ──────────────────────────────────────────────────── */
#screenshots { background: var(–bg-1); padding: 80px 0; }

.shots-hdr { margin-bottom: 48px; }

.shots-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}

.shot-frame {
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–rl);
overflow: hidden;
}
.shot-frame-header {
padding: 10px 14px;
background: var(–surface2);
border-bottom: 1px solid var(–border);
display: flex;
align-items: center;
gap: 6px;
}
.sdot { width: 9px; height: 9px; border-radius: 50%; }
.sdot.r { background: #ff5f57; } .sdot.a { background: #febc2e; } .sdot.g { background: #28c840; }
.shot-title { font-family: var(–mono); font-size: 10px; color: var(–t4); letter-spacing: 0.08em; margin-left: 6px; }
.shot-frame img { width: 100%; height: auto; }

/* ── Beta ─────────────────────────────────────────────────────────── */
#beta { background: var(–bg-0); border-top: 1px solid var(–border); border-bottom: 1px solid var(–border); }

.beta-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: start;
}

#beta h2 { font-size: clamp(28px, 4vw, 46px); margin-bottom: 20px; }

#beta p { font-size: 15.5px; color: var(–t2); line-height: 1.75; margin-bottom: 12px; }

.beta-items {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 4px;
}

.bitem {
display: flex;
align-items: flex-start;
gap: 13px;
padding: 14px 16px;
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–r);
}

.bitem-icon {
width: 34px; height: 34px;
border-radius: 8px;
background: var(–green-glow);
border: 1px solid var(–green-border);
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.bitem-icon svg { width: 15px; height: 15px; stroke: var(–green); fill: none; stroke-width: 1.6; }

.bitem h4 { font-size: 13.5px; font-weight: 600; margin-bottom: 2px; }
.bitem p { font-size: 12px; color: var(–t3); margin: 0; line-height: 1.5; }

/* ── Technical ────────────────────────────────────────────────────── */
#tech { background: var(–bg-1); }

.tech-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
}

#tech h2 { font-size: clamp(28px, 4vw, 46px); margin-bottom: 20px; }

#tech p { font-size: 15.5px; color: var(–t2); line-height: 1.75; margin-bottom: 28px; }

.tech-chips { display: flex; flex-wrap: wrap; gap: 7px; }

.tchip {
padding: 5px 11px;
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–r);
font-family: var(–mono);
font-size: 11px;
color: var(–t3);
}

/* Terminal */
.terminal {
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–rl);
overflow: hidden;
margin-bottom: 14px;
}

.term-bar {
padding: 9px 14px;
background: var(–surface2);
border-bottom: 1px solid var(–border);
display: flex;
align-items: center;
gap: 6px;
}
.tdot { width: 10px; height: 10px; border-radius: 50%; }
.tdot.r { background: #ff5f57; } .tdot.a { background: #febc2e; } .tdot.g { background: #28c840; }
.term-ttl { font-family: var(–mono); font-size: 10px; color: var(–t4); margin-left: 8px; letter-spacing: 0.07em; }

.term-body {
padding: 14px 16px;
font-family: var(–mono);
font-size: 11.5px;
line-height: 1.8;
}

.tl { display: flex; gap: 7px; }
.tp { color: var(–green); flex-shrink: 0; }
.tc { color: var(–t2); }
.tco { color: var(–t4); }
.to { color: var(–t3); padding-left: 14px; }
.ts { color: var(–green); padding-left: 14px; }
.tw { color: var(–amber); padding-left: 14px; }

.shots-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }

/* ── Email Capture ────────────────────────────────────────────────── */
#capture { background: var(–bg-0); position: relative; overflow: hidden; }

#capture::before {
content: ”;
position: absolute;
top: -50px; left: 50%; transform: translateX(-50%);
width: 700px; height: 350px;
background: radial-gradient(ellipse, rgba(0,217,126,0.045) 0%, transparent 65%);
pointer-events: none;
}

.capture-wrap {
max-width: 680px;
margin: 0 auto;
text-align: center;
}

#capture h2 { font-size: clamp(28px, 4vw, 52px); margin-bottom: 14px; }

#capture > .capture-wrap > p {
font-size: 17px;
color: var(–t2);
line-height: 1.65;
margin-bottom: 44px;
}

.benefits-box {
text-align: left;
background: var(–surface);
border: 1px solid var(–border);
border-radius: var(–rl);
padding: 20px 24px;
margin-bottom: 36px;
display: flex;
flex-direction: column;
gap: 9px;
}

.bfitem {
display: flex;
align-items: center;
gap: 11px;
font-size: 14px;
color: var(–t2);
}
.bfitem::before { content: ‘✓’; color: var(–green); font-weight: 700; font-size: 12px; flex-shrink: 0; }

/* Form */
.cform { display: flex; flex-direction: column; gap: 14px; text-align: left; }

.fg { display: flex; flex-direction: column; gap: 5px; }

.flabel {
font-family: var(–mono);
font-size: 10px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–t3);
}

.finput,
.fselect,
.ftextarea {
width: 100%;
background: var(–surface);
border: 1px solid var(–border2);
border-radius: var(–r);
padding: 13px 15px;
font-family: var(–sans);
font-size: 15px;
color: var(–t1);
outline: none;
transition: border-color .2s, box-shadow .2s;
-webkit-appearance: none;
appearance: none;
}
.finput:focus, .fselect:focus, .ftextarea:focus {
border-color: var(–green);
box-shadow: 0 0 0 3px rgba(0,217,126,0.07);
}
.finput::placeholder, .ftextarea::placeholder { color: var(–t5); }

.fselect {
cursor: pointer;
background-image: url(“data:image/svg+xml,%3Csvg xmlns=’http://www.w3.org/2000/svg’ width=’12’ height=’12’ viewBox=’0 0 24 24′ fill=’none’ stroke=’%23555′ stroke-width=’2’%3E%3Cpolyline points=’6 9 12 15 18 9’/%3E%3C/svg%3E”);
background-repeat: no-repeat;
background-position: right 14px center;
padding-right: 38px;
}
.fselect option { background: var(–surface2); color: var(–t1); }

.ftextarea { resize: vertical; min-height: 96px; line-height: 1.5; }

.fsub {
width: 100%;
padding: 15px;
background: var(–green);
color: #000;
font-family: var(–sans);
font-size: 15px;
font-weight: 700;
border: none;
border-radius: var(–rl);
cursor: pointer;
transition: all .2s ease;
letter-spacing: 0.01em;
}
.fsub:hover {
background: var(–green-bright);
transform: translateY(-1px);
box-shadow: 0 8px 26px rgba(0,217,126,0.24);
}
.fsub:active { transform: translateY(0); }

.fprivacy {
text-align: center;
font-family: var(–mono);
font-size: 11px;
color: var(–t5);
}

/* Success */
.form-success {
display: none;
padding: 48px 24px;
background: rgba(0,217,126,0.04);
border: 1px solid var(–green-border);
border-radius: var(–rxl);
text-align: center;
}
.form-success.show { display: block; }

.fs-icon {
width: 54px; height: 54px;
border-radius: 50%;
background: var(–green-glow);
border: 1px solid var(–green-border);
display: flex; align-items: center; justify-content: center;
margin: 0 auto 18px;
}
.fs-icon svg { width: 22px; height: 22px; stroke: var(–green); fill: none; stroke-width: 2; }
.form-success h3 { font-size: 24px; margin-bottom: 9px; }
.form-success p { color: var(–t2); font-size: 15px; }

/* ── Final CTA ────────────────────────────────────────────────────── */
#final {
background: var(–bg-1);
text-align: center;
padding: 120px 0;
position: relative;
overflow: hidden;
border-top: 1px solid var(–border);
}

#final::before {
content: ”;
position: absolute;
bottom: -100px; left: 50%; transform: translateX(-50%);
width: 800px; height: 500px;
background: radial-gradient(ellipse, rgba(0,217,126,0.05) 0%, transparent 65%);
pointer-events: none;
}

#final h2 {
font-size: clamp(32px, 5.5vw, 64px);
margin-bottom: 18px;
max-width: 820px;
margin-left: auto;
margin-right: auto;
position: relative;
}

#final p {
font-size: 18px;
color: var(–t2);
max-width: 560px;
margin: 0 auto 40px;
line-height: 1.65;
}

/* ── Footer ───────────────────────────────────────────────────────── */
footer {
background: var(–bg-0);
border-top: 1px solid var(–border);
padding: 52px 0 32px;
}

.foot-top {
display: flex;
justify-content: space-between;
gap: 48px;
margin-bottom: 44px;
flex-wrap: wrap;
}

.foot-brand { max-width: 280px; }

.foot-name {
font-size: 14px;
font-weight: 800;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 10px;
}
.foot-name em { font-style: normal; color: var(–green); }

.foot-brand p { font-size: 12.5px; color: var(–t4); line-height: 1.65; }

.foot-col h5 {
font-family: var(–mono);
font-size: 9.5px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(–t4);
margin-bottom: 14px;
}
.foot-links { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.foot-links a { font-size: 13px; color: var(–t3); transition: color .15s; }
.foot-links a:hover { color: var(–t1); }

.foot-hr { height: 1px; background: var(–border); margin-bottom: 22px; }

.foot-disc { font-size: 11.5px; color: var(–t4); line-height: 1.75; max-width: 780px; margin-bottom: 20px; }

.foot-bottom {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px;
}
.foot-cr { font-family: var(–mono); font-size: 11px; color: var(–t5); }

.foot-badges { display: flex; gap: 10px; }
.fbadge {
padding: 3px 9px;
border: 1px solid var(–border);
border-radius: 4px;
font-family: var(–mono);
font-size: 9.5px;
color: var(–t5);
letter-spacing: 0.08em;
}

/* ── Scroll-in animations ─────────────────────────────────────────── */
.reveal {
opacity: 0;
transform: translateY(22px);
transition: opacity .65s ease, transform .65s ease;
}
.reveal.in {
opacity: 1;
transform: translateY(0);
}
.reveal-d1 { transition-delay: .1s; }
.reveal-d2 { transition-delay: .2s; }
.reveal-d3 { transition-delay: .3s; }
.reveal-d4 { transition-delay: .4s; }

/* ── Responsive ───────────────────────────────────────────────────── */
@media (max-width: 960px) {
section { padding: 72px 0; }

.problem-grid,
.solution-grid,
.beta-grid,
.tech-grid { grid-template-columns: 1fr; gap: 48px; }

.hiw-row { grid-template-columns: 1fr 1fr; }
.hiw-step { border-radius: 0 !important; }
.hiw-step:first-child { border-radius: var(–rl) 0 0 0 !important; }
.hiw-step:nth-child(2){ border-radius: 0 var(–rl) 0 0 !important; }
.hiw-step:nth-child(3){ border-radius: 0 0 0 var(–rl) !important; }
.hiw-step:last-child { border-radius: 0 0 var(–rl) 0 !important; }
.hiw-connector { display: none; }

.eco-grid { grid-template-columns: 1fr 1fr; }
.shots-grid { grid-template-columns: 1fr; }
.shots-2col { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
.nav-actions .btn-ghost { display: none; }
.nav-wordmark { display: none; }
#hero h1 { font-size: 36px; letter-spacing: -0.025em; }
.hero-ctas { flex-direction: column; width: 100%; max-width: 320px; }
.hero-ctas .btn { width: 100%; }
.hiw-row { grid-template-columns: 1fr; }
.hiw-step:first-child { border-radius: var(–rl) var(–rl) 0 0 !important; }
.hiw-step:last-child { border-radius: 0 0 var(–rl) var(–rl) !important; }
.eco-grid { grid-template-columns: 1fr; }
.foot-top { flex-direction: column; }
.foot-bottom { flex-direction: column; align-items: flex-start; }
.foot-badges { flex-wrap: wrap; }
}


Personal Project · Exploring Public Release

Your Personal AI Desk Analyst
for the FX Market

I built Forex Insights for my own trading desk — an AI system that continuously monitors
currency strength, macro conditions, economic events, positioning, sentiment, and news flow,
then delivers concise, prioritized intelligence designed around how I trade. I’m now exploring
whether other traders would find something like this valuable.

A working personal project. Public release not yet decided.

Forex Insights Squawk Live banner showing live charts, currency data, and AI market intelligence interface

The Challenge

The Problem Isn’t Lack of Information

Today’s forex traders are drowning in data. Charts. News feeds. Economic releases. Central bank commentary. Positioning reports. Sentiment indicators.

The challenge isn’t finding more information.

The challenge is knowing what actually matters right now.

Most platforms provide data. Very few provide judgment.

There’s a difference between being informed and being aware. Forex Insights is built for the latter.

Live Chart Data
Economic Calendar Events
Central Bank Speeches & Minutes
CFTC Positioning Reports
Retail Sentiment Data
Currency Strength Meters
Reuters & Bloomberg News Feeds
Interbank Research Reports
Correlated Asset Moves
Macro Indicator Releases

All of this. Every session. Every day.
Most traders can’t keep up.

The Approach

An AI That Learns How You Trade

Forex Insights begins with an onboarding interview. The AI learns your trading profile — not just what pairs you trade, but how you think about the market.

  • Your trading style and time horizon
  • Preferred pairs and instruments
  • Risk tolerance and position sizing approach
  • Analytical framework (MPA, supply/demand, flow)
  • Information preferences and alert sensitivity
  • Decision-making process and key triggers

“Forex Insights attempts to become the analyst you would have hired for your own desk.”




Forex Insights · Onboarding
AI
Let’s build your trader profile. What’s your primary trading style — intraday, swing, or position trading?

You
Swing trader, 4H and Daily charts. Mostly EUR and GBP pairs.

AI
Got it. Do you prefer supply & demand zones, structure, or do you lean more on macro flow for your bias?

You
Macro flow for directional bias, then S&D for entry precision.

AI
Perfect. I’ll align your briefings around central bank divergence and flow dynamics, then highlight supply/demand confluences on your watchlist pairs.

The result: an analyst that thinks the way you do.

Process

How Forex Insights Works

A continuous intelligence loop — running in the background even when you’re away from your screens. This is how it currently works for me.

01 / Monitor

Monitor

Continuously watches the full market ecosystem — not just prices, but everything that moves them.

Currency strength
Economic calendar
Central bank activity
News & research flow
Positioning data
Volatility metrics
Correlated markets

02 / Reason

Reason

The AI gathers the data it needs, reasons through it, and draws conclusions — not just displays it.

Determines what data is relevant
Calls live data tools
Cross-references sources
Weighs conflicting signals
Applies your framework

03 / Prioritize

Prioritize

Identifies what deserves your attention, what can be safely ignored, and where opportunities may be forming.

Rates setup quality
Flags high-impact risk
Surfaces developing themes
Separates signal from noise

04 / Deliver

Deliver

Provides intelligence when and where you need it — briefings, alerts, live commentary, dashboard, and a conversational assistant.

Morning briefings via email
Telegram alerts
Live squawk audio
AI assistant (chat)
Live dashboard

AI Agent Workflow diagram: Monitor → Reason → Prioritize → Deliver

What’s Been Built

One Intelligence Engine.
Multiple Ways to Stay Connected.

These are the components currently running in my personal system. Features, delivery formats, and capabilities are still evolving.

Live

AI Squawk Live

An AI-generated forex squawk service that runs in the background. Notifies you when meaningful developments occur — not noise, only when the market is actually talking.

FI
Forex Insights
Squawk live

GBP/USD: Breaking above 1.2720 resistance. BoE hawkish tone post-CPI persisting. USD supply visible but diminishing.

Daily

Morning Market Briefings

Structured daily intelligence reports delivered before the session opens. Covers macro regime, central bank divergence, event risk, currency strength, and a curated watchlist — every morning.

## REGIME FLAG — READ FIRST
Risk-OFF · USD Bid forming
## MACRO PULSE
Central bank divergence: hawkish
Focus: EUR/USD · GBP/USD · USD/JPY

Watchlist

Smart Watchlists

3–5 prioritized pairs with directional bias, key levels, setup quality rating, conflicts, and risk factors. Each pair gets a clear status so you know exactly how to approach it.

Clean
Caution
Under the Hood Issues
Skip

No ambiguity. Every pair rated, every session.

Real-time

Market Alerts

Real-time Telegram and mobile alerts when conditions materially change — not when prices simply move, but when the underlying market picture shifts.

⚡ ALERT · USD/JPY
BoJ intervention risk elevated. JPY short squeeze developing. Review USD/JPY long exposure.

Post-news

Flash Notes

Instant post-release summaries fired after high-impact economic data. Explains the market reaction, the implications, and whether your existing trade ideas remain valid.

CPI FLASH — Reaction Analysis
Core CPI miss (0.2% vs 0.3%). USD bid faded. Risk-on emerging. EUR/USD bias: intact. GBP long thesis: strengthened.

Assistant

AI Trading Assistant

Ask questions naturally in Telegram. The assistant has full tool access and chat history — it pulls live data, checks your positions, and answers in context.

You: What is driving EUR/USD today?
AI: CPI miss is dominating. USD sold broadly. EUR is the beneficiary — hawkish ECB divergence adding tailwind.

Dashboard

Currency Intelligence Dashboard

A live command center for market awareness. Currency strength heatmap, pair relationships, macro themes, volatility map, and developing opportunities — all in one view.

Currency Intelligence Dashboard showing currency strength, EUR/USD chart, and AI market analysis

Frameworks

Multiple Trading Frameworks

Built-in analytical framework support. Switch between frameworks with a single config change.

MPA 2.0 Intraday
Macro-to-micro precision entries
Urban Forex Supply & Demand
Swing structure with institutional zones
Hybrid Flow & Pipeline
Multi-day campaign tracking

Real Output

Live. Working. Currently in Use.

These are actual outputs from the live system — not mockups or demos. This is what runs on my desk every trading day.


UPCOMING EVENTS · HIGH IMPACT · 24H

Live economic calendar showing upcoming high-impact USD events with forecasts


INTEREST RATES · CURRENT & PREVIOUS

Live central bank interest rate tracker showing current rates for all major currencies


TELEGRAM · SESSION UPDATE

Forex Insights Telegram session update showing live market analysis and flag status


EMAIL · MORNING BRIEF

Forex Insights morning email briefing showing regime flag and macro pulse analysis

Honest Context

A Personal Project.
Exploring What’s Next.

I originally built Forex Insights to solve a problem in my own trading workflow. It runs on my desk every day and has meaningfully changed how I monitor the market.

I’m now exploring whether there’s genuine demand from other traders to justify building this into something more accessible. This page is part of that process — not a product launch.

The system is live and working, but it is still a personal project. Direction, features, and pricing (if any) are all undecided. A public release is not guaranteed.

If you join the interest list, you’re helping me understand whether this is worth building for a wider audience.

No Promises on Public Release

A public version is being explored, not planned. Whether it happens depends on whether the demand is there.

Features Are Still Evolving

New capabilities are added based on what works in practice. The system today may look quite different in six months.

Your Feedback Shapes the Direction

If you join the interest list, I’d genuinely love to hear what you’d want from an AI analyst. That input helps determine what gets built.

Honest About Limitations

The AI makes mistakes. Outputs should always be independently verified. This is a decision-support tool, not a signal service.

Under the Hood

Built Around Real Market Intelligence

The system is Python-based with Claude as the analytical brain. A scheduler fires prompts at the right times; an agent hands each prompt to Claude along with a library of callable tools. Claude decides what data it needs, calls the tools, reasons over the results, and produces the report. Nothing about this architecture is final — it is still exploratory work.

OANDA Live Pricing
CFTC COT Reports
Economic Calendar
Reuters Newswire
Bloomberg Feed
Bank Research PDFs
Retail Sentiment
Macro Indicators
Chart Analysis
Correlated Assets
Account Positions


agent · morning_brief.py
scheduler.fire(“morning_brief”)
Agent initialized · profile loaded
tools.call(“get_currency_strength”)
✓ strength matrix: 8 currencies
tools.call(“get_economic_calendar”)
✓ 4 high-impact events today
tools.call(“get_cot_positioning”)
✓ positioning data: current week
tools.call(“get_news_flow”)
✓ 23 relevant articles ingested
claude.reason(profile, data)
⟳ analyzing macro regime…
⟳ building watchlist…
✓ briefing generated · delivering
deliver.email() + deliver.telegram()
✓ 04:00 CDT · sent successfully


RATES MONITOR

Central bank interest rate display


EVENT RISK

Economic calendar event risk display

Gauge Interest

Help Shape the Future of Forex Insights

I’m exploring whether Forex Insights should become a public platform. Right now, I’m simply gathering feedback and measuring interest from traders. If you think something like this would be valuable, I’d love to hear from you — and I’ll keep you in the loop as the project evolves.

Development updates as the project progresses
Early access opportunities if a public release happens
Feature previews and beta invitations
Direct input into what gets built and how
Honest updates — including if the project stays private

Email Address *

What Type of Trader Are You? *

Select your trading style
Swing Trader
Day Trader
Position Trader
Scalper
Algo / System Trader
Just Exploring

What would you want an AI trading analyst to help you with? (Optional)

No spam. No sales pitch. Just honest updates from a trader building something for traders.

You’re on the list.

Thank you — genuinely. I’ll share honest updates as the project progresses and reach out if a beta or public release happens.

If You’d Find This Useful

If You’d Want Something
Like This — Let Me Know.

I built it for my own trading desk. I’m genuinely curious whether other traders would find this kind of market awareness valuable. If the interest is there, it’s worth building properly.

Follow Development

FOREX INSIGHTS

A personal AI market intelligence project. Currently exploring public release.

Disclaimer: Forex Insights provides AI-generated market commentary, analysis, alerts, and educational content. It does not provide financial advice, investment recommendations, or guarantees of future market performance. All content is for informational and educational purposes only. Past performance is not indicative of future results. All trading involves risk. You should consult a qualified financial advisor before making any trading or investment decisions. The AI outputs produced by Forex Insights may contain errors, omissions, or outdated information and should always be independently verified before acting upon them.

© 2026 Forex Insights · All rights reserved

BETA
AI-POWERED
FX ONLY

// Scroll-reveal
const observer = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add(‘in’);
observer.unobserve(e.target);
}
});
}, { threshold: 0.1, rootMargin: ‘0px 0px -40px 0px’ });

document.querySelectorAll(‘.reveal’).forEach(el => observer.observe(el));

// Nav background on scroll
const nav = document.getElementById(‘nav’);
window.addEventListener(‘scroll’, () => {
nav.style.background = window.scrollY > 20
? ‘rgba(6,6,6,0.97)’
: ‘rgba(6,6,6,0.88)’;
}, { passive: true });

// Form handling
const form = document.getElementById(‘capture-form’);
const formWrap = document.getElementById(‘capture-form-wrap’);
const successEl = document.getElementById(‘form-success’);

form.addEventListener(‘submit’, async (e) => {
e.preventDefault();

const email = document.getElementById(’email’).value.trim();
const traderType = document.getElementById(‘trader-type’).value;
const btn = document.getElementById(‘form-submit-btn’);

if (!email || !traderType) {
if (!email) document.getElementById(’email’).style.borderColor = ‘var(–red)’;
if (!traderType) document.getElementById(‘trader-type’).style.borderColor = ‘var(–red)’;
return;
}

btn.textContent = ‘Submitting…’;
btn.disabled = true;

// — INTEGRATION POINT —
// Replace the fetch below with your actual form endpoint.
// Options: Mailchimp, ConvertKit, Beehiiv, Netlify Forms, or a custom API.
// Example Netlify: action=”/” data-netlify=”true”
// Example Mailchimp: replace fetch with their embedded form JS
// For now, we simulate a successful submission after a short delay.

try {
// Uncomment and update for a real endpoint:
// await fetch(‘/api/early-access’, {
// method: ‘POST’,
// headers: { ‘Content-Type’: ‘application/json’ },
// body: JSON.stringify({
// email,
// trader_type: traderType,
// message: document.getElementById(‘message’).value
// })
// });

// Simulated success (remove when wired to real endpoint)
await new Promise(r => setTimeout(r, 800));

formWrap.style.display = ‘none’;
successEl.classList.add(‘show’);
window.scrollTo({ top: successEl.offsetTop – 100, behavior: ‘smooth’ });

} catch (err) {
btn.textContent = ‘Join the Early Access List’;
btn.disabled = false;
alert(‘Something went wrong. Please try again or email us directly.’);
}
});

// Reset error highlight on input
[’email’, ‘trader-type’].forEach(id => {
document.getElementById(id)?.addEventListener(‘input’, function() {
this.style.borderColor = ”;
});
});