:root{
  --navy:#0A2540;
  --navy-2:#123157;
  --navy-3:#1B4577;
  --coral:#FF4D4D;
  --coral-dark:#E63946;
  --coral-hover:#FFF0F0;
  --bg:#F8FAFC;
  --white:#FFFFFF;
  --sky:#2F80ED;
  --emerald:#12B76A;
  --gold:#FFB020;
  --ink:#0A2540;
  --muted:#5B6B82;
  --line:rgba(10,37,64,0.10);
  --shadow-sm:0 8px 24px -12px rgba(10,37,64,0.18);
  --shadow-lg:0 30px 70px -20px rgba(10,37,64,0.35);
  --radius:20px;
  --radius-sm:14px;
  --max:1280px;
  --ff-head:'Montserrat', sans-serif;
  --ff-body:'Montserrat', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
/* `overflow-x` MUST BE ON `html`, NOT ONLY ON `body` — the pair below is one
   rule, not a belt-and-braces duplicate. With it on body alone, a phone at
   320px laid the page out at 391 CSS px and scrolled sideways by 71: the
   overflow propagates off body, so body stops being the clipping context and
   the mobile layout viewport is free to widen to fit the offers carousel.
   Naming html as well pins the viewport to the device width. Measured at
   320x568: innerWidth 391 -> 320, scrollWidth 391 -> 320, overflow 71 -> 0.
   Caught by tests/verify_responsive.py, not by eye — the page looks fine at
   390px, which is where anyone checking by hand would look. */
html{scroll-behavior:smooth; overflow-x:hidden;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
}
body{
  background:var(--bg); color:var(--ink); font-family:var(--ff-body);
  -webkit-font-smoothing:antialiased; overflow-x:hidden; line-height:1.5;
}
::selection{background:var(--coral); color:#fff;}
img,svg{display:block; max-width:100%;}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
button,input{font-family:var(--ff-body);}
button{cursor:pointer; border:none; background:none;}
.wrap{max-width:var(--max); margin:0 auto; padding:0 32px;}
h1,h2,h3,h4{font-family:var(--ff-head); line-height:1.12; letter-spacing:-0.01em; color:var(--navy);}
:focus-visible{outline:3px solid var(--coral); outline-offset:2px;}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap;}
.skip-link{
  position:absolute; left:12px; top:-60px; background:var(--navy); color:#fff; padding:12px 20px;
  border-radius:10px; z-index:200; transition:top .2s ease;
}
.skip-link:focus{top:12px;}

/* buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-weight:700; font-size:15px; padding:14px 28px; border-radius:100px;
  position:relative; overflow:hidden; transition:transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.btn:active{transform:scale(.97);}
.btn-coral{background:linear-gradient(135deg, var(--coral) 0%, var(--coral-dark) 100%); color:#fff; box-shadow:0 14px 30px -10px rgba(255,77,77,0.55);}
.btn-coral:hover{filter:brightness(1.06); box-shadow:0 18px 36px -8px rgba(255,77,77,0.6);}
.btn-navy{background:var(--navy); color:#fff;}
.btn-navy:hover{background:var(--navy-3);}
.btn-sm{padding:10px 16px; font-size:13px;}
.btn-ghost{background:rgba(255,255,255,0.1); color:#fff; border:1.5px solid rgba(255,255,255,0.4); backdrop-filter:blur(6px);}
.btn-ghost:hover{background:rgba(255,255,255,0.2);}
.ripple{position:absolute; border-radius:50%; background:rgba(255,255,255,0.55); transform:scale(0); animation:rippleAnim .6s ease-out; pointer-events:none;}
@keyframes rippleAnim{to{transform:scale(3); opacity:0;}}

/* section scaffolding */
section{padding:110px 0;}
.eyebrow{
  font-family:var(--ff-body); font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.14em;
  color:var(--coral); display:flex; align-items:center; gap:10px; margin-bottom:16px;
}
.eyebrow::before{content:''; width:24px; height:2px; background:var(--coral); border-radius:2px;}
.section-head{display:flex; justify-content:space-between; align-items:flex-end; gap:40px; flex-wrap:wrap; margin-bottom:56px;}
.section-head h2{font-size:clamp(30px,4vw,46px); font-weight:700;}
.section-head p{max-width:420px; color:var(--muted); font-size:15.5px; line-height:1.6;}
.view-all{font-size:14px; font-weight:700; display:flex; align-items:center; gap:6px; color:var(--navy); border-bottom:2px solid var(--coral); padding-bottom:4px; white-space:nowrap; transition:gap .2s ease;}
.view-all:hover{gap:10px;}

/* scroll reveal */
.reveal{opacity:0; transform:translateY(36px); transition:opacity .7s cubic-bezier(.22,.9,.32,1), transform .7s cubic-bezier(.22,.9,.32,1);}
.reveal.visible{opacity:1; transform:translateY(0);}
.reveal-zoom{opacity:0; transform:scale(.92); transition:opacity .7s ease, transform .7s cubic-bezier(.22,.9,.32,1);}
.reveal-zoom.visible{opacity:1; transform:scale(1);}
.delay-1{transition-delay:.08s;} .delay-2{transition-delay:.16s;} .delay-3{transition-delay:.24s;} .delay-4{transition-delay:.32s;}

/* ---------- NAV ---------- */
header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(0,0,0,0); backdrop-filter:blur(0px);
}
nav.wrap{display:flex; align-items:center; justify-content:space-between; height:128px; gap:20px;}
.logo{display:flex; align-items:center; margin-left:16px;}
.logo-mark-img{height:104px; width:auto; object-fit:contain; flex-shrink:0;}
.navlinks{display:flex; gap:30px; font-size:14.5px; font-weight:600; align-items:center;}
.navlinks a{position:relative; padding:8px 0; color:rgba(255,255,255,0.86); transition:color .3s ease;}
.navlinks a:hover{color:#fff;}
.navlinks a::after{content:''; position:absolute; left:0; bottom:2px; height:2px; width:0; background:var(--coral); transition:width .25s ease; border-radius:2px;}
.navlinks a:hover::after{width:100%;}
.nav-actions{display:flex; align-items:center; gap:14px;}
.nav-login{font-size:14.5px; font-weight:700; color:#fff;}
.nav-partner-mark{display:inline-flex; align-items:center; gap:8px; padding:7px 16px 7px 9px; border-radius:100px; border:1.5px solid rgba(255,255,255,0.32); color:#fff; font-weight:700; font-size:13.5px; transition:border-color .25s ease, background-color .25s ease, transform .2s ease;}
.nav-partner-mark:hover{border-color:var(--coral); background:rgba(255,77,77,0.14); transform:translateY(-1px);}
.npm-mark{width:21px; height:21px; flex-shrink:0;}
.mobile-partner-mark{display:flex; align-items:center; gap:10px;}
.mobile-partner-mark .npm-mark{width:20px; height:20px; color:var(--navy);}
.nav-signup{padding:11px 22px; font-size:14px;}
.hamburger{display:none; flex-direction:column; gap:5px; width:26px;}
.hamburger span{height:2px; background:#fff; border-radius:2px;}
.mobile-nav{display:none; flex-direction:column; gap:2px; background:#0a0a0a; padding:12px 32px 24px; box-shadow:var(--shadow-sm);}
.mobile-nav a{padding:12px 0; font-weight:600; border-bottom:1px solid rgba(255,255,255,0.1); color:#fff;}
.mobile-nav.open{display:flex;}
@media (max-width:960px){
  .navlinks{display:none;}
  .hamburger{display:flex;}
  .nav-login{display:none;}
}
@media (min-width:961px){
  .mobile-nav{display:none !important;}
}

/* ---------- HERO ---------- */
.hero{
  position:relative; min-height:760px; display:flex; flex-direction:column; justify-content:center;
  padding-top:158px; padding-bottom:64px; overflow:hidden;
}
@media (max-width:900px){.hero{min-height:700px;}}
.hero-bg{
  position:absolute; inset:0; z-index:0;
  background-image:url('https://images.unsplash.com/photo-1506905925346-21bda4d32df4?auto=format&fit=crop&w=1920&q=80');
  background-size:cover; background-position:center; will-change:transform;
}
.hero-video-layer{position:absolute; inset:0; z-index:0; overflow:hidden; will-change:transform;}
.hero-video-layer video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center;
  opacity:0; background:var(--navy);
  transition:opacity 650ms ease;
}
.hero-video-layer video.active{opacity:1;}
/* Packages keeps its original tuned crop (clip unchanged). Flights/hotels/cruises use a
   neutral center crop since those clips were replaced with new footage of unknown framing. */
.hero-video-layer video[data-video="packages"]{object-position:center 40%;}
@media (min-width:901px){
  .hero-video-layer video[data-video="packages"]{transform:translate(0%,-15%) scale(1.4); transform-origin:center;}
}
.hero-overlay{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background-image:
    linear-gradient(180deg, rgba(10,37,64,0.55) 0%, rgba(10,37,64,0.72) 55%, rgba(10,37,64,0.94) 100%),
    radial-gradient(ellipse 900px 500px at 12% 0%, rgba(255,77,77,0.35), transparent 60%);
}
.hero-inner{position:relative; z-index:2; color:#fff;}
.hero .eyebrow{color:var(--gold);}
.hero .eyebrow::before{background:var(--gold);}
.hero h1{
  color:#fff; font-weight:800; font-size:clamp(40px,6.4vw,78px); max-width:16ch; letter-spacing:-0.02em;
}
.hero h1 .accent{
  background:linear-gradient(90deg, #FFB020, #FF4D4D); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.hero p.sub{
  color:rgba(255,255,255,0.82); font-size:18.5px; max-width:560px; margin-top:22px; line-height:1.6;
}
.hero-scroll-cue{
  position:absolute; bottom:18px; left:50%; transform:translateX(-50%); z-index:3; color:rgba(255,255,255,0.7);
  display:flex; flex-direction:column; align-items:center; gap:8px; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase;
  animation:bob 2.2s ease-in-out infinite;
}
@keyframes bob{0%,100%{transform:translate(-50%,0);} 50%{transform:translate(-50%,8px);}}

/* ---------- SEARCH CARD ---------- */
.search-dock{position:relative; z-index:5; margin-top:34px;}
.search-card{
  background:rgba(255,255,255,0.82); backdrop-filter:blur(20px) saturate(160%);
  border:1px solid rgba(255,255,255,0.6); border-radius:24px; box-shadow:var(--shadow-lg); padding:14px;
}
.tabs{display:flex; gap:6px; padding:6px 6px 16px; flex-wrap:wrap;}
.tab{
  padding:11px 20px; border-radius:100px; font-size:14px; font-weight:700; color:var(--navy); opacity:.55;
  display:flex; align-items:center; gap:8px; transition:all .25s ease;
}
.tab.active{background:var(--navy); color:#fff; opacity:1; box-shadow:var(--shadow-sm);}
.tab:hover:not(.active){opacity:.9; background:rgba(10,37,64,0.06);}
/* Panels are stacked via CSS grid (grid-area:1/1) so the tallest panel sets the
   container height once — switching tabs never resizes or animates the card. */
.search-body{display:grid;}
.search-panel{grid-area:1/1; visibility:hidden;}
.search-panel.active{visibility:visible;}
.search-fields{display:grid; grid-template-columns:1.1fr auto 1.1fr .95fr .95fr .9fr .9fr auto; gap:3px; padding:6px;}
.search-fields.cols-6{grid-template-columns:1.2fr .95fr .95fr .9fr .9fr auto;}
.search-fields.cols-3{grid-template-columns:1.3fr 1fr auto;}
.search-fields.cols-5{grid-template-columns:1.15fr .9fr .9fr .9fr auto;}
.field{padding:14px 18px; border-radius:14px; background:rgba(10,37,64,0.04); transition:background .2s ease; position:relative;}
.field:hover{background:rgba(10,37,64,0.07);}
.field label{display:block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:4px;}
.field input{border:none; background:none; width:100%; font-weight:700; font-size:15.5px; color:var(--navy); outline:none;}
.field input::placeholder{color:var(--navy); opacity:.5; font-weight:600;}
.field select{
  border:none; background:none; width:100%; font-weight:700; font-size:15.5px; color:var(--navy); outline:none;
  font-family:var(--ff-body); appearance:none; -webkit-appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230A2540' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat; background-position:right 2px center; background-size:16px; padding-right:22px;
}
.field select option{color:var(--navy); font-weight:600;}
.field-date{cursor:pointer;}
.field-date .date-display{cursor:pointer; padding-right:24px;}
.field-date .date-native{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;}
.field-date .cal-icon{position:absolute; right:16px; bottom:14px; width:17px; height:17px; color:var(--muted);}
.swap-btn{
  display:flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:50%; align-self:center;
  background:#fff; border:1px solid var(--line); color:var(--coral); transition:transform .3s ease, background .2s ease;
}
.swap-btn:hover{transform:rotate(180deg); background:var(--coral-hover);}
.search-go{border-radius:14px; font-size:15px; padding:0 30px; height:100%; min-height:60px;}
.trust-row{display:flex; gap:26px; flex-wrap:wrap; padding:16px 20px 6px; font-size:13px; font-weight:700; color:var(--navy);}
.trust-row span{display:flex; align-items:center; gap:7px;}
.trust-row svg{width:16px; height:16px; color:var(--emerald); flex-shrink:0;}
@media (max-width:900px){
  .search-fields, .search-fields.cols-6, .search-fields.cols-3, .search-fields.cols-5{grid-template-columns:1fr;}
  .swap-btn{display:none;}
  .search-go{min-height:52px; padding:16px;}
}

/* ---------- SEARCH RESULTS SECTION (normal page flow, no overlay/blur) ---------- */
.search-results-section{
  display:none; position:relative; width:100%; margin-top:30px; z-index:1;
  background:var(--bg); padding:36px 0;
}
.search-results-section.open{display:block;}
.search-results-card{
  position:relative; display:block; width:100%;
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); padding:22px 26px;
}
.search-results-head{display:flex; align-items:center; justify-content:space-between; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:16px;}
.search-results-close{width:30px; height:30px; border-radius:50%; background:rgba(10,37,64,0.06); color:var(--navy); font-size:18px; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .2s ease;}
.search-results-close:hover{background:rgba(10,37,64,0.12);}
.search-results-list{display:flex; flex-direction:column; gap:10px;}
.result-card{display:flex; align-items:center; gap:18px; padding:16px 18px; border-radius:var(--radius-sm); background:var(--bg); border:1px solid var(--line); position:relative; pointer-events:auto;}
.result-main{flex:1; min-width:0;}
.result-title{font-weight:700; font-size:15px; color:var(--navy);}
.result-sub{font-size:13px; color:var(--muted); margin-top:4px;}
.result-price{font-family:var(--ff-head); font-weight:800; font-size:18px; color:var(--navy); white-space:nowrap;}
.result-price span{font-family:var(--ff-body); font-weight:600; font-size:12px; color:var(--muted);}
.result-book{font-size:13px; padding:10px 18px; white-space:nowrap;}
.search-results-empty{color:var(--muted); font-size:14px; text-align:center; padding:12px 0;}
@media (max-width:640px){
  .result-card{flex-wrap:wrap;}
  .result-price{order:2;}
  .result-book{order:3; width:100%; justify-content:center;}
}

/* ---------- YOUR UPCOMING JOURNEY (homepage widget, normal page flow) ---------- */
.upcoming-section{display:none; position:relative; width:100%; background:var(--bg); padding:56px 0; z-index:1;}
.upcoming-section.open{display:block;}
.upcoming-list{display:flex; flex-direction:column; gap:16px;}
.upcoming-card{
  position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:20px;
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius); padding:22px 26px; box-shadow:var(--shadow-sm);
}
.upcoming-main{flex:1; min-width:240px;}
.upcoming-title{font-weight:700; font-size:16px; color:var(--navy);}
.upcoming-sub{font-size:12.5px; color:var(--muted); margin-top:5px; display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.upcoming-meta{display:flex; flex-wrap:wrap; gap:14px 20px; margin-top:12px; font-size:12.5px; color:var(--muted);}
.upcoming-meta b{color:var(--navy); font-weight:700;}
.upcoming-countdown{display:flex; gap:8px; text-align:center; flex-shrink:0;}
.upcoming-countdown .cd-box{background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:8px 10px; min-width:54px;}
.upcoming-countdown .cd-num{font-family:var(--ff-head); font-weight:800; font-size:17px; color:var(--navy);}
.upcoming-countdown .cd-label{font-size:9px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-top:2px;}
.upcoming-actions{display:flex; flex-wrap:wrap; gap:8px; flex-shrink:0;}
@media (max-width:760px){
  .upcoming-card{flex-direction:column; align-items:stretch;}
  .upcoming-countdown{justify-content:center;}
  .upcoming-actions{justify-content:stretch;}
  .upcoming-actions .btn{flex:1; min-width:120px; justify-content:center;}
}

/* ---------- WISHLIST + REVIEWS controls (shared by result cards and package cards) ---------- */
.card-actions{display:flex; align-items:center; gap:10px;}
.wl-btn{width:38px; height:38px; border-radius:50%; background:rgba(10,37,64,0.06); color:var(--muted); font-size:17px; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .2s ease, color .2s ease; flex-shrink:0;}
.wl-btn:hover{background:var(--coral-hover); color:var(--coral);}
.wl-btn.saved{color:var(--coral); background:var(--coral-hover);}
.review-link{font-size:12.5px; font-weight:700; color:var(--sky); white-space:nowrap;}
.review-link:hover{text-decoration:underline;}
.pkg-actions{display:flex; align-items:center; gap:10px; margin-top:12px;}
.review-item{border-bottom:1px solid var(--line); padding:14px 0;}
.review-item:last-child{border-bottom:none;}
.review-item .stars{color:var(--gold); letter-spacing:1px; font-size:14px;}
.review-item .rname{font-weight:700; font-size:13.5px; color:var(--navy);}
.review-item .rdate{font-size:12px; color:var(--muted);}
.review-item .rcomment{font-size:13.5px; color:var(--navy); margin-top:6px; line-height:1.5;}
.review-item .ractions{margin-top:8px; display:flex; gap:14px;}
.review-item .ractions button{font-size:12px; font-weight:700; color:var(--coral-dark);}
.star-input{display:flex; gap:6px; margin-bottom:16px; font-size:26px; color:var(--line);}
.star-input span{cursor:pointer; transition:color .15s ease;}
.star-input span.active{color:var(--gold);}
.details-link{font-size:12.5px; font-weight:700; color:var(--navy); white-space:nowrap;}
.details-link:hover{text-decoration:underline;}
#detailsModalOverlay .modal-card{max-width:480px;}
.detail-row{display:flex; justify-content:space-between; gap:16px; padding:10px 0; border-bottom:1px dashed var(--line); font-size:14px;}
.detail-row span:first-child{color:var(--muted);}
.detail-row span:last-child{font-weight:700; color:var(--navy); text-align:right;}
.detail-desc{font-size:13.5px; color:var(--navy); line-height:1.6; margin:14px 0; padding:14px; background:var(--bg); border-radius:12px;}

/* ---------- OFFERS ---------- */
.offers-section{background:var(--white); overflow:hidden;}
.offers-track-wrap{overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image:linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);}
.offers-track{display:flex; gap:22px; width:max-content; animation:offersScroll 32s linear infinite;}
.offers-track:hover{animation-play-state:paused;}
.offer-card{
  width:340px; flex-shrink:0; border-radius:22px; padding:32px; position:relative; overflow:hidden;
  color:#fff; display:flex; flex-direction:column; justify-content:space-between; min-height:190px;
  box-shadow:var(--shadow-sm); transition:transform .3s ease, box-shadow .3s ease;
}
.offer-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg);}
.offer-card.o1{background:linear-gradient(135deg,#FF4D4D,#FF8552);}
.offer-card.o2{background:linear-gradient(135deg,#0A2540,#2F80ED);}
.offer-card.o3{background:linear-gradient(135deg,#12B76A,#0A2540);}
.offer-card.o4{background:linear-gradient(135deg,#FFB020,#FF4D4D);}
.offer-card.o5{background:linear-gradient(135deg,#2F80ED,#12B76A);}
.offer-card .tag{font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.1em; opacity:.85;}
.offer-card h3{color:#fff; font-size:25px; font-weight:700; margin:14px 0 6px; max-width:22ch;}
.offer-card p{font-size:13.5px; opacity:.88; max-width:26ch;}
.offer-card .code{
  align-self:flex-start; margin-top:18px; font-size:12.5px; font-weight:700; background:rgba(255,255,255,0.22);
  padding:8px 16px; border-radius:100px; backdrop-filter:blur(6px);
}
@keyframes offersScroll{0%{transform:translateX(0);} 100%{transform:translateX(-50%);}}

/* ---------- DESTINATIONS ---------- */
.destinations-section{background:var(--bg);}
.dest-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
.dest-card{
  position:relative; border-radius:22px; overflow:hidden; aspect-ratio:3/4; cursor:pointer;
  box-shadow:var(--shadow-sm); transition:box-shadow .35s ease;
}
.dest-card:hover{box-shadow:var(--shadow-lg);}
.dest-card img{width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.22,.9,.32,1); background:var(--navy-2);}
.dest-card:hover img{transform:scale(1.1);}
.dest-card::after{content:''; position:absolute; inset:0; background:linear-gradient(0deg, rgba(10,37,64,0.92) 0%, rgba(10,37,64,0.08) 60%); transition:background .35s ease;}
.dest-rating{
  position:absolute; top:16px; right:16px; z-index:2; background:rgba(255,255,255,0.92); backdrop-filter:blur(6px);
  border-radius:100px; padding:6px 12px; font-size:12.5px; font-weight:800; display:flex; align-items:center; gap:5px; color:var(--navy);
}
.dest-rating svg{width:13px; height:13px; color:var(--gold); fill:var(--gold);}
.dest-label{position:absolute; left:0; right:0; bottom:0; padding:22px; z-index:2; color:#fff;}
.dest-label .city{font-family:var(--ff-head); font-size:24px; font-weight:700;}
.dest-label .price{font-size:13px; opacity:.85; margin-top:4px;}
.dest-label .price b{color:#fff; font-size:15px;}
.dest-explore{
  margin-top:14px; display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:700;
  background:rgba(255,255,255,0.16); backdrop-filter:blur(6px); padding:9px 16px; border-radius:100px; color:#fff;
  opacity:0; transform:translateY(8px); transition:opacity .3s ease, transform .3s ease, background .2s ease;
}
.dest-card:hover .dest-explore{opacity:1; transform:translateY(0);}
.dest-explore:hover{background:var(--coral);}
@media (max-width:1100px){.dest-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:760px){.dest-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:480px){.dest-grid{grid-template-columns:1fr;}}

/* ---------- PACKAGES ---------- */
.packages-section{background:var(--white);}
.pkg-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:24px;}
.pkg-card{
  background:var(--bg); border:1px solid var(--line); border-radius:22px; overflow:hidden;
  transition:transform .3s ease, box-shadow .3s ease;
}
.pkg-card:hover{transform:translateY(-8px); box-shadow:var(--shadow-lg);}
.pkg-img{position:relative; aspect-ratio:4/3; overflow:hidden;}
.pkg-img img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease; background:var(--navy-2);}
.pkg-card:hover .pkg-img img{transform:scale(1.08);}
.pkg-duration{position:absolute; top:14px; left:14px; background:rgba(10,37,64,0.85); color:#fff; font-size:11.5px; font-weight:700; padding:6px 12px; border-radius:100px; backdrop-filter:blur(6px);}
.pkg-body{padding:22px;}
.pkg-body h3{font-size:19px; font-weight:700;}
.pkg-stars{display:flex; align-items:center; gap:6px; margin:10px 0 14px; font-size:13px; color:var(--muted);}
.pkg-stars .stars{color:var(--gold); letter-spacing:1px;}
.pkg-foot{display:flex; align-items:center; justify-content:space-between;}
.pkg-price{font-size:12px; color:var(--muted);}
.pkg-price b{display:block; font-size:19px; color:var(--navy); font-family:var(--ff-head);}
.pkg-book{font-size:13px; padding:11px 18px;}
@media (max-width:1100px){.pkg-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.pkg-grid{grid-template-columns:1fr;}}

/* ---------- WHY CHOOSE US ---------- */
.why-section{background:var(--navy); color:#fff; position:relative; overflow:hidden;}
.why-section::before{content:''; position:absolute; inset:0; background:radial-gradient(ellipse 700px 500px at 90% 0%, rgba(255,77,77,0.25), transparent 60%);}
.why-section .eyebrow{color:var(--gold);} .why-section .eyebrow::before{background:var(--gold);}
.why-section h2, .why-section .section-head p{color:#fff;}
.why-section .section-head p{opacity:.7;}
.why-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px; position:relative; z-index:1;}
.why-card{
  background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 24px;
  transition:transform .3s ease, background .3s ease, box-shadow .3s ease;
}
.why-card:hover{transform:translateY(-6px); background:rgba(255,255,255,0.11); box-shadow:0 20px 50px -20px rgba(255,77,77,0.4);}
.why-icon{width:48px; height:48px; border-radius:14px; background:linear-gradient(135deg,var(--coral),var(--gold)); display:flex; align-items:center; justify-content:center; margin-bottom:18px; transition:transform .3s ease;}
.why-card:hover .why-icon{transform:scale(1.1) rotate(-6deg);}
.why-icon svg{width:22px; height:22px; color:#fff;}
.why-card h4{color:#fff; font-size:16.5px; font-weight:700; margin-bottom:8px;}
.why-card p{font-size:13.5px; opacity:.65; line-height:1.6;}
@media (max-width:1100px){.why-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.why-grid{grid-template-columns:1fr;}}


/* ---------- TRENDING ROUTES ---------- */
.routes-section{background:var(--white);}
.routes-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
.route-card{
  background:var(--bg); border:1px solid var(--line); border-radius:20px; padding:26px;
  transition:transform .3s ease, box-shadow .3s ease;
}
.route-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg);}
.route-top{display:flex; align-items:center; justify-content:space-between; margin-bottom:18px;}
.route-mode{display:flex; align-items:center; gap:8px; font-size:12.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--sky);}
.route-mode svg{width:16px; height:16px;}
.live-dot{display:flex; align-items:center; gap:6px; font-size:11px; font-weight:700; color:var(--emerald);}
.live-dot i{width:7px; height:7px; border-radius:50%; background:var(--emerald); animation:liveBlink 1.4s ease-in-out infinite;}
@keyframes liveBlink{0%,100%{opacity:1;} 50%{opacity:.25;}}
.route-cities{font-family:var(--ff-head); font-size:19px; font-weight:700; display:flex; align-items:center; gap:8px;}
.route-cities svg{width:16px; height:16px; color:var(--muted);}
.route-price{margin-top:16px; display:flex; align-items:baseline; gap:8px;}
.route-price .amt{font-family:var(--ff-head); font-size:26px; font-weight:800; color:var(--navy); transition:transform .25s ease;}
.route-price .amt.flip{animation:priceFlip .5s ease;}
@keyframes priceFlip{0%{transform:rotateX(90deg); opacity:0;} 100%{transform:rotateX(0); opacity:1;}}
.route-price .unit{font-size:12.5px; color:var(--muted);}
@media (max-width:1100px){.routes-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.routes-grid{grid-template-columns:1fr;}}

/* ---------- STATS ---------- */
.stats-section{background:linear-gradient(135deg, var(--navy) 0%, var(--navy-3) 100%); position:relative; overflow:hidden;}
.stats-section::before{content:''; position:absolute; inset:0; background:radial-gradient(ellipse 800px 400px at 50% 120%, rgba(255,176,32,0.25), transparent 60%);}
.stats-grid{position:relative; z-index:1; display:grid; grid-template-columns:repeat(4,1fr); gap:20px; text-align:center;}
.stat-num{font-family:var(--ff-head); font-size:clamp(34px,4.5vw,52px); font-weight:800; color:#fff;}
.stat-label{font-size:14px; color:rgba(255,255,255,0.65); margin-top:8px; font-weight:600;}
@media (max-width:760px){.stats-grid{grid-template-columns:repeat(2,1fr); gap:36px;}}

/* ---------- PARTNERS ---------- */
.partners-section{background:var(--white); padding:70px 0;}
.partners-track-wrap{overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);}
.partners-track{display:flex; gap:60px; width:max-content; animation:partnersScroll 26s linear infinite; align-items:center;}
.partners-track:hover{animation-play-state:paused;}
.partner-logo{font-family:var(--ff-head); font-weight:800; font-size:20px; color:var(--muted); opacity:.6; white-space:nowrap; transition:opacity .2s ease, color .2s ease;}
.partner-logo:hover{opacity:1; color:var(--navy);}
@keyframes partnersScroll{0%{transform:translateX(0);} 100%{transform:translateX(-50%);}}

/* ---------- NEWSLETTER ---------- */
.newsletter-section{
  background:linear-gradient(135deg, var(--coral) 0%, var(--gold) 100%); background-size:200% 200%;
  animation:gradientShift 8s ease infinite; text-align:center; position:relative; overflow:hidden;
}
@keyframes gradientShift{0%{background-position:0% 50%;} 50%{background-position:100% 50%;} 100%{background-position:0% 50%;}}
.newsletter-section h2{color:#fff; font-size:clamp(28px,4vw,44px); font-weight:800; max-width:16ch; margin:0 auto;}
.newsletter-section p{color:rgba(255,255,255,0.85); margin-top:14px; font-size:15.5px;}
.newsletter-form{display:flex; max-width:480px; margin:32px auto 0; background:#fff; border-radius:100px; padding:6px; box-shadow:var(--shadow-lg); gap:6px;}
.newsletter-form input{flex:1; border:none; background:none; padding:14px 20px; font-size:15px; outline:none; color:var(--navy);}
.newsletter-form button{border-radius:100px; padding:14px 26px; font-size:14.5px; white-space:nowrap;}
.newsletter-msg{margin-top:14px; font-size:13.5px; font-weight:700; color:#fff; opacity:0; transition:opacity .3s ease;}
.newsletter-msg.show{opacity:1;}
@media (max-width:520px){.newsletter-form{flex-direction:column; border-radius:22px;} .newsletter-form input{padding:12px 14px;}}

/* ---------- CONTACT FORM ---------- */
.contact-section{background:var(--bg);}
.contact-form-card{max-width:640px; margin:0 auto; background:#fff; border-radius:22px; box-shadow:var(--shadow-sm); padding:44px;}
.contact-form-card .form-row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.contact-form-card .modal-field textarea{
  width:100%; padding:13px 16px; border-radius:12px; border:1.5px solid var(--line);
  font-size:15px; font-family:var(--ff-body); color:var(--navy); outline:none; transition:border-color .2s ease;
  resize:vertical; min-height:120px;
}
.contact-form-card .modal-field textarea:focus{border-color:var(--coral);}
@media (max-width:560px){.contact-form-card{padding:26px;} .contact-form-card .form-row{grid-template-columns:1fr;}}

/* ---------- FLOATING ACTION MENU ---------- */
.fab-menu{position:fixed; bottom:30px; right:30px; z-index:200; display:flex; flex-direction:column; align-items:flex-end;}
@media (max-width:640px){.fab-menu{bottom:20px; right:20px;}}
.fab-items{display:flex; flex-direction:column; align-items:flex-end; gap:14px; margin-bottom:14px;}
.fab-item{
  position:relative; width:50px; height:50px; border-radius:50%; background:#fff; color:var(--navy);
  box-shadow:var(--shadow-lg); display:flex; align-items:center; justify-content:center; font-size:21px;
  overflow:hidden; opacity:0; transform:translateY(14px) scale(.7); pointer-events:none; flex-shrink:0;
  transition:transform .3s cubic-bezier(.22,.9,.32,1), opacity .25s ease, background .2s ease;
}
.fab-item.is-hidden{display:none;}
.fab-item:hover, .fab-item:focus-visible{transform:translateY(0) scale(1.1); background:var(--coral-hover);}
.fab-item:focus-visible{outline:2px solid var(--coral); outline-offset:3px;}
.fab-item.listening{background:var(--coral); color:#fff; animation:fabPulse 1.1s ease-in-out infinite;}
@keyframes fabPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,77,77,.5);} 50%{box-shadow:0 0 0 10px rgba(255,77,77,0);}}
.fab-menu.open .fab-items .fab-item{opacity:1; transform:translateY(0) scale(1); pointer-events:auto;}
/* Expand: item nearest the main FAB (last child) animates in first, cascading upward */
.fab-menu.open .fab-item:nth-child(4){transition-delay:0s;}
.fab-menu.open .fab-item:nth-child(3){transition-delay:.06s;}
.fab-menu.open .fab-item:nth-child(2){transition-delay:.12s;}
.fab-menu.open .fab-item:nth-child(1){transition-delay:.18s;}
/* Collapse: topmost item animates out first, cascading downward */
.fab-menu:not(.open) .fab-item:nth-child(1){transition-delay:0s;}
.fab-menu:not(.open) .fab-item:nth-child(2){transition-delay:.06s;}
.fab-menu:not(.open) .fab-item:nth-child(3){transition-delay:.12s;}
.fab-menu:not(.open) .fab-item:nth-child(4){transition-delay:.18s;}
.fab-item[data-tooltip]::before{
  content:attr(data-tooltip); position:absolute; right:60px; top:50%; transform:translateY(-50%) translateX(6px);
  background:var(--navy); color:#fff; font-size:12.5px; font-weight:600; padding:7px 12px; border-radius:8px;
  white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .2s ease, transform .2s ease; box-shadow:var(--shadow-sm);
}
.fab-item:hover[data-tooltip]::before, .fab-item:focus-visible[data-tooltip]::before{opacity:1; transform:translateY(-50%) translateX(0);}
.fab-main{
  width:60px; height:60px; border-radius:50%; background:linear-gradient(135deg, var(--coral), var(--navy)); color:#fff;
  box-shadow:var(--shadow-lg); display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden;
  transition:transform .3s cubic-bezier(.34,1.56,.64,1);
}
.fab-main:hover{transform:scale(1.08);}
.fab-main:focus-visible{outline:2px solid #fff; outline-offset:3px;}
.fab-main-icon{display:inline-block; font-size:28px; font-weight:400; line-height:1; transition:transform .3s ease;}
.fab-menu.open .fab-main-icon{transform:rotate(45deg);}
@media (max-width:640px){
  .fab-item{width:46px; height:46px; font-size:19px;}
  .fab-main{width:54px; height:54px;}
  .fab-main-icon{font-size:24px;}
}

/* ---------- CHATBOT ---------- */
.chatbot-panel{
  position:fixed; bottom:104px; right:30px; z-index:190; width:340px; max-width:calc(100vw - 40px); background:#fff;
  border-radius:22px; box-shadow:var(--shadow-lg); overflow:hidden; transform:translateY(16px) scale(.97); opacity:0; pointer-events:none;
  transition:transform .25s ease, opacity .25s ease;
}
.chatbot-panel.open{transform:translateY(0) scale(1); opacity:1; pointer-events:auto;}
@media (max-width:640px){.chatbot-panel{bottom:86px; right:20px;}}
.chatbot-head{background:var(--navy); color:#fff; padding:18px 20px;}
.chatbot-head h4{color:#fff; font-size:15.5px;}
.chatbot-head p{font-size:12.5px; opacity:.7; margin-top:3px;}
.chatbot-body{padding:16px 18px; max-height:280px; overflow-y:auto; display:flex; flex-direction:column; gap:10px;}
.chat-msg{font-size:13.5px; padding:11px 14px; border-radius:14px; max-width:85%; line-height:1.5;}
.chat-msg.bot{background:var(--bg); color:var(--navy); border-bottom-left-radius:4px;}
.chat-msg.user{background:var(--coral); color:#fff; align-self:flex-end; border-bottom-right-radius:4px;}
.chat-suggestions{display:flex; flex-direction:column; gap:8px; padding:4px 18px 18px;}
.chat-chip{text-align:left; font-size:13px; font-weight:600; padding:10px 14px; border-radius:12px; background:var(--coral-hover); color:var(--coral-dark); transition:background .2s ease;}
.chat-chip:hover{background:#ffe1e1;}

/* ---------- AUTH MODAL ---------- */
.modal-overlay{
  position:fixed; inset:0; z-index:300; background:rgba(10,37,64,0.6); backdrop-filter:blur(6px);
  display:none; align-items:center; justify-content:center; padding:20px;
}
.modal-overlay.open{display:flex;}
.modal-card{
  background:#fff; border-radius:24px; box-shadow:var(--shadow-lg); padding:40px;
  width:100%; max-width:420px; max-height:90vh; overflow-y:auto; position:relative;
}
.modal-close{
  position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:50%;
  background:rgba(10,37,64,0.06); display:flex; align-items:center; justify-content:center;
  color:var(--navy); font-size:20px; line-height:1; transition:background .2s ease;
}
.modal-close:hover{background:rgba(10,37,64,0.12);}
.modal-card h2{font-size:25px; font-weight:800;}
.modal-sub{color:var(--muted); font-size:14px; margin-top:6px; margin-bottom:26px;}
.modal-field{margin-bottom:16px;}
.modal-field label{display:block; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--navy); margin-bottom:6px;}
.modal-field input{
  width:100%; padding:13px 16px; border-radius:12px; border:1.5px solid var(--line);
  font-size:15px; font-family:var(--ff-body); color:var(--navy); outline:none; transition:border-color .2s ease;
}
.modal-field input:focus{border-color:var(--coral);}
.modal-forgot{display:inline-block; margin:-6px 0 18px; font-size:13px; font-weight:700; color:var(--coral);}
.modal-submit{width:100%; justify-content:center; margin-top:4px;}
.modal-switch{text-align:center; margin-top:22px; font-size:14px; color:var(--muted);}
.modal-switch a{color:var(--coral); font-weight:700;}
.modal-msg{margin-top:14px; font-size:13px; font-weight:600; color:var(--emerald); text-align:center; opacity:0; max-height:0; overflow:hidden; transition:opacity .3s ease;}
/* max-height is a clamp for the reveal, not an animated property (the
   transition is opacity-only), so it needs headroom for multi-line notices —
   the partner-registration holding message wraps to 3-4 lines at 340px. */
.modal-msg.show{opacity:1; max-height:200px;}

/* ---------- PROFILE CHIP (header, logged-in state) ---------- */
.profile-chip-wrap{position:relative;}
.profile-chip{display:flex; align-items:center; gap:9px; padding:6px 14px 6px 6px; border-radius:100px; background:rgba(10,37,64,0.05); transition:background .2s ease;}
.profile-chip:hover{background:rgba(10,37,64,0.1);}
.profile-chip-avatar{width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg, var(--gold), var(--coral)); color:#fff; display:flex; align-items:center; justify-content:center; font-size:12.5px; font-weight:800; flex-shrink:0; object-fit:cover;}
.profile-chip-name{font-size:13.5px; font-weight:700; color:var(--navy); max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.profile-chip-chevron{width:14px; height:14px; color:var(--muted); transition:transform .2s ease; flex-shrink:0;}
.profile-chip.open .profile-chip-chevron{transform:rotate(180deg);}
.profile-dropdown{
  position:absolute; top:calc(100% + 10px); right:0; background:#fff; border-radius:16px; box-shadow:var(--shadow-lg);
  min-width:230px; padding:10px; display:none; z-index:350; border:1px solid var(--line);
}
.profile-dropdown.open{display:block;}
.profile-dropdown a, .profile-dropdown button{
  display:flex; align-items:center; gap:10px; width:100%; text-align:left; padding:10px 12px; border-radius:10px;
  font-size:13.5px; font-weight:600; color:var(--navy); transition:background .15s ease;
}
.profile-dropdown a:hover, .profile-dropdown button:hover{background:rgba(10,37,64,0.06);}
.profile-dropdown .dd-icon{width:17px; height:17px; flex-shrink:0; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; color:var(--muted);}
.profile-dropdown hr{border:none; border-top:1px solid var(--line); margin:6px 4px;}
.profile-dropdown .logout-item{color:var(--coral-dark);}
.profile-dropdown .logout-item .dd-icon{color:var(--coral-dark);}
.mobile-account-links{display:none;}
.mobile-nav.show-account .mobile-account-links{display:block;}
.mobile-nav.show-account .mobile-auth-links{display:none;}

/* ---------- ACCOUNT CENTER MODAL ---------- */
#accountModalOverlay .modal-card{max-width:960px; padding:0; max-height:88vh; display:flex; flex-direction:column;}
.acct-header{display:flex; align-items:center; gap:16px; padding:24px 30px; border-bottom:1px solid var(--line); flex-shrink:0;}
.acct-header-avatar{width:56px; height:56px; border-radius:50%; background:linear-gradient(135deg, var(--gold), var(--coral)); color:#fff; display:flex; align-items:center; justify-content:center; font-size:19px; font-weight:800; flex-shrink:0; object-fit:cover;}
.acct-header-info{min-width:0; flex:1;}
.acct-header-name{font-size:18px; font-weight:800; color:var(--navy);}
.acct-header-email{font-size:13px; color:var(--muted); margin-top:2px;}
.acct-body{display:flex; flex:1; min-height:0; overflow:hidden;}
.acct-tabs{width:220px; flex-shrink:0; border-right:1px solid var(--line); padding:16px 10px; overflow-y:auto;}
.acct-tab{display:flex; align-items:center; gap:11px; padding:11px 14px; border-radius:12px; font-size:13.5px; font-weight:700; color:var(--muted); margin-bottom:3px; transition:background .15s ease, color .15s ease;}
.acct-tab:hover{background:rgba(10,37,64,0.05); color:var(--navy);}
.acct-tab.active{background:var(--navy); color:#fff;}
.acct-tab .dd-icon{width:17px; height:17px; flex-shrink:0; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.acct-panels{flex:1; min-width:0; overflow-y:auto; padding:26px 32px;}
.acct-panel{display:none;}
.acct-panel.active{display:block;}
.acct-panel h2{font-size:17px; margin-bottom:18px;}
@media (max-width:760px){
  #accountModalOverlay .modal-card{max-width:100%; height:92vh; max-height:92vh;}
  .acct-body{flex-direction:column;}
  .acct-tabs{width:100%; display:flex; overflow-x:auto; border-right:none; border-bottom:1px solid var(--line); padding:10px;}
  .acct-tab{white-space:nowrap; margin-bottom:0;}
  .acct-panels{padding:20px;}
}

/* ---------- Account Center shared widgets (ported from the retired user dashboard) ---------- */
.badge{display:inline-block; padding:5px 12px; border-radius:100px; font-size:11px; font-weight:700; white-space:nowrap;}
.badge.confirmed, .badge.success, .badge.resolved, .badge.closed, .badge.completed{background:rgba(18,183,106,0.12); color:var(--emerald);}
.badge.pending, .badge.in_progress, .badge.open{background:rgba(255,176,32,0.18); color:#a06600;}
.badge.cancelled, .badge.failed{background:rgba(230,57,70,0.12); color:var(--coral-dark);}
.badge.refunded{background:rgba(47,128,237,0.12); color:var(--sky, #2F80ED);}
.badge.unread{background:rgba(255,176,32,0.18); color:#a06600;}
.badge.read{background:rgba(10,37,64,0.06); color:var(--muted);}
.acct-row{display:flex; align-items:center; gap:16px; padding:16px; border-radius:16px; background:#fff; border:1px solid var(--line); margin-bottom:12px; flex-wrap:wrap;}
.acct-row .ar-icon{width:44px; height:44px; border-radius:12px; background:rgba(255,176,32,0.14); color:var(--gold-dark); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.acct-row .ar-main{flex:1; min-width:160px;}
.acct-row .ar-title{font-weight:700; font-size:14px; text-transform:capitalize;}
.acct-row .ar-sub{font-size:12.5px; color:var(--muted); margin-top:3px;}
.acct-row .ar-amount{font-weight:800; color:var(--navy); font-size:14.5px; white-space:nowrap;}
.acct-form-field{margin-bottom:16px; max-width:420px;}
.acct-form-field label{display:block; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--navy); margin-bottom:6px;}
.acct-form-field input, .acct-form-field select{
  width:100%; padding:12px 15px; border-radius:12px; border:1.5px solid var(--line); font-size:14px; color:var(--navy); outline:none; transition:border-color .2s ease;
}
.acct-form-field input:focus, .acct-form-field select:focus{border-color:var(--coral);}
.acct-form-grid{display:grid; grid-template-columns:1fr 1fr; gap:0 16px; max-width:620px;}
.acct-msg{margin-top:12px; font-size:13px; font-weight:600;}
.acct-msg.error{color:var(--coral-dark);} .acct-msg.success{color:var(--emerald);}
.acct-star-input{display:flex; gap:6px; margin-bottom:16px; font-size:22px; color:var(--line);}
.acct-star-input span{cursor:pointer; transition:color .15s ease;}
.acct-star-input span.active{color:var(--gold);}
.acct-table{width:100%; border-collapse:collapse; font-size:13.5px;}
.acct-table th{text-align:left; padding:10px 12px; color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.05em; border-bottom:2px solid var(--line);}
.acct-table td{padding:12px; border-bottom:1px solid var(--line);}
.acct-table tr:last-child td{border-bottom:none;}
.acct-table-wrap{overflow-x:auto;}
.acct-empty{color:var(--muted); font-size:13px; padding:18px 0; text-align:center;}
.acct-notif-item{padding:12px; border-radius:12px; background:#fff; border:1px solid var(--line); margin-bottom:10px;}
.acct-notif-item.unread{border-color:rgba(255,176,32,0.4); background:rgba(255,176,32,0.05);}
.acct-notif-item .nt{font-size:13.5px; font-weight:700; color:var(--navy);}
.acct-notif-item .nm{font-size:12.5px; color:var(--muted); margin-top:3px; line-height:1.4;}
.acct-notif-item .ndate{font-size:11.5px; color:var(--muted); margin-top:4px;}
.acct-notif-actions{display:flex; gap:8px; margin-top:8px;}
.acct-section-head{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:18px;}
.acct-section-head h2{margin-bottom:0;}
.acct-notif-clearbar{position:sticky; bottom:0; display:flex; justify-content:flex-end; padding:14px 0 2px; margin-top:4px; background:linear-gradient(rgba(255,255,255,0), #fff 45%);}
.acct-empty-notif{padding:44px 10px;}
.acct-empty-notif .aei{font-size:38px; line-height:1; margin-bottom:12px;}
.acct-empty-notif .aet{font-weight:700; color:var(--navy); font-size:15px; margin-bottom:4px;}
.acct-empty-notif .aes{font-size:12.5px; color:var(--muted);}

/* ---------- Booking confirmation (ported, unchanged behavior) ---------- */
.confirm-row{display:flex; justify-content:space-between; padding:10px 0; border-bottom:1px dashed var(--line); font-size:14px;}
.confirm-row span:first-child{color:var(--muted);}
.confirm-row span:last-child{font-weight:700; color:var(--navy);}
.timeline{display:flex; align-items:flex-start; margin:6px 0 22px;}
.tl-step{display:flex; flex-direction:column; align-items:center; gap:6px; flex-shrink:0; width:74px;}
.tl-dot{width:16px; height:16px; border-radius:50%; background:var(--line); border:2px solid var(--line); box-sizing:border-box;}
.tl-step.done .tl-dot{background:var(--emerald); border-color:var(--emerald);}
.tl-step.cancelled-step .tl-dot{background:var(--coral-dark); border-color:var(--coral-dark);}
.tl-label{font-size:10.5px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; text-align:center;}
.tl-step.done .tl-label{color:var(--navy);}
.tl-step.cancelled-step .tl-label{color:var(--coral-dark);}
.tl-line{flex:1; height:2px; background:var(--line); margin:7px -4px 0;}
.tl-line.done{background:var(--emerald);}
#acctConfirmOverlay .modal-card{max-width:520px;}
.ticket-head{display:flex; align-items:center; gap:12px; margin-bottom:18px;}
.ticket-head img{height:40px; width:auto;}
.ticket-head .th-name{font-weight:800; color:var(--navy); font-size:15px;}
.ticket-section-label{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin:20px 0 6px;}
.ticket-note{font-size:11.5px; color:var(--muted); font-style:italic;}
.ticket-qr{display:flex; flex-direction:column; align-items:center; gap:8px; padding:18px 0 6px; text-align:center;}
.ticket-qr img{border:1px solid var(--line); border-radius:12px; padding:8px; background:#fff;}
.ticket-qr .tq-ref{font-weight:800; color:var(--navy); letter-spacing:.04em; font-size:14px;}
.ticket-support{font-size:12.5px; color:var(--muted); text-align:center; margin-top:18px; padding-top:14px; border-top:1px solid var(--line);}
.ticket-actions{display:flex; flex-wrap:wrap; gap:10px; margin-top:22px;}
.ticket-actions .btn{flex:1; min-width:120px; justify-content:center;}
@media print{
  body *{visibility:hidden;}
  #acctConfirmOverlay, #acctConfirmOverlay *{visibility:visible;}
  #acctConfirmOverlay{position:absolute; inset:0; background:#fff; display:block;}
  #acctConfirmOverlay .modal-close, #acctConfirmOverlay .ticket-actions{display:none;}
}

/* ---------- FOOTER ---------- */
footer{background:var(--navy); color:rgba(255,255,255,0.68); padding:80px 0 32px;}
.foot-grid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr 1fr; gap:36px; padding-bottom:50px; border-bottom:1px solid rgba(255,255,255,0.1);}
.foot-logo{display:flex; justify-content:center; margin-bottom:20px;}
.foot-logo-img{height:170px; width:auto; object-fit:contain; flex-shrink:0;}
.foot-grid > div p{font-size:13.5px; line-height:1.7; max-width:280px;}
.foot-col h5{font-family:var(--ff-body); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--gold); margin-bottom:18px;}
.foot-col a{display:block; font-size:14px; margin-bottom:12px; opacity:.85; transition:opacity .2s ease, color .2s ease;}
.foot-contact li{display:flex; align-items:flex-start; gap:10px; font-size:13.5px; margin-bottom:14px; opacity:.85; line-height:1.5; list-style:none;}
.foot-contact svg{width:16px; height:16px; flex-shrink:0; margin-top:2px; color:var(--gold);}
.foot-contact a{display:inline; margin-bottom:0; opacity:1;}
.foot-contact a:hover{color:var(--gold);}
.foot-col a:hover{opacity:1; color:var(--gold);}
.foot-bottom{display:flex; justify-content:space-between; padding-top:26px; font-size:12.5px; opacity:.55; flex-wrap:wrap; gap:10px;}
@media (max-width:960px){.foot-grid{grid-template-columns:1fr 1fr;}}

/* ==========================================================================
   TOUCH INPUT SIZING - FUNCTIONAL, NOT COSMETIC
   ==========================================================================
   iOS Safari zooms the ENTIRE PAGE whenever a focused input reports a
   font-size under 16px, and the reader then has to pinch back out to see the
   form they were filling in. The filter bars and toolbars in this sheet set
   12.5-14px for density - correct on a desktop, unusable on a phone.

   `!important` here is deliberate and load-bearing. The rules being overridden
   are component-scoped (`.filter-bar input[type="text"]` is specificity 0,2,1),
   so a plain `input` selector loses wherever it sits in the file; matching that
   specificity for every one of them would be far more fragile than this.

   Two-term query on purpose: the width term catches phones, and the pointer
   term catches touch devices the width term misses - a tablet at 1024px zooms
   just the same. Desktop density is untouched by both.
   ========================================================================== */
@media (max-width:900px), (hover:none) and (pointer:coarse){
  input, select, textarea{font-size:16px !important;}
}