/* App.jsx — main landing page composition */

const { useState, useEffect, useRef } = React;

// Copy — institutional
const COPY = {
  misterioso: {
    eyebrow: "PLATAFORMA DE GESTÃO PARA TIKTOK ADS",
    title: ["Infraestrutura de alta performance", <em key="i"> para operar no TikTok Ads.</em>],
    sub: "Plataforma completa para gestão de campanhas TikTok Ads. Centraliza rastreamento de conversões, atribuição, criação de campanhas em lote e analytics em tempo real — integrado nativamente com TikTok Marketing API e Events API.",
    primaryCTA: "Acessar",
    secondaryCTA: "Ver demonstração",
    metaA: "TikTok Marketing API",
    metaB: "TikTok Events API",
    metaC: "Multi-account · Analytics · Automation",
    sectionFeatures: ["Quatro módulos.", <em key="i"> Uma plataforma.</em>],
    sectionFeaturesSub: "Cada módulo integra-se nativamente com as APIs oficiais do TikTok Ads e opera de forma independente ou em conjunto, cobrindo o ciclo completo de gestão de campanhas.",
    sectionFlow: ["Do clique à", <em key="i"> conversão atribuída.</em>],
    sectionFlowSub: "Cinco etapas automatizadas. Cada interação é rastreada, atribuída e reportada com precisão, do primeiro clique ao resultado final.",
    sectionCompare: ["Corvex Ads vs ", <em key="i">outras soluções.</em>],
    sectionCompareSub: "Comparativo de capacidades com as principais ferramentas do mercado de gestão de anúncios.",
    sectionDash: ["Visibilidade ", <em key="i">total das operações.</em>],
    sectionDashSub: "ROAS, CPA e atribuição consolidados por conta, campanha e anúncio — em tempo real, em uma única visão operacional.",
    sectionTesti: ["O que dizem ", <em key="i">nossos clientes.</em>],
    finalTitle: ["Comece a operar", <em key="i"> em escala.</em>],
    finalSub: "Entre em contato com nossa equipe para onboarding técnico assistido. Respondemos em até 48 horas úteis.",
  },
  direto: {
    eyebrow: "PLATAFORMA DE GESTÃO PARA TIKTOK ADS",
    title: ["Infraestrutura de alta performance", <em key="i"> para operar no TikTok Ads.</em>],
    sub: "Plataforma completa para gestão de campanhas TikTok Ads. Centraliza rastreamento de conversões, atribuição, criação de campanhas em lote e analytics em tempo real — integrado nativamente com TikTok Marketing API e Events API.",
    primaryCTA: "Acessar",
    secondaryCTA: "Ver demonstração",
    metaA: "TikTok Marketing API",
    metaB: "TikTok Events API",
    metaC: "Multi-account · Analytics · Automation",
    sectionFeatures: ["Quatro módulos.", <em key="i"> Uma plataforma.</em>],
    sectionFeaturesSub: "Cada módulo integra-se nativamente com as APIs oficiais do TikTok Ads e opera de forma independente ou em conjunto, cobrindo o ciclo completo de gestão de campanhas.",
    sectionFlow: ["Do clique à", <em key="i"> conversão atribuída.</em>],
    sectionFlowSub: "Cinco etapas automatizadas. Cada interação é rastreada, atribuída e reportada com precisão, do primeiro clique ao resultado final.",
    sectionCompare: ["Corvex Ads vs ", <em key="i">outras soluções.</em>],
    sectionCompareSub: "Comparativo de capacidades com as principais ferramentas do mercado de gestão de anúncios.",
    sectionDash: ["Visibilidade ", <em key="i">total das operações.</em>],
    sectionDashSub: "ROAS, CPA e atribuição consolidados por conta, campanha e anúncio — em tempo real, em uma única visão operacional.",
    sectionTesti: ["O que dizem ", <em key="i">nossos clientes.</em>],
    finalTitle: ["Comece a operar", <em key="i"> em escala.</em>],
    finalSub: "Entre em contato com nossa equipe para onboarding técnico assistido. Respondemos em até 48 horas úteis.",
  },
};

const FEATURES = [
  {
    num: "01 / RASTREAMENTO",
    title: "Rastreamento completo de cliques.",
    desc: "Cada clique em um anúncio TikTok é capturado e registrado antes do redirecionamento para a página de destino. Nenhuma interação é perdida, incluindo eventos não reportados diretamente pela plataforma.",
    tags: ["TTCLID", "UTM PARAMS", "302 REDIRECT", "POSTGRES"],
    icon: (
      <svg width="22" height="22" viewBox="0 0 24 24" fill="none">
        <path d="M3 12 L21 12 M14 5 L21 12 L14 19" stroke="currentColor" strokeWidth="1.2" />
        <circle cx="6" cy="12" r="2" fill="currentColor" />
      </svg>
    ),
  },
  {
    num: "02 / ATRIBUIÇÃO",
    title: "Atribuição precisa por conversão.",
    desc: "Cada conversão é vinculada ao anúncio de origem e reportada à TikTok Events API com os parâmetros corretos. O modelo de otimização da plataforma opera com dados reais e precisos.",
    tags: ["EVENTS API", "UTM", "ATRIBUIÇÃO", "CONVERSÃO"],
    icon: (
      <svg width="22" height="22" viewBox="0 0 24 24" fill="none">
        <rect x="3" y="6" width="18" height="12" stroke="currentColor" strokeWidth="1.2" />
        <path d="M3 10 L12 14 L21 10" stroke="currentColor" strokeWidth="1.2" />
      </svg>
    ),
  },
  {
    num: "03 / GESTÃO MULTI-CONTA",
    title: "Campanhas em escala, multi-conta.",
    desc: "Criação e replicação de campanhas em múltiplas contas TikTok Ads simultaneamente, com links de rastreamento gerados automaticamente. Operações paralelas via TikTok Marketing API.",
    tags: ["MARKETING API", "MULTI-CONTA", "AUTOMAÇÃO", "TEMPLATES"],
    icon: (
      <svg width="22" height="22" viewBox="0 0 24 24" fill="none">
        <circle cx="12" cy="6" r="2.4" stroke="currentColor" strokeWidth="1.2" />
        <circle cx="6" cy="18" r="2.4" stroke="currentColor" strokeWidth="1.2" />
        <circle cx="18" cy="18" r="2.4" stroke="currentColor" strokeWidth="1.2" />
        <path d="M12 8.4 L7.2 15.6 M12 8.4 L16.8 15.6" stroke="currentColor" strokeWidth="1.2" />
      </svg>
    ),
  },
  {
    num: "04 / ANALYTICS",
    title: "Métricas consolidadas em tempo real.",
    desc: "Investimento, CPA e ROAS sincronizados continuamente por anúncio, campanha e conta. Decisões de otimização baseadas em dados atualizados, não em relatórios defasados.",
    tags: ["TEMPO REAL", "ROAS", "CPA", "SPEND"],
    icon: (
      <svg width="22" height="22" viewBox="0 0 24 24" fill="none">
        <circle cx="12" cy="12" r="8" stroke="currentColor" strokeWidth="1.2" />
        <path d="M12 7 L12 12 L15.5 14" stroke="currentColor" strokeWidth="1.2" />
      </svg>
    ),
  },
];

const FLOW_STEPS = [
  { n: "01", t: "Clique no anúncio", d: "O usuário interage com o anúncio TikTok. A plataforma captura e registra o evento antes do redirecionamento." },
  { n: "02", t: "Redirecionamento", d: "O clique é encaminhado para a página de destino com um identificador único de rastreamento associado." },
  { n: "03", t: "Atribuição", d: "A interação do usuário é vinculada ao clique original, identificando com precisão o anúncio responsável pela conversão." },
  { n: "04", t: "Conversão", d: "O evento de compra ou lead é capturado via webhook e enviado à TikTok Events API com os parâmetros corretos." },
  { n: "05", t: "Analytics", d: "Investimento e receita reconciliados automaticamente. ROAS e CPA disponíveis em tempo real no painel." },
];

const COMPARE_ROWS = [
  { name: "Atribuição nativa via TikTok Events API", utmify: "partial", planilha: "x", corvex: "check" },
  { name: "Dados sob controle total do anunciante", utmify: "x", planilha: "check", corvex: "check" },
  { name: "Criação de campanhas multi-conta em lote", utmify: "x", planilha: "x", corvex: "check" },
  { name: "Sincronização automática de investimento", utmify: "check", planilha: "x", corvex: "check" },
  { name: "Integração com plataformas de pagamento via webhook", utmify: "partial", planilha: "x", corvex: "check" },
  { name: "Analytics consolidado de ROAS / CPA / LTV", utmify: "x", planilha: "x", corvex: "check" },
  { name: "Infraestrutura dedicada sem dependência de terceiros", utmify: "x", planilha: "check", corvex: "check" },
];

const TESTIMONIALS = [
  {
    q: "A precisão da atribuição via Events API resolveu um problema que tínhamos há anos. O ROAS reportado passou a refletir o resultado real das campanhas.",
    n: "R. Almeida",
    r: "Head de Mídia · Agência de Performance",
    a: "RA",
  },
  {
    q: "Consolidar dados de múltiplas contas em uma única visão operacional mudou a forma como gerenciamos nosso portfólio de campanhas. Decisões mais rápidas, resultados mais consistentes.",
    n: "F. Tavares",
    r: "Diretor de Growth · Empresa de Tecnologia",
    a: "FT",
  },
  {
    q: "A criação de campanhas em lote e a sincronização automática de custos eliminaram horas de trabalho manual. Nossa equipe de mídia opera com muito mais escala hoje.",
    n: "C. Nakamura",
    r: "CEO · Agência de Marketing Digital",
    a: "CN",
  },
];

// ---------------------------------------------------------------------------

const App = () => {
  const [tweaks, setTweak] = window.useTweaks(window.TWEAK_DEFAULTS);

  const variant = tweaks.copy === "direto" ? "direto" : "misterioso";
  const C = COPY[variant];

  // Apply CSS vars from tweaks
  useEffect(() => {
    const r = document.documentElement.style;
    r.setProperty("--silver", tweaks.silverHex);
    r.setProperty("--silver-glow", tweaks.silverGlow);
    r.setProperty("--grid-opacity", String(tweaks.gridOpacity));
    r.setProperty("--grain-opacity", String(tweaks.grainOpacity));
    r.setProperty("--particle-opacity", String(tweaks.particleOpacity));
  }, [tweaks]);

  return (
    <>
      {/* Background layers */}
      <div className="bg-layer bg-vignette"></div>
      {tweaks.density !== "limpo" && tweaks.density !== "particles" && (
        <div className="bg-layer bg-grid"></div>
      )}
      {tweaks.density === "particles" && <ParticlesCanvas />}
      <div className="bg-layer bg-grain"></div>

      <Nav C={C} />
      <Hero C={C} variant={tweaks.heroVariant} />
      <MetricsStrip />
      <Features C={C} />
      <Flow C={C} />
      {tweaks.showDashboard !== false && <DashboardSection C={C} />}
      <Compare C={C} />
      <Testimonials C={C} />
      <AboutSection />
      <ContactSection />
      <FinalCTA C={C} />
      <Footer />

      <window.TweaksPanel title="Tweaks">
        <window.TweakSection title="Hero">
          <window.TweakRadio
            label="Estilo do hero"
            value={tweaks.heroVariant}
            options={[
              { value: "centered", label: "Centrado" },
              { value: "blueprint", label: "Blueprint" },
              { value: "cinema", label: "Cinema" },
              { value: "asymmetric", label: "Off-axis" },
            ]}
            onChange={(v) => setTweak("heroVariant", v)}
          />
        </window.TweakSection>

        <window.TweakSection title="Acento prata">
          <window.TweakRadio
            label="Tom"
            value={tweaks.silverTone}
            options={[
              { value: "neutro", label: "Neutro" },
              { value: "azulado", label: "Azulado" },
              { value: "quente", label: "Quente" },
            ]}
            onChange={(v) => {
              const map = {
                neutro: { silverHex: "#c8c8cc", silverGlow: "rgba(200,200,204,0.18)" },
                azulado: { silverHex: "#b8c4d6", silverGlow: "rgba(184,196,214,0.22)" },
                quente: { silverHex: "#d4c8b8", silverGlow: "rgba(212,200,184,0.22)" },
              };
              setTweak({ silverTone: v, ...map[v] });
            }}
          />
        </window.TweakSection>

        <window.TweakSection title="Atmosfera">
          <window.TweakRadio
            label="Densidade do fundo"
            value={tweaks.density}
            options={[
              { value: "limpo", label: "Limpo" },
              { value: "grid", label: "Grid" },
              { value: "particles", label: "Partículas" },
            ]}
            onChange={(v) => {
              const map = {
                limpo: { gridOpacity: 0, particleOpacity: 0 },
                grid: { gridOpacity: 0.10, particleOpacity: 0 },
                particles: { gridOpacity: 0.04, particleOpacity: 0.55 },
              };
              setTweak({ density: v, ...map[v] });
            }}
          />
          <window.TweakSlider
            label="Intensidade do grão"
            min={0} max={0.18} step={0.01}
            value={tweaks.grainOpacity}
            onChange={(v) => setTweak("grainOpacity", v)}
          />
        </window.TweakSection>

        <window.TweakSection title="Conteúdo">
          <window.TweakRadio
            label="Tom de copy"
            value={tweaks.copy}
            options={[
              { value: "misterioso", label: "Misterioso" },
              { value: "direto", label: "Direto" },
            ]}
            onChange={(v) => setTweak("copy", v)}
          />
          <window.TweakToggle
            label="Mostrar dashboard"
            value={tweaks.showDashboard}
            onChange={(v) => setTweak("showDashboard", v)}
          />
        </window.TweakSection>
      </window.TweaksPanel>
    </>
  );
};

// ---------------------------------------------------------------------------
// NAV
// ---------------------------------------------------------------------------
const Nav = ({ C }) => (
  <nav className="nav">
    <a href="#" className="nav-brand">
      <img src="/landing/assets/logo.png" alt="" />
      <img src="https://i.postimg.cc/VNR74y5S/wordmark.png" alt="Corvex Ads" style={{ height: "40px", width: "auto", filter: "brightness(0) invert(1)", opacity: 0.92 }} />
    </a>
    <div className="nav-links">
      <a href="#sistema">Plataforma</a>
      <a href="#fluxo">Como funciona</a>
      <a href="#dashboard">Dashboard</a>
      <a href="#sobre">Sobre</a>
      <a href="#contato">Contato</a>
      <a href="/terms">Termos</a>
      <a href="/privacy">Privacidade</a>
    </div>
    <a href="/login" className="nav-cta">Acessar →</a>
  </nav>
);

// ---------------------------------------------------------------------------
// HERO — 4 variants
// ---------------------------------------------------------------------------
const Hero = ({ C, variant }) => {
  if (variant === "blueprint") return <HeroBlueprint C={C} />;
  if (variant === "cinema") return <HeroCinema C={C} />;
  if (variant === "asymmetric") return <HeroAsymmetric C={C} />;
  return <HeroCentered C={C} />;
};

const HeroCentered = ({ C }) => (
  <section className="hero">
    <div className="hero-bracket tl"></div>
    <div className="hero-bracket tr"></div>
    <div className="hero-bracket bl"></div>
    <div className="hero-bracket br"></div>
    <div className="container">
      <div className="hero-tag eyebrow">{C.eyebrow}</div>
      <h1 className="display hero-title">{C.title}</h1>
      <p className="hero-sub">{C.sub}</p>
      <div className="hero-actions">
        <a href="#convite" className="btn btn-primary">
          {C.primaryCTA}
          <Arrow />
        </a>
        <a href="#dashboard" className="btn btn-ghost">
          {C.secondaryCTA}
        </a>
      </div>
      <div className="hero-meta">
        <div><span>◇</span> {C.metaA}</div>
        <div><span>◇</span> {C.metaB}</div>
        <div><span>◇</span> {C.metaC}</div>
      </div>
    </div>
  </section>
);

const HeroBlueprint = ({ C }) => (
  <section className="hero" style={{ paddingTop: 200 }}>
    <BlueprintGrid />
    <div className="container">
      <div className="hero-tag eyebrow">{C.eyebrow}</div>
      <h1 className="display hero-title">{C.title}</h1>
      <p className="hero-sub">{C.sub}</p>
      <div className="hero-actions">
        <a href="#convite" className="btn btn-primary">{C.primaryCTA}<Arrow /></a>
        <a href="#dashboard" className="btn btn-ghost">{C.secondaryCTA}</a>
      </div>
      <div className="hero-meta">
        <div><span>◇</span> {C.metaA}</div>
        <div><span>◇</span> {C.metaB}</div>
        <div><span>◇</span> {C.metaC}</div>
      </div>
    </div>
  </section>
);

const HeroCinema = ({ C }) => (
  <section className="hero" style={{ paddingTop: 220, paddingBottom: 140 }}>
    <img src="/landing/assets/logo.png" className="hero-crow" alt="" />
    <div className="container" style={{ position: "relative", zIndex: 2 }}>
      <div className="hero-tag eyebrow">{C.eyebrow}</div>
      <h1 className="display hero-title" style={{ maxWidth: 880 }}>{C.title}</h1>
      <p className="hero-sub">{C.sub}</p>
      <div className="hero-actions">
        <a href="#convite" className="btn btn-primary">{C.primaryCTA}<Arrow /></a>
        <a href="#dashboard" className="btn btn-ghost">{C.secondaryCTA}</a>
      </div>
      <div className="hero-meta">
        <div><span>◇</span> {C.metaA}</div>
        <div><span>◇</span> {C.metaB}</div>
        <div><span>◇</span> {C.metaC}</div>
      </div>
    </div>
  </section>
);

const HeroAsymmetric = ({ C }) => (
  <section className="hero" style={{ textAlign: "left", paddingTop: 200 }}>
    <div className="container" style={{ display: "grid", gridTemplateColumns: "1.4fr 1fr", gap: 60, alignItems: "center" }}>
      <div>
        <div className="hero-tag eyebrow">{C.eyebrow}</div>
        <h1 className="display hero-title" style={{ textAlign: "left", margin: "20px 0 24px" }}>{C.title}</h1>
        <p className="hero-sub" style={{ margin: "0 0 32px" }}>{C.sub}</p>
        <div className="hero-actions" style={{ justifyContent: "flex-start", marginBottom: 40 }}>
          <a href="#convite" className="btn btn-primary">{C.primaryCTA}<Arrow /></a>
          <a href="#dashboard" className="btn btn-ghost">{C.secondaryCTA}</a>
        </div>
        <div className="hero-meta" style={{ justifyContent: "flex-start" }}>
          <div><span>◇</span> {C.metaA}</div>
          <div><span>◇</span> {C.metaB}</div>
        </div>
      </div>
      <div style={{ position: "relative", aspectRatio: "1 / 1", maxWidth: 380, marginLeft: "auto" }}>
        <div style={{
          position: "absolute", inset: 0,
          border: "1px solid var(--line-strong)",
          background: "radial-gradient(ellipse at 50% 30%, rgba(200,200,204,0.08), transparent 70%), var(--bg-1)",
        }}>
          <img src="/landing/assets/logo.png" alt="" style={{ width: "70%", position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", filter: "drop-shadow(0 0 40px var(--silver-glow))" }} />
          <div style={{ position: "absolute", top: 12, left: 12, fontFamily: "var(--font-mono)", fontSize: 10, color: "var(--text-3)", letterSpacing: "0.14em" }}>CRX-MK01</div>
          <div style={{ position: "absolute", bottom: 12, right: 12, fontFamily: "var(--font-mono)", fontSize: 10, color: "var(--silver-2)", letterSpacing: "0.14em" }}>◇ ATIVO</div>
        </div>
      </div>
    </div>
  </section>
);

const Arrow = () => (
  <svg className="arrow" viewBox="0 0 24 24" fill="none">
    <path d="M5 12 H19 M13 6 L19 12 L13 18" stroke="currentColor" strokeWidth="1.6" />
  </svg>
);

// ---------------------------------------------------------------------------
const BlueprintGrid = () => (
  <svg style={{ position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none", opacity: 0.18, zIndex: 0 }}
    preserveAspectRatio="none" viewBox="0 0 100 100">
    <defs>
      <pattern id="bp" width="5" height="5" patternUnits="userSpaceOnUse">
        <path d="M 5 0 L 0 0 0 5" fill="none" stroke="rgba(200,200,204,0.2)" strokeWidth="0.1" />
      </pattern>
    </defs>
    <rect width="100" height="100" fill="url(#bp)" />
  </svg>
);

// ---------------------------------------------------------------------------
const ParticlesCanvas = () => {
  const ref = useRef(null);
  useEffect(() => {
    const c = ref.current; if (!c) return;
    const ctx = c.getContext("2d");
    const resize = () => { c.width = window.innerWidth; c.height = window.innerHeight; };
    resize(); window.addEventListener("resize", resize);
    const N = 60;
    const ps = Array.from({ length: N }, () => ({
      x: Math.random() * c.width, y: Math.random() * c.height,
      vx: (Math.random() - 0.5) * 0.15, vy: (Math.random() - 0.5) * 0.15,
      r: Math.random() * 1.2 + 0.3,
    }));
    let raf;
    const tick = () => {
      ctx.clearRect(0, 0, c.width, c.height);
      ctx.fillStyle = "rgba(200,200,204,0.5)";
      ps.forEach(p => {
        p.x += p.vx; p.y += p.vy;
        if (p.x < 0 || p.x > c.width) p.vx *= -1;
        if (p.y < 0 || p.y > c.height) p.vy *= -1;
        ctx.beginPath();
        ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
        ctx.fill();
      });
      raf = requestAnimationFrame(tick);
    };
    tick();
    return () => { cancelAnimationFrame(raf); window.removeEventListener("resize", resize); };
  }, []);
  return <canvas ref={ref} id="particles-canvas" />;
};

// ---------------------------------------------------------------------------
const MetricsStrip = () => (
  <section className="metrics">
    <div className="container">
      <div className="metrics-grid">
        <div className="metric">
          <div className="metric-value">Multi<span className="unit">-account</span></div>
          <div className="metric-label">Gestão de múltiplas contas</div>
        </div>
        <div className="metric">
          <div className="metric-value">live <span className="unit">sync</span></div>
          <div className="metric-label">Custo e ROAS em tempo real</div>
        </div>
        <div className="metric">
          <div className="metric-value">100<span className="unit">%</span></div>
          <div className="metric-label">Atribuição precisa de cliques</div>
        </div>
        <div className="metric">
          <div className="metric-value">API<span className="unit"> oficial</span></div>
          <div className="metric-label">TikTok Marketing + Events API</div>
        </div>
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const Features = ({ C }) => (
  <section id="sistema">
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ O SISTEMA</div>
        <h2>{C.sectionFeatures}</h2>
        <p>{C.sectionFeaturesSub}</p>
      </div>
      <div className="features-grid">
        {FEATURES.map((f, i) => (
          <div key={i} className="feature">
            <div className="feature-icon">{f.icon}</div>
            <div className="feature-num">{f.num}</div>
            <h3 className="feature-title">{f.title}</h3>
            <p className="feature-desc">{f.desc}</p>
            <div className="feature-tags">
              {f.tags.map((t, j) => <span key={j}>{t}</span>)}
            </div>
          </div>
        ))}
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const Flow = ({ C }) => (
  <section id="fluxo" className="flow">
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ FLUXO COMPLETO</div>
        <h2>{C.sectionFlow}</h2>
        <p>{C.sectionFlowSub}</p>
      </div>
      <div className="flow-track">
        {FLOW_STEPS.map((s, i) => (
          <div key={i} className="flow-step">
            <div className="flow-dot">{s.n}</div>
            <div>
              <h4 className="flow-title">{s.t}</h4>
              <p className="flow-desc">{s.d}</p>
            </div>
          </div>
        ))}
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const DashboardSection = ({ C }) => (
  <section id="dashboard">
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ COCKPIT</div>
        <h2>{C.sectionDash}</h2>
        <p>{C.sectionDashSub}</p>
      </div>
      <div className="dashboard-frame">
        <window.Dashboard />
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const Compare = ({ C }) => {
  const Cell = ({ v }) => {
    if (v === "check") return <span className="check">●</span>;
    if (v === "x") return <span className="x">—</span>;
    return <span className="partial">PARCIAL</span>;
  };
  return (
    <section id="comparativo">
      <div className="container">
        <div className="section-head">
          <div className="eyebrow">/ COMPARATIVO</div>
          <h2>{C.sectionCompare}</h2>
          <p>{C.sectionCompareSub}</p>
        </div>
        <div className="compare-wrap">
          <table className="compare">
            <thead>
              <tr>
                <th>Capacidade</th>
                <th>Ferramentas de UTM</th>
                <th>Planilhas / Processos manuais</th>
                <th className="col-corvex">Corvex Ads</th>
              </tr>
            </thead>
            <tbody>
              {COMPARE_ROWS.map((r, i) => (
                <tr key={i}>
                  <td className="feature-name">{r.name}</td>
                  <td><Cell v={r.utmify} /></td>
                  <td><Cell v={r.planilha} /></td>
                  <td className="col-corvex"><Cell v={r.corvex} /></td>
                </tr>
              ))}
            </tbody>
          </table>
        </div>
      </div>
    </section>
  );
};

// ---------------------------------------------------------------------------
const Testimonials = ({ C }) => (
  <section>
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ OPERADORES</div>
        <h2>{C.sectionTesti}</h2>
      </div>
      <div className="testimonials">
        {TESTIMONIALS.map((t, i) => (
          <div key={i} className="tcard">
            <p className="tquote">"{t.q}"</p>
            <div className="tperson">
              <div className="tavatar">{t.a}</div>
              <div>
                <div className="tname">{t.n}</div>
                <div className="trole">{t.r}</div>
              </div>
            </div>
          </div>
        ))}
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
// ABOUT SECTION
// ---------------------------------------------------------------------------
const AboutSection = () => (
  <section id="sobre" style={{ borderTop: "1px solid var(--line)" }}>
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ SOBRE A CORVEX ADS</div>
        <h2>{"Infraestrutura de "}  <em style={{ fontStyle: "italic", background: "linear-gradient(180deg, var(--silver) 0%, var(--silver-2) 100%)", WebkitBackgroundClip: "text", backgroundClip: "text", color: "transparent" }}>performance.</em></h2>
        <p>A Corvex Ads é uma empresa brasileira especializada em infraestrutura de gestão e otimização de campanhas publicitárias no TikTok Ads. Desenvolvemos ferramentas de alto desempenho para agências, anunciantes e operações de mídia paga que precisam de escala, precisão e controle total sobre seus dados.</p>
      </div>
      <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 1, background: "var(--line)", border: "1px solid var(--line)" }}>
        {[
          {
            label: "O que construímos",
            text: "Uma plataforma completa integrada com TikTok Marketing API e Events API: rastreamento de cliques, atribuição de conversões, criação de campanhas em lote e analytics consolidado em tempo real.",
            tag: "PRODUTO",
            color: "var(--green)",
          },
          {
            label: "Para quem",
            text: "Agências de performance, anunciantes diretos e operações de mídia paga que gerenciam múltiplas contas TikTok Ads e precisam de atribuição precisa e automação de escala.",
            tag: "MERCADO",
            color: "var(--silver)",
          },
          {
            label: "Como fazemos",
            text: "Integração nativa com APIs oficiais do TikTok, automação de operações multi-conta, analytics em tempo real e infraestrutura construída para alta disponibilidade e precisão de dados.",
            tag: "ABORDAGEM",
            color: "var(--amber)",
          },
        ].map((item, i) => (
          <div key={i} style={{ background: "var(--bg-1)", padding: "40px 36px", display: "flex", flexDirection: "column", gap: 16 }}>
            <div style={{ fontFamily: "var(--font-mono)", fontSize: 10, letterSpacing: "0.18em", textTransform: "uppercase", color: item.color }}>{item.tag}</div>
            <h3 style={{ fontFamily: "var(--font-display)", fontWeight: 300, fontSize: 24, margin: 0, letterSpacing: "-0.01em", lineHeight: 1.1 }}>{item.label}</h3>
            <p style={{ color: "var(--text-2)", fontSize: 14, lineHeight: 1.6, margin: 0 }}>{item.text}</p>
          </div>
        ))}
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
// CONTACT SECTION
// ---------------------------------------------------------------------------
const ContactSection = () => (
  <section id="contato" style={{ borderTop: "1px solid var(--line)" }}>
    <div className="container">
      <div className="section-head">
        <div className="eyebrow">/ CONTATO</div>
        <h2>{"Fale com "}  <em style={{ fontStyle: "italic", background: "linear-gradient(180deg, var(--silver) 0%, var(--silver-2) 100%)", WebkitBackgroundClip: "text", backgroundClip: "text", color: "transparent" }}>nossa equipe.</em></h2>
        <p>Para solicitar acesso, demonstração ou suporte técnico, entre em contato. Respondemos em até 48 horas úteis.</p>
      </div>
      <div style={{ display: "flex", flexDirection: "column", alignItems: "center", gap: 32 }}>
        <a
          href="mailto:contact@corvexads.com.br"
          style={{
            display: "inline-flex",
            alignItems: "center",
            gap: 12,
            padding: "20px 32px",
            background: "var(--bg-1)",
            border: "1px solid var(--line-2)",
            borderRadius: 4,
            color: "var(--text)",
            textDecoration: "none",
            fontFamily: "var(--font-mono)",
            fontSize: 15,
            letterSpacing: "0.06em",
            transition: "all 0.2s ease",
          }}
          onMouseEnter={e => { e.currentTarget.style.borderColor = "var(--silver)"; e.currentTarget.style.background = "var(--bg-2)"; }}
          onMouseLeave={e => { e.currentTarget.style.borderColor = "var(--line-2)"; e.currentTarget.style.background = "var(--bg-1)"; }}
        >
          <svg width="18" height="18" viewBox="0 0 24 24" fill="none" style={{ flexShrink: 0 }}>
            <rect x="2" y="4" width="20" height="16" rx="2" stroke="currentColor" strokeWidth="1.4" />
            <path d="M2 8 L12 14 L22 8" stroke="currentColor" strokeWidth="1.4" />
          </svg>
          contact@corvexads.com.br
        </a>
        <div style={{ display: "flex", gap: 40, fontFamily: "var(--font-mono)", fontSize: 11, color: "var(--text-3)", letterSpacing: "0.1em", textTransform: "uppercase" }}>
          <span>◇ Suporte técnico</span>
          <span>◇ Onboarding assistido</span>
          <span>◇ Demonstração</span>
        </div>
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const FinalCTA = ({ C }) => (
  <section id="convite" className="final">
    <div className="container">
      <div className="final-frame">
        <span className="corner-tl"></span>
        <span className="corner-tr"></span>
        <span className="corner-bl"></span>
        <span className="corner-br"></span>
        <div className="eyebrow">/ COMEÇAR</div>
        <h2>{C.finalTitle}</h2>
        <p>{C.finalSub}</p>
        <div className="hero-actions" style={{ marginBottom: 0 }}>
          <a href="/login" className="btn btn-primary">Acessar a plataforma<Arrow /></a>
          <a href="mailto:contact@corvexads.com.br" className="btn btn-ghost">Falar com a equipe</a>
        </div>
      </div>
    </div>
  </section>
);

// ---------------------------------------------------------------------------
const Footer = () => (
  <footer className="footer">
    <div className="container">
      <div className="footer-grid">
        <div className="footer-brand">
          <img src="/landing/assets/logo.png" alt="Corvex Ads" />
          <p>Corvex Ads is an independent advertising technology initiative based in Brazil, serving clients globally.</p>
          <a href="mailto:contact@corvexads.com.br" style={{ display: "block", marginTop: 12, color: "var(--text-3)", fontSize: 12, fontFamily: "var(--font-mono)", textDecoration: "none", letterSpacing: "0.06em" }}>contact@corvexads.com.br</a>
          <p style={{ marginTop: 10, fontSize: 11, color: "var(--text-4)", fontFamily: "var(--font-mono)", letterSpacing: "0.05em", lineHeight: 1.6 }}>
            Operated by DIGITALIZA ENTERPRISES LTDA<br />CNPJ 48.110.133/0001-47
          </p>
        </div>
        <div className="footer-col">
          <h4>Plataforma</h4>
          <a href="#sistema">Rastreamento</a>
          <a href="#sistema">Atribuição</a>
          <a href="#sistema">Campanhas em lote</a>
          <a href="#sistema">Analytics</a>
        </div>
        <div className="footer-col">
          <h4>Empresa</h4>
          <a href="#sobre">Sobre a Corvex Ads</a>
          <a href="#fluxo">Como funciona</a>
          <a href="#dashboard">Dashboard</a>
          <a href="#comparativo">Comparativo</a>
        </div>
        <div className="footer-col">
          <h4>Legal & Acesso</h4>
          <a href="/login">Acessar plataforma</a>
          <a href="mailto:contact@corvexads.com.br">Contato</a>
          <a href="/terms">Termos de Uso</a>
          <a href="/privacy">Política de Privacidade</a>
        </div>
      </div>
      <div className="footer-bottom">
        <span>© 2026 CORVEX ADS · Operated by DIGITALIZA ENTERPRISES LTDA · CNPJ 48.110.133/0001-47</span>
        <div style={{ display: "flex", gap: 24 }}>
          <a href="/terms" style={{ color: "var(--text-3)", textDecoration: "none", fontSize: 11, fontFamily: "var(--font-mono)", letterSpacing: "0.1em", textTransform: "uppercase" }}>Termos de Uso</a>
          <a href="/privacy" style={{ color: "var(--text-3)", textDecoration: "none", fontSize: 11, fontFamily: "var(--font-mono)", letterSpacing: "0.1em", textTransform: "uppercase" }}>Privacidade</a>
        </div>
      </div>
    </div>
  </footer>
);

const ScrollStamp = () => {
  const [t, setT] = useState("");
  useEffect(() => {
    const tick = () => {
      const d = new Date();
      const pad = (n) => String(n).padStart(2, "0");
      setT(`${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`);
    };
    tick();
    const id = setInterval(tick, 1000);
    return () => clearInterval(id);
  }, []);
  return <div className="scrolling-stamp">◇ {t} BRT · corvexads.com.br</div>;
};

// ---------------------------------------------------------------------------
window.App = App;
