<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Vyira — A New Era of Luxury</title>

  <meta name="description" content="Vyira. A world-class luxury brand. Coming soon." />


  <!-- Open Graph / SEO -->

  <meta property="og:title" content="Vyira — Coming Soon" />

  <meta property="og:description" content="A new era of luxury is arriving. Join the inner circle for early access." />

  <meta property="og:type" content="website" />

  <meta property="og:image" content="/og-image.jpg" />

  <meta property="og:url" content="https://vyira.example" />

  <meta name="theme-color" content="#0b0b0f" />


  <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=Inter:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap" rel="stylesheet" />


  <style>

    :root {

      --bg-dark: #0b0b0f;

      --bg-darker: #08080b;

      --text: #e7e7ea;

      --muted: #a9a9b3;

      --gold: #d4af37;

      --gold-2: #f2d57e;

      --card: #121217cc; /* translucent */

      --ring: #ffffff1a;

      --success: #7ef2b2;

      --error: #ff8a8a;

    }

    * { box-sizing: border-box; }

    html, body { height: 100%; }

    body {

      margin: 0;

      color: var(--text);

      font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;

      background: radial-gradient(1200px 800px at 75% 15%, #1d1d22 0%, var(--bg-dark) 55%),

                  radial-gradient(800px 600px at 20% 80%, #15151a 0%, var(--bg-darker) 60%),

                  linear-gradient(180deg, #0c0c10, #0a0a0d);

      overflow-x: hidden;

    }

    /* Subtle animated gold shimmer */

    .shimmer {

      position: fixed; inset: 0; pointer-events: none;

      background: conic-gradient(from 0deg at 50% 50%, #0000 0 10%, #ffffff08 11% 13%, #0000 14% 100%);

      mix-blend-mode: overlay;

      animation: spin 16s linear infinite;

      filter: blur(2px);

    }

    @keyframes spin { to { transform: rotate(1turn); } }


    .container {

      max-width: 1100px; margin: 0 auto; padding: 32px 24px 80px;

    }


    header {

      display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 8px 0 24px;

      border-bottom: 1px solid var(--ring);

    }

    .logo {

      display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: var(--text);

      letter-spacing: 0.18em;

    }

    .logo-mark {

      width: 36px; height: 36px; border-radius: 50%;

      background: radial-gradient(100% 100% at 30% 30%, var(--gold-2), var(--gold));

      box-shadow: 0 0 0 1px #2b2b2f, 0 10px 30px #00000066, inset 0 1px 0 #ffffff33;

    }

    .logo-text {

      font-family: "Playfair Display", serif; font-weight: 700; font-size: 20px;

    }

    .nav { display: flex; gap: 18px; }

    .nav a { color: var(--muted); text-decoration: none; font-size: 14px; }

    .nav a:hover { color: var(--text); }


    .hero {

      display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 36px; align-items: center; padding: 56px 0 24px;

    }

    @media (max-width: 900px) {

      .hero { grid-template-columns: 1fr; padding-top: 32px; }

    }

    .headline {

      font-family: "Playfair Display", serif; font-weight: 700; font-size: clamp(34px, 5vw, 64px);

      letter-spacing: 0.02em; line-height: 1.05; margin: 0 0 12px;

      background: linear-gradient(180deg, #fff, #cfcfe0 55%, #9a9ab0);

      -webkit-background-clip: text; background-clip: text; color: transparent;

    }

    .tagline { color: var(--muted); font-size: clamp(16px, 2.2vw, 18px); line-height: 1.6; margin: 0 0 28px; }

    .badge { display: inline-flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 999px; background: #141419; border: 1px solid var(--ring); color: #cfcfe0; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; }

    .badge-dot { width: 8px; height: 8px; border-radius: 50%; background: linear-gradient(180deg, var(--gold-2), var(--gold)); box-shadow: 0 0 0 1px #3a2a00aa; }


    .card {

      background: var(--card); border: 1px solid var(--ring); border-radius: 20px; padding: 24px; backdrop-filter: blur(8px);

      box-shadow: 0 10px 30px #00000066, inset 0 1px 0 #ffffff14;

    }


    .form { display: flex; gap: 12px; margin-top: 8px; }

    .form input[type="email"] {

      flex: 1; padding: 14px 16px; border-radius: 14px; border: 1px solid #2a2a32; background: #0f0f14; color: var(--text);

      outline: none; transition: box-shadow .2s, border-color .2s;

    }

    .form input[type="email"]:focus { border-color: var(--gold-2); box-shadow: 0 0 0 4px #d4af3722; }

    /* Honeypot field (hidden from humans) */

    .hp { position: absolute; left: -9999px; }


    .btn {

      padding: 14px 18px; border-radius: 14px; border: 0; cursor: pointer; font-weight: 600; letter-spacing: 0.04em;

      background: linear-gradient(180deg, var(--gold-2), var(--gold)); color: #1b1b1f; box-shadow: 0 6px 18px #d4af3730, inset 0 1px 0 #fff5;

    }

    .btn:hover { filter: brightness(1.04); transform: translateY(-1px); }


    .side-visual {

      position: relative; min-height: 380px; border-radius: 20px; overflow: hidden; border: 1px solid var(--ring);

      background:

        radial-gradient(120px 80px at 20% 30%, #ffffff0a, #0000 70%),

        radial-gradient(200px 140px at 70% 60%, #ffffff0a, #0000 70%),

        linear-gradient(135deg, #111114, #0b0b0f 45% 55%, #0d0d12);

    }

    .silk {

      position: absolute; inset: 0; background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="800"><defs><linearGradient id="g" x1="0" x2="1"><stop stop-color="%23d4af37" offset="0"/><stop stop-color="%23f2d57e" offset="1"/></linearGradient></defs><path d="M0,560 C200,440 400,620 600,540 C800,460 1000,520 1200,460 L1200,800 L0,800 Z" fill="url(%23g)" opacity="0.16"/></svg>') center/cover no-repeat; filter: blur(12px); mix-blend-mode: screen; animation: float 12s ease-in-out infinite alternate; }

    @keyframes float { 50% { transform: translateY(-6px) scale(1.01); } }


    .phrases { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; margin-top: 28px; }

    .phrase { padding: 16px 18px; border-radius: 16px; border: 1px solid var(--ring); background: #0f0f1455; color: #d6d6de; font-size: 14px; }

    @media (max-width: 900px) { .phrases { grid-template-columns: 1fr; } }


    footer { margin-top: 56px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--ring); padding-top: 20px; color: var(--muted); font-size: 13px; }

    .social { display: flex; gap: 12px; }

    .social a { display: inline-flex; padding: 10px; border: 1px solid var(--ring); border-radius: 12px; color: var(--muted); text-decoration: none; }

    .social a:hover { color: var(--text); border-color: #3a3a45; }


    .alert { display: none; margin-top: 12px; font-size: 14px; }

    .alert.show { display: block; }

  </style>

</head>

<body>


  <div class="shimmer" aria-hidden="true"></div>


  <div class="container">

    <header>

      <a class="logo" href="#" aria-label="Vyira home">

        <span class="logo-mark" aria-hidden="true"></span>

        <span class="logo-text">VYIRA</span>

      </a>

      <nav class="nav" aria-label="Secondary">

        <a href="#story">Story</a>

        <a href="#contact">Contact</a>

      </nav>

    </header>


    <main class="hero">

      <section>

        <div class="badge"><span class="badge-dot"></span> COMING SOON</div>

        <h1 class="headline">A New Era of Luxury</h1>

        <p class="tagline">Crafted for the discerning few. Where innovation meets timeless elegance. Join the inner circle for early access to Vyira’s premiere.</p>


        <div class="card" role="region" aria-label="Join the inner circle">

          <form class="form" id="joinForm">

            <label class="hp" for="company">Company</label>

            <input class="hp" type="text" id="company" name="company" autocomplete="organization" tabindex="-1" />


            <input type="email" name="email" id="email" placeholder="Enter your email for early access" autocomplete="email" required aria-label="Email" />

            <button class="btn" type="submit">Join the Inner Circle</button>

          </form>

          <div id="formAlert" class="alert" role="status" aria-live="polite"></div>

        </div>


        <div class="phrases" aria-hidden="true">

          <div class="phrase">Finely tuned. Uncompromising by design.</div>

          <div class="phrase">Materials elevated to art.</div>

          <div class="phrase">Limited availability. Infinite presence.</div>

        </div>

      </section>


      <aside class="side-visual" aria-hidden="true">

        <div class="silk"></div>

      </aside>

    </main>


    <footer id="contact">

      <span>© <span id="year"></span> Vyira. All rights reserved.</span>

      <div class="social">

        <a href="#" aria-label="Instagram" title="Instagram" rel="noopener">

          <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M7 2C4.2 2 2 4.2 2 7v10c0 2.8 2.2 5 5 5h10c2.8 0 5-2.2 5-5V7c0-2.8-2.2-5-5-5H7zm0 2h10c1.7 0 3 1.3 3 3v10c0 1.7-1.3 3-3 3H7c-1.7 0-3-1.3-3-3V7c0-1.7 1.3-3 3-3zm10.5 1.8a1.2 1.2 0 100 2.4 1.2 1.2 0 000-2.4zM12 7a5 5 0 100 10 5 5 0 000-10zm0 2a3 3 0 110 6 3 3 0 010-6z"/></svg>

        </a>

        <a href="#" aria-label="X" title="X" rel="noopener">

          <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M3 3h3.7l4.6 6.4L16.7 3H21l-7 8.9L21 21h-3.8l-5-6.9L6.2 21H3l7.5-9.5L3 3z"/></svg>

        </a>

        <a href="mailto:hello@vyira.example" aria-label="Email" title="Email">

          <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M4 4h16a2 2 0 012 2v12a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2zm0 2v.5l8 5 8-5V6H4zm16 12V9.7l-8 5-8-5V18h16z"/></svg>

        </a>

      </div>

    </footer>

  </div>


  <script>

    // Replace with your Google Apps Script (or other) endpoint if you want in-page email capture

    const FORM_ENDPOINT = ""; // e.g. https://script.google.com/macros/s/AKfy.../exec


    const f = document.getElementById('joinForm');

    const alertBox = document.getElementById('formAlert');

    const year = document.getElementById('year');

    year.textContent = new Date().getFullYear();


    f.addEventListener('submit', async (e) => {

      e.preventDefault();


      // Honeypot: if filled, treat as bot

      if (document.getElementById('company').value.trim() !== '') {

        showAlert('Thanks!');

        return;

      }


      const email = document.getElementById('email').value.trim();

      if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {

        showAlert('Please enter a valid email.', true);

        return;

      }


      if (!FORM_ENDPOINT) {

        // Fallback: open mail client if endpoint not configured

        window.location.href = `mailto:hello@vyira.example?subject=Early%20Access&body=Please%20add%20me%20(${encodeURIComponent(email)})`;

        showAlert('Opening your email app…');

        f.reset();

        return;

      }


      try {

        const res = await fetch(FORM_ENDPOINT, {

          method: 'POST',

          headers: { 'Content-Type': 'application/json' },

          body: JSON.stringify({ email, ts: Date.now() })

        });

        if (res.ok) {

          showAlert('You\'re on the list. Welcome to Vyira.', false, true);

          f.reset();

        } else {

          showAlert('Something went wrong. Please try again.', true);

        }

      } catch (err) {

        showAlert('Network error. Try again later.', true);

      }

    });


    function showAlert(msg, isError = false, isSuccess = false) {

      alertBox.textContent = msg;

      alertBox.className = 'alert show';

      alertBox.style.color = isError ? 'var(--error)' : (isSuccess ? 'var(--success)' : 'var(--muted)');

    }

  </script>

</body>

</html>