  :root{
    --green:#00704a; --green-2:#0e5c3f; --green-soft:#e6f0ea;
    --gold:#b98a3f; --ink:#1e2a24; --muted:#7a867f;
    --paper:#f4f2eb; --card:#fffdf8; --line:#e2ddcf;
    --hot:#d3543f; --hot-soft:#fdeeeb;
    --cold:#2f80c9; --cold-soft:#e9f2fb;
    --shadow:0 1px 2px rgba(20,40,30,.05),0 10px 26px -18px rgba(20,40,30,.25);
    --serif:Georgia,"Times New Roman","Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;
    --sans:"Segoe UI","PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
    --mono:"SFMono-Regular",Consolas,"Liberation Mono","Courier New",monospace;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{font-family:var(--sans);background:var(--paper);color:var(--ink);font-size:14px;overflow:hidden;
    background-image:radial-gradient(circle at 12% -8%,rgba(0,112,74,.06),transparent 42%),radial-gradient(circle at 90% 8%,rgba(185,138,63,.07),transparent 40%)}
  button{font-family:inherit;cursor:pointer;border:0;background:none}
  input,select,textarea{font-family:inherit;font-size:13.5px;color:var(--ink)}
  a{color:var(--green);text-decoration:none}

  .app{height:100vh;display:grid;grid-template-rows:auto minmax(0,1fr) auto}

  /* ================= 顶栏 ================= */
  .topbar{position:sticky;top:0;max-width:100%;background:rgba(20,42,33,.97);color:#eef4ef;z-index:60;box-shadow:0 1px 0 rgba(255,255,255,.08),0 12px 28px -22px rgba(0,0,0,.6)}
  .topbar .inner{margin:0 auto;display:flex;align-items:center;gap:14px;padding:10px 18px;position:relative}
  /* 顶栏居中页面切换 */
  .tbsw{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;gap:4px;background:rgba(255,255,255,.07);padding:4px;border-radius:12px}
  /* 激活背景改为「滑块」，点击时左右丝滑滑动到目标页签 */
  .tbsl{position:absolute;left:4px;top:4px;bottom:4px;width:0;background:linear-gradient(135deg,#0d9465,#006a45);border-radius:9px;z-index:0;transition:left .32s cubic-bezier(.32,.72,.3,1),width .32s cubic-bezier(.32,.72,.3,1);box-shadow:0 6px 14px -8px rgba(0,0,0,.6)}
  .tbsw a{display:flex;align-items:center;gap:7px;color:#bcd8cc;padding:6px 15px;border-radius:9px;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;transition:color .18s;position:relative;z-index:1}
  .tbsw a:hover{color:#fff}
  .tbsw a.on{background:transparent;color:#fff;box-shadow:none}
  .topbar .logo{width:34px;height:34px;border-radius:50%;flex:0 0 34px;background:linear-gradient(145deg,#14a06d,#005e3e);display:grid;place-items:center;font-size:16px;overflow:hidden;box-shadow:inset 0 0 0 2px rgba(255,255,255,.18)}
  .topbar .logo img{width:100%;height:100%;object-fit:cover;display:block}
  .lic{display:inline-block;width:1em;height:1em;flex:0 0 auto;vertical-align:-.14em;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .topbar h1{font-family:var(--serif);font-size:17px;letter-spacing:.5px;line-height:1.3;white-space:nowrap}
  .topbar .sub{font-size:11px;opacity:.65;letter-spacing:1.6px;text-transform:uppercase;margin-top:-1px;line-height:1.3;white-space:nowrap}
  .tbright{margin-left:auto;position:relative}
  .btnset{display:inline-flex;align-items:center;gap:6px;color:#ffe7b0;font-size:13px;font-weight:600;border:1px solid rgba(233,190,120,.5);padding:6px 14px;border-radius:99px;transition:.18s;text-decoration:none;background:none;font-family:inherit;cursor:pointer}
  .btnset:hover{background:rgba(233,190,120,.16)}
  /* 「有功能更新」时才显示：用来刷新到最新版本 */
  .btnupd{display:inline-flex;align-items:center;gap:6px;color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;
    border:1px solid rgba(255,255,255,.3);background:linear-gradient(135deg,#e2761b,#c9541a);padding:6px 13px;border-radius:99px;margin-right:8px;
    transition:.18s;animation:updPulse 1.9s ease-in-out infinite}
  .btnupd[hidden]{display:none}
  .btnupd .lic{width:14px;height:14px}
  .btnupd:hover{filter:brightness(1.08)}
  .btnupd.busy{opacity:.7;cursor:progress;animation:none}
  @keyframes updPulse{0%,100%{box-shadow:0 0 0 0 rgba(226,118,27,.6)}50%{box-shadow:0 0 0 7px rgba(226,118,27,0)}}
  @keyframes ddIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1}}

  /* ================= 三列 ================= */
  .cols{min-height:0;height:100%;display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:302px minmax(0,1fr) 400px;gap:14px;padding:14px 16px;width:100%}
  .col{min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:13px;scrollbar-gutter:stable;padding-right:2px}
  .panel{background:var(--card);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);overflow:hidden;flex:0 0 auto}
  .panel>header{padding:11px 15px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}
  .panel>header .t{font-size:13.5px;font-weight:700;letter-spacing:.3px;display:flex;align-items:center;gap:7px}
  .panel>header .t::before{content:"";width:4px;height:13px;border-radius:3px;background:var(--green);display:inline-block}
  .panel>header .hint{margin-left:auto;font-size:11px;color:var(--muted)}
  .panel .body{padding:13px 15px}
  /* 中列：面板自适应高度，列表在 .body 内滚动 */
  .col-mid{overflow-y:hidden}
  .col-mid .panel{flex:1;min-height:0;display:flex;flex-direction:column}
  .col-mid .panel .body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}
  /* 右列：预览内滚，已点清单始终吸附视口底部 */
  .col-right{overflow-y:hidden}
  .col-right>.panel{flex:1;min-height:0;display:flex;flex-direction:column}
  .col-right>.panel .body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}

  /* 订单信息 */
  .storeline{display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px;margin-bottom:12px;background:linear-gradient(90deg,#eef5ef,#f7fbf6);border:1px solid #d8e6db;border-radius:10px;padding:7px 11px;font-size:12.5px}
  .storeline .st{font-weight:700;color:var(--green-2)}
  .storeline .abbr{font-family:var(--mono);font-weight:800;color:#fff;background:var(--green);border-radius:6px;padding:1px 7px;font-size:11.5px}
  .storeline .srv{color:var(--muted);font-size:11.5px}
  .storeline .hint-sm{margin-left:auto;color:var(--muted);font-size:10.5px;font-family:var(--mono)}
  .blk{margin-top:12px}
  .blk-t{font-size:11.5px;font-weight:700;color:var(--ink);margin-bottom:6px;display:flex;align-items:center;gap:6px}
  .blk-t small{font-weight:400;color:var(--muted);font-size:10px}
  .pills{display:flex;flex-wrap:wrap;gap:6px}
  .pill{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line);background:#fff;border-radius:99px;padding:5px 11px;font-size:12px;font-weight:600;transition:.15s;color:var(--ink);white-space:nowrap}
  .pill:hover{border-color:#a8cdb4}
  .pill.on{border-color:var(--green);background:var(--green-soft);color:var(--green-2);box-shadow:0 0 0 1px var(--green) inset}

  /* 优惠 */
  .rules{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .rule{position:relative}
  .rule input{position:absolute;opacity:0;pointer-events:none}
  .rule{cursor:pointer}
  .rule span{display:block;border:1.5px solid var(--line);border-radius:9px;padding:6px 4px;text-align:center;font-size:11.5px;background:#fff;transition:.16s;font-weight:700;cursor:pointer}
  .rule:hover span{border-color:#9fc8ac;background:#f2f9f2}
  .rule input:checked+span{border-color:var(--green);background:var(--green-soft);color:var(--green-2);box-shadow:0 0 0 1px var(--green) inset}
  .rule span small{display:block;font-weight:400;color:var(--muted);font-size:9.5px;margin-top:1px}
  .customrow{display:none;align-items:center;gap:8px;margin-top:9px;padding:8px 10px;background:var(--green-soft);border-radius:9px;flex-wrap:wrap}
  .customrow.show{display:flex}
  .customrow .lbl{font-size:11.5px;color:var(--green-2);font-weight:700}
  .customrow input{width:80px;border:1px solid var(--line);border-radius:7px;padding:5px 7px;font-family:var(--mono)}
  input.tin{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12.5px;font-family:var(--mono);background:#fffdf8;color:var(--ink)}
  input.tin:focus{outline:none;border-color:var(--green)}
  .tin-wrap{position:relative}
  .tin-wrap .tin{width:100%;padding-right:28px}
  .tin-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:19px;height:19px;border-radius:50%;border:0;background:#e5e9e3;color:#6b766f;display:none;place-items:center;cursor:pointer;padding:0}
  .tin-clear .lic{width:11px;height:11px}
  .tin-wrap.has-val:hover .tin-clear{display:grid}
  .tin-clear:hover{background:#d9e2d8;color:#a2372a}
  .tin-rst{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:19px;height:19px;border-radius:50%;border:0;background:#e5e9e3;color:#6b766f;display:grid;place-items:center;cursor:pointer;padding:0;opacity:0;transition:.15s}
  .tin-wrap:hover .tin-rst{opacity:1}
  .tin-rst .lic{width:11px;height:11px}
  .tin-rst:hover{background:#d4e5d8;color:var(--green)}
  .chips{display:flex;gap:5px}
  .chips button{font-size:10.5px;padding:3px 9px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink)}
  .chips button.on{background:var(--green);color:#fff;border-color:var(--green)}

  /* ============ 中列：菜单 ============ */

  /* 顶部分类筛选条（分类在「设置 → 分类管理」里维护；没有分类时整条隐藏） */
  .catbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
  .catbar button{font-size:12px;font-weight:700;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 13px;transition:.15s}
  .catbar button:hover{border-color:var(--green);color:var(--green-2)}
  .catbar button.on{background:linear-gradient(135deg,#0d9465,#006a45);color:#fff;border-color:transparent;box-shadow:0 5px 12px -8px rgba(0,80,50,.6)}

  .mlist{display:flex;flex-direction:column;gap:15px}
  /* 分组：左侧竖排小标签（贴住面板左边线）+ 右侧商品网格 */
  .gsec{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start}
  .gside{writing-mode:vertical-rl;text-orientation:upright;display:flex;align-items:center;justify-content:center;gap:3px;
    font-size:11.5px;font-weight:800;letter-spacing:3px;color:#fff;padding:8px 5px;border-radius:0 9px 9px 0;flex:0 0 auto;
    margin-left:-15px;box-shadow:0 6px 14px -8px rgba(0,0,0,.35)}
  .gside .gn{writing-mode:horizontal-tb;font-size:9px;font-weight:600;letter-spacing:0;opacity:.85}
  .gside.hot{background:linear-gradient(180deg,#e06a50,#b03a24)}
  .gside.iced{background:linear-gradient(180deg,#4b9fe0,#1f6fb5)}

  .pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px}
  /* 商品卡片：图贴外边框，热红/冰蓝边框，名称中英，悬停出现加减 */
  .pcard{position:relative;border-radius:14px;overflow:hidden;background:#fff;border:2.5px solid;transition:.18s;display:flex;flex-direction:column;box-shadow:var(--shadow);cursor:pointer}
  .pcard.t-hot{border-color:var(--hot)}
  .pcard.t-iced{border-color:var(--cold)}
  .pcard.sel{border-color:var(--green);box-shadow:0 8px 20px -12px rgba(0,112,74,.55)}
  /* 选中商品：名称区绿底白字 */
  .pcard.sel .pinfo{background:var(--green)}
  .pcard.sel .pinfo .cn{color:#fff}
  .pcard.sel .pinfo .en{color:rgba(255,255,255,.78)}
  .pcard:hover{transform:translateY(-2px);filter:saturate(1.05)}
  .pimg{position:relative;width:100%;aspect-ratio:1/1;background:#f7f8f3;overflow:hidden}
  .pimg img{width:100%;height:100%;object-fit:cover;display:block}
  .pimg .qbadge{position:absolute;top:6px;right:6px;min-width:22px;height:22px;border-radius:99px;background:rgba(20,42,33,.85);color:#fff;font:800 12px/22px var(--mono);text-align:center;padding:0 6px;z-index:2}
  .pfoot{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;align-items:center;justify-content:center;gap:4px;padding:5px 6px;background:linear-gradient(180deg,rgba(20,42,33,0),rgba(20,42,33,.88));opacity:0;transition:.18s}
  .pcard:hover .pfoot{opacity:1}
  .pfoot .mbtn{width:30px;height:30px;border-radius:99px;font-size:17px;font-weight:800;display:grid;place-items:center;line-height:1;transition:.14s}
  .pfoot .mbtn.plus{background:var(--green);color:#fff}
  .pfoot .mbtn.plus:hover{background:#01905b}
  .pfoot .mbtn.minus{background:rgba(255,255,255,.92);color:#233}
  .pfoot .mbtn.minus:hover{background:#fff;color:#000}
  .pfoot .pcnt{min-width:22px;text-align:center;font:800 14px/1 var(--mono);color:#fff}
  .pinfo{padding:6px 8px 8px;display:flex;flex-direction:column;gap:1px;align-items:center;text-align:center}
  .pinfo .cn{font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .pinfo .en{font-size:9.5px;color:var(--muted);letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .pcard.dim{opacity:.5;filter:grayscale(.8)}
  .empty{padding:22px 8px;text-align:center;color:var(--muted);font-size:12.5px}
  .empty b{display:block;font-size:24px;margin-bottom:5px;opacity:.4}

  /* ---------- 中列 header：订单标签栏（挂起 / 切换 / 完结） ---------- */
  .otabs{display:flex;align-items:center;gap:5px;margin-left:auto;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:2px 0 2px 8px;scrollbar-width:none}
  .otabs::-webkit-scrollbar{height:0}
  /* 两段式胶囊：门店缩写 | 时间（+ 关闭叉） */
  .otab{display:inline-flex;align-items:center;flex:0 0 auto;border:1.5px solid var(--line);background:#fff;border-radius:99px;padding:2px 4px 2px 2px;font:800 11px/1.6 var(--mono);color:var(--ink);white-space:nowrap;cursor:pointer;transition:.15s}
  .otab:hover{border-color:#a8cdb4}
  .otab .abbr{padding:1px 7px;border-radius:99px;background:var(--green-soft);color:var(--green-2);letter-spacing:.6px}
  .otab .tm{padding:0 6px 0 7px;letter-spacing:.3px}
  .otab.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset}
  .otab.on .abbr{background:var(--green);color:#fff}
  .otab .x{width:15px;height:15px;border-radius:50%;display:grid;place-items:center;color:var(--muted);transition:.14s}
  .otab .x .lic{width:9px;height:9px}
  .otab .x:hover{background:#fbeeea;color:#b03a2e}
  .ohist{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;border:1.5px dashed var(--line);background:#fff;border-radius:99px;padding:4px 11px;font-size:11.5px;font-weight:700;color:var(--muted);cursor:pointer;transition:.15s}
  .ohist:hover{border-color:var(--green);color:var(--green-2)}
  .ohist .lic{width:12px;height:12px}

  /* ---------- 订单完结确认弹窗 ---------- */
  .finbody{padding:15px 17px 17px}
  .finbody p{margin:0 0 15px;font-size:13px;line-height:1.75;color:var(--ink)}
  .finbody b{color:var(--green-2);font-family:var(--mono)}
  .fintip{display:block;margin-top:7px;font-size:11.5px;color:var(--muted);line-height:1.6}
  .fbar{display:flex;align-items:center;gap:10px;justify-content:space-between}
  .fbar-right{display:flex;gap:10px}

  /* ---------- 场景管理弹窗（场景自动绑定取餐方式） ---------- */
  .scnbody{padding:15px 17px 5px;overflow:auto}
  .scn-sec-t{font-size:11.5px;font-weight:800;color:var(--muted);letter-spacing:.4px;margin:0 0 8px}
  .scn-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:15px}
  .scn-card{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:10px 4px 9px;text-align:center;cursor:pointer;transition:.15s;display:flex;flex-direction:column;align-items:center;gap:4px}
  .scn-card:hover{border-color:#a8cdb4}
  .scn-card.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset;background:var(--green-soft)}
  .scn-card .lic{width:17px;height:17px;color:var(--green-2)}
  .scn-card .cn{font-size:12px;font-weight:800;color:var(--ink);white-space:nowrap}
  .scn-card .bd{font-size:9.5px;color:var(--muted);white-space:nowrap}
  .scn-no-in{display:flex;gap:8px;align-items:center}
  .scn-no-in .tin{flex:1}
  .scn-no-in .tin[readonly]{background:#f5f5f5;color:var(--green-2);font-weight:800}
  .scnempty{width:100%;padding:12px 8px;text-align:center;color:var(--muted);font-size:12px;border:1.5px dashed var(--line);border-radius:10px}
  /* 设置面板 - 场景管理弹窗 */
  .scn-mgr{width:520px;max-width:96vw}
  .scn-mgr-body{padding:15px 17px 17px}
  .scn-mgr-add{display:flex;gap:8px;align-items:center;margin-bottom:12px}
  .scn-mgr-add input{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font:600 12.5px var(--sans);color:var(--ink);outline:none;transition:.15s}
  .scn-mgr-add input:focus{border-color:var(--green)}
  .scn-mgr-add select{border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font:600 12.5px var(--sans);color:var(--ink);background:#fff;outline:none;cursor:pointer}
  .scn-mgr-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto;margin-bottom:10px}
  .scn-mgr-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1.5px solid var(--line);border-radius:10px;background:#fff;transition:.15s}
  .scn-mgr-row:hover{border-color:#a8cdb4}
  .scn-mgr-row .cn{flex:1;font-size:12.5px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .scn-mgr-row .bd{font-size:10.5px;color:var(--muted);white-space:nowrap}
  .scn-mgr-row .rm{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:4px;border-radius:6px;transition:.15s;display:flex;align-items:center}
  .scn-mgr-row .rm:hover{color:#b03a2e;background:#fdf0ef}
  .scn-mgr-row .rm .lic{width:14px;height:14px}
  /* 左列桌号 / 房号输入框（自提取餐号自动生成、只读，样式与可填写区分开） */
  .tin-wrap .tin[readonly]{background:#f5f5f5;color:var(--green-2);font-weight:800;cursor:default}
  .btn.del{background:linear-gradient(180deg,#dc4a3a,#a22b1e);color:#fff;box-shadow:0 8px 16px -8px rgba(180,40,30,.6)}
  .btn.del:hover{filter:brightness(1.06)}
  .mlhead .t{flex:0 0 auto}

  /* ============ 右列：预览 + 金额 ============ */
  .pvhead{display:flex;align-items:center;gap:8px}
  .pvhead .phint{margin-left:auto;font-size:11px;color:var(--muted)}
  .panel header .phint{margin-left:auto;font-size:11px;color:var(--muted)}
  .btn{display:inline-flex;align-items:center;gap:6px;border-radius:10px;padding:8px 13px;font-size:12.5px;font-weight:700;transition:.16s;border:1px solid transparent;white-space:nowrap}
  .btn.green{background:linear-gradient(180deg,#079a63,#005e3e);color:#fff;box-shadow:0 8px 16px -8px rgba(0,80,50,.6)}
  .btn.green:hover{filter:brightness(1.06)}
  .btn.ghost{border-color:var(--line);background:#fff;color:var(--ink)}
  .btn.ghost:hover{border-color:var(--green);color:var(--green-2)}
  .btn.sm{padding:5px 10px;font-size:11.5px;border-radius:8px}
  .imgs{display:flex;gap:7px}
  .imgs .btn{flex:1;justify-content:center;padding:7px 4px;font-size:11.5px}
  .tabs{display:flex;gap:4px;background:#eef0ea;padding:3px;border-radius:9px;width:fit-content}
  .tabs button{font-size:12px;padding:4px 12px;border-radius:7px;font-weight:600;color:var(--muted)}
  .tabs button.on{background:#fff;color:var(--green-2);box-shadow:0 1px 3px rgba(0,0,0,.12)}
  /* 手机小票预览 */
  .phwrap{margin-top:11px;border-radius:16px;padding:9px 9px 13px;background:#e7e4db;box-shadow:inset 0 2px 6px rgba(0,0,0,.07),0 12px 26px -18px rgba(0,0,0,.4)}
  .phbox{width:min(100%,340px);margin:0 auto;border-radius:4px;overflow:hidden;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.14)}
  .phbox canvas{width:100%;height:auto;display:block}
  .phbar{margin:0 auto 7px;width:min(100%,340px);display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:#5c5a52}
  .phbar .pt{font-weight:700}
  .phbar .pb{font-family:var(--mono)}

  /* ============ 已点清单（右列内嵌 dock · 单行紧凑 · 吸底） ============ */
  .dockwrap{position:sticky;bottom:0;z-index:5;flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:9px;
    background:rgba(15,19,24,.72);backdrop-filter:blur(22px) saturate(1.6);-webkit-backdrop-filter:blur(22px) saturate(1.6);
    border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:6px 10px;
    box-shadow:0 20px 44px -18px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.08)}
  /* 收起：只留「图标 + 杯数 + 合计」，高度降到 36px 左右 */
  .dockwrap.fold .docklist{display:none}
  .dockwrap.fold .dock-sum{flex-direction:row;align-items:baseline;gap:7px;border-left:0}
  .dockwrap.fold .dock-sum .a{display:none}
  .dockwrap.fold .dhide .lic{transform:rotate(180deg)}
  .dock-top{display:flex;align-items:center;gap:5px;flex:0 0 auto;cursor:pointer;user-select:none;border-radius:8px;padding:2px 0}
  .dock-top:hover{background:rgba(255,255,255,.06)}
  .dock-top .dh-t{font-size:12px;font-weight:800;display:flex;align-items:center;gap:4px;color:#f1f5f2}
  .dock-top .dh-t b{font:800 12px var(--mono)}
  .dock-top .dh-t .lic{width:14px;height:14px;color:#7fe0b0}
  .dclear{flex:0 0 auto;font-size:10.5px;color:#ffb3a0;border:1px solid rgba(255,163,138,.4);border-radius:7px;padding:4px 9px;transition:.15s}
  .dclear:hover{background:rgba(255,120,90,.15)}
  .docklist{flex:1;min-width:0;display:flex;gap:7px;overflow-x:auto;padding:2px 2px 0;align-items:center;justify-content:flex-start}
  .docklist::-webkit-scrollbar{height:4px}
  .docklist::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:99px}
  .docklist .empty{color:rgba(255,255,255,.55)}
  .di{position:relative;flex:0 0 auto;cursor:pointer;display:flex;flex-direction:column;align-items:center}
  /* 角标不被裁剪：img 容器 overflow visible，圆角由内层 img 自己裁 */
  .di .img{position:relative;width:38px;height:38px;border-radius:9px;overflow:visible;background:#fff;border:2px solid var(--line);box-shadow:0 6px 12px -6px rgba(0,0,0,.55);transition:.18s}
  .di:hover .img{transform:translateY(-3px) scale(1.07)}
  .di .img img{width:100%;height:100%;object-fit:cover;display:block;border-radius:7px}
  .di.t-hot .img{border-color:var(--hot)}
  .di.t-iced .img{border-color:var(--cold)}
  .di .cnt{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;border-radius:99px;background:var(--green);color:#fff;font:800 9.5px/16px var(--mono);text-align:center;padding:0 4px;border:1.5px solid #fff;box-shadow:0 3px 8px -2px rgba(0,0,0,.4)}
  .di .note-dot{position:absolute;bottom:-4px;left:-4px;width:12px;height:12px;border-radius:99px;background:var(--gold);border:1.5px solid #fff;display:grid;place-items:center;color:#fff;font-size:7px}
  .di .nm{font-size:9px;line-height:1.2;color:rgba(255,255,255,.72);text-align:center;margin-top:1px;max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dock-sum{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;line-height:1.3;padding-left:9px;border-left:1px dashed rgba(255,255,255,.18)}
  .dock-sum .a{font-size:10.5px;color:rgba(255,255,255,.6);white-space:nowrap}
  .dock-sum .b{font-size:15px;font-weight:800;font-family:var(--mono);color:#7fe0b0;white-space:nowrap}
  .dock-sum .c{font-size:10px;color:#ff9d88;font-weight:700;white-space:nowrap}
  .dhide{flex:0 0 auto;width:22px;height:22px;border-radius:99px;display:grid;place-items:center;color:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.18);transition:.16s}
  .dhide .lic{width:13px;height:13px}
  .dhide:hover{background:rgba(255,255,255,.12);color:#fff}

  /* 弹出的杯详情（备注/增减） */
  .dockpop{position:fixed;z-index:95;width:316px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 28px 64px -20px rgba(0,0,0,.5);padding:13px 14px;display:none;transform-origin:50% 100%;transform:scale(1.2)}
  .dockpop.show{display:block;animation:ddIn .15s ease}
  .dockpop .dp-top{display:flex;align-items:baseline;gap:8px;margin-bottom:3px}
  .dockpop .dp-name{font-weight:800;font-size:15.5px}
  .dockpop .dp-sub{font-size:12px;color:var(--muted)}
  .dockpop .dp-price{margin-left:auto;font:800 16.5px var(--mono);color:var(--green-2)}
  .dockpop .dp-tag{font-size:12px;font-weight:700;color:#8a6523;margin-bottom:9px}
  .dp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
  .dp-chips button{font-size:12.5px;padding:4px 10px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink)}
  .dp-chips button.on{border-color:var(--gold);background:#fbf1d8;color:#8a6523;font-weight:700}
  .dp-row{display:flex;align-items:center;gap:10px}
  .dp-row .st{display:flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
  .dp-row .st button{width:30px;height:30px;font-size:16px;font-weight:800;color:var(--green-2)}
  .dp-row .st button:hover{background:var(--green-soft)}
  .dp-row .st b{min-width:26px;text-align:center;font:800 14px var(--mono)}
  .dp-row .rm{margin-left:auto;font-size:11px;color:#b03a2e;border:1px solid #e8cfc2;padding:4px 10px;border-radius:8px}
  .dp-row .rm:hover{background:#fbeeea}

  .mask{position:fixed;inset:0;background:rgba(14,24,20,.55);backdrop-filter:blur(3px);z-index:100;display:none;place-items:center;padding:26px}
  .mask.show{display:grid}
  /* 设置中心：顶栏下方白底面板，底部向上滑入（顶部只到导航栏位置）；左侧栏切换（Shopify 后台风格） */
  .setwrap{position:fixed;left:0;right:0;bottom:0;top:var(--tbh,0px);background:#fff;z-index:100;display:flex;transform:translateY(100%);visibility:hidden;transition:transform .38s cubic-bezier(.32,.72,.3,1),visibility 0s .38s}
  .setwrap.show{transform:none;visibility:visible;transition:transform .38s cubic-bezier(.32,.72,.3,1)}
  .snav{flex:0 0 232px;display:flex;flex-direction:column;gap:2px;background:#f6f6f7;border-right:1px solid #e3e3e3;padding:16px 12px 14px}
  .snav-t{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;color:#1a1a1a;padding:4px 10px 14px;letter-spacing:.5px}
  .snav-t .lic{color:var(--green);width:17px;height:17px}
  .snav-list{display:flex;flex-direction:column;gap:2px}
  .snav-list button{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;color:#4a4a4a;padding:9px 12px;border-radius:8px;text-align:left;transition:.15s}
  .snav-list button .lic{width:16px;height:16px;color:#8a8a8a;transition:.15s}
  .snav-list button:hover{background:#ececec}
  .snav-list button.on{background:#fff;color:var(--green-2);box-shadow:0 1px 2px rgba(0,0,0,.12),0 0 0 1px rgba(0,0,0,.05)}
  .snav-list button.on .lic{color:var(--green)}
  .snav-back{margin-top:auto;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:#616161;padding:9px 12px;border-radius:8px}
  .snav-back .lic{width:15px;height:15px}
  .snav-back:hover{background:#ececec;color:#1a1a1a}
  .smain{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}
  .shead{display:flex;align-items:center;gap:10px;padding:14px 26px;border-bottom:1px solid var(--line);background:#fff;flex:0 0 auto}
  .shead h2{font-size:16.5px;font-weight:800;color:#1a1a1a}
  .shead .x{margin-left:auto;width:30px;height:30px;color:#616161;padding:0;border-radius:8px;display:grid;place-items:center;border:1px solid transparent}
  .shead .sback{display:none;color:var(--green-2);border-color:var(--line)}
  .shead .x .lic{width:15px;height:15px}
  .shead .x:hover{background:#f1f1f1;color:#1a1a1a}
  .sbody{flex:1;min-height:0;overflow:auto;padding:22px 26px 30px}
  .sbody>section{display:none;max-width:920px;margin:0 auto}
  .sbody>section.on{display:block;animation:secin .25s ease both}
  @keyframes secin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .sbody .vbody,.sbody .pbody{overflow:visible;padding:0}
  .modal{background:#f6f4ee;border-radius:18px;max-width:min(700px,94vw);max-height:90vh;width:100%;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 70px -20px rgba(0,0,0,.5)}
  .modal header{display:flex;align-items:center;gap:10px;padding:13px 17px;border-bottom:1px solid var(--line);background:var(--card)}
  .modal header h3{font-size:14.5px;display:flex;align-items:center;gap:8px}
  .modal header .x{margin-left:auto;width:28px;height:28px;color:var(--muted);padding:0;border-radius:8px;display:grid;place-items:center}
  .modal header .x .lic{width:15px;height:15px}
  .modal header .x:hover{background:#efe6dc;color:#111}
  .modal .mbar{display:flex;justify-content:center;gap:10px;padding:12px 16px 14px;flex-wrap:wrap}
  .mimgwrap{overflow:auto;padding:14px 16px;text-align:center}
  .mimgwrap .phbox{margin:0 auto;width:min(100%,360px)}
  .mimgwrap canvas{width:100%;height:auto;display:block}
  .cbody{overflow:auto;padding:15px 17px}
  .cfield{margin-bottom:12px}
  .cfield label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:5px;font-weight:700;letter-spacing:.3px}
  .cfield input{width:100%;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:#fff}
  .cfield input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,112,74,.1)}
  .cfield .tip{font-size:11px;color:var(--muted);margin-top:5px}
  .abbrq{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}
  .abbrq button{font-family:var(--mono);font-weight:800;padding:4px 12px;border-radius:8px;border:1.5px solid var(--line);background:#fff;font-size:12.5px}
  .abbrq button.on{background:var(--green);color:#fff;border-color:var(--green)}
  .vbody{overflow:auto;padding:15px 17px}
  /* 设置中心添加卡片：带标签字段网格（门店 / 位置管理共用） */
  .fcard{border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 14px;margin-bottom:14px}
  .fc-t{display:flex;align-items:center;gap:10px;font-weight:800;font-size:13px;color:#1a1a1a;margin-bottom:10px}
  .fc-t::before{content:"";width:4px;height:14px;border-radius:4px;background:var(--green)}
  .fc-t .btnmini{margin-left:auto;padding:6px 13px}
  .fgrid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,2fr) minmax(0,1.1fr) minmax(0,1.6fr);gap:10px 12px}
  .fl label{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:4px;letter-spacing:.3px}
  .fl input,.fl select{width:100%;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:#fff;min-width:0}
  .fl select{cursor:pointer}
  .fl input:focus,.fl select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,112,74,.1)}
  .fl .f-ab{font-family:var(--mono);font-weight:800;text-transform:uppercase;text-align:center}
  /* 列表列头（与行网格模板对齐，移动端隐藏） */
  .lhead{display:grid;gap:6px;align-items:center;padding:0 10px;margin-bottom:3px;font-size:10.5px;font-weight:800;color:#98a39b;letter-spacing:.4px}
  .lhead .h-op{grid-column:span 2;justify-self:end}
  .lh-st{grid-template-columns:minmax(0,1.2fr) minmax(0,1.4fr) 62px 78px auto auto}
  .lh-ven{grid-template-columns:minmax(0,1.2fr) minmax(0,1.2fr) 72px minmax(0,1fr) auto auto}
  .btnmini{padding:5px 12px;border-radius:8px;font-size:12px;background:var(--green-soft);color:var(--green-2);font-weight:700;white-space:nowrap}
  .venlist{display:flex;flex-direction:column;gap:6px}
  /* 历史订单行：左侧图片 + 右侧订单信息，水平排列 */
  .orow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff;display:flex;gap:10px;align-items:flex-start}
  /* 商品图：横向排列（多图放不下时自动换行），不挤压右侧订单信息 */
  .o-imgs{display:flex;flex-direction:row;flex-wrap:wrap;gap:4px;flex:0 0 auto;max-width:50%}
  .oi{position:relative;width:44px;height:44px;border-radius:8px;overflow:visible;background:#f5f6f1;border:1.5px solid var(--line);box-shadow:0 4px 8px -6px rgba(0,0,0,.35)}
  .oi img{width:100%;height:100%;object-fit:cover;display:block;border-radius:7px}
  .oi.t-hot{border-color:var(--hot)}
  .oi.t-iced{border-color:var(--cold)}
  .oi-qty{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:99px;background:var(--green);color:#fff;font:800 10.5px/18px var(--mono);text-align:center;padding:0 4px;border:1.5px solid #fff;box-shadow:0 2px 6px -2px rgba(0,0,0,.4)}
  .oi-emp{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:10px;color:var(--muted);border-radius:7px}
  .o-info{flex:1;min-width:0}
  .o-top{display:flex;align-items:center;gap:10px}
  .o-no{font-weight:800;font-size:13px;letter-spacing:.3px}
  .o-time{color:var(--muted);font-size:11px;flex:1}
  .o-goods{margin-top:4px;font-size:12px;color:#3d4642;word-break:break-all}
  .o-meta{margin-top:4px;font-size:11.5px;color:var(--muted)}
  .o-meta b{color:var(--green);font-size:13px}
  .vrow{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.2fr) 72px minmax(0,1fr) auto auto;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:#fff}
  .vrow input,.vrow select{border:1px solid var(--line);border-radius:8px;padding:5px 8px;background:#fff;font-size:12.5px;min-width:0;width:100%}
  .vrow input:focus,.vrow select:focus{outline:none;border-color:var(--green)}
  .vrow .f-cn{font-weight:700}
  .vrow .f-type{cursor:pointer}
  .vrow .f-store{cursor:pointer}
  .vrow .onmark{font-size:11px;font-weight:700;color:var(--green);white-space:nowrap}
  .vrow .rm{color:#c9b6a5;padding:4px 7px;border-radius:7px;display:grid;place-items:center}
  .vrow .rm .lic{width:14px;height:14px}
  .vrow .rm:hover{background:#fbeeea;color:#b03a2e}
  /* 门店管理行 */
  .strow{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.4fr) 62px 78px auto auto;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:#fff}
  .strow.cur{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset;background:var(--green-soft)}
  .strow input{border:1px solid var(--line);border-radius:8px;padding:5px 8px;background:#fff;font-size:12.5px;min-width:0;width:100%}
  .strow input:focus{outline:none;border-color:var(--green)}
  .strow .f-cn{font-weight:700}
  .strow .f-ab{font-family:var(--mono);font-weight:800;text-transform:uppercase;text-align:center}
  .empty2{padding:18px;text-align:center;color:var(--muted);font-size:12px;border:1.5px dashed var(--line);border-radius:10px}
  .pbody{overflow:auto;padding:13px 15px 2px}
  .pnote{font-size:11px;color:var(--muted);margin:4px 0 10px;padding:7px 9px;background:#fbf5e8;border:1px dashed #e3cf9a;border-radius:9px}

  .toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(16px);background:#16301f;color:#eaf6ee;padding:9px 19px;border-radius:99px;font-size:12.5px;box-shadow:0 14px 30px -10px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:.22s;z-index:300;display:flex;gap:8px;align-items:center;max-width:86vw}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .toast.err{background:#6e2418}
  ::-webkit-scrollbar{width:8px;height:8px}
  ::-webkit-scrollbar-thumb{background:#cfd6cd;border-radius:8px}
  ::-webkit-scrollbar-track{background:transparent}

  @media(max-width:1260px){.cols{grid-template-columns:282px minmax(0,1fr) 350px}}
  @media(max-width:1060px){.cols{grid-template-columns:1fr 1fr}.col-right{grid-column:1/-1;order:3}}

  /* ================= 移动端适配（≤900px：单列 + 固定底栏） ================= */
  @media(max-width:900px){
    /* 整页滚动，取消桌面三列内滚 */
    html,body{overflow:visible;height:auto}
    .app{height:auto;min-height:100vh;display:flex;flex-direction:column}
    /* 顶栏紧凑 */
    .topbar .inner{flex-wrap:wrap;gap:4px 8px;padding:7px 10px}
    .topbar .logo{width:28px;height:28px;flex:0 0 28px}
    .topbar h1{font-size:14px;white-space:normal}
    .topbar .sub{display:none}
    .tbright{order:4}
    /* tab 切换器：换到第二行居中，去掉桌面滑块 */
    .tbsl{display:none}
    .tbsw{position:static;transform:none;order:5;display:flex;justify-content:center;flex:0 0 100%;margin-top:4px;padding:4px 0;background:none;border-radius:0}
    .tbsw a{padding:7px 16px;font-size:12.5px;border-radius:9px}
    .tbsw a.on{background:rgba(255,255,255,.12)}
    /* 三列 → 单列纵向；底部留空给固定 dock */
    .cols{display:flex;flex-direction:column;gap:8px;padding:10px 10px 80px;height:auto;min-height:0;flex:1}
    .col{overflow:visible}
    .col-mid .panel,.col-right>.panel{flex:0 0 auto}
    .col-mid .panel .body,.col-right>.panel .body{overflow:visible}
    /* 面板内间距收紧 */
    .panel .body{padding:10px 12px}
    .panel>header{padding:9px 12px}
    .blk{margin-top:8px}
    /* 菜单两列大图；加减按钮常显（移动端无 hover） */
    .pgrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
    .pfoot{opacity:1}
    /* 已点清单固定吸底 */
    .dockwrap{position:fixed!important;left:10px!important;right:10px!important;bottom:10px!important;z-index:60;border-radius:14px;padding:7px 10px;gap:8px;flex:none;max-width:calc(100vw - 20px)}
    /* toast 改顶部，避免被 dock 遮挡 */
    .toast{bottom:auto;top:14px;transform:translateX(-50%) translateY(-10px)}
    .toast.show{transform:translateX(-50%) translateY(0)}
    /* 杯详情弹层：居中悬浮在 dock 上方 */
    .dockpop{left:50%!important;top:auto!important;bottom:100px!important;transform:translateX(-50%);width:min(316px,calc(100vw - 24px))}
    /* 门店 / 位置行改两行网格；列头隐藏 */
    .lhead{display:none}
    .vrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 60px auto;grid-template-areas:"cn cn type rm" "en en store rm";position:relative;padding:6px 8px}
    .vrow .f-cn{grid-area:cn}.vrow .f-en{grid-area:en}
    .vrow .f-kind{grid-area:type}
    .vrow .f-type{grid-area:type}.vrow .f-store{grid-area:store}
    .vrow .rm{grid-area:rm;align-self:center}
    .vrow .onmark{position:absolute;top:9px;right:42px}
    .strow{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 60px 70px;grid-template-areas:"cn cn use del" "en en ab sv"}
    .strow .f-cn{grid-area:cn}.strow .f-en{grid-area:en}
    .strow .f-ab{grid-area:ab}.strow .f-sv{grid-area:sv}
    .strow .use{grid-area:use}.strow .del{grid-area:del}
    /* 预览 tabs + 图片按钮整行 */
    .col-right .panel .body>div:first-child{flex-wrap:wrap}
    .imgs{width:100%}
    .imgs .btn{flex:1;justify-content:center}
    /* 订单标签栏整行占满，便于左右滑动 */
    .mlhead{flex-wrap:wrap;row-gap:4px}
    .otabs{width:100%;margin-left:0;padding-left:0}
    /* 吸底操作栏移动端 */
    .sfoot{padding:8px 12px;flex-wrap:wrap;gap:6px;left:0;right:0}
    .sfoot .sfoot-log{max-height:32px;order:3;flex-basis:100%}
  }

  /* 设置中心移动端（≤700px：侧栏变抽屉，与 panel.css 一致） */
  @media(max-width:700px){
    .setwrap{flex-direction:column}
    .snav{position:fixed;top:0;left:0;bottom:0;width:240px;flex:0 0 auto;flex-direction:column;gap:2px;border-right:1px solid #e3e3e3;padding:16px 12px;transform:translateX(-100%);transition:transform .3s cubic-bezier(.32,.72,.3,1);z-index:200;background:#f6f6f7}
    .snav.open{transform:none}
    .snav-t{display:flex}
    .snav-list{flex-direction:column;gap:2px;overflow:visible;flex:1}
    .snav-list button{white-space:nowrap;padding:10px 12px;font-size:13px;flex:0 0 auto}
    .snav-back{margin-top:auto}
    .snav-mask{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:transparent;z-index:190}
    .snav-mask.show{display:block}
    .shead{padding:11px 14px}
    .shead .sback{display:none}
    .shead .ham{display:grid}
    .shead h2{font-size:15px}
    .sbody{padding:14px 12px 80px}
    .sbody>section{max-width:none}
    .fgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
    .grip{display:none}
    .prow{display:grid;grid-template-columns:48px minmax(0,1fr) minmax(0,1fr);grid-template-areas:"th cn en" "th pp ca" "th sw ac";gap:8px 10px;padding:8px 10px}
    .prow .thumb{grid-area:th;align-self:start}
    .prow .cn{grid-area:cn}
    .prow .en{grid-area:en}
    .prow .pprice{grid-area:pp}
    .prow .pcat{grid-area:ca}
    .prow .sw{grid-area:sw;justify-self:start}
    .prow .acts{grid-area:ac;justify-self:end}
    .o-top{flex-wrap:wrap;gap:4px 10px}
    .o-no{word-break:break-all}
    .sbody input,.sbody select,.sbody textarea{font-size:16px}
    .sfoot{padding:8px 12px;flex-wrap:wrap;gap:6px}
    .sfoot .sfoot-log{max-height:32px;order:3;flex-basis:100%}
    .modal{max-height:94vh}
    .mask{padding:12px}
  }
