/* 岐黄预约 —— 样式表（移动端优先，无外部依赖） */
:root{
  --ink:#241f1a; --ink2:#6d6459; --ink3:#948a7c;
  --paper:#faf7f1; --card:#fff; --line:#e7dfd2; --line2:#f0e9dd;
  --brand:#9c2b2b; --brand2:#7d1f1f; --brand-soft:#fbf1ef;
  --ok:#2f7d4f; --ok-soft:#eef7f1;
  --warn:#a8741a; --warn-soft:#fdf6e7;
  --danger:#b23b3b; --danger-soft:#fdf0ef;
  --radius:12px; --shadow:0 1px 2px rgba(40,30,20,.06),0 8px 24px rgba(40,30,20,.05);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font:16px/1.6 system-ui,-apple-system,"PingFang SC","Noto Sans CJK SC","Source Han Sans SC","Microsoft YaHei",sans-serif;
}
a{color:var(--brand); text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.3; margin:0 0 .6em}
h1{font-size:1.35rem} h2{font-size:1.1rem} h3{font-size:1rem}
p{margin:0 0 .8em}
small,.small{font-size:.85rem}
.muted{color:var(--ink2)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
hr{border:0;border-top:1px solid var(--line);margin:1.2rem 0}

/* ---------- 布局 ---------- */
.topbar{
  position:sticky; top:0; z-index:20; background:rgba(250,247,241,.94);
  backdrop-filter:saturate(1.4) blur(8px);
  border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between;
  gap:.5rem; padding:.5rem .9rem; flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;color:var(--ink);font-size:1.05rem}
.brand:hover{text-decoration:none}
.seal{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.7rem;height:1.7rem;border-radius:6px;background:var(--brand);color:#fff;
  font-size:1rem;line-height:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)
}
.topnav{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;font-size:.95rem}
.topnav a{color:var(--ink2)} .topnav a:hover{color:var(--brand)}
.wrap{max-width:960px;margin:0 auto;padding:1rem .9rem 3rem}
.foot{color:var(--ink3);text-align:center;font-size:.8rem;padding:1rem 0 2rem}
.inline{display:inline}
.link-btn{background:none;border:0;padding:0;color:var(--ink2);font:inherit;cursor:pointer}
.link-btn:hover{color:var(--brand);text-decoration:underline}

.grid{display:grid;gap:.9rem}
@media(min-width:720px){ .grid.g2{grid-template-columns:1fr 1fr} .grid.g3{grid-template-columns:repeat(3,1fr)} }

/* ---------- 卡片 ---------- */
.card{
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  padding:1rem; margin:0 0 .9rem; box-shadow:var(--shadow);
}
.card.tight{padding:.75rem}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;flex-wrap:wrap}
.card h2{margin:0 0 .3rem}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-height:44px;padding:.55rem 1.05rem;border-radius:10px;border:1px solid transparent;
  background:var(--brand);color:#fff;font:inherit;font-weight:600;cursor:pointer;
  text-decoration:none;line-height:1.2;
}
.btn:hover{background:var(--brand2);text-decoration:none;color:#fff}
.btn[disabled],.btn.disabled{opacity:.55;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--line2);color:var(--ink)}
.btn.danger{background:#fff;color:var(--danger);border-color:#e8c7c5}
.btn.danger:hover{background:var(--danger-soft);color:var(--danger)}
.btn.sm{min-height:34px;padding:.3rem .7rem;font-size:.85rem;border-radius:8px;font-weight:500}
.btn.block{width:100%}
.btn-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

/* ---------- 表单 ---------- */
label.field{display:block;margin:0 0 .85rem}
label.field > span.lbl{display:block;font-size:.9rem;color:var(--ink2);margin-bottom:.25rem;font-weight:600}
input[type=text],input[type=password],input[type=tel],input[type=number],input[type=date],input[type=time],input[type=datetime-local],select,textarea{
  width:100%;padding:.6rem .7rem;border:1px solid var(--line);border-radius:10px;
  background:#fff;color:var(--ink);font:inherit;min-height:44px;
}
textarea{min-height:88px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid #d9b9b6;outline-offset:1px;border-color:#cfa9a6}
.hint{font-size:.82rem;color:var(--ink3);margin:.2rem 0 0}
.row2{display:grid;gap:.7rem}
@media(min-width:560px){.row2{grid-template-columns:1fr 1fr} .row3{grid-template-columns:1fr 1fr 1fr}}
.row3{display:grid;gap:.7rem}
.check{display:flex;align-items:center;gap:.5rem;min-height:44px}
.check input{width:20px;height:20px;min-height:0}
.slot-row{display:grid;gap:.5rem;padding:.7rem;border:1px dashed var(--line);border-radius:10px;margin-bottom:.6rem;background:#fffdfa}
@media(min-width:640px){.slot-row{grid-template-columns:1.1fr .8fr .8fr .6fr 1fr auto;align-items:end}}
.slot-row .field{margin:0}

/* ---------- 表格 ---------- */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.table{width:100%;border-collapse:collapse;font-size:.93rem;background:#fff}
table.table th,table.table td{padding:.55rem .6rem;border-bottom:1px solid var(--line2);text-align:left;white-space:nowrap}
table.table th{font-size:.82rem;color:var(--ink2);font-weight:600;background:#fcfaf6}
table.table tr:last-child td{border-bottom:0}

/* ---------- 徽标 ---------- */
.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap}
.st-ok{background:var(--ok-soft);color:var(--ok)}
.st-warn{background:var(--warn-soft);color:var(--warn)}
.st-off{background:#f2efe9;color:var(--ink2)}
.pill{display:inline-block;padding:.15rem .55rem;background:#f4f0e9;border-radius:999px;font-size:.8rem;color:var(--ink2)}

/* ---------- 提示 ---------- */
.flash{padding:.7rem .9rem;border-radius:10px;margin:0 0 1rem;border:1px solid transparent;font-weight:600}
.flash-ok{background:var(--ok-soft);color:var(--ok);border-color:#cfe7d8}
.flash-err{background:var(--danger-soft);color:var(--danger);border-color:#efd0ce}
.flash-warn{background:var(--warn-soft);color:var(--warn);border-color:#f0e0bb}
.flash-info{background:#f1f4f8;color:#3a5473;border-color:#dbe4ee}

/* ---------- 统计 ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem}
@media(min-width:560px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem}
.stat b{display:block;font-size:1.35rem;line-height:1.2}
.stat span{font-size:.8rem;color:var(--ink2)}

/* ---------- 二维码 ---------- */
.qr-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.8rem;text-align:center}
.qr-box svg{width:min(260px,72vw);height:auto;image-rendering:pixelated}
.qr-link{font-size:.8rem;word-break:break-all;color:var(--ink2);margin-top:.5rem}

/* ---------- 公开报名页 ---------- */
.public-head{text-align:center;padding:1.2rem .4rem .4rem}
.public-head h1{font-size:1.5rem;margin-bottom:.2rem}
.slot{
  position:relative;
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  border:1px solid var(--line);border-radius:12px;padding:.8rem .9rem;margin-bottom:.6rem;background:#fff;
  cursor:pointer;transition:border-color .12s,box-shadow .12s;
}
.slot:hover{border-color:#d9b9b6}
.slot.sel{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft) inset}
.slot.full{opacity:.62;cursor:not-allowed}
.slot .t{font-weight:700;font-size:1.02rem}
.slot .sub{font-size:.85rem;color:var(--ink2)}
.slot .cap{text-align:right;white-space:nowrap}
.cap-num{font-weight:700}
.cap-num.low{color:var(--warn)} .cap-num.zero{color:var(--ink3)}
.ticket{border:1px dashed var(--brand);border-radius:14px;padding:1rem;background:var(--brand-soft);text-align:center}
.ticket .no{font-size:2rem;font-weight:800;color:var(--brand);line-height:1.1}
.center{text-align:center}
.mt1{margin-top:1rem} .mb1{margin-bottom:1rem} .mt2{margin-top:1.6rem}

/* ---------- 日期分组 / 星期多选 / 生成表单 ---------- */
.day-head{
  font-size:.85rem; color:var(--ink2); font-weight:600;
  margin:.7rem 0 .35rem; padding-left:.3rem; border-bottom:1px dashed var(--line);
}
.wd-row{display:flex; flex-wrap:wrap; gap:.4rem .9rem}
.wd-row .check{margin:0}
.row4{display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:.6rem}
.inline-num{display:inline-flex; align-items:center; gap:.4rem}
.inline-num input{width:5rem}

/* ---------- 项目分组标题 / 表格分组行 ---------- */
.svc-title{
  margin:1.1rem 0 .4rem; font-size:1rem; color:var(--brand);
  padding-left:.5rem; border-left:3px solid var(--brand);
}
table.table tr.group-row td{
  background:#faf6f1; font-weight:700; color:var(--brand);
  font-size:.88rem; padding:.35rem .5rem;
}

/* ---------- 治疗项目块（新建/编辑预约单） ---------- */
.svc-block{
  border:1px solid var(--line); border-radius:12px; padding:1rem .9rem .9rem;
  margin:0 0 1rem; background:#fff; box-shadow:var(--shadow);
}
.svc-block legend{padding:0 .5rem; font-weight:700; color:var(--brand); font-size:.95rem}
.svc-block .svc-slots{margin:.2rem 0}
.svc-block .slot-row{background:#fffdfa}
.svc-block details.batch{margin-top:.7rem; border-top:1px dashed var(--line); padding-top:.5rem}
.svc-block details.batch summary{cursor:pointer; color:var(--ink2); font-size:.9rem; font-weight:600; padding:.3rem 0}
.svc-block details.batch[open] summary{color:var(--brand)}

@media print{
  .topbar,.foot,.no-print,.btn{display:none !important}
  body{background:#fff}
  .card{box-shadow:none;border:0}
  .qr-box svg{width:340px}
}
