:root{
  --navy:#10243D; --navy-deep:#0B1B2E; --pink:#E4187E; --pink-soft:#F49AC6;
  --teal:#7FD8D2; --cream:#FAF5EE; --cream-2:#FBF8F3; --bg:#E7E2DA;
  --ink:#43556a; --muted:#8a97a6; --line:#E2DACd; --line-2:#EFE7DA;
  --pad:44px;
  --poppins:'Poppins',sans-serif; --body:'Nunito Sans',sans-serif; --script:'Caveat',cursive;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
html,body{margin:0;}
body{background:var(--bg); font-family:var(--body); color:var(--navy);}
a{color:inherit;}
img{display:block; max-width:100%;}
input,select,textarea{font-family:var(--body);}
input:focus,select:focus,textarea:focus{outline:none; border-color:var(--pink);}
@keyframes ca-pop{from{opacity:0; transform:translateY(14px) scale(.97);} to{opacity:1; transform:none;}}
@keyframes ca-fade{from{opacity:0;} to{opacity:1;}}
@keyframes ca-kenburns{from{transform:scale(1);} to{transform:scale(1.09);}}

.site{width:100%; max-width:1280px; margin:0 auto; background:var(--cream); box-shadow:0 40px 90px -50px rgba(16,36,61,.5);}
.site.white{background:#fff;}

/* ---------- HEADER ---------- */
.header{background:var(--navy); padding:20px var(--pad); display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; position:sticky; top:0; z-index:50;}
.brand{display:flex; align-items:center; gap:14px; text-decoration:none;}
.brand img{width:52px; height:52px; border-radius:50%; object-fit:cover;}
.brand-name{font-family:var(--poppins); font-weight:800; color:#fff; font-size:19px; letter-spacing:.02em; line-height:1; display:block;}
.brand-tag{font-family:var(--script); font-weight:700; color:var(--pink); font-size:19px; margin-top:2px; line-height:1; display:block;}
.nav{display:flex; align-items:center; gap:26px; font-family:var(--poppins); font-weight:600; font-size:13px; letter-spacing:.08em; color:#cdd7e3;}
.nav a{text-decoration:none; transition:color .2s;}
.nav a:hover{color:#fff;}
.nav a.active{color:#fff;}
.btn-enquire{cursor:pointer; font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.08em; color:#fff; background:var(--pink); padding:13px 24px; border-radius:999px; text-decoration:none; border:none; transition:transform .2s, box-shadow .2s;}
.btn-enquire:hover{transform:translateY(-2px); box-shadow:0 10px 22px -10px rgba(228,24,126,.8);}
.nav-toggle{display:none; background:none; border:none; cursor:pointer; width:30px; height:24px; padding:0;}
.nav-toggle span{display:block; height:3px; background:#fff; border-radius:2px; margin:5px 0; transition:.3s;}

/* ---------- BUTTONS ---------- */
.btn{font-family:var(--poppins); font-weight:700; font-size:14px; letter-spacing:.06em; padding:16px 30px; border-radius:999px; text-decoration:none; display:inline-block; cursor:pointer; border:none; transition:transform .2s, box-shadow .2s;}
.btn-pink{color:#fff; background:var(--pink);}
.btn-pink:hover{transform:translateY(-2px); box-shadow:0 12px 26px -12px rgba(228,24,126,.85);}
.btn-ghost{color:#fff; border:1.5px solid rgba(255,255,255,.55); background:transparent;}
.btn-ghost:hover{background:rgba(255,255,255,.1);}
.btn-white{color:var(--pink); background:#fff;}
.btn-white:hover{transform:translateY(-2px); box-shadow:0 12px 26px -12px rgba(0,0,0,.4);}
.btn-ghost-w{color:#fff; border:1.5px solid rgba(255,255,255,.7); background:transparent;}
.btn-ghost-w:hover{background:rgba(255,255,255,.12);}
.pill-btn{font-family:var(--poppins); font-weight:700; font-size:12px; letter-spacing:.08em; color:#fff; background:var(--pink); padding:12px 22px; border-radius:999px;}

/* ---------- HOME HERO ---------- */
.home-hero-wrap{position:relative; background:var(--navy); padding:36px var(--pad) 0;}
.home-hero{position:relative; border-radius:24px; overflow:hidden; height:520px;}
.home-hero img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; animation:ca-kenburns 20s ease-in-out infinite alternate;}
.home-hero .scrim{position:absolute; inset:0; background:linear-gradient(90deg, rgba(16,36,61,.86) 0%, rgba(16,36,61,.62) 42%, rgba(16,36,61,.18) 100%);}
.home-hero-inner{position:relative; max-width:620px; padding:76px 0 0 60px;}
.home-hero h1{font-family:var(--poppins); font-weight:800; color:#fff; font-size:66px; line-height:1.02; margin:18px 0 0; letter-spacing:-.02em;}
.home-hero h1 .script{font-family:var(--script); font-weight:700; color:var(--pink-soft); font-size:82px;}
.home-hero p{font-family:var(--body); color:#dbe4ee; font-size:18px; line-height:1.6; margin:20px 0 0; max-width:460px;}
.hero-btns{display:flex; gap:14px; margin-top:32px; flex-wrap:wrap;}
.wave-top{display:block; width:100%; height:auto; margin-top:-2px;}

/* ---------- CENTERED HERO (about/contact/cruises/legal) ---------- */
.hero{background:var(--navy); padding:56px var(--pad) 58px; text-align:center;}
.eyebrow{font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.3em; color:var(--teal); text-transform:uppercase;}
.hero h1{font-family:var(--poppins); font-weight:800; color:#fff; font-size:56px; line-height:1.03; margin:14px 0 0; letter-spacing:-.02em;}
.hero p{font-family:var(--body); color:#c3cfdd; font-size:18px; line-height:1.6; margin:16px auto 0; max-width:620px;}
.hero .script{font-family:var(--script); font-weight:700; color:var(--pink-soft); font-size:32px; margin-top:12px;}

/* ---------- SECTION / FEATURED (home) ---------- */
.section{padding:26px var(--pad) 64px; background:#fff;}
.sec-head{display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:30px; flex-wrap:wrap;}
.kicker{font-family:var(--poppins); font-weight:700; font-size:12px; letter-spacing:.28em; color:var(--pink); text-transform:uppercase;}
.sec-head h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:40px; margin:8px 0 0; letter-spacing:-.01em;}
.view-all{font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.06em; color:var(--pink); text-decoration:none;}
.feat-grid{display:grid; grid-template-columns:1.15fr 1fr; gap:22px;}
.feat-card{text-decoration:none; border-radius:20px; overflow:hidden; box-shadow:0 24px 50px -30px rgba(16,36,61,.5); display:block; transition:transform .25s, box-shadow .25s;}
.feat-card:hover{transform:translateY(-4px); box-shadow:0 30px 60px -28px rgba(16,36,61,.6);}
.feat-big-media{position:relative; height:320px; overflow:hidden;}
.feat-big-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.feat-card:hover .feat-big-media img{transform:scale(1.08);}
.tag{position:absolute; top:16px; left:16px; background:var(--teal); color:var(--navy); font-family:var(--poppins); font-weight:700; font-size:11px; letter-spacing:.1em; padding:6px 12px; border-radius:999px;}
.feat-big-body{background:var(--navy); padding:26px 26px 28px; color:#fff;}
.feat-big-body h3{font-family:var(--poppins); font-weight:700; font-size:22px; margin:0; line-height:1.2;}
.feat-big-body p{font-family:var(--body); color:#b9c6d6; font-size:14px; line-height:1.6; margin:10px 0 14px;}
.feat-price-row{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;}
.feat-price{font-family:var(--poppins); font-weight:600; font-size:13px; color:#b9c6d6;}
.feat-price b{color:var(--teal); font-weight:800; font-size:22px;}
.feat-stack{display:flex; flex-direction:column; gap:22px;}
.feat-mini{text-decoration:none; border-radius:20px; overflow:hidden; background:var(--navy); display:grid; grid-template-columns:.85fr 1fr; box-shadow:0 24px 50px -30px rgba(16,36,61,.5); transition:transform .25s, box-shadow .25s;}
.feat-mini:hover{transform:translateY(-4px); box-shadow:0 30px 60px -28px rgba(16,36,61,.6);}
.feat-mini-media{position:relative; min-height:150px; overflow:hidden;}
.feat-mini-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.feat-mini:hover .feat-mini-media img{transform:scale(1.08);}
.feat-mini-body{padding:18px; color:#fff;}
.feat-mini-kick{font-family:var(--poppins); font-weight:700; font-size:10px; letter-spacing:.1em; color:var(--teal);}
.feat-mini-body h3{font-family:var(--poppins); font-weight:700; font-size:16px; margin:5px 0 6px; line-height:1.25;}
.feat-mini-body p{font-family:var(--body); color:#b9c6d6; font-size:12px; line-height:1.5; margin:0 0 8px;}
.feat-mini-price{font-family:var(--poppins); font-weight:600; font-size:12px; color:#b9c6d6;}
.feat-mini-price b{color:var(--teal); font-weight:800; font-size:17px;}

/* ---------- ABOUT BAND (home) ---------- */
.about{background:var(--navy); padding:64px var(--pad); display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center;}
.about h2{font-family:var(--poppins); font-weight:800; color:#fff; font-size:38px; margin:10px 0 0; line-height:1.1;}
.about p{font-family:var(--body); color:#c3cfdd; font-size:16px; line-height:1.7; margin:20px 0 0;}
.about p + p{margin-top:14px;}
.about .kicker{color:var(--teal);}
.about .script{font-family:var(--script); font-weight:700; color:var(--pink-soft); font-size:34px; margin-top:18px;}
.about-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.about-grid img{width:100%; border-radius:18px; object-fit:cover;}
.about-grid img:first-child{grid-row:span 2; height:100%;}
.about-grid img:nth-child(2),.about-grid img:nth-child(3){height:170px;}

/* ---------- SPLIT (about page) ---------- */
.split{padding:64px var(--pad); display:grid; grid-template-columns:1fr 1fr; gap:52px; align-items:center;}
.split h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:40px; margin:10px 0 0; line-height:1.08;}
.split p{font-family:var(--body); color:var(--ink); font-size:17px; line-height:1.75; margin:22px 0 0;}
.split p + p{margin-top:16px;}
.media{border-radius:22px; overflow:hidden; box-shadow:0 28px 60px -34px rgba(16,36,61,.55);}
.media img{width:100%; display:block;}
.sign{font-family:var(--script); font-weight:700; color:var(--pink); font-size:30px; margin-top:18px;}
.stats{background:#FDEBF4; padding:40px var(--pad); display:flex; align-items:center; justify-content:space-around; gap:24px; flex-wrap:wrap;}
.stat{text-align:center;}
.stat .n{font-family:var(--poppins); font-weight:800; color:var(--pink); font-size:38px;}
.stat .l{font-family:var(--body); color:#7a5566; font-size:14px;}
.stat-div{width:1px; height:48px; background:#F3C6DE;}

/* ---------- COMMUNITY / CTA ---------- */
.community{background:var(--cream); padding:52px var(--pad); display:flex; align-items:center; justify-content:space-between; gap:30px; flex-wrap:wrap; border-top:1px solid var(--line-2);}
.community h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:32px; margin:8px 0 8px;}
.community p{font-family:var(--body); color:#5b6a7a; font-size:16px; margin:0; max-width:560px;}
.cta{background:var(--pink); padding:56px var(--pad); display:flex; align-items:center; justify-content:space-between; gap:30px; flex-wrap:wrap;}
.cta h2{font-family:var(--poppins); font-weight:800; color:#fff; font-size:38px; margin:0; line-height:1.05;}
.cta p{font-family:var(--body); color:#ffe1f0; font-size:16px; margin:12px 0 0;}
.cta-btns{display:flex; gap:14px; flex-wrap:wrap;}
/* CTA band variant used on the cruises page (navy, centered) */
.cta-band{background:var(--navy); padding:60px var(--pad); text-align:center;}
/* Centre the band's buttons without disturbing the home page's own .cta-btns row. */
.cta-band .cta-btns{justify-content:center;}
.cta-band h2{font-family:var(--poppins); font-weight:800; color:#fff; font-size:38px; margin:10px 0 0; line-height:1.08;}
.cta-band p{font-family:var(--body); color:#c3cfdd; font-size:16px; line-height:1.7; margin:16px auto 26px; max-width:560px;}
.cta-contact{display:flex; align-items:center; justify-content:center; gap:32px; margin-top:34px; flex-wrap:wrap;}
.cta-contact a{font-family:var(--body); color:#dbe4ee; font-size:15px; text-decoration:none;}
.cta-contact span{font-family:var(--body); color:#8ea0b4; font-size:15px;}

/* ---------- CONTACT ---------- */
.contact{padding:60px var(--pad); display:grid; grid-template-columns:.85fr 1.15fr; gap:48px; align-items:start;}
.contact h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:34px; margin:10px 0 24px; line-height:1.1;}
.details{display:flex; flex-direction:column; gap:20px;}
.detail .dl{font-family:var(--poppins); font-weight:700; font-size:11px; letter-spacing:.14em; color:#9aa6b4; text-transform:uppercase; margin-bottom:5px;}
.detail .email{font-family:var(--body); font-weight:700; color:var(--navy); font-size:18px; text-decoration:none;}
.detail .email:hover{color:var(--pink);}
.detail .note{font-family:var(--body); color:#7a8798; font-size:14px; margin-top:4px; max-width:340px; line-height:1.5;}
.detail .visit{font-family:var(--body); color:var(--ink); font-size:17px; line-height:1.5;}
.socials{display:flex; gap:10px; flex-wrap:wrap;}
.socials a{font-family:var(--poppins); font-weight:700; font-size:12px; color:#fff; background:var(--navy); padding:10px 18px; border-radius:999px; text-decoration:none; transition:transform .2s;}
.socials a:hover{transform:translateY(-2px);}
.card{background:#fff; border-radius:24px; padding:38px; box-shadow:0 28px 60px -40px rgba(16,36,61,.5);}
.card h3{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:24px; margin:0 0 4px;}
.card .lead{font-family:var(--body); color:#5b6a7a; font-size:14px; margin:0 0 24px;}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.field{display:block;}
.col2{grid-column:span 2;}
.cap{font-family:var(--poppins); font-weight:600; font-size:12px; letter-spacing:.04em; color:var(--navy); text-transform:uppercase;}
.f-input{width:100%; margin-top:7px; padding:13px 14px; border:1.5px solid var(--line); border-radius:12px; font-size:15px; color:var(--navy); background:var(--cream-2);}
textarea.f-input{resize:vertical;}
.btn-send{width:100%; margin-top:18px; font-family:var(--poppins); font-weight:700; font-size:15px; letter-spacing:.05em; color:#fff; background:var(--pink); border:none; padding:16px; border-radius:999px; cursor:pointer; transition:transform .2s, box-shadow .2s;}
.btn-send:hover{transform:translateY(-2px); box-shadow:0 12px 26px -12px rgba(228,24,126,.85);}
.fineprint{font-family:var(--body); color:#9aa6b4; font-size:12px; text-align:center; margin-top:12px;}
.success{text-align:center; padding:30px 10px;}
.success .tick{width:64px; height:64px; border-radius:50%; background:#E4F3F2; display:flex; align-items:center; justify-content:center; margin:0 auto 18px; font-family:var(--poppins); font-weight:800; color:#2AA6A0; font-size:30px;}
.success h3{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:26px; margin:0;}
.success p{font-family:var(--body); color:#5b6a7a; font-size:16px; line-height:1.6; margin:12px auto 0; max-width:400px;}
.success .script{font-family:var(--script); font-weight:700; color:var(--pink); font-size:28px; margin-top:16px;}
.btn-again{display:inline-block; margin-top:20px; font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.05em; color:var(--navy); background:#fff; border:1.5px solid var(--navy); padding:13px 26px; border-radius:999px; cursor:pointer; text-decoration:none;}

/* ---------- CRUISES: FILTER + GRID ---------- */
.filter-wrap{padding:34px var(--pad) 0; background:var(--cream);}
.filter-lead{font-family:var(--poppins); font-weight:700; font-size:11px; letter-spacing:.18em; color:var(--muted); text-transform:uppercase; margin-bottom:12px;}
.filter{display:flex; flex-wrap:wrap; gap:10px;}
.pill{cursor:pointer; font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.02em; color:var(--navy); background:#fff; border:1.5px solid var(--line); padding:10px 18px; border-radius:999px; transition:all .18s ease;}
.pill .count{color:var(--muted); font-weight:600; margin-left:6px;}
.pill:hover{border-color:var(--navy);}
.pill.active{background:var(--navy); color:#fff; border-color:var(--navy);}
.pill.active .count{color:var(--teal);}
.grid-wrap{padding:26px var(--pad) 60px; background:var(--cream);}
.grid{display:grid; grid-template-columns:1fr 1fr; gap:24px;}
.empty{text-align:center; font-family:var(--body); color:var(--muted); font-size:16px; padding:40px 0;}
.loading{text-align:center; font-family:var(--body); color:var(--muted); font-size:16px; padding:50px 0;}
.cruise-card{background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 22px 48px -34px rgba(16,36,61,.5); display:flex; flex-direction:column; transition:transform .25s ease, box-shadow .25s ease;}
.cruise-card:hover{transform:translateY(-4px); box-shadow:0 30px 60px -30px rgba(16,36,61,.6);}
.card-media{position:relative; height:236px; overflow:hidden;}
.card-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.cruise-card:hover .card-media img{transform:scale(1.08);}
.card-media .scrim{position:absolute; inset:0; background:linear-gradient(180deg, rgba(16,36,61,0) 55%, rgba(16,36,61,.55) 100%);}
.badge{position:absolute; top:14px; font-family:var(--poppins); font-weight:700; font-size:11px; padding:6px 12px; border-radius:999px;}
.badge-craft{left:14px; background:var(--teal); color:var(--navy); letter-spacing:.08em;}
.badge-year{right:14px; background:rgba(16,36,61,.82); color:#fff; letter-spacing:.1em;}
.card-body{padding:22px 22px 24px; display:flex; flex-direction:column; flex:1;}
.card-title{font-family:var(--poppins); font-weight:700; color:var(--navy); font-size:21px; line-height:1.22; margin:0;}
.card-host{font-family:var(--body); color:var(--pink); font-weight:700; font-size:13.5px; margin:8px 0 14px;}
.card-specs{display:flex; flex-direction:column; gap:7px; margin-bottom:16px;}
.spec{display:flex; gap:10px; font-family:var(--body); font-size:14px; color:var(--ink);}
.spec .lbl{font-family:var(--poppins); font-weight:700; font-size:10px; letter-spacing:.1em; color:#9aa6b4; text-transform:uppercase; width:66px; flex:0 0 auto; padding-top:2px;}
.grow{flex:1;}
.card-foot{border-top:1px solid var(--line-2); padding-top:16px;}
.price-row{display:flex; align-items:baseline; gap:8px;}
.price-from,.price-sub{font-family:var(--body); color:var(--muted); font-size:13px;}
.price{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:26px;}
.card-note{font-family:var(--body); color:#a06; font-size:12px; margin-top:4px;}
.card-actions{display:flex; gap:10px; margin-top:16px;}
.cbtn{cursor:pointer; flex:1; text-align:center; font-family:var(--poppins); font-weight:700; font-size:12px; letter-spacing:.05em; padding:12px 10px; border-radius:999px; text-decoration:none; border:none;}
.cbtn-outline{color:var(--navy); border:1.5px solid var(--navy); background:transparent;}
.cbtn-solid{color:#fff; background:var(--pink);}
.grid-note{font-family:var(--body); color:var(--muted); font-size:13px; text-align:center; margin-top:26px;}

/* ---------- FOOTER ---------- */
.footer{background:var(--navy-deep); padding:48px var(--pad) 22px;}
.footer-cols{display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:32px;}
.foot-brand{display:flex; align-items:center; gap:12px;}
.foot-brand img{width:48px; height:48px; border-radius:50%;}
.foot-brand-name{font-family:var(--poppins); font-weight:800; color:#fff; font-size:16px;}
.foot-script{font-family:var(--script); font-weight:700; color:var(--pink-soft); font-size:22px; margin-top:12px;}
.foot-head{font-family:var(--poppins); font-weight:700; color:var(--teal); font-size:12px; letter-spacing:.16em; text-transform:uppercase; margin-bottom:14px;}
.foot-links{font-family:var(--body); color:#a9b7c7; font-size:14px; line-height:2.1;}
.foot-links a{text-decoration:none;}
.foot-links a:hover{color:#fff;}
.foot-contact{font-family:var(--body); color:#a9b7c7; font-size:14px; line-height:1.9;}
.foot-contact a{text-decoration:none;}
.legal-bar{margin-top:34px; padding-top:18px; border-top:1px solid rgba(255,255,255,.1); display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px;}
.legal-bar .copy{font-family:var(--body); color:#6f8093; font-size:12.5px;}
.legal-links{display:flex; flex-wrap:wrap; gap:20px;}
.legal-links a{font-family:var(--poppins); font-weight:600; color:#a9b7c7; font-size:12px; letter-spacing:.04em; text-decoration:none;}
.legal-links a:hover{color:#fff;}

/* ---------- MINI FOOTER (legal pages) ---------- */
.mini-footer{background:var(--navy-deep); padding:40px var(--pad); text-align:center;}
.mini-footer .fscript{font-family:var(--script); font-weight:700; color:var(--pink-soft); font-size:22px; margin-bottom:10px;}
.mini-footer a{font-family:var(--body); color:#a9b7c7; font-size:14px; text-decoration:none;}
.mini-footer .legal{margin-top:16px; font-family:var(--body); color:#6f8093; font-size:12.5px;}

/* ---------- LEGAL CONTENT ---------- */
.content{padding:56px var(--pad); max-width:820px; margin:0 auto;}
.notice{background:#FDEBF4; border:1px solid #f6c6dd; border-radius:14px; padding:16px 20px; font-family:var(--body); color:#7a2352; font-size:14px; line-height:1.6; margin-bottom:36px;}
.content h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:22px; margin:34px 0 12px;}
.content p, .content li{font-family:var(--body); color:var(--ink); font-size:16px; line-height:1.7;}
.content ul{padding-left:20px;}
.content li{margin-bottom:8px;}

/* ---------- MODALS ---------- */
.overlay{position:fixed; inset:0; z-index:1000; background:rgba(11,27,46,.55); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); display:flex; align-items:flex-start; justify-content:center; padding:28px 24px; overflow:auto; animation:ca-fade .2s ease;}
.overlay.center{align-items:center;}
.modal{position:relative; width:680px; max-width:100%; background:#fff; border-radius:24px; overflow:hidden; box-shadow:0 40px 100px -24px rgba(0,0,0,.55); animation:ca-pop .28s cubic-bezier(.2,.8,.2,1); margin:auto;}
.modal-hero{position:relative; height:150px; background:var(--navy);}
.modal-hero img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.modal-hero .scrim{position:absolute; inset:0; background:linear-gradient(180deg, rgba(16,36,61,.35) 0%, rgba(16,36,61,.85) 100%);}
.modal-close{position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:50%; border:none; background:rgba(255,255,255,.9); color:var(--navy); font-size:17px; font-weight:700; cursor:pointer; line-height:1; z-index:3;}
.modal-hero-cap{position:absolute; left:0; right:0; bottom:0; padding:16px 30px;}
.modal-hero-eyebrow{font-family:var(--poppins); font-weight:700; font-size:10px; letter-spacing:.2em; color:var(--teal); text-transform:uppercase;}
.modal-hero-title{font-family:var(--poppins); font-weight:800; color:#fff; font-size:20px; line-height:1.15; margin-top:3px;}
.modal-body{padding:24px 30px 30px;}
.wiz-select{margin-bottom:18px;}
/* Enquiry captcha: a short sum, so the answer box shouldn't be full width. */
.cap-check .f-input{max-width:120px;}
.cap-check b{color:var(--pink);}
.muted-hint{font-weight:400; text-transform:none; letter-spacing:0; color:#7a8798;}
.summary{background:var(--cream); border:1px solid var(--line-2); border-radius:14px; padding:16px 18px; margin-bottom:18px; display:flex; flex-wrap:wrap; gap:18px;}
.summary .k{font-family:var(--poppins); font-weight:700; font-size:10px; letter-spacing:.1em; color:#9aa6b4; text-transform:uppercase;}
.summary .v{font-family:var(--body); color:var(--navy); font-size:14px; font-weight:600; margin-top:2px;}
.summary .v.pink{font-family:var(--poppins); color:var(--pink); font-size:16px; font-weight:800; margin-top:1px;}
.dyn-field{margin-bottom:16px;}
.dyn-field .help{font-family:var(--body); color:#7a8798; font-size:12.5px; margin:4px 0 0; line-height:1.5;}
.req-star{color:var(--pink);}
.group-label{font-family:var(--poppins); font-weight:600; font-size:12px; letter-spacing:.04em; color:var(--navy); text-transform:uppercase; margin-bottom:8px;}
.stack{display:flex; flex-direction:column; gap:8px;}
.opt{display:flex; align-items:center; gap:10px; padding:11px 14px; border:1.5px solid var(--line); border-radius:12px; cursor:pointer; font-family:var(--body); font-size:14px; color:var(--navy);}
.opt input{accent-color:var(--pink); width:auto; margin:0;}
.info-box{background:var(--cream); border:1px solid var(--line-2); border-radius:14px; padding:16px 18px; margin-bottom:16px;}
.info-box .h{font-family:var(--poppins); font-weight:700; color:var(--navy); font-size:14px; margin-bottom:4px;}
.info-box .b{font-family:var(--body); color:#5b6a7a; font-size:13.5px; line-height:1.55;}
.form-error{background:#FDECEA; color:#b3261e; border:1px solid #f5c6c2; border-radius:12px; padding:12px 14px; font-family:var(--body); font-size:14px; margin-bottom:16px;}
.field-error{color:#b3261e; font-family:var(--body); font-size:12.5px; margin-top:5px;}
.f-input:invalid{border-color:var(--line);}
.wiz-submit{width:100%; margin-top:8px; font-family:var(--poppins); font-weight:700; font-size:14px; letter-spacing:.05em; color:#fff; background:var(--pink); border:none; padding:15px; border-radius:999px; cursor:pointer;}
.wiz-submit:disabled{opacity:.6; cursor:default;}
.wiz-success{text-align:center; padding:38px 34px 40px;}
.wiz-success .tick{width:66px; height:66px; border-radius:50%; background:#E4F3F2; display:flex; align-items:center; justify-content:center; margin:0 auto 18px; font-family:var(--poppins); font-weight:800; color:#2AA6A0; font-size:32px;}
.wiz-success h3{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:26px; margin:0;}
.wiz-success p{font-family:var(--body); color:#5b6a7a; font-size:16px; line-height:1.6; margin:12px auto 0; max-width:440px;}
.wiz-success .script{font-family:var(--script); font-weight:700; color:var(--pink); font-size:28px; margin-top:16px;}
.wiz-success .done{margin-top:22px; font-family:var(--poppins); font-weight:700; font-size:13px; letter-spacing:.05em; color:#fff; background:var(--navy); border:none; padding:14px 30px; border-radius:999px; cursor:pointer;}

/* PDF modal */
.pdf-modal{width:1040px; max-width:100%; height:90vh; background:#fff; border-radius:18px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 40px 100px -24px rgba(0,0,0,.55); animation:ca-pop .28s cubic-bezier(.2,.8,.2,1); margin:auto;}
.pdf-top{display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 20px; background:var(--navy);}
.pdf-title{font-family:var(--poppins); font-weight:700; color:#fff; font-size:15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.pdf-actions{display:flex; align-items:center; gap:10px; flex:0 0 auto;}
.pdf-open{font-family:var(--poppins); font-weight:700; font-size:11px; letter-spacing:.06em; color:var(--navy); background:var(--teal); padding:9px 16px; border-radius:999px; text-decoration:none;}
.pdf-close{width:36px; height:36px; border-radius:50%; border:none; background:rgba(255,255,255,.14); color:#fff; font-size:16px; font-weight:700; cursor:pointer; line-height:1;}
.pdf-modal iframe{flex:1; width:100%; border:none; background:#F3ECE1;}

/* ---------- WELCOME POPUP ---------- */
.cap-pop{position:fixed; inset:0; z-index:2000; display:flex; align-items:center; justify-content:center; padding:22px; background:rgba(11,27,46,.55); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); opacity:0; visibility:hidden; transition:opacity .3s ease, visibility .3s;}
.cap-pop.show{opacity:1; visibility:visible;}
.cap-card{position:relative; width:420px; max-width:100%; background:#fff; border-radius:24px; overflow:hidden; box-shadow:0 40px 100px -24px rgba(0,0,0,.55); transform:translateY(18px) scale(.97); transition:transform .35s cubic-bezier(.2,.8,.2,1);}
.cap-pop.show .cap-card{transform:none;}
.cap-x{position:absolute; top:12px; right:12px; width:34px; height:34px; border-radius:50%; border:none; background:rgba(255,255,255,.85); color:#10243D; font-size:15px; font-weight:700; cursor:pointer; z-index:2;}
.cap-top{background:#10243D; padding:26px 24px 20px; text-align:center;}
.cap-top img{width:64px; height:64px; border-radius:50%; object-fit:cover; margin:0 auto; display:block;}
.cap-tag{font-family:var(--script); font-weight:700; color:#F49AC6; font-size:22px; margin-top:8px;}
.cap-body{padding:26px 30px 30px; text-align:center;}
.cap-body h3{font-family:var(--poppins); font-weight:800; color:#10243D; font-size:24px; margin:0 0 8px;}
.cap-body p{color:#5b6a7a; font-size:14.5px; line-height:1.6; margin:0 0 20px;}
.cap-fb{display:block; font-family:var(--poppins); font-weight:700; font-size:14px; letter-spacing:.05em; color:#fff; background:#E4187E; padding:15px; border-radius:999px; text-decoration:none; transition:transform .2s, box-shadow .2s;}
.cap-fb:hover{transform:translateY(-2px); box-shadow:0 12px 26px -12px rgba(228,24,126,.85);}
.cap-or{position:relative; text-align:center; margin:18px 0 14px;}
.cap-or:before{content:''; position:absolute; top:50%; left:0; right:0; height:1px; background:#EFE7DA;}
.cap-or span{position:relative; background:#fff; padding:0 12px; font-family:var(--poppins); font-weight:600; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:#9aa6b4;}
.cap-form{display:flex; gap:8px;}
.cap-form input{flex:1; min-width:0; padding:13px 14px; border:1.5px solid #E2DACd; border-radius:12px; font-size:14px; color:#10243D; background:#FBF8F3;}
.cap-form button{font-family:var(--poppins); font-weight:700; font-size:12px; letter-spacing:.04em; color:#fff; background:#10243D; border:none; padding:0 18px; border-radius:12px; cursor:pointer; white-space:nowrap;}
.cap-later{margin-top:16px; background:none; border:none; color:#9aa6b4; font-size:13px; cursor:pointer; text-decoration:underline;}

/* ---------- GALLERY ---------- */
.gal-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.gal-item{position:relative; display:block; width:100%; padding:0; border:none; border-radius:18px; overflow:hidden; cursor:zoom-in; background:var(--navy); box-shadow:0 18px 40px -28px rgba(16,36,61,.9); text-align:left; font-family:inherit;}
.gal-item img{width:100%; height:260px; object-fit:cover; transition:transform .5s ease;}
.gal-item:hover img,.gal-item:focus-visible img{transform:scale(1.06);}
.gal-item:focus-visible{outline:3px solid var(--pink); outline-offset:3px;}
/* The caption sits over the photo, so it needs its own gradient to stay legible
   whatever the photo behind it looks like. */
.gal-cap{position:absolute; left:0; right:0; bottom:0; padding:34px 18px 16px; display:block; background:linear-gradient(180deg, rgba(16,36,61,0) 0%, rgba(11,27,46,.88) 70%);}
.gal-title{display:block; font-family:var(--poppins); font-weight:700; color:#fff; font-size:15px; line-height:1.25;}
/* Clamped to 2 lines so a long description can't swamp the photo — the full text
   is shown in the lightbox. */
.gal-desc{display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  font-family:var(--body); color:#d6dfe9; font-size:12.5px; line-height:1.5; margin-top:4px;}
.gal-zoom{position:absolute; top:12px; right:12px; width:32px; height:32px; border-radius:50%; background:rgba(255,255,255,.92); color:var(--navy); font-size:14px; line-height:32px; text-align:center; opacity:0; transform:scale(.8); transition:opacity .25s, transform .25s;}
.gal-item:hover .gal-zoom,.gal-item:focus-visible .gal-zoom{opacity:1; transform:none;}

/* Lightbox: the full-size photo, opened from a thumbnail. */
.lb{position:relative; width:min(1100px,100%); margin:auto; animation:ca-pop .28s cubic-bezier(.2,.8,.2,1);}
.lb img{width:100%; max-height:78vh; object-fit:contain; border-radius:16px; background:var(--navy-deep);}
.lb-cap{margin-top:14px; text-align:center;}
.lb-title{font-family:var(--poppins); font-weight:700; color:#fff; font-size:17px;}
.lb-desc{font-family:var(--body); color:#cdd7e3; font-size:14px; line-height:1.6; margin-top:6px; max-width:70ch; margin-inline:auto;}
.lb-close{position:absolute; top:-6px; right:-6px; width:40px; height:40px; border-radius:50%; border:none; background:#fff; color:var(--navy); font-size:17px; font-weight:700; line-height:1; cursor:pointer; z-index:3; box-shadow:0 6px 18px -6px rgba(0,0,0,.6);}

/* ---------- TESTIMONIALS (home) ---------- */
.tmb{background:var(--cream-2); padding:56px 0 64px;}
.tmb-head{text-align:center; padding:0 var(--pad); margin-bottom:30px;}
.tmb-head h2{font-family:var(--poppins); font-weight:800; color:var(--navy); font-size:36px; margin:8px 0 0;}
.tmb-wrap{position:relative;}
/* The row people scroll. Snapping makes it land on a card rather than mid-quote. */
.tmb-viewport{overflow-x:auto; scroll-snap-type:x proximity; scroll-behavior:smooth; scrollbar-width:thin; padding:4px 0 14px;}
.tmb-viewport:focus-visible{outline:3px solid var(--pink); outline-offset:-3px; border-radius:12px;}
.tmb-viewport::-webkit-scrollbar{height:8px;}
.tmb-viewport::-webkit-scrollbar-track{background:transparent;}
.tmb-viewport::-webkit-scrollbar-thumb{background:var(--line); border-radius:999px;}
.tmb-viewport::-webkit-scrollbar-thumb:hover{background:var(--pink-soft);}
/* Only fade the edges once there's actually something to scroll to. */
.tmb-wrap.is-scrollable .tmb-viewport{-webkit-mask-image:linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);}
.tmb-track{display:flex; gap:18px; width:max-content; padding:0 var(--pad);}
/* When they all fit there's nothing to scroll, so centre them rather than
   leaving the row hugging the left edge. */
.tmb-wrap:not(.is-scrollable) .tmb-track{margin-inline:auto;}
.tmb-card{width:340px; flex:0 0 340px; margin:0; scroll-snap-align:center; background:#fff; border:1px solid var(--line-2); border-radius:18px; padding:26px 24px; display:flex; flex-direction:column; gap:14px; box-shadow:0 16px 34px -30px rgba(16,36,61,.9);}
/* Arrows: only shown (by site.js) when the row overflows. */
.tmb-nav{position:absolute; top:50%; transform:translateY(-50%); z-index:2; width:44px; height:44px; border-radius:50%; border:1px solid var(--line); background:#fff; color:var(--navy); font-size:22px; line-height:1; cursor:pointer; box-shadow:0 10px 24px -12px rgba(16,36,61,.7); transition:background .2s, color .2s, opacity .2s;}
.tmb-nav:hover{background:var(--pink); color:#fff; border-color:var(--pink);}
.tmb-nav:disabled{opacity:.35; cursor:default; background:#fff; color:var(--navy); border-color:var(--line);}
.tmb-nav.prev{left:8px;}
.tmb-nav.next{right:8px;}
.tmb-card blockquote{margin:0; font-family:var(--body); color:var(--ink); font-size:14.5px; line-height:1.75;}
.tmb-card blockquote::before{content:'“'; font-family:var(--poppins); font-weight:800; color:var(--pink); font-size:30px; line-height:0; vertical-align:-4px; margin-right:2px;}
.tmb-card blockquote::after{content:'”'; font-family:var(--poppins); font-weight:800; color:var(--pink); font-size:30px; line-height:0; vertical-align:-8px; margin-left:2px;}
.tmb-card figcaption{margin-top:auto; padding-top:12px; border-top:1px solid var(--line-2);}
.tmb-author{display:block; font-family:var(--poppins); font-weight:700; color:var(--navy); font-size:13.5px;}
.tmb-source{display:block; font-family:var(--body); color:var(--muted); font-size:12.5px; margin-top:2px;}

/* ---------- REVEAL ---------- */
.reveal{opacity:0; transform:translateY(20px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1; transform:none; transition:none;}
  html{scroll-behavior:auto;}
  .home-hero img{animation:none;}
  .cruise-card,.card-media img,.feat-big-media img,.feat-mini-media img{transition:none;}
  /* Jump rather than glide when the arrows are used. */
  .tmb-viewport{scroll-behavior:auto;}
  .gal-item img{transition:none;}
}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1024px){
  :root{--pad:32px;}
  .home-hero h1{font-size:52px;} .home-hero h1 .script{font-size:64px;}
  .hero h1{font-size:46px;}
  .about h2,.sec-head h2,.split h2,.tmb-head h2{font-size:32px;}
  .footer-cols{grid-template-columns:1fr 1fr;}
  .gal-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:820px){
  .nav-toggle{display:block; order:3;}
  .btn-enquire{order:2;}
  .nav{order:4; flex-basis:100%; display:none; flex-direction:column; align-items:flex-start; gap:16px; padding-top:10px;}
  .nav.open{display:flex;}
  .home-hero{height:auto; min-height:440px;}
  .home-hero-inner{padding:56px 24px 48px; max-width:none;}
  .feat-grid{grid-template-columns:1fr;}
  .about,.split{grid-template-columns:1fr; gap:30px;}
  .about-grid img:first-child{grid-row:auto; height:200px;}
  .split .media{order:-1;}
  .stat-div{display:none;}
  .grid{grid-template-columns:1fr;}
  .contact{grid-template-columns:1fr; gap:34px;}
  .cta-contact{gap:16px;}
}
@media (max-width:560px){
  :root{--pad:20px;}
  .home-hero h1{font-size:38px;} .home-hero h1 .script{font-size:48px;}
  .hero h1{font-size:36px;}
  .about h2,.sec-head h2,.cta h2,.community h2,.split h2,.contact h2,.cta-band h2,.tmb-head h2{font-size:26px;}
  .gal-grid{grid-template-columns:1fr; gap:14px;}
  .gal-item img{height:220px;}
  .tmb-card{width:280px; flex-basis:280px;}
  .lb-close{top:8px; right:8px;}
  .feat-mini{grid-template-columns:1fr;}
  .feat-mini-media{height:170px;}
  .about-grid{grid-template-columns:1fr 1fr;}
  .grid2{grid-template-columns:1fr;} .col2{grid-column:auto;}
  .card{padding:26px;}
  .footer-cols{grid-template-columns:1fr;}
  .cap-form{flex-direction:column;}
}
