:root{
  --bg:#f4f6fa; --card:#ffffff; --line:#e3e8f0; --text:#1b2432; --muted:#6b7789;
  --brand:#1668dc; --brand-dark:#0d4fae; --brand-soft:#e8f1ff;
  --ok:#0f9d58; --warn:#c2410c; --danger:#d93025;
  --radius:10px; --shadow:0 1px 3px rgba(16,24,40,.06),0 6px 20px rgba(16,24,40,.05);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:"Microsoft YaHei","PingFang SC","Helvetica Neue",Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}
.hidden{display:none !important}
.muted{color:var(--muted);font-size:12px}

/* ---------- login ---------- */
.login-wrap{height:100%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(140deg,#0b2b5e 0%,#14508f 45%,#1668dc 100%)}
.login-card{width:360px;max-width:92vw;background:#fff;border-radius:16px;padding:32px 28px 24px;box-shadow:0 24px 60px rgba(6,20,45,.35)}
.login-card .logo{font-size:34px;line-height:1}
.login-card h1{font-size:20px;margin:10px 0 4px}
.login-card .sub{margin:0 0 22px;color:var(--muted);font-size:12px}
.login-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 6px}
.login-card input{width:100%;height:42px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font-size:14px;outline:none;background:#fbfcfe}
.login-card input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.msg{min-height:18px;color:var(--danger);font-size:12px;margin-top:10px}

/* ---------- layout ---------- */
.layout{display:flex;height:100vh;overflow:hidden}
.sidebar{width:206px;flex:0 0 206px;background:#0e2138;color:#c9d6e6;display:flex;flex-direction:column}
.brand{height:56px;display:flex;align-items:center;gap:8px;padding:0 16px;font-size:15px;color:#fff;font-weight:600;border-bottom:1px solid rgba(255,255,255,.07)}
.brand span{font-size:18px}
#nav{flex:1;overflow:auto;padding:8px 8px 12px}
.nav-item{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:8px;cursor:pointer;color:#c9d6e6;font-size:13.5px;margin-bottom:2px}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:var(--brand);color:#fff}
.nav-item .ic{width:18px;text-align:center}
.nav-sep{margin:10px 6px 6px;font-size:11px;color:#6d7f96;letter-spacing:.5px}
.nav-sep.ytq-sep{color:#ff8a5c;font-weight:600;margin-top:14px}
.nav-item.group{font-weight:600}
.nav-item.group .nav-arrow{margin-left:auto;font-size:11px;opacity:.75}
.nav-item.sub{padding-left:38px;font-size:13px}
.nav-item.sub::before{content:'';width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.55;flex:none;margin-right:-3px}
.side-foot{padding:10px 12px 14px;border-top:1px solid rgba(255,255,255,.07)}
.who{font-size:12px;color:#9fb0c5;margin-bottom:8px}
.side-foot .btn.ghost{width:100%;color:#c9d6e6;border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.04)}
.side-foot .btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.5)}
.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{height:56px;display:flex;align-items:center;gap:12px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line)}
.topbar h2{font-size:16px;margin:0;font-weight:600}
.top-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.village-sel{height:32px;border:1px solid #c9dbf6;border-radius:8px;background:#eef5ff;color:#0d4fae;
  font-size:13px;padding:0 8px;outline:none;font-weight:600;cursor:pointer}
.icon-btn{border:0;background:transparent;font-size:16px;cursor:pointer;color:var(--muted);padding:6px 8px;border-radius:6px}
.icon-btn:hover{background:#eef2f8}
#btn-menu{display:none}
.view{flex:1;overflow:auto;padding:16px 18px 28px}

/* ---------- cards / table ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);cursor:pointer;transition:.15s}
.card:hover{transform:translateY(-1px);border-color:#c9dbf6}
.card .t{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
.card .n{font-size:24px;font-weight:700;margin-top:6px;color:var(--brand-dark)}
.card .n .u{font-size:12px;font-weight:400;color:var(--muted);margin-left:2px}
.card .n .p{font-size:14px;font-weight:600;color:var(--brand);margin-left:8px}
.card .n .p .u{font-size:11px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.panel-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel-head h3{margin:0;font-size:14px}
.search{flex:1;min-width:160px;height:34px;border:1px solid var(--line);border-radius:8px;padding:0 10px;outline:none;background:#fbfcfe}
.search:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.btn{height:34px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px;color:var(--text)}
.btn:hover{background:#f5f8fd}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-dark)}
.btn.ghost{background:transparent}
.btn.sm{height:28px;padding:0 10px;font-size:12px}
.btn.block{width:100%;height:42px;margin-top:18px;font-size:15px}
.btn.danger{color:var(--danger);border-color:#f2c9c4}

table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid #eef1f6;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
th{background:#f8fafd;color:var(--muted);font-weight:600;position:sticky;top:0;z-index:1}
tbody tr:hover{background:#f7fbff}
.acts{display:flex;gap:6px}
.empty{padding:40px;text-align:center;color:var(--muted);font-size:13px}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;background:rgba(12,22,38,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal-box{width:560px;max-width:100%;max-height:88vh;background:#fff;border-radius:14px;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(6,20,45,.3)}
.modal-head{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-size:15px;flex:1}
.modal-body{padding:14px 16px;overflow:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;border-top:1px solid var(--line);background:#fafbfd;border-radius:0 0 14px 14px}
.field{margin-bottom:12px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;outline:none;background:#fbfcfe;font-family:inherit}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.field textarea{min-height:72px;resize:vertical}
.field .hint{font-size:11px;color:#98a3b3;margin-top:4px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#1b2432;color:#fff;padding:10px 18px;border-radius:20px;font-size:13px;z-index:99;box-shadow:0 8px 24px rgba(0,0,0,.2)}
.toast.err{background:var(--danger)}

/* ---------- misc ---------- */
.tag{display:inline-block;padding:1px 8px;border-radius:10px;background:var(--brand-soft);color:var(--brand-dark);font-size:11px;margin-right:4px}
.logs{font-size:12.5px}
.logs td{white-space:normal}
.filebar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line);background:#fafbfd}
.link{color:var(--brand);cursor:pointer;text-decoration:none}
.link:hover{text-decoration:underline}

@media (max-width:860px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);transition:.2s}
  .sidebar.open{transform:none;box-shadow:8px 0 30px rgba(0,0,0,.2)}
  #btn-menu{display:block}
  .view{padding:12px}
  th,td{padding:8px 10px}
  .grid2{grid-template-columns:1fr}
}

/* ---------- 源头清·党旗红 ---------- */
.tag.late{background:#fdecea;color:#b3261e;font-weight:600}
.tag.warn{background:#ffedd5;color:#9a3412;font-weight:600}
.tag.soon{background:#fff4e5;color:#b26a00}
tr.overdue-row td{background:#fff8f7}
tr.overdue-row td:first-child{box-shadow:inset 3px 0 0 #d93025}

/* ---------- 佐证材料（照片） ---------- */
.attach-box{margin-top:6px;padding-top:12px;border-top:1px dashed var(--line)}
.attach-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.attach-head b{font-size:13px}
.attach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.att-item{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#f7f9fc;text-align:center}
.att-item img{display:block;width:100%;height:86px;object-fit:cover;cursor:zoom-in;background:#eef2f8}
.att-item .att-file{display:flex;align-items:center;justify-content:center;height:86px;font-size:30px;text-decoration:none}
.att-item .att-name{font-size:10.5px;color:var(--muted);padding:3px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-item.pending{border-color:#9fc4f8;border-style:dashed}
.att-del{position:absolute;top:3px;right:3px;width:20px;height:20px;line-height:1;border:0;border-radius:50%;
  background:rgba(20,30,45,.62);color:#fff;font-size:11px;cursor:pointer;padding:0}
.att-del:hover{background:var(--danger)}
.att-save{position:absolute;left:3px;bottom:3px;height:20px;line-height:20px;border:0;border-radius:10px;
  background:rgba(20,30,45,.62);color:#fff;font-size:11px;cursor:pointer;padding:0 6px}
.att-save:hover{background:var(--brand)}
/* 入户走访·户主姓名自绘联想下拉 */
.hh-sug{display:none;position:absolute;left:0;right:0;top:100%;margin-top:2px;z-index:60;background:#fff;
  border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 26px rgba(6,20,45,.18);max-height:176px;overflow:auto}
.hh-sug.open{display:block}
.hh-sug-item{padding:9px 12px;font-size:13.5px;cursor:pointer;border-bottom:1px solid #f0f2f6}
.hh-sug-item:last-child{border-bottom:0}
.hh-sug-item:active{background:var(--brand-soft)}
.att-keep{display:flex;align-items:center;gap:6px;margin:2px 0 10px;font-size:12px;color:var(--muted);cursor:pointer}
.att-keep input{width:15px;height:15px;flex:0 0 auto;margin:0}
.attach-add{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}
.attach-add label.btn{display:inline-flex;align-items:center;cursor:pointer;margin:0}
.att-empty{padding:14px;text-align:center;border:1px dashed var(--line);border-radius:8px}


/* ---------- 评选投票 ---------- */
.vote-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.vote-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;
  box-shadow:0 1px 3px rgba(20,30,45,.05)}
.vh{display:flex;align-items:center;gap:10px}
.vh h4{margin:0;font-size:16px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vm{font-size:12.5px;color:var(--muted);margin-top:7px;line-height:1.6}
.vs{font-size:13px;color:#37414d;margin-top:8px}
.vs b{color:#b3261e;font-size:15px}
.vurl{margin-top:10px;font-size:12px;color:#1155cc;background:#f5f8ff;border:1px dashed #c9d8f5;
  border-radius:8px;padding:6px 9px;word-break:break-all;cursor:pointer;user-select:all}
.vurl:hover{background:#eaf1ff}
.va{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.tag.ok{background:#e8f5e9;color:#2e7d32}
.tag.wait{background:#fff4e5;color:#b26a00}
.cand-wrap{max-height:60vh;overflow:auto}
.cand-tip{font-size:12.5px;color:var(--muted);background:#f7f8fa;border-radius:8px;
  padding:8px 10px;margin-bottom:10px;line-height:1.7}
.cand-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #f0f2f4}
.thumb{width:52px;height:40px;border-radius:6px;background:#eef0f3;overflow:hidden;
  flex:0 0 52px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#a0a6ad}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ci{height:32px;border:1px solid #dcdfe4;border-radius:7px;padding:0 8px;font-size:13px;min-width:0}
.ci.no{width:54px;flex:0 0 54px;text-align:center}
.ci.tt{flex:1.2}
.ci.ds{flex:1.6}
.vot{font-size:12.5px;color:#b3261e;font-weight:600;flex:0 0 auto;width:48px;text-align:right}
.cand-acts{display:flex;gap:6px;flex:0 0 auto}
.cand-acts label.btn{margin:0;cursor:pointer}
.cand-add{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;align-items:center}
.result-tbl{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:6px}
.result-tbl th,.result-tbl td{border:1px solid var(--line);padding:7px 9px;text-align:center}
.result-tbl th{background:#f7f8fa;font-weight:600;color:#37414d}
.ballot-box{margin-top:12px;max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.chk{display:flex;align-items:center;gap:6px;font-size:13px;color:#37414d;margin:5px 0;font-weight:400}
@media (max-width:640px){
  .cand-row{flex-wrap:wrap}
  .ci.tt,.ci.ds{flex:1 1 100%}
  .cand-wrap{max-height:52vh}
}

/* ---- 模块权限设置 ---- */
.perm-list { max-height: 320px; overflow-y: auto; }
.perm-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 7px 4px; border-bottom: 1px dashed var(--line, #e5e7eb);
}
.perm-row .pm-name { flex: 1; font-size: 14px; }
.perm-row select {
  width: 130px; padding: 5px 8px; border: 1px solid #d1d5db; border-radius: 8px;
  background: #fff; font-size: 14px;
}

/* ---- 土地地图 ---- */
.land-empty { text-align: center; padding: 40px 20px; color: #6b7280; }
.land-empty .big { font-size: 48px; margin-bottom: 8px; }
.land-stage {
  position: relative; display: inline-block; max-width: 100%;
  border: 1px solid #e5e7eb; border-radius: 10px; overflow: hidden;
  user-select: none; -webkit-user-select: none;
}
.land-stage.editing { border-color: #f59e0b; box-shadow: 0 0 0 2px rgba(245,158,11,.35); }
.land-img { display: block; max-width: 100%; height: auto; }
.land-pins { position: absolute; inset: 0; }
.land-pin {
  position: absolute; transform: translate(-50%, -100%);
  background: #f59e0b; color: #fff; border-radius: 10px 10px 10px 2px;
  padding: 3px 8px; font-size: 12px; line-height: 1.35;
  box-shadow: 0 2px 6px rgba(0,0,0,.35); cursor: pointer; white-space: nowrap;
  border: 2px solid #fff;
}
.land-pin:hover { transform: translate(-50%, -100%) scale(1.12); z-index: 5; }
.land-pin b { display: block; font-weight: 600; }
.land-pin span { opacity: .92; font-size: 11px; }
.land-legend {
  display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center;
  padding: 10px 4px; font-size: 13px; color: #374151;
}
.land-legend i {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
  margin-right: 4px; vertical-align: middle;
}
table.land-stats { border-collapse: collapse; width: 100%; font-size: 13px; }
table.land-stats th, table.land-stats td {
  border: 1px solid #e5e7eb; padding: 5px 8px; text-align: center; white-space: nowrap;
}
table.land-stats th { background: #f9fafb; }

/* ---- 地图缩放/拖动 ---- */
.land-viewport {
  position: relative; max-width: 100%; overflow: hidden;
  touch-action: none; cursor: grab; border-radius: 10px;
  background: #111; line-height: 0;
}
.land-viewport.dragging { cursor: grabbing; }
.land-inner { transform-origin: 0 0; will-change: transform; }
.land-mapbar {
  position: absolute; right: 10px; bottom: 12px; display: flex; gap: 6px; z-index: 6;
}
.land-mapbar button {
  width: 38px; height: 38px; border-radius: 8px; border: 1px solid rgba(0,0,0,.15);
  background: rgba(255,255,255,.94); font-size: 19px; line-height: 1; cursor: pointer;
  box-shadow: 0 2px 6px rgba(0,0,0,.3); color: #1f2937;
}
.land-mapbar button:active { background: #f3f4f6; }
.land-zoomlabel {
  position: absolute; left: 10px; bottom: 12px; z-index: 6;
  background: rgba(0,0,0,.55); color: #fff; font-size: 12px;
  padding: 4px 9px; border-radius: 6px; line-height: 1.4;
}

/* ---- 瓦片地图 ---- */
.land-tiles { position: absolute; inset: 0; background: #0d1117; }
.land-tile { position: absolute; display: block; }

/* ---- 量地模式（画边界算亩数） ---- */
.land-poly {
  position: absolute; inset: 0; width: 100%; height: 100%;
  pointer-events: none; overflow: visible;
}
.land-drawbar {
  position: absolute; top: 10px; left: 10px; z-index: 7;
  display: flex; align-items: center; gap: 8px;
  background: rgba(255,255,255,.97); border: 1px solid #e5e7eb;
  border-radius: 10px; padding: 6px 10px; font-size: 13px;
  box-shadow: 0 2px 8px rgba(0,0,0,.2); max-width: calc(100% - 90px);
}
.land-drawbar .db-info { white-space: nowrap; font-weight: 600; color: #92400e; }
.land-drawbar .btn { padding: 4px 10px; flex-shrink: 0; }
.land-loadtip {
  position: absolute; top: 14px; left: 50%; transform: translateX(-50%);
  z-index: 8; background: rgba(0,0,0,.6); color: #fff;
  padding: 6px 16px; border-radius: 16px; font-size: 13px; line-height: 1.4;
}

/* ---- 会议记录模版表单 / 四议两公开 ---- */
.wtable { width: 100%; border-collapse: collapse; margin: 6px 0 10px; }
.wtable th, .wtable td {
  border: 1px solid #d1d5db; padding: 4px 6px; font-size: 12px; text-align: center;
}
.wtable th { background: #f3f4f6; font-weight: 500; }
.wtable input {
  width: 100%; min-width: 60px; border: none; background: transparent;
  font-size: 12px; padding: 2px; text-align: center;
}
.step-card { margin-bottom: 14px; }
.step-card .panel-head h3 { font-size: 15px; }
.tag.muted2 { background: #f3f4f6; color: #6b7280; }
.siyi-info {
  padding: 10px 14px; font-size: 13px; line-height: 1.8; color: #374151;
}
.siyi-info div { margin-bottom: 4px; }
.hint { font-size: 12px; color: #6b7280; margin: 4px 0; }
/* 录入人/录入时间栏（编辑、查看弹窗顶部） */
.rec-meta {
  background: #f7f9fc; border: 1px solid var(--line); border-radius: 8px;
  padding: 7px 10px; margin: 0 0 10px; font-size: 12.6px; line-height: 1.65; color: #4b5563;
}

/* ---- 工作台升级：图表区 ---- */
.dash-top {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px; gap: 12px; flex-wrap: wrap;
}
.dash-top-info { font-size: 14px; color: #4b5563; }
.dash-top-info b { color: #2563eb; font-size: 16px; }
.dash-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 16px; }
.dash-chart .panel-head { margin-bottom: 6px; }
.dash-chart-body { display: flex; align-items: center; gap: 14px; min-height: 190px; }
.dash-donut { flex-shrink: 0; display: flex; justify-content: center; }
.dash-legend { flex: 1; display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.dash-lg { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #374151; min-width: 0; }
.dash-lg i { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.dash-lg .nm { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dash-lg .vv { color: #2563eb; font-weight: 600; }
@media (max-width: 860px) {
  .dash-charts { grid-template-columns: 1fr; }
  .dash-chart-body { min-height: 160px; }
}

/* ---- 村民信息：户-人两级 ---- */
.hh-card {
  border: 1px solid #e5e7eb; border-radius: 10px; margin-bottom: 10px;
  overflow: hidden; background: #fff;
}
.hh-head {
  display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  cursor: pointer; background: #f8fafc; flex-wrap: wrap;
}
.hh-head:hover { background: #f1f5f9; }
.hh-no { font-family: Consolas, monospace; color: #64748b; font-size: 13px; background: #e2e8f0; padding: 1px 8px; border-radius: 4px; }
.hh-name { font-weight: 700; font-size: 15px; color: #1f2937; }
.hh-count { margin-left: auto; color: #2563eb; font-weight: 600; font-size: 13px; }
.hh-arrow { color: #94a3b8; transition: transform .2s; }
.hh-card.open .hh-arrow { transform: rotate(180deg); }
.hh-body { border-top: 1px solid #eef2f7; }
.hh-body.hidden { display: none; }
.dead-row { opacity: .5; background: #fafafa; }
.dead-row td { text-decoration: line-through; }
.dead-row td:last-child, .dead-row td:nth-last-child(2) { text-decoration: none; }
.btn.danger { color: #d93025; border-color: #f3c2bd; }
.btn.danger:hover { background: #fdf0ef; }
.hh-filter { max-width: 120px; }

/* 搜索命中行高亮（整户显示时标出被搜到的人） */
.hh-body tr.hit-row td { background: #fff8dc; }
.hh-body tr.hit-row td:first-child { border-left: 3px solid #f5b921; }

/* ---- 手机端：表格横向滚动 ----
   面板 overflow:hidden 会把超宽表格的右侧（操作列）裁掉，
   这里让表格自身变成横向滑动容器，手指左右滑即可看到全部列；桌面端不受影响。 */
@media (max-width: 768px) {
  table {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  /* 滑到最右可见提示：细滚动条，滑动手感更顺 */
  table::-webkit-scrollbar { height: 6px; }
  table::-webkit-scrollbar-thumb { background: #c9d4e3; border-radius: 3px; }
}

/* ---- 防贫对象：模块内页签（预警信息 / 纳入与退出台账） ---- */
.sub-tabs {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 0 12px;
}
.sub-tabs-title { font-size: 14px; font-weight: 700; color: #1f2937; }
.sub-tabs-list { display: flex; gap: 6px; background: #eef2f8; padding: 3px; border-radius: 10px; }
.sub-tab {
  border: 0; background: transparent; cursor: pointer;
  padding: 6px 14px; border-radius: 8px; font-size: 13.5px; color: #4b5563; white-space: nowrap;
}
.sub-tab.on { background: #fff; color: var(--brand); font-weight: 700; box-shadow: 0 1px 4px rgba(6,20,45,.12); }
.sub-tab:hover { color: var(--brand); }
@media (max-width: 768px) {
  .sub-tabs { gap: 8px; }
  .sub-tab { padding: 6px 10px; font-size: 13px; }
}

/* 入户走访 · 走访频次要求横幅 */
.visit-rules {
  background: #f2f7ff; border: 1px solid #cfe0ff; border-left: 4px solid var(--brand);
  border-radius: 8px; padding: 10px 14px; margin-bottom: 12px;
  font-size: 13.5px; color: #33415c; line-height: 1.7;
}
.visit-rules b { color: var(--brand-dark); }
.visit-rules .src { color: #8a94a6; margin-left: 10px; font-size: 12.5px; }

/* ICP 备案号页脚（管局要求全站底部标注） */
.icp {
  position: fixed; bottom: 4px; right: 10px; z-index: 5;
  font-size: 11px; color: #9aa5b5; pointer-events: none;
}
.icp a { color: #9aa5b5; text-decoration: none; pointer-events: auto; }
.icp a:hover { color: var(--brand); }

/* 登录页县科局入口链接 */
.alt-login { margin: 10px 0 0; text-align: center; font-size: 12.5px; }
.alt-login a { color: #8a94a6; text-decoration: none; border-bottom: 1px dashed #c3ccd9; }
.alt-login a:hover { color: var(--brand); }
