// Fin45 — Tracker detail page (router + templates)
//
// SLUG MATRIX
//   /tracker/congress  → TrackerCongress  (leaderboard table)
//   /tracker/spy       → TrackerSpy       (index template)
//   /tracker/:slug     → look up profile in FIN_TRACKERS.profiles[slug]
//                          kind:'politician' → TrackerPolitician (template)
//                          kind:'founder'    → TrackerFounder    (template)
//                          (missing)         → TrackerComingSoon (stub)
//
// To add a new politician or founder, write a new entry in FIN_TRACKERS.profiles.
// No new code required — the template renders it.

const DTD = window.FIN_TRACKERS;
const { FinMascot, SubscribeCTA, EquityCurve } = window;

function findCatalogEntry(slug) {
  for (const g of DTD.catalog) {
    for (const it of g.items) {
      if (it.id === slug) return { ...it, group: g.group };
    }
  }
  return null;
}

function PageTrackerDetail({ slug }) {
  if (slug === 'congress') return <TrackerCongress />;
  if (slug === 'spy')      return <TrackerSpy />;

  const profile = DTD.profiles && DTD.profiles[slug];
  if (profile) {
    if (profile.kind === 'politician') return <TrackerPolitician slug={slug} profile={profile} />;
    if (profile.kind === 'founder')    return <TrackerFounder    slug={slug} profile={profile} />;
  }
  return <TrackerComingSoon slug={slug} />;
}
window.PageTrackerDetail = PageTrackerDetail;

// ──────────────────────────────────────────────────────────────
// SHARED HEADER / RAIL HELPERS
// ──────────────────────────────────────────────────────────────

function ProfileCrumb({ profile, group }) {
  return (
    <div className="crumb">
      <a href="#/trackers">Trackers</a>
      <span className="crumb-sep">/</span>
      <span>{group}</span>
      <span className="crumb-sep">/</span>
      <span style={{ color: 'var(--text-body)' }}>{profile.header.name}</span>
    </div>
  );
}

function ProfileHeader({ profile, mascot, eyebrow }) {
  const h = profile.header;
  return (
    <header style={{ display: 'grid', gridTemplateColumns: '1fr auto', gap: 32, alignItems: 'end', paddingBottom: 28, borderBottom: '3px double var(--text-primary)' }}>
      <div>
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, letterSpacing: '0.18em', color: 'var(--accent)', textTransform: 'uppercase', marginBottom: 14 }}>
          {eyebrow}
        </div>
        <h1 style={{ fontFamily: 'var(--serif)', fontWeight: 500, fontSize: 60, letterSpacing: '-0.025em', lineHeight: 1, margin: 0 }}>
          {h.name}
        </h1>
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 13, color: 'var(--text-muted)', marginTop: 12, letterSpacing: '0.04em' }}>
          {h.role}
        </div>
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, color: 'var(--text-faint)', marginTop: 6, letterSpacing: '0.06em' }}>
          {h.since}
        </div>
      </div>
      <FinMascot pose={mascot} size={160} />
    </header>
  );
}

function ProfileStatsGrid({ stats }) {
  return (
    <div className="tldr-grid">
      {stats.map((s, i) => (
        <div key={i} className="tldr-cell">
          <div className="tldr-k">{s.k}</div>
          <div className={'tldr-v ' + (s.dir === 'up' ? 'up' : s.dir === 'dn' ? 'dn' : '')}>{s.v}</div>
        </div>
      ))}
    </div>
  );
}

function ProfileTell({ profile }) {
  return (
    <>
      <div className="section-hd">
        <h2>The tell <span className="muted">· the pattern this tracker keys on</span></h2>
      </div>
      <div style={{ padding: '24px 28px', border: '1px solid var(--accent-soft)', background: 'rgba(212,162,76,0.04)', fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.55, color: 'var(--text-primary)', maxWidth: '64ch' }}>
        {profile.tell}
      </div>
    </>
  );
}

function ProfileFin45View({ profile }) {
  return (
    <>
      <div className="section-hd">
        <h2>The Fin45 view <span className="muted">· how the agent uses this</span></h2>
      </div>
      <div style={{ padding: '24px 28px', border: '1px solid var(--border)', background: 'var(--bg-surface)', fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.55, color: 'var(--text-body)', maxWidth: '64ch' }}>
        {profile.fin45}
      </div>
    </>
  );
}

function ProfileRelated({ profile, currentSlug }) {
  if (!profile.related || profile.related.length === 0) return null;
  const related = profile.related.map(slug => {
    const cat = findCatalogEntry(slug);
    return cat ? { slug, ...cat } : null;
  }).filter(Boolean);
  if (related.length === 0) return null;
  return (
    <>
      <div className="section-hd">
        <h2>Adjacent trackers</h2>
        <a href="#/trackers" className="section-link">All trackers →</a>
      </div>
      <div className="tracker-grid">
        {related.map(t => (
          <a key={t.slug} href={'#/tracker/' + t.slug} className={'tracker-card' + (t.hot ? ' hot' : '')}>
            <div className="tracker-mood-bar" data-mood={t.mood} />
            <div className="tracker-card-body">
              <div className="tracker-name">{t.name}</div>
              <div className="tracker-sub">{t.sub}</div>
              <div className="tracker-meta">
                <span className={'tracker-ytd ' + (t.ytd.startsWith('+') ? 'up' : t.ytd.startsWith('-') ? 'dn' : 'muted')}>{t.ytd}</span>
                <span className="tracker-sep">·</span>
                <span className="tracker-events">{typeof t.events === 'number' ? t.events + ' events' : t.events}</span>
              </div>
            </div>
          </a>
        ))}
      </div>
    </>
  );
}

// Simple sparkline using the SVG paths technique
function Sparkline({ data, height = 220 }) {
  if (!data || data.length === 0) return null;
  const W = 1200, H = height, padL = 8, padR = 8, padT = 24, padB = 24;
  const min = Math.min(...data) - 200;
  const max = Math.max(...data) + 200;
  const xs = (i) => padL + (i / (data.length - 1)) * (W - padL - padR);
  const ys = (v) => padT + (1 - (v - min) / (max - min)) * (H - padT - padB);
  const path = data.map((v, i) => (i === 0 ? 'M' : 'L') + xs(i).toFixed(1) + ' ' + ys(v).toFixed(1)).join(' ');
  const areaPath = path + ` L ${xs(data.length - 1)} ${(H - padB)} L ${xs(0)} ${(H - padB)} Z`;
  return (
    <svg viewBox={`0 0 ${W} ${H}`} preserveAspectRatio="none" style={{ width: '100%', height: 'auto', display: 'block' }}>
      <defs>
        <linearGradient id="spark-fill" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%"   stopColor="#D4A24C" stopOpacity="0.35" />
          <stop offset="100%" stopColor="#D4A24C" stopOpacity="0" />
        </linearGradient>
      </defs>
      <line x1={padL} x2={W - padR} y1={ys(100000)} y2={ys(100000)} stroke="rgba(255,255,255,0.18)" strokeDasharray="4 6" strokeWidth="1" />
      <text x={W - padR - 4} y={ys(100000) - 6} fill="rgba(255,255,255,0.4)" fontFamily="JetBrains Mono, monospace" fontSize="11" textAnchor="end">$100,000 start</text>
      <path d={areaPath} fill="url(#spark-fill)" />
      <path d={path} fill="none" stroke="#D4A24C" strokeWidth="2.2" strokeLinejoin="round" strokeLinecap="round" />
      <circle cx={xs(data.length - 1)} cy={ys(data[data.length - 1])} r="5" fill="#D4A24C" />
      <text x={xs(data.length - 1) - 10} y={ys(data[data.length - 1]) - 14} fill="#E8C079" fontFamily="JetBrains Mono, monospace" fontSize="14" fontWeight="600" textAnchor="end">
        ${data[data.length - 1].toLocaleString()}
      </text>
    </svg>
  );
}

// ──────────────────────────────────────────────────────────────
// TEMPLATE: TrackerPolitician (Pelosi, Tuberville, Trump, …)
// ──────────────────────────────────────────────────────────────

function TrackerPolitician({ slug, profile }) {
  const entry = findCatalogEntry(slug) || { group: 'Politicians' };
  return (
    <main className="page" style={{ paddingTop: 48, paddingBottom: 64 }}>
      <ProfileCrumb profile={profile} group={entry.group} />
      <ProfileHeader profile={profile} mascot="analyst" eyebrow={`Tracker · ${profile.header.party === 'D' ? 'Democrat' : profile.header.party === 'R' ? 'Republican' : 'Executive'} · ${profile.header.chamber || 'Executive'}`} />

      <p style={{ fontFamily: 'var(--serif)', fontSize: 19, lineHeight: 1.55, color: 'var(--text-body)', maxWidth: '64ch', margin: '32px 0 0' }}>
        {profile.header.bio}
      </p>

      <div className="section-hd">
        <h2>The scoreboard <span className="muted">· year-to-date</span></h2>
      </div>
      <ProfileStatsGrid stats={profile.stats} />

      {profile.curve && (
        <>
          <div className="section-hd">
            <h2>Tracked equity curve <span className="muted">· Day 1 → today</span></h2>
            <span className="section-link">simulated from disclosed positions</span>
          </div>
          <div className="equity-card">
            <Sparkline data={profile.curve} height={240} />
          </div>
        </>
      )}

      {profile.holdings && (
        <>
          <div className="section-hd">
            <h2>Top holdings <span className="muted">· by weight</span></h2>
          </div>
          <div className="lb-table">
            <div className="lb-row lb-head" style={{ gridTemplateColumns: '50px 80px 1fr 80px 80px' }}>
              <span>#</span>
              <span>Ticker</span>
              <span>Name</span>
              <span className="r">Weight</span>
              <span className="r">Today</span>
            </div>
            {profile.holdings.map((h, i) => (
              <div key={i} className="lb-row" style={{ gridTemplateColumns: '50px 80px 1fr 80px 80px', cursor: 'default' }}>
                <span className="lb-rank">{i + 1}</span>
                <span className="lb-who">{h.tk}</span>
                <span className="muted" style={{ fontFamily: 'var(--serif)', fontSize: 14 }}>{h.name}</span>
                <span className="r mono">{h.wt}</span>
                <span className={'r mono ' + h.dir}>{h.d}</span>
              </div>
            ))}
          </div>
        </>
      )}

      {profile.filings && (
        <>
          <div className="section-hd">
            <h2>Recent filings <span className="muted">· STOCK Act disclosures</span></h2>
            <span className="section-link">{profile.filings.length} most recent</span>
          </div>
          <div className="feed-list">
            {profile.filings.map((f, i) => (
              <div key={i} className="feed-row" style={{ gridTemplateColumns: '70px 70px 1fr 70px' }}>
                <span className="feed-date">{f.date}</span>
                <span className={'feed-action ' + (f.action || '').toLowerCase()}>{f.action}</span>
                <div className="feed-body">
                  <div className="feed-asset">{f.asset}</div>
                  <div className="feed-why">{f.why}</div>
                </div>
                <span className="feed-pf">{f.fileTime ? 'Filed ' + f.fileTime : ''}</span>
              </div>
            ))}
          </div>
        </>
      )}

      <ProfileTell profile={profile} />
      <ProfileFin45View profile={profile} />
      <ProfileRelated profile={profile} currentSlug={slug} />

      <SubscribeCTA heading={<>{profile.header.name}'s next move,<br />the moment it lands.</>} />
    </main>
  );
}

// ──────────────────────────────────────────────────────────────
// TEMPLATE: TrackerFounder (Musk, Buffett, …)
// ──────────────────────────────────────────────────────────────

function TrackerFounder({ slug, profile }) {
  const entry = findCatalogEntry(slug) || { group: 'People' };
  return (
    <main className="page" style={{ paddingTop: 48, paddingBottom: 64 }}>
      <ProfileCrumb profile={profile} group={entry.group} />
      <ProfileHeader profile={profile} mascot="hodler" eyebrow={`Tracker · ${entry.sub || profile.header.role}`} />

      <p style={{ fontFamily: 'var(--serif)', fontSize: 19, lineHeight: 1.55, color: 'var(--text-body)', maxWidth: '64ch', margin: '32px 0 0' }}>
        {profile.header.bio}
      </p>

      <div className="section-hd">
        <h2>The scoreboard <span className="muted">· year-to-date</span></h2>
      </div>
      <ProfileStatsGrid stats={profile.stats} />

      {profile.empire && (
        <>
          <div className="section-hd">
            <h2>The empire <span className="muted">· mark-to-market</span></h2>
          </div>
          <div className="arms-grid">
            {profile.empire.map((a, i) => (
              <div key={i} className="arms-cell">
                <div className="arms-name">{a.name}</div>
                <div className="arms-mv">{a.mv}</div>
                <div className="arms-meta">
                  <span className={'mono ' + (a.ytd.startsWith('+') ? 'up' : a.ytd.startsWith('-') ? 'dn' : 'muted')}>{a.ytd} YTD</span>
                  <span className="muted mono">· {a.exposure}</span>
                  <span className="muted mono">· {a.ticker}</span>
                </div>
              </div>
            ))}
          </div>
        </>
      )}

      {profile.moves && (
        <>
          <div className="section-hd">
            <h2>The wire <span className="muted">· money-moving events</span></h2>
            <span className="section-link">{profile.moves.length} most recent</span>
          </div>
          <div className="feed-list">
            {profile.moves.map((f, i) => (
              <div key={i} className="feed-row musk">
                <span className="feed-date">{f.date}</span>
                <span className={'feed-action kind-' + f.kind.toLowerCase()}>{f.kind}</span>
                <div className="feed-body">
                  <div className="feed-asset">{f.what}</div>
                  <div className="feed-why">{f.impact}</div>
                </div>
              </div>
            ))}
          </div>
        </>
      )}

      <ProfileTell profile={profile} />
      <ProfileFin45View profile={profile} />
      <ProfileRelated profile={profile} currentSlug={slug} />

      <SubscribeCTA heading={<>{profile.header.name}'s next move,<br />the moment it lands.</>} />
    </main>
  );
}

// ──────────────────────────────────────────────────────────────
// SPECIAL: TrackerCongress — the multi-person leaderboard
// ──────────────────────────────────────────────────────────────

function TrackerCongress() {
  const c = DTD.congress;
  return (
    <main className="page" style={{ paddingTop: 48, paddingBottom: 64 }}>
      <div className="crumb">
        <a href="#/trackers">Trackers</a>
        <span className="crumb-sep">/</span>
        <span>Politicians</span>
        <span className="crumb-sep">/</span>
        <span style={{ color: 'var(--text-body)' }}>Congress</span>
      </div>

      <header style={{ display: 'grid', gridTemplateColumns: '1fr auto', gap: 32, alignItems: 'end', paddingBottom: 28, borderBottom: '3px double var(--text-primary)' }}>
        <div>
          <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, letterSpacing: '0.18em', color: 'var(--accent)', textTransform: 'uppercase', marginBottom: 14 }}>
            Tracker · the STOCK Act 45-day window
          </div>
          <h1 style={{ fontFamily: 'var(--serif)', fontWeight: 500, fontSize: 60, letterSpacing: '-0.025em', lineHeight: 1, margin: 0 }}>
            {c.title}
          </h1>
          <p style={{ fontFamily: 'var(--serif)', fontStyle: 'italic', fontSize: 19, color: 'var(--text-body)', maxWidth: '60ch', margin: '20px 0 0' }}>
            {c.subtitle}
          </p>
        </div>
        <FinMascot pose="alarm" size={160} />
      </header>

      <p style={{ fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.6, color: 'var(--text-body)', maxWidth: '64ch', margin: '32px 0 0' }}>
        {c.overview}
      </p>

      <div className="section-hd">
        <h2>Leaderboard · YTD <span className="muted">· delta vs benchmark</span></h2>
      </div>
      <div className="lb-table">
        <div className="lb-row lb-head">
          <span>#</span>
          <span>Member</span>
          <span className="r">Party</span>
          <span className="r">Chamber</span>
          <span className="r">Filings</span>
          <span className="r">YTD</span>
          <span className="r">vs SPY</span>
        </div>
        {c.leaderboard.map((r, i) => (
          <a key={i} className="lb-row" href={'#/tracker/' + r.who.toLowerCase()}>
            <span className="lb-rank">{r.rank}</span>
            <span className="lb-who">{r.who}</span>
            <span className={'r party-' + r.party}>{r.party}</span>
            <span className="r muted">{r.chamber}</span>
            <span className="r">{r.filings}</span>
            <span className={'r ' + (r.ytd.startsWith('+') ? 'up' : 'dn')}>{r.ytd}</span>
            <span className={'r ' + (r.bench.startsWith('+') ? 'up' : r.bench.startsWith('-') ? 'dn' : 'muted')}>{r.bench}</span>
          </a>
        ))}
      </div>

      <div className="section-hd">
        <h2>Live feed <span className="muted">· last 10 disclosures across all members</span></h2>
        <span className="section-link">Source: STOCK Act · House &amp; Senate</span>
      </div>
      <div className="feed-list">
        {c.feed.map((f, i) => (
          <div key={i} className="feed-row">
            <span className="feed-date">{f.date}</span>
            <span className={'feed-action ' + f.action.toLowerCase()}>{f.action}</span>
            <a className="feed-who" href={'#/tracker/' + f.who.toLowerCase()}>{f.who}</a>
            <div className="feed-body">
              <div className="feed-asset">{f.asset}</div>
              <div className="feed-why">{f.why}</div>
            </div>
            <span className="feed-pf">YTD {f.pf}</span>
          </div>
        ))}
      </div>

      <SubscribeCTA heading="Every disclosure, the moment it lands." />
    </main>
  );
}

// ──────────────────────────────────────────────────────────────
// SPECIAL: TrackerSpy — the index template (one-off layout)
// ──────────────────────────────────────────────────────────────

function TrackerSpy() {
  const s = DTD.spy;
  return (
    <main className="page" style={{ paddingTop: 48, paddingBottom: 64 }}>
      <div className="crumb">
        <a href="#/trackers">Trackers</a>
        <span className="crumb-sep">/</span>
        <span>Indices &amp; funds</span>
        <span className="crumb-sep">/</span>
        <span style={{ color: 'var(--text-body)' }}>SPY</span>
      </div>

      <header style={{ display: 'grid', gridTemplateColumns: '1fr auto', gap: 32, alignItems: 'end', paddingBottom: 28, borderBottom: '3px double var(--text-primary)' }}>
        <div>
          <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, letterSpacing: '0.18em', color: 'var(--accent)', textTransform: 'uppercase', marginBottom: 14 }}>
            Tracker · the benchmark, broken down
          </div>
          <h1 style={{ fontFamily: 'var(--serif)', fontWeight: 500, fontSize: 60, letterSpacing: '-0.025em', lineHeight: 1, margin: 0 }}>
            {s.title}
          </h1>
          <div style={{ display: 'flex', alignItems: 'baseline', gap: 16, marginTop: 18, flexWrap: 'wrap' }}>
            <span className="mono" style={{ fontSize: 22, color: 'var(--text-primary)' }}>{s.headline.px}</span>
            <span className={'mono ' + s.headline.dir} style={{ fontSize: 14 }}>{s.headline.d} today</span>
            <span className="mono up" style={{ fontSize: 14 }}>· {s.headline.ytd} YTD</span>
          </div>
          <p style={{ fontFamily: 'var(--serif)', fontStyle: 'italic', fontSize: 17, color: 'var(--accent-light)', margin: '14px 0 0' }}>
            {s.headline.vsFin}
          </p>
        </div>
        <FinMascot pose="analyst" size={160} />
      </header>

      <p style={{ fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.6, color: 'var(--text-body)', maxWidth: '64ch', margin: '28px 0 0' }}>
        {s.overview}
      </p>

      <div className="section-hd">
        <h2>Sector exposure <span className="muted">· 11 sectors</span></h2>
      </div>
      <div className="sector-list">
        {s.sectors.map((sec, i) => (
          <div key={i} className="sector-row">
            <span className="sector-name">{sec.name}</span>
            <div className="sector-bar"><div className="sector-bar-fill" style={{ width: sec.pct + '%' }} /></div>
            <span className="sector-pct mono">{sec.pct.toFixed(1)}%</span>
            <span className={'mono ' + sec.dir}>{sec.d}</span>
          </div>
        ))}
      </div>

      <div className="section-hd">
        <h2>Top 10+ by weight <span className="muted">· Fin45 holdings marked</span></h2>
      </div>
      <div className="lb-table">
        <div className="lb-row lb-head" style={{ gridTemplateColumns: '50px 80px 1fr 80px 80px 60px' }}>
          <span>#</span>
          <span>Ticker</span>
          <span>Name</span>
          <span className="r">Weight</span>
          <span className="r">Today</span>
          <span className="r">Held</span>
        </div>
        {s.top.map((t, i) => (
          <div key={i} className="lb-row" style={{ gridTemplateColumns: '50px 80px 1fr 80px 80px 60px', cursor: 'default' }}>
            <span className="lb-rank">{i + 1}</span>
            <span className="lb-who">{t.tk}</span>
            <span className="muted" style={{ fontFamily: 'var(--serif)', fontSize: 14 }}>{t.name}</span>
            <span className="r mono">{t.wt}</span>
            <span className={'r mono ' + t.dir}>{t.d}</span>
            <span className="r">{t.held ? <span style={{ color: 'var(--accent)', fontWeight: 600, letterSpacing: '0.1em' }}>YES</span> : <span style={{ color: 'var(--text-faint)' }}>—</span>}</span>
          </div>
        ))}
      </div>

      <div className="section-hd">
        <h2>The Fin45 view</h2>
      </div>
      <div style={{ padding: '24px 28px', border: '1px solid var(--accent-soft)', background: 'rgba(212,162,76,0.04)', fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.55, color: 'var(--text-primary)', maxWidth: '64ch' }}>
        {s.fin45View}
      </div>

      <SubscribeCTA heading={<>The benchmark,<br />broken down daily.</>} />
    </main>
  );
}

// ──────────────────────────────────────────────────────────────
// FALLBACK: TrackerComingSoon — for catalog entries with no profile yet
// ──────────────────────────────────────────────────────────────

function TrackerComingSoon({ slug }) {
  const entry = findCatalogEntry(slug);
  if (!entry) {
    return (
      <main className="page" style={{ paddingTop: 64, paddingBottom: 64, textAlign: 'center' }}>
        <FinMascot pose="alarm" size={220} />
        <h1 style={{ fontFamily: 'var(--serif)', fontSize: 48, fontWeight: 500, marginTop: 24 }}>Tracker not found.</h1>
        <a href="#/trackers" className="btn-subscribe" style={{ marginTop: 24, display: 'inline-block' }}>Back to all trackers</a>
      </main>
    );
  }
  return (
    <main className="page" style={{ paddingTop: 48, paddingBottom: 64 }}>
      <div className="crumb">
        <a href="#/trackers">Trackers</a>
        <span className="crumb-sep">/</span>
        <span style={{ color: 'var(--text-body)' }}>{entry.group}</span>
        <span className="crumb-sep">/</span>
        <span>{entry.name}</span>
      </div>
      <header style={{ paddingBottom: 28, borderBottom: '3px double var(--text-primary)' }}>
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, letterSpacing: '0.18em', color: 'var(--accent)', textTransform: 'uppercase', marginBottom: 12 }}>
          {entry.group} · tracker
        </div>
        <h1 style={{ fontFamily: 'var(--serif)', fontWeight: 500, fontSize: 56, letterSpacing: '-0.025em', lineHeight: 1, margin: 0 }}>
          {entry.name}
        </h1>
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 13, color: 'var(--text-muted)', marginTop: 10, letterSpacing: '0.04em' }}>
          {entry.sub}
        </div>
      </header>

      <div style={{ marginTop: 40, padding: '40px 40px', textAlign: 'center', border: '1px solid var(--accent-soft)', background: 'rgba(212,162,76,0.04)' }}>
        <FinMascot pose="analyst" size={180} />
        <div style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: 11, letterSpacing: '0.18em', color: 'var(--accent)', textTransform: 'uppercase', margin: '20px 0 14px' }}>
          Profile ships next sprint
        </div>
        <h2 style={{ fontFamily: 'var(--serif)', fontWeight: 500, fontSize: 36, letterSpacing: '-0.02em', margin: '0 0 12px' }}>
          Wire is on · data flowing
        </h2>
        <p style={{ fontFamily: 'var(--serif)', fontSize: 18, lineHeight: 1.5, color: 'var(--text-body)', maxWidth: '54ch', margin: '0 auto 24px' }}>
          The signal feed is already capturing {entry.name}'s moves. The full profile page renders next sprint — use the politicians and founder templates as the pattern.
        </p>
        <a href="#subscribe" className="btn-subscribe">Notify me when it lands</a>
      </div>

      <SubscribeCTA heading="More trackers, every week." />
    </main>
  );
}
