/* AI-assisted CCTV resource governance */
.candidate-tabs{display:flex;width:max-content;max-width:100%;margin:0 0 16px;overflow-x:auto}.candidate-tabs a{display:flex;align-items:center;gap:7px;white-space:nowrap}.candidate-tabs a span{min-width:22px;padding:1px 6px;border-radius:999px;background:rgba(0,0,0,.08);font-size:11px;text-align:center}.candidate-tabs a.on span{background:rgba(255,255,255,.22)}
.ai-governance-head,.ai-location-summary,.ai-existing-location,.ai-action-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.ai-governance-head h2{margin:2px 0 0}.ai-title-comparison{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.ai-title-comparison>div{padding:12px;border:1px solid var(--line);background:var(--surface-2,#f6f7f9)}.ai-title-comparison span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.ai-title-comparison strong{font-size:14px;line-height:1.5}.ai-location-result{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin:14px 0}.ai-location-summary span{font-size:12px;color:var(--muted)}.ai-location-result p{font-size:13px;color:var(--muted);line-height:1.6}.ai-existing-location{padding:10px 12px;background:var(--surface-2,#f6f7f9)}.ai-location-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;margin-top:12px}.ai-location-form label{display:flex;flex-direction:column;gap:6px;min-width:0;color:#4c586b;font-size:13px;font-weight:600}.ai-location-form input{display:block;width:100%;min-width:0;min-height:42px;border:1px solid #cfd6e2;border-radius:6px;background:#fff;padding:9px 11px;color:var(--ink);font:14px/1.5 inherit;transition:border-color .15s,box-shadow .15s}.ai-location-form input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,75,143,.12)}.ai-location-form-action{grid-column:1/-1;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ai-location-form-action span{font-size:12px;color:var(--muted)}.ai-action-row{justify-content:flex-start;margin:10px 0}@media(max-width:680px){.ai-title-comparison,.ai-location-form{grid-template-columns:1fr}.ai-location-form input{min-height:46px;font-size:16px}}
{{-- 全站样式：中文政府核查风格，自包含无外部依赖 --}}
:root {
    --primary: #1e4b8f;
    --primary-dark: #16386d;
    --accent: #c8102e;
    --ink: #26303f;
    --muted: #748094;
    --line: #e5e9f0;
    --bg: #f4f6fa;
    --card: #ffffff;
}

/* ===== 知识库工作台 ===== */
.kb-catalog-head,.kb-workspace-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin:8px 0 24px;padding:28px 0 24px;border-bottom:2px solid #193b5a}.kb-catalog-head>div>span,.kb-eyebrow{display:block;color:#8a5a09;font-size:11px;font-weight:800;letter-spacing:1.4px}.kb-catalog-head h1,.kb-workspace-head h1{margin:5px 0 6px;color:#142e46;font:700 38px/1.15 Georgia,"Songti SC",serif;letter-spacing:0}.kb-catalog-head p,.kb-workspace-head p{max-width:720px;margin:0;color:#607083}.kb-catalog-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.kb-catalog-item{display:grid;grid-template-columns:58px 1fr;gap:18px;padding:22px;border:1px solid #d9e0e8;border-radius:6px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 5px 18px rgba(20,46,70,.06);transition:transform .2s,border-color .2s}.kb-catalog-item:hover{transform:translateY(-2px);border-color:#7890a7;text-decoration:none}.kb-catalog-mark{display:grid;width:58px;height:58px;place-items:center;border-radius:4px;background:#193b5a;color:#fff;font:700 16px Georgia,serif}.kb-catalog-item small{color:#8a5a09;font-size:11px;font-weight:700}.kb-catalog-item h2{margin:2px 0 6px;color:#142e46;font:700 23px/1.25 Georgia,"Songti SC",serif}.kb-catalog-item p{margin:0;color:#607083}.kb-catalog-item footer{display:flex;gap:14px;margin-top:18px;padding-top:12px;border-top:1px solid #edf0f3;color:#526579;font-size:12px}.kb-create-form,.kb-page-form{max-width:880px}.kb-create-form label,.kb-page-form label{display:grid;gap:7px;margin-bottom:16px;font-weight:700}.kb-create-form input,.kb-create-form textarea,.kb-create-form select,.kb-page-form input,.kb-page-form textarea{width:100%;padding:10px 12px;border:1px solid #cbd5df;border-radius:4px;background:#fff;font:inherit}.kb-breadcrumb{display:flex;gap:8px;margin:4px 0 8px;color:#758395;font-size:13px}.kb-head-stats{display:flex;border:1px solid #d8e0e8;background:#fff}.kb-head-stats div{min-width:82px;padding:12px 18px;text-align:center}.kb-head-stats div+div{border-left:1px solid #e4e9ee}.kb-head-stats strong,.kb-head-stats span{display:block}.kb-head-stats strong{color:#173c5e;font:700 24px Georgia,serif}.kb-head-stats span{color:#718094;font-size:11px}.kb-workspace{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px}.kb-sidebar{display:flex;flex-direction:column;gap:14px}.kb-sidebar section{padding:16px;border:1px solid #dce2e8;background:#fff}.kb-sidebar h2{margin:0 0 11px;color:#253e54;font-size:13px}.kb-sidebar section>a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 0;border-top:1px solid #edf0f3;color:#334d64;font-size:13px}.kb-sidebar section>p{color:#788697;font-size:13px}.kb-document{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:9px 0;border-top:1px solid #edf0f3;font-size:12px}.kb-document>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.kb-document small{font-weight:700}.kb-document em{grid-column:1/-1;color:#a13f31;font-size:11px;font-style:normal}.kb-status-ready{color:#15803d}.kb-status-failed{color:#b42318}.kb-status-pending,.kb-status-ocr,.kb-status-indexing{color:#9a6700}.kb-manage form{display:grid;gap:9px;margin-bottom:10px}.kb-manage input{max-width:100%;font-size:12px}.kb-manage .btn{justify-content:center}.kb-main{display:flex;min-width:0;flex-direction:column;gap:18px}.kb-map-panel,.kb-rag,.kb-wiki-preview{border:1px solid #dce2e8;background:#fff}.kb-map-panel>header,.kb-wiki-preview>header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:18px 20px}.kb-map-panel h2,.kb-rag h2,.kb-wiki-preview h2{margin:3px 0;color:#183b59;font:700 23px/1.25 Georgia,"Songti SC",serif}.kb-map-panel header p,.kb-rag>div>p{margin:3px 0 0;color:#6e7d8e;font-size:13px}.kb-map-legend{display:flex;gap:12px;white-space:nowrap;color:#607083;font-size:11px}.kb-map-legend span{display:flex;align-items:center;gap:5px}.kb-map-legend i{width:9px;height:9px;border-radius:50%;background:#64748b}.kb-map-legend .is-operational{background:#15803d}.kb-map-legend .is-construction{background:#c2410c}.kb-map-legend .is-committed{background:#1d4ed8}.kb-map{width:100%;height:480px;background:#dce3e8}.kb-map-fallback{padding:8px 14px;background:#f5f7f9;color:#687789;font-size:12px}.kb-map-popup{display:grid;min-width:220px;gap:3px;color:#243849}.kb-map-popup small{color:#8a5a09}.kb-map-popup strong{font-size:15px}.kb-map-popup span{color:#657485;font-size:12px}.kb-map-popup dl{display:flex;gap:16px;margin:8px 0}.kb-map-popup dl div{display:grid}.kb-map-popup dt{color:#788697;font-size:10px}.kb-map-popup dd{margin:0;font-weight:700}.kb-rag{display:grid;grid-template-columns:minmax(180px,.65fr) minmax(280px,1.35fr);gap:22px;padding:20px;border-left:4px solid #9a6700}.kb-rag form{display:grid;grid-template-columns:1fr auto;gap:9px}.kb-rag textarea{min-height:86px;resize:vertical;border:1px solid #c7d1dc;border-radius:4px;padding:11px;font:inherit}.kb-rag-result{grid-column:1/-1;padding-top:16px;border-top:1px solid #e3e8ed}.kb-rag-result>p{white-space:pre-wrap}.kb-rag-result>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kb-rag-result>div>div{padding:10px;background:#f4f6f8}.kb-rag-result b,.kb-rag-result span{display:block;font-size:12px}.kb-rag-result span{color:#788697}.kb-rag-result p{margin:4px 0 0;color:#56677a;font-size:11px}.kb-wiki-preview article{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-top:1px solid #e3e8ed}.kb-wiki-preview article small{color:#9a6700;font-size:10px;font-weight:700}.kb-wiki-preview article h3{margin:2px 0;color:#183b59;font:700 19px Georgia,"Songti SC",serif}.kb-wiki-preview article p{margin:0;color:#657485;font-size:13px}.kb-article-layout{display:grid;grid-template-columns:220px minmax(0,820px);justify-content:center;gap:26px}.kb-article-index{position:sticky;top:76px;align-self:start;display:flex;flex-direction:column;padding:16px;border-left:3px solid #193b5a;background:#eef2f5}.kb-article-index>span{color:#8a5a09;font-size:10px;font-weight:800}.kb-article-index>strong{margin-bottom:12px;color:#193b5a}.kb-article-index a{padding:8px 0;border-top:1px solid #d8e0e7;color:#52677a;font-size:12px}.kb-article-index a.active{color:#193b5a;font-weight:800}.kb-article{border:1px solid #dce2e8;background:#fff}.kb-article>header{padding:34px 42px;border-bottom:1px solid #dce2e8;background:#f8fafb}.kb-article>header h1{margin:5px 0 8px;color:#142e46;font:700 38px/1.18 Georgia,"Songti SC",serif}.kb-article>header p{margin:0;color:#566a7d;font-size:16px}.kb-article>header div{margin-top:14px;color:#8994a0;font-size:11px}.kb-markdown{padding:30px 42px;color:#283a4b;line-height:1.8}.kb-markdown h1{display:none}.kb-markdown h2{margin:34px 0 12px;padding-bottom:8px;border-bottom:1px solid #d9e0e7;color:#153b5a;font:700 25px Georgia,"Songti SC",serif}.kb-markdown h3{margin-top:26px;color:#204b6d;font:700 19px Georgia,"Songti SC",serif}.kb-markdown table{width:100%;border-collapse:collapse;font-size:13px}.kb-markdown th,.kb-markdown td{padding:8px 10px;border:1px solid #d8e0e7;text-align:left}.kb-markdown th{background:#eef3f6;color:#29485f}.kb-markdown blockquote{margin:0 0 24px;padding:12px 16px;border-left:4px solid #9a6700;background:#fff9e8;color:#654d20}.kb-article>footer{padding:18px 42px;border-top:1px solid #dce2e8;background:#f5f7f9}.kb-article>footer p{margin:5px 0;color:#657485;font-size:12px}
.kb-layer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-top:1px solid #d9e0e8;background:#f7f9fc}.kb-layer-title{display:grid;min-width:145px}.kb-layer-title strong{color:#172f47;font-size:13px}.kb-layer-title span{color:#6c7888;font-size:11px}.kb-layer-options{display:flex;align-items:stretch;justify-content:flex-end;gap:8px;flex-wrap:wrap}.kb-layer-options label{display:flex;min-height:44px;align-items:center;gap:8px;padding:6px 10px;border:1px solid #ced7e1;border-radius:4px;background:#fff;cursor:pointer;transition:border-color .18s,background .18s}.kb-layer-options label:has(input:checked){border-color:#365f85;background:#edf5fb}.kb-layer-options label:focus-within{outline:3px solid rgba(37,99,235,.22);outline-offset:1px}.kb-layer-options input{width:16px;height:16px;margin:0;accent-color:#1e4b8f}.kb-layer-options i{width:10px;height:10px;flex:0 0 auto;border:2px solid color-mix(in srgb,var(--layer-color),#111 22%);background:var(--layer-color)}.kb-layer-options span{display:grid;color:#27384a;font-size:12px;font-weight:700;line-height:1.25}.kb-layer-options small{color:#758294;font-size:10px;font-weight:500;letter-spacing:0}.kb-map-notice{display:grid;grid-template-columns:auto 1fr auto;gap:10px 14px;align-items:center;padding:9px 16px;border-top:1px solid #eadcad;background:#fff9e8;color:#594b2d;font-size:12px}.kb-map-notice strong{color:#8a5200}.kb-map-notice a{font-weight:700;white-space:nowrap}.kb-map-popup-event strong{margin-top:3px}.kb-map-popup-event dl{grid-template-columns:1fr}.kb-map-popup-event dl div{display:grid;grid-template-columns:50px 1fr;gap:8px}.kb-map-popup-event dl dt,.kb-map-popup-event dl dd{text-align:left}
@media(max-width:900px){.kb-catalog-grid{grid-template-columns:1fr}.kb-workspace{grid-template-columns:1fr}.kb-sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.kb-map{height:420px}.kb-article-layout{grid-template-columns:1fr}.kb-article-index{position:static}.kb-rag{grid-template-columns:1fr}.kb-layer-toolbar{align-items:flex-start;flex-direction:column}.kb-layer-options{width:100%;justify-content:flex-start}.kb-map-notice{grid-template-columns:auto 1fr}.kb-map-notice a{grid-column:1/-1}}
@media(max-width:600px){.kb-catalog-head,.kb-workspace-head{align-items:flex-start;flex-direction:column}.kb-catalog-head h1,.kb-workspace-head h1,.kb-article>header h1{font-size:30px}.kb-head-stats{width:100%}.kb-head-stats div{flex:1;min-width:0}.kb-sidebar{grid-template-columns:1fr}.kb-map-panel>header{align-items:flex-start;flex-direction:column}.kb-map-legend{flex-wrap:wrap}.kb-map{height:360px}.kb-layer-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.kb-layer-options label{min-width:0;padding:6px 8px}.kb-layer-options span{min-width:0}.kb-layer-options small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kb-map-notice{grid-template-columns:1fr;gap:4px}.kb-map-notice a{grid-column:auto;margin-top:3px}.kb-rag form{grid-template-columns:1fr}.kb-rag-result>div{grid-template-columns:1fr}.kb-wiki-preview article{align-items:flex-start;flex-direction:column}.kb-article>header,.kb-markdown,.kb-article>footer{padding:22px 18px}.kb-markdown{overflow-x:auto}.kb-catalog-item{grid-template-columns:44px 1fr;padding:16px}.kb-catalog-mark{width:44px;height:44px}.kb-catalog-item footer{flex-direction:column;gap:3px}}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 72px; }
body {
    margin: 0;
    font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;
    color: var(--ink);
    background: var(--bg);
    font-size: 15px;
    line-height: 1.6;
}
img, video { max-width: 100%; height: auto; }
button, input, select, textarea, a { touch-action: manipulation; }
a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
.skip-link {
    position: fixed; top: 8px; left: 8px; z-index: 1000; padding: 9px 14px;
    border-radius: 6px; background: #fff; color: var(--primary-dark); font-weight: 700;
    transform: translateY(-150%); transition: transform .15s ease-out;
}
.skip-link:focus { transform: translateY(0); }
:where(a, button, input, select, textarea):focus-visible { outline: 3px solid rgba(30,75,143,.36); outline-offset: 2px; }

/* ===== 顶部导航 ===== */
.topbar {
    background: linear-gradient(135deg, var(--primary-dark), var(--primary));
    color: #fff;
    position: sticky; top: 0; z-index: 100;
    box-shadow: 0 2px 8px rgba(22,56,109,.25);
}
.topbar-inner {
    max-width: 1200px; margin: 0 auto; padding: 0 20px;
    display: flex; align-items: center; gap: 24px; height: 56px; flex-wrap: wrap;
}
.brand { display: flex; align-items: center; gap: 10px; color: #fff; font-size: 17px; font-weight: 700; text-decoration: none; }
.brand:hover { text-decoration: none; }
.brand .logo {
    width: 30px; height: 30px; border-radius: 8px; background: #fff;
    display: flex; align-items: center; justify-content: center;
    color: var(--primary); font-size: 14px; font-weight: 800; flex-shrink: 0;
}
.nav { display: flex; gap: 4px; flex-wrap: wrap; }
.nav a {
    color: rgba(255,255,255,.85); padding: 6px 14px; border-radius: 8px;
    font-size: 14px; text-decoration: none; transition: .15s;
}
.nav a:hover, .nav a.active { color: #fff; background: rgba(255,255,255,.15); text-decoration: none; }
.topbar .spacer { flex: 1; }
.topbar .user-box { font-size: 13px; color: rgba(255,255,255,.9); display: flex; align-items: center; gap: 10px; }
.topbar .user-box form { display: inline; }
.locale-switcher select { min-height: 32px; max-width: 112px; border: 1px solid rgba(255,255,255,.35); border-radius: 4px; padding: 3px 24px 3px 8px; color: #fff; background: #16386d; }
@media (max-width: 680px) {
    .topbar { position: relative; }
    .topbar-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; height: auto; min-height: 56px; padding: 8px 12px 0; gap: 6px 10px; }
    .brand { min-width: 0; font-size: 15px; }
    .brand > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .nav { grid-column: 1 / -1; grid-row: 2; width: calc(100% + 24px); margin-left: -12px; padding: 0 8px env(safe-area-inset-bottom); overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
    .nav::-webkit-scrollbar { display: none; }
    .nav a { min-height: 44px; display: inline-flex; flex: 0 0 auto; align-items: center; padding: 8px 12px; }
    .topbar .spacer { display: none; }
    .topbar .user-box { min-width: 0; margin-left: auto; gap: 6px; }
    .topbar .user-box > a { min-height: 44px; display: inline-flex; align-items: center; }
    .topbar .user-box .user-identity { display: none; }
    .topbar .user-box .btn { min-width: 44px; min-height: 44px; padding-inline: 8px; }
}

/* ===== 社媒关键词监测 ===== */
.social-monitor-actions, .social-keyword-input-row, .social-keyword-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.social-url-ingest { display: grid; grid-template-columns: minmax(220px, .55fr) minmax(0, 1.45fr); gap: 24px; align-items: end; }
.social-url-ingest h2 { margin-bottom: 5px; padding: 0; border: 0; }
.social-url-ingest p { margin: 0; color: var(--muted); font-size: 12px; }
.social-url-ingest .err { margin-top: 6px; color: var(--accent); font-size: 12px; }
.social-monitor-layout { display: grid; grid-template-columns: minmax(260px, .65fr) minmax(0, 1.35fr); gap: 16px; align-items: start; }
.social-keyword-create { position: sticky; top: 76px; }
.social-keyword-input-row { margin-top: 6px; flex-wrap: nowrap; }
.social-keyword-input-row input { flex: 1; }
.social-monitor-account-form { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); }
.social-monitor-account-form h3 { margin: 0 0 10px; color: var(--primary-dark); font-size: 15px; }
.social-monitor-account-form p { margin: 8px 0 0; line-height: 1.5; }
.social-monitor-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin: 18px 0 0; padding-top: 16px; border-top: 1px solid var(--line); }
.social-monitor-summary div { padding: 0 10px; border-right: 1px solid var(--line); text-align: center; }
.social-monitor-summary div:first-child { padding-left: 0; }
.social-monitor-summary div:last-child { padding-right: 0; border-right: 0; }
.social-monitor-summary dt { color: var(--muted); font-size: 12px; }
.social-monitor-summary dd { margin: 1px 0 0; color: var(--primary-dark); font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
.social-keyword-list .dashboard-panel-head > span { color: var(--muted); font-size: 12px; }
.social-keyword-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px 16px; align-items: center; min-height: 72px; padding: 12px 0; border-bottom: 1px dashed var(--line); }
.social-keyword-row:last-child { border-bottom: 0; }
.social-keyword-main, .social-keyword-status { display: flex; align-items: center; gap: 8px; min-width: 0; flex-wrap: wrap; }
.social-keyword-main strong { color: var(--primary-dark); overflow-wrap: anywhere; }
.social-keyword-status { color: var(--muted); font-size: 12px; }
.social-keyword-error { grid-column: 1; overflow: hidden; color: var(--accent); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.social-keyword-controls { grid-column: 2; grid-row: 1 / 4; flex-wrap: nowrap; }
@media (max-width: 760px) {
    .social-url-ingest { grid-template-columns: 1fr; gap: 14px; }
    .social-url-ingest .social-keyword-input-row { align-items: stretch; flex-direction: column; }
    .social-monitor-layout { grid-template-columns: 1fr; }
    .social-keyword-create { position: static; }
    .social-monitor-actions { width: 100%; }
    .social-monitor-actions form, .social-monitor-actions .btn { flex: 1 1 auto; }
    .social-keyword-row { grid-template-columns: minmax(0, 1fr); }
    .social-keyword-controls { grid-column: 1; grid-row: auto; margin-top: 5px; }
    .social-keyword-error { grid-column: 1; }
}

/* ===== 情报采集进度 ===== */
.intelligence-fetch-progress { display: grid; gap: 9px; margin: 0 0 16px; padding: 13px 15px; border: 1px solid #c8d7e8; border-left: 4px solid var(--primary); border-radius: 6px; background: #f7faff; }
.intelligence-fetch-progress[hidden] { display: none; }
.intelligence-fetch-progress-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.intelligence-fetch-progress-head > div { display: grid; gap: 2px; min-width: 0; }
.intelligence-fetch-progress-head strong { color: #20344f; font-size: 13px; }
.intelligence-fetch-progress-head span, .intelligence-fetch-progress-meta { color: #5e6d81; font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.intelligence-fetch-progress-head b { flex: 0 0 auto; color: #244c7c; font-size: 13px; font-variant-numeric: tabular-nums; }
.intelligence-fetch-progress progress { width: 100%; height: 7px; overflow: hidden; border: 0; border-radius: 4px; background: #dfe7f0; appearance: none; }
.intelligence-fetch-progress progress::-webkit-progress-bar { border-radius: 4px; background: #dfe7f0; }
.intelligence-fetch-progress progress::-webkit-progress-value { border-radius: 4px; background: var(--primary); }
.intelligence-fetch-progress progress::-moz-progress-bar { border-radius: 4px; background: var(--primary); }

/* ===== 情报信源管理 ===== */
.intelligence-source-head-actions,.intelligence-source-actions,.intelligence-source-toolbar form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.intelligence-source-create{margin-bottom:16px}.intelligence-source-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px}.intelligence-source-form .field{display:flex;min-width:0;flex-direction:column;gap:5px}.intelligence-source-form label,.intelligence-source-toolbar label{color:#4c586b;font-size:12px;font-weight:700}.intelligence-source-form input,.intelligence-source-form select,.intelligence-source-toolbar input{width:100%;min-width:0;min-height:40px;border:1px solid #cfd6e2;border-radius:6px;background:#fff;padding:8px 10px;color:var(--ink);font:14px/1.4 inherit}.intelligence-source-form input:focus,.intelligence-source-form select:focus,.intelligence-source-toolbar input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,75,143,.12)}.intelligence-source-url,.intelligence-source-keywords{grid-column:span 2}.intelligence-source-form .checkbox-field{min-height:40px;align-self:end}.intelligence-source-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end}.intelligence-source-toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#fff}.intelligence-source-toolbar input{width:220px}.intelligence-source-toolbar input[name="country"]{width:90px}.intelligence-source-toolbar>span{flex:0 0 auto;color:var(--muted);font-size:12px}.intelligence-source-list{display:grid;gap:10px}.intelligence-source-row{padding:16px}.intelligence-source-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:start}.intelligence-source-summary h2{margin:5px 0 2px;font-size:16px}.intelligence-source-summary a{display:block;max-width:760px;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.intelligence-source-badges{display:flex;gap:5px;flex-wrap:wrap}.intelligence-source-summary dl{display:grid;grid-template-columns:repeat(3,minmax(90px,auto));gap:0;margin:0}.intelligence-source-summary dl div{padding:0 14px;border-left:1px solid var(--line)}.intelligence-source-summary dt{color:var(--muted);font-size:11px}.intelligence-source-summary dd{margin:2px 0 0;color:var(--primary-dark);font-size:13px;font-weight:700}.intelligence-source-error{margin-top:10px;padding:8px 10px;border-left:3px solid var(--accent);background:#fff5f5;color:#9b1c31;font-size:12px}.intelligence-source-actions{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.intelligence-source-actions details{flex:1}.intelligence-source-actions summary{width:max-content;cursor:pointer;list-style:none}.intelligence-source-actions summary::-webkit-details-marker{display:none}.intelligence-source-actions details[open] summary{margin-bottom:14px}.intelligence-source-actions details .intelligence-source-form{padding:16px;border:1px solid var(--line);border-radius:6px;background:#f8fafc}
.intelligence-source-summary dl{grid-template-columns:repeat(4,minmax(90px,auto))}
@media(max-width:840px){.intelligence-source-form{grid-template-columns:repeat(2,minmax(0,1fr))}.intelligence-source-summary{grid-template-columns:1fr}.intelligence-source-summary dl{grid-template-columns:repeat(4,1fr)}}
@media(max-width:560px){.intelligence-source-head-actions,.intelligence-source-toolbar,.intelligence-source-toolbar form{width:100%;align-items:stretch;flex-direction:column}.intelligence-source-form{grid-template-columns:1fr}.intelligence-source-url,.intelligence-source-keywords{grid-column:span 1}.intelligence-source-form input,.intelligence-source-form select,.intelligence-source-toolbar input,.intelligence-source-toolbar input[name="country"]{width:100%;min-height:44px;font-size:16px}.intelligence-source-summary dl{grid-template-columns:1fr}.intelligence-source-summary dl div{padding:7px 0;border-top:1px solid var(--line);border-left:0}.intelligence-source-actions{align-items:stretch}.intelligence-source-actions details{flex-basis:100%}}

/* ===== 独立社媒信息流 ===== */
.social-feed-kicker { color: #28738f; font-size: 11px; font-weight: 700; letter-spacing: 0; }
.social-feed-toolbar { display: flex; align-items: center; gap: 4px; margin-bottom: 16px; border-bottom: 1px solid var(--line); }
.social-feed-toolbar a { min-width: 72px; padding: 9px 14px; border-bottom: 3px solid transparent; color: var(--muted); text-align: center; text-decoration: none; }
.social-feed-toolbar a:hover, .social-feed-toolbar a.on { border-bottom-color: #28738f; color: #164e63; }
.social-feed-toolbar > span { margin-left: auto; color: var(--muted); font-size: 12px; }
.social-feed-layout { display: grid; grid-template-columns: minmax(0, 760px) minmax(220px, 1fr); gap: 20px; align-items: start; }
.social-feed-stream { min-width: 0; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.social-post { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; padding: 18px; border-bottom: 1px solid var(--line); }
.social-post:last-of-type { border-bottom: 0; }
.social-avatar { display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; color: #fff; font-weight: 800; }
.social-avatar.weibo { background: #d33b2c; }
.social-avatar.x { background: #15191d; }
.social-avatar.wechat { background: #168c4a; }
.social-post-body { min-width: 0; }
.social-post-header, .social-post-footer, .social-post-actions, .social-engagement { display: flex; align-items: center; gap: 10px; }
.social-post-header { justify-content: space-between; }
.social-post-header > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.social-post-header strong { overflow: hidden; color: #172033; text-overflow: ellipsis; white-space: nowrap; }
.social-post-header span, .social-post-header time { color: var(--muted); font-size: 12px; }
.social-post-text { margin: 9px 0 12px; color: #273244; font-size: 15px; line-height: 1.75; white-space: pre-line; overflow-wrap: anywhere; }
.social-post-media { display: block; width: min(100%, 520px); overflow: hidden; border-radius: 6px; background: #edf1f5; }
.social-post-media[hidden] { display: none; }
.social-post-media img { display: block; width: 100%; max-height: 420px; object-fit: cover; }
.social-original { margin: 12px 0 0; border-left: 3px solid #d8e0ea; padding-left: 11px; color: #596579; font-size: 13px; }
.social-original summary { min-height: 32px; cursor: pointer; color: var(--primary); }
.social-original div { padding: 6px 0; line-height: 1.7; overflow-wrap: anywhere; }
.social-post-footer { justify-content: space-between; margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--line); }
.social-engagement { color: var(--muted); font-size: 12px; }
.social-post-actions { flex-wrap: wrap; justify-content: flex-end; font-size: 12px; }
.social-feed-aside { position: sticky; top: 76px; padding: 16px 18px; border-left: 4px solid #d59624; background: #fffaf0; }
.social-feed-aside strong { color: #704c0f; }
.social-feed-aside p, .social-feed-aside span { display: block; margin: 7px 0 0; color: #765f37; font-size: 12px; line-height: 1.65; }
.social-feed-empty { padding: 64px 20px; color: var(--muted); text-align: center; }
@media (max-width: 760px) {
    .social-feed-layout { grid-template-columns: 1fr; }
    .social-feed-aside { grid-row: 1; position: static; }
    .social-feed-toolbar { overflow-x: auto; }
    .social-feed-toolbar a { min-height: 44px; }
    .social-feed-toolbar > span { display: none; }
    .social-post { grid-template-columns: 36px minmax(0, 1fr); gap: 10px; padding: 15px 12px; }
    .social-avatar { width: 36px; height: 36px; font-size: 13px; }
    .social-post-header { align-items: flex-start; }
    .social-post-header > div { display: block; }
    .social-post-header span { display: block; }
    .social-post-footer { align-items: flex-start; flex-direction: column; }
    .social-post-actions { justify-content: flex-start; }
}

/* ===== 通用容器/组件 ===== */
.intel-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:18px; }
.intel-head h1 { margin:2px 0 0; color:#172235; font-size:26px; line-height:1.25; }
.intel-head p { margin:5px 0 0; color:var(--muted); font-size:13px; }
.intel-kicker { color:#a12d2d; font-size:11px; font-weight:800; letter-spacing:0; }
.intel-head-actions { display:flex; align-items:center; gap:8px; }
.intel-source-toggle { display:none; min-width:64px; min-height:44px; border:1px solid #cfd7e3; border-radius:6px; background:#fff; color:#26374e; font:600 14px/1 inherit; }
.intel-search-panel{display:grid;grid-template-columns:minmax(220px,2fr) repeat(6,minmax(110px,1fr)) auto;gap:10px;align-items:end;margin-bottom:12px;padding:13px;border:1px solid var(--line);border-radius:8px;background:#fff}.intel-search-panel>div{display:flex;min-width:0;flex-direction:column;gap:4px}.intel-search-panel label{color:#536174;font-size:11px;font-weight:700}.intel-search-panel input,.intel-search-panel select{width:100%;min-width:0;min-height:40px;border:1px solid #cfd6e2;border-radius:6px;background:#fff;padding:7px 9px;color:var(--ink);font:13px/1.4 inherit}.intel-search-panel input:focus,.intel-search-panel select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,75,143,.12)}.intel-search-actions{flex-direction:row!important;gap:6px!important}.intel-search-actions .btn{min-height:40px;white-space:nowrap}
.intel-rag{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(300px,1.35fr);gap:18px;margin-bottom:12px;padding:16px;border:1px solid #ccd9e8;border-left:4px solid var(--primary);border-radius:6px;background:#f8fbff}.intel-rag h2{margin:2px 0 3px;font-size:17px}.intel-rag p{margin:0;color:#536174;font-size:12px}.intel-rag form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.intel-rag textarea{width:100%;min-height:72px;resize:vertical;border:1px solid #bbc9da;border-radius:6px;background:#fff;padding:10px 12px;color:var(--ink);font:14px/1.55 inherit}.intel-rag form .btn{align-self:stretch}.intel-rag-result{grid-column:1/-1;padding-top:13px;border-top:1px solid #dce5ef}.intel-rag-result>p{color:#27364a;font-size:14px;line-height:1.75;white-space:pre-wrap}.intel-rag-result>div{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap}.intel-rag-result a{padding:5px 9px;border:1px solid #cad7e6;border-radius:5px;background:#fff;font-size:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.intel-shell { display:grid; grid-template-columns:250px minmax(0,1fr); align-items:start; min-height:620px; border:1px solid var(--line); border-radius:8px; background:#fff; overflow:hidden; }
.intel-sources { position:sticky; top:56px; max-height:calc(100vh - 58px); overflow-y:auto; border-right:1px solid var(--line); background:#f8fafc; }
.intel-sources-head { display:flex; align-items:center; justify-content:space-between; min-height:55px; padding:0 16px; border-bottom:1px solid var(--line); color:#172235; }
.intel-sources-head button { display:none; width:44px; height:44px; border:0; background:transparent; color:#526174; font-size:25px; }
.intel-all,.intel-country a { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:42px; padding:8px 16px; color:#445269; font-size:13px; text-decoration:none; }
.intel-all { border-bottom:1px solid var(--line); font-weight:700; }
.intel-all:hover,.intel-country a:hover,.intel-all.active,.intel-country a.active { background:#e9f0f8; color:#143f76; text-decoration:none; }
.intel-all b,.intel-country b { color:#8090a5; font-size:11px; font-variant-numeric:tabular-nums; }
.intel-country { border-bottom:1px solid var(--line); }
.intel-country summary { display:flex; align-items:center; justify-content:space-between; min-height:46px; padding:9px 16px; color:#27364a; cursor:pointer; font-size:13px; font-weight:700; list-style:none; }
.intel-country summary::-webkit-details-marker { display:none; }
.intel-country summary span::before { content:'›'; display:inline-block; margin-right:8px; color:#73839a; transform:rotate(0); transition:transform .18s; }
.intel-country[open] summary span::before { transform:rotate(90deg); }
.intel-country a { padding-left:34px; }
.intel-country a small { margin-left:4px; color:#8a5a14; font-size:10px; }
.intel-drawer-scrim { display:none; }
.intel-stream { min-width:0; }
.intel-stream-toolbar { display:flex; align-items:center; justify-content:space-between; min-height:55px; padding:10px 20px; border-bottom:1px solid var(--line); background:#fff; }
.intel-stream-toolbar div { display:flex; align-items:baseline; gap:10px; }
.intel-stream-toolbar strong { color:#172235; }
.intel-stream-toolbar span { color:var(--muted); font-size:12px; }
.intel-item { display:grid; grid-template-columns:18px minmax(0,1fr); gap:12px; padding:18px 22px 18px 16px; border-bottom:1px solid #edf0f4; transition:background .15s; }
.intel-item:hover { background:#fbfcfe; }
.intel-item-rail { display:flex; justify-content:center; padding-top:5px; }
.intel-item-rail span { width:8px; height:8px; border:2px solid #b3262e; border-radius:50%; background:#fff; box-shadow:0 0 0 3px #f8dfe1; }
.intel-item-main { min-width:0; }
.intel-item header,.intel-item footer,.intel-source-line,.intel-actions,.intel-assets,.intel-asset-links { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.intel-item header,.intel-item footer { justify-content:space-between; }
.intel-source-line strong { color:#26364c; font-size:13px; }
.intel-source-line span,.intel-item time { color:var(--muted); font-size:12px; }
.intel-source-line .intel-category { padding:1px 6px; border:1px solid #e8c1c4; border-radius:999px; background:#fff5f5; color:#962f36; font-size:10px; }
.intel-item h2 { margin:7px 0 6px; font-size:18px; line-height:1.45; letter-spacing:0; }
.intel-item h2 a { color:#172235; }
.intel-item p { display:-webkit-box; margin:0 0 11px; overflow:hidden; color:#536174; font-size:14px; line-height:1.7; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.intel-item footer { padding-top:10px; border-top:1px dashed #e5e9ef; }
.intel-assets,.intel-actions { color:#748094; font-size:12px; }
.intel-asset-links { margin:10px 0; }
.intel-asset-links a { min-height:34px; padding:5px 10px; border:1px solid #dbe2eb; border-radius:5px; background:#f8fafc; color:#334c6c; font-size:12px; }
.intel-empty { display:flex; min-height:320px; align-items:center; justify-content:center; flex-direction:column; gap:5px; color:var(--muted); }
.intel-empty strong { color:#405169; }
@media(max-width:760px){
    .intel-head { align-items:center; }
    .intel-source-toggle { display:block; }
    .intel-search-panel{grid-template-columns:1fr 1fr}.intel-search-query,.intel-search-actions{grid-column:1/-1}.intel-search-panel input,.intel-search-panel select{min-height:44px;font-size:16px}.intel-search-actions .btn{flex:1}
    .intel-rag{grid-template-columns:1fr}.intel-rag form{grid-template-columns:1fr}.intel-rag textarea{min-height:108px;font-size:16px}.intel-rag-result{grid-column:1}
    .intel-shell { display:block; min-height:520px; overflow:visible; }
    .intel-sources { position:fixed; z-index:301; top:0; bottom:0; left:0; width:min(86vw,320px); max-height:none; transform:translateX(-102%); box-shadow:10px 0 30px rgba(18,33,52,.2); transition:transform .2s ease-out; }
    .intel-sources.open { transform:translateX(0); }
    .intel-sources-head button { display:block; }
    .intel-drawer-scrim:not([hidden]) { display:block; position:fixed; z-index:300; inset:0; width:100%; height:100%; border:0; background:rgba(15,28,45,.42); }
    .intel-stream-toolbar { padding-inline:14px; }
    .intel-item { grid-template-columns:12px minmax(0,1fr); gap:8px; padding:16px 13px 16px 10px; }
    .intel-item header { align-items:flex-start; flex-direction:column; gap:3px; }
    .intel-item h2 { font-size:16px; }
    .intel-item footer { align-items:flex-start; flex-direction:column; }
}
@media(min-width:761px) and (max-width:1100px){.intel-search-panel{grid-template-columns:repeat(4,minmax(0,1fr))}.intel-search-query{grid-column:span 2}}
@media(prefers-reduced-motion:reduce){.intel-sources,.intel-country summary span::before{transition:none}}

/* ===== 访问统计 ===== */
.analytics-range{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.analytics-custom-range{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.analytics-custom-range label{color:var(--muted);font-size:11px}.analytics-custom-range input{min-height:38px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--text)}.analytics-summary{margin-bottom:16px}.analytics-trend{margin-bottom:16px}.analytics-bars{display:flex;min-height:230px;align-items:flex-end;gap:8px;padding:18px 4px 0;overflow-x:auto}.analytics-day{display:grid;min-width:32px;flex:1;grid-template-rows:150px 20px 18px;align-items:end;text-align:center}.analytics-bar-stack{position:relative;width:100%;height:140px;border-bottom:1px solid var(--line)}.analytics-bar-stack i,.analytics-bar-stack b{position:absolute;bottom:0;border-radius:3px 3px 0 0}.analytics-bar-stack i{left:18%;width:64%;background:#28558f}.analytics-bar-stack b{left:34%;width:32%;background:#83b5aa}.analytics-day strong{color:#26364c;font-size:11px}.analytics-day span{color:var(--muted);font-size:10px;white-space:nowrap}.analytics-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:16px}.analytics-table{display:grid}.analytics-row,.analytics-metric{display:flex;min-height:38px;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #edf0f4;font-size:13px}.analytics-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-row b,.analytics-metric b{flex:0 0 auto;font-variant-numeric:tabular-nums}.analytics-row-head{color:var(--muted);font-size:11px}.analytics-subtitle{margin:14px 0 4px;color:var(--muted);font-size:11px}.analytics-subtitle:first-of-type{margin-top:4px}@media(max-width:840px){.analytics-grid{grid-template-columns:1fr}.analytics-day{min-width:38px}.analytics-range{width:100%}.analytics-range>a.btn{flex:1}.analytics-custom-range{width:100%}.analytics-custom-range input{min-width:0;flex:1}.analytics-custom-range label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}}
.analytics-resource-section{margin-bottom:16px}.analytics-resource-count{color:var(--muted);font-size:12px;white-space:nowrap}.analytics-resource-charts{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px;margin-bottom:20px}.analytics-chart-title{margin:2px 0 4px;color:#344965;font-size:13px;font-weight:600}.analytics-chart{width:100%;height:310px}.analytics-ranking-chart{height:380px}.analytics-resource-table-wrap{overflow-x:auto;border-top:1px solid var(--line)}.analytics-resource-table{width:100%;border-collapse:collapse;font-size:13px}.analytics-resource-table th,.analytics-resource-table td{padding:11px 10px;border-bottom:1px solid #edf0f4;text-align:left;white-space:nowrap}.analytics-resource-table th{color:var(--muted);font-size:11px;font-weight:600}.analytics-resource-table td:first-child{min-width:260px;white-space:normal}.analytics-resource-table td:first-child a{display:block;font-weight:600}.analytics-resource-table td small{display:block;margin-top:3px;color:var(--muted);font-size:10px}.analytics-resource-table td:nth-child(3),.analytics-resource-table td:nth-child(4),.analytics-resource-table td:nth-child(5){font-variant-numeric:tabular-nums}.analytics-resource-table tr.is-selected td{background:#f1f6fb}.analytics-resource-table tr.is-selected td:first-child{box-shadow:inset 3px 0 #28558f}@media(max-width:840px){.analytics-resource-charts{grid-template-columns:1fr;gap:16px}.analytics-ranking-chart{height:360px}.analytics-resource-table td:first-child{min-width:220px}}
.analytics-country-section,.analytics-ip-section{margin-bottom:16px}.analytics-ip-table td:first-child{min-width:150px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.analytics-ip-table td:nth-child(3),.analytics-ip-table td:nth-child(4){font-variant-numeric:tabular-nums}.analytics-ip-details{margin-top:14px}.analytics-ip-details summary{width:fit-content;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer}.analytics-ip-details[open] summary{margin-bottom:12px}.analytics-ip-details .analytics-resource-table td:first-child{min-width:110px;font-family:inherit}

.container { max-width: 1200px; margin: 0 auto; padding: 24px 20px; }
.page-head { margin-bottom: 20px; display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.page-head h1 { font-size: 22px; margin: 0; }
.page-head .sub { color: var(--muted); font-size: 13px; margin-top: 4px; }
.admin-quickbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 12px; border: 1px dashed var(--line); border-radius: 10px; background: #fff; }
.admin-quickbar form { display: inline; }
.bulk-bar {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 10px 14px; margin-bottom: 12px;
    border: 1px solid var(--primary); border-radius: 10px; background: #eef3fb;
}
.bulk-bar > span { font-size: 13px; color: #33406b; }
.bulk-bar [data-bulk-count] { font-size: 15px; color: var(--primary); }
.card {
    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
    padding: 18px 20px; margin-bottom: 16px;
}
.card h2 { font-size: 16px; margin: 0 0 12px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }

.badge {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 12px; font-weight: 500; padding: 2px 10px; border-radius: 999px;
    background: #eef1f7; color: #4b5375; line-height: 1.6; white-space: nowrap;
}
.badge.src-cctv { background: #e8f0fe; color: #1a5fd0; }
.badge.src-soe { background: #fdf3e3; color: #b96a12; }
.badge.src-media { background: #eef1f7; color: #4b5375; }
.badge.src-operational { background: #e7f3f1; color: #17675c; }
.badge.type-video { background: #fdeaea; color: #c8102e; }
.badge.type-image { background: #e9f6ef; color: #1e7a4c; }
.badge.type-article { background: #e8f0fe; color: #1a5fd0; }
.badge.type-document { background: #edf1f6; color: #344965; }
.badge.st-published { background: #e9f6ef; color: #1e7a4c; }
.badge.st-candidate { background: #fdf3e3; color: #b96a12; }
.badge.st-hidden { background: #eef1f7; color: #6b7280; }
.badge.audience-public { background: #e8f5ee; color: #176b42; }
.badge.audience-commander { background: #fff3d6; color: #8a5a00; }
.badge.st-rejected { background: #fdeaea; color: #c8102e; }
.badge.tag { background: #f0f3f8; color: #536de6; }

.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    border: 1px solid var(--line); background: #fff; color: var(--ink);
    border-radius: 8px; padding: 7px 16px; font-size: 14px; cursor: pointer;
    text-decoration: none; transition: .15s; line-height: 1.4;
}
.btn:hover { border-color: var(--primary); color: var(--primary); text-decoration: none; }
.btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); color: #fff; }
.btn-sm { padding: 4px 12px; font-size: 13px; border-radius: 6px; }
.btn-danger { color: var(--accent); border-color: #f3c7cd; }
.btn-danger:hover { background: #fdf0f2; border-color: var(--accent); color: var(--accent); }
.btn-success { color: #1e7a4c; border-color: #bfe3d0; }
.btn-success:hover { background: #effaf4; border-color: #1e7a4c; color: #1e7a4c; }

.alert { border-radius: 10px; padding: 10px 16px; margin-bottom: 16px; font-size: 14px; border: 1px solid; }
.alert-success { background: #effaf4; border-color: #bfe3d0; color: #166b41; }
.alert-info { background: #f0f5fd; border-color: #c6d9f5; color: #1c4d8f; }
.alert-danger { background: #fdf1f2; border-color: #f3ccd1; color: #a4262c; }

@media (max-width: 680px) {
    .container { width: 100%; padding: 18px 12px; overflow-x: clip; }
    .page-head { align-items: stretch; margin-bottom: 16px; }
    .page-head > * { min-width: 0; }
    .page-head > :last-child:not(:first-child) { width: 100%; }
    .page-head > a:last-child { min-height: 44px; }
    .page-head h1 { font-size: 20px; line-height: 1.35; text-wrap: balance; overflow-wrap: anywhere; }
    .page-head .sub { line-height: 1.55; overflow-wrap: anywhere; }
    .card { padding: 16px 14px; border-radius: 8px; }
    .btn { min-height: 44px; padding: 9px 14px; }
    .btn-sm { min-height: 44px; padding: 8px 12px; }
    .map-head-actions, .point-actions { width: 100%; }
    .map-head-actions .btn, .point-actions .btn { flex: 1 1 calc(50% - 8px); }
}

/* ===== 后台表单 ===== */
.form-card { padding: 24px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 24px; }
.form-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-card label {
    display: flex; flex-direction: column; gap: 6px; min-width: 0;
    color: #4c586b; font-size: 13px; font-weight: 600;
}
.form-card input:not([type="hidden"]):not([type="checkbox"]),
.form-card select,
.form-card textarea {
    display: block; width: 100%; min-width: 0; min-height: 42px;
    border: 1px solid #cfd6e2; border-radius: 6px; background-color: #fff;
    padding: 9px 11px; color: var(--ink); font: 14px/1.5 inherit;
    transition: border-color .15s, box-shadow .15s;
}
.form-card textarea { min-height: 88px; resize: vertical; }
.form-card input::placeholder, .form-card textarea::placeholder { color: #9aa4b4; }
.form-card input:focus, .form-card select:focus, .form-card textarea:focus {
    outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(30,75,143,.12);
}
.form-card input[type="file"] { padding: 7px 9px; }
.form-card input[type="file"]::file-selector-button {
    margin-right: 10px; border: 0; border-radius: 5px; padding: 5px 10px;
    background: #e9eef7; color: var(--primary-dark); font: 13px/1.4 inherit; cursor: pointer;
}
.form-card .checkbox-field { flex-direction: row; align-items: center; align-self: end; min-height: 42px; }
.form-card .checkbox-field input[type="checkbox"] { width: 17px; height: 17px; margin: 0; accent-color: var(--primary); }
.form-section { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--line); }
.form-section h2 { margin: 0 0 4px; }
.form-section-intro { margin: 0 0 16px; }
.operational-guide { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; padding: 0; overflow: hidden; }
.operational-guide > div { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; border-right: 1px solid var(--line); }
.operational-guide > div:last-child { border-right: 0; }
.operational-guide strong { color: var(--primary-dark); font-size: 13px; }
.operational-guide span { color: var(--muted); font-size: 12px; }
.inline-control-form { display: flex; align-items: center; gap: 8px; }
.inline-control-form select {
    min-width: 116px; height: 34px; border: 1px solid #cfd6e2; border-radius: 6px;
    padding: 5px 30px 5px 9px; background: #fff; color: var(--ink); font: 13px/1.4 inherit;
}
.inline-control-form select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(30,75,143,.12); }
@media (max-width: 720px) {
    .form-card { padding: 18px 16px; }
    .form-grid, .form-grid-3 { grid-template-columns: 1fr; gap: 14px; }
    .form-card input:not([type="hidden"]):not([type="checkbox"]),
    .form-card select,
    .form-card textarea { min-height: 46px; font-size: 16px; }
    .form-card textarea { min-height: 112px; }
    .operational-guide { grid-template-columns: 1fr; }
    .operational-guide > div { border-right: 0; border-bottom: 1px solid var(--line); }
    .operational-guide > div:last-child { border-bottom: 0; }
}

/* ===== 统计数字卡 ===== */
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 20px; }
.stat { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px 20px; }
.stat .num { font-size: 26px; font-weight: 700; color: var(--primary); font-variant-numeric: tabular-nums; line-height: 1.2; }
.stat .num .unit { font-size: 13px; font-weight: 400; color: var(--muted); margin-left: 2px; }
.stat .lbl { font-size: 13px; color: var(--muted); margin-top: 3px; }
@media (max-width: 768px) { .stat-grid { grid-template-columns: repeat(2, 1fr); } }

/* ===== 管理工作台 ===== */
.dashboard-primary-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.dashboard-section { margin: 0 0 24px; }
.dashboard-section-head, .dashboard-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.dashboard-section-head h2, .dashboard-panel-head h2 { margin: 0; padding: 0; border: 0; font-size: 17px; }
.dashboard-section-head > span { color: var(--muted); font-size: 13px; }
.dashboard-eyebrow { display: block; color: var(--primary); font-size: 11px; font-weight: 700; letter-spacing: 0; margin-bottom: 2px; }
.system-health-panel { padding: 16px 0 18px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.system-health-head { margin-bottom: 10px; }
.system-health-actions { display: flex; align-items: center; gap: 8px; }
.system-health-overall { display: inline-flex; align-items: center; gap: 7px; min-height: 28px; color: var(--muted); font-size: 12px; font-weight: 700; }
.system-health-overall::before, .system-health-dot { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: #7b8798; content: ''; }
.status-healthy::before, .status-healthy .system-health-dot, .system-health-dot.status-healthy { background: #287a55; }
.status-warning::before, .status-delayed::before, .status-warning .system-health-dot, .system-health-dot.status-delayed { background: #b66a19; }
.status-down::before, .status-down .system-health-dot, .system-health-dot.status-down { background: #b43d3d; }
.system-health-loading { margin: 0; color: var(--muted); font-size: 13px; }
.system-health-layout { display: grid; gap: 18px; }
.system-health-group-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.system-health-group-head h3 { margin: 0; font-size: 13px; }
.system-health-group-head span { color: var(--muted); font-size: 11px; }
.system-health-api-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.system-health-cron-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.system-health-item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 8px; min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--card); }
.system-health-cron-grid .system-health-item { border-top: 0; border-left: 0; border-radius: 0; }
.system-health-dot { grid-row: 1 / 3; align-self: center; }
.system-health-item strong { min-width: 0; font-size: 12px; overflow-wrap: anywhere; }
.system-health-item span { min-width: 0; color: var(--muted); font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; }
.system-health-item code { grid-column: 2; overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-queue-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.dashboard-queue-card { position: relative; display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; min-height: 142px; padding: 18px; border: 1px solid var(--line); border-top: 4px solid var(--primary); border-radius: 8px; background: var(--card); color: var(--text); text-decoration: none; }
.dashboard-queue-card:hover { border-color: var(--primary); text-decoration: none; box-shadow: 0 4px 14px rgba(22,56,109,.08); }
.dashboard-queue-card > span { align-self: center; font-size: 15px; font-weight: 700; }
.dashboard-queue-card > strong { grid-row: 1 / 3; grid-column: 2; align-self: center; color: var(--primary-dark); font-size: 34px; font-variant-numeric: tabular-nums; }
.dashboard-queue-card > small { color: var(--muted); font-size: 12px; }
.dashboard-queue-card > b { grid-column: 1 / -1; align-self: end; color: var(--primary); font-size: 13px; }
.dashboard-queue-card.queue-resqai { border-top-color: #27745b; }
.dashboard-queue-card.queue-intelligence { border-top-color: #9a4d17; }
.dashboard-queue-card.queue-social { border-top-color: #28738f; }
.dashboard-queue-card.queue-manual { border-top-color: #b66a19; }
.dashboard-task-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .8fr); gap: 16px; align-items: start; margin-bottom: 24px; }
.dashboard-panel-head { padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.dashboard-panel-head > a { font-size: 13px; }
.dashboard-resource-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 5px 12px; padding: 11px 0; border-bottom: 1px dashed var(--line); }
.dashboard-resource-row:last-child { border-bottom: 0; }
.dashboard-resource-badges { grid-column: 1; display: flex; gap: 5px; flex-wrap: wrap; }
.dashboard-resource-title { min-width: 0; color: var(--primary-dark); font-size: 14px; font-weight: 650; overflow-wrap: anywhere; }
.dashboard-resource-meta { grid-column: 1; color: var(--muted); font-size: 12px; }
.dashboard-resource-row > .btn { grid-column: 2; grid-row: 1 / 4; white-space: nowrap; }
.dashboard-task-list { display: grid; }
.dashboard-task-list > a { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 62px; padding: 10px 2px; border-bottom: 1px dashed var(--line); color: var(--text); text-decoration: none; }
.dashboard-task-list > a:last-child { border-bottom: 0; }
.dashboard-task-list > a:hover strong { color: var(--primary); }
.dashboard-task-list span { min-width: 0; }
.dashboard-task-list strong, .dashboard-task-list small { display: block; }
.dashboard-task-list strong { font-size: 14px; }
.dashboard-task-list small { margin-top: 3px; color: var(--muted); font-size: 12px; }
.dashboard-task-list b { min-width: 34px; color: var(--primary-dark); font-size: 22px; text-align: right; font-variant-numeric: tabular-nums; }
.dashboard-workspace-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.dashboard-workspace-grid > a { min-height: 88px; padding: 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--text); text-decoration: none; }
.dashboard-workspace-grid > a:hover { border-color: var(--primary); text-decoration: none; }
.dashboard-workspace-grid strong, .dashboard-workspace-grid span { display: block; }
.dashboard-workspace-grid strong { font-size: 14px; }
.dashboard-workspace-grid span { margin-top: 6px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.dashboard-activity-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.dashboard-audit-row { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: 13px; }
.dashboard-audit-row:last-child { border-bottom: 0; }
.dashboard-audit-row time { flex: 0 0 auto; color: var(--muted); font-size: 12px; }
.dashboard-audit-row > span { min-width: 0; overflow-wrap: anywhere; }
.dashboard-audit-row small { display: block; margin-top: 2px; color: var(--muted); }
.dashboard-empty { padding: 28px 0; color: var(--muted); text-align: center; }
@media (max-width: 960px) {
    .dashboard-task-grid, .dashboard-activity-grid { grid-template-columns: 1fr; }
    .system-health-api-grid, .system-health-cron-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dashboard-queue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dashboard-workspace-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dashboard-resource-meta { display: none; }
}
@media (max-width: 680px) {
    .dashboard-primary-actions { width: 100%; }
    .dashboard-primary-actions .btn { flex: 1 1 auto; min-height: 44px; }
    .system-health-head { align-items: flex-start; }
    .system-health-actions { align-items: flex-end; flex-direction: column; }
    .system-health-actions .btn { min-height: 44px; }
    .system-health-api-grid, .system-health-cron-grid { grid-template-columns: 1fr; }
    .dashboard-queue-grid, .dashboard-workspace-grid { grid-template-columns: 1fr; }
    .dashboard-queue-card { min-height: 112px; }
    .dashboard-resource-row { grid-template-columns: minmax(0, 1fr) auto; }
    .dashboard-resource-title { min-width: 0; }
    .dashboard-resource-row > .btn { min-height: 44px; }
}

/* ===== 首页事件态势 ===== */
.home-brief {
    display: grid; grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
    gap: 32px; align-items: stretch; margin: 4px 0 16px;
}
.home-brief-copy {
    min-height: 360px; padding: 28px 8px 28px 0;
    display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
}
.home-kicker, .home-section-index {
    color: var(--accent); font-size: 12px; font-weight: 700; letter-spacing: 0;
}
.home-brief h1 { max-width: 560px; margin: 12px 0; color: #182131; font-size: clamp(28px, 4vw, 48px); line-height: 1.18; }
.home-brief-copy > p { max-width: 560px; margin: 0 0 16px; color: #596579; font-size: 16px; }
.home-range { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-bottom: 22px; color: #596579; font-size: 13px; font-variant-numeric: tabular-nums; }
.home-admin-note { color: var(--accent); }
.home-lead {
    position: relative; min-height: 360px; overflow: hidden; border-radius: 8px;
    background: #1c2635; color: #fff; isolation: isolate;
}
.home-lead img, .home-lead-placeholder { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.home-lead-placeholder {
    background-color: #253247;
    background-image: linear-gradient(135deg, rgba(255,255,255,.05) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.05) 50%, rgba(255,255,255,.05) 75%, transparent 75%);
    background-size: 32px 32px;
}
.home-lead-shade { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 30%, rgba(7,14,25,.86) 100%); z-index: 1; }
.home-lead-content { position: absolute; inset: auto 0 0; z-index: 2; display: flex; flex-direction: column; gap: 5px; padding: 24px; }
.home-lead-content strong { max-width: 680px; color: #fff; font-size: 21px; line-height: 1.45; }
.home-lead-meta { color: #fff; font-size: 12px; font-weight: 700; }
.home-lead-content > span:last-child { color: rgba(255,255,255,.78); font-size: 13px; }
.home-lead:hover { text-decoration: none; }
.home-lead:hover img { transform: scale(1.015); }
.home-lead img { transition: transform .3s ease; }

.home-stats {
    display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 48px;
    background: #fff; border-block: 1px solid var(--line);
}
.home-stats > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; padding: 16px 20px; border-right: 1px solid var(--line); }
.home-stats > div:last-child { border-right: 0; }
.home-stats strong { color: var(--primary-dark); font-size: 24px; line-height: 1; font-variant-numeric: tabular-nums; }
.home-stats span { color: var(--muted); font-size: 12px; white-space: nowrap; }

.home-stream { margin-bottom: 40px; }
.home-section-head { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding-bottom: 14px; border-bottom: 2px solid #202b3c; }
.home-section-head h2 { margin: 3px 0 0; color: #182131; font-size: 24px; }
.home-section-head p { margin: 0; color: var(--muted); font-size: 13px; }
.home-timeline { max-width: 1060px; margin: 0 auto; }
.home-event { display: grid; grid-template-columns: 92px 30px minmax(0, 1fr); align-items: stretch; }
.home-event-time { padding: 29px 16px 24px 0; text-align: right; font-variant-numeric: tabular-nums; }
.home-event-time time { display: flex; flex-direction: column; }
.home-event-time strong { color: #27364d; font-size: 17px; }
.home-event-time span { color: var(--muted); font-size: 11px; }
.home-event-rail { position: relative; }
.home-event-rail::before { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: #d8dee8; }
.home-event-dot { position: absolute; top: 34px; left: 50%; width: 11px; height: 11px; border: 3px solid var(--bg); border-radius: 50%; box-shadow: 0 0 0 2px currentColor; transform: translateX(-50%); z-index: 1; }
.home-event-dot.type-article { color: #2c64b5; background: #2c64b5; }
.home-event-dot.type-image { color: #27815a; background: #27815a; }
.home-event-dot.type-video { color: var(--accent); background: var(--accent); }
.home-event-body {
    display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 24px; align-items: center;
    min-width: 0; padding: 22px 0 22px 20px; color: inherit; border-bottom: 1px solid var(--line);
}
.home-event-body:hover { text-decoration: none; }
.home-event-body:hover .home-event-title { color: var(--primary); }
.home-event-copy { display: flex; flex-direction: column; min-width: 0; }
.home-event-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.home-event-title { color: #202b3c; font-size: 17px; line-height: 1.5; transition: color .15s; overflow-wrap: anywhere; }
.home-event-summary { display: -webkit-box; margin-top: 6px; overflow: hidden; color: #667286; font-size: 13px; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.home-event-source { margin-top: 8px; color: var(--muted); font-size: 12px; }
.home-event-media { position: relative; display: block; width: 100%; aspect-ratio: 16/9; overflow: hidden; border-radius: 6px; background: #dde4ef; }
.home-event-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.home-video-mark { position: absolute; inset: 50% auto auto 50%; width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.88); border-radius: 50%; background: rgba(8,16,28,.58); transform: translate(-50%, -50%); }
.home-video-mark::after { content: ''; position: absolute; top: 50%; left: 53%; border: 6px solid transparent; border-left: 9px solid #fff; transform: translate(-35%, -50%); }
.home-stream-more { padding: 20px 0 0 122px; }
.home-empty { padding: 48px; color: var(--muted); text-align: center; }
.home-topics { display: grid; grid-template-columns: 122px 1fr; gap: 20px; align-items: start; padding: 20px 0; border-top: 1px solid var(--line); }
.home-topics h2 { margin: 0; font-size: 15px; }
.home-topic-list { display: flex; flex-wrap: wrap; gap: 8px; }
.home-lead:focus-visible, .home-event-body:focus-visible { outline: 3px solid rgba(30,75,143,.35); outline-offset: 3px; }

@media (max-width: 900px) {
    .home-brief { grid-template-columns: 1fr 1fr; gap: 20px; }
    .home-brief-copy, .home-lead { min-height: 320px; }
    .home-event-body { grid-template-columns: minmax(0, 1fr) 190px; gap: 16px; }
}
@media (max-width: 680px) {
    .home-brief { grid-template-columns: 1fr; }
    .home-brief-copy { min-height: 0; padding: 12px 0 4px; }
    .home-brief h1 { font-size: 31px; }
    .home-lead { min-height: 0; aspect-ratio: 4/3; }
    .home-stats { grid-template-columns: repeat(2, 1fr); margin: 20px 0 36px; }
    .home-stats > div:nth-child(2) { border-right: 0; }
    .home-stats > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
    .home-section-head { align-items: start; }
    .home-section-head p { max-width: 110px; text-align: right; }
    .home-event { grid-template-columns: 1fr; }
    .home-event-time { padding: 20px 0 4px; text-align: left; }
    .home-event-time time { flex-direction: row; align-items: baseline; gap: 8px; }
    .home-event-time strong { font-size: 15px; }
    .home-event-rail { display: none; }
    .home-event-body { grid-template-columns: 1fr; padding: 8px 0 20px; }
    .home-event-media { grid-row: 1; }
    .home-stream-more { padding-left: 0; }
    .home-stream-more .btn { width: 100%; }
    .home-topics { grid-template-columns: 1fr; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .home-lead img, .home-event-title { transition: none; }
    .home-lead:hover img { transform: none; }
}

/* ===== 资源卡片（网格） ===== */
.res-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
@media (max-width: 960px) { .res-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .res-grid { grid-template-columns: 1fr; } }
.res-card {
    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
    overflow: hidden; display: flex; flex-direction: column; transition: .15s;
}
.res-card:hover { box-shadow: 0 4px 16px rgba(30,75,143,.12); border-color: #c9d4e8; }
.res-card .cover { position: relative; aspect-ratio: 16/9; background: #dde4ef center/cover; display: block; }
.res-card .cover .play {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
}
.res-card .cover .play::before {
    content: ''; width: 52px; height: 52px; border-radius: 50%;
    background: rgba(0,0,0,.45); border: 2px solid rgba(255,255,255,.85);
}
.res-card .cover .play::after {
    content: ''; width: 0; height: 0; margin-left: 6px;
    border: 12px solid transparent; border-left: 18px solid #fff;
}
.res-card .body { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.res-card .title { font-size: 15px; font-weight: 600; line-height: 1.5; margin: 0; overflow-wrap: anywhere; }
.res-card .meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--muted); margin-top: auto; }
.res-card .summary { font-size: 13px; color: var(--muted); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ===== 过滤栏 ===== */
.filter-bar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 16px; }
.filter-bar select, .filter-bar input:not([type="hidden"]) {
    border: 1px solid var(--line); border-radius: 8px; padding: 7px 12px;
    font-size: 14px; background: #fff; color: var(--ink); font-family: inherit;
}
.filter-bar label { display: flex; flex-direction: column; gap: 3px; color: var(--muted); font-size: 12px; }
.filter-bar .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.filter-bar .seg a { padding: 7px 14px; font-size: 13px; background: #fff; color: var(--muted); text-decoration: none; }
.filter-bar .seg a.on { background: var(--primary); color: #fff; }
.guest-access-prompt {
    display: flex; align-items: center; justify-content: space-between; gap: 24px;
    margin: -2px 0 18px; padding: 16px 18px; border: 1px solid #e5c46e;
    border-left: 5px solid #d39a16; border-radius: 8px; background: #fff8e7;
    box-shadow: 0 4px 14px rgba(83, 61, 12, .08);
}
.guest-access-copy { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.guest-access-copy strong { color: #6e4900; font-size: 15px; }
.guest-access-copy span { color: #695b3b; font-size: 13px; line-height: 1.6; }
.guest-access-actions { display: flex; flex: 0 0 auto; gap: 8px; }
.guest-access-actions .btn { min-height: 40px; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
@media (max-width: 680px) {
    .filter-bar { align-items: stretch; gap: 10px; }
    .filter-bar > label, .filter-bar > select, .filter-bar > input:not([type="hidden"]) { width: 100% !important; min-width: 0 !important; }
    .filter-bar select, .filter-bar input:not([type="hidden"]) { min-height: 46px; font-size: 16px; }
    .filter-bar .seg { width: 100%; overflow-x: auto; border-radius: 6px; scrollbar-width: none; }
    .filter-bar .seg::-webkit-scrollbar { display: none; }
    .filter-bar .seg a { min-height: 44px; display: inline-flex; flex: 1 0 auto; align-items: center; justify-content: center; padding: 8px 12px; }
    .filter-bar > .btn { flex: 1 1 auto; }
    .guest-access-prompt { align-items: stretch; flex-direction: column; gap: 12px; margin-top: 0; padding: 15px; }
    .guest-access-actions { display: grid; grid-template-columns: 1fr; }
    .guest-access-actions .btn { min-height: 44px; white-space: normal; text-align: center; }
}

/* ===== 时间线（CSS Grid 三列布局，与核查平台同方案） ===== */
.tl-day { display: flex; align-items: center; gap: 10px; row-gap: 4px; flex-wrap: wrap; margin: 28px 0 8px; }
.tl-day-label { font-weight: 700; font-size: 15px; background: #e9eef7; color: #33406b; padding: 6px 16px; border-radius: 10px; white-space: nowrap; }
.tl-day-count { font-size: 12px; color: #8a93a6; white-space: nowrap; }
.tl-day-line { flex: 1 1 30px; height: 1px; background: #e3e7f0; min-width: 0; }
.tl-item { display: grid; grid-template-columns: 72px 28px 1fr; align-items: start; padding: 8px 0; position: relative; }
.tl-time {
    grid-column: 1; text-align: right; padding-right: 16px; font-weight: 600;
    font-variant-numeric: tabular-nums; color: #4b5375; font-size: 14px; padding-top: 12px; white-space: nowrap;
}
.tl-time.kind-date-only { color: #a3abc0; font-weight: 500; font-size: 12px; padding-top: 14px; }
.tl-time.kind-captured { color: #6b7ba1; }
.tl-rail { grid-column: 2; position: relative; height: 100%; }
.tl-rail::before {
    content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px;
    background: linear-gradient(180deg, #d7dbe5, #e3e7f0); transform: translateX(-50%); z-index: 0;
}
.tl-dot {
    position: absolute; left: 50%; top: 16px; width: 12px; height: 12px; border-radius: 50%;
    border: 2px solid #fff; box-shadow: 0 0 0 2px rgba(0,0,0,.06), 0 1px 3px rgba(0,0,0,.12);
    transform: translateX(-50%); z-index: 1;
}
.tl-dot.video { background: #c8102e; }
.tl-dot.image { background: #3dbb7c; }
.tl-dot.article { background: #1a5fd0; }
.tl-dot.pending { background: #e8a33d !important; }
.tl-dot.hidden { background: #8a93a6 !important; }
.tl-card { grid-column: 3; min-width: 0; }
.tl-card .inner {
    background: #fff; border: 1px solid #edf0f5; border-radius: 12px;
    padding: 14px 18px; box-shadow: 0 1px 3px rgba(43,54,86,.06);
}
.tl-card .inner.pending { border-left: 3px solid #e8a33d; }
.tl-card .inner.hidden { opacity: .65; }
.tl-card .title { font-size: 15px; font-weight: 600; line-height: 1.55; margin: 6px 0 4px; overflow-wrap: anywhere; }
.tl-card .summary { font-size: 13px; color: var(--muted); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.tl-card .meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--muted); margin-top: 8px; }
.tl-cover { float: right; width: 132px; aspect-ratio: 16/9; border-radius: 8px; margin-left: 12px; background: #dde4ef center/cover; }
@media (max-width: 576px) {
    .tl-item { grid-template-columns: 1fr; }
    .tl-rail, .tl-dot { display: none; }
    .tl-time { text-align: left; padding: 0 0 4px; }
    .tl-cover { float: none; width: 100%; margin: 8px 0 0; }
}

/* ===== 详情页响应式布局 ===== */
.detail-grid { min-width: 0; }
@media (max-width: 960px) {
    .detail-grid { grid-template-columns: minmax(0, 1fr) !important; }
    .detail-grid > * { min-width: 0; }
}

/* ===== 表格 ===== */
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th, .table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.table th { color: var(--muted); font-weight: 500; font-size: 13px; white-space: nowrap; }
.table td { overflow-wrap: anywhere; }
.table tr:hover td { background: #f8fafd; }
.table-scroll { max-width: 100%; padding: 0; overflow-x: auto; overscroll-behavior-inline: contain; -webkit-overflow-scrolling: touch; }
.table-scroll:focus-visible { outline: 3px solid rgba(30,75,143,.36); outline-offset: 2px; }
@media (max-width: 680px) {
    .table-scroll { position: relative; margin-inline: -12px; border-inline: 0; border-radius: 0; }
    .table { min-width: 680px; font-size: 13px; }
    .table th, .table td { padding: 11px 10px; }
    .inline-control-form { min-width: max-content; }
    .inline-control-form select { min-height: 44px; font-size: 16px; }
}

/* ===== 登录页 ===== */
.login-wrap { max-width: 400px; margin: 60px auto; padding: 0 20px; }
.login-card { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 32px; }
.login-card h1 { font-size: 20px; margin: 0 0 4px; }
.login-card .sub { color: var(--muted); font-size: 13px; margin-bottom: 20px; }
.access-request-wrap { max-width: 680px; }
.access-request-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.access-request-form .field-wide { grid-column: 1 / -1; }
.access-request-form textarea { width: 100%; min-height: 120px; resize: vertical; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; font: 14px/1.5 inherit; }
.access-request-form textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(30,75,143,.12); }
.access-request-link { display: flex; justify-content: center; gap: 6px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; }
.access-request-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.access-review-purpose { max-width: 420px; white-space: pre-line; }
.access-review-actions { display: flex; min-width: 230px; gap: 6px; align-items: flex-end; }
.access-review-actions label { flex: 1; font-size: 12px; color: var(--muted); }
.access-review-actions input { width: 100%; min-height: 36px; }
.field { margin-bottom: 14px; }
.field label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.field input {
    width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px;
    font-size: 14px; font-family: inherit;
}
.field input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(30,75,143,.12); }
.field .err { color: var(--accent); font-size: 12px; margin-top: 4px; }
.w-full { width: 100%; }
.mt-2 { margin-top: 8px; } .mt-3 { margin-top: 12px; } .mb-2 { margin-bottom: 8px; }
.text-muted { color: var(--muted); } .fs-12 { font-size: 12px; } .fs-13 { font-size: 13px; }
.text-danger { color: var(--accent); } .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
@media (max-width: 576px) {
    .login-wrap { margin: 20px auto; padding: 0; }
    .login-card { padding: 24px 18px; border-radius: 8px; }
    .field input { min-height: 46px; font-size: 16px; }
    .access-request-form { grid-template-columns: 1fr; }
    .access-request-form .field-wide { grid-column: auto; }
    .access-request-form textarea { font-size: 16px; }
}

/* ===== 分页 ===== */
.pagination { display: flex; gap: 6px; flex-wrap: wrap; margin: 16px 0 0; list-style: none; padding: 0; }
.pagination a, .pagination span {
    display: inline-block; min-width: 34px; text-align: center; padding: 6px 10px;
    border: 1px solid var(--line); border-radius: 8px; font-size: 13px; background: #fff; color: var(--ink); text-decoration: none;
}
.pagination .current span { background: var(--primary); border-color: var(--primary); color: #fff; }
.pagination .disabled span { color: #9ca7b8; background: #f7f9fc; }
.social-feed-stream > nav .pagination, .intel-stream > nav .pagination { justify-content: center; padding: 0 16px 16px; }
@media (max-width: 576px) {
    .pagination { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; padding-bottom: 4px; }
    .pagination a, .pagination span { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
}

/* ===== 详情页媒体 ===== */
.media-box { border-radius: 12px; overflow: hidden; background: #0d1420; aspect-ratio: 16/9; display: flex; align-items: center; justify-content: center; }
.media-box video { width: 100%; height: 100%; object-fit: contain; background: #0d1420; display: block; }
/* 图片保持原始宽高比完整显示（容器高度自适应，不裁切） */
.media-box:has(img) { aspect-ratio: auto; }
.media-box img { width: 100%; height: auto; object-fit: contain; display: block; }
.media-box .ext-link { color: #fff; text-align: center; padding: 20px; }
.media-box .ext-link .btn { margin-top: 10px; }
.vr-entry { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    padding: 12px 16px; border: 1px solid #c9dcf5; border-radius: 10px; background: linear-gradient(135deg, #f2f7ff 0%, #e8f1fe 100%); }
.vr-entry-text { display: flex; flex-direction: column; gap: 2px; }
.vr-entry-text strong { font-size: 15px; color: #16386d; }
.vr-entry-text span { font-size: 12px; color: #6b7386; }
.meta-list { font-size: 13px; }
.meta-list .row { display: flex; gap: 12px; padding: 7px 0; border-bottom: 1px dashed #eef1f7; }
.meta-list .k { width: 90px; flex-shrink: 0; color: var(--muted); }
.meta-list .v { min-width: 0; overflow-wrap: anywhere; }
footer.footer { text-align: center; color: var(--muted); font-size: 12px; padding: 32px 20px; display: flex; flex-direction: column; gap: 6px; align-items: center; }
footer.footer .footer-icp a { color: var(--muted); text-decoration: none; }
footer.footer .footer-icp a:hover { text-decoration: underline; }

/* ===== 点位态势地图与点位情报 ===== */
.map-head-actions, .point-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.map-workbench { display: grid; grid-template-columns: 360px minmax(0, 1fr); min-height: 680px; overflow: hidden; border: 1px solid #cfd7e3; border-radius: 8px; background: #fff; box-shadow: 0 8px 28px rgba(23,42,71,.1); }
.map-stage { position: relative; grid-column: 2; min-width: 0; min-height: 680px; background: #dce3ec; }
.location-map { position: absolute; inset: 0; }
.location-map[hidden] { display: none; }
.map-provider-tabs { position: absolute; top: 16px; left: 16px; z-index: 500; display: inline-flex; gap: 3px; padding: 3px; border: 1px solid #c8d2df; border-radius: 7px; background: rgba(255,255,255,.96); box-shadow: 0 3px 12px rgba(23,42,71,.16); }
.map-provider-tabs button { min-height: 44px; padding: 0 12px; border: 0; border-radius: 4px; background: transparent; color: #41516a; font-size: 12px; font-weight: 700; }
.map-provider-tabs button[aria-selected="true"] { background: #1f5f8b; color: #fff; }
.map-provider-tabs button:focus-visible { outline: 3px solid rgba(31,95,139,.28); outline-offset: 2px; }
.map-layer-control { position: absolute; top: 72px; left: 16px; z-index: 500; display: flex; overflow: hidden; border: 1px solid #c8d2df; border-radius: 6px; background: rgba(255,255,255,.96); box-shadow: 0 3px 12px rgba(23,42,71,.14); }
.map-layer-control button { min-height: 40px; padding: 0 11px; border: 0; border-right: 1px solid #d7dee8; background: #fff; color: #41516a; font-size: 12px; font-weight: 700; }
.map-layer-control button:last-child { border-right: 0; }
.map-layer-control button[aria-pressed="true"] { background: #fff3d8; color: #7c4a03; }
.map-layer-control button:focus-visible { position: relative; outline: 3px solid rgba(180,113,16,.35); outline-offset: -3px; }
.map-status { position: absolute; top: 124px; left: 16px; z-index: 500; max-width: calc(100% - 32px); padding: 9px 14px; border: 1px solid #c8d2df; border-radius: 6px; background: rgba(255,255,255,.94); color: #445268; font-size: 13px; }
.map-status[hidden] { display: none; }
.map-legend { position: absolute; right: 16px; left: 16px; bottom: 42px; z-index: 500; display: flex; width: fit-content; max-width: calc(100% - 32px); align-items: center; flex-wrap: wrap; gap: 7px; padding: 8px 12px; border-radius: 6px; background: rgba(17,31,50,.88); color: #fff; font-size: 12px; }
.map-legend strong { font-size: 17px; }
.map-legend span { padding-left: 7px; border-left: 1px solid rgba(255,255,255,.3); color: rgba(255,255,255,.75); }
.map-waterway-key::before { content: ''; display: inline-block; width: 16px; height: 3px; margin-right: 5px; border-radius: 2px; background: #0284c7; vertical-align: middle; }
.map-external-key::before { content: ''; display: inline-block; width: 9px; height: 9px; margin-right: 5px; border: 2px solid #fff; border-radius: 50%; background: #d97706; vertical-align: -1px; }
.external-data-table { margin-top: 18px; overflow: hidden; border: 1px solid #cfd7e3; border-radius: 8px; background: #fff; box-shadow: 0 5px 20px rgba(23,42,71,.07); }
.external-data-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 18px 20px; border-bottom: 1px solid #dce2ea; }
.external-data-head h2 { margin: 0; color: #17243a; font-size: 19px; letter-spacing: 0; }
.external-data-head p { max-width: 760px; margin: 5px 0 0; color: #657287; font-size: 12px; }
.external-data-search { display: flex; width: min(340px, 100%); flex-shrink: 0; flex-direction: column; gap: 5px; color: #526176; font-size: 11px; font-weight: 700; }
.external-data-search input { min-height: 42px; border: 1px solid #b9c5d3; border-radius: 5px; background: #fff; padding: 0 11px; color: #1d2939; font-size: 14px; }
.external-data-search input:focus { border-color: #1f5f8b; outline: 3px solid rgba(31,95,139,.16); }
.external-data-summary { display: flex; align-items: center; gap: 12px; padding: 9px 20px; border-bottom: 1px solid #dce2ea; background: #f5f8fb; color: #637087; font-size: 12px; }
.external-data-summary strong { color: #17243a; font-size: 16px; }
.external-data-summary span { padding-left: 12px; border-left: 1px solid #cbd4df; }
.external-data-summary a { margin-left: auto; color: #155d8b; font-weight: 700; }
.external-data-scroll { max-height: 820px; overflow: auto; }
.external-data-table table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.external-data-table th { position: sticky; top: 0; z-index: 2; padding: 10px 12px; border-bottom: 1px solid #c7d1dd; background: #eaf0f6; color: #3c4b60; text-align: left; font-size: 11px; }
.external-data-table th:nth-child(1) { width: 54px; }
.external-data-table th:nth-child(2) { width: 130px; }
.external-data-table th:nth-child(4) { width: 180px; }
.external-data-table th:nth-child(5) { width: 260px; }
.external-data-table td { padding: 13px 12px; border-bottom: 1px solid #e1e6ed; color: #344257; vertical-align: top; font-size: 12px; overflow-wrap: anywhere; }
.external-data-table tbody tr:last-child td { border-bottom: 0; }
.external-data-table tbody tr:hover td { background: #fafcfe; }
.external-data-table tbody tr.is-selected td { background: #fff7e5; }
.external-data-table td > strong, .external-data-table td > span { display: block; }
.external-data-table td > span { margin-top: 3px; color: #778398; }
.external-data-language { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 2px 9px; }
.external-data-language + .external-data-language { margin-top: 9px; padding-top: 9px; border-top: 1px dashed #d9e0e9; }
.external-data-language > b { grid-row: 1 / span 2; color: #1f5f8b; font-size: 10px; text-transform: uppercase; }
.external-data-language.is-original > b { color: #737f91; }
.external-data-language strong { color: #1b2a40; font-size: 13px; }
.external-data-language strong, .external-data-language p { overflow-wrap: break-word; word-break: normal; }
.external-data-language p { grid-column: 2; margin: 3px 0 0; color: #667286; line-height: 1.55; white-space: pre-line; }
.external-data-table code { color: #43536a; font-size: 11px; white-space: normal; }
.external-data-images { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-bottom: 8px; }
.external-data-images a { display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 4px; background: #dfe5ec; }
.external-data-images img { display: block; width: 100%; height: 100%; object-fit: contain; }
.external-data-links { display: flex; flex-wrap: wrap; gap: 5px; }
.external-data-links a { padding: 4px 6px; border-radius: 3px; background: #edf3f8; color: #155d8b; font-size: 10px; font-weight: 700; }
.external-data-empty, .external-data-no-results { color: #8b96a8; font-size: 12px; }
.external-data-no-results { margin: 0; padding: 40px 20px; text-align: center; }
.external-map-popup { max-width: 300px; color: #27364a; line-height: 1.45; }
.external-map-popup strong { display: block; margin-bottom: 4px; color: #17243a; font-size: 14px; }
.external-map-popup p { margin: 5px 0; font-size: 12px; }
.external-map-popup small { display: block; color: #8a4b05; }
.external-map-links { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.external-map-links a { padding: 4px 7px; border-radius: 3px; background: #edf3f8; color: #155d8b; font-size: 11px; font-weight: 700; }
.waterway-label { border: 0; background: transparent; box-shadow: none; color: #075985; font-size: 11px; font-weight: 700; text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; }
.waterway-label::before { display: none; }
.barrier-lake-pin{display:flex!important;align-items:center;justify-content:center;border:0!important;background:transparent!important}.barrier-lake-pin span{display:flex;width:28px;height:28px;align-items:center;justify-content:center;border:3px solid #fff;border-radius:50% 50% 50% 0;background:#b4232f;color:#fff;box-shadow:0 3px 9px rgba(27,40,58,.35);font:800 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;transform:rotate(-45deg)}.barrier-lake-pin b{transform:rotate(45deg)}
.map-side { display: flex; grid-row: 1; grid-column: 1; flex-direction: column; min-width: 0; overflow: hidden; border-right: 1px solid #dce2ea; background: #f8fafc; }
.external-map-inspector { flex-shrink: 0; max-height: 460px; overflow-y: auto; border-bottom: 1px solid #cfd7e3; background: #fff; outline: none; }
.external-map-inspector:focus-visible { box-shadow: inset 0 0 0 3px rgba(31,95,139,.22); }
.external-map-inspector-empty { min-height: 150px; padding: 22px 20px; border-left: 4px solid #d97706; background: #fffaf0; }
.external-map-inspector-empty strong, .external-map-inspector-empty span { display: block; }
.external-map-inspector-empty strong { color: #17243a; font-size: 18px; }
.external-map-inspector-empty span { margin-top: 3px; color: #8a4b05; font-size: 12px; font-weight: 700; }
.external-map-inspector-empty p { margin: 18px 0 0; color: #667286; font-size: 13px; line-height: 1.65; }
.external-inspector-head { display: flex; min-height: 52px; align-items: center; gap: 12px; padding: 0 16px; background: #b4232f; color: #fff; }
.external-inspector-head button { width: 38px; height: 38px; border: 0; background: transparent; color: #fff; cursor: pointer; font-size: 22px; }
.external-inspector-head button:focus-visible { outline: 3px solid rgba(255,255,255,.65); }
.external-inspector-head span { font-size: 13px; font-weight: 700; }
.external-inspector-media { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; background: #17202c; }
.external-inspector-media a { display: block; aspect-ratio: 4 / 3; }
.external-inspector-media img { display: block; width: 100%; height: 100%; object-fit: contain; }
.external-inspector-body { padding: 18px 20px 22px; }
.external-inspector-language > b { color: #1f5f8b; font-size: 10px; }
.external-inspector-language h2, .external-inspector-language h3 { margin: 4px 0 0; color: #17243a; font-size: 18px; letter-spacing: 0; }
.external-inspector-language h3 { font-size: 15px; }
.external-inspector-language p { margin: 7px 0 0; color: #556378; font-size: 12px; line-height: 1.6; white-space: pre-line; }
.external-inspector-language.is-original { margin-top: 15px; padding-top: 14px; border-top: 1px dashed #d6dde7; }
.external-inspector-language.is-original > b { color: #758195; }
.external-inspector-body dl { margin: 16px 0; border-block: 1px solid #e0e5ec; }
.external-inspector-body dl div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; padding: 8px 0; }
.external-inspector-body dt { color: #7b8799; font-size: 10px; }
.external-inspector-body dd { margin: 0; color: #344257; font-size: 11px; overflow-wrap: anywhere; }
.external-inspector-body > small { display: block; margin-bottom: 10px; color: #8a4b05; line-height: 1.5; }
.external-group-tree { flex-shrink: 0; max-height: 340px; overflow-y: auto; border-bottom: 1px solid #cfd7e3; background: #fff; }
.external-group-tree label { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; min-height: 48px; align-items: center; gap: 9px; padding: 7px 16px; cursor: pointer; }
.external-group-tree label:hover { background: #f4f7fa; }
.external-group-tree input { width: 17px; height: 17px; margin: 0; accent-color: #1f5f8b; }
.external-group-tree span, .external-group-tree strong, .external-group-tree small { display: block; min-width: 0; }
.external-group-tree strong { color: #24344a; font-size: 12px; }
.external-group-tree small { margin-top: 2px; overflow: hidden; color: #7a8799; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.external-group-tree b { min-width: 24px; color: #68768a; font-size: 11px; text-align: right; }
.external-group-root { border-bottom: 1px solid #e0e5ec; background: #edf3f8; }
.external-group-root label { min-height: 54px; }
.external-group-root strong { color: #173f65; font-size: 13px; }
.external-group-children { display: block; }
.external-group-node { border-bottom: 1px solid #e1e6ed; }
.external-group-node > summary { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; min-height: 50px; align-items: center; gap: 9px; padding: 7px 16px; background: #f8fafc; cursor: pointer; list-style: none; }
.external-group-node > summary::-webkit-details-marker { display: none; }
.external-group-node > summary::before { content: '▸'; position: absolute; margin-left: -12px; color: #708096; font-size: 9px; }
.external-group-node[open] > summary::before { transform: rotate(90deg); }
.external-group-node > summary:hover { background: #f1f5f9; }
.external-group-node > summary input { width: 17px; height: 17px; margin: 0; }
.external-group-node > summary span, .external-group-node > summary strong, .external-group-node > summary small { display: block; min-width: 0; }
.external-group-node > summary strong { color: #24344a; font-size: 12px; }
.external-group-node > summary small { color: #7a8799; font-size: 10px; }
.external-group-node > summary b { color: #68768a; font-size: 11px; }
.external-group-items { border-top: 1px solid #edf0f4; }
.external-group-item { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; min-height: 48px; align-items: center; gap: 8px; padding: 6px 10px 6px 28px; border-bottom: 1px solid #f0f2f5; background: #fff; }
.external-group-item:last-child { border-bottom: 0; }
.external-group-item:hover { background: #fffaf0; }
.external-group-item > input { width: 16px; height: 16px; margin: 0; accent-color: #1f5f8b; }
.external-group-item > label { display: block; min-height: 0; padding: 0; cursor: pointer; }
.external-group-item > label strong, .external-group-item > label small { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.external-group-item > label strong { color: #314158; font-size: 11px; }
.external-group-item > label small { margin-top: 2px; color: #8792a3; font-size: 9px; }
.external-group-item > button { min-height: 32px; padding: 0 7px; border: 0; border-radius: 3px; background: #edf3f8; color: #155d8b; cursor: pointer; font-size: 10px; font-weight: 700; }
.external-group-item > button:hover { background: #dceaf4; }
.map-create-fold { border-bottom: 1px solid var(--line); background: #fff; }
.map-create-fold > summary {
    padding: 13px 18px;
    font-size: 13.5px;
    font-weight: 600;
    color: #2c6fbb;
    cursor: pointer;
    user-select: none;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 8px;
}
.map-create-fold > summary::before { content: '▸'; transition: transform 0.15s; font-size: 11px; }
.map-create-fold[open] > summary::before { transform: rotate(90deg); }
.map-create-fold > summary:hover { background: #f2f7fc; }
.map-side-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--line); background: #fff; }
.map-side-head > div, .map-side-head > span { display: flex; flex-direction: column; }
.map-side-head strong { color: #1d2939; font-size: 14px; }
.map-side-head span { color: var(--muted); font-size: 11px; }
.map-create-form { margin: 0; padding: 16px 18px; border: 0; border-radius: 0; background: #f8fafc; }
.map-create-form .form-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
.map-coordinate-readout { margin-bottom: 14px; padding: 9px 10px; border-left: 3px solid var(--primary); background: #eaf0f8; color: #33445e; font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
.map-coordinates { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 12px 0; }
.map-coordinates label { min-width: 0; }
.map-create-form button:disabled { cursor: not-allowed; opacity: .5; }
.map-point-list { min-height: 0; overflow-y: auto; border-top: 1px solid var(--line); background: #fff; }
.map-point-list > .map-side-head { position: sticky; top: 0; z-index: 1; padding-block: 11px; }
.map-point-list > a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 18px; border-bottom: 1px solid #edf0f4; color: inherit; }
.map-point-list > a:hover { background: #f1f5fa; text-decoration: none; }
.map-point-list a span { display: flex; min-width: 0; flex-direction: column; }
.map-point-list a strong { overflow-wrap: anywhere; font-size: 12px; }
.map-point-list a small { overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.map-point-list a b { flex-shrink: 0; color: var(--primary); font-size: 10px; }
.map-empty { padding: 28px 18px; color: var(--muted); text-align: center; }
.point-code { margin-bottom: 2px; color: var(--accent); font: 700 12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
.point-summary-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(340px, .6fr); gap: 16px; }
.point-profile { margin: 0; }
.point-map-sources{padding:0;overflow:hidden}.point-map-sources-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--line);background:#fbfcfe}.point-map-sources-head h2{margin:2px 0 3px;padding:0;border:0}.point-map-sources-head p{margin:0;color:var(--muted);font-size:12px}.point-map-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line)}.point-map-source{display:flex;min-width:0;flex-direction:column;padding:16px 18px;background:#fff;color:inherit;text-decoration:none}.point-map-source:hover{background:#f5f8fc;text-decoration:none}.point-map-source-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.point-map-source-top strong{color:#1d3f67;font-size:14px}.point-map-source small{margin-top:3px;color:#6d7b90}.point-map-source p{margin:9px 0 0;color:#536174;font-size:12px;line-height:1.6}.point-map-source-action{margin-top:auto;padding-top:10px;color:var(--primary);font-size:12px;font-weight:700}
.point-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; margin-bottom: 16px; border: 1px solid var(--line); border-radius: 8px; background: var(--line); }
.point-metrics a { display: flex; min-width: 0; flex-direction: column; justify-content: center; padding: 18px; background: #fff; color: inherit; }
.point-metrics a:hover { background: #f4f7fb; text-decoration: none; }
.point-metrics strong { color: var(--primary-dark); font-size: 25px; line-height: 1.2; }
.point-metrics span { color: var(--muted); font-size: 12px; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.attachment-folder { padding: 0; overflow: hidden; }
.attachment-folder-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 20px; border-bottom: 1px solid var(--line); background: #fbfcfe; }
.attachment-folder-head h2 { margin: 1px 0 0; padding: 0; border: 0; color: #17243a; font-size: 18px; }
.attachment-folder-head p { margin: 3px 0 0; color: #667286; font-size: 13px; }
.attachment-eyebrow { color: var(--accent); font: 700 10px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
.attachment-count { flex-shrink: 0; color: var(--muted); font-size: 12px; }
.attachment-count strong { color: var(--primary-dark); font-size: 20px; font-variant-numeric: tabular-nums; }
.attachment-upload { margin: 16px 20px 20px; border: 1px solid #d7deea; border-radius: 8px; background: #f8fafc; }
.attachment-dropzone { display: flex; min-height: 124px; flex-direction: column; align-items: center; justify-content: center; padding: 24px; border: 2px dashed #b9c6d8; border-radius: 7px 7px 0 0; background: #fff; color: var(--primary-dark); cursor: pointer; text-align: center; transition: border-color .18s, background .18s; }
.attachment-dropzone:hover, .attachment-dropzone.is-dragging { border-color: var(--primary); background: #f2f6fc; }
.attachment-dropzone:focus-within { outline: 3px solid rgba(30,75,143,.3); outline-offset: 2px; }
.attachment-dropzone strong { font-size: 15px; }
.attachment-dropzone span { margin-top: 4px; color: var(--muted); font-size: 12px; }
.attachment-queue:empty { display: none; }
.attachment-queue { display: grid; gap: 1px; border-top: 1px solid var(--line); background: var(--line); }
.attachment-queue-row { display: grid; grid-template-columns: minmax(160px, .8fr) minmax(220px, 1.2fr) 44px; align-items: center; gap: 12px; min-width: 0; padding: 10px 12px; background: #fff; }
.attachment-queue-file { min-width: 0; overflow: hidden; color: #5d697c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.attachment-queue-row input[type="text"] { width: 100%; min-width: 0; min-height: 40px; border: 1px solid #cbd4e1; border-radius: 6px; padding: 8px 10px; color: var(--ink); font: 14px/1.4 inherit; }
.attachment-queue-row button { width: 44px; height: 44px; border: 0; background: transparent; color: var(--accent); cursor: pointer; font: 22px/1 inherit; }
.attachment-upload-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px; border-top: 1px solid var(--line); }
.attachment-upload-actions > span { color: var(--muted); font-size: 12px; }
.attachment-upload-actions button:disabled, .attachment-item-actions button:disabled { cursor: not-allowed; opacity: .48; }
.attachment-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding: 0 20px 20px; }
.attachment-item { min-width: 0; overflow: hidden; border: 1px solid #dce2eb; border-radius: 8px; background: #fff; }
.attachment-preview { display: flex; aspect-ratio: 16 / 10; overflow: hidden; align-items: center; justify-content: center; background: #e8edf4; }
.attachment-preview img { width: 100%; height: 100%; object-fit: cover; transition: transform .2s ease; }
.attachment-preview:hover img { transform: scale(1.02); }
.attachment-document { flex-direction: column; gap: 5px; background: #edf2f8; color: #344965; }
.attachment-document strong { padding: 6px 9px; border: 2px solid currentColor; border-radius: 4px; font-size: 16px; letter-spacing: 0; }
.attachment-document span { font-size: 12px; }
.attachment-item-body { padding: 13px; }
.attachment-item-status { display: flex; flex-wrap: wrap; gap: 5px; }
.attachment-item h3 { margin: 8px 0 2px; overflow-wrap: anywhere; color: #202b3c; font-size: 14px; line-height: 1.45; }
.attachment-file-meta { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font-size: 11px; }
.attachment-file-meta span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.verification-verified { background: #e9f6ef; color: #1e7a4c; }
.verification-disputed { background: #fdeaea; color: #a90d26; }
.verification-reported { background: #e8f0fe; color: #1a5fd0; }
.attachment-details { margin-top: 12px; border-top: 1px solid var(--line); }
.attachment-details summary { min-height: 44px; padding: 11px 0 7px; color: var(--primary); font-size: 13px; font-weight: 600; cursor: pointer; }
.attachment-meta-form { display: grid; gap: 10px; padding-top: 4px; }
.attachment-meta-form label { display: grid; gap: 4px; color: #526075; font-size: 11px; font-weight: 600; }
.attachment-meta-form input, .attachment-meta-form select, .attachment-meta-form textarea { width: 100%; min-width: 0; min-height: 40px; border: 1px solid #cbd4e1; border-radius: 6px; padding: 7px 9px; background: #fff; color: var(--ink); font: 13px/1.45 inherit; }
.attachment-meta-form textarea { min-height: 78px; resize: vertical; }
.attachment-item-actions { display: flex; gap: 8px; justify-content: space-between; margin-top: 12px; }
.attachment-item-actions form { margin: 0; }
.attachment-resource-link { display: inline-flex; min-height: 44px; align-items: center; margin-top: 10px; font-size: 13px; font-weight: 600; }
.attachment-empty { grid-column: 1 / -1; display: flex; min-height: 150px; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); text-align: center; }
.attachment-empty strong { color: #49566a; font-size: 14px; }
.attachment-empty span { font-size: 12px; }
.attachment-pagination { padding: 0 20px 20px; }
.point-feed { padding: 0; overflow: hidden; }
.point-feed-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 18px; border-bottom: 1px solid var(--line); }
.point-feed-head > div { display: flex; align-items: baseline; gap: 10px; }
.point-feed-head h2 { margin: 0; padding: 0; border: 0; }
.point-feed-head span { color: var(--muted); font-size: 12px; }
.point-feed-list article { display: grid; grid-template-columns: 126px minmax(0, 1fr); gap: 20px; padding: 18px; border-bottom: 1px solid var(--line); }
.point-feed-list article:last-child { border-bottom: 0; }
.point-feed-list time { color: #5f6c80; font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
.point-feed-badges { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 6px; }
.point-feed-title { color: #202b3c; font-size: 15px; font-weight: 700; }
.point-feed-list p { margin: 5px 0; color: #667286; font-size: 13px; }
.point-feed-list small { color: var(--muted); }
@media (max-width: 920px) {
    .map-workbench { grid-template-columns: 1fr; }
    .map-stage { grid-row: 1; grid-column: 1; min-height: 56vh; }
    .map-side { grid-row: 2; grid-column: 1; border-top: 1px solid #dce2ea; border-right: 0; }
    .external-map-inspector { max-height: none; }
    .external-group-children { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .map-point-list { max-height: 280px; }
    .point-summary-grid { grid-template-columns: 1fr; }
    .point-map-source-grid { grid-template-columns: 1fr; }
    .attachment-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 576px) {
    .map-workbench { margin-inline: -12px; border-inline: 0; }
    .map-stage { min-height: 52vh; }
        .map-layer-control { right: 12px; left: 12px; }
        .map-layer-control button { flex: 1; }
    .map-create-form .form-grid, .map-coordinates { grid-template-columns: 1fr; }
    .external-data-table { margin-inline: -12px; border-inline: 0; }
    .external-data-head { align-items: stretch; flex-direction: column; gap: 14px; padding: 16px 14px; }
    .external-data-search { width: 100%; }
    .external-data-summary { align-items: flex-start; flex-wrap: wrap; padding-inline: 14px; }
    .external-data-summary a { width: 100%; margin-left: 0; }
    .external-data-scroll { max-height: none; overflow: visible; }
    .external-data-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    .external-data-table table, .external-data-table tbody, .external-data-table tr, .external-data-table td { display: block; width: 100%; }
    .external-data-table tr { padding: 12px 14px; border-bottom: 1px solid #dce2ea; }
    .external-data-table td { display: grid; grid-template-columns: 74px minmax(0, 1fr); padding: 6px 0; border: 0; }
    .external-data-table td::before { content: attr(data-label); color: #7a8699; font-size: 10px; font-weight: 700; }
    .external-data-copy > .external-data-language { grid-column: 2; }
    .external-data-images { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .point-actions .btn { flex: 1 1 calc(50% - 8px); padding-inline: 8px; }
    .point-feed-list article { grid-template-columns: 1fr; gap: 6px; }
    .attachment-folder-head { align-items: flex-start; padding: 16px 14px; }
    .attachment-folder-head p { max-width: 260px; }
    .attachment-upload { margin: 12px 14px 16px; }
    .attachment-dropzone { min-height: 132px; padding: 20px 14px; }
    .attachment-queue-row { grid-template-columns: minmax(0, 1fr) 44px; gap: 7px; }
    .attachment-queue-file { grid-column: 1 / -1; }
    .attachment-upload-actions { align-items: stretch; flex-direction: column; }
    .attachment-upload-actions button { width: 100%; }
    .attachment-grid { grid-template-columns: 1fr; padding: 0 14px 16px; }
    .attachment-meta-form input, .attachment-meta-form select, .attachment-meta-form textarea { min-height: 46px; font-size: 16px; }
}

@media (prefers-reduced-motion: reduce) {
    .attachment-dropzone, .attachment-preview img { transition: none; }
}

/* ===== 建议点位地名补全 ===== */
.ai-geocoder { grid-column: 1 / -1; padding: 12px; border: 1px solid #d8e1ee; border-radius: 6px; background: #f7f9fc; }
.ai-geocoder-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.ai-geocoder-head strong { color: var(--primary-dark); font-size: 13px; }
.ai-geocoder-head span, .ai-geocoder-status { color: var(--muted); font-size: 12px; }
.ai-geocoder-controls { display: flex; align-items: stretch; gap: 8px; }
.ai-location-form .ai-geocoder-controls input { flex: 1 1 auto; width: auto; }
.ai-geocoder-controls .btn { flex: 0 0 auto; white-space: nowrap; }
.ai-geocoder-status { margin-top: 7px; line-height: 1.5; }
.ai-geocoder-results { display: grid; gap: 7px; margin-top: 10px; }
.ai-geocoder-results[hidden] { display: none; }
.ai-geocoder-candidate { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.ai-geocoder-candidate div { min-width: 0; }
.ai-geocoder-candidate strong, .ai-geocoder-candidate span { display: block; overflow-wrap: anywhere; }
.ai-geocoder-candidate strong { font-size: 12px; line-height: 1.5; }
.ai-geocoder-candidate span { margin-top: 2px; color: var(--muted); font-size: 11px; }
@media (max-width: 680px) {
    .ai-geocoder-head { align-items: flex-start; flex-direction: column; gap: 3px; }
    .ai-geocoder-controls { flex-direction: column; }
    .ai-geocoder-controls .btn { min-height: 44px; }
    .ai-geocoder-candidate { grid-template-columns: 1fr; }
    .ai-geocoder-candidate .btn { width: 100%; }
}

/* ===== 首页智能助手 ===== */
.assistant-widget { position: fixed; right: 24px; bottom: 24px; z-index: 90; }
.assistant-launch {
    min-height: 48px; display: inline-flex; align-items: center; gap: 9px; padding: 10px 18px;
    border: 1px solid rgba(255,255,255,.25); border-radius: 8px; background: var(--primary-dark); color: #fff;
    box-shadow: 0 8px 24px rgba(18,38,70,.24); font: 600 14px/1.4 inherit; cursor: pointer;
}
.assistant-launch:hover { background: var(--primary); }
.assistant-launch-icon { position: relative; width: 19px; height: 16px; border: 2px solid currentColor; border-radius: 5px; }
.assistant-launch-icon::after { content: ''; position: absolute; left: 2px; bottom: -5px; width: 6px; height: 6px; border-left: 2px solid currentColor; transform: skewY(-35deg); }
.assistant-panel {
    position: absolute; right: 0; bottom: 58px; width: min(390px, calc(100vw - 32px)); height: min(610px, calc(100vh - 100px));
    overflow: hidden; border: 1px solid #d8dee8; border-radius: 8px; background: #fff;
    box-shadow: 0 18px 48px rgba(18,38,70,.24);
}
.assistant-panel[hidden] { display: none; }
.assistant-head { height: 66px; display: flex; align-items: center; justify-content: space-between; padding: 12px 14px 12px 18px; background: #182f54; color: #fff; }
.assistant-head div { display: flex; flex-direction: column; }
.assistant-head strong { font-size: 15px; }
.assistant-head span { color: rgba(255,255,255,.72); font-size: 11px; }
.assistant-close { width: 44px; height: 44px; border: 0; background: transparent; color: #fff; font: 300 28px/1 inherit; cursor: pointer; }
.assistant-messages { height: calc(100% - 180px); overflow-y: auto; padding: 16px; background: #f4f6fa; }
.assistant-message { max-width: 88%; margin-bottom: 12px; padding: 10px 12px; border-radius: 8px; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.65; }
.assistant-message-system, .assistant-message-assistant { border: 1px solid #e0e6ef; background: #fff; color: #354157; }
.assistant-message-user { margin-left: auto; background: var(--primary); color: #fff; }
.assistant-message-loading { color: var(--muted); background: #e9edf4; }
.assistant-message-error { border: 1px solid #f3c7cd; background: #fdf0f2; color: var(--accent); }
.assistant-suggestions { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.assistant-suggestions button { min-height: 36px; padding: 6px 10px; border: 1px solid #c9d5e8; border-radius: 6px; background: #fff; color: var(--primary-dark); font: 12px/1.4 inherit; cursor: pointer; }
.assistant-suggestions button:hover { border-color: var(--primary); background: #f0f5fd; }
.assistant-references { margin: 2px 0 14px; padding: 10px 12px; border-left: 3px solid var(--primary); background: #fff; font-size: 12px; }
.assistant-references strong { display: block; margin-bottom: 5px; color: #43516a; }
.assistant-references a { display: block; padding: 3px 0; overflow-wrap: anywhere; }
.assistant-form { height: 114px; padding: 10px 12px; border-top: 1px solid var(--line); background: #fff; }
.assistant-form > label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.assistant-input-row { display: grid; grid-template-columns: 1fr 58px; gap: 8px; }
.assistant-input-row textarea { height: 62px; resize: none; border: 1px solid #cfd7e4; border-radius: 6px; padding: 9px 10px; color: var(--ink); font: 13px/1.5 inherit; }
.assistant-input-row textarea:focus { outline: 2px solid rgba(30,75,143,.22); border-color: var(--primary); }
.assistant-input-row button { border: 0; border-radius: 6px; background: var(--primary); color: #fff; font: 600 13px/1 inherit; cursor: pointer; }
.assistant-input-row button:disabled { cursor: wait; opacity: .55; }
.assistant-disclaimer { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; }
.assistant-launch:focus-visible, .assistant-close:focus-visible, .assistant-suggestions button:focus-visible, .assistant-input-row button:focus-visible { outline: 3px solid rgba(30,75,143,.35); outline-offset: 2px; }
@media (max-width: 576px) {
    .assistant-widget { right: max(12px, env(safe-area-inset-right)); bottom: max(12px, env(safe-area-inset-bottom)); }
    .assistant-panel { position: fixed; left: 8px; right: 8px; bottom: calc(70px + env(safe-area-inset-bottom)); width: auto; height: min(620px, calc(100dvh - 116px - env(safe-area-inset-top))); overscroll-behavior: contain; }
    .assistant-launch { min-height: 46px; padding: 9px 14px; }
    .assistant-suggestions button { min-height: 44px; }
    .assistant-input-row textarea { font-size: 16px; }
}

/* ===== 资源库 ===== */
.lib-locations { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.lib-loc {
    display: inline-flex; align-items: center; gap: 7px; min-height: 36px;
    padding: 5px 14px; border: 1px solid var(--line); border-radius: 999px;
    background: #fff; color: var(--ink); font-size: 13px; text-decoration: none;
    transition: .15s;
}
.lib-loc:hover { border-color: var(--primary); text-decoration: none; }
.lib-loc.on { background: var(--primary); border-color: var(--primary); color: #fff; }
.lib-loc-n {
    min-width: 20px; padding: 0 6px; border-radius: 999px;
    background: #eef1f7; color: #6b7280; font-size: 11px; text-align: center; line-height: 18px;
}
.lib-loc.on .lib-loc-n { background: rgba(255,255,255,.22); color: #fff; }

.lib-domains { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 14px; }
.lib-domain {
    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
    padding: 14px 16px; display: flex; flex-direction: column; gap: 4px;
}
.lib-domain-head {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 4px 6px; margin-bottom: 4px; color: var(--ink);
    text-decoration: none;
}
.lib-domain-head:hover { text-decoration: none; color: var(--primary); }
.lib-domain-head.on, .lib-domain-head.on strong { color: var(--primary); }
.lib-domain-head strong { font-size: 15px; }
.lib-domain-count {
    min-width: 26px; padding: 1px 8px; border-radius: 999px;
    background: #e9eef7; color: #33406b; font-size: 12px; font-weight: 700; text-align: center;
}
.lib-domain-head.on .lib-domain-count { background: var(--primary); color: #fff; }
.lib-cat {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    min-height: 40px; padding: 7px 10px; border-radius: 8px;
    color: var(--ink); font-size: 14px; text-decoration: none; transition: .12s;
}
.lib-cat:hover { background: #f0f4fb; text-decoration: none; }
.lib-cat.on { background: var(--primary); color: #fff; }
.lib-cat-n { color: var(--muted); font-size: 12px; white-space: nowrap; }
.lib-cat.on .lib-cat-n { color: rgba(255,255,255,.85); }

.lib-unclassified { margin-bottom: 4px; }
.lib-unclassified a {
    display: inline-flex; align-items: center; gap: 8px; min-height: 36px;
    padding: 5px 14px; border: 1px dashed var(--line); border-radius: 8px;
    background: #fff; color: var(--muted); font-size: 13px; text-decoration: none;
}
.lib-unclassified a:hover { border-color: var(--primary); color: var(--primary); text-decoration: none; }
.lib-unclassified a.on { border-style: solid; border-color: var(--primary); color: var(--primary); font-weight: 700; }

.lib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.lib-card {
    display: flex; flex-direction: column; background: var(--card);
    border: 1px solid var(--line); border-radius: 12px; overflow: hidden;
    transition: box-shadow .15s, transform .15s;
}
.lib-card:hover { box-shadow: 0 4px 14px rgba(22,56,109,.12); }
.lib-card.pending { border-left: 3px solid #e8a33d; }
.lib-card.hidden { opacity: .65; }
.lib-cover {
    display: block; aspect-ratio: 16 / 9; background: #e8ecf3 center / cover no-repeat;
    border-bottom: 1px solid var(--line);
    position: relative;
}
.lib-play {
    position: absolute; right: 10px; bottom: 10px;
    width: 34px; height: 34px; border-radius: 50%;
    background: rgba(16, 38, 74, .78); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; line-height: 1;
    box-shadow: 0 1px 6px rgba(0, 0, 0, .35);
}
.lib-card:hover .lib-play { background: var(--primary); }
.lib-cover-empty {
    background: linear-gradient(135deg, #1b2a4a 0%, #10263a 100%);
    display: flex; align-items: center; justify-content: center;
}
.lib-cover-empty .lib-play {
    position: static; width: 48px; height: 48px; font-size: 18px;
    background: rgba(255, 255, 255, .18);
}
.lib-cover-empty-hint {
    position: absolute; left: 12px; top: 10px;
    color: rgba(255, 255, 255, .75); font-size: 12px; letter-spacing: 2px;
}
.lib-body { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; flex: 1; }
.lib-badges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.lib-title {
    color: var(--ink); text-decoration: none;
    font-size: 15px; font-weight: 700; line-height: 1.5;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.lib-title:hover { color: var(--primary); }
.lib-summary {
    margin: 0; color: var(--muted); font-size: 13px; line-height: 1.6;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.lib-meta {
    margin-top: auto; padding-top: 8px; border-top: 1px dashed var(--line);
    color: var(--muted); font-size: 12px;
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.lib-meta > * { color: var(--muted); }
.lib-src {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 8px; border-radius: 999px;
    font-size: 12px; font-weight: 600; text-decoration: none;
    border: 1px solid transparent;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.lib-src:hover { text-decoration: underline; text-underline-offset: 3px; }
.badge.mini { font-size: 10px; padding: 1px 6px; border-radius: 4px; font-weight: 500; }

@media (max-width: 860px) {
    .lib-domains { grid-template-columns: 1fr; gap: 10px; }
}
@media (max-width: 680px) {
    .lib-loc { min-height: 44px; }
    .lib-cat { min-height: 44px; }
    .lib-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
}

/* 点位地图 Modal（点击点位标记弹出） */
.location-modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(10, 25, 41, 0.62);
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.location-modal-overlay.is-open { display: flex; }
.location-modal {
    position: relative;
    width: min(680px, 100%);
    max-height: min(82vh, 720px);
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(7, 27, 48, 0.35);
    overflow: hidden;
}
.location-modal-close {
    position: absolute;
    top: 10px;
    right: 12px;
    z-index: 2;
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 50%;
    background: rgba(15, 42, 74, 0.08);
    color: #0f2a4a;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}
.location-modal-close:hover { background: rgba(15, 42, 74, 0.16); }
.location-modal-head {
    padding: 20px 56px 14px 24px;
    border-bottom: 1px solid #e8eef5;
}
.location-modal-code {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 6px;
    background: #eaf2fb;
    color: #2c6fbb;
    font-size: 12px;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.location-modal-name {
    margin: 8px 0 4px;
    font-size: 20px;
    color: #14365e;
}
.location-modal-meta {
    margin: 0;
    font-size: 12.5px;
    color: #5f7590;
}
.location-modal-body {
    flex: 1;
    overflow-y: auto;
    padding: 14px 24px;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 12px;
    align-content: start;
}
.location-modal-boundary,.location-modal-sources,.location-modal-section-title{grid-column:1/-1}.location-modal-boundary{margin:0;padding:10px 12px;border-left:3px solid #c98922;background:#fff8ea;color:#5f4b2b;font-size:12px;line-height:1.6}.location-modal-sources h4,.location-modal-section-title{margin:0 0 8px;color:#30445f;font-size:12px}.location-modal-sources h4 span{color:var(--muted);font-weight:400}.location-modal-sources>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.location-map-source{display:flex;min-width:0;flex-direction:column;padding:10px 12px;border:1px solid #dce5ef;border-radius:7px;background:#f8fafc;color:inherit;text-decoration:none}.location-map-source:hover{border-color:#7aa4d1;background:#f2f7fc;text-decoration:none}.location-map-source-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.location-map-source-head strong{color:#1d3f67;font-size:12px}.location-map-source-head b{flex:0 0 auto;padding:1px 5px;border-radius:3px;font-size:10px}.location-map-source small{margin-top:2px;color:#668099;font-size:10px}.location-map-source p{margin:7px 0 0;color:#536174;font-size:11px;line-height:1.55}.location-map-source .verification-verified{background:#e3f2ea;color:#176244}.location-map-source .verification-reported{background:#fbf0db;color:#815d1f}
.location-modal-card {
    display: flex;
    gap: 12px;
    padding: 10px;
    border: 1px solid #e8eef5;
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.location-modal-card:hover {
    border-color: #9cc2ea;
    box-shadow: 0 4px 14px rgba(44, 111, 187, 0.14);
}
.location-modal-cover {
    position: relative;
    flex: 0 0 96px;
    height: 66px;
    border-radius: 8px;
    background: #d9e6f4 center/cover no-repeat;
    display: flex;
    align-items: center;
    justify-content: center;
}
.location-modal-cover.is-placeholder { background: linear-gradient(135deg, #dbe8f6, #b7cde8); }
.location-modal-cover-fallback { font-size: 11px; color: #62809f; }
.location-modal-vr { position: absolute; top: 6px; left: 6px; font-size: 10px; font-weight: 700; line-height: 1;
    padding: 4px 6px; border-radius: 999px; color: #fff; background: rgba(22, 56, 109, .85); letter-spacing: .5px; }
.location-modal-info {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.location-modal-date { font-size: 12px; color: #8296ad; }
.location-modal-title {
    font-size: 13.5px;
    line-height: 1.45;
    color: #1c3a5e;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.location-modal-empty {
    grid-column: 1 / -1;
    margin: 24px 0;
    text-align: center;
    font-size: 13.5px;
    color: #7b8ea6;
}
.location-modal-foot {
    padding: 12px 24px;
    border-top: 1px solid #e8eef5;
    text-align: right;
}
.location-modal-all {
    font-size: 13px;
    color: #2c6fbb;
    text-decoration: none;
}
.location-modal-all:hover { text-decoration: underline; }
@media (max-width: 560px) {
    .location-modal-body { grid-template-columns: 1fr; }
    .location-modal-head { padding: 16px 52px 12px 18px; }
    .location-modal-body, .location-modal-foot { padding-left: 18px; padding-right: 18px; }
}

/* ===== 开源数据目录 ===== */
.open-data-scope{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid #b9d8ca;border-radius:4px;background:#e9f5ef;color:#176244;font-size:11px;font-weight:700;line-height:1.4;white-space:nowrap}.open-data-scope.scope-general{border-color:#c5d4e7;background:#edf3fa;color:#315c89}.open-data-scope.scope-historical_2025{border-color:#e5d2ad;background:#fbf4e7;color:#815d1f}
.open-data-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:16px;padding:24px 0 20px;border-bottom:1px solid var(--line)}.open-data-kicker{color:#16724b;font-size:11px;font-weight:800;letter-spacing:0}.open-data-head h1{margin:3px 0 4px;color:#172235;font-size:28px;line-height:1.25}.open-data-head p{max-width:760px;margin:0;color:#647186;font-size:14px}.open-data-stats{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:16px;border:1px solid #dbe4e1;border-radius:8px;background:#fff}.open-data-stats div{display:flex;min-width:0;flex-direction:column;padding:14px 18px;border-right:1px solid #e4ebe8}.open-data-stats div:last-child{border-right:0}.open-data-stats strong{color:#19593f;font-size:22px;font-variant-numeric:tabular-nums}.open-data-stats span{color:var(--muted);font-size:12px}.open-data-shell{display:grid;grid-template-columns:240px minmax(0,1fr);align-items:start;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.open-data-filters{position:sticky;top:72px;padding:16px;border-right:1px solid var(--line);background:#f8faf9}.open-data-filters>form>label,.open-data-admin-filter label{display:flex;flex-direction:column;gap:5px;color:#536174;font-size:12px;font-weight:700}.open-data-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.open-data-search-row input,.open-data-admin-filter input,.open-data-admin-filter select{width:100%;min-width:0;min-height:40px;border:1px solid #cfd8d4;border-radius:6px;background:#fff;padding:8px 10px;color:var(--ink);font:14px/1.4 inherit}.open-data-filter-group{margin-top:20px}.open-data-filter-group h2{margin:0 0 7px;color:#26374e;font-size:12px}.open-data-filter-group a{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;margin:1px -7px;padding:7px;border-radius:5px;color:#536174;font-size:13px;text-decoration:none}.open-data-filter-group a:hover,.open-data-filter-group a.on{background:#e6f2ec;color:#155d3f}.open-data-filter-group b{font-size:11px;font-weight:600}.open-data-results{min-width:0;padding:0 20px 20px}.open-data-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:65px;border-bottom:1px solid var(--line)}.open-data-results-head>div{display:flex;flex-direction:column}.open-data-results-head span{color:var(--muted);font-size:12px}.open-data-record{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:24px;padding:22px 0;border-bottom:1px solid var(--line)}.open-data-record-main{min-width:0}.open-data-record-meta,.open-data-tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:#778396;font-size:11px}.open-data-org-mark{padding:2px 6px;border-radius:4px;background:#e1f0e8;color:#155d3f;font-weight:800}.open-data-record h2{margin:7px 0 6px;font-size:17px;line-height:1.45}.open-data-record h2 a{color:#1b2e47}.open-data-record p{margin:0;color:#526075;font-size:13px;line-height:1.7}.open-data-tags{margin-top:11px}.open-data-tags span{padding:3px 7px;border:1px solid #dde5e2;border-radius:4px;background:#fafcfb}.open-data-record-side{display:flex;align-items:flex-end;flex-direction:column;justify-content:space-between;gap:12px;color:#6a776f;font-size:12px}.open-data-empty{display:flex;align-items:center;flex-direction:column;padding:72px 20px;color:var(--muted)}.open-data-empty strong{color:#344257}.open-data-breadcrumb{display:flex;gap:8px;margin:18px 0;color:var(--muted);font-size:12px}.open-data-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.open-data-detail,.open-data-facts,.open-data-related,.open-data-method,.open-data-caution{border:1px solid var(--line);border-radius:8px;background:#fff}.open-data-detail{padding:26px}.open-data-detail h1{max-width:850px;margin:10px 0 12px;color:#172235;font-size:29px;line-height:1.35}.open-data-lead{margin:0;color:#4d5d73;font-size:16px;line-height:1.8}.open-data-detail section{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}.open-data-detail section h2,.open-data-facts h2,.open-data-related h2,.open-data-method h2{margin:0 0 12px;color:#21354d;font-size:17px}.open-data-detail section>p{color:#455469;line-height:1.85;white-space:pre-line}.open-data-use-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.open-data-use-grid div{display:flex;flex-direction:column;padding:13px;border-left:3px solid #4f9874;background:#f5faf7}.open-data-use-grid span{margin-top:4px;color:#647186;font-size:12px;line-height:1.6}.open-data-source-note>a{display:inline-flex;margin-top:5px}.open-data-source-note>span{display:block;margin-top:9px;color:var(--muted);font-size:11px}.open-data-facts{position:sticky;top:72px;padding:20px}.open-data-facts dl{margin:0}.open-data-facts dl div{padding:11px 0;border-bottom:1px solid var(--line)}.open-data-facts dt{color:var(--muted);font-size:11px}.open-data-facts dd{margin:3px 0 0;color:#304056;font-size:13px;line-height:1.55}.open-data-facts>a{display:block;margin-top:15px}.open-data-related{margin-top:18px;padding:20px}.open-data-related>div{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.open-data-related a{display:flex;flex-direction:column;padding:12px;border:1px solid var(--line);border-radius:6px}.open-data-related a span{color:#16724b;font-size:11px}.open-data-related a strong{margin-top:4px;color:#2b3a50;font-size:13px}.open-data-guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.open-data-guide-grid section{min-height:210px;padding:22px;border:1px solid var(--line);border-top:4px solid #2f7c5a;border-radius:6px;background:#fff}.open-data-guide-grid section>span{color:#7b998b;font-size:12px;font-weight:800}.open-data-guide-grid h2{margin:25px 0 8px;color:#21354d;font-size:18px}.open-data-guide-grid p{margin:0;color:#58667a;font-size:13px;line-height:1.75}.open-data-method{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;margin-top:16px;padding:24px}.open-data-method ol{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:0;padding:0;list-style:none;counter-reset:step}.open-data-method li{display:flex;flex-direction:column;padding-left:14px;border-left:2px solid #b9d8c8}.open-data-method li span{color:var(--muted);font-size:12px}.open-data-caution{display:flex;gap:18px;margin-top:16px;padding:18px 22px;border-left:4px solid #c58b2b;background:#fffaf0}.open-data-caution strong{flex:0 0 auto;color:#795313}.open-data-caution p{margin:0;color:#705f43;font-size:13px}.open-data-admin-filter{display:grid;grid-template-columns:minmax(240px,1fr) 160px auto;gap:10px;align-items:end;margin-bottom:14px;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fff}.open-data-admin-actions,.open-data-admin-submit{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.open-data-admin-actions form{display:inline}.open-data-admin-empty{padding:40px!important;color:var(--muted);text-align:center}.open-data-admin-form-grid{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-bottom:14px}.open-data-admin-form-grid fieldset,.open-data-admin-form-section{margin:0;border:1px solid var(--line);border-radius:8px;background:#fff;padding:18px}.open-data-admin-form-grid legend{padding:0 6px;color:#26374e;font-weight:700}.open-data-admin-form-grid fieldset{display:grid;gap:12px}.open-data-admin-form-grid label,.open-data-admin-form-section label{display:flex;flex-direction:column;gap:5px;color:#536174;font-size:12px;font-weight:700}.open-data-admin-form-grid input,.open-data-admin-form-grid select,.open-data-admin-form-section input,.open-data-admin-form-section select,.open-data-admin-form-section textarea{width:100%;min-width:0;border:1px solid #cfd6e2;border-radius:6px;background:#fff;padding:9px 11px;color:var(--ink);font:14px/1.5 inherit}.open-data-admin-form-grid .checkbox{align-items:center;flex-direction:row;min-height:44px}.open-data-admin-form-grid .checkbox input{width:auto}.open-data-admin-form-section h2{margin-top:0;font-size:17px}.open-data-admin-submit{margin-top:14px}
@media(max-width:800px){.open-data-stats{grid-template-columns:repeat(2,1fr)}.open-data-stats div:nth-child(2){border-right:0}.open-data-stats div:nth-child(-n+2){border-bottom:1px solid #e4ebe8}.open-data-shell{grid-template-columns:1fr}.open-data-filters{position:static;border-right:0;border-bottom:1px solid var(--line)}.open-data-filter-group{display:none}.open-data-detail-layout{grid-template-columns:1fr}.open-data-facts{position:static}.open-data-guide-grid{grid-template-columns:repeat(2,1fr)}.open-data-method{grid-template-columns:1fr}.open-data-admin-form-grid{grid-template-columns:1fr}}
@media(max-width:560px){.open-data-head{align-items:flex-start;flex-direction:column;padding-top:16px}.open-data-head h1,.open-data-detail h1{font-size:23px}.open-data-head .btn{width:100%}.open-data-stats div{padding:11px 12px}.open-data-stats strong{font-size:18px}.open-data-results{padding:0 14px 16px}.open-data-results-head{align-items:flex-start;flex-direction:column;justify-content:center}.open-data-record{grid-template-columns:1fr;gap:12px;padding:18px 0}.open-data-record-side{align-items:flex-start;flex-direction:row}.open-data-record-side .btn{min-height:44px}.open-data-detail{padding:18px 15px}.open-data-use-grid,.open-data-related>div,.open-data-guide-grid,.open-data-method ol{grid-template-columns:1fr}.open-data-guide-grid section{min-height:0}.open-data-caution{flex-direction:column;gap:6px}.open-data-admin-filter{grid-template-columns:1fr}.open-data-admin-filter input,.open-data-admin-filter select,.open-data-admin-form-grid input,.open-data-admin-form-grid select,.open-data-admin-form-section input,.open-data-admin-form-section select,.open-data-admin-form-section textarea{min-height:44px;font-size:16px}}

