/* 内容管理后台 · 党政白底主题（覆盖深空后台皮肤） */
:root {
    --bg: #f5f7fa; --bg2: #ffffff; --ink: #1f2733; --muted: #5b6878; --dim: #8a96a5;
    --line: rgba(30, 60, 100, .13); --line2: rgba(30, 60, 100, .24);
    --cyan: #1d4f8f; --blue: #1d4f8f; --violet: #1d4f8f; --ok: #1e7a4d;
    --warn: #b8860b; --bad: #c8102e; --glass: #ffffff; --glass2: #f4f7fb;
    --sans: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif;
}
body { background: #f5f7fa; color: #1f2733; }
.bg-grid, .bg-glow, .scanline { display: none !important; }

.topbar {
    background: #1d4f8f; border-bottom: 3px solid #c8a45c;
    box-shadow: 0 2px 10px rgba(20, 60, 110, .16); backdrop-filter: none;
}
.brand b { color: #ffffff; }
.brand small { color: #f2d9dd; }
.topbar-right .ghost-link { color: #fdeef0; }
.topbar-right .ghost-link:hover { color: #ffe9b0; }
.live { color: #d7f2e4; }
.live i { background: #7ee2ae; box-shadow: none; }

.side { background: #ffffff; border-right: 1px solid #e1e6ed; }
.side-title { color: #1d4f8f; }
.side-title span { color: #7b8797; }
.side nav a { color: #4a5568; }
.side nav a b, .side nav a i { color: #8a96a5; }
.side nav a:hover { background: #f7f9fc; color: #1d4f8f; }
.side nav a.active { background: #fdf0f2; border-color: #f0d5da; color: #1d4f8f; }
.side nav a.active b { color: #1d4f8f; }

.panel-head h1 { color: #1f2733; }
.panel-head p { color: #6b7684; }
.eyebrow { color: #1d4f8f; font-weight: 600; }
.stat, .card, .table-wrap, .check-row {
    background: #ffffff; border-color: #e1e6ed;
    box-shadow: 0 2px 12px rgba(20, 40, 70, .05);
}
.stat:before { display: none; }
.stat b { color: #1d4f8f; }
.stat span, .card p, .card ul { color: #5b6878; }
.card h2 { color: #1f2733; border-left: 4px solid #1d4f8f; padding-left: 10px; }
th { background: #f7f9fc; color: #5b6878; border-bottom-color: #e1e6ed; }
td { border-bottom-color: #eef1f5; }
tbody tr:hover { background: #fdf7f8; }
td .title-cell { color: #1f2733; }
td .sub, .mono { color: #7b8797; }
.chip { background: #f4f7fb; border-color: #dfe5ed; color: #5b6878; }
.chip-ok { color: #1e7a4d; border-color: #c9e6d6; background: #f0faf4; }
.chip-warn { color: #9a7015; border-color: #ecdcae; background: #fdf8e9; }
.chip-dim { color: #8a96a5; }

.btn-glow { background: #1d4f8f; color: #ffffff; border-color: #1d4f8f; box-shadow: 0 4px 12px rgba(29, 79, 143, .18); }
.btn-glow:hover { background: #163d73; }
.btn-ghost { background: #ffffff; color: #1d4f8f; border-color: #d6b9c0; }
.btn-ghost:hover { background: #f1f6fd; border-color: #1d4f8f; }
.btn-danger { color: #b3243c; background: #f1f6fd; border-color: #d6e3f4; }
.btn-danger:hover { background: #fbe4e8; }
.ghost-link { color: #6b7684; }
.ghost-link:hover { color: #1d4f8f; }

input, select, textarea { background: #ffffff; border: 1px solid #d5dde7; color: #1f2733; }
input:focus, select:focus, textarea:focus { border-color: #1d4f8f; box-shadow: 0 0 0 3px rgba(29, 79, 143, .09); }
label { color: #3b4757; }
code { color: #1d4f8f; background: #f1f6fd; }
.toolbar select, .toolbar input { background: #fff; }

.switch span { background: #e6ebf1; border-color: #cfd8e3; }
.switch span:after { background: #8a96a5; }
.switch input:checked + span { background: #f6dfe3; border-color: #1d4f8f; }
.switch input:checked + span:after { background: #1d4f8f; box-shadow: none; }

.login-card { background: #ffffff; border-color: #e1e6ed; box-shadow: 0 18px 60px rgba(20, 40, 70, .16); }
.login-card h1 { color: #1f2733; }
.login-sub, .login-tip { color: #6b7684; }
.eyebrow { color: #1d4f8f; }
.login-error { color: #b3243c; background: #f1f6fd; border-color: #d6e3f4; }

.modal { background: rgba(24, 36, 52, .48); }
.modal-card { background: #ffffff; border-color: #e1e6ed; }
.modal-head, .modal-foot { border-color: #e6ebf1; }
.modal-head h2 { color: #1f2733; }
.icon-btn { background: #f7f9fc; border-color: #dfe5ed; color: #5b6878; }
.form-section { color: #1d4f8f; border-bottom-color: #e6ebf1; }
.hint { color: #8a96a5; }
.toast { background: #ffffff; border-color: #d3b3ba; color: #1f2733; box-shadow: 0 8px 26px rgba(20, 40, 70, .16); }
.toast.error { border-color: #d6e3f4; color: #b3243c; }

/* 第 14 轮：背景图管理 */
.scenery-preview { display: block; width: 100%; height: 150px; object-fit: cover; border: 1px solid #dfe5ed; border-radius: 8px; background: #f4f7fb; margin-top: 10px; }
.scenery-empty { padding: 40px; text-align: center; color: #8a96a5; border: 1px dashed #dfe5ed; border-radius: 8px; margin-top: 10px; }
.media-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid #eef1f6; flex-wrap: wrap; }
.media-row img { width: 64px; height: 40px; object-fit: cover; border: 1px solid #dfe5ed; border-radius: 4px; flex: none; }
.media-row .meta { flex: 1; min-width: 120px; }
.media-row .meta b { display: block; font-size: 12px; color: #1f2733; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.media-row .meta small { font-size: 11px; color: #8a96a5; }
input[type=file] { font-size: 12.5px; color: #5b6878; max-width: 260px; }

/* ==================== 第 17 轮：后台视觉升级 ==================== */
:root { --gov-b: #1d4f8f; --gov-bd: #163d73; --gov-bl: #eaf2fb; --gov-line: #e2eaf4; }

/* 顶栏：政务蓝渐变 + 金色细线 */
.topbar {
    background: linear-gradient(100deg, #16447c 0%, #1d4f8f 52%, #275fa4 100%);
    border-bottom: 0; box-shadow: 0 2px 16px rgba(20, 60, 110, .2);
}
.topbar:after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px;
    background: linear-gradient(90deg, #c8a45c, #e8d6a8 55%, #c8a45c); opacity: .85;
}
.topbar { position: sticky; }
/* 第 17 轮：后台图标与前台首页一致，纯天鹅、不加圆底与外圈 */
.brand img { width: 44px; height: 44px; object-fit: contain; background: none; border-radius: 0; padding: 0; filter: none; }
.login-logo { width: 58px; height: 58px; object-fit: contain; filter: none; margin-bottom: 16px; }
.brand b { font-size: 16px; letter-spacing: .8px; }
.brand small { color: #c9dcf2; letter-spacing: 1.8px; }
.topbar-right .ghost-link { color: #e6eff9; border-radius: 6px; padding: 6px 10px; }
.topbar-right .ghost-link:hover { color: #fff; background: rgba(255,255,255,.14); }
.live { color: #dff3e8; font-size: 11px; }
.live i { background: #7ee2ae; }

/* ---------- 左侧导航：分组感、图标块、深蓝选中态 ---------- */
.side {
    background: linear-gradient(180deg, #fbfdff 0%, #f3f8fd 100%);
    border-right: 1px solid #dce5f0; padding: 22px 14px 20px;
}
.side-title {
    display: flex; align-items: center; gap: 10px; margin: 0 6px 18px;
    padding: 12px 14px; border-bottom: 1px solid var(--gov-line);
    font-size: 15px; font-weight: 700; letter-spacing: 2px; color: #16365f;
    background: linear-gradient(90deg, #eaf2fb, rgba(234, 242, 251, 0));
    border-radius: 8px;
}
.side-title:before {
    content: ""; width: 4px; height: 16px; border-radius: 2px; flex: none;
    background: linear-gradient(180deg, #1d4f8f, #2b64a9);
}
.side-title span { font-size: 11px; font-weight: 400; letter-spacing: .5px; color: #8a97a8; }
.side nav a {
    position: relative; display: flex; align-items: center; gap: 11px;
    height: 45px; padding: 0 11px; margin-bottom: 5px; border-radius: 9px;
    border: 1px solid transparent; color: #3f4c5d; font-size: 13.5px; font-weight: 500;
    transition: background .18s, color .18s, transform .18s, box-shadow .18s;
}
.side nav a b {
    width: 28px; height: 28px; flex: none; display: grid; place-items: center;
    border-radius: 7px; background: #e8f0fa; color: var(--gov-b);
    font-size: 14px; font-weight: 400; line-height: 1;
}
/* 第 17 轮：按用户要求去掉侧栏里的英文标识，菜单文字保持一行 */
.side nav a i { display: none; }
.side nav a { white-space: nowrap; font-size: 14px; }
.side nav a:hover { background: #eaf3fc; color: var(--gov-b); border-color: #d8e6f6; transform: translateX(2px); }
.side nav a:hover b { background: #d8e9fa; }
.side nav a.active {
    background: linear-gradient(100deg, var(--gov-b), #2b64a9);
    border-color: var(--gov-b); color: #fff; font-weight: 600;
    box-shadow: 0 5px 14px rgba(29, 79, 143, .24); transform: none;
}
.side nav a.active b { background: rgba(255,255,255,.2); color: #fff; }
.side nav a.active i { color: #c9dff6; }

/* ---------- 主区、面板头、表格 ---------- */
.main { padding: 32px 36px 64px; }
.panel-head { margin-bottom: 24px; padding-bottom: 18px; border-bottom: 1px solid #e7edf4; }
.panel-head .eyebrow { font-size: 10px; letter-spacing: 2.4px; color: #5b83b5; }
.panel-head h1 { margin-top: 6px; font-size: 25px; letter-spacing: .5px; color: #16283f; }
.panel-head p { color: #6b7684; font-size: 12.5px; }
.card, .stat, .table-wrap { border-radius: 12px; border-color: var(--gov-line); }
.card h2 { border-left: 3px solid var(--gov-b); }
th { font-size: 11px; letter-spacing: .6px; color: #5b6878; background: #f5f9fd; }
td { color: #2d3748; }
tbody tr:hover { background: #f7fbff; }
.btn-ghost { border-color: #cddcee; }
.btn-ghost:hover { background: var(--gov-bl); border-color: var(--gov-b); }

/* 招募统计表：7 列更宽，单元格截断带 tooltip */
table.recruit-table { min-width: 1080px; }
.recruit-table th, .recruit-table td { padding: 13px 12px; }
.recruit-table .cell-clip {
    display: block; max-width: 190px; overflow: hidden;
    text-overflow: ellipsis; white-space: nowrap; color: #243244;
}
.recruit-table .cell-strong { font-weight: 600; color: #163d73; }
.recruit-table .cell-empty { color: #a8b3c1; }
.recruit-table .row-actions { flex-wrap: nowrap; }

/* ---------- 填报详情弹窗：概览卡 + 分组问答 ---------- */
.modal-card { width: min(880px, 100%); border-radius: 14px; box-shadow: 0 24px 70px rgba(18, 42, 74, .24); }
.modal-head { padding: 17px 24px; background: linear-gradient(180deg, #fbfdff, #f4f8fd); }
.modal-head h2 { font-size: 16.5px; color: #16283f; }
.modal-body { padding: 22px 24px 26px; background: #fff; }
.icon-btn { border-radius: 7px; }
.sd-hero { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 18px; }
.sd-hero > div { padding: 11px 12px; border: 1px solid var(--gov-line); border-radius: 10px; background: #f7fafd; min-width: 0; }
.sd-hero small { display: block; font-size: 11px; color: #7b8797; letter-spacing: .3px; }
.sd-hero b { display: block; margin-top: 5px; font-size: 13.5px; color: #16283f; font-weight: 600; word-break: break-all; line-height: 1.5; }
.sd-hero b.is-empty { color: #a8b3c1; font-weight: 400; }
.sd-meta { display: flex; gap: 16px; flex-wrap: wrap; font-size: 11.5px; color: #8a96a5; margin-bottom: 16px; }
.sd-meta span { background: #f5f8fc; border: 1px solid #e9eff6; border-radius: 6px; padding: 3px 9px; }
.sd-group { border: 1px solid var(--gov-line); border-radius: 10px; overflow: hidden; margin-bottom: 14px; }
.sd-group > h3 {
    margin: 0; padding: 10px 15px; font-size: 13px; font-weight: 600; color: var(--gov-b);
    background: #f3f8fd; border-bottom: 1px solid var(--gov-line);
}
.sd-group > h3 em { float: right; font-style: normal; font-size: 11px; font-weight: 400; color: #8a96a5; }
.sd-row { display: grid; grid-template-columns: minmax(170px, 34%) 1fr; gap: 16px; padding: 10px 15px; border-bottom: 1px solid #f1f4f8; font-size: 12.5px; line-height: 1.85; }
.sd-row:last-child { border-bottom: 0; }
.sd-row .k { color: #6b7684; }
.sd-row .v { color: #243244; font-weight: 500; white-space: pre-wrap; word-break: break-word; }
.sd-row .v.is-empty { color: #a8b3c1; font-weight: 400; }
.sd-empty { padding: 34px; text-align: center; color: #8a96a5; font-size: 12.5px; }
@media (max-width: 900px) {
    .sd-hero { grid-template-columns: repeat(2, 1fr); }
    .sd-row { grid-template-columns: 1fr; gap: 2px; }
    .main { padding: 22px 16px 50px; }
}


/* 第 18 轮：政策发布（四级分组卡片） */
.pol-admin-sum { margin: 4px 0 18px; font-size: 13px; color: #5b6878; }
.pol-admin-sum b { color: #1a5284; font-size: 16px; }
.pol-admin-sum a { color: #1a5284; margin-left: 8px; text-decoration: none; }
.pol-admin-sum a:hover { text-decoration: underline; }
.pol-admin-groups { display: flex; flex-direction: column; gap: 18px; }
.pol-admin-card { padding: 0; overflow: hidden; }
.pol-admin-head { display: flex; align-items: center; gap: 12px;
    padding: 16px 20px; border-bottom: 1px solid #e3e9f0; background: #f8fafc; }
.pol-admin-head h2 { margin: 0; font-size: 17px; font-weight: 700; color: #17365d; }
.pol-admin-no { font-size: 20px; font-weight: 700; color: #b6c9de; }
.pol-admin-head .chip { margin-left: auto; }
.pol-admin-card .table-wrap { border: 0; box-shadow: none; }

/* 第 38 轮：招募统计表格整体美化 + 采纳列对齐修复 */
table.recruit-table { min-width: 1080px; font-size: 13px; }
.recruit-table th {
    font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
    font-size: 12.5px; font-weight: 600; letter-spacing: .5px; color: #3d4d63;
    background: linear-gradient(180deg, #f4f9fe, #edf4fb);
    border-bottom: 1px solid #d8e4f1; padding: 14px 16px; white-space: nowrap;
}
.recruit-table td { padding: 13px 16px; border-bottom: 1px solid #eef3f9; color: #2d3748; vertical-align: middle; }
.recruit-table tbody tr:nth-child(even) { background: #fafdfe; }
.recruit-table tbody tr:hover { background: #f1f7fe; }
.recruit-table tbody tr:last-child td { border-bottom: 0; }
.recruit-table .th-time { color: #7b8797; font-weight: 500; }
.recruit-table .th-adopt, .recruit-table .th-ops { text-align: center; }
.recruit-table td.ops-cell .row-actions { justify-content: center; flex-wrap: nowrap; }
.recruit-table .mono { font-size: 11.5px; color: #8a96a5; white-space: nowrap; font-variant-numeric: tabular-nums; }
.recruit-table .cell-clip { max-width: 210px; }
/* 采纳列：徽标固定尺寸居中，与居中表头上下对齐 */
.recruit-table td.adopt-cell { text-align: center; padding: 11px 16px; }
.recruit-table td.adopt-cell .adopt-flag {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 26px; font-size: 15px; line-height: 1; border-radius: 8px;
}
.recruit-table td.adopt-cell .adopt-dim { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 26px; }

/* 第 39 轮：联系记录按钮（待联系 / 已联系），仅作标记 */
.btn-ok { color: #1e7a4d; background: #f0faf4; border-color: #bfe2cf; }
.btn-ok:hover { background: #e3f7ec; border-color: #1e7a4d; color: #155f3c; }
.recruit-table td.ops-cell .row-actions { gap: 7px; }
.recruit-table td.ops-cell .btn { padding: 5px 11px; font-size: 12px; }

/* ---------- 第 40 轮：全后台表格统一为招募统计样式 + 整体美化 ---------- */
.table-wrap {
    border: 1px solid #e3eaf3; background: #fff;
    border-radius: 12px; box-shadow: 0 1px 5px rgba(20, 40, 70, .05);
}
table { font-size: 13px; }
th {
    font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
    font-size: 12.5px; font-weight: 600; letter-spacing: .5px; color: #3d4d63;
    background: linear-gradient(180deg, #f4f9fe, #edf4fb);
    border-bottom: 1px solid #d8e4f1; padding: 13px 16px; white-space: nowrap;
}
td { padding: 12px 16px; border-bottom: 1px solid #eef3f9; color: #2d3748; vertical-align: middle; }
tbody tr:nth-child(even) { background: #fafdfe; }
tbody tr:hover { background: #f1f7fe; }
tbody tr:last-child td { border-bottom: 0; }
td .title-cell { font-weight: 600; color: #163d73; }
td .sub { font-size: 11px; color: #8a96a5; }
.mono { font-size: 11.5px; color: #8a96a5; font-variant-numeric: tabular-nums; }
.empty { color: #8a96a5; }
/* 表格上方工具条与弹窗头部浅色统一 */
.toolbar { color: #5b6878; }
/* 按钮微调：更圆润、浅色描边 */
.btn { border-radius: 8px; }
.btn-ghost { color: #31435c; background: #fff; border-color: #cddcee; }
.btn-ghost:hover { background: #f1f6fd; border-color: #1d4f8f; color: #1d4f8f; }
.btn-danger { color: #c8102e; background: #fdf1f3; border-color: #efc4cb; }
.btn-danger:hover { background: #fbe3e8; border-color: #c8102e; color: #a30d24; }
.btn-ok { color: #1e7a4d; background: #f0faf4; border-color: #bfe2cf; }
.btn-ok:hover { background: #e3f7ec; border-color: #1e7a4d; color: #155f3c; }
.btn-glow { color: #fff; background: linear-gradient(110deg, #1d4f8f, #2f7bd9 60%, #4a90d9);
  box-shadow: 0 4px 14px rgba(29, 79, 143, .25); }
.btn-glow:hover { transform: translateY(-1px); }
/* 输入框统一浅色圆角 */
input, select, textarea { border-radius: 8px; }
/* 面板标题区微调 */
.panel-head h1 { letter-spacing: .3px; }
/* 滚动条浅色化（WebKit） */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #f2f6fb; }
::-webkit-scrollbar-thumb { background: #c6d6e8; border-radius: 6px; border: 2px solid #f2f6fb; }
::-webkit-scrollbar-thumb:hover { background: #a9c2dd; }
