/* 组件补充：仪表盘、表格、向导、AI 诊断、启动页 */

.boot {
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: radial-gradient(circle at 50% 30%, #1e3a8a 0%, #0b1220 55%, #07101f 100%);
  color: #fff;
}
.boot-logo {
  width: 64px;
  height: 64px;
  border-radius: 18px;
  background: linear-gradient(145deg, #fbbf24, #f97316 55%, #ef4444);
  display: grid;
  place-items: center;
  font-size: 30px;
  font-weight: 800;
  box-shadow: 0 18px 40px rgba(249, 115, 22, .35);
}
.boot-spin {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, .18);
  border-top-color: #fff;
  margin-top: 26px;
  animation: spin .9s linear infinite;
}
.boot p { margin-top: 14px; color: #94a3b8; font-size: 12px; }

.mix-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 38px 66px;
  align-items: center;
  gap: 8px;
  margin: 10px 0;
  font-size: 11px;
}
.mix-label { color: var(--muted); white-space: nowrap; }
.mix-bar { height: 6px; border-radius: 4px; background: #f1f5f9; overflow: hidden; }
.mix-bar i { display: block; height: 100%; border-radius: 4px; transition: width .4s ease; }
.mix-pct { text-align: right; color: var(--muted-2); font-size: 10px; }
.mix-row b { text-align: right; font-size: 11px; }

.rank-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px dashed var(--line-2);
}
.rank-row:last-child { border-bottom: none; }
.rank-no {
  width: 20px;
  height: 20px;
  border-radius: 6px;
  background: #f1f5f9;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  display: grid;
  place-items: center;
  flex: none;
}
.rank-no.top { background: #fff7ed; color: #c2410c; }
.rank-main { width: 128px; flex: none; }
.rank-main b { font-size: 12px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rank-main span { display: block; font-size: 10px; color: var(--muted); margin-top: 2px; }
.rank-bar { flex: 1; height: 5px; background: #f1f5f9; border-radius: 4px; overflow: hidden; }
.rank-bar i { display: block; height: 100%; background: linear-gradient(90deg, #60a5fa, #2563eb); border-radius: 4px; }

.recent-order {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px dashed var(--line-2);
  cursor: pointer;
}
.recent-order:last-child { border-bottom: none; }
.recent-order:hover { background: #fafcff; }
.ro-avatar {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 800;
  flex: none;
  background: var(--orange-soft);
  color: #c2410c;
}
.ro-avatar.green { background: var(--green-soft); color: var(--green); }
.ro-main { flex: 1; min-width: 0; }
.ro-main b { font-size: 12px; display: block; }
.ro-main span { display: block; font-size: 10px; color: var(--muted); margin-top: 2px; }
.ro-right { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.ro-right b { font-size: 12px; }

.settle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 0;
  border-bottom: 1px dashed var(--line-2);
  font-size: 12px;
  color: var(--muted);
}
.settle-row b { color: var(--ink); }
.settle-row.total { border-bottom: none; padding-top: 12px; font-size: 13px; color: var(--ink); }
.settle-row.total b { font-size: 21px; }

.expire-row { display: flex; align-items: center; gap: 9px; padding: 9px 0; border-bottom: 1px dashed var(--line-2); }
.expire-row:last-child { border-bottom: none; }
.expire-row b { font-size: 12px; display: block; }
.expire-row span { display: block; font-size: 10px; color: var(--muted); margin-top: 2px; }

.table-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.table-tile {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  text-align: left;
  background: #fff;
  transition: .16s ease;
}
.table-tile:hover { box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.table-tile.free { border-top: 3px solid #22c55e; }
.table-tile.occupied { border-top: 3px solid #f97316; background: #fffaf5; }
.table-tile.checkout { border-top: 3px solid #3b82f6; background: #f5f9ff; }
.table-tile.cleaning { border-top: 3px solid #94a3b8; }
.tt-top { display: flex; justify-content: space-between; align-items: center; }
.tt-top b { font-size: 19px; letter-spacing: -.02em; }
.tt-name { font-size: 12px; color: var(--muted); margin-top: 5px; }
.tt-meta { font-size: 10px; color: var(--muted-2); margin-top: 3px; }
.tt-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 11px;
  padding-top: 9px;
  border-top: 1px dashed var(--line-2);
  font-size: 10px;
  color: var(--muted);
}

.placeholder-page {
  max-width: 440px;
  margin: 42px auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.ph-ico {
  width: 64px;
  height: 64px;
  border-radius: 18px;
  background: var(--blue-soft);
  color: var(--blue);
  display: grid;
  place-items: center;
}
.ph-ico .ico { width: 30px; height: 30px; }
.placeholder-page h3 { font-size: 18px; font-weight: 800; }
.placeholder-page p { color: var(--muted); font-size: 12px; line-height: 1.7; }
.ph-tags { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; margin: 8px 0 4px; }

.ai-summary {
  background: linear-gradient(145deg, #0b1220, #15294a);
  border-radius: 14px;
  padding: 16px;
  color: #e2e8f0;
}
.ai-summary-head { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #93c5fd; font-weight: 700; }
.ai-summary-head b { color: #fff; font-size: 18px; margin-left: auto; }
.ai-summary p { font-size: 12px; line-height: 1.7; color: #cbd5e1; margin-top: 8px; }
.ai-evidence { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
.ai-timeline { margin-top: 16px; }
.ai-step { display: flex; align-items: flex-start; gap: 10px; padding: 10px 0; border-bottom: 1px dashed var(--line-2); }
.ai-step:last-child { border-bottom: none; }
.ai-step-dot {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #f1f5f9;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  display: grid;
  place-items: center;
  flex: none;
}
.ai-step.done .ai-step-dot { background: var(--green-soft); color: var(--green); }
.ai-step.active .ai-step-dot { background: var(--orange-soft); color: #c2410c; }
.ai-step-main { flex: 1; }
.ai-step-main b { font-size: 12px; }
.ai-step-main span { display: block; font-size: 10px; color: var(--muted); margin-top: 3px; line-height: 1.5; }
.pulse { width: 8px; height: 8px; border-radius: 50%; background: #f97316; animation: pulse 1.2s infinite; }

.ticket-ai {
  margin-top: 7px;
  padding: 7px 9px;
  border-radius: 8px;
  background: var(--purple-soft);
  color: #6d28d9;
  font-size: 10px;
  display: flex;
  gap: 5px;
  align-items: flex-start;
  line-height: 1.5;
}

.qr-cart-count {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  background: var(--red);
  color: #fff;
  font-size: 9px;
  font-weight: 800;
  display: grid;
  place-items: center;
}

@media (max-height: 860px) {
  .qr-phone { height: min(680px, calc(100vh - 40px)); }
  .qr-copy h1 { font-size: 36px; }
}
@media (max-width: 1080px) {
  .table-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 680px) {
  .table-grid { grid-template-columns: 1fr; }
  .rank-main { width: 100px; }
}

/* ============================================================
   会员储值（Sprint 8）：会员列表 / 储值充值 / 钱包流水
   ============================================================ */
.member-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(320px, .85fr);
  gap: 14px;
  align-items: start;
}
.member-search { width: 220px; }
.member-select { width: 220px; height: 36px; }
.member-table tbody tr { cursor: pointer; }
.member-table tbody tr:hover { background: #fafcff; }
.member-table tbody tr.is-selected { background: var(--blue-soft); }
.member-table tbody tr.is-selected td { color: var(--ink); }
.member-detail .card-body { padding-top: 10px; }

.member-hero {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  background: linear-gradient(160deg, #f8fbff, #ffffff);
}
.member-hero-top { display: flex; align-items: center; gap: 10px; }
.member-hero-name { font-size: 15px; font-weight: 800; }
.member-hero-phone { font-size: 11px; color: var(--muted); margin-top: 2px; }
.member-hero-balance {
  margin-top: 14px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  color: var(--muted);
  font-size: 12px;
}
.member-hero-balance b {
  font-family: var(--mono);
  font-size: 30px;
  color: var(--ink);
  letter-spacing: -.05em;
  line-height: 1;
}
.member-hero-balance b small { font-size: 14px; color: var(--muted); margin-right: 2px; }
.member-hero-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }

.member-mini-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 18px 0 4px;
  font-size: 13px;
  font-weight: 700;
}
.wallet-list { display: flex; flex-direction: column; }
.wallet-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px dashed var(--line-2);
}
.wallet-row:last-child { border-bottom: none; }
.wallet-ico { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; flex: none; }
.wallet-ico.in { background: var(--green-soft); color: var(--green); }
.wallet-ico.out { background: var(--blue-soft); color: var(--blue); }
.wallet-main { font-size: 12px; font-weight: 700; }
.wallet-sub { font-size: 10px; color: var(--muted); margin-top: 2px; }
.wallet-amount { font-family: var(--mono); font-size: 13px; font-weight: 800; white-space: nowrap; }
.wallet-amount.in, .wallet-in { color: var(--green); }
.wallet-amount.out, .wallet-out { color: var(--blue); }

.recharge-target-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: #f8fafc;
  border-radius: 12px;
}
.recharge-target-head b { display: block; font-size: 13px; }
.recharge-target-head span { display: block; font-size: 11px; color: var(--muted); margin-top: 2px; }
.recharge-balance { font-size: 11px; color: var(--muted); white-space: nowrap; }
.recharge-balance b { font-family: var(--mono); color: var(--ink); font-size: 13px; }
.recharge-quick { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 2px; }

.wallet-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 20px;
  margin-bottom: 14px;
  border-radius: 16px;
  background: linear-gradient(145deg, #0b1220, #15294a);
  color: #e2e8f0;
  box-shadow: var(--shadow-sm);
}
.wallet-hero-label { font-size: 11px; color: #94a3b8; }
.wallet-hero-balance {
  font-family: var(--mono);
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -.05em;
  color: #fff;
  margin: 6px 0 4px;
}
.wallet-hero-balance small { font-size: 16px; color: #93c5fd; margin-right: 3px; }
.wallet-hero-meta { font-size: 11px; color: #94a3b8; }
.wallet-hero-stats { display: flex; gap: 24px; }
.wallet-hero-stats span { display: block; font-size: 10px; color: #94a3b8; }
.wallet-hero-stats b { display: block; font-family: var(--mono); font-size: 15px; color: #fff; margin-top: 4px; }

.avatar-sm.purple { background: var(--purple-soft); color: var(--purple); }

/* POS 结账弹层：会员余额支付 */
.pay-member { margin-top: 14px; }
.pay-member-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.pay-member-title { font-size: 13px; font-weight: 700; }
.pay-note-warn { background: var(--red-soft); color: var(--red); }
.pay-note b { color: var(--ink); }

/* 会员储值 / 积分页：栅格子项允许收缩，避免表格最小宽度把卡片撑出屏幕（移动端横向溢出） */
.member-page .card,
.member-page .col,
.member-page .grid-2 > * { min-width: 0; }
.member-page .table-wrap { max-width: 100%; }

@media (max-width: 1080px) {
  .member-layout { grid-template-columns: minmax(0, 1fr); }
  .wallet-hero { flex-direction: column; align-items: flex-start; }
  .points-hero { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 860px) {
  .member-page .grid-2 { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 680px) {
  .member-search, .member-select { width: 100%; }
  .member-hero-actions { grid-template-columns: 1fr; }
  .wallet-hero-stats { gap: 16px; }
  .points-hero-stats { gap: 16px; }
  .points-strip { grid-template-columns: 1fr; }
  /* 移动端顶栏标签过多会挤出屏幕，仅保留账号头像 */
  .topbar-right .tag { display: none; }
  .topbar-right { gap: 8px; }
}

/* ============================================================
   会员积分与等级（Sprint 9）：积分卡片 / 积分明细 / 核销弹层
   ============================================================ */
.points-strip {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 10px;
  align-items: end;
  padding: 12px 14px;
  border-radius: 14px;
  background: linear-gradient(150deg, #faf5ff, #f5f3ff 60%, #fff);
  border: 1px solid #ede9fe;
}
.points-strip > div { min-width: 0; }
.points-strip span { display: block; font-size: 10px; color: var(--muted); margin-bottom: 5px; }
.points-strip b { display: block; font-family: var(--mono); font-size: 16px; font-weight: 800; color: var(--ink-2); letter-spacing: -.03em; }
.points-strip .points-strip-main b { font-size: 26px; color: var(--purple); letter-spacing: -.05em; }
.points-strip .points-strip-main b small { font-size: 11px; color: var(--muted); font-weight: 600; margin-left: 3px; letter-spacing: 0; }

.level-benefit {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--purple-soft);
  color: #6d28d9;
  font-size: 11px;
  line-height: 1.5;
}
.level-benefit .ico { margin-top: 1px; }
.level-progress { margin-top: 12px; }
.level-progress-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 11px;
  color: var(--muted);
}
.level-progress-top span:first-child { font-weight: 700; color: var(--ink-2); }
.level-bar { height: 7px; border-radius: 6px; background: #f1f5f9; overflow: hidden; margin-top: 7px; }
.level-bar i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, #a78bfa, #7c3aed); transition: width .4s ease; }

.level-list { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.level-row {
  border: 1px solid var(--line-2);
  border-radius: 10px;
  padding: 9px 11px;
  background: #fff;
}
.level-row.current { border-color: #ddd6fe; background: var(--purple-soft); }
.level-row-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.level-row-top b { font-size: 12px; }
.level-row-benefit { font-size: 10px; color: var(--muted); margin-top: 4px; line-height: 1.5; }

.points-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 20px;
  margin-bottom: 14px;
  border-radius: 16px;
  background: linear-gradient(145deg, #1e1b4b, #4c1d95 70%, #5b21b6);
  color: #ede9fe;
  box-shadow: var(--shadow-sm);
}
.points-hero-label { font-size: 11px; color: #c4b5fd; }
.points-hero-value {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 6px 0 4px;
  font-family: var(--mono);
  color: #fff;
}
.points-hero-value > span { font-size: 34px; font-weight: 800; letter-spacing: -.05em; line-height: 1; }
.points-hero-value > small { font-size: 13px; color: #ddd6fe; }
.points-hero-value .badge { font-family: var(--font); font-size: 11px; align-self: center; }
.points-hero-meta { font-size: 11px; color: #c4b5fd; }
.points-hero-stats { display: flex; gap: 24px; }
.points-hero-stats span { display: block; font-size: 10px; color: #c4b5fd; }
.points-hero-stats b { display: block; font-family: var(--mono); font-size: 16px; color: #fff; margin-top: 4px; }

.points-in { color: var(--green); }
.points-out { color: #c2410c; }
.points-hint { margin-top: 14px; padding: 10px 12px; border-radius: 10px; background: #f8fafc; color: var(--muted); font-size: 11px; line-height: 1.6; }
.points-hint-warn { background: var(--red-soft); color: var(--red); font-weight: 600; }
.r-points span:last-child { color: var(--purple); font-weight: 800; }

/* ============================================================
   会员权益：等级折扣 + 积分抵现（Sprint 10）
   ============================================================ */
.pay-original {
  margin-top: 5px;
  font-size: 11px;
  color: var(--muted);
}
.pay-total { position: relative; }
.pay-total .pay-original { color: var(--muted); }

.benefit-panel {
  margin-top: 12px;
  border: 1px solid #ddd6fe;
  border-radius: 12px;
  padding: 12px;
  background: linear-gradient(160deg, #faf5ff, #ffffff 60%);
}
.benefit-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.benefit-title { font-size: 13px; font-weight: 800; color: var(--ink); }
.benefit-grid { display: flex; flex-direction: column; gap: 7px; }
.benefit-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 12px; color: var(--muted); }
.benefit-row b { color: var(--ink-2); font-family: var(--mono); font-weight: 700; font-size: 13px; }
.benefit-row .benefit-cut { color: #c2410c; }
.benefit-row.total { margin-top: 4px; padding-top: 9px; border-top: 1px dashed #ddd6fe; font-size: 13px; color: var(--ink); font-weight: 700; }
.benefit-row.total b { font-size: 20px; color: var(--purple); letter-spacing: -.04em; }
.benefit-points-input { display: flex; align-items: center; gap: 6px; }
.benefit-points-input .input { width: 110px; height: 34px; text-align: right; font-family: var(--mono); }
.benefit-quick { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
.benefit-quick .btn { height: 28px; padding: 0 9px; font-size: 11px; }
.benefit-hint { margin-top: 10px; padding: 8px 10px; border-radius: 9px; background: #f8fafc; color: var(--muted); font-size: 11px; line-height: 1.6; }
.benefit-note { margin-top: 6px; font-size: 10px; color: var(--muted-2); line-height: 1.5; }
.r-benefit span:last-child { color: #c2410c; font-weight: 800; }

.benefit-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.benefit-summary-item {
  border: 1px solid var(--line-2);
  border-radius: 12px;
  padding: 10px 12px;
  background: #fafbfc;
  min-width: 0;
}
.benefit-summary-item span { display: block; font-size: 10px; color: var(--muted); }
.benefit-summary-item b { display: block; font-size: 15px; font-weight: 800; color: var(--ink); margin-top: 5px; }
.benefit-summary-item small { display: block; font-size: 10px; color: var(--muted-2); margin-top: 4px; line-height: 1.4; }
.benefit-summary-item.highlight { border-color: #ddd6fe; background: var(--purple-soft); }
.benefit-summary-item.highlight b { color: var(--purple); font-family: var(--mono); letter-spacing: -.03em; }

@media (max-width: 680px) {
  .benefit-summary { grid-template-columns: 1fr; }
  .benefit-points-input .input { width: 90px; }
  .benefit-row { align-items: flex-start; }
}

/* ============================================================
   退款与超时关单（Sprint 11）：订单详情 / 退款弹层 / 退款结果
   ============================================================ */
.order-detail-badges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.order-amount-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 4px; }
.order-amount-grid > div {
  border: 1px solid var(--line-2);
  border-radius: 10px;
  padding: 9px 11px;
  background: #fafbfc;
  min-width: 0;
}
.order-amount-grid span { display: block; font-size: 10px; color: var(--muted); }
.order-amount-grid b { display: block; font-family: var(--mono); font-size: 14px; margin-top: 4px; color: var(--ink); }
.order-amount-grid .refund-amount { color: #c2410c; }
.order-kv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; margin-top: 12px; font-size: 12px; }
.order-kv > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px dashed var(--line-2); padding-bottom: 6px; }
.order-kv span { color: var(--muted); }
.order-kv b { color: var(--ink-2); font-weight: 600; }
.order-section-title { margin: 16px 0 8px; font-size: 13px; font-weight: 800; }
.order-cancel-box {
  margin: 10px 0 2px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
}
.order-cancel-title { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 800; color: var(--muted); }
.order-cancel-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 6px; font-size: 12px; color: var(--muted); }
.order-cancel-row b { color: var(--ink-2); }

.refund-records { display: flex; flex-direction: column; gap: 8px; }
.refund-record { border: 1px solid var(--line-2); border-radius: 10px; padding: 9px 11px; background: #fff; }
.refund-record-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.refund-record-head b { font-size: 12px; }
.refund-record-body { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 6px; font-size: 11px; color: var(--muted); }
.refund-record-body b { color: var(--ink-2); }

.refund-amount-row { display: flex; align-items: center; gap: 8px; }
.refund-amount-row .input { flex: 1; }
.refund-reasons { display: flex; gap: 6px; flex-wrap: wrap; }
.refund-reasons .btn { height: 28px; padding: 0 10px; font-size: 11px; }
.refund-hint { margin-top: 14px; padding: 10px 12px; border-radius: 10px; background: #f8fafc; color: var(--muted); font-size: 11px; line-height: 1.6; }
.refund-note { margin-top: 8px; font-size: 10px; color: var(--muted-2); line-height: 1.5; }

.refund-result-box { margin-top: 14px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.refund-result-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px dashed var(--line-2); font-size: 12px; color: var(--muted); }
.refund-result-row:last-child { border-bottom: none; }
.refund-result-row b { color: var(--ink); font-family: var(--mono); font-size: 13px; }
.refund-result-row.total { background: var(--orange-soft); }
.refund-result-row.total b { color: #c2410c; font-size: 20px; }

.refund-return-box {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 10px;
  padding: 9px 11px;
  border-radius: 10px;
  background: var(--green-soft);
  color: #15803d;
  font-size: 11px;
  line-height: 1.6;
}
.refund-return-box .ico { margin-top: 1px; }
.refund-return-box b { color: #166534; }

@media (max-width: 860px) {
  .order-amount-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .order-amount-grid { grid-template-columns: 1fr 1fr; }
  .order-kv { grid-template-columns: 1fr; }
  .refund-amount-row { flex-direction: column; align-items: stretch; }
  .points-hero-stats { flex-wrap: wrap; }
}


@media (max-width: 860px) {
  .pos-top { overflow: hidden; }
  .table-scroll { min-width: 0; }
}
@media (max-width: 680px) {
  .pos-shift,
  .pos-top-right .pos-clock,
  .pos-top-right .net-pill,
  .pos-top-divider { display: none; }
  .pos-top-right { gap: 8px; }
  /* POS 收银台为全屏壳层布局，移动端裁掉超出的横向内容，避免页面出现横向滚动 */
  .pos { overflow: hidden; }
}

/* ============================================================
   优惠券（Sprint 12）：会员券包 / 后台券模板 / POS 选券
   ============================================================ */
.coupon-list { display: flex; flex-direction: column; gap: 10px; }
.coupon-card {
  display: flex;
  align-items: stretch;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  transition: .16s ease;
}
.coupon-card.used { opacity: .72; }
.coupon-card.expired { opacity: .6; filter: grayscale(.4); }
.coupon-card.available { border-color: #dbeafe; }
.coupon-left {
  width: 116px;
  flex: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 14px 8px;
  background: linear-gradient(150deg, #eff6ff, #dbeafe);
  border-right: 1px dashed #bfdbfe;
}
.coupon-card.used .coupon-left, .coupon-card.expired .coupon-left { background: #f1f5f9; border-right-color: var(--line); }
.coupon-value { font-family: var(--mono); font-size: 23px; font-weight: 800; color: var(--blue); letter-spacing: -.04em; line-height: 1; }
.coupon-card.used .coupon-value, .coupon-card.expired .coupon-value { color: var(--muted); }
.coupon-type { font-size: 10px; color: var(--muted); }
.coupon-main { flex: 1; min-width: 0; padding: 12px 4px 12px 0; display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.coupon-name { font-size: 14px; font-weight: 800; color: var(--ink); }
.coupon-meta { font-size: 11px; color: var(--muted); }
.coupon-returned { display: flex; align-items: center; gap: 5px; font-size: 10px; color: #15803d; margin-top: 2px; }
.coupon-returned .ico { width: 13px; height: 13px; }
.coupon-right { display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 6px; padding: 12px 14px 12px 0; }
.coupon-order { font-size: 9px; color: var(--muted-2); }

/* POS 结账弹层选券 */
.pos-coupon-picker { margin: 10px 0 2px; border: 1px solid var(--line-2); border-radius: 11px; background: #fbfcfe; padding: 9px 10px; }
.pos-coupon-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 700; color: var(--ink-2); margin-bottom: 7px; }
.pos-coupon-list { display: flex; align-items: stretch; gap: 6px; flex-wrap: wrap; }
.pos-coupon-item {
  position: relative;
  min-width: 104px;
  max-width: 132px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  padding: 7px 9px;
  text-align: left;
  transition: .15s ease;
}
.pos-coupon-item:hover:not(.disabled) { border-color: #93c5fd; }
.pos-coupon-item.active { border-color: var(--blue); background: var(--blue-soft); box-shadow: 0 0 0 2px rgba(37, 99, 235, .10); }
.pos-coupon-item.disabled { opacity: .55; background: #f8fafc; cursor: not-allowed; }
.pc-value { font-family: var(--mono); font-size: 16px; font-weight: 800; color: var(--blue); letter-spacing: -.04em; line-height: 1.1; }
.pos-coupon-item.disabled .pc-value { color: var(--muted); }
.pc-name { font-size: 10px; font-weight: 700; color: var(--ink-2); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc-meta { font-size: 9px; color: var(--muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc-reason { font-size: 9px; color: var(--red); margin-top: 4px; line-height: 1.35; }
.pc-check { position: absolute; top: 5px; right: 5px; color: var(--blue); }

.order-coupon-box {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 9px;
  background: var(--blue-soft);
  color: #1d4ed8;
  font-size: 11px;
  line-height: 1.5;
}
.order-coupon-box b { color: #1e40af; }

@media (max-width: 680px) {
  .coupon-left { width: 92px; }
  .coupon-value { font-size: 19px; }
  .coupon-right { padding-right: 10px; }
  .pos-coupon-item { min-width: 96px; max-width: 120px; }
}

/* ============================================================
   会员挂账（Sprint 15）：会员额度卡片 / POS 挂账 / 后台结算
   ============================================================ */
.credit-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fbfcfe;
  padding: 10px 12px;
}
.credit-summary-item { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.credit-summary-item span { font-size: 11px; color: var(--muted); }
.credit-summary-item b { font-family: var(--mono); font-size: 18px; font-weight: 800; color: var(--ink); letter-spacing: -.03em; }
.credit-summary-item.highlight b { color: var(--blue); }
.credit-bar { height: 6px; border-radius: 999px; background: #eef2f7; overflow: hidden; margin-top: 9px; }
.credit-bar > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #60a5fa, #2563eb); }
.credit-tip {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-top: 9px;
  padding: 8px 10px;
  border-radius: 9px;
  background: var(--blue-soft);
  color: #1d4ed8;
  font-size: 11px;
  line-height: 1.5;
}
.credit-tip .ico { flex: none; margin-top: 1px; color: #1d4ed8; }
.credit-record-list { display: flex; flex-direction: column; gap: 8px; }
.credit-record {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 11px;
  background: #fff;
}
.credit-record-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.credit-record-top b { font-family: var(--mono); font-size: 15px; color: var(--ink); letter-spacing: -.02em; }
.credit-record-meta { margin-top: 3px; font-size: 10px; color: var(--muted); }
.pay-credit .credit-summary { margin-top: 8px; }
.pay-credit .pay-note { margin-top: 8px; }
.pay-methods .pay-method:nth-child(5),
.pay-methods .pay-method:nth-child(6) { grid-column: span 2; }
.order-credit-box {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: 9px;
  background: #fff7ed;
  color: #c2410c;
  font-size: 11px;
  line-height: 1.5;
}
.order-credit-box b { color: #9a3412; }
.settle-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fbfcfe;
}
.settle-summary div { display: flex; flex-direction: column; gap: 3px; }
.settle-summary span { font-size: 11px; color: var(--muted); }
.settle-summary b { font-family: var(--mono); font-size: 16px; color: var(--ink); }
.text-red { color: var(--red) !important; }
.r-line.r-credit span:last-child { color: #c2410c; font-weight: 800; }

@media (max-width: 680px) {
  .credit-summary, .settle-summary { grid-template-columns: 1fr 1fr; }
  .credit-summary-item b { font-size: 16px; }
}

/* ============================================================
   混合支付（Sprint 20）：多段渠道 + 金额 + 合计校验 + 分段小票
   ============================================================ */
.pay-mixed { margin-top: 10px; }
.mixed-member-hint {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 8px 0 2px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fbfcfe;
  font-size: 11px;
  color: var(--muted);
}
.mixed-member-hint b { font-family: var(--mono); color: var(--ink); }
.mixed-segments { display: flex; flex-direction: column; gap: 7px; margin-top: 9px; }
.mixed-seg {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 6px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.mixed-seg select { width: 118px; flex: none; }
.mixed-seg-amount { flex: 1; display: flex; align-items: center; gap: 5px; }
.mixed-seg-amount > span { color: var(--muted); font-size: 12px; }
.mixed-seg-amount .input { width: 100%; text-align: right; font-family: var(--mono); }
.mixed-seg-remove { flex: none; color: var(--muted); }
.mixed-seg-remove:hover { color: var(--red); }
.mixed-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 8px; }
.mixed-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 9px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #f8fafc;
}
.mixed-summary div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mixed-summary span { font-size: 10px; color: var(--muted); }
.mixed-summary b { font-family: var(--mono); font-size: 15px; color: var(--ink); letter-spacing: -.02em; }
.mixed-summary .mixed-ok { color: var(--green); }
.mixed-summary .mixed-due { color: var(--red); }
.r-mixed-sub {
  border-top: 1px dashed var(--line);
  margin-top: 6px;
  padding-top: 6px;
  font-size: 10px;
  color: var(--muted);
  letter-spacing: .08em;
}
.r-line.r-pay-seg span:last-child { color: var(--ink); font-weight: 700; }
.order-mixed-box {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: 9px;
  background: #eef2ff;
  color: #3730a3;
  font-size: 11px;
  line-height: 1.5;
}
@media (max-width: 680px) {
  .mixed-seg select { width: 96px; }
  .mixed-summary { grid-template-columns: 1fr 1fr; }
  .mixed-summary div:last-child { grid-column: 1 / -1; }
}

/* ============================================================
   数据看板（Sprint 26）：趋势 SVG / 渠道环形图 / 日期切换 / 日结标记
   ============================================================ */
.insight-tabs { flex-wrap: wrap; }
.insight-scope-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin: -4px 0 12px;
}
.insight-kpis { margin-bottom: 14px; }
.insight-main { margin-bottom: 14px; }
.insight-trend svg { width: 100%; height: auto; display: block; }
.insight-legend { margin-top: 4px; }
.insight-donut { display: flex; align-items: center; gap: 16px; }
.insight-donut svg { width: 180px; height: 180px; flex: none; }
.insight-channel-list { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.insight-channel-row {
  display: grid;
  grid-template-columns: 10px minmax(52px, 1fr) auto auto;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}
.insight-channel-row .dot-color { width: 8px; height: 8px; border-radius: 50%; }
.insight-channel-row .name { font-size: 11px; font-weight: 700; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.insight-channel-row .amount { font-family: var(--mono); font-size: 11px; font-weight: 700; color: var(--ink); white-space: nowrap; }
.insight-channel-row .pct { font-family: var(--mono); font-size: 10px; color: var(--blue); min-width: 40px; text-align: right; white-space: nowrap; }
.insight-dish-list { display: flex; flex-direction: column; gap: 6px; }
.insight-dish-row {
  display: grid;
  grid-template-columns: 22px 1fr auto auto;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  border-radius: 8px;
  background: #fbfcfe;
}
.insight-dish-row .rank {
  width: 20px;
  height: 20px;
  border-radius: 6px;
  background: #eff6ff;
  color: #2563eb;
  font-size: 10px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
}
.insight-dish-row .name { font-size: 12px; font-weight: 700; color: var(--ink-2); }
.insight-dish-row .qty { font-size: 10px; color: var(--muted); }
.insight-dish-row .amount { font-family: var(--mono); font-size: 11px; color: var(--ink); }
.insight-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--line-2);
  font-size: 11px;
  color: var(--ink-2);
  line-height: 1.55;
}
.insight-note:last-of-type { border-bottom: none; }
.insight-note .ico { flex: none; margin-top: 2px; color: var(--blue); }
.insight-bottom { align-items: start; }
@media (max-width: 900px) {
  .insight-donut { flex-direction: column; align-items: stretch; }
  .insight-donut svg { align-self: center; }
}
@media (max-width: 680px) {
  .insight-tabs { width: 100%; }
  .insight-scope-bar { margin-top: 0; }
  .insight-kpis { grid-template-columns: 1fr 1fr; }
  .insight-donut svg { width: 150px; height: 150px; }
}






