
  :root{
    --ivory:#F6F1E3;
    --ivory-deep:#EEE4CC;
    --ivory-card:#FBF8F0;
    --forest:#1F3A2E;
    --forest-deep:#122019;
    --forest-mist:#E7EEE6;
    --brass:#B8863B;
    --brass-light:#D9B978;
    --brass-glow:#E9C888;
    --charcoal:#26221E;
    --charcoal-soft:#5C564D;
    --line:#DFD4B8;

    --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px;
    --sp-6:32px; --sp-7:48px; --sp-8:64px; --sp-9:96px; --sp-10:128px;

    --radius-lg:24px;
    --radius-md:16px;
    --radius-sm:10px;
    --shadow-sm: 0 1px 2px rgba(18,32,25,0.08);
    --shadow-card: 0 1px 2px rgba(18,32,25,0.06), 0 16px 40px -20px rgba(18,32,25,0.35);
    --shadow-lift: 0 1px 2px rgba(18,32,25,0.08), 0 30px 60px -24px rgba(18,32,25,0.5);
    --ease: cubic-bezier(.22,.61,.36,1);
    --ease-soft: cubic-bezier(.16,.84,.44,1);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; transition-duration:0.001ms !important; scroll-behavior:auto !important;}
    [data-reveal]{opacity:1 !important; transform:none !important;}
  }

  body{
    margin:0;
    background:var(--ivory);
    color:var(--charcoal);
    font-family:'Manrope', sans-serif;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }

  h1,h2,h3,.display{
    font-family:'Fraunces', serif;
    font-weight:500;
    letter-spacing:-0.01em;
    color:var(--forest-deep);
    margin:0;
  }

  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.16em;
    text-transform:uppercase;
    color:var(--brass);
    font-weight:500;
  }

  a{color:inherit;text-decoration:none;}
  img{display:block;max-width:100%;}
  button{font-family:inherit;cursor:pointer;}

  :focus-visible{
    outline:2.5px solid var(--brass);
    outline-offset:3px;
    border-radius:4px;
  }

  /* Canonical layout grid container — every section's content sits inside
     this at a consistent 1240px max-width, centered, with the section's own
     padding providing the outer gutter. Single source of truth for alignment. */
  .container{max-width:1240px; margin-left:auto; margin-right:auto; width:100%;}
  .wrap{max-width:1240px; margin:0 auto; padding:0 var(--sp-6);}

  /* ---------- Reveal-on-scroll ---------- */
  [data-reveal]{
    opacity:0;
    transform:translateY(28px);
    transition:opacity .8s var(--ease-soft), transform .8s var(--ease-soft);
  }
  [data-reveal].is-visible{opacity:1; transform:translateY(0);}
  [data-reveal-stagger] > *{
    opacity:0; transform:translateY(24px);
    transition:opacity .7s var(--ease-soft), transform .7s var(--ease-soft);
  }
  [data-reveal-stagger].is-visible > *{opacity:1; transform:translateY(0);}
  [data-reveal-stagger].is-visible > *:nth-child(1){transition-delay:.05s;}
  [data-reveal-stagger].is-visible > *:nth-child(2){transition-delay:.14s;}
  [data-reveal-stagger].is-visible > *:nth-child(3){transition-delay:.23s;}
  [data-reveal-stagger].is-visible > *:nth-child(4){transition-delay:.32s;}
  [data-reveal-stagger].is-visible > *:nth-child(5){transition-delay:.41s;}
  [data-reveal-stagger].is-visible > *:nth-child(6){transition-delay:.5s;}

  /* ---------- Header ---------- */
  .site-header{
    position:sticky; top:0; z-index:100;
    background:rgba(246,241,227,0.9);
    backdrop-filter:blur(12px);
    border-bottom:1px solid transparent;
    transition:border-color .35s var(--ease), box-shadow .35s var(--ease), background .35s var(--ease);
  }
  .site-header.is-scrolled{
    border-bottom-color:var(--line);
    box-shadow:0 8px 24px -20px rgba(18,32,25,0.5);
  }
  .header-inner{
    display:flex; align-items:center; justify-content:space-between;
    padding:20px var(--sp-6);
    gap:var(--sp-6);
  }
  .logo{
    display:flex; align-items:center; flex-shrink:0;
  }
  .logo img{
    height:46px; width:auto; display:block;
  }
  .main-nav{display:flex; gap:38px; list-style:none; margin:0; padding:0;}
  .main-nav a{
    font-size:14.5px; font-weight:600; color:var(--charcoal-soft);
    position:relative; padding:4px 0; transition:color .2s var(--ease);
  }
  .main-nav a:hover{color:var(--forest-deep);}
  .main-nav a::after{
    content:""; position:absolute; left:0; bottom:-2px; width:0; height:1.5px;
    background:var(--brass); transition:width .3s var(--ease);
  }
  .main-nav a:hover::after{width:100%;}

  /* nav-eyebrow, nav-index, and nav-footer are mobile-menu-only
     additions — hidden on desktop, shown only inside the mobile
     full-screen panel below. */
  .nav-eyebrow, .nav-footer{display:none;}
  .nav-index{display:none;}

  .header-actions{display:flex; align-items:center; gap:16px; flex-shrink:0;}
  .icon-btn{
    display:inline-flex; align-items:center; justify-content:center;
    width:40px; height:40px; border-radius:50%; border:1px solid var(--line);
    background:transparent; position:relative; color:var(--forest-deep);
    transition:border-color .2s, background .2s;
  }
  .icon-btn:hover{background:var(--ivory-deep);}
  .cart-badge{
    position:absolute; top:-4px; right:-4px; background:var(--brass); color:var(--ivory);
    font-family:'IBM Plex Mono', monospace; font-size:10px; width:17px; height:17px;
    border-radius:50%; display:flex; align-items:center; justify-content:center;
  }
  .btn{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    padding:13px 26px; border-radius:999px; font-size:14.5px; font-weight:700;
    border:1px solid transparent;
    transition:transform .35s var(--ease-soft), box-shadow .35s var(--ease-soft), background .3s;
    white-space:nowrap;
  }
  .btn-primary{background:var(--forest-deep); color:var(--ivory);}
  .btn-primary:hover{background:var(--forest); transform:translateY(-2px); box-shadow:0 16px 28px -14px rgba(18,32,25,0.55);}
  .btn-ghost{background:transparent; color:var(--forest-deep); border-color:var(--forest-deep);}
  .btn-ghost:hover{background:var(--forest-deep); color:var(--ivory); transform:translateY(-2px);}
  .btn-ghost-light{background:transparent; color:var(--ivory); border-color:rgba(246,241,227,0.55);}
  .btn-ghost-light:hover{background:rgba(246,241,227,0.15); border-color:var(--ivory);}
  .btn-brass{background:var(--brass); color:var(--forest-deep);}
  .btn-brass:hover{background:var(--brass-light); transform:translateY(-2px); box-shadow:0 16px 28px -14px rgba(184,134,59,0.55);}
  .btn-sm{padding:10px 20px; font-size:13px;}
  .btn-block{width:100%;}
  .nav-toggle{display:none;}

  /* ---------- Hero ---------- */
  .hero{
    position:relative;
    min-height:94vh;
    display:flex;
    align-items:flex-end;
    overflow:hidden;
  }
  .hero-bg{
    position:absolute; inset:0; z-index:0;
    overflow:hidden;
  }
  .hero-bg img{
    width:100%; height:100%; object-fit:cover;
    animation:kenburns 22s var(--ease-soft) infinite alternate;
  }
  @keyframes kenburns{
    0%{transform:scale(1.0) translate(0,0);}
    100%{transform:scale(1.12) translate(-1.5%, -1%);}
  }
  .hero-bg::after{
    content:"";
    position:absolute; inset:0;
    background:linear-gradient(180deg, rgba(18,32,25,0.15) 0%, rgba(18,32,25,0.08) 30%, rgba(18,32,25,0.72) 92%),
               linear-gradient(90deg, rgba(18,32,25,0.55) 0%, rgba(18,32,25,0.05) 45%);
  }
  .hero-content{
    position:relative; z-index:1;
    padding:0 var(--sp-6) var(--sp-9);
  }
  .hero-badge{
    display:inline-flex; align-items:center; gap:8px;
    background:rgba(246,241,227,0.12);
    border:1px solid rgba(246,241,227,0.3);
    backdrop-filter:blur(6px);
    padding:8px 16px; border-radius:999px;
    margin-bottom:var(--sp-5);
    animation:fadeUp .9s var(--ease-soft) both;
  }
  .hero-badge .eyebrow{color:var(--brass-glow);}
  .hero h1{
    font-size:clamp(42px, 6vw, 76px);
    line-height:1.02;
    font-weight:500;
    color:var(--ivory);
    max-width:16ch;
    animation:fadeUp .9s var(--ease-soft) .1s both;
  }
  .hero h1 em{font-style:italic; font-weight:400; color:var(--brass-glow);}
  .hero p.lede{
    margin-top:var(--sp-5);
    font-size:18px; line-height:1.6; color:rgba(246,241,227,0.85);
    max-width:44ch;
    animation:fadeUp .9s var(--ease-soft) .2s both;
  }
  .hero-ctas{
    margin-top:var(--sp-6);
    display:flex; gap:14px; flex-wrap:wrap;
    animation:fadeUp .9s var(--ease-soft) .3s both;
  }
  @keyframes fadeUp{
    from{opacity:0; transform:translateY(22px);}
    to{opacity:1; transform:translateY(0);}
  }
  .scroll-cue{
    position:absolute; bottom:var(--sp-6); right:var(--sp-6); z-index:1;
    display:flex; flex-direction:column; align-items:center; gap:10px;
    color:rgba(246,241,227,0.75);
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    letter-spacing:0.14em; text-transform:uppercase;
    writing-mode:vertical-rl;
    animation:fadeUp 1s var(--ease-soft) .6s both;
  }
  .scroll-cue::after{
    content:""; writing-mode:horizontal-tb; display:block;
    width:1px; height:46px; background:rgba(246,241,227,0.4);
    animation:scrollpulse 2s var(--ease) infinite;
  }
  @keyframes scrollpulse{
    0%,100%{transform:scaleY(1); opacity:.6;}
    50%{transform:scaleY(0.6); opacity:1;}
  }

  /* ---------- Home hero (split copy + video/photo slider) ---------- */
  /* Homepage-only variant — deliberately separate from .hero/.hero-sub above,
     which every other page (about, gallery, itinerary, ratecard, booking,
     contact) still relies on for its banner. Same tokens, same motion
     language, different layout. */
  .home-hero{
    position:relative;
    padding:var(--sp-8) var(--sp-6) 0;
    max-width:1240px;
    margin:0 auto;
  }
  .home-hero-grid{
    display:grid;
    grid-template-columns:1.05fr 0.95fr;
    gap:clamp(28px, 5vw, 56px);
    align-items:center;
  }
  .home-hero-copy .eyebrow{margin-bottom:var(--sp-4); display:block;}
  .home-hero-copy h1{
    font-size:clamp(38px, 4.6vw, 60px);
    line-height:1.06;
    font-weight:500;
    animation:fadeUp .9s var(--ease-soft) .1s both;
  }
  .home-hero-copy h1 em{
    font-style:italic;
    font-weight:400;
    color:var(--brass);
  }
  .home-hero-copy p.lede{
    margin-top:var(--sp-5);
    font-size:17px;
    line-height:1.65;
    color:var(--charcoal-soft);
    max-width:46ch;
    animation:fadeUp .9s var(--ease-soft) .2s both;
  }
  .home-hero-ctas{
    margin-top:var(--sp-6);
    display:flex;
    gap:14px;
    flex-wrap:wrap;
    animation:fadeUp .9s var(--ease-soft) .3s both;
  }
  .home-hero-facts{
    margin-top:var(--sp-7);
    display:flex;
    gap:28px;
    flex-wrap:wrap;
    animation:fadeUp .9s var(--ease-soft) .4s both;
  }
  .hero-fact{
    display:flex;
    align-items:center;
    gap:12px;
  }
  .hero-fact-icon{
    display:flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    flex-shrink:0;
    border-radius:50%;
    background:var(--forest-mist);
    color:var(--forest-deep);
  }
  .hero-fact-icon svg{width:18px; height:18px;}
  .hero-fact-copy{display:flex; flex-direction:column; line-height:1.3;}
  .hero-fact-copy strong{
    font-family:'Fraunces', serif;
    font-size:16px;
    font-weight:500;
    color:var(--forest-deep);
  }
  .hero-fact-copy span{
    font-size:12px;
    color:var(--charcoal-soft);
  }

  .home-hero-photo{
    position:relative;
    border-radius:var(--radius-lg);
    overflow:hidden;
    aspect-ratio:4/5;
    box-shadow:var(--shadow-card);
    background:linear-gradient(155deg, var(--forest) 0%, var(--forest-deep) 65%, #0d1712 100%);
  }
  .home-hero-photo::after{
    content:"";
    position:absolute; inset:0;
    z-index:2;
    pointer-events:none;
    background:linear-gradient(190deg, rgba(13,23,18,0) 45%, rgba(13,23,18,0.32) 78%, rgba(13,23,18,0.62) 100%);
  }
  .home-hero-caption{
    position:absolute;
    left:20px; top:20px;
    z-index:4;
    display:flex;
    align-items:center;
    gap:8px;
    padding:9px 16px 9px 12px;
    background:rgba(13,23,18,0.45);
    border:1px solid rgba(246,241,227,0.35);
    backdrop-filter:blur(6px);
    border-radius:999px;
    color:var(--ivory);
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:0.04em;
  }
  .home-hero-caption svg{width:14px;height:14px;color:var(--brass-light); flex-shrink:0;}

  /* Slider: video + parallax image slides, soft-landing entrance */
  .home-hero-slider{
    opacity:0;
    transform:translateY(28px) scale(0.985);
    transition:opacity 1.3s var(--ease-soft), transform 1.3s var(--ease-soft);
  }
  .home-hero-slider.is-visible{
    opacity:1;
    transform:translateY(0) scale(1);
  }
  .home-hero-slide{
    position:absolute; inset:0;
    opacity:0;
    z-index:1;
    transition:opacity 1.4s var(--ease);
    pointer-events:none;
  }
  .home-hero-slide.is-active{
    opacity:1;
    z-index:2;
    pointer-events:auto;
  }
  .home-hero-slide img,
  .home-hero-slide video{
    width:100%;height:100%;object-fit:cover;
    display:block;
    transform:scale(1.12) translateY(var(--parallax-y, 0px));
    transition:transform .05s linear;
    will-change:transform;
  }
  .home-hero-arrow{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    z-index:5;
    width:36px;height:36px;
    border-radius:50%;
    border:1px solid rgba(246,241,227,0.35);
    background:rgba(13,23,18,0.38);
    backdrop-filter:blur(6px);
    color:var(--ivory);
    display:flex;align-items:center;justify-content:center;
    opacity:0;
    transition:opacity .3s var(--ease), background .2s var(--ease), transform .2s var(--ease);
  }
  .home-hero-arrow svg{width:16px;height:16px;}
  .home-hero-slider:hover .home-hero-arrow{opacity:1;}
  .home-hero-arrow:hover{background:rgba(13,23,18,0.6);}
  .home-hero-arrow:active{transform:translateY(-50%) scale(0.92);}
  .home-hero-arrow.prev{left:14px;}
  .home-hero-arrow.next{right:14px;}
  .home-hero-nav{
    position:absolute;
    left:50%;
    bottom:18px;
    transform:translateX(-50%);
    z-index:5;
    display:flex;
    align-items:center;
    gap:8px;
    padding:6px 8px;
  }
  .home-hero-dot{
    width:7px;height:7px;
    border-radius:999px;
    background:rgba(246,241,227,0.45);
    border:1px solid rgba(246,241,227,0.55);
    padding:0;
    transition:background .25s var(--ease), width .25s var(--ease), border-color .25s var(--ease);
  }
  .home-hero-dot:hover{background:rgba(246,241,227,0.75);}
  .home-hero-dot.is-active{
    width:22px;
    background:var(--brass-light);
    border-color:var(--brass-light);
  }
  @media (prefers-reduced-motion: reduce){
    .home-hero-slide img, .home-hero-slide video{transform:none !important;}
  }

  /* Booking widget */
  .booking-card{
    position:relative;
    margin:calc(-1 * var(--sp-8)) auto 0;
    max-width:1000px;
    background:var(--ivory-card);
    border-radius:var(--radius-md);
    box-shadow:var(--shadow-lift);
    padding:8px;
    display:grid;
    grid-template-columns:1fr 1fr auto auto;
    z-index:2;
    animation:fadeUp 1s var(--ease-soft) .4s both;
  }
  .booking-field{padding:14px 24px; border-right:1px solid var(--line); transition:background .2s;}
  .booking-field:hover{background:rgba(31,58,46,0.04); border-radius:var(--radius-sm);}
  .booking-field .field-label{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.1em;
    text-transform:uppercase; color:var(--brass); display:block; margin-bottom:5px;
  }
  .booking-field .field-value{font-size:14.5px; font-weight:700; color:var(--forest-deep);}
  .booking-field .field-sub{font-size:12px; color:var(--charcoal-soft);}
  .guest-stepper{display:flex; align-items:center; gap:12px; padding:14px 24px;}
  .stepper-btn{
    width:28px; height:28px; border-radius:50%; border:1px solid var(--forest-deep);
    background:transparent; color:var(--forest-deep); font-size:15px; line-height:1;
    display:flex; align-items:center; justify-content:center; transition:background .2s, transform .2s;
  }
  .stepper-btn:hover{background:var(--forest-mist); transform:scale(1.08);}
  #guestCount{font-weight:700; min-width:16px; text-align:center; font-family:'IBM Plex Mono', monospace;}
  .booking-card > .btn{margin:6px; padding:0 28px;}

  .trust-row{
    display:flex; align-items:center; justify-content:center; gap:var(--sp-7);
    max-width:1000px; margin:var(--sp-6) auto 0; padding:0 var(--sp-4);
    flex-wrap:wrap;
    animation:fadeUp 1s var(--ease-soft) .5s both;
  }
  .trust-item{display:flex; align-items:center; gap:10px; color:rgba(246,241,227,0.85);}
  .trust-item svg{width:16px; height:16px; color:var(--brass-glow); flex-shrink:0;}
  .trust-item strong{color:var(--ivory); font-weight:700; font-size:14px;}
  .trust-item span.sub{font-size:12px; display:block; color:rgba(246,241,227,0.6);}

  /* ---------- Stat strip ---------- */
  .stat-strip{
    background:var(--forest-deep);
    padding:var(--sp-7) var(--sp-6) var(--sp-8);
  }
  .stat-grid{
    display:grid; grid-template-columns:repeat(4, 1fr);
    gap:var(--sp-6);
  }
  .stat-item{text-align:center; border-right:1px solid rgba(246,241,227,0.12);}
  .stat-item:last-child{border-right:none;}
  .stat-num{
    font-family:'Fraunces', serif; font-size:38px; font-weight:600; color:var(--brass-glow);
    display:flex; align-items:center; justify-content:center; gap:2px;
  }
  .stat-label{
    margin-top:6px; font-family:'IBM Plex Mono', monospace; font-size:11.5px;
    letter-spacing:0.08em; text-transform:uppercase; color:rgba(246,241,227,0.65);
  }

  /* ---------- Trail divider ---------- */
  .trail{
    padding:var(--sp-8) var(--sp-6) 0;
    display:flex; align-items:center; gap:18px; color:var(--charcoal-soft);
  }
  .trail-line{
    flex:1; height:1px;
    background-image:linear-gradient(to right, var(--brass) 0 6px, transparent 6px 16px);
    background-size:16px 1px; background-repeat:repeat-x; opacity:0.65;
  }
  .trail-stop{display:flex; align-items:center; gap:12px; font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.08em; text-transform:uppercase; color:var(--forest-deep); white-space:nowrap;}
  .trail-dot{width:32px; height:32px; border-radius:50%; background:var(--forest-deep); color:var(--brass-light); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
  .trail-dot svg{width:15px; height:15px;}

  /* ---------- Sections generic ---------- */
  section{padding:var(--sp-10) var(--sp-6);}
  .section-head{max-width:640px; margin-bottom:var(--sp-8);}
  .section-head .eyebrow{margin-bottom:var(--sp-4); display:block;}
  .section-head h2{font-size:clamp(30px, 3.4vw, 42px); font-weight:500; line-height:1.15;}
  .section-head p{margin-top:var(--sp-4); color:var(--charcoal-soft); font-size:16px; line-height:1.7;}

  /* ---------- About ---------- */
  .about{background:var(--forest-mist);}
  .about-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:var(--sp-8); align-items:center;}
  .about-copy p{color:var(--charcoal-soft); line-height:1.8; font-size:16px; margin:0 0 var(--sp-4);}
  .photo-collage{display:grid; grid-template-columns:1.2fr 1fr; grid-template-rows:auto auto; gap:var(--sp-4);}
  .photo-collage img{border-radius:var(--radius-md); width:100%; height:100%; object-fit:cover; box-shadow:var(--shadow-card); transition:transform .6s var(--ease-soft);}
  .photo-collage a:hover img{transform:scale(1.03);}
  .photo-collage .tall{grid-row:1/3; aspect-ratio:3/4.4;}
  .photo-collage .short{aspect-ratio:4/2.7;}

  /* ---------- Contrast ---------- */
  .contrast{display:grid; grid-template-columns:1fr 1fr; gap:2px; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-card);}
  .contrast-panel{padding:var(--sp-8) var(--sp-7);}
  .contrast-panel.dark{background:var(--forest-deep); color:var(--ivory);}
  .contrast-panel.dark h3{color:var(--ivory);}
  .contrast-panel.dark p{color:#C9CFC7;}
  .contrast-panel.light{background:var(--ivory-deep);}
  .contrast-panel h3{font-size:25px; font-weight:500; margin-bottom:var(--sp-3);}
  .contrast-panel p{color:var(--charcoal-soft); line-height:1.7; font-size:15.5px;}
  .contrast-panel .eyebrow{margin-bottom:var(--sp-4); display:block;}
  .contrast-panel.dark .eyebrow{color:var(--brass-light);}

  /* ---------- Gallery ---------- */
  .gallery{background:var(--ivory);}
  .gallery-grid{
    display:grid; grid-template-columns:repeat(4, 1fr); grid-auto-rows:140px; gap:var(--sp-3);
  }
  .gallery-item{position:relative; overflow:hidden; border-radius:var(--radius-sm); cursor:zoom-in;}
  .gallery-item img{width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease-soft);}
  .gallery-item:hover img{transform:scale(1.08);}
  .gallery-item::after{content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(18,32,25,0) 60%, rgba(18,32,25,0.55) 100%); opacity:0; transition:opacity .3s;}
  .gallery-item:hover::after{opacity:1;}
  .gallery-item .cap{position:absolute; bottom:12px; left:14px; color:var(--ivory); font-size:12.5px; font-weight:600; opacity:0; transform:translateY(8px); transition:opacity .3s, transform .3s;}
  .gallery-item:hover .cap{opacity:1; transform:translateY(0);}
  .g1{grid-column:span 2; grid-row:span 2;}
  .g2{grid-column:span 1; grid-row:span 1;}
  .g3{grid-column:span 1; grid-row:span 2;}
  .g4{grid-column:span 1; grid-row:span 1;}
  .g5{grid-column:span 1; grid-row:span 1;}
  .g6{grid-column:span 1; grid-row:span 1;}
  .g7{grid-column:span 1; grid-row:span 1;}

  .lightbox{
    position:fixed; inset:0; background:rgba(18,32,25,0.94); z-index:200;
    display:flex; align-items:center; justify-content:center;
    opacity:0; pointer-events:none; transition:opacity .35s var(--ease);
  }
  .lightbox.is-open{opacity:1; pointer-events:auto;}
  .lightbox img{max-width:88vw; max-height:82vh; border-radius:var(--radius-sm); box-shadow:0 30px 80px rgba(0,0,0,0.5);}
  .lightbox-close, .lightbox-nav{
    position:absolute; background:rgba(246,241,227,0.1); border:1px solid rgba(246,241,227,0.3);
    color:var(--ivory); border-radius:50%; width:44px; height:44px; display:flex; align-items:center; justify-content:center;
    transition:background .2s;
  }
  .lightbox-close:hover, .lightbox-nav:hover{background:rgba(246,241,227,0.2);}
  .lightbox-close{top:28px; right:28px;}
  .lightbox-nav.prev{left:28px; top:50%; transform:translateY(-50%);}
  .lightbox-nav.next{right:28px; top:50%; transform:translateY(-50%);}
  .lightbox-caption{position:absolute; bottom:32px; left:50%; transform:translateX(-50%); color:rgba(246,241,227,0.75); font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.06em;}

  /* ---------- Packages ---------- */
  .packages{background:var(--forest-mist);}
  .tab-row{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:var(--sp-5); margin-bottom:var(--sp-8);}
  .tabs{display:inline-flex; background:var(--ivory-deep); border-radius:999px; padding:5px; gap:4px;}
  .tab-btn{border:none; background:transparent; padding:11px 22px; border-radius:999px; font-weight:700; font-size:13.5px; color:var(--charcoal-soft); transition:background .25s, color .25s;}
  .tab-btn.is-active{background:var(--forest-deep); color:var(--ivory);}

  .card-grid{display:grid; grid-template-columns:repeat(3, 1fr); gap:var(--sp-6);}
  .pkg-panel{display:none;}
  .pkg-panel.is-active{display:grid;}

  .pkg-card{
    background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md);
    overflow:hidden; transition:transform .45s var(--ease-soft), box-shadow .45s var(--ease-soft);
    display:flex; flex-direction:column;
  }
  .pkg-card:hover{transform:translateY(-8px); box-shadow:var(--shadow-lift);}
  .pkg-media{position:relative; aspect-ratio:4/3; overflow:hidden;}
  .pkg-media img{width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease-soft);}
  .pkg-card:hover .pkg-media img{transform:scale(1.07);}
  .wish-btn{
    position:absolute; top:12px; right:12px; width:36px; height:36px; border-radius:50%;
    background:rgba(251,248,240,0.94); border:none; display:flex; align-items:center; justify-content:center;
    color:var(--forest-deep); transition:transform .2s;
  }
  .wish-btn:hover{transform:scale(1.1);}
  .wish-btn svg{width:16px; height:16px; transition:fill .2s, stroke .2s;}
  .wish-btn.is-wished svg{fill:var(--brass); stroke:var(--brass);}
  .pkg-tag{position:absolute; bottom:12px; left:12px; background:var(--forest-deep); color:var(--brass-light); font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.06em; padding:6px 11px; border-radius:6px;}
  .pkg-body{padding:var(--sp-5); display:flex; flex-direction:column; gap:10px; flex:1;}
  .pkg-body .eyebrow{font-size:11px;}
  .pkg-body h3{font-size:19.5px; font-weight:500;}
  .pkg-body p.desc{font-size:13.5px; color:var(--charcoal-soft); line-height:1.6; margin:0; flex:1;}
  .pkg-foot{display:flex; align-items:center; justify-content:space-between; margin-top:8px; padding-top:var(--sp-4); border-top:1px dashed var(--line); gap:10px;}
  .pkg-price{font-family:'IBM Plex Mono', monospace;}
  .pkg-price .amount{font-size:17px; font-weight:600; color:var(--forest-deep);}
  .pkg-price .per{font-size:11px; color:var(--charcoal-soft);}

  /* ---------- Itinerary: immersive scrollytelling ---------- */
  .itinerary{
    background:var(--forest-deep); color:var(--ivory); position:relative;
    transition:background 1.4s ease;
  }
  .itinerary .section-head h2{color:var(--ivory);}
  .itinerary .section-head p{color:#C9CFC7;}
  .itinerary .eyebrow{color:var(--brass-light);}
  .itinerary .section-head{max-width:640px; margin-left:auto; margin-right:auto; text-align:center; position:relative; z-index:2;}

  .day-bar{
    max-width:520px; margin:var(--sp-6) auto 0; position:relative; z-index:2;
    display:flex; align-items:center; gap:14px;
  }
  .day-bar-track{
    flex:1; height:6px; border-radius:999px; position:relative; overflow:hidden;
    background:linear-gradient(90deg, #6E8FB0 0%, #E9C888 22%, #E9C888 45%, #D9834A 62%, #2A2338 80%, #6E8FB0 100%);
  }
  .day-bar-dot{
    position:absolute; top:50%; left:0%; width:16px; height:16px; border-radius:50%;
    background:var(--ivory); box-shadow:0 0 0 4px rgba(246,241,227,0.25), 0 2px 10px rgba(0,0,0,0.4);
    transform:translate(-50%,-50%); transition:left .5s var(--ease-soft);
  }
  .day-bar-icon{width:20px; height:20px; color:var(--brass-glow); flex-shrink:0; transition:opacity .3s;}

  .itin-scroller{
    margin-top:var(--sp-9); position:relative; z-index:2;
    display:grid; grid-template-columns:0.9fr 1.1fr; gap:var(--sp-8); align-items:start;
  }
  .itin-visual{position:sticky; top:96px; height:78vh; max-height:640px; z-index:5;}
  .itin-visual-inner{
    position:relative; width:100%; height:100%; border-radius:var(--radius-lg);
    overflow:hidden; box-shadow:0 30px 70px -20px rgba(0,0,0,0.6);
    border:1px solid rgba(246,241,227,0.12);
  }
  .itin-img{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    opacity:0; transform:scale(1.06); transition:opacity 1.1s var(--ease-soft), transform 1.6s var(--ease-soft);
  }
  .itin-img.is-active{opacity:1; transform:scale(1);}
  .itin-img-slider{background:#000;}
  .itin-slide{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    opacity:0; transition:opacity 1s var(--ease-soft);
  }
  .itin-slide.is-active{opacity:1;}
  video.itin-slide{background:#000;}
  .itin-visual-inner::after{
    content:""; position:absolute; inset:0;
    background:linear-gradient(180deg, rgba(18,32,25,0.05) 0%, rgba(18,32,25,0.05) 55%, rgba(18,32,25,0.85) 100%);
    pointer-events:none;
  }
  .itin-visual-overlay{position:absolute; inset:0; z-index:3; display:flex; flex-direction:column; justify-content:space-between; padding:var(--sp-5);}
  .itin-overlay-row{display:flex; align-items:center; justify-content:space-between; gap:10px;}
  .itin-counter{
    align-self:flex-start; font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.08em;
    background:rgba(18,32,25,0.55); backdrop-filter:blur(6px); color:var(--ivory);
    padding:7px 13px; border-radius:999px; border:1px solid rgba(246,241,227,0.25);
  }
  .itin-counter strong{color:var(--brass-glow); font-weight:600;}
  .itin-video-toggle{
    display:flex; align-items:center; gap:7px; font-family:'Manrope',sans-serif; font-size:12.5px; font-weight:600;
    background:rgba(18,32,25,0.55); backdrop-filter:blur(6px); color:var(--ivory);
    padding:7px 14px 7px 10px; border-radius:999px; border:1px solid rgba(246,241,227,0.25);
    cursor:pointer; transition:background .2s, border-color .2s;
  }
  .itin-video-toggle:hover{background:rgba(18,32,25,0.8); border-color:rgba(246,241,227,0.45);}
  .itin-video-toggle-icon{
    display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px;
    border-radius:50%; background:var(--brass-glow); color:#1a1a1a; flex-shrink:0;
  }
  .itin-video-toggle-icon svg{width:10px; height:10px;}
  .itin-overlay-bottom{display:flex; flex-direction:column; gap:12px; align-self:flex-start;}
  .itin-photo-dots{display:flex; gap:6px;}
  .itin-photo-dot{
    width:6px; height:6px; border-radius:50%; background:rgba(246,241,227,0.35);
    border:none; padding:0; cursor:pointer; transition:background .2s, transform .2s;
  }
  .itin-photo-dot.is-active{background:var(--brass-glow); transform:scale(1.3);}
  .itin-time-badge{
    align-self:flex-start; font-family:'Fraunces', serif; font-size:26px; font-weight:600;
    color:var(--ivory); text-shadow:0 4px 20px rgba(0,0,0,0.5);
  }
  .itin-time-badge span{display:block; font-family:'IBM Plex Mono', monospace; font-size:11px; font-weight:400; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass-glow); margin-top:4px;}
  .itin-video-overlay{
    position:fixed; inset:0; z-index:9999; background:rgba(10,16,12,0.92);
    display:none; align-items:center; justify-content:center; padding:var(--sp-5);
    backdrop-filter:blur(4px);
  }
  .itin-video-overlay.is-open{display:flex;}
  .itin-video-overlay video{width:100%; max-width:780px; max-height:82vh; border-radius:var(--radius-lg); box-shadow:0 30px 80px -20px rgba(0,0,0,0.7);}
  .itin-video-close{
    position:absolute; top:24px; right:24px; width:42px; height:42px; border-radius:50%;
    background:rgba(246,241,227,0.12); border:1px solid rgba(246,241,227,0.3); color:var(--ivory);
    display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .2s;
  }
  .itin-video-close:hover{background:rgba(246,241,227,0.25);}
  .itin-video-close svg{width:18px; height:18px;}

  .itin-steps{display:flex; flex-direction:column; position:relative;}
  .itin-steps::before{
    content:""; position:absolute; left:16px; top:44px; bottom:44px; width:1px;
    background:repeating-linear-gradient(180deg, rgba(217,185,120,0.4) 0 6px, transparent 6px 13px);
    z-index:0;
  }
  .itin-step{
    position:relative; min-height:52vh; display:flex; flex-direction:column; justify-content:center;
    padding:var(--sp-6) 0; opacity:0.32; transition:opacity .6s var(--ease-soft);
  }
  .itin-step.is-active{opacity:1;}
  .itin-step-meta{display:flex; align-items:center; gap:14px; margin-bottom:16px; position:relative; z-index:1;}
  .itin-index{
    width:34px; height:34px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:var(--forest-deep); border:1.5px solid var(--brass-light); color:var(--brass-light);
    font-family:'IBM Plex Mono', monospace; font-size:12px; font-weight:600;
    transition:background .35s, color .35s, border-color .35s, transform .35s;
  }
  .itin-step.is-active .itin-index{background:var(--brass); border-color:var(--brass); color:var(--forest-deep); transform:scale(1.08);}
  .itin-step-time{font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--brass-light); letter-spacing:0.08em;}
  .itin-step h3{color:var(--ivory); font-size:clamp(22px,2.6vw,28px); font-weight:500; margin-bottom:10px; max-width:26ch;}
  .itin-step p{color:#C9CFC7; font-size:15px; line-height:1.7; margin:0; max-width:44ch;}

  /* Tablet & mobile: sticky panel shrinks and pins near the top instead of disappearing */
  @media (max-width:980px){
    .itin-scroller{grid-template-columns:1fr; margin-top:var(--sp-6); gap:var(--sp-4);}
    .itin-visual{
      position:sticky; top:70px; height:40vh; max-height:320px; z-index:5;
      margin-bottom:var(--sp-5);
    }
    .itin-time-badge{font-size:21px;}
    .itin-steps::before{left:15px;}
    .itin-step{min-height:34vh; padding:var(--sp-5) 0;}
    .itin-step h3{max-width:none;}
    .itin-step p{max-width:none;}
  }
  @media (max-width:600px){
    .itin-visual{height:34vh; max-height:250px; top:64px;}
    .itin-visual-overlay{padding:var(--sp-4);}
    .itin-time-badge{font-size:18px;}
    .itin-counter{font-size:11px; padding:6px 11px;}
    .itin-step{min-height:0; padding:var(--sp-4) 0;}
    .itin-index{width:28px; height:28px; font-size:11px;}
    .itin-steps::before{left:13px;}
    .day-bar{max-width:100%;}
  }

  /* ---------- Testimonials ---------- */
  .testimonials{background:var(--forest-mist);}
  .testimonials.on-ivory{background:var(--ivory);}
  .testi-grid{display:grid; grid-template-columns:repeat(3, 1fr); gap:var(--sp-5);}
  .testi-card{
    position:relative; background:var(--ivory-card); border:1px solid var(--line);
    border-radius:var(--radius-md); padding:var(--sp-5); display:flex; flex-direction:column; gap:var(--sp-3);
    box-shadow:var(--shadow-sm); transition:transform .3s var(--ease), box-shadow .3s var(--ease);
  }
  .testi-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-card);}
  .testi-quote-mark{font-family:'Fraunces', serif; font-size:44px; line-height:1; color:var(--brass-light); font-weight:600;}
  .testi-text{color:var(--charcoal); font-size:15px; line-height:1.7; margin:0; flex:1;}
  .testi-foot{display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); border-top:1px solid var(--line); padding-top:var(--sp-3); margin-top:4px;}
  .testi-name{font-family:'Fraunces', serif; font-size:15px; font-weight:600; color:var(--forest-deep);}
  .testi-date{font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.04em; color:var(--charcoal-soft);}
  .testi-avatar{width:38px; height:38px; border-radius:50%; background:var(--forest-deep); color:var(--brass-light); display:flex; align-items:center; justify-content:center; font-family:'Fraunces', serif; font-weight:600; font-size:15px; flex-shrink:0;}
  .testi-namewrap{display:flex; align-items:center; gap:10px;}
  .testi-cta{text-align:center; margin-top:var(--sp-7);}
  .testi-page-head{max-width:760px; margin:0 auto var(--sp-8); text-align:center;}
  .testi-page-head .eyebrow{display:block; margin-bottom:var(--sp-4);}
  .testi-page-head p{margin-top:var(--sp-4); color:var(--charcoal-soft); font-size:16px; line-height:1.7;}
  .testi-count{display:inline-flex; align-items:center; gap:8px; font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass); background:var(--ivory-card); border:1px solid var(--line); border-radius:999px; padding:8px 18px; margin-bottom:var(--sp-5);}

  /* ---------- FAQ ---------- */
  .faq{background:var(--ivory);}
  .faq-list{max-width:820px; margin:0 auto; display:flex; flex-direction:column; gap:var(--sp-3);}
  .faq-item{background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md); overflow:hidden; transition:border-color .25s;}
  .faq-item.is-open{border-color:var(--brass);}
  .faq-q{
    width:100%; display:flex; align-items:center; justify-content:space-between; gap:var(--sp-4);
    background:none; border:none; padding:22px 26px; text-align:left;
    font-family:'Fraunces', serif; font-size:17px; font-weight:500; color:var(--forest-deep);
  }
  .faq-icon{
    font-family:'IBM Plex Mono', monospace; font-size:18px; color:var(--brass); flex-shrink:0;
    transition:transform .3s var(--ease); width:22px; text-align:center;
  }
  .faq-item.is-open .faq-icon{transform:rotate(135deg);}
  .faq-a{max-height:0; overflow:hidden; transition:max-height .35s var(--ease-soft), padding .35s var(--ease-soft);}
  .faq-item.is-open .faq-a{max-height:240px;}
  .faq-a p{margin:0; padding:0 26px 22px; color:var(--charcoal-soft); font-size:15px; line-height:1.7; max-width:64ch;}

  /* ---------- Footer ---------- */
  footer{background:var(--forest-deep); color:#C9CFC7; padding:var(--sp-9) var(--sp-6) var(--sp-6);}
  .footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:var(--sp-7); padding-bottom:var(--sp-7); border-bottom:1px solid rgba(246,241,227,0.12);}
  .footer-logo{font-family:'Fraunces', serif; font-size:22px; color:var(--ivory); font-weight:600; margin-bottom:var(--sp-4);}
  .footer-grid p{font-size:14px; line-height:1.7; margin:0 0 var(--sp-5); max-width:32ch;}
  .footer-social{display:flex; gap:12px;}
  .footer-social a{width:36px; height:36px; border-radius:50%; border:1px solid rgba(246,241,227,0.25); display:flex; align-items:center; justify-content:center; transition:background .2s, border-color .2s;}
  .footer-social a:hover{background:var(--brass); border-color:var(--brass);}
  .footer-social svg{width:15px; height:15px;}
  .footer-col h4{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass-light); margin:0 0 var(--sp-5);}
  .footer-col ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px;}
  .footer-col a{font-size:14px; transition:color .2s;}
  .footer-col a:hover{color:var(--ivory);}
  .footer-bottom{margin-top:var(--sp-5); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; font-size:13px; color:#8E958A;}
  .back-top{display:inline-flex; align-items:center; gap:6px; color:#C9CFC7; transition:color .2s;}
  .back-top:hover{color:var(--ivory);}

  /* ---------- WhatsApp FAB ---------- */
  .whatsapp-fab{
    position:fixed; right:24px; bottom:28px; z-index:95;
    width:56px; height:56px; border-radius:50%;
    background:var(--forest-deep); color:var(--brass-glow);
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 14px 30px -10px rgba(18,32,25,0.55);
    transition:transform .25s var(--ease), background .25s;
  }
  .whatsapp-fab:hover{background:var(--forest); transform:translateY(-3px) scale(1.05);}
  .whatsapp-fab svg{width:24px; height:24px;}
  @media (max-width:980px){ .whatsapp-fab{ bottom:90px; right:18px; width:50px; height:50px; } .whatsapp-fab svg{width:21px; height:21px;} }

  /* ---------- Responsive ---------- */
  @media (max-width: 980px){
    .header-inner{padding:16px 24px;}
    .site-header{backdrop-filter:none;}
    /* .logo, .header-actions live inside .site-header, which is a stacking
       context (position:sticky + z-index). The full-screen .main-nav panel
       is also inside .site-header (nested in <nav>) with z-index:99, which
       would otherwise silently paint over the logo/account/reserve button
       since they have no z-index of their own (auto = 0). Explicit z-index
       here keeps them visibly above the open mobile menu. */
    .logo, .header-actions{position:relative; z-index:102;}
    .main-nav{
      position:fixed; inset:0; background:var(--ivory); flex-direction:column;
      padding:96px 24px 36px; gap:8px; transform:translateX(100%); transition:transform .4s var(--ease); z-index:99;
      overflow-y:auto;
    }
    .main-nav.is-open{transform:translateX(0);}
    .main-nav a{font-size:20px; padding:14px 0; border-bottom:1px solid var(--line);}
    .nav-eyebrow{
      display:block; position:fixed; top:66px; left:24px; z-index:102;
      font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase;
      color:var(--brass); opacity:0; transition:opacity .3s var(--ease) .1s; pointer-events:none;
    }
    nav:has(#mainNav.is-open) .nav-eyebrow{opacity:1;}
    .main-nav li{display:flex; align-items:baseline; gap:14px;}
    .nav-index{
      display:block; font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--brass); flex-shrink:0;
      padding-top:16px;
    }
    .nav-footer{
      position:fixed; left:24px; right:24px; bottom:28px; z-index:102;
      display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
      padding-top:20px; border-top:1px solid var(--line);
      opacity:0; transform:translateY(8px); transition:opacity .35s var(--ease) .15s, transform .35s var(--ease) .15s;
      pointer-events:none;
    }
    nav:has(#mainNav.is-open) .nav-footer{opacity:1; transform:translateY(0); pointer-events:auto;}
    .nav-footer-link{
      display:inline-flex; align-items:center; gap:8px;
      font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:.03em;
      color:var(--forest-deep); font-weight:500;
    }
    .nav-footer-loc{font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--charcoal-soft);}
    .nav-toggle{display:flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%; border:1px solid var(--line); background:transparent; z-index:103; position:relative;}
    .nav-toggle span, .nav-toggle span::before, .nav-toggle span::after{content:""; display:block; width:16px; height:1.5px; background:var(--forest-deep); position:relative; transition:transform .25s;}
    .nav-toggle span::before{position:absolute; top:-5px;}
    .nav-toggle span::after{position:absolute; top:5px;}
    .nav-toggle.is-open span{background:transparent;}
    .nav-toggle.is-open span::before{transform:translateY(5px) rotate(45deg);}
    .nav-toggle.is-open span::after{transform:translateY(-5px) rotate(-45deg);}

    .hero{min-height:88vh;}
    .home-hero{padding-top:var(--sp-6);}
    .home-hero-grid{grid-template-columns:1fr; gap:var(--sp-7);}
    .home-hero-photo{order:-1; aspect-ratio:16/10;}
    .booking-card{grid-template-columns:1fr 1fr; grid-template-rows:auto auto auto; margin-top:calc(-1 * var(--sp-7)); max-width:92vw;}
    .booking-field{border-right:none; border-bottom:1px solid var(--line);}
    .guest-stepper{grid-column:1/3; justify-content:space-between; border-bottom:1px solid var(--line);}
    .booking-card > .btn{grid-column:1/3; margin-top:4px;}
    .trust-row{gap:var(--sp-5);}

    .about-grid{grid-template-columns:1fr;}
    .contrast{grid-template-columns:1fr;}
    .stat-grid{grid-template-columns:repeat(2, 1fr); row-gap:var(--sp-6);}
    .stat-item:nth-child(odd){border-right:1px solid rgba(246,241,227,0.12);}
    .stat-item:nth-child(even){border-right:none;}
    .card-grid{grid-template-columns:repeat(2, 1fr);}
    .testi-grid{grid-template-columns:repeat(2, 1fr);}
    .gallery-grid{grid-template-columns:repeat(2, 1fr); grid-auto-rows:160px;}
    .g1{grid-column:span 2; grid-row:span 1;}
    .g3{grid-row:span 1;}
    .footer-grid{grid-template-columns:1fr 1fr; gap:var(--sp-6);}
    .trail-stop span.label{display:none;}

  }

  @media (max-width: 600px){
    .wrap, section, footer, .hero-content, .trail, .header-inner{padding-left:20px; padding-right:20px;}
    .logo img{height:38px;}
    .card-grid{grid-template-columns:1fr;}
    .testi-grid{grid-template-columns:1fr;}
    .footer-grid{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:repeat(2, 1fr); grid-auto-rows:130px;}
    .contrast-panel{padding:36px 26px;}
    .stat-grid{grid-template-columns:1fr 1fr;}
    section{padding:var(--sp-8) var(--sp-5);}
    .home-hero-facts{gap:20px;}
  }

  /* ================= SUBPAGE ADDITIONS ================= */
  .hero.hero-sub{min-height:52vh; align-items:center;}
  .hero.hero-sub .hero-content{padding-bottom:0;}
  .breadcrumb{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:rgba(246,241,227,.75); margin-bottom:var(--sp-4); display:flex; gap:8px; align-items:center;}
  .breadcrumb a{color:var(--brass-glow); transition:color .2s;}
  .breadcrumb a:hover{color:var(--ivory);}

  .main-nav a.is-active{color:var(--forest-deep);}
  .main-nav a.is-active::after{width:100%;}

  /* Value cards */
  .value-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-5);}
  .value-card{background:var(--ivory-card);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-6) var(--sp-5);transition:transform .4s var(--ease-soft), box-shadow .4s var(--ease-soft);}
  .value-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-card);}
  .value-icon{width:44px;height:44px;border-radius:50%;background:var(--forest-deep);color:var(--brass-glow);display:flex;align-items:center;justify-content:center;margin-bottom:var(--sp-4);}
  .value-icon svg{width:19px;height:19px;}
  .value-card h3{font-size:17.5px;margin-bottom:8px;}
  .value-card p{font-size:13.5px;color:var(--charcoal-soft);line-height:1.65;margin:0;}
  @media (max-width:980px){.value-grid{grid-template-columns:repeat(2,1fr);}}
  @media (max-width:600px){.value-grid{grid-template-columns:1fr;}}

  /* Story rows */
  .story-list{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-6);}
  .story-row{display:grid;grid-template-columns:104px 1fr;gap:var(--sp-5);}
  .story-year{font-family:'IBM Plex Mono', monospace;color:var(--brass);font-size:12.5px;letter-spacing:.08em;padding-top:4px;}
  .story-row h3{font-size:18.5px;margin-bottom:6px;}
  .story-row p{color:var(--charcoal-soft);font-size:14.5px;line-height:1.7;margin:0;}
  @media (max-width:600px){.story-row{grid-template-columns:1fr;} .story-year{padding-top:0;}}

  /* Notes list */
  .note-list{max-width:820px;margin:0 auto;list-style:none;padding:0;display:flex;flex-direction:column;gap:12px;}
  .note-list li{display:flex;gap:12px;font-size:14.5px;color:var(--charcoal-soft);line-height:1.6;padding:16px 20px;background:var(--ivory-card);border:1px solid var(--line);border-radius:var(--radius-sm);}
  .note-list li::before{content:"—";color:var(--brass);font-weight:700;flex-shrink:0;}
  .surcharge-banner{margin-bottom:var(--sp-7);background:var(--forest-deep);color:var(--ivory);border-radius:var(--radius-md);padding:20px 28px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
  .surcharge-banner .eyebrow{color:var(--brass-light);}
  .surcharge-banner strong{color:var(--brass-glow);font-family:'Fraunces', serif;font-size:19px;font-weight:600;}
  .surcharge-banner p{margin:4px 0 0;font-size:14px;color:#C9CFC7;}

  /* Contact */
  .contact-wrap{display:grid;grid-template-columns:0.85fr 1.15fr;gap:var(--sp-8);align-items:start;}
  .contact-info-card{background:var(--forest-deep);color:var(--ivory);border-radius:var(--radius-lg);padding:var(--sp-7);}
  .contact-info-card h3{color:var(--ivory);font-size:21px;margin-bottom:var(--sp-5);}
  .contact-line{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid rgba(246,241,227,.12);}
  .contact-line:last-child{border-bottom:none;}
  .contact-line svg{width:18px;height:18px;color:var(--brass-glow);flex-shrink:0;margin-top:2px;}
  .contact-line .cl-label{font-family:'IBM Plex Mono', monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass-light);margin-bottom:4px;display:block;}
  .contact-line a, .contact-line span.val{color:var(--ivory);font-size:14.5px;line-height:1.6;}
  .contact-line a:hover{color:var(--brass-glow);}
  .contact-form{background:var(--ivory-card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--sp-7);}
  .form-row{margin-bottom:var(--sp-5);}
  .form-2col{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);}
  .form-row label{display:block;font-family:'IBM Plex Mono', monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);margin-bottom:8px;}
  .form-row input,.form-row select,.form-row textarea{width:100%;padding:13px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--ivory);font-family:'Manrope';font-size:14.5px;color:var(--charcoal);transition:border-color .2s;}
  .form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--brass);}
  .form-row textarea{resize:vertical;min-height:120px;}
  .form-success{display:none;background:var(--forest-mist);border:1px solid var(--brass-light);border-radius:var(--radius-sm);padding:16px 20px;font-size:14px;color:var(--forest-deep);margin-top:var(--sp-4);}
  .form-success.is-visible{display:block;}
  .map-frame{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-card);margin-top:var(--sp-6);}
  .map-frame iframe{width:100%;height:320px;border:0;display:block;}
  @media (max-width:980px){.contact-wrap{grid-template-columns:1fr;}}
  @media (max-width:600px){.form-2col{grid-template-columns:1fr;}}

  /* Itinerary plain list (per-package steps) */
  .itin-pkg-head{display:flex;align-items:baseline;justify-content:space-between;max-width:820px;margin:0 auto var(--sp-6);gap:14px;flex-wrap:wrap;}
  .itin-pkg-head h3{color:var(--ivory);font-size:22px;}
  .itin-pkg-price-tag{font-family:'IBM Plex Mono', monospace;color:var(--brass-glow);font-size:13.5px;background:rgba(246,241,227,0.08);border:1px solid rgba(246,241,227,0.2);padding:7px 14px;border-radius:999px;}
  .itin-pkg-panel{display:none;}
  .itin-pkg-panel.is-active{display:block;}
  .itin-plain-list{max-width:820px;margin:0 auto;display:flex;flex-direction:column;position:relative;}
  .itin-plain-list::before{content:"";position:absolute;left:16px;top:8px;bottom:8px;width:1px;background:repeating-linear-gradient(180deg, rgba(217,185,120,0.45) 0 6px, transparent 6px 13px);}
  .itin-plain-row{display:flex;gap:18px;padding:14px 0;position:relative;align-items:flex-start;}
  .itin-plain-row .itin-index{flex-shrink:0;}
  .itin-plain-row h4{font-family:'Fraunces', serif;font-weight:500;font-size:16.5px;color:var(--ivory);margin:2px 0 4px;}
  .itin-plain-row p{margin:0;font-size:13.5px;color:#C9CFC7;line-height:1.5;}
  .itin-day-label{font-family:'IBM Plex Mono', monospace;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass-light);margin:var(--sp-5) 0 4px 52px; max-width:820px; margin-left:calc(50% - 410px + 52px);}
  @media (max-width:900px){.itin-day-label{margin-left:52px;}}
  .itin-pkg-foot{max-width:820px;margin:var(--sp-5) auto 0;font-size:13px;color:#C9CFC7;padding-left:52px;}

  /* Gallery filter */
  .gallery-filter-row{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:var(--sp-5); margin-bottom:var(--sp-7);}

  /* =========================================================
     CART DRAWER
     ========================================================= */
  .cart-badge{
    position:absolute; top:-6px; right:-6px; background:var(--charcoal-soft); color:#fff;
    font-family:'IBM Plex Mono', monospace; font-size:10px; font-weight:500;
    min-width:16px; height:16px; border-radius:999px; display:flex; align-items:center; justify-content:center;
    padding:0 3px; transition:background .2s var(--ease);
  }
  .cart-badge.has-items{background:var(--brass);}
  .cart-overlay{
    position:fixed; inset:0; background:rgba(18,32,25,0.55); z-index:220;
    opacity:0; pointer-events:none; transition:opacity .3s var(--ease);
  }
  .cart-overlay.is-open{opacity:1; pointer-events:auto;}
  .cart-drawer{
    position:fixed; top:0; right:0; height:100%; width:400px; max-width:92vw;
    background:var(--ivory-card); z-index:221; box-shadow:var(--shadow-lift);
    display:flex; flex-direction:column;
    transform:translateX(100%); transition:transform .35s var(--ease-soft);
  }
  .cart-drawer.is-open{transform:translateX(0);}
  .cart-drawer-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:var(--sp-5) var(--sp-5); border-bottom:1px solid var(--line);
  }
  .cart-drawer-head h3{font-size:19px;}
  .cart-drawer-close{
    width:34px; height:34px; border-radius:999px; border:1px solid var(--line); background:transparent;
    color:var(--charcoal-soft); display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition:background .2s var(--ease);
  }
  .cart-drawer-close:hover{background:var(--forest-mist);}
  .cart-drawer-body{flex:1; overflow-y:auto; padding:var(--sp-5);}
  .cart-drawer-empty{color:var(--charcoal-soft); font-size:14px; line-height:1.6;}
  .cart-drawer-empty a{color:var(--forest-deep); font-weight:600;}
  .cart-item{
    display:flex; align-items:flex-start; justify-content:space-between; gap:var(--sp-3);
    padding:var(--sp-4) 0; border-bottom:1px solid var(--line);
  }
  .cart-item:last-child{border-bottom:none;}
  .cart-item-body{display:flex; flex-direction:column; gap:2px;}
  .cart-item-body strong{font-family:'Fraunces', serif; font-size:15px; color:var(--forest-deep); font-weight:600;}
  .cart-item-sub{font-size:12.5px; color:var(--charcoal-soft);}
  .cart-item-price{font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--brass); margin-top:4px;}
  .cart-item-remove{
    width:28px; height:28px; border-radius:999px; border:1px solid var(--line); background:transparent;
    color:var(--charcoal-soft); flex-shrink:0; display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition:background .2s var(--ease), color .2s var(--ease);
  }
  .cart-item-remove:hover{background:#F3E3DD; color:#B24632; border-color:#B24632;}
  .cart-drawer-foot{padding:var(--sp-5); border-top:1px solid var(--line);}
  .cart-drawer-total-row{display:flex; align-items:center; justify-content:space-between; font-family:'Fraunces', serif; font-size:20px; color:var(--forest-deep); margin-bottom:var(--sp-2);}
  .cart-drawer-note{font-size:12.5px; color:var(--charcoal-soft); margin:0 0 var(--sp-4);}
  @media (max-width:600px){.cart-drawer{width:100%;}}

  /* =========================================================
     BOOKING WIZARD
     ========================================================= */
  .booking-steps{
    display:flex; align-items:center; justify-content:center; gap:var(--sp-2);
    margin-bottom:var(--sp-8); flex-wrap:wrap;
  }
  .booking-step-pill{
    display:flex; align-items:center; gap:10px; padding:10px 18px 10px 10px; border-radius:999px;
    background:var(--ivory-card); border:1px solid var(--line); color:var(--charcoal-soft);
    font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.02em;
    transition:background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);
  }
  .booking-step-pill .num{
    width:24px; height:24px; border-radius:50%; background:var(--forest-mist); color:var(--forest-deep);
    display:flex; align-items:center; justify-content:center; font-weight:700; flex-shrink:0;
  }
  .booking-step-pill.is-active{background:var(--forest-deep); border-color:var(--forest-deep); color:var(--ivory);}
  .booking-step-pill.is-active .num{background:var(--brass); color:var(--forest-deep);}
  .booking-step-pill.is-done .num{background:var(--brass); color:var(--forest-deep);}
  .booking-step-connector{width:28px; height:1px; background:var(--line);}

  .booking-layout{display:grid; grid-template-columns:1fr 380px; gap:var(--sp-7); align-items:start;}
  .booking-panel{display:none;}
  .booking-panel.is-active{display:block;}

  /* Step 1 — experience picker */
  .option-grid{display:grid; grid-template-columns:repeat(2, 1fr); gap:var(--sp-4);}
  .option-card{
    position:relative; text-align:left; cursor:pointer; border:1.5px solid var(--line); border-radius:var(--radius-md);
    background:var(--ivory-card); padding:var(--sp-4); transition:border-color .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease);
  }
  .option-card:hover{transform:translateY(-2px); box-shadow:var(--shadow-card);}
  .option-card.is-selected{border-color:var(--brass); box-shadow:0 0 0 3px rgba(184,134,59,0.16);}
  .option-card .opt-eyebrow{font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass); display:block; margin-bottom:6px;}
  .option-card h4{font-family:'Fraunces', serif; font-size:17px; font-weight:600; color:var(--forest-deep); margin:0 0 6px;}
  .option-card p{font-size:13px; color:var(--charcoal-soft); line-height:1.55; margin:0 0 var(--sp-3);}
  .option-card .opt-price{font-family:'IBM Plex Mono', monospace; font-size:13.5px; color:var(--forest-deep); font-weight:600;}
  .option-card .opt-price span{font-weight:400; color:var(--charcoal-soft); font-size:12px;}
  .option-card .opt-check{
    position:absolute; top:14px; right:14px; width:20px; height:20px; border-radius:50%;
    border:1.5px solid var(--line); background:#fff; display:flex; align-items:center; justify-content:center; color:transparent;
    transition:all .2s var(--ease);
  }
  .option-card.is-selected .opt-check{background:var(--brass); border-color:var(--brass); color:#fff;}
  @media (max-width:700px){.option-grid{grid-template-columns:1fr;}}

  /* Step 2 — date, guests, weather */
  .booking-section-title{font-family:'Fraunces', serif; font-size:16px; font-weight:600; color:var(--forest-deep); margin:0 0 var(--sp-4);}
  .booking-block{margin-bottom:var(--sp-7);}
  .calendar{
    background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md); padding:var(--sp-5);
  }
  .calendar-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--sp-4);}
  .calendar-head h4{font-family:'Fraunces', serif; font-size:16px; color:var(--forest-deep); font-weight:600;}
  .cal-nav{
    width:30px; height:30px; border-radius:50%; border:1px solid var(--line); background:transparent;
    color:var(--forest-deep); display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition:background .2s var(--ease);
  }
  .cal-nav:hover:not(:disabled){background:var(--forest-mist);}
  .cal-nav:disabled{opacity:0.3; cursor:not-allowed;}
  .cal-grid{display:grid; grid-template-columns:repeat(7, 1fr); gap:4px; text-align:center;}
  .cal-dow{font-family:'IBM Plex Mono', monospace; font-size:10.5px; color:var(--charcoal-soft); padding:6px 0; text-transform:uppercase;}
  .cal-day{
    position:relative; aspect-ratio:1; display:flex; align-items:center; justify-content:center;
    border-radius:10px; font-size:13.5px; color:var(--charcoal); cursor:pointer; background:transparent;
    border:1px solid transparent; transition:background .15s var(--ease), color .15s var(--ease);
  }
  .cal-day:hover:not(.is-disabled):not(.is-booked){background:var(--forest-mist);}
  .cal-day.is-empty{cursor:default; visibility:hidden;}
  .cal-day.is-disabled{color:#C9C2AE; cursor:not-allowed;}
  .cal-day.is-booked{color:#C9C2AE; cursor:not-allowed; text-decoration:line-through; text-decoration-color:#D3A08F;}
  .cal-day.is-today{border-color:var(--brass);}
  .cal-day.is-selected{background:var(--forest-deep); color:var(--ivory); font-weight:700;}
  .cal-day.is-in-range{background:rgba(31,58,46,0.12);}
  .cal-legend{display:flex; gap:var(--sp-5); margin-top:var(--sp-4); font-size:12px; color:var(--charcoal-soft);}
  .cal-legend span{display:flex; align-items:center; gap:6px;}
  .cal-legend i{width:10px; height:10px; border-radius:3px; display:inline-block;}
  .cal-legend .dot-selected{background:var(--forest-deep);}
  .cal-legend .dot-booked{background:#D3A08F;}
  .cal-selected-summary{margin-top:var(--sp-4); padding-top:var(--sp-4); border-top:1px solid var(--line); font-size:13.5px; color:var(--forest-deep); font-weight:600;}

  .qty-block{display:flex; align-items:center; justify-content:space-between; padding:var(--sp-3) 0; border-bottom:1px solid var(--line);}
  .qty-block:last-child{border-bottom:none;}
  .qty-label strong{display:block; font-family:'Fraunces', serif; font-size:14.5px; color:var(--forest-deep); font-weight:600;}
  .qty-label span{font-size:12.5px; color:var(--charcoal-soft);}
  .qty-control{display:flex; align-items:center; gap:12px;}
  .qty-control .stepper-btn{width:30px; height:30px;}
  .qty-control .qty-val{font-family:'IBM Plex Mono', monospace; font-weight:700; min-width:18px; text-align:center;}

  .addon-row{
    display:flex; align-items:flex-start; gap:12px; padding:var(--sp-3) 0; border-bottom:1px solid var(--line); cursor:pointer;
  }
  .addon-row:last-child{border-bottom:none;}
  .addon-row input{margin-top:3px; width:16px; height:16px; accent-color:var(--forest-deep);}
  .addon-row strong{display:block; font-family:'Fraunces', serif; font-size:14.5px; color:var(--forest-deep); font-weight:600;}
  .addon-row .addon-desc{font-size:12.5px; color:var(--charcoal-soft);}
  .addon-row .addon-price{margin-left:auto; font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--brass); flex-shrink:0; white-space:nowrap;}

  /* Weather panel */
  .weather-panel{background:var(--forest-deep); border-radius:var(--radius-md); padding:var(--sp-5); color:var(--ivory);}
  .weather-panel .booking-section-title{color:var(--ivory);}
  .weather-loc{font-size:12.5px; color:#B9C4B6; margin:-10px 0 var(--sp-4);}
  .weather-days{display:grid; grid-template-columns:repeat(7, 1fr); gap:6px;}
  .weather-day{
    background:rgba(246,241,227,0.06); border-radius:12px; padding:10px 4px; text-align:center;
    display:flex; flex-direction:column; align-items:center; gap:4px; transition:background .2s var(--ease);
  }
  .weather-day.is-selected-day{background:var(--brass); color:var(--forest-deep);}
  .weather-day .wd-label{font-family:'IBM Plex Mono', monospace; font-size:10px; text-transform:uppercase; color:inherit; opacity:0.8;}
  .weather-day svg{width:22px; height:22px;}
  .weather-day .wd-temp{font-size:12.5px; font-weight:700;}
  .weather-day .wd-temp small{font-weight:400; opacity:0.75;}
  .weather-day .wd-feel{font-family:'IBM Plex Mono', monospace; font-size:9.5px; text-transform:uppercase; letter-spacing:.03em; color:inherit; opacity:0.75;}
  .weather-day.is-selected-day .wd-feel{opacity:0.85;}
  .weather-note{font-size:11.5px; color:#9DAA99; margin:var(--sp-4) 0 0;}
  .weather-error{font-size:12.5px; color:#E3B79A;}
  @media (max-width:600px){.weather-days{grid-template-columns:repeat(4,1fr); row-gap:8px;}}

  /* Step 3 — review & pay */
  .pay-tabs{display:flex; gap:var(--sp-2); margin-bottom:var(--sp-5); flex-wrap:wrap;}
  .pay-tab{
    display:flex; align-items:center; gap:8px; padding:10px 16px; border-radius:999px; border:1.5px solid var(--line);
    background:var(--ivory-card); color:var(--charcoal-soft); font-size:13.5px; font-weight:600; cursor:pointer;
    transition:all .2s var(--ease);
  }
  .pay-tab.is-active{background:var(--forest-deep); border-color:var(--forest-deep); color:var(--ivory);}
  .pay-tab svg{width:16px; height:16px;}
  .pay-panel{display:none; background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md); padding:var(--sp-5);}
  .pay-panel.is-active{display:block;}
  .form-row{margin-bottom:var(--sp-4);}
  .form-row label{display:block; font-size:12.5px; font-weight:600; color:var(--forest-deep); margin-bottom:6px;}
  .form-row input, .form-row select{
    width:100%; padding:11px 14px; border-radius:var(--radius-sm); border:1px solid var(--line);
    background:#fff; font-family:'Manrope', sans-serif; font-size:14px; color:var(--charcoal); transition:border-color .2s var(--ease);
  }
  .form-row input:focus, .form-row select:focus{outline:none; border-color:var(--brass);}
  .form-2col{display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4);}
  .mpesa-note, .bank-note{font-size:13px; color:var(--charcoal-soft); line-height:1.6; background:var(--forest-mist); border-radius:var(--radius-sm); padding:var(--sp-3) var(--sp-4); margin-bottom:var(--sp-4);}
  .bank-details{background:var(--forest-mist); border-radius:var(--radius-sm); padding:var(--sp-4); font-family:'IBM Plex Mono', monospace; font-size:12.5px; line-height:2; color:var(--forest-deep); margin-bottom:var(--sp-4);}
  .mpesa-status{display:flex; align-items:center; gap:10px; font-size:13.5px; color:var(--forest-deep); margin-top:var(--sp-3); display:none;}
  .mpesa-status.is-visible{display:flex;}
  .spinner{width:16px; height:16px; border-radius:50%; border:2px solid var(--line); border-top-color:var(--brass); animation:spin .8s linear infinite; flex-shrink:0;}
  @keyframes spin{to{transform:rotate(360deg);}}

  /* Order summary sidebar */
  .summary-card{
    position:sticky; top:100px; background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md);
    padding:var(--sp-5); box-shadow:var(--shadow-card);
  }
  .summary-card h4{font-family:'Fraunces', serif; font-size:17px; color:var(--forest-deep); margin:0 0 var(--sp-4);}
  .summary-line{display:flex; align-items:center; justify-content:space-between; padding:9px 0; border-bottom:1px solid var(--line); font-size:13.5px;}
  .summary-line span:first-child{color:var(--charcoal-soft);}
  .summary-line span:last-child{font-weight:600; color:var(--forest-deep); font-family:'IBM Plex Mono', monospace;}
  .summary-total{display:flex; align-items:center; justify-content:space-between; padding-top:var(--sp-3); margin-top:var(--sp-2); font-family:'Fraunces', serif; font-size:20px; color:var(--forest-deep);}
  .summary-deposit{
    display:flex; align-items:center; justify-content:space-between; margin-top:8px; padding:10px 12px;
    background:var(--forest-mist); border-radius:var(--radius-sm); font-size:13px; color:var(--forest-deep);
  }
  .summary-deposit span:first-child{font-weight:600;}
  .summary-deposit span:last-child{font-family:'IBM Plex Mono', monospace; font-weight:700;}
  .deposit-banner{
    display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--sp-4);
    padding:12px 16px; background:var(--forest-mist); border:1px solid var(--line); border-radius:var(--radius-sm);
    font-size:13.5px; color:var(--forest-deep);
  }
  .deposit-banner strong{font-family:'IBM Plex Mono', monospace; font-size:16px;}
  .summary-empty{font-size:13px; color:var(--charcoal-soft); line-height:1.6;}
  .summary-cart-list{margin-top:var(--sp-4); padding-top:var(--sp-4); border-top:1px dashed var(--line);}
  .summary-cart-item{display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--charcoal-soft); padding:5px 0;}
  .summary-cart-item-name{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .summary-cart-item-price{font-family:'IBM Plex Mono', monospace; flex-shrink:0;}
  .summary-cart-item-remove{
    flex-shrink:0; width:20px; height:20px; border-radius:50%; border:none; background:transparent;
    color:var(--charcoal-soft); font-size:16px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
    transition:background .2s var(--ease), color .2s var(--ease);
  }
  .summary-cart-item-remove:hover{background:#FBEAE7; color:#B3392C;}
  .summary-actions{display:flex; flex-direction:column; gap:10px; margin-top:var(--sp-5);}
  .summary-actions .btn{width:100%;}

  /* Success screen */
  .booking-success{text-align:center; max-width:560px; margin:0 auto; padding:var(--sp-8) 0;}
  .success-icon{
    width:72px; height:72px; border-radius:50%; background:var(--forest-deep); color:var(--brass-glow);
    display:flex; align-items:center; justify-content:center; margin:0 auto var(--sp-5);
  }
  .success-ref{
    font-family:'IBM Plex Mono', monospace; font-size:20px; letter-spacing:0.06em; color:var(--forest-deep);
    background:var(--forest-mist); border-radius:var(--radius-sm); padding:12px 24px; display:inline-block; margin:var(--sp-4) 0;
  }

  @media (max-width:980px){
    .booking-layout{grid-template-columns:1fr;}
    .summary-card{position:static;}
    .form-2col{grid-template-columns:1fr;}
  }

  /* ================= LEGAL / POLICY PAGES ================= */
  .legal-hero{
    position:relative;
    background:
      radial-gradient(1100px 420px at 15% -10%, rgba(184,134,59,0.28), transparent 60%),
      linear-gradient(180deg, var(--forest-deep) 0%, var(--forest) 100%);
    padding:calc(var(--sp-9) + 64px) var(--sp-6) var(--sp-8);
    overflow:hidden;
  }
  .legal-hero::after{
    content:"";
    position:absolute; inset:0;
    background-image:radial-gradient(rgba(246,241,227,0.07) 1px, transparent 1px);
    background-size:22px 22px;
    opacity:.5; pointer-events:none;
  }
  .legal-hero-inner{position:relative; z-index:1; max-width:840px;}
  .legal-hero h1{color:var(--ivory); font-size:clamp(32px,4.4vw,50px); line-height:1.08; max-width:20ch;}
  .legal-hero .legal-kicker{color:var(--brass-glow);}
  .legal-hero p.lede{margin-top:var(--sp-4); color:rgba(246,241,227,0.82); font-size:16.5px; line-height:1.7; max-width:56ch;}
  .legal-meta-row{
    display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:var(--sp-6);
    font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:.04em;
    color:rgba(246,241,227,0.78);
  }
  .legal-meta-row strong{color:var(--brass-glow); font-weight:600;}

  .legal-parts-nav{
    display:grid; grid-template-columns:repeat(4,1fr); gap:14px;
    max-width:1240px; margin:calc(var(--sp-7) * -1) auto var(--sp-8); padding:0 var(--sp-6);
    position:relative; z-index:2;
  }
  .legal-parts-nav a{
    background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md);
    padding:16px 18px; box-shadow:var(--shadow-card); transition:transform .2s var(--ease), border-color .2s;
    display:flex; flex-direction:column; gap:4px;
  }
  .legal-parts-nav a:hover{transform:translateY(-3px); border-color:var(--brass);}
  .legal-parts-nav a.is-current{border-color:var(--brass); background:var(--forest-mist);}
  .legal-parts-nav .part-tag{font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--brass);}
  .legal-parts-nav .part-name{font-family:'Fraunces', serif; font-size:15px; color:var(--forest-deep); font-weight:500; line-height:1.3;}

  .legal-shell{
    max-width:1240px; margin:0 auto; padding:0 var(--sp-6) var(--sp-9);
    display:grid; grid-template-columns:250px 1fr; gap:var(--sp-8);
    align-items:start;
  }
  .legal-toc{position:sticky; top:104px; max-height:calc(100vh - 130px); overflow-y:auto; padding-right:4px;}
  .legal-toc h4{
    font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase;
    color:var(--charcoal-soft); margin-bottom:var(--sp-3);
  }
  .legal-toc ol{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px;}
  .legal-toc a{
    display:block; font-size:13.5px; line-height:1.5; color:var(--charcoal-soft);
    padding:7px 10px; border-radius:8px; border-left:2px solid transparent; transition:all .15s;
  }
  .legal-toc a:hover{background:var(--ivory-card); color:var(--forest-deep);}

  .legal-content{max-width:760px;}
  .legal-content > .legal-intro{font-size:15px; color:var(--charcoal-soft); font-style:italic; margin-bottom:var(--sp-6); border-bottom:1px solid var(--line); padding-bottom:var(--sp-6);}
  .legal-content h2{font-size:23px; margin-top:var(--sp-8); margin-bottom:var(--sp-4); scroll-margin-top:110px;}
  .legal-content h2 .num{color:var(--brass); margin-right:8px;}
  .legal-content h3{font-size:17px; margin-top:var(--sp-6); margin-bottom:var(--sp-3); scroll-margin-top:110px;}
  .legal-content p{font-size:15px; line-height:1.8; color:var(--charcoal-soft); margin:0 0 var(--sp-4);}
  .legal-content ul, .legal-content ol.legal-list{margin:0 0 var(--sp-4); padding-left:22px; color:var(--charcoal-soft);}
  .legal-content li{font-size:15px; line-height:1.75; margin-bottom:8px;}
  .legal-content strong{color:var(--charcoal);}
  .legal-content a{color:var(--forest-deep); font-weight:600; text-decoration:underline; text-decoration-color:var(--line); text-underline-offset:2px;}
  .legal-content a:hover{text-decoration-color:var(--brass);}

  .legal-callout{
    background:var(--ivory-card); border:1px solid var(--line); border-left:4px solid var(--brass);
    border-radius:var(--radius-sm); padding:18px 22px; margin:var(--sp-5) 0;
  }
  .legal-callout .callout-label{
    font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase;
    color:var(--brass); display:block; margin-bottom:8px; font-weight:600;
  }
  .legal-callout p{margin:0; font-size:14.5px;}
  .legal-callout.tone-warning{border-left-color:#B5502E;}
  .legal-callout.tone-warning .callout-label{color:#B5502E;}
  .legal-callout.tone-info{border-left-color:var(--forest);}
  .legal-callout.tone-info .callout-label{color:var(--forest);}

  .legal-table-wrap{overflow-x:auto; margin:var(--sp-5) 0; border:1px solid var(--line); border-radius:var(--radius-sm);}
  table.legal-table{width:100%; border-collapse:collapse; min-width:520px;}
  table.legal-table th{
    background:var(--forest-mist); color:var(--forest-deep); font-family:'IBM Plex Mono', monospace;
    font-size:11px; letter-spacing:.06em; text-transform:uppercase; text-align:left; padding:11px 16px; border-bottom:1px solid var(--line);
  }
  table.legal-table td{padding:11px 16px; font-size:13.5px; line-height:1.6; color:var(--charcoal-soft); border-bottom:1px solid var(--line); vertical-align:top;}
  table.legal-table tr:last-child td{border-bottom:none;}

  .legal-part-divider{
    margin:var(--sp-8) 0 var(--sp-6); padding-top:var(--sp-6); border-top:2px solid var(--forest-deep);
  }
  .legal-part-eyebrow{color:var(--brass); font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:.14em; text-transform:uppercase;}

  .legal-footer-nav{
    margin-top:var(--sp-8); padding-top:var(--sp-6); border-top:1px solid var(--line);
    display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:14px;
  }
  .legal-footer-nav a{font-weight:600; display:flex; align-items:center; gap:6px;}

  .legal-back-cta{
    margin-top:var(--sp-7); background:var(--forest-deep); border-radius:var(--radius-md);
    padding:24px 26px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  }
  .legal-back-cta p{color:rgba(246,241,227,0.85); margin:0; font-size:14px; max-width:44ch;}
  .legal-back-cta strong{color:var(--ivory); font-family:'Fraunces', serif; font-size:18px; font-weight:500; display:block; margin-bottom:4px;}

  @media (max-width:980px){
    .legal-shell{grid-template-columns:1fr;}
    .legal-toc{position:static; max-height:none; margin-bottom:var(--sp-6);}
    .legal-parts-nav{grid-template-columns:1fr 1fr;}
  }
  @media (max-width:600px){
    .legal-parts-nav{grid-template-columns:1fr;}
  }

  /* ---------- Booking consent gate ---------- */
  .consent-gate{
    background:var(--ivory-card); border:1px solid var(--line); border-radius:var(--radius-md);
    padding:18px 20px; margin-bottom:var(--sp-5);
  }
  .consent-gate.has-error{border-color:#B5502E; background:#FBF0EC;}
  .consent-check-row{display:flex; align-items:flex-start; gap:12px; cursor:pointer;}
  .consent-check-row input[type="checkbox"]{
    width:20px; height:20px; margin-top:2px; accent-color:var(--forest-deep); flex-shrink:0; cursor:pointer;
  }
  .consent-check-row span{font-size:13.5px; line-height:1.6; color:var(--charcoal-soft);}
  .consent-check-row a{color:var(--forest-deep); font-weight:600; text-decoration:underline; text-decoration-color:var(--line);}
  .consent-check-row a:hover{text-decoration-color:var(--brass);}
  .consent-error-msg{
    display:none; align-items:center; gap:6px; margin-top:10px; color:#B5502E; font-size:12.5px; font-weight:600;
  }
  .consent-gate.has-error .consent-error-msg{display:flex;}
  .consent-version-note{font-size:11.5px; color:var(--charcoal-soft); opacity:.8; margin-top:8px; font-family:'IBM Plex Mono', monospace;}

  /* ---------- Generic inline field error (email, etc.) ---------- */
  .form-row.has-error input{border-color:#B5502E; background:#FBF0EC;}
  .field-error-msg{
    display:none; align-items:center; gap:6px; margin-top:8px; color:#B5502E; font-size:12.5px; font-weight:600;
  }
  .form-row.has-error .field-error-msg{display:flex;}

/* ==== Ported from teacrest-all-in-one v15: account modal + referral capture ==== */
.account-toggle{display:flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%; border:1px solid var(--line); background:transparent; color:var(--forest-deep); cursor:pointer; position:relative; transition:border-color .2s, background .2s;}
.account-toggle:hover{border-color:var(--brass); background:var(--forest-mist);}
.account-toggle.is-signed-in::after{content:""; position:absolute; top:4px; right:4px; width:8px; height:8px; border-radius:50%; background:var(--brass); border:1.5px solid var(--ivory);}
.account-form .form-row{margin-bottom:var(--sp-4);}
.account-form-error{color:#b3392c; font-size:13px; margin:0 0 var(--sp-3);}
.account-form-switch{font-size:13px; color:var(--charcoal-soft); text-align:center; margin:var(--sp-4) 0 0;}
.account-form-switch a{color:var(--forest-deep); font-weight:600;}
.account-modal-overlay{
  position:fixed; inset:0; background:rgba(18,32,25,0.6); z-index:230;
  opacity:0; pointer-events:none; transition:opacity .3s var(--ease);
}
.account-modal-overlay.is-open{opacity:1; pointer-events:auto;}
.account-modal{
  position:fixed; top:50%; left:50%; z-index:231;
  background:var(--ivory-card); border-radius:var(--radius-lg); box-shadow:var(--shadow-lift);
  width:440px; max-width:calc(100vw - 40px); max-height:88vh; overflow-y:auto;
  display:flex; flex-direction:column;
  transform:translate(-50%,-50%) translateY(14px) scale(.97); opacity:0; pointer-events:none;
  transition:transform .4s var(--ease-soft), opacity .3s var(--ease);
}
.account-modal.is-open{
  opacity:1; transform:translate(-50%,-50%) translateY(0) scale(1); pointer-events:auto;
}
.account-modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:var(--sp-6) var(--sp-6) var(--sp-5); border-bottom:1px solid var(--line);
}
.account-modal-head h3{font-family:'Fraunces', serif; font-size:22px; color:var(--forest-deep);}
.account-modal-close{
  width:34px; height:34px; border-radius:999px; border:1px solid var(--line); background:transparent;
  color:var(--charcoal-soft); display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .2s var(--ease); flex-shrink:0;
}
.account-modal-close:hover{background:var(--forest-mist);}
.account-modal-body{padding:var(--sp-6);}
.btn-google{
  width:100%; display:flex; align-items:center; justify-content:center; gap:10px;
  background:var(--ivory); border:1px solid var(--line); border-radius:var(--radius-sm);
  padding:13px 16px; font-family:'Manrope'; font-weight:600; font-size:14.5px; color:var(--charcoal);
  cursor:pointer; transition:background .2s var(--ease), border-color .2s var(--ease);
}
.btn-google:hover{background:var(--forest-mist); border-color:var(--brass-light);}
.btn-google:disabled{opacity:.6; cursor:default;}
.oauth-divider{
  display:flex; align-items:center; gap:12px; margin:var(--sp-5) 0;
  font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.05em;
  text-transform:uppercase; color:var(--charcoal-soft);
}
.oauth-divider::before, .oauth-divider::after{content:""; flex:1; height:1px; background:var(--line);}
@media (max-width:600px){
  .account-modal{width:100%; max-height:92vh;}
  .account-modal-head{padding:var(--sp-5) var(--sp-5) var(--sp-4);}
  .account-modal-body{padding:var(--sp-5);}
}

.referral-toggle{display:flex; align-items:center; gap:10px; cursor:pointer; font-family:'Manrope'; font-weight:600; font-size:14.5px; color:var(--forest-deep);}
.referral-toggle input{width:18px; height:18px; accent-color:var(--brass); cursor:pointer; flex-shrink:0;}
.referral-fields{padding:var(--sp-5); background:var(--ivory-deep); border:1px solid var(--line); border-radius:var(--radius-md); margin-top:var(--sp-4);}
.referral-note{font-size:13px; color:var(--charcoal-soft); margin:0 0 var(--sp-4); line-height:1.6;}
.consent-row{display:flex; align-items:flex-start; gap:10px; margin-bottom:var(--sp-3); cursor:pointer; font-size:13px; color:var(--charcoal-soft); line-height:1.5;}
.consent-row input{width:16px; height:16px; margin-top:2px; accent-color:var(--brass); cursor:pointer; flex-shrink:0;}
.referral-status{margin-top:var(--sp-4); padding:12px 14px; border-radius:var(--radius-sm); font-size:13px; line-height:1.5;}
.referral-status.is-valid{background:rgba(94,140,94,.14); color:#3d6b3d; border:1px solid rgba(94,140,94,.3);}
.referral-status.is-error{background:rgba(179,57,44,.08); color:#b3392c; border:1px solid rgba(179,57,44,.25);}
.referral-status.is-pending{background:rgba(184,134,59,.1); color:#8a611f; border:1px solid rgba(184,134,59,.3);}

/* ==== Splash screen — index.html only, shown once on first load ==== */
#splashScreen{
  position:fixed; inset:0; z-index:9999;
  background:var(--ivory);
  display:flex; align-items:center; justify-content:center;
  opacity:1; visibility:visible;
  transition:opacity .7s var(--ease-soft), visibility 0s linear 0s;
}
#splashScreen.is-hidden{
  opacity:0; visibility:hidden;
  transition:opacity .7s var(--ease-soft), visibility 0s linear .7s;
}
#splashLogo{
  width:min(420px, 72vw);
  height:auto;
  opacity:0;
  transform:scale(.92);
  animation:splashLogoIn 1s var(--ease-soft) .15s forwards;
}
@keyframes splashLogoIn{
  to{ opacity:1; transform:scale(1); }
}
@media (prefers-reduced-motion: reduce){
  #splashLogo{ animation:none; opacity:1; transform:none; }
  #splashScreen{ transition:opacity .01s linear; }
  #splashScreen.is-hidden{ transition:opacity .01s linear; }
}
body.splash-active{ overflow:hidden; }


/* ==== Splash screen — shown once when the site first loads ==== */
#splashScreen{
  position:fixed; inset:0; z-index:9999;
  background:var(--ivory);
  display:flex; align-items:center; justify-content:center;
  opacity:1; visibility:visible;
  transition:opacity .7s var(--ease-soft), visibility 0s linear 0s;
}
#splashScreen.is-hidden{
  opacity:0; visibility:hidden;
  transition:opacity .7s var(--ease-soft), visibility 0s linear .7s;
}
#splashLogo{
  width:min(420px, 72vw);
  height:auto;
  opacity:0;
  transform:scale(.92);
  animation:splashLogoIn 1s var(--ease-soft) .15s forwards;
}
@keyframes splashLogoIn{
  to{ opacity:1; transform:scale(1); }
}
@media (prefers-reduced-motion: reduce){
  #splashLogo{ animation:none; opacity:1; transform:none; }
  #splashScreen{ transition:opacity .01s linear; }
  #splashScreen.is-hidden{ transition:opacity .01s linear; }
}
body.splash-active{ overflow:hidden; }

