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 & 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 & 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.