NOVA

NOVA Home

const SHOPIFY_HTML = `<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>NOVA — Leap. Create. Risk.</title>
  <meta name="description" content="NOVA — Luxury streetwear for those who leap before they look. Wear the coordinates of your ambition.">
  <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=Bebas+Neue&family=Inter:wght@300;400;500&family=JetBrains+Mono:wght@300;400&display=swap" rel="stylesheet">
  <style>
    *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
    :root {
      --ink: #050505;
      --bone: #F2F0ED;
      --ore: #D4AF37;
      --bone-dim: rgba(242,240,237,0.5);
      --bone-faint: rgba(242,240,237,0.2);
      --bone-ghost: rgba(242,240,237,0.04);
      --ore-dim: rgba(212,175,55,0.5);
    }
    html { scroll-behavior: smooth; }
    body { background: var(--ink); color: var(--bone); font-family: 'Inter', sans-serif; overflow-x: hidden; }
    .font-display { font-family: 'Bebas Neue', sans-serif; }
    .font-mono { font-family: 'JetBrains Mono', monospace; }
    .font-body { font-family: 'Inter', sans-serif; }

    /* ===== SCROLL PROGRESS ===== */
    #scroll-progress {
      position: fixed; top: 0; left: 0; height: 2px; background: var(--ore);
      z-index: 9999; width: 0%; transition: width 0.1s linear;
    }

    /* ===== HERO ===== */
    .hero { position: relative; height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; }
    .hero canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
    .hero-gradient { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 70%, var(--ink) 100%); z-index: 1; }
    .hero-content { position: relative; z-index: 10; text-align: center; padding: 0 1rem; }
    .hero-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(5rem, 18vw, 16rem); color: var(--bone); line-height: 0.85; letter-spacing: 0.08em;
      animation: heroIn 1.2s cubic-bezier(0.16,1,0.3,1) forwards; opacity: 0; }
    @keyframes heroIn { from { opacity: 0; transform: translateY(40px); letter-spacing: 0.3em; } to { opacity: 1; transform: translateY(0); letter-spacing: 0.08em; } }
    .hero-sub { font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--ore); margin-top: 1.5rem;
      animation: fadeIn 0.8s 0.6s forwards; opacity: 0; }
    .hero-cta { display: inline-block; margin-top: 3rem; padding: 0.75rem 2.5rem; border: 1px solid var(--ore); color: var(--ore); font-family: 'Bebas Neue', sans-serif;
      font-size: 1.1rem; letter-spacing: 0.2em; text-decoration: none; transition: all 0.4s;
      animation: fadeIn 0.6s 1s forwards; opacity: 0; }
    .hero-cta:hover { background: var(--ore); color: var(--ink); }
    .hero-coord { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.4em; color: var(--bone); opacity: 0; margin-top: 1.5rem;
      animation: fadeIn 0.6s 1.4s forwards; }
    @keyframes fadeIn { to { opacity: 1; } }
    .hero-coord { animation-fill-mode: forwards; }
    .hero-coord { opacity: 0; }
    @keyframes fadeInDim { to { opacity: 0.3; } }
    .hero-coord { animation-name: fadeInDim; }
    .scroll-indicator { position: absolute; bottom: 2.5rem; left: 50%; transform: translateX(-50%); z-index: 10; text-align: center; opacity: 0; animation: fadeInDim 0.6s 1.8s forwards; cursor: pointer; }
    .scroll-indicator span { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.4em; text-transform: uppercase; color: var(--bone); display: block; margin-bottom: 0.5rem; }
    .scroll-arrow { display: inline-block; animation: bounce 1.8s infinite ease-in-out; color: var(--bone); font-size: 1.2rem; }
    @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } }

    /* ===== MANIFESTO ===== */
    .manifesto { padding: 8rem 1.5rem; }
    @media (min-width: 768px) { .manifesto { padding: 12rem 4rem; } }
    .manifesto-line { width: 3rem; height: 1px; background: var(--ore); margin-bottom: 4rem; }
    .manifesto h2 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2rem, 6vw, 5.5rem); line-height: 0.95; color: var(--bone); margin-bottom: 0.25rem; }
    .manifesto-coord { display: flex; align-items: center; gap: 1.5rem; margin-top: 4rem; }
    .manifesto-coord .line { width: 3rem; height: 1px; background: var(--ore); }
    .manifesto-coord span { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; color: var(--ore-dim); }

    /* ===== PRODUCTS ===== */
    .products { padding: 6rem 1.5rem; }
    @media (min-width: 768px) { .products { padding: 10rem 4rem; } }
    .section-label { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
    .section-label .line { width: 2rem; height: 1px; background: var(--ore); }
    .section-label span { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.4em; text-transform: uppercase; color: var(--ore-dim); }
    .section-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.5rem, 5vw, 4.5rem); color: var(--bone); letter-spacing: 0.05em; margin-bottom: 3rem; }
    .product-grid { display: flex; gap: 1.5rem; overflow-x: auto; padding-bottom: 1rem; scrollbar-width: none; -ms-overflow-style: none; }
    .product-grid::-webkit-scrollbar { display: none; }
    .product-card { flex-shrink: 0; width: 85vw; max-width: 380px; position: relative; overflow: hidden; border: 1px solid rgba(242,240,237,0.06); transition: all 0.5s; cursor: pointer; }
    .product-card:hover { border-color: rgba(212,175,55,0.4); transform: translateY(-4px); box-shadow: 0 0 40px rgba(212,175,55,0.08); }
    .product-card img { width: 100%; aspect-ratio: 3/4; object-fit: cover; transition: transform 0.7s; }
    .product-card:hover img { transform: scale(1.05); }
    .product-overlay { position: absolute; bottom: 0; left: 0; right: 0; padding: 1.5rem; background: linear-gradient(to top, rgba(5,5,5,0.9), transparent); }
    .product-coord { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; color: var(--ore-dim); margin-bottom: 0.5rem; opacity: 0; transition: opacity 0.4s; }
    .product-card:hover .product-coord { opacity: 1; }
    .product-name { font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem; color: var(--bone); letter-spacing: 0.05em; }
    .product-bottom { display: flex; align-items: center; justify-content: space-between; margin-top: 0.75rem; }
    .product-price { font-family: 'Inter', sans-serif; font-size: 0.875rem; color: var(--bone-dim); }
    .product-view { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; padding: 0.5rem 1rem; border: 1px solid var(--ore); color: var(--ore); text-decoration: none; transition: all 0.3s; opacity: 0; transform: translateY(8px); }
    .product-card:hover .product-view { opacity: 1; transform: translateY(0); }
    .product-view:hover { background: var(--ore); color: var(--ink); }

    /* ===== STORY ===== */
    .story { padding: 8rem 1.5rem; position: relative; }
    @media (min-width: 768px) { .story { padding: 12rem 4rem; } }
    .story-divider { position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--bone-ghost); }
    .story-grid { display: grid; grid-template-columns: 1fr; gap: 4rem; }
    @media (min-width: 1024px) { .story-grid { grid-template-columns: 1fr 1fr; gap: 6rem; align-items: center; } }
    .story-coords { font-family: 'Bebas Neue', sans-serif; line-height: 0.85; color: rgba(212,175,55,0.06); }
    .story-coords div { font-size: clamp(3.5rem, 8vw, 10rem); }
    .story-coords-label { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; color: var(--bone-faint); margin-top: 1rem; }
    .story-text p { font-family: 'Inter', sans-serif; font-size: clamp(1rem, 1.8vw, 1.25rem); line-height: 1.6; color: rgba(242,240,237,0.75); margin-bottom: 0.25rem; }
    .story-tagline { font-family: 'Bebas Neue', sans-serif; font-size: 0.875rem; letter-spacing: 0.2em; color: var(--ore); margin-top: 3rem; }

    /* ===== SOCIAL ===== */
    .social { padding: 5rem 0; overflow: hidden; }
    .social-header { padding: 0 1.5rem; margin-bottom: 2.5rem; display: flex; align-items: center; justify-content: space-between; }
    @media (min-width: 768px) { .social-header { padding: 0 4rem; margin-bottom: 4rem; } }
    .social-cta { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; padding: 0.5rem 1.25rem; border: 1px solid var(--ore); color: var(--ore); text-decoration: none; transition: all 0.3s; }
    .social-cta:hover { background: var(--ore); color: var(--ink); }
    .marquee-wrap { overflow: hidden; width: 100%; }
    .marquee-track { display: flex; gap: 0.75rem; animation: marquee 40s linear infinite; width: max-content; }
    @keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
    .marquee-img { width: 200px; height: 200px; object-fit: cover; filter: grayscale(1); transition: filter 0.5s; flex-shrink: 0; }
    @media (min-width: 768px) { .marquee-img { width: 260px; height: 260px; } }
    .marquee-img:hover { filter: grayscale(0); }

    /* ===== EMAIL ===== */
    .email-section { padding: 8rem 1.5rem; text-align: center; position: relative; }
    @media (min-width: 768px) { .email-section { padding: 12rem 4rem; } }
    .email-section .divider { position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--bone-ghost); }
    .email-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.5rem, 5vw, 4.5rem); color: var(--bone); letter-spacing: 0.08em; }
    .email-sub { font-family: 'Inter', sans-serif; font-size: 0.875rem; color: var(--bone-dim); margin-top: 1rem; }
    .email-form { margin-top: 3rem; max-width: 32rem; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; gap: 1rem; }
    @media (min-width: 640px) { .email-form { flex-direction: row; align-items: flex-end; gap: 0; } }
    .email-input { flex: 1; background: transparent; border: none; border-bottom: 1px solid var(--bone-faint); padding: 0.75rem 0; font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.2em; color: var(--bone); outline: none; transition: border-color 0.3s; }
    .email-input::placeholder { color: rgba(242,240,237,0.3); }
    .email-input:focus { border-bottom-color: var(--ore); }
    .email-btn { margin-left: 0; padding: 0.75rem 2rem; background: var(--ore); color: var(--ink); border: 1px solid var(--ore); font-family: 'Bebas Neue', sans-serif; font-size: 0.875rem; letter-spacing: 0.2em; cursor: pointer; transition: all 0.3s; }
    @media (min-width: 640px) { .email-btn { margin-left: 1.5rem; } }
    .email-btn:hover { background: transparent; color: var(--ore); }
    .email-coord { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.4em; color: var(--bone); opacity: 0.2; margin-top: 3rem; }

    /* ===== FOOTER ===== */
    .site-footer { padding: 4rem 1.5rem; position: relative; }
    @media (min-width: 768px) { .site-footer { padding: 6rem 4rem; } }
    .site-footer .divider { position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--bone-ghost); }
    .footer-top { display: flex; flex-direction: column; gap: 2.5rem; }
    @media (min-width: 768px) { .footer-top { flex-direction: row; align-items: center; justify-content: space-between; } }
    .footer-logo { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; color: var(--bone); letter-spacing: 0.1em; }
    .footer-tagline { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; color: var(--bone-faint); margin-top: 0.5rem; }
    .footer-nav { display: flex; flex-wrap: wrap; gap: 1.5rem; }
    @media (min-width: 768px) { .footer-nav { gap: 2.5rem; } }
    .footer-nav a { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--bone-dim); text-decoration: none; transition: color 0.3s; }
    .footer-nav a:hover { color: var(--ore); }
    .footer-top-btn { display: flex; align-items: center; gap: 0.75rem; cursor: pointer; background: none; border: none; }
    .footer-top-btn span { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; color: rgba(242,240,237,0.3); transition: color 0.3s; }
    .footer-top-btn:hover span { color: var(--ore); }
    .footer-top-btn .arrow { width: 2rem; height: 2rem; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(242,240,237,0.15); color: rgba(242,240,237,0.3); transition: all 0.3s; font-size: 0.875rem; }
    .footer-top-btn:hover .arrow { border-color: var(--ore); color: var(--ore); }
    .footer-bottom { margin-top: 4rem; padding-top: 2rem; border-top: 1px solid var(--bone-ghost); display: flex; flex-direction: column; gap: 1rem; }
    @media (min-width: 640px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }
    .footer-bottom p { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.2em; }
    .footer-copy { color: var(--bone-faint); }
    .footer-coord { color: rgba(242,240,237,0.12); }

    /* ===== REVEAL ANIMATION ===== */
    .reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1); }
    .reveal.visible { opacity: 1; transform: translateY(0); }
    .reveal-blur { opacity: 0; transform: translateY(30px); filter: blur(8px); transition: all 0.8s cubic-bezier(0.16,1,0.3,1); }
    .reveal-blur.visible { opacity: 1; transform: translateY(0); filter: blur(0); }
  </style>
</head>
<body>
  <!-- Scroll Progress -->
  <div id="scroll-progress"></div>

  <!-- HERO -->
  <section class="hero">
    <canvas id="hero-canvas"></canvas>
    <div class="hero-gradient"></div>
    <div class="hero-content">
      <h1 class="hero-title">NOVA</h1>
      <p class="hero-sub">Wear the coordinates of your ambition.</p>
      <a href="/" class="hero-cta">SHOP NOW</a>
      <p class="hero-coord">27.9881°N 86.9250°E</p>
    </div>
    <div class="scroll-indicator" onclick="window.scrollTo({top:window.innerHeight,behavior:'smooth'})">
      <span>Scroll</span>
      <div class="scroll-arrow">&#8964;</div>
    </div>
  </section>

  <!-- MANIFESTO -->
  <section class="manifesto">
    <div class="manifesto-line reveal"></div>
    <div style="max-width:72rem">
      <h2 class="reveal-blur" style="transition-delay:0s">Built for those who leap</h2>
      <h2 class="reveal-blur" style="transition-delay:0.15s">before they look.</h2>
      <h2 class="reveal-blur" style="transition-delay:0.3s">Who create before</h2>
      <h2 class="reveal-blur" style="transition-delay:0.45s">they're ready.</h2>
      <h2 class="reveal-blur" style="transition-delay:0.6s">Who risk everything</h2>
      <h2 class="reveal-blur" style="transition-delay:0.75s">for the life they want.</h2>
    </div>
    <div class="manifesto-coord reveal" style="transition-delay:1.2s">
      <div class="line"></div>
      <span>27.9881°N 86.9250°E</span>
    </div>
  </section>

  <!-- PRODUCTS -->
  <section class="products">
    <div class="section-label reveal">
      <div class="line"></div>
      <span>Collection</span>
    </div>
    <h2 class="section-title reveal" style="transition-delay:0.2s">THE ARTIFACTS</h2>
    <div class="product-grid">
      <div class="product-card reveal" style="transition-delay:0s">
        <img src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/c1f8cc7cd_NOVABACKS.webp" alt="Leap of Faith Tee" loading="lazy">
        <div class="product-overlay">
          <p class="product-coord">27.9881°N</p>
          <h3 class="product-name">Leap of Faith Tee</h3>
          <div class="product-bottom">
            <span class="product-price">$28</span>
            <a href="/" class="product-view">View</a>
          </div>
        </div>
      </div>
      <div class="product-card reveal" style="transition-delay:0.2s">
        <img src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/65b77baf2_unisex-garment-dyed-sweatshirt-pepper-back-6a2306ebbf722-removebg-preview.png" alt="Create Your Legacy Crewneck" loading="lazy">
        <div class="product-overlay">
          <p class="product-coord">27.9881°N</p>
          <h3 class="product-name">Create Your Legacy Crewneck</h3>
          <div class="product-bottom">
            <span class="product-price">$43</span>
            <a href="/" class="product-view">View</a>
          </div>
        </div>
      </div>
      <div class="product-card reveal" style="transition-delay:0.4s">
        <img src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/50babdf57_unisex-garment-dyed-lightweight-fleece-hooded-sweatshirt-i-comfort-colors-1467-black-back-6a230822dff49-removebg-preview.png" alt="Take The Risk Hoodie" loading="lazy">
        <div class="product-overlay">
          <p class="product-coord">27.9881°N</p>
          <h3 class="product-name">Take The Risk Hoodie</h3>
          <div class="product-bottom">
            <span class="product-price">$44</span>
            <a href="/" class="product-view">View</a>
          </div>
        </div>
      </div>
    </div>
  </section>

  <!-- STORY -->
  <section class="story">
    <div class="story-divider"></div>
    <div class="story-grid">
      <div class="story-coords reveal">
        <div>27.9881°N</div>
        <div>86.9250°E</div>
        <p class="story-coords-label">EVEREST BASE CAMP — 5,364M</p>
      </div>
      <div class="story-text">
        <div class="section-label reveal">
          <div class="line"></div>
          <span>The Story</span>
        </div>
        <div style="margin-top:2.5rem">
          <p class="reveal-blur" style="transition-delay:0.3s">NOVA was built on one idea —</p>
          <p class="reveal-blur" style="transition-delay:0.42s">that your coordinates define</p>
          <p class="reveal-blur" style="transition-delay:0.54s">where you're going,</p>
          <p class="reveal-blur" style="transition-delay:0.66s">not where you've been.</p>
          <p class="reveal-blur" style="transition-delay:0.78s">&nbsp;</p>
          <p class="reveal-blur" style="transition-delay:0.9s">Every piece carries the elevation</p>
          <p class="reveal-blur" style="transition-delay:1.02s">of Everest Base Camp.</p>
          <p class="reveal-blur" style="transition-delay:1.14s">Because that's what we're chasing.</p>
        </div>
        <p class="story-tagline reveal" style="transition-delay:1.6s">LEAP. CREATE. RISK.</p>
      </div>
    </div>
  </section>

  <!-- SOCIAL -->
  <section class="social">
    <div class="social-header">
      <div class="section-label" style="margin-bottom:0">
        <div class="line"></div>
        <span>@novaly.us</span>
      </div>
      <a href="https://instagram.com/novaly.us" target="_blank" rel="noopener noreferrer" class="social-cta">Follow on Instagram</a>
    </div>
    <div class="marquee-wrap">
      <div class="marquee-track">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/c1f8cc7cd_NOVABACKS.webp" alt="NOVA Leap of Faith Tee">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/65b77baf2_unisex-garment-dyed-sweatshirt-pepper-back-6a2306ebbf722-removebg-preview.png" alt="NOVA Create Your Legacy Crewneck">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/50babdf57_unisex-garment-dyed-lightweight-fleece-hooded-sweatshirt-i-comfort-colors-1467-black-back-6a230822dff49-removebg-preview.png" alt="NOVA Take The Risk Hoodie">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/c1f8cc7cd_NOVABACKS.webp" alt="NOVA Leap of Faith Tee">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/65b77baf2_unisex-garment-dyed-sweatshirt-pepper-back-6a2306ebbf722-removebg-preview.png" alt="NOVA Create Your Legacy Crewneck">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/50babdf57_unisex-garment-dyed-lightweight-fleece-hooded-sweatshirt-i-comfort-colors-1467-black-back-6a230822dff49-removebg-preview.png" alt="NOVA Take The Risk Hoodie">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/c1f8cc7cd_NOVABACKS.webp" alt="NOVA Leap of Faith Tee">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/65b77baf2_unisex-garment-dyed-sweatshirt-pepper-back-6a2306ebbf722-removebg-preview.png" alt="NOVA Create Your Legacy Crewneck">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/50babdf57_unisex-garment-dyed-lightweight-fleece-hooded-sweatshirt-i-comfort-colors-1467-black-back-6a230822dff49-removebg-preview.png" alt="NOVA Take The Risk Hoodie">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/c1f8cc7cd_NOVABACKS.webp" alt="NOVA Leap of Faith Tee">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/65b77baf2_unisex-garment-dyed-sweatshirt-pepper-back-6a2306ebbf722-removebg-preview.png" alt="NOVA Create Your Legacy Crewneck">
        <img class="marquee-img" src="https://media.base44.com/images/public/6a35862c76bc45214a5dcd29/50babdf57_unisex-garment-dyed-lightweight-fleece-hooded-sweatshirt-i-comfort-colors-1467-black-back-6a230822dff49-removebg-preview.png" alt="NOVA Take The Risk Hoodie">
      </div>
    </div>
  </section>

  <!-- EMAIL CAPTURE -->
  <section class="email-section">
    <div class="divider"></div>
    <h2 class="email-title reveal">JOIN THE MOVEMENT</h2>
    <p class="email-sub reveal" style="transition-delay:0.3s">Drop access. New releases. Early discounts.</p>
    <form class="email-form reveal" style="transition-delay:0.5s" onsubmit="event.preventDefault(); this.querySelector('input').value=''; alert('Welcome to the movement.');">
      <input type="email" class="email-input" placeholder="YOUR EMAIL" required>
      <button type="submit" class="email-btn">JOIN</button>
    </form>
    <p class="email-coord reveal" style="transition-delay:0.8s">27.9881°N 86.9250°E</p>
  </section>

  <!-- FOOTER -->
  <footer class="site-footer">
    <div class="divider"></div>
    <div class="footer-top">
      <div>
        <div class="footer-logo">NOVA</div>
        <p class="footer-tagline">LEAP. CREATE. RISK.</p>
      </div>
      <nav class="footer-nav">
        <a href="/">Shop</a>
        <a href="/pages/about">About</a>
        <a href="https://instagram.com/novaly.us" target="_blank" rel="noopener noreferrer">Instagram</a>
        <a href="mailto:contact@novaly.us">Contact</a>
      </nav>
      <button class="footer-top-btn" onclick="window.scrollTo({top:0,behavior:'smooth'})">
        <span>Back to Base Camp</span>
        <div class="arrow">&#8593;</div>
      </button>
    </div>
    <div class="footer-bottom">
      <p class="footer-copy">&copy; 2025 NOVA. All rights reserved.</p>
      <p class="footer-coord">27.9881°N 86.9250°E</p>
    </div>
  </footer>

  <script>
    // Scroll Progress
    window.addEventListener('scroll', function() {
      var h = document.documentElement.scrollHeight - window.innerHeight;
      var s = window.scrollY;
      document.getElementById('scroll-progress').style.width = (s / h * 100) + '%';
    });

    // Scroll Reveal
    var obs = new IntersectionObserver(function(entries) {
      entries.forEach(function(e) { if (e.isIntersecting) { e.target.classList.add('visible'); } });
    }, { threshold: 0.15, rootMargin: '-50px' });
    document.querySelectorAll('.reveal, .reveal-blur').forEach(function(el) { obs.observe(el); });

    // WebGL Hero Shader
    (function() {
      var c = document.getElementById('hero-canvas');
      if (!c) return;
      var gl = c.getContext('webgl');
      if (!gl) return;
      function resize() { c.width = window.innerWidth; c.height = window.innerHeight; gl.viewport(0, 0, c.width, c.height); }
      resize(); window.addEventListener('resize', resize);
      var vs = 'attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}';
      var fs = 'precision mediump float;uniform float t;uniform vec2 r;' +
        'float n(vec2 p){return fract(sin(dot(p,vec2(12.9898,78.233)))*43758.5453);}' +
        'float sn(vec2 p){vec2 i=floor(p),f=fract(p);f=f*f*(3.-2.*f);return mix(mix(n(i),n(i+vec2(1,0)),f.x),mix(n(i+vec2(0,1)),n(i+vec2(1,1)),f.x),f.y);}' +
        'float fb(vec2 p){float v=0.,a=.5;for(int i=0;i<5;i++){v+=a*sn(p);p*=2.;a*=.5;}return v;}' +
        'void main(){vec2 u=gl_FragCoord.xy/r;float T=t*.15;vec2 q=vec2(fb(u*3.+T*.3),fb(u*3.+vec2(1.7,9.2)+T*.2));vec2 R=vec2(fb(u*4.+q+vec2(8.3,2.8)+T*.15),fb(u*4.+q+vec2(5.3,3.1)+T*.1));float f=fb(u*2.+R);vec3 col=mix(vec3(.02),vec3(.08,.02,.12),f*.6);col=mix(col,vec3(.83,.69,.22),pow(f,4.)*.08);col+=vec3(f*f*.03);gl_FragColor=vec4(col,1);}';
      function cs(type, src) { var s = gl.createShader(type); gl.shaderSource(s, src); gl.compileShader(s); return s; }
      var p = gl.createProgram(); gl.attachShader(p, cs(gl.VERTEX_SHADER, vs)); gl.attachShader(p, cs(gl.FRAGMENT_SHADER, fs)); gl.linkProgram(p); gl.useProgram(p);
      var b = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, b); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,-1,1,-1,-1,1,1,1]), gl.STATIC_DRAW);
      var al = gl.getAttribLocation(p, 'a'); gl.enableVertexAttribArray(al); gl.vertexAttribPointer(al, 2, gl.FLOAT, false, 0, 0);
      var tl = gl.getUniformLocation(p, 't'), rl = gl.getUniformLocation(p, 'r'), s = Date.now();
      (function draw() { gl.uniform1f(tl, (Date.now() - s) / 1000); gl.uniform2f(rl, c.width, c.height); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); requestAnimationFrame(draw); })();
    })();
  </script>
</body>
</html>`;

export default function ShopifyExport() {
  const handleDownload = () => {
    const blob = new Blob([SHOPIFY_HTML], { type: "text/html" });
    const url = URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = url;
    a.download = "nova-landing-page.html";
    a.click();
    URL.revokeObjectURL(url);
  };

  return (
    <div className="min-h-screen flex items-center justify-center px-6" style={{ background: "#050505" }}>
      <div className="text-center max-w-lg">
        <h1 className="font-display text-5xl md:text-6xl tracking-[0.08em] mb-4" style={{ color: "#F2F0ED" }}>
          NOVA
        </h1>
        <p className="font-mono text-xs tracking-[0.3em] mb-2" style={{ color: "#D4AF37" }}>
          SHOPIFY EXPORT
        </p>
        <p className="font-body text-sm mt-6 leading-relaxed" style={{ color: "rgba(242,240,237,0.6)" }}>
          Download the complete NOVA landing page as a standalone HTML file.
          This file includes the WebGL shader, all animations, and responsive styling
          ready to paste into a Shopify custom page or use as a theme section template.
          All images are already embedded via direct URLs. Just update the product links to point to your Shopify product pages.
        </p>
        <button
          onClick={handleDownload}
          className="mt-10 px-10 py-3 border font-display text-lg tracking-[0.2em] transition-all duration-500 hover:bg-[#D4AF37] hover:text-[#050505] cursor-pointer"
          style={{ borderColor: "#D4AF37", color: "#D4AF37" }}
        >
          DOWNLOAD HTML
        </button>
        <p className="font-mono text-[10px] tracking-[0.4em] mt-8 opacity-20" style={{ color: "#F2F0ED" }}>
          27.9881°N 86.9250°E
        </p>
      </div>
    </div>
  );
}