/* 门店录单工具 · 自包含样式(浅天青亮色,与财务核对后台同语言,不依赖 site.css) */
:root{
  --bg:#dfeff6; --panel:#fff; --text:#1c2b38; --muted:#5c7185; --dim:#8aa0b3;
  --line:#c2deea; --line-strong:#8fc3da;
  --cyan:#0e7fa6; --green:#059669; --amber:#d97706; --red:#e11d48;
  --grad:linear-gradient(135deg,#0e7490,#0f8ba8);
  --glow:0 12px 40px rgba(8,94,128,.16);
  --shadow:0 10px 26px rgba(8,94,128,.12);
  --radius:16px; --radius-sm:10px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body.rk-body{margin:0; background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;
  font-size:14px; line-height:1.6; -webkit-font-smoothing:antialiased; min-height:100vh;}
button{font-family:inherit}
input{font-family:inherit}
.rk-mono, .rk-in{font-variant-numeric:tabular-nums}

/* ── toast ── */
#rkToast{position:fixed; top:16px; left:50%; transform:translateX(-50%) translateY(-20px); z-index:200;
  background:#0f2a37; color:#fff; padding:10px 22px; border-radius:12px; font-size:13.5px; font-weight:600;
  box-shadow:0 10px 30px rgba(0,0,0,.3); opacity:0; transition:.25s; pointer-events:none; max-width:86vw; text-align:center}
#rkToast.show{opacity:1; transform:translateX(-50%) translateY(0)}
#rkToast.err{background:#8f1d34}
#rkToast.ok{background:#0c5b42}

/* ── 顶栏 ── */
.rk-top{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:12px 24px; background:rgba(255,255,255,.86); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line); position:sticky; top:0; z-index:50;}
.rk-brand{display:flex; align-items:center; gap:10px; font-weight:900; font-size:17px; letter-spacing:.2px;}
.rk-brand .dot{width:10px;height:10px;border-radius:50%;background:var(--grad);box-shadow:0 0 10px var(--cyan);}
.rk-brand small{color:var(--muted); font-weight:600; font-size:12px; margin-left:6px;}
.rk-topright{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
.rk-select{background:#c9ebf7; color:#0e7490; border:1px solid var(--line-strong); border-radius:10px;
  padding:8px 12px; font-size:13.5px; font-weight:700; max-width:300px; outline:none; cursor:pointer;}
.rk-select:focus{border-color:var(--cyan); box-shadow:0 0 0 3px rgba(14,127,166,.15);}
.rk-select option{color:#1c2b38; background:#fff; font-weight:400;}

/* ── chip ── */
.rk-chip{display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600;
  border-radius:999px; padding:3px 12px; white-space:nowrap;}
.rk-chip.dim{background:#e6f0f5; color:var(--muted); border:1px solid var(--line);}
.rk-who{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.rk-chip.store{background:linear-gradient(135deg,#0e7490,#0f8ba8); color:#fff; border:0; padding:5px 14px;}
.rk-chip.user{background:#e6f5ee; color:#0c6e4a; border:1px solid #b5e0cc;}
.rk-chip.user.auth{background:#e0f2fb; color:#0a6d8f; border-color:#b0dcec;}

/* ── 登录门 ── */
.rk-login{display:flex; align-items:flex-start; justify-content:center;
  min-height:calc(100vh - 57px); padding:44px 20px 70px;}
.rk-card{background:#fff; border:1px solid var(--line); border-radius:18px;
  box-shadow:var(--glow); padding:26px 28px; width:100%; max-width:470px;}
.rk-card .rk-brand{font-size:19px; margin-bottom:12px;}
.rk-brand.big .dot{width:12px; height:12px;}
.rk-lintro{font-size:13px; color:var(--muted); line-height:1.8; margin:0 0 18px; padding:10px 13px;
  background:#f0f8fb; border:1px dashed var(--line-strong); border-radius:11px;}
.rk-lintro b{color:var(--cyan);}
.rk-lsec{margin:14px 0;}
.rk-lsec-t{font-size:13px; font-weight:900; color:var(--text);}
.rk-lsec-t b{color:var(--cyan);}
.rk-lsub{font-size:12px; color:var(--muted); line-height:1.7; margin:6px 0 10px;}
.rk-lrow{display:flex; gap:10px;}
.rk-select.grow{flex:1; max-width:none;}
.rk-btn.block{width:100%; margin-top:12px;}
.rk-lor{display:flex; align-items:center; gap:12px; color:var(--dim); font-size:12px; margin:4px 0;}
.rk-lor::before,.rk-lor::after{content:""; flex:1; height:1px; background:var(--line);}
#rkLoginErr{min-height:16px; margin-top:10px; margin-bottom:0;}
.rk-applyline{margin-top:14px; text-align:center; border-top:1px dashed var(--line); padding-top:10px;}
.rk-applyline .rk-lnk{line-height:1.6; font-weight:600;}
#rkApplyOk .rk-lsec-t b{color:#0b8f4c;}

/* ── 迷你主线条 ── */
.rk-steps{display:flex; gap:6px; flex-wrap:wrap; max-width:1280px; margin:12px auto -6px; padding:0 24px;}
.rk-step{display:flex; align-items:center; gap:8px; background:rgba(255,255,255,.7); border:1px solid var(--line);
  border-radius:12px; padding:6px 14px; font-size:12px; color:var(--muted); line-height:1.35;}
.rk-step b{color:var(--cyan); font-size:13px;}
.rk-step.on b{color:var(--green);}
.rk-step.on{background:#fff; border-color:#bfe3d5;}

/* ── 布局 ── */
.rk-wrap{max-width:1280px; margin:0 auto; padding:16px 24px 60px;}
.rk-grid{display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:18px; align-items:start;}
@media (max-width:1040px){.rk-grid{grid-template-columns:1fr;} .rk-right{display:grid; grid-template-columns:1fr 1fr; gap:18px;}}
@media (max-width:700px){.rk-right{grid-template-columns:1fr;} .rk-wrap{padding:12px 12px 50px;}}

/* ── 面板 ── */
.rk-panel{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:16px 18px; box-shadow:var(--shadow); margin-bottom:18px;}
.rk-panel h3{font-size:14.5px; font-weight:900; letter-spacing:.3px; margin:0 0 8px; display:flex; align-items:center; gap:8px;}
.rk-panel h3::before{content:""; width:4px; height:14px; border-radius:2px; background:var(--grad);}
.rk-tip{font-size:12px; color:var(--muted); line-height:1.7; margin-bottom:14px; padding:8px 12px;
  background:#f0f8fb; border:1px dashed var(--line-strong); border-radius:10px;}
.rk-tip b{color:var(--cyan);}

/* ── 表单 ── */
.rk-form{margin-top:4px;}
.rk-field{margin-bottom:12px;}
.rk-field label{display:block; font-size:12px; color:var(--muted); font-weight:700; margin-bottom:5px;}
.rk-field .req{color:var(--red);}
.rk-field .dim{color:var(--dim); font-weight:400;}
.rk-row{display:flex; gap:12px;}
.rk-row>.rk-field{flex:1; min-width:0;}
@media (max-width:560px){.rk-row{flex-wrap:wrap;}}
.rk-in{width:100%; padding:10px 12px; border-radius:10px; font-size:14px; background:#f7fbfd;
  border:1px solid var(--line-strong); color:var(--text); outline:none; transition:.18s;}
.rk-in:focus{border-color:var(--cyan); background:#fff; box-shadow:0 0 0 3px rgba(14,127,166,.12);}
.rk-in:disabled{background:#eef3f6; color:var(--dim);}
.rk-money{text-align:right; font-weight:800;}
.rk-hint{font-size:11.5px; color:var(--dim); margin-top:4px; min-height:14px;}

/* 渠道钮 */
.rk-chans{display:flex; flex-wrap:wrap; gap:8px;}
.rk-chans button{border:1.5px solid var(--line); background:#fff; border-radius:11px; padding:9px 16px;
  font-size:13.5px; font-weight:800; cursor:pointer; transition:.16s; color:#44586a;}
.rk-chans button.sel{color:#fff; box-shadow:0 4px 14px rgba(0,0,0,.14); transform:translateY(-1px);}
.c-mt.sel{background:#f6a600; border-color:#f6a600;}          /* 美团黄 */
.c-ctrip.sel{background:#1a6fe0; border-color:#1a6fe0;}       /* 携程蓝 */
.c-dy.sel{background:#2b2b33; border-color:#2b2b33;}          /* 抖音黑 */
.c-fz.sel{background:#ff7a00; border-color:#ff7a00;}          /* 飞猪橙 */
.c-xcx.sel{background:#0e7fa6; border-color:#0e7fa6;}         /* 小程序/鲸战 */
.c-off.sel{background:#0f8a5f; border-color:#0f8a5f;}         /* 线下现付 绿 */
.rk-chans button:not(.sel):hover{border-color:var(--cyan); color:var(--cyan); background:#f2fafd;}

.rk-actions{display:flex; gap:10px; margin-top:6px;}
.rk-btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; border-radius:11px;
  font-size:14px; font-weight:800; cursor:pointer; padding:10px 22px; border:1px solid transparent;
  transition:.18s; line-height:1.4;}
.rk-btn.primary{background:var(--grad); color:#fff; box-shadow:0 6px 20px rgba(8,94,128,.3);}
.rk-btn.primary:hover{filter:brightness(1.08); transform:translateY(-1px); box-shadow:0 8px 26px rgba(8,94,128,.42);}
.rk-btn.ghost{background:#fff; color:var(--text); border-color:var(--line-strong);}
.rk-btn.ghost:hover{border-color:var(--cyan); color:var(--cyan); background:#f2fafd;}
.rk-btn.sm{padding:7px 14px; font-size:12.5px; border-radius:9px;}
.rk-btn .kbd{font-size:11px; background:rgba(255,255,255,.2); border-radius:5px; padding:1px 7px; border:1px solid rgba(255,255,255,.3);}
.rk-err{color:var(--red); font-size:12.5px; margin-top:10px; min-height:16px; font-weight:600;}

/* ── 台账栏 ── */
.rk-ledgerbar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:4px 0 12px;}
.rk-ledgercount{margin-left:auto; font-size:12px; color:var(--muted); font-weight:700;}
.rk-seg{display:flex; background:#e6f0f5; border-radius:10px; padding:3px; border:1px solid var(--line);}
.rk-seg button{border:0; background:transparent; padding:5px 14px; border-radius:8px; font-size:12.5px;
  font-weight:700; color:var(--muted); cursor:pointer;}
.rk-seg button.on{background:#fff; color:var(--cyan); box-shadow:0 2px 8px rgba(8,94,128,.14);}

/* 台账表 */
.rk-ledger table{width:100%; border-collapse:collapse; font-size:12.8px;}
.rk-ledger th{text-align:left; color:var(--muted); font-weight:700; font-size:11.5px; padding:6px 8px;
  border-bottom:1.5px solid var(--line-strong); white-space:nowrap;}
.rk-ledger td{padding:7px 8px; border-bottom:1px solid #e3eef3; vertical-align:middle;}
.rk-ledger tr:hover td{background:#f2fafd;}
.rk-ledger .room{font-weight:900; color:var(--text);}
.rk-ledger .name{font-weight:700;}
.rk-ledger .phone{color:var(--dim); font-size:11px;}
.rk-ledger .amt{font-weight:900; text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap;}
.rk-ledger .time{color:var(--dim); font-size:11px; white-space:nowrap;}
.rk-ledger .rmk{color:var(--dim); font-size:11.5px; max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.rk-empty{padding:22px; text-align:center; color:var(--dim); font-size:13px; border:1px dashed var(--line-strong);
  border-radius:12px; background:#f7fbfd;}
.rk-del{border:1px solid var(--line); background:#fff; color:var(--muted); border-radius:8px; width:26px; height:26px;
  cursor:pointer; font-size:13px; line-height:1;}
.rk-del:hover{border-color:var(--red); color:var(--red); background:#fff1f1;}

/* 迷你分段(录单房型) */
.rk-seg.mini button{padding:5px 13px; font-size:12.5px;}

/* 房型小徽章(台账) */
.rt{display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:800; border-radius:7px;
  padding:1px 8px; white-space:nowrap;}
.rt-game{background:#efe8ff; color:#5b21b6; border:1px solid #d9cbf6;}   /* 电竞房 紫 */
.rt-biz{background:#eef2f7; color:#475569; border:1px solid #d3dce6;}    /* 商务房 灰蓝 */

/* 渠道小徽章 */
.ch{display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:800; border-radius:7px;
  padding:1px 8px; white-space:nowrap;}
.ch-mt{background:#fff4d6; color:#8a5a00; border:1px solid #f0d078;}
.ch-ctrip{background:#e6f0ff; color:#1a5bb5; border:1px solid #bcd4f2;}
.ch-dy{background:#ececf0; color:#30303a; border:1px solid #cfcfd8;}
.ch-fz{background:#fff0e0; color:#b35500; border:1px solid #f2d0a8;}
.ch-xcx{background:#e0f2fb; color:#0a6d8f; border:1px solid #b0dcec;}
.ch-off{background:#e6f5ee; color:#0c6e4a; border:1px solid #b5e0cc;}

/* ── 交班 ── */
.rk-shift .line{display:flex; justify-content:space-between; align-items:center; padding:7px 4px;
  border-bottom:1px dashed #e0ecf2; font-size:13px;}
.rk-shift .line .k{color:var(--muted); display:inline-flex; align-items:center; gap:6px;}
.rk-shift .line .v{font-weight:800; font-variant-numeric:tabular-nums;}
.rk-shift .sum{display:flex; justify-content:space-between; padding:9px 4px 2px; font-weight:900; font-size:15px;}
.rk-shift .sum .v{color:#0c5b42;}
.rk-shift .sub{display:flex; justify-content:space-between; padding:4px 4px 6px; font-size:12px; color:var(--cyan); font-weight:700;}
.rk-shift .none{color:var(--dim); font-size:12.5px; padding:8px 4px;}

/* ── 对账演示 ── */
.rk-lead{font-size:12.5px; color:var(--muted); line-height:1.75; margin:0 0 12px;}
.rk-lead b{color:var(--cyan);}
.rk-demo{margin-top:12px; display:flex; flex-direction:column; gap:8px;}
.rk-demo .row{display:flex; justify-content:space-between; gap:8px; align-items:center; padding:8px 11px;
  border-radius:9px; font-size:12.8px;}
.rk-demo .row .o{font-weight:800; font-variant-numeric:tabular-nums;}
.rk-demo .row .t{color:var(--muted); font-size:11.5px;}
.rk-demo .ok{background:#e9f8f1; border:1px solid #bfe6d3;}
.rk-demo .ok .o{color:#0c6e4a;}
.rk-demo .miss{background:#fff1f1; border:1px solid #f2c4c4;}
.rk-demo .miss .o{color:#b3263a;}
.rk-demo .stat{background:#fff8ea; border:1px solid #f0dfb4; font-weight:800;}
.rk-demo .hint{font-size:11.5px; color:var(--dim); padding:2px 4px; line-height:1.6;}
.rk-old{margin-top:12px; font-size:12px; color:var(--muted); line-height:1.8; background:#f4f8fa;
  border-radius:10px; padding:9px 12px; border:1px solid var(--line);}
.rk-old b{color:var(--amber);}

/* ── 导出 ── */
.rk-exprow{display:flex; gap:10px; flex-wrap:wrap; margin:6px 0 4px;}
.rk-foot{font-size:11.5px; color:var(--dim); line-height:1.8; margin:10px 0 0;}
.rk-foot b{color:var(--cyan);}

/* ── 房态板选房 ── */
.rk-field label .rk-stat{font-weight:600; color:var(--dim); margin-left:4px;}
.rk-field label .rk-stat b{color:var(--cyan);}
#rkRooms .rk-rooms-meta{font-size:11.5px; color:var(--dim); margin:2px 0 8px;}
#rkRooms .rk-rooms-meta b{color:var(--text);}
/* 房态板磁贴:加大、竖排,房号+状态角标在上、房型在下 —— 尽量显示所有内容 */
.rk-roomgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(126px,1fr)); gap:9px;}
.rk-room{display:flex; flex-direction:column; gap:5px; border:1.5px solid var(--line); background:#fff;
  border-radius:12px; padding:8px 10px 7px; cursor:pointer; transition:.14s; text-align:left; font-family:inherit;}
.rk-room .top{display:flex; align-items:center; justify-content:space-between; gap:6px; width:100%;}
.rk-room .no{font-weight:900; font-size:17px; color:var(--text); font-variant-numeric:tabular-nums; line-height:1;}
.rk-room .rt{font-size:11px; padding:1px 8px; border-radius:7px; align-self:flex-start; line-height:1.7;}
/* 状态角标:每间都显示(含空房),胶囊实底便于一眼扫状态 */
.rk-room .st{font-size:10.5px; font-weight:800; line-height:1; padding:3px 7px; border-radius:999px; white-space:nowrap;}
.rk-room.free{border-color:#bfe3d5; background:#f0faf6;}
.rk-room.free .st{background:#d2efe3; color:#0b7a50;}
.rk-room.occ{border-color:#f2c4c4; background:#fff1f1;}
.rk-room.occ .st{background:#f7cfcf; color:#ad2436;}
.rk-room.dirty{border-color:#f0dfa8; background:#fff8ea;}
.rk-room.dirty .st{background:#f3e3b6; color:#965d00;}
.rk-room.book{border-color:#b0dcec; background:#e6f4fb;}
.rk-room.book .st{background:#c3e4f3; color:#075b7a;}
/* 脏房「打扫完成」芯片:点它当天清回空房(点房号本体仍是选来录单) */
.rk-room .rk-clean{display:block; width:100%; text-align:center; margin-top:1px;
  border:1.5px dashed #e6c96f; border-radius:8px; padding:4px 0; background:#fdf3d7;
  color:#8a6a00; font-size:11.5px; font-weight:800; cursor:pointer; line-height:1.5;}
.rk-room .rk-clean:hover{background:#eef8ec; border-color:#8fbf6a; border-style:solid; color:#2e7d32;}
.rk-room:hover{transform:translateY(-1px); box-shadow:var(--shadow); border-color:var(--cyan);}
.rk-room.sel{border-color:var(--cyan); background:#fff; box-shadow:0 0 0 3px rgba(14,127,166,.18);}
.rk-room.sel .no{color:var(--cyan);}
/* 图例 + 操作钮(编辑 / 手输) */
.rk-roombar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:9px;}
.rk-legend{display:flex; gap:12px; flex-wrap:wrap; font-size:11px; color:var(--dim);}
.rk-lg{display:inline-flex; align-items:center; gap:4px;}
.rk-lg::before{content:""; width:9px; height:9px; border-radius:3px;}
.lg-free::before{background:#34c38f;}
.lg-occ::before{background:#ef7a7a;}
.lg-dirty::before{background:#e5b454;}
.lg-book::before{background:#55a6d8;}
.rk-roomacts{margin-left:auto; display:flex; gap:2px; flex-wrap:wrap; justify-content:flex-end;}
.rk-lnk{border:0; background:transparent; color:var(--cyan); font-size:12px; font-weight:700; cursor:pointer;
  padding:3px 8px; border-radius:7px;}
.rk-lnk:hover{background:#e0f2fb;}
.rk-roommanual{margin-top:9px; padding:10px 12px; border:1px dashed var(--line-strong);
  border-radius:11px; background:#f0f8fb;}
.rk-roommanual .rk-in{max-width:220px; background:#fff;}
/* 编辑房号/房型(本店房册) */
.rk-roomedit{margin-top:9px; padding:10px 12px; border:1px dashed var(--cyan); border-radius:11px;
  background:#f2fafd;}
.rk-roomedit-t{font-size:11.5px; color:var(--dim); line-height:1.6; margin-bottom:8px;}
.rk-roomedit-t b{color:var(--text);}
.rk-roomedit-list{display:grid; grid-template-columns:repeat(auto-fill,minmax(218px,1fr)); gap:6px;
  max-height:216px; overflow:auto; padding:2px;}
.rk-editrow{display:flex; align-items:center; gap:6px; border:1px solid var(--line); background:#fff;
  border-radius:9px; padding:4px 6px;}
.rk-editrow .rk-edit-no{flex:0 0 74px; font-weight:800; font-size:13.5px; font-variant-numeric:tabular-nums;
  color:var(--text); border:1px solid transparent; background:transparent; border-radius:7px;
  padding:4px 6px; font-family:inherit; cursor:text;}
.rk-editrow .rk-edit-no:hover{border-color:var(--line-strong);}
.rk-editrow .rk-edit-no:focus{outline:none; border-color:var(--cyan); background:#fff;}
.rk-editrow .rk-seg{flex:1; min-width:0;}
.rk-editrow .rk-seg button{padding:4px 2px; font-size:11.5px;}
.rk-del{margin-left:auto; flex:none; border:0; background:transparent; color:#c62828; font-size:13px;
  cursor:pointer; border-radius:6px; padding:2px 7px; line-height:1;}
.rk-del:hover{background:#ffe3e3;}
.rk-roomadd{display:flex; align-items:center; gap:7px; margin-top:9px;}
.rk-roomadd .rk-in{max-width:150px;}
.rk-roomadd .rk-btn{flex:none;}

/* ── 技术服务 · 悬浮客服 ── */
.sv-fab{position:fixed; right:22px; bottom:22px; z-index:180; display:flex; align-items:center; gap:7px;
  background:var(--grad); color:#fff; border:0; border-radius:999px; padding:11px 18px; cursor:pointer;
  font-size:13.5px; font-weight:800; box-shadow:0 10px 28px rgba(8,94,128,.38); transition:.18s; font-family:inherit;}
.sv-fab:hover{transform:translateY(-2px); filter:brightness(1.07);}
.sv-fab svg{flex:none;}
.sv-panel{position:fixed; right:22px; bottom:80px; z-index:181; width:min(366px,calc(100vw - 28px));
  height:min(560px,calc(100vh - 120px)); display:flex; flex-direction:column; background:#fff;
  border:1px solid var(--line); border-radius:18px; box-shadow:0 24px 60px rgba(8,50,70,.24); overflow:hidden;}
.sv-head{display:flex; align-items:center; gap:9px; padding:12px 14px;
  background:linear-gradient(135deg,#0e7490,#0f8ba8); color:#fff;}
.sv-dot{width:9px;height:9px;border-radius:50%;background:#7ef0c0;box-shadow:0 0 8px #7ef0c0;flex:none;}
.sv-name{font-size:13.5px; font-weight:900; letter-spacing:.2px;}
.sv-sub{font-size:10.5px; opacity:.82;}
.sv-id{margin-left:auto; font-size:10.5px; background:rgba(255,255,255,.16); border-radius:999px;
  padding:2px 9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:120px;}
.sv-x{border:0; background:transparent; color:#fff; font-size:15px; cursor:pointer; padding:2px 5px; border-radius:7px; line-height:1;}
.sv-x:hover{background:rgba(255,255,255,.2);}
.sv-msgs{flex:1; overflow-y:auto; padding:13px 12px 6px; display:flex; flex-direction:column; gap:9px;
  background:#f4f9fc;}
.sv-welcome{font-size:11.5px; color:var(--dim); line-height:1.7; margin:2px 4px 2px; padding:8px 11px;
  background:#fff; border:1px dashed var(--line-strong); border-radius:11px;}
.sv-welcome b{color:var(--cyan);}
.sv-b{max-width:82%; display:flex; flex-direction:column; gap:3px;}
.sv-b.user{align-self:flex-end; align-items:flex-end;}
.sv-b.bot{align-self:flex-start; align-items:flex-start;}
.sv-bubble{padding:8px 11px; border-radius:13px; font-size:12.8px; line-height:1.55; word-break:break-word;
  box-shadow:0 2px 6px rgba(8,94,128,.07);}
.sv-b.user .sv-bubble{background:var(--grad); color:#fff; border-bottom-right-radius:4px;}
.sv-b.bot .sv-bubble{background:#fff; color:var(--text); border:1px solid var(--line); border-bottom-left-radius:4px;}
.sv-meta{font-size:10px; color:var(--dim);}
.sv-b.user .sv-meta{color:#a9cbd9;}
.sv-b.bot .sv-by{font-size:10.5px; font-weight:800; color:var(--cyan);}
.sv-voice{display:inline-flex; align-items:center; gap:8px; cursor:pointer;}
.sv-voice .play{width:26px;height:26px;border-radius:50%;background:#fff;color:var(--cyan);display:inline-flex;
  align-items:center;justify-content:center;font-size:11px;border:1px solid var(--line-strong);flex:none;}
.sv-voice .bars{display:inline-flex; align-items:flex-end; gap:2px; height:16px;}
.sv-voice .bars i{width:3px; background:var(--cyan); border-radius:2px; display:inline-block;
  animation:svp 1s ease-in-out infinite;}
.sv-voice .bars i:nth-child(1){height:6px} .sv-voice .bars i:nth-child(2){height:12px;animation-delay:.15s}
.sv-voice .bars i:nth-child(3){height:9px;animation-delay:.3s} .sv-voice .bars i:nth-child(4){height:14px;animation-delay:.45s}
@keyframes svp{0%,100%{transform:scaleY(.6)}50%{transform:scaleY(1.2)}}
.sv-voice .len{font-size:11px; color:var(--cyan); font-weight:700; font-variant-numeric:tabular-nums;}
.sv-at{display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--line);
  border-radius:11px; padding:7px 9px; max-width:240px;}
.sv-at img{width:44px; height:44px; object-fit:cover; border-radius:7px; flex:none; border:1px solid var(--line);}
.sv-at .ic{width:36px;height:36px;border-radius:8px;background:#e0f2fb;color:#0a6d8f;display:flex;
  align-items:center;justify-content:center;font-size:16px;flex:none;}
.sv-at .nm{font-size:11.5px; font-weight:700; color:var(--text); word-break:break-all; line-height:1.3;}
.sv-at .sz{font-size:10px; color:var(--dim);}
.sv-quick{display:flex; gap:6px; flex-wrap:wrap; padding:8px 12px 2px; background:#fff;}
.sv-quick button{border:1px solid var(--line-strong); background:#fff; color:var(--cyan); font-size:11px;
  font-weight:700; border-radius:999px; padding:3px 10px; cursor:pointer;}
.sv-quick button:hover{background:#e0f2fb;}
.sv-composer{border-top:1px solid var(--line); padding:8px 10px; background:#fff; display:flex;
  flex-direction:column; gap:6px;}
.sv-tools{display:flex; gap:2px;}
.sv-tool{border:0; background:transparent; font-size:17px; cursor:pointer; padding:3px 7px; border-radius:8px; line-height:1;}
.sv-tool:hover{background:#eef5f9;}
.sv-tool.on{background:#fff1f1;}
.sv-inputrow{display:flex; gap:7px; align-items:center;}
.sv-inputrow input{flex:1; min-width:0; border:1.5px solid var(--line-strong); border-radius:10px; padding:8px 11px;
  font-size:12.8px; outline:none; background:#f7fbfd; color:var(--text); font-family:inherit;}
.sv-inputrow input:focus{border-color:var(--cyan); background:#fff; box-shadow:0 0 0 3px rgba(14,127,166,.12);}
.sv-send{border:0; background:var(--grad); color:#fff; font-weight:800; font-size:12.8px; border-radius:10px;
  padding:8px 14px; cursor:pointer;}
.sv-send:disabled{opacity:.45; cursor:default;}
.sv-rec{display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--red); font-weight:800;}
.sv-rec .blink{animation:svblink 1s infinite;}
@keyframes svblink{0%,100%{opacity:1}50%{opacity:.2}}
@media (max-width:480px){.sv-panel{right:10px; bottom:74px; width:calc(100vw - 20px); height:calc(100vh - 96px);} .sv-fab{right:12px; bottom:14px;}}

/* ── 房间操作条:点在住的房 → 续住 / 延时退房 / 退房 ── */
.rk-room.ops{border-color:var(--amber); box-shadow:0 0 0 3px rgba(217,119,6,.16);}
.rk-room.ops .no{color:var(--amber);}
.rk-ops{margin-top:9px; border:1.5px solid var(--amber); border-radius:11px; background:#fffdf5;
  padding:9px 11px; box-shadow:var(--shadow);}
.rk-ops-h{display:flex; align-items:center; gap:7px; font-size:13px; color:var(--text); flex-wrap:wrap;}
.rk-ops-h b{font-size:16px; font-variant-numeric:tabular-nums;}
.rk-ops-h .who{font-weight:800; color:var(--text);}
.rk-ops-h .phone{display:block; font-size:10.5px; font-weight:400; color:var(--dim);}
.rk-ops-meta{font-size:11.5px; color:var(--muted); margin-top:5px; line-height:1.5;}
.rk-ops-meta b{color:var(--amber);}
.rk-ops-acts{display:flex; gap:7px; flex-wrap:wrap; margin-top:8px;}
.rk-ops-acts button{border:1.5px solid var(--line-strong); background:#fff; border-radius:9px;
  padding:6px 13px; font-size:12px; font-weight:700; color:var(--text); cursor:pointer; transition:.15s;}
.rk-ops-acts button:not(:disabled):hover{border-color:var(--green); color:var(--green); background:#f3fbf7;}
.rk-ops-acts button.warn{border-color:#f0b3b3; color:var(--red); background:#fff;}
.rk-ops-acts button.warn:hover{border-color:var(--red); color:#fff; background:var(--red);}
.rk-ops-acts button[disabled]{opacity:.45; cursor:default;}
/* 操作条内「＋ 其他消费」展开块:已记清单 + 记一笔(日期/名称/金额) */
.rk-ops-ext{margin-top:9px; border-top:1.5px dashed #f0dfa8; padding-top:8px;}
.rk-ops-ext-t{font-size:11px; color:#7a5c00; line-height:1.6; margin-bottom:6px;}
.rk-ext-list{display:flex; flex-direction:column; gap:4px; margin-bottom:8px;}
.rk-ext-item{display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--line);
  border-radius:8px; padding:3px 8px; font-size:12px;}
.rk-ext-item .k{font-weight:700; color:var(--text);}
.rk-ext-item .d{color:var(--dim); font-size:11px; font-variant-numeric:tabular-nums;}
.rk-ext-item .v{margin-left:auto; font-weight:800; color:#b45309; font-variant-numeric:tabular-nums;}
.rk-ops-ext .rk-del{width:22px;height:22px;margin-left:6px;border:0;background:transparent;color:#c62828;font-size:12px;}
.rk-ops-ext .rk-del:hover{background:#ffe3e3;}
.rk-ext-add{display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-top:2px;}
.rk-ext-add .rk-in{padding:7px 9px; font-size:12.5px; background:#fff; flex:1 1 0; min-width:0;}
.rk-ext-add .rk-ext-date{flex:0 0 142px; width:142px;}
.rk-ext-add .rk-ext-item-i{flex:1.6 1 120px;}
.rk-ext-add .rk-ext-amt{flex:0 0 84px; width:84px;}
.rk-ext-add .rk-btn{flex:none;}

/* ── 改单:编辑横幅 + 台账行「改」钮 + 其他消费附加行 ── */
.rk-editnote{margin:0 0 10px; padding:8px 12px; background:#fff8ea; border:1.5px solid #e6c96f;
  border-radius:11px; font-size:12.5px; color:#7a5c00; line-height:1.6;}
.rk-editnote b{color:#b45309;}
.rk-ledger .rk-acts{white-space:nowrap;}
.rk-ledger .rk-act{border:1px solid var(--line-strong); background:#eef7fb; color:var(--cyan);
  border-radius:8px; height:26px; padding:0 9px; margin-right:4px; font-size:12px; font-weight:700;
  cursor:pointer; line-height:1; vertical-align:middle;}
.rk-ledger .rk-act:hover{background:var(--cyan); color:#fff; border-color:var(--cyan);}
/* 「其他消费」附加行:淡青底,房号/金额用青色区别于房费单 */
.rk-ledger tr.rk-extra td{background:#f2fafd; border-top:1px dashed var(--line-strong);}
.rk-ledger tr.rk-extra:hover td{background:#e6f4fb;}
.rk-ledger tr.rk-extra .room{color:var(--cyan);}
.rk-ledger tr.rk-extra .amt{color:#0a6d8f;}
/* 来源徽章:其他消费(青,区别于六大渠道色) */
.ch-x{background:#e0f2fb; color:#075b7a; border:1px solid #a9d6ea;}
.rk-ledger .rk-foot .rk-x-note{color:#0a6d8f; font-weight:700;}
/* 交班:其他消费明细行(琥珀,区别于平台渠道行) */
.rk-shift .sub.x{color:#b45309; font-weight:800;}
