  :root{
    --espresso:#2b2119;
    --espresso-deep:#221a14;
    --cream:#f4e9da;
    --cream-2:#efe0cb;
    --ink:#2b2119;
    --paper:#f7efe3;
    --gold:#c79a5b;
    --gold-soft:#d9b781;
    --rust:#c1552f;
    --rust-deep:#9c4324;
    --line-on-dark:rgba(215,180,124,0.28);
    --line-on-cream:rgba(43,33,25,0.16);
    --shadow:0 18px 40px -18px rgba(20,14,8,0.45);
    --night:#150f0a;
    --night-2:#1b140d;
    --silhouette:#2c2114;
    --silhouette-lit:#3a2c19;
    --star:rgba(244,225,190,0.4);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--cream);
    color:var(--ink);
    font-family:"Karla",ui-sans-serif,system-ui,sans-serif;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%;display:block;}
  a{color:inherit;}
  h1,h2,h3{
    font-family:"Fraunces",ui-serif,Georgia,serif;
    font-weight:600;
    margin:0;
    text-wrap:balance;
    letter-spacing:-0.01em;
  }
  .eyebrow{
    font-family:"Karla",sans-serif;
    font-size:0.78rem;
    font-weight:700;
    letter-spacing:0.22em;
    text-transform:uppercase;
  }
  .wrap{
    max-width:1120px;
    margin-inline:auto;
    padding-inline:24px;
  }
  /* ---------- NAV ---------- */
  .nav{
    position:absolute;
    top:0;left:0;right:0;
    z-index:20;
    padding-block:22px;
  }
  .nav-row{
    max-width:1120px;
    margin-inline:auto;
    padding-inline:24px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
  }
  .brand-mini{
    display:flex;align-items:center;gap:12px;
    color:var(--paper);
    text-decoration:none;
  }
  .brand-mini img{
    width:44px;height:44px;border-radius:50%;
    object-fit:cover;
    border:1.5px solid var(--gold-soft);
  }
  .brand-mini span{
    font-family:"Fraunces",serif;
    font-size:1.05rem;
    font-weight:600;
    letter-spacing:0.02em;
  }
  .nav-links{
    display:flex;
    gap:30px;
    list-style:none;
    margin:0;padding:0;
  }
  .nav-links a{
    color:var(--paper);
    text-decoration:none;
    font-size:0.78rem;
    font-weight:600;
    letter-spacing:0.14em;
    text-transform:uppercase;
    padding-bottom:4px;
    border-bottom:1px solid transparent;
    transition:border-color .2s ease, opacity .2s ease;
  }
  .nav-links a:hover{border-color:var(--gold);}
  .nav-cta{
    border:1px solid var(--gold-soft);
    color:var(--paper) !important;
    padding:9px 18px;
    border-radius:2px;
    font-size:0.74rem !important;
  }
  .nav-toggle{
    display:none;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:5px;
    width:40px;
    height:40px;
    padding:0;
    background:rgba(247,239,227,0.06);
    border:1px solid var(--line-on-dark);
    border-radius:2px;
    cursor:pointer;
    flex-shrink:0;
  }
  .nav-toggle span{
    display:block;
    width:18px;
    height:2px;
    background:var(--paper);
    transition:transform .22s ease, opacity .22s ease;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
  .nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

  /* ---------- HERO ---------- */
  .hero{
    position:relative;
    min-height:min(92vh,860px);
    display:flex;
    align-items:flex-end;
    background:var(--espresso-deep);
    overflow:hidden;
  }
  .hero-img{
    position:absolute;inset:0;
    width:100%;height:100%;
    object-fit:cover;
    opacity:0.72;
  }
  .hero-scrim{
    position:absolute;inset:0;
    background:
      linear-gradient(180deg, rgba(24,17,11,0.35) 0%, rgba(24,17,11,0.35) 30%, rgba(24,17,11,0.88) 88%, rgba(24,17,11,0.97) 100%),
      linear-gradient(90deg, rgba(24,17,11,0.55) 0%, rgba(24,17,11,0.05) 45%);
  }
  .hero-content{
    position:relative;
    z-index:2;
    width:100%;
    padding-block:120px 64px;
    color:var(--paper);
  }
  .hero-inner{
    max-width:1120px;
    margin-inline:auto;
    padding-inline:24px;
  }
  .hero .eyebrow{color:var(--gold-soft);margin-bottom:18px;}
  .hero h1{
    font-size:clamp(2.6rem,6vw,4.6rem);
    line-height:0.98;
    max-width:14ch;
  }
  .hero h1 em{
    font-style:italic;
    color:var(--gold-soft);
    font-weight:500;
  }
  .hero-sub{
    margin-top:22px;
    max-width:46ch;
    font-size:1.08rem;
    line-height:1.6;
    color:rgba(247,239,227,0.88);
  }
  .hero-ctas{
    margin-top:34px;
    display:flex;
    gap:16px;
    flex-wrap:wrap;
  }
  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:14px 28px;
    font-size:0.78rem;
    font-weight:700;
    letter-spacing:0.14em;
    text-transform:uppercase;
    text-decoration:none;
    border-radius:2px;
    transition:transform .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease;
  }
  .btn:hover{transform:translateY(-2px);}
  .btn-gold{
    border:1px solid var(--gold-soft);
    color:var(--paper);
    background:transparent;
  }
  .btn-gold:hover{background:rgba(215,180,124,0.12);}
  .btn-rust{
    background:var(--rust);
    color:var(--paper);
    box-shadow:var(--shadow);
  }
  .btn-rust:hover{background:var(--rust-deep);}

  /* ---------- SECTION SCAFFOLD ---------- */
  section{padding-block:88px;}
  .on-dark{background:var(--espresso);color:var(--paper);}
  .on-cream{background:var(--cream);color:var(--ink);}
  .on-cream-2{background:var(--cream-2);color:var(--ink);}
  .section-eyebrow{margin-bottom:14px;}
  .on-dark .section-eyebrow{color:var(--gold-soft);}
  .on-cream .section-eyebrow, .on-cream-2 .section-eyebrow{color:var(--rust-deep);}

  /* ---------- STORY (night-journey section) ---------- */
  .on-night{
    background:
      radial-gradient(ellipse 900px 500px at 80% 0%, rgba(199,154,91,0.07), transparent 60%),
      var(--night);
    color:var(--paper);
  }
  #story{padding-block:0;position:relative;}
  .story-wrap{position:relative;padding-block:130px 80px;min-height:1520px;}

  /* ---------- STORY SCENE (tall sticky panel: village -> flight -> arrival) ---------- */
  .story-scene{position:absolute;inset:0;z-index:1;pointer-events:none;}
  .story-stage{
    position:sticky;
    top:56px;
    width:100%;
    max-width:660px;
    aspect-ratio:640/1300;
    margin-left:auto;
    margin-right:0;
  }
  .scene-svg{width:100%;height:100%;display:block;overflow:visible;}

  /* text sits in normal flow (so it can never be stranded off-screen by the
     tall sticky art panel), but overlaps the art's left edge for a merged look */
  .story-text{position:relative;z-index:2;max-width:600px;}
  .story-intro-spacer{height:0;}
  .story-outro-spacer{height:0;}
  .story-text h2{font-size:clamp(1.8rem,3.1vw,2.5rem);color:var(--paper);}
  .story-text .section-eyebrow{color:var(--gold-soft);}
  .story-text-scrim{
    position:absolute;
    top:-60px;bottom:-60px;left:-40px;right:-70%;
    z-index:-1;
    background:linear-gradient(112deg,
      var(--night) 0%,
      var(--night) 30%,
      rgba(21,16,10,0.75) 46%,
      rgba(21,16,10,0.38) 62%,
      rgba(21,16,10,0.12) 78%,
      rgba(21,16,10,0) 92%);
  }
  .story-para{margin-top:28px;max-width:56ch;}
  .story-para p{
    font-size:1.12rem;
    line-height:1.85;
    color:rgba(247,239,227,0.86);
    margin:0;
  }
  .story-para + .story-para{margin-top:40px;}
  @media (prefers-reduced-motion: no-preference){
    .scene-star{animation:twinkle 5s ease-in-out infinite;}
    .scene-star:nth-child(2n){animation-duration:6.5s;animation-delay:.6s;}
    .scene-star:nth-child(3n){animation-duration:4s;animation-delay:1.4s;}
    .scene-star:nth-child(5n){animation-delay:2.2s;}
    .scene-cloud{animation:drift 46s linear infinite;}
    .scene-cloud:nth-child(2n){animation-direction:reverse;animation-duration:60s;}
  }
  @keyframes twinkle{0%,100%{opacity:0.35;}50%{opacity:1;}}
  @keyframes drift{0%{transform:translateX(0);}50%{transform:translateX(14px);}100%{transform:translateX(0);}}
  .scene-star{fill:var(--star);}
  .scene-ground{stroke:var(--line-on-dark);stroke-width:1;}
  .scene-silhouette{fill:var(--silhouette);stroke:rgba(199,154,91,0.22);stroke-width:1.2;}
  .scene-chajja{stroke:rgba(199,154,91,0.35);stroke-width:1.5;}
  .scene-finial{fill:var(--gold-soft);opacity:0.55;}
  .scene-bunting{stroke:rgba(199,154,91,0.3);stroke-width:1;fill:none;}
  .scene-flag{fill:rgba(199,154,91,0.32);}
  .scene-bird{stroke:rgba(247,239,227,0.28);stroke-width:1.2;fill:none;stroke-linecap:round;}
  .scene-cloud{fill:rgba(247,239,227,0.05);}
  .scene-wave{stroke:rgba(217,183,129,0.25);stroke-width:1.4;fill:none;transition:stroke .6s ease,opacity .6s ease;}
  .scene-wave.is-lit{stroke:var(--gold-soft);opacity:1;filter:drop-shadow(0 0 4px rgba(217,183,129,0.5));}
  .scene-win{
    fill:var(--gold-soft);
    opacity:0.08;
    transition:opacity .5s ease, filter .5s ease;
  }
  .scene-win.is-lit{
    opacity:1;
    filter:drop-shadow(0 0 3px rgba(217,183,129,0.85));
  }
  .scene-porch.is-lit{
    opacity:1;
    filter:drop-shadow(0 0 5px rgba(217,183,129,0.95));
  }
  .scene-river{stroke:rgba(217,183,129,0.2);stroke-width:1.3;fill:none;transition:stroke .7s ease,opacity .7s ease;}
  .scene-river.is-lit{stroke:var(--gold-soft);opacity:1;filter:drop-shadow(0 0 3px rgba(217,183,129,0.45));}
  .scene-reed{stroke:rgba(199,154,91,0.3);stroke-width:1;stroke-linecap:round;}
  .scene-lamp-pole{stroke:rgba(199,154,91,0.3);stroke-width:1.3;}
  .scene-lamp-glow{fill:rgba(217,183,129,0.12);transition:fill .5s ease,filter .5s ease;}
  .scene-lamp-glow.is-lit{fill:var(--gold-soft);filter:drop-shadow(0 0 6px rgba(217,183,129,0.9));}
  .scene-bench{stroke:rgba(199,154,91,0.28);stroke-width:1.3;stroke-linecap:round;}
  .scene-park-canopy{fill:var(--silhouette);stroke:rgba(199,154,91,0.22);stroke-width:1.2;transition:fill .6s ease;}
  .scene-park-canopy.is-lit{fill:rgba(217,183,129,0.16);}
  .flight-base{
    stroke:rgba(215,180,124,0.22);
    stroke-width:1.4;
    stroke-dasharray:1 7;
    stroke-linecap:round;
    fill:none;
  }
  .flight-trail{
    stroke:var(--gold-soft);
    stroke-width:1.8;
    stroke-linecap:round;
    fill:none;
    filter:drop-shadow(0 0 5px rgba(217,183,129,0.65));
  }
  .plane{opacity:0;transition:opacity .3s ease;}
  .plane path{fill:var(--gold-soft);filter:drop-shadow(0 0 7px rgba(217,183,129,0.9));}
  .scene-label{
    position:absolute;
    display:flex;
    align-items:center;
    gap:7px;
    font-size:0.68rem;
    letter-spacing:0.07em;
    text-transform:uppercase;
    color:rgba(247,239,227,0.4);
    transition:color .4s ease;
    white-space:nowrap;
  }
  .scene-label .scene-dot{
    width:6px;height:6px;border-radius:50%;
    background:rgba(247,239,227,0.25);
    transition:background .4s ease, box-shadow .4s ease;
    flex:none;
  }
  .scene-label.is-lit{color:var(--gold-soft);}
  .scene-label.is-lit .scene-dot{background:var(--gold-soft);box-shadow:0 0 8px rgba(217,183,129,0.7);}
  .scene-label-start{top:2.5%;left:46%;transform:translate(-50%,0);}
  .scene-label-end{bottom:8%;left:52%;transform:translate(-50%,0);}
  .scene-years{
    position:absolute;
    bottom:5%;left:52%;
    transform:translateX(-50%);
    font-family:"Fraunces",serif;
    font-style:italic;
    font-size:0.8rem;
    color:var(--gold-soft);
    opacity:0;
    transition:opacity .6s ease;
    white-space:nowrap;
  }
  .scene-years.is-lit{opacity:1;}
  .arrival-frame-border{fill:none;stroke:var(--gold-soft);stroke-width:2;}
  .arrival-veil{fill:var(--night);transition:opacity .8s ease;}

  /* ---------- AWARDS RIBBON ---------- */
  .ribbon{
    background:var(--rust);
    color:var(--paper);
    padding-block:20px;
  }
  .ribbon .wrap{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:14px;
    flex-wrap:wrap;
    text-align:center;
    font-family:"Fraunces",serif;
    font-style:italic;
    font-size:1.02rem;
    letter-spacing:0.01em;
  }
  .ribbon .dot{opacity:0.6;font-style:normal;}

  /* ---------- MENU ---------- */
  .menu-grid{
    display:grid;
    grid-template-columns:0.85fr 1.15fr;
    gap:64px;
    align-items:start;
  }
  .menu-photo{
    position:relative;
    border-radius:4px;
    overflow:hidden;
    box-shadow:0 24px 50px -20px rgba(0,0,0,0.6);
  }
  .menu-photo img{aspect-ratio:3/4;object-fit:cover;}
  .menu-head h2{font-size:clamp(1.9rem,3.4vw,2.7rem);}
  .menu-head p{
    margin-top:16px;
    max-width:48ch;
    line-height:1.7;
    color:rgba(247,239,227,0.78);
  }
  .menu-list{
    margin-top:38px;
    display:flex;
    flex-direction:column;
  }
  .menu-item{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:18px;
    padding-block:18px;
    border-bottom:1px solid var(--line-on-dark);
  }
  .menu-item:first-child{border-top:1px solid var(--line-on-dark);}
  .menu-item-name{
    font-family:"Fraunces",serif;
    font-weight:500;
    font-size:1.12rem;
  }
  .menu-item-desc{
    display:block;
    font-family:"Karla",sans-serif;
    font-weight:400;
    font-size:0.85rem;
    color:rgba(247,239,227,0.6);
    margin-top:4px;
  }
  .menu-item-price{
    font-variant-numeric:tabular-nums;
    color:var(--gold-soft);
    font-weight:700;
    letter-spacing:0.02em;
    white-space:nowrap;
  }
  .menu-note{
    margin-top:26px;
    font-size:0.82rem;
    color:rgba(247,239,227,0.55);
  }
  .menu-note a{
    color:var(--gold-soft);
    text-decoration:underline;
    text-underline-offset:3px;
  }
  .menu-full-btn{margin-top:30px;}

  /* ---------- PAGE HERO (secondary pages, e.g. Menu) ---------- */
  .page-hero{
    position:relative;
    min-height:min(46vh,380px);
    display:flex;
    align-items:flex-end;
    background:var(--espresso-deep);
    overflow:hidden;
  }
  .page-hero-img{
    position:absolute;inset:0;
    width:100%;height:100%;
    object-fit:cover;
    opacity:0.55;
  }
  .page-hero-scrim{
    position:absolute;inset:0;
    background:linear-gradient(180deg, rgba(24,17,11,0.45) 0%, rgba(24,17,11,0.75) 70%, rgba(24,17,11,0.95) 100%);
  }
  .page-hero-content{
    position:relative;
    z-index:2;
    width:100%;
    padding-block:120px 44px;
    color:var(--paper);
  }
  .page-hero-inner{
    max-width:1120px;
    margin-inline:auto;
    padding-inline:24px;
  }
  .page-hero .eyebrow{color:var(--gold-soft);margin-bottom:16px;}
  .page-hero h1{font-size:clamp(2.2rem,5vw,3.4rem);}
  .page-hero p{
    margin-top:16px;
    max-width:52ch;
    font-size:1.02rem;
    line-height:1.6;
    color:rgba(247,239,227,0.85);
  }

  /* ---------- FULL MENU PAGE ---------- */
  .full-menu-section{position:relative;}
  .full-menu-section::before{
    content:"";
    position:absolute;inset:0;
    background-image:repeating-linear-gradient(135deg, rgba(217,183,129,0.035) 0px, rgba(217,183,129,0.035) 1px, transparent 1px, transparent 26px);
    pointer-events:none;
  }
  .full-menu-section > .wrap{position:relative;z-index:1;}

  /* sticky category jump nav */
  .menu-jump{
    position:sticky;
    top:0;
    z-index:15;
    background:rgba(21,16,10,0.94);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line-on-dark);
  }
  .menu-jump-row{
    display:flex;
    gap:30px;
    overflow-x:auto;
    padding-block:15px;
    scrollbar-width:none;
  }
  .menu-jump-row::-webkit-scrollbar{display:none;}
  .menu-jump-link{
    flex:none;
    font-family:"Karla",sans-serif;
    font-size:0.74rem;
    font-weight:700;
    letter-spacing:0.13em;
    text-transform:uppercase;
    color:rgba(247,239,227,0.5);
    text-decoration:none;
    padding-bottom:5px;
    border-bottom:2px solid transparent;
    transition:color .25s ease, border-color .25s ease;
    white-space:nowrap;
  }
  .menu-jump-link:hover{color:rgba(247,239,227,0.85);}
  .menu-jump-link.is-active{color:var(--gold-soft);border-color:var(--gold-soft);}

  .full-menu-intro{
    max-width:64ch;
    margin:0 auto 56px;
    text-align:center;
  }
  .full-menu-intro p{
    margin-top:14px;
    line-height:1.7;
    color:rgba(247,239,227,0.75);
  }
  .full-menu-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0 72px;
    position:relative;
    counter-reset:menucat;
  }
  @media (min-width:861px){
    .full-menu-grid::before{
      content:"";
      position:absolute;
      top:0;bottom:0;left:50%;
      width:1px;
      background:linear-gradient(180deg, transparent, var(--line-on-dark) 10%, var(--line-on-dark) 90%, transparent);
      transform:translateX(-50%);
    }
  }
  .menu-category{
    margin-bottom:52px;
    break-inside:avoid;
    scroll-margin-top:92px;
    opacity:0;
    transform:translateY(14px);
    transition:opacity .7s ease, transform .7s ease;
  }
  .menu-category.is-revealed{opacity:1;transform:translateY(0);}
  @media (prefers-reduced-motion: reduce){
    .menu-category{opacity:1;transform:none;transition:none;}
  }
  .menu-category-head{
    display:flex;
    align-items:baseline;
    gap:14px;
    margin-bottom:6px;
    counter-increment:menucat;
  }
  .menu-category-head::before{
    content:counter(menucat, decimal-leading-zero);
    font-family:"Karla",sans-serif;
    font-size:0.72rem;
    font-weight:700;
    letter-spacing:0.08em;
    color:rgba(217,183,129,0.55);
    transform:translateY(-1px);
  }
  .menu-category-head h3{
    font-size:1.36rem;
    color:var(--gold-soft);
    white-space:nowrap;
  }
  .menu-category-head .rule{
    position:relative;
    height:1px;
    width:100%;
    background:var(--line-on-dark);
  }
  .menu-category-head .rule::after{
    content:"";
    position:absolute;
    top:50%;left:50%;
    width:5px;height:5px;
    background:var(--gold-soft);
    transform:translate(-50%,-50%) rotate(45deg);
  }
  .menu-category-note{
    font-family:"Karla",sans-serif;
    font-size:0.8rem;
    font-style:italic;
    color:rgba(247,239,227,0.5);
    margin:8px 0 0 30px;
  }
  .menu-category .menu-list{margin-top:8px;}
  .menu-category .menu-item{padding-block:15px;transition:background-color .25s ease;}
  .menu-category .menu-item:hover{background:rgba(217,183,129,0.045);}
  .menu-category .menu-item-name{transition:color .25s ease;}
  .menu-category .menu-item:hover .menu-item-name{color:var(--gold-soft);}
  .menu-close-ornament{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    margin:8px 0 40px;
  }
  .menu-close-ornament span{
    width:5px;height:5px;
    background:var(--gold-soft);
    opacity:0.6;
    transform:rotate(45deg);
    display:block;
  }
  .menu-close-ornament span:nth-child(2){width:7px;height:7px;opacity:1;}
  .menu-legend{
    margin-top:0;
    display:flex;
    gap:22px;
    flex-wrap:wrap;
    justify-content:center;
    font-size:0.78rem;
    color:rgba(247,239,227,0.55);
  }
  .menu-legend b{color:var(--gold-soft);}
  .full-menu-footnote{
    margin-top:8px;
    max-width:70ch;
    margin-inline:auto;
    text-align:center;
    font-size:0.85rem;
    color:rgba(247,239,227,0.55);
  }
  @media (max-width:860px){
    .full-menu-grid{grid-template-columns:1fr;}
    .menu-category-note{margin-left:0;}
    .menu-includes{margin-left:0;}
  }

  /* controls row: veg toggle + tap hint, second row of the sticky nav */
  .menu-controls-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:12px;
    padding-block:0 14px;
  }
  .menu-veg-toggle{
    display:flex;
    align-items:center;
    gap:9px;
    font-family:"Karla",sans-serif;
    font-size:0.76rem;
    font-weight:600;
    letter-spacing:0.02em;
    color:rgba(247,239,227,0.75);
    cursor:pointer;
    user-select:none;
  }
  .menu-veg-toggle input{
    position:absolute;
    opacity:0;
    width:1px;height:1px;
  }
  .menu-veg-switch{
    position:relative;
    width:32px;height:18px;
    border-radius:999px;
    background:rgba(247,239,227,0.14);
    border:1px solid var(--line-on-dark);
    transition:background .25s ease;
    flex:none;
  }
  .menu-veg-switch::after{
    content:"";
    position:absolute;
    top:1px;left:1px;
    width:14px;height:14px;
    border-radius:50%;
    background:rgba(247,239,227,0.7);
    transition:transform .25s ease, background .25s ease;
  }
  .menu-veg-toggle input:checked + .menu-veg-switch{background:rgba(217,183,129,0.35);}
  .menu-veg-toggle input:checked + .menu-veg-switch::after{
    transform:translateX(14px);
    background:var(--gold-soft);
  }
  .menu-veg-toggle input:focus-visible + .menu-veg-switch{outline:2px solid var(--gold-soft);outline-offset:2px;}
  .menu-tap-hint{
    margin:0;
    font-family:"Karla",sans-serif;
    font-size:0.74rem;
    font-style:italic;
    color:rgba(247,239,227,0.4);
  }
  @media (max-width:640px){
    .menu-tap-hint{display:none;}
  }

  /* "served with" inclusion pills */
  .menu-includes{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:8px;
    margin:8px 0 0 30px;
  }
  .menu-includes-label{
    font-family:"Karla",sans-serif;
    font-size:0.72rem;
    font-style:italic;
    color:rgba(247,239,227,0.45);
  }
  .menu-include-pill{
    font-family:"Karla",sans-serif;
    font-size:0.7rem;
    font-weight:700;
    letter-spacing:0.03em;
    color:var(--gold-soft);
    background:rgba(217,183,129,0.1);
    border:1px solid rgba(217,183,129,0.3);
    border-radius:999px;
    padding:3px 10px;
    white-space:nowrap;
  }

  /* tap-to-tally: menu items become playful, clickable */
  .menu-category .menu-item{position:relative;cursor:pointer;outline-offset:2px;}
  .menu-category .menu-item:focus-visible{outline:2px solid var(--gold-soft);}
  .menu-category .menu-item::before{
    content:"";
    position:absolute;
    left:-14px;top:50%;
    width:6px;height:6px;
    border-radius:50%;
    background:var(--gold-soft);
    opacity:0;
    transform:translateY(-50%) scale(0.4);
    transition:opacity .2s ease, transform .2s ease;
  }
  .menu-category .menu-item.is-picked{background:rgba(217,183,129,0.08);}
  .menu-category .menu-item.is-picked::before{opacity:1;transform:translateY(-50%) scale(1);}
  .menu-category .menu-item.is-picked .menu-item-name{color:var(--gold-soft);}

  /* floating tally bar */
  .menu-tally{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:30;
    background:rgba(15,11,7,0.96);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    border-top:1px solid rgba(217,183,129,0.4);
    box-shadow:0 -16px 36px -18px rgba(0,0,0,0.6);
  }
  .menu-tally-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:10px;
    padding-block:14px;
  }
  .menu-tally-count{
    font-family:"Fraunces",serif;
    font-weight:500;
    font-size:1rem;
    color:var(--gold-soft);
  }
  .menu-tally-actions{
    display:flex;
    align-items:center;
    gap:18px;
    flex-wrap:wrap;
  }
  .menu-tally-hint{
    margin:0;
    font-family:"Karla",sans-serif;
    font-size:0.72rem;
    color:rgba(247,239,227,0.45);
  }
  @media (max-width:640px){
    .menu-tally-hint{display:none;}
  }
  .menu-tally-clear{
    font-family:"Karla",sans-serif;
    font-size:0.76rem;
    font-weight:700;
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--paper);
    background:transparent;
    border:1px solid var(--line-on-dark);
    border-radius:999px;
    padding:7px 16px;
    cursor:pointer;
    transition:border-color .2s ease, color .2s ease;
  }
  .menu-tally-clear:hover{border-color:var(--gold-soft);color:var(--gold-soft);}

  /* ---------- EVENTS / CATERING PAGE ---------- */
  .feature{
    display:grid;
    grid-template-columns:0.95fr 1.05fr;
    gap:64px;
    align-items:center;
  }
  .feature-reverse .feature-figure{order:2;}
  .feature-reverse .feature-copy{order:1;}
  .feature-figure{
    border-radius:4px;
    overflow:hidden;
    box-shadow:var(--shadow);
  }
  .feature-figure img{aspect-ratio:4/3;object-fit:cover;}
  .feature-copy h2{font-size:clamp(1.9rem,3.4vw,2.7rem);}
  .feature-copy p{
    margin-top:18px;
    font-size:1.02rem;
    line-height:1.75;
    max-width:52ch;
  }
  .feature-copy p + p{margin-top:14px;}
  .on-dark .feature-copy p{color:rgba(247,239,227,0.78);}
  .on-cream-2 .feature-copy p{color:rgba(43,33,25,0.86);}
  .event-facts{
    margin-top:26px;
    display:flex;
    gap:36px;
    flex-wrap:wrap;
  }
  .event-fact b{
    display:block;
    font-family:"Fraunces",serif;
    font-size:1.6rem;
  }
  .event-fact span{
    font-size:0.76rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
  }
  .on-dark .event-fact b{color:var(--gold-soft);}
  .on-dark .event-fact span{color:rgba(247,239,227,0.6);}
  .on-cream-2 .event-fact b{color:var(--rust-deep);}
  .on-cream-2 .event-fact span{color:rgba(43,33,25,0.65);}
  .event-gallery{
    margin-top:20px;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:24px;
  }
  .event-gallery img{
    width:100%;
    aspect-ratio:3/4;
    object-fit:cover;
    border-radius:4px;
    box-shadow:var(--shadow);
    display:block;
  }
  .event-gallery-intro{max-width:64ch;margin-bottom:8px;}
  .event-gallery-intro p{
    margin-top:14px;
    line-height:1.7;
    color:rgba(247,239,227,0.75);
  }
  .cta-card{
    max-width:640px;
    margin-inline:auto;
    text-align:center;
    background:rgba(247,239,227,0.04);
    border:1px solid var(--line-on-dark);
    border-radius:4px;
    padding:44px;
  }
  .cta-card h2{font-size:clamp(1.7rem,3vw,2.3rem);}
  .cta-card p{
    margin-top:16px;
    line-height:1.7;
    color:rgba(247,239,227,0.78);
  }
  .cta-card .hero-ctas{justify-content:center;margin-top:28px;}
  @media (max-width:860px){
    .feature,.feature-reverse{grid-template-columns:1fr;gap:28px;}
    .feature-reverse .feature-figure{order:1;}
    .feature-reverse .feature-copy{order:2;}
    .event-gallery{grid-template-columns:1fr 1fr;}
    .cta-card{padding:32px 24px;}
  }

  /* ---------- PATIO ---------- */
  .patio{
    display:grid;
    grid-template-columns:0.95fr 1.05fr;
    gap:64px;
    align-items:center;
  }
  .patio-figure{
    border-radius:4px;
    overflow:hidden;
    box-shadow:var(--shadow);
  }
  .patio-figure img{aspect-ratio:5/4;object-fit:cover;}
  .patio h2{font-size:clamp(1.9rem,3.4vw,2.7rem);}
  .patio p{
    margin-top:20px;
    font-size:1.02rem;
    line-height:1.75;
    max-width:52ch;
    color:rgba(43,33,25,0.86);
  }
  .patio-facts{
    margin-top:28px;
    display:flex;
    gap:36px;
    flex-wrap:wrap;
  }
  .patio-fact b{
    display:block;
    font-family:"Fraunces",serif;
    font-size:1.7rem;
    color:var(--rust-deep);
  }
  .patio-fact span{
    font-size:0.78rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:rgba(43,33,25,0.65);
  }

  /* ---------- VISIT / HOURS ---------- */
  .visit{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:64px;
    align-items:start;
    margin-top:56px;
    padding-top:56px;
    border-top:1px solid var(--line-on-dark);
  }
  .visit h3{font-size:clamp(1.5rem,2.6vw,2rem);margin-top:10px;}
  .visit-intro{
    margin-top:16px;
    max-width:46ch;
    line-height:1.7;
    color:rgba(247,239,227,0.78);
  }
  .hours-card{
    margin-top:36px;
    border-top:1px solid var(--line-on-dark);
  }
  .hours-row{
    display:flex;
    justify-content:space-between;
    padding-block:16px;
    border-bottom:1px solid var(--line-on-dark);
    font-size:0.98rem;
  }
  .hours-row .label{color:rgba(247,239,227,0.7);}
  .hours-row .value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--paper);}
  .visit-card{
    background:rgba(247,239,227,0.04);
    border:1px solid var(--line-on-dark);
    border-radius:4px;
    padding:34px;
  }
  .visit-card .field{margin-bottom:22px;}
  .visit-card .field:last-of-type{margin-bottom:0;}
  .field-label{
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--gold-soft);
    margin-bottom:6px;
  }
  .field-value{font-size:1.02rem;line-height:1.5;}
  .field-value a{text-decoration:underline;text-underline-offset:3px;color:var(--paper);}
  .visit-card .btn{margin-top:26px;width:100%;justify-content:center;}

  /* ---------- RESERVATION FORM ---------- */
  .reserve-card-head{max-width:60ch;}
  .reserve-card-head h2{
    font-size:clamp(1.9rem,3.4vw,2.7rem);
    margin-top:10px;
  }
  .reserve-card-head p{
    margin-top:14px;
    line-height:1.7;
    color:rgba(247,239,227,0.78);
  }
  .reserve-form{margin-top:32px;}
  .reserve-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
  }
  .reserve-grid-compact{
    grid-template-columns:repeat(2,minmax(0,240px));
    max-width:520px;
  }
  .reserve-field{display:flex;flex-direction:column;}
  .reserve-field-full{margin-top:22px;}
  .reserve-field label{
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--gold-soft);
    margin-bottom:8px;
  }
  .reserve-field .optional{
    text-transform:none;
    letter-spacing:0;
    color:rgba(247,239,227,0.5);
    font-size:0.72rem;
  }
  .reserve-field input,
  .reserve-field select,
  .reserve-field textarea{
    font-family:"Karla",sans-serif;
    font-size:0.95rem;
    color:var(--paper);
    background:rgba(247,239,227,0.06);
    border:1px solid var(--line-on-dark);
    border-radius:2px;
    padding:12px 14px;
    width:100%;
  }
  .reserve-field select{
    appearance:none;
    -webkit-appearance:none;
    background-image:linear-gradient(45deg, transparent 50%, var(--gold-soft) 50%), linear-gradient(135deg, var(--gold-soft) 50%, transparent 50%);
    background-position:calc(100% - 20px) center, calc(100% - 14px) center;
    background-size:6px 6px, 6px 6px;
    background-repeat:no-repeat;
  }
  .reserve-field input::placeholder,
  .reserve-field textarea::placeholder{color:rgba(247,239,227,0.35);}
  .reserve-field input:focus,
  .reserve-field select:focus,
  .reserve-field textarea:focus{
    outline:none;
    border-color:var(--gold-soft);
    background:rgba(247,239,227,0.1);
  }
  .reserve-field input::-webkit-calendar-picker-indicator{filter:invert(0.85) sepia(0.4) saturate(3) hue-rotate(-10deg);}
  .reserve-field textarea{resize:vertical;min-height:52px;}
  .reserve-submit{margin-top:28px;}
  .reserve-note{
    margin-top:16px;
    font-size:0.85rem;
    color:rgba(247,239,227,0.55);
    max-width:56ch;
  }
  .reserve-confirm{
    margin-top:32px;
    padding:28px;
    background:rgba(215,180,124,0.08);
    border:1px solid var(--line-on-dark);
    border-radius:4px;
  }
  .reserve-confirm-title{
    font-family:"Fraunces",serif;
    font-size:1.3rem;
    color:var(--paper);
  }
  .reserve-confirm-detail{
    margin-top:10px;
    line-height:1.6;
    color:rgba(247,239,227,0.82);
  }
  .reserve-confirm-actions{
    margin-top:22px;
    display:flex;
    gap:14px;
    flex-wrap:wrap;
  }
  .reserve-edit{
    display:block;
    margin-top:18px;
    background:none;
    border:none;
    color:var(--gold-soft);
    font-size:0.82rem;
    text-decoration:underline;
    text-underline-offset:3px;
    cursor:pointer;
    padding:0;
  }
  .reserve-results:empty{margin-top:0;}
  .reserve-status{margin-top:24px;}
  .reserve-status-error{color:var(--gold-soft);}
  .reserve-times-label{
    margin-top:28px;
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--gold-soft);
  }
  .reserve-times{
    margin-top:14px;
    display:flex;
    flex-wrap:wrap;
    gap:10px;
  }
  .reserve-time{
    font-family:"Karla",sans-serif;
    font-size:0.85rem;
    color:var(--paper);
    background:rgba(247,239,227,0.06);
    border:1px solid var(--line-on-dark);
    border-radius:2px;
    padding:10px 16px;
    cursor:pointer;
    transition:background .18s ease, border-color .18s ease;
  }
  .reserve-time:hover{background:rgba(215,180,124,0.14);border-color:var(--gold-soft);}
  .reserve-contact{margin-top:28px;}
  .reserve-contact-recap{
    margin-top:24px;
    font-size:0.85rem;
    color:rgba(247,239,227,0.7);
  }
  .reserve-checkbox{
    display:flex;
    align-items:flex-start;
    gap:10px;
    margin-top:20px;
    font-size:0.85rem;
    line-height:1.5;
    color:rgba(247,239,227,0.8);
    cursor:pointer;
  }
  .reserve-checkbox input[type="checkbox"]{
    flex-shrink:0;
    width:17px;
    height:17px;
    margin-top:2px;
    accent-color:var(--gold-soft);
    cursor:pointer;
  }

  /* ---------- FOOTER ---------- */
  footer{
    background:var(--espresso-deep);
    color:rgba(247,239,227,0.7);
    padding-block:56px 32px;
  }
  .footer-top{
    display:flex;
    justify-content:space-between;
    gap:40px;
    flex-wrap:wrap;
    padding-bottom:36px;
    border-bottom:1px solid var(--line-on-dark);
  }
  .footer-brand{display:flex;align-items:center;gap:14px;}
  .footer-brand img{width:52px;height:52px;border-radius:50%;object-fit:cover;border:1.5px solid var(--gold-soft);}
  .footer-brand span{font-family:"Fraunces",serif;color:var(--paper);font-size:1.15rem;}
  .footer-nav{
    display:flex;
    gap:26px;
    flex-wrap:wrap;
    list-style:none;
    margin:0;padding:0;
  }
  .footer-nav a{
    text-decoration:none;
    font-size:0.76rem;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:rgba(247,239,227,0.7);
  }
  .footer-social{display:flex;gap:14px;}
  .footer-social a{
    width:38px;height:38px;
    border:1px solid var(--line-on-dark);
    border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    text-decoration:none;
    color:var(--gold-soft);
  }
  .footer-bottom{
    display:flex;
    justify-content:space-between;
    gap:16px;
    flex-wrap:wrap;
    padding-top:24px;
    font-size:0.76rem;
  }

  /* ---------- RESPONSIVE ---------- */
  @media (max-width:860px){
    .nav-toggle{display:flex;}
    .nav-row{justify-content:space-between;position:relative;}
    .nav-links{
      position:absolute;
      top:calc(100% + 10px);
      right:0;
      left:0;
      flex-direction:column;
      align-items:stretch;
      gap:2px;
      margin:0;
      background:var(--espresso-deep);
      border:1px solid var(--line-on-dark);
      border-radius:6px;
      padding:10px;
      box-shadow:var(--shadow);
      opacity:0;
      visibility:hidden;
      transform:translateY(-8px);
      transition:opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
    }
    .nav-links.is-open{
      opacity:1;
      visibility:visible;
      transform:translateY(0);
      transition:opacity .2s ease, transform .2s ease;
    }
    .nav-links li{width:100%;}
    .nav-links a{
      display:block;
      padding:13px 12px;
      border-bottom:none !important;
    }
    .nav-links .nav-cta{
      margin-top:4px;
      text-align:center;
    }
    .menu-grid,.patio,.visit{grid-template-columns:1fr;gap:36px;}
    /* Mobile: the illustration sticks in place behind the story text as you
       scroll — same sticky-while-you-scroll idea as desktop, just centered
       behind the text instead of pinned beside it. Both children share the
       same grid cell so they overlap. On first entering the section, the
       panel does a bold 3D pop-up/settle (JS-driven, tied to scroll) before
       easing down to its faint resting opacity; .story-intro-spacer delays
       the heading's arrival until that intro has had room to play out. The
       values below are the resting state / no-JS fallback — the JS applies
       inline style overrides during the intro and converges back to these. */
    .story-wrap{padding-block:56px 40px;display:grid;}
    .story-scene{
      grid-area:1/1;
      position:sticky;
      top:0;
      height:100vh;
      z-index:0;
      pointer-events:none;
      opacity:0.32;
      display:flex;
      align-items:center;
      justify-content:center;
      overflow:hidden;
      perspective:900px;
    }
    .story-stage{
      position:relative;
      width:76%;
      max-width:300px;
      margin:0;
      transform-origin:50% 85%;
      will-change:transform;
    }
    .scene-layer-sky{opacity:1;}
    .scene-layer-village{opacity:1;transform:none;transform-origin:50% 70%;transform-box:fill-box;}
    .story-intro-spacer{height:100vh;}
    /* gives the finale pop room to play AFTER the last paragraph has
       actually scrolled by, instead of overlapping the tail of the text --
       mirrors .story-intro-spacer's job at the top of the section. */
    .story-outro-spacer{height:100vh;}
    @media (prefers-reduced-motion:reduce){
      .story-intro-spacer{height:12vh;}
      .story-outro-spacer{height:0;}
    }
    .story-text{grid-area:1/1;max-width:none;}
    .story-text-scrim{display:none;}
    .story-para + .story-para{margin-top:26px;}
    .menu-photo{order:2;}
    section{padding-block:64px;}
    .hero-content{padding-block:100px 48px;}
    .page-hero-content{padding-block:96px 36px;}
    .reserve-grid{grid-template-columns:1fr;}
    .reserve-grid-compact{grid-template-columns:1fr;max-width:none;}
    .visit{margin-top:44px;padding-top:44px;}
    .reserve-confirm-actions{flex-direction:column;}
    .reserve-confirm-actions .btn{width:100%;justify-content:center;}
  }
