/* .nm-scope carries the theme (colours, base type) and is put on BOTH
   .nm-scope and the popup overlay (#nmOv). The popup is moved to be a
   direct child of <body> in JS (see nimto-menu.js) so its `position:fixed`
   can never get trapped by a transformed ancestor — Elementor's own
   section/column entrance animations do exactly that, which is what was
   making the popup appear clipped instead of centred. Since that move takes
   it out from under #nimto-menu-root, it needs its own copy of the CSS
   variables (custom properties don't reach across to a detached sibling) —
   hence a shared class instead of relying on inheritance from the id alone. */
.nm-scope{
  /* ---- Nimto brand palette (taken from the printed menu + site) ---- */
  --bark:#3B2312;          /* darkest wood */
  --brand:#7C5230;         /* the brown menu bars */
  --brand-mid:#9C6B3C;
  --clay:#B8874E;
  --gold:#C89B54;          /* logo gold */
  --gold-soft:#E3C892;
  --chili:#B0361A;         /* the red dot in the logo */
  --leaf:#4F7A3F;          /* vegetarian */
  --sand:#FAF5EC;          /* page cream */
  --sand-2:#F2E7D5;        /* soft panel */
  --paper:#FFFFFF;
  --line:#E7DAC2;
  --line-soft:#F1E7D6;
  --ink:#26180B;
  --ink-2:#5C452F;
  --muted:#8E7A62;

  --tab:#C59D5F;           /* active tab */
  --tab-ink:#2A1B0C;       /* text on the active tab */

  --sh-1:0 1px 2px rgba(59,35,18,.05);
  --sh-2:0 6px 22px rgba(59,35,18,.09);
  --sh-3:0 24px 70px rgba(30,18,8,.34);
  --r:14px;
  --clamp-bg:var(--paper); /* colour the fade behind a clamped "…" blends into */

  font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:16px; line-height:1.5; color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
/* Properties that must stay only on the real root — NOT on the popup overlay,
   which has its own background/positioning and must never replay the
   load-in animation (it would force the overlay visible again after 0.6s). */
#nimto-menu-root{
  background:var(--sand);
  /* Fills 100% of whatever container it's placed in (no breakout past it —
     the inner max-width below caps it at a sane reading width once that
     container is wide), with a gentle fade/slide in on load. */
  width:100%;
  /* Rounds the root's own background/shadow (this alone doesn't need
     overflow:hidden — background and box-shadow always follow border-radius
     on the element that owns them). Deliberately NOT using overflow:hidden
     here: it would make root the sticky nav's containing block instead of
     the viewport, breaking position:sticky on .nm-top. The sticky bar's own
     background is rounded separately below to match this top corner. */
  border-radius:24px;
  box-shadow:var(--sh-2);
  animation:nmRootIn .6s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes nmRootIn{
  from{ opacity:0; transform:translateY(14px); }
  to{ opacity:1; transform:none; }
}
.nm-scope *,.nm-scope *::before,.nm-scope *::after{box-sizing:border-box}
/* white-space:normal overrides themes (e.g. Hello Elementor's reset.css) that set
   `button{white-space:nowrap}` — since white-space inherits, that rule was cutting
   every card description off after one line because cards are <button> elements. */
.nm-scope button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;text-align:left;white-space:normal}
.nm-scope .nm-serif{font-family:"Cormorant Garamond",Georgia,serif}
.nm-scope .nm-num{
  font-family:"Inter",sans-serif; font-weight:600;
  font-variant-numeric:tabular-nums; letter-spacing:.01em;
}

/* ======================================================================
   LINE CLAMPING — deliberately does NOT use -webkit-box / -webkit-line-clamp.
   Those rely on the vendor property -webkit-box-orient, which several
   WordPress CSS optimisers strip; when it goes missing the browser lays the
   text out on a single endless line and slices it off at the card edge.
   Instead: a fixed height in ems, overflow hidden, and a small script that
   tags genuinely overflowing elements so the "…" only appears when needed.
   ====================================================================== */
.nm-scope .nm-clamp{
  display:block; position:relative; overflow:hidden;
  overflow-wrap:break-word; word-wrap:break-word; white-space:normal;
}
.nm-scope .nm-clamp.is-clip::after{
  content:"\2026";
  position:absolute; right:0; bottom:0;
  padding-left:26px; pointer-events:none;
  line-height:inherit; font:inherit; color:inherit;
  background:linear-gradient(90deg,
    rgba(255,255,255,0) 0%, var(--clamp-bg) 55%, var(--clamp-bg) 100%);
}
/* two lines of body copy, height reserved so cards in a row stay level */
.nm-scope .nm-clamp-2{line-height:1.5;height:3em}
/* up to two lines for a dish name — no reserved space when it only needs one */
.nm-scope .nm-clamp-name{line-height:1.32;max-height:2.64em}

/* ======================================================================
   PHOTO BOXES — every photo is absolutely pinned inside a box whose height
   is set by the layout, never by the picture. Without this a tall source
   image stretches its container (which is what made the flight banner
   balloon to the height of the original photo).
   ====================================================================== */
.nm-scope .nm-shot{display:block;position:relative;overflow:hidden;background:var(--sand-2)}
.nm-scope .nm-shot img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; display:block; max-width:none;
}

/* ============================ HEADER / TABS ============================ */
.nm-scope .nm-top{
  position:sticky; top:0; z-index:30;
  background:rgba(250,245,236,.95);
  backdrop-filter:saturate(1.3) blur(12px);
  -webkit-backdrop-filter:saturate(1.3) blur(12px);
  border-bottom:1px solid var(--line);
  /* matches #nimto-menu-root's own border-radius so the sticky bar's opaque
     background doesn't square off the rounded top corners underneath it */
  border-radius:24px 24px 0 0;
}
.nm-scope .nm-top-in{max-width:1240px;margin:0 auto;padding:0 18px}

/* main tabs — segmented, brand brown */
.nm-scope .nm-tabs{
  display:flex; gap:4px; padding:12px 0 10px;
  overflow-x:auto; scrollbar-width:none;
}
.nm-scope .nm-tabs::-webkit-scrollbar{display:none}
.nm-scope .nm-tab{
  flex:none; padding:11px 22px; border-radius:999px;
  font-family:"Inter",sans-serif; font-weight:500; font-size:15px;
  letter-spacing:.03em; color:var(--ink-2);
  border:1px solid transparent; white-space:nowrap;
  transition:background .18s, color .18s, border-color .18s;
}
.nm-scope .nm-tab:hover{background:var(--sand-2)}
.nm-scope .nm-tab.on{
  background:var(--tab); color:var(--tab-ink); border-color:var(--tab);
  box-shadow:0 2px 10px rgba(197,157,95,.34);
}

/* sub tabs — light pills with a gold underline when active */
.nm-scope .nm-subs-wrap{
  position:relative; border-top:1px solid var(--line-soft);
}
.nm-scope .nm-subs{
  display:flex; gap:2px; padding:9px 0 10px;
  overflow-x:auto; scrollbar-width:none; scroll-behavior:smooth;
}
.nm-scope .nm-subs::-webkit-scrollbar{display:none}
/* left / right scroll arrows — only appear when the strip actually overflows.
   Plain small chevrons, no circular button chrome. */
.nm-scope .nm-subnav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3;
  width:18px; height:18px;
  background:none; color:var(--brand-mid);
  border:none; box-shadow:none;
  display:none; align-items:center; justify-content:center;
  transition:opacity .18s, transform .18s, color .18s;
}
.nm-scope .nm-subnav.on{display:flex}
.nm-scope .nm-subnav:hover{color:var(--brand)}
.nm-scope .nm-subnav-l{left:2px}
.nm-scope .nm-subnav-l:hover{transform:translate(-2px,-50%)}
.nm-scope .nm-subnav-r{right:2px}
.nm-scope .nm-subnav-r:hover{transform:translate(2px,-50%)}
/* soft fade so cut-off pills read as "there is more this way" */
.nm-scope .nm-subfade{
  position:absolute; top:0; bottom:0; width:46px; pointer-events:none; z-index:2;
  opacity:0; transition:opacity .18s;
}
.nm-scope .nm-subfade.on{opacity:1}
.nm-scope .nm-subfade-l{left:0;background:linear-gradient(90deg,var(--sand),rgba(250,245,236,0))}
.nm-scope .nm-subfade-r{right:0;background:linear-gradient(270deg,var(--sand),rgba(250,245,236,0))}
.nm-scope .nm-sub{
  flex:none; padding:7px 13px; border-radius:8px;
  font-size:13px; font-weight:500; color:var(--muted);
  white-space:nowrap; position:relative; transition:color .16s, background .16s;
}
.nm-scope .nm-sub:hover{color:var(--ink); background:var(--sand-2)}
.nm-scope .nm-sub.on{color:var(--brand); background:var(--sand-2)}
.nm-scope .nm-sub.on::after{
  content:""; position:absolute; left:13px; right:13px; bottom:2px; height:2px;
  background:var(--tab); border-radius:2px;
}

/* ============================ SEARCH ROW ============================ */
.nm-scope .nm-tools{
  max-width:1240px; margin:18px auto 0; padding:0 18px;
  display:flex; gap:9px; flex-wrap:wrap; align-items:center;
}
.nm-scope .nm-find{flex:1 1 240px; min-width:200px; position:relative}
.nm-scope .nm-find input{
  width:100%; padding:11px 15px 11px 40px;
  border:1px solid var(--line); background:var(--paper);
  border-radius:999px; font-size:14px; font-family:inherit; color:var(--ink);
  outline:none; transition:border-color .16s, box-shadow .16s;
}
.nm-scope .nm-find input::placeholder{color:var(--muted)}
.nm-scope .nm-find input:focus{border-color:var(--clay); box-shadow:0 0 0 3px rgba(184,135,78,.16)}
.nm-scope .nm-find svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted)}
.nm-scope .nm-marks{display:flex;gap:6px;flex-wrap:wrap}
.nm-scope .nm-mark{
  padding:9px 14px; border:1px solid var(--line); background:var(--paper);
  border-radius:999px; font-size:12.5px; font-weight:500; color:var(--ink-2);
  display:inline-flex; align-items:center; gap:7px; transition:.16s;
}
.nm-scope .nm-mark:hover{border-color:var(--clay)}
.nm-scope .nm-mark.on{background:var(--bark); color:#F6ECDC; border-color:var(--bark)}
.nm-scope .nm-mark.on .nm-v{border-color:#C9E3BF}
.nm-scope .nm-mark.on .nm-v::after{background:#C9E3BF}

/* tag marks */
.nm-scope .nm-v{
  width:11px;height:11px;border:1.5px solid var(--leaf);border-radius:3px;
  display:inline-block;position:relative;flex:none;
}
.nm-scope .nm-v::after{content:"";position:absolute;inset:2px;background:var(--leaf);border-radius:50%}
.nm-scope .nm-s{color:var(--chili);font-size:12px;line-height:1}
.nm-scope .nm-st{color:var(--gold);font-size:12px;line-height:1}

/* ============================ SECTION SHELL ============================ */
.nm-scope .nm-body{max-width:1240px;margin:0 auto;padding:20px 18px 56px}
.nm-scope .nm-pane{display:none}
.nm-scope .nm-pane.on{display:block}
.nm-scope .nm-sec{display:none;animation:nmIn .26s ease both;margin-bottom:44px}
.nm-scope .nm-sec.on{display:block}
/* only matters when a search/filter shows several sections at once — gives
   the last one room to breathe above the footer instead of doubling up. */
.nm-scope .nm-sec:last-child{margin-bottom:0}
@keyframes nmIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

.nm-scope .nm-head{
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px;
  padding-bottom:14px; margin-bottom:20px;
  border-bottom:1px solid var(--line);
}
.nm-scope .nm-head h2{
  margin:0; font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:600; font-size:34px; line-height:1.1; letter-spacing:.005em; color:var(--bark);
}
.nm-scope .nm-head .nm-note{
  color:var(--muted); font-size:12.5px; text-align:right; max-width:340px; line-height:1.45;
}
@media (max-width:640px){
  .nm-scope .nm-head{flex-direction:column;align-items:flex-start;gap:5px}
  .nm-scope .nm-head h2{font-size:27px}
  .nm-scope .nm-head .nm-note{text-align:left}
}

/* ============================ LAYOUT: CARDS ============================ */
.nm-scope .nm-grid{display:grid;gap:13px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){.nm-scope .nm-grid{grid-template-columns:1fr}}
/* dense:true sections (Signature Cocktails, Signature Shots, Zero Proof) pack
   3 cards per row instead of 2. The extra class gives this higher specificity
   than the plain .nm-grid rules above, so these don't depend on file order. */
.nm-scope .nm-grid.nm-grid-dense{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.nm-scope .nm-grid.nm-grid-dense{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.nm-scope .nm-grid.nm-grid-dense{grid-template-columns:1fr}}

.nm-scope .nm-card{
  display:grid; grid-template-columns:1fr 92px; gap:15px;
  background:var(--paper); border:1px solid var(--line);
  border-radius:var(--r); padding:15px 16px;
  box-shadow:var(--sh-1); width:100%;
  transition:transform .18s, box-shadow .18s, border-color .18s;
}
.nm-scope .nm-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--clay)}
.nm-scope .nm-card-in{min-width:0;display:flex;flex-direction:column;gap:5px}
.nm-scope .nm-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}
.nm-scope .nm-name{
  font-family:"Inter",sans-serif; font-weight:500; font-size:16px;
  letter-spacing:.015em; color:var(--ink);
  display:flex; align-items:baseline; gap:7px; min-width:0; flex:1 1 auto;
}
/* The name uses up to two lines and only then trails off with an ellipsis, so
   a long dish name still reads in full wherever there is room for it. */
.nm-scope .nm-nametext{min-width:0}
.nm-scope .nm-flags{flex:none;display:inline-flex;align-items:center;gap:5px;align-self:flex-start;margin-top:3px}
.nm-scope .nm-price{font-size:15.5px;color:var(--brand);white-space:nowrap;flex:none}
.nm-scope .nm-price .nm-from{
  font-family:"Inter",sans-serif; font-weight:600;
  font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--muted); margin-right:4px; vertical-align:1px;
}
/* two full lines of description, with … only when the text really overflows */
.nm-scope .nm-desc{font-size:13.2px; color:var(--ink-2); flex:0 0 auto}
.nm-scope .nm-more{
  margin-top:auto; padding-top:7px;
  display:flex; align-items:center; gap:8px;
  font-size:11.5px; font-weight:500; letter-spacing:.05em;
  color:var(--brand-mid); text-transform:uppercase;
}
.nm-scope .nm-more svg{width:13px;height:13px;flex:none}
.nm-scope .nm-more .nm-arrow{margin-left:auto;font-size:15px;line-height:1;transition:transform .18s}
.nm-scope .nm-card:hover .nm-arrow{transform:translateX(3px)}

/* thumb */
.nm-scope .nm-thumb{
  display:block;width:92px;height:92px;border-radius:11px;flex:none;
}
.nm-scope .nm-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* a slightly smaller photo on phones frees real width for the dish name.
   These overrides must stay AFTER the base .nm-card/.nm-thumb rules above —
   with equal selector specificity, CSS gives the win to whichever rule comes
   LAST in the file, media query or not, so listing them any earlier would
   make the base rule silently override the media queries at every width. */
@media (max-width:520px){
  .nm-scope .nm-card{grid-template-columns:1fr 78px;gap:12px;padding:14px}
  .nm-scope .nm-thumb{width:78px;height:78px}
  .nm-scope .nm-name{font-size:15.2px}
}
/* very small phones (narrower than an iPhone 16 Pro's 393px) — the
   side-by-side layout leaves too little width for the name/description once
   the photo takes its share, so stack the photo above the text instead and
   let it use the full card width. .nm-thumb is second in the markup (photo
   loads after the text) but `order` moves it to the top visually. */
@media (max-width:390px){
  .nm-scope .nm-card{grid-template-columns:1fr;grid-template-rows:auto auto;gap:10px}
  .nm-scope .nm-thumb{order:-1;width:100%;height:168px}
  .nm-scope .nm-name{font-size:16px}
}

/* ============================ LAYOUT: PLAIN ============================ */
.nm-scope .nm-plain{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-1);overflow:hidden;
  columns:2; column-gap:0;
}
@media (max-width:700px){.nm-scope .nm-plain{columns:1}}
.nm-scope .nm-prow{
  break-inside:avoid; padding:13px 18px; border-bottom:1px solid var(--line-soft);
  display:grid; grid-template-columns:1fr auto; gap:6px 14px; align-items:baseline;
}
.nm-scope .nm-prow .nm-pname{
  font-family:"Inter",sans-serif;font-weight:500;font-size:14.5px;letter-spacing:.015em;
  display:flex;align-items:center;gap:7px;
}
.nm-scope .nm-prow .nm-pdesc{grid-column:1/-1;font-size:12.5px;color:var(--muted);line-height:1.45}
.nm-scope .nm-prow .nm-psizes{grid-column:1/-1;display:flex;gap:14px;flex-wrap:wrap;margin-top:1px}
.nm-scope .nm-prow .nm-psize{font-size:12.5px;color:var(--ink-2)}
.nm-scope .nm-prow .nm-psize b{font-family:"Inter",sans-serif;font-weight:500;color:var(--brand);font-variant-numeric:tabular-nums}

/* ============================ LAYOUT: POURS (bar) ============================ */
.nm-scope .nm-pours{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-1);padding:4px 0;
}
.nm-scope .nm-pour-head{
  display:grid; align-items:center;
  padding:10px 20px 9px; border-bottom:1px solid var(--line);
  font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600;
}
.nm-scope .nm-pour{
  display:grid; align-items:baseline; gap:14px;
  padding:12px 20px; border-bottom:1px solid var(--line-soft);
  position:relative;
}
.nm-scope .nm-pour:last-child{border-bottom:none}
.nm-scope .nm-pour-name{
  font-family:"Inter",sans-serif;font-weight:400;font-size:15px;letter-spacing:.02em;
  display:flex;align-items:center;gap:8px;min-width:0;
}
/* dotted leader — the classic printed-menu detail */
.nm-scope .nm-lead{
  flex:1 1 auto; min-width:16px; align-self:flex-end;
  height:0; margin:0 3px 6px;
  border-bottom:2px dotted var(--line);
}
.nm-scope .nm-pour-p{font-size:15px;color:var(--brand);text-align:right;white-space:nowrap}
.nm-scope .nm-pour-sub{grid-column:1/-1;font-size:12px;color:var(--muted);margin-top:-3px}
@media (min-width:820px){
  .nm-scope .nm-pours.nm-2col{columns:2;column-gap:0;padding:0}
  .nm-scope .nm-pours.nm-2col .nm-pour{break-inside:avoid}
}

/* ============================ LAYOUT: FEATURE (one hero item) ============================ */
.nm-scope .nm-feature{
  background:var(--paper);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--sh-2);overflow:hidden;
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
}
@media (max-width:820px){.nm-scope .nm-feature{grid-template-columns:1fr}}
.nm-scope .nm-feature-img{height:100%;min-height:300px}
@media (max-width:820px){.nm-scope .nm-feature-img{height:200px;min-height:0}}
.nm-scope .nm-feature-b{padding:28px 30px;display:flex;flex-direction:column;gap:12px}
@media (max-width:520px){.nm-scope .nm-feature-b{padding:22px 20px}}
.nm-scope .nm-feature-b h3{
  margin:0;font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:32px;line-height:1.1;color:var(--bark);
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
}
.nm-scope .nm-feature-b .nm-fdesc{font-size:14px;line-height:1.62;color:var(--ink-2)}
.nm-scope .nm-feature-h{
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);
  font-weight:600;margin-top:4px;display:flex;align-items:center;gap:10px;
}
.nm-scope .nm-feature-h::after{content:"";flex:1;height:1px;background:var(--line)}
.nm-scope .nm-feature-prices{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:0 26px;
}
.nm-scope .nm-fprice{
  display:flex;align-items:baseline;gap:8px;
  padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:14.2px;
}
.nm-scope .nm-fprice .nm-fpn{display:flex;align-items:center;gap:7px;color:var(--ink);min-width:0}
.nm-scope .nm-fprice .nm-fpp{
  font-family:"Inter",sans-serif;font-weight:500;color:var(--brand);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}

/* ============================ LAYOUT: TILES (compact, 4 across) ============================ */
.nm-scope .nm-tiles{display:grid;gap:11px;grid-template-columns:repeat(auto-fill,minmax(228px,1fr))}
/* flex-column, not block — a <button> otherwise centres its content
   vertically once the grid stretches it, knocking rows out of alignment */
.nm-scope .nm-tile{
  display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;
  width:100%;text-align:left;
  border:1px solid var(--line);border-radius:12px;padding:14px 15px;background:var(--paper);
  box-shadow:var(--sh-1);transition:transform .18s,box-shadow .18s,border-color .18s;
}
.nm-scope .nm-tile:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--clay)}
.nm-scope .nm-tile.nm-flat{cursor:default}
.nm-scope .nm-tile.nm-flat:hover{transform:none;box-shadow:var(--sh-1);border-color:var(--line)}
.nm-scope .nm-tile-top{display:flex;align-items:center;gap:11px;margin-bottom:8px}
.nm-scope .nm-tile-thumb{flex:none;width:44px;height:44px;border-radius:50%}
.nm-scope .nm-tile-thumb .nm-ph svg{width:52%;height:52%}
.nm-scope .nm-tile-hd{flex:1;min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:9px}
.nm-scope .nm-tile-d{font-size:12.6px;color:var(--muted);margin-top:auto}

/* ============================ LAYOUT: DRINKS ============================ */
.nm-scope .nm-dgrid{display:grid;gap:13px;grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.nm-scope .nm-dgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.nm-scope .nm-dgrid{grid-template-columns:1fr}}
.nm-scope .nm-drink{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-1);overflow:hidden;display:flex;flex-direction:column;
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.nm-scope .nm-drink:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--clay)}
.nm-scope .nm-drink.nm-flat{cursor:default}
.nm-scope .nm-drink.nm-flat:hover{transform:none;box-shadow:var(--sh-1);border-color:var(--line)}
.nm-scope .nm-drink-img{width:100%;height:168px}
.nm-scope .nm-drink-b{padding:13px 15px 15px;display:flex;flex-direction:column;gap:5px;flex:1}
.nm-scope .nm-drink-b .nm-row{align-items:baseline}
.nm-scope .nm-drink-b .nm-ing{font-size:12.6px;color:var(--muted)}

/* ============================ LAYOUT: FLIGHT ============================ */
.nm-scope .nm-flight{
  background:var(--paper);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--sh-2);overflow:hidden;
}
.nm-scope .nm-flight-hero{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,40%);
  background:var(--sand-2);
}
@media (max-width:760px){.nm-scope .nm-flight-hero{grid-template-columns:1fr}}
/* height is fixed by the layout; the photo simply fills it. object-position
   keeps the crop anchored to the top-centre of the source photo instead of
   the default centre crop, so the cocktails themselves stay in frame. */
.nm-scope .nm-flight-img{height:212px}
.nm-scope .nm-flight-img img{object-position:top center}
@media (max-width:760px){.nm-scope .nm-flight-img{height:158px;order:-1}}
.nm-scope .nm-flight-copy{
  padding:22px 26px;display:flex;flex-direction:column;justify-content:center;gap:7px;
  color:var(--ink);
}
.nm-scope .nm-flight-copy .nm-kick{
  font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--brand-mid);font-weight:600;
}
.nm-scope .nm-flight-copy h3{
  margin:0;font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:30px;line-height:1.06;color:var(--bark);
}
.nm-scope .nm-flight-copy p{margin:0;font-size:13.2px;line-height:1.55;color:var(--ink-2);max-width:46ch}
.nm-scope .nm-flight-price{
  display:inline-flex;align-items:baseline;gap:9px;margin-top:6px;padding-top:11px;
  border-top:2px solid var(--tab); align-self:flex-start;
}
.nm-scope .nm-flight-price b{
  font-family:"Inter",sans-serif;font-weight:500;font-size:34px;color:var(--brand);
  line-height:1;font-variant-numeric:tabular-nums;
}
.nm-scope .nm-flight-price span{font-size:12.5px;color:var(--muted);letter-spacing:.04em}
.nm-scope .nm-flight-list{padding:22px 24px 26px}
.nm-scope .nm-flight-list .nm-fl-head{
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);
  font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:10px;
}
.nm-scope .nm-flight-list .nm-fl-head::after{content:"";flex:1;height:1px;background:var(--line)}
.nm-scope .nm-fl-grid{display:grid;gap:11px;grid-template-columns:repeat(auto-fill,minmax(232px,1fr))}
.nm-scope .nm-fl-item{
  border:1px solid var(--line);border-radius:11px;padding:13px 15px;background:var(--sand);
  display:flex;flex-direction:column;gap:4px;
}
.nm-scope .nm-fl-item .nm-fl-n{
  font-family:"Inter",sans-serif;font-weight:500;font-size:14.5px;letter-spacing:.015em;
  display:flex;align-items:center;gap:7px;
}
.nm-scope .nm-fl-item .nm-fl-d{font-size:12.4px;color:var(--muted);line-height:1.48}

/* ============================ LAYOUT: MOMO ============================ */
.nm-scope .nm-momo-intro{
  font-size:14px;color:var(--ink-2);line-height:1.6;max-width:640px;margin:0 0 18px;
}
.nm-scope .nm-preps{
  display:grid;gap:10px;grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:20px;
}
@media (max-width:900px){.nm-scope .nm-preps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:480px){.nm-scope .nm-preps{grid-template-columns:repeat(2,minmax(0,1fr))}}
.nm-scope .nm-prep{
  display:block; width:100%; padding:0;
  border:1.5px solid var(--line);border-radius:13px;overflow:hidden;background:var(--paper);
  box-shadow:var(--sh-1);transition:transform .18s,border-color .18s,box-shadow .18s;
}
.nm-scope .nm-prep:hover{transform:translateY(-2px);border-color:var(--clay)}
.nm-scope .nm-prep.on{border-color:var(--brand);box-shadow:0 0 0 3px rgba(124,82,48,.14),var(--sh-2)}
.nm-scope .nm-prep-img{width:100%;aspect-ratio:1/1;min-height:88px}
.nm-scope .nm-prep-img img{transition:transform .3s}
.nm-scope .nm-prep:hover .nm-prep-img img{transform:scale(1.05)}
.nm-scope .nm-prep-l{
  display:block; padding:9px 6px 10px;text-align:center;
  font-family:"Inter",sans-serif;font-weight:500;font-size:13px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-2);transition:color .18s,background .18s;
}
.nm-scope .nm-prep.on .nm-prep-l{background:var(--brand);color:#FFF6E7}

.nm-scope .nm-momo-panel{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-1);overflow:hidden;
}
.nm-scope .nm-momo-bar{
  padding:15px 20px;border-bottom:1px solid var(--line);
  background:linear-gradient(100deg,var(--sand-2),var(--sand));
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.nm-scope .nm-momo-bar h3{
  margin:0;font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:25px;color:var(--bark);line-height:1.1;
}
.nm-scope .nm-momo-bar p{margin:0;font-size:12.8px;color:var(--muted);flex:1;min-width:180px;line-height:1.45}
.nm-scope .nm-fill{
  display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:14px;
  padding:13px 20px;border-bottom:1px solid var(--line-soft);
}
.nm-scope .nm-fill:last-child{border-bottom:none}
.nm-scope .nm-fill-n{
  font-family:"Inter",sans-serif;font-weight:400;font-size:15.5px;letter-spacing:.02em;
  display:flex;align-items:center;gap:8px;
}
.nm-scope .nm-fill-p{font-size:15.5px;color:var(--brand)}
@media (min-width:820px){
  /* a plain 2-up grid, not CSS columns — an odd number of fillings would
     otherwise leave a stray empty ruled row */
  .nm-scope .nm-fills{display:grid;grid-template-columns:1fr 1fr}
  .nm-scope .nm-fills .nm-fill:nth-child(odd){border-right:1px solid var(--line-soft)}
}
.nm-scope .nm-momo-foot{
  padding:11px 20px;background:var(--sand);border-top:1px solid var(--line);
  font-size:11.5px;color:var(--muted);letter-spacing:.02em;
}

/* ============================ PLACEHOLDER ART ============================ */
.nm-scope .nm-ph{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(120% 100% at 30% 0%, rgba(255,255,255,.28), transparent 60%),
    linear-gradient(145deg,var(--clay),var(--brand));
}
.nm-scope .nm-ph svg{position:relative;width:46%;height:46%;color:rgba(255,247,234,.94)}
.nm-scope .nm-drink-img .nm-ph svg,
.nm-scope .nm-flight-img .nm-ph svg{width:32%;height:32%}
.nm-scope .nm-modal-art .nm-ph svg{width:34%;height:34%}

/* ============================ MODAL ============================ */
/* .nm-ov (#nmOv) is a direct child of <body> at runtime (see nimto-menu.js),
   not a descendant of .nm-scope — it carries the class itself, so these two
   rules target it directly rather than via ".nm-scope .nm-ov". */
.nm-ov{
  position:fixed;inset:0;z-index:99999;padding:20px;
  background:rgba(38,24,11,.6);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .2s;
}
.nm-ov.on{opacity:1;pointer-events:auto}
.nm-scope .nm-modal{
  position:relative;
  background:var(--paper);border-radius:20px;overflow:hidden;box-shadow:var(--sh-3);
  width:100%;max-width:840px;max-height:88vh;
  display:grid;grid-template-columns:1.15fr .85fr;
  transform:translateY(10px) scale(.985);transition:transform .24s ease;
}
.nm-ov.on .nm-modal{transform:none}
/* min-height:0 is what lets this pane actually scroll inside the grid —
   without it a long price list simply overflows off-screen on a phone */
.nm-scope .nm-modal-txt{
  padding:28px 30px; order:1; min-height:0;
  overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
  display:flex; flex-direction:column; gap:13px;
}
.nm-scope .nm-modal-art{height:100%;min-height:300px;order:2}
@media (max-width:720px){
  .nm-ov{padding:12px}
  .nm-scope .nm-modal{
    grid-template-columns:1fr;
    grid-template-rows:auto minmax(0,1fr);
    max-height:92vh;
  }
  .nm-scope .nm-modal-art{order:1;min-height:0;height:26vh;max-height:26vh}
  .nm-scope .nm-modal-txt{order:2;padding:20px 20px 24px}
}
.nm-scope .nm-x{
  position:absolute;top:13px;right:13px;z-index:3;
  width:36px;height:36px;border-radius:50%;
  background:rgba(255,250,242,.94);color:var(--bark);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 10px rgba(38,24,11,.22);transition:transform .16s;
}
.nm-scope .nm-x:hover{transform:scale(1.07)}
.nm-scope .nm-modal h3{
  margin:0;font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:32px;line-height:1.12;color:var(--bark);
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
}
.nm-scope .nm-modal .nm-mprice{
  display:inline-flex;align-items:baseline;gap:7px;
  font-family:"Inter",sans-serif;font-weight:500;font-size:20px;color:var(--brand);
  font-variant-numeric:tabular-nums;
}
.nm-scope .nm-modal .nm-mdesc{font-size:14.5px;line-height:1.65;color:var(--ink-2)}
.nm-scope .nm-tagrow{display:flex;gap:8px;flex-wrap:wrap}
.nm-scope .nm-tag{
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 11px;border-radius:999px;background:var(--sand-2);
  font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:var(--ink-2);
}
.nm-scope .nm-vlist{border-top:1px solid var(--line);padding-top:15px;margin-top:2px}
.nm-scope .nm-vlist-h{
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);
  font-weight:600;margin-bottom:9px;
}
.nm-scope .nm-vrow{
  display:flex;align-items:baseline;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:14.5px;
}
.nm-scope .nm-vrow:last-child{border-bottom:none}
.nm-scope .nm-vrow .nm-vn{display:flex;align-items:center;gap:8px;color:var(--ink)}
.nm-scope .nm-vrow .nm-vp{
  font-family:"Inter",sans-serif;font-weight:500;color:var(--brand);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}

/* ============================ MISC ============================ */
.nm-scope .nm-none{
  padding:56px 20px;text-align:center;color:var(--muted);font-size:14.5px;
  background:var(--paper);border:1px dashed var(--line);border-radius:var(--r);
}
.nm-scope .nm-foot{
  max-width:1240px;margin:0 auto;padding:22px 18px 44px;
  border-top:1px solid var(--line);
  color:var(--muted);font-size:11.5px;line-height:1.75;
}
.nm-scope .nm-foot .nm-legend{
  display:flex;gap:18px;flex-wrap:wrap;margin-bottom:9px;
  color:var(--ink-2);font-size:12px;
}
.nm-scope .nm-foot .nm-legend span{display:inline-flex;align-items:center;gap:7px}

/* ============================ DARK MODE ============================ */
@media (prefers-color-scheme:dark){
  .nm-scope{
    --sand:#140D06; --sand-2:#241708; --paper:#1C1207;
    --line:#3A2916; --line-soft:#2B1D0F;
    --ink:#F6EDDF; --ink-2:#D8C5AC; --muted:#9E8A72;
    --brand:#D6A362; --brand-mid:#C8944A; --bark:#F0E2CC; --clay:#A87C48;
    --tab:#C59D5F; --tab-ink:#1A1006;
    --clamp-bg:#1C1207;
    --sh-1:0 1px 2px rgba(0,0,0,.45);
    --sh-2:0 6px 22px rgba(0,0,0,.4);
    --sh-3:0 24px 70px rgba(0,0,0,.72);
  }
  .nm-scope .nm-top{background:rgba(20,13,6,.95)}
  .nm-scope .nm-mark.on{background:#D6A362;color:#1A1006;border-color:#D6A362}
  .nm-scope .nm-prep.on .nm-prep-l{background:#D6A362;color:#1A1006}
  .nm-scope .nm-momo-bar{background:linear-gradient(100deg,#241708,#1C1207)}
  .nm-scope .nm-x{background:rgba(28,18,7,.94);color:#F6EDDF}
}
