/* 智航设计令牌 — 漂浮窗终端 · cybertruck/starlink 座舱美学 */
:root{
  --bg:#0f1923;--bg2:#0b131b;--accent:#00b4d8;--accent-dim:rgba(0,180,216,.15);
  --green:#22c55e;--blue:#3b82f6;--yellow:#eab308;--red:#ef4444;
  --text:#e8ecf0;--text2:#8899aa;--text3:#556677;
  --panel:rgba(255,255,255,.04);--pb:rgba(255,255,255,.08);--glass:rgba(15,25,35,.85);
  --P:#fff;--pt:#1a2330;--pt3:#9ca3af;--pbg:#f5f7fa;--R:12px;--R-sm:6px;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Noto Sans SC',system-ui,sans-serif;background:var(--bg);color:var(--text);height:100vh;overflow:hidden;user-select:none}

/* 顶栏 */
.topbar{position:fixed;top:0;left:0;right:0;height:54px;z-index:500;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--glass);backdrop-filter:blur(20px);border-bottom:1px solid var(--pb)}
.logo{font-size:16px;font-weight:700;letter-spacing:2px;white-space:nowrap}
.logo span{font-weight:300;color:var(--text2);font-size:11px;margin-left:6px}
.sbar{flex:1 1 120px;min-width:90px;max-width:340px;height:34px;background:var(--panel);border:1px solid var(--pb);border-radius:17px;padding:0 14px;display:flex;align-items:center;gap:8px}
.arrangebar{flex-shrink:0}.logo{flex-shrink:0}
.sbar input{background:none;border:none;color:var(--text);font-size:12px;font-family:inherit;outline:none;flex:1}
.sbar input::placeholder{color:var(--text3)}
.quickbar{display:flex;gap:6px;margin-left:auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.quickbar::-webkit-scrollbar{display:none}
.qbtn{height:30px;padding:0 12px;border-radius:15px;background:var(--panel);border:1px solid var(--pb);color:var(--text2);font-size:11px;font-family:inherit;cursor:pointer;transition:.15s;white-space:nowrap}
.qbtn:hover{border-color:var(--accent);color:var(--accent)}
.qbtn.accent{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);font-weight:600}
/* 内参新期未读：暗慢呼吸引导（点击后 JS 去掉 .qbtn-nudge 类，动画停）
   不加常驻高亮边框，只让按钮整体在"常态↔微亮"间缓慢明灭，像心跳般引导而不突兀 */
.qbtn.qbtn-nudge{animation:qbtn-breathe 3.2s ease-in-out infinite}
@keyframes qbtn-breathe{
  0%,100%{border-color:var(--pb);color:var(--text2);box-shadow:0 0 0 0 rgba(0,180,216,0)}
  50%{border-color:rgba(0,180,216,.55);color:var(--accent);box-shadow:0 0 7px 0 rgba(0,180,216,.35)}
}
@media (prefers-reduced-motion:reduce){.qbtn.qbtn-nudge{animation:none;border-color:rgba(0,180,216,.5)}}

/* 地图底层画布 */
#map-base{position:fixed;top:54px;left:0;right:0;bottom:0;background:var(--bg2);background-image:radial-gradient(circle at 60% 40%,rgba(0,180,216,.04),transparent 60%)}
#map-base svg{display:block}
.map-empty{position:absolute;top:40%;left:0;right:0;text-align:center;color:var(--text3);font-size:14px}
.nd{cursor:pointer}.nd:hover circle{opacity:1}.nd text{pointer-events:none}
.rl{cursor:pointer}.rl:hover{opacity:.7!important;stroke-width:2.4}
/* 有实测数据的航线：科技感发光光点沿弧流动（董事长第6点·要高级/科技感）*/
.rl-live{opacity:.6;stroke-dasharray:2 20;stroke-linecap:round;stroke-width:1.6;filter:drop-shadow(0 0 2px rgba(20,150,105,.55));animation:rl-flow 3.2s linear infinite}
.rl-glow{opacity:.1;stroke-width:2.4;stroke-linecap:round}
@keyframes rl-flow{to{stroke-dashoffset:-22}}
@media (prefers-reduced-motion:reduce){.rl-live{animation:none;opacity:.4}}
.legend{position:fixed;bottom:12px;left:12px;z-index:400;background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--pb);border-radius:var(--R-sm);padding:7px 12px;font-size:10px;color:var(--text2)}
.legend b{color:var(--accent)}

/* 漂浮卡 */
#cardContainer{position:fixed;inset:54px 0 0 0;pointer-events:none;z-index:300}
.card{position:fixed;pointer-events:auto;background:var(--P);border-radius:var(--R);box-shadow:0 10px 40px rgba(0,0,0,.45);border:1px solid #e5e7eb;display:flex;flex-direction:column;max-height:calc(100vh - 90px);overflow:hidden;min-width:280px}
.card.front{box-shadow:0 16px 54px rgba(0,0,0,.55)}
.c-head{padding:9px 12px;border-bottom:1px solid #eef1f4;cursor:grab;display:flex;align-items:center;gap:8px;background:var(--pbg);flex-shrink:0}
.c-icon{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}
.c-icon.airport{background:#dbeafe;color:#1d4ed8}.c-icon.route{background:#dcfce7;color:#15803d}.c-icon.signal{background:#fef3c7;color:#92400e}
.c-icon.plan{background:#ede9fe;color:#6d28d9}.c-icon.watch{background:#fee2e2;color:#b91c1c}.c-icon.news{background:#e0f2fe;color:#0369a1}.c-icon.vault{background:#fef9c3;color:#a16207}.c-icon.ai{background:#cffafe;color:#0891b2}
.c-title{flex:1;font-size:12px;font-weight:700;color:var(--pt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-sub{font-size:9px;color:var(--pt3)}
.c-close{width:22px;height:22px;border:none;background:none;color:var(--pt3);cursor:pointer;font-size:13px;border-radius:50%;flex-shrink:0}
.c-close:hover{background:#fee2e2;color:#b91c1c}
.c-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;padding:11px 13px;font-size:11px;color:var(--pt)}
.sec{font-size:10px;font-weight:700;color:#475569;margin:11px 0 6px;letter-spacing:.5px}
.source{font-size:8px;color:var(--pt3);margin-top:8px;border-top:1px solid #eef1f4;padding-top:5px}
/* 操作工具条：与统计格子/青色强调同语言(starlink 亮色座舱) */
.c-actions{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0 2px}
.cab{
  font-size:10.5px;font-weight:600;letter-spacing:.2px;
  padding:6px 11px;
  background:var(--pbg);color:#0369a1;
  border:1px solid #e3e8ef;border-radius:var(--R-sm);
  cursor:pointer;font-family:inherit;
  display:inline-flex;align-items:center;gap:4px;
  transition:background .14s,border-color .14s,color .14s,box-shadow .14s;
}
.cab:hover{background:#eaf4fb;border-color:var(--accent);color:#0e7490;box-shadow:0 0 0 1px rgba(0,180,216,.18)}
.cab:active{background:#dff0f8}
.cab-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.cab-primary:hover{background:#0098bb;border-color:#0098bb;color:#fff;box-shadow:0 2px 9px rgba(0,180,216,.32)}

/* 机场卡 */
.ac-stats{display:flex;gap:8px}
.ac-stats>div{flex:1;text-align:center;background:var(--pbg);border-radius:6px;padding:8px 4px}
.ac-stats b{font-size:18px;color:#0369a1}.ac-stats span{display:block;font-size:8px;color:var(--pt3);margin-top:2px}
.rlist-search{display:flex;align-items:center;gap:8px;margin:4px 0 6px}
.rlist-filter{flex:1;min-width:0;font-size:11px;padding:5px 9px;border:1px solid #dbe7f3;border-radius:7px;background:#f8fafc;color:var(--pt);font-family:inherit;outline:none}
.rlist-filter:focus{border-color:var(--accent);background:#fff}
.rlist-count{font-size:9px;color:var(--text3);white-space:nowrap;font-variant-numeric:tabular-nums}
.rlist{max-height:300px;overflow-y:auto;flex-shrink:0}
.rli{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid #f1f5f9;cursor:pointer;border-radius:4px}
.rli:hover{background:#f0f7ff}
.rli-to{font-weight:700;min-width:42px}.rli-f{color:#0369a1;font-size:10px;min-width:42px;font-variant-numeric:tabular-nums}
.rli-b{font-size:9px;font-weight:700;flex:1}.rli-intl{font-size:8px;padding:1px 5px;border-radius:8px;background:#e0f2fe;color:#0369a1}
.rli-watch{background:none;border:none;cursor:pointer;opacity:.4;font-size:11px}.rli-watch:hover{opacity:1}

/* OD 信号卡 */
.od-rate{display:flex;align-items:center;justify-content:space-between;border:1px solid;border-radius:8px;padding:8px 10px;margin-bottom:8px}
.od-tier{font-size:14px;font-weight:700}.od-conf{font-size:9px;color:var(--pt3)}
.od-cur{font-size:11px;color:#475569;margin-bottom:4px}
.sig{padding:7px 8px;border-radius:6px;background:var(--pbg);margin-bottom:5px}
.sig.na{opacity:.6}
.sig-n{font-size:10px;font-weight:600;color:#334155}.sig-v{float:right;font-size:11px;font-weight:700;color:#0369a1}
.sig.na .sig-v{color:var(--pt3)}
.sig-r{font-size:9px;color:#64748b;margin-top:3px;clear:both}
/* 可展开信号行 */
.sig-expandable{cursor:pointer;user-select:none}
.sig-expandable:hover{background:#e8f0fe}
.sig-expand-btn{float:right;font-size:9px;color:#94a3b8;margin-left:4px;margin-top:1px}
.sig-detail{padding-top:6px;clear:both}
.sig-detail-inner{font-size:9px;color:#475569;background:#f8fafc;border-radius:4px;padding:6px 8px;border:1px solid #e2e8f0;line-height:1.6}
.sig-comp-chips{display:flex;flex-wrap:wrap;gap:3px;margin-top:5px}
.chip-drill{cursor:pointer;background:#dbeafe;color:#1d4ed8}
.chip-drill:hover{background:#bfdbfe}
.mb-row-drill{cursor:pointer}
.mb-row-drill:hover .mb-l{color:#3b82f6}
.od-reasons{font-size:10px;color:#475569;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:6px 8px;margin-top:6px}
/* 统一信号面板（董事长2026-07-18）：可折叠·三组(需求潜力/替代分流/供给) */
.sp-head .sig-n{font-size:11px;color:#1e293b}
.sp-body{padding-top:6px;clear:both}
.sp-grp{margin-bottom:8px}
.sp-grp:last-child{margin-bottom:0}
.sp-grp-h{font-size:9px;font-weight:700;color:#64748b;letter-spacing:.4px;margin:0 0 4px 2px}
.sp-body .sig{background:#f8fafc;border:1px solid #eef2f7}
/* 现量卡班期/时长meta行(董事长2026-07-19·航班计划数据用尽) */
.adsb-meta{font-size:10px;color:#475569;margin:4px 0 2px;display:flex;flex-wrap:wrap;gap:4px 10px}
/* 运力构成与态势感知·合并成一整块(董事长2026-07-19·现量+态势不上下分离) */
.vol-posture{border:1px solid #e2e8f0;border-left:3px solid #059669;border-radius:6px;margin:6px 0;padding:2px 0;display:flow-root}
.vol-posture .adsb-block{margin:0;border:none;border-radius:0;background:transparent}
.vol-posture .rp-block{margin:0;border:none;border-radius:0;background:transparent;border-top:1px dashed #e2e8f0;padding-top:8px}

/* 评估卡 */
.sub2{font-size:10px;color:var(--pt3);margin-bottom:6px}
.ta{width:100%;border:1px solid #e5e7eb;border-radius:6px;padding:7px;font-size:11px;font-family:inherit;color:var(--pt);resize:vertical}
.as-card{border:1px solid #eef1f4;border-radius:6px;padding:8px;margin-top:6px;cursor:pointer}
.as-card:hover{background:#f0f7ff}.as-act{font-size:9px;padding:1px 6px;border-radius:8px;background:#ede9fe;color:#6d28d9}
.as-cur{font-size:9px;color:#64748b;margin-top:3px}

/* 提醒卡 */
.wa-row{display:flex;align-items:center;gap:8px;padding:7px;border-bottom:1px solid #f1f5f9}
.wa-od{font-weight:700;min-width:80px}.wa-alert{flex:1;font-size:10px;color:#b45309;font-weight:600}
.wa-ok{flex:1;font-size:10px;color:var(--pt3)}.wa-del{background:none;border:none;color:var(--pt3);cursor:pointer;font-size:13px}
.locked{padding:14px;text-align:center;font-size:11px;color:var(--pt3)}

/* 资讯卡 */
.news-it{display:block;padding:8px;border-bottom:1px solid #f1f5f9;text-decoration:none;color:var(--pt)}
.news-it:hover{background:#f0f7ff}.news-t{font-size:11px;font-weight:600;line-height:1.4}.news-m{font-size:9px;color:var(--pt3);margin-top:3px}
.news-lang{display:inline-block;font-size:8px;font-weight:700;padding:0 3px;border-radius:3px;margin-right:4px;vertical-align:middle;line-height:14px}
.news-lang-zh{background:#dbeafe;color:#1d4ed8}.news-lang-en{background:#dcfce7;color:#15803d}
.loading2{padding:24px;text-align:center;color:var(--pt3);font-size:11px}

/* === 精选资讯 · 专业刊物样式 === */
/* 期号眉头（masthead）*/
.curated-masthead{font-size:10px;font-weight:700;color:#334155;letter-spacing:.8px;padding:6px 8px 8px;border-bottom:2px solid #1e40af;margin-bottom:6px;background:linear-gradient(135deg,#f8fafc,#f1f5f9)}
/* 每篇列表行 */
.curated-row{display:flex;align-items:flex-start;gap:8px;padding:9px 8px;border-bottom:1px solid #f1f5f9;cursor:pointer;border-radius:4px;transition:background .12s}
.curated-row:hover{background:#f0f7ff}
/* 序号/锐观察徽章 */
.curated-badge-pin{display:inline-flex;align-items:center;justify-content:center;min-width:56px;height:18px;padding:0 7px;border-radius:9px;background:#003366;color:#fff;font-size:9px;font-weight:700;letter-spacing:.5px;flex-shrink:0;margin-top:2px}
.curated-badge-num{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:50%;background:#e2e8f0;color:#334155;font-size:10px;font-weight:700;flex-shrink:0;margin-top:1px}
/* 文章标题区 */
.curated-meta-col{flex:1;min-width:0}
.curated-title{font-size:12px;font-weight:600;color:#1e293b;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.curated-excerpt{font-size:10px;color:#64748b;margin-top:3px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.curated-rt{font-size:9px;color:#94a3b8;margin-top:3px;white-space:nowrap}
/* 全文页 */
.curated-art-title{font-size:15px;font-weight:700;color:#1e293b;line-height:1.5;margin-bottom:6px}
.curated-art-meta{font-size:10px;color:#94a3b8;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #e2e8f0}
.curated-art-body{font-size:13px;line-height:1.85;color:#1e293b}
.curated-art-body p{margin-bottom:.8em}
.curated-art-subh{font-weight:700;margin-top:1em;margin-bottom:.3em;color:#0f172a}
.curated-art-footer{font-size:9px;color:#94a3b8;margin-top:14px;padding-top:8px;border-top:1px solid #e2e8f0;text-align:right}
/* 民航局要闻来源行统一样式 */
.news-src-line{font-size:9px;color:#94a3b8;margin-top:3px}

/* === 精选资讯 v2 刊物级排版 === */
/* 期号切换器 */
.curated-issue-switcher{display:flex;align-items:center;gap:6px;margin-bottom:8px;padding:4px 0}
.curated-issue-switcher label{font-size:9px;color:#64748b;font-weight:600;flex-shrink:0}
.curated-issue-select{font-size:10px;padding:3px 8px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;color:#1e293b;font-family:inherit;cursor:pointer;outline:none;flex:1;min-width:0}
.curated-issue-select:focus{border-color:var(--accent)}

/* 栏目标签 chip */
.cat-tag{display:inline-block;font-size:8px;font-weight:700;padding:1px 6px;border-radius:8px;letter-spacing:.4px;vertical-align:middle;margin-right:4px;flex-shrink:0}
.cat-tag-锐观察{background:#003366;color:#fff}
.cat-tag-编译{background:#e0f2fe;color:#0369a1}
.cat-tag-选题{background:#f3e8ff;color:#6d28d9}
.cat-tag-深度{background:#fef3c7;color:#92400e}
.cat-tag-default{background:#f1f5f9;color:#475569}

/* 头条英雄块 */
.curated-hero{background:linear-gradient(135deg,#001f4d,#003a80);border-radius:8px;padding:14px 16px;margin-bottom:8px;cursor:pointer;transition:opacity .15s;border:1px solid rgba(255,255,255,.08)}
.curated-hero:hover{opacity:.92}
.curated-hero-eyebrow{font-size:9px;color:#55ccff;letter-spacing:2px;text-transform:uppercase;margin-bottom:6px;font-weight:700}
.curated-hero-title{font-size:14px;font-weight:700;color:#fff;line-height:1.45;margin-bottom:7px;font-family:'Noto Serif SC','Songti SC','STSong',serif}
.curated-hero-excerpt{font-size:10px;color:rgba(255,255,255,.72);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:8px}
.curated-hero-foot{display:flex;align-items:center;gap:8px}
.curated-hero-rt{font-size:9px;color:rgba(255,255,255,.5)}

/* 紧凑列表行 v2（覆盖旧版保持兼容） */
.curated-row-v2{display:flex;align-items:flex-start;gap:7px;padding:7px 6px;border-bottom:1px solid #f1f5f9;cursor:pointer;border-radius:4px;transition:background .12s}
.curated-row-v2:hover{background:#f0f7ff}
.curated-row-v2 .curated-meta-col{flex:1;min-width:0}
.curated-row-num{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;border-radius:50%;background:#e2e8f0;color:#475569;font-size:9px;font-weight:700;flex-shrink:0;margin-top:1px}
.curated-row-title{font-size:11px;font-weight:600;color:#1e293b;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.curated-row-excerpt{font-size:9px;color:#64748b;margin-top:2px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.curated-row-rt{font-size:8px;color:#94a3b8;margin-top:2px}

/* 全文页 v2 */
.curated-art-wrap{max-width:620px;margin:0 auto;padding:4px 2px}
.curated-art-category{display:inline-block;margin-bottom:8px}
.curated-art-title-serif{font-family:'Noto Serif SC','Songti SC','STSong',serif;font-size:17px;font-weight:700;color:#0f172a;line-height:1.5;margin-bottom:8px}
.curated-art-meta-v2{font-size:9px;color:#94a3b8;margin-bottom:12px;padding-bottom:10px;border-bottom:2px solid #e2e8f0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 正文 */
.curated-art-body-v2{font-size:13px;line-height:1.9;color:#1e293b}
.curated-art-body-v2 p{margin-bottom:.85em}
.curated-art-body-v2 .art-lead{font-size:14.5px;color:#475569;line-height:1.8;margin-bottom:1em;font-weight:400}
/* 小标题：左侧主题色竖线 */
.curated-art-body-v2 .art-subh{font-weight:700;margin-top:1.2em;margin-bottom:.4em;color:#0f172a;border-left:3px solid var(--accent,#0077cc);padding-left:8px;line-height:1.4}
/* 翻页导航 */
.curated-art-nav{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:12px;border-top:1px solid #e2e8f0;gap:8px}
.curated-nav-btn{font-size:10px;padding:5px 10px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;color:#0369a1;cursor:pointer;font-family:inherit;transition:.12s;white-space:nowrap;max-width:46%;overflow:hidden;text-overflow:ellipsis}
.curated-nav-btn:hover{background:#e0f2fe;border-color:var(--accent)}
/* 内参文章 PDF/邮件 操作条 + 邮件弹窗（②）*/
.curated-art-actions{position:sticky;top:0;z-index:5;display:flex;justify-content:flex-end;gap:8px;margin:-10px -2px 12px;padding:10px 2px;background:var(--P);border-bottom:1px solid #e2e8f0}
.art-email-mask{position:fixed;inset:0;z-index:900;background:rgba(15,25,35,.45);display:flex;align-items:center;justify-content:center;animation:fadein .15s}
.art-email-dlg{background:var(--P);border-radius:14px;padding:22px;width:360px;max-width:90vw;box-shadow:0 12px 40px rgba(0,0,0,.3)}
.art-email-title{font-size:15px;font-weight:700;color:var(--pt);margin-bottom:4px}
.art-email-sub{font-size:11px;color:var(--pt3);margin-bottom:14px;line-height:1.5;max-height:40px;overflow:hidden}
.art-email-in{width:100%;box-sizing:border-box;border:1px solid #e5e7eb;border-radius:8px;padding:9px 12px;font-size:13px;font-family:inherit;outline:none;margin-bottom:16px}
.art-email-in:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(0,180,216,.15)}
.art-email-acts{display:flex;justify-content:flex-end;gap:8px}
.curated-nav-spacer{flex:1}

/* 金库卡 */
.vrole{font-size:10px;color:#475569;margin-bottom:8px}
.vb{font-size:10px;padding:3px 8px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;margin-left:4px}
.vb.on{background:#fef9c3;border-color:#a16207;color:#a16207;font-weight:700}
.vnote{font-size:9px;color:#a16207;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:6px 8px;margin-bottom:6px}
.vi{width:100%;border:1px solid #e5e7eb;border-radius:6px;padding:6px;font-size:11px;margin-bottom:5px;font-family:inherit}
.vrec{padding:6px;border-bottom:1px solid #f1f5f9;font-size:10px}.vrec span{color:#64748b}
.vsw{display:flex;align-items:center;gap:6px;font-size:10px;color:#475569}
.krc-deny{color:#b91c1c;font-size:11px;padding:8px;background:#fee2e2;border-radius:6px;margin-top:6px}
.krc-ok{color:#15803d;font-size:11px;padding:8px;background:#dcfce7;border-radius:6px;margin-top:6px}

/* AI 卡 */
.ai-msgs{flex:1;min-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-bottom:6px}
/* AI 多对话 tab 条（⑥）*/
.ai-tabs{display:flex;align-items:center;gap:3px;padding:3px 0 5px;border-bottom:1px solid #eef1f4;margin-bottom:6px;position:relative}
.ai-tabs-scroll{display:flex;gap:3px;overflow-x:auto;flex:1;scrollbar-width:none}
.ai-tabs-scroll::-webkit-scrollbar{display:none}
.ai-tab{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:10px 10px 0 0;background:var(--panel);border:1px solid var(--pb);border-bottom:none;color:var(--text2);font-size:10px;cursor:pointer;white-space:nowrap;max-width:120px}
.ai-tab.on{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);font-weight:600}
.ai-tab .ai-tab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:88px}
.ai-tab .ai-tab-x{font-size:9px;color:var(--pt3);border:none;background:none;cursor:pointer;padding:0 1px;line-height:1}
.ai-tab .ai-tab-x:hover{color:var(--red)}
.ai-tab-add,.ai-tab-menu{flex-shrink:0;width:22px;height:22px;border-radius:6px;border:1px solid var(--pb);background:var(--panel);color:var(--text2);cursor:pointer;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.ai-tab-add:hover,.ai-tab-menu:hover{border-color:var(--accent);color:var(--accent)}
.ai-hist-menu{position:absolute;top:26px;right:0;z-index:50;background:var(--P);border:1px solid var(--pb);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.18);min-width:180px;max-height:260px;overflow-y:auto;padding:4px}
.ai-hist-item{padding:6px 9px;font-size:11px;color:var(--pt);cursor:pointer;border-radius:5px;display:flex;justify-content:space-between;gap:6px}
.ai-hist-item:hover{background:var(--pbg)}
.ai-hist-item.on{color:var(--accent);font-weight:600}
.ai-hist-empty{padding:8px 9px;font-size:10px;color:var(--pt3);text-align:center}
.ai-welcome{font-size:11px;color:var(--pt3);text-align:center;padding:16px 8px}
.ai-msg{max-width:88%;padding:7px 10px;border-radius:10px;font-size:11px;line-height:1.5}
.ai-msg.user{align-self:flex-end;background:#dbeafe;color:#1e3a8a}
.ai-msg.bot{align-self:flex-start;background:var(--pbg);color:var(--pt)}
.ai-text{white-space:pre-wrap}.ai-src{font-size:8px;color:var(--pt3);margin-top:4px}
/* AI 回答操作条：复制 + 多选（⑤）*/
.ai-msg-acts{display:flex;align-items:center;gap:8px;margin-top:6px;opacity:.5;transition:opacity .15s}
.ai-msg.bot:hover .ai-msg-acts,.ai-msg.user:hover .ai-msg-acts{opacity:1}
.ai-msg.user .ai-msg-acts{justify-content:flex-end}
.ai-copy-btn{border:none;background:none;color:var(--pt3);font-size:10px;cursor:pointer;padding:1px 4px;border-radius:4px;font-family:inherit}
.ai-copy-btn:hover{color:var(--accent);background:rgba(0,180,216,.1)}
.ai-pick{width:12px;height:12px;cursor:pointer;accent-color:var(--accent);margin:0}
.ai-pick-lbl{font-size:9px;color:var(--pt3);cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:3px}
.ai-multibar{display:none;align-items:center;gap:8px;padding:5px 8px;margin-top:6px;background:var(--accent-dim);border:1px solid var(--accent);border-radius:8px;font-size:10px;color:var(--accent)}
.ai-multibar.on{display:flex}
.ai-multibar button{border:none;background:var(--accent);color:#fff;font-size:10px;padding:3px 10px;border-radius:12px;cursor:pointer;font-family:inherit}
.ai-multibar button.ghost{background:none;color:var(--pt3);border:1px solid #d7dde3}
.dots{color:var(--pt3)}
.ai-foot{display:flex;gap:6px;margin-top:8px;border-top:1px solid #eef1f4;padding-top:8px}
.ai-in{flex:1;border:1px solid #e5e7eb;border-radius:16px;padding:6px 12px;font-size:11px;font-family:inherit;outline:none}
.ai-send{width:32px;border:none;border-radius:50%;background:var(--accent);color:#fff;cursor:pointer}

/* tooltip + toast */
.tooltip{position:fixed;z-index:600;background:var(--glass);backdrop-filter:blur(12px);border:1px solid var(--pb);border-radius:6px;padding:6px 9px;font-size:10px;color:var(--text);pointer-events:none;display:none;max-width:240px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:700;background:var(--glass);backdrop-filter:blur(12px);border:1px solid var(--accent);color:var(--accent);padding:8px 16px;border-radius:20px;font-size:12px;animation:fadein .2s}
@keyframes fadein{from{opacity:0}to{opacity:1}}

/* AI弹卡从对话框两侧滑出(董事长2026-07-23·依对话框位置决定左滑/右滑) */
@keyframes ai-slide-from-right{from{opacity:0;transform:translateX(80px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes ai-slide-from-left{from{opacity:0;transform:translateX(-80px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
.card.ai-pop-right{animation:ai-slide-from-right .42s cubic-bezier(.22,1,.36,1)}
.card.ai-pop-left{animation:ai-slide-from-left .42s cubic-bezier(.22,1,.36,1)}

/* === v2 排列+交互打磨 === */
.arrangebar{display:flex;gap:4px;margin-left:8px;padding-left:8px;border-left:1px solid var(--pb)}
.abtn{width:30px;height:30px;border-radius:8px;background:var(--panel);border:1px solid var(--pb);color:var(--text2);font-size:13px;cursor:pointer}
.abtn:hover{border-color:var(--accent);color:var(--accent)}
.c-min{width:22px;height:22px;border:none;background:none;color:var(--pt3);cursor:pointer;font-size:11px;border-radius:50%}
.c-min:hover{background:#e0f2fe;color:#0369a1}
.c-resize{position:absolute;right:2px;bottom:2px;width:14px;height:14px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,var(--pt3) 50%,var(--pt3) 60%,transparent 60%,transparent 70%,var(--pt3) 70%,var(--pt3) 80%,transparent 80%);opacity:.5}
.card.mini{display:none}
#dock{position:fixed;left:0;right:0;bottom:0;z-index:450;display:flex;gap:6px;padding:6px 12px;flex-wrap:wrap;pointer-events:none}
.dock-chip{pointer-events:auto;background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--pb);color:var(--text2);font-size:10px;padding:5px 12px;border-radius:14px;cursor:pointer;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dock-chip:hover{border-color:var(--accent);color:var(--accent)}
#links{position:fixed;top:54px;left:0;pointer-events:none;z-index:280}
/* 趋势小图 */
.mb-row{display:flex;align-items:center;gap:6px;margin:3px 0}
.mb-l{font-size:9px;color:#64748b;min-width:48px}
.mb-track{flex:1;height:8px;background:#eef2f7;border-radius:4px;overflow:hidden}
.mb-fill{height:100%;border-radius:4px}
.mb-v{font-size:9px;color:#334155;min-width:24px;text-align:right;font-variant-numeric:tabular-nums}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.chip{font-size:8px;padding:2px 6px;border-radius:8px;background:#eff6ff;color:#1d4ed8}
.mini-note{font-size:8px;color:var(--pt3);margin-top:5px}
.dest-econ{font-size:11px;color:#a16207;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:6px 8px;margin-bottom:6px}
/* CapEx 四维势能 (资本镜头) */
.capex-block{border-left:3px solid #8b5cf6;padding-left:4px}
/* 双镜头：需求×资本 合并为一个紫色区域 */
.dual-lens{border-left:3px solid #8b5cf6;background:rgba(139,92,246,0.045);border-radius:0 8px 8px 0;padding:6px 10px;margin:6px 0}
.dual-lens-hd{font-size:9px;font-weight:700;color:#8b5cf6;letter-spacing:.3px;margin-bottom:3px}
.dual-lens>.sig{background:transparent;margin:0;padding:5px 0}
.dual-lens>.sig+.sig{border-top:1px dashed rgba(139,92,246,0.28);margin-top:2px}
.dual-lens>.capex-block{border-left:none;padding-left:0}
.capex-header{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.capex-score{font-size:13px;font-weight:800;color:#7c3aed;margin-left:auto}
.capex-conf{font-size:9px;padding:1px 5px;border-radius:8px;background:#f3e8ff;color:#6d28d9}
.conf-高{background:#dcfce7;color:#15803d}.conf-中{background:#fef9c3;color:#854d0e}.conf-低{background:#fee2e2;color:#991b1b}
.capex-dims{display:flex;flex-direction:column;gap:3px}
.capex-dim,.capex-dim.na{display:flex;align-items:center;gap:5px}
.capex-dim-n{font-size:9px;color:#64748b;min-width:64px}
.capex-dim-track{flex:1;height:6px;background:#eef2f7;border-radius:3px;overflow:hidden}
.capex-dim-fill{height:100%;border-radius:3px;transition:width .3s}
.capex-dim-v{font-size:9px;color:#334155;min-width:24px;text-align:right;font-variant-numeric:tabular-nums}
.capex-dim.na .capex-dim-v{color:var(--pt3)}
.capex-dim.na .capex-dim-track{opacity:0.3}

/* === v3 地图缩放·中文搜索·归组 === */

/* 地图 cursor */
#map-base svg{cursor:grab}
#map-base svg:active{cursor:grabbing}

/* 卡头色条 */
.card-group-bar{height:3px;width:100%;border-radius:var(--R) var(--R) 0 0;flex-shrink:0}

/* 组操作按钮 */
.c-group{width:22px;height:22px;border:none;background:none;color:var(--pt3);cursor:pointer;font-size:12px;border-radius:50%;flex-shrink:0}
.c-group:hover{background:rgba(0,180,216,.15);color:var(--accent)}

/* 组操作菜单 */
.group-menu{position:fixed;z-index:800;background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--pb);border-radius:10px;padding:8px;min-width:160px;box-shadow:0 8px 32px rgba(0,0,0,.5)}
.gm-title{font-size:10px;color:var(--text2);padding:2px 8px 6px;border-bottom:1px solid var(--pb);margin-bottom:4px;letter-spacing:.4px}
.gm-btn{display:block;width:100%;text-align:left;padding:6px 10px;border:none;background:none;color:var(--text);font-size:11px;font-family:inherit;cursor:pointer;border-radius:6px}
.gm-btn:hover{background:var(--panel)}
.gm-close{color:var(--red)}
.gm-close:hover{background:rgba(239,68,68,.12)}
.gm-cancel{color:var(--text2);margin-top:2px;border-top:1px solid var(--pb);padding-top:8px}

/* 中文搜索下拉 */
.search-dropdown{position:fixed;z-index:800;background:var(--glass);backdrop-filter:blur(20px);border:1px solid var(--pb);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.5);display:none;overflow:hidden;max-height:280px;overflow-y:auto}
.sd-item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:.1s}
.sd-item:hover{background:var(--accent-dim)}
.sd-iata{font-size:12px;font-weight:700;color:var(--accent);min-width:36px;font-family:monospace}
.sd-name{font-size:11px;color:var(--text);flex:1}
.sd-city{font-size:10px;color:var(--text2)}
.sd-empty{padding:12px 16px;font-size:11px;color:var(--text3);text-align:center}
.sd-item-al{background:rgba(0,180,216,.05)}
.sd-iata-al{color:#00b4d8}
.sd-badge{font-size:9px;color:#00b4d8;background:rgba(0,180,216,.12);padding:1px 6px;border-radius:8px;white-space:nowrap}

/* === 完整性清单卡 === */
.cov-stats{display:flex;gap:6px;margin-bottom:4px}
.cov-stat{flex:1;text-align:center;background:var(--pbg);border-radius:6px;padding:7px 4px}
.cov-stat b{font-size:16px;color:#0369a1;display:block}
.cov-stat span{font-size:8px;color:var(--pt3)}
.cov-table{width:100%;border-collapse:collapse;margin-top:4px}
.cov-table th{font-size:9px;color:#475569;font-weight:700;text-align:left;padding:4px 6px;border-bottom:1px solid #eef1f4;letter-spacing:.4px}
.cov-table td{font-size:10px;padding:5px 6px;border-bottom:1px solid #f1f5f9;vertical-align:middle}
.cov-table tr:last-child td{border-bottom:none}
.cov-badge{display:inline-block;font-size:8px;font-weight:700;padding:2px 6px;border-radius:8px;white-space:nowrap}
.cov-badge.full{background:#dcfce7;color:#15803d}
.cov-badge.partial{background:#fef3c7;color:#92400e}
.cov-badge.pending{background:#f1f5f9;color:#64748b}
.cov-badge.none{background:#fee2e2;color:#b91c1c}
.cov-cov{font-size:9px;color:#64748b}
.cov-note{font-size:9px;color:#94a3b8;font-style:italic}
.cov-gaps{margin-top:4px}
.cov-gap-row{display:flex;align-items:center;gap:8px;padding:5px 4px;border-bottom:1px solid #f1f5f9}
.cov-gap-row:last-child{border-bottom:none}
.cov-gap-iata{font-weight:700;min-width:38px;font-size:11px;color:#0369a1}
.cov-gap-by{font-size:9px;color:#64748b;min-width:52px}
.cov-gap-flags{display:flex;gap:4px}
.cov-flag{font-size:8px;padding:2px 5px;border-radius:6px;white-space:nowrap}
.cov-flag.ok{background:#dcfce7;color:#15803d}
.cov-flag.miss{background:#fee2e2;color:#b91c1c}

/* === 数据地盘总览（完整性清单卡顶部摘要） === */
.ds-overview{background:var(--pbg);border-radius:8px;padding:10px 12px;margin-bottom:8px;border:1px solid #e2e8f0}
.ds-headline{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.ds-big-num{font-size:28px;font-weight:800;color:#0369a1;line-height:1}
.ds-big-label{font-size:10px;color:var(--pt3);line-height:1.2}
.ds-divider{width:1px;height:28px;background:#e2e8f0;flex-shrink:0}
.ds-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
.ds-chip{font-size:8px;padding:2px 7px;border-radius:10px;background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;white-space:nowrap}
.ds-status-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ds-status-summary{font-size:10px;font-weight:700;color:#0369a1;white-space:nowrap}
.ds-status-badges{display:flex;gap:4px;flex-wrap:wrap}
.ds-sbadge{font-size:8px;font-weight:700;padding:2px 7px;border-radius:8px;white-space:nowrap}
.ds-sbadge.full{background:#dcfce7;color:#15803d}
.ds-sbadge.partial{background:#fef3c7;color:#92400e}
.ds-sbadge.pending{background:#f1f5f9;color:#64748b}
.ds-sbadge.none{background:#fee2e2;color:#b91c1c}

/* === M3 扫描器/对比/潜力榜卡 === */
.scan-tabs{display:flex;gap:4px;margin-bottom:8px;border-bottom:1px solid var(--pb);padding-bottom:6px}
.scan-tab{font-size:10px;padding:4px 10px;border:1px solid var(--pb);border-radius:10px;background:var(--pbg);color:var(--text2);cursor:pointer;font-family:inherit;transition:.1s}
.scan-tab:hover{border-color:var(--accent);color:var(--accent)}
.scan-tab.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
/* 机场范围筛选行 — scan card & ranking card */
.scan-scope-row{display:flex;align-items:center;gap:6px;margin-bottom:8px;padding:5px 8px;background:var(--pbg);border:1px solid #e5e7eb;border-radius:6px}
.scan-scope-lbl{font-size:10px;color:#475569;font-weight:600;white-space:nowrap;flex-shrink:0}
.scan-scope-input{flex:1;min-width:0;background:#fff;border:1px solid #d1d5db;border-radius:5px;color:var(--pt);font-size:11px;font-family:inherit;padding:3px 8px;outline:none;transition:.15s;text-transform:uppercase}
.scan-scope-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(0,180,216,.15)}
.scan-scope-input::placeholder{color:var(--pt3);text-transform:none;font-size:10px}
.scan-scope-btn{flex-shrink:0;font-size:10px;padding:4px 10px;border:1px solid #dbeafe;border-radius:6px;background:#f0f7ff;color:#0369a1;cursor:pointer;font-family:inherit;font-weight:600;transition:.1s;white-space:nowrap}
.scan-scope-btn:hover{background:#dbeafe;border-color:var(--accent);color:var(--accent)}
.scan-tbl{width:100%;border-collapse:collapse;font-size:10px}
.scan-tbl th{font-size:9px;color:#475569;font-weight:700;text-align:left;padding:4px 5px;border-bottom:1px solid #eef1f4;white-space:nowrap}
.scan-tbl td{padding:5px 5px;border-bottom:1px solid #f1f5f9;vertical-align:middle}
.scan-tbl tr:last-child td{border-bottom:none}
.scan-tbl tr:hover td{background:#f8fafc}
.scan-tbl tr.drill-row{cursor:pointer}.scan-tbl tr.drill-row:hover td{background:#e8f4fd;color:var(--text)}
.scan-meta{font-size:9px;color:#94a3b8;margin-bottom:6px}
.densify-tier{font-size:9px;padding:1px 6px;border-radius:8px;white-space:nowrap;font-weight:600}
.densify-tier-strong{background:#dbeafe;color:#1d4ed8}
.densify-tier-normal{background:#f1f5f9;color:#64748b}
.btn-send-assess{font-size:9px;padding:1px 7px;border:1px solid #3b82f6;border-radius:8px;background:#eff6ff;color:#2563eb;cursor:pointer;font-family:inherit;white-space:nowrap;transition:.1s}
.btn-send-assess:hover{background:#2563eb;color:#fff}
.wz-iata-in{width:40px;font-size:10px;padding:1px 4px;border:1px solid #cbd5e1;border-radius:4px;font-family:inherit;text-align:center;text-transform:uppercase;transition:.15s}
.wz-iata-in:focus{border-color:var(--accent);outline:none}
.scan-note{font-size:9px;color:#a16207;background:#fffbeb;border:1px solid #fde68a;border-radius:5px;padding:5px 8px;margin-top:8px}
.cmp-lbl{font-size:9px;color:#64748b;font-weight:600;white-space:nowrap;min-width:70px}
.cmp-th-drill{cursor:pointer;color:var(--accent);text-decoration:underline dotted;transition:.1s}.cmp-th-drill:hover{color:var(--accent);opacity:.75}
.cmp-section td{font-size:9px;color:#94a3b8;font-weight:700;text-transform:none;background:rgba(0,0,0,.18);letter-spacing:.03em;padding:3px 5px;border-bottom:none}
.cmp-best{color:#22c55e;font-weight:700}
.tbl-export-row{display:flex;justify-content:flex-end;margin-top:5px}
.btn-export{font-size:9px;padding:2px 9px;border:1px solid var(--pb);border-radius:8px;background:var(--pbg);color:var(--text2);cursor:pointer;font-family:inherit;transition:.1s}
.btn-export:hover{border-color:var(--accent);color:var(--accent)}
/* ── 模型工作台 ── */
.wb-layout{display:flex;gap:0;height:100%;min-height:320px}
.wb-left{width:180px;min-width:150px;border-right:1px solid var(--pb);overflow-y:auto;padding-right:6px;flex-shrink:0}
.wb-right{flex:1;overflow-y:auto;padding-left:10px}
.wb-placeholder{color:var(--pt3);font-size:11px;padding:20px 0;text-align:center}
.wb-model-row{display:flex;align-items:center;gap:5px;padding:5px 6px;border-radius:5px;cursor:pointer;font-size:10px;transition:.1s}
.wb-model-row:hover{background:var(--accent-dim)}
.wb-model-row.on{background:var(--accent-dim);border-left:2px solid var(--accent);padding-left:4px}
.wb-mid{flex:1;font-weight:600;color:var(--text2);font-family:monospace;font-size:9px}
.wb-mver{font-size:8px;color:#94a3b8}
.wb-mkind{font-size:7px;font-weight:700;padding:1px 5px;border-radius:6px;white-space:nowrap}
.wb-kind-formula{background:#dbeafe;color:#1d4ed8}
.wb-kind-bands{background:#fce7f3;color:#be185d}
.wb-kind-rules{background:#d1fae5;color:#065f46}
.wb-kind-params{background:#fef3c7;color:#92400e}
.wb-detail-header{display:flex;align-items:center;gap:6px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--pb)}
.wb-did{font-size:14px;font-weight:700;color:var(--accent);font-family:monospace}
.wb-params-tbl{width:100%;border-collapse:collapse;font-size:10px;margin-bottom:8px}
.wb-params-tbl th{font-size:9px;color:#475569;font-weight:700;text-align:left;padding:4px 5px;border-bottom:1px solid #eef1f4}
.wb-params-tbl td{padding:4px 5px;border-bottom:1px solid #f1f5f9;vertical-align:middle}
.wb-pk{color:#64748b;font-family:monospace;white-space:nowrap}
.wb-val-input,.wb-band-max,.wb-band-score,.wb-band-label,.wb-rule-when{background:var(--pbg);border:1px solid var(--pb);border-radius:4px;color:var(--text2);font-size:10px;padding:3px 6px;font-family:inherit;width:100%;box-sizing:border-box}
.wb-val-input:focus,.wb-band-max:focus,.wb-band-score:focus,.wb-band-label:focus,.wb-rule-when:focus{outline:none;border-color:var(--accent)}
.wb-rule-then{background:var(--pbg);border:1px solid var(--pb);border-radius:4px;color:var(--text2);font-size:9px;padding:3px 6px;font-family:monospace;box-sizing:border-box;width:100%}
.wb-rule-then:focus{outline:none;border-color:var(--accent)}
.wb-var{background:#f1f5f9;color:#0369a1;font-size:9px;padding:1px 4px;border-radius:3px;font-family:monospace}
.wb-actions{display:flex;gap:6px;margin:10px 0 8px;padding-bottom:8px;border-bottom:1px solid var(--pb)}
.wb-note{font-size:9px;color:#94a3b8;margin:4px 0;font-style:italic}
.wb-desc{background:linear-gradient(135deg,#1e293b,#0f172a);border-left:3px solid var(--accent);border-radius:6px;padding:8px 12px;font-size:11px;color:#cbd5e1;line-height:1.6;margin-bottom:10px}
.wb-param-hint{font-size:9px;color:#64748b;line-height:1.5;margin-top:2px;font-style:italic;max-width:320px}
.wb-param-hints-block{background:#0f172a;border-radius:5px;padding:6px 10px;margin:4px 0 8px;display:flex;flex-direction:column;gap:3px}
.wb-json-pre{background:var(--pbg);border:1px solid var(--pb);border-radius:5px;padding:8px;font-size:9px;font-family:monospace;overflow-x:auto;white-space:pre-wrap;word-break:break-all;color:var(--text2);margin:6px 0;max-height:160px;overflow-y:auto}
.wb-codesign-row{display:flex;gap:6px;align-items:center;margin:4px 0 8px}
.wb-intent-input{flex:1;background:var(--pbg);border:1px solid var(--pb);border-radius:6px;color:var(--text2);font-size:10px;padding:5px 10px;font-family:inherit}
.wb-intent-input:focus{outline:none;border-color:var(--accent)}

/* === M5 右键菜单 === */
#ctxmenu{position:fixed;z-index:900;background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--pb);border-radius:10px;padding:6px;min-width:150px;box-shadow:0 8px 32px rgba(0,0,0,.55);display:none}
#ctxmenu.visible{display:block}
.ctx-title{font-size:9px;color:var(--text3);padding:2px 8px 5px;border-bottom:1px solid var(--pb);margin-bottom:3px;letter-spacing:.4px}
.ctx-btn{display:block;width:100%;text-align:left;padding:6px 10px;border:none;background:none;color:var(--text);font-size:11px;font-family:inherit;cursor:pointer;border-radius:6px;white-space:nowrap}
.ctx-btn:hover{background:var(--accent-dim);color:var(--accent)}
.ctx-sep{height:1px;background:var(--pb);margin:3px 4px}

/* === M5 工作区保存/恢复 === */
.wsbtn{height:30px;padding:0 10px;border-radius:8px;background:var(--panel);border:1px solid var(--pb);color:var(--text2);font-size:11px;font-family:inherit;cursor:pointer;white-space:nowrap}
.wsbtn:hover{border-color:var(--accent);color:var(--accent)}

/* === M5 联动色组升级 === */
.card-group-bar{cursor:pointer;transition:height .15s}
.card[data-group].group-hl .card-group-bar{height:5px;box-shadow:0 0 6px currentColor}
.card-group-bar.pinned{height:5px;outline:2px solid currentColor;outline-offset:-1px}
.group-pin-label{font-size:8px;font-weight:700;padding:1px 5px;border-radius:0 0 4px 0;position:absolute;top:0;left:0;opacity:.85;pointer-events:none;color:#fff}

/* —— 登录门（客户试用版）—— */
.login-gate{position:fixed;inset:0;z-index:9999;background:radial-gradient(circle at 50% 35%,#0f1923,#070c12);display:flex;align-items:center;justify-content:center}
.login-card{width:320px;background:var(--P);border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 20px 70px rgba(0,0,0,.5);padding:34px 30px 26px;text-align:center}
.login-logo{font-size:24px;font-weight:700;letter-spacing:3px;color:var(--pt)}
.login-logo span{font-size:11px;font-weight:300;letter-spacing:2px;color:var(--pt3);margin-left:4px}
.login-tag{font-size:11px;color:var(--pt3);margin:6px 0 22px}
.login-in{width:100%;height:40px;padding:0 13px;margin-bottom:11px;border:1px solid #dbe2ea;border-radius:8px;font-size:13px;font-family:inherit;color:var(--pt);outline:none;transition:border-color .14s}
.login-in:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,180,216,.12)}
.login-err{min-height:16px;font-size:11px;color:#dc2626;margin-bottom:4px}
.login-btn{width:100%;height:40px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;letter-spacing:4px;cursor:pointer;font-family:inherit;transition:background .14s,box-shadow .14s}
.login-btn:hover{background:#0098bb;box-shadow:0 4px 16px rgba(0,180,216,.35)}
.login-hint{font-size:10px;color:var(--pt3);margin-top:16px;letter-spacing:.5px}

/* —— 客户需求：所有数据块可选中/复制（覆盖全局 user-select:none）—— */
.c-body, .c-body *{user-select:text}
.ai-msgs, .ai-msgs *{user-select:text}
input, textarea, .ai-in{user-select:text}
/* UI chrome 保持不可选(拖拽/点击不误选) */
button, .qbtn, .abtn, .wsbtn, .cab, .c-head, .c-title, .c-icon, .legend, .topbar > .logo{user-select:none}

/* === 骨架屏占位（shimmer 动画） === */
@keyframes skeleton-shimmer{
  0%{background-position:-400px 0}
  100%{background-position:400px 0}
}
.skeleton{
  display:inline-block;
  border-radius:4px;
  background:linear-gradient(90deg,#e8ecf0 25%,#f4f6f8 50%,#e8ecf0 75%);
  background-size:800px 100%;
  animation:skeleton-shimmer 1.4s ease-in-out infinite;
  color:transparent!important;
  pointer-events:none;
}
.skeleton-block{
  display:block;
  width:100%;
  height:14px;
  margin:3px 0;
  border-radius:4px;
  background:linear-gradient(90deg,#e8ecf0 25%,#f4f6f8 50%,#e8ecf0 75%);
  background-size:800px 100%;
  animation:skeleton-shimmer 1.4s ease-in-out infinite;
}
/* AI 顾问示例问题 */
.ai-examples{display:flex;flex-direction:column;gap:5px;margin:8px 0 4px;padding:0 4px}
.ai-example{font-size:10px;color:#0369a1;background:#f0f7ff;border:1px solid #dbeafe;border-radius:14px;padding:5px 10px;cursor:pointer;text-align:left;font-family:inherit;transition:background .12s,border-color .12s}
.ai-example:hover{background:#dbeafe;border-color:var(--accent)}
/* AI 顾问来源区块 */
.ai-sources-block{margin-top:6px;padding:5px 8px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;font-size:9px;color:#0369a1}
.ai-sources-block .ai-src-title{font-weight:700;margin-bottom:2px;font-size:10px}
/* AI 顾问·思考过程可视化（董事长 2026-07-14·让客户感知顾问在按专业方法思考·字号偏小更克制） */
.ai-think-head{font-size:10px;line-height:1.5;color:#0369a1;background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:7px 9px;margin-bottom:7px}
.ai-think-step{display:flex;align-items:center;gap:6px;font-size:10.5px;color:#64748b;padding:1px 2px;letter-spacing:.2px}
.ai-think-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none;animation:aiPulse 1.1s ease-in-out infinite}
@keyframes aiPulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
/* 第二部分·方案推演分段卡（醒目·不易被忽略） */
.ai-solve-card{margin:10px 0 4px;padding:8px 10px;background:linear-gradient(90deg,#eff6ff,#f0fdf4);border:1px solid #bfdbfe;border-left:3px solid var(--accent);border-radius:8px}
.ai-solve-card .ai-think-head{background:transparent;border:none;padding:0 0 3px;font-weight:700;color:#0f766e;font-size:10.5px}
/* 诊断段/方案段分隔条 */
.ai-seg-divider{display:flex;align-items:center;text-align:center;margin:14px 0 10px;color:var(--accent);font-weight:700;font-size:11.5px}
.ai-seg-divider::before,.ai-seg-divider::after{content:"";flex:1;height:1px;background:#bfdbfe}
.ai-seg-divider span{padding:0 10px}
/* 用量与价值卡 */
.utable{width:100%;border-collapse:collapse;font-size:10px;margin-top:6px}
.utable th{text-align:left;color:var(--text3);font-weight:600;padding:3px 6px;border-bottom:1px solid var(--line,#e2e8f0)}
.utable td{padding:3px 6px;border-bottom:1px solid var(--line,#eef2f7)}
.utable tbody tr:hover{background:#f1f5f9}

/* === 评估台三步向导 === */
/* 进度条 */
.wz-progress{display:flex;align-items:center;gap:0;margin-bottom:14px;padding:8px 0 10px;border-bottom:1px solid #e2e8f0}
.wz-step{display:flex;align-items:center;gap:5px;font-size:10px;color:#94a3b8;font-weight:600;padding:4px 8px;border-radius:6px;cursor:default}
.wz-step.active{color:#0369a1;background:#e0f2fe}
.wz-step.done{color:#15803d;background:#dcfce7}
.wz-sep{font-size:10px;color:#cbd5e1;padding:0 2px}
/* 导入区 */
.wz-import-hint{font-size:10px;color:#64748b;margin-bottom:6px;line-height:1.5}
.wz-upload-row{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.wz-file-btn{font-size:10px;padding:4px 10px;border:1px dashed #cbd5e1;border-radius:6px;background:#f8fafc;color:#475569;cursor:pointer;font-family:inherit}
.wz-file-btn:hover{border-color:var(--accent);color:var(--accent)}
/* 校验表格 */
.wz-vtable{width:100%;border-collapse:collapse;font-size:11px;margin-top:8px}
.wz-vtable th{text-align:left;color:#475569;font-weight:700;padding:4px 6px;border-bottom:2px solid #e2e8f0;background:#f8fafc;font-size:9px;text-transform:uppercase;letter-spacing:.5px}
.wz-vtable td{padding:5px 6px;border-bottom:1px solid #f1f5f9;vertical-align:top}
.wz-vtable tr.row-error{background:#fef2f2}
.wz-vtable tr.row-warn{background:#fffbeb}
.wz-vtable tr.row-ok{background:#fff}
.wz-err-msg{font-size:9px;color:#dc2626;margin-top:2px;line-height:1.4}
.wz-warn-msg{font-size:9px;color:#b45309;margin-top:2px;line-height:1.4}
.wz-sel{font-size:11px;padding:3px 6px;border:1px solid #e2e8f0;border-radius:5px;background:#fff;font-family:inherit;color:var(--pt)}
.wz-num{width:60px;font-size:11px;padding:3px 6px;border:1px solid #e2e8f0;border-radius:5px;font-family:inherit;color:var(--pt)}
.wz-del-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:13px;padding:2px 5px;border-radius:4px;line-height:1}
.wz-del-btn:hover{background:#fee2e2;color:#dc2626}
/* 步骤操作区 */
.wz-actions{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding-top:10px;border-top:1px solid #f1f5f9;gap:8px}
/* 评估块 */
.wz-eval-block{border:1px solid #e2e8f0;border-radius:8px;padding:0;margin-bottom:10px;overflow:hidden;background:#fff}
.wz-eval-head{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-wrap:wrap}
.wz-eval-od{font-size:13px;font-weight:700;color:#0f172a}
.wz-eval-action{font-size:10px;padding:2px 7px;border-radius:8px;background:#ede9fe;color:#6d28d9;font-weight:600}
.wz-eval-fpw{font-size:10px;color:#475569}
.wz-adjusted-badge{font-size:8px;padding:1px 5px;border-radius:8px;background:#fef9c3;color:#92400e;font-weight:700;border:1px solid #fde68a}
/* 行情行：中性前提事实，小字静音显示在双栏上方 */
.wz-facts-row{display:flex;flex-wrap:wrap;gap:8px 16px;padding:5px 12px 4px;background:#f8fafc;border-bottom:1px solid #f1f5f9}
.wz-fact-item{display:flex;gap:4px;align-items:baseline}
.wz-fact-label{font-size:9px;color:#94a3b8;font-weight:600}
.wz-fact-value{font-size:9px;color:#64748b}
.wz-eval-body{display:grid;grid-template-columns:1fr 1fr;gap:0;padding:0}
.wz-col{padding:10px 12px;min-width:0}
.wz-col-support{border-right:1px solid #f1f5f9;background:#f0fdf4}
.wz-col-risk{background:#fffbeb}
.wz-col-title{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-bottom:7px}
.wz-col-support .wz-col-title{color:#15803d}
.wz-col-risk .wz-col-title{color:#b45309}
.wz-item{margin-bottom:7px;line-height:1.4}
.wz-item-label{font-size:10px;font-weight:700;color:#1e293b}
.wz-item-value{font-size:11px;color:#0f172a;margin-top:1px}
.wz-item-note{font-size:9px;color:#94a3b8;margin-top:1px;line-height:1.4}
.wz-empty-col{font-size:10px;color:#94a3b8;padding:8px 0}
/* 判定徽章区 */
.wz-verdict-row{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:6px 12px;border-top:1px solid #f1f5f9;background:#fff;flex-wrap:wrap}
.wz-verdict-chip{font-size:9px;font-weight:700;padding:2px 8px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:3px}
.wz-verdict-chip.tier-support{background:#dcfce7;color:#15803d}
.wz-verdict-chip.tier-caution{background:#fef9c3;color:#92400e}
.wz-verdict-chip.tier-watch{background:#fef3c7;color:#b45309}
.wz-verdict-chip.tier-against{background:#fee2e2;color:#dc2626}
.wz-ref-badge{font-size:8px;color:#94a3b8;border:1px solid #e2e8f0;padding:1px 5px;border-radius:6px}
.wz-reasons{font-size:9px;color:#475569;line-height:1.5;padding:6px 12px 8px;border-top:1px dotted #e2e8f0;background:#fafafa;display:none}
.wz-reasons.open{display:block}
/* 机会对照行 */
.wz-opp-row{font-size:10px;padding:6px 12px 8px;border-top:1px solid #f1f5f9;background:#fff;color:#0369a1;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.wz-opp-matched{color:#15803d;font-weight:600}
/* AI 点评 */
.wz-ai-row{padding:6px 12px 8px;border-top:1px solid #f1f5f9;background:#fff}
.wz-ai-btn{font-size:9px;padding:3px 9px;border:1px solid #bae6fd;border-radius:6px;background:#f0f9ff;color:#0369a1;cursor:pointer;font-family:inherit}
.wz-ai-btn:hover{background:#e0f2fe}
.wz-ai-reply{font-size:11px;color:#1e293b;line-height:1.65;margin-top:6px;padding:8px 10px;background:#f8fafc;border-radius:6px;border:1px solid #e2e8f0}
/* 汇总步骤 */
.wz-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.wz-sum-tile{text-align:center;padding:10px 6px;border-radius:8px;border:1px solid #e2e8f0}
.wz-sum-tile.ts{background:#dcfce7;border-color:#bbf7d0}
.wz-sum-tile.tc{background:#fef9c3;border-color:#fde68a}
.wz-sum-tile.tw{background:#fef3c7;border-color:#fed7aa}
.wz-sum-tile.ta{background:#fee2e2;border-color:#fecaca}
.wz-sum-num{font-size:20px;font-weight:800;line-height:1.1}
.wz-sum-tile.ts .wz-sum-num{color:#15803d}
.wz-sum-tile.tc .wz-sum-num{color:#92400e}
.wz-sum-tile.tw .wz-sum-num{color:#b45309}
.wz-sum-tile.ta .wz-sum-num{color:#dc2626}
.wz-sum-label{font-size:9px;color:#475569;font-weight:600;margin-top:3px}
.wz-risk-list{margin-bottom:12px}
.wz-risk-list h4{font-size:10px;font-weight:700;color:#b45309;margin-bottom:6px}
.wz-risk-row{font-size:10px;padding:5px 8px;border-bottom:1px solid #f1f5f9;display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap}
.wz-risk-row.r-top{background:#fff1f0;font-weight:600}
.wz-export-zone{padding:10px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-top:12px}
.wz-export-title{font-size:10px;font-weight:700;color:#1e293b;margin-bottom:8px}
.wz-ver-radios{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.wz-ver-radio{display:flex;align-items:flex-start;gap:7px;cursor:pointer;font-size:10px;color:#1e293b}
.wz-ver-radio input{margin-top:2px;cursor:pointer;accent-color:var(--accent)}
.wz-ver-desc{font-size:9px;color:#64748b;margin-top:1px;line-height:1.4}
/* 行内可编辑头部 */
.wz-edit-row{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#f1f5f9;border-bottom:1px solid #e2e8f0;flex-wrap:wrap}
.wz-orig-hint{font-size:8px;color:#94a3b8;cursor:help;border-bottom:1px dashed #cbd5e1}

/* 常驻景气仪表盘（页面左上角·浮动·始终在） */
.gauge { position:fixed; top:60px; bottom:12px; left:14px; width:310px; z-index:60; padding:11px 13px; border:0.5px solid #2a3c4f; border-radius:13px; background:rgba(12,20,29,0.97); box-shadow:0 4px 22px rgba(0,0,0,0.5); overflow-y:auto; display:flex; flex-direction:column; gap:11px; }
/* 超级入口区三块分隔(董事长2026-07-19·全高常驻·动态独家一级入口) */
.se-block { border-bottom:0.5px solid #2a3c4f; padding-bottom:10px; }
.se-block:last-child { border-bottom:none; padding-bottom:0; }
.se-block-hd { display:flex; align-items:center; gap:6px; font-size:11px; font-weight:600; color:#dce6ef; margin-bottom:8px; }
.se-flip { margin-left:auto; display:flex; gap:2px; }
.se-flip button { font-size:9px; padding:2px 8px; border-radius:5px; border:0.5px solid #2a3c4f; background:transparent; color:#8497a8; cursor:pointer; }
.se-flip button.on { background:var(--accent-dim,rgba(0,180,216,0.15)); border-color:var(--accent); color:var(--accent); }
.se-edge { font-size:9px; color:#67788a; margin-bottom:6px; font-style:italic; }
.se-tags { display:flex; flex-wrap:wrap; gap:8px; font-size:9px; margin-bottom:7px; }
.se-tag { color:#8497a8; }
.se-row { display:flex; align-items:center; gap:7px; padding:5px 4px; font-size:10px; cursor:pointer; border-radius:6px; transition:background .12s; }
.se-row:hover { background:rgba(255,255,255,0.05); }
.se-row-nm { color:#c4d2e0; font-weight:500; min-width:66px; letter-spacing:.2px; }
.se-badge { font-size:7.5px; padding:0 3px; margin-left:4px; border-radius:2px; font-weight:600; vertical-align:middle; }
.se-badge-warn { color:#fcd34d; background:rgba(180,83,9,.28); }
.se-badge-div { color:#d8b4fe; background:rgba(124,58,237,.28); }
.se-row-v { color:#94a5b6; flex:1; font-size:10px; }
.se-row-mom { color:#8497a8; font-family:var(--font-mono,monospace); margin-left:auto; font-size:9px; white-space:nowrap; letter-spacing:-.2px; }
.se-subrow { font-size:8.5px; color:var(--accent); padding:0 3px 4px 25px; opacity:.9; }
.se-foot { font-size:8px; color:#5d6e80; margin-top:8px; line-height:1.55; }
.se-expand { font-size:9.5px; color:var(--accent); margin-top:9px; cursor:pointer; padding:3px 0; }
.se-expand:hover { text-decoration:underline; }
/* ①全网结构摘要行(融入航线态势·董事长2026-07-19) */
.se-netstruct-in { display:flex; align-items:center; gap:6px; margin-top:8px; padding:6px 7px; background:rgba(255,255,255,0.03); border-radius:6px; font-size:9.5px; cursor:pointer; }
.se-netstruct-in:hover { background:rgba(255,255,255,0.06); }
.se-ns-k { color:#8497a8; font-weight:600; flex-shrink:0; }
.se-ns-v { color:#a8b6c4; flex:1; letter-spacing:.1px; }
.se-ns-more { color:var(--accent); margin-left:auto; }
/* 景气大盘战略速览带(董事长2026-07-19·景气升战略视角·白底) */
.bd-strat { background:#f8fafc; border:1px solid #e8eef4; border-radius:8px; padding:8px 10px; margin:2px 0 9px; }
.bd-strat-hd { font-size:11px; font-weight:700; color:#334155; margin-bottom:5px; }
.bd-strat-row { font-size:11px; color:#475569; line-height:1.9; }
.bd-strat-seg { cursor:pointer; }
.bd-strat-seg:hover { text-decoration:underline; }
.bd-strat-seg b { color:#1e293b; }
/* 航线态势大盘·全网结构折叠区(董事长2026-07-19·感知台搬迁) */
.adsb-netstruct-wrap { border-top:0.5px solid var(--pb,#e2e8f0); margin-top:4px; }
.adsb-netstruct-hd:hover { color:var(--accent); }
.gauge-in { cursor:pointer; line-height:1.3; }
.gauge-hd { font-size:11px; color:var(--text3); white-space:nowrap; display:flex; align-items:center; gap:4px; }
.gauge-hd b { color:#dce6ef; font-weight:600; font-size:12px; }
.gauge-sel { font-size:10px; background:transparent; color:var(--accent); border:0.5px solid var(--text3); border-radius:4px; padding:1px 3px; cursor:pointer; margin-left:auto; }
/* 活针脉冲——单月"活"的视觉表达（座舱活动指针）。径向 ping，1.9s 一次。*/
@keyframes gpng { 0% { transform:scale(1); opacity:0.5; } 80%,100% { transform:scale(2.4); opacity:0; } }
.gpng { transform-box:fill-box; transform-origin:center; animation:gpng 1.9s ease-out infinite; }
@media (prefers-reduced-motion:reduce) { .gpng { animation:none; opacity:0.35; } }

/* ───────── 航线实测运力面板（ADS-B 信号层·白底·融入卡片体系）───────── */
.adsb-block { margin:8px 0; padding:8px 9px; border-radius:6px; background:var(--pbg); border-left:3px solid #059669; font-size:11px; line-height:1.5; color:#334155; }
.adsb-hd { display:flex; align-items:center; gap:6px; margin-bottom:7px; }
.adsb-dot { width:6px; height:6px; border-radius:50%; background:#059669; box-shadow:0 0 5px rgba(5,150,105,.6); animation:adsb-pulse 2s infinite; }
@keyframes adsb-pulse { 0%,100%{opacity:1} 50%{opacity:.35} }
@media (prefers-reduced-motion:reduce) { .adsb-dot { animation:none; } }
.adsb-title { font-weight:700; font-size:11px; color:#334155; }
.adsb-live { margin-left:auto; font-size:8px; color:#059669; border:.5px solid #6ee7b7; background:#ecfdf5; border-radius:4px; padding:1px 4px; letter-spacing:.3px; }
.adsb-stats { display:flex; gap:5px; margin-bottom:7px; }
.adsb-stat { flex:1; text-align:center; padding:5px 2px; background:#fff; border:1px solid #e5e7eb; border-radius:6px; }
.adsb-stat-v { display:block; font-size:15px; font-weight:700; color:#0f172a; font-variant-numeric:tabular-nums; }
.adsb-stat-l { display:block; font-size:9px; color:#94a3b8; margin-top:1px; }
.adsb-pax { margin-bottom:5px; color:#475569; }
.adsb-pax b { color:#059669; font-weight:700; }
.adsb-pax-note { font-size:9px; color:#94a3b8; margin-left:4px; cursor:help; }
.adsb-plan { margin-bottom:7px; color:#475569; }
.adsb-plan b { color:#0f172a; }
.adsb-plan.lowconf { color:#94a3b8; }
.adsb-plan-note { font-size:9px; color:#94a3b8; }
.adsb-share-hd { display:flex; align-items:center; font-size:10px; color:#64748b; margin-bottom:4px; }
.adsb-legend { font-size:8px; color:#94a3b8; margin-left:6px; }
.adsb-legend i { display:inline-block; width:7px; height:7px; border-radius:2px; vertical-align:middle; margin:0 2px 0 4px; }
.adsb-cargo-line { font-size:9.5px; color:#64748b; margin-top:5px; padding-top:5px; border-top:1px dashed #e2e8f0; line-height:1.5; }
.adsb-toggle { margin-left:auto; font-size:9px; color:#b45309; border:.5px solid #fcd34d; background:#fffbeb; border-radius:4px; padding:1px 5px; cursor:pointer; user-select:none; }
.adsb-car { display:flex; align-items:center; gap:6px; margin-bottom:3px; }
.adsb-car-n { width:66px; font-size:10px; color:#475569; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adsb-wide { font-size:8px; color:#b45309; border:.5px solid #fcd34d; border-radius:3px; padding:0 2px; margin-left:3px; }
.adsb-bar-wrap { flex:1; height:8px; background:#eef2f7; border-radius:4px; overflow:hidden; }
.adsb-bar { display:block; height:100%; border-radius:4px; transition:width .3s ease; }
.adsb-car-v { width:34px; text-align:right; font-size:10px; color:#64748b; font-variant-numeric:tabular-nums; }
.adsb-car-link { cursor:pointer; }
.adsb-car-link:hover { color:var(--accent); text-decoration:underline; }
.adsb-verdict { margin-top:7px; padding-top:6px; border-top:1px dashed #d7dee7; font-size:10px; color:#475569; line-height:1.55; }
.adsb-src { margin-top:5px; font-size:8px; color:#94a3b8; }

/* 左上常驻「国际航线实时运力」仪表（景气盘上方·暗色终端风·与景气盘一体）*/
.adsb-dock { cursor:pointer; margin-bottom:8px; padding-bottom:8px; border-bottom:0.5px solid #2a3c4f; }
.adsb-dock-hd { display:flex; align-items:center; gap:5px; margin-bottom:9px; }
.adsb-dock-title { font-size:11px; font-weight:600; color:#dce6ef; letter-spacing:.2px; }
/* 均衡四格：所有指标同一视觉层级·横向平铺·不再头重脚轻(董事长多次指出) */
.adsb-dock-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.adsb-dm { text-align:center; padding:2px 0; }
.adsb-dm b { display:block; font-size:17px; font-weight:700; color:#eaf2fa; font-variant-numeric:tabular-nums; line-height:1.05; }
.adsb-dm b em { font-size:10px; font-weight:600; font-style:normal; color:#8ba0b5; margin-left:1px; }
.adsb-dm span { font-size:8px; color:#7a8b9c; margin-top:3px; display:block; letter-spacing:.2px; }
.adsb-live-blink { animation:adsb-liveblink 2.2s ease-in-out infinite; }
@keyframes adsb-liveblink { 0%,100%{opacity:1} 50%{opacity:.45} }
@media (prefers-reduced-motion:reduce) { .adsb-live-blink { animation:none; } }
/* 诚实覆盖度提示 */
.adsb-cov { font-size:8px; color:#7a8a9a; margin-top:8px; padding-top:6px; border-top:0.5px solid #1e2c3a; line-height:1.45; }
/* 动态背离信号·平滑连续上滚（5行窗口·董事长2026-07-20拉高）*/
.adsb-vscroll { height:80px; overflow:hidden; position:relative; margin-top:9px; -webkit-mask-image:linear-gradient(180deg,transparent,#000 14%,#000 86%,transparent); mask-image:linear-gradient(180deg,transparent,#000 14%,#000 86%,transparent); }
.adsb-vtrack { animation:adsb-vroll 40s linear infinite; }
.adsb-vline { height:16px; font-size:9.5px; color:#9db0c4; line-height:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@keyframes adsb-vroll { 0%{transform:translateY(0)} 100%{transform:translateY(-50%)} }
@media (prefers-reduced-motion:reduce) { .adsb-vtrack { animation:none; } }
.adsb-dock:hover .adsb-vtrack { animation-play-state:paused; }
/* 计划兑现率 hero 单元 */
.adsb-dm-hero b { font-size:16px; }

/* 全网大盘卡内表格（白底·卡片内）*/
.adsb-regbar { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:6px; }
.adsb-covbar { font-size:9.5px; color:#64748b; background:#f8fafc; border:0.5px solid #e2e8f0; border-radius:6px; padding:5px 8px; margin-bottom:6px; line-height:1.5; }
.adsb-covbar b { color:#0891b2; }
.adsb-reg { font-size:10px; color:#64748b; border:0.5px solid #cbd5e1; border-radius:10px; padding:2px 9px; cursor:pointer; user-select:none; }
.adsb-reg.on { color:#fff; background:var(--accent); border-color:var(--accent); }
.adsb-psfilter { border-radius:6px; transition:background .12s; }
.adsb-psfilter:hover { background:rgba(0,0,0,0.03); }
.adsb-psfilter.on { background:rgba(59,130,246,0.1); outline:1.5px solid var(--accent); }
.adsb-psactive { font-size:10px; color:var(--text2); background:#f0f6fb; border:0.5px solid #dbe7f3; border-radius:6px; padding:3px 8px; margin-bottom:6px; }
.adsb-ovt { width:100%; border-collapse:collapse; font-size:11px; table-layout:fixed; }
.adsb-ovt thead th { position:sticky; top:0; background:#f8fafc; color:#64748b; font-weight:600; padding:7px 8px; text-align:left; border-bottom:1px solid #e5e7eb; white-space:nowrap; cursor:pointer; user-select:none; overflow:hidden; text-overflow:ellipsis; }
.adsb-ovt td.adsb-num { text-align:right; font-variant-numeric:tabular-nums; color:#475569; white-space:nowrap; }
.adsb-ovt th.adsb-th.on { color:var(--accent); }
.adsb-ovt tbody tr { border-bottom:1px solid #f1f5f9; cursor:pointer; }
.adsb-ovt tbody tr:hover { background:#f0f9ff; }
.adsb-ovt td { padding:6px 8px; }
.adsb-ovt td.adsb-rt { font-weight:600; color:#334155; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adsb-ovt td.adsb-reg-cell { color:#64748b; }
.adsb-ovt td.adsb-lead { color:#475569; white-space:nowrap; }
.adsb-livedot { display:inline-block; width:5px; height:5px; border-radius:50%; background:#059669; margin-right:5px; vertical-align:middle; animation:adsb-pulse 2s infinite; }

/* 机场卡「本场国际实时运力」mini 列表 */
.adsb-ap-list { margin:6px 0 2px; }
.adsb-ap-row { display:flex; align-items:center; gap:6px; margin-bottom:3px; cursor:pointer; }
.adsb-ap-row:hover .adsb-ap-dest { color:var(--accent); }
.adsb-ap-dest { width:70px; font-size:10px; color:#475569; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adsb-ap-dir { color:#94a3b8; margin-right:2px; }
.adsb-ap-bar-wrap { flex:1; height:7px; background:#eef2f7; border-radius:4px; overflow:hidden; }
.adsb-ap-bar { display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#0891b2,#22c3a6); }
.adsb-ap-lead { width:64px; text-align:right; font-size:9px; color:#64748b; white-space:nowrap; }
.adsb-ap-more { font-size:9px; color:var(--accent); cursor:pointer; margin-top:5px; }

/* ═══════ 航司卡（五层航司情报·董事长 2026-07-16·白底卡色系·与机场卡一致）═══════ */
.al-ident { margin-bottom:8px; }
.al-name { font-size:15px; font-weight:700; color:var(--pt); }
.al-code { font-size:11px; color:var(--pt3); font-weight:400; margin-left:4px; }
.al-chips { display:flex; gap:6px; align-items:center; margin-top:5px; flex-wrap:wrap; }
.al-chip { font-size:10px; padding:2px 8px; border-radius:10px; background:rgba(3,105,161,.1); color:#0369a1; font-weight:600; }
.al-chip-type { background:rgba(71,85,105,.1); color:#475569; }
.al-live { font-size:10px; color:#475569; margin-left:auto; }
.al-live b { color:#059669; }
.al-netbtn { font-size:10px; padding:2px 9px; border-radius:10px; background:rgba(3,105,161,.1); color:#0369a1; font-weight:600; cursor:pointer; margin-left:auto; white-space:nowrap; }
.al-netbtn:hover { background:rgba(3,105,161,.2); }
.map-focus-banner { position:fixed; top:66px; left:50%; transform:translateX(-50%); z-index:40; background:rgba(0,180,216,.14); border:1px solid rgba(0,180,216,.4); color:#cfeffb; font-size:12px; padding:6px 14px; border-radius:16px; backdrop-filter:blur(6px); pointer-events:auto; box-shadow:0 2px 12px rgba(0,0,0,.25); }
.map-focus-banner b { color:#7fdcf5; }
.mfb-exit { margin-left:10px; cursor:pointer; color:#fca5a5; font-weight:600; }
.mfb-exit:hover { color:#f87171; }
.al-section { margin-top:11px; }
/* 航司卡网络结构动态行(董事长2026-07-19·structure净进出·外航也不空壳) */
.al-struct { display:flex; align-items:center; gap:8px; margin-top:7px; padding:5px 8px; background:var(--pbg); border-radius:6px; font-size:11px; }
.al-struct-k { font-weight:600; color:#334155; }
.al-struct-v { font-weight:600; }
.al-struct-note { color:var(--pt3); font-size:10px; margin-left:auto; }
/* 航司卡核心KPI块(董事长2026-07-19·原始数据高价值·民航标准量纲) */
.al-kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(88px,1fr)); gap:7px; }
.al-kpi-cell { background:var(--pbg); border-radius:6px; padding:7px 8px; text-align:center; cursor:pointer; transition:background .12s, box-shadow .12s; }
.al-kpi-cell:hover { background:#eef2f7; }
.al-kpi-cell.al-kpi-on { background:#eef4ff; box-shadow:inset 0 0 0 1px #b6ccf5; }
.al-kpi-trend { margin-top:7px; padding:5px 7px; background:#fff; border:1px solid #e2e8f0; border-radius:6px; }
.al-kpi-trend-cap { font-size:9px; color:var(--text3); text-align:center; margin-bottom:2px; }
.al-kpi-v { display:block; font-size:17px; font-weight:700; color:#1e293b; line-height:1.15; }
.al-kpi-u { font-size:9px; font-weight:400; color:var(--pt3); margin-left:1px; }
.al-kpi-l { font-size:9px; color:var(--text3); }
.al-kpi-intl { display:block; font-size:9px; color:#0369a1; margin-top:3px; padding-top:3px; border-top:1px dashed #dbe4ee; white-space:nowrap; }
.al-kpi-note { font-size:10px; color:#475569; margin-top:5px; }
/* 机场卡国际/国内客流拆分(董事长2026-07-19·门户机场国际占比) */
.ap-scope-split { margin-top:7px; padding-top:6px; border-top:1px dashed #e2e8f0; }
.ap-scope-hd { font-size:10px; color:#475569; margin-bottom:4px; }
.ap-scope-row { display:flex; align-items:baseline; justify-content:space-between; font-size:11px; padding:1px 0; }
.ap-scope-k { color:#334155; }
.ap-scope-v { color:#1e293b; font-weight:600; }
.al-sec-t { font-size:10px; font-weight:700; color:#475569; margin-bottom:6px; letter-spacing:.5px; display:flex; align-items:center; gap:6px; }
.al-src { font-size:9px; color:var(--pt3); font-weight:400; }
.al-note { font-size:9px; color:var(--pt3); margin-top:5px; line-height:1.5; }
/* 区域布局条 */
.al-regrow { display:flex; align-items:center; gap:6px; margin:2px 0; font-size:10px; }
.al-regname { width:52px; color:#475569; white-space:nowrap; }
.al-regbar-bg { flex:1; height:8px; background:var(--pbg); border-radius:4px; overflow:hidden; }
.al-regbar-fill { display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#0891b2,#22c3a6); }
.al-regcnt { width:22px; text-align:right; color:var(--pt3); font-variant-numeric:tabular-nums; }
/* 运力估算 */
.al-caprow { display:flex; gap:8px; }
.al-capstat { flex:1; text-align:center; background:var(--pbg); border-radius:6px; padding:6px 4px; }
.al-capstat b { font-size:15px; color:#0369a1; display:block; }
.al-capstat span { font-size:8px; color:var(--pt3); }
.al-fleet { display:flex; gap:4px; flex-wrap:wrap; margin-top:6px; }
.al-typechip { font-size:9px; padding:2px 6px; border-radius:8px; background:var(--pbg); color:#475569; }
.al-typechip b { color:#0369a1; margin-left:3px; }
/* 运力结构图表化(董事长2026-07-28) */
.al-caprow2 { display:flex; gap:8px; margin-bottom:6px; }
.al-capbig { flex:1; text-align:center; background:var(--pbg); border-radius:6px; padding:5px 4px; }
.al-capbig b { font-size:16px; color:#0369a1; display:block; font-variant-numeric:tabular-nums; }
.al-capbig span { font-size:8px; color:var(--pt3); }
.al-capchart-t { font-size:9px; color:#64748b; margin-bottom:3px; font-weight:600; }
.al-cap-inline { font-weight:400; color:#94a3b8; margin-left:4px; }
.al-cap-inline b { color:#0891b2; }
.al-widebar { display:flex; height:14px; border-radius:4px; overflow:hidden; background:#e2e8f0; }
.al-widebar-w { background:linear-gradient(90deg,#0891b2,#22c3a6); color:#fff; font-size:9px; line-height:14px; text-align:center; min-width:0; }
.al-widebar-n { background:#cbd5e1; color:#475569; font-size:9px; line-height:14px; text-align:center; min-width:0; }
.al-widebar-lg { display:flex; gap:12px; margin-top:3px; font-size:8px; color:var(--pt3); }
.al-widebar-lg i { display:inline-block; width:7px; height:7px; border-radius:2px; margin-right:3px; vertical-align:middle; }
.al-dot-w { background:#0891b2; }
.al-dot-n { background:#cbd5e1; }
/* 机型分布条(与区域布局条区分色·紫调·机型名够宽防重叠) */
.al-fltrow { display:flex; align-items:center; gap:6px; font-size:9px; margin:2px 0; }
.al-fltname { width:96px; color:#475569; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex-shrink:0; }
.al-fltbar-bg { flex:1; height:7px; background:var(--pbg); border-radius:4px; overflow:hidden; }
.al-fltbar-fill { display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#7c6cf0,#a78bfa); }
.al-fltcnt { width:20px; text-align:right; color:var(--pt3); font-variant-numeric:tabular-nums; }
/* 下展框 */
.al-drillbox { background:var(--pbg); border-radius:6px; padding:6px 8px; margin-top:4px; }
.al-drillbox-scroll { max-height:260px; overflow-y:auto; }
.al-drill-t { font-size:10px; font-weight:600; color:#475569; margin-bottom:4px; }
.al-drillrow { display:flex; justify-content:space-between; font-size:10px; padding:2px 0; color:#475569; }
.al-hub-cap { color:#475569; }
.al-hub-cap b { color:#0369a1; }
.al-hub-seat { color:#0891b2; margin-left:5px; }
/* 航线清单表 */
.al-rt-table { width:100%; border-collapse:collapse; font-size:11px; }
.al-rt-table th { font-size:9px; color:var(--pt3); font-weight:600; text-align:left; padding:3px 4px; border-bottom:1px solid #e5e7eb; white-space:nowrap; }
.al-rt-table td { padding:4px; border-bottom:1px solid #f1f5f9; color:var(--pt); }
.al-rt-table tr:hover td { background:#eaf4fb; }
.al-hub-group { font-size:10px; font-weight:700; color:#0369a1; background:var(--pbg); padding:3px 6px; }
.al-wtag { font-size:9px; padding:1px 5px; border-radius:8px; font-weight:600; }
.al-wide { background:rgba(8,145,178,.15); color:#0891b2; }
.al-narrow { background:rgba(71,85,105,.12); color:#475569; }
.al-mt { font-size:9px; color:var(--pt3); margin-left:3px; }
.al-new { font-size:8px; padding:0 4px; border-radius:6px; background:#059669; color:#fff; margin-left:4px; }
.al-upcoming { font-size:8px; padding:0 4px; border-radius:6px; background:#f59e0b; color:#fff; margin-left:4px; font-weight:600; }
.al-ending { font-size:8px; padding:0 4px; border-radius:6px; background:#dc2626; color:#fff; margin-left:4px; font-weight:600; }
.al-natchip { cursor:pointer; }
.al-nat-cn { background:rgba(220,38,38,.12); color:#dc2626; }
.al-nat-gc { background:rgba(217,119,6,.14); color:#b45309; }
.al-nat-intl { background:rgba(100,116,139,.14); color:#475569; }
.al-exitlist { display:flex; flex-direction:column; gap:1px; }
.al-exitrow { display:flex; justify-content:space-between; align-items:center; font-size:10px; padding:3px 6px; color:#94a3b8; background:rgba(148,163,184,.06); border-radius:4px; }
.al-exitrow:hover { background:rgba(148,163,184,.14); }
.al-exit-date { font-size:9px; color:#b45309; }
.al-sig { color:#d97706; margin-left:3px; }
.al-more { text-align:center; font-size:10px; color:#0369a1; cursor:pointer; padding:6px; margin-top:2px; }
.al-more:hover { text-decoration:underline; }
.al-link { color:#0369a1 !important; }
.al-link:hover { text-decoration:underline; }
/* 航线清单区随卡高填满·标题固定·表格内部滚动 */
.al-section-list { display:flex; flex-direction:column; min-height:120px; }
.al-section-list #al-routelist, .al-section-list [id^="al-routelist"] { max-height:340px; min-height:0; overflow-y:auto; }
/* 航司网络地图入口按钮 */
/* 外航诚实标注 */
.al-foreign-note { font-size:10px; color:#b45309; background:#fffbeb; border:1px solid #fde68a; border-radius:6px; padding:5px 8px; margin:7px 0; line-height:1.5; }

/* 四格紧凑单位标签(43国82城不换行) */
.al-unit { font-size:10px; font-weight:400; color:#94a3b8; font-style:normal; margin:0 1px; }
.al-netstats .ac-stat-item { white-space:nowrap; }
/* 航线清单视图切换条 */
.al-viewbar { display:flex; gap:4px; margin-bottom:6px; }
.al-viewtab { font-size:9px; padding:2px 9px; border-radius:6px; border:1px solid #e5e7eb; color:#64748b; cursor:pointer; }
.al-viewtab.on { background:#0369a1; color:#fff; border-color:#0369a1; }

/* ═══ 前置战略感知台（航司台/机场台·董事长2026-07-18）═══ */
.sig-tabs { display:flex; gap:6px; align-items:center; margin:8px 0 4px; }
.sig-tab { font-size:12px; padding:4px 14px; border-radius:7px; border:1px solid var(--pb); background:var(--panel); color:var(--text2); cursor:pointer; font-family:inherit; transition:.15s; }
.sig-tab:hover { border-color:var(--accent); color:var(--accent); }
.sig-tab.on { background:var(--accent-dim); border-color:var(--accent); color:var(--accent); font-weight:600; }
.sig-accrue { margin-left:auto; font-size:9px; color:var(--text3); border:1px dashed var(--pb); border-radius:5px; padding:2px 7px; }
.sig-tbl { width:100%; border-collapse:collapse; font-size:12px; }
.sig-tbl thead th { position:sticky; top:0; background:var(--glass); backdrop-filter:blur(8px); color:var(--text2); font-weight:600; font-size:10px; text-align:left; padding:6px 8px; border-bottom:1px solid var(--pb); white-space:nowrap; }
.sig-tbl td { padding:7px 8px; border-bottom:1px solid rgba(255,255,255,.04); white-space:nowrap; }
.sig-row { cursor:pointer; transition:.1s; }
.sig-row:hover { background:var(--accent-dim); }
.sig-nm { font-weight:600; color:var(--text); }
/* 战略态势表·可见信号徽标 + 点行下展(董事长2026-07-21·可下展深度统一语言) */
.sig-badge { font-size:8px; padding:0 4px; margin-left:5px; border-radius:3px; font-weight:600; vertical-align:middle; }
.sig-badge-warn { color:#b45309; background:#fef3c7; border:.5px solid #fcd34d; }
.sig-badge-div { color:#7c3aed; background:#f3e8ff; border:.5px solid #d8b4fe; }
.sig-row-open { background:#eef4ff !important; }
.sig-drill-row td { padding:0 !important; background:#f8fafc; }
.sig-drill-in { padding:8px 12px; border-top:1px solid #dbe4f0; border-bottom:1px solid #dbe4f0; }
.sig-drill-diag { font-size:10px; color:#334155; margin-bottom:4px; line-height:1.5; }
.sig-drill-diag b { color:#1e293b; }
.sig-drill-sec { margin-top:6px; }
.sig-drill-cap { font-size:9px; color:#64748b; font-weight:600; margin-bottom:3px; }
.sig-drill-parts { font-size:10px; color:#334155; }
.sig-drill-div { font-size:9.5px; color:#7c3aed; margin-top:3px; }
.sig-drill-more { font-size:9.5px; color:var(--accent); cursor:pointer; margin-top:7px; padding-top:5px; border-top:1px dashed #dbe4f0; }
.sig-drill-more:hover { text-decoration:underline; }
.sig-legend { font-size:9px; color:var(--text3); margin:8px 4px; line-height:1.6; }
/* 景气大盘航司/机场战略tab白底适配(董事长2026-07-20·灰字白底看不清) */
#bd-body .sig-tbl thead th { background:#f1f5f9; color:#475569; border-bottom:1px solid #e2e8f0; backdrop-filter:none; }
#bd-body .sig-tbl td { border-bottom:1px solid #eef2f7; color:#334155; }
#bd-body .sig-row:hover { background:#f0f9ff; }
#bd-body .sig-nm { color:#1e293b; }
#bd-body .sig-legend { color:#64748b; }
/* 全网结构tab(董事长2026-07-19·142航司/74门户覆盖面) */
.sig-struct { padding:8px 4px; }
.sig-struct-cov { display:flex; gap:10px; }
.sig-struct-stat { flex:1; text-align:center; padding:12px 8px; background:var(--pbg); border-radius:8px; }
.sig-struct-stat b { display:block; font-size:26px; color:var(--accent); line-height:1.1; }
.sig-struct-stat span { font-size:10px; color:var(--text3); }
.sig-struct-sec { font-size:10px; font-weight:700; color:#475569; margin:12px 0 6px; letter-spacing:.5px; }
.sig-struct-flow { display:flex; gap:8px; }
.sig-struct-fstat { flex:1; text-align:center; padding:8px; background:var(--pbg); border-radius:6px; }
.sig-struct-fstat b { display:block; font-size:20px; line-height:1.1; }
.sig-struct-fstat span { font-size:9px; color:var(--text3); }
.sig-struct-lccbar { height:10px; background:#e2e8f0; border-radius:5px; overflow:hidden; }
.sig-struct-lccfill { display:block; height:100%; background:linear-gradient(90deg,#8b5cf6,#a78bfa); }
.sig-struct-lcctxt { font-size:11px; color:#334155; margin-top:5px; }
/* 联盟盘子(董事长2026-07-19) */
.sig-struct-ally { display:flex; flex-direction:column; gap:5px; }
.sig-struct-allyrow { display:flex; align-items:center; gap:8px; font-size:11px; }
.sig-struct-allyname { flex:0 0 60px; color:#334155; }
.sig-struct-allybar { flex:1; height:9px; background:#e2e8f0; border-radius:5px; overflow:hidden; }
.sig-struct-allyfill { display:block; height:100%; background:linear-gradient(90deg,#0891b2,#22a7bd); }
.sig-struct-allyv { flex:0 0 auto; color:#1e293b; font-weight:600; }
.sig-struct-boardlink { margin-top:10px; font-size:11px; color:var(--accent); }
.sig-struct-boardlink:hover { text-decoration:underline; }
/* 航司卡前置信号带 */
.al-sigband { background:var(--panel); border-radius:8px; padding:8px 10px; margin:6px 0; }
.al-sig-hd { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12px; }
.al-sig-mom { font-size:11px; }
.al-sig-diag { font-size:10px; color:var(--text2); margin-top:5px; line-height:1.5; }
.al-sig-accrue { font-size:8px; color:var(--text3); border:1px dashed var(--pb); border-radius:4px; padding:1px 5px; }
.al-sig-src { font-size:8px; color:var(--text3); margin-top:4px; }

/* 航司卡三诊断展开（董事长第8条·消除"狐疑不决"） */
.al-diag-wrap { margin-top:6px; display:flex; flex-direction:column; gap:7px; }
.al-diag-item { background:#f8fafc; border:1px solid #e2e8f0; border-radius:5px; padding:6px 8px; }
.al-diag-h { display:flex; align-items:baseline; gap:6px; font-size:11px; margin-bottom:3px; }
.al-diag-h span { font-size:8px; margin-left:auto; }
.al-diag-b { font-size:10px; color:var(--text2); margin-bottom:2px; }
.al-diag-r { font-size:9px; color:#475569; line-height:1.5; }
/* 三市场分化矩阵(国内/国际/地区港澳台·董事长2026-07-21) */
.al-mkt-grid { display:flex; flex-direction:column; gap:2px; margin:3px 0; }
.al-mkt-row { display:flex; align-items:center; gap:8px; font-size:9.5px; padding:2px 6px; background:#fff; border:.5px solid #eef2f6; border-radius:4px; }
.al-mkt-nm { min-width:74px; color:#475569; }
.al-mkt-ask { min-width:66px; font-variant-numeric:tabular-nums; }
.al-mkt-lf { font-variant-numeric:tabular-nums; }
.al-diag-chart { margin:5px 0 3px; padding:4px 6px; background:#fff; border:1px solid #e2e8f0; border-radius:5px; }
.al-diag-chart-cap { font-size:8px; color:var(--text3); text-align:center; margin-top:1px; }

/* OD卡战略态势块（存量+动态感知·董事长2026-07-18） */
.rp-block { margin:8px 0; padding:8px 10px; border-radius:6px; background:var(--panel); font-size:11px; line-height:1.55; color:var(--text2); }
.rp-head { display:flex; align-items:center; gap:6px; font-size:12px; margin-bottom:5px; }
.rp-sub { font-size:8px; color:var(--text3); margin-left:auto; }
.rp-row { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px; padding:2px 0; position:relative; }
.rp-expandable { cursor:pointer; }
.rp-expandable:hover { background:rgba(0,0,0,0.02); border-radius:4px; }
.rp-k { flex-shrink:0; width:52px; color:#64748b; font-size:10px; }
.rp-v { flex:1; min-width:0; font-weight:600; color:#334155; }
.rp-row .sig-detail { flex-basis:100%; width:100%; }
.rp-note { font-weight:400; color:#64748b; font-size:9px; }
.rp-expandable .sig-expand-btn { position:absolute; right:2px; top:2px; font-size:8px; color:#64748b; }
.rp-shift { font-size:10px; font-weight:600; margin-bottom:5px; }
.rp-carriers { display:flex; flex-direction:column; gap:2px; }
.rp-carrier { display:flex; align-items:center; gap:6px; padding:2px 5px; border-radius:4px; }
.rp-carrier-e { background:#fef9ec; }
.rp-cn { font-weight:600; color:#1e293b; font-size:10px; }
.rp-tag { font-size:8px; font-weight:700; border-radius:3px; padding:0 4px; }
.rp-tag-new { background:#059669; color:#fff; }
.rp-tag-out { background:#f97316; color:#fff; }
.rp-tag-lcc { background:#7c3aed; color:#fff; }

/* OD卡主导航司信号面板(董事长2026-07-18) */
.lcs-block { margin:6px 0; padding:7px 9px; border-radius:6px; background:var(--panel); border-left:3px solid #0369a1; }
.lcs-hd { font-size:11px; color:#334155; margin-bottom:4px; display:flex; align-items:center; gap:5px; }
.lcs-sub { font-size:8px; color:#64748b; }
.lcs-link { margin-left:auto; font-size:9px; color:var(--accent); cursor:pointer; }
.lcs-row { display:flex; align-items:baseline; gap:6px; padding:2px 0; font-size:11px; }
.lcs-k { flex-shrink:0; width:52px; color:#64748b; font-size:10px; }
.lcs-v { flex:1; min-width:0; color:#334155; }
.lcs-note { color:#64748b; font-weight:400; font-size:9px; }
.rp-date { font-size:8px; color:#64748b; margin-left:auto; }
.rp-src { font-size:8px; color:#64748b; margin-top:4px; }
/* 战略态势大盘·新增列 */
.adsb-post { padding:6px 8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adsb-entrant { font-size:8px; color:#059669; margin-left:3px; font-weight:600; }
.adsb-lcc { font-size:8px; color:#8b5cf6; border:.5px solid #a78bfa; border-radius:3px; padding:0 2px; }
.adsb-ally { font-size:9px; color:#7c8ea0; }
/* 竞争列独立·不再挤LCC(董事长2026-07-20)·给足宽度 */
.adsb-ovt td.adsb-comp { white-space:nowrap; min-width:72px; }
.adsb-ovt td.adsb-ally-c, .adsb-ovt td.adsb-lcc-c { white-space:nowrap; text-align:center; }
.adsb-ovt th.adsb-th { min-width:0; }
.adsb-capu { font-size:8px; color:#94a3b8; margin-left:2px; }
.adsb-netfoot { font-size:9.5px; color:#8497a8; padding:8px 4px 2px; border-top:0.5px solid #2a3c4f; margin-top:4px; line-height:1.5; }
.adsb-netfoot b { color:#c4d2e0; }
