* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

:root {
  --bg: #f1f4f2;
  --card: #ffffff;
  --ink: #15211c;
  --ink2: #46554f;
  --sub: #7d8b85;
  --line: #e4eae7;
  --line2: #eef2f0;
  --primary: #0e9f6e;
  --primary-dark: #0a7f57;
  --primary-soft: #e7f7f0;
  --danger: #d94a4a;
  --amber: #a86414;
  --amber-soft: #fdf4e4;
  --r: 16px;
  --shadow: 0 1px 2px rgba(20, 40, 32, .04), 0 10px 26px rgba(20, 40, 32, .05);
}

html, body { margin: 0; padding: 0; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
button, input, textarea, select { font-family: inherit; font-size: inherit; color: inherit; }
a { color: var(--primary-dark); text-decoration: none; }

.wrap { max-width: 760px; margin: 0 auto; padding: 0 16px 72px; }
.boot { padding: 64px 20px; text-align: center; color: var(--sub); font-size: 14px; }

/* ---------- top bar ---------- */
.topbar {
  position: sticky; top: 0; z-index: 30;
  background: rgba(255, 255, 255, .88);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--line2);
}
.topbar-in { max-width: 760px; margin: 0 auto; padding: 10px 16px; display: flex; align-items: center; gap: 10px; min-height: 56px; }
.topbar h1 { font-size: 16px; font-weight: 600; margin: 0; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.iconbtn {
  appearance: none; border: 1px solid var(--line); background: #fff; color: var(--ink2);
  width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center;
  cursor: pointer; flex: none; padding: 0;
}
.iconbtn:active { transform: scale(.96); }
.iconbtn svg { width: 17px; height: 17px; }
.iconbtn.wide { width: auto; padding: 0 12px; gap: 6px; font-size: 13px; display: inline-flex; align-items: center; }

/* ---------- hero ---------- */
.hero { padding: 22px 0 4px; }
.hero-top { display: flex; align-items: flex-start; gap: 12px; }
.hero-top > div:first-child { flex: 1; min-width: 0; }
.eyebrow { font-size: 12px; letter-spacing: .08em; color: var(--primary-dark); font-weight: 600; }
.hero h1 { font-size: 24px; line-height: 1.3; margin: 4px 0 6px; letter-spacing: -.01em; }
.hero p { margin: 0; color: var(--sub); font-size: 13px; }
/* 窄屏：标题较长时把身份胶囊换到下一行，避免标题被挤断 */
@media (max-width: 560px) {
  .hero-top { flex-wrap: wrap; gap: 6px 12px; }
  .hero-top > div:first-child { flex: 1 1 100%; }
  .who { margin-left: 0; }
}
.who {
  margin-left: auto; flex: 0 0 auto; white-space: nowrap; appearance: none; cursor: pointer;
  border: 1px solid var(--line); background: #fff; border-radius: 999px;
  padding: 7px 12px; font-size: 13px; color: var(--ink2); display: inline-flex; align-items: center; gap: 6px;
}
.who svg { flex: none; }
.who b { font-weight: 600; color: var(--ink); }
.who.loose { border-style: dashed; color: var(--primary-dark); }

.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 18px 0 22px; }
.stat { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; }
.stat .n { font-size: 21px; font-weight: 650; letter-spacing: -.02em; line-height: 1.2; }
.stat .l { font-size: 11.5px; color: var(--sub); margin-top: 2px; }
.stat.click { cursor: pointer; }
.stat.alert .n { color: var(--amber); }

.search {
  display: flex; align-items: center; gap: 8px; background: #fff;
  border: 1px solid var(--line); border-radius: 12px; padding: 0 12px; height: 44px; margin-bottom: 20px;
}
.search svg { width: 17px; height: 17px; color: var(--sub); flex: none; }
.search input { border: 0; outline: 0; background: transparent; flex: 1; height: 100%; font-size: 14px; }

.sec-title { display: flex; align-items: baseline; justify-content: space-between; margin: 0 2px 10px; }
.sec-title h2 { font-size: 13px; color: var(--sub); font-weight: 600; margin: 0; letter-spacing: .04em; }
.sec-title span { font-size: 12px; color: var(--sub); }

/* ---------- form list ---------- */
.flist { display: flex; flex-direction: column; gap: 9px; }
.frow {
  display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; color: var(--ink);
  background: var(--card); border: 1px solid var(--line); border-radius: 14px;
  padding: 13px 14px; cursor: pointer; transition: transform .12s ease, box-shadow .12s ease;
}
.frow:active { transform: scale(.992); }
.frow:hover { box-shadow: var(--shadow); }
.fi { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; flex: none; }
.fi svg { width: 19px; height: 19px; }
.fmain { flex: 1; min-width: 0; }
.fname { display: block; font-size: 15px; font-weight: 550; letter-spacing: -.01em; color: var(--ink); }
.fmeta { display: block; font-size: 12px; color: var(--sub); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fside { display: flex; align-items: center; gap: 8px; flex: none; }
.cnt { font-size: 12px; color: var(--ink2); background: #f3f6f4; border-radius: 999px; padding: 2px 9px; }
.pend { font-size: 11px; color: var(--amber); background: var(--amber-soft); border-radius: 999px; padding: 2px 8px; }
.chev { color: #c3cdc8; }

.addrow {
  display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%;
  border: 1px dashed #cfdad5; background: transparent; color: var(--ink2);
  border-radius: 14px; padding: 14px; font-size: 14px; cursor: pointer; margin-top: 4px;
}
.addrow:hover { background: #fff; border-color: var(--primary); color: var(--primary-dark); }
.addrow svg { width: 16px; height: 16px; flex: none; }

/* ---------- cards / blocks ---------- */
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; }
.card + .card { margin-top: 12px; }
.card-title { font-size: 13px; font-weight: 600; color: var(--ink2); margin: 0 0 12px; display: flex; align-items: center; gap: 8px; }

/* ---------- buttons ---------- */
.btn {
  appearance: none; border: 1px solid transparent; background: var(--primary); color: #fff;
  border-radius: 11px; padding: 11px 16px; font-size: 15px; font-weight: 550; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 7px; transition: background .15s ease;
}
.btn:hover { background: var(--primary-dark); }
.btn:disabled { opacity: .55; cursor: default; }
.btn.ghost { background: #fff; border-color: var(--line); color: var(--ink2); }
.btn.ghost:hover { background: #f7faf8; border-color: #d6e0db; }
.btn.danger { background: #fff; border-color: #f0d5d5; color: var(--danger); }
.btn.danger:hover { background: #fdf2f2; }
.btn.block { width: 100%; }
.btn.sm { padding: 8px 12px; font-size: 13.5px; border-radius: 10px; }
.btn svg { width: 16px; height: 16px; }

.toolbar { display: flex; gap: 8px; margin: 14px 0 16px; flex-wrap: wrap; }

/* ---------- record list ---------- */
.filters { display: flex; gap: 8px; align-items: center; margin: 4px 0 14px; overflow-x: auto; padding-bottom: 2px; }
.filters::-webkit-scrollbar { display: none; }
.tab {
  appearance: none; border: 1px solid var(--line); background: #fff; color: var(--ink2);
  border-radius: 999px; padding: 6px 13px; font-size: 13px; cursor: pointer; white-space: nowrap;
}
.tab.on { background: var(--primary-soft); border-color: #a7ddc6; color: var(--primary-dark); font-weight: 550; }

.rlist { display: flex; flex-direction: column; gap: 9px; }
.rcard {
  background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 13px 14px;
  cursor: pointer; transition: box-shadow .12s ease;
}
.rcard:hover { box-shadow: var(--shadow); }
.rhead { display: flex; align-items: flex-start; gap: 10px; }
.rtitle { font-size: 14.5px; font-weight: 550; letter-spacing: -.01em; flex: 1; min-width: 0; word-break: break-word; color: var(--ink); }
.rmeta { font-size: 12px; color: var(--sub); margin-top: 5px; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.sep { width: 3px; height: 3px; border-radius: 50%; background: #c9d3ce; display: inline-block; }
.chip-s { font-size: 11.5px; border-radius: 999px; padding: 2px 8px; white-space: nowrap; flex: none; }
.chip-s.pending { background: var(--amber-soft); color: var(--amber); }
.chip-s.reviewed { background: var(--primary-soft); color: var(--primary-dark); }
.chip-s.fixed { background: #e8f1fd; color: #2f6fbe; }
.chip-s.mine { background: #eef3fb; color: #3b6db3; }

/* 整改闭环：首页待办提示条 + 详情整改卡 */
.fixalert {
  display: flex; align-items: center; gap: 8px;
  margin-top: 12px; padding: 12px 14px;
  background: var(--amber-soft); color: var(--amber);
  border: 1px solid #f0dcb2; border-radius: 14px;
  font-size: 14px; cursor: pointer;
}
.fixalert svg { flex: none; }
.fixbox { margin-top: 14px; }
.fixbox .note { font-size: 13px; color: var(--ink2); background: #f7faf8; border-radius: 10px; padding: 10px 12px; margin: 8px 0; }
.fixbox .card-title { display: flex; align-items: center; gap: 6px; font-weight: 600; margin-bottom: 6px; }

/* ---------- dynamic fields ---------- */
.field { margin-bottom: 15px; }
.field > label { display: block; font-size: 13px; font-weight: 550; color: var(--ink2); margin-bottom: 6px; }
.field .req { color: var(--danger); margin-left: 2px; }
.field input[type=text], .field input[type=number], .field input[type=tel],
.field input[type=date], .field input[type=time], .field textarea, .field select {
  width: 100%; border: 1px solid var(--line); background: #fbfcfb; border-radius: 10px;
  padding: 10px 12px; font-size: 15px; outline: 0; transition: border-color .15s ease, box-shadow .15s ease;
  min-height: 44px;
}
.field textarea { line-height: 1.6; resize: vertical; }
.field input:focus, .field textarea:focus, .field select:focus {
  border-color: #7fcbaa; background: #fff; box-shadow: 0 0 0 3px rgba(14, 159, 110, .12);
}
.field.err input, .field.err textarea, .field.err select { border-color: #e59a9a; background: #fffafa; }
/* 联动带出的字段轻微高亮一下，提醒用户是自动填的 */
.field select.linked { border-color: #7fcbaa; background: var(--primary-soft); box-shadow: 0 0 0 3px rgba(14, 159, 110, .12); }
.field .hint { font-size: 12px; color: var(--sub); margin-top: 5px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip {
  appearance: none; border: 1px solid var(--line); background: #fff; border-radius: 999px;
  padding: 8px 13px; font-size: 13.5px; cursor: pointer; color: var(--ink2);
}
.chip.on { background: var(--primary-soft); border-color: #a7ddc6; color: var(--primary-dark); font-weight: 550; }
.chip:active { transform: scale(.97); }

.formgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
.formgrid .span2 { grid-column: 1 / -1; }

/* ---------- identity strip ---------- */
.idstrip {
  display: flex; align-items: center; gap: 10px; background: var(--primary-soft);
  border: 1px solid #c8ecdc; border-radius: 12px; padding: 10px 12px; margin-bottom: 16px; font-size: 13px; color: var(--primary-dark);
}
.idstrip .grow { flex: 1; }
.idstrip button { appearance: none; border: 0; background: transparent; color: var(--primary-dark); font-size: 13px; text-decoration: underline; cursor: pointer; padding: 0; }

/* ---------- detail ---------- */
.dl { border-top: 1px solid var(--line2); }
.dl-row { display: flex; gap: 14px; padding: 11px 0; border-bottom: 1px solid var(--line2); }
.dl-k { width: 96px; flex: none; color: var(--sub); font-size: 13px; }
.dl-v { flex: 1; font-size: 14px; white-space: pre-wrap; word-break: break-word; }
.dl-v.blank { color: #b6c1bc; }

.reviewbox { margin-top: 14px; }
.reviewbox .note { font-size: 13px; color: var(--ink2); background: #f7faf8; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }

/* ---------- empty ---------- */
.empty { text-align: center; padding: 48px 20px; color: var(--sub); }
.empty .t { font-size: 14px; color: var(--ink2); margin-bottom: 4px; }
.empty .s { font-size: 12.5px; }

/* ---------- toast ---------- */
.toast {
  position: fixed; left: 50%; bottom: 32px; transform: translate(-50%, 20px);
  background: rgba(21, 33, 28, .92); color: #fff; font-size: 13.5px; padding: 10px 16px;
  border-radius: 10px; opacity: 0; pointer-events: none; transition: all .22s ease; z-index: 90; max-width: 80vw;
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---------- modal ---------- */
.mask {
  position: fixed; inset: 0; background: rgba(18, 28, 24, .38); z-index: 80;
  display: flex; align-items: flex-end; justify-content: center; padding: 0;
}
@media (min-width: 560px) { .mask { align-items: center; padding: 24px; } }
.modal {
  background: #fff; width: 100%; max-width: 460px; border-radius: 18px 18px 0 0;
  padding: 18px 18px calc(18px + env(safe-area-inset-bottom)); max-height: 88vh; overflow: auto;
}
@media (min-width: 560px) { .modal { border-radius: 18px; } }
.modal h3 { margin: 0 0 4px; font-size: 17px; }
.modal .sub { font-size: 12.5px; color: var(--sub); margin: 0 0 16px; }
.modal .row { display: flex; gap: 8px; margin-top: 16px; }
.modal .row .btn { flex: 1; }

.buildrow { display: grid; grid-template-columns: 1fr 96px 34px; gap: 8px; margin-bottom: 8px; align-items: center; }
.buildrow input, .buildrow select {
  border: 1px solid var(--line); border-radius: 9px; padding: 9px 10px; font-size: 14px; min-height: 40px; background: #fbfcfb; outline: 0; width: 100%;
}
.buildrow .del { border: 1px solid var(--line); background: #fff; color: var(--sub); border-radius: 9px; height: 40px; cursor: pointer; }
.buildrow.opt { grid-template-columns: 1fr; }
.buildrow.opt input { font-size: 13px; }

/* ---------- sticky submit ---------- */
.submitbar {
  position: sticky; bottom: 0; z-index: 20; margin: 18px -16px 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  background: rgba(241, 244, 242, .92); backdrop-filter: blur(10px); border-top: 1px solid var(--line);
}

/* ---------- accents ---------- */
.a-blue { background: #eaf1fd; color: #2f65c4; }
.a-teal { background: #e3f6f2; color: #0d8a7a; }
.a-amber { background: #fdf1de; color: #a86414; }
.a-violet { background: #f0ecfd; color: #6b4bc4; }
.a-indigo { background: #e8eafc; color: #4b56c4; }
.a-rose { background: #fdeaea; color: #c2483f; }
.a-slate { background: #eef1f0; color: #55655e; }

@media (max-width: 420px) {
  .hero h1 { font-size: 21px; }
  .formgrid { grid-template-columns: 1fr; }
  .stat .n { font-size: 19px; }
}

/* ---------- 表单分组 ---------- */
.fgroup {
  grid-column: 1 / -1; font-size: 12px; font-weight: 600; letter-spacing: .06em;
  color: var(--primary-dark); padding-bottom: 8px; margin-bottom: 14px;
  border-bottom: 1px dashed #dfe8e3;
}
.fgroup + .field { margin-top: 0; }

/* ---------- 签到名单 ---------- */
.people { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #fbfcfb; }
.prow { display: flex; align-items: center; border-bottom: 1px solid var(--line2); }
.prow:last-child { border-bottom: 0; }
.pno { width: 32px; flex: none; text-align: center; color: var(--sub); font-size: 12px; }
.field .people .pname {
  flex: 1; min-width: 0; width: auto; border: 0; background: transparent; border-radius: 0;
  padding: 9px 6px; min-height: 0; font-size: 15px; outline: 0; box-shadow: none;
}
.field .people .pname:focus { box-shadow: none; background: #fff; }
.pdel {
  appearance: none; border: 0; background: transparent; color: #c2ccc7; flex: none;
  width: 30px; height: 30px; margin-right: 4px; font-size: 18px; line-height: 1; border-radius: 8px; cursor: pointer;
}
.pdel:hover { color: var(--danger); background: #fdf2f2; }
.pbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; }
.addrow.slim { width: auto; margin: 0; padding: 8px 14px; font-size: 13px; border-radius: 10px; flex: none; }
.pcount { font-size: 12.5px; color: var(--ink2); }
.pcount b { font-size: 16px; color: var(--primary-dark); font-weight: 650; }
.pcount i { font-style: normal; color: var(--sub); }

/* ---------- 阅读确认 ---------- */
.checkrow {
  display: flex; gap: 10px; align-items: flex-start; cursor: pointer;
  background: #fbfcfb; border: 1px solid var(--line); border-radius: 10px;
  padding: 11px 12px; font-size: 13.5px; color: var(--ink2); line-height: 1.7;
}
.checkrow input { width: 18px; height: 18px; margin: 2px 0 0; flex: none; accent-color: var(--primary); }
.field.err .checkrow { border-color: #e59a9a; background: #fffafa; }

/* ---------- 会议纸质版式 ---------- */
.meet-meta { padding: 16px 0 10px; }
.sheet-tools { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 14px; }
.sheets { display: flex; flex-direction: column; gap: 14px; }
.sheet {
  background: #fff; border: 1px solid #dfe6e2; border-radius: 8px;
  padding: 18px 16px 20px; box-shadow: 0 2px 10px rgba(20, 40, 32, .05);
}
.sheet-brand { display: flex; align-items: baseline; gap: 8px; padding-bottom: 7px; border-bottom: 2px solid #c2452f; }
.sb-mark { font-size: 12px; font-weight: 650; letter-spacing: .18em; color: #b13c28; }
.sb-sub { font-size: 11px; color: var(--sub); letter-spacing: .04em; }
.sheet-h { text-align: center; font-size: 19px; font-weight: 600; letter-spacing: .35em; margin: 14px 0 12px; text-indent: .35em; }

.mform {
  display: grid; grid-template-columns: 78px minmax(0, 1fr) 56px minmax(0, 1fr);
  gap: 1px; background: #cfd8d3; border: 1px solid #cfd8d3;
  font-size: 13px; -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.mf-k { background: #f7faf8; padding: 7px 9px; color: var(--ink2); font-size: 12.5px; }
.mf-v { background: #fff; padding: 7px 10px; word-break: break-word; line-height: 1.6; }
.mf-v.full { grid-column: 2 / -1; }
@media (max-width: 520px) {
  .mform { grid-template-columns: 78px minmax(0, 1fr); }
}
.mt-count { text-align: right; font-size: 12.5px; color: var(--ink2); padding: 8px 2px 6px; }
.mt-count b { font-weight: 650; color: var(--ink); }

.sign { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; }
.sign th, .sign td { border: 1px solid #cfd8d3; text-align: center; padding: 4px; height: 27px; }
.sign thead th { background: #f7faf8; font-weight: 500; font-size: 12.5px; color: var(--ink2); }
.sign th:first-child, .sign td.no { width: 44px; color: var(--sub); font-size: 12px; }
.sign td.nm { font-family: "Kaiti SC", "STKaiti", "KaiTi", "Songti SC", serif; font-size: 15px; color: #1f2d27; }
.sheet-note { margin-top: 10px; font-size: 12.5px; color: var(--ink2); display: flex; gap: 10px; flex-wrap: wrap; align-items: baseline; }
.sn-hint { font-size: 11.5px; color: var(--sub); }

.ms-bar {
  margin-top: 12px; border: 1px solid #cfd8d3; border-bottom: 0; background: #f7faf8;
  padding: 6px 10px; font-size: 12.5px; font-weight: 600; letter-spacing: .1em; color: var(--ink2);
}
.ms-list { margin: 0; border: 1px solid #cfd8d3; padding: 12px 14px 12px 38px; font-size: 13.5px; line-height: 1.95; min-height: 150px; }
.ms-list li { margin: 0 0 3px; word-break: break-word; }
.ms-empty { border: 1px solid #cfd8d3; padding: 16px 14px; font-size: 13px; color: var(--sub); }
.ms-decl { margin-top: 14px; font-size: 12.5px; line-height: 1.8; color: #b0392b; }
.ms-sign { margin-top: 14px; border-top: 1px solid #cfd8d3; padding-top: 12px; display: flex; align-items: baseline; gap: 6px; font-size: 13px; }
.msl { color: var(--ink2); }
.hand { font-family: "Kaiti SC", "STKaiti", "KaiTi", serif; font-weight: 500; font-size: 19px; letter-spacing: .08em; color: #1f2d27; }
.ms-date { margin-left: auto; font-size: 12px; color: var(--sub); }

/* ---------- 打印 ---------- */
@page { size: A4; margin: 12mm; }
@media print {
  body { background: #fff; }
  .topbar, .noprint, .toast, .submitbar, .meet-meta, .sheet-tools { display: none !important; }
  .wrap { max-width: none; padding: 0; }
  .sheets { gap: 0; }
  .sheet {
    border: 0; box-shadow: none; border-radius: 0; padding: 0 0 10mm;
    page-break-after: always; break-after: page;
  }
  .sheet:last-child { page-break-after: auto; break-after: auto; }
  .sign th, .sign td { border-color: #555 !important; }
  .mform, .sign th, .sign td { border-color: #555 !important; }
  .mform { background: #555 !important; }
  .mf-k, .sign thead th, .ms-bar { background: #f2f2f2 !important; }
  .mform, .mf-k, .mf-v, .sign thead th, .ms-bar { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .ms-list { min-height: 55mm; }
  .card.reviewbox { display: none !important; }
}

/* ---------- 会议填写页：分区 / 拍照 / 录音 ---------- */
.fgroup2 {
  font-size: 12.5px; font-weight: 650; letter-spacing: .04em; color: var(--primary-dark);
  padding-bottom: 9px; margin-bottom: 14px; border-bottom: 1px dashed #dfe8e3;
  display: flex; align-items: center;
}
.cap-hint { font-size: 12.5px; color: var(--sub); margin: -4px 0 10px; line-height: 1.6; }
.thumbs { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 10px; }
.thumbs:empty { display: none; }
.thumb { position: relative; width: 88px; height: 88px; border-radius: 10px; overflow: hidden; border: 1px solid var(--line); background: #f4f7f5; }
.thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.thumb button {
  position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; border-radius: 50%;
  border: 0; background: rgba(21, 33, 28, .62); color: #fff; font-size: 13px; line-height: 1;
  cursor: pointer; display: grid; place-items: center; padding: 0;
}
.uploadrow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.aistat { font-size: 12px; color: var(--ink2); line-height: 1.5; flex: 1; min-width: 0; }
.aistat:empty { display: none; }

/* ---------- 线路列表（线路编号 + 记录照片） ---------- */
.routelist { display: flex; flex-direction: column; gap: 10px; }
.route-row { border: 1px solid var(--line); border-radius: 12px; padding: 12px; background: #fbfdfc; }
.route-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.route-title { font-size: 13px; color: var(--ink2); font-weight: 600; }
.route-title .rn { color: var(--primary-dark); margin-left: 2px; font-weight: 700; }
.routedel { border: 0; background: transparent; color: var(--sub); font-size: 12.5px; cursor: pointer; padding: 2px 4px; }
.routedel:hover { color: #c05a5a; }
.route-row .route-no {
  width: 100%; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px;
  font-size: 14px; background: #fff; margin-bottom: 9px; color: var(--ink); font-family: inherit;
}
.route-row .route-no:focus { outline: none; border-color: var(--primary); }
.route-row .thumbs { margin-bottom: 6px; }
.rt-item { padding: 9px 0; border-bottom: 1px dashed var(--line); }
.rt-item:last-child { border-bottom: 0; padding-bottom: 0; }
.rt-no { font-size: 13.5px; color: var(--ink); font-weight: 600; margin-bottom: 6px; }
.rt-item .note { font-size: 12.5px; color: var(--sub); }

/* ---------- 车辆排查组（线路 + 车牌号 + 排查图片） ---------- */
.vglist { display: flex; flex-direction: column; gap: 10px; }
.vg-row { border: 1px solid var(--line); border-radius: 12px; padding: 12px; background: #fbfdfc; }
.vg-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.vg-title { font-size: 13px; color: var(--ink2); font-weight: 600; }
.vg-title .vn { color: var(--primary-dark); margin: 0 2px; font-weight: 700; }
.vgdel { border: 0; background: transparent; color: var(--sub); font-size: 12.5px; cursor: pointer; padding: 2px 4px; }
.vgdel:hover { color: #c05a5a; }
.vg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 10px; }
.vgc { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.vgl { font-size: 12px; color: var(--sub); }
.vg-grid select {
  width: 100%; border: 1px solid var(--line); border-radius: 10px; padding: 9px 10px;
  font-size: 13.5px; background: #fff; color: var(--ink); font-family: inherit;
  -webkit-appearance: none; appearance: none;
}
.vg-grid select:focus { outline: none; border-color: var(--primary); }
.vg-photo { display: flex; flex-direction: column; gap: 5px; }
.vg-photo .thumbs { margin-bottom: 0; }
.vg-row .thumbs:empty { display: none; }
@media (max-width: 380px) { .vg-grid { grid-template-columns: 1fr; } }

/* ---------- 车辆信息组（车牌号 / 线路 / 司机 / 快线·普线 / 年审 / 车身广告） ---------- */
.vclist { display: flex; flex-direction: column; gap: 10px; }
.vc-row { border: 1px solid var(--line); border-radius: 12px; padding: 12px; background: #fbfdfc; }
.vc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.vc-grid select, .vc-grid input {
  width: 100%; border: 1px solid var(--line); border-radius: 10px; padding: 9px 10px;
  font-size: 13.5px; background: #fff; color: var(--ink); font-family: inherit;
}
.vc-grid select { -webkit-appearance: none; appearance: none; }
.vc-grid select:focus, .vc-grid input:focus { outline: none; border-color: var(--primary); }
.vc-grid input::placeholder { color: #a9b4ae; }
@media (min-width: 620px) { .vc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 380px) { .vc-grid { grid-template-columns: 1fr; } }

/* 详情页：车辆信息组 */
.vc-item { padding: 7px 0; border-bottom: 1px dashed var(--line); }
.vc-item:last-child { border-bottom: 0; padding-bottom: 0; }
.vc-no { font-size: 12.5px; color: var(--sub); margin-bottom: 2px; }
.vc-vals { font-size: 13.5px; color: var(--ink); line-height: 1.65; }
.vc-vals i { font-style: normal; color: #c3ccc7; margin: 0 6px; }

/* 图片 / 视频混传：缩略图内的视频与标签 */
.thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
.thumb .vtag {
  position: absolute; left: 6px; bottom: 6px; padding: 1px 6px; border-radius: 6px;
  background: rgba(0, 0, 0, .55); color: #fff; font-size: 11px; letter-spacing: .5px;
}
.thumb.video { position: relative; }
.signphotos video.signphoto { width: 100%; max-height: 240px; object-fit: contain; border-radius: 10px; background: #000; display: block; margin: 6px 0; }

.seg { display: flex; gap: 6px; background: #f1f5f3; border-radius: 11px; padding: 4px; margin-bottom: 12px; }
.segbtn {
  flex: 1; appearance: none; border: 0; background: transparent; color: var(--ink2);
  font-size: 13px; padding: 8px 4px; border-radius: 8px; cursor: pointer; white-space: nowrap;
}
.segbtn.on { background: #fff; color: var(--primary-dark); font-weight: 600; box-shadow: 0 1px 3px rgba(20, 40, 32, .1); }
.cappanel[hidden] { display: none; }

.voicebox { background: #f8fbf9; border: 1px solid var(--line); border-radius: 12px; padding: 14px; text-align: center; margin-bottom: 12px; }
.recbtn {
  appearance: none; border: 1px solid #c8ecdc; background: #fff; color: var(--primary-dark);
  border-radius: 999px; padding: 10px 18px; font-size: 14px; font-weight: 550; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
}
.recbtn.on { background: #fdecec; border-color: #f0c4c4; color: #c23c3c; animation: recpulse 1.6s ease-in-out infinite; }
@keyframes recpulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(217, 74, 74, .28); } 50% { box-shadow: 0 0 0 8px rgba(217, 74, 74, 0); } }
.voicelive { font-size: 12.5px; color: var(--sub); margin-top: 10px; line-height: 1.6; min-height: 20px; word-break: break-word; }
.voicelive b { color: var(--primary-dark); font-weight: 600; }
.airem { display: flex; align-items: center; gap: 10px; margin-top: 9px; flex-wrap: wrap; }

/* ---------- 详情页：签到原件 / 概要 ---------- */
.signphotos { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.signphotos.multi { display: grid; grid-template-columns: 1fr 1fr; }
.signphoto { width: 100%; border: 1px solid #cfd8d3; border-radius: 4px; display: block; background: #fafafa; }
.ms-points { border: 1px solid #cfd8d3; border-top: 0; padding: 10px 14px; font-size: 13.5px; line-height: 1.8; }
.ms-points p { margin: 0 0 4px; }
.ms-points p:last-child { margin-bottom: 0; }
.minsrc { margin-top: 12px; font-size: 12.5px; color: var(--ink2); }
.minsrc summary { cursor: pointer; color: var(--primary-dark); }
.minsrc img { width: 100%; border: 1px solid #cfd8d3; border-radius: 4px; margin-top: 8px; }
.card.err { border-color: #e59a9a; box-shadow: 0 0 0 3px rgba(217, 74, 74, .08); }

@media print {
  .minsrc { display: none !important; }
  .signphotos.multi { grid-template-columns: 1fr 1fr; }
  .signphoto { page-break-inside: avoid; break-inside: avoid; }
}

/* ---------- 图片放大 ---------- */
.modal.zoom { max-width: 96vw; width: auto; padding: 10px; background: #101613; border-radius: 14px; }
.zoompic { display: block; max-width: 92vw; max-height: 84vh; width: auto; border-radius: 8px; }
.sheet .signphoto { cursor: zoom-in; }
@media print { .modal, .mask { display: none !important; } }
.ph { font-size: 12.5px; color: var(--sub); padding: 14px; text-align: center; border: 1px dashed #d7ded9; border-radius: 6px; }
.minsrc .minimgs img { width: 100%; border: 1px solid #cfd8d3; border-radius: 4px; margin-top: 8px; display: block; }

@media print {
  /* 打印时签到照片按剩余空间缩放，保证「签到表 / 纪要」各占一页 */
  .signphotos { display: block !important; }
  .signphoto { width: auto !important; max-width: 100%; max-height: 150mm; margin: 2mm auto 0; }
  .signphotos.multi .signphoto { max-height: 92mm; }
  .sheet { page-break-inside: auto; break-inside: auto; }
  .ms-list { min-height: 40mm; }
}

/* ---------- 会议纪要：上传音频 ---------- */
.audiocard {
  margin-top: 12px; background: #f8fbf9; border: 1px solid var(--line);
  border-radius: 12px; padding: 12px 13px 13px;
}
.audiocard audio { width: 100%; margin-top: 10px; height: 38px; }
.audio-name {
  display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--ink);
  min-width: 0;
}
.audio-name svg { flex: none; color: var(--primary-dark); }
.audio-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
.audio-name i { font-style: normal; font-size: 11.5px; color: var(--sub); flex: none; }
.audio-warn { margin-top: 8px; font-size: 12px; color: #a8641f; line-height: 1.6; }
.audiosrc { margin-top: 12px; }
.audiosrc .audiocard { padding: 10px 12px 12px; }
.audiosrc .ms-bar { margin-top: 0; }

/* 上传音频的按钮在激活态 */
[data-act="audio-play"].on { background: #fdecec; border-color: #f0c4c4; color: #c23c3c; }

@media print { .audiosrc, .audiocard { display: none !important; } }

/* 四段切换在窄屏收一点字号 */
@media (max-width: 400px) {
  .seg { gap: 3px; padding: 3px; }
  .segbtn { font-size: 12px; padding: 8px 2px; }
}

/* 录音面板里「或上传音频」的分隔 */
.audiosep { display: flex; align-items: center; gap: 10px; margin: 16px 0 10px; color: var(--sub); font-size: 12px; }
.audiosep::before, .audiosep::after { content: ''; flex: 1; height: 1px; background: #e6ece8; }

/* 身份弹窗提示 */
.idhint { font-size: 12px; color: var(--sub); line-height: 1.6; margin: 8px 0 2px; }
