@charset "UTF-8";
:root { font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",sans-serif; color:#231f1d; background:#fbf9f5; font-synthesis:none; --ember:#e64a19; --ember-deep:#d83a12; --blue:#e64a19; --line:#ede6dc; }
* { box-sizing:border-box; }
html,body { margin:0; width:100%; height:100%; overflow:hidden; }
button,input { font:inherit; }
button { border:0; cursor:pointer; color:inherit; background:none; min-width:44px; min-height:44px; touch-action:pan-x pan-y; transition:background-color .12s,color .12s; -webkit-tap-highlight-color:transparent; }
button:disabled { opacity:.45; cursor:default; }
button:focus-visible,input:focus-visible,[tabindex]:focus-visible { outline:3px solid #94b8f0; outline-offset:2px; }
input { font-size:16px; min-width:0; }
h1,h2,h3,p { margin:0; }
[hidden] { display:none!important; }
.customer-app { display:flex; flex-direction:column; height:100vh; height:100dvh; max-width:1280px; margin:auto; background:#fff; overflow:hidden; }
.customer-header { flex:none; padding:16px 22px 14px; border-bottom:1px solid var(--line); background:#fff; }
.customer-brand-row,.customer-title-row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.customer-brand-row { color:#617691; font-size:12px; margin-bottom:10px; }
#customer-store { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.customer-connection { flex:none; display:flex; align-items:center; gap:5px; font-size:11px; }
.customer-connection::before { content:""; width:6px; height:6px; border-radius:50%; background:#a7b3c3; }
.customer-connection.online::before { background:#4c9a74; }
.customer-connection.offline { color:#9b6941; }
.customer-connection.offline::before { background:#ca925f; }
.customer-title-row > div { min-width:0; }
h1 { font-size:25px; line-height:1.35; color:#231f1d; overflow-wrap:anywhere; }
#customer-status { font-size:12px; line-height:1.55; color:#786f68; margin-top:5px; }
.quiet-button { font-size:12px; padding:8px 10px; border-radius:9px; color:#c2410c; background:#fdf2ec; white-space:nowrap; }
#customer-clear-mine { margin-right:4px; }
@media(max-width:650px) { .drawer-head h2 { font-size:14px; } .drawer-head .quiet-button { padding:7px 6px; font-size:11px; } }
.quiet-button:hover { background:#fce7db; }
#customer-ordered-count:not(:empty) { margin-left:4px; }
.customer-notice,.customer-result { flex:none; display:flex; align-items:center; justify-content:space-between; gap:12px; margin:10px 16px 0; padding:12px 14px; border:1px solid #efd6b0; border-radius:12px; background:#fff6e8; color:#89602f; max-height:27dvh; overflow:auto; }
.customer-notice strong,.customer-result strong { display:block; font-size:13px; line-height:1.55; }
.customer-notice p,.customer-result p { margin-top:3px; font-size:12px; line-height:1.65; }
#customer-notice-actions { flex:none; display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px; }
.customer-notice button { padding:8px 10px; border-radius:8px; font-size:12px; background:#ffedd0; color:#83582a; }
.customer-notice:is(.needs-opening,.visit-ended) { display:grid; grid-template-columns:56px minmax(0,1fr) auto; gap:16px; min-height:132px; max-height:none; padding:22px; margin:14px 16px; border-color:#edcf9a; border-radius:16px; background:#fff5e3; }
.opening-symbol { display:grid; place-items:center; width:56px; height:56px; border-radius:17px; color:#af7729; background:#ffe6b9; }
.opening-symbol svg { width:31px; height:31px; }
:is(.needs-opening,.visit-ended) .customer-notice-copy { min-width:0; }
.customer-notice:is(.needs-opening,.visit-ended) strong { font-size:26px; line-height:1.3; color:#83551d; }
.customer-notice:is(.needs-opening,.visit-ended) p { margin-top:7px; font-size:14px; line-height:1.6; color:#947044; }
:is(.needs-opening,.visit-ended) #customer-notice-actions { grid-column:3; margin:0; }
:is(.needs-opening,.visit-ended) button { background:#fff; border:1px solid #e7c48c; padding:10px 14px; min-height:44px; }
.customer-notice.visit-ended { background:#eff5fc; border-color:#cdddef; }
.customer-notice.visit-ended strong { color:#3d5d83; }
.customer-notice.visit-ended p { color:#617894; }
.visit-ended .opening-symbol { color:#547aa7; background:#dce9f8; }
.visit-ended button { color:#456b97; border-color:#c4d6ec; }
.customer-result { background:#edf7f1; border-color:#cfe7d8; color:#397453; }
.customer-opening-package { flex:none; margin:9px 16px 0; padding:11px 13px; border:1px solid #ecdac5; border-radius:12px; background:#fffaf3; max-height:30dvh; overflow:auto; }
.opening-package-heading { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:3px 10px; }
.opening-package-heading h2 { min-width:0; color:#67482e; font-size:14px; line-height:1.45; overflow-wrap:anywhere; }
.opening-package-heading > strong { color:#b24925; font-size:14px; line-height:1.5; font-variant-numeric:tabular-nums; white-space:nowrap; }
.customer-opening-package p { margin-top:4px; font-size:11px; line-height:1.6; color:#826c58; overflow-wrap:anywhere; }
.customer-opening-package .opening-package-charge { color:#7a4f28; font-weight:600; }
.opening-package-tags { display:flex; flex-wrap:wrap; gap:4px 6px; margin-top:6px; }
.opening-package-tags span { padding:2px 6px; border-radius:5px; background:#f1f5e8; color:#5d743e; font-size:10px; line-height:1.5; }
.customer-opening-package .opening-package-refills,.history-opening-package .opening-package-refills { color:#547b43; }
.opening-package-details { margin-top:3px; color:#8a684b; font-size:11px; line-height:1.6; }
.opening-package-details > summary { min-height:32px; display:list-item; padding:7px 0 3px; cursor:pointer; }
.opening-package-details > summary:focus-visible { outline:3px solid #94b8f0; outline-offset:2px; }
.opening-package-part { margin-top:7px; padding-top:7px; border-top:1px solid #ecdfd1; }
.customer-app.history-open .customer-opening-package { display:none; }
@media(max-width:650px) { .customer-opening-package { margin:7px 10px 0; padding:9px 11px; } }
.customer-main { position:relative; display:flex; flex:1; min-height:0; min-width:0; overflow:hidden; }
.menu-layout { display:grid; grid-template-columns:108px minmax(0,1fr); width:100%; min-height:0; min-width:0; }
.customer-categories { display:flex; flex-direction:column; gap:5px; padding:12px 7px; min-height:0; overflow:auto; background:#f8f6f1; border-right:1px solid var(--line); }
.customer-categories button { flex:none; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; width:100%; min-height:58px; padding:9px 5px; border-radius:10px; font-size:13px; line-height:1.5; color:#6b635b; overflow-wrap:anywhere; }
.customer-categories button small { font-size:11px; color:#8c8278; }
.customer-categories button[aria-pressed=true] { color:#d83a12; font-weight:700; background:#fff; box-shadow:0 2px 8px rgba(0,0,0,.06); border-left:3.5px solid #e64a19; }
.customer-catalog { display:flex; flex-direction:column; min-height:0; min-width:0; padding:14px 20px 0; }
.customer-search { flex:none; display:flex; align-items:center; gap:8px; min-height:46px; border:1px solid #eedfd7; border-radius:12px; padding:0 10px; background:#fffcf9; }
.customer-search > span { font-size:28px; color:#9c857b; line-height:1; }
.customer-search input { flex:1; width:100%; border:0; outline:none; padding:10px 0; background:transparent; color:#231f1d; }
.customer-search input::-webkit-search-cancel-button { display:none; }
.customer-search button { flex:none; font-size:23px; color:#9c857b; }
.customer-catalog-head { flex:none; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:13px 0 9px; }
.customer-catalog-head h2 { font-size:14px; font-weight:700; color:#231f1d; }
.customer-catalog-head > span { font-size:12px; color:#786f68; }
.customer-menu { flex:1; min-height:0; overflow:auto; padding:0 5px 20px 0; scrollbar-gutter:stable; }
.customer-catalog-head[hidden] + .customer-menu { margin-top:8px; }
.customer-categories,.customer-menu,.drawer-scroll { -webkit-overflow-scrolling:touch; touch-action:pan-y; overscroll-behavior-y:contain; scrollbar-width:thin; scrollbar-color:#dcd4c8 transparent; }
.menu-section { padding-bottom:8px; }
.menu-section:last-child { min-height:100%; }
.menu-subsection { position:relative; padding-bottom:8px; }
.menu-section-grouped:last-child > .menu-subsection:last-child { min-height:var(--menu-viewport-height,400px); }
.category-group { flex:none; min-width:0; }
.category-subnav { padding:2px 0 3px 7px; }
.customer-categories .category-subbutton { min-height:30px; padding:4px 3px; margin:0; border-radius:5px; font-size:11px; line-height:1.4; color:#8a786d; }
.customer-categories .category-subbutton[aria-pressed=true] { color:#c83910; background:#fff0e7; border-left:2px solid #e64a19; box-shadow:none; }
.customer-categories .category-parent[aria-expanded=true] small { color:#b46e4c; }

/* 分类标题只在菜单内吸顶，到下一分类时由下一标题自然推走。 */
.menu-section > header,.menu-subsection > header { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; gap:8px; border-left:3.5px solid #e64a19; border-radius:7px; padding:8px 10px; background:#fff8f4; box-shadow:0 2px 0 #fff; }
.menu-section > header h3,.menu-subsection > header h3 { font-size:13px; line-height:1.5; color:#8c2e0b; font-weight:700; }
.menu-section > header span,.menu-subsection > header span { font-size:11px; color:#9c7060; white-space:nowrap; }
.menu-section.menu-section-grouped > header { z-index:3; }
.menu-section.menu-section-grouped > header h3 { font-size:14px; }
.menu-section-grouped .menu-subsection > header { top:var(--category-heading-height,36px); padding:5px 8px; border-left:0; border-bottom:1px solid #f1e7df; border-radius:0; background:#fff; box-shadow:none; }
.menu-section-grouped .menu-subsection > header h3 { font-size:11px; color:#92715e; }
.menu-section-grouped .menu-subsection > header span { font-size:10px; color:#ab9587; }
/* 图在左侧跨三行；价格跟随菜名，加减与详情/余量并列。 */
.customer-dish { display:grid; grid-template-columns:104px minmax(0,1fr); column-gap:13px; row-gap:4px; align-items:start; padding:14px 0; border-bottom:1px solid #edf1f6; }
.customer-dish:last-child { border-bottom:0; }
.dish-photo { display:grid; place-items:center; flex:none; width:70px; height:70px; border-radius:11px; object-fit:cover; background:#eef3fa; color:#9aaecb; font-size:24px; }
.dish-info { display:contents; }
.dish-photo-button { position:relative; grid-column:1; grid-row:1 / 4; align-self:stretch; min-width:0; min-height:100px; padding:0; border-radius:11px; overflow:hidden; }
.dish-photo-button .dish-photo { position:absolute; inset:0; width:100%; height:100%; border-radius:inherit; }
.dish-heading { grid-column:2; grid-row:1; display:flex; align-items:flex-start; justify-content:space-between; gap:8px; min-width:0; }
.dish-name { display:block; font-size:16px; font-weight:600; line-height:1.5; overflow-wrap:anywhere; }
.dish-summary-button { flex:1; display:block; min-width:0; min-height:24px; padding:0; text-align:left; border-radius:5px; }
.dish-info > .dish-spec { grid-column:2; grid-row:2; min-height:18px; margin:0; }
.dish-spec { font-size:12px; line-height:1.5; color:#627995; overflow-wrap:anywhere; }
.dish-actions { grid-column:2; grid-row:3; align-self:end; display:flex; align-items:center; justify-content:space-between; gap:6px; min-width:0; min-height:44px; }
.dish-meta { flex:1; min-width:0; }
.dish-detail-hint { display:block; min-width:0; min-height:24px; padding:0; text-align:left; color:#5f7da5; font-size:11px; line-height:1.5; }
.dish-meta .dish-stock { margin:0; }
.dish-info > .dish-shared-selection { grid-column:2; grid-row:4; margin-top:3px; }
.dish-price { flex:none; font-size:18px; font-weight:700; line-height:1.5; color:#d83a12; white-space:nowrap; }
.dish-quantity,.cart-quantity { display:flex; align-items:center; gap:7px; flex:none; }
.dish-quantity button,.cart-quantity button { display:grid; place-items:center; width:44px; height:44px; border-radius:50%; font-size:24px; font-weight:700; }
.dish-quantity button[data-action=add],.cart-quantity button[data-action=add] { background:linear-gradient(135deg, #e64a19 0%, #d83a12 100%); color:#fff; box-shadow:0 3px 8px rgba(230,74,25,.3); }
.dish-quantity button[data-action=add]:active,.cart-quantity button[data-action=add]:active { transform:scale(0.95); }
.dish-quantity button[data-action=minus],.cart-quantity button[data-action=minus] { background:#fff; border:1.5px solid #fed7aa; color:#c2410c; }
.dish-quantity output,.cart-quantity output { min-width:17px; font-size:14px; text-align:center; color:#231f1d; font-weight:700; font-variant-numeric:tabular-nums; }
.dish-sold { font-size:12px; color:#947052; padding:10px 3px; }
.customer-dish.sold-out .dish-photo { opacity:.6; filter:saturate(.3); }
.customer-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; padding:45px 12px; text-align:center; color:#786f68; font-size:14px; line-height:1.8; }
.customer-footer { position:relative; z-index:4; display:flex; align-items:center; gap:12px; flex:none; padding:12px 20px max(12px,env(safe-area-inset-bottom)); background:#fff; border-top:1px solid var(--line); }
.customer-app.history-open .customer-footer { display:none; }
.customer-cart-toggle { display:flex; flex:1; align-items:center; gap:10px; min-width:0; padding:0; text-align:left; }
.basket-symbol { display:grid; place-items:center; flex:none; width:48px; height:48px; border-radius:15px; color:#fff; background:linear-gradient(135deg, #e64a19 0%, #c4320e 100%); box-shadow:0 4px 12px rgba(230,74,25,.36); }
.basket-symbol svg { width:28px; height:28px; }
.customer-cart-toggle > span:nth-child(2) { min-width:0; }
.customer-cart-toggle strong { display:block; font-size:24px; font-weight:800; color:#d83a12; line-height:1.3; white-space:nowrap; }
.customer-cart-toggle small { display:block; font-size:12px; margin-top:3px; color:#786f68; white-space:nowrap; }
.cart-arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex: none;
  color: #c2410c;
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  transform-origin: center center;
}
.cart-arrow-icon {
  width: 16px;
  height: 16px;
  display: block;
}
.customer-cart-toggle[aria-expanded="true"] .cart-arrow {
  transform: rotate(180deg);
}
.primary-button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:46px; padding:12px 18px; border-radius:12px; background:linear-gradient(135deg, #e64a19 0%, #d83a12 100%); color:#fff; font-size:14px; font-weight:700; letter-spacing:0.3px; box-shadow:0 4px 14px rgba(216,59,18,.32); transition:transform .12s, box-shadow .12s; }
.primary-button:hover:not(:disabled) { background:linear-gradient(135deg, #f05423 0%, #c9300a 100%); box-shadow:0 6px 18px rgba(216,59,18,.42); }
.primary-button:active:not(:disabled) { transform:scale(0.98); box-shadow:0 2px 6px rgba(216,59,18,.25); }
.customer-submit { flex:none; white-space:nowrap; }
.drawer-scrim { position:absolute; z-index:5; inset:0; width:100%; height:100%; background:#20395538; padding:0; }
.customer-drawer {
  position: absolute;
  z-index: 6;
  display: flex;
  flex-direction: column;
  bottom: 0;
  right: 0;
  width: min(510px, 100%);
  height: min(720px, 96%);
  border: 1px solid #ede6dc;
  border-bottom: 0;
  border-radius: 20px 20px 0 0;
  background: #ffffff;
  box-shadow: 0 -8px 32px rgba(40, 20, 10, 0.18);
  overflow: hidden;
  will-change: transform;
}
.customer-drawer:not([hidden]) {
  animation: drawerSlideUp 0.26s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes drawerSlideUp {
  0% { transform: translateY(100%); }
  100% { transform: translateY(0); }
}
.drawer-drag-pill {
  width: 40px;
  height: 4.5px;
  border-radius: 999px;
  background: #dcd4c8;
  margin: 10px auto 4px;
  flex: none;
  cursor: grab;
  touch-action: none;
  transition: background 0.15s ease, transform 0.15s ease;
}
.drawer-drag-pill:hover {
  background: #b8aba0;
  transform: scaleY(1.2);
}
.drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex: none;
  padding: 8px 16px 12px;
  border-bottom: 1px solid var(--line);
  background: #fffcf9;
  user-select: none;
  cursor: grab;
  touch-action: pan-x;
}
.drawer-head:active {
  cursor: grabbing;
}
.drawer-head h2 {
  font-size: 16px;
  font-weight: 700;
  color: #231f1d;
}
.drawer-head > div {
  display: flex;
  align-items: center;
  gap: 6px;
}
.drawer-head .quiet-button {
  background: #fbf5ee;
  border: 1px solid #ede0d0;
  color: #8c6e5a;
  border-radius: 8px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 600;
  min-height: 36px;
}
.drawer-head .quiet-button:hover {
  background: #f5ece0;
  color: #5d3d2a;
}
.drawer-close-button {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  padding: 0;
  border-radius: 50%;
  background: #f4eee6;
  border: 1px solid #ebdcd0;
  color: #786f68;
  transition: all 0.15s ease;
  cursor: pointer;
}
.drawer-close-button:hover {
  background: #ebe0d4;
  color: #231f1d;
  transform: scale(1.05);
}
.drawer-close-button:active {
  transform: scale(0.95);
}
.drawer-close-icon {
  width: 18px;
  height: 18px;
  display: block;
}
.icon-button { display:grid; place-items:center; min-width:44px; min-height:44px; border-radius:50%; font-size:23px; color:#647c9a; }
.icon-button:hover { background:#e9f0fa; }
.drawer-scroll { flex:1; min-height:0; overflow:auto; padding:0 16px; }
.drawer-foot { flex:none; padding:10px 16px; border-top:1px solid var(--line); font-size:11px; line-height:1.6; color:#6e819b; background:#f9fbfe; }
.customer-checkout-call { flex:none; padding:13px 16px; border-top:1px solid var(--line); background:#fff; }
.customer-checkout-call .primary-button { width:100%; min-height:48px; white-space:normal; line-height:1.5; }
.customer-checkout-call p { margin-top:8px; color:#6d8098; font-size:12px; line-height:1.6; text-align:center; overflow-wrap:anywhere; }
.customer-app.history-open .customer-checkout-call { padding-bottom:max(13px,env(safe-area-inset-bottom)); }
.customer-history-total-card { margin-bottom:12px; padding:12px 14px; border:1px solid #f5e0ce; border-radius:13px; background:linear-gradient(120deg,#fff7ee,#fffaf5); }
.history-total-line { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:4px 12px; }
.history-total-line > span { color:#645249; font-size:14px; font-weight:600; }
#customer-history-total { color:var(--ember-deep); font-size:26px; font-weight:800; line-height:1.25; letter-spacing:-.4px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.customer-checkout-call #customer-history-total-note { margin-top:5px; color:#927b6c; font-size:11px; line-height:1.55; text-align:left; }
.customer-cart-row,.customer-history-row { padding:12px 0; border-bottom:1px solid #e6ecf4; }
.cart-row-head { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.cart-row-head h3 { min-width:0; font-size:14px; line-height:1.55; overflow-wrap:anywhere; }
.cart-price-line { display:flex; justify-content:space-between; align-items:baseline; gap:8px; flex-wrap:wrap; margin-top:5px; }
.cart-unit { font-size:12px; line-height:1.6; color:#6a7f9a; overflow-wrap:anywhere; }
.cart-subtotal { font-size:14px; font-weight:600; white-space:nowrap; }
.cart-row-actions { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-top:5px; }
.cart-row-actions button { padding:7px 8px; font-size:12px; color:#4e71a0; border-radius:8px; }
.cart-row-actions button[data-action=remove] { color:#8d626f; }
.cart-note-summary { padding:6px 8px; border-radius:7px; background:#eef4fe; margin-top:5px; color:#4a6b95; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.cart-note-editor { padding-top:5px; }
.cart-tags { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:7px; }
.cart-tags button { padding:8px 10px; border:1px solid #d1dfef; border-radius:8px; color:#5d789b; font-size:12px; }
.cart-tags button[aria-pressed=true] { color:#3265a7; background:#e8f0fe; border-color:#9fbee9; }
.cart-note-editor input { display:block; width:100%; min-height:44px; padding:10px; border:1px solid #d6e1ef; border-radius:9px; color:#385576; }
.cart-item-issue,.customer-review { padding:9px 11px; border-radius:9px; background:#fff5e5; color:#8c622d; font-size:12px; line-height:1.65; margin-top:7px; overflow-wrap:anywhere; }
.customer-review { margin:12px 0; }
.customer-review strong { font-size:13px; }
.customer-review p { margin-top:4px; }
.customer-review button { margin-top:8px; font-size:12px; min-height:44px; }
.history-summary { padding:14px 0 10px; font-size:12px; line-height:1.65; color:#697e99; }
.customer-history-row h3 { font-size:14px; line-height:1.6; }
.customer-history-row p { font-size:12px; margin-top:5px; color:#6d8098; line-height:1.6; overflow-wrap:anywhere; }
.history-price-line { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:4px 12px; margin-top:7px; font-size:12px; line-height:1.6; color:#786f68; }
.history-price-line strong { color:#604a3f; font-size:14px; font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.history-statuses { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.history-statuses span { font-size:11px; padding:5px 7px; border-radius:6px; background:#edf3fd; color:#5e7fac; }
.history-statuses .ready { color:#397652; background:#ebf6ef; }
.history-statuses .preparing { color:#986f35; background:#fff3dc; }
.history-statuses .returned { color:#985b6a; background:#f8edf0; }
.customer-history-package { margin:7px 0 16px; padding:14px; border:1px solid #e9d8c6; border-radius:15px; background:#fffaf3; }
.history-package-heading { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:8px 14px; padding-bottom:11px; border-bottom:1px solid #ecdfd1; }
.history-package-heading > div { min-width:0; flex:1 1 150px; }
.history-package-heading h3 { font-size:16px; line-height:1.5; color:#67482e; overflow-wrap:anywhere; }
.history-package-heading p,.history-package-note { margin-top:5px; font-size:11px; line-height:1.65; color:#8b7968; }
.history-package-price { padding-top:3px; font-size:14px; line-height:1.5; color:#ae4c28; white-space:nowrap; font-variant-numeric:tabular-nums; }
.history-item-heading { display:flex; align-items:baseline; justify-content:space-between; gap:7px 12px; }
.history-item-heading h3 { min-width:0; overflow-wrap:anywhere; }
.history-package-included { flex:none; font-size:11px; line-height:1.5; color:#917344; }
.customer-history-package .customer-history-row { border-bottom-color:#ecdfd1; }
.history-addons-title { margin:19px 0 2px; font-size:13px; font-weight:700; color:#6a5748; }
.customer-history-package.is-voided { background:#f8f7f5; border-color:#e3dfdb; }
.history-package-voided { margin-top:10px; font-size:12px; color:#985b6a; }
.customer-toast { position:fixed; z-index:30; left:50%; bottom:105px; transform:translateX(-50%); max-width:calc(100vw - 32px); padding:11px 16px; border-radius:12px; background:#273e5eec; color:#fff; box-shadow:0 3px 16px #263d5718; font-size:13px; line-height:1.6; text-align:center; pointer-events:none; }
@media(max-width:650px) {
  .customer-header { padding:12px 14px 11px; }
  .customer-brand-row { font-size:11px; margin-bottom:7px; }
  h1 { font-size:22px; }
  #customer-status { font-size:11px; }
  .customer-title-row { gap:6px; }
  .customer-title-row .quiet-button { padding:7px; font-size:11px; }
  .customer-notice,.customer-result { margin:8px 10px 0; padding:9px 11px; gap:7px; }
  .customer-notice { flex-wrap:wrap; }
  #customer-notice-actions { margin-left:auto; }
  .menu-layout { grid-template-columns:68px minmax(0,1fr); }
  .customer-categories { padding:9px 4px; gap:4px; }
  .customer-categories button { font-size:12px; min-height:55px; padding:8px 3px; }
  .customer-categories button small { font-size:10px; }
  .customer-catalog { padding:10px 10px 0; }
  .customer-search { padding:0 8px; gap:5px; }
  .customer-catalog-head { padding:11px 0 8px; }
  .customer-catalog-head h2 { font-size:13px; }
  .customer-catalog-head > span { font-size:11px; }
  .customer-menu { padding-right:0; scrollbar-gutter:auto; }
  .menu-section > header,.menu-subsection > header { padding:7px 8px; }
  .menu-section > header h3,.menu-subsection > header h3 { font-size:12px; }
  .customer-dish { grid-template-columns:84px minmax(0,1fr); column-gap:9px; row-gap:3px; padding:12px 0; }
  .dish-photo { width:52px; height:52px; border-radius:9px; font-size:20px; }
  .dish-name { font-size:14px; }
  .dish-spec,.dish-description { font-size:11px; }
  .dish-price { font-size:16px; }
  .dish-quantity { gap:5px; }
  .dish-quantity output { min-width:14px; }
  .customer-footer { gap:8px; padding:10px 12px max(10px,env(safe-area-inset-bottom)); }
  .customer-cart-toggle { gap:7px; }
  .basket-symbol { width:44px; height:44px; border-radius:14px; }
  .basket-symbol svg { width:26px; height:26px; }
  .customer-cart-toggle strong { font-size:21px; }
  .customer-cart-toggle small { font-size:11px; }
  .customer-submit { padding:12px; font-size:13px; }
  .customer-drawer { width:100%; height:min(590px,96%); }
  .customer-notice:is(.needs-opening,.visit-ended) { grid-template-columns:48px minmax(0,1fr); gap:12px; min-height:158px; margin:10px; padding:18px 16px; }
  .opening-symbol { width:48px; height:48px; border-radius:15px; }
  .opening-symbol svg { width:28px; height:28px; }
  .customer-notice:is(.needs-opening,.visit-ended) strong { font-size:24px; }
  .customer-notice:is(.needs-opening,.visit-ended) p { font-size:13px; margin-top:5px; }
  :is(.needs-opening,.visit-ended) #customer-notice-actions { grid-column:2; justify-content:flex-start; }
}
@media(max-width:350px) {
  .menu-layout { grid-template-columns:60px minmax(0,1fr); }
  .customer-categories button { font-size:11px; }
  .customer-catalog { padding-left:8px; padding-right:8px; }
  .dish-photo { width:46px; height:46px; }
  .customer-dish { grid-template-columns:64px minmax(0,1fr); column-gap:7px; }
  .dish-heading { gap:5px; }
  .dish-quantity { gap:2px; }
  .dish-price { font-size:14px; }
  .cart-arrow { display:none; }
  .basket-symbol { width:40px; height:40px; border-radius:12px; }
  .basket-symbol svg { width:25px; height:25px; }
  .customer-submit { padding:11px 9px; font-size:12px; }
  .customer-cart-toggle strong { font-size:19px; }
}
@media(max-height:500px) {
  .customer-header { padding-top:7px; padding-bottom:7px; }
  .customer-brand-row { margin-bottom:3px; }
  h1 { font-size:19px; }
  .customer-catalog { padding-top:7px; }
  .customer-catalog-head { padding-top:7px; padding-bottom:5px; }
  .customer-footer { padding-top:7px; padding-bottom:7px; }
  .customer-drawer { height:100%; }
  .drawer-head { padding-top:5px; padding-bottom:5px; }
  .drawer-foot { padding-top:6px; padding-bottom:6px; }
}
/* 手机横屏为菜单保留滚动高度，桌号、下单结果和提交入口仍可见。 */
@media(max-height:400px) {
  .customer-header { padding:5px 12px; }
  .customer-brand-row { display:none; }
  h1 { font-size:18px; line-height:1.25; }
  #customer-status { margin-top:2px; font-size:11px; line-height:1.35; }
  .customer-title-row { min-height:44px; }
  .customer-result { margin:5px 8px 0; padding:3px 8px; gap:6px; }
  .customer-result > div { display:flex; align-items:center; gap:9px; min-width:0; }
  .customer-result strong { flex:none; font-size:12px; white-space:nowrap; }
  .customer-result p { min-width:0; margin-top:0; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .customer-notice { margin:5px 8px 0; padding:4px 8px; max-height:66px; }
  .customer-notice strong { font-size:12px; }
  .customer-notice p { margin-top:1px; font-size:11px; line-height:1.4; }
  .customer-catalog { padding-top:7px; }
  .customer-catalog-head { display:none; }
  .customer-search { min-height:44px; }
  .customer-search input { padding-top:8px; padding-bottom:8px; }
  .menu-section { padding-top:0; }
  .customer-footer { padding-top:6px; padding-bottom:6px; }
  .customer-notice:is(.needs-opening,.visit-ended) { grid-template-columns:38px minmax(0,1fr) auto; gap:10px; min-height:78px; margin:5px 8px; padding:9px 12px; }
  :is(.needs-opening,.visit-ended) .opening-symbol { width:38px; height:38px; border-radius:12px; }
  :is(.needs-opening,.visit-ended) .opening-symbol svg { width:25px; height:25px; }
  .customer-notice:is(.needs-opening,.visit-ended) strong { font-size:20px; }
  .customer-notice:is(.needs-opening,.visit-ended) p { font-size:12px; line-height:1.4; margin-top:3px; }
  :is(.needs-opening,.visit-ended) #customer-notice-actions { grid-column:3; grid-row:1; }
  :is(.needs-opening,.visit-ended) button { padding:8px 10px; font-size:11px; }
}
@media(prefers-reduced-motion:reduce) { button { transition:none; } }

/* 同桌一起选菜：顾客身份、修改者和服务状态就地显示。 */
.customer-identity { flex:none; padding:4px 7px; border-radius:7px; background:#eaf2ff; color:#386ba9; font-size:11px; font-weight:600; white-space:nowrap; }
.customer-header-actions { display:flex; flex:none; align-items:center; gap:6px; }
.header-action-icon { display:none; }
#customer-status.shared-activity { color:#3567a2; font-weight:500; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.dish-stock { margin-top:4px; color:#5e7d63; font-size:11px; line-height:1.5; }
.sold-out .dish-stock { color:#9a6e52; }
.dish-shared-selection { margin-top:7px; padding:6px 8px; border:1px solid #d8e6fb; border-radius:8px; background:#edf4ff; color:#315f99; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.cart-selected-by { margin:7px 0 0; padding:7px 9px; border:1px solid #d5e4fa; border-radius:8px; background:#edf4ff; font-size:12px; line-height:1.65; color:#315f99; overflow-wrap:anywhere; }
.cart-shared-note-help { margin:5px 0 9px; font-size:12px; line-height:1.6; color:#627b99; }
.cart-note-conflict { margin-top:8px; padding:8px 10px; border-radius:8px; font-size:12px; line-height:1.6; background:#fff3df; color:#90642e; }
.cart-note-controls { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin-top:8px; }
.cart-note-controls button { padding:9px 10px; font-size:12px; }
.cart-note-controls button[data-action="notes-save"] { color:#fff; background:#3971ca; }
.service-intro { margin:15px 0 12px; color:#667d99; font-size:13px; line-height:1.6; }
.customer-service-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.customer-service-options button { min-height:60px; font-size:14px; white-space:normal; line-height:1.5; }
.service-list-title { margin:22px 0 6px; font-size:14px; color:#42618a; }
.customer-service-call { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px 9px; align-items:center; padding:13px 0; border-bottom:1px solid #e7edf5; }
.customer-service-call strong { font-size:13px; }
.customer-service-call small { grid-column:1/-1; color:#7285a0; font-size:11px; }
.service-status { font-size:11px; color:#8f6b32; border-radius:7px; padding:5px 7px; background:#fff3dc; }
.service-status.accepted { color:#3d6eaa; background:#edf4ff; }
.service-status.done { color:#487c5d; background:#edf7f0; }
.service-empty,.service-pending-note { margin:14px 0; font-size:12px; color:#74869f; line-height:1.75; }
.service-pending-note { padding:10px; border-radius:9px; background:#fff4e3; color:#916834; }
@media(max-width:650px) {
  .customer-brand-row { gap:7px; }
  .customer-header-actions { gap:4px; }
  .customer-title-row .customer-header-actions .quiet-button { font-size:11px; padding:7px 6px; }
  .customer-title-row h1 { font-size:21px; }
  .customer-identity { padding:3px 5px; font-size:10px; }
}
@media(max-width:350px) {
  .customer-title-row h1 { font-size:19px; }
  .customer-title-row .customer-header-actions .quiet-button { padding-left:5px; padding-right:5px; }
  .customer-brand-row { font-size:10px; }
}
@media(max-height:400px) {
  .customer-title-row h1 { font-size:18px; }
  #customer-status.shared-activity { -webkit-line-clamp:1; }
}

/* 详情独立滚动，保持下方菜单的位置和同桌购物车不变。 */
.customer-app.dish-detail-active { pointer-events:none; }
.customer-dish-modal { position:fixed; z-index:20; inset:0; display:flex; align-items:center; justify-content:center; padding:24px; isolation:isolate; }
.dish-modal-backdrop { position:absolute; z-index:-1; inset:0; width:100%; height:100%; padding:0; background:#1d324c8c; touch-action:none; }
.customer-dish-dialog { display:flex; flex-direction:column; width:min(540px,100%); max-height:calc(100vh - 48px); max-height:calc(100dvh - 48px); min-height:0; overflow:hidden; background:#fff; border-radius:22px; box-shadow:0 18px 65px #12294440; }
.dish-dialog-head { display:flex; align-items:center; justify-content:space-between; gap:12px; flex:none; min-height:58px; padding:7px 14px 7px 22px; border-bottom:1px solid var(--line); color:#617895; font-size:13px; }
.dish-dialog-head .icon-button { background:#f0f4fa; }
.dish-dialog-scroll { overflow:auto; min-height:0; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; }
.dish-detail-photo { display:block; width:100%; height:230px; object-fit:cover; background:#edf3fa; }
.dish-photo-placeholder { color:#9aaecb; }
.dish-detail-photo.dish-photo-placeholder { display:grid; place-items:center; font-size:55px; height:150px; background:linear-gradient(135deg,#f1f6fc,#e4edf9); }
.dish-detail-copy { padding:20px 24px 24px; overflow-wrap:anywhere; }
.dish-detail-category { font-size:12px; color:#6f84a0; margin-bottom:6px; }
.dish-detail-copy > h2 { font-size:25px; line-height:1.4; color:#294564; }
.dish-detail-spec { font-size:13px; line-height:1.6; color:#6a8099; margin-top:6px; }
.dish-detail-section { padding-top:19px; margin-top:18px; border-top:1px solid #e8eef5; }
.dish-detail-section h3 { margin-bottom:9px; font-size:14px; color:#385879; }
.dish-detail-section p { white-space:pre-wrap; font-size:14px; line-height:1.85; color:#526b88; }
.dish-detail-empty { font-size:13px; color:#7b8ea5; line-height:1.8; margin-top:22px; }
.dish-dialog-foot { display:flex; align-items:center; justify-content:space-between; gap:16px; flex:none; padding:15px 22px max(15px,env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:#fff; }
.dish-detail-price { min-width:0; }
.dish-detail-price strong { display:block; font-size:24px; color:#386cab; }
.dish-detail-availability { display:block; margin-top:4px; font-size:11px; color:#6a8099; line-height:1.5; }
.dish-detail-quantity { gap:10px; }
@media(max-width:650px) {
  .customer-dish-modal { padding:0; align-items:flex-end; }
  .customer-dish-dialog { width:100%; max-height:92vh; max-height:92dvh; border-radius:22px 22px 0 0; }
  .dish-dialog-head { min-height:54px; padding-left:18px; }
  .dish-detail-photo { height:clamp(140px,54vw,230px); }
  .dish-detail-copy { padding:17px 20px 22px; }
  .dish-detail-copy > h2 { font-size:23px; }
  .dish-dialog-foot { padding:12px 18px max(12px,env(safe-area-inset-bottom)); }
}
@media(max-height:450px) {
  .customer-dish-modal { padding:8px; }
  .customer-dish-dialog { max-height:calc(100vh - 16px); max-height:calc(100dvh - 16px); border-radius:16px; }
  .dish-dialog-head { min-height:44px; padding-top:0; padding-bottom:0; }
  .dish-detail-photo { height:140px; }
  .dish-dialog-foot { padding-top:7px; padding-bottom:7px; }
}

/* 点餐建议保持轻量入口；编辑和反馈在独立抽屉中进行，菜单继续独立滚动。 */
.customer-dining-tools { display:flex; flex:none; min-width:0; gap:10px; padding:6px 18px; border-bottom:1px solid var(--line); background:#fffcf9; }
.customer-dining-tools button { display:flex; align-items:center; justify-content:center; gap:7px; flex:1; min-width:0; min-height:42px; padding:6px 12px; border-radius:10px; font-size:13px; font-weight:600; }
.customer-dining-tools button[data-action=bundle-open] { background:linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); border:1px solid #fed7aa; color:#c2410c; box-shadow:0 2px 8px rgba(234,88,12,.12); }
.customer-dining-tools button[data-action=bundle-open]:hover { background:linear-gradient(135deg, #ffedd5 0%, #fed7aa 100%); }
.customer-dining-tools button[data-action=feedback-open] { background:#fff; border:1px solid #e7dfd5; color:#57534e; }
.customer-dining-tools button[data-action=feedback-open]:hover { background:#fbf9f5; }
.customer-dining-tools button > span:first-child { font-size:18px; line-height:1; }
.customer-dining-tools small { font-size:11px; color:#8c7b75; white-space:nowrap; }
/* 顾客核对已选菜品时，提供可单选的清爽搭配。 */
.customer-pairing-slot { margin:16px 0 4px; min-width:0; }
.customer-pairing { padding:14px; border:1px solid #e2e8db; border-radius:14px; background:#f8faf5; color:#364936; }
.pairing-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.pairing-heading h3 { margin:0; font-size:15px; line-height:1.5; }
.pairing-message { margin:4px 0 0; color:#657360; font-size:12px; line-height:1.6; }
.pairing-dismiss { flex:none; min-height:44px; padding:0 3px; color:#64705f; font-size:12px; }
.pairing-choices { display:grid; gap:8px; margin:10px 0; }
.pairing-choice { display:flex; align-items:center; gap:10px; min-width:0; padding:9px 10px; border:1px solid #e6eade; border-radius:10px; background:#fff; cursor:pointer; }
.pairing-choice.selected { border-color:#71945d; background:#f0f6e9; }
.pairing-choice:focus-within { outline:2px solid #53753e; outline-offset:2px; }
.pairing-choice .dish-photo { width:44px; height:44px; flex:0 0 44px; border-radius:8px; }
.pairing-choice-copy { flex:1; min-width:0; overflow-wrap:anywhere; }
.pairing-choice-copy strong { display:block; font-size:13px; line-height:1.5; }
.pairing-choice-copy small { display:block; margin-top:3px; font-size:12px; color:#596852; line-height:1.5; }
.pairing-choice input { flex:none; width:20px; height:20px; margin:0; accent-color:#56783f; }
.pairing-foot { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.pairing-selection-summary { flex:1; min-width:120px; font-size:11px; line-height:1.6; color:#657360; }
.pairing-add { flex:none; min-height:44px; padding:8px 16px; border-radius:10px; background:#496b36; color:#fff; font-size:13px; font-weight:600; }
.pairing-add:disabled { background:#e5eadd; color:#788270; opacity:1; }
.pairing-add:focus-visible,.pairing-dismiss:focus-visible { outline:2px solid #53753e; outline-offset:2px; }
.customer-cart-toggle small.has-pairing { color:#4c7039; }
.customer-advisor-modal { position:fixed; z-index:22; inset:0; display:flex; align-items:center; justify-content:center; padding:24px; isolation:isolate; }
.customer-advisor-dialog { display:flex; flex-direction:column; min-height:0; width:min(620px,100%); max-height:calc(100vh - 48px); max-height:calc(100dvh - 48px); background:#fff; border-radius:22px; overflow:hidden; box-shadow:0 18px 65px #12294440; }
.customer-advisor-dialog h2 { font-size:16px; color:#355675; line-height:1.5; }
.advisor-dialog-scroll { min-height:0; overflow:auto; padding:18px 22px 22px; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; }
.advisor-intro { font-size:13px; color:#6a7f96; line-height:1.75; margin-bottom:6px; }
.advisor-dish-highlight { color:#b42318; font-weight:800; overflow-wrap:anywhere; }
.advisor-source { width:fit-content; max-width:100%; margin:0 0 8px; padding:4px 8px; border-radius:7px; background:#eef4fb; color:#42658b; font-size:12px; font-weight:700; line-height:1.6; overflow-wrap:anywhere; }
.advisor-source:empty { display:none; }
.advisor-portion { margin:0 0 9px; color:#8190a3; font-size:11px; line-height:1.7; }
.advisor-portion summary { min-height:44px; padding:12px 0; cursor:pointer; touch-action:manipulation; }
.advisor-portion p { padding:0 0 8px; overflow-wrap:anywhere; }
.advisor-ai-panel { margin:0 0 10px; padding:8px 11px; border-radius:10px; background:#f4f8fe; color:#657f9d; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.advisor-ai-panel.is-waiting { padding:24px 12px; background:#f8faff; }
.advisor-ai-waiting { display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center; }
.advisor-ai-waiting strong { font-size:14px; line-height:1.6; color:#42688f; }
.advisor-ai-waiting p { font-size:12px; line-height:1.7; color:#7b8fa5; }
.advisor-spinner { width:26px; height:26px; border:3px solid #d9e6f5; border-top-color:#3c75c6; border-radius:50%; animation:advisor-spin .8s linear infinite; }
@keyframes advisor-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .advisor-spinner { animation-duration:1.8s; } }
.advisor-guests { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:15px; color:#56718d; font-size:13px; }
.advisor-guests label { width:100%; font-weight:600; color:#3c5e80; }
.advisor-guests input { width:64px; min-height:44px; padding:8px; border:1px solid #cddbed; border-radius:9px; text-align:center; color:#355d87; background:#fff; }
.advisor-guests .quiet-button { padding:8px 11px; }

.advisor-guests { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:15px; color:#56718d; font-size:13px; }
.advisor-guests label { width:100%; font-weight:600; color:#3c5e80; }
.advisor-guests input { width:64px; min-height:44px; padding:8px; border:1px solid #cddbed; border-radius:9px; text-align:center; color:#355d87; background:#fff; }
.advisor-guests .quiet-button { padding:8px 11px; }

/* ==========================================================================
   【选择就餐偏好】小弹窗与大选择卡片
   ========================================================================== */
.customer-persona-dialog-content { display:flex; flex-direction:column; gap:16px; padding:4px 0 10px; }
#customer-advisor-content:has(.customer-persona-dialog-content) { overflow-anchor:none; }
.customer-persona-dialog-content .persona-members-grid[hidden],.customer-persona-dialog-content .persona-profile-help[hidden] { display:none; }
.customer-profile-banner { display:flex; align-items:center; gap:7px; padding:8px 12px; background:#fff5eb; border:1px solid #fed7aa; border-radius:10px; font-size:12px; color:#c2410c; }
.profile-banner-icon { font-size:15px; }
.profile-banner-text { font-weight:700; flex:1; }
.profile-banner-tip { font-size:11px; color:#ea580c; opacity:.88; }

.persona-section { display:flex; flex-direction:column; gap:8px; }
.persona-sec-header { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.persona-sec-header strong { font-size:14px; font-weight:800; color:#2c1e14; }
.persona-sec-header small { font-size:11px; color:#9c8577; }
.persona-members { padding:10px 12px; border:1px solid #e8ddd0; border-radius:10px; background:#fffaf5; }
.persona-members summary { min-height:28px; font-size:13px; font-weight:700; cursor:pointer; }
.persona-members > .quiet-button { min-height:40px; margin:6px 0; font-size:12px; }
.persona-members-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:4px 0 8px; }
.persona-member-field { display:flex; align-items:center; justify-content:space-between; gap:6px; min-width:0; font-size:12px; }
.persona-member-field input { width:54px; min-width:0; min-height:42px; padding:5px; border:1px solid #e0d1c3; border-radius:7px; background:#fff; text-align:center; font-size:16px; }
.persona-profile-help,.persona-profile-status { color:#806b5c; font-size:11px; line-height:1.6; }
.persona-profile-status { margin:6px 0 0; }
.persona-profile-status.has-error { color:#b42318; font-weight:600; }

/* 1. 人数选择快捷栏 + 步进器 */
.persona-guests-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.persona-guests-quick { display:flex; gap:6px; flex:1; min-width:180px; }
.persona-guest-btn { flex:1; min-height:42px; padding:6px 0; border:1.5px solid #e8ddd0; background:#fff; border-radius:10px; font-size:13px; font-weight:600; color:#4a3b30; cursor:pointer; touch-action:manipulation; transition:all .15s ease; }
.persona-guest-btn:hover { background:#fff7f2; border-color:#f4cbb5; color:#d83a12; }
.persona-guest-btn.is-active { background:#e64a19; border-color:#d83a12; color:#fff; font-weight:800; box-shadow:0 3px 8px rgba(230,74,25,.3); }

.persona-guests-stepper { display:flex; align-items:center; background:#f5efe8; border-radius:10px; padding:2px; height:42px; border:1.5px solid #e8ddd0; }
.persona-stepper-btn { min-width:38px; height:38px; border:none; background:transparent; font-size:20px; font-weight:700; color:#5a4a3e; cursor:pointer; border-radius:8px; display:grid; place-items:center; }
.persona-stepper-btn:hover { background:#fff; color:#d83a12; }
.persona-stepper-val { min-width:44px; text-align:center; font-size:14px; font-weight:800; color:#2c1e14; }

/* 2. 就餐场景（大大的选择，2列大网格卡片） */
.persona-scene-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:9px; }
.customer-persona-scene-card { display:flex; align-items:center; gap:10px; min-height:58px; padding:10px 12px; border-radius:13px; border:1.5px solid #e8ddd0; background:#fff; text-align:left; cursor:pointer; touch-action:manipulation; transition:all .18s cubic-bezier(0.16, 1, 0.3, 1); }
.customer-persona-scene-card:hover { border-color:#f4cbb5; background:#fffaf7; transform:translateY(-1px); }
.customer-persona-scene-card.is-active { border-color:#d83a12; background:linear-gradient(135deg, #fff7f2 0%, #ffede4 100%); box-shadow:0 4px 14px rgba(216,58,18,.2); }
.persona-card-icon { font-size:24px; line-height:1; flex:none; }
.persona-card-info { display:flex; flex-direction:column; gap:2px; min-width:0; }
.persona-card-title { font-size:13px; font-weight:800; color:#2c1e14; line-height:1.3; }
.customer-persona-scene-card.is-active .persona-card-title { color:#c2410c; }
.persona-card-desc { font-size:10px; color:#8c7667; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.customer-persona-scene-card.is-active .persona-card-desc { color:#9a3412; font-weight:500; }

/* 3. 食量偏好（3个大卡片） */
.persona-appetite-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; }
.customer-persona-appetite-card { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; min-height:54px; padding:8px 6px; border-radius:12px; border:1.5px solid #e8ddd0; background:#fff; text-align:center; cursor:pointer; touch-action:manipulation; transition:all .15s ease; }
.customer-persona-appetite-card:hover { border-color:#f4cbb5; background:#fffaf7; }
.customer-persona-appetite-card.is-active { border-color:#d83a12; background:linear-gradient(135deg, #fff7f2 0%, #ffede4 100%); color:#c2410c; box-shadow:0 3px 10px rgba(216,58,18,.18); }
.persona-appetite-icon { font-size:20px; line-height:1; }
.persona-appetite-title { font-size:12px; font-weight:700; color:#433226; }
.customer-persona-appetite-card.is-active .persona-appetite-title { color:#c2410c; font-weight:800; }

/* 底部全宽大确认按钮（吸底无死角） */
.persona-confirm-btn { width:100% !important; min-height:48px !important; font-size:15px !important; font-weight:800 !important; border-radius:12px !important; background:linear-gradient(135deg, #e64a19 0%, #c2410c 100%) !important; color:#fff !important; box-shadow:0 4px 16px rgba(230,74,25,.38) !important; letter-spacing:0.5px; }
.persona-confirm-btn:active { transform:scale(0.985); }

/* ==========================================================================
   【搭配结果页】顶部用餐偏好摘要条与修改入口
   ========================================================================== */
.customer-persona-summary-bar { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 14px; margin:0 0 12px; background:#fffaf5; border:1.5px solid #f9dfcd; border-radius:12px; }
.persona-summary-left { display:flex; align-items:center; gap:8px; min-width:0; flex:1; }
.persona-summary-tag { display:inline-flex; align-items:center; padding:2px 7px; border-radius:6px; background:#ffedd5; color:#c2410c; font-size:11px; font-weight:800; white-space:nowrap; }
.persona-summary-text { font-size:13px; font-weight:700; color:#3a281c; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.persona-edit-btn { flex:none; min-height:36px; padding:4px 10px; border-radius:8px; border:1px solid #fed7aa; background:#fff; color:#ea580c; font-size:12px; font-weight:700; cursor:pointer; }
.persona-edit-btn:hover { background:#fff7ed; border-color:#fdba74; }

.advisor-warning { padding:10px 12px; margin:0 0 12px; border-radius:10px; background:#fff4e2; color:#976b37; font-size:12px; line-height:1.75; }
.advisor-warning:empty { display:none; }
.advisor-bundle-row { display:flex; align-items:flex-start; gap:11px; padding:15px 0; border-top:1px solid #e5edf5; }
.advisor-bundle-row .dish-photo { width:60px; height:60px; }
.advisor-bundle-copy { flex:1; min-width:0; }
.advisor-bundle-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.advisor-bundle-heading strong { font-size:14px; line-height:1.5; overflow-wrap:anywhere; }
.advisor-bundle-heading > button { color:#956876; font-size:12px; min-width:44px; min-height:44px; padding:5px; margin-top:-7px; margin-right:-5px; }
.advisor-item-spec { font-size:12px; color:#758aa1; line-height:1.6; }
.advisor-bundle-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:9px; }
.advisor-bundle-controls select { flex:1; width:100px; max-width:100%; min-width:0; min-height:44px; padding:7px; border:1px solid #cddbed; border-radius:9px; color:#466986; background:#fff; font:inherit; font-size:12px; text-overflow:ellipsis; }
.advisor-quantity { display:flex; flex:none; align-items:center; gap:5px; }
.advisor-quantity button { min-width:44px; min-height:44px; border-radius:50%; background:#edf3fd; color:#3e70b6; font-size:22px; }
.advisor-quantity output { min-width:36px; text-align:center; font-size:14px; white-space:nowrap; }
.advisor-disclaimer { margin-top:12px; font-size:12px; line-height:1.75; color:#7a8da3; }
#advisor-bundle-refresh { margin-top:10px; }
.advisor-dialog-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; flex:none; padding:15px 22px max(15px,env(safe-area-inset-bottom)); border-top:1px solid var(--line); }
.advisor-bundle-total { min-width:0; }
.advisor-bundle-total strong { display:block; color:#386cab; font-size:23px; white-space:nowrap; }
.advisor-bundle-total small { display:block; margin-top:4px; color:#788aa0; font-size:11px; line-height:1.5; }
.advisor-dialog-foot .primary-button { flex:none; }
.advisor-ratings { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.advisor-rating { display:flex; align-items:center; flex-direction:column; gap:5px; padding:13px 7px; border:1px solid #dde7f1; border-radius:13px; background:#f7faff; color:#607c9a; }
.advisor-rating .rating-icon { font-size:33px; line-height:1.2; font-family:"Segoe UI Symbol",sans-serif; }
.advisor-rating strong { font-size:13px; }
.advisor-rating[aria-pressed=true] { color:#306cae; background:#eaf3ff; border-color:#80aee3; box-shadow:inset 0 0 0 1px #80aee3; }
.advisor-rating[data-rating=unsatisfied][aria-pressed=true] { color:#a2594d; background:#fff1eb; border-color:#d7a28e; box-shadow:inset 0 0 0 1px #d7a28e; }
.advisor-field-title,.advisor-field-label { display:block; margin-top:22px; margin-bottom:11px; font-size:13px; color:#456586; font-weight:600; }
.advisor-feedback-reasons { display:flex; flex-wrap:wrap; gap:8px; }
.advisor-feedback-reasons button { border:1px solid #e0e8f3; }
.advisor-feedback-reasons button[aria-pressed=true] { background:#e9f2ff; border-color:#95b9e5; color:#316cae; }
#advisor-feedback-note { width:100%; min-height:94px; max-height:170px; resize:vertical; padding:12px; border:1px solid #cfdeed; border-radius:11px; color:#466786; font:inherit; font-size:16px; line-height:1.6; background:#fff; }
#advisor-feedback-warning { margin-top:12px; }
.advisor-feedback-latest { margin-top:20px; padding:14px 16px; border:1px solid #cfe0d7; border-radius:12px; background:#f4faf6; color:#46755c; overflow-wrap:anywhere; }
.advisor-feedback-latest strong { font-size:14px; }
.advisor-feedback-latest p { margin-top:7px; font-size:13px; line-height:1.7; white-space:pre-wrap; }
.advisor-feedback-latest small { display:block; font-size:12px; line-height:1.6; margin-top:8px; color:#718a7b; }
.advisor-feedback-resolution { padding-top:9px; border-top:1px solid #dce8df; }
.advisor-feedback-footnote { min-width:0; font-size:12px; line-height:1.65; color:#7a8b9d; }
@media(max-width:650px) {
  .customer-dining-tools { gap:5px; padding:3px 10px; }
  .customer-dining-tools button { font-size:12px; padding:5px; gap:5px; }
  .customer-dining-tools small { font-size:10px; }
  .customer-pairing { padding:12px; }
  .customer-advisor-modal { padding:0; align-items:flex-end; }
  .customer-advisor-dialog { width:100%; max-height:92vh; max-height:92dvh; border-radius:22px 22px 0 0; }
  .customer-advisor-dialog .dish-dialog-head { padding-left:18px; }
  .advisor-dialog-scroll { padding:16px 18px 22px; }
  .advisor-dialog-foot { padding:12px 18px max(12px,env(safe-area-inset-bottom)); gap:10px; }
  .advisor-bundle-row .dish-photo { width:48px; height:48px; }
  .advisor-bundle-controls select { flex-basis:100%; width:100%; }
  .advisor-quantity { margin-left:auto; }
}
@media(max-width:350px) {
  .advisor-dialog-scroll { padding-left:14px; padding-right:14px; }
  .advisor-dialog-foot { padding-left:14px; padding-right:14px; }
  .advisor-dialog-foot .primary-button { padding:11px 13px; font-size:13px; }
  .advisor-bundle-total strong { font-size:21px; }
  .advisor-bundle-total small { max-width:112px; font-size:10px; }
  .advisor-ratings { gap:7px; }
}
@media(max-height:450px) {
  .customer-dining-tools { padding-top:0; padding-bottom:0; }
  .customer-dining-tools button { min-height:34px; }
  .customer-advisor-modal { padding:8px; }
  .customer-advisor-dialog { max-height:calc(100vh - 16px); max-height:calc(100dvh - 16px); border-radius:16px; }
  .advisor-dialog-foot { padding-top:7px; padding-bottom:7px; }
}

/* 手机顶部压紧文字区，常用操作保留方形的大触摸范围。 */
@media(max-width:650px) {
  .customer-header { padding:6px 12px 5px; }
  .customer-brand-row { font-size:10px; line-height:1.3; margin-bottom:3px; gap:6px; }
  .customer-identity { padding:2px 5px; font-size:9px; }
  .customer-connection { font-size:10px; gap:4px; }
  .customer-title-row { gap:10px; }
  .customer-title-row > div:first-child { flex:1; min-width:0; }
  .customer-title-row h1 { font-size:17px; line-height:1.3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  #customer-status { margin-top:3px; font-size:10px; line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .customer-header-actions { gap:7px; }
  .customer-title-row .customer-header-actions .quiet-button { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; flex:0 0 56px; width:56px; height:56px; min-width:56px; min-height:56px; padding:5px 3px; border:1px solid #dfE8f5; border-radius:7px; background:#f1f6fd; font-size:11px; line-height:1.2; }
  .header-action-icon { display:block; width:19px; height:19px; flex:none; }
  .header-action-label { white-space:nowrap; }
  .customer-header-actions .header-action-count:not(:empty) { position:absolute; top:-4px; right:-3px; display:block; min-width:17px; max-width:38px; height:17px; padding:0 4px; margin:0!important; border:1px solid #fff; border-radius:6px; background:#497ac3; color:#fff; font-size:9px; line-height:15px; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .customer-dining-tools { gap:4px; padding:0 10px; }
  .customer-dining-tools button { min-height:44px; padding:3px 4px; gap:4px; font-size:11px; white-space:nowrap; }
  .customer-dining-tools button > span:first-child { font-size:16px; }
  .customer-dining-tools small { flex:none; font-size:9px; }
  .customer-catalog { padding-top:8px; }
  .customer-search { min-height:36px; border-radius:9px; }
  .customer-search > span { font-size:23px; }
  .customer-search input { padding:4px 0; line-height:22px; }
  .customer-search button { min-width:36px; min-height:34px; height:34px; padding:0; font-size:20px; }
  .customer-catalog-head { padding-top:8px; padding-bottom:7px; }
}
@media(max-width:650px) and (max-height:450px) {
  .customer-header { padding-top:4px; padding-bottom:4px; }
  .customer-title-row .customer-header-actions .quiet-button { width:48px; height:48px; min-width:48px; min-height:48px; flex-basis:48px; gap:2px; }
  .header-action-icon { width:17px; height:17px; }
  #customer-status.shared-activity { -webkit-line-clamp:1; }
}

/* 独立悬浮在购物车栏上方，不占用购物车栏或已选清单的空间。 */
.checkout-floating { position:fixed; z-index:36; left:max(12px,calc((100vw - 1280px)/2 + 12px)); bottom:calc(var(--customer-footer-height, 74px) + 10px); max-width:calc(100vw - 24px); }
.customer-app.history-open .checkout-floating { display:none; }
.checkout-entry { display:flex; align-items:center; gap:5px; min-height:32px; max-width:100%; padding:4px 9px; border:1px solid #dce6d0; border-radius:20px; color:#526f35; background:#f4f7ee; box-shadow:0 3px 12px #33422220; font-size:12px; line-height:1.3; white-space:nowrap; }
.checkout-entry[aria-expanded="true"] { background:#e5eed9; border-color:#9fb984; }
.checkout-entry-arrow { margin-left:2px; }
.checkout-entry[aria-expanded="true"] .checkout-entry-arrow { transform:rotate(180deg); }
#checkout-entry-count { font-size:10px; }
.checkout-popover { position:absolute; z-index:7; bottom:calc(100% + 8px); left:0; display:flex; flex-direction:column; width:min(420px,calc(100vw - 24px)); max-height:calc(100vh - var(--customer-footer-height, 74px) - 66px); max-height:calc(100dvh - var(--customer-footer-height, 74px) - 66px); border:1px solid #dce6d0; border-radius:18px; background:#f4f7ee; box-shadow:0 10px 36px #33422230; overflow:hidden; }
.checkout-popover-head { display:flex; flex:none; justify-content:space-between; align-items:center; padding:2px 8px 0 16px; color:#78886b; font-size:11px; }
.checkout-popover-head .icon-button { width:44px; height:44px; color:#526f35; }
#checkout-floating-slot { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.checkout-popover .checkout-cart-recommendations { flex:1 1 auto; max-height:none; padding-top:0; border-top:0; }
.checkout-popover-foot { display:flex; flex:none; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:3px 8px; padding:5px 12px 8px 16px; border-top:1px solid #e2e9d8; color:#78886b; font-size:10px; }
.checkout-popover-foot button { min-height:40px; padding:7px 4px; color:#526f35; font-size:12px; font-weight:600; }
.checkout-entry:focus-visible,.checkout-popover button:focus-visible { outline:2px solid #496b28; outline-offset:2px; }
@media(max-width:650px) {
  .customer-cart-toggle small { white-space:normal; font-size:10px; }
  .customer-cart-toggle .cart-arrow { display:none; }
}
@media(max-height:500px) {
  .checkout-popover-head .icon-button { height:36px; }
  .checkout-popover-foot { padding-top:2px; padding-bottom:2px; }
}
.checkout-cart-recommendations { flex:0 1 auto; min-height:0; max-height:46%; overflow-y:auto; padding:10px 16px; border-top:1px solid #e2e9d8; background:#f4f7ee; -webkit-overflow-scrolling:touch; overscroll-behavior-y:contain; touch-action:pan-y; scrollbar-width:thin; scrollbar-color:#cbd7bb transparent; }
.checkout-offer-heading { display:flex; align-items:center; gap:7px; margin-bottom:8px; }
.checkout-offer-symbol { display:grid; place-items:center; flex:none; width:28px; height:28px; border-radius:50%; background:#e4edd6; color:#64813f; }
.checkout-offer-symbol svg { width:19px; height:19px; }
.checkout-offer-heading-copy { flex:1; min-width:0; }
.checkout-offer-heading h3 { color:#405432; font-size:14px; font-weight:700; line-height:1.4; letter-spacing:.03em; overflow-wrap:anywhere; }
#checkout-offer-subtitle { margin-top:2px; color:#6f7c60; font-size:10px; line-height:1.4; overflow-wrap:anywhere; }
.checkout-offer-optional { flex:none; color:#758465; font-size:10px; white-space:nowrap; }
.checkout-offer-items { display:grid; grid-template-columns:minmax(0,1fr); gap:7px; }
.checkout-offer-card { display:flex; align-items:center; gap:9px; min-width:0; min-height:64px; padding:7px 10px; border:1px solid transparent; border-radius:13px; background:#fff; cursor:pointer; touch-action:pan-x pan-y; transition:border-color .12s,background-color .12s; }
.checkout-offer-card.selected { border-color:#aac77b; background:#fbfff4; }
.checkout-offer-card:focus-within { outline:2px solid #7f9b50; outline-offset:2px; }
.checkout-offer-card .dish-photo { flex:none; width:46px; height:46px; border-radius:10px; background:#f0f2e9; }
.checkout-offer-card .dish-photo-placeholder { font-size:0; }
.checkout-offer-card .dish-photo-placeholder::after { content:""; width:28px; height:28px; background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28' fill='none' stroke='%23a2b08d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 14h20c-.6 5-4 8-10 8S4.6 19 4 14Z'/%3E%3Cpath d='M10 25h8M15 11c-2-5 2-8 7-7 0 5-3 8-7 7ZM13 13l6-6M8 6v4'/%3E%3C/svg%3E"); }
.checkout-offer-copy { flex:1; min-width:0; }
.checkout-offer-copy strong { display:block; color:#3f4937; font-size:13px; font-weight:600; line-height:1.4; overflow-wrap:anywhere; }
.checkout-offer-copy small { display:inline; margin-right:7px; color:#727c66; font-size:10px; line-height:1.5; overflow-wrap:anywhere; }
.checkout-offer-copy b { display:inline-block; margin-top:3px; color:#bd5625; font-size:14px; font-weight:700; line-height:1.4; white-space:nowrap; }
.checkout-offer-card input { appearance:none; -webkit-appearance:none; display:grid; place-items:center; flex:none; width:23px; height:23px; margin:0; border:1.5px solid #d5ddcb; border-radius:50%; background:#fff; cursor:pointer; }
.checkout-offer-card input::after { content:""; width:10px; height:6px; margin-top:-2px; border:solid #fff; border-width:0 0 2px 2px; transform:rotate(-45deg); opacity:0; }
.checkout-offer-card input:checked { border-color:#7f9f4d; background:#7f9f4d; }
.checkout-offer-card input:checked::after { opacity:1; }
.checkout-offer-card input:disabled { opacity:.5; cursor:default; }
.checkout-offer-card input:focus-visible { outline:2px solid #496b28; outline-offset:3px; }
.customer-member-button small { font-size:11px; white-space:nowrap; }
.customer-member-button small::before { content:' · '; }
.customer-categories .member-category { color:#b74625; }
.member-message { color:#81766d; font-size:12px; line-height:1.65; margin:0 0 12px; overflow-wrap:anywhere; }
.member-message:empty { display:none; }
.member-assistance { padding:15px; border-radius:13px; background:#fff5ea; }
.member-assistance p { margin-bottom:12px; font-size:14px; line-height:1.75; }
.member-assistance button { margin:4px 4px 0 0; max-width:100%; white-space:normal; }
.member-wallet-balance { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:18px 16px; border:1px solid #efdfcd; border-radius:13px; background:#fff7ee; }
.member-wallet-balance span { font-size:14px; }
.member-wallet-balance strong { color:#b94423; font-size:25px; overflow-wrap:anywhere; }
.member-wallet-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:18px 0 8px; }
.member-wallet-heading h3 { font-size:15px; }
.member-wallet-heading span { color:#81766d; font-size:12px; }
.member-offer-shortcut { width:100%; margin-top:10px; text-align:left; }
.customer-member-coupon { padding:13px 0; border-bottom:1px solid var(--line); overflow-wrap:anywhere; }
.member-coupon-name { margin:0 0 7px; font-size:14px; }
.member-coupon-description { font-size:13px; margin-bottom:5px; }
.customer-member-coupon small { display:block; margin-top:4px; color:#81766d; font-size:11px; line-height:1.55; }
.customer-member-coupon small:empty { display:none; }
.customer-offer-row { display:flex; align-items:flex-start; gap:13px; padding:15px 0; border-bottom:1px solid var(--line); }
.member-offer-photo { flex:none; }
.member-offer-copy { flex:1; min-width:0; }
.member-offer-name { font-size:15px; line-height:1.5; overflow-wrap:anywhere; }
.member-offer-dish { font-size:12px; line-height:1.55; color:#81766d; margin-top:4px; overflow-wrap:anywhere; }
.member-offer-prices,.cart-unit-prices,.history-unit-prices { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px; margin-top:7px; }
.member-original-price { color:#9a9189; font-size:11px; white-space:nowrap; }
.member-activity-price,.is-member-offer .cart-unit { color:#d93627; font-size:14px; font-weight:700; white-space:nowrap; }
.member-offer-reason { color:#8f7460; font-size:11px; line-height:1.55; margin-top:6px; overflow-wrap:anywhere; }
.member-offer-reason:empty { display:none; }
.member-offer-copy button { margin-top:7px; }
.member-category-subnav { flex:none; padding:0 0 5px 5px; border-bottom:1px solid #ecdfd1; }
.customer-categories .member-category-subbutton { min-height:52px; padding:7px 2px; gap:1px; border-radius:6px; font-size:11px; line-height:1.5; }
.customer-categories .member-category-subbutton small { font-size:9px; font-weight:400; }
.customer-categories .member-category-subbutton[aria-pressed=true] { background:#fff0e2; color:#9b4d24; box-shadow:none; border-left:2px solid #bb7848; }
.member-benefit-section { padding-bottom:18px; min-width:0; }
.member-benefit-heading { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; gap:8px; padding:10px 11px; background:#faf1e5; border-left:3px solid #b78248; border-radius:7px; }
.member-benefit-heading h3 { margin:0; color:#85522c; font-size:14px; line-height:1.5; }
.member-benefit-heading small { display:block; color:#a0856b; font-size:10px; margin-top:2px; font-weight:400; }
.member-benefit-count { flex:none; color:#a0856b; font-size:11px; white-space:nowrap; }
.member-benefit-note,.member-benefit-empty,.member-offer-schedule { color:#94806e; font-size:11px; line-height:1.6; margin:8px 0 0; overflow-wrap:anywhere; }
.member-benefit-empty { padding:12px 0 5px; }
.member-offer-schedule:empty { display:none; }
.member-offer-name { margin:0; }
.member-coupon-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:7px; }
.member-coupon-name { flex:1; min-width:0; line-height:1.5; }
.member-coupon-status { flex:none; color:#94642e; background:#faf1e5; border-radius:5px; padding:3px 5px; font-size:10px; white-space:nowrap; }
.member-coupon-description { color:#b94423; font-size:15px; font-weight:700; line-height:1.6; }
.customer-member-coupon.is-unavailable .member-coupon-status { color:#807971; background:#f0ece7; }
.customer-offer-row.is-unavailable button { opacity:1; color:#887b6f; background:#f1ede8; }
.customer-offer-row:last-child,.customer-member-coupon:last-child { border-bottom:0; }
.member-category-group { flex:none; min-width:0; }
.customer-categories .member-category { flex-direction:row; justify-content:space-between; gap:2px; min-height:38px; padding:7px 4px; font-size:11px; }
.member-category-caret { color:#ac8c73; font-size:12px; transition:transform .15s; }
.member-category[aria-expanded=true] .member-category-caret { transform:rotate(180deg); }
.member-coupon-history { border-top:1px solid var(--line); margin-top:5px; }
.member-coupon-history > summary { padding:8px 0; color:#8a796a; font-size:11px; cursor:pointer; }
.member-coupon-history[hidden] { display:none; }
.customer-footer { flex-wrap:wrap; row-gap:5px; }
.customer-coupon-hint { flex:0 0 100%; display:flex; align-items:center; justify-content:space-between; gap:5px; padding:3px 7px; border-radius:6px; background:#fff3e6; color:#a65020; font-size:11px; line-height:1.5; }
.customer-coupon-hint > span { min-width:0; }
.customer-coupon-hint > button { flex:none; padding:3px; min-height:27px; min-width:48px; font-size:11px; color:#ad481a; }
/* 左侧分类的可滚动范围避开底部悬浮搭配入口，末项仍可直接点到。 */
.customer-app:has(#checkout-entry:not([hidden])) .customer-categories { margin-bottom:52px; }
@media(max-width:650px) {
  .menu-layout:has(.member-category) { grid-template-columns:78px minmax(0,1fr); }
  .customer-categories .member-category-subbutton > span { font-size:11px; white-space:nowrap; }
  .customer-categories .member-category-subbutton small { font-size:9px; }
}
@media(max-width:650px) {
  .customer-title-row .customer-header-actions .customer-member-button { gap:2px; }
  .customer-member-button .header-action-icon { width:16px; height:16px; }
  .customer-member-button small { font-size:9px; line-height:1.1; }
  .customer-member-button small::before { content:''; }
  .customer-offer-row { gap:9px; padding:12px 0; }
  .member-offer-photo .dish-photo { width:48px; height:48px; border-radius:9px; }
  .member-offer-name { font-size:14px; }
  .member-offer-dish { font-size:11px; }
}
@media(max-width:350px) {
  .customer-header-actions { gap:4px; }
  .customer-title-row { gap:7px; }
  .customer-categories .member-category { font-size:10px; padding-left:1px; padding-right:1px; white-space:nowrap; }
  .member-offer-photo .dish-photo { width:40px; height:40px; }
  .customer-offer-row { gap:7px; }
  .member-activity-price { font-size:13px; }
}
#checkout-offer-status { margin-top:5px; color:#7a836f; font-size:11px; line-height:1.5; overflow-wrap:anywhere; }
#checkout-offer-status:empty { display:none; }
/* 会员礼遇采用紧凑的父子分类与券卡片，留出普通点菜空间。 */
.member-category-subnav { margin:0 0 3px 6px; padding:0 0 3px 3px; border-bottom:0; border-left:1px solid #e8d6c3; }
.customer-categories .member-category-subbutton { min-height:30px; padding:5px 2px; font-size:10px; line-height:1.4; border-radius:4px; }
.customer-categories .member-category-subbutton > span { font-size:10px; white-space:nowrap; }
.member-benefit-section { padding-bottom:9px; }
.member-benefit-heading { padding:5px 7px; gap:5px; border-radius:5px; }
.member-benefit-heading > div { display:flex; flex-wrap:wrap; align-items:baseline; gap:1px 6px; min-width:0; }
.member-benefit-heading h3 { font-size:12px; line-height:1.5; }
.member-benefit-heading small { margin:0; font-size:10px; }
.member-benefit-count { font-size:10px; }
.member-benefit-note,.member-benefit-empty,.member-offer-schedule { margin-top:4px; font-size:10px; line-height:1.5; }
.member-benefit-empty { padding:5px 0; }
.customer-member-coupon { padding:8px 0; }
.member-coupon-heading { gap:5px; }
.member-coupon-name { margin:0 0 3px; font-size:12px; }
.member-coupon-status { font-size:9px; padding:2px 4px; }
.member-coupon-description { margin-bottom:2px; font-size:13px; line-height:1.5; }
.customer-member-coupon small { margin-top:2px; font-size:10px; line-height:1.45; }
.member-coupon-foot { display:flex; flex-wrap:wrap; align-items:center; gap:3px 6px; margin-top:3px; }
.member-coupon-foot .member-coupon-validity { flex:1; }
.member-coupon-foot .member-coupon-action { white-space:nowrap; }
.member-coupon-foot button { margin-left:auto; min-height:28px; min-width:46px; padding:4px 7px; border-radius:5px; font-size:11px; }
.customer-offer-row { gap:8px; padding:8px 0; }
.member-offer-photo .dish-photo { width:40px; height:40px; border-radius:7px; }
.member-offer-copy { display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:6px; align-items:start; }
.member-offer-name { grid-column:1 / -1; font-size:12px; line-height:1.5; }
.member-offer-dish { grid-column:1 / -1; margin-top:2px; font-size:10px; line-height:1.5; }
.member-offer-prices { grid-column:1; grid-row:3; gap:1px 5px; margin-top:3px; }
.member-offer-prices .member-activity-price { font-size:13px; }
.member-offer-prices .member-original-price { font-size:10px; }
.member-offer-schedule { grid-column:1; grid-row:4; }
.member-offer-reason { grid-column:1; grid-row:5; margin-top:3px; font-size:10px; line-height:1.45; }
.member-offer-copy > button { grid-column:2; grid-row:3 / span 3; margin-top:3px; min-height:28px; min-width:46px; padding:4px 7px; border-radius:5px; font-size:11px; }
.member-rule-details { min-width:0; margin-top:3px; color:#94806e; font-size:10px; line-height:1.45; }
.member-rule-details > summary { width:fit-content; cursor:pointer; padding:2px 0; color:#886348; }
.member-rule-details > p { margin:3px 0 0; white-space:normal; overflow-wrap:anywhere; }
.member-rule-details[hidden] { display:none; }
.member-offer-copy > .member-rule-details { grid-column:1 / -1; grid-row:6; }
@media(min-width:430px) {
  .checkout-offer-items { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .checkout-offer-card { gap:7px; padding:8px; }
  .checkout-offer-card .dish-photo { width:40px; height:40px; }
  .checkout-offer-copy small { display:block; margin:2px 0 0; }
}
@media(max-width:350px) {
  .checkout-cart-recommendations { padding-left:12px; padding-right:12px; }
  .checkout-offer-card { padding:6px 8px; gap:8px; }
  .checkout-offer-card .dish-photo { width:42px; height:42px; }
}
@media(max-height:450px) {
  .checkout-cart-recommendations { max-height:42%; padding-top:7px; padding-bottom:7px; }
  .checkout-offer-heading { margin-bottom:5px; }
  .checkout-offer-symbol { width:24px; height:24px; }
  .checkout-offer-heading h3 { font-size:13px; }
  #checkout-offer-subtitle { display:none; }
}
/* 横屏时抽屉跨过顶部提示区域展开，底边仍贴着送厨栏，避免菜品清单被压没。 */
@media(max-height:500px) {
  .customer-main:has(.customer-drawer:not([hidden])) { overflow:visible; }
  .customer-drawer { height:calc(100vh - var(--customer-footer-height, 74px) - 10px); height:calc(100dvh - var(--customer-footer-height, 74px) - 10px); }
  .customer-app.history-open .customer-drawer { height:calc(100vh - 16px); height:calc(100dvh - 16px); }
  .customer-app.history-open .customer-checkout-call { padding-top:8px; padding-bottom:max(8px,env(safe-area-inset-bottom)); }
  .customer-app.history-open .customer-history-total-card { margin-bottom:8px; padding:8px 12px; }
  .customer-app.history-open #customer-history-total { font-size:24px; }
  .customer-app.history-open #customer-checkout-status { margin-top:5px; font-size:11px; line-height:1.4; }
  .drawer-scrim { top:auto; bottom:0; height:100vh; height:100dvh; }
  .customer-drawer .drawer-scroll { flex:1 0 80px; min-height:80px; }
  .checkout-cart-recommendations { max-height:38%; }
  .checkout-cart-recommendations:has(.checkout-offer-card) #checkout-offer-status { display:none; }
}

/* 公网与局域网共用：压紧顶部，搜索与菜单吸顶分类标题同排。 */
.customer-header { padding:8px 16px 6px; }
.customer-brand-row { margin-bottom:4px; font-size:11px; }
.customer-title-row h1 { font-size:22px; }
#customer-status { margin-top:2px; }
.customer-dining-tools { justify-content:flex-end; gap:7px; padding:3px 16px; }
.customer-dining-tools button { flex:0 1 auto; min-height:32px; padding:4px 12px; border-radius:8px; font-size:12px; gap:5px; }
.customer-dining-tools button > span:first-child { font-size:15px; }
.customer-catalog { --catalog-inset:16px; --compact-search-width:100px; position:relative; padding:4px var(--catalog-inset) 0; }
.customer-search { position:absolute; z-index:5; top:8px; right:calc(var(--catalog-inset) + 8px); width:var(--compact-search-width); min-height:32px; height:32px; padding:0 7px; gap:0; border-radius:7px; font-size:14px; background:#fff; }
.customer-search input { width:0; padding:4px 0; font-size:inherit; line-height:22px; }
.customer-search button { min-width:26px; width:26px; min-height:30px; height:30px; padding:0; font-size:20px; }
.customer-catalog-head { display:flex; min-height:40px; padding:8px calc(var(--compact-search-width) + 18px) 8px 10px; }
.customer-catalog-head[hidden] + .customer-menu { margin-top:0; }
.customer-menu { padding-right:0; scrollbar-gutter:auto; }
.menu-section > header { min-height:40px; padding:8px calc(var(--compact-search-width) + 18px) 8px 10px; }
.menu-section > header h3 { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.menu-section > header > span { flex:none; }
.customer-catalog:has(.customer-search[hidden]) .customer-catalog-head { padding-right:10px; }
@media(max-width:650px) {
  .customer-header { padding:5px 10px 4px; }
  .customer-brand-row { margin-bottom:2px; font-size:10px; }
  .customer-title-row { gap:6px; }
  .customer-title-row h1 { font-size:16px; }
  #customer-status { margin-top:2px; font-size:10px; }
  .customer-header-actions { gap:4px; }
  .customer-title-row .customer-header-actions .quiet-button { flex-basis:44px; width:44px; height:44px; min-width:44px; min-height:44px; gap:2px; padding:3px 2px; font-size:10px; }
  .header-action-icon { width:16px; height:16px; }
  .customer-dining-tools { padding:2px 10px; gap:6px; }
  .customer-dining-tools button { min-height:32px; padding:3px 9px; font-size:11px; gap:4px; }
  .customer-dining-tools button > span:first-child { font-size:14px; }
  .customer-catalog { --catalog-inset:8px; --compact-search-width:112px; }
  .customer-search { font-size:16px; }
  .menu-section > header { gap:5px; padding-left:7px; }
  .menu-section > header > span { font-size:10px; }
}
