const {SectionLabel}=window.VedutaDesignSystem_f6874f; function VSection({bg='var(--cream)',label,headline,intro,children,dark=false,center=false,narrow=false,style,id}){ return
{label&&{label}} {headline&&

{headline}

} {intro&&

{intro}

} {children}
; } const CITIES=[ ['Chicago','chicago',['Electric','Culture','Professional']], ['Miami','miami',['Coast','Electric','Professional']], ['Mexico City','mexico-city',['Adventure','Culture','Electric']], ['Prague','prague',['Culture','Quiet','Adventure']], ['Rome','rome',['Culture','Adventure','Quiet']], ['New York','new-york',['Electric','Culture','Professional']], ['London','london',['Culture','Professional','Quiet']], ['Paris','paris',['Culture','Quiet','Adventure']], ['Barcelona','barcelona',['Coast','Electric','Adventure']], ['Boston','boston',['Culture','Professional']] ]; const SEASONALS=[ ['⛵','Lake Geneva','Summer Escape','May – Oct','lake-geneva'], ['🎨','Santa Fe','Art & Desert','Jun – Nov','santa-fe'], ['🏔️','New Hampshire','Fall & Winter','Sep – Mar','new-hampshire'], ['🌊','San Diego','Pacific Coast','Nov – Apr','san-diego'], ['🏝️','Saint Martin','Caribbean','Dec – Apr','saint-martin'] ]; const TIERS=[ {number:'01',name:'Curated Database',tagline:'We did the research. You reap the rewards.',price:'$250/year',priceNote:'monthly increments on an annual contract · 10% off paid up front',features:['Curated properties across 15 cities','Search by mood','Guides updated every 6 months','Direct booking','Exclusive Community Events'],cta:'Get Access'}, {number:'02',name:'The Concie-agent',tagline:'Tell us where and when. We handle everything else.',price:'$50/month',priceNote:'or $600/yr concierge reservation · + 20% on travel we book',features:['Everything in the Database','A travel agent and concierge in one','All travel booked at partnership discounts','Full itinerary with iterations','Our team\u2019s time, reserved for you'],cta:'Get Started',featured:true}, {number:'03',name:'The Scout',tagline:'We go first. Everything is perfect before you arrive.',price:'$5,000+',priceNote:'per trip · 100% bespoke',features:['Everything in the Concie-agent','Built entirely on your travel designs and wishes','Advance scouting of your exact trip','On-the-ground preparation','Real-time trip management','Optional travel companion'],cta:'Inquire'}, {number:'04',name:'The Owner',tagline:'Travel to your own places.',price:'$35,000+',priceNote:'investment · accredited investors only',features:['Fractional ownership (1 of 10)','21 usage days/year','Rental income intended to offset costs','Potential for appreciation','Professional management','Reservations booked 6 months ahead on our proprietary platform','Separate legal agreement and documents per property'],cta:'Learn About Ownership'} ]; function VWaitlist({center=true,style}){ const {Button,Input}=window.VedutaDesignSystem_f6874f; const [email,setEmail]=React.useState(''); const [status,setStatus]=React.useState('idle'); const submit=async()=>{ const v=email.trim(); if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)){setStatus('invalid');return;} if(status==='sending')return; setStatus('sending'); const ok=await window.vedutaSubmitEmail(v,'waitlist'); setStatus(ok?'sent':'error'); }; return
{status==='sent'?
You're on the list. See you in 2027.
:
{setEmail(e.target.value);if(status!=='idle')setStatus('idle');}}/>
} {status==='invalid'&&
Please enter a valid email address.
} {status==='error'&&
Something went wrong. Please try again in a moment.
}
Launching Spring 2027 · Founding members lock in pricing for life
; } /* Brand lockup built from the supplied mark plus live type, so it sits cleanly on any background. tone 'dark' = for navy/photo backgrounds, 'light' = for cream backgrounds. */ function VLogo({variant='horizontal',tone='dark',height=38,style}){ const dark=tone==='dark'; const mark='assets/brand/mark-'+(dark?'gold':'navy')+'-trim.png'; const stacked=variant==='stacked'; const word={fontFamily:'var(--font-serif)',fontWeight:400,fontSize:stacked?Math.round(height*0.42)+'px':Math.round(height*0.5)+'px',letterSpacing:'0.22em',textTransform:'uppercase',lineHeight:1,color:dark?'var(--text-on-dark)':'var(--navy)',whiteSpace:'nowrap'}; const sub={fontFamily:'var(--font-sans)',fontWeight:500,fontSize:stacked?Math.round(height*0.16)+'px':Math.round(height*0.24)+'px',letterSpacing:'0.3em',textTransform:'uppercase',lineHeight:1,color:'var(--gold)',marginTop:stacked?'8px':'6px',whiteSpace:'nowrap'}; return Veduta Travel Club ; } function VFooter({onNavigate}){ const go=p=>e=>{e.preventDefault();onNavigate&&onNavigate(p);}; const a={fontFamily:'var(--font-sans)',color:'var(--text-on-dark-muted)',textDecoration:'none',fontSize:'12px',letterSpacing:'0.14em',textTransform:'uppercase'}; return ; } /* Seasonal destination card with a photo band on top (the design-system SeasonalCard is text-only). */ function VSeasonalCard({emoji,city,subtitle,season,img,style}){ const [hover,setHover]=React.useState(false); return
setHover(true)} onMouseLeave={()=>setHover(false)} style={{background:'var(--surface-card)',border:'1px solid var(--border-subtle)',borderRadius:'var(--radius-md)',overflow:'hidden',textAlign:'center',boxShadow:hover?'var(--shadow-hover)':'var(--shadow-card)',transform:hover?'translateY(-4px)':'none',transition:'all var(--dur-med) var(--ease-out)',...style}}>
Seasonal
{emoji} {city}
{subtitle}
{season}
; } /* Scrolls to the waitlist form on the current page (every page has one). */ function vedutaScrollToWaitlist(){ const el=document.getElementById('waitlist'); if(el)el.scrollIntoView({behavior:'smooth',block:'center'}); } /* Submits to a Netlify Form (declared as hidden HTML in index.html). Resolves true on success. */ function vedutaSubmitForm(name,fields){ const body=new URLSearchParams({'form-name':name,'bot-field':''}); Object.entries(fields||{}).forEach(([k,v])=>{if(v!==undefined&&v!==null)body.append(k,String(v));}); return fetch('/',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:body.toString()}) .then(r=>r.ok).catch(()=>false); } function vedutaSubmitEmail(email,source){ return vedutaSubmitForm(source==='register'?'register':'waitlist',{email,page:window.location.hash||'#home'}); } /* Photo credit for a hero image, read from assets/cities/hero-credits.json. Renders nothing when there is no entry. */ function VCredit({id,style}){ const [c,setC]=React.useState(null); React.useEffect(()=>{ fetch('assets/cities/hero-credits.json').then(r=>r.json()).then(j=>{ const x=j[id]; setC(x&&x.lic?('Photo: '+(x.artist||'Wikimedia Commons')+' · '+x.lic):null); }).catch(()=>{}); },[id]); if(!c)return null; return
{c}
; } function VUpsell({tier,name,line,cta='See Membership',onNavigate,style}){ const {Button}=window.VedutaDesignSystem_f6874f; return
Tier {tier} · {name}
{line}
; } Object.assign(window,{VSection,VWaitlist,VUpsell,VLogo,VFooter,vedutaSubmitForm,VSeasonalCard,VCredit,vedutaSubmitEmail,vedutaScrollToWaitlist,VEDUTA_CITIES:CITIES,VEDUTA_SEASONALS:SEASONALS,VEDUTA_TIERS:TIERS});