:root{
  --navy:#0F1B2E;
  --navy-light:#16283F;
  --cream:#FAF6EC;
  --cream-dim:#F2ECDD;
  --gold:#C89B4A;
  --gold-dim:#8a6a2f;
  --teal:#2C6E63;
  --teal-dim:#1f4f47;
  --ink:#1A1A1A;
  --paper-line: rgba(15,27,46,0.15);
  --cream-line: rgba(250,246,236,0.22);
  --serif: 'Source Serif 4', serif;
  --sans: 'IBM Plex Sans', sans-serif;
  --mono: 'IBM Plex Mono', monospace;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
}
img{max-width:100%; display:block;}
a{color:inherit;}
.wrap{max-width:1160px; margin:0 auto; padding:0 32px;}
@media(max-width:640px){ .wrap{padding:0 20px;} }

/* ---------- perforation divider ---------- */
.perf{
  height:1px;
  background-image: repeating-linear-gradient(to right, var(--paper-line) 0 6px, transparent 6px 14px);
  width:100%;
}
.perf.on-navy{
  background-image: repeating-linear-gradient(to right, var(--cream-line) 0 6px, transparent 6px 14px);
}

/* ---------- nav ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(15,27,46,0.96);
  backdrop-filter: blur(6px);
  color:var(--cream);
}
.nav-inner{
  display:flex; align-items:center; justify-content:space-between;
  height:74px;
}
.logo{
  font-family:var(--serif);
  font-size:22px;
  font-weight:600;
  letter-spacing:0.2px;
  display:flex; align-items:center; gap:10px;
  text-decoration:none;
  color:var(--cream);
}
.logo .mark{
  width:28px; height:28px;
  border:1.5px solid var(--gold);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--mono);
  font-size:11px;
  color:var(--gold);
}
.logo .tm{
  font-size:11px;
  margin-left:2px;
  color:var(--gold);
  font-weight:500;
}
nav ul{
  list-style:none;
  display:flex;
  gap:28px;
  font-size:14px;
}
nav ul li{position:relative;}
nav ul li a{
  text-decoration:none;
  color:var(--cream);
  opacity:0.82;
  transition:opacity .15s ease;
}
nav ul li a:hover{opacity:1;}
nav ul li a.active{opacity:1; border-bottom:1px solid var(--gold); padding-bottom:4px;}
.nav-cta{
  font-family:var(--sans);
  font-size:14px;
  font-weight:600;
  background:var(--gold);
  color:var(--navy);
  border:none;
  padding:10px 20px;
  border-radius:2px;
  cursor:pointer;
  text-decoration:none;
  display:inline-block;
  transition:background .15s ease;
}
.nav-cta:hover{ background:#d8ac5c; }
.nav-secondary{
  font-family:var(--sans);
  font-size:14px;
  color:var(--cream);
  opacity:0.85;
  text-decoration:none;
}
.nav-links{display:flex; align-items:center; gap:30px;}
.menu-btn{display:none; background:none; border:none; color:var(--cream); font-size:22px; cursor:pointer;}
@media (max-width: 900px){
  .nav-links{display:none;}
  .menu-btn{display:block;}
}

/* ---------- generic page hero (non-home pages) ---------- */
.page-hero{
  background:var(--navy);
  color:var(--cream);
  padding:64px 0 54px;
}
.page-hero .eyebrow-doc{
  font-family:var(--mono);
  font-size:12px;
  color:var(--gold);
  letter-spacing:0.03em;
  margin-bottom:18px;
  display:flex;
  align-items:center;
  gap:10px;
}
.page-hero .eyebrow-doc::before{
  content:"";
  width:16px; height:1px;
  background:var(--gold);
  display:inline-block;
}
.page-hero h1{
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(32px, 4.6vw, 50px);
  max-width:680px;
  line-height:1.12;
  letter-spacing:-0.01em;
}
.page-hero h1 em{ font-style:italic; color:var(--gold); font-weight:500;}
.page-hero p.lede{
  font-size:16.5px;
  line-height:1.6;
  color:rgba(250,246,236,0.75);
  max-width:540px;
  margin-top:18px;
}
.crumbs{
  font-family:var(--mono);
  font-size:11.5px;
  color:rgba(250,246,236,0.5);
  margin-bottom:18px;
}
.crumbs a{ text-decoration:none; color:rgba(250,246,236,0.7); }
.crumbs a:hover{ color:var(--gold); }

/* ---------- section scaffolding ---------- */
.section{ padding:90px 0; }
.section.tight{padding:64px 0;}
.section-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:30px;
  margin-bottom:48px;
  flex-wrap:wrap;
}
.section-num{
  font-family:var(--mono);
  font-size:12px;
  color:var(--gold-dim);
  margin-bottom:12px;
  display:block;
}
.section-head h2{
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(26px,3.2vw,38px);
  max-width:560px;
  line-height:1.16;
}
.section-head p{
  font-size:15px;
  color:#4a4a4a;
  max-width:320px;
  line-height:1.6;
}
.band-navy{ background:var(--navy); color:var(--cream); }
.band-navy .section-head h2{ color:var(--cream); }
.band-navy .section-head p{ color:rgba(250,246,236,0.62); }
.band-teal{ background:var(--teal); color:var(--cream); }
.band-cream-dim{ background:var(--cream-dim); }

/* ---------- stamp badge (reused across site) ---------- */
.stamp{
  border:1.5px solid;
  border-radius:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  font-family:var(--mono);
  padding:6px;
}
.stamp .code{font-size:15px; font-weight:600; letter-spacing:0.04em;}
.stamp .name{font-size:8.5px; margin-top:3px; opacity:0.75; letter-spacing:0.03em;}
.stamp.gold{border-color:var(--gold); color:var(--gold);}
.stamp.cream{border-color:rgba(250,246,236,0.5); color:var(--cream);}
.stamp.teal{border-color:#5fa596; color:#7fc0b1;}
.stamp.ink{border-color:var(--navy); color:var(--navy);}

/* ---------- buttons ---------- */
.btn-primary{
  font-family:var(--sans);
  font-weight:600;
  font-size:15px;
  background:var(--gold);
  color:var(--navy);
  border:none;
  padding:14px 24px;
  border-radius:2px;
  cursor:pointer;
  text-decoration:none;
  display:inline-block;
}
.btn-outline{
  font-family:var(--sans);
  font-weight:600;
  font-size:14.5px;
  background:transparent;
  border:1px solid currentColor;
  padding:12px 22px;
  border-radius:2px;
  cursor:pointer;
  text-decoration:none;
  display:inline-block;
}
.btn-ghost{
  font-family:var(--sans);
  font-size:15px;
  text-decoration:none;
  border-bottom:1px solid var(--cream-line);
  padding-bottom:2px;
}

/* ---------- generic card ---------- */
.card{
  background:var(--cream);
  border:1px solid var(--paper-line);
  border-radius:6px;
  padding:26px;
}
.card h3{
  font-family:var(--serif);
  font-size:19px;
  font-weight:600;
  margin-bottom:10px;
}
.card p{
  font-size:14px;
  color:#4d4d4d;
  line-height:1.6;
}

/* ---------- stat row ---------- */
.stat-row{
  display:flex;
  gap:36px;
  flex-wrap:wrap;
}
.stat-row div b{
  font-family:var(--serif);
  font-size:27px;
  font-weight:600;
  display:block;
}
.stat-row div span{
  font-size:12px;
  opacity:0.65;
}

/* ---------- ticket-style card (testimonials / stories) ---------- */
.ticket{
  background:var(--cream);
  border:1px solid var(--paper-line);
  border-radius:6px;
  position:relative;
  padding:28px 26px 24px;
}
.ticket::before, .ticket::after{
  content:"";
  position:absolute;
  width:18px; height:18px;
  background:var(--cream-dim);
  border:1px solid var(--paper-line);
  border-radius:50%;
  top:50%;
  transform:translateY(-50%);
}
.ticket::before{ left:-10px; }
.ticket::after{ right:-10px; }
.ticket .t-route{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-family:var(--mono);
  font-size:12px;
  color:var(--gold-dim);
  padding-bottom:16px;
  margin-bottom:16px;
  border-bottom:1px dashed var(--paper-line);
}
.ticket blockquote{
  font-family:var(--serif);
  font-style:italic;
  font-size:15.5px;
  line-height:1.55;
  color:#232323;
  margin-bottom:16px;
}
.ticket .t-person{ display:flex; flex-direction:column; font-size:13px; }
.ticket .t-person b{ font-weight:600; }
.ticket .t-person span{ color:#6b6b6b; font-size:12px; margin-top:2px; }

/* ---------- grid helpers ---------- */
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
@media(max-width:900px){ .grid-3{grid-template-columns:1fr 1fr;} .grid-4{grid-template-columns:1fr 1fr;} }
@media(max-width:640px){ .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;} }

/* ---------- forms ---------- */
.form-card{
  background:var(--cream);
  border:1px solid var(--paper-line);
  border-radius:6px;
  padding:36px;
  max-width:480px;
}
.form-card h2{
  font-family:var(--serif);
  font-weight:500;
  font-size:26px;
  margin-bottom:8px;
}
.form-card p.sub{
  font-size:14px;
  color:#5a5a5a;
  margin-bottom:26px;
}
.field{ margin-bottom:18px; }
.field label{
  display:block;
  font-family:var(--mono);
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:0.04em;
  color:var(--gold-dim);
  margin-bottom:7px;
}
.field input, .field select, .field textarea{
  width:100%;
  border:1px solid var(--paper-line);
  background:#fff;
  padding:12px 14px;
  font-family:var(--sans);
  font-size:14.5px;
  border-radius:2px;
  color:var(--ink);
}
.field textarea{ resize:vertical; min-height:100px; }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:2px solid var(--gold);
  outline-offset:1px;
}
.form-submit{
  width:100%;
  font-family:var(--sans);
  font-weight:600;
  font-size:15px;
  background:var(--gold);
  color:var(--navy);
  border:none;
  padding:14px;
  border-radius:2px;
  cursor:pointer;
  margin-top:6px;
}
.form-note{
  font-size:11.5px;
  color:#7a7a7a;
  margin-top:14px;
  text-align:center;
}
.form-side{
  background:var(--navy);
  color:var(--cream);
  border-radius:6px;
  padding:36px;
}
.form-side .eyebrow-doc{
  font-family:var(--mono);
  font-size:11.5px;
  color:var(--gold);
  margin-bottom:16px;
}
.form-side h3{ font-family:var(--serif); font-size:22px; font-weight:500; margin-bottom:14px; }
.form-side ul{ list-style:none; margin-top:18px; }
.form-side ul li{
  font-size:13.5px;
  padding:10px 0;
  border-top:1px dashed var(--cream-line);
  display:flex;
  gap:10px;
}
.form-side ul li:first-child{border-top:none;}
.form-side ul li .n{ font-family:var(--mono); color:var(--gold); font-size:12px; }

/* ---------- boarding pass process (used on home + destination pages) ---------- */
.boarding-pass{
  background:var(--cream);
  border:1px solid var(--paper-line);
  border-radius:4px;
  display:grid;
  grid-template-columns: repeat(5, 1fr) 210px;
  position:relative;
  overflow:hidden;
  box-shadow:0 20px 44px rgba(15,27,46,0.08);
}
@media(max-width:960px){
  .boarding-pass{grid-template-columns:1fr; }
  .bp-stub{ border-left:none; border-top:1px dashed var(--paper-line); }
}
.bp-step{
  padding:34px 22px;
  border-right:1px dashed var(--paper-line);
  position:relative;
}
@media(max-width:960px){ .bp-step{border-right:none; border-bottom:1px dashed var(--paper-line);} }
.bp-step .bp-label{
  font-family:var(--mono);
  font-size:10.5px;
  color:var(--gold-dim);
  text-transform:uppercase;
  letter-spacing:0.05em;
}
.bp-step .bp-num{
  font-family:var(--serif);
  font-size:34px;
  font-weight:600;
  color:var(--navy);
  margin:10px 0 12px;
}
.bp-step h3{
  font-family:var(--serif);
  font-size:16.5px;
  font-weight:600;
  margin-bottom:8px;
}
.bp-step p{
  font-size:12.8px;
  color:#565656;
  line-height:1.55;
}
.bp-stub{
  background:var(--navy);
  color:var(--cream);
  padding:34px 26px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  border-left:1px dashed var(--cream-line);
}
.bp-stub .bp-eyebrow{
  font-family:var(--mono);
  font-size:10.5px;
  color:var(--gold);
  letter-spacing:0.04em;
}
.bp-stub h3{
  font-family:var(--serif);
  font-size:22px;
  font-weight:500;
  margin:14px 0 18px;
  line-height:1.25;
}
.bp-stub .bp-cta{
  font-family:var(--sans);
  font-weight:600;
  font-size:14px;
  background:var(--gold);
  color:var(--navy);
  border:none;
  padding:13px 18px;
  border-radius:2px;
  cursor:pointer;
  width:100%;
  text-decoration:none;
  text-align:center;
  display:block;
}
.bp-stub .bp-barcode{
  height:34px;
  margin-top:20px;
  background: repeating-linear-gradient(to right, var(--cream) 0 2px, transparent 2px 5px, var(--cream) 5px 6px, transparent 6px 10px);
  opacity:0.6;
}

/* ---------- final CTA band ---------- */
.cta-band{
  background:var(--teal);
  color:var(--cream);
  padding:80px 0;
  text-align:center;
}
.cta-band .eyebrow-doc{ justify-content:center; color:#cfe8e0; }
.cta-band .eyebrow-doc::before{ background:#cfe8e0; }
.cta-band h2{
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(28px,3.6vw,40px);
  max-width:660px;
  margin:0 auto 22px;
  line-height:1.18;
}
.cta-band p{
  max-width:460px;
  margin:0 auto 30px;
  color:rgba(250,246,236,0.82);
  font-size:15.5px;
}
.cta-band .btn-primary{ background:var(--cream); color:var(--teal); }

/* ---------- footer ---------- */
footer{
  background:var(--navy);
  color:rgba(250,246,236,0.7);
  padding:60px 0 30px;
}
.foot-grid{
  display:grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap:40px;
  padding-bottom:40px;
}
@media(max-width:760px){ .foot-grid{grid-template-columns:1fr 1fr; row-gap:30px;} }
.foot-grid h4{
  font-family:var(--mono);
  font-size:11px;
  color:var(--gold);
  text-transform:uppercase;
  letter-spacing:0.05em;
  margin-bottom:16px;
}
.foot-grid ul{ list-style:none; }
.foot-grid ul li{ margin-bottom:10px; font-size:14px; }
.foot-grid ul li a{ text-decoration:none; opacity:0.85; }
.foot-grid ul li a:hover{ opacity:1; }
.foot-bottom{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-top:24px;
  font-size:12px;
  color:rgba(250,246,236,0.45);
  flex-wrap:wrap;
  gap:12px;
}

:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:2px;
}
