<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nextri — Marketing That Knows Your Trade</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500&display=swap" rel="stylesheet">
<style>
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  :root {
    --ink: #0f1210; --paper: #f5f2ec; --accent: #1a7a4a;
    --accent2: #e8f5ee; --mid: #6b7472; --border: #ddd9d0; --radius: 4px;
  }
  html { scroll-behavior: smooth; }
  body { font-family: 'DM Sans', sans-serif; background: var(--paper); color: var(--ink); font-size: 16px; line-height: 1.6; overflow-x: hidden; }

  nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 0 48px; height: 64px; background: var(--paper); border-bottom: 1px solid var(--border); }
  .nav-logo { font-family: 'Instrument Serif', serif; font-size: 1.35rem; letter-spacing: -0.01em; color: var(--ink); text-decoration: none; }
  .nav-cta { background: var(--accent); color: #fff; font-size: 0.875rem; font-weight: 500; padding: 9px 20px; border-radius: var(--radius); text-decoration: none; transition: opacity 0.15s; }
  .nav-cta:hover { opacity: 0.85; }

  .hero { min-height: 100vh; display: grid; grid-template-columns: 1fr 1fr; align-items: center; padding: 120px 48px 80px; gap: 80px; max-width: 1200px; margin: 0 auto; }
  .hero-eyebrow { display: inline-block; font-size: 0.75rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); border: 1px solid var(--accent); padding: 5px 12px; border-radius: 100px; margin-bottom: 28px; opacity: 0; animation: fadeUp 0.6s 0.1s forwards; }
  .hero h1 { font-family: 'Instrument Serif', serif; font-size: clamp(2.6rem, 4.5vw, 3.75rem); line-height: 1.1; letter-spacing: -0.02em; color: var(--ink); opacity: 0; animation: fadeUp 0.6s 0.2s forwards; }
  .hero h1 em { font-style: italic; color: var(--accent); }
  .hero-sub { margin-top: 24px; font-size: 1.05rem; color: var(--mid); max-width: 420px; line-height: 1.7; font-weight: 300; opacity: 0; animation: fadeUp 0.6s 0.35s forwards; }
  .hero-actions { margin-top: 36px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; opacity: 0; animation: fadeUp 0.6s 0.5s forwards; }

  .btn-primary { background: var(--accent); color: #fff; font-size: 0.9rem; font-weight: 500; padding: 13px 28px; border-radius: var(--radius); text-decoration: none; transition: opacity 0.15s, transform 0.15s; display: inline-block; }
  .btn-primary:hover { opacity: 0.85; transform: translateY(-1px); }
  .btn-ghost { font-size: 0.875rem; color: var(--mid); text-decoration: none; display: flex; align-items: center; gap: 6px; transition: color 0.15s; }
  .btn-ghost:hover { color: var(--ink); }
  .btn-ghost svg { transition: transform 0.15s; }
  .btn-ghost:hover svg { transform: translateX(3px); }

  .hero-visual { opacity: 0; animation: fadeUp 0.7s 0.4s forwards; }
  .dashboard { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 24px; box-shadow: 0 8px 40px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04); }
  .dash-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
  .dash-title { font-size: 0.8rem; font-weight: 500; color: var(--mid); text-transform: uppercase; letter-spacing: 0.08em; }
  .dash-badge { background: var(--accent2); color: var(--accent); font-size: 0.7rem; font-weight: 500; padding: 4px 10px; border-radius: 100px; }
  .dash-stat-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 20px; }
  .stat-card { background: var(--paper); border-radius: 8px; padding: 14px; }
  .stat-label { font-size: 0.7rem; color: var(--mid); font-weight: 400; margin-bottom: 6px; }
  .stat-value { font-family: 'Instrument Serif', serif; font-size: 1.5rem; color: var(--ink); line-height: 1; }
  .stat-delta { font-size: 0.7rem; color: var(--accent); margin-top: 4px; font-weight: 500; }
  .chart-label { font-size: 0.7rem; color: var(--mid); margin-bottom: 10px; }
  .bar-group { display: flex; align-items: flex-end; gap: 6px; height: 80px; }
  .bar { flex: 1; border-radius: 3px 3px 0 0; background: var(--border); position: relative; }
  .bar.active { background: var(--accent); }
  .bar.mid { background: #a8d4bc; }
  .bar-month { position: absolute; bottom: -18px; left: 50%; transform: translateX(-50%); font-size: 0.6rem; color: var(--mid); white-space: nowrap; }

  .trigger-pill { display: inline-flex; align-items: center; gap: 6px; background: #fff7ed; border: 1px solid #f59e0b33; color: #92400e; font-size: 0.72rem; font-weight: 500; padding: 5px 10px; border-radius: 100px; margin-right: 6px; margin-bottom: 6px; }
  .trigger-dot { width: 6px; height: 6px; border-radius: 50%; background: #f59e0b; flex-shrink: 0; }
  .trigger-pill.green { background: var(--accent2); border-color: #1a7a4a33; color: #14532d; }
  .trigger-pill.green .trigger-dot { background: var(--accent); }
  .trigger-pill.blue { background: #eff6ff; border-color: #3b82f633; color: #1e3a8a; }
  .trigger-pill.blue .trigger-dot { background: #3b82f6; }

  section { padding: 96px 48px; }
  .container { max-width: 1100px; margin: 0 auto; }
  .section-label { font-size: 0.72rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); margin-bottom: 16px; }
  .section-heading { font-family: 'Instrument Serif', serif; font-size: clamp(2rem, 3vw, 2.75rem); line-height: 1.15; letter-spacing: -0.02em; color: var(--ink); margin-bottom: 16px; }
  .section-sub { font-size: 1rem; color: var(--mid); font-weight: 300; line-height: 1.7; max-width: 520px; }

  .ps-section { background: var(--ink); }
  .ps-section .section-label { color: #6ee7a0; }
  .ps-section .section-heading { color: #fff; }
  .ps-section .section-sub { color: #9aaba6; }
  .ps-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; margin-top: 60px; align-items: start; }
  .ps-col-label { font-size: 0.7rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 20px; padding-bottom: 12px; border-bottom: 1px solid #2a3530; }
  .ps-problem .ps-col-label { color: #f87171; }
  .ps-solution .ps-col-label { color: #6ee7a0; }
  .ps-item { display: flex; gap: 14px; margin-bottom: 20px; align-items: flex-start; }
  .ps-icon { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; margin-top: 2px; }
  .ps-problem .ps-icon { background: #2d1b1b; color: #f87171; }
  .ps-solution .ps-icon { background: #0f2a1e; color: #6ee7a0; }
  .ps-text { font-size: 0.925rem; color: #c5d0cc; line-height: 1.6; font-weight: 300; }
  .ps-text strong { color: #fff; font-weight: 500; }

  .steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin-top: 60px; }
  .step { position: relative; }
  .step-number { font-family: 'Instrument Serif', serif; font-size: 3rem; line-height: 1; color: var(--border); margin-bottom: 16px; }
  .step-icon { width: 44px; height: 44px; background: var(--accent2); border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-bottom: 16px; font-size: 1.25rem; }
  .step h3 { font-size: 1.05rem; font-weight: 500; color: var(--ink); margin-bottom: 10px; letter-spacing: -0.01em; }
  .step p { font-size: 0.9rem; color: var(--mid); line-height: 1.7; font-weight: 300; }
  .step-connector { position: absolute; top: 56px; right: -24px; color: var(--border); font-size: 1.2rem; z-index: 1; }

  .cta-section { background: var(--accent); text-align: center; padding: 96px 48px; }
  .cta-section .section-label { color: #a7f3c7; margin-bottom: 20px; }
  .cta-section h2 { font-family: 'Instrument Serif', serif; font-size: clamp(2rem, 3.5vw, 3rem); color: #fff; line-height: 1.15; letter-spacing: -0.02em; margin-bottom: 16px; }
  .cta-section h2 em { font-style: italic; }
  .cta-desc { font-size: 1rem; color: #a7f3c7; font-weight: 300; margin-bottom: 40px; }
  .cta-form { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; max-width: 460px; margin: 0 auto; }
  .cta-form input { flex: 1; min-width: 200px; padding: 13px 18px; border: none; border-radius: var(--radius); font-family: 'DM Sans', sans-serif; font-size: 0.9rem; color: var(--ink); background: #fff; outline: none; }
  .cta-form input::placeholder { color: #aaa; }
  .cta-form button { padding: 13px 24px; background: var(--ink); color: #fff; border: none; border-radius: var(--radius); font-family: 'DM Sans', sans-serif; font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: opacity 0.15s, transform 0.15s; }
  .cta-form button:hover { opacity: 0.85; transform: translateY(-1px); }
  .cta-note { font-size: 0.78rem; color: #6ee7a0; margin-top: 14px; }

  a:focus-visible, button:focus-visible, input:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: var(--radius); }
  .cta-section a:focus-visible, .cta-section button:focus-visible, .cta-section input:focus-visible { outline-color: #fff; }

  footer { background: var(--ink); padding: 40px 48px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; }
  .footer-logo { font-family: 'Instrument Serif', serif; font-size: 1.2rem; color: #fff; }
  .footer-copy { font-size: 0.78rem; color: #6b7472; }
  .footer-link { font-size: 0.78rem; color: #6b7472; text-decoration: none; transition: color 0.15s; }
  .footer-link:hover { color: #9aaba6; }

  @keyframes fadeUp { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
  .reveal { opacity: 0; transform: translateY(22px); transition: opacity 0.6s ease, transform 0.6s ease; }
  .reveal.visible { opacity: 1; transform: translateY(0); }
  .divider { height: 1px; background: var(--border); max-width: 1100px; margin: 0 auto; }

  @media (max-width: 768px) {
    nav { padding: 0 24px; }
    .hero { grid-template-columns: 1fr; padding: 100px 24px 60px; gap: 40px; }
    .hero-visual { order: -1; }
    section { padding: 72px 24px; }
    .ps-grid { grid-template-columns: 1fr; }
    .steps { grid-template-columns: 1fr; }
    .step-connector { display: none; }
    footer { padding: 32px 24px; flex-direction: column; align-items: flex-start; }
    .cta-section { padding: 72px 24px; }
    .dash-stat-row { grid-template-columns: repeat(2, 1fr); }
    .dash-stat-row .stat-card:last-child { grid-column: span 2; }
  }
</style>
</head>
<body>
<nav>
  <a href="#" class="nav-logo">Nextri</a>
  <a href="#contact" class="nav-cta">Get Early Access</a>
</nav>

<header class="hero">
  <div class="hero-copy">
    <span class="hero-eyebrow">For contractors</span>
    <h1>Marketing that <em>knows</em> your trade.</h1>
    <p class="hero-sub">Nextri is the first marketing platform built for contractors — showing you exactly which campaigns drove revenue, and when to run them.</p>
    <div class="hero-actions">
      <a href="#contact" class="btn-primary">Get Early Access</a>
      <a href="#how" class="btn-ghost">
        See how it works
        <svg width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
      </a>
    </div>
  </div>

  <div class="hero-visual" aria-hidden="true">
    <div class="dashboard">
      <div class="dash-header">
        <span class="dash-title">Revenue Attribution</span>
        <span class="dash-badge">↑ Live</span>
      </div>
      <div class="dash-stat-row">
        <div class="stat-card">
          <div class="stat-label">Revenue Tracked</div>
          <div class="stat-value">$84k</div>
          <div class="stat-delta">↑ 34% vs last month</div>
        </div>
        <div class="stat-card">
          <div class="stat-label">Best Channel</div>
          <div class="stat-value" style="font-size:1.1rem; padding-top:6px;">Google Ads</div>
          <div class="stat-delta">$3.10 cost/lead</div>
        </div>
        <div class="stat-card">
          <div class="stat-label">Ad Spend ROI</div>
          <div class="stat-value">9.2×</div>
          <div class="stat-delta">↑ from 5.1×</div>
        </div>
      </div>
      <div style="margin-bottom: 20px;">
        <div class="chart-label">Monthly revenue from marketing</div>
        <div class="bar-group">
          <div class="bar" style="height:35%"><span class="bar-month">Nov</span></div>
          <div class="bar" style="height:42%"><span class="bar-month">Dec</span></div>
          <div class="bar mid" style="height:55%"><span class="bar-month">Jan</span></div>
          <div class="bar mid" style="height:68%"><span class="bar-month">Feb</span></div>
          <div class="bar active" style="height:100%"><span class="bar-month">Mar</span></div>
          <div class="bar active" style="height:88%"><span class="bar-month">Apr</span></div>
        </div>
      </div>
      <div style="margin-top:28px;">
        <div class="chart-label">Active triggers</div>
        <div style="margin-top: 8px;">
          <span class="trigger-pill"><span class="trigger-dot"></span> Heat wave incoming</span>
          <span class="trigger-pill green"><span class="trigger-dot"></span> Spring surge active</span>
          <span class="trigger-pill blue"><span class="trigger-dot"></span> Local demand +18%</span>
        </div>
      </div>
    </div>
  </div>
</header>

<section class="ps-section">
  <div class="container">
    <div class="section-label reveal">The Problem</div>
    <h2 class="section-heading reveal">Contractors are flying blind.</h2>
    <p class="section-sub reveal">You're spending real money on ads with no real answers. Nextri was built to change that — with attribution logic designed for the trades, not tech companies.</p>
    <div class="ps-grid">
      <div class="ps-problem reveal">
        <div class="ps-col-label">Without Nextri</div>
        <div class="ps-item"><div class="ps-icon">✕</div><p class="ps-text"><strong>No idea what's working.</strong> Google Ads, Yelp, door hangers — all lumped together with zero clarity on which drove a call.</p></div>
        <div class="ps-item"><div class="ps-icon">✕</div><p class="ps-text"><strong>Spending in the wrong seasons.</strong> Running summer campaigns in February because no one told you demand spiked three weeks ago.</p></div>
        <div class="ps-item"><div class="ps-icon">✕</div><p class="ps-text"><strong>Generic marketing advice.</strong> Platforms built for e-commerce, not HVAC crews or roofing companies after a hailstorm.</p></div>
        <div class="ps-item"><div class="ps-icon">✕</div><p class="ps-text"><strong>ROI is a feeling.</strong> "It seems like Google is working" isn't a strategy — it's a guess.</p></div>
      </div>
      <div class="ps-solution reveal">
        <div class="ps-col-label">With Nextri</div>
        <div class="ps-item"><div class="ps-icon">✓</div><p class="ps-text"><strong>Revenue tied to every channel.</strong> See which campaign closed which job — down to the dollar.</p></div>
        <div class="ps-item"><div class="ps-icon">✓</div><p class="ps-text"><strong>Trade-specific triggers.</strong> Nextri watches weather events, seasonal cycles, and local demand signals your industry actually runs on.</p></div>
        <div class="ps-item"><div class="ps-icon">✓</div><p class="ps-text"><strong>Built for contractors.</strong> Not SaaS companies. We speak roofing, plumbing, HVAC, and landscaping.</p></div>
        <div class="ps-item"><div class="ps-icon">✓</div><p class="ps-text"><strong>Clear, confident decisions.</strong> Know when to spend more, when to pull back, and why — with data, not gut.</p></div>
      </div>
    </div>
  </div>
</section>

<section id="how">
  <div class="container">
    <div class="section-label reveal">How It Works</div>
    <h2 class="section-heading reveal">Three steps to knowing your numbers.</h2>
    <p class="section-sub reveal">Nextri connects your existing marketing channels, reads the signals your trade runs on, and shows you exactly what's generating revenue.</p>
    <div class="steps">
      <div class="step reveal">
        <div class="step-number">01</div>
        <div class="step-icon">🔗</div>
        <h3>Connect your channels</h3>
        <p>Link your Google Ads, SEO, Yelp, and any other platforms you're already running. No spreadsheets. Setup takes minutes.</p>
        <span class="step-connector">→</span>
      </div>
      <div class="step reveal">
        <div class="step-number">02</div>
        <div class="step-icon">📡</div>
        <h3>Nextri reads your triggers</h3>
        <p>We watch weather events, seasonal demand, and local market signals specific to your trade — and surface them in real time.</p>
        <span class="step-connector">→</span>
      </div>
      <div class="step reveal">
        <div class="step-number">03</div>
        <div class="step-icon">💰</div>
        <h3>See revenue by source</h3>
        <p>Every job closed gets attributed back to the campaign that drove it. Finally, a real number behind your marketing spend.</p>
      </div>
    </div>
  </div>
</section>

<div class="divider"></div>

<section class="cta-section" id="contact">
  <div class="section-label">Get Early Access</div>
  <h2>Stop guessing.<br><em>Start knowing.</em></h2>
  <p class="cta-desc">Join the waitlist and be the first to see Nextri in action.</p>
  <form class="cta-form" onsubmit="handleSubmit(event)">
    <input type="email" placeholder="your@email.com" required id="cta-email" name="email" autocomplete="email" aria-label="Email address">
    <button type="submit" id="cta-btn">Request Access</button>
  </form>
  <p class="cta-note" id="cta-msg">No spam. Just an early look at the platform.</p>
</section>

<footer>
  <span class="footer-logo">Nextri</span>
  <span class="footer-copy">© 2026 Nextri. All rights reserved.</span>
  <a href="mailto:hello@nextri.com" class="footer-link">hello@nextri.com</a>
</footer>

<script>
  const observer = new IntersectionObserver((entries) => {
    const visibleEntries = entries.filter(e => e.isIntersecting);
    visibleEntries.forEach((entry, i) => {
      setTimeout(() => entry.target.classList.add('visible'), i * 90);
      observer.unobserve(entry.target);
    });
  }, { threshold: 0.1 });
  document.querySelectorAll('.reveal').forEach(el => observer.observe(el));

  function handleSubmit(e) {
    e.preventDefault();
    const email = document.getElementById('cta-email').value;
    const msg = document.getElementById('cta-msg');
    const btn = document.getElementById('cta-btn');
    btn.textContent = "You're on the list ✓";
    btn.style.background = '#0f2a1e';
    btn.disabled = true;
    msg.textContent = "We'll be in touch at " + email + ". Talk soon.";
    document.getElementById('cta-email').value = '';
  }
</script>
</body>
</html>