/* Hospitality design system. One responsive implementation for all guest modes. */
:root { --accent:#214c39; }
.menu-page { --muted:#626c62; --space:20px; --brand:var(--accent); --brand-2:color-mix(in srgb,var(--accent) 80%,#000); background:var(--paper); }
.m-wrap { max-width:1120px; margin:auto; padding:0 var(--space) calc(184px + env(safe-area-inset-bottom)); }
.m-loading { min-height:100svh; display:grid; place-items:center; }
.m-hero { padding:24px 0 18px; border-bottom:1px solid var(--line-2); }
.m-id { display:flex; align-items:center; gap:12px; }
.m-logo { width:48px; height:48px; object-fit:cover; border-radius:14px; flex:none; background:var(--sand); }
.m-logo.ph { display:grid; place-items:center; background:var(--accent); color:#fff; font:600 27px var(--serif); }
.m-idtext { flex:1; min-width:0; }
.m-name { font:600 clamp(25px,3vw,36px)/1.05 var(--serif); overflow-wrap:anywhere; }
.m-sub { margin-top:6px; font-size:11px; font-weight:650; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.m-top { display:flex; gap:6px; flex:none; }
.m-top .btn { min-height:44px; padding:0 10px; border-radius:50%; background:var(--card); border:1px solid var(--line-2); color:var(--ink); }
.m-top .info-btn { width:44px; }
.m-top .btn:last-child { border-radius:24px; }
.m-cover { height:190px; background-position:center; background-size:cover; border-radius:20px; margin-bottom:18px; }
.m-place { margin-top:12px; color:var(--accent); background:color-mix(in srgb,var(--accent) 8%,var(--paper)); }
.m-demo { padding:10px 0 0; font-size:11px; color:var(--muted); }
.m-ann { margin-top:12px; padding:12px 16px; border-inline-start:3px solid var(--gold); background:#f1ecdb; border-radius:0 10px 10px 0; font-size:13px; color:var(--ink-2); }
.m-tools { position:sticky; top:0; z-index:20; padding-top:14px; background:color-mix(in srgb,var(--paper) 96%,transparent); backdrop-filter:blur(16px); }
.m-search { display:flex; gap:8px; }
.m-search label { flex:1; position:relative; }
.m-search label svg { position:absolute; top:15px; inset-inline-start:15px; width:18px; height:18px; color:var(--muted); }
.m-search input { width:100%; height:48px; padding:0 16px; padding-inline-start:44px; border:1px solid var(--line-2); border-radius:12px; background:var(--card); font-size:16px; }
.m-filter { width:48px!important; height:48px; border-radius:12px; position:relative; }
.dot,.m-nav-count { min-width:20px; height:20px; display:grid; place-items:center; border-radius:50%; background:var(--accent); color:#fff; font-size:11px; }
.dot { position:absolute; top:-4px; inset-inline-end:-3px; }
.m-cats { display:flex; gap:24px; overflow-x:auto; padding:8px 0 0; border-bottom:1px solid var(--line-2); scrollbar-width:none; }
.m-cats .chip { border:0; border-radius:0; padding:10px 0 13px; min-height:48px; background:transparent; font-size:14px; font-weight:600; text-decoration:none; color:var(--muted); border-bottom:3px solid transparent; }
.m-cats .chip.on { border-color:var(--accent); color:var(--accent); }
.m-highlights { margin-top:26px; }
.m-highlights-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:14px; }
.m-highlights-head h2,.m-sec h2 { font:600 30px/1.1 var(--serif); }
.m-highlights-head>span { color:var(--muted); font-size:12px; }
.m-highlight-track { display:grid; grid-auto-flow:column; grid-auto-columns:83%; overflow-x:auto; gap:14px; scroll-snap-type:x mandatory; scrollbar-width:none; padding-bottom:8px; }
.m-highlight { position:relative; padding:0; border:0; border-radius:18px; overflow:hidden; background:#26372b; color:white; text-align:start; cursor:pointer; scroll-snap-align:start; min-height:290px; }
.m-highlight-img { display:block; position:absolute; inset:0; }
.m-highlight-img::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,transparent 20%,rgba(10,20,12,.15) 45%,rgba(10,20,12,.9)); }
.m-highlight-img img { width:100%; height:100%; object-fit:cover; transition:transform .25s; }
.m-highlight:hover img { transform:scale(1.035); }
.m-highlight-badge { position:absolute; top:14px; inset-inline-start:14px; z-index:1; background:var(--gold-2); color:#34341c; font-size:11px; font-weight:700; padding:5px 10px; border-radius:20px; }
.m-highlight-copy { display:grid; position:relative; padding:170px 20px 20px; gap:8px; }
.m-highlight-copy strong { font:600 28px/1.08 var(--serif); }
.m-highlight-copy>span { font-size:13px; color:#e1e6de; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.m-highlight-copy b { font-weight:normal; margin-top:4px; }
.m-highlight .m-price { color:#fff; font-size:17px; }
.m-highlight .tag.ok { background:#f8f4e6; color:#214c39; }
.m-sec { margin-top:32px; scroll-margin-top:135px; }
.m-sec .hours { margin-top:7px; font-size:12px; color:var(--muted); }
.hours.closed { color:var(--warn); }
.m-list { display:grid; gap:0; margin-top:14px; }
.m-item { width:100%; min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:16px; padding:18px 0; text-align:start; cursor:pointer; background:transparent; border:0; border-bottom:1px solid var(--line-2); }
.m-txt { display:block; min-width:0; align-self:center; }
.m-item .t { display:block; font-size:16px; font-weight:650; line-height:1.35; }
.m-item .d { margin-top:6px; color:var(--muted); font-size:13px; line-height:1.55; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.m-item .meta { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:10px; }
.m-price { font-size:16px; font-weight:750; color:var(--accent); font-variant-numeric:tabular-nums; }
.m-item .meta>.m-price { width:100%; margin-bottom:3px; }
.m-item .tag { font-size:10px; padding:2px 6px; }
.m-right { display:grid; align-items:center; }
.m-thumb { width:104px; height:112px; display:block; position:relative; border-radius:14px; background:var(--sand); }
.m-thumb img { width:100%; height:100%; object-fit:cover; border-radius:inherit; }
.m-add { position:absolute; bottom:-5px; inset-inline-end:-5px; display:grid; place-items:center; width:36px; height:36px; border:3px solid var(--paper); background:var(--accent); color:white; border-radius:50%; font-size:23px; }
.m-add.solo { position:static; border:0; }
.m-item.off { opacity:.6; }
.m-item.feature { background:var(--card); border:1px solid var(--line-2); border-radius:18px; overflow:hidden; padding:0; grid-template-columns:1fr; gap:0; margin-bottom:4px; }
.m-item.feature .m-right { grid-row:1; }
.m-item.feature .m-thumb { width:100%; height:200px; border-radius:0; }
.m-item.feature .m-add { bottom:12px; inset-inline-end:12px; border-color:var(--card); }
.m-item.feature .m-txt { padding:18px; }
.m-item.feature .t { font:600 26px/1.15 var(--serif); }
.m-foot { display:grid; gap:6px; padding-top:40px; font-size:12px; color:var(--muted); text-align:center; }
.m-empty { padding:40px 12px; display:grid; justify-items:center; gap:18px; color:var(--muted); text-align:center; }
.m-empty h2 { font-size:18px; }
.m-empty-icon svg { width:42px; height:42px; color:var(--accent); }
/* Navigation and a dedicated order summary above it. */
.m-dock { position:fixed; inset-inline:0; bottom:0; z-index:40; display:grid; gap:10px; padding:8px 16px calc(8px + env(safe-area-inset-bottom)); pointer-events:none; background:linear-gradient(transparent,var(--paper) 32%); }
.m-dock-in,.m-cart-cta { width:100%; max-width:640px; margin:auto; pointer-events:auto; }
.m-dock-in { display:flex; justify-content:space-around; padding:6px; border:1px solid var(--line-2); border-radius:20px; background:var(--card); box-shadow:var(--shadow-lg); }
.m-nav-btn { flex:1; min-width:0; min-height:54px; display:grid; justify-items:center; align-content:center; gap:4px; background:transparent; border:0; border-radius:14px; color:var(--muted); font-size:11px; cursor:pointer; position:relative; }
.m-nav-btn svg { width:21px; height:21px; }
.m-nav-btn[aria-current] { color:var(--accent); background:color-mix(in srgb,var(--accent) 7%,var(--card)); }
.m-nav-count { position:absolute; top:0; inset-inline-end:22%; }
.m-cart-cta { min-height:52px; display:flex; align-items:center; gap:12px; padding:10px 16px; border:0; border-radius:14px; background:var(--accent); color:#fff; cursor:pointer; font-size:14px; }
.m-cart-cta strong { margin-inline-start:auto; font-size:16px; }
.m-cart-count { padding:3px 8px; border-radius:7px; background:#ffffff26; font-weight:700; }
/* Shared sheets. Headers, content and actions have separate scrolling roles. */
.menu-page .sheet-bg { background:#14241d70; backdrop-filter:blur(5px); }
.menu-page .sheet { display:flex; flex-direction:column; overflow:hidden; max-height:94svh; }
.menu-page .sheet-head { flex:none; padding:16px 20px; }
.menu-page .sheet-head h2 { font-size:16px; }
.menu-page .sheet-head .btn { min-width:44px; min-height:44px; }
.menu-page .sheet-body { overflow:auto; overscroll-behavior:contain; padding:20px; gap:18px; }
.menu-page .sheet-foot { position:static; flex:none; padding:14px 20px calc(14px + env(safe-area-inset-bottom)); align-items:center; }
.menu-page .sheet-foot .btn { border-radius:12px; white-space:normal; }
.m-product-sheet .sheet-body { gap:0; padding-top:0; }
.m-photo { width:calc(100% + 40px); max-width:none; margin:0 -20px 22px; aspect-ratio:4/3; object-fit:cover; background:var(--sand); flex:none; }
.m-product-name { font:600 36px/1.05 var(--serif); margin:20px 0 12px; }
.m-photo + .m-product-name { margin-top:0; }
.m-product-meta { display:grid; gap:12px; }
.m-product-meta>.m-price { font-size:22px; }
.m-product-tags { display:flex; flex-wrap:wrap; gap:6px; font-size:12px; color:var(--muted); }
.m-product-tags>span { border-radius:6px; padding:3px 7px; background:var(--sand); }
.m-product-desc { margin:14px 0 22px; line-height:1.65; font-size:15px; color:var(--ink-2); }
.m-config { padding:18px 0; border-top:1px solid var(--line-2); }
.m-config-head { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 12px; }
.m-config-title { font-size:15px; font-weight:700; }
.m-config-hint { font-size:12px; color:var(--muted); margin-inline-start:auto; }
.m-choice-grid { display:grid; gap:8px; margin-top:12px; }
.m-choice { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:48px; text-align:start; border:1px solid var(--line-2); border-radius:10px; background:var(--card); padding:12px; font-size:14px; cursor:pointer; }
.m-choice.on { color:var(--accent); border-color:var(--accent); background:color-mix(in srgb,var(--accent) 7%,var(--card)); }
.m-choice.on>span::before { content:'✓ '; }
.m-allergen-line { border-top:1px solid var(--line-2); padding-top:18px; display:grid; gap:5px; font-size:13px; color:var(--muted); }
.m-allergen-title { font-weight:700; color:var(--ink); }
.m-allergen-confirm { margin:8px 0 18px; font-size:12px; color:var(--muted); }
.m-pair { display:grid; grid-template-columns:1fr auto; text-align:start; gap:6px 12px; padding:14px; border:1px solid var(--line-2); background:var(--sand); border-radius:12px; cursor:pointer; }
.m-pair-label { grid-column:1/-1; color:var(--muted); font-size:12px; }
.m-pair .spacer { display:none; }
.m-pair strong { font-size:14px; }
.m-note { display:grid; gap:8px; margin-top:20px; font-size:13px; font-weight:600; }
.m-selected-price { font-weight:750; margin-inline-start:auto; white-space:nowrap; }
.m-qty { display:inline-flex; align-items:center; flex:none; border:1px solid var(--line-2); border-radius:12px; height:48px; }
.m-qty button { width:40px; min-height:44px; border:0; background:transparent; cursor:pointer; font-size:22px; }
.m-qty span { min-width:22px; text-align:center; font-size:14px; font-weight:700; }
.m-product-sheet .sheet-foot>.btn { gap:8px; font-size:14px; padding-inline:14px; min-height:48px; }
.m-order-hint { font-size:14px; color:var(--muted); }
.m-line { display:grid; grid-template-columns:1fr auto; align-items:center; gap:12px; padding:16px 0; border-bottom:1px solid var(--line-2); }
.m-cart-sheet .m-line { grid-template-columns:56px minmax(0,1fr) auto; }
.m-cart-photo,.m-cart-placeholder { width:56px; height:64px; border-radius:10px; object-fit:cover; background:var(--sand); }
.m-cart-placeholder { display:grid; place-items:center; color:var(--muted); }
.m-line .nm { font-size:14px; font-weight:650; }
.m-line .nt { font-size:12px; color:var(--muted); margin-top:4px; }
.m-cart-sheet .m-qty button { width:30px; }
.m-cart-sheet .m-qty { border-radius:24px; }
.m-total { display:flex; justify-content:space-between; align-items:center; padding:12px 0; font-size:20px; font-weight:750; }
.m-num { font:600 64px var(--serif); color:var(--accent); }
.m-steps { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.m-steps>div { height:5px; background:var(--sand); border-radius:8px; }
.m-steps .on { background:var(--accent); }
.m-review { display:grid; gap:12px; }
.m-chat { display:grid; gap:12px; }
.m-msg { max-width:92%; padding:12px 16px; border-radius:16px; white-space:pre-line; line-height:1.6; font-size:14px; }
.m-msg.bot { background:var(--sand); border-start-start-radius:4px; }
.m-msg.me { justify-self:end; background:var(--accent); color:#fff; border-end-end-radius:4px; }
.m-msg .recs,.m-sugs,.m-alg { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.m-alg .chip,.m-sugs .chip { min-height:44px; white-space:normal; }
.m-chat-input { display:flex; gap:8px; }
.m-chat-input .input { min-width:0; }
.m-chat-input .btn { flex:none; }
.m-ai-badge { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--accent); }
.m-warn { font-size:13px; color:var(--ink-2); }
.m-opt { min-height:52px; width:100%; display:flex; justify-content:space-between; padding:14px 4px; border:0; border-bottom:1px solid var(--line-2); background:transparent; text-align:start; cursor:pointer; }
.m-opt[aria-current='true'] { color:var(--accent); font-weight:700; }
.m-info dt { font-size:12px; color:var(--muted); }
.m-info dd { margin:4px 0 20px; font-size:15px; }
.presentation-essential .m-highlights { display:none; }
@media(min-width:720px) {
  .menu-page { --space:32px; }
  .m-hero { padding-top:32px; }
  .m-cover { height:260px; }
  .m-highlight-track { grid-auto-columns:calc((100% - 28px)/3); }
  .m-highlight { min-height:320px; }
  .m-highlight-copy { padding-top:190px; }
  .m-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 32px; }
  .m-item.feature { grid-row:span 2; margin-bottom:12px; }
  .m-item.feature .m-thumb { height:220px; }
  .m-sec { margin-top:42px; }
  .menu-page .sheet { max-height:90svh; }
  .m-product-sheet { max-width:620px; }
}
@media(min-width:1100px) { .m-highlight-track { grid-auto-columns:calc((100% - 28px)/3); } .m-search { max-width:560px; } }
@media(max-width:359px) {
  .menu-page { --space:14px; }
  .m-id { gap:8px; flex-wrap:wrap; }
  .m-logo { width:40px; height:40px; }
  .m-name { font-size:23px; }
  .m-top { gap:4px; }
  .m-top .btn { padding:0 8px; }
  .m-top .info-btn { width:36px; }
  .m-thumb { width:86px; height:98px; }
  .m-cart-sheet .m-line { grid-template-columns:44px minmax(0,1fr); }
  .m-cart-photo,.m-cart-placeholder { width:44px; height:52px; }
  .m-cart-sheet .m-qty { grid-column:2; justify-self:start; }
  .m-product-sheet .sheet-foot { padding-inline:12px; gap:8px; }
  .m-product-sheet .m-qty button { width:32px; }
  .m-product-sheet .sheet-foot>.btn { padding-inline:10px; font-size:13px; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation:none!important; transition:none!important; } }
.menu-page .toast-wrap { top:calc(16px + env(safe-area-inset-top)); bottom:auto; }
