PageSourceSearch

https://getzona.app/contact-us

html getzona.app collected 2026-10-02 00:42:30 UTC 12,564 bytes, 308 lines download raw bytes

1<!doctype html>
2<html lang="en">
3<head>
4<meta charset="utf-8" />
5<meta name="viewport" content="width=device-width,initial-scale=1" />
6<meta name="apple-itunes-app" content="app-id=6479909742" />
7<meta property="og:type" content="website" />
8<meta property="og:site_name" content="ZONA" />
9<meta property="og:title" content="ZONA · Contact Us" />
10<meta property="og:description" content="Get in touch with the ZONA team." />
11<meta property="og:url" content="https://getzona.app/contact-us" />
12<meta property="og:image" content="https://getzona.app/uploads/zona-share-v2.jpg" />
13<meta property="og:image:width" content="1200" />
14<meta property="og:image:height" content="630" />
15<meta property="og:image:alt" content="ZONA · Your night starts here" />
16<meta name="twitter:card" content="summary_large_image" />
17<meta name="twitter:title" content="ZONA · Contact Us" />
18<meta name="twitter:description" content="Get in touch with the ZONA team." />
19<meta name="twitter:image" content="https://getzona.app/uploads/zona-share-v2.jpg" />
20<title>ZONA · Contact Us</title>
21<!-- Google Analytics (GA4) -->
vendor: 64 bytes, lines 21-22
21
22<script async src="https://www.googletagmanager.com/gtag/js?id=
22G-C2LT67GFLS
vendor: 12 bytes, line 22
22"></script>
23<script>
24  
vendor: 133 bytes, lines 24-27
24window.dataLayer = window.dataLayer || [];
25  function gtag(){dataLayer.push(arguments);}
26  gtag('js', new Date());
27  gtag('config', '
27G-C2LT67GFLS
vendor: 4 bytes, line 27
27');
28</script>
28
29
30<link rel="preconnect" href="https://fonts.googleapis.com">
31<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
32<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=2">
33<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
34<link rel="stylesheet" href="legal.css">
35</head>
36<body>
37
38<video class="site-bg" autoplay loop muted playsinline preload="auto" src="assets/zona-bg.mp4" onloadeddata="this.playbackRate=0.4"></video>
39<video class="site-bg mirror" autoplay loop muted playsinline preload="auto" src="assets/zona-bg.mp4" onloadeddata="this.playbackRate=0.3"></video>
40<div class="site-veil"></div>
41<div class="ambient-blob b1"></div>
42<div class="ambient-blob b2"></div>
43
44<nav class="nav" id="nav" data-screen-label="Nav">
45  <div class="nav-left">
46    <a class="logo" href="/" aria-label="ZONA home">
47      <span class="logo-wordmark">ZONA</span>
48    </a>
49    <span class="nav-divider" aria-hidden="true"></span>
50  </div>
51  <div class="nav-links">
52    <a href="/partnerships">Partnerships</a>
53    <a href="/ai">For AI</a>
54    <a href="/ads">Advertise</a>
55    <a href="/newsletter">Newsletter</a>
56    <a href="/contact-us">Contact</a>
57  </div>
58  <div class="nav-right">
59    <a class="pill solid js-download-cta" href="/#download">Download</a>
60    <button class="nav-toggle" id="navToggle" aria-label="Menu" aria-expanded="false"><span class="bars"><span></span></span></button>
61  </div>
62</nav>
63<div class="mobile-menu" id="mobileMenu">
64  <a href="/partnerships">Partnerships</a>
65  <a href="/ai">For AI</a>
66  <a href="/ads">Advertise</a>
67  <a href="/newsletter">Newsletter</a>
68  <a href="/contact-us">Contact</a>
69  <a class="pill solid js-download-cta" data-cta-source="mobile_menu" href="/#download">Download</a>
70</div>
71
72<section class="page-hero">
73  <div class="container">
74    <h1>Contact<br/><span class="gradient-text">Us</span></h1>
75    <p class="sub">We're here to help. Send us a message and our team will get back to you, usually within a business day.</p>
76  </div>
77</section>
78
79<section>
80  <div class="container">
81    <div class="legal-card" style="max-width:780px; margin-inline:auto">
82
83      <form action='/thanks' id='contactForm' method='POST' name='contact' novalidate>
84        <input type="hidden" name="form-name" value="contact" />
85        <p style="display:none"><label>Don't fill this out: <input name="bot-field" /></label></p>
86        <div class="contact-grid">
87          <div class="field"><label>First name</label><input type="text" name="first" placeholder="Jane" required></div>
88          <div class="field"><label>Last name</label><input type="text" name="last" placeholder="Doe" required></div>
89        </div>
90        <div class="contact-grid">
91          <div class="field"><label>Email</label><input type="email" name="email" placeholder="[email protected]" required></div>
92          <div class="field"><label>Topic</label>
93            <select name="topic" required>
94              <option value="">Select a topic…</option>
95              <option>General support</option>
96              <option>Booking / table issue</option>
97              <option>Partnership inquiry</option>
98              <option>Press</option>
99              <option>Report a bug</option>
100              <option>Something else</option>
101            </select>
102          </div>
103        </div>
104        <div class="field" style="margin-bottom:16px">
105          <label>Message</label>
106          <textarea name="message" placeholder="How can we help?" required></textarea>
107        </div>
108
109        <!-- Human check: math captcha -->
110        <div class="captcha">
111          <span class="hint">Human check</span>
112          <span class="q" id="captchaQ">? + ? = ?</span>
113          <input type="text" id="captchaA" inputmode="numeric" autocomplete="off" placeholder="Answer" required>
114        </div>
115
116        <!-- Confirmation checkbox -->
117        <label class="check-row" id="confirmRow">
118          <input type="checkbox" id="confirmZona" required>
119          <span class="txt">
120            I confirm this message is for <b>ZONA, the Miami &amp; New York nightlife app</b>, and is <b>not</b> related to any AI music platform or other unrelated product named "Zona".
121          </span>
122        </label>
123
124        <button class="form-submit" type="submit">Send message →</button>
125
126        <div class="success" id="successMsg">
127          Thanks, your message came through. We'll reply as soon as we can.
128        </div>
129      </form>
130
131    </div>
132  </div>
133</section>
134
135<footer>
136  <div class="grid">
137    <div>
138      <a class="logo" href="/" aria-label="ZONA home">
139        <span class="logo-wordmark">ZONA</span>
140      </a>
141      <p class="tag" style="margin-top:16px">Built by insiders, for insiders.</p>
142      <p class="tag" style="margin-top:20px; font-family:var(--mono); font-size:11px; letter-spacing:0.2em; text-transform:uppercase">getzona.app/contact-us</p>
143    </div>
144    <div>
145      <h4>Get the App</h4>
146      <ul>
147        <li><a href="https://apps.apple.com/us/app/zona-miami-nyc-nightlife/id6479909742" target="_blank" rel="noopener">iOS App Store</a></li>
148        <li><a href="https://play.google.com/store/apps/details?id=com.myzona" target="_blank" rel="noopener">Google Play</a></li>
149      </ul>
150    </div>
151    <div>
152      <h4>Explore Miami</h4>
153      <ul>
154        <li><a href="https://getzona.app/miami">Miami nightlife</a></li>
155        <li><a href="https://getzona.app/miami/browse/bottle-service">Bottle service in Miami</a></li>
156        <li><a href="https://getzona.app/miami/browse/tonight">Tonight in Miami</a></li>
157      </ul>
158    </div>
159    <div>
160      <h4>Explore New York</h4>
161      <ul>
162        <li><a href="https://getzona.app/nyc">New York nightlife</a></li>
163        <li><a href="https://getzona.app/nyc/browse/bottle-service">Bottle service in New York</a></li>
164        <li><a href="https://getzona.app/nyc/browse/tonight">Tonight in New York</a></li>
165      </ul>
166    </div>
167    <div>
168      <h4>Company</h4>
169      <ul>
170        <li><a href="/terms-conditions">Terms &amp; Conditions</a></li>
171        <li><a href="/privacy-policy">Privacy Policy</a></li>
172        <li><a href="/accessibility">Accessibility</a></li>
173        <li><a href="/concierge">Concierge</a></li>
174        <li><a href="/contact-us">Contact Us</a></li>
175      </ul>
176    </div>
177  </div>
178  <div class="base">
179    <span>© ZONA APP CORP</span>
180    <span>v2.0.0</span>
181  </div>
182</footer>
183
184<script>
185  const nav = document.getElementById('nav');
186  const onScroll = () => nav.classList.toggle('scrolled', window.scrollY > 20);
187  window.addEventListener('scroll', onScroll, {passive:true});
188  onScroll();
189
190  // Mobile menu toggle
191  const navToggle = document.getElementById('navToggle');
192  const mobileMenu = document.getElementById('mobileMenu');
193  if (navToggle && mobileMenu) {
194    const closeMenu = () => { navToggle.classList.remove('open'); mobileMenu.classList.remove('open'); navToggle.setAttribute('aria-expanded','false'); document.body.style.overflow=''; };
195    navToggle.addEventListener('click', () => {
196      const isOpen = navToggle.classList.toggle('open');
197      mobileMenu.classList.toggle('open', isOpen);
198      navToggle.setAttribute('aria-expanded', String(isOpen));
199      document.body.style.overflow = isOpen ? 'hidden' : '';
200    });
201    mobileMenu.querySelectorAll('a').forEach(a => a.addEventListener('click', closeMenu));
202    document.addEventListener('click', (e) => {
203      if (!mobileMenu.classList.contains('open')) return;
204      if (mobileMenu.contains(e.target) || navToggle.contains(e.target)) return;
205      closeMenu();
206    });
207    document.addEventListener('keydown', (e) => {
208      if (e.key === 'Escape' && mobileMenu.classList.contains('open')) closeMenu();
209    });
210  }
211
212  // Simple math captcha (avoids needing external services / keys)
213  let captchaAnswer = 0;
214  function newCaptcha(){
215    const a = 2 + Math.floor(Math.random() * 8); // 2..9
216    const b = 1 + Math.floor(Math.random() * 8); // 1..8
217    const ops = ['+', '−'];
218    const op = ops[Math.floor(Math.random()*ops.length)];
219    let x = a, y = b;
220    // ensure non-negative answer for subtraction
221    if (op === '−' && y > x) { [x, y] = [y, x]; }
222    captchaAnswer = (op === '+') ? x + y : x - y;
223    document.getElementById('captchaQ').textContent = `${x}  ${op}  ${y}  =  ?`;
224    const a2 = document.getElementById('captchaA');
225    if (a2) a2.value = '';
226  }
227  newCaptcha();
228
229  // Toggle confirmed-row visual
230  const confirmCB = document.getElementById('confirmZona');
231  const confirmRow = document.getElementById('confirmRow');
232  confirmCB.addEventListener('change', () => {
233    confirmRow.classList.toggle('confirmed', confirmCB.checked);
234  });
235
236  // Handle submit
237  const form = document.getElementById('contactForm');
238  const submitBtn = form.querySelector('.form-submit');
239  const successMsg = document.getElementById('successMsg');
240
241  form.addEventListener('submit', async (e) => {
242    e.preventDefault();
243
244    // Human check
245    const ans = parseInt(document.getElementById('captchaA').value, 10);
246    if (isNaN(ans) || ans !== captchaAnswer) {
247      const inp = document.getElementById('captchaA');
248      inp.style.borderColor = '#ff5f57';
249      inp.focus();
250      newCaptcha();
251      submitBtn.textContent = 'Incorrect, try again';
252      setTimeout(() => {
253        submitBtn.textContent = 'Send message →';
254        inp.style.borderColor = '';
255      }, 2200);
256      return;
257    }
258
259    // Confirmation check
260    if (!confirmCB.checked) {
261      confirmRow.style.borderColor = '#ff5f57';
262      setTimeout(() => confirmRow.style.borderColor = '', 2000);
263      return;
264    }
265
266    // Native required validation
267    if (!form.checkValidity()){
268      form.reportValidity();
269      return;
270    }
271
272    // Submit to Formspree → [email protected]
273    submitBtn.disabled = true;
274    submitBtn.textContent = 'Sending…';
275
276    try {
277      const data = new FormData(form);
278      // Build a clean subject line for the inbox
279      const topic = data.get('topic') || 'General';
280      const name = `${data.get('first') || ''} ${data.get('last') || ''}`.trim();
281      data.append('_subject', `[ZONA Contact] ${topic}, ${name}`);
282
283      const res = await fetch('/', {
284        method: 'POST',
285        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
286        body: new URLSearchParams(data).toString()
287      });
288
289      if (res.ok) {
290        if (typeof gtag === 'function') gtag('event', 'contact_submit', { topic: data.get('topic') || 'General' });
291        submitBtn.textContent = 'Sent ✓';
292        successMsg.classList.add('show');
293        form.querySelectorAll('input:not([type=checkbox]), select, textarea').forEach(el => el.disabled = true);
294      } else {
295        submitBtn.disabled = false;
296        submitBtn.textContent = 'Send failed, try again';
297        setTimeout(() => submitBtn.textContent = 'Send message →', 2500);
298      }
299    } catch (err) {
300      submitBtn.disabled = false;
301      submitBtn.textContent = 'Send failed, try again';
302      setTimeout(() => submitBtn.textContent = 'Send message →', 2500);
303    }
304  });
305</script>
vendor: 1 bytes, line 305
305
306<script src="download-cta.js"></script>
306
307</body>
308</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.