/* ============================================================
 * 南京味道餐饮 · 点餐系统 样式（触摸屏 / 响应式 / 红棕品牌）
 * ============================================================ */
:root{
  --brand:#a83a26;        /* 主红棕 */
  --brand-d:#6d2a1c;      /* 深红棕（标题/强调）*/
  --brand-l:#f5ede9;      /* 浅底 */
  --ok:#2e7d4f;           /* 空闲/可用 绿 */
  --busy:#c8881a;         /* 占用 橙 */
  --warn:#b00020;         /* 待结/警示 红 */
  --ink:#232323;
  --mut:#7a6f6a;
  --line:#e3d6d0;
  --bg:#fbf7f4;
  --card:#ffffff;
  --r:10px;
  --shadow:0 2px 8px rgba(120,60,40,.10);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);font-size:16px;line-height:1.45;
  overflow:hidden; /* 应用内滚动 */
  display:flex;flex-direction:column; /* 顶栏固定 + stage 撑满剩余高度并内部滚动 */
  padding-bottom:env(safe-area-inset-bottom,0); /* 避开底部 Home Indicator */
}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:16px}

/* ---------- 顶栏 ---------- */
.topbar{
  display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top,0)) 14px 10px; /* 下推避开顶部状态栏 */
  background:var(--brand);color:#fff;box-shadow:var(--shadow);
}
.topbar .logo{font-weight:800;font-size:18px;letter-spacing:.5px;white-space:nowrap}
.topbar .tabs{display:flex;gap:6px;flex:1;overflow:auto}
.topbar .tab{
  padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.14);
  color:#fff;font-weight:600;white-space:nowrap;font-size:15px;
}
.topbar .tab.active{background:#fff;color:var(--brand-d)}
.topbar .sync{
  font-size:12px;padding:6px 10px;border-radius:8px;background:rgba(255,255,255,.14);
  white-space:nowrap;display:flex;align-items:center;gap:6px
}
.topbar .sync .dot{width:8px;height:8px;border-radius:50%;background:#9fe3b0}
.topbar .sync.off .dot{background:#ffb3b3}
.topbar .emp-login,.topbar .emp-badge,.topbar .emp-logout{
  font-size:13px;padding:7px 11px;border-radius:999px;white-space:nowrap;font-weight:700;color:#fff;
  border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.14)
}
.topbar .emp-badge{background:rgba(255,255,255,.24)}
.topbar .emp-logout{background:rgba(0,0,0,.18)}
.topbar .biz{display:flex;gap:4px;background:rgba(0,0,0,.16);border-radius:999px;padding:3px}
.topbar .biz-btn{
  padding:6px 10px;border-radius:999px;border:none;font-size:12px;font-weight:700;white-space:nowrap;
  background:transparent;color:rgba(255,255,255,.8);cursor:pointer
}
.topbar .biz-btn.open.on{background:#2e9e5b;color:#fff}
.topbar .biz-btn.closed.on{background:#3a2f2a;color:#ffd27a}

/* ---------- 布局 ---------- */
.topbar{flex:0 0 auto}
.stage{flex:1 1 auto;position:relative;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:14px;min-height:0}

/* ---------- 桌台视图 ---------- */
.zone-title{font-weight:800;color:var(--brand-d);margin:14px 4px 8px;font-size:16px}
.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}
.table{
  background:var(--card);border:2px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);overflow:hidden;transition:.1s;
  display:flex;flex-direction:column;
}
.table:active{transform:scale(.97)}
.table .t-main{
  flex:1;background:transparent;border:0;cursor:pointer;width:100%;
  padding:14px 10px;text-align:center;display:flex;flex-direction:column;
  justify-content:center;gap:4px;min-height:96px;font:inherit;color:inherit;
}
.table .nm{font-weight:800;font-size:18px}
.table .meta{font-size:12px;color:var(--mut)}
.table.free{border-color:#bfe0c9}
.table.free .st{color:var(--ok)}
.table.busy{border-color:#ecd29a}
.table.busy .st{color:var(--busy)}
.table.wait{border-color:#f0b6b6}
.table.wait .st{color:var(--warn);font-weight:700}
.table.locked{border-color:#d98a8a;background:#fdf3f3}
.table.locked .st{color:var(--warn);font-weight:700}
.table .st{font-size:13px;font-weight:600}
.table .st .lt{display:block;font-size:11px;font-weight:500;color:var(--mut)}
.t-book{
  border:0;border-top:1px solid var(--line);background:#faf6f3;color:var(--brand-d);
  font-weight:700;font-size:13px;padding:8px;cursor:pointer;font:inherit;
}
.t-book:active{background:#f0e6e0}
/* 预定详情弹窗 */
.kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed var(--line)}
.kv span{color:var(--mut);font-size:13px}
.kv b{font-weight:700}

/* ---------- 点餐三栏 ---------- */
.order-layout{display:grid;grid-template-columns:150px 1fr 320px;gap:12px;height:100%}
.cat-list{display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:4px}
.cat-btn{
  padding:14px 10px;border-radius:var(--r);background:var(--card);border:2px solid var(--line);
  font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow)
}
.cat-btn.active{border-color:var(--brand);color:var(--brand-d);background:var(--brand-l)}
.cat-btn .ic{font-size:20px}

.dishes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;overflow:auto;align-content:start;padding:2px}
.dish{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;transition:.1s
}
.dish:active{transform:scale(.97)}
.dish .dn{font-weight:700;font-size:15px}
.dish .hot-star{color:#f5a623;margin-right:3px}
.dish .dd{font-size:12px;color:var(--mut);min-height:16px}
.combo-tag{display:inline-block;margin-left:4px;font-size:11px;color:#9d2a1d;background:#fbeee9;padding:1px 6px;border-radius:8px;vertical-align:middle}
.combo-sub{display:block;font-size:11px;color:#8a7b63;margin-top:2px;line-height:1.3}
.ci-combo{font-size:11px;color:#8a7b63;margin-top:2px;line-height:1.3}
.dish .row{display:flex;justify-content:space-between;align-items:center;margin-top:auto}
.dish .pr{color:var(--brand-d);font-weight:800;font-size:16px}
.dish .add{background:var(--brand);color:#fff;width:38px;height:38px;border-radius:50%;font-size:22px;font-weight:700}
.dish .add.dis{background:#b9a89e}
.dish.disabled{opacity:.5;filter:grayscale(.4)}
.dish .stock{font-size:11px;color:#3a8a4a;font-weight:700;background:#eaf6ec;border-radius:8px;padding:1px 7px;margin-left:4px}
.dish .stock.zero{color:#c0392b;background:#fdecea}
.dish .stock.inf{color:#8a7b73;background:#f1e9e3}
.spicy{color:var(--warn);font-size:12px}

/* ---------- 购物车（右侧） ---------- */
.cart{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  display:flex;flex-direction:column;box-shadow:var(--shadow);overflow:hidden}
.cart-head{padding:12px;background:var(--brand-l);font-weight:800;color:var(--brand-d);
  display:flex;justify-content:space-between;align-items:center}
.cart-head .close{font-size:22px;color:var(--brand);background:none}
.cart-items{flex:1;overflow:auto;padding:8px}
.ci{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px dashed var(--line)}
.ci .info{flex:1;min-width:0}
.ci .ci-n{font-weight:700;font-size:14px}
.ci .ci-note{font-size:11px;color:var(--mut)}
.ci .ci-pr{font-size:13px;color:var(--brand-d);font-weight:700}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:30px;height:30px;border-radius:8px;background:var(--brand-l);color:var(--brand-d);font-weight:800;font-size:16px}
.stepper .q{min-width:22px;text-align:center;font-weight:700}
.ci .del{color:var(--mut);font-size:13px;background:none;padding:4px}
.cart-foot{padding:12px;border-top:1px solid var(--line)}
.cart-foot .total{display:flex;justify-content:space-between;font-size:18px;font-weight:800;margin-bottom:8px}
.cart-foot .total .amt{color:var(--brand)}
.btn{display:block;width:100%;padding:14px;border-radius:var(--r);font-weight:800;font-size:16px;text-align:center}
.btn-primary{background:var(--brand);color:#fff}
.btn-ghost{background:#fff;color:var(--brand-d);border:2px solid var(--line)}
.btn:disabled{opacity:.5}
.cart-empty{color:var(--mut);text-align:center;padding:40px 10px}

.note-input{width:100%;margin-top:6px;padding:8px;border:1px solid var(--line);border-radius:8px}

/* ---------- 通用列表/报表 ---------- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:12px}
.panel h3{padding:12px 14px;margin:0;background:var(--brand-l);color:var(--brand-d);font-size:15px}
.panel .body{padding:12px 14px}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:12px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.kpi .v{font-size:26px;font-weight:800;color:var(--brand-d)}
.kpi .l{font-size:13px;color:var(--mut);margin-top:2px}
.order-row{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid var(--line);gap:8px}
.order-row:last-child{border-bottom:none}
.order-row .oid{font-weight:700}
.order-row .oms{font-size:12px;color:var(--mut)}
.tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700}
.tag.hall{background:#e7f1ea;color:var(--ok)}
.tag.room{background:#efe6f6;color:#6a3da8}
.tag.takeout{background:#e6f0f7;color:#1f6aa8}
.tag.breakfast{background:#fbf0e0;color:#b9770f}
.tag.robot{background:#e6f0fb;color:#1f6aa8}
.tag.dinein{background:#e7f1ea;color:#2e8b57}
.muted{color:var(--mut)}

/* ---------- 设置 ---------- */
.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.set-grid>.panel{align-self:start}
/* ---------- 报表 ---------- */
.rep-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin:2px 4px}
.rep-ctrl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rep-ctrl select,.rep-ctrl input{padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:14px;background:#fff;color:var(--ink)}
.bars{display:flex;align-items:flex-end;gap:5px;height:160px;padding:6px 2px 0}
.bar-col{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.bar{width:100%;max-width:38px;min-height:3px;background:linear-gradient(180deg,#c0563f,#a83a26);border-radius:5px 5px 0 0}
.bar-lbl{font-size:10px;color:var(--mut);margin-top:4px;white-space:nowrap;transform:scale(.92)}
.order-row.th{font-weight:700;color:var(--brand-d);background:var(--bg)}
.order-row.total{border-top:2px solid var(--brand);border-bottom:none;font-weight:800;background:#fbf3f0}
.order-row .mut{color:var(--mut);font-weight:400;font-size:13px}
.order-row i.mut{font-style:normal}
@media print{
  .topbar,.rep-ctrl{display:none !important}
  .stage{overflow:visible !important}
  .panel{break-inside:avoid}
}
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.field label{font-size:13px;color:var(--mut);font-weight:600}
.field input,.field select{padding:10px;border:1px solid var(--line);border-radius:8px}
/* 试营业临时菜单 开关 */
.switch-field{flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap}
.switch-field .hint{font-size:12px;color:var(--mut);flex:1;min-width:200px;line-height:1.4}
.switch{position:relative;display:inline-block;width:46px;height:26px;flex:0 0 auto}
.switch input{opacity:0;width:0;height:0}
.switch .slider{position:absolute;inset:0;background:#d9ccc4;border-radius:20px;cursor:pointer;transition:.2s}
.switch .slider:before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch input:checked + .slider{background:var(--brand)}
.switch input:checked + .slider:before{transform:translateX(20px)}
.temp-badge{display:inline-block;font-size:11px;font-weight:700;color:#fff;background:#e6a23c;border-radius:8px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.list-edit{max-height:48vh;overflow:auto;overscroll-behavior:contain;padding-right:2px}
.list-edit .li{display:flex;gap:8px;align-items:center;padding:8px;border-bottom:1px solid var(--line)}
.list-edit .li input{padding:8px;border:1px solid var(--line);border-radius:8px}
/* 菜单维护：按分类分组小标题（列表内滚动时吸顶） */
.li-group{margin-bottom:4px}
.li-group-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:6px;
  font-weight:700;color:#6d2a1c;background:#f5ede9;padding:7px 10px;border-radius:8px;
  font-size:15px;margin:6px 0 3px;border:1px solid #ecd9cf}
.li-group-head .ic{font-size:16px}
.li-group-head .cnt{margin-left:auto;background:#a83a26;color:#fff;border-radius:11px;
  padding:1px 9px;font-size:12px;font-weight:600;min-width:22px;text-align:center}
.li-group-head .gnote{margin-left:8px;font-weight:400;font-size:12px;color:#8a6a5f}
/* 菜品行：热销★标记 + 内联添加 */
.li.hot{background:#fff8ec;border-left:3px solid #e8a33d;border-radius:6px}
.mini.star{border:none;background:transparent;font-size:18px;line-height:1;color:#cfcfcf;width:30px;padding:0 2px;cursor:pointer}
.mini.star.on{color:#f5a623}
.mini.sold{border:1px solid #3a9d5d;background:#eafaf0;color:#2e8b50}
.mini.sold.off{border-color:#c0c0c0;background:#efefef;color:#999}
.li.soldout{opacity:.55}
.add-row{justify-content:flex-start;padding:4px 8px}
.mini.add-in-group{color:#a83a26;border:1px dashed #d9b3a7;background:#fff}
.mini.add-ok{color:#fff;background:#a83a26;border-color:#a83a26}
.mini.add-cancel{color:#777;border-color:#ccc}
.mini{font-size:13px;padding:6px 10px;border-radius:8px;background:var(--brand-l);color:var(--brand-d);font-weight:700}
.mini.del{background:#fbeaea;color:var(--warn)}
/* 菜品缩略图（设置→菜单维护） */
.list-edit .li .it-img{width:42px;height:42px;flex:0 0 auto;border-radius:9px;border:1px dashed var(--line);background:#f0e2da;cursor:pointer;padding:0;overflow:hidden;display:flex;align-items:center;justify-content:center;line-height:0}
.list-edit .li .it-img img{width:100%;height:100%;object-fit:cover}
.list-edit .li .it-img .it-empty{font-size:20px}
.list-edit .li .it-img:hover{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-l)}
.img-import-btn{cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.batch-import-bar{background:linear-gradient(135deg,#a83a26,#c0392b);color:#fff;border-radius:12px;padding:14px 16px;margin-bottom:12px;box-shadow:0 3px 10px rgba(168,58,38,.28)}
.batch-import-bar .bi-btn{display:inline-flex;align-items:center;gap:8px;background:#fff;color:#a83a26;font-weight:800;font-size:15px;padding:11px 20px;border-radius:10px;cursor:pointer;line-height:1}
.batch-import-bar .bi-btn:hover{background:#fff4ef}
.batch-import-bar .bi-tip{margin-top:10px;font-size:12.5px;line-height:1.7;opacity:.96}
.batch-import-bar .bi-tip code{background:rgba(255,255,255,.22);padding:1px 6px;border-radius:5px;font-family:Consolas,monospace}

/* ---------- 员工管理 ---------- */
.emp-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 2px;border-bottom:1px dashed var(--line)}
.emp-row:last-child{border-bottom:none}
.emp-row .emp-info{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.emp-row .emp-acts{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- 弹层 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(40,20,15,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal{background:#fff;border-radius:14px;width:min(440px,96vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.modal .mh{padding:16px;font-weight:800;font-size:18px;color:var(--brand-d);border-bottom:1px solid var(--line)}
.modal .mb{padding:16px}
.modal .mf{padding:14px 16px;border-top:1px solid var(--line);display:flex;gap:10px}
.pay-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}
.pay-grid .btn{border:2px solid var(--line);background:#fff;color:var(--ink)}
.pay-grid .btn.sel{border-color:var(--brand);color:var(--brand-d);background:var(--brand-l)}
.disc-row{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}
.disc-row input{width:90px;padding:8px;border:1px solid var(--line);border-radius:8px}
.modal-wide{width:min(560px,96vw)}
.ck-bd{background:var(--brand-l);border-radius:10px;padding:8px 12px;margin:8px 0;font-size:13px}
.ck-bd .bd-row{display:flex;justify-content:space-between;padding:2px 0;color:var(--mut)}
.ck-bd .bd-row.disc{color:var(--brand-d);font-weight:600}
.ck-bd .bd-row.floor{color:#1f7a4d;font-weight:700}
.disc-row.note-row input{flex:1;min-width:0}
.disc-row.cut-row .cut-tip{font-size:12px;color:var(--mut);opacity:.85;flex:1 1 100%;margin:2px 0 0}
.disc-row.cut-row input[type=number]{width:98px}
.mini.coupon.sel{border-color:var(--brand);color:var(--brand-d);background:var(--brand-l)}
.mcard{background:var(--brand-l);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.mcard .mc-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mcard .mc-top b{font-size:16px}
.mcard .mc-lv{background:var(--brand);color:#fff;border-radius:999px;padding:1px 10px;font-size:12px}
.mcard .mc-ph{color:var(--mut);font-size:13px}
.mcard .mc-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--mut)}
.mcard .mc-row b{color:var(--ink)}
.mcard .mc-warn{margin-top:6px;font-size:13px;color:#a85a00;background:#fff3e0;border:1px solid #ffd9a0;border-radius:8px;padding:6px 8px}
.mcard .mc-warn a{color:#c0392b;font-weight:700;margin-left:4px;cursor:pointer}
.mcard .mc-ok{margin-top:6px;font-size:13px;color:#1f7a4d;background:#e7f6ec;border:1px solid #bfe6cd;border-radius:8px;padding:6px 8px}
.mcard .mc-edit{margin-left:auto;font-size:12px;color:var(--brand-d);background:#fff;border:1px solid var(--brand);border-radius:999px;padding:2px 10px;cursor:pointer}


/* ---------- 小票打印 ---------- */
@media print{
  body{overflow:visible;background:#fff}
  .topbar,.stage,.modal-mask{display:none!important}
  .receipt{display:block!important}
}
.receipt{display:none;padding:0;font-size:13px;width:300px}
.receipt h2{text-align:center;margin:0 0 6px}
.receipt .rline{border-top:1px dashed #999;margin:6px 0}
.receipt table{width:100%;border-collapse:collapse}
.receipt td{padding:2px 0}
.receipt .rt{text-align:right}
.receipt .ctr{text-align:center;color:#666;margin-top:10px;font-size:11px}

/* ---------- 响应式：窄屏（iPad 竖屏 / 手机） ---------- */
@media (max-width:820px){
  /* 菜单分类改为左侧竖向栏（竖排），菜品在右、购物车沉底，避免分类挤成横条 */
  .order-layout{grid-template-columns:104px 1fr;grid-template-rows:1fr auto;height:100%}
  .cat-list{flex-direction:column;overflow:auto;padding-right:4px}
  .cat-btn{flex:0 0 auto;justify-content:center;padding:13px 8px;font-size:14px}
  .dishes{grid-column:2;grid-row:1;max-height:none}
  .cart{grid-column:1 / -1;grid-row:2;max-height:38vh}
  .set-grid{grid-template-columns:1fr}
  .stage{padding:10px}
}
/* iPad 横屏更宽，三栏自然铺开 */
@media (min-width:900px) and (max-width:1200px){
  .order-layout{grid-template-columns:130px 1fr 300px}
}
/* ---------- 响应式：手机窄屏（390px 档）专项，消除横向溢出（DEF-11） ---------- */
@media (max-width:520px){
  html,body{overflow-x:hidden}
  .topbar{flex-wrap:wrap;row-gap:8px;padding-left:10px;padding-right:10px;gap:8px}
  .topbar .logo{font-size:16px}
  .topbar .tabs{order:3;flex-basis:100%;flex:1 0 100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .topbar .tab{padding:7px 12px;font-size:14px}
  .topbar .biz-btn{padding:6px 8px;font-size:11px}
  .topbar .sync{font-size:11px;padding:5px 8px}
  .topbar .emp-login,.topbar .emp-badge,.topbar .emp-logout{font-size:12px;padding:6px 9px}
  .stage{padding:8px;overflow-x:hidden}
  .tables{grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:8px}
  .table .t-main{padding:10px 6px;min-height:82px}
  .table .nm{font-size:16px}
  .modal,.modal-wide{width:calc(100% - 16px)!important;max-width:100%!important}
  .modal .mb{max-height:72vh;overflow-y:auto}
  .pay-grid{grid-template-columns:1fr 1fr}
  /* 窄屏进一步收窄分类竖栏，保证菜品区仍有足够宽度 */
  .order-layout{grid-template-columns:84px 1fr}
  .cat-btn{font-size:13px;padding:11px 5px;gap:5px}
  .cat-btn .ic{font-size:17px}
  /* 订单行：允许换行，避免内容顶宽 */
  .order-row{flex-wrap:wrap}
  .order-row>div{max-width:100%;min-width:0}
  .disc-row{flex-wrap:wrap}
  .kv{gap:8px}
}
/* 兜底：任何内容都不得撑破视口宽度 */
@media (max-width:520px){
  .panel,.order-row,.modal,.o-pick,.set-grid,.kpis{max-width:100%}
  img,table,svg,textarea{max-width:100%}
  .cart,.dishes,.cat-list{min-width:0;overflow-x:auto}
}

/* ---------- 桌台二维码卡片 ---------- */
.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:12px}
.qr-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center;box-shadow:var(--shadow)}
.qr-name{font-size:16px;font-weight:800;color:var(--brand-d)}
.qr-zone{font-size:12px;color:var(--mut);margin-bottom:6px}
.qr-img{display:flex;justify-content:center;margin:4px 0}
.qr-img svg{width:100%;height:auto;max-width:150px;display:block}
.qr-url{font-size:10px;color:#9a8b82;word-break:break-all;line-height:1.3;margin:6px 0;background:var(--bg);padding:5px 7px;border-radius:7px}
.qr-acts{display:flex;gap:8px;justify-content:center}
.qr-acts .mini{flex:1}
