/* ============================================================
 * 睡眠管理中心 · PC 店面会员管理端（v0.2 · 高端疗愈 SPA 感）
 * 统一设计令牌 + 组件样式（深灰 / 暖橙 / 夜空靛 + 线性 SVG 图标）
 * 仅视觉样式，不含任何业务逻辑。
 * 令牌按 ARCHITECTURE-INCREMENT.md §6.2（PC）升级。
 * ============================================================ */
:root{
  /* 文字 */
  --ink:#333333; --ink-2:#6B6B73; --muted:#9A958C;
  /* 品牌色（保留，不换色只换质感） */
  --orange:#D97706; --orange-2:#B45309; --orange-soft:#FBEFE0;
  --indigo:#1F2A44; --indigo-2:#2B2B2F;
  /* 背景 / 表面 */
  --bg:#F6F4F1; --card:#FFFFFF;
  /* 描边：细描边（SPA 感核心） */
  --line:#ECE8E1; --line-soft:#F3EFE9; --line-2:#EAE6E0;
  /* 状态色 */
  --ok:#2E7D5B; --ok-soft:#E7F2EC;
  --info:#3A5BA0; --info-soft:#E8EEF8;
  --warn:#B45309; --warn-soft:#FBEFE0;
  --gray:#9A958C; --gray-soft:#F0EEEA; --danger:#C0504D;
  /* 暖金（衬线标题点缀） */
  --gold:#C9A24B;

  /* 字体栈：标题衬线，正文无衬线 */
  --font:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  --serif:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun",serif;

  /* 间距 / 圆角（舒展） */
  --sp:8px; --gap:24px;
  --r-card:20px; --r-sm:12px; --r-pill:999px; --r-xl:28px;

  /* 分层柔阴影（SPA 感核心） */
  --sh-1:0 1px 2px rgba(31,42,68,.04), 0 6px 22px rgba(31,42,68,.07);
  --sh-2:0 14px 40px rgba(31,42,68,.10), 0 2px 8px rgba(31,42,68,.05);
  --sh-3:0 22px 64px rgba(31,42,68,.16);
  /* 细描边 */
  --hair:1px solid var(--line-soft);

  /* 布局 */
  --sidebar-w:240px;
}

/* 衬线标题工具类（仅用于区块大标题 / 品牌字，不滥用） */
.serif-title{ font-family:var(--serif); font-weight:600; letter-spacing:.5px; }

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-size:14px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{ color:var(--orange); text-decoration:none; }
a:hover{ color:var(--orange-2); }
.muted{ color:var(--muted); }
svg{ display:block; }
.ic{
  width:19px; height:19px;
  stroke:currentColor; stroke-width:1.7; fill:none;
  stroke-linecap:round; stroke-linejoin:round; flex:0 0 auto;
}
.ic-sm{ width:15px; height:15px; }

/* ===================== 布局外壳 ===================== */
.layout{ display:flex; min-height:100vh; }

/* 侧边栏：夜空靛深底 */
.sidebar{
  width:var(--sidebar-w); flex:0 0 auto;
  background:linear-gradient(180deg,var(--indigo),#27324E);
  color:#fff; display:flex; flex-direction:column;
  position:sticky; top:0; align-self:flex-start; height:100vh;
}
.sidebar .logo{
  display:flex; align-items:center; gap:11px;
  padding:18px 18px; border-bottom:1px solid rgba(255,255,255,.08);
}
.sidebar .logo .mk{
  width:34px; height:34px; border-radius:10px; flex:0 0 auto;
  background:linear-gradient(150deg,#FCEFD6,#E9B873); color:var(--indigo);
  display:flex; align-items:center; justify-content:center;
}
.sidebar .logo .txt{ display:flex; flex-direction:column; line-height:1.2; }
.sidebar .logo .txt b{ font-size:14px; font-weight:700; }
.sidebar .logo .txt span{ font-size:10px; opacity:.7; margin-top:2px; }

.sidebar .nav{
  display:flex; flex-direction:column; gap:2px;
  padding:14px 12px; flex:1; overflow-y:auto;
}
.nv{
  display:flex; align-items:center; gap:11px;
  padding:10px 12px; border-radius:10px;
  color:rgba(255,255,255,.72); font-size:13px;
  position:relative; transition:background .15s,color .15s;
}
.nv .ic{ width:18px; height:18px; }
.nv:hover{ background:rgba(255,255,255,.07); color:#fff; }
.nv.on{ background:rgba(217,119,6,.18); color:#fff; font-weight:600; }
.nv.on::before{
  content:""; position:absolute; left:0; top:8px; bottom:8px; width:3px;
  border-radius:0 3px 3px 0; background:var(--orange);
}
.sidebar .side-foot{
  margin:0 12px 16px; padding-top:12px;
  border-top:1px solid rgba(255,255,255,.08);
  color:rgba(255,255,255,.65); font-size:11px;
  display:flex; align-items:center; gap:8px;
}
.sidebar .side-foot .av{
  width:26px; height:26px; border-radius:50%; flex:0 0 auto;
  background:rgba(255,255,255,.18); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:600;
}

/* 主区域 */
.main{ flex:1; display:flex; flex-direction:column; min-width:0; background:var(--bg); }
.topbar{
  height:58px; flex:0 0 auto; background:#fff;
  border-bottom:1px solid var(--line);
  display:flex; align-items:center; padding:0 24px; gap:14px;
}
.crumb{ font-size:12.5px; color:var(--muted); display:flex; align-items:center; gap:6px; }
.crumb b{ color:var(--ink); font-weight:600; font-size:14px; }
.topbar .spacer{ flex:1; }
.store-switch{
  display:flex; align-items:center; gap:6px;
  background:var(--gray-soft); color:var(--indigo-2);
  font-size:12.5px; font-weight:600; padding:7px 14px;
  border-radius:var(--r-pill); border:1px solid var(--line);
}
.store-switch .ic{ color:var(--muted); }
.store-switch select{
  background:transparent; border:none; padding:0; margin:0;
  color:var(--indigo-2); font:inherit; font-weight:600; cursor:pointer; max-width:180px;
}
.user{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-2); }
.user .av{
  width:30px; height:30px; border-radius:50%; flex:0 0 auto;
  background:linear-gradient(135deg,#FCEFD6,#E9B873); color:var(--indigo);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:12px;
}
.logout{
  color:var(--muted); font-size:13px; display:flex; align-items:center; gap:4px;
  margin-left:2px;
}
.logout:hover{ color:var(--orange); }

.content{ flex:1; padding:22px 26px; }

/* ===================== 页面标题 ===================== */
.page-title{
  font-family:var(--serif); font-size:22px; font-weight:600; color:var(--ink);
  margin:2px 0 18px; display:flex; align-items:center; gap:10px; flex-wrap:wrap;
}
.page-title .sub{ font-size:12.5px; color:var(--muted); font-weight:400; }
.page-actions{ margin-left:auto; display:flex; gap:10px; align-items:center; }

/* 页面头部（SPA：衬线大标题 + 操作区） */
.page-head{ display:flex; align-items:center; gap:14px; margin:2px 0 18px; flex-wrap:wrap; }
.page-head .title{ font-family:var(--serif); font-size:22px; font-weight:600; color:var(--ink); }
.page-head .sub{ font-size:12.5px; color:var(--muted); }
.page-head .acts{ margin-left:auto; display:flex; gap:10px; align-items:center; }

/* ===================== 卡片 / 面板 ===================== */
.card{
  background:var(--card); border:var(--hair);
  border-radius:var(--r-card); padding:22px 24px; margin-bottom:18px;
  box-shadow:var(--sh-1); overflow:hidden;
}
.card > table{ width:100%; }
.panel{
  background:var(--card); border:var(--hair);
  border-radius:var(--r-card); box-shadow:var(--sh-1);
  margin-bottom:18px; overflow:hidden;
}
.panel .ph{
  padding:13px 18px; border-bottom:1px solid var(--line);
  display:flex; align-items:center; gap:8px;
  font-size:14px; font-weight:700; color:var(--ink);
}
.panel .ph .more{
  margin-left:auto; font-size:12px; color:var(--muted); font-weight:400;
  display:flex; align-items:center; gap:2px;
}
.panel .pb{ padding:6px 18px 14px; }

/* ===================== 按钮 ===================== */
.btn, .btn-primary, button{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  background:var(--orange); color:#fff; border:none;
  padding:9px 18px; border-radius:var(--r-pill); cursor:pointer;
  font-size:14px; font-weight:600; font-family:inherit;
  box-shadow:0 4px 12px rgba(217,119,6,.22);
  transition:background .15s,box-shadow .15s,transform .05s;
}
.btn:hover, button:hover, .btn-primary:hover{ background:var(--orange-2); }
.btn:active, button:active{ transform:translateY(1px); }
a.btn{ text-decoration:none; }

.btn-ghost, .btn.ghost, button.ghost{
  background:#fff; color:var(--orange); border:1px solid var(--orange); box-shadow:none;
}
.btn-ghost:hover, .btn.ghost:hover, button.ghost:hover{ background:var(--orange-soft); color:var(--orange-2); }

.btn-sm, .btn.sm, button.sm{
  padding:6px 13px; font-size:12.5px; box-shadow:0 2px 8px rgba(217,119,6,.18);
}
.btn-ok, .btn.ok, button.ok{ background:var(--ok); box-shadow:0 4px 12px rgba(46,125,91,.22); }
.btn-ok:hover, .btn.ok:hover, button.ok:hover{ background:#256347; }
.btn-danger, .btn.danger, button.danger{ background:var(--danger); box-shadow:0 4px 12px rgba(192,80,77,.2); }
.btn-danger:hover, .btn.danger:hover, button.danger:hover{ background:#a84340; }

/* ===================== 表单控件 ===================== */
input, select, textarea{
  padding:9px 12px; border:1px solid var(--line); border-radius:var(--r-sm);
  font-size:14px; font-family:inherit; color:var(--ink); background:#fff;
  min-width:120px; transition:border-color .15s,box-shadow .15s,background .15s;
}
input:focus, select:focus, textarea:focus{
  outline:none; border-color:var(--orange); background:#fff;
  box-shadow:0 0 0 3px var(--orange-soft);
}
.row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
.field{ margin-bottom:14px; }
.field label{ display:block; margin-bottom:6px; color:var(--ink-2); font-size:13px; font-weight:500; }

/* ===================== 表格 ===================== */
table{ width:100%; border-collapse:collapse; font-size:13.5px; background:#fff; }
th, td{ padding:13px 16px; text-align:left; vertical-align:middle; }
th{
  background:#F3F0EA; color:var(--ink-2); font-weight:700; font-size:12.5px;
  border-bottom:1px solid var(--line-2); white-space:nowrap; letter-spacing:.3px;
}
td{ border-bottom:1px solid var(--line-2); color:var(--ink-2); }
tbody tr:nth-child(even) td{ background:#FCFBF9; }
tbody tr:last-child td{ border-bottom:none; }
tbody tr:hover td{ background:#FBF1E6; }
.card > table th:first-child, .card > table td:first-child{ padding-left:24px; }
.card > table th:last-child, .card > table td:last-child{ padding-right:24px; }

/* 会员单元格（头像 + 昵称） */
.mem{ display:flex; align-items:center; gap:10px; }
.mem .av{
  width:34px; height:34px; border-radius:50%; flex:0 0 auto;
  background:linear-gradient(135deg,#E8E3DA,#D6CFC3); color:var(--ink-2);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px;
}
.mem b{ font-size:13.5px; color:var(--ink); font-weight:600; }
.mem small{ font-size:11px; color:var(--muted); display:block; }

/* 等级 / 会员标签 */
.lv{ font-size:11px; font-weight:600; padding:3px 10px; border-radius:var(--r-pill); display:inline-block; }
.lv.gold{ background:var(--warn-soft); color:var(--orange-2); }
.lv.silver{ background:var(--info-soft); color:var(--info); }
.lv.normal{ background:var(--gray-soft); color:var(--gray); }

/* ===================== 状态徽章（SPA：浅底 + 同色深字） ===================== */
.badge, .tag{
  font-size:11.5px; font-weight:600; padding:3px 11px; border-radius:var(--r-pill);
  white-space:nowrap; display:inline-block; line-height:1.4;
}
.badge-warn, .tag.warn, .tag.wait{ background:var(--warn-soft); color:var(--warn); }
.badge-info, .tag.info{ background:var(--info-soft); color:var(--info); }
.badge-ok, .tag.ok{ background:var(--ok-soft); color:var(--ok); }
.badge-gray, .tag.gray, .tag.danger{ background:var(--gray-soft); color:var(--gray); }

/* ===================== 数据卡（概览） ===================== */
.stat-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:16px; margin-bottom:18px;
}
.stat{
  background:var(--card); border:var(--hair);
  border-radius:var(--r-card); padding:18px 20px;
  box-shadow:var(--sh-1); position:relative; overflow:hidden;
}
.stat .icw{
  width:38px; height:38px; border-radius:11px; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  margin-bottom:12px; background:var(--orange-soft); color:var(--orange);
}
.stat .num{ font-size:28px; font-weight:800; color:var(--ink); line-height:1; }
.stat .label{ font-size:12.5px; color:var(--muted); margin-top:6px; }

/* ===================== 分页 ===================== */
.pager{ margin-top:14px; display:flex; gap:8px; align-items:center; justify-content:flex-end; flex-wrap:wrap; }

/* ===================== 筛选 / 标签页 ===================== */
.filter{ display:flex; gap:12px; align-items:center; margin:14px 0; flex-wrap:wrap; }
.fld{
  display:flex; align-items:center; gap:6px; background:#fff;
  border:1px solid var(--line); border-radius:var(--r-pill);
  padding:8px 14px; font-size:13px; color:var(--muted);
}
.fld.sel{ color:var(--ink); border-color:var(--orange); background:var(--orange-soft); }
.tabs{
  display:flex; gap:18px; font-size:13.5px; color:var(--muted);
  border-bottom:1px solid var(--line); padding:0 2px 10px; margin:8px 0 14px;
}
.tabs .on{ color:var(--ink); font-weight:700; border-bottom:2px solid var(--orange); padding-bottom:8px; margin-bottom:-12px; }

/* 工具栏（搜索 + 筛选，新增页用） */
.toolbar{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.toolbar input[type=text], .toolbar input[type=date], .toolbar select{ min-width:160px; }

/* ===================== 头像（新增页用） ===================== */
.avatar{
  width:44px; height:44px; border-radius:50%; object-fit:cover; flex:0 0 auto;
  background:linear-gradient(135deg,#E8EEF8,#C9D6EC); color:var(--info);
  display:inline-flex; align-items:center; justify-content:center; font-weight:700; font-size:16px;
}
.stars{ color:var(--orange); font-size:13px; letter-spacing:1px; }

/* 单位格内联展示（技师/房间/床位） */
.assign-cell{ display:flex; flex-direction:column; gap:2px; font-size:12.5px; color:var(--ink-2); }
.assign-line{ font-size:12.5px; color:var(--ink-2); line-height:1.6; }

/* ===================== 房间卡片网格（房间床位页） ===================== */
.room-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:16px; }
.room-card{
  background:var(--card); border:var(--hair); border-radius:var(--r-card);
  box-shadow:var(--sh-1); padding:18px 20px; transition:box-shadow .15s, border-color .15s;
}
.room-card.on{ border-color:rgba(217,119,6,.5); box-shadow:var(--sh-2); }
.room-card .rn{ font-family:var(--serif); font-size:20px; font-weight:600; color:var(--indigo); }
.room-card .rt{ font-size:12px; color:var(--orange-2); margin-top:2px; font-weight:600; }
.room-card .meta{ font-size:12px; color:var(--muted); margin-top:10px; display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.room-card .acts{ margin-top:12px; display:flex; gap:8px; }

/* ===================== 床位网格（房间床位页） ===================== */
.bed-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:12px; margin-top:6px; }
.bed{
  background:var(--card); border:var(--hair); border-radius:var(--r-sm);
  padding:14px 14px; box-shadow:var(--sh-1);
  display:flex; flex-direction:column; gap:10px;
}
.bed .bn{ font-family:var(--serif); font-size:16px; font-weight:600; color:var(--ink); }
.bed .row2{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.bed select{ min-width:0; padding:5px 8px; font-size:12px; }
.bed .del{ font-size:12px; color:var(--danger); cursor:pointer; background:none; border:none; padding:0; box-shadow:none; }
.bed .del:hover{ text-decoration:underline; }
/* 床位状态徽章（小） */
.b-free{ color:var(--ok); background:var(--ok-soft); }
.b-used{ color:var(--orange-2); background:var(--orange-soft); }
.b-mnt{ color:var(--gray); background:var(--gray-soft); }

/* ===================== 弹窗（SPA：柔阴影 + 衬线标题 + 分组） ===================== */
.modal-mask{
  position:fixed; inset:0; background:rgba(31,42,68,.42);
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px);
  display:none; align-items:center; justify-content:center; z-index:90;
}
.modal-mask.show{ display:flex; }
.modal{
  background:var(--card); border:var(--hair); border-radius:var(--r-card);
  padding:26px 28px; width:480px; max-width:92vw; max-height:88vh; overflow:auto;
  box-shadow:var(--sh-3);
}
.modal h3{ margin:0 0 4px; font-family:var(--serif); font-size:20px; font-weight:600; color:var(--ink); }
.modal .m-sub{ font-size:12.5px; color:var(--muted); margin-bottom:20px; }
.modal .field input, .modal .field select, .modal .field textarea{ width:100%; }
.modal .group{ background:var(--bg); border:var(--hair); border-radius:var(--r-sm); padding:14px 16px; margin-bottom:16px; }
.modal .group .gt{ font-size:12.5px; font-weight:700; color:var(--ink-2); margin-bottom:10px; }
.modal .acts{ display:flex; gap:10px; margin-top:22px; }
.modal .acts .btn{ flex:1; }

/* ===================== 提示 toast（保留 #toast） ===================== */
.toast{
  position:fixed; top:74px; left:50%; transform:translateX(-50%);
  background:var(--indigo); color:#fff; padding:11px 20px;
  border-radius:var(--r-sm); display:none; z-index:99;
  font-size:13.5px; box-shadow:var(--sh-2);
}

/* ============================================================
 * 移动端响应式（v0.4）：仅在文件末尾追加，原有 PC 规则零改动
 * 新增元素（汉堡按钮 / 抽屉遮罩）默认隐藏，PC 端不出现
 * ============================================================ */
.nav-toggle{ display:none; }
.nav-mask{ display:none; }

@media (max-width: 900px){
  /* 布局改为纵向，侧栏变抽屉 */
  .layout{ flex-direction:column; }
  .sidebar{
    position:fixed; top:0; left:0; bottom:0;
    width:min(82vw,300px); max-width:82vw; height:100vh;
    transform:translateX(-100%); transition:transform .25s ease;
    z-index:100; box-shadow:var(--sh-3);
  }
  body.nav-open .sidebar{ transform:translateX(0); }

  /* 遮罩 */
  .nav-mask{ position:fixed; inset:0; background:rgba(20,26,42,.5); z-index:95; }
  body.nav-open .nav-mask{ display:block; }

  /* 汉堡按钮：触控目标 44px，纯 CSS 三条杠 */
  .nav-toggle{
    display:flex; align-items:center; justify-content:center;
    width:44px; height:44px; min-width:44px; min-height:44px;
    padding:0; border:none; background:transparent; box-shadow:none;
    color:var(--indigo-2); border-radius:10px; flex:0 0 auto;
  }
  .nav-toggle:hover{ background:rgba(31,42,68,.07); }
  .nav-toggle .bars{
    position:relative; display:block; width:20px; height:2px;
    background:var(--indigo-2); border-radius:2px;
  }
  .nav-toggle .bars::before, .nav-toggle .bars::after{
    content:""; position:absolute; left:0; width:20px; height:2px;
    background:var(--indigo-2); border-radius:2px;
  }
  .nav-toggle .bars::before{ top:-6px; }
  .nav-toggle .bars::after{ top:6px; }

  /* 顶栏精简，门店切换与退出仍可点 */
  .topbar{ padding:0 12px; gap:8px; }
  .crumb{ font-size:12px; }
  .crumb b{ font-size:13px; }
  .store-switch{ padding:6px 10px; font-size:12px; }
  /* 顶栏下拉：收敛到 ≤48vw，避免把顶栏挤出视口 */
  .store-switch select{ max-width:48vw; min-width:0; font-size:12px; }
  .user{ gap:6px; }

  /* 宽表格：overflow-x 放在表格外层容器 .card 上（不直接给 table），
     并中和 :176 的负 margin，避免负 margin 被裁切 */
  .content{ padding:16px 14px; min-width:0; }
  .card{ padding:16px; border-radius:16px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .card > table{ margin:0; width:100%; min-width:600px; }
  /* :244-245 首/末列额外 padding 收敛，避免放大行宽 */
  .card > table th:first-child, .card > table td:first-child{ padding-left:10px; }
  .card > table th:last-child,  .card > table td:last-child{ padding-right:10px; }
/* 含表格的卡片：允许横向滚动而非裁切（修复列表表头/首列/末列被 overflow:hidden 截断） */
.card:has(> table){ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.card:has(> table) > table{ width:100%; margin:0; min-width:680px; }
  table{ font-size:13px; }
  th, td{ padding:10px 8px; }
  th{ font-size:12px; }
  .page-title, .page-head .title{ font-size:19px; }
  .row, .filter, .toolbar{ gap:8px; }

  /* :302-306 tabs 未设 flex-wrap，窄屏会挤出视口 → 换行 + 触控高度 ≥44px */
  .tabs{ flex-wrap:wrap; gap:6px 18px; }
  .tabs a{ display:inline-flex; align-items:center; min-height:44px; }

  /* :220-224 input / :310 toolbar input 的 min-width 会在窄屏造成横向溢出 */
  input, select, textarea{ min-width:0; max-width:100%; }
  input:not([type=radio]):not([type=checkbox]):not([type=hidden]),
  textarea{ width:100%; }
  .toolbar input[type=text], .toolbar input[type=date], .toolbar select{ min-width:0; width:100%; }
  .store-switch select{ width:auto; }

  /* 弹窗全宽、圆角收敛 */
  .modal{ width:100%; max-width:100vw; padding:22px 18px; border-radius:16px; max-height:90vh; }
  .modal-mask{ padding:12px; }

  /* 所有按钮 / 输入框 / 下拉：触控目标 ≥44px、字号 ≥14px */
  .btn, .btn-primary, button,
  input:not([type=radio]):not([type=checkbox]):not([type=hidden]),
  select, textarea{ min-height:44px; font-size:14px; }
  .btn.sm, button.sm{ font-size:14px; }
  .fld{ min-height:44px; }
}

@media (max-width: 560px){
  .content{ padding:12px 10px; }
  .topbar{ padding:0 8px; gap:6px; }
  .crumb{ font-size:11.5px; }
  .store-switch{ padding:5px 8px; font-size:12px; }
  /* 进一步收紧（≤48vw），保证门店切换不与其它顶栏元素挤爆 */
  .store-switch select{ max-width:92px; min-width:0; }
  .user{ gap:0; }
  .user .u-name{ display:none; }
  .logout{ font-size:0; min-width:44px; min-height:44px; justify-content:center; }
  .logout .ic{ width:18px; height:18px; }
  .card{ padding:14px; }
  th, td{ padding:9px 6px; }
  .modal{ padding:18px 14px; max-height:92vh; }
  .modal-mask{ align-items:flex-end; padding:0; }
  .modal{ border-radius:18px 18px 0 0; }
  .page-actions, .page-head .acts{ width:100%; }
}

/* ============================================================
 * 富文本编辑器（零依赖）
 * ============================================================ */
.rte{ margin-bottom:0; }
.rte-bar{ display:flex; gap:6px; flex-wrap:wrap; padding:6px 8px; border:1px solid var(--line); border-bottom:none; border-radius:var(--r-sm) var(--r-sm) 0 0; background:var(--bg); }
.rte-btn{
  min-width:34px; min-height:34px; padding:0 10px; border:1px solid var(--line);
  background:#fff; color:var(--ink-2); border-radius:8px; cursor:pointer;
  font-size:14px; box-shadow:none;
}
.rte-btn:hover{ background:var(--orange-soft); color:var(--orange-2); border-color:var(--orange); }
.rte-area{
  min-height:96px; max-height:240px; overflow:auto; padding:11px 12px;
  border:1px solid var(--line); border-radius:0 0 var(--r-sm) var(--r-sm);
  font-size:14px; line-height:1.7; background:#fff; color:var(--ink); outline:none;
}
.rte-area:focus{ border-color:var(--orange); box-shadow:0 0 0 3px var(--orange-soft); }
.rte-area p{ margin:0 0 8px; }
.rte-area ul, .rte-area ol{ margin:0 0 8px 20px; }

/* ============================================================
 * 图片上传预览 + 列表缩略图 + 空态
 * ============================================================ */
.imgprev{
  display:flex; align-items:center; gap:12px; margin-top:10px; flex-wrap:wrap;
}
.imgprev .pv{
  width:72px; height:72px; border-radius:12px; object-fit:cover;
  border:1px solid var(--line); background:var(--gray-soft); flex:0 0 auto;
}
.imgprev .pv.ph{ display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:11px; }
.imgprev .hint{ font-size:12px; color:var(--muted); }
.upload-file{ width:100%; min-width:0; padding:8px; border:1px dashed var(--line); border-radius:var(--r-sm); background:var(--bg); cursor:pointer; }
.upload-file:hover{ border-color:var(--orange); }

/* 列表缩略图（技师头像 / 服务商品封面） */
.thumb{
  width:46px; height:46px; border-radius:10px; object-fit:cover;
  background:linear-gradient(135deg,#E8E3DA,#D6CFC3); flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center; color:var(--ink-2); font-weight:700; font-size:14px;
}
.td-media{ display:flex; align-items:center; gap:10px; }
.td-media b{ font-size:13.5px; color:var(--ink); font-weight:600; }

/* 空态（列表无数据时的友好提示） */
.empty{
  text-align:center; color:var(--muted); padding:40px 16px; font-size:13.5px;
}
.empty .em-ic{ width:40px; height:40px; opacity:.5; margin:0 auto 10px; color:var(--muted); }

/* ============================================================
 * 房态总览：床位状态条（dashboard）
 * ============================================================ */
.bed-strip{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; font-size:12px; color:var(--ink-2); }
.bed-strip .bd{ width:13px; height:13px; border-radius:4px; flex:0 0 auto; display:inline-block; }
.bed-strip .bd.b-free{ background:var(--ok-soft); box-shadow:inset 0 0 0 1px var(--ok); }
.bed-strip .bd.b-used{ background:var(--orange-soft); box-shadow:inset 0 0 0 1px var(--orange); }
.bed-strip .bd.b-mnt{ background:var(--gray-soft); box-shadow:inset 0 0 0 1px var(--gray); }
.bed-strip i{ font-style:normal; }

/* ============================================================
 * 今日预约看板（dashboard）
 * ============================================================ */
.appt-board{ display:flex; flex-direction:column; }
.appt{ display:flex; align-items:center; gap:14px; padding:12px 4px; border-bottom:1px solid var(--line-2); }
.appt:last-child{ border-bottom:none; }
.appt-t{
  font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace; font-weight:700; font-size:13px;
  color:var(--indigo); background:var(--bg); border:1px solid var(--line); border-radius:8px;
  padding:6px 10px; flex:0 0 auto; min-width:64px; text-align:center; white-space:nowrap;
}
.appt-main{ flex:1; min-width:0; }
.appt-svc{ font-size:14px; font-weight:600; color:var(--ink); }
.appt-meta{ font-size:12px; color:var(--muted); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

