/* 龙游隐患通 H5 —— 按 PPT 设计稿（深蓝→青绿渐变） */
:root {
    --navy: #0d2b4e;
    --navy2: #113a63;
    --grad: linear-gradient(115deg, #0f3559 0%, #0e587f 55%, #0f89a8 100%);
    --grad-btn: linear-gradient(100deg, #0d2f55 0%, #0e5a84 58%, #0e93ad 100%);
    --blue: #2f7bd9;
    --hintbg: #e6f0fb;
    --green: #22a35e;
    --red: #e2493d;
    --orange: #f5a623;
    --bg: #f0f4f9;
    --card: #ffffff;
    --text: #23384d;
    --muted: #8ba2b5;
    --line: #e3ebf2;
    --fieldbg: #f5f7fa;
    --shadow: 0 2px 10px rgba(13, 43, 78, .07);
    --shadow-lg: 0 10px 28px rgba(13, 43, 78, .16);
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; padding: 0; }
body {
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
    background: #dfe6ee;
    color: var(--text);
    font-size: 15px;
    line-height: 1.6;
}
.app { max-width: 480px; margin: 0 auto; min-height: 100vh; background: var(--bg); box-shadow: 0 0 24px rgba(13, 43, 78, .12); }

/* 底部「切换身份/退出登录」通用按钮（各扫码进入页复用）
   热区必须贴合文字：曾用 display:block + padding-bottom:80px，
   导致整行宽度与下方大片空白都成为可点区域（页面空白空白处误触退出登录）。
   现改为 shrink-to-fit 胶囊（display:table + margin auto 居中），
   底部留白改用 margin（margin 不参与点击热区），视觉间距不变但只有胶囊可点。 */
.logout-foot {
    display: table;
    margin: 14px auto 60px;
    padding: 9px 20px;
    text-align: center;
    font-size: 12px;
    line-height: 1.4;
    color: #8a97a8;
    text-decoration: none;
    border: 1px solid #e3e9f0;
    border-radius: 999px;
    background: rgba(255, 255, 255, .92);
    -webkit-tap-highlight-color: transparent;
}
.logout-foot:active { color: #2f7bd9; border-color: #cfe0f5; background: #f2f7fc; }

/* ---------- 顶部状态条 + 渐变头（PPT 样式） ---------- */
.statusbar {
    background: var(--navy);
    color: rgba(255, 255, 255, .85);
    font-size: 11px;
    padding: 4px 14px;
    text-align: right;
    letter-spacing: 1px;
}
.header {
    background: var(--grad);
    color: #fff;
    padding: 14px 16px 15px;
    position: sticky; top: 0; z-index: 10;
    box-shadow: 0 2px 12px rgba(13, 43, 78, .28);
}
.header h1 { font-size: 19px; margin: 0; font-weight: 700; letter-spacing: .5px; }
.header .sub { font-size: 12px; opacity: .82; margin-top: 3px; }
.back { display: none; color: #fff; opacity: .92; margin-right: 10px; cursor: pointer; font-size: 22px; font-weight: 700; line-height: 1; vertical-align: -3px; font-family: Arial, sans-serif; }
.back.show { display: inline-block; }

/* 头部当前登录人身份条：姓名 + 角色 + 脱敏手机号 */
.hd-user {
    display: flex; align-items: center; gap: 7px; margin-top: 9px;
    padding: 6px 10px; border-radius: 20px;
    background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .22);
}
.hd-avatar {
    width: 24px; height: 24px; flex: none; border-radius: 50%;
    background: rgba(255, 255, 255, .92); color: var(--blue);
    font-size: 13px; font-weight: 700; line-height: 24px; text-align: center;
}
.hd-name { font-size: 13px; font-weight: 700; color: #fff; max-width: 9em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hd-role {
    font-size: 11px; color: #fff; background: rgba(255, 255, 255, .26);
    border-radius: 10px; padding: 1px 7px; white-space: nowrap;
}
.hd-mobile { font-size: 11px; color: #fff; opacity: .8; }
.hd-switch { margin-left: auto; font-size: 11px; color: #fff; opacity: .8; cursor: pointer; white-space: nowrap; padding: 2px 0 2px 6px; }

/* ---------- 内容区 ---------- */
.content { padding: 12px 14px 20px; }
.view { display: none; }
.view.has-submit { padding-bottom: 78px; }

/* 提示条（浅蓝底蓝字居中） */
.hint-bar {
    background: var(--hintbg);
    color: var(--blue);
    font-size: 13px;
    text-align: center;
    padding: 10px 12px;
    border-radius: 10px;
    margin-bottom: 12px;
    line-height: 1.5;
}

/* 基础信息卡（PPT 浅灰蓝信息块） */
.info-block {
    background: #f4f7fb;
    border-radius: 12px;
    padding: 4px 14px;
    margin-bottom: 12px;
}
.info-row { display: flex; padding: 9px 0; border-bottom: 1px dashed #dfe7ef; font-size: 14px; }
.info-row:last-child { border-bottom: none; }
.info-row .k { color: var(--muted); flex: none; width: 76px; }
.info-row .v { color: var(--text); font-weight: 600; flex: 1; min-width: 0; word-break: break-all; }

.card {
    background: var(--card);
    border-radius: 14px;
    padding: 15px 14px;
    margin-bottom: 12px;
    box-shadow: var(--shadow);
}
.card h3 { margin: 0 0 10px; font-size: 15px; color: #14406b; }
.muted { color: var(--muted); font-size: 12px; }
.center { text-align: center; }
.tip { margin: 10px 0 0; line-height: 1.5; }

/* 分类提示（tab 下蓝色小字） */
.cat-hint { color: var(--blue); font-size: 12px; margin: 9px 0 10px; line-height: 1.5; }

/* ---------- 按钮 ---------- */
.btn {
    display: block; width: 100%; border: none; border-radius: 12px; padding: 13px;
    font-size: 16px; font-weight: 600; color: #fff; background: var(--grad-btn);
    cursor: pointer; margin-bottom: 10px; text-align: center;
    box-shadow: 0 4px 12px rgba(13, 60, 100, .28);
    transition: transform .12s ease, opacity .12s ease;
}
.btn:active { transform: scale(.98); opacity: .9; }
.btn.secondary { background: #fff; color: #14406b; border: 1px solid #c6d8e6; box-shadow: none; }
.btn.danger { background: linear-gradient(135deg, #e2493d, #c0392b); box-shadow: 0 4px 12px rgba(197, 61, 45, .3); }
.btn.warn { background: linear-gradient(135deg, #f5a623, #e67e22); box-shadow: 0 4px 12px rgba(224, 128, 26, .3); }
.btn.ghost { background: #eef3f8; color: #14406b; box-shadow: none; }
/* 红底白字警示按钮（我的隐患/整改复核） */
.btn.danger { background: linear-gradient(135deg, #e0342f, #c62828); color: #fff; box-shadow: 0 6px 14px rgba(198, 40, 40, .28); }
.row { display: flex; gap: 10px; }
.row .btn { flex: 1; }

/* 底部固定提交大按钮（PPT 渐变 + 大字距） */
/* 固定提交按钮：承载在不透明底栏上，滚动时底栏遮住下方内容，文字永不与按钮重叠 */
.submit-bar {
    position: fixed; bottom: 0; left: 50%; transform: translateX(-50%);
    width: 100%; max-width: 480px;
    background: var(--bg);
    padding: 10px 14px 14px;
    z-index: 19;
    box-shadow: 0 -6px 14px rgba(13, 43, 78, .05);
}
.submit-bar .btn-fixed { position: static; transform: none; width: 100%; }
.btn-fixed {
    position: fixed; bottom: 14px; left: 50%; transform: translateX(-50%);
    width: calc(100% - 28px); max-width: 452px;
    border: none; border-radius: 12px; padding: 14px;
    background: var(--grad-btn); color: #fff; font-size: 16px; font-weight: 700;
    letter-spacing: 6px; text-indent: 6px; cursor: pointer; z-index: 20;
    box-shadow: 0 8px 20px rgba(13, 60, 100, .38);
}
.btn-fixed:active { opacity: .92; }

/* 首页安全码输入组 */
.input-group { display: flex; gap: 8px; }
.input-group input {
    flex: 1; min-width: 0; padding: 12px 14px; border: 1.5px solid #d3e0ec; border-radius: 12px;
    font-size: 15px; background: var(--fieldbg); outline: none; transition: border-color .15s, box-shadow .15s;
}
.input-group input:focus { border-color: var(--blue); background: #fff; box-shadow: 0 0 0 3px rgba(47, 123, 217, .12); }
.input-group .btn.go { width: auto; flex: none; margin-bottom: 0; padding: 0 22px; }

.divider { display: flex; align-items: center; gap: 10px; margin: 14px 0; color: var(--muted); font-size: 12px; }
.divider::before, .divider::after { content: ''; flex: 1; height: 1px; background: var(--line); }

/* ---------- 表单 ---------- */
.field { margin-bottom: 13px; }
.field > label { display: block; font-size: 13px; color: var(--text); font-weight: 600; margin-bottom: 6px; }
.field input, .field select, .field textarea {
    width: 100%; padding: 11px 12px; border: 1px solid #e0e8f0; border-radius: 10px; font-size: 15px;
    background: var(--fieldbg); outline: none; transition: border-color .15s, box-shadow .15s; color: var(--text);
}
.field input:focus, .field select:focus, .field textarea:focus {
    border-color: var(--blue); background: #fff; box-shadow: 0 0 0 3px rgba(47, 123, 217, .12);
}
.field textarea { resize: vertical; min-height: 60px; }
.field input[type="checkbox"], .field input[type="radio"] { width: auto; margin-right: 4px; }
.field label .req, .req { color: var(--red); margin-left: 2px; font-weight: 600; }

/* ---------- 分段页签（PPT 三档胶囊） ---------- */
.seg { display: flex; gap: 8px; }
.seg .seg-t {
    flex: 1; text-align: center; padding: 10px 4px; border-radius: 10px;
    background: #e9f0f7; color: #45607a; font-size: 14px; cursor: pointer;
    font-weight: 500; transition: all .15s ease; border: 1px solid transparent; white-space: nowrap;
}
.seg .seg-t.on {
    background: var(--grad-btn); color: #fff; font-weight: 600;
    box-shadow: 0 3px 8px rgba(13, 60, 100, .28);
}
/* 页签过多（>3 个）自适应：横向滚动胶囊条，隐藏滚动条，激活项 JS 自动居中 */
.seg.seg-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.seg.seg-scroll::-webkit-scrollbar { display: none; }
.seg.seg-scroll .seg-t { flex: 0 0 auto; padding: 10px 18px; }

/* 首页身份选择（沿用 tab 类名） */
.tabs { display: flex; gap: 8px; margin-bottom: 12px; }
.tab {
    flex: 1; text-align: center; padding: 10px 4px; border-radius: 10px;
    background: #e9f0f7; color: #45607a; font-size: 13px; cursor: pointer; font-weight: 500;
}
.tab.active { background: var(--grad-btn); color: #fff; font-weight: 600; box-shadow: 0 3px 8px rgba(13, 60, 100, .28); }

/* ---------- 排查项卡片（紧凑三段：标题通栏 / 依据单行省略 / 按钮右对齐） ---------- */
.chk-item {
    padding: 9px 2px 8px; border-bottom: 1px solid #f2f5f9;
    border-radius: 10px; transition: background .15s ease;
}
.chk-item:last-child { border-bottom: none; }
.chk-top { display: flex; align-items: flex-start; gap: 8px; }
.chk-title { flex: 1; min-width: 0; font-size: 13px; color: var(--text); line-height: 1.5; }
.chk-title .badge.major { margin-left: 6px; }
.chk-law {
    margin: 3px 0 0 26px; font-size: 10px; color: #94a6b8; line-height: 1.5;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.chk-foot { display: flex; justify-content: flex-end; margin: 6px 0 0 26px; }
.chk-btns { display: flex; gap: 6px; }
.chk-btn {
    padding: 4px 11px; border-radius: 14px; background: #f1f5f9; color: #7b8ea0;
    font-size: 11px; cursor: pointer; border: 1px solid transparent; white-space: nowrap; transition: all .12s ease;
}
.chk-btn.ok.on { background: var(--green); color: #fff; font-weight: 600; }
.chk-btn.no.on { background: var(--red); color: #fff; font-weight: 600; }
.chk-btn.na.on { background: #5b7488; color: #fff; font-weight: 600; }
/* 结论状态底色：绿=符合 红=不符 灰=不涉及，长列表一眼扫出未排查项 */
.chk-item.r-ok { background: #f5fbf7; }
.chk-item.r-no { background: #fdf6f5; }
.chk-item.r-na { background: #f6f9fb; }
/* 检查频次标签：未查=红底白字，已查=绿底白字（次数可累加） */
.freq-chip {
    display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 10px;
    font-size: 11px; line-height: 18px; font-weight: 600; white-space: nowrap; vertical-align: middle;
}
.freq-chip.zero { background: var(--red); color: #fff; }
.freq-chip.ok { background: var(--green); color: #fff; }
/* 整改要求提醒 */
.chk-advice {
    margin: 5px 0 0 26px; padding: 6px 10px; border-left: 3px solid var(--teal, #2bb3a3);
    background: #f3fbfa; border-radius: 0 8px 8px 0; font-size: 11px; color: #4a6577; line-height: 1.5;
}

/* 行下展开区（符合照片 / 不符合已填摘要） */
.chk-sub { padding: 0 2px 12px; }
.chk-sub-label { font-size: 13px; color: var(--text); font-weight: 600; margin-bottom: 6px; }
.chk-sub-note { font-size: 12px; color: var(--muted); margin: 4px 0 0; }
.chk-filled {
    background: #f4f7fb; border: 1px solid var(--line); border-radius: 10px;
    padding: 9px 12px; font-size: 13px; color: var(--text);
    display: flex; align-items: center; gap: 8px;
}
.chk-filled .fix { margin-left: auto; color: var(--blue); cursor: pointer; flex: none; font-size: 13px; }
.chk-filled .no-badge { color: var(--red); flex: none; }

/* 照片九宫格（PPT：缩略图 + 虚线加号） */
.photo-grid { display: flex; gap: 8px; flex-wrap: wrap; }
.photo-grid .ph { width: 64px; height: 64px; border-radius: 10px; border: 1px solid var(--line); position: relative; }
.photo-grid .ph img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 9px; }
.photo-grid .ph .del {
    position: absolute; top: -7px; right: -7px; width: 18px; height: 18px; border-radius: 50%;
    background: #e2493d; color: #fff; font-size: 13px; line-height: 17px; text-align: center;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .25); cursor: pointer; user-select: none;
}
.photo-grid .ph .del:active { background: #c0392b; }
.photo-grid .add {
    width: 64px; height: 64px; border: 1.5px dashed #b9c9d8; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    color: #8ba2b5; font-size: 24px; cursor: pointer; background: #f8fafc; font-weight: 300;
}
.photo-grid .add:active { background: #eef3f8; }

/* ---------- 排查页签吸顶（滚动时固定在顶栏下方） ---------- */
.sticky-tabs {
    position: sticky; top: var(--hh, 68px); z-index: 5;
    background: var(--card); margin: -15px -14px 10px; padding: 14px 14px 2px;
    border-radius: 14px 14px 0 0; box-shadow: 0 8px 10px -9px rgba(13, 43, 78, .22);
}

/* ---------- 返回顶部 ---------- */
.back-top {
    position: fixed; right: 14px; bottom: 88px; width: 40px; height: 40px;
    border: none; border-radius: 50%; background: rgba(20, 64, 107, .82); color: #fff;
    font-size: 17px; z-index: 18; cursor: pointer; display: none;
    align-items: center; justify-content: center;
    box-shadow: 0 4px 12px rgba(13, 43, 78, .32);
}
.back-top.show { display: flex; }
.back-top:active { background: rgba(13, 43, 78, .95); }
/* 自查页有固定提交栏（底 54px + 高约 74px），返回顶部按钮抬高避让 */
body.submit-on .back-top { bottom: 140px; }

/* ---------- 下拉刷新提示条（顶部居中胶囊，下拉时随手指下滑，松手触发刷新） ---------- */
.ptr {
    position: fixed; left: 50%; top: 10px; z-index: 30;
    transform: translate(-50%, -160%);
    display: flex; align-items: center; gap: 6px;
    padding: 6px 14px; border-radius: 20px;
    background: rgba(255, 255, 255, .96); color: var(--blue);
    font-size: 12px; font-weight: 600; line-height: 1.4;
    box-shadow: 0 4px 14px rgba(13, 43, 78, .2);
    opacity: 0; pointer-events: none;
    transition: transform .22s ease, opacity .2s ease;
}
.ptr.show { opacity: 1; }
.ptr .ptr-ico { display: inline-block; font-size: 13px; transition: transform .2s ease; }
.ptr.over .ptr-ico { transform: rotate(180deg); }
.ptr.loading .ptr-ico { animation: ptr-spin .8s linear infinite; }
@keyframes ptr-spin { from { transform: rotate(0); } to { transform: rotate(360deg); } }

/* ---------- 提交栏双按钮（保存草稿 + 提交） ---------- */
.submit-bar .bar-row { display: flex; gap: 10px; }
.submit-bar .bar-row .btn-fixed { width: auto; flex: 2.1; letter-spacing: 4px; text-indent: 4px; }
.submit-bar .bar-row .btn-fixed.draft {
    flex: 1; background: #fff; color: #45607a; border: 1.5px solid #b9c9d8;
    box-shadow: none; font-size: 15px; letter-spacing: 1px; text-indent: 0;
}
.submit-bar .bar-row .btn-fixed.draft:active { background: #eef3f8; }

/* ---------- 统计卡 ---------- */
.stat-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.stat {
    flex: 1 1 30%; background: var(--grad-btn); color: #fff; border-radius: 14px; padding: 14px 10px;
    text-align: center; box-shadow: 0 4px 12px rgba(13, 60, 100, .25);
}
.stat .n { font-size: 24px; font-weight: 700; line-height: 1.2; }
.stat .t { font-size: 12px; opacity: .88; margin-top: 2px; }
/* 副标：主数字为「逐项（问题）」口径，整单口径降为副标，避免与主数字冲突时看不出口径 */
.stat .sb { font-size: 11px; opacity: .8; margin-top: 4px; line-height: 1.3; }
.stat.red { background: linear-gradient(135deg, #e2493d, #c0392b); }
.stat.green { background: linear-gradient(135deg, #22a35e, #1e8449); }
.stat.warn { background: linear-gradient(135deg, #f5a623, #e67e22); }

/* ---------- 列表 ---------- */
.list .li { border-bottom: 1px solid #edf2f6; padding: 11px 0; }
.list .li:last-child { border-bottom: none; }
.list .li .t { font-weight: 600; }
.list .li .m { font-size: 12px; color: var(--muted); }
.status { font-size: 12px; padding: 1px 8px; border-radius: 10px; background: #e9f0f7; color: #14406b; }

/* 我的页 · 企业安全码模块 */
.sc-card { text-align: center; }
.sc-title { font-size: 16px; font-weight: 700; color: #14406b; }
.sc-sub { font-size: 12px; color: var(--muted); margin: 4px 0 12px; }
.sc-img { display: flex; justify-content: center; }
.sc-img img { width: 200px; height: auto; border: 1px solid #eef2f6; border-radius: 8px; background: #fff; }
.sc-dl { margin-top: 12px; min-width: 170px; }
.sc-tip { margin-top: 8px; font-size: 11px; color: #9aa7b4; }

/* 人员管理：每行右侧操作（编辑 / 禁用） */
.staff-li { display: flex; align-items: center; gap: 10px; }
.staff-li .li-main { flex: 1; min-width: 0; }
.staff-li .li-actions { flex: none; display: flex; gap: 8px; }
.btn-mini {
    flex: none; padding: 7px 14px; border-radius: 9px; font-size: 13px; font-weight: 600;
    border: 1px solid #cfe0ee; background: #fff; color: #14406b; cursor: pointer; white-space: nowrap;
}
.btn-mini:active { transform: scale(.97); opacity: .92; }
.btn-mini.off { color: #c0392b; border-color: #f0c6c0; }
.btn-mini.on { color: #1d8a4e; border-color: #bfe3cd; }
/* 搜索式选择器（人员管理：所属企业 / 所属区域） */
.ent-pick { position: relative; }
.ent-pick-panel { position: absolute; left: 0; right: 0; top: calc(100% + 4px); background: #fff; border: 1px solid #e3e9f0; border-radius: 10px; box-shadow: 0 10px 28px rgba(20, 64, 107, .14); z-index: 40; max-height: 260px; overflow-y: auto; display: none; }
.ent-pick-item { padding: 10px 12px; border-bottom: 1px solid #f0f3f7; cursor: pointer; }
.ent-pick-item:last-of-type { border-bottom: 0; }
.ent-pick-item .t { font-size: 14px; color: #1a1a1a; word-break: break-all; }
.ent-pick-item .m { font-size: 12px; color: var(--muted); margin-top: 2px; }
.ent-pick-item:active { background: #f2f7fc; }
.ent-pick-more, .ent-pick-empty { padding: 9px 12px; font-size: 12px; text-align: center; }
.ent-pick-sub { margin-top: 6px; font-size: 12px; }
.tag-off { font-size: 11px; font-weight: 600; color: #c0392b; background: #fbeae8; padding: 1px 6px; border-radius: 8px; margin-left: 4px; }

/* 通用弹窗 */
.modal-mask {
    position: fixed; inset: 0; z-index: 60; background: rgba(13, 43, 78, .45);
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.modal-box {
    width: 100%; max-width: 420px; background: #fff; border-radius: 16px; padding: 18px;
    box-shadow: 0 20px 50px rgba(13, 43, 78, .3); animation: modalIn .18s ease;
}
@keyframes modalIn { from { opacity: 0; transform: translateY(12px) scale(.97); } to { opacity: 1; transform: none; } }
.modal-head { font-size: 17px; font-weight: 700; color: var(--text); margin-bottom: 14px; }
.status.closed { background: #e6f6ed; color: var(--green); }
.status.supervise { background: #fdecea; color: var(--red); }
.status.recheck { background: #fdf3e3; color: var(--orange); }
.status.approve { background: #ede7f6; color: #5e35b1; }
/* 负责人审批弹窗：整改信息卡片 */
.ap-card { border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; margin: 6px 0; background: #fafcfe; font-size: 13px; line-height: 1.6; }
.ap-card .ap-hd { font-weight: 600; color: #14406b; }
/* 整改照片缩略图：可点击放大 */
.dt-photos img { cursor: zoom-in; }
/* 图片查看器：全屏预览，点任意处关闭 */
.img-viewer { position: fixed; inset: 0; z-index: 999; background: rgba(0, 0, 0, .86); display: none; align-items: center; justify-content: center; }
.img-viewer.show { display: flex; }
.img-viewer img { max-width: 94vw; max-height: 86vh; border-radius: 8px; box-shadow: 0 8px 32px rgba(0, 0, 0, .5); }

.badge { display: inline-block; padding: 0 7px; border-radius: 9px; font-size: 11px; vertical-align: 1px; line-height: 17px; }
.badge.major { background: var(--red); color: #fff; }
.badge.general { background: #0f89a8; color: #fff; }

/* ---------- 底部弹出面板（PPT「填写隐患详情」） ---------- */
.modal-mask {
    position: fixed; inset: 0; background: rgba(13, 30, 48, .55);
    display: none; z-index: 60; align-items: flex-end; justify-content: center;
}
.modal-mask.show { display: flex; }
.modal {
    background: #fff; width: 100%; max-width: 480px;
    border-radius: 20px 20px 0 0;
    padding: 18px 18px calc(16px + env(safe-area-inset-bottom, 0px));
    max-height: 88vh; overflow: auto;
    box-shadow: 0 -10px 40px rgba(0, 0, 0, .2);
    animation: sheetUp .22s ease;
}
@keyframes sheetUp { from { transform: translateY(40px); opacity: .4; } to { transform: none; opacity: 1; } }
.modal h3 { margin: 0 0 4px; color: #14406b; font-size: 17px; }
.modal .relate { color: var(--muted); font-size: 12px; margin-bottom: 12px; }
.close-x { float: right; color: var(--muted); cursor: pointer; font-size: 20px; line-height: 1; margin-left: 8px; }
.close-x:active { color: var(--red); }

/* ---------- 第三方机构选择器（搜索 + 单选弹层，替代原生 select） ---------- */
.agency-pick {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    width: 100%; padding: 11px 12px; border: 1px solid #e0e8f0; border-radius: 10px;
    background: var(--fieldbg); font-size: 15px; color: var(--text); cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.agency-pick:active { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(47, 123, 217, .12); }
.agency-pick .ph { color: #9aacbe; }
.agency-pick > span { flex: 1; min-width: 0; line-height: 1.4; }
.agency-pick > i { font-style: normal; color: #9aacbe; font-size: 12px; flex: none; }
.agency-modal .agency-list { margin-top: 10px; max-height: 56vh; overflow: auto; -webkit-overflow-scrolling: touch; }
.agency-item {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 12px 13px; border: 1px solid #e6edf4; border-radius: 12px;
    margin-bottom: 8px; cursor: pointer; transition: all .15s ease; background: #fbfdff;
}
.agency-item:active { background: #eef5fc; }
.agency-item .an { font-size: 14px; color: var(--text); line-height: 1.45; }
.agency-item .adot {
    flex: none; width: 20px; height: 20px; border-radius: 50%;
    border: 2px solid #c6d4e2; box-sizing: border-box; position: relative;
}
.agency-item.on { border-color: var(--blue); background: #eef5fc; box-shadow: 0 2px 8px rgba(47, 123, 217, .14); }
.agency-item.on .an { color: #14406b; font-weight: 600; }
.agency-item.on .adot { border-color: var(--blue); background: var(--blue); }
.agency-item.on .adot::after {
    content: ''; position: absolute; left: 5px; top: 2px; width: 5px; height: 9px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
/* 弹层内搜索框：放大镜图标 + 大号圆角输入（机构 / 专家选择弹层通用） */
.modal-search {
    display: flex; align-items: center; gap: 9px; margin-top: 12px;
    padding: 0 13px; border: 1px solid #e0e8f0; border-radius: 12px;
    background: var(--fieldbg); transition: border-color .15s, box-shadow .15s, background .15s;
}
.modal-search:focus-within { border-color: var(--blue); background: #fff; box-shadow: 0 0 0 3px rgba(47, 123, 217, .12); }
.modal-search svg, .modal-search i { color: #9aacbe; flex: none; }
.modal-search input {
    flex: 1; min-width: 0; border: 0; outline: 0; background: transparent;
    padding: 13px 0; font-size: 15px; color: var(--text); line-height: 1.4;
}
.modal-search input::placeholder { color: #9aacbe; }

/* 提交整改：逐项勾选分批提交（本次改几条勾几条） */
.rt-allbar {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 10px; margin-bottom: 10px; border-radius: 10px;
    background: var(--hintbg); color: var(--blue); font-size: 13px; font-weight: 600;
}
.rt-allbar .btn-sm { padding: 3px 10px; margin-left: 6px; }
.rt-item.sel { border-color: var(--blue); background: #f4faff; }
.rt-pick { display: block; margin: -2px 0 6px; }
.rt-pick input { position: absolute; opacity: 0; width: 0; height: 0; }
.rt-pick .rt-box {
    display: inline-block; width: 18px; height: 18px; border: 1.5px solid #b7c6d4; border-radius: 4px;
    background: #fff; vertical-align: -4px; position: relative;
}
.rt-pick input:checked + .rt-box { background: var(--blue); border-color: var(--blue); }
.rt-pick input:checked + .rt-box::after {
    content: ''; position: absolute; left: 5px; top: 2px; width: 5px; height: 9px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
.rt-st { font-size: 11px; font-weight: 600; border-radius: 10px; padding: 1px 7px; margin-left: 6px; vertical-align: 2px; }
/* 排查项等级标签：重大=红底白字方块，一般=蓝底白字方块；与下方圆角时限标签形状不同，一眼区分 */
.dt-lv { display: inline-block; font-size: 11px; font-weight: 600; line-height: 18px; padding: 0 6px; border-radius: 4px; margin-right: 6px; vertical-align: 2px; white-space: nowrap; background: #2b7fc4; color: #fff; }
.dt-lv.major { background: #d93025; }
/* 不符合项各自的整改时限（按项级别计算）：红底白字胶囊；超期时后续再追加 .overdue-tag 深红底白字标签 */
.dt-dl { display: inline-block; font-size: 11px; font-weight: 600; line-height: 18px; border-radius: 10px; padding: 0 8px; margin-left: 6px; vertical-align: 2px; white-space: nowrap; background: #d93025; color: #fff; }
.rt-st.wait { background: #fff4e2; color: #b96a00; }
.rt-st.back { background: #fdeceb; color: #c0392b; }
.rt-st.ok { background: #e6f6ed; color: #157f45; }

/* 记录卡片：逐条问题计数 */
.cnt-line { font-size: 12px; margin-top: 4px; color: var(--muted); }
.cnt-line .warn { color: #d9801f; font-weight: 600; }
.cnt-line .oksel { color: #b96a00; font-weight: 600; }
.cnt-line .done { color: #1f9d57; font-weight: 600; }

/* 逐条审批：每条问题一张卡 + 不通过/通过两个按钮 */
.ap-hd { margin: 0 0 6px; }
.ap-item { border: 1px solid var(--line); border-radius: 12px; padding: 10px; margin-bottom: 10px; background: #fbfdff; }
.ap-title { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.5; }
.ap-muted { font-size: 12px; color: var(--muted); margin-top: 2px; line-height: 1.5; }
.ap-line { font-size: 13px; }
.ap-btns { display: flex; gap: 10px; margin-top: 8px; }
.btn-sm {
    flex: 1; padding: 8px 0; font-size: 13px; font-weight: 600; border-radius: 8px;
    border: 1px solid var(--line); background: #fff; color: var(--text);
}
.btn-sm.pass.on { background: #e6f6ed; border-color: #1f9d57; color: #157f45; }
.btn-sm.reject.on { background: #fdeceb; border-color: #e2493d; color: #c0392b; }
.ap-op { margin-top: 8px; }
.ap-op textarea {
    width: 100%; box-sizing: border-box; border: 1px solid var(--line); border-radius: 8px;
    padding: 8px 10px; font-size: 13px; color: var(--text); background: #fff; resize: vertical;
}
.ap-sum { font-size: 13px; color: var(--muted); text-align: center; padding: 6px 0 0; }
.ap-sum b { color: var(--blue); }


/* 提交整改：逐项确认整改情况 */
.rt-item {
    border: 1px solid var(--line); border-radius: 12px;
    padding: 12px; margin-bottom: 12px; background: #fbfdff;
}
.rt-item + .rt-item { margin-top: 12px; }
.rt-title { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.5; margin-bottom: 8px; }
.rt-label { font-size: 13px; color: var(--text); font-weight: 600; margin: 10px 0 6px; }
.rt-item .seg { display: flex; gap: 10px; }
.rt-item .seg-t {
    flex: 1; text-align: center; padding: 9px 0; border-radius: 9px;
    background: #e9f0f7; color: #45607a; font-size: 14px; cursor: pointer;
    border: 1.5px solid transparent; transition: all .12s ease;
}
.rt-item .seg-t.on { background: #fff7e8; color: #b96a00; border-color: #f0b13c; font-weight: 600; }
.rt-item .rt-desc {
    width: 100%; box-sizing: border-box; border: 1px solid var(--line); border-radius: 10px;
    padding: 9px 10px; font-size: 13px; color: var(--text); resize: vertical; font-family: inherit;
}
.rt-item .rt-desc:focus { outline: none; border-color: var(--blue); }
.rt-item .photo-grid { margin-top: 2px; }
/* 详情弹窗：整改照片缩略图 */
.dt-photos { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.dt-photos img { width: 54px; height: 54px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); }

/* 隐患详情弹窗：结果总览三色卡 + 不符合/符合/不涉及分组折叠 */
.dt-ent { font-size: 16px; font-weight: 700; color: #14406b; line-height: 1.4; }
.dt-meta { color: var(--muted); font-size: 12px; margin-top: 5px; line-height: 1.7; }
.dt-ov { display: flex; gap: 8px; margin: 12px 0; }
.dt-chip { flex: 1; text-align: center; border-radius: 10px; padding: 9px 4px; }
.dt-chip b { display: block; font-size: 20px; line-height: 1.2; }
.dt-chip span { font-size: 11px; color: #6b8299; }
.dt-chip.bad { background: #fdecea; } .dt-chip.bad b { color: #d63324; }
.dt-chip.good { background: #e6f6ed; } .dt-chip.good b { color: #1f9d57; }
.dt-chip.gray { background: #eef3f8; } .dt-chip.gray b { color: #45607a; }
.dt-sec { border: 1px solid var(--line); border-radius: 12px; margin-bottom: 10px; background: #fbfdff; overflow: hidden; }
.dt-sec-hd {
    display: flex; align-items: center; gap: 8px; padding: 11px 12px;
    font-size: 14px; font-weight: 600; color: var(--text); cursor: pointer; user-select: none;
}
.dt-sec-hd:active { background: #f1f6fa; }
/* 0 项分组：不可点击，去掉手型与按压反馈 */
.dt-sec.empty .dt-sec-hd { cursor: default; opacity: .75; }
.dt-sec.empty .dt-sec-hd:active { background: transparent; }
.dt-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.dt-sec-bad .dt-dot { background: #e2493d; } .dt-sec-bad .dt-cnt { color: #d63324; }
.dt-sec-good .dt-dot { background: #1f9d57; } .dt-sec-good .dt-cnt { color: #1f9d57; }
.dt-sec-gray .dt-dot { background: #93a7ba; } .dt-sec-gray .dt-cnt { color: #6b8299; }
.dt-cnt { font-size: 12px; font-weight: 700; }
.dt-arrow { margin-left: auto; color: #8aa0b5; font-size: 11px; transition: transform .2s ease; }
.dt-sec.open .dt-arrow { transform: rotate(180deg); }
.dt-sec-bd { display: none; padding: 2px 12px 11px; }
.dt-sec.open .dt-sec-bd { display: block; }
.dt-item {
    padding: 9px 10px; border-radius: 10px; background: #fff; border: 1px solid #e8eef4;
    margin-bottom: 6px; font-size: 13px; line-height: 1.55; color: var(--text);
}
.dt-item .dt-desc {
    margin-top: 5px; color: #b03024; font-size: 12.5px; line-height: 1.55;
    background: #fdf3f2; border-radius: 8px; padding: 6px 8px;
}
.dt-sub { font-size: 14px; font-weight: 700; color: #14406b; margin: 14px 0 4px; }
#detailBody ul { margin: 0 0 0 18px; padding: 0; font-size: 13px; line-height: 1.6; color: var(--text); }

/* 整改信息 / 复查记录：时间轴卡片（左轨 + 状态圆点 + 卡片） */
.tl { position: relative; margin: 8px 0 4px 5px; padding-left: 16px; }
.tl::before { content: ''; position: absolute; left: 4px; top: 8px; bottom: 8px; width: 2px; border-radius: 2px; background: linear-gradient(#d7e4f0, #eaf1f8); }
.tl-item { position: relative; padding-bottom: 10px; }
.tl-item:last-child { padding-bottom: 0; }
.tl-dot { position: absolute; left: -16px; top: 13px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 2px #d7e4f0; box-sizing: content-box; }
.tl-dot.ok { background: #1f9d57; }
.tl-dot.warn { background: #e6932c; }
.tl-dot.bad { background: #e2493d; }
.tl-card { background: #fff; border: 1px solid #e8eef4; border-radius: 12px; padding: 10px 12px; box-shadow: 0 1px 3px rgba(20, 64, 107, .05); }
.tl-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.tl-title { font-size: 13px; font-weight: 600; color: #1d3a56; line-height: 1.45; flex: 1; }
.tl-tags { display: flex; gap: 5px; flex-wrap: wrap; flex: none; }
.tl-tag { font-size: 10.5px; line-height: 1; padding: 4px 8px; border-radius: 20px; white-space: nowrap; font-weight: 600; }
.tl-tag.ok { background: #e6f6ed; color: #1f9d57; }
.tl-tag.warn { background: #fdf3e6; color: #d97a15; }
.tl-tag.bad { background: #fdecea; color: #d63324; }
.tl-desc { margin-top: 7px; font-size: 12.5px; color: #3d5a76; line-height: 1.55; background: #f4f8fc; border-radius: 8px; padding: 7px 9px; }
.tl-time { margin-top: 7px; font-size: 11px; color: #8aa0b5; }
/* 不符合项内嵌「整改信息」折叠筐：默认收起，点头部展开 */
.rt-fold { margin-top: 8px; border: 1px solid #d9e5f0; border-radius: 10px; background: #f8fbfd; overflow: hidden; }
.rt-fold-hd { display: flex; align-items: center; gap: 6px; padding: 7px 10px; font-size: 12px; font-weight: 600; color: #2a5d8f; cursor: pointer; }
.rt-fold-hd:active { background: #eef4f9; }
.rt-fold-cnt { font-weight: 400; font-size: 11px; color: #6b8299; }
.rt-fold .dt-arrow { margin-left: auto; font-size: 10px; }
.rt-fold-bd { display: none; padding: 2px 10px 10px; border-top: 1px dashed #e3ecf3; background: #fff; }
.rt-fold.open .rt-fold-bd { display: block; }
.rt-fold.open .dt-arrow { transform: rotate(180deg); }
.rt-fold .tl { margin: 6px 0 0 4px; }

.tl-card .dt-photos { margin-top: 8px; }

/* 通用「无权操作」静态页（盾牌锁图案 + 说明 + 返回） */
.deny-wrap { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 68px 30px 40px; }
.deny-art { width: 132px; height: 132px; filter: drop-shadow(0 6px 14px rgba(31, 95, 174, .18)); }
.deny-title { margin-top: 22px; font-size: 19px; font-weight: 700; color: #14406b; letter-spacing: 2px; }
.deny-msg { margin-top: 10px; font-size: 13.5px; color: #6b8299; line-height: 1.7; max-width: 270px; }
.deny-back { width: auto; margin-top: 28px; min-width: 152px; padding: 11px 34px; font-size: 15px; }

/* 隐患等级二选（PPT：一般橙框选中 / 重大浅灰） */
.lv-seg { display: flex; gap: 10px; }
.lv {
    flex: 1; text-align: center; padding: 11px; border-radius: 10px;
    background: #e9f0f7; color: #45607a; font-size: 15px; cursor: pointer;
    border: 1.5px solid transparent; transition: all .12s ease;
}
.lv.on { background: #fff; color: var(--orange); border-color: var(--orange); font-weight: 600; }

/* 弹窗底部保存按钮 */
.btn-save {
    display: block; width: 100%; border: none; border-radius: 12px; padding: 13px;
    background: var(--grad-btn); color: #fff; font-size: 16px; font-weight: 700;
    letter-spacing: 6px; text-indent: 6px; cursor: pointer; margin-top: 6px;
    box-shadow: 0 6px 16px rgba(13, 60, 100, .3);
}
.btn-save:active { opacity: .92; }
/* 未满足提交条件时的置灰态（提交自查 / 提交整改） */
.btn-save:disabled, .btn-fixed:disabled {
    background: #b9c7d4; color: #eef3f8; box-shadow: none; cursor: not-allowed; letter-spacing: 6px; text-indent: 6px;
}
.btn-save:disabled:active, .btn-fixed:disabled:active { opacity: 1; }

/* 双按钮（保存草稿 + 提交整改） */
.btn-save-row { display: flex; gap: 10px; margin-top: 6px; }
.btn-save-row .btn-save { flex: 1; margin-top: 0; }
.btn-save.draft { background: #eef3f8; color: #14406b; box-shadow: none; letter-spacing: 2px; text-indent: 2px; }
.btn-save.draft:active { background: #e2ecf5; }

/* 复查弹窗：问题列表（PPT：选择/已选） */
.rc-list { background: #fff; border-radius: 12px; padding: 2px 14px; margin-bottom: 10px; box-shadow: 0 4px 18px rgba(20,64,107,.08); }
.rc-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 2px; border-bottom: 1px dashed #e3edf5; cursor: pointer; }
.rc-row:last-child { border-bottom: none; }
.rc-row .t { flex: 1; font-size: 14px; color: #17325a; line-height: 1.5; font-weight: 500; }
.rc-row .t b { color: #1e6fb8; margin-right: 8px; font-weight: 700; }
.rc-pick { min-width: 62px; padding: 6px 12px; border-radius: 16px; border: 1px solid #d5e2ee; background: #f1f6fa; color: #4a6b8a; font-size: 13px; cursor: pointer; }
.rc-pick.on { background: #1e6fb8; border-color: #1e6fb8; color: #fff; }

/* 复查弹窗：企业整改情况参考块 */
.rc-ref { background: #f4f8fb; border: 1px solid #e3edf5; border-radius: 8px; padding: 8px 10px; font-size: 13px; color: #556; line-height: 1.7; }
/* 复查弹窗：完成/到位 分段按钮（PPT 橙黄选中态，区别于整改页蓝色） */
.rc-seg { gap: 12px; }
.rc-seg .seg-t {
    padding: 12px 4px; border-radius: 10px; background: #f1f6fa; color: #45607a;
    border: 1px solid #e0eaf3; font-size: 14px; font-weight: 500; transition: all .15s ease;
}
.rc-seg .seg-t.on {
    background: #fff7e8; color: #c07a00; border-color: #f0b13c; font-weight: 600; box-shadow: none;
}
/* 复核说明输入框（PPT 全宽浅边框圆角） */
.rc-op {
    display: block; width: 100%; box-sizing: border-box; resize: none;
    border: 1px solid #dfe9f2; border-radius: 10px; padding: 11px 12px;
    font-size: 14px; color: var(--text); background: #fbfdfe; font-family: inherit; line-height: 1.6;
}
.rc-op::placeholder { color: #9fb3c8; }
.rc-op:focus { outline: none; border-color: var(--blue); background: #fff; }

/* 处置日志时间轴（PPT：上报 → 整改 → 复核 → 销号 → 141） */
.yh-tl { margin-top: 12px; padding-left: 4px; }
.tl-li { position: relative; padding: 0 0 14px 20px; border-left: 2px solid #d9e4ee; }
.tl-li:last-child { border-left-color: transparent; padding-bottom: 2px; }
.tl-li:before { content: ''; position: absolute; left: -6px; top: 4px; width: 10px; height: 10px; border-radius: 50%; background: #1e6fb8; box-shadow: 0 0 0 3px rgba(30,111,184,.12); }
.tl-li.ok:before { background: #22a35e; box-shadow: 0 0 0 3px rgba(34,163,94,.14); }
.tl-li.warn:before { background: #e67e22; box-shadow: 0 0 0 3px rgba(230,126,34,.14); }
.tl-li .tl-t { font-weight: 600; color: #14406b; }
.tl-li.ok .tl-t { color: #22a35e; }
.tl-li.warn .tl-t { color: #e67e22; }
.tl-li .tl-m { color: #8a97a5; font-size: 12px; margin-top: 2px; line-height: 1.7; }

.picker-item { padding: 12px 6px; border-bottom: 1px solid #edf2f6; display: flex; justify-content: space-between; align-items: center; cursor: pointer; border-radius: 8px; }
.picker-item:last-child { border-bottom: none; }
.picker-item:active { background: #f2f7fb; }
.picker-item .t { font-weight: 600; }

.toast {
    position: fixed; left: 50%; top: 42%; transform: translateX(-50%) scale(.94);
    background: rgba(13, 35, 58, .9); color: #fff;
    padding: 11px 20px; border-radius: 10px; z-index: 100; font-size: 14px; max-width: 80%;
    text-align: center; display: none; backdrop-filter: blur(4px);
    animation: toastIn .18s ease;
}
@keyframes toastIn { from { opacity: 0; transform: translateX(-50%) scale(.94) translateY(8px); } to { opacity: 1; transform: translateX(-50%) scale(.94) translateY(0); } }

/* ---------- 温馨提示弹窗（未授权访问等正式提示，居中卡片） ---------- */
.notice-mask { align-items: center; }
.notice-card {
    background: #fff; width: 78%; max-width: 300px; text-align: center;
    border-radius: 18px; padding: 28px 22px 20px;
    box-shadow: 0 18px 48px rgba(13, 35, 58, .25);
    animation: noticeIn .22s ease;
}
.notice-title { font-size: 17px; font-weight: 700; color: #17324f; }
.notice-msg { font-size: 14px; color: #5b6b7d; line-height: 1.75; margin: 8px 2px 18px; }
.notice-btn { width: 100%; margin-bottom: 0; border-radius: 10px; }
@keyframes noticeIn { from { opacity: 0; transform: translateY(14px) scale(.95); } to { opacity: 1; transform: none; } }

.logo { width: 46px; height: 46px; border-radius: 10px; vertical-align: middle; margin-right: 8px; }

/* ---------- 手机号验证 + 滑块拼图 ---------- */
.cap-label { font-size: 13px; color: var(--muted); margin: 4px 0 8px; }
.slider {
    position: relative; width: 100%; height: 44px; border-radius: 8px;
    overflow: hidden; background: #eef2f7; user-select: none; touch-action: none;
    border: 1px solid var(--line);
}
.slider-bg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; pointer-events: none; }
.slider-bar { position: absolute; left: 0; top: 0; height: 100%; width: 0; background: rgba(47, 158, 143, .22); z-index: 1; pointer-events: none; }
.slider-text {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    color: #7a8aa0; font-size: 13px; pointer-events: none; z-index: 2;
}
.slider.verified .slider-text { color: #1c8a4e; font-weight: 600; }
.slider-handle {
    position: absolute; left: 0; top: 2px; width: 40px; height: 40px; border-radius: 8px;
    background: linear-gradient(135deg, #2f9e8f, #1f7f8f); color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 18px;
    cursor: grab; z-index: 3; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); touch-action: none;
}
.slider-handle.ok { background: linear-gradient(135deg, #22a35e, #1c8a4e); cursor: default; }
.slider-refresh {
    position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
    width: 26px; height: 26px; border-radius: 50%; background: rgba(255, 255, 255, .88);
    color: #5b7fa6; display: flex; align-items: center; justify-content: center;
    font-size: 15px; cursor: pointer; z-index: 4; box-shadow: 0 1px 3px rgba(0, 0, 0, .15);
}
.slider-refresh:active { transform: translateY(-50%) rotate(180deg); }
#phSend:disabled { opacity: .55; cursor: not-allowed; }
#phSend { margin-top: 14px; }
#phVerify { margin-top: 10px; }

/* ---------- 监管检查端：是否委托第三方（否/是）与提示文案（PPT slide15） ---------- */
.yn-seg { display: flex; gap: 8px; }
.yn-seg .yn {
    flex: 1; text-align: center; padding: 11px 4px; border-radius: 10px;
    background: #e9f0f7; color: #45607a; font-size: 14px; cursor: pointer;
    font-weight: 500; transition: all .15s ease;
}
.yn-seg .yn.on { background: var(--grad-btn); color: #fff; font-weight: 600; box-shadow: 0 3px 8px rgba(13, 60, 100, .28); }
.yn-seg .yn.yes.on { background: linear-gradient(135deg, #f5a623, #e08a00); box-shadow: 0 3px 8px rgba(224, 138, 0, .3); }
.sub-tip { font-size: 11px; color: var(--muted); margin-top: 5px; }
#insAgency { appearance: auto; }

/* 排查项：序号（紧凑 18px，间距由 .chk-top gap 统一控制） + 同类折叠 + 批量不涉及 */
.chk-seq {
    flex: 0 0 18px; width: 18px; height: 18px; line-height: 18px; text-align: center;
    border-radius: 50%; background: #e9f0f7; color: #45607a; font-size: 11px; font-weight: 600;
    align-self: flex-start; margin-top: 1px;
}
.cat-group { border: 1px solid #eef2f6; border-radius: 12px; margin-bottom: 12px; overflow: hidden; background: #fff; }
.cat-group-hd {
    display: flex; align-items: center; gap: 8px; padding: 10px 12px; background: #f3f7fb; cursor: pointer;
    border-bottom: 1px solid #eef2f6;
}
.cat-group.collapsed .cat-group-body { display: none; }
/* 折叠箭头：字符 ▾ 字形在字框内偏上导致与文字不居中，改用 CSS 三角精确居中（跨 WebView 一致） */
.cat-toggle { width: 22px; height: 18px; flex: none; position: relative; font-size: 0; transition: transform .15s; }
.cat-toggle::before {
    content: ''; position: absolute; left: 5px; top: 6px; width: 0; height: 0;
    border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 7px solid #3d6a94;
}
.cat-group.collapsed .cat-toggle { transform: rotate(-90deg); }
.cat-name { font-weight: 600; color: #234; font-size: 14px; }
.cat-n { font-size: 12px; color: var(--muted); }
.cat-na {
    margin-left: auto; font-size: 12px; color: #2a7; background: #eafaf0; border: 1px solid #bfe9cf;
    border-radius: 14px; padding: 4px 10px; cursor: pointer;
}
.cat-na:active { background: #d3f3df; }
/* 本类不涉及：所属检查项全部为「不涉及」时高亮深蓝 */
.cat-na.on { background: #0d3c64; color: #fff; border-color: #0d3c64; font-weight: 600; }
.cat-na.on:active { background: #0a2f4e; }
.cat-group-body { padding: 0 10px; }

/* 概要数字条 */
.sum-bar { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 12px; }
.sum { flex: 1 1 28%; min-width: 64px; text-align: center; background: #f3f7fb; border-radius: 10px; padding: 8px 4px; }
.sum .sn { font-size: 18px; font-weight: 700; color: #1b3a5b; }
.sum .st { font-size: 11px; color: var(--muted); margin-top: 2px; }
.sum.warn .sn { color: #e08a00; }
.sum.green .sn { color: #1f9d57; }
.sum.red .sn { color: #e2493d; }

/* 筛选分段 */
.filter-seg { margin: 6px 0 10px; }

/* 问题清单预警色（左侧竖线已按反馈移除，仅保留文字预警标记） */
.prob-red .warn-tag { color: #e2493d; }
.warn-tag { color: #e2493d; font-weight: 600; }
/* 整改时限超期红标：超过计划整改时限 X 天（时限按系统参数动态计算） */
/* 超期标签：深红底白字（比时限标签更重一级），前后与「时限」标签保持红底白字体系 */
.overdue-tag { display: inline-block; padding: 0 8px; border-radius: 10px; background: #8e1b12; color: #fff; font-size: 11px; font-weight: 600; line-height: 18px; white-space: nowrap; }
.prob-orange .warn-tag { color: #e08a00; }
.prob-yellow .warn-tag { color: #b58a00; }
.pstate { color: #2a7; }

/* 统计卡片可点击筛选：点击后高亮并过滤下方记录，再次点击恢复全部 */
.sum.clickable { cursor: pointer; transition: background .15s, box-shadow .15s; }
.sum.clickable:active { background: #e6eef6; }
.sum.on { background: linear-gradient(135deg, #0e3a5f, #155e8f); box-shadow: 0 4px 10px rgba(13, 60, 100, .25); }
.sum.on .sn, .sum.on .st { color: #fff; opacity: 1; }

/* 底部模块导航 */
.bottom-nav {
    position: fixed; left: 0; right: 0; bottom: 0; height: 54px; display: none;
    background: #fff; border-top: 1px solid #eef2f6; box-shadow: 0 -2px 10px rgba(0,0,0,.05);
    z-index: 50; align-items: stretch;
}
.bn-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: #6b8299; font-size: 11px; cursor: pointer; }
.bn-ico { font-size: 18px; line-height: 1; }
.bn-item.on { color: #0d3c64; font-weight: 600; }
.bn-item.on .bn-ico { color: #0d3c64; }
.bn-item.disabled { opacity: .4; }
body.nav-on .content { padding-bottom: 62px; }
/* 底部导航显示时，固定提交栏 / 独立固定按钮整体上移让位（导航高 54px） */
body.nav-on .submit-bar { bottom: 54px; }
body.nav-on .btn-fixed { bottom: 68px; }
body.nav-on .view.has-submit { padding-bottom: 140px; }

/* 搜索结果 */
.ent-item { cursor: pointer; }
.ent-item:active { background: #f3f7fb; }
.ent-item.disabled { cursor: default; opacity: .72; }
.ent-item .m .tag { display: inline-block; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 9px; margin-right: 5px; }
.ent-item .m .tag.ok { color: #1e7e34; background: #e7f5ea; }
.ent-item .m .tag.warn { color: #c0392b; background: #fbeae8; }

/* 监管端首页扫一扫按钮 */
.btn.scan { background: linear-gradient(90deg, #0a84ff, #1e6fff); color: #fff; width: 100%; margin: 4px 0 12px; }
.btn.scan:active { opacity: .9; }
