:root{
  --bg:#f4f7f7; --card:#fff; --line:#e2e8e8; --txt:#14302c; --muted:#6a807c;
  --brand:#0f766e; --brand-2:#14b8a6; --soft:#e8f5f3; --warn:#b45309; --warn-bg:#fef3e2;
  --danger:#b91c1c; --danger-bg:#fdeceb; --ok:#15803d; --ok-bg:#e9f6ec;
  --r:14px; --sh:0 1px 2px rgba(16,48,44,.05),0 8px 24px -12px rgba(16,48,44,.14);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--txt); font-size:15px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--brand);text-decoration:none}
button{font-family:inherit;font-size:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:inherit;color:var(--txt)}

/* ---------- 通用 ---------- */
.wrap{max-width:1080px;margin:0 auto;padding:20px}
.wrap-sm{max-width:680px;margin:0 auto;padding:20px 16px 96px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.muted{color:var(--muted)}
.small{font-size:13px}
.tiny{font-size:12px}
.row{display:flex;align-items:center;gap:10px}
.between{display:flex;align-items:center;justify-content:space-between;gap:12px}
.grow{flex:1}
.hide{display:none!important}

.btn{
  border:1px solid var(--brand);background:var(--brand);color:#fff;
  padding:10px 18px;border-radius:10px;font-weight:600;transition:.15s;
}
.btn:hover{background:#0b5f59}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--brand)}
.btn.ghost:hover{background:var(--soft)}
.btn.sm{padding:6px 12px;font-size:13px;border-radius:8px}
.btn.grey{background:#fff;border-color:var(--line);color:var(--muted)}
.btn.danger{background:#fff;border-color:#f0c9c6;color:var(--danger)}

.field{margin:0 0 18px}
.field label{display:block;font-weight:600;font-size:14px;margin-bottom:7px}
.field .hint{font-size:12px;color:var(--muted);margin-top:5px}
.field input[type=text],.field input[type=number],.field input[type=date],
.field input[type=password],.field select,.field textarea{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;outline:none;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(20,184,166,.13)}
textarea{resize:vertical;min-height:76px}

/* 选项组 */
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opts.col{flex-direction:column;flex-wrap:nowrap}
.opt{
  border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;
  font-size:14px;transition:.12s;user-select:none;
}
.opt:hover{border-color:var(--brand-2);background:#fbfefe}
.opt.on{border-color:var(--brand);background:var(--soft);color:var(--brand);font-weight:600}
.opts.col .opt{width:100%;text-align:left}

.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.7}
.b-todo{background:var(--soft);color:var(--brand)}
.b-warn{background:var(--warn-bg);color:var(--warn)}
.b-danger{background:var(--danger-bg);color:var(--danger)}
.b-ok{background:var(--ok-bg);color:var(--ok)}
.b-grey{background:#f1f4f4;color:var(--muted)}

/* 进度条 */
.bar{height:6px;background:#eef2f2;border-radius:99px;overflow:hidden}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-2));border-radius:99px;transition:.3s}

/* 表格 */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;letter-spacing:.03em;
   padding:10px 12px;border-bottom:1px solid var(--line);background:#fafcfc;white-space:nowrap}
td{padding:11px 12px;border-bottom:1px solid #f0f4f4;vertical-align:middle}
tr:hover td{background:#fbfdfd}

/* 提示条 */
.note{border-radius:10px;padding:11px 14px;font-size:13.5px;line-height:1.65}
.note.info{background:var(--soft);color:#0b5f59}
.note.warn{background:var(--warn-bg);color:#8a4708}
.note.danger{background:var(--danger-bg);color:#8f1d1d}

/* 微信小程序感：顶部条 */
.wxbar{
  position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);
  padding:12px 16px;display:flex;align-items:center;gap:10px;
}
.wxbar .t{font-weight:600;font-size:16px}
.dot{width:7px;height:7px;border-radius:99px;background:var(--brand-2)}

/* 底部固定操作 */
.footbar{
  position:fixed;left:0;right:0;bottom:0;z-index:30;background:rgba(255,255,255,.94);
  backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:12px 16px;
  display:flex;gap:10px;max-width:680px;margin:0 auto;
}

/* 模态 */
.modal{position:fixed;inset:0;background:rgba(12,32,28,.42);z-index:60;display:flex;
  align-items:center;justify-content:center;padding:20px}
.modal .box{background:#fff;border-radius:16px;width:100%;max-width:520px;max-height:86vh;
  overflow:auto;padding:22px;box-shadow:0 24px 60px -20px rgba(0,0,0,.4)}

@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fade{animation:fade .22s ease both}

/* ---------- 手机适配：CRC / 管理者用内置账号在手机上打开后台 ---------- */
@media(max-width:640px){
  body{font-size:14px}
  .wrap{padding:14px}
  .wrap-sm{padding:14px 12px 96px}
  /* iOS 输入框字号 <16px 会自动放大页面 */
  input,select,textarea{font-size:16px}
  .field input[type=text],.field input[type=number],.field input[type=date],
  .field input[type=password],.field select,.field textarea{padding:11px 12px}
  .btn{min-height:44px;padding:11px 16px}
  .btn.sm{min-height:40px;padding:8px 13px}
  table{font-size:12.5px}
  th,td{padding:8px 9px}
  th{white-space:nowrap}
  .note{font-size:12.5px}
  .footbar{padding:10px 12px}
  .modal{padding:12px}
  .modal .box{padding:16px;max-height:90vh}
}
