/* 夜市巡查系统 - 手机端样式 */
.m-header {
  position: sticky; top: 0; z-index: 50;
  background: linear-gradient(135deg, var(--primary), var(--grad-end));
  color: #fff; padding: 14px 16px 40px;
  border-radius: 0 0 20px 20px;
  box-shadow: 0 2px 10px rgba(26,110,245,.25);
}
.m-header-title { font-size: 18px; font-weight: 700; }
.m-header-sub { font-size: 12px; opacity: .85; margin-top: 2px; }

.page { padding: 0 12px 80px; margin-top: -22px; }
.m-section { }

.m-stat-row { display: flex; gap: 10px; margin-bottom: 14px; }
.m-stat {
  flex: 1; background: #fff; border-radius: 12px; box-shadow: var(--shadow);
  padding: 14px 10px; text-align: center;
}
.m-stat-num { font-size: 26px; font-weight: 700; color: var(--primary); }
.m-stat-label { font-size: 12px; color: var(--text2); margin-top: 2px; }

.m-card {
  background: #fff; border-radius: 12px; box-shadow: var(--shadow);
  padding: 14px; margin-bottom: 12px;
}
.m-card-title { font-size: 15px; font-weight: 600; margin-bottom: 10px; display: flex; align-items: center; gap: 6px; }
.m-card-title .dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }

.m-alert-card { }
.m-alert-item {
  display: flex; align-items: center; gap: 8px;
  background: #fff; border-radius: 10px; padding: 10px 12px; margin-bottom: 8px;
  box-shadow: var(--shadow); font-size: 13px;
}
.m-alert-item.warn { border-left: 4px solid var(--warning); }
.m-alert-item.danger { border-left: 4px solid var(--danger); }
.m-alert-item.ok { border-left: 4px solid var(--success); }

.m-area-item {
  display: flex; align-items: center; justify-content: space-between;
  background: #fff; border-radius: 12px; box-shadow: var(--shadow);
  padding: 14px; margin-bottom: 10px;
}
.m-area-item .name { font-size: 15px; font-weight: 600; }
.m-area-item .sub { font-size: 12px; color: var(--text2); margin-top: 2px; }

.m-block { width: 100%; margin-top: 8px; }
.m-block.btn { padding: 12px; font-size: 15px; }

.m-insp-head { display: flex; justify-content: space-between; align-items: center; margin: 14px 0 4px; }
.m-insp-area { font-size: 16px; font-weight: 700; }
.m-progress { font-size: 13px; color: var(--text2); }

/* 摊位卡片 */
.stall-card {
  background: #fff; border-radius: 12px; box-shadow: var(--shadow);
  padding: 12px; margin-bottom: 10px; border: 2px solid transparent;
}
.stall-card.abnormal { border-color: var(--danger); background: #fffafa; }
.stall-card .stall-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.stall-card .stall-no { font-weight: 700; font-size: 15px; background: var(--soft-bg); color: var(--primary-dark); border-radius: 6px; padding: 2px 8px; }
.stall-card .stall-name { font-size: 14px; flex: 1; }
.stall-card .stall-food { font-size: 12px; color: var(--text2); }
.stall-status-row { display: flex; gap: 8px; margin-bottom: 8px; }
.stall-status-btn {
  flex: 1; border: 1.5px solid var(--border); background: #fff; border-radius: 8px;
  padding: 8px 0; font-size: 13px; color: var(--text2); transition: all .15s;
}
/* 未选中：三种状态各自带标识色，一眼可辨 */
.stall-status-btn.normal-btn   { border-color: #86efac; color: #16a34a; background: #f0fdf4; }
.stall-status-btn.absent-btn   { border-color: #fcd34d; color: #b45309; background: #fffbeb; }
.stall-status-btn.abnormal-btn { border-color: #fca5a5; color: #dc2626; background: #fef2f2; }
/* 选中：实心色块 + 白字，强烈区分 */
.stall-status-btn.active-normal   { background: #16a34a; color: #fff; border-color: #16a34a; font-weight: 700; }
.stall-status-btn.active-absent   { background: #f59e0b; color: #fff; border-color: #f59e0b; font-weight: 700; }
.stall-status-btn.active-abnormal { background: #dc2626; color: #fff; border-color: #dc2626; font-weight: 700; }
.stall-remark input {
  width: 100%; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px;
}
/* 打卡评分（评分功能启用后） */
.stall-score-box { background: #f8fafc; border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; margin-bottom: 8px; }
.score-dim-row { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; font-size: 12px; }
.score-dim-row:last-child { margin-bottom: 0; }
.score-dim-name { width: 30px; color: var(--text2); font-weight: 600; }
.score-ok { border: 1.5px solid var(--border); background: #fff; color: var(--text2); border-radius: 6px; padding: 3px 12px; font-size: 12px; }
.score-ok.on { background: #e6f7ef; border-color: #16a34a; color: #16a34a; font-weight: 600; }
.score-reason { display: none; flex: 1; padding: 4px 6px; border: 1px solid #fca5a5; background: #fff5f5; border-radius: 6px; font-size: 12px; color: #b91c1c; }
.score-reason.show { display: block; }
.score-tip { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.score-ev { display:inline-flex; align-items:center; margin-left:4px; }
.score-ev-btn { display:inline-block; padding:4px 10px; background:var(--primary); color:#fff; border-radius:6px; font-size:12px; cursor:pointer; }
.score-custom-input { display:none; flex:1; min-width:90px; padding:4px 6px; border:1px solid #cbd5e1; border-radius:6px; font-size:12px; }
.stall-photo { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.stall-photo .photo-thumb { width: 56px; height: 56px; }
.stall-photo .cam-btn {
  border: 1.5px dashed var(--primary); color: var(--primary); background: #f5f8ff;
  border-radius: 8px; padding: 10px 12px; font-size: 13px; display: inline-flex; align-items: center; gap: 4px;
}
.m-save-btn { background: var(--success); padding: 13px; font-size: 16px; margin: 16px 0 30px; border-radius: 12px; }

/* 记录 */
.m-record-card { background: #fff; border-radius: 12px; box-shadow: var(--shadow); padding: 14px; margin-bottom: 12px; }
.m-record-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.m-record-date { font-size: 15px; font-weight: 700; }
.m-record-area { font-size: 13px; color: var(--text2); }
.m-record-stats { display: flex; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.m-record-item {
  display: flex; align-items: center; gap: 8px; padding: 7px 0;
  border-bottom: 1px dashed var(--border); font-size: 13px;
}
.m-record-item:last-child { border-bottom: none; }
.m-record-item .no { font-weight: 600; min-width: 44px; }
.m-record-item.abnormal { background: #fef2f2; border-radius: 6px; padding: 7px 8px; }
.m-record-item .name { flex: 1; color: var(--text2); }
.m-record-photo { width: 44px; height: 44px; border-radius: 6px; object-fit: cover; cursor: zoom-in; }

.m-empty { text-align: center; color: var(--text2); padding: 30px 0; font-size: 14px; }

/* 底部导航 */
.m-tabbar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 60;
  background: #fff; display: flex; box-shadow: 0 -2px 10px rgba(0,0,0,.06);
  padding-bottom: env(safe-area-inset-bottom);
}
.m-tab { flex: 1; text-align: center; padding: 9px 0 7px; font-size: 11px; color: var(--text2); }
.m-tab-icon { font-size: 20px; line-height: 1.2; }
.m-tab.active { color: var(--primary); font-weight: 600; }

/* 登录页返回按钮 */
.login-back {
  position: absolute; top: 20px; left: 16px; z-index: 10;
  display: flex; align-items: center; gap: 5px;
  color: #fff; font-size: 14px; font-weight: 600;
  padding: 8px 14px; cursor: pointer; user-select: none;
  background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.35);
  border-radius: 22px; backdrop-filter: blur(4px);
}
.login-back .lb-icon { font-size: 16px; line-height: 1; }
.login-back:active { background: rgba(255,255,255,.32); }

/* 巡查列表：待巡查/已巡查分组与标记 */
.m-group-title { font-size:13px; font-weight:700; color:#6b7280; margin:12px 0 6px; }
.m-group-title.done { color:#16a34a; }
.stall-card.is-done { border-color:#22c55e; background:#f0fdf4; }
.stall-card.is-done.abnormal { border-color:#ef4444; background:#fef2f2; }
.done-badge { margin-left:auto; font-size:10px; color:#fff; background:#22c55e; border-radius:4px; padding:1px 6px; font-weight:600; }
.todo-badge { margin-left:auto; font-size:10px; color:#9ca3af; background:#f1f5f9; border-radius:4px; padding:1px 6px; }
.stall-done-tip { font-size:12px; color:#16a34a; margin:4px 0; font-weight:500; }
.stall-card.is-done.abnormal .stall-done-tip { color:#ef4444; }

/* 巡查端临时摊位记录卡片 */
.m-temp-card { background:#fff; border:1px solid #fde68a; border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.m-temp-head { display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.m-temp-info { font-size:12px; color:#6b7280; line-height:1.6; }
.tag-temp { background:#fff7ed; color:#f97316; border:1px solid #fdba74; border-radius:4px; font-size:10px; padding:1px 5px; }
/* ================= 摊主信息核对区 ================= */
.stall-check { background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 10px; padding: 8px 10px; margin: 8px 0; }
.sc-row { display: flex; gap: 10px; font-size: 12px; color: #334155; margin-bottom: 6px; flex-wrap: wrap; }
.sc-row span { background: #eef2ff; border-radius: 6px; padding: 2px 8px; }
.sc-photos { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.sc-thumb { width: 44px; height: 44px; object-fit: cover; border-radius: 8px; border: 1px solid #e2e8f0; }
.sc-none { font-size: 11px; color: #94a3b8; }

/* ================= 多图照片区 ================= */
.photo-thumbs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.photo-thumbs .photo-thumb { width: 64px; height: 64px; object-fit: cover; border-radius: 8px; border: 1px solid #e2e8f0; }
.stall-photo .cam-btn { margin-right: 6px; }
.cam-btn { display: inline-block; padding: 8px 12px; background: var(--primary); color: #fff; border-radius: 8px; font-size: 13px; cursor: pointer; }

/* ================= 每日情况汇报 ================= */
#page-report textarea { width: 100%; box-sizing: border-box; border: 1px solid #d1d5db; border-radius: 10px; padding: 10px 12px; font-size: 14px; line-height: 1.6; font-family: inherit; }
#page-report .cam-btn { margin-right: 8px; }
.m-report-content { font-size: 13px; color: #334155; line-height: 1.7; background: #f8fafc; border-radius: 8px; padding: 8px 10px; margin: 6px 0; white-space: pre-wrap; word-break: break-all; }
