:root{
  --brand:#E94B3C;
  --brand-soft:rgba(233,75,60,.10);
  --bg:#F6F2EA;             /* 暖米白底(与移动端统一,替代冷蓝灰 #F7F8FC) */
  --side:#F1EBDF;           /* 侧栏暖米(替代冷蓝灰 #EDF1F8) */
  /* 深色暖咖侧栏(2026-09-20 PC 重设计 v2 落地:与移动端预览统一品牌语言) */
  --side-bg-1:#2C2521; --side-bg-2:#231D19;
  --side-fg:#D8CFC4; --side-muted:#9A8F80; --side-line:rgba(255,255,255,.07);
  --card:#FFFFFF;
  --line:#E7E0D2;           /* 暖灰描边/分隔(替代冷蓝灰 #E5E8EE) */
  --txt:#202124;
  --muted:#5F6368;
  --muted2:#9AA0A6;
  --ok:#1E7A36;
  --ok-bg:rgba(30,122,54,.12);
  --warn:#8A6D00;
  --warn-bg:rgba(250,188,4,.16);
  --danger:#C5221F;
  --danger-bg:rgba(197,34,31,.10);
  --blue:#2F6FED; --blue-soft:#EAF1FE;   /* v2 落实:已到店状态/图表蓝 */
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,'Courier New',monospace;
  --sans:'PingFang SC','Microsoft YaHei','Noto Sans SC',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:var(--sans);background:var(--bg);color:var(--txt);font-size:14px;}

/* ---------- 布局 ---------- */
.layout{display:flex;min-height:100vh;}
.sidebar{width:248px;background:linear-gradient(180deg,var(--side-bg-1) 0%,var(--side-bg-2) 100%);display:flex;flex-direction:column;padding:18px 14px 14px;position:fixed;top:0;bottom:0;left:0;border-right:1px solid #1A1410;color:var(--side-fg);}
.main{margin-left:248px;flex:1;display:flex;flex-direction:column;min-width:0;}

.brand{display:flex;align-items:center;gap:11px;padding:4px 6px 18px;flex:none;}
.brand-logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(140deg,#F2645A 0%,var(--brand) 100%);color:#fff;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px rgba(233,75,60,.35);flex:none;}
.brand-name{font-weight:700;font-size:14.5px;letter-spacing:.02em;line-height:1.25;color:#fff;}
.brand-sub{font-size:11px;color:var(--side-muted);letter-spacing:.1em;margin-top:2px;}

/* 侧栏导航:可滚动,矮屏也不会被裁剪 */
.nav{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:2px;margin:0 -6px;padding:6px;}
.nav::-webkit-scrollbar{width:5px;}
.nav::-webkit-scrollbar-thumb{background:rgba(154,143,128,.35);border-radius:3px;}
.nav::-webkit-scrollbar-thumb:hover{background:rgba(154,143,128,.6);}

.nav-sec{margin:16px 8px 7px;font-size:11px;font-weight:600;color:var(--side-muted);letter-spacing:.12em;}
.nav-sec-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:auto;background:none;border:none;padding:0;font-family:var(--sans);cursor:pointer;border-radius:6px;transition:color .15s;color:var(--side-fg);}
.nav-sec-toggle:hover{color:#fff;}
.nav-chev{width:12px;height:12px;flex:none;transition:transform .2s;color:rgba(255,255,255,.5);}

.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;color:var(--side-fg);text-decoration:none;font-size:13.5px;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s;white-space:nowrap;position:relative;}
.nav-ic{width:18px;height:18px;flex:none;opacity:.72;transition:opacity .15s;}
.nav-txt{overflow:hidden;text-overflow:ellipsis;}
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff;}
.nav-item:hover .nav-ic{opacity:1;}
.nav-item.active{background:rgba(233,75,60,.16);color:#fff;font-weight:600;}
.nav-item.active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--brand);}
.nav-item.active .nav-ic{opacity:1;color:var(--brand);}
.nav-item.disabled{color:var(--side-muted);cursor:not-allowed;}
.nav-item.disabled:hover{background:none;box-shadow:none;}
.nav-item:focus-visible{outline:2px solid var(--brand);outline-offset:1px;}

/* 二级菜单:页面下的子菜单(如 桌台管理 → 区域/楼层/桌型),缩进 + 小圆点 */
.nav-folder{width:13px;height:13px;flex:none;margin-left:auto;opacity:.45;}
.nav-item.has-active{background:rgba(233,75,60,.10);color:#fff;font-weight:600;box-shadow:none;}
.nav-item.has-active .nav-ic{opacity:1;color:var(--brand);}
.nav-item.has-active .nav-folder{opacity:.85;}
.nav-item.nav-sub{padding:8px 12px 8px 13px;font-size:13px;gap:9px;color:var(--side-fg);}
.nav-branch{width:5px;height:5px;flex:none;margin-left:12px;border-radius:50%;background:rgba(255,255,255,.22);transition:background .15s,box-shadow .15s;}
.nav-ic.sm{width:15px;height:15px;opacity:.66;}
.nav-item.nav-sub:hover .nav-branch{background:var(--brand);}
.nav-item.nav-sub:hover .nav-ic.sm{opacity:1;}
.nav-item.nav-sub.active{background:rgba(233,75,60,.16);color:#fff;font-weight:600;box-shadow:none;}
.nav-item.nav-sub.active .nav-branch{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.3);}
.nav-item.nav-sub.active .nav-ic.sm{opacity:1;color:var(--brand);}
/* 纯分组头:自身没有落地页,只承载子菜单(如 桌台管理) */
.nav-item.nav-parent{cursor:default;font-weight:600;color:var(--side-fg);}
/* 带子菜单的一级菜单:可点击折叠(展开方式与系统设置一致) */
.nav-item.nav-parent.nav-sec-toggle{cursor:pointer;}
.nav-item.nav-parent.nav-sec-toggle:hover{color:#fff;}
.nav-item.nav-parent.nav-sec-toggle .nav-chev{opacity:.55;}
.nav-item.nav-parent:not(.has-active):hover{background:rgba(255,255,255,.05);box-shadow:none;}
.nav-item.nav-parent:not(.has-active):hover .nav-ic{opacity:.85;}
/* 分组头上的子项数量角标:提示"这一组里有几个页面",收起时也能感知规模 */
.nav-count{margin-left:auto;flex:none;min-width:19px;height:17px;padding:0 5px;border-radius:9px;background:rgba(255,255,255,.10);color:rgba(255,255,255,.62);font-size:10.5px;font-weight:600;font-style:normal;line-height:17px;text-align:center;transition:background .15s,color .15s;}
.nav-item.nav-parent.nav-sec-toggle:hover .nav-count{background:rgba(255,255,255,.18);color:#fff;}
.nav-group.open .nav-count{background:rgba(233,75,60,.28);color:#ffd9d5;}

/* 分组:可折叠 + 左侧树形导轨(展开/收起带平滑动画) */
.nav-group-items{display:flex;flex-direction:column;gap:2px;margin:2px 0 0 19px;padding-left:9px;border-left:1px solid rgba(255,255,255,.10);max-height:0;overflow:hidden;opacity:0;transform:translateY(-4px);transition:max-height .26s ease,opacity .18s ease,transform .2s ease;pointer-events:none;}
.nav-group.open .nav-group-items{max-height:640px;opacity:1;transform:none;pointer-events:auto;}
.nav-group.open .nav-chev{transform:rotate(90deg);}
/* 全部一级分组平铺时给组间留白,避免 8 个分组糊成一片(2026-10-16 两级菜单重构) */
.nav > .nav-group{margin-top:7px;}
.nav > .nav-group:first-child{margin-top:0;}
.nav > .nav-group + .nav-group:not(.open){margin-top:11px;}
.nav > .nav-group.open + .nav-group{margin-top:9px;}

.sidebar-foot{flex:none;margin-top:10px;padding-top:12px;border-top:1px solid var(--side-line);}
.side-user{display:flex;align-items:center;gap:10px;padding:4px 6px 8px;}
.side-user-avatar{width:34px;height:34px;border-radius:9px;background:linear-gradient(140deg,#3a322c,#4a4038);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;}
.side-user-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0;}
.side-user-txt b{font-size:13px;font-weight:600;color:#fff;}
.side-user-txt i{font-size:11px;color:var(--side-muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;}
.side-copy{padding:0 6px;color:var(--side-muted);font-size:10.5px;letter-spacing:.04em;}

.topbar{height:56px;background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:10;}
.page-title{font-size:16px;font-weight:600;}
.topbar-right{display:flex;align-items:center;gap:14px;}
.search{display:flex;align-items:center;background:#F3EEE3;border:1px solid transparent;border-radius:16px;padding:0 12px;height:32px;width:300px;transition:.15s;}
.search:focus-within{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.search-ic{color:var(--muted2);margin-right:7px;display:flex;align-items:center;flex:none;}
.search input{border:none;background:none;outline:none;font-family:var(--sans);font-size:13px;flex:1;min-width:0;color:var(--txt);}
.search input::placeholder{color:var(--muted2);}
.topbar-quick{font-size:12.5px;color:var(--muted);text-decoration:none;padding:5px 11px;border:1px solid var(--line);border-radius:14px;transition:.15s;}
.topbar-quick:hover{border-color:var(--brand);color:var(--brand);background:#FFF5F3;}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:14px;flex:none;}
.logout{color:var(--muted);font-size:13px;text-decoration:none;}
.logout:hover{color:var(--brand);}

.content{padding:24px 28px;}

/* ---------- 卡片 / 表格 ---------- */
.card{background:var(--card);border-radius:12px;padding:20px;box-shadow:0 1px 2px rgba(60,64,67,.06);margin-bottom:20px;}
.card-title{font-size:14px;font-weight:500;margin-bottom:14px;}

.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px;}
.kpi-card{background:var(--card);border-radius:12px;padding:20px 20px 16px;box-shadow:0 1px 2px rgba(60,64,67,.06);position:relative;overflow:hidden;transition:box-shadow .18s,transform .18s;}
/* KPI 语义色顶条:红(总量)/琥珀(待办)/绿(到店)/蓝灰(利用率),与预订页统计点色呼应 */
.kpi-card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,#F0604F,#DC3A28);}
.kpi-row .kpi-card:nth-child(2)::before{background:linear-gradient(90deg,#F59E0B,#D97706);}
.kpi-row .kpi-card:nth-child(3)::before{background:linear-gradient(90deg,#2FA355,#1E7A36);}
.kpi-row .kpi-card:nth-child(4)::before{background:linear-gradient(90deg,#8B99B0,#5F7089);}
.kpi-card:hover{box-shadow:0 6px 18px rgba(60,64,67,.10);transform:translateY(-2px);}
.kpi-label{font-size:13px;color:var(--muted);}
.kpi-val{font-family:var(--mono);font-size:30px;font-weight:700;margin:6px 0 4px;}
.kpi-foot{font-size:12px;color:var(--muted2);}
.kpi-foot.up{color:var(--ok);}

.row-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;}

.dash-sub{font-size:14px;color:var(--muted);margin-bottom:16px;}

.tbl{width:100%;border-collapse:collapse;}
.tbl thead th{text-align:left;font-size:12.5px;font-weight:600;color:var(--muted);background:#FBF5F4;padding:11px 16px;letter-spacing:.02em;border-bottom:1px solid #EFE3E1;white-space:nowrap;}
.tbl thead th:first-child{border-radius:8px 0 0 0;}
.tbl thead th:last-child{border-radius:0 8px 0 0;}
.tbl tbody td{padding:13px 16px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle;white-space:nowrap;}
.tbl td.wrap,.tbl th.wrap{white-space:normal;min-width:200px;max-width:340px;line-height:1.6;}
.tbl tbody tr{transition:background .12s;}
.tbl tbody tr:hover{background:#FAF6ED;}
.tbl tbody tr:last-child td{border-bottom:none;}
/* 表格容器:窄屏可横向滚动 */
.tbl-wrap{overflow-x:auto;margin:0 -4px;padding:0 4px;}
.tbl-wrap::-webkit-scrollbar{height:6px;}
.tbl-wrap::-webkit-scrollbar-thumb{background:rgba(154,160,166,.4);border-radius:3px;}
.mono{font-family:var(--mono);}
.muted{color:var(--muted);}
.empty{color:var(--muted2);padding:32px 16px;text-align:center;}

/* 趋势柱图 */
.bars{display:flex;align-items:flex-end;gap:18px;height:200px;padding:10px 4px;margin-top:8px;}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;}
.bar{width:60%;max-width:48px;background:linear-gradient(180deg,#F0604F 0%,#DC3A28 100%);border-radius:6px 6px 0 0;min-height:4px;transition:height .2s;}
.bar-val{font-size:11px;color:var(--muted);font-family:var(--mono);margin-bottom:4px;}
.bar-x{font-size:11px;color:var(--muted2);margin-top:6px;font-family:var(--mono);}
.bar-y{font-size:11px;color:var(--muted);font-family:var(--mono);}
/* 近 7 日全为 0 时:隐藏空柱,居中提示 */
.bars-empty{height:auto;min-height:120px;align-items:center;justify-content:center;}
.bars-empty .bar{display:none;}
.chart-empty{text-align:center;color:var(--muted);font-size:13px;padding:4px 0 2px;}

/* 待处理 */
.pending-item{display:flex;align-items:center;justify-content:space-between;background:#F5F1E8;border-radius:8px;padding:12px 16px;margin-bottom:10px;}
.pi-title{font-size:14px;font-weight:500;}
.pi-sub{font-size:12px;color:var(--muted);margin-top:3px;}

/* 状态徽章 */
.badge{display:inline-block;padding:3px 12px;border-radius:13px;font-size:12px;font-weight:500;white-space:nowrap;}
.st-ok{background:var(--ok-bg);color:var(--ok);}
.st-warn{background:var(--warn-bg);color:var(--warn);}
  .st-muted{background:rgba(154,160,166,.14);color:var(--muted2);}
  .st-danger{background:var(--danger-bg);color:var(--danger);}
  .st-blue{background:var(--blue-soft);color:var(--blue);}   /* v2 落实:已到店(SEATED)状态 */
.st-timeout{background:var(--brand-soft);color:var(--brand);}  /* 超时订单:品牌红 */

/* 组织树 */
.row-org{display:grid;grid-template-columns:360px 1fr;gap:20px;}
.tree-card{height:fit-content;}
.tree{padding-top:4px;}
.tree-root{font-weight:700;font-size:14px;padding:6px 8px;}
.tree-brand{padding:8px 8px 4px 20px;font-size:13px;font-weight:500;color:var(--muted);}
.tree-store{padding:7px 8px 7px 32px;font-size:13px;color:var(--muted);border-radius:6px;margin:2px 0;cursor:pointer;}
.tree-store:hover{background:rgba(0,0,0,.04);}
.tree-store.sel{background:var(--brand-soft);color:var(--brand);font-weight:500;}

/* 筛选栏 */
.filter-bar{display:flex;align-items:flex-end;gap:16px;background:var(--card);border-radius:12px;padding:16px 20px;box-shadow:0 1px 2px rgba(60,64,67,.06);margin-bottom:20px;flex-wrap:wrap;}
.filter-field{display:flex;flex-direction:column;gap:6px;}
.filter-field label{font-size:12px;color:var(--muted);}
.filter-field select,.filter-field input{height:32px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font-family:var(--sans);font-size:13px;background:#F5F1E8;min-width:140px;outline:none;transition:.15s;}
.filter-field select:focus,.filter-field input:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.filter-field input[type=date]{min-width:150px;}
.filter-field.grow{flex:1;min-width:260px;}
.filter-note{display:flex;align-items:center;min-height:32px;padding:0 12px;font-size:12.5px;color:var(--muted);background:#F5F1E8;border:1px dashed var(--line);border-radius:6px;}
.filter-bar .btn-primary{margin-left:auto;}
.btn{height:32px;padding:0 18px;border-radius:6px;font-size:13px;font-family:var(--sans);cursor:pointer;border:none;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:.15s;}
.btn-primary{background:var(--brand);color:#fff;font-weight:500;box-shadow:0 2px 6px rgba(233,75,60,.22);}
.btn-primary:hover{background:#d8432f;box-shadow:0 4px 12px rgba(233,75,60,.3);}
.btn-ghost{background:#fff;color:var(--muted);border:1px solid var(--line);}
.btn-ghost:hover{color:var(--brand);border-color:var(--brand);background:#FFF9F8;}

/* 抽屉 */
.drawer-mask{position:fixed;inset:0;background:rgba(32,33,36,.28);opacity:0;visibility:hidden;transition:.2s;z-index:40;}
.drawer-mask.show{opacity:1;visibility:visible;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:460px;max-width:92vw;background:#fff;box-shadow:-4px 0 16px rgba(32,33,36,.16);transform:translateX(100%);transition:.22s;z-index:50;display:flex;flex-direction:column;}
.drawer.open{transform:translateX(0);}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--line);}
.drawer-title{font-size:16px;font-weight:500;}
.drawer-close{width:32px;height:32px;border:none;background:#F5F1E8;border-radius:16px;font-size:18px;color:var(--muted);cursor:pointer;}
.drawer-body{padding:20px 24px;flex:1;overflow:auto;min-height:0;}
.drawer-foot{display:flex;gap:12px;padding:16px 24px;border-top:1px solid var(--line);}
.drawer-foot .btn{flex:1;height:44px;}

/* ========== PC 预订详情「本订单信息」面板(对齐移动端) ========== */
.drawer > .ra-header {
  flex-shrink: 0; margin: 0; border-radius: 0; box-shadow: none;
  border-bottom: 1px solid var(--line);
}
.ra-header { background: #fff; padding: 12px 18px; }
.ra-header-top { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.ra-header-time { font-size: 17px; font-weight: 700; color: var(--txt); letter-spacing: .3px; }
.ra-header-st { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; line-height: 1.4; flex-shrink: 0; }
.ra-header-btm { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted2); }
.ra-header-dot { color: #C4C9D2; }

.drawer-body .ra-scroll { display: block; padding: 14px 16px; }

/* 客户信息卡片 */
.ra-cust-card {
  background: #F8F4EB; border-radius: 10px; padding: 10px 12px; margin-bottom: 12px;
  font-size: 13px; color: var(--txt); line-height: 1.5;
}
.ra-cust-head { display: flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 600; margin-bottom: 2px; }
.ra-cust-gender { font-weight: 400; font-size: 13px; color: var(--muted2); }
.ra-cust-new { font-size: 11px; color: #fff; background: var(--brand); padding: 1px 6px; border-radius: 8px; font-weight: 500; }
.ra-cust-meta { display: flex; gap: 14px; color: var(--muted2); font-size: 12px; margin-bottom: 2px; }
.ra-cust-meta b { color: var(--txt); font-weight: 500; }
.ra-cust-stats, .ra-cust-recent, .ra-cust-avg { display: flex; gap: 10px; font-size: 12px; color: var(--muted2); margin-top: 2px; }

/* 操作按钮网格 */
.ra-btn-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 7px; margin-bottom: 12px; }
.ra-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  border: none; border-radius: 8px; padding: 10px 6px;
  font-size: 13px; font-weight: 500; cursor: pointer; color: #fff;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: opacity .15s, transform .08s;
}
.ra-btn svg { width: 17px; height: 17px; flex-shrink: 0; stroke-width: 1.8; }
.ra-btn:active { opacity: .85; transform: scale(.97); }
.ra-btn-green { background: #00B578; }
.ra-btn-outline { background: #fff; color: var(--brand); border: 1.5px solid var(--brand); }
.ra-btn-full { grid-column: 1 / -1; }
.ra-btn-danger-ra { background: #fff; color: #E54D42; border: 1.5px solid #E54D42; flex: 1; }
.ra-btn-primary-ra { background: var(--brand); color: #fff; flex: 1; }
.ra-btn-success-ra { background: #00B578; color: #fff; flex: 1; }
.ra-btn-warn-ra { background: #FF9500; color: #fff; flex: 1; }

/* 订单详情区 */
.ra-detail { background: #fff; border-radius: 10px; overflow: hidden; margin-bottom: 12px; border: 1px solid var(--line); }
.ra-dt-head { padding: 12px 14px 8px; font-size: 15px; font-weight: 600; color: var(--txt); line-height: 1.4; border-bottom: 1px solid #EEE; }
.ra-dt-body { padding: 0; }
.ra-dt-row { display: flex; align-items: center; padding: 10px 14px; border-bottom: 1px solid #F3F3F3; min-height: 40px; }
.ra-dt-row:last-child { border-bottom: none; }
.ra-dt-k { width: 68px; flex: 0 0 auto; font-size: 13px; color: var(--muted2); }
.ra-dt-v { flex: 1; font-size: 14px; color: var(--txt); font-weight: 500; }
.ra-dt-link { flex: 0 0 auto; font-size: 13px; color: var(--brand); text-decoration: none; font-weight: 500; white-space: nowrap; margin-left: 8px; }

/* 底部固定操作区 */
.drawer .ra-foot { display: flex; gap: 10px; padding: 12px 18px 6px; flex-shrink: 0; }
.drawer .ra-foot .ra-btn { padding: 12px 0; font-size: 15px; }
.drawer #raStatusBtns { display: flex; gap: 10px; padding: 0 18px 6px; flex-shrink: 0; }
.drawer #raStatusBtns .ra-btn { padding: 12px 0; font-size: 15px; }
.ra-close-pc {
  display: block; width: calc(100% - 36px); margin: 4px 18px 16px;
  height: 42px; border: 1px solid var(--line); background: #fff; color: var(--muted);
  border-radius: 8px; cursor: pointer; font-size: 14px; flex-shrink: 0;
}
.ra-close-pc:hover { color: var(--brand); border-color: var(--brand); }

.d-field{margin-bottom:18px;}
.d-field span{display:block;font-size:12px;color:var(--muted2);margin-bottom:4px;}
.d-field b{font-size:14px;font-weight:500;}

/* ---------- 登录 ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;
  background:
    radial-gradient(900px 500px at 18% 12%, rgba(255,255,255,.14), transparent 60%),
    radial-gradient(700px 500px at 108% 108%, rgba(30,120,105,.28), transparent 55%),
    radial-gradient(1200px 800px at 110% -10%, rgba(60,20,15,.25), transparent 60%),
    linear-gradient(135deg,#D8523F 0%,#C2402F 45%,#A93327 100%);}
.login-card{position:relative;z-index:1;width:360px;max-width:calc(100vw - 32px);background:#fff;border-radius:14px;padding:26px 26px 22px;box-shadow:0 18px 50px rgba(70,15,8,.35),0 2px 8px rgba(70,15,8,.18);}
.lc-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;}
.lc-logo{flex:0 0 42px;width:42px;height:42px;border-radius:10px;background:linear-gradient(160deg,#F0563F,#D63B2B);color:#fff;font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px rgba(214,59,43,.35);}
.lc-title{font-size:17px;font-weight:700;letter-spacing:.5px;}
.lc-sub{font-size:11.5px;color:var(--muted);margin-top:3px;}
.lc-field{display:flex;align-items:center;gap:9px;height:42px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 12px;margin-bottom:12px;transition:border-color .15s,box-shadow .15s;}
.lc-field:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.lc-ico{flex:0 0 30px;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--brand-soft);transition:background .15s;}
.lc-ico svg{width:17px;height:17px;stroke:var(--brand);}
.lc-field:focus-within .lc-ico{background:rgba(233,75,60,.18);}
.lc-field:focus-within .lc-ico svg{stroke:var(--brand);}
.lc-input{flex:1;border:none;outline:none;font-size:13.5px;background:transparent;color:var(--txt);min-width:0;font-family:var(--sans);}
.lc-input::placeholder{color:#B9AFA6;}
.lc-eye{flex:0 0 26px;width:26px;height:26px;border:none;background:transparent;cursor:pointer;color:#B9AFA6;display:flex;align-items:center;justify-content:center;border-radius:6px;}
.lc-eye:hover{color:var(--brand);}
.lc-row{display:flex;align-items:center;gap:7px;margin:2px 0 14px;cursor:pointer;width:fit-content;user-select:none;}
.lc-row input{position:absolute;opacity:0;width:0;height:0;}
.lc-check{width:15px;height:15px;border-radius:4px;border:1.5px solid #CFC5BC;background:#fff;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.lc-check svg{width:9px;height:9px;stroke:#fff;stroke-width:3;fill:none;opacity:0;transition:opacity .15s;}
.lc-row input:checked ~ .lc-check{background:var(--brand);border-color:var(--brand);}
.lc-row input:checked ~ .lc-check svg{opacity:1;}
.lc-row span{font-size:11.5px;color:#6B625A;}
.lc-forgot-link{display:block;text-align:right;font-size:11.5px;color:var(--brand);cursor:pointer;margin:-6px 0 16px;text-decoration:none;}
.lc-forgot-link:hover{text-decoration:underline;}
.lc-between{display:flex;align-items:center;justify-content:space-between;margin:2px 0 16px;}
.lc-between .lc-row{margin:0;}
.lc-between .lc-forgot-link{margin:0;}
.lc-code-row{display:flex;gap:10px;margin-bottom:12px;}
.lc-code-row .lc-field{margin-bottom:0;flex:1;}
.lc-code-btn{height:42px;padding:0 12px;border:1px solid var(--brand);color:var(--brand);background:#fff;border-radius:9px;font-size:12.5px;cursor:pointer;white-space:nowrap;transition:all .15s;font-family:var(--sans);}
.lc-code-btn:hover:not(:disabled){background:var(--brand-soft);}
.lc-code-btn:disabled{color:#C4BAB1;border-color:#E5DED7;cursor:default;}
.lc-back{display:block;text-align:center;font-size:12px;color:var(--muted);cursor:pointer;margin-top:14px;text-decoration:none;}
.lc-back:hover{color:var(--brand);}
.lc-btn{width:100%;height:42px;border:none;border-radius:9px;cursor:pointer;background:linear-gradient(180deg,#E84A38,#D23A2A);color:#fff;font-size:14.5px;font-weight:600;letter-spacing:6px;text-indent:6px;box-shadow:0 6px 16px rgba(211,58,42,.4);transition:transform .1s,box-shadow .15s;font-family:var(--sans);}
.lc-btn:active{transform:translateY(1px);box-shadow:0 3px 8px rgba(211,58,42,.4);}
.lc-err{display:none;background:var(--danger-bg);color:var(--danger);border:1px solid #F5C6C0;font-size:12px;border-radius:8px;padding:8px 12px;margin-bottom:14px;}
.lc-err.show{display:block;}
.lc-foot{margin-top:18px;text-align:center;font-size:10.5px;color:var(--muted2);}
[hidden]{display:none !important;}
/* 找回密码：步骤指示 */
.lc-steps{display:flex;align-items:center;justify-content:center;margin:2px 0 18px;}
.lc-step{display:flex;align-items:center;gap:7px;}
.lc-step .dot{width:22px;height:22px;border-radius:50%;background:#EFE7E0;color:#A99E94;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.lc-step .txt{font-size:12px;color:#A99E94;transition:color .2s;white-space:nowrap;}
.lc-step.active .dot{background:var(--brand);color:#fff;box-shadow:0 3px 8px rgba(233,75,60,.35);}
.lc-step.active .txt{color:var(--brand);font-weight:600;}
.lc-step.done .dot{background:#2EA86A;color:#fff;}
.lc-step.done .txt{color:#2EA86A;}
.lc-step-line{flex:0 0 34px;height:2px;background:#EFE7E0;margin:0 10px;border-radius:2px;transition:background .2s;}
.lc-step-line.done{background:#2EA86A;}
/* 内联提示 */
.lc-tip{font-size:11.5px;color:var(--danger);margin:-6px 0 10px;display:none;line-height:1.4;}
.lc-tip.show{display:block;}
.lc-tip.ok{color:var(--ok);}
/* 密码强度 */
.lc-strength{height:4px;border-radius:3px;background:#EFE7E0;margin:-4px 0 10px;overflow:hidden;}
.lc-strength > i{display:block;height:100%;width:0;background:var(--brand);transition:width .25s,background .25s;}
.lc-strength.s1 > i{width:34%;background:#E94B3C;}
.lc-strength.s2 > i{width:67%;background:#E0A800;}
.lc-strength.s3 > i{width:100%;background:var(--ok);}
/* 成功态 */
.lc-done{text-align:center;padding:16px 6px 6px;}
.lc-done .ring{width:54px;height:54px;border-radius:50%;background:var(--ok-bg);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}
.lc-done .ring svg{width:28px;height:28px;stroke:var(--ok);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.lc-done h3{font-size:16px;margin-bottom:6px;color:var(--txt);}
.lc-done p{font-size:12.5px;color:var(--muted);line-height:1.6;margin-bottom:16px;}
/* 窄屏适配 */
@media (max-width:420px){
  .login-card{width:100%;padding:22px 18px 18px;border-radius:12px;}
  .lc-title{font-size:16px;}
}
/* 通用表单类(供其它页复用,勿删) */
.field-label{display:block;font-size:13px;color:var(--muted);margin:18px 0 6px;}
.field{width:100%;height:44px;border:1px solid var(--line);border-radius:6px;padding:0 14px;font-size:14px;font-family:var(--sans);outline:none;}
.field:focus{border-color:var(--brand);}

/* ---------- Toast 轻提示 ---------- */
.toast-wrap{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:10px;pointer-events:none;}
.toast{display:flex;align-items:flex-start;gap:10px;min-width:300px;max-width:440px;background:#FFFFFF;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:8px;box-shadow:0 6px 20px rgba(60,64,67,.16);padding:12px 16px;opacity:0;transform:translateY(-8px);transition:.22s;pointer-events:auto;}
.toast.show{opacity:1;transform:translateY(0);}
.toast-ic{width:20px;height:20px;border-radius:10px;background:var(--brand);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;margin-top:1px;}
.toast-title{font-size:13px;font-weight:600;color:var(--txt);}
.toast-msg{font-size:13px;color:var(--muted);margin-top:3px;}

/* ---------- 新建弹窗(打开/关闭带淡入与轻上浮动画) ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(32,33,36,.32);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding-top:8vh;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s;}
.modal-mask.show{opacity:1;visibility:visible;}
.modal{width:660px;max-width:94vw;background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(60,64,67,.22);display:flex;flex-direction:column;max-height:84vh;transform:translateY(10px) scale(.985);transition:transform .22s cubic-bezier(.2,.7,.3,1);}
.modal-mask.show .modal{transform:none;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--line);}
.modal-title{font-size:16px;font-weight:500;}
.modal-close{width:32px;height:32px;border:none;background:#F5F1E8;border-radius:16px;font-size:18px;color:var(--muted);cursor:pointer;}
.modal-body{padding:20px 24px;overflow:auto;flex:1;min-height:0;}
.modal-foot{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--line);}
.f-grid{display:flex;flex-wrap:wrap;gap:16px 16px;}
.f-field{flex:1 1 100%;min-width:0;}
.f-field.half{flex:1 1 calc(50% - 8px);}
.f-field label{display:block;font-size:12px;color:var(--muted2);margin-bottom:6px;}
.f-field label i{color:var(--brand);font-style:normal;margin-left:2px;}
.f-input{width:100%;height:40px;border:1px solid var(--line);border-radius:6px;padding:0 12px;font-size:14px;font-family:var(--sans);color:var(--txt);outline:none;box-sizing:border-box;background:#fff;}
textarea.f-input{height:auto;padding:10px 12px;resize:vertical;line-height:1.6;}
select.f-input{cursor:pointer;}
.f-input:focus{border-color:var(--brand);}
.f-hint{font-size:12px;color:var(--muted2);margin-top:6px;}
.toast.err{border-left-color:var(--danger);}
.toast.err .toast-ic{background:var(--danger);}

/* ---------- 多选(分配桌号) ---------- */
.f-multi{max-height:224px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:8px 12px;display:flex;flex-direction:column;gap:4px;background:#fff;}
.f-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--txt);cursor:pointer;padding:3px 0;}
.f-check input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;flex:none;}
.f-check:hover{color:var(--brand);}

/* ---------- 列表:序号勾选 + 批量操作 ---------- */
.card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
.card-head .card-title{margin-bottom:0;}
.bulk-bar{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);}
.bulk-bar .sel-count{color:var(--brand);font-weight:700;min-width:14px;display:inline-block;text-align:center;}
.btn.sm{height:28px;padding:0 12px;font-size:12px;}
.btn-danger{background:#fff;color:var(--danger);border:1px solid #F3C3BD;}
.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff;border-color:var(--danger);}
.btn:disabled{cursor:not-allowed;opacity:.45;}
.tbl th.col-chk,.tbl td.col-chk{width:44px;text-align:center;padding-left:0;padding-right:0;}
.tbl th.col-no,.tbl td.col-no{width:56px;color:var(--muted2);font-variant-numeric:tabular-nums;text-align:center;}
.tbl .row-chk,.tbl .chk-all{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;}
.tbl tbody tr.sel{background:#FFF5F3;}
.tbl tbody tr.sel:hover{background:#FFEFEC;}

/* ---------- 新建预订 · 触控式弹窗 ---------- */
#modal-reservation .modal-body{max-height:74vh;overflow:auto;padding:20px 24px;}
.res-date-bar{display:flex;align-items:center;gap:12px;background:#F8F4EB;border-radius:8px;padding:10px 12px;margin-bottom:16px;}
.res-date-input{border:none;background:transparent;font-size:15px;color:var(--txt);font-family:var(--sans);outline:none;}
.res-period{border:none;background:transparent;font-size:15px;color:var(--txt);font-family:var(--sans);outline:none;cursor:pointer;font-weight:500;}
.res-lunar{font-size:13px;color:var(--muted2);margin-left:auto;}

.res-tag-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;min-height:32px;}
.res-tag-select{height:34px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font-size:13px;color:var(--txt);background:#fff;cursor:pointer;}
.res-tag{display:inline-flex;align-items:center;gap:6px;background:var(--brand);color:#fff;padding:6px 10px;border-radius:6px;font-size:13px;}
.res-tag-close{width:18px;height:18px;border:none;background:rgba(255,255,255,.2);color:#fff;border-radius:9px;font-size:12px;cursor:pointer;line-height:1;}

.res-section-title{font-size:13px;color:var(--muted2);margin:12px 0 8px;}
.res-people-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:14px;}
.res-people-btn{height:38px;border:1px solid var(--line);background:#fff;border-radius:6px;font-size:15px;color:var(--txt);cursor:pointer;transition:.15s;}
.res-people-btn:hover{border-color:var(--brand);color:var(--brand);}
.res-people-btn.active{background:var(--brand);color:#fff;border-color:var(--brand);}

.res-divider{display:flex;align-items:center;gap:12px;color:var(--muted2);font-size:13px;margin:18px 0 10px;}
.res-divider::before,.res-divider::after{content:"";flex:1;height:1px;background:var(--line);}
.res-card{background:#F8F4EB;border-radius:10px;padding:14px 16px;}
.res-card .res-input-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.res-card .res-input-row:last-child{margin-bottom:0;}
.res-ic{width:22px;text-align:center;font-size:16px;color:var(--muted2);flex:none;}
.res-card input[type="text"],.res-card input[type="tel"],.res-card input[type="number"],.res-card select,.res-card input[type="date"]{height:40px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font-size:14px;color:var(--txt);background:#fff;outline:none;flex:1;min-width:0;font-family:var(--sans);}
.res-card input:focus,.res-card select:focus{border-color:var(--brand);}
.res-gender-toggle{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;}
.res-gender{height:38px;padding:0 14px;border:none;background:#fff;color:var(--txt);font-size:14px;cursor:pointer;}
.res-gender.active{background:var(--brand);color:#fff;}
.res-to{color:var(--muted2);font-size:13px;}
.res-receptionist{flex:1.2;}
.res-time{flex:none;width:120px;}

.res-label{font-size:14px;color:var(--txt);min-width:70px;}
.res-stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;background:#fff;}
.res-stepper button{width:34px;height:34px;border:none;background:transparent;color:var(--txt);font-size:18px;cursor:pointer;}
.res-stepper input{width:44px;text-align:center;border:none;background:transparent;font-size:14px;color:var(--txt);}
.res-field.half{flex:1;display:flex;align-items:center;gap:8px;}

/* ---------- 预订管理 · 新版（参考客必得） ---------- */
.res-page{margin:-24px -28px 0;height:calc(100vh - 56px);display:flex;flex-direction:column;background:var(--bg);overflow:hidden;}

/* 顶部日期条 */
.res-daybar{min-height:104px;background:linear-gradient(180deg,#2E2721 0%,#211B15 100%);border-bottom:1px solid #16110D;box-shadow:0 2px 12px rgba(46,32,20,.28);display:flex;align-items:center;padding:11px 14px 9px;gap:8px;flex:none;position:relative;z-index:20;}
.res-today-btn{height:38px;padding:0 18px;border-radius:19px;border:1px solid rgba(233,75,60,.5);background:rgba(233,75,60,.14);color:#FF8B7E;font-size:13px;font-weight:600;cursor:pointer;flex:none;transition:.15s;}
.res-today-btn:hover{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(233,75,60,.28);}
/* 日期条:自适应网格,整窗日期一次性铺开(不再横向滚动/切边) */
/* 固定 8 列:15 天正好排成 8+7 两行,均衡且全部可见 */
.res-daybar-scroll{flex:1;min-width:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:1fr;gap:6px;align-items:stretch;padding:2px 4px;}
.res-daycard{min-width:0;border:1px solid rgba(255,255,255,.09);border-radius:11px;padding:6px 6px 5px;text-align:center;cursor:pointer;background:#37302A;transition:.18s;position:relative;display:flex;flex-direction:column;justify-content:center;}
.res-daycard:hover{border-color:rgba(233,75,60,.7);box-shadow:0 4px 12px rgba(0,0,0,.30);transform:translateY(-1px);background:#453B31;}
.res-daycard.sel{border-color:var(--brand);background:linear-gradient(180deg,#3A2A28 0%,#2E2120 100%);box-shadow:0 6px 16px rgba(233,75,60,.32);transform:translateY(-2px);}
.res-daycard.today{border-color:rgba(233,75,60,.6);}
.res-daycard.today.sel{border-color:var(--brand);}
.res-daycard-head{display:flex;align-items:center;justify-content:center;gap:4px;margin-bottom:3px;text-decoration:none;border-radius:6px;padding:1px 4px;transition:.15s;white-space:nowrap;overflow:hidden;}
.res-daycard-head:hover{background:rgba(255,255,255,.07);}
.res-daycard-head.active .res-daycard-date{color:#FFB3AA;}
.res-daycard-date{font-size:15.5px;font-weight:800;color:#F7F2EA;letter-spacing:-.2px;}
.res-daycard.sel .res-daycard-date{color:#FFB3AA;}
.res-daycard-week{font-size:10.5px;color:#A89E8F;}
.res-today-tag{position:absolute;left:-4px;top:-5px;height:16px;line-height:16px;padding:0 5px;font-size:10px;font-weight:700;background:linear-gradient(180deg,#F0604F,#DC3A28);color:#fff;border-radius:8px;box-shadow:0 2px 5px rgba(233,75,60,.4);z-index:2;}
.res-daycard-lunar{font-size:10px;color:#9C9284;margin-bottom:4px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.res-daycard-lunar.hl{color:#FFB3AA;font-weight:600;}
.res-daycard-badge{position:absolute;right:-5px;top:-5px;min-width:17px;height:17px;line-height:17px;padding:0 4px;border-radius:9px;background:linear-gradient(180deg,#F0604F,#DC3A28);color:#fff;font-size:10px;font-weight:700;text-align:center;box-shadow:0 2px 5px rgba(233,75,60,.4);z-index:2;}
.res-daycard.preview{border-color:rgba(233,75,60,.6);background:#33282A;}
.res-daycard-periods{display:flex;gap:3px;justify-content:center;}
.res-period-chip{flex:1;min-width:0;height:22px;line-height:22px;font-size:10px;color:#C6BAAA;background:#4B4138;border-radius:11px;text-decoration:none;transition:.15s;overflow:hidden;white-space:nowrap;}
.res-period-chip.all{flex:0 0 22px;font-weight:700;letter-spacing:0;}
.res-period-chip.active{background:linear-gradient(180deg,#F0604F,#DC3A28);color:#fff;font-weight:600;box-shadow:0 2px 7px rgba(233,75,60,.30);}
.res-period-chip:not(.active):hover{background:#5A4C3F;color:#EFE9DF;}

/* 日期条右侧:上下滑动块 */
.res-daynav{flex:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0 4px;}
.res-daynav-btn{width:30px;height:20px;border:1px solid rgba(255,255,255,.14);background:#37302A;border-radius:6px;color:#B5AA99;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:.15s;}
.res-daynav-btn svg{width:13px;height:13px;}
.res-daynav-btn:hover{border-color:var(--brand);color:#FF8B7E;background:#453B31;}
.res-daynav-btn:active{transform:scale(.94);}
.res-dayrange{-webkit-appearance:slider-vertical;writing-mode:vertical-lr;direction:rtl;width:30px;height:40px;accent-color:var(--brand);cursor:pointer;background:transparent;}
.res-dayrange::-webkit-slider-thumb{-webkit-appearance:slider-vertical;width:18px;height:10px;border-radius:5px;background:var(--brand);border:2px solid #fff;box-shadow:0 1px 4px rgba(233,75,60,.4);cursor:grab;}
.res-dayrange::-webkit-slider-runnable-track{width:5px;background:#4B4138;border-radius:3px;}

/* 日期选择器(阴历/阳历) */
.res-datepicker{flex:none;position:relative;padding-left:4px;}
.res-datepicker-btn{height:38px;display:flex;align-items:center;gap:6px;padding:0 13px;border:1px solid rgba(233,75,60,.5);background:rgba(233,75,60,.14);border-radius:19px;color:#FF8B7E;font-size:12.5px;font-weight:600;font-family:var(--sans);cursor:pointer;white-space:nowrap;transition:.15s;}
.res-datepicker-btn svg{width:15px;height:15px;color:#FF8B7E;flex:none;}
.res-datepicker-btn .res-dp-caret{width:12px;height:12px;color:#FF8B7E;opacity:.8;}
.res-datepicker-btn:hover{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:0 4px 12px rgba(233,75,60,.28);}
.res-datepicker-btn:hover svg{color:#fff;}
.res-calendar{position:absolute;right:0;top:44px;width:308px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(60,64,67,.16);padding:12px;z-index:60;}
.rc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.rc-title{font-size:14px;font-weight:600;color:var(--txt);}
.rc-nav{width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:7px;color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;}
.rc-nav svg{width:14px;height:14px;}
.rc-nav:hover{border-color:var(--brand);color:var(--brand);}
.rc-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;}
.rc-week span{text-align:center;font-size:11px;color:var(--muted2);padding:3px 0;}
.rc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.rc-cell{height:40px;border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:.13s;border:1px solid transparent;}
.rc-cell b{font-size:13.5px;font-weight:500;color:var(--txt);line-height:1.1;}
.rc-cell i{font-size:9.5px;font-style:normal;color:var(--muted2);line-height:1.1;margin-top:1px;white-space:nowrap;}
.rc-cell:hover{background:#F5F1E8;}
.rc-cell.empty{cursor:default;pointer-events:none;}
.rc-cell.today{border-color:var(--brand);}
.rc-cell.today b{color:var(--brand);}
.rc-cell.sel{background:var(--brand);}
.rc-cell.sel b,.rc-cell.sel i{color:#fff;}
.rc-cell.fest i,.rc-cell.fest b{color:var(--brand);}
.rc-cell.sel.fest b,.rc-cell.sel.fest i{color:#fff;}
.rc-loading{grid-column:1/-1;text-align:center;color:var(--muted2);font-size:12px;padding:16px 0;}
.rc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);}
.rc-lunar{font-size:11.5px;color:var(--muted);}
.rc-today{height:26px;padding:0 12px;border:1px solid var(--line);background:#fff;border-radius:13px;color:var(--muted);font-size:12px;font-family:var(--sans);cursor:pointer;}
.rc-today:hover{border-color:var(--brand);color:var(--brand);}

/* 主体左右布局 */
.res-body{flex:1;display:flex;overflow:hidden;min-height:0;}
.res-side{width:300px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;flex:none;}
.res-main{flex:1;display:flex;flex-direction:column;min-width:0;background:#F7F8FC;position:relative;}

/* 左侧头部 */
.res-side-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;background:#FAF6ED;}
.res-store-select{height:34px;flex:1;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;outline:none;background:#fff;}
.res-store-select:focus{border-color:var(--brand);}
.res-only-empty{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer;}
.res-only-empty input{width:14px;height:14px;accent-color:var(--brand);}

/* 左侧统计 */
.res-stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);padding:12px 8px;background:#FDFBF6;}
.res-stat{text-align:center;position:relative;}
.res-stat:not(:last-child)::after{content:"";position:absolute;right:0;top:6px;bottom:6px;width:1px;background:var(--line);}
.res-stat-num{display:block;font-size:18px;font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums;}
.res-stat-label{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11px;color:var(--muted);margin-top:4px;}
.res-stat-dot{width:6px;height:6px;border-radius:50%;display:inline-block;}
.res-stat-dot.reserved{background:var(--brand);}
.res-stat-dot.walkin{background:#E66A1F;}
.res-stat-dot.seated{background:#1E7A36;}
.res-stat-dot.vacant{background:#9AA0A6;}

/* 区域 / 桌台 */
.res-areas{flex:1;overflow-y:auto;padding:16px;}
.res-area{margin-bottom:18px;}
.res-area-title{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:10px;display:flex;justify-content:space-between;}
.res-table-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.res-table-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff;cursor:pointer;transition:.18s;min-height:68px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;}
.res-table-card:hover{box-shadow:0 4px 12px rgba(60,64,67,.10);transform:translateY(-1px);}
.res-table-card::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;}
.res-table-card.free::before{background:#1E7A36;}
.res-table-card.booked::before{background:var(--brand);}
.res-table-card.free{background:#E9F4EB;}
.res-table-card.booked{background:#FFE8E2;}
.res-table-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;}
/* 核餐状态图标:与移动端一致,未核餐不显示,核餐后才出。做成清晰徽标,三个状态都醒目 */
.res-verify-ic{display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;border-radius:50%;font-size:11px;font-weight:700;line-height:1;
  color:#fff;margin-right:6px;flex:0 0 auto;vertical-align:middle;}
.res-vs-confirmed{background:#16a34a;}    /* ✓ 已确认 */
.res-vs-unreachable{background:#f59e0b;}  /* ? 未接通 */
.res-vs-pending{background:#3b82f6;}      /* ! 待定 */
.res-table-code{font-size:15px;font-weight:700;color:var(--txt);}
.res-table-cap{font-size:11px;color:var(--muted2);background:#F5F1E8;border-radius:10px;padding:1px 7px;white-space:nowrap;}
.res-table-store{font-size:10.5px;color:var(--muted2);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.res-table-guest{font-size:13px;color:var(--txt);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px;}
.res-table-meta{display:flex;align-items:center;justify-content:space-between;margin-top:5px;font-size:11px;color:var(--muted);}
.res-table-status{font-size:10px;padding:2px 7px;border-radius:10px;background:#FFF0EE;color:var(--brand);font-weight:500;}
.res-table-status.st-ok{background:var(--ok-bg);color:var(--ok);}
.res-table-status.st-warn{background:var(--warn-bg);color:var(--warn);}

/* 桌台点选 */
.res-table-card.booked{cursor:not-allowed;opacity:.86;}
.res-table-card.booked:hover{transform:none;box-shadow:none;}
.res-table-card.picked{border-color:var(--brand);background:#FFF1EE;box-shadow:0 0 0 2px rgba(233,75,60,.16);}
.res-table-card.picked::before{background:var(--brand);}
.res-pick-ic{position:absolute;right:0;top:0;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:var(--brand);color:#fff;border-bottom-left-radius:10px;opacity:0;transform:translate(6px,-6px);transition:.16s;}
.res-pick-ic svg{width:13px;height:13px;}
.res-table-card.picked .res-pick-ic{opacity:1;transform:translate(0,0);}

/* 左侧已选桌台栏 */
.res-pick-bar{flex:none;display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line);background:#FFF8F7;}
.res-pick-label{font-size:12.5px;color:var(--txt);white-space:nowrap;}
.res-pick-label b{color:var(--brand);font-size:14px;padding:0 2px;}
.res-pick-codes{flex:1;min-width:0;font-size:12.5px;color:var(--txt);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.res-pick-clear{flex:none;height:26px;padding:0 12px;border:1px solid var(--line);background:#fff;border-radius:13px;color:var(--muted);font-size:12px;cursor:pointer;}
.res-pick-clear:hover{border-color:var(--brand);color:var(--brand);}

/* 弹窗内已选桌台 */
.res-picked{display:inline-flex;align-items:center;gap:6px;max-width:100%;}
.res-picked-label{font-size:12px;color:var(--muted2);white-space:nowrap;}
.res-picked-tags{display:inline-flex;flex-wrap:wrap;gap:6px;}
.res-picked-tag{display:inline-flex;align-items:center;gap:5px;background:var(--brand);color:#fff;padding:5px 8px;border-radius:6px;font-size:12.5px;font-weight:500;}
.res-picked-tag button{width:16px;height:16px;line-height:1;border:none;background:rgba(255,255,255,.22);color:#fff;border-radius:8px;font-size:11px;cursor:pointer;padding:0;}
.res-picked-tag button:hover{background:rgba(255,255,255,.4);}
.res-picked-hint{font-size:12px;color:var(--muted2);margin:-6px 0 12px;}

/* 右侧头部 */
.res-main-head{padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--card);border-bottom:1px solid var(--line);flex:none;}
.res-main-title{display:flex;align-items:baseline;gap:10px;}
.res-main-date{font-size:16px;font-weight:600;}
.res-main-title small{font-size:13px;color:var(--muted);}
.res-search{display:flex;align-items:center;gap:8px;position:relative;}
.res-search input{height:36px;width:240px;border:1px solid var(--line);border-radius:18px;padding:0 38px 0 34px;font-size:13px;outline:none;background:#F5F1E8;}
.res-search input:focus{border-color:var(--brand);background:#fff;}
.res-search-btn{position:absolute;right:2px;top:2px;height:32px;width:32px;border-radius:16px;background:var(--brand);color:#fff;border:none;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.res-search-clear{font-size:12px;color:var(--muted);text-decoration:none;}
.res-search-clear:hover{color:var(--brand);}
.res-search-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted2);pointer-events:none;}

/* 订单状态筛选胶囊条 */
.res-filterbar{display:flex;align-items:center;gap:12px;padding:10px 24px;background:var(--card);border-bottom:1px solid var(--line);flex:none;}
.res-status-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.res-pill{height:32px;padding:0 16px;border:1px solid var(--line);border-radius:16px;background:#F5F1E8;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;transition:.15s;font-family:var(--sans);white-space:nowrap;}
.res-pill:hover{border-color:var(--brand);color:var(--brand);}
.res-pill.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600;box-shadow:0 3px 8px rgba(233,75,60,.28);}

/* 预订卡片列表 */
.res-list{flex:1;overflow-y:auto;padding:16px 24px 80px;}
.res-list-item{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:12px;cursor:pointer;transition:.18s;position:relative;}
.res-list-item:hover{border-color:rgba(233,75,60,.35);box-shadow:0 6px 18px rgba(60,64,67,.10);transform:translateY(-1px);}
.res-list-item:active{transform:translateY(0);}
.res-item-time{width:58px;text-align:center;flex:none;background:#F5F1E8;border-radius:10px;padding:8px 0;}
.res-item-time b{display:block;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;}
.res-item-time span{font-size:11px;color:var(--muted);}
.res-item-avatar{width:42px;height:42px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:16px;display:flex;align-items:center;justify-content:center;flex:none;}
.res-item-avatar.female{background:#FCE2F3;color:#C21E7B;}
.res-item-info{flex:1;min-width:0;}
.res-item-top{display:flex;align-items:center;gap:8px;margin-bottom:5px;overflow:hidden;}
.res-item-table{font-size:15px;font-weight:600;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.res-item-people{font-size:13px;color:var(--muted);flex:none;}
.res-item-customer{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);flex-wrap:wrap;}
.res-item-customer b{color:var(--txt);font-weight:500;font-size:14px;}
.res-item-tag{font-size:11px;background:#F5F1E8;color:var(--muted2);border-radius:4px;padding:2px 7px;}
.res-item-tag.period{background:#FFF0EE;color:var(--brand);font-weight:500;}
.res-item-action{flex:none;}
.res-item-arrow{width:18px;height:18px;color:var(--muted2);flex:none;opacity:.5;transition:.15s;}
.res-list-item:hover .res-item-arrow{opacity:1;color:var(--brand);}
.res-empty-state{padding:60px 0;}

/* 底部创建订单:定位在右侧列表区内(不再压到左侧桌台面板) */
.res-create-btn{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);height:48px;width:calc(100% - 48px);max-width:520px;border-radius:24px;background:linear-gradient(90deg,#F26A57 0%,#E03A28 100%);color:#fff;border:none;font-size:15px;font-weight:600;letter-spacing:.4px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;box-shadow:0 8px 22px rgba(224,58,40,.34);z-index:30;transition:.18s;}
.res-create-btn:hover{box-shadow:0 12px 28px rgba(224,58,40,.44);transform:translateX(-50%) translateY(-2px);}
.res-create-btn:active{transform:translateX(-50%) translateY(0);}
.res-create-ic{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;}

/* 弹窗图标适配 SVG */
.res-ic{width:22px;height:22px;color:var(--muted2);display:flex;align-items:center;justify-content:center;flex:none;}
.res-ic svg{width:100%;height:100%;}

/* 弹窗在预订新布局内的高度约束(避免底部按钮被裁) */

/* 响应式:小屏堆叠 */
@media (max-width:1100px){
  .res-side{width:250px;}
  .res-create-btn{width:calc(100% - 32px);}
}
/* 窄屏:日期网格降级为单行横向滚动(带渐隐提示),避免行数过多占高 */
@media (max-width:1429px){
  .res-daybar-scroll{display:flex;overflow-x:auto;overflow-y:hidden;gap:6px;align-items:center;padding:2px 10px;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);
            mask-image:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);}
  .res-daybar-scroll::-webkit-scrollbar{height:6px;}
  .res-daybar-scroll::-webkit-scrollbar-thumb{background:#D9D0C0;border-radius:3px;}
  .res-daybar-scroll::-webkit-scrollbar-thumb:hover{background:#C6BCA9;}
  .res-daycard{flex:0 0 auto;min-width:106px;scroll-snap-align:center;}
  .res-daybar-scroll{scroll-snap-type:x proximity;}
  .res-dayrange{height:34px;}
}

/* ============================================================
   RBAC 扩展(角色/菜单/用户关联)  +  通用细节补齐
   ============================================================ */

/* ---- 标签与按钮补充 ---- */
.badge.st-brand{background:var(--brand-soft);color:var(--brand);}
.btn.xs{height:26px;padding:0 10px;font-size:12px;border-radius:5px;}
.tbl th.col-act,.tbl td.col-act{width:96px;text-align:right;padding-right:20px;}
.tbl th.col-c,.tbl td.col-c{width:64px;text-align:center;}
.tag-row{display:inline-flex;flex-wrap:wrap;gap:5px;max-width:320px;}
.tag-row .badge{padding:2px 9px;font-size:11.5px;}

/* ---- 单元格两行(主/次) ---- */
.cell-main{display:block;line-height:1.35;}
/* 客户标签页:标签颜色小圆点 */
.tag-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:middle;box-shadow:inset 0 0 0 1px rgba(0,0,0,.10);}
.cell-sub{display:block;font-size:11.5px;color:var(--muted2);margin-top:2px;}

/* ---- 分段筛选(菜单类型) ---- */
.seg{display:inline-flex;background:#F5F1E8;border:1px solid var(--line);border-radius:8px;padding:3px;gap:2px;}
.seg-btn{height:26px;padding:0 12px;border:none;background:transparent;border-radius:6px;font-size:12.5px;font-family:var(--sans);color:var(--muted);cursor:pointer;transition:.15s;white-space:nowrap;}
.seg-btn:hover{color:var(--txt);}
.seg-btn.active{background:#fff;color:var(--brand);font-weight:600;box-shadow:0 1px 3px rgba(32,33,36,.10);}

/* ---- 抽屉副标题 ---- */
.drawer-sub{font-size:12.5px;color:var(--muted);margin-top:3px;}

/* ---- 权限分配抽屉 ---- */
.perm-form{display:flex;flex-direction:column;flex:1;min-height:0;}
.perm-tip{font-size:12.5px;color:var(--muted);background:#F5F1E8;border:1px dashed var(--line);border-radius:8px;padding:9px 12px;margin-bottom:12px;line-height:1.55;}
.perm-actions{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
/* 角色权限抽屉:PC 后台 / 移动端 切换 */
.perm-plats{display:flex;gap:6px;margin-bottom:12px;}
.perm-plat-btn{flex:1;padding:8px 10px;border:1px solid var(--line);background:#fff;border-radius:7px;
  font-size:13px;color:var(--muted);cursor:pointer;transition:.15s;font-family:var(--sans);}
.perm-plat-btn:hover{border-color:var(--brand);color:var(--brand);}
.perm-plat-btn.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600;}
.perm-tree-plat[hidden]{display:none;}
.perm-lock{font-style:normal;font-size:10.5px;line-height:1;padding:1px 5px;border-radius:6px;
  background:rgba(233,75,60,.1);color:var(--brand);margin-left:6px;vertical-align:middle;}
.perm-count{margin-left:auto;font-size:12.5px;color:var(--muted);}
.perm-count b{color:var(--brand);font-size:14px;margin:0 2px;}
.perm-tree{border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.perm-dir{border-bottom:1px solid var(--line);}
.perm-dir:last-child{border-bottom:none;}
.perm-check{display:flex;align-items:center;gap:9px;cursor:pointer;padding:9px 14px;transition:background .12s;}
.perm-check:hover{background:#FAF6ED;}
.perm-check input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;flex:none;}
.perm-check span{font-size:13px;color:var(--txt);}
.perm-check.lv0{background:#FBF7F6;font-weight:600;}
.perm-check.lv0:hover{background:#F7EFEE;}
.perm-check.lv1{padding-left:30px;}
/* 一级分组(无 endpoint 的分组头):加浅底 + 左侧品牌色导轨,一眼区分"分组"与"页面" */
.perm-check.lv1.perm-group{background:#FDF3F1;font-weight:600;}
.perm-check.lv1.perm-group:hover{background:#F9E9E6;}
.perm-check.lv1.perm-group .perm-code{color:rgba(233,75,60,.55);}
.perm-check.lv2{padding-left:52px;background:#FDFAF3;}
.perm-check.lv2 span{font-size:12.5px;color:var(--muted);}
.perm-code{margin-left:auto;font-size:11px;color:var(--muted2);}
/* 二级子菜单(页面 → 子页面,如 桌台管理 → 区域/楼层/桌型) */
.perm-check.lv2.perm-sub{padding-left:52px;background:#FBF8F7;border-left:3px solid rgba(233,75,60,.3);}
.perm-check.lv2.perm-sub:hover{background:#F7F1EF;}
.perm-check.lv2.perm-sub span{color:var(--txt);font-size:12.5px;font-weight:500;}
.perm-check.lv3{padding-left:74px;background:#FDFAF3;}
.perm-check.lv3 span{font-size:12px;color:var(--muted2);}

/* ---- 菜单管理:树形缩进 + 图标 ---- */
.menu-tree-cell{display:inline-flex;align-items:center;gap:8px;}
/* 层级:0=目录 1=一级分组 2=二级菜单 3=按钮(2026-10-16 两级菜单重构后层级 +1) */
.menu-tree-cell.lv1{padding-left:22px;}
.menu-tree-cell.lv2{padding-left:44px;}
.menu-tree-cell.lv3{padding-left:66px;}
.tree-elbow{color:var(--muted2);font-size:12px;margin-right:-2px;}
.menu-ic{width:15px;height:15px;color:var(--muted);flex:none;}
.menu-ic-empty{width:15px;height:15px;flex:none;}
.menu-name-strong{font-weight:600;}
/* 一级分组旁的子菜单数角标,与侧栏 nav-count 呼应 */
.menu-child-cnt{font-style:normal;font-size:11px;color:var(--muted);background:var(--warn-bg);border-radius:9px;padding:1px 7px;font-weight:600;}
.dot-on,.dot-off{display:inline-block;width:9px;height:9px;border-radius:50%;}
.dot-on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg);}
.dot-off{background:var(--muted2);opacity:.5;}

/* ---- 表单:开关 ---- */
.f-switch{display:flex;align-items:center;gap:9px;height:40px;font-size:13px;color:var(--txt);cursor:pointer;}
.f-switch input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;}

/* ---- 侧边栏空权限提示 ---- */
.nav-empty{margin:14px 8px;padding:14px 12px;border:1px dashed var(--line);border-radius:8px;font-size:12.5px;color:var(--muted);line-height:1.7;text-align:center;}
.nav-empty span{font-size:11.5px;color:var(--muted2);}

/* ============================================================
   预订管理页 视觉升级:降低"偏白"、补足层次与色彩
   (以下均为覆盖式规则,仅作用于预订页 .res-* 作用域)
   ============================================================ */

/* 页面底色统一为暖米(与移动端一致),白色卡片浮起更柔和 */
.res-page{background:#F0EADC;}
.res-main{background:linear-gradient(180deg,#F0EADC 0%,#F6F1E7 260px,#F6F1E7 100%);}

/* 左侧面板:整体留白,头部/统计用暖色浅底分层 */
.res-side{background:#FDFBF6;box-shadow:1px 0 0 rgba(60,64,67,.04);}
.res-side-head{background:linear-gradient(180deg,#FFF6F4 0%,#FDF0ED 100%);border-bottom:1px solid #F1E2DE;}
.res-store-select{background:#fff;border-color:#EDDEDA;}
.res-store-select:hover{border-color:rgba(233,75,60,.45);}

/* 统计块:数字按指标着色,底部分层 */
.res-stats{background:linear-gradient(180deg,#FFFFFF 0%,#FBF8F1 100%);padding:13px 8px;}
.res-stat-num{letter-spacing:-.4px;}
.res-stat:nth-child(1) .res-stat-num{color:#E94B3C;}
.res-stat:nth-child(2) .res-stat-num{color:#E66A1F;}
.res-stat:nth-child(3) .res-stat-num{color:#1E7A36;}
.res-stat:nth-child(4) .res-stat-num{color:#7C828C;}
.res-stat-dot{box-shadow:0 0 0 3px rgba(32,33,36,.05);}

/* 区域标题:左侧品牌色竖条 */
.res-area-title{position:relative;padding-left:11px;color:#3C4043;font-weight:600;}
.res-area-title::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:13px;border-radius:2px;background:linear-gradient(180deg,#F0604F,#DC3A28);}

/* 桌台卡片:更实的描边 + 轻浮起 + 渐变底 */
.res-table-card{border-color:#E7E0D2;box-shadow:0 1px 2px rgba(60,64,67,.05);}
.res-table-card.free{background:linear-gradient(180deg,#EEF7EF 0%,#D8EFE0 100%);}
.res-table-card.booked{background:linear-gradient(180deg,#FFE9E2 0%,#FFCFBD 100%);}
.res-table-code{letter-spacing:-.3px;}
.res-table-cap{background:#F1EBDF;}

/* 右侧头部:白底 + 细分隔,日期主标题加重 */
.res-main-head{background:linear-gradient(180deg,#FFFFFF 0%,#FEFCF8 100%);box-shadow:0 1px 0 rgba(60,64,67,.03);}
.res-main-date{font-size:17px;font-weight:700;letter-spacing:-.2px;}
.res-search input{background:#F5F1E8;border-color:#E5DECF;}
.res-search input::placeholder{color:#A6ACB6;}

/* 预订卡片:按状态着色的左侧色条,扫读更快 */
.res-list-item{box-shadow:0 1px 3px rgba(60,64,67,.07);overflow:hidden;}
.res-list-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#E94B3C;}
.res-list-item.st-PENDING::before{background:#E66A1F;}
.res-list-item.st-CONFIRMED::before{background:#E94B3C;}
.res-list-item.st-SEATED::before{background:#1E7A36;}
.res-list-item.st-FINISHED::before,.res-list-item.st-CANCELLED::before{background:#C4C9D2;}
.res-list-item.st-NO_SHOW::before{background:#C5221F;}
.res-list-item.st-CANCELLED{opacity:.72;}
.res-item-time{background:linear-gradient(180deg,#FFF0EE 0%,#FFE4DF 100%);}
.res-item-time b{color:#D93B2B;}
.res-item-time span{color:rgba(217,59,43,.72);}
.res-item-tag{background:#F1EBDF;color:#6B7280;}

/* ---------- 预订设置 · 短信设置 ---------- */
.sms-wrap{display:flex;flex-direction:column;gap:14px;}
/* 适用门店选择条 */
.sms-store-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line,#ECECEC);border-radius:10px;padding:12px 14px;}
.sms-store-bar .sms-label{margin-bottom:0;}
.sms-select{font-size:14px;font-family:var(--sans);color:#2B2F38;background:#fff;
  border:1px solid #D9DCE3;border-radius:8px;padding:8px 12px;min-width:220px;cursor:pointer;}
.sms-select:focus{outline:none;border-color:var(--brand,#E94B3C);box-shadow:0 0 0 2px rgba(233,75,60,.12);}
.sms-store-tip{font-size:13px;color:#8A93A2;}
.sms-top{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:14px;align-items:stretch;}

/* 参数面板(浅黄底,与截图一致) */
.sms-params{background:#FDF9E7;border:1px solid #F0E4B8;}
.sms-params-label{font-weight:600;font-size:14px;margin-bottom:12px;color:#5A4A00;}
.sms-param-grid{display:flex;flex-wrap:wrap;gap:9px;}
.sms-param{background:#FBF3D0;border:1px solid #EBDCA0;color:#8A6D00;font-size:13px;
  padding:6px 11px;border-radius:6px;cursor:pointer;font-family:var(--sans);transition:background .15s,box-shadow .15s;}
.sms-param:hover{background:#F6E9B8;box-shadow:0 1px 4px rgba(138,109,0,.14);}
.sms-params-tip{margin-top:12px;font-size:12px;color:#B0A15E;}

/* 生成预览 */
.sms-preview{display:flex;flex-direction:column;}
.sms-preview-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
.sms-count{font-size:13px;color:var(--muted);}
.sms-count b{color:var(--danger);font-size:15px;}
.sms-preview-title{background:#F1EBDF;border:1px solid var(--line);border-bottom:none;
  border-radius:8px 8px 0 0;text-align:center;font-weight:600;font-size:13.5px;padding:8px 0;color:#3C4657;}
.sms-preview-box{flex:1;min-height:150px;background:#F8F4EB;border:1px dashed #D8DDE6;
  border-radius:0 0 8px 8px;padding:14px 16px;font-size:13.5px;line-height:1.8;color:#3A4150;white-space:pre-wrap;}
.sms-preview-box.empty{color:var(--muted2);}
.sms-preview-tag{display:inline-block;font-size:11px;color:var(--brand);background:var(--brand-soft);
  border-radius:4px;padding:1px 7px;margin-bottom:6px;}
.sms-preview-msg{margin-bottom:12px;}
.sms-preview-msg:last-child{margin-bottom:0;}

/* 场景页签 */
.sms-tabs{display:flex;gap:0;border-bottom:2px solid var(--line);}
.sms-tab{background:none;border:none;font-family:var(--sans);font-size:14px;color:var(--muted);
  padding:10px 22px;cursor:pointer;position:relative;transition:color .15s;}
.sms-tab:hover{color:var(--txt);}
.sms-tab.on{color:var(--brand);font-weight:600;}
.sms-tab.on::after{content:"";position:absolute;left:14px;right:14px;bottom:-2px;height:2px;background:var(--brand);}
.sms-note{font-size:13px;color:var(--danger);}

/* 模板列表条 */
.sms-tpl-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sms-tpl-list{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0;}
.sms-tpl-empty{font-size:12.5px;color:var(--muted2);}
.sms-tpl-chip{background:#fff;border:1px solid var(--line);color:#4A5262;font-size:13px;
  padding:6px 14px;border-radius:16px;cursor:pointer;font-family:var(--sans);transition:all .15s;}
.sms-tpl-chip:hover{border-color:rgba(233,75,60,.5);color:var(--brand);}
.sms-tpl-chip.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:600;}
.sms-tpl-add{background:none;border:1px dashed #C6CBD6;color:var(--muted);font-size:13px;
  padding:6px 14px;border-radius:16px;cursor:pointer;font-family:var(--sans);transition:all .15s;}
.sms-tpl-add:hover{border-color:var(--brand);color:var(--brand);}

/* 编辑区 */
.sms-editor{display:flex;flex-direction:column;gap:16px;padding:18px 20px;}
.sms-field{display:flex;flex-direction:column;gap:8px;}
.sms-label{font-weight:600;font-size:13.5px;color:#3C4657;}
.sms-chk{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);cursor:pointer;user-select:none;}
.sms-chk input{accent-color:var(--brand);width:15px;height:15px;cursor:pointer;}
.sms-chk:hover{color:var(--txt);}
.sms-input{border:1px solid #D8DDE6;border-radius:8px;padding:8px 12px;font-size:13.5px;
  font-family:var(--sans);color:var(--txt);background:#fff;outline:none;transition:border-color .15s,box-shadow .15s;}
.sms-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(233,75,60,.12);}
.sms-textarea{border:1px solid #D8DDE6;border-radius:8px;padding:10px 12px;font-size:13.5px;
  line-height:1.7;font-family:var(--sans);color:var(--txt);background:#fff;outline:none;
  resize:vertical;min-height:72px;transition:border-color .15s,box-shadow .15s;}
.sms-textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(233,75,60,.12);}
.sms-actions{display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--line);padding-top:14px;}

/* ---------- 预订设置 · 发送短信记录 ---------- */
.card-sub{font-size:12px;color:var(--muted2);max-width:560px;text-align:right;line-height:1.6;}

/* ---------- 预订设置 · 邀请函设置 ---------- */
.inv-filter{display:flex;align-items:flex-end;gap:14px;flex:1;min-width:0;}
.inv-create{display:flex;align-items:flex-end;gap:10px;}
.inv-create input{height:32px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font-size:13px;background:#F5F1E8;min-width:160px;outline:none;}
.inv-create input:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.inv-card{padding:0 0 6px;overflow-x:auto;}
.inv-tbl th,.inv-tbl td{padding:12px 14px;}
.inv-tbl .inv-c{text-align:center;}
.inv-tbl .inv-name{font-weight:500;}
.inv-tbl .inv-op,.inv-tbl .inv-time{color:var(--muted);font-size:12.5px;}
.inv-ops{white-space:nowrap;}
.inv-ops .btn{margin:0 3px;}
.inv-switch{display:inline-block;position:relative;width:40px;height:22px;vertical-align:middle;cursor:pointer;}
.inv-switch input{opacity:0;width:0;height:0;}
.inv-slider{position:absolute;inset:0;background:#C4C9D2;border-radius:11px;transition:background .18s;}
.inv-slider::before{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s;}
.inv-switch input:checked + .inv-slider{background:var(--ok);}
.inv-switch input:checked + .inv-slider::before{transform:translateX(18px);}
.inv-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 10px;flex-wrap:wrap;}
.inv-pager-info{font-size:12.5px;color:var(--muted);}
.inv-pg{display:inline-block;min-width:28px;text-align:center;padding:4px 8px;margin-left:4px;font-size:12.5px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:5px;text-decoration:none;}
a.inv-pg:hover{color:var(--brand);border-color:var(--brand);}
.inv-pg.on{color:#fff;background:var(--brand);border-color:var(--brand);font-weight:600;}

/* 分享信息弹窗 */
.inv-share-modal{width:460px;max-width:92vw;}
.inv-share-form{display:flex;flex-direction:column;gap:12px;padding:18px 22px;}
.inv-share-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);}
.inv-share-form input,.inv-share-form textarea{border:1px solid #D8DDE6;border-radius:7px;padding:8px 11px;font-size:13px;font-family:var(--sans);outline:none;background:#FAF7F0;transition:.15s;}
.inv-share-form input:focus,.inv-share-form textarea:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px rgba(233,75,60,.12);}
.inv-copy-modal{width:460px;max-width:92vw;}
.inv-copy-form{display:flex;flex-direction:column;gap:12px;padding:18px 22px;}
.inv-copy-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);}
.inv-copy-form input{border:1px solid #D8DDE6;border-radius:7px;padding:8px 11px;font-size:13px;font-family:var(--sans);outline:none;background:#FAF7F0;transition:.15s;}
.inv-copy-form input:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px rgba(233,75,60,.12);}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding-top:6px;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--line);}
.modal-title{font-size:14.5px;font-weight:600;}
.modal-body{padding:18px 22px;}

/* ---------- 邀请函可视化编辑器(中秋海报编辑器风格) ---------- */
.ive-wrap{display:flex;flex-direction:column;height:calc(100vh - 96px);background:#f0f1f3;}
.ive-top{display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid #e2e4e8;padding:0 16px;height:52px;flex:none;}
.ive-back{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:#f5f5f5;color:#666;font-size:18px;text-decoration:none;}
.ive-back:hover{background:#eee;}
.ive-title{flex:0 0 220px;}
.ive-title input{width:100%;height:34px;border:1px solid #e2e4e8;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;outline:none;}
.ive-title input:focus{border-color:var(--brand);}
.ive-top-center{display:flex;align-items:center;gap:6px;flex:1;justify-content:center;}
.ive-top-right{display:flex;align-items:center;gap:8px;flex:none;}
.ive-tbtn{display:flex;align-items:center;gap:5px;height:32px;padding:0 10px;border:1px solid #e2e4e8;border-radius:6px;background:#fff;color:#555;font-size:12.5px;cursor:pointer;transition:.15s;white-space:nowrap;}
.ive-tbtn:hover{border-color:#c8ccd5;color:#333;}
.ive-tbtn .ico{font-size:14px;line-height:1;}
.ive-tdiv{width:1px;height:20px;background:#e2e4e8;margin:0 2px;}
.ive-tbtn-save{background:var(--brand);border-color:var(--brand);color:#fff;}
.ive-tbtn-save:hover{background:#d63d2e;}
.ive-size{font-size:12px;color:#999;}
.ive-size b{font-weight:600;color:#555;margin:0 2px;}
.ive-main{display:grid;grid-template-columns:220px minmax(0,1fr) 320px;gap:0;flex:1;min-height:0;}
.ive-palette{background:#f7f8fa;border-right:1px solid #e2e4e8;overflow:auto;padding:14px 10px;}
.ive-palette-section{margin-bottom:18px;}
.ive-palette-title{font-size:12px;font-weight:600;color:#909399;margin-bottom:8px;padding-left:4px;}
.ive-palette-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:8px;}
.ive-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 4px;border:1px solid #e2e4e8;border-radius:8px;background:#fff;cursor:pointer;transition:.15s;}
.ive-add .ico{font-size:18px;line-height:1;color:#666;}
.ive-add span{font-size:11.5px;color:#555;}
.ive-add:hover{border-color:var(--brand);box-shadow:0 2px 6px rgba(233,75,60,.12);}
.ive-add:hover .ico,.ive-add:hover span{color:var(--brand);}

.ive-canvas-area{overflow:auto;background:#2b2f3a;display:flex;justify-content:center;align-items:flex-start;padding:24px;}
.ive-canvas{position:relative;width:375px;height:813px;background:#fff;background-size:cover;flex:none;box-shadow:0 10px 40px rgba(0,0,0,.45);border-radius:2px;overflow:hidden;}
.ive-canvas::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:25px 25px;pointer-events:none;z-index:0;}
.ive-canvas.preview{cursor:default;}
.ive-item{position:absolute;box-sizing:border-box;cursor:move;z-index:1;}
.ive-item-text{line-height:1.5;white-space:pre-wrap;word-break:break-all;overflow:hidden;display:flex;align-items:center;}
.ive-item-image{overflow:hidden;}
.ive-item-image img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;}
.ive-item-image.empty-img{display:flex;align-items:center;justify-content:center;background:#F1EBDF;border:1px dashed #C6CBD6;color:#777;font-size:13px;}
.ive-item-button{display:flex;align-items:center;justify-content:center;border-radius:8px;overflow:hidden;}
.ive-item-param{display:flex;align-items:center;justify-content:center;background:rgba(233,75,60,.08);color:var(--brand);border:1px dashed var(--brand);border-radius:4px;font-size:13px;padding:0 6px;}
.ive-item-music{display:flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,#2C2117,#3C2D1D);color:#E7C988;border-radius:10px;overflow:hidden;padding:0 12px;}
.ive-item-music .ic{font-size:20px;flex:0 0 auto;}
.ive-item-music .fn{font-size:12px;color:rgba(231,201,136,.9);max-width:78%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ive-item-video{display:flex;align-items:center;justify-content:center;background:#1a1a1a;color:#fff;border-radius:10px;overflow:hidden;}
.ive-item-video .ic{font-size:26px;}
.ive-item-video .fn{font-size:12px;color:rgba(255,255,255,.85);max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:6px;}
.ive-item-music audio,.ive-item-video video{width:100%;height:100%;}
.ive-item.sel{outline:2px solid var(--brand);outline-offset:1px;z-index:10;}
.ive-canvas.preview .ive-item{cursor:default;}
.ive-canvas.preview .ive-item-param{background:transparent;border:none;color:inherit;}
/* 地图导航 / 回执确认:编辑器画布组件占位与预览 */
.ive-item-map{background:#2C2117;border-radius:16px;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.ive-item-rsvp{background:linear-gradient(158deg,rgba(255,255,255,.10),rgba(255,255,255,.028) 46%,rgba(255,255,255,.058)),rgba(30,22,15,.80);border:1px solid rgba(194,162,106,.34);border-radius:22px;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.20),0 18px 40px rgba(0,0,0,.45);}
.ive-cmp-ph{display:flex;flex-direction:column;align-items:center;gap:6px;color:#E7C988;font-size:13px;}
.ive-cmp-ph .ic{font-size:26px;}
.ive-cmp-prev{width:100%;height:100%;display:flex;box-sizing:border-box;}
.ive-map-prev{flex-direction:row;gap:10px;padding:10px;align-items:stretch;}
.ive-map-prev .mp-box{flex:0 0 96px;height:100%;border-radius:10px;background:#6b7785;position:relative;display:flex;align-items:center;justify-content:center;}
.ive-map-prev .mp-pin{font-size:22px;}
.ive-map-prev .mp-info{flex:1;display:flex;flex-direction:column;justify-content:center;min-width:0;}
.ive-map-prev .mp-store{color:#F3E6CC;font-size:13px;font-weight:600;}
.ive-map-prev .mp-addr{color:rgba(243,230,204,.8);font-size:11px;line-height:1.5;margin:3px 0 7px;}
.ive-map-prev .mp-nav{align-self:flex-start;color:#fff;font-size:12px;padding:5px 14px;border-radius:16px;}
.ive-rsvp-prev{flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#F3E6CC;text-align:center;}
.ive-rsvp-prev .rp-brand{font-size:12px;color:rgba(231,201,136,.72);letter-spacing:2px;}
.ive-rsvp-prev .rp-title{font-size:24px;font-weight:700;font-family:serif;letter-spacing:6px;text-indent:6px;color:#E7C988;}
.ive-rsvp-prev .rp-cta{font-size:12.5px;color:#241a10;background:linear-gradient(135deg,#E7C988,#C2A26A);padding:9px 24px;border-radius:12px;font-weight:700;letter-spacing:3px;box-shadow:0 10px 22px rgba(0,0,0,.40),inset 0 1px 0 rgba(255,255,255,.45);}

.ive-props{background:#fff;border-left:1px solid #e2e4e8;overflow:hidden;display:flex;flex-direction:column;}
.ive-prop-tabs{display:flex;border-bottom:1px solid #e2e4e8;flex:none;}
.ive-tab{flex:1;height:40px;background:#fff;border:none;border-bottom:2px solid transparent;color:#666;font-size:13px;cursor:pointer;}
.ive-tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600;}
.ive-prop-body{flex:1;overflow:auto;padding:12px 14px;}
.ive-tab-body{display:none;}
.ive-tab-body.active{display:block;}
.ive-prop-section-title{font-size:12.5px;font-weight:600;color:#333;margin:14px 0 10px;}
.ive-prop-section-title:first-child{margin-top:0;}
.ive-prop-line{display:flex;align-items:center;gap:8px;margin-bottom:10px;min-height:32px;}
.ive-prop-line .lbl{flex:0 0 78px;font-size:12px;color:#666;text-align:right;white-space:nowrap;}
.ive-prop-line input[type=text],.ive-prop-line input[type=number],.ive-prop-line input[type=color],.ive-prop-line textarea,.ive-prop-line select{flex:1;min-width:0;height:32px;border:1px solid #e2e4e8;border-radius:6px;padding:0 8px;font-size:12.5px;background:#fff;outline:none;}
.ive-prop-line input:focus,.ive-prop-line textarea:focus,.ive-prop-line select:focus{border-color:var(--brand);}
.ive-prop-line input[type=color]{padding:2px;width:48px;height:30px;}
.ive-prop-line textarea{height:auto;padding:6px 8px;resize:vertical;}
.ive-prop-line select.ive-select{appearance:auto;}
.ive-prop-row{display:flex;gap:10px;}
.ive-prop-row .ive-prop-line{flex:1;}
.ive-prop-row .ive-prop-line .lbl{flex:0 0 42px;}
.ive-chk{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#555;user-select:none;}
.ive-chk input{accent-color:var(--brand);width:14px;height:14px;}
.ive-upload-row{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:0;}
.ive-upload-row input[type=text]{flex:1 1 100%;min-width:0;}
.ive-upload-row input[type=file]{display:none;}
.ive-uplink{height:30px;padding:0 10px;border:1px solid #e2e4e8;border-radius:6px;background:#fff;color:#555;font-size:11.5px;cursor:pointer;white-space:nowrap;}
.ive-uplink:hover{border-color:#c8ccd5;}
.ive-uplink.primary{background:var(--brand);border-color:var(--brand);color:#fff;}
.ive-uplink.primary:hover{background:#d63d2e;}
.ive-layer-row{margin-top:14px;padding-top:10px;border-top:1px solid #f0f0f0;}
.ive-prop-empty{padding:40px 0;text-align:center;color:#aaa;font-size:13px;}

@media (max-width:1300px){
  .ive-main{grid-template-columns:180px minmax(0,1fr) 280px;}
  .ive-title{flex:0 0 180px;}
}
@media (max-width:1100px){
  .ive-main{grid-template-columns:160px minmax(0,1fr) 260px;}
  .ive-top-center{gap:4px;}
  .ive-tbtn{padding:0 8px;font-size:12px;}
  .ive-tbtn span:last-child{display:none;}
}
@media (max-width:1100px){
  .sms-top{grid-template-columns:1fr;}
}

/* ---------- 预订设置 · 邀请函设置(建设中占位) ---------- */
.inv-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 24px;text-align:center;}
.inv-icon{width:64px;height:64px;border-radius:18px;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;}
.inv-title{font-size:16.5px;font-weight:700;}
.inv-desc{max-width:520px;font-size:13.5px;line-height:1.8;color:var(--muted);}
.inv-link{margin-top:4px;text-decoration:none;}

/* ============================================================
   界面细节打磨(2026-09-12):按压反馈/焦点环/滚动条/描边/窄屏/动效降级
   ============================================================ */

/* ---- 按钮按压反馈 + 键盘焦点环 ---- */
.btn:active:not(:disabled){transform:translateY(1px);box-shadow:none;}
.btn:focus-visible,.nav-sec-toggle:focus-visible,.nav-item:focus-visible,
.rc-nav:focus-visible,.rc-today:focus-visible,.res-today-btn:focus-visible,
.modal-close:focus-visible,.drawer-close:focus-visible,.res-daynav-btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
.seg-btn:focus-visible,.sms-tab:focus-visible,.sms-tpl-chip:focus-visible,.sms-tpl-add:focus-visible,
.res-people-btn:focus-visible,.res-gender:focus-visible,.ive-add:focus-visible{outline:2px solid var(--brand);outline-offset:1px;border-radius:6px;}
.logout:focus-visible,.topbar-quick:focus-visible,.inv-pg:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px;}

/* ---- 滚动条:窗口与各滚动区统一细滚动条 ---- */
html{scrollbar-width:thin;scrollbar-color:rgba(154,160,166,.45) transparent;}
html::-webkit-scrollbar{width:9px;height:9px;}
html::-webkit-scrollbar-thumb{background:rgba(154,160,166,.38);border-radius:5px;}
html::-webkit-scrollbar-thumb:hover{background:rgba(154,160,166,.6);}
html::-webkit-scrollbar-track{background:transparent;}
.modal-body,.drawer-body,.res-list,.res-areas,.f-multi,.ive-canvas-area,.ive-palette,.ive-props,.sms-preview-box{scrollbar-width:thin;scrollbar-color:rgba(154,160,166,.4) transparent;}
.modal-body::-webkit-scrollbar,.drawer-body::-webkit-scrollbar,.res-list::-webkit-scrollbar,
.res-areas::-webkit-scrollbar,.f-multi::-webkit-scrollbar,.ive-canvas-area::-webkit-scrollbar,
.ive-palette::-webkit-scrollbar,.ive-props::-webkit-scrollbar,.sms-preview-box::-webkit-scrollbar{width:6px;height:6px;}
.modal-body::-webkit-scrollbar-thumb,.drawer-body::-webkit-scrollbar-thumb,.res-list::-webkit-scrollbar-thumb,
.res-areas::-webkit-scrollbar-thumb,.f-multi::-webkit-scrollbar-thumb,.ive-canvas-area::-webkit-scrollbar-thumb,
.ive-palette::-webkit-scrollbar-thumb,.ive-props::-webkit-scrollbar-thumb,.sms-preview-box::-webkit-scrollbar-thumb{background:rgba(154,160,166,.4);border-radius:3px;}
.modal-body::-webkit-scrollbar-thumb:hover,.drawer-body::-webkit-scrollbar-thumb:hover,
.res-list::-webkit-scrollbar-thumb:hover,.res-areas::-webkit-scrollbar-thumb:hover{background:rgba(154,160,166,.6);}

/* ---- 卡片极浅描边:与阴影配合,层次更利落 ---- */
.card,.kpi-card,.filter-bar{border:1px solid rgba(233,226,213,.8);}

/* ---- 空状态柔化 ---- */
.empty{font-size:13px;letter-spacing:.02em;}

/* ---- 窄屏:顶栏搜索收窄,内容留白收紧 ---- */
@media (max-width:960px){
  .search{width:190px;}
  .content{padding:18px 16px;}
  .topbar{padding:0 16px;}
}

/* ---- 动效偏好降级(系统开启"减少动态效果"时) ---- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;}
}

/* ---- 预订弹窗:桌型 → 对应桌台(右侧联动选择) ---- */
.res-type-split{display:flex;align-items:stretch;gap:12px;margin-bottom:14px;}
.res-type-left{flex:1 1 auto;min-width:0;}
.res-type-left .res-tag-row{margin-bottom:10px;}
.res-type-left .res-picked-hint{margin:0;}
.res-type-pick{flex:0 0 46%;max-width:46%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#FAF7EF;}
.res-type-pick-head{font-size:12px;color:var(--muted2);margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.res-type-pick-head b{color:var(--txt);font-weight:600;}
.res-type-pick-head em{font-style:normal;margin-left:auto;font-size:11px;color:var(--muted2);}
.res-type-pick-grid{display:flex;flex-wrap:wrap;gap:6px;max-height:132px;overflow:auto;}
.res-type-pick-empty{font-size:12px;color:var(--muted2);padding:4px 0;}
.res-type-chip{display:inline-flex;flex-direction:column;align-items:center;gap:1px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 9px;cursor:pointer;font-size:12px;line-height:1.35;user-select:none;transition:border-color .15s,background .15s;}
.res-type-chip b{font-size:12.5px;color:var(--txt);font-weight:600;white-space:nowrap;}
.res-type-chip span{color:var(--muted2);font-size:11px;white-space:nowrap;}
.res-type-chip:hover{border-color:var(--brand);}
.res-type-chip.picked{border-color:var(--brand);background:var(--brand);}
.res-type-chip.picked b,.res-type-chip.picked span{color:#fff;}
.res-type-chip.disabled{opacity:.45;cursor:not-allowed;}
.res-type-chip.disabled:hover{border-color:var(--line);}

/* ---------- PC 核餐弹窗 ---------- */
.vf-order-info {
  background: var(--bg); border-bottom: 1px solid var(--line);
  padding: 10px 16px; font-size: 13px;
}
.vf-oi-row { display: flex; align-items: baseline; padding: 3px 0; }
.vf-oi-row .vf-k { color: var(--muted); width: 72px; flex-shrink: 0; }
.vf-oi-row .vf-v { color: var(--txt); flex: 1; }
.vf-st { display: inline-block; padding: 1px 8px; border-radius: 3px; font-size: 12px; margin-left: 6px; color: #fff; }
.vf-radios { display: flex; gap: 0; margin-bottom: 12px; }
.vf-radio {
  flex: 1; text-align: center; padding: 8px 4px; cursor: pointer;
  position: relative; user-select: none;
  font-size: 14px; color: var(--muted); border: 1px solid var(--line);
  border-right: none; transition: all .15s;
}
.vf-radio:first-child { border-radius: 4px 0 0 4px; }
.vf-radio:last-child { border-radius: 0 4px 4px 0; border-right: 1px solid var(--line); }
.vf-radio input { position: absolute; opacity: 0; width: 0; height: 0; }
.vf-radio::before {
  content:''; display:inline-block; width:16px; height:16px;
  border:2px solid var(--border-strong); border-radius:50%;
  vertical-align:-4px; margin-right:4px; transition:all .15s; background:#fff;
}
.vf-radio:has(input:checked) { color: var(--brand); font-weight:600; }
.vf-radio:has(input:checked)::before { border-color:var(--brand); background:var(--brand); box-shadow:inset 0 0 0 2.5px #fff; }
.vf-count { text-align:right; font-size:12px; color:var(--muted); margin-top:3px; }

/* ===== PC 重设计 v2 落实增强(2026-09-20) ===== */
/* KPI:图标芯片 + 圆光晕,对齐 v2 预览(隐藏原顶部色条,改图标芯片) */
.kpi-card{display:flex;flex-direction:column;border-radius:16px;padding:18px 20px 16px;overflow:visible;}
.kpi-card::before{display:none;}
.kpi-card::after{content:"";position:absolute;right:-30px;top:-30px;width:104px;height:104px;border-radius:50%;background:rgba(233,75,60,.10);pointer-events:none;}
.kpi-ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;}
.kpi-ic.brand{background:rgba(233,75,60,.12);color:var(--brand);}
.kpi-ic.warn{background:rgba(224,138,30,.14);color:#C77A12;}
.kpi-ic.ok{background:var(--ok-bg);color:var(--ok);}
.kpi-ic.blue{background:var(--blue-soft);color:var(--blue);}
.kpi-val{font-size:32px;letter-spacing:-.5px;}

/* 会员等级分色芯片(对齐 v2) */
.member{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;}
.member.v{background:rgba(233,75,60,.12);color:var(--brand);}
.member.s{background:linear-gradient(140deg,#F2645A,var(--brand));color:#fff;}
.member.g{background:var(--ok-bg);color:var(--ok);}
.member.n{background:rgba(154,143,128,.16);color:var(--muted);}

/* 状态 pill 小圆点(对齐 v2) */
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block;margin-right:5px;vertical-align:1px;}

/* ===== PC 重设计 v2 全功能落地(2026-09-20 增量) =====
   顶栏 v2 化(面包屑 + 通知图标)+ 内容页副标题 .sub。
   菜单功能全部保留(menu_groups 驱动,未改 nav/路由)。*/

/* 顶栏左侧布局 + 面包屑(对齐 v2 crumb) */
.topbar-left{display:flex;align-items:center;gap:14px;min-width:0;}
.crumb{font-size:12px;color:var(--muted2);letter-spacing:.02em;}
.crumb b{color:var(--txt);font-weight:600;}

/* 顶栏通知图标按钮(对齐 v2 icon-btn) */
.icon-btn{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--muted);position:relative;transition:.15s;border:none;background:transparent;cursor:pointer;}
.icon-btn:hover{background:var(--bg);color:var(--brand);}
.icon-btn .dot{position:absolute;top:8px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--brand);border:2px solid #fff;}
.icon-btn svg{width:18px;height:18px;}

/* 内容页副标题(对齐 v2 .sub) */
.sub{font-size:13px;color:var(--muted);margin:-2px 0 18px;}
.dash-sub{font-size:13px;color:var(--muted);margin:-2px 0 18px;} /* 兼容旧名 */

/* ===== PC 预订管理 res-* / rc-* v2 视觉覆盖(2026-09-21) =====
   目标:把 reservation.html 用的 res-/rc- 前缀类外观对齐 v2 预览。
   手法:CSS 末尾追加, 同名规则覆盖早期; 不改 HTML/JS, 全部功能保留。*/

:root{
  --brand-2:#D23B2C; --brand-soft:#FDECEA;
  --card:#FFFFFF; --line-2:#F1EADC;
  --muted2:#B3A99B;
  --ok:#2E9E5B; --ok-soft:#E8F4EC;
  --warn:#E08A1E; --warn-soft:#FBF0DD;
  --danger:#C5221F; --danger-soft:#FBEAE9;
  --sh:0 1px 2px rgba(42,36,32,.04),0 8px 24px rgba(42,36,32,.06);
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* --- 页面骨架:沿用全高 flex 外壳(.res-page > .res-daybar + .res-body > side|main) --- */
.res-page{display:flex;flex-direction:column;}

/* --- 顶部日期餐段条(res-daybar)对齐 v2 --- */
.res-daybar{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--card);border-radius:14px;box-shadow:var(--sh);margin-bottom:16px;border:1px solid var(--line);}
.res-today-btn{background:var(--brand-soft);color:var(--brand);font-weight:700;border:none;padding:8px 16px;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;transition:.15s;}
.res-today-btn:hover{background:var(--brand);color:#fff;}
.res-daybar-scroll{display:flex;gap:6px;flex:1;overflow-x:auto;scrollbar-width:none;}
.res-daybar-scroll::-webkit-scrollbar{display:none;}
.res-daycard{position:relative;flex-shrink:0;padding:8px 8px 6px;border-radius:10px;background:var(--bg);min-width:60px;text-align:center;cursor:pointer;border:1px solid transparent;transition:.15s;display:flex;flex-direction:column;align-items:center;gap:1px;}
.res-daycard:hover{background:#fff;border-color:var(--line);}
.res-daycard.today{background:var(--brand);color:#fff;}
.res-daycard.today .res-daycard-head,.res-daycard.today .res-daycard-week,.res-daycard.today .res-daycard-lunar{color:#fff;}
.res-daycard.sel{background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.res-daycard-date{font-size:14px;font-weight:700;color:var(--txt);line-height:1.1;}
.res-daycard-week{font-size:11px;color:var(--muted);}
.res-daycard-lunar{font-size:10px;color:var(--muted2);height:12px;line-height:1.2;}
.res-daycard-periods{display:flex;gap:2px;justify-content:center;flex-wrap:wrap;margin-top:2px;}
.res-daycard-head{color:var(--txt);}
.res-period-chip{font-size:10px;padding:1px 5px;border-radius:4px;background:#fff;border:1px solid var(--line);color:var(--muted);text-decoration:none;line-height:1.5;}
.res-period-chip:hover{color:var(--brand);border-color:var(--brand);}
.res-period-chip.active{background:var(--brand);color:#fff;border-color:var(--brand);}
.res-daycard-badge{position:absolute;top:-4px;right:-4px;background:var(--brand);color:#fff;font-size:10px;padding:1px 5px;border-radius:8px;font-weight:700;line-height:1.2;}
.res-today-tag{position:absolute;top:-4px;left:-4px;background:#fff;color:var(--brand);font-size:9px;padding:0 4px;border-radius:6px;font-weight:700;border:1px solid var(--brand);}

/* 日期滑动块 + 日期选择器 */
.res-daynav{display:flex;flex-direction:column;align-items:center;gap:2px;}
.res-daynav-btn{width:24px;height:24px;border-radius:6px;background:transparent;border:none;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;}
.res-daynav-btn:hover{background:var(--bg);color:var(--brand);}
.res-daynav-btn svg{width:14px;height:14px;}
.res-dayrange{appearance:none;writing-mode:vertical-lr;direction:rtl;width:18px;height:60px;background:transparent;}
.res-dayrange::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--brand);cursor:pointer;}
.res-dayrange::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--brand);border:none;cursor:pointer;}

.res-datepicker{position:relative;flex-shrink:0;}
.res-datepicker-btn{display:flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px;color:var(--txt);cursor:pointer;font-family:inherit;}
.res-datepicker-btn:hover{border-color:var(--brand);}
.res-dp-caret{width:12px;height:12px;color:var(--muted);}

/* 日历弹层(rc-*)对齐 v2 cal-pop */
.res-calendar{position:absolute;right:0;top:calc(100% + 6px);z-index:50;width:280px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);padding:14px;}
.rc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.rc-title{font-weight:700;font-size:14px;color:var(--txt);}
.rc-nav{width:28px;height:28px;border-radius:8px;background:transparent;border:none;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;}
.rc-nav:hover{background:var(--bg);color:var(--brand);}
.rc-nav svg{width:14px;height:14px;}
.rc-today{font-size:12px;color:var(--brand);background:var(--brand-soft);border:none;padding:4px 10px;border-radius:6px;cursor:pointer;margin-top:8px;width:100%;font-family:inherit;}
.rc-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;font-size:11px;color:var(--muted2);text-align:center;margin-bottom:4px;}
.rc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.rc-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;font-size:12px;color:var(--txt);line-height:1.2;}
.rc-cell:hover{background:var(--bg);}
.rc-cell.empty{cursor:default;pointer-events:none;}
.rc-cell.sel{background:var(--brand);color:#fff;}
.rc-cell b{font-weight:600;line-height:1.1;}
.rc-cell i{font-size:9px;font-style:normal;color:var(--muted2);margin-top:1px;}
.rc-cell.sel i{color:rgba(255,255,255,.85);}
.rc-foot,.rc-loading{font-size:12px;color:var(--muted);text-align:center;padding:6px 0;}

/* --- 左栏:门店 + 只看空桌 + 四色占用 + 区域桌态(头部/统计沿用系统 A 暖色分区) --- */
.res-store-select{padding:7px 28px 7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px;color:var(--txt);appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238A8076' stroke-width='2.4'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer;font-family:inherit;}
.res-only-empty{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);cursor:pointer;margin-left:auto;user-select:none;}
.res-only-empty input{accent-color:var(--brand);width:14px;height:14px;}

/* 四色占用统计:沿用系统 A 的 4 列网格(数字在上 / 标签在下 + 分隔线),信息层次更清晰 */

/* 区域标题 */
.res-areas{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:18px;}
.res-area-title{font-size:13px;font-weight:700;color:var(--txt);margin-bottom:8px;display:flex;align-items:center;gap:6px;padding-left:6px;}
.res-area-title::before{content:"";width:3px;height:12px;background:var(--brand);border-radius:2px;flex-shrink:0;}

/* 桌台网格 */
.res-table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;}
.res-table-card{position:relative;padding:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:.15s;}
.res-table-card:hover{border-color:var(--brand);transform:translateY(-1px);box-shadow:0 2px 8px rgba(42,36,32,.06);}
.res-table-card.picked{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}

/* 桌态(reservation.html 实际只有 booked/free 二态; booked 用暖色, free 用虚线白) */
.res-table-card.free{background:var(--card);border-style:dashed;color:var(--muted2);}
.res-table-card.free .res-table-status{background:transparent;color:var(--muted2);border:1px solid var(--line);}
.res-table-card.booked{background:var(--warn-soft);border-color:#F0D9A8;}
.res-table-card.booked .res-table-status{background:var(--warn);color:#fff;}
.res-table-card.booked:hover{border-color:var(--brand);}

.res-table-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;}
.res-table-code{font-weight:700;font-size:14px;color:var(--txt);font-family:var(--mono);}
.res-table-cap{font-size:11px;color:var(--muted2);}
.res-table-guest{font-size:12px;color:var(--muted);margin:2px 0;min-height:16px;line-height:1.3;}
.res-table-status{font-size:11px;padding:2px 7px;border-radius:5px;display:inline-block;margin-top:3px;line-height:1.4;}

/* 已选桌台栏 */
.res-pick-bar{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 12px;background:var(--bg);border-radius:10px;border:1px dashed var(--brand);}
.res-pick-ic{width:24px;height:24px;border-radius:6px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;}
.res-pick-label{font-size:12px;color:var(--muted);font-weight:600;flex-shrink:0;}
.res-pick-codes{font-size:13px;color:var(--txt);font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.res-pick-clear{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px;font-family:inherit;}
.res-pick-clear:hover{color:var(--brand);background:var(--brand-soft);}

/* --- 右栏:标题 + 筛选 + 列表 + 创建 --- */
/* .res-main-head 沿用系统 A 卡片内分区(白底 + 细分隔线) */
.res-main-title{font-size:15px;font-weight:700;color:var(--txt);}
.res-main-date{font-size:12px;color:var(--muted);}
/* .res-filterbar 沿用系统 A 卡片内分区(白底 + 细分隔线) */
.res-search{position:relative;flex:1;min-width:140px;}
.res-search-ic{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted2);width:14px;height:14px;pointer-events:none;}
.res-search input{width:100%;padding:7px 28px 7px 30px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#fff;color:var(--txt);font-family:inherit;}
.res-search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.res-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:14px;display:none;}
.res-search-btn{display:none;} /* 表单提交按钮隐藏,用回车触发 */
.res-status-filter{display:flex;gap:4px;flex-wrap:wrap;}
.res-pill{padding:5px 12px;border-radius:999px;background:transparent;border:1px solid var(--line);color:var(--muted);font-size:12px;cursor:pointer;transition:.15s;font-family:inherit;}
.res-pill:hover{border-color:var(--brand);color:var(--brand);}
.res-pill.active{background:var(--brand);color:#fff;border-color:var(--brand);}

/* 预订卡片列表 */
.res-list{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:16px 24px 92px;}
.res-list::-webkit-scrollbar{width:6px;}
.res-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
.res-list-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:.15s;}
.res-list-item:hover{border-color:var(--brand);box-shadow:0 2px 8px rgba(233,75,60,.10);}
.res-item-time{display:flex;flex-direction:column;align-items:center;min-width:46px;padding:4px 0;background:var(--bg);border-radius:6px;flex-shrink:0;}
.res-item-time b{font-size:13px;font-weight:700;color:var(--brand);font-family:var(--mono);line-height:1.1;}
.res-item-time span{font-size:9px;color:var(--muted2);margin-top:1px;}
.res-item-avatar{width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;}
.res-item-avatar.f{background:rgba(233,75,60,.20);}
.res-item-info{flex:1;min-width:0;}
.res-item-top{font-size:11px;color:var(--muted);font-family:var(--mono);}
.res-item-customer{font-size:13px;font-weight:600;color:var(--txt);margin-top:1px;}
.res-item-table,.res-item-people{font-size:11px;color:var(--muted2);margin-top:1px;}
.res-item-tag{font-size:10px;padding:1px 5px;border-radius:4px;background:var(--bg);color:var(--muted);margin-left:4px;display:inline-block;}
.res-item-action{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.res-item-arrow{color:var(--muted2);width:14px;height:14px;}
.res-tag{font-size:10px;padding:1px 5px;border-radius:4px;background:var(--bg);color:var(--muted);margin-left:2px;display:inline-block;}

/* 创建订单按钮 */
.res-create-btn{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);height:48px;width:calc(100% - 48px);max-width:520px;border-radius:24px;background:linear-gradient(90deg,#F26A57 0%,#E03A28 100%);color:#fff;border:none;font-size:15px;font-weight:600;letter-spacing:.4px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;box-shadow:0 8px 22px rgba(224,58,40,.34);z-index:30;transition:.18s;font-family:inherit;}
.res-create-btn:hover{box-shadow:0 12px 28px rgba(224,58,40,.44);transform:translateX(-50%) translateY(-2px);}
.res-create-ic{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;}

/* 章节标题 + 分隔 */
.res-section-title{font-size:13px;font-weight:700;color:var(--txt);margin:14px 0 8px;}
.res-divider{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--muted2);font-size:12px;}
.res-divider::before,.res-divider::after{content:"";flex:1;height:1px;background:var(--line);}
.res-divider span{flex-shrink:0;padding:0 4px;}
.res-empty-state{padding:24px;text-align:center;color:var(--muted);font-size:13px;}

/* 弹窗通用(modal-*)对齐 v2 */
.modal-mask{position:fixed;inset:0;background:rgba(42,36,32,.45);z-index:100;display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px);}
.modal-mask.show{display:flex;}
.modal{background:var(--card);border-radius:16px;box-shadow:0 24px 48px rgba(42,36,32,.18);overflow:hidden;max-height:90vh;display:flex;flex-direction:column;width:520px;max-width:100%;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);}
.modal-title{font-size:15px;font-weight:700;color:var(--txt);}
.modal-close{width:28px;height:28px;border-radius:8px;background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;font-family:inherit;}
.modal-close:hover{background:var(--bg);color:var(--brand);}
.modal-body{padding:18px;overflow-y:auto;flex:1;}
.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg);}

/* 表单字段 */
.field{margin-bottom:12px;}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;font-weight:600;}
.f-input{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px;color:var(--txt);font-family:inherit;}
.f-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.f-hint{font-size:11px;color:var(--muted);margin-top:4px;}

/* 核餐单选(对齐 v2 vf-radios) */
.vf-radios{display:flex;gap:0;margin-bottom:12px;}
.vf-radio{flex:1;text-align:center;padding:9px 4px;cursor:pointer;position:relative;user-select:none;font-size:13px;color:var(--muted);border:1px solid var(--line);border-right:none;transition:.15s;background:#fff;}
.vf-radio:first-child{border-radius:8px 0 0 8px;}
.vf-radio:last-child{border-radius:0 8px 8px 0;border-right:1px solid var(--line);}
.vf-radio input{position:absolute;opacity:0;width:0;height:0;}
.vf-radio.is-checked{color:var(--brand);font-weight:700;background:var(--brand-soft);}
.vf-order-info{background:var(--bg);border-bottom:1px solid var(--line);padding:10px 18px;font-size:13px;}
.vf-oi-row{display:flex;align-items:baseline;padding:3px 0;}
.vf-oi-row .vf-k{color:var(--muted);width:72px;flex-shrink:0;}
.vf-oi-row .vf-v{color:var(--txt);flex:1;}
.vf-st{display:inline-block;padding:1px 8px;border-radius:4px;font-size:11px;margin-left:6px;color:#fff;}

/* 人数九宫格(对齐 v2 res-people-grid) */
.res-people-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.res-people-btn{padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--txt);font-size:13px;font-weight:600;cursor:pointer;transition:.15s;font-family:inherit;}
.res-people-btn:hover{border-color:var(--brand);color:var(--brand);}
.res-people-btn.active{background:var(--brand);color:#fff;border-color:var(--brand);}

/* 输入行(res-input-row)对齐 v2 */
.res-input-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:8px;transition:.15s;}
.res-input-row:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.res-ic{width:16px;height:16px;color:var(--muted);flex-shrink:0;}
.res-input-row input,.res-input-row select{flex:1;border:none;outline:none;background:transparent;font-size:13px;color:var(--txt);min-width:0;}
.res-gender-toggle{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex-shrink:0;}
.res-gender{padding:4px 10px;background:#fff;border:none;font-size:12px;color:var(--muted);cursor:pointer;font-family:inherit;}
.res-gender.active{background:var(--brand);color:#fff;}
.res-stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex-shrink:0;}
.res-stepper button{width:28px;height:28px;background:#fff;border:none;color:var(--muted);cursor:pointer;font-size:14px;font-family:inherit;}
.res-stepper button:hover{background:var(--bg);color:var(--brand);}
.res-stepper input{width:40px;height:28px;text-align:center;border:none;border-left:1px solid var(--line);border-right:1px solid var(--line);font-size:13px;font-weight:600;background:transparent;}
.res-receptionist{max-width:140px;}

/* 桌型 chip(res-type-*)对齐 v2 */
.res-type-split{display:flex;gap:12px;margin:8px 0;}
.res-type-left{flex:1;}
.res-tag-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.res-tag-select{flex:1;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px;min-width:0;}
.res-picked{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--brand-soft);color:var(--brand);border-radius:999px;font-size:12px;font-weight:600;}
.res-picked-label{color:var(--muted);}
.res-picked-tags{display:flex;gap:4px;flex-wrap:wrap;}
.res-picked-tag{display:inline-flex;align-items:center;gap:2px;padding:1px 6px;background:#fff;border:1px solid var(--brand-soft);border-radius:4px;color:var(--brand);font-size:11px;}
.res-picked-tag button{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:12px;padding:0 2px;}
.res-picked-hint{font-size:11px;color:var(--muted2);margin:4px 0;}
.res-type-pick{flex:0 0 46%;max-width:46%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--bg);}
.res-type-pick-head{font-size:11px;color:var(--muted);margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.res-type-pick-head b{color:var(--txt);font-weight:600;}
.res-type-pick-head em{font-style:normal;margin-left:auto;font-size:10px;color:var(--muted2);}
.res-type-pick-grid{display:flex;flex-wrap:wrap;gap:6px;max-height:132px;overflow:auto;}
.res-type-pick-empty{font-size:11px;color:var(--muted2);padding:4px 0;}
.res-type-chip{display:inline-flex;flex-direction:column;align-items:center;gap:1px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 9px;cursor:pointer;font-size:12px;line-height:1.3;user-select:none;transition:.15s;font-family:inherit;}
.res-type-chip b{font-size:12px;color:var(--txt);font-weight:600;}
.res-type-chip span{color:var(--muted2);font-size:10px;}
.res-type-chip:hover{border-color:var(--brand);}
.res-type-chip.picked{border-color:var(--brand);background:var(--brand);}
.res-type-chip.picked b,.res-type-chip.picked span{color:#fff;}
.res-type-chip.disabled{opacity:.45;cursor:not-allowed;}

/* res-card(reservation.html 的卡片容器) */
.res-card{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;}
.res-card.required{padding:4px;}
.res-field{display:flex;align-items:center;gap:6px;flex:1;}
.res-field.half{flex:0 0 calc(50% - 4px);max-width:calc(50% - 4px);}
.res-label{font-size:12px;color:var(--muted);font-weight:600;min-width:60px;}
.res-to{color:var(--muted);font-size:12px;}

/* 核餐徽(顶栏日历里也有的小图标) */
.res-verify-ic{display:inline-block;margin-left:4px;width:6px;height:6px;border-radius:50%;vertical-align:middle;}
.res-verify-ic.v-CONFIRMED{background:var(--ok);}
.res-verify-ic.v-UNREACHABLE{background:var(--danger);}
.res-verify-ic.v-PENDING{background:var(--warn);}

/* 按钮组(res-body 内可能用到) */
.res-body{padding:0;}
.btn{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:.15s;}
.btn-primary{background:var(--brand);color:#fff;}
.btn-primary:hover{background:var(--brand-2);}
.btn-ghost{background:#fff;color:var(--txt);border:1px solid var(--line);}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);}
.btn-danger{background:var(--danger);color:#fff;}

/* 详情面板/抽屉若 reservation.html 自带, 对齐 v2 .drawer */
.res-drawer,.drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:90vw;background:var(--card);box-shadow:-16px 0 40px rgba(42,36,32,.10);z-index:90;transform:translateX(100%);transition:transform .25s;display:flex;flex-direction:column;}
.res-drawer.show,.drawer.show{transform:translateX(0);}
.drawer-mask{position:fixed;inset:0;background:rgba(42,36,32,.40);z-index:89;opacity:0;pointer-events:none;transition:opacity .2s;}
.drawer-mask.show{opacity:1;pointer-events:auto;}

/* responsive:窄屏左右堆叠 */
@media (max-width:1180px){
  .res-page{grid-template-columns:1fr;}
  .res-list{max-height:none;}
}

/* 预订列表项状态色(reservation.html 用 st-{status}: PENDING/CONFIRMED/SEATED/CANCELLED/NOSHOW) */
.res-list-item.st-PENDING{border-left:3px solid var(--warn);}
.res-list-item.st-CONFIRMED{border-left:3px solid var(--brand);}
.res-list-item.st-SEATED{border-left:3px solid var(--blue);}
.res-list-item.st-CANCELLED,.res-list-item.st-NOSHOW{opacity:.55;}

/* 桌态统计点(reservation.html 用 reserved/walkin/seated/vacant; 对齐 v2 四色语义) */
.res-stat-dot.reserved{background:var(--warn);}    /* 预留 = PENDING 琥珀 */
.res-stat-dot.walkin{background:var(--brand);}     /* 散客 = CONFIRMED 客到红 */
.res-stat-dot.seated{background:var(--blue);}      /* 用餐 = SEATED 蓝 */
.res-stat-dot.vacant{background:var(--muted2);}    /* 空白 = IDLE 灰 */

/* ==========================================================================
   PC 预订管理 v3 —— 完全对齐《yuding_pc_redesign_v2》参考稿(2026-09-21)
   参考稿路径:E:\WorkBuddy\2026-09-20-20-29-05\yuding_pc_redesign_v2.html
   手法:仍为末尾追加覆盖(不删前文,弹窗 res-* 表单样式与其它页共用,整块替换会砸掉它们)。
   只覆盖「预订管理主页面」会与参考稿冲突的属性;modal/drawer 内部结构不动。
   骨架契约:.res-page(全高 flex 列) > .sub + .res-daybar + .res-body(> .res-side | .res-main)
   ========================================================================== */

/* --- 变量补齐(参考稿用到但旧块未定义的) --- */
:root{
  --brand-2:#D23B2C; --brand-soft:#FDECEA; --brand-line:#F0BDB4;
  --card:#FFFFFF; --line-2:#F1EADC; --muted2:#B3A99B;
  --ok:#2E9E5B; --ok-soft:#E8F4EC;
  --warn:#E08A1E; --warn-soft:#FBF0DD;
  --blue:#2F6FED; --blue-soft:#EAF1FE;
  --danger:#C5221F; --danger-soft:#FBEAE9;
  --gray:#B3A99B; --gray-soft:#F2EDE4;
  --sh:0 1px 2px rgba(42,36,32,.04),0 8px 24px rgba(42,36,32,.06);
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* --- 页面骨架 --- */
.res-page{background:#F6F2EA;}
.res-page > .sub{flex:none;padding:16px 24px 12px;margin:0;font-size:13px;color:var(--muted);}

/* ============================ 顶部日期条 ============================ */
.res-daybar{flex:none;align-items:center;gap:12px;margin:0 24px 16px;padding:12px 14px;
  background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh);}
.res-today-btn{flex:none;align-self:center;padding:8px 16px;border-radius:10px;
  background:var(--brand);color:#fff;border:none;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:.15s;}
.res-today-btn:hover{background:var(--brand-2);color:#fff;box-shadow:none;}

.res-daybar-scroll{display:flex;gap:8px;flex:1;min-width:0;overflow-x:auto;padding-bottom:2px;}
.res-daybar-scroll::-webkit-scrollbar{height:5px;}
.res-daybar-scroll::-webkit-scrollbar-thumb{background:var(--muted2);border-radius:3px;}

.res-daycard{position:relative;flex:none;width:62px;padding:8px 6px;border-radius:12px;
  border:1px solid var(--line);background:#F6F2EA;text-align:center;cursor:pointer;transition:.15s;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  text-decoration:none;}
.res-daycard:hover{border-color:var(--brand);background:#fff;box-shadow:none;transform:none;}
.res-daycard-date{font-size:15px;font-weight:800;color:var(--txt);line-height:1.1;letter-spacing:0;}
.res-daycard-week{font-size:11px;color:var(--muted);line-height:1.2;}
/* 定高占位:flex 0 0 才不会被压扁,保证跨卡三行基线对齐 */
.res-daycard-lunar{flex:0 0 12px;font-size:10px;color:var(--muted2);line-height:12px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.res-daycard-lunar.hl{color:var(--brand);font-weight:600;}
/* 选中 = 整卡品牌红实心(参考稿 day-card.sel) */
.res-daycard.sel{background:var(--brand);border-color:var(--brand);box-shadow:none;transform:none;}
.res-daycard.sel .res-daycard-date,
.res-daycard.sel .res-daycard-week{color:#fff;}
.res-daycard.sel .res-daycard-lunar{color:rgba(255,255,255,.85);}
.res-daycard.sel .res-daycard-lunar.hl{color:#fff;}
.res-today-tag{position:absolute;top:-7px;left:6px;background:#fff;color:var(--brand);
  font-size:9px;font-weight:800;border-radius:6px;padding:1px 4px;border:none;z-index:2;}
.res-daycard-badge{position:absolute;top:-6px;right:-6px;background:var(--warn);color:#fff;
  font-size:10px;font-weight:700;border-radius:999px;min-width:18px;height:18px;
  display:flex;align-items:center;justify-content:center;padding:0 4px;z-index:2;box-shadow:none;}

/* 全局餐段胶囊(日期条右侧一组) */
.res-periods{flex:none;display:flex;gap:6px;align-items:center;}
.res-pchip{display:inline-flex;align-items:center;justify-content:center;min-width:38px;
  padding:7px 12px;border-radius:9px;background:#F6F2EA;border:1px solid var(--line);
  font-size:12.5px;color:var(--muted);font-weight:600;text-decoration:none;transition:.15s;white-space:nowrap;}
.res-pchip:hover{border-color:var(--brand);color:var(--brand);}
.res-pchip.active{background:var(--brand-soft);color:var(--brand-2);border-color:var(--brand-line);}

/* 日期选择器 + 阴阳历弹层 */
.res-datepicker{flex:none;position:relative;}
.res-datepicker-btn{display:flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;
  border:1px solid var(--line);background:#fff;font-size:13px;font-weight:600;color:var(--txt);
  cursor:pointer;font-family:inherit;white-space:nowrap;transition:.15s;}
.res-datepicker-btn:hover{border-color:var(--brand);color:var(--brand);background:#fff;box-shadow:none;}
.res-datepicker-btn svg{color:var(--brand);}
.res-dp-caret{width:12px;height:12px;color:var(--muted);opacity:.8;}

.res-calendar{position:absolute;top:calc(100% + 8px);right:0;width:300px;background:#fff;
  border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(42,36,32,.16);
  padding:14px;z-index:60;}
.rc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.rc-title{font-size:14px;font-weight:700;color:var(--txt);}
.rc-nav{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  color:var(--muted);background:transparent;border:none;cursor:pointer;}
.rc-nav:hover{background:#F6F2EA;color:var(--brand);}
.rc-nav svg{width:14px;height:14px;}
.rc-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;}
.rc-week span{text-align:center;font-size:11px;color:var(--muted2);}
.rc-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;}
/* 勿给 .rc-cell 加非 auto 的 aspect-ratio(v2 块 1110 行的 aspect-ratio:1 必须在 v3 用 auto 压掉,
   注意 none 是非法值会被解析器丢弃):与 height:40px 叠加会把定高转移成最小宽 40px,
   超过列宽 36.9px → 单元格出血、网格溢出弹层右缘(2026-09-21 修复) */
.rc-cell{height:40px;aspect-ratio:auto;border-radius:8px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;font-size:12px;color:var(--txt);cursor:pointer;transition:.12s;line-height:1.2;}
.rc-cell.empty{cursor:default;pointer-events:none;}
.rc-cell:not(.empty):hover{background:var(--brand-soft);}
.rc-cell b{font-weight:700;line-height:1.1;}
.rc-cell i{font-size:9px;color:var(--muted2);font-style:normal;margin-top:1px;}
.rc-cell.today{outline:1px dashed var(--brand);}
.rc-cell.sel{background:var(--brand);color:#fff;}
.rc-cell.sel i{color:rgba(255,255,255,.85);}
.rc-cell.fest i{color:var(--brand);}
.rc-foot{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;}
.rc-lunar{font-size:11.5px;color:var(--muted);text-align:left;}
.rc-today{font-size:12px;font-weight:600;color:var(--brand);padding:5px 10px;border-radius:8px;
  background:transparent;border:none;cursor:pointer;font-family:inherit;width:auto;margin-top:0;}
.rc-today:hover{background:var(--brand-soft);}
.rc-loading{grid-column:1/-1;font-size:12px;color:var(--muted2);padding:20px 0;text-align:center;}

/* ============================ 主体两栏 ============================ */
.res-body{flex:1;min-height:0;display:grid;grid-template-columns:1.02fr 1fr;gap:16px;
  align-items:stretch;margin:0 24px 24px;padding:0;overflow:hidden;}
.res-side{width:auto;flex:none;min-width:0;display:flex;flex-direction:column;
  background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh);
  border-right:1px solid var(--line);overflow:hidden;}
.res-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:16px;position:relative;
  background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh);overflow:hidden;}

/* --- 左栏:门店 / 只看空桌 / 四色统计 --- */
.res-side-head{flex:none;padding:16px 16px 0;display:flex;align-items:center;gap:10px;
  background:transparent;border-bottom:none;}
.res-store-select{flex:0 0 auto;min-width:132px;height:auto;padding:8px 30px 8px 10px;
  border:1px solid var(--line);border-radius:9px;background:#F6F2EA;font-size:13px;color:var(--txt);
  appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238A8076' stroke-width='2.4'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;cursor:pointer;font-family:inherit;}
.res-store-select:focus{outline:none;border-color:var(--brand);}
.res-store-select:hover{border-color:var(--brand-line);}
.res-only-empty{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:12.5px;
  color:var(--muted);cursor:pointer;user-select:none;white-space:nowrap;}
.res-only-empty input{width:15px;height:15px;accent-color:var(--brand);}

.res-stats{flex:none;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;
  padding:14px 16px 0;background:transparent;border-bottom:none;}
.res-stat{position:static;background:#F6F2EA;border-radius:10px;padding:9px 6px;text-align:center;}
.res-stat:not(:last-child)::after{display:none;}
.res-stats .res-stat .res-stat-num{display:block;font-size:18px;font-weight:800;letter-spacing:0;
  color:var(--txt);font-family:var(--mono);font-variant-numeric:tabular-nums;}
.res-stat-label{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11px;
  color:var(--muted);margin-top:2px;}
.res-stat-dot{width:7px;height:7px;border-radius:50%;display:inline-block;box-shadow:none;}
.res-stats .res-stat .res-stat-dot.reserved{background:var(--warn);}
.res-stats .res-stat .res-stat-dot.walkin{background:var(--blue);}
.res-stats .res-stat .res-stat-dot.seated{background:var(--brand);}
.res-stats .res-stat .res-stat-dot.vacant{background:var(--gray);}

/* --- 左栏:区域 + 桌卡(4 列) --- */
.res-areas{flex:1;min-height:0;overflow-y:auto;padding:0 16px 16px;display:block;gap:0;}
.res-areas::-webkit-scrollbar{width:5px;}
.res-areas::-webkit-scrollbar-thumb{background:var(--muted2);border-radius:3px;}
.res-area{margin-top:14px;}
.res-area-title{display:block;margin:0 0 8px;padding-left:0;font-size:13px;font-weight:700;color:var(--muted);}
.res-area-title::before{display:none;}
.res-table-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;}

.res-table-card{position:relative;padding:10px;min-height:84px;border-radius:12px;
  border:1px solid transparent;background:#fff;cursor:pointer;transition:.15s;
  display:block;overflow:visible;color:var(--muted);}
.res-table-card::before{display:none;}
.res-table-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(42,36,32,.10);border-color:inherit;}
.res-table-card.picked{outline:2px solid var(--brand);outline-offset:1px;box-shadow:none;}
/* 四态配色(参考稿 t-idle / t-pending / t-confirmed / t-seated) */
.res-table-card.t-idle{background:#fff;border:1.5px dashed var(--line);color:var(--muted);}
.res-table-card.t-idle:hover{border-color:var(--brand);}
.res-table-card.t-pending{background:var(--warn-soft);border-color:#F1DDB4;color:var(--warn);}
.res-table-card.t-confirmed{background:var(--brand-soft);border-color:var(--brand-line);
  color:var(--brand-2);box-shadow:0 0 0 3px rgba(233,75,60,.07);}
.res-table-card.t-seated{background:var(--blue-soft);border-color:#CFDFF9;color:var(--blue);}

.res-table-code{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:800;
  font-family:var(--mono);color:inherit;}
.t-vf{width:15px;height:15px;border-radius:50%;font-size:9px;font-weight:800;flex:none;
  display:inline-flex;align-items:center;justify-content:center;color:#fff;}
.t-vf.ok{background:var(--ok);}
.t-vf.un{background:var(--warn);}
.t-vf.pd{background:var(--muted2);}
.res-table-cap{display:block;font-size:10.5px;opacity:.8;margin-top:2px;color:inherit;
  background:none;border-radius:0;padding:0;}
.res-table-guest{font-size:11.5px;font-weight:600;margin-top:5px;color:inherit;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.res-table-meta{font-size:10px;opacity:.78;margin-top:2px;color:inherit;}
.res-table-store,.res-table-status{display:none;}

/* 桌卡「带位」(参考稿 seat-btn) */
.res-seat-btn{position:absolute;right:7px;bottom:7px;padding:3px 9px;border-radius:7px;
  background:var(--brand);color:#fff;border:none;font-size:10.5px;font-weight:700;
  font-family:inherit;cursor:pointer;animation:resSeatPulse 1.6s infinite;}
.res-seat-btn:hover{background:var(--brand-2);}
@keyframes resSeatPulse{0%,100%{box-shadow:0 0 0 0 rgba(233,75,60,.35);}50%{box-shadow:0 0 0 6px rgba(233,75,60,0);}}
/* 有带位按钮的卡片:meta 让出右下角,避免与按钮重叠 */
.res-table-card:has(.res-seat-btn) .res-table-meta{padding-right:46px;}

/* 已选桌台栏 */
.res-pick-bar{flex:none;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:14px 16px 16px;padding:11px 13px;border-radius:12px;
  background:var(--brand-soft);border:1px solid var(--brand-line);}
.res-pick-ic{display:none;}
.res-pick-label{flex:none;font-size:12.5px;font-weight:700;color:var(--brand-2);}
.res-pick-label b{font-family:var(--mono);}
.res-pick-codes{flex:1;min-width:60px;font-size:12.5px;font-family:var(--mono);color:var(--brand-2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.res-pick-clear{font-size:12px;font-weight:600;color:var(--muted);padding:4px 10px;border-radius:8px;
  background:transparent;border:none;cursor:pointer;font-family:inherit;}
.res-pick-clear:hover{background:#fff;color:var(--brand);}

/* --- 右栏:标题 + 搜索 + 筛选 + 列表 + 创建 --- */
.res-main-head{flex:none;display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;padding:0 0 12px;background:transparent;border-bottom:none;}
.res-main-title{display:flex;align-items:center;gap:8px;}
.res-main-date{font-size:14px;font-weight:700;letter-spacing:0;color:var(--txt);}
.res-main-title small{font-size:12px;font-weight:500;color:var(--muted);}

.res-search{position:relative;flex:0 0 auto;width:200px;min-width:0;display:flex;align-items:center;
  gap:6px;background:#F6F2EA;border:1px solid var(--line);border-radius:9px;padding:6px 10px;}
.res-search-ic{position:static;left:auto;top:auto;transform:none;width:14px;height:14px;
  color:var(--muted2);flex:none;pointer-events:none;}
.res-search input,.res-search input:focus{width:100%;height:auto;padding:0;border:none;
  background:transparent;box-shadow:none;outline:none;font-size:12.5px;color:var(--txt);font-family:inherit;}
.res-search input::placeholder{color:var(--muted2);}
.res-search-btn{display:none;}
.res-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);
  background:transparent;border:none;color:var(--brand);cursor:pointer;font-size:11.5px;
  text-decoration:none;padding:0;}

.res-filterbar{flex:none;display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  margin:0 0 12px;padding:0;background:transparent;border-bottom:none;}
.res-status-filter{display:flex;gap:7px;flex-wrap:wrap;}
.res-pill{padding:6px 14px;border-radius:999px;background:#F6F2EA;border:1px solid var(--line);
  font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s;font-family:inherit;}
.res-pill:hover{border-color:var(--brand);color:var(--brand);}
.res-pill.active{background:var(--brand);color:#fff;border-color:var(--brand);}

.res-list{flex:1;min-height:0;display:flex;flex-direction:column;gap:9px;
  overflow-y:auto;padding:0 4px 0 0;margin:0;}
.res-list::-webkit-scrollbar{width:5px;}
.res-list::-webkit-scrollbar-thumb{background:var(--muted2);border-radius:3px;}

.res-list-item{display:flex;align-items:center;gap:12px;padding:11px 12px;margin-bottom:0;
  border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;
  transition:.15s;box-shadow:none;overflow:visible;}
.res-list-item::before{display:none;}
.res-list-item:hover{border-color:var(--brand);background:var(--brand-soft);box-shadow:none;transform:none;}
/* 覆盖旧「左侧 4px 状态色条」:参考稿靠右侧状态徽表达,不用色条 */
.res-list-item.st-PENDING,.res-list-item.st-CONFIRMED,
.res-list-item.st-SEATED,.res-list-item.st-FINISHED,
.res-list-item.st-CANCELLED,.res-list-item.st-NO_SHOW,
.res-list-item.st-NOSHOW{border-left:1px solid var(--line);}
.res-list-item.st-CANCELLED{opacity:.72;}

.res-item-time{display:flex;flex-direction:column;align-items:center;flex:none;width:42px;
  padding:0;background:transparent;border-radius:0;text-align:center;}
.res-item-time b{font-size:16px;font-weight:800;font-family:var(--mono);line-height:1.1;color:var(--txt);}
.res-item-time span{font-size:10px;color:var(--muted2);margin-top:0;}
.res-item-avatar{width:36px;height:36px;border-radius:10px;font-size:13px;flex:none;
  background:linear-gradient(140deg,#F2645A,var(--brand));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;}
.res-item-avatar.female{background:linear-gradient(140deg,#F0A0B8,#E0558A);}
.res-item-info{flex:1;min-width:0;}
.res-item-top{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;
  color:var(--txt);font-family:inherit;margin:0;}
.res-item-table{font-size:14px;font-weight:700;color:var(--txt);}
.res-item-type{font-size:10.5px;font-weight:600;padding:1.5px 7px;border-radius:6px;
  background:#F6F2EA;color:var(--muted);}
.res-item-customer{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;
  font-size:11.5px;font-weight:400;color:var(--muted);}
.res-item-customer b{font-size:11.5px;font-weight:700;color:var(--txt);}
.res-item-phone{font-size:11.5px;color:var(--muted);}
.res-item-tag{font-size:10.5px;font-weight:600;padding:1.5px 7px;border-radius:6px;
  background:#F6F2EA;color:var(--muted);margin-left:0;display:inline-block;}
.res-item-tag.period{background:var(--blue-soft);color:var(--blue);}
.res-item-action{flex:none;display:flex;align-items:center;gap:6px;}
.res-item-arrow{flex:none;width:18px;height:18px;color:var(--muted2);opacity:1;}
.res-list-item:hover .res-item-arrow{color:var(--brand);}

/* 状态徽:仅作用于本页列表(不动全局 .badge/.st-*,避免影响其它页面) */
.res-list-item .badge{display:inline-flex;align-items:center;gap:5px;padding:3.5px 10px;
  border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;background:var(--gray-soft);color:var(--muted);}
.res-list-item .badge::before{content:"";width:6px;height:6px;border-radius:50%;
  background:currentColor;display:inline-block;margin-right:0;vertical-align:baseline;}
.res-list-item .st-warn{background:var(--warn-soft);color:var(--warn);}
.res-list-item .st-brand{background:var(--brand-soft);color:var(--brand-2);}
.res-list-item .st-blue{background:var(--blue-soft);color:var(--blue);}
.res-list-item .st-muted{background:var(--gray-soft);color:var(--muted);}
.res-list-item .st-danger{background:var(--danger-soft);color:var(--danger);}
.res-list-item .st-timeout{background:var(--brand-soft);color:var(--brand);}  /* 超时订单:品牌红 */
.res-list-item .st-ok{background:var(--ok-soft);color:var(--ok);}

/* 创建订单:改为列表下方流内全宽(参考稿 create-btn) */
.res-create-btn{position:static;left:auto;bottom:auto;transform:none;flex:none;
  width:100%;max-width:none;height:auto;margin-top:14px;padding:13px;border-radius:12px;
  background:linear-gradient(140deg,var(--brand),var(--brand-2));color:#fff;
  border:none;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 8px 20px rgba(233,75,60,.25);transition:.15s;z-index:auto;}
.res-create-btn:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(233,75,60,.32);}
.res-create-ic{width:auto;height:auto;border-radius:0;background:transparent;
  font-size:18px;line-height:1;display:inline;font-weight:400;}

.res-empty-state{padding:40px 0;text-align:center;}
.res-empty-state .empty{padding:0;font-size:13px;color:var(--muted2);}

/* 详情抽屉宽度对齐参考稿 */
.res-drawer{width:480px;max-width:92vw;}

/* 窄屏:两栏堆叠 */
@media (max-width:1180px){
  .res-body{grid-template-columns:1fr;overflow-y:auto;}
  .res-table-grid{grid-template-columns:repeat(3,1fr);}
  .res-side{min-height:420px;}
}

/* ================= 历史订单 order_history ================= */
.oh-page{padding:8px 2px;}
.oh-page .filter-bar{margin-bottom:16px;}

/* 区域多选弹层 */
.oh-area-btn{height:32px;border:1px solid var(--line);border-radius:6px;padding:0 12px;font-family:var(--sans);font-size:13px;background:#F5F1E8;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--txt);}
.oh-area-btn:hover{border-color:var(--brand);color:var(--brand);}
.oh-caret{font-size:10px;opacity:.6;}
.oh-area-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:30;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px rgba(60,64,67,.16);padding:10px 12px;min-width:180px;max-height:240px;overflow:auto;}

/* 范围输入(日期/桌数) */
.oh-range{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;}
.oh-range input{width:120px;}
.oh-range-sep{color:var(--muted);font-size:12px;white-space:nowrap;}

/* 分类胶囊 */
.oh-tabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.oh-tab{display:inline-flex;align-items:center;height:32px;padding:0 16px;border-radius:16px;font-size:13px;font-weight:500;background:#fff;border:1px solid var(--line);color:var(--muted);text-decoration:none;transition:.15s;}
.oh-tab:hover{color:var(--brand);border-color:var(--brand);}
.oh-tab.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 6px rgba(233,75,60,.22);}

/* 汇总条(淡黄) */
.oh-summary{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:#FBF5E8;border:1px solid #F0E4C8;border-radius:10px;padding:12px 18px;margin-bottom:16px;font-size:13px;color:var(--muted);}
.oh-sum b{color:var(--txt);font-weight:700;margin-left:3px;font-variant-numeric:tabular-nums;}
.oh-sum-sep{width:1px;height:18px;background:#E7D9B6;}
.oh-amt{color:var(--brand)!important;}

/* 明细表 */
.oh-page .tbl thead th{background:#F4F5F7;color:var(--muted);font-weight:600;}
.oh-page .tbl td.oh-amt{color:var(--brand);font-weight:600;font-variant-numeric:tabular-nums;}
.oh-sortable a{color:inherit;text-decoration:none;}
.oh-sortable a:hover{color:var(--brand);}
.oh-empty{text-align:center;color:var(--muted2);padding:40px 0!important;}

/* 状态徽章(复用 st-*,补胶囊外框) */
.st-tag{display:inline-block;padding:2px 10px;border-radius:11px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap;}

/* 分页 */
.oh-pager{display:flex;align-items:center;gap:14px;margin-top:16px;font-size:13px;color:var(--muted);}
.oh-pg{display:inline-flex;align-items:center;height:30px;padding:0 14px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--muted);text-decoration:none;cursor:pointer;transition:.15s;}
.oh-pg:hover{color:var(--brand);border-color:var(--brand);}
.oh-pg.dis{color:var(--muted2);opacity:.5;cursor:not-allowed;}
.oh-pg-cur{margin-left:auto;}

/* 订单详情弹窗 */
.oh-od-no{font-size:13px;font-weight:500;color:var(--muted);margin-left:8px;}
.oh-od{border:1px solid var(--line);border-radius:10px;overflow:hidden;}
.oh-od-row{display:flex;align-items:center;padding:11px 14px;border-bottom:1px solid #F3F3F3;}
.oh-od-row:last-child{border-bottom:none;}
.oh-od-k{width:92px;flex:0 0 auto;font-size:13px;color:var(--muted2);}
.oh-od-v{flex:1;font-size:14px;color:var(--txt);font-weight:500;}
.oh-od-loading,.oh-od-err{padding:30px;text-align:center;color:var(--muted);font-size:13px;}
.oh-od-err{color:var(--danger);}

/* ================= 订金管理 deposit_manage ================= */
.dm-page{padding:8px 2px;}

/* 顶部页签(订金列表 / 订金汇总表) */
.dm-tabs{display:flex;margin-bottom:0;}
.dm-tab{display:inline-flex;align-items:center;height:34px;padding:0 22px;font-family:var(--sans);font-size:14px;font-weight:600;background:#fff;border:1px solid var(--line);border-bottom:none;border-radius:7px 7px 0 0;color:var(--muted);text-decoration:none;margin-right:3px;transition:.15s;}
.dm-tab:hover{color:var(--brand);}
.dm-tab.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 6px rgba(233,75,60,.22);}

/* 筛选面板 */
.dm-filter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:0 8px 8px 8px;padding:12px 14px;margin-bottom:14px;}
.dm-f-base,.dm-f-kind{display:flex;align-items:center;gap:9px;}
.dm-radio{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--txt);cursor:pointer;white-space:nowrap;}
.dm-radio input{margin:0;accent-color:var(--brand);cursor:pointer;}
.dm-f-dates{display:flex;align-items:center;gap:5px;}
.dm-f-dates input{width:112px;font-size:12.5px;}
.dm-sep{color:var(--muted);font-size:12px;white-space:nowrap;}
.dm-f-sel select{height:32px;font-size:12.5px;}
.dm-f-sel select[name="period_id"]{min-width:94px;}
.dm-f-sel select[name="dep_status"]{min-width:116px;}
.dm-f-sel select[name="src_ch"]{min-width:104px;}
.dm-f-kw{display:flex;align-items:center;gap:0;}
.dm-f-kw input{width:140px;height:32px;font-size:12.5px;border-radius:6px 0 0 6px;border-right:none;}
.dm-search{width:34px;height:32px;border:1px solid var(--line);border-left:none;border-radius:0 6px 6px 0;background:#ECECEC;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s;}
.dm-search svg{width:15px;height:15px;}
.dm-search:hover{background:var(--brand);border-color:var(--brand);color:#fff;}

/* 汇总条(网络订金 / 线下订金 两行) */
.dm-summary{margin-bottom:14px;padding:2px 2px 4px;}
.dm-sum-row{display:flex;align-items:center;gap:30px;flex-wrap:wrap;padding:6px 0;font-size:13px;color:var(--muted);}
.dm-sum-row + .dm-sum-row{border-top:1px dashed #EFEFEF;}
.dm-sum-cell{display:inline-flex;align-items:baseline;gap:5px;font-variant-numeric:tabular-nums;}
.dm-sum-k{color:var(--muted2);}
.dm-sum-cell b{color:var(--txt);font-weight:700;}
.dm-sum-main .dm-sum-k{color:var(--txt);font-weight:600;}
.dm-sum-amt{color:var(--brand);}

/* 明细表(14 列,压缩留白以在 1 屏内放下) */
.dm-tbl{background:#fff;}
.dm-tbl thead th{background:#F4F5F7;color:var(--muted);font-weight:600;text-align:center;white-space:nowrap;padding:9px 7px;font-size:12.5px;}
.dm-tbl tbody td{padding:9px 7px;font-size:12.5px;text-align:center;font-variant-numeric:tabular-nums;}
.dm-tbl th.col-act,.dm-tbl td.col-act{width:auto;text-align:center;padding-right:7px;}
.dm-tbl td.dm-amt{color:var(--brand);font-weight:700;}
.dm-tbl td.dm-tags{text-align:left;white-space:nowrap;min-width:172px;}

/* 订金状态标签 */
.dm-tag{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;font-weight:600;line-height:1.5;white-space:nowrap;background:#E8F6ED;color:#15A05A;margin-right:4px;}
.dm-tag-FORFEIT{background:#FDECEC;color:#D0362B;}
.dm-tag-OFFSET{background:#FFF4E5;color:#C97A16;}

/* 行内操作 */
.dm-lnk{border:none;background:none;padding:0 6px;font-family:var(--sans);font-size:13px;color:var(--brand);cursor:pointer;}
.dm-lnk:hover{text-decoration:underline;}
.dm-lnk.dm-del{color:var(--muted2);}
.dm-lnk.dm-del:hover{color:var(--danger);}

/* 分页(共N条记录 / 页次 / 条/页 / 转到) */
.dm-pager{display:flex;align-items:center;gap:16px;margin-top:16px;font-size:13px;color:var(--muted);flex-wrap:wrap;}
.dm-pg-info{white-space:nowrap;}
.dm-pg-jump{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.dm-jump{width:52px;height:28px;text-align:center;padding:0 4px;}
.dm-pg-jump{margin-left:auto;}
.dm-pg{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--muted);text-decoration:none;font-weight:600;transition:.15s;}
.dm-pg:hover{color:var(--brand);border-color:var(--brand);}
.dm-pg.dis{color:var(--muted2);opacity:.5;cursor:not-allowed;}
.dm-pg-cur{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border-radius:5px;background:var(--brand);color:#fff;font-weight:700;}

/* 详情弹窗内的订金状态标记 */
.dp-marks{margin-top:14px;}
.dp-marks-t{font-size:13px;color:var(--muted2);margin-bottom:8px;}
.dp-marks-box{display:flex;gap:18px;flex-wrap:wrap;}
.dp-mark{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--txt);cursor:pointer;}
.dp-mark input{margin:0;accent-color:var(--brand);cursor:pointer;}

/* ================= 预订通知单 reservation_notice ================= */
.rn-page{padding:4px 0;}

/* ① 筛选栏 */
.rn-filter{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 16px;margin-bottom:14px;}
.rn-f-cap{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap;}
.rn-f-dates{display:inline-flex;align-items:center;gap:6px;position:relative;}
.rn-ic-cal{display:inline-block;width:16px;height:16px;flex:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E94B3C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M8 2.5v4M16 2.5v4'/%3E%3C/svg%3E") center/contain no-repeat;}
.rn-f-dash{color:var(--muted2);}
.rn-filter input[type=date],
.rn-filter input[type=text],
.rn-f-sel select,
.rn-f-dep select{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;
  padding:0 10px;font-size:13px;color:var(--txt);font-family:inherit;outline:none;transition:.15s;}
.rn-filter input[type=date]:focus,
.rn-filter input[type=text]:focus,
.rn-f-sel select:focus,
.rn-f-dep select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.rn-f-sel{position:relative;}
.rn-f-sel select{padding-right:26px;cursor:pointer;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA0A6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;background-size:14px;}
.rn-f-dep{display:inline-flex;align-items:center;gap:6px;}
.rn-dep-cap{font-size:13px;color:var(--muted);white-space:nowrap;}
.rn-search{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 16px;border:none;
  background:var(--brand);color:#fff;font-size:13.5px;font-weight:600;border-radius:8px;cursor:pointer;
  box-shadow:0 2px 6px rgba(233,75,60,.22);transition:.15s;font-family:inherit;}
.rn-search svg{width:15px;height:15px;}
.rn-search:hover{filter:brightness(1.05);}
.rn-dl{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:1px solid var(--line);
  background:#fff;color:var(--muted);font-size:13px;text-decoration:none;border-radius:8px;transition:.15s;white-space:nowrap;}
.rn-dl svg{width:14px;height:14px;}
.rn-dl:hover{color:var(--brand);border-color:var(--brand);background:#FFF9F8;}

/* ② 日期 + 餐段页签 */
.rn-tabbar{display:flex;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap;}
.rn-tabdate{font-size:16px;font-weight:700;color:var(--txt);white-space:nowrap;}
.rn-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.rn-tab{display:inline-flex;align-items:center;height:32px;padding:0 16px;border:1px solid var(--line);
  background:#fff;color:var(--muted);font-size:13px;font-weight:600;text-decoration:none;border-radius:8px;
  transition:.15s;white-space:nowrap;}
.rn-tab:hover{color:var(--brand);border-color:var(--brand);}
.rn-tab.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 6px rgba(233,75,60,.22);}

/* ③ 打印 / 报表工具条 */
.rn-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);
  border-radius:10px;padding:10px 14px;margin-bottom:12px;}
.rn-tools-l{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.rn-tool{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px;border:1px solid var(--line);
  background:#fff;color:var(--txt);font-size:12.5px;text-decoration:none;border-radius:7px;transition:.15s;white-space:nowrap;}
.rn-tool svg{width:14px;height:14px;color:var(--muted);}
.rn-tool:hover{color:var(--brand);border-color:var(--brand);background:#FFF9F8;}
.rn-tool:hover svg{color:var(--brand);}
.rn-ck{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap;margin-left:2px;}
.rn-ck input{margin:0;accent-color:var(--brand);cursor:pointer;}
.rn-tools-r{margin-left:auto;display:flex;align-items:center;gap:6px;}
.rn-sort-cap{font-size:12.5px;color:var(--muted);white-space:nowrap;}
.rn-tools-r select{height:32px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:0 8px;
  font-size:12.5px;color:var(--txt);font-family:inherit;cursor:pointer;outline:none;transition:.15s;}
.rn-tools-r select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}

/* ④ 黄色汇总条 */
.rn-sum{display:flex;align-items:center;gap:26px;flex-wrap:wrap;background:#FDF7E4;border:1px solid #EFE4C0;
  border-radius:10px;padding:11px 18px;margin-bottom:12px;font-size:13px;color:#8a6d1a;}
.rn-sum-i{font-weight:500;white-space:nowrap;}
.rn-sum-i b{color:#5c4710;font-weight:800;margin-left:4px;font-size:15px;font-variant-numeric:tabular-nums;}

/* ⑤ 明细表 */
.rn-tbl-wrap{background:#fff;border:1px solid var(--line);border-radius:10px;overflow-x:auto;}
.rn-tbl{width:100%;min-width:1200px;border-collapse:collapse;font-size:12.5px;}
.rn-tbl thead th{background:#F4F5F7;color:var(--muted);font-weight:600;text-align:left;padding:10px 9px;
  white-space:nowrap;border-bottom:1px solid var(--line);}
.rn-tbl tbody td{padding:10px 9px;border-bottom:1px solid #F1F1F1;color:var(--txt);vertical-align:middle;white-space:nowrap;}
.rn-tbl tbody tr:nth-child(even){background:#FAFAFB;}
.rn-tbl tbody tr:hover{background:var(--brand-soft);}
.rn-nowrap{white-space:nowrap;}
.rn-num{font-variant-numeric:tabular-nums;font-weight:600;}
.rn-col-act{text-align:center;width:96px;white-space:nowrap;}
.rn-empty{padding:48px 0;text-align:center;color:var(--muted2);}
.rn-lnk{border:none;background:transparent;color:var(--brand);font-size:13px;font-weight:600;cursor:pointer;
  padding:4px 8px;border-radius:6px;font-family:inherit;transition:.15s;}
.rn-lnk:hover{background:var(--brand-soft);}

/* 分页 */
.rn-pager{display:flex;align-items:center;gap:14px;margin-top:16px;font-size:13px;color:var(--muted);flex-wrap:wrap;}
.rn-pg-info{white-space:nowrap;}
.rn-pg-jump{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.rn-jump{width:62px;height:30px;border:1px solid var(--line);border-radius:6px;padding:0 8px;font-size:13px;
  text-align:center;font-family:inherit;outline:none;transition:.15s;}
.rn-jump:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);}
.rn-pg{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;
  border:1px solid var(--line);background:#fff;color:var(--muted);text-decoration:none;cursor:pointer;font-size:15px;transition:.15s;}
.rn-pg:hover{color:var(--brand);border-color:var(--brand);}
.rn-pg.dis{color:var(--muted2);opacity:.5;cursor:not-allowed;}
.rn-pg-cur{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;
  background:var(--brand);color:#fff;font-weight:600;font-size:13px;}

/* 预订单详情弹窗 */
.rn-dlg{width:820px;max-width:96vw;}
.rn-dlg-head{padding:13px 18px;background:var(--brand);border-bottom:none;}
.rn-dlg-head .modal-title{color:#fff;font-weight:700;font-size:15px;}
.rn-dlg-head .modal-close{color:#fff;}
.rn-dlg-head .modal-close:hover{background:rgba(255,255,255,.18);color:#fff;}
.rn-dlg-sub{font-size:13.5px;font-weight:600;color:var(--txt);padding:11px 18px;background:#FBF7F0;border-bottom:1px solid var(--line);}
.rn-dlg-body{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden;}
.rn-dlg-nav{display:flex;flex-direction:column;width:118px;flex:none;padding:6px 0;background:#fff;border-right:1px solid var(--line);}
.rn-dlg-tab{border:none;border-left:3px solid transparent;background:transparent;text-align:left;
  padding:12px 18px;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer;font-family:inherit;transition:.15s;}
.rn-dlg-tab.on{color:var(--txt);border-left-color:var(--brand);background:#FBF7F0;}
.rn-dlg-main{flex:1;min-width:0;min-height:0;overflow:auto;padding:18px 22px;background:#fff;}
.rn-pane{display:block;}
.rn-hide{display:none!important;}

/* 订单信息区 */
.rn-info{padding:2px 0;}
.rn-i-seat{font-size:20px;font-weight:800;color:var(--txt);margin-bottom:6px;}
.rn-i-guest{font-size:15px;color:var(--txt);margin-bottom:10px;}
.rn-i-line{font-size:13px;color:var(--muted);margin-bottom:4px;}
.rn-i-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 18px;margin:12px 0;
  border-top:1px solid var(--line);padding-top:12px;}
.rn-i-item{display:flex;align-items:baseline;gap:8px;padding:5px 0;border-bottom:1px dashed #EFEFEF;}
.rn-i-k{width:88px;flex:none;font-size:12.5px;color:var(--muted2);}
.rn-i-v{flex:1;font-size:13.5px;color:var(--txt);font-weight:500;word-break:break-all;}

/* 照片区 */
.rn-photo{display:flex;gap:16px;margin-top:14px;border-top:1px solid var(--line);padding-top:14px;}
.rn-photo-box{flex:1;min-width:0;}
.rn-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;min-height:40px;}
.rn-ptile{position:relative;display:block;width:100%;aspect-ratio:1;border:1px solid var(--line);border-radius:8px;
  overflow:hidden;cursor:pointer;background:#F4F4F4;margin:0;}
.rn-ptile img{width:100%;height:100%;object-fit:cover;display:block;}
.rn-ptile input{position:absolute;top:5px;left:5px;width:16px;height:16px;margin:0;accent-color:var(--brand);z-index:2;}
.rn-padd{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border:1px dashed #C9C4B8;border-radius:8px;
  color:var(--muted2);cursor:pointer;background:#FBFAF6;font-size:26px;font-weight:300;transition:.15s;}
.rn-padd:hover{border-color:var(--brand);color:var(--brand);background:#FFF9F8;}
.rn-padd span{line-height:1;}
.rn-photo-none{font-size:12.5px;color:var(--muted2);margin-top:8px;}
.rn-photo-count{font-size:12.5px;color:var(--muted);margin-top:6px;}
.rn-photo-count b{color:var(--brand);}
.rn-photo-side{width:120px;flex:none;display:flex;flex-direction:column;gap:8px;}
.rn-sel{font-size:13px;color:var(--muted);background:#F6F2EA;border-radius:8px;padding:8px 10px;text-align:center;}
.rn-sel b{color:var(--brand);font-size:15px;margin:0 2px;}
.rn-pbtn{height:34px;border:1px solid var(--line);background:#fff;color:var(--txt);font-size:13px;border-radius:8px;
  cursor:pointer;font-family:inherit;transition:.15s;}
.rn-pbtn:hover{color:var(--brand);border-color:var(--brand);}

/* 操作日志 */
.rn-logs{display:flex;flex-direction:column;}
.rn-log{display:flex;gap:14px;align-items:baseline;padding:9px 4px;border-bottom:1px dashed #EEE;}
.rn-log-t{flex:none;width:150px;font-size:12.5px;color:var(--muted2);font-variant-numeric:tabular-nums;}
.rn-log-x{flex:1;font-size:13.5px;color:var(--txt);word-break:break-all;}
.rn-log-o{flex:none;font-size:12.5px;color:var(--muted);white-space:nowrap;}
.rn-log-none{padding:30px;text-align:center;color:var(--muted2);font-size:13px;}

@media (max-width:640px){
  .rn-i-grid{grid-template-columns:1fr;}
  .rn-photo{flex-direction:column;}
  .rn-photo-side{width:auto;flex-direction:row;}
  .rn-tools-r{margin-left:0;width:100%;}
}

/* == 邀请回执明细(PC 抽屉逐条展示, 2026-09-24) == */
.ra-dt-row.ra-rsvp-row { flex-wrap: wrap; }
.ra-rsvp-list {
  flex: 1 1 100%; margin-top: 2px; padding-top: 8px;
  border-top: 1px dashed #E8E2D8;
  display: flex; flex-direction: column; gap: 6px;
  max-height: 224px; overflow-y: auto;
}
.ra-rsvp-li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 13px; line-height: 1.5; min-width: 0; padding: 2px 0; }
.ra-rsvp-li .rv-name { flex: 0 1 auto; font-weight: 600; color: var(--txt, #333); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 30%; }
.ra-rsvp-li .rv-st { flex: 0 0 auto; font-weight: 600; }
.ra-rsvp-li .rv-st.ok { color: #00A05E; }
.ra-rsvp-li .rv-st.no { color: #9A948A; }
.ra-rsvp-li .rv-time { margin-left: auto; flex: 0 0 auto; font-size: 12px; color: var(--muted2, #999); font-variant-numeric: tabular-nums; }
.ra-rsvp-li .rv-note { flex: 1 1 100%; min-width: 0; font-size: 12px; color: #B08968; white-space: normal; word-break: break-word; line-height: 1.45; }

/* == 2026-10-16 对标客必得新增:kf- 前缀(智能订餐台/推荐桌位/结算/纪念日/来电/客源流动) == */

/* ---- 顶部条(日期条 + 门店/餐段选择) ---- */
.kf-console-bar{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;}
.kf-datebar{display:flex;gap:6px;overflow-x:auto;flex:1 1 520px;min-width:0;padding-bottom:2px;}
.kf-datebar::-webkit-scrollbar{height:4px;}
.kf-datebar::-webkit-scrollbar-thumb{background:var(--line);border-radius:2px;}
.kf-day{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:58px;padding:7px 9px;border-radius:9px;border:1px solid var(--line);background:#FCFAF6;color:var(--muted);text-decoration:none;transition:border-color .12s,background .12s;}
.kf-day b{font-size:14px;color:var(--txt);font-variant-numeric:tabular-nums;}
.kf-day span{font-size:11px;}
.kf-day i{font-size:10px;font-style:normal;color:var(--muted2);}
.kf-day:hover{border-color:var(--brand);background:var(--brand-soft);}
.kf-day.is-today{border-color:#C9A227;}
.kf-day.is-cur{background:var(--brand);border-color:var(--brand);}
.kf-day.is-cur b,.kf-day.is-cur span,.kf-day.is-cur i{color:#fff;}
.kf-bar-right{display:flex;align-items:center;gap:8px;flex:none;flex-wrap:wrap;}
.kf-bar-right select,.kf-bar-right input[type=date]{height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 9px;font-family:inherit;font-size:13px;color:var(--txt);}

/* ---- 统计条 ---- */
.kf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:10px;margin-bottom:12px;}
.kf-stat{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:11px 13px;display:flex;flex-direction:column;gap:3px;}
.kf-stat span{font-size:12px;color:var(--muted);}
.kf-stat b{font-size:20px;font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums;line-height:1.2;}

/* ---- 双栏工作台 ---- */
.kf-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:12px;align-items:start;}
@media (max-width:1180px){.kf-grid{grid-template-columns:minmax(0,1fr);}}
.kf-panel{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.kf-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);background:#FBF8F2;}
.kf-panel-head h3{font-size:14px;font-weight:600;}

/* ---- 桌位占用图 ---- */
.kf-legend{display:flex;gap:11px;font-size:11px;color:var(--muted);}
.kf-legend span{display:flex;align-items:center;gap:4px;}
.kf-legend i{width:9px;height:9px;border-radius:3px;display:inline-block;}
.kf-legend .dot-free{background:#fff;border:1px solid #C9A227;}
.kf-legend .dot-busy{background:var(--brand);border:1px solid var(--brand);}
.kf-legend .dot-off{background:#EFEAE0;border:1px solid var(--line);}
.kf-areas{padding:12px 14px;display:flex;flex-direction:column;gap:14px;max-height:64vh;overflow-y:auto;}
.kf-area-title{font-size:13px;font-weight:600;color:var(--txt);margin-bottom:7px;display:flex;align-items:center;gap:8px;}
.kf-area-title .muted{font-size:11px;font-weight:400;}
.kf-tables{display:flex;flex-wrap:wrap;gap:7px;}
.kf-t{min-width:62px;padding:7px 8px;border-radius:9px;border:1px solid #C9A227;background:#FFFDF7;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;font-family:inherit;transition:transform .1s,box-shadow .1s;}
.kf-t b{font-size:13px;color:var(--txt);font-weight:600;}
.kf-t span{font-size:10px;color:var(--muted2);}
.kf-t:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.10);}
.kf-t.is-busy{background:var(--brand);border-color:var(--brand);}
.kf-t.is-busy b,.kf-t.is-busy span{color:#fff;}
.kf-t.is-off{background:#EFEAE0;border-color:var(--line);opacity:.6;cursor:not-allowed;}
.kf-empty{padding:14px;color:var(--muted2);font-size:13px;text-align:center;}
.kf-empty b{display:block;color:var(--muted);margin-bottom:3px;font-weight:600;}

/* ---- 快速查客 ---- */
.kf-quick{position:relative;padding:10px 14px;border-bottom:1px solid var(--line);}
.kf-quick input{width:100%;height:34px;border:1px solid var(--line);border-radius:9px;padding:0 11px;font-family:inherit;font-size:13px;background:#FCFAF6;}
.kf-quick input:focus{outline:none;border-color:var(--brand);background:#fff;}
.kf-quick-list{position:absolute;left:14px;right:14px;top:50px;z-index:20;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 22px rgba(0,0,0,.13);overflow:hidden;max-height:220px;overflow-y:auto;}
.kf-quick-item{padding:8px 11px;font-size:13px;border-bottom:1px solid var(--line);}
.kf-quick-item:last-child{border-bottom:0;}

/* ---- 订单流水 ---- */
.kf-orders{padding:6px 8px;max-height:64vh;overflow-y:auto;}
.kf-order{display:flex;align-items:center;gap:9px;padding:9px 8px;border-radius:9px;border-bottom:1px solid #F2EDE3;}
.kf-order:hover{background:#FCFAF6;}
.kf-order.is-done{opacity:.55;}
.kf-avatar{flex:none;width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:13px;}
.kf-o-main{flex:1;min-width:0;}
.kf-o-top{display:flex;align-items:center;gap:7px;}
.kf-o-top b{font-size:14px;}
.kf-o-time{font-family:var(--mono);font-size:12px;color:var(--brand);font-weight:600;}
.kf-o-meta{display:flex;flex-wrap:wrap;gap:9px;font-size:12px;color:var(--muted);margin-top:2px;}
.kf-o-dep{color:var(--ok);}
.kf-o-ops{flex:none;display:flex;gap:4px;}
.kf-op{width:25px;height:25px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;padding:0;font-family:inherit;}
.kf-op:hover{border-color:var(--brand);color:var(--brand);}

/* ---- 抽屉里的下单表单 ---- */
.kf-drawer-body{width:min(520px,94vw);padding:0;display:flex;flex-direction:column;}
.kf-frame{flex:1;width:100%;height:calc(100vh - 150px);border:0;display:block;}

/* ---- 推荐试跑 ---- */
.kf-rec-list{display:flex;flex-wrap:wrap;gap:8px;}
.kf-rec{display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;background:#FCFAF6;font-size:12px;}
.kf-rec-rank{width:17px;height:17px;border-radius:50%;background:var(--brand);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;font-weight:700;flex:none;}
.kf-rec-code{font-family:var(--mono);font-size:13px;}
.kf-rec-score{margin-left:auto;font-family:var(--mono);color:var(--brand);font-weight:700;}

/* ---- 订单金额录入:日期切换 ---- */
.kf-daypick{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
.kf-daypick-item{display:flex;flex-direction:column;align-items:center;gap:0;padding:5px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);font-family:var(--mono);font-size:12px;color:var(--muted);}
.kf-daypick-item i{font-style:normal;font-size:10px;color:var(--muted2);font-family:var(--sans);}
.kf-daypick-item.is-today{border-color:var(--brand);color:var(--brand);font-weight:600;}

/* ---- 结算弹窗 ---- */
.kf-modal{max-width:460px;}
.kf-field{margin-bottom:11px;}
.kf-field label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;}
.kf-field input,.kf-field select{width:100%;height:33px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-family:inherit;font-size:13px;background:#FCFAF6;}
.kf-field input:focus,.kf-field select:focus{outline:none;border-color:var(--brand);background:#fff;}
.kf-sub-list{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line);}
.kf-sub-title{font-size:12px;color:var(--muted);margin-bottom:7px;}
.kf-sub-item{display:flex;align-items:center;gap:9px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;margin-bottom:5px;background:#FCFAF6;}
.kf-sub-item b{margin-left:auto;font-family:var(--mono);}
.kf-sub-del{border:0;background:none;color:var(--danger);font-size:12px;cursor:pointer;padding:0 2px;font-family:inherit;}
.kf-sub-del:hover{text-decoration:underline;}

/* ---- 客源流动:当前月高亮 ---- */
.tbl tr.is-cur td{background:var(--brand-soft);}
.kf-lost{color:var(--danger);}
