import { useState, useEffect, useRef } from "react"; // ─── DATA ────────────────────────────────────────────────────────────────── const PARTNERS = [ "Four Seasons Preferred Partner","Marriott Bonvoy Luminous","Hilton Impresario", "Virtuoso","Amex Fine Hotels + Resorts","Celebrity Cruises","Viking Expeditions", "Belmond","Aman","Rocco Forte Hotels","Regent Seven Seas","Rosewood Hotels", "Auberge Resorts Collection","Explora Journeys", ]; const DESTINATIONS = [ { name:"Amalfi Coast", region:"Italy", tag:"Coastal Luxury", img:"https://images.unsplash.com/photo-1516483638261-f4dbaf036963?w=900&q=80&fit=crop" }, { name:"Maldives", region:"Indian Ocean", tag:"Overwater Escapes", img:"https://images.unsplash.com/photo-1514282401047-d79a71a590e8?w=700&q=80&fit=crop" }, { name:"Santorini", region:"Greece", tag:"Island Retreats", img:"https://images.unsplash.com/photo-1570077188670-e3a8d69ac5ff?w=700&q=80&fit=crop" }, { name:"Kyoto", region:"Japan", tag:"Cultural Immersion", img:"https://images.unsplash.com/photo-1493976040374-85c8e12f0c0e?w=700&q=80&fit=crop" }, { name:"Serengeti", region:"Tanzania", tag:"Safari & Wildlife", img:"https://images.unsplash.com/photo-1516426122078-c23e76319801?w=700&q=80&fit=crop" }, ]; const DEALS = [ { name:"Amalfi Collection", region:"Amalfi Coast, Italy", price:"From $485/night", note:"Same direct rate · VIP perks included", perks:["Complimentary room upgrade","Daily breakfast for two","$200 dining credit","Private cliffside transfer"], img:"https://images.unsplash.com/photo-1516483638261-f4dbaf036963?w=700&q=80&fit=crop" }, { name:"Indian Ocean Escapes", region:"Maldives & Seychelles", price:"From $890/night", note:"Zero markup · overwater villa access", perks:["Overwater villa, direct lagoon access","All-inclusive perks unlocked","$300 spa & dining credit","Private speedboat transfers"], img:"https://images.unsplash.com/photo-1514282401047-d79a71a590e8?w=700&q=80&fit=crop" }, { name:"Safari Signature Journey",region:"Kenya & Tanzania", price:"From $8,500/person",note:"10-night custom itinerary, fully managed", perks:["Handpicked luxury tented camps","Private game drives, dawn & dusk","All flights & transfers included","Expert in-country guide throughout"], img:"https://images.unsplash.com/photo-1516426122078-c23e76319801?w=700&q=80&fit=crop" }, ]; const VALUE_PROOF = [ { label:"Suite upgrade (avg. $280/night × 7 nights)", val:"$1,960" }, { label:"Daily breakfast for two × 7 days", val:"$1,120" }, { label:"Resort credit", val:"$200" }, { label:"Early check-in + 4PM late checkout", val:"Priceless" }, ]; const PERKS = [ { icon:"⬆", title:"Room Upgrades", body:"Complimentary upgrades at check-in through preferred partner status — not available through direct booking, credit cards, or any OTA." }, { icon:"☕", title:"Daily Breakfast", body:"Buffet or à la carte for two, every morning, included on eligible stays at 1,000+ partner properties worldwide." }, { icon:"💳", title:"Property Credits", body:"$100–$200+ in resort or onboard credits — apply to spa, dining, excursions, or hold as cash value on your stay." }, { icon:"👑", title:"VIP Recognition", body:"Your reservation is flagged before arrival. Staff know your name. That one change transforms the experience from arrival to departure." }, { icon:"⏰", title:"Flexible Check Times",body:"Early arrival and late departure arranged through our relationships — because a great trip shouldn't be rushed at either end." }, { icon:"🤝", title:"Priority Access", body:"Sold-out property? Our preferred status opens rooms, upgrades, and reservations that simply don't exist for the general public." }, ]; const TEAM = [ { name:"Alexandra M.", title:"Founder & Senior Travel Advisor", spec:"Europe · Luxury Hotels · Honeymoons", bio:"20+ years crafting unforgettable journeys. Former hotel industry insider who knows exactly which room to book and who to call.", img:"https://images.unsplash.com/photo-1580489944761-15a19d654956?w=400&q=80&fit=crop&crop=face" }, { name:"Marcus D.", title:"Director of Cruise & Ocean Voyages", spec:"Cruises · Caribbean · Mediterranean", bio:"A decade at sea with the world's top cruise lines. Our clients board as strangers and return as regulars — because he knows every captain.", img:"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&q=80&fit=crop&crop=face" }, { name:"Priya S.", title:"Africa & Asia Specialist", spec:"Safaris · Japan · Southeast Asia", bio:"Has personally stayed in over 200 properties across 40 countries. If she recommends it, she's been there. Twice.", img:"https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=400&q=80&fit=crop&crop=face" }, ]; const CREDS = [ { label:"ASTA", sub:"Verified Member" }, { label:"CLIA", sub:"Certified Agent" }, { label:"CST", sub:"#2071045-50 · California" }, { label:"FLST", sub:"#ST38545 · Florida" }, { label:"Preferred Partner", sub:"Virtuoso Network" }, { label:"Licensed & Bonded", sub:"All 50 States" }, ]; const PROCESS = [ { n:"I", title:"Discover Your Vision", body:"Tell us everything — where, when, with whom, and what matters most. We listen before we plan." }, { n:"II", title:"Design Your Journey", body:"Your advisor curates the ideal itinerary and activates preferred partner access unavailable anywhere else." }, { n:"III", title:"Activate Your Access", body:"We confirm your VIP status with every property. Upgrades and credits are secured before you arrive." }, { n:"IV", title:"Depart in Style", body:"Arrive recognized. Every detail managed before, during, and after — invisibly and seamlessly." }, { n:"V", title:"Stay Connected", body:"After you return, we debrief. What was extraordinary, what we'd refine — and where you're going next." }, ]; const TESTIMONIALS = [ { quote:"I've been booking travel for twenty years and had no idea what I was missing. The suite upgrade, daily breakfast, champagne on arrival — none of it existed anywhere online. I'll never book direct again.", name:"James & Sarah T.", trip:"Amalfi Coast & Rome — 14 nights, Four Seasons Taormina" }, { quote:"Our honeymoon was flawless from first inquiry to last night. The perks they unlocked were worth more than the entire cost of the trip. Genuinely the best money I've never paid.", name:"Donovan & Charlene M.", trip:"Maldives & Dubai — 12 nights, COMO Maalifushi" }, { quote:"I was skeptical that free planning could be this good. Every camp, every transfer, every detail on our family safari was perfectly orchestrated. My kids still talk about it two years later.", name:"The Kellerman Family", trip:"Kenya & Tanzania — 10 nights, luxury tented camps" }, ]; const BLOG_POSTS = [ { title:"The Biggest Hotel Secret Even Road Warriors Miss", excerpt:"You've stayed at the Four Seasons a dozen times. But have you ever actually been recognized at check-in? Here's what changes when we make the reservation.", tag:"Hotel Intelligence", date:"May 2026", img:"https://images.unsplash.com/photo-1551882547-ff40c63fe2f4?w=700&q=80&fit=crop" }, { title:"Not All Cruise Lines Are Created Equal — Let's Find Your Match", excerpt:"Celebrity, Viking, Regent, Silversea, Explora Journeys. They're not the same experience at all. A guide to finding the one that fits how you actually travel.", tag:"Cruise Intel", date:"April 2026", img:"https://images.unsplash.com/photo-1548438294-1ad5d5f4f063?w=700&q=80&fit=crop" }, { title:"Our Favorite Christmas Markets Around the World", excerpt:"Vienna, Strasbourg, Cologne, Prague — and three you've never considered. Where to go, where to stay, and how to avoid the crowds.", tag:"Destination Guide", date:"March 2026", img:"https://images.unsplash.com/photo-1545558014-8692077e9b5c?w=700&q=80&fit=crop" }, ]; const FAQS = [ { q:"Is your travel planning really free?", a:"Yes — completely. We're compensated by the hotels, cruise lines, and operators we book, not by you. This is how preferred partner programs work. You receive expert planning, curated itineraries, and VIP perks at zero additional cost." }, { q:"How is booking with you different from going direct?", a:"When you book direct, you're a stranger. When we book for you, you're a recognized VIP through our preferred partner status. That means suite upgrades, daily breakfast, resort credits, and a flagged arrival — perks that simply don't exist when you call the hotel yourself or book through Expedia." }, { q:"What if I need to change or cancel?", a:"We manage everything. Rate drops, date changes, itinerary adjustments, weather emergencies — we handle it behind the scenes so your journey stays effortless no matter what changes." }, { q:"Do you only work with luxury properties?", a:"We specialize in premium and luxury travel, but 'luxury' means different things to different people. If you're comfortable spending $300–$400+/night on hotels, we can add significant value to your experience through our preferred partner programs." }, { q:"What kinds of trips do you plan?", a:"Hotels, resorts, cruises, safaris, villas, custom multi-destination itineraries, honeymoons, anniversaries, family vacations, group travel, and corporate meetings and incentives. If you're traveling, we can design it." }, { q:"Can you help if I've already booked directly?", a:"Often, yes. Through our preferred partner programs, we can frequently attach room upgrades, breakfast, and resort credits to existing reservations — even after you've booked. Reach out before you arrive." }, ]; const STATS = [ { val:"1,000+", label:"Preferred Properties" }, { val:"$0", label:"Planning Fees. Ever." }, { val:"6", label:"Continents We Cover" }, { val:"5-Step", label:"White-Glove Process" }, ]; const TRIPS = [ { icon:"🏨", label:"Hotels & Resorts" }, { icon:"🛳", label:"Cruises" }, { icon:"👥", label:"Groups & Events" }, { icon:"🌍", label:"Custom Journey" }, ]; // ─── STYLES ──────────────────────────────────────────────────────────────── const CSS = ` @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=Jost:wght@300;400;500;600&display=swap'); *,*::before,*::after{box-sizing:border-box;margin:0;padding:0} :root{ --ink:#0A1628; --nv:#122040; --nv2:#0D1B30; --gd:#C8A96E; --g2:#DFC08C; --gbg:rgba(200,169,110,.1); --cr:#FAF7F2; --off:#F2EDE6; --wh:#fff; --tx:#1A1A1A; --mt:#7A7A7A; --bd:rgba(200,169,110,.2); --sf:'Cormorant Garamond',Georgia,serif; --ss:'Jost',system-ui,sans-serif; --ease:cubic-bezier(.25,.46,.45,.94); } body{font-family:var(--ss);background:var(--cr);color:var(--tx);overflow-x:hidden} img{display:block} /* ─ SCROLL REVEAL ─ */ .rv{opacity:0;transform:translateY(28px);transition:opacity .75s var(--ease),transform .75s var(--ease)} .rv.vis{opacity:1;transform:translateY(0)} .rv.d1{transition-delay:.1s}.rv.d2{transition-delay:.2s}.rv.d3{transition-delay:.3s} .rv.d4{transition-delay:.4s}.rv.d5{transition-delay:.5s} /* ─ FLOATING CTA ─ */ .float-cta{ position:fixed;bottom:28px;right:28px;z-index:400; background:var(--gd);color:var(--ink); padding:14px 28px;font-size:10px;font-weight:600;letter-spacing:.22em; text-transform:uppercase;border:none;cursor:pointer;font-family:var(--ss); box-shadow:0 8px 32px rgba(200,169,110,.4); transform:translateY(80px);opacity:0; transition:transform .4s var(--ease),opacity .4s,background .2s; } .float-cta.show{transform:translateY(0);opacity:1} .float-cta:hover{background:var(--g2)} /* ─ NAV ─ */ .nav{position:fixed;inset:0 0 auto;z-index:300;display:flex;align-items:center;justify-content:space-between;padding:0 56px;height:82px;transition:background .4s,height .3s} .nav.sc{background:rgba(10,22,40,.97);backdrop-filter:blur(16px);height:64px;border-bottom:1px solid rgba(200,169,110,.14)} .logo{cursor:pointer;user-select:none} .logo-n{font-family:var(--sf);font-size:21px;font-weight:400;letter-spacing:.1em;color:#fff;text-transform:uppercase;line-height:1;display:block} .logo-s{font-size:7.5px;font-weight:500;letter-spacing:.48em;text-transform:uppercase;color:var(--gd);margin-top:5px;display:block} .nvc{display:flex;align-items:center;gap:36px} .nl{font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.65);background:none;border:none;cursor:pointer;font-family:var(--ss);transition:color .2s;padding:6px 0;position:relative} .nl::after{content:'';position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--gd);transition:width .3s var(--ease)} .nl:hover{color:#fff}.nl:hover::after{width:100%} .nvr{display:flex;align-items:center;gap:14px} .nsoc{width:30px;height:30px;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);font-size:9px;font-weight:700;cursor:pointer;transition:all .2s;font-family:var(--ss)} .nsoc:hover{border-color:var(--gd);color:var(--gd)} .ncta{background:var(--gd);color:var(--ink);border:none;padding:12px 26px;font-size:9.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);transition:background .25s,transform .2s} .ncta:hover{background:var(--g2);transform:translateY(-1px)} .ham{display:none;background:none;border:none;cursor:pointer;color:#fff;font-size:22px;padding:4px} .mob{display:none;position:fixed;inset:64px 0 0;background:rgba(10,22,40,.99);z-index:299;flex-direction:column;padding:52px 36px;gap:36px;overflow-y:auto} .mob.open{display:flex} .mlink{font-family:var(--sf);font-size:34px;font-weight:400;font-style:italic;color:rgba(255,255,255,.75);background:none;border:none;cursor:pointer;text-align:left;transition:color .2s} .mlink:hover{color:var(--gd)} /* ─ HERO ─ */ .hero{height:100vh;min-height:700px;position:relative;display:flex;align-items:center;overflow:hidden} .hbg{position:absolute;inset:0;background:var(--ink)} .himg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.4;transform:scale(1.05);transition:transform 10s ease,opacity .5s} .himg.ld{transform:scale(1);opacity:.45} .hov{position:absolute;inset:0;background:linear-gradient(108deg,rgba(10,22,40,.92) 0%,rgba(10,22,40,.55) 52%,rgba(10,22,40,.18) 100%)} .hcon{position:relative;z-index:2;padding:0 56px;max-width:820px;animation:hIn 1.1s var(--ease) forwards} .hbadge{display:flex;align-items:center;gap:14px;font-size:9px;font-weight:500;letter-spacing:.4em;text-transform:uppercase;color:var(--gd);margin-bottom:32px} .hbline{width:44px;height:1px;background:var(--gd)} .hh1{font-family:var(--sf);font-size:clamp(52px,8vw,96px);font-weight:300;line-height:1.05;color:#fff;letter-spacing:-.01em} .hh1em{font-family:var(--sf);font-size:clamp(52px,8vw,96px);font-weight:400;font-style:italic;color:var(--g2);line-height:1.05;display:block;margin-bottom:32px} .hrul{width:64px;height:1px;background:var(--gd);margin-bottom:28px} .hsub{font-size:clamp(14px,1.8vw,17px);font-weight:300;line-height:1.8;color:rgba(255,255,255,.7);margin-bottom:52px;max-width:520px;letter-spacing:.025em} .hact{display:flex;gap:16px;flex-wrap:wrap;align-items:center} .bp{background:var(--gd);color:var(--ink);border:none;padding:18px 48px;font-size:10px;font-weight:600;letter-spacing:.28em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);transition:background .25s,transform .2s,box-shadow .25s} .bp:hover{background:var(--g2);transform:translateY(-2px);box-shadow:0 16px 48px rgba(200,169,110,.38)} .bg{background:transparent;color:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.3);padding:17px 38px;font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);transition:all .25s} .bg:hover{border-color:var(--gd);color:var(--g2)} .hscr{position:absolute;bottom:40px;left:56px;z-index:2;display:flex;align-items:center;gap:14px;font-size:8px;letter-spacing:.4em;text-transform:uppercase;color:rgba(255,255,255,.35)} .hscrl{width:40px;height:1px;background:rgba(255,255,255,.25);animation:scPls 2.2s ease infinite} /* ─ PARTNER BAR ─ */ .pbar{background:var(--ink);padding:24px 0;overflow:hidden;border-bottom:1px solid rgba(200,169,110,.1);display:flex;align-items:center} .plbl{flex-shrink:0;padding:0 40px;font-size:7.5px;font-weight:600;letter-spacing:.45em;text-transform:uppercase;color:var(--gd);border-right:1px solid rgba(200,169,110,.2);white-space:nowrap;margin-right:40px} .ptr{display:flex;animation:mq 32s linear infinite;will-change:transform} .ptr:hover{animation-play-state:paused} .pit{display:flex;align-items:center;gap:32px;padding-right:32px;white-space:nowrap} .pnm{font-family:var(--sf);font-size:13px;font-weight:400;letter-spacing:.1em;color:rgba(255,255,255,.32);cursor:default;transition:color .3s;text-transform:uppercase} .pnm:hover{color:rgba(200,169,110,.65)} .pdot{color:rgba(200,169,110,.25);font-size:16px;user-select:none} /* ─ SECTION BASE ─ */ .sec{padding:112px 56px}.secsm{padding:72px 56px} .sdk{background:var(--nv)}.sdk2{background:var(--ink)}.scr{background:var(--cr)}.sof{background:var(--off)}.swh{background:var(--wh)} .ey{font-size:8.5px;font-weight:600;letter-spacing:.42em;text-transform:uppercase;color:var(--gd);display:flex;align-items:center;gap:14px;margin-bottom:20px} .ey::before{content:'';width:28px;height:1px;background:var(--gd);flex-shrink:0} .eyl{color:var(--g2)}.eyl::before{background:var(--g2)} .h2{font-family:var(--sf);font-size:clamp(38px,5.5vw,62px);font-weight:300;line-height:1.1;color:var(--ink);letter-spacing:-.01em} .h2 em{font-style:italic;font-weight:400;color:var(--gd)} .h2l{color:#fff}.h2l em{color:var(--g2)} .h2b{font-size:15px;font-weight:300;line-height:1.82;color:var(--mt);margin-top:20px;max-width:580px;letter-spacing:.022em} .h2bl{color:rgba(255,255,255,.58)} /* ─ PILLARS ─ */ .pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:68px} .pcard{background:rgba(255,255,255,.045);padding:56px 44px;border-top:1px solid rgba(200,169,110,.15);transition:background .3s,border-color .3s;cursor:default} .pcard:hover{background:rgba(255,255,255,.08);border-top-color:var(--gd)} .pn{font-family:var(--sf);font-size:56px;font-weight:300;font-style:italic;color:rgba(200,169,110,.2);line-height:1;margin-bottom:28px} .pt{font-family:var(--sf);font-size:23px;font-weight:500;color:#fff;margin-bottom:14px;letter-spacing:.02em;line-height:1.2} .pb{font-size:14px;font-weight:300;line-height:1.85;color:rgba(255,255,255,.52);letter-spacing:.022em} /* ─ STATS ─ */ .sbar{background:var(--gd);display:grid;grid-template-columns:repeat(4,1fr)} .si{padding:44px 32px;text-align:center;border-right:1px solid rgba(10,22,40,.12)} .si:last-child{border-right:none} .sv{font-family:var(--sf);font-size:clamp(36px,4.5vw,52px);font-weight:300;font-style:italic;color:var(--ink);line-height:1;margin-bottom:8px} .sl{font-size:9.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:rgba(10,22,40,.65)} /* ─ VALUE PROOF ─ */ .vpwrap{margin-top:72px;display:grid;grid-template-columns:1fr 1fr;gap:2px} .vpimg{position:relative;min-height:480px;overflow:hidden} .vpimg img{width:100%;height:100%;object-fit:cover} .vpimgov{position:absolute;inset:0;background:linear-gradient(to right,rgba(10,22,40,.45),transparent 60%)} .vphotag{position:absolute;bottom:32px;left:32px;right:32px} .vphn{font-family:var(--sf);font-size:22px;font-weight:400;font-style:italic;color:#fff;line-height:1.2} .vphs{font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--g2);margin-top:6px} .vpmath{background:rgba(255,255,255,.05);padding:56px 48px;display:flex;flex-direction:column;justify-content:center} .vpbk{margin-bottom:36px;padding-bottom:32px;border-bottom:1px solid rgba(200,169,110,.2)} .vpbkr{font-family:var(--sf);font-size:28px;font-weight:400;color:#fff;margin-bottom:6px} .vpbkn{font-size:11px;font-weight:400;letter-spacing:.12em;color:var(--g2);text-transform:uppercase} .vpit{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.06)} .vpil{font-size:13.5px;font-weight:300;color:rgba(255,255,255,.65);letter-spacing:.02em} .vpiv{font-family:var(--sf);font-size:18px;font-weight:400;font-style:italic;color:var(--g2);white-space:nowrap;margin-left:24px} .vptot{display:flex;justify-content:space-between;align-items:center;padding:24px 0 16px;margin-top:8px;border-top:2px solid rgba(200,169,110,.3)} .vptl{font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#fff} .vptv{font-family:var(--sf);font-size:38px;font-weight:400;font-style:italic;color:var(--gd)} .vpfee{display:flex;justify-content:space-between;align-items:center;padding:14px 0} .vpfl{font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.4)} .vpfv{font-family:var(--sf);font-size:26px;font-weight:400;font-style:italic;color:rgba(255,255,255,.3)} .vpnote{margin-top:24px;font-size:11px;font-weight:300;color:rgba(255,255,255,.3);font-style:italic;line-height:1.6} /* ─ DESTINATIONS ─ */ .dhead{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:24px} .dsm{font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gd);background:none;border:none;cursor:pointer;font-family:var(--ss);transition:color .2s;display:flex;align-items:center;gap:10px;flex-shrink:0} .dsm::after{content:'→';transition:transform .2s} .dsm:hover{color:var(--ink)}.dsm:hover::after{transform:translateX(4px)} .dgrid{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:360px 280px;gap:4px;margin-top:60px} .dc{position:relative;overflow:hidden;cursor:pointer} .dc:first-child{grid-row:1/3} .dci{width:100%;height:100%;object-fit:cover;transition:transform .75s var(--ease)} .dc:hover .dci{transform:scale(1.07)} .dov{position:absolute;inset:0;background:linear-gradient(to top,rgba(10,22,40,.88) 0%,transparent 52%);transition:background .45s} .dc:hover .dov{background:linear-gradient(to top,rgba(10,22,40,.94) 0%,rgba(10,22,40,.14) 52%)} .dmeta{position:absolute;bottom:0;left:0;right:0;padding:32px} .dtag{font-size:7.5px;font-weight:600;letter-spacing:.38em;text-transform:uppercase;color:var(--gd);margin-bottom:6px} .dname{font-family:var(--sf);font-size:22px;font-weight:400;color:#fff;letter-spacing:.02em} .dc:first-child .dname{font-size:36px} .dreg{font-size:12px;font-weight:300;color:rgba(255,255,255,.5);margin-top:4px} .darr{font-size:9.5px;font-weight:500;letter-spacing:.2em;color:var(--g2);text-transform:uppercase;margin-top:12px;opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s} .dc:hover .darr{opacity:1;transform:translateY(0)} /* ─ DEALS ─ */ .deals{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:68px} .deal{background:var(--wh);overflow:hidden;cursor:pointer} .deal-img{width:100%;height:240px;object-fit:cover;transition:transform .6s var(--ease)} .deal:hover .deal-img{transform:scale(1.06)} .deal-body{padding:36px 32px 40px} .deal-reg{font-size:8px;font-weight:600;letter-spacing:.38em;text-transform:uppercase;color:var(--gd);margin-bottom:10px} .deal-nm{font-family:var(--sf);font-size:24px;font-weight:400;color:var(--ink);margin-bottom:8px;letter-spacing:.02em;line-height:1.2} .deal-pr{font-size:12px;font-weight:500;color:var(--mt);letter-spacing:.06em;display:block;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--bd)} .deal-perks{list-style:none;display:flex;flex-direction:column;gap:9px;margin-bottom:28px} .deal-perks li{font-size:13px;font-weight:300;color:var(--tx);display:flex;align-items:flex-start;gap:10px;line-height:1.45} .deal-perks li::before{content:'✓';color:var(--gd);font-weight:600;flex-shrink:0;margin-top:1px} .deal-btn{background:none;border:1px solid var(--bd);color:var(--ink);padding:12px 24px;font-size:9.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);transition:all .25s;width:100%} .deal-btn:hover{background:var(--gd);border-color:var(--gd);color:var(--ink)} /* ─ PERKS ─ */ .pkintro{display:flex;gap:80px;align-items:flex-start;flex-wrap:wrap} .pkil{flex:0 0 380px} .pkir{flex:1;min-width:260px;padding-top:8px} .pknote{font-family:var(--sf);font-size:18px;font-style:italic;font-weight:400;line-height:1.72;color:var(--mt)} .pknote strong{font-style:normal;font-weight:500;color:var(--ink)} .pkgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:68px} .pkcard{padding:48px 40px;background:var(--wh);border-left:3px solid transparent;transition:border-color .25s,transform .25s;cursor:default} .pkcard:hover{border-left-color:var(--gd);transform:translateX(4px)} .pkico{font-size:28px;margin-bottom:22px;display:block} .pktit{font-family:var(--sf);font-size:21px;font-weight:500;color:var(--ink);margin-bottom:12px;letter-spacing:.02em} .pkbod{font-size:13.5px;font-weight:300;line-height:1.82;color:var(--mt)} /* ─ TEAM ─ */ .teamgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:68px} .teamcard{background:var(--wh);overflow:hidden;cursor:default;transition:transform .3s} .teamcard:hover{transform:translateY(-4px)} .teamcard:hover .teamimg{transform:scale(1.05)} .teamimg{width:100%;height:280px;object-fit:cover;transition:transform .6s var(--ease)} .teambody{padding:32px 28px} .teamname{font-family:var(--sf);font-size:22px;font-weight:500;color:var(--ink);margin-bottom:4px;letter-spacing:.02em} .teamtitle{font-size:9px;font-weight:600;letter-spacing:.25em;text-transform:uppercase;color:var(--gd);margin-bottom:6px} .teamspec{font-size:11px;font-weight:400;color:var(--mt);letter-spacing:.06em;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--bd)} .teambio{font-size:13.5px;font-weight:300;line-height:1.78;color:var(--mt)} /* ─ CREDENTIALS ─ */ .creds{background:var(--ink);padding:36px 56px} .creds-inner{display:flex;align-items:center;gap:0;flex-wrap:wrap;border:1px solid rgba(200,169,110,.12)} .cred{flex:1;min-width:140px;padding:28px 24px;text-align:center;border-right:1px solid rgba(200,169,110,.1);transition:background .2s} .cred:last-child{border-right:none} .cred:hover{background:rgba(200,169,110,.06)} .cred-label{font-family:var(--sf);font-size:18px;font-weight:500;color:#fff;letter-spacing:.06em;margin-bottom:5px} .cred-sub{font-size:9px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:rgba(200,169,110,.55)} /* ─ FREE STRIP ─ */ .fstrip{background:var(--nv2);padding:40px 56px;display:flex;align-items:center;gap:40px;border-top:1px solid rgba(200,169,110,.1)} .fstrip-ico{width:60px;height:60px;flex-shrink:0;border:1px solid rgba(200,169,110,.3);display:flex;align-items:center;justify-content:center;font-family:var(--sf);font-size:26px;font-style:italic;color:var(--gd)} .fstrip-txt{font-size:14px;font-weight:300;color:rgba(255,255,255,.65);line-height:1.78} .fstrip-txt strong{font-weight:600;color:#fff} /* ─ PROCESS ─ */ .procwrap{margin-top:68px;position:relative} .procline{position:absolute;top:52px;left:10%;right:10%;height:1px;background:var(--bd)} .procgrid{display:grid;grid-template-columns:repeat(5,1fr)} .pstep{padding:0 20px;text-align:center} .pnum{width:88px;height:88px;border-radius:50%;border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;margin:0 auto 34px;font-family:var(--sf);font-size:26px;font-weight:400;font-style:italic;color:var(--gd);background:var(--cr);position:relative;z-index:1;transition:border-color .3s,background .3s} .pstep:hover .pnum{border-color:var(--gd);background:var(--gbg)} .ptit2{font-family:var(--sf);font-size:17px;font-weight:500;color:var(--ink);margin-bottom:12px;letter-spacing:.02em;line-height:1.25} .pbod2{font-size:12.5px;font-weight:300;line-height:1.75;color:var(--mt)} /* ─ TESTIMONIALS ─ */ .tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:68px} .tcard{padding:56px 48px;background:rgba(255,255,255,.045);border-top:2px solid rgba(200,169,110,.2);transition:border-color .3s,background .3s;display:flex;flex-direction:column;cursor:default} .tcard:hover{border-top-color:var(--gd);background:rgba(255,255,255,.07)} .tstars{color:var(--gd);font-size:13px;letter-spacing:4px;margin-bottom:28px} .tq{font-family:var(--sf);font-size:18.5px;font-weight:400;font-style:italic;color:rgba(255,255,255,.88);line-height:1.72;flex:1;margin-bottom:36px} .trul{width:32px;height:1px;background:var(--gd);margin-bottom:20px} .tnam{font-size:11px;font-weight:600;letter-spacing:.2em;color:var(--g2);text-transform:uppercase} .ttrp{font-size:12px;font-weight:300;color:rgba(255,255,255,.32);margin-top:5px} /* ─ BLOG ─ */ .bloggrid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:68px} .blogcard{background:var(--wh);overflow:hidden;cursor:pointer;transition:transform .3s} .blogcard:hover{transform:translateY(-4px)} .blogcard:hover .blogimg{transform:scale(1.06)} .blogimg{width:100%;height:220px;object-fit:cover;transition:transform .6s var(--ease)} .blogbody{padding:32px 28px} .blogtag{font-size:8px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--gd);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between} .blogdate{color:var(--mt);font-weight:400;letter-spacing:.1em} .blogtit{font-family:var(--sf);font-size:21px;font-weight:500;color:var(--ink);line-height:1.25;margin-bottom:14px;letter-spacing:.01em} .blogex{font-size:13.5px;font-weight:300;line-height:1.75;color:var(--mt);margin-bottom:20px} .blogcta{font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--gd);background:none;border:none;cursor:pointer;font-family:var(--ss);transition:color .2s;display:flex;align-items:center;gap:8px} .blogcta::after{content:'→';transition:transform .2s} .blogcard:hover .blogcta{color:var(--ink)}.blogcard:hover .blogcta::after{transform:translateX(4px)} /* ─ NEWSLETTER ─ */ .news{background:var(--nv);padding:88px 56px;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center} .newsright{display:flex;flex-direction:column;gap:14px} .newsinput{background:rgba(255,255,255,.08);border:1px solid rgba(200,169,110,.25);padding:16px 20px;font-size:14px;font-weight:300;color:#fff;font-family:var(--ss);outline:none;transition:border-color .2s;-webkit-appearance:none} .newsinput:focus{border-color:var(--gd)}.newsinput::placeholder{color:rgba(255,255,255,.35)} .newsbtn{background:var(--gd);color:var(--ink);border:none;padding:16px 36px;font-size:10px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);transition:background .25s,transform .2s;align-self:flex-start} .newsbtn:hover{background:var(--g2);transform:translateY(-1px)} .newsnote{font-size:11px;font-weight:300;color:rgba(255,255,255,.3);line-height:1.6} /* ─ FAQ ─ */ .faqlist{display:flex;flex-direction:column;gap:2px;margin-top:64px;max-width:860px} .faqitem{background:var(--wh);overflow:hidden} .faqq{display:flex;justify-content:space-between;align-items:center;padding:24px 32px;cursor:pointer;transition:background .2s;gap:24px} .faqq:hover{background:var(--gbg)} .faqq.open{background:var(--gbg)} .faqql{font-family:var(--sf);font-size:19px;font-weight:500;color:var(--ink);letter-spacing:.01em;line-height:1.3} .faqqico{font-size:18px;color:var(--gd);flex-shrink:0;transition:transform .3s;font-weight:300;line-height:1} .faqq.open .faqqico{transform:rotate(45deg)} .faqa{max-height:0;overflow:hidden;transition:max-height .4s var(--ease)} .faqa.open{max-height:200px} .faqainner{padding:0 32px 28px;font-size:14px;font-weight:300;line-height:1.82;color:var(--mt);letter-spacing:.022em} /* ─ UPGRADE CTA ─ */ .ugcta{background:var(--cr);padding:108px 56px;display:grid;grid-template-columns:1fr auto;gap:60px;align-items:center;border-top:1px solid var(--bd)} .ugtit{font-family:var(--sf);font-size:clamp(30px,4vw,52px);font-weight:300;line-height:1.15;color:var(--ink)} .ugtit em{font-style:italic;font-weight:400;color:var(--gd)} .ugbod{font-size:15px;font-weight:300;line-height:1.82;color:var(--mt);margin-top:18px;max-width:600px} .bdk{background:var(--ink);color:#fff;border:none;padding:18px 44px;font-size:10px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;cursor:pointer;font-family:var(--ss);white-space:nowrap;flex-shrink:0;transition:background .25s,transform .2s} .bdk:hover{background:var(--nv);transform:translateY(-2px)} /* ─ PLAN PAGE ─ */ .plh{height:52vh;min-height:420px;position:relative;display:flex;align-items:flex-end;overflow:hidden} .plhi{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.52} .plhg{position:absolute;inset:0;background:linear-gradient(to top,var(--ink) 0%,rgba(10,22,40,.35) 100%)} .plhc{position:relative;z-index:2;padding:0 56px 64px} .plbod{background:var(--cr);padding:88px 56px} .plin{max-width:940px} .tsgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin:44px 0 60px} .tsbtn{padding:28px 20px;background:var(--wh);cursor:pointer;border:2px solid transparent;text-align:center;transition:all .2s;font-family:var(--ss)} .tsbtn:hover{border-color:var(--bd)} .tsbtn.act{border-color:var(--gd);background:var(--gbg)} .tsico{font-size:28px;margin-bottom:10px;display:block} .tsnm{font-size:9.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink)} .fgrid{display:grid;grid-template-columns:1fr 1fr;gap:24px} .fsp{grid-column:1/-1} .fld{display:flex;flex-direction:column;gap:9px} .flbl{font-size:8.5px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--gd)} .finp{background:var(--wh);border:1px solid rgba(200,169,110,.22);padding:16px 18px;font-size:14px;font-weight:300;color:var(--tx);font-family:var(--ss);outline:none;transition:border-color .2s;-webkit-appearance:none} .finp:focus{border-color:var(--gd)}.finp::placeholder{color:#C4C4C4} .fsel{background:var(--wh) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23C8A96E'/%3E%3C/svg%3E") no-repeat right 18px center/10px;border:1px solid rgba(200,169,110,.22);padding:16px 44px 16px 18px;font-size:14px;font-weight:300;color:var(--tx);font-family:var(--ss);outline:none;cursor:pointer;transition:border-color .2s;-webkit-appearance:none} .fsel:focus{border-color:var(--gd)} .ftxt{background:var(--wh);border:1px solid rgba(200,169,110,.22);padding:16px 18px;font-size:14px;font-weight:300;color:var(--tx);font-family:var(--ss);outline:none;transition:border-color .2s;resize:vertical;min-height:136px} .ftxt:focus{border-color:var(--gd)}.ftxt::placeholder{color:#C4C4C4} .fsub{margin-top:12px;background:var(--ink);color:#fff;padding:20px 68px;font-size:10.5px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;border:none;cursor:pointer;font-family:var(--ss);transition:background .25s,transform .2s} .fsub:hover{background:var(--gd);color:var(--ink);transform:translateY(-2px)} .fnote{font-size:12px;font-weight:300;color:#ABABAB;margin-top:18px;letter-spacing:.03em} .fnote span{color:var(--gd)} .succ{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 40px;background:var(--cr);text-align:center} .succico{width:80px;height:80px;border:1px solid var(--gd);display:flex;align-items:center;justify-content:center;font-family:var(--sf);font-size:36px;font-style:italic;color:var(--gd);margin:0 auto 36px} /* ─ FOOTER ─ */ .foot{background:#060D1A;padding:100px 56px 52px} .fgr{display:grid;grid-template-columns:2.2fr 1fr 1fr 1.2fr;gap:68px;margin-bottom:80px} .fbn{font-family:var(--sf);font-size:22px;font-weight:400;color:#fff;text-transform:uppercase;letter-spacing:.1em;line-height:1;display:block} .fbs{font-size:7.5px;font-weight:500;letter-spacing:.48em;text-transform:uppercase;color:var(--gd);margin-top:5px;display:block} .ftag{font-family:var(--sf);font-size:14px;font-style:italic;font-weight:400;color:rgba(255,255,255,.35);margin-top:24px;line-height:1.72;max-width:270px} .fsoc{display:flex;gap:10px;margin-top:28px} .fsb{width:34px;height:34px;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.35);font-size:9px;font-weight:700;cursor:pointer;transition:all .2s;font-family:var(--ss)} .fsb:hover{border-color:var(--gd);color:var(--gd)} .flic{font-size:10.5px;font-weight:300;color:rgba(255,255,255,.18);display:block;margin-top:22px} .fch{font-size:8.5px;font-weight:600;letter-spacing:.4em;text-transform:uppercase;color:var(--gd);margin-bottom:26px} .fl{display:block;font-size:13px;font-weight:300;color:rgba(255,255,255,.4);margin-bottom:14px;cursor:pointer;transition:color .2s;text-decoration:none} .fl:hover{color:rgba(255,255,255,.82)} .fbot{padding-top:36px;border-top:1px solid rgba(255,255,255,.055);display:flex;justify-content:space-between;align-items:center;gap:20px} .fcopy{font-size:11px;font-weight:300;color:rgba(255,255,255,.2);letter-spacing:.06em} .fleg{display:flex;gap:24px} .fll{font-size:11px;font-weight:300;color:rgba(255,255,255,.2);cursor:pointer;transition:color .2s} .fll:hover{color:rgba(255,255,255,.5)} /* ─ KEYFRAMES ─ */ @keyframes hIn{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}} @keyframes mq{from{transform:translateX(0)}to{transform:translateX(-50%)}} @keyframes scPls{0%,100%{opacity:.22;width:40px}50%{opacity:.55;width:54px}} /* ─ RESPONSIVE ─ */ @media(max-width:960px){ .nvc,.nvr .nsoc{display:none}.ham{display:block} .nav{padding:0 24px} .sec,.secsm{padding:68px 24px} .hcon{padding:0 24px}.hscr{left:24px} .pgrid,.pkgrid,.tgrid,.deals,.bloggrid,.teamgrid{grid-template-columns:1fr} .sbar{grid-template-columns:1fr 1fr} .si{border-bottom:1px solid rgba(10,22,40,.1)} .si:nth-child(3),.si:nth-child(4){border-bottom:none} .si:nth-child(even){border-right:none} .dgrid{grid-template-columns:1fr 1fr;grid-template-rows:auto} .dc:first-child{grid-column:1/-1;grid-row:auto;height:300px} .dc{height:220px} .vpwrap{grid-template-columns:1fr} .vpimg{min-height:280px} .procgrid{grid-template-columns:1fr 1fr}.procline{display:none} .ugcta{grid-template-columns:1fr;padding:68px 24px} .fstrip{flex-direction:column;padding:36px 24px;gap:20px;text-align:center;align-items:center} .pkintro{flex-direction:column;gap:32px}.pkil{flex:none} .news{grid-template-columns:1fr;gap:40px;padding:68px 24px} .creds{padding:28px 24px} .creds-inner{flex-wrap:wrap} .cred{min-width:calc(50% - 1px);flex:none} .fgr{grid-template-columns:1fr 1fr;gap:44px} .foot{padding:68px 24px 44px} .fbot{flex-direction:column;text-align:center} .plhc{padding:0 24px 48px}.plbod{padding:56px 24px} .fgrid{grid-template-columns:1fr}.tsgrid{grid-template-columns:1fr 1fr} .plbl{display:none}.dhead{flex-direction:column;align-items:flex-start} .float-cta{bottom:16px;right:16px;padding:12px 20px;font-size:9px} .faqq{padding:20px 24px} .faqainner{padding:0 24px 24px} } @media(max-width:500px){ .hh1,.hh1em{font-size:clamp(44px,13vw,60px)} .fgr{grid-template-columns:1fr} .procgrid{grid-template-columns:1fr} .cred{min-width:100%} } `; // ─── HOOKS ───────────────────────────────────────────────────────────────── function useReveal(page) { useEffect(() => { const obs = new IntersectionObserver( entries => entries.forEach(e => { if (e.isIntersecting) e.target.classList.add("vis"); }), { threshold: 0.1 } ); const timer = setTimeout(() => { document.querySelectorAll(".rv").forEach(el => obs.observe(el)); }, 200); return () => { clearTimeout(timer); obs.disconnect(); }; }, [page]); } // ─── COMPONENTS ──────────────────────────────────────────────────────────── function Nav({ setPage, scrolled, open, setOpen }) { return ( <>
Expert planning, preferred-partner access, and VIP perks at the world's finest hotels and cruise lines — unlocked through our relationships, and always free to you.
When you book direct, you're a reservation. When we book for you, you're a VIP.
{c.b}
A recent client booked a room at the Four Seasons Resort Maui — at the exact same rate as booking direct. Here's what changed.
*Based on actual client booking. Perks subject to availability through preferred partner programs.
Limited-time arrangements with our preferred partners — each includes VIP perks at no additional cost.
These aren't upgrades you can buy or request. They come through our preferred partner status — secured before you arrive, included on every eligible booking.
{p.body}
Every recommendation comes from firsthand experience. Our advisors have collectively visited 80+ countries, stayed in over 500 properties, and sailed on every major cruise line. They don't recommend places they haven't been.
{t.bio}
How is it free? We're compensated by the hotels, cruise lines, and operators we book — not by you. You receive expert planning, curated itineraries, and VIP access. The industry pays us to bring them exceptional clients. Everyone wins — including you.
Inspired by the best agencies in the Virtuoso network — and then some. We don't just book your trip. We design it, activate your access, manage every detail, and stay connected after you return.
{s.body}
"{t.quote}"
Our advisors write about what they actually know — the hotels they've slept in, the cruises they've sailed, the tricks that make the difference. No sponsored content, ever.
{b.excerpt}
Exclusive hotel intel, curated deals, destination guides, and expert insights from our advisors — delivered to your inbox. No noise. No sponsored posts. Just genuinely useful travel intelligence.
Watch for your first Insider Brief in the next few days.
> ) : ( <> setEmail(e.target.value)} />No spam. Unsubscribe anytime. We only send what we'd want to read ourselves.
> )}If you've already confirmed a hotel or cruise directly, reach out before you arrive. Through our preferred partner programs, we can often attach room upgrades, daily breakfast, and resort credits to existing reservations — at no additional cost.
Your dedicated advisor will be in touch within one business day.
We can't wait to start designing your journey.
The more you share, the better we can design it. No obligation — and our planning is always free.
Your advisor responds within one business day. Planning is always complimentary — no fees, ever.