:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:#d9e8f6;background:#06121f;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 65% -30%,#173451 0,transparent 60%),#06121f}button{font:inherit}button:focus-visible,a:focus-visible{outline:2px solid #5bd0ff;outline-offset:3px}a{text-decoration:none;color:inherit}.skip-link{position:absolute;top:-100px;z-index:20;background:#214fa4;padding:12px}.skip-link:focus{top:0}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{height:68px;display:flex;gap:24px;align-items:center;border-bottom:1px solid #223d54;background:rgba(5,17,30,.96);padding:0 20px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;min-width:225px}.brand-symbol{height:40px;width:40px;border:2px solid #23d2f0;border-radius:50%;box-shadow:inset 0 0 16px #148abb,0 0 17px #135d90;color:#81f4ff;display:grid;place-items:center;font-size:30px}.brand b{display:block;font-size:19px;letter-spacing:.3px;color:#f1f9ff}.brand em{font-style:normal;font-weight:500;color:#7e9dbb}.brand small{display:block;color:#819db8;font-size:10px;margin-top:2px}.top-nav{display:flex;gap:5px;flex:1;overflow:auto;scrollbar-width:none}.top-nav button,.side-link{color:#a6bfd5;border:0;background:transparent;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.top-nav button{border-radius:7px;font-size:12px;padding:12px 11px}.top-nav button:hover,.side-link:hover{color:#fff;background:#14314a}.top-nav button[aria-current="page"],.side-link[aria-current="page"]{background:linear-gradient(95deg,#1b4d87,#0c3155);color:#c2edff;box-shadow:inset 3px 0 #35c2ff}.top-actions{display:flex;align-items:center;gap:12px}.status{font-size:11px;white-space:nowrap}.status:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:6px}.status.unknown{color:#ffca79}.status.good{color:#45dcae}.status.bad{color:#ff7891}.icon-button{border:1px solid #2e4e67;border-radius:9px;background:#112c43;color:#bfe4ff;cursor:pointer;min-height:34px;min-width:34px;font-size:22px}.icon-button:disabled{opacity:.5;cursor:wait}.workspace{display:flex;flex:1;min-height:0}.sidebar{width:184px;flex-shrink:0;padding:17px 10px 24px;background:linear-gradient(#091c2d,#081522);border-right:1px solid #223a51}.side-heading{font-size:10px;color:#72a1ce;text-transform:uppercase;letter-spacing:1.3px;margin:15px 9px 7px}.side-link{width:100%;display:flex;align-items:center;gap:9px;text-align:left;font-size:12px;border-radius:7px;padding:11px 10px;margin:2px 0}.side-icon{display:inline-grid;place-items:center;width:18px;color:#66bdf6;font-size:16px}.sidebar-note{font-size:10px;line-height:1.7;color:#6e91ac;margin:28px 8px;border:1px solid #20415a;border-radius:8px;padding:12px}.main{width:100%;max-width:1900px;margin:0 auto;padding:20px;min-width:0}.page-heading{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:17px}.breadcrumb{color:#77a2c5;font-size:10px;letter-spacing:1px;text-transform:uppercase}.page-heading h1{font-size:23px;margin:5px 0 6px;font-weight:750}.page-heading p{margin:0;color:#8eb2cb;font-size:12px;line-height:1.65}.heading-tools{display:flex;gap:8px;align-items:center}.chip{display:inline-block;padding:6px 10px;border:1px solid #2c4f6b;border-radius:8px;background:#102940;color:#91bcdd;font-size:11px;white-space:nowrap}.chip.warning{color:#ffd38c;border-color:#76512d;background:#39281b}.chip.purple{color:#cca7fc;border-color:#614681;background:#2c1d45}.page-accent{color:#58b7ff}.page-accent.money{color:#c995ff}.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px;margin-bottom:12px}.metric,.panel{border:1px solid #284963;border-radius:10px;background:linear-gradient(132deg,rgba(17,41,62,.96),rgba(7,24,39,.98));position:relative;overflow:hidden}.metric{min-height:104px;padding:13px}.metric:before{content:"";height:1px;position:absolute;top:0;left:0;right:25%;background:linear-gradient(90deg,#288ade,#51dbff00)}.metric .label{color:#a9bed3;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric .value{font-size:23px;font-weight:760;color:#eef9ff;margin:12px 0 4px;letter-spacing:.4px}.metric small{font-size:10px;color:#75a0ba}.grid-panels{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.panel{padding:15px;min-height:220px;grid-column:span 4}.panel.wide{grid-column:span 8}.panel.full{grid-column:span 12}.panel-header{display:flex;align-items:start;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid #26455f}.panel h2{font-size:14px;margin:0;color:#e2f5ff}.panel-header small{font-size:10px;color:#76a1bf}.panel-body{padding:15px 0 0}.empty{display:grid;place-items:center;gap:8px;min-height:150px;text-align:center;color:#87a5bb;font-size:12px;border:1px dashed #2a4c66;border-radius:8px;background:radial-gradient(ellipse at center,#0e2940,#081b2b);padding:18px}.empty strong{color:#bad3e5;font-weight:600}.empty small{font-size:10px;max-width:400px;line-height:1.7;color:#7294ad}.empty .illustration{font-size:26px;color:#51a5d6;line-height:1}.table-wrap{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:11px;min-width:420px}.data-table th{text-align:left;color:#83a5c2;font-weight:500;padding:9px;border-bottom:1px solid #2a465c}.data-table td{padding:10px 9px;border-bottom:1px solid #1b344a;color:#b8d0e3}.empty-row{text-align:center;color:#7899b3!important;padding:26px!important}.live-lock{display:flex;align-items:center;gap:12px;border:1px solid #79474b;background:#261a29;border-radius:8px;padding:13px;margin-bottom:12px;color:#ffd3d5;font-size:12px}.lock-icon{font-size:24px;color:#ff8999}.lock-details{font-size:10px;color:#ce98a0;margin-top:4px}.flow-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:18px 0}.flow-box{flex:1;min-width:112px;border:1px solid #345875;border-radius:9px;background:#0e2b43;padding:18px 8px;text-align:center;color:#d5efff;font-size:12px}.flow-box .flow-index{display:inline-grid;place-items:center;border-radius:50%;height:24px;width:24px;background:#185a97;margin-right:5px}.flow-box small{display:block;font-size:10px;color:#82a6bf;margin-top:8px}.flow-arrow{color:#55b2e7;font-weight:bold}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.safety-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.safety-item{padding:12px;border:1px solid #2f546d;border-radius:8px;background:#0e283c}.safety-item small{display:block;color:#83aac6}.safety-item strong{display:block;margin-top:9px;color:#ffce8c;font-size:12px}.graph-wrap{min-height:238px;position:relative;display:flex;flex-wrap:wrap;gap:9px;align-content:center;justify-content:center;padding:34px 12px;background:radial-gradient(circle,#103656 0,#081d31 50%,#071a2b 100%);border:1px solid #27455f;border-radius:9px}.graph-center{position:relative;display:grid;place-items:center;width:99px;height:99px;border-radius:50%;background:radial-gradient(circle,#134e94,#082b56);border:1px solid #40b5ff;box-shadow:0 0 35px #187cbb66;color:#e5faff;font-weight:bold;font-size:15px;margin:0 18px}.graph-node{align-self:center;border:1px solid #32769e;border-radius:20px;background:#102e49;color:#bfe8ff;font-size:11px;max-width:170px;padding:10px 12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.graph-node:hover{background:#214a66}.node-detail{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px;color:#a9cbe3;border:1px solid #274961;background:#071c2e;border-radius:7px;padding:11px;max-height:200px;overflow:auto}.funnel{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 0}.funnel-step{min-height:34px;display:flex;justify-content:space-between;align-items:center;padding:0 14px;font-size:11px;font-weight:600;color:#e7f7ff;background:linear-gradient(90deg,#147bba,#2ca9ec);clip-path:polygon(0 0,100% 0,92% 100%,8% 100%)}.funnel-step:nth-child(2){background:linear-gradient(90deg,#137d99,#27aab0)}.funnel-step:nth-child(3){background:linear-gradient(90deg,#189d77,#32bd8c)}.funnel-step:nth-child(4){background:linear-gradient(90deg,#d09a37,#e9bf52)}.funnel-step:nth-child(5){background:linear-gradient(90deg,#c9553b,#f27a5f)}.funnel-step span{opacity:.9}.chart-placeholder{height:203px;border:1px solid #26465f;border-radius:9px;display:grid;place-items:center;text-align:center;color:#7a9fbb;font-size:11px;background:linear-gradient(0deg,rgba(26,76,111,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(26,76,111,.12) 1px,transparent 1px),#0b2539;background-size:100% 40px,52px 100%,auto}.chart-placeholder strong{display:block;color:#bed6e5;font-size:12px;margin-bottom:5px}.activity{display:grid;gap:7px}.event{border-left:2px solid #287eb0;background:#0e283c;border-radius:0 7px 7px 0;padding:9px 11px;font-size:11px}.event .meta{color:#779db9;font-size:10px;margin-bottom:4px}.event .detail{color:#d9ebf9;overflow-wrap:anywhere}.message{padding:12px;border:1px solid #25475f;border-radius:8px;background:#0b263b;color:#99bad4;font-size:11px;line-height:1.7}.action-row{display:flex;gap:9px;flex-wrap:wrap}.action{border:1px solid #2b5275;border-radius:7px;background:#12406c;color:#c9e9ff;padding:11px 14px;font-size:11px}.action:disabled{cursor:not-allowed;opacity:.65}.footer{display:flex;justify-content:space-between;gap:15px;padding:12px 20px;border-top:1px solid #203b55;color:#668ca8;font-size:10px}.footer-warning{color:#f3b879}@media(max-width:1500px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar{gap:11px}.brand{min-width:184px}.brand b{font-size:16px}.top-nav button{padding:10px 8px}}@media(max-width:1050px){.sidebar{width:155px}.panel{grid-column:span 6}.panel.wide{grid-column:span 12}.top-nav{max-width:54vw}.topbar{height:auto;min-height:62px;flex-wrap:wrap;padding:11px}.top-nav{order:3;max-width:none;width:100%;flex:none}.main{padding:14px}}@media(max-width:700px){.sidebar{display:none}.main{padding:12px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.panel,.panel.wide,.panel.full{grid-column:span 12}.metric .value{font-size:19px}.page-heading{align-items:flex-start;flex-direction:column}.heading-tools{width:100%}.footer{display:block}.footer span{display:block;margin-top:5px}.brand-symbol{width:33px;height:33px}.top-actions{margin-left:auto}.status{font-size:10px}}
.paper-notice{padding:13px 15px;margin-bottom:12px;border:1px solid #73542d;border-radius:8px;background:#2b261e;color:#ffd38c;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.paper-notice.available{border-color:#32607b;background:#0c2b40;color:#aad8ee}.paper-notice b,.paper-notice span,.paper-notice small{display:block}.paper-notice span,.paper-notice small{font-size:11px}.paper-notice details{margin-top:6px;font-size:11px}.paper-notice summary{cursor:pointer}.paper-notice ul{padding-left:20px;margin:4px 0}.data-table td{overflow-wrap:anywhere}.panel-body>.message{margin-top:12px}

/* Intel feed page */
.intel-cockpit .intel-list{display:flex;flex-direction:column;gap:16px;margin-top:16px}
.intel-card .panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.intel-card .panel-head h3{margin:0;font-size:1.05rem}
.intel-meta{display:flex;gap:10px;align-items:center;font-size:.8rem;color:var(--muted,#888)}
.intel-type{background:rgba(114,248,255,.12);border:1px solid rgba(114,248,255,.3);border-radius:4px;padding:2px 8px;font-size:.75rem}
.intel-body p{margin:0 0 10px;line-height:1.7}
.intel-body p:last-child{margin-bottom:0}
.intel-raw{margin-top:8px;border-top:1px solid rgba(255,255,255,.08);padding-top:8px}
.intel-raw summary{cursor:pointer;font-size:.8rem;color:var(--muted,#888)}
.intel-raw pre{font-size:.72rem;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-all}

/* Alpha Funnel KPI */
.funnel-wrap{padding:4px 2px}
.funnel-month{font-size:13px;color:#8b93a7;margin-bottom:12px}
.funnel-bars{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.funnel-row{display:flex;align-items:center;gap:10px}
.funnel-label{min-width:110px;font-size:13px;color:#c8cfdb}
.funnel-label small{display:block;font-size:11px;color:#6b7280}
.funnel-bar-wrap{flex:1;height:22px;background:#1a1f2e;border-radius:4px;overflow:hidden}
.funnel-bar{height:100%;background:linear-gradient(90deg,#3b82f6,#22d3ee);border-radius:4px;transition:width .4s}
.funnel-val{min-width:44px;text-align:right;font-size:15px;font-weight:600;color:#e8ecf3}
.funnel-rates{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.funnel-rate{flex:1;min-width:140px;background:#141927;border:1px solid #232b42;border-radius:8px;padding:12px 14px}
.funnel-rate span{font-size:12px;color:#8b93a7;display:block;margin-bottom:4px}
.funnel-rate strong{font-size:22px;color:#22d3ee}
.funnel-rate small{display:block;font-size:11px;color:#5b6376;margin-top:4px}
.funnel-note{font-size:12px;color:#6b7280;border-top:1px solid #1e2536;padding-top:10px;margin:0}
/* Verdict distribution bars (Phase 2) */
.verdict-dist{margin-top:14px;padding:12px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.06);border-radius:8px}
.verdict-dist-title{font-size:12px;color:#73cff8;font-weight:700;margin-bottom:10px}
.verdict-bar-row{display:flex;align-items:center;gap:10px;margin:7px 0;font-size:12px}
.verdict-bar-row label{width:110px;color:#b8c4d4;flex-shrink:0}
.verdict-bar-track{flex:1;height:10px;background:rgba(255,255,255,.06);border-radius:5px;overflow:hidden}
.verdict-bar-fill{height:100%;border-radius:5px;transition:width .4s}
.verdict-bar-val{width:44px;text-align:right;color:#e8f0fa;font-weight:700}
.verdict-bar-pct{width:52px;text-align:right;color:#8a94a6;font-size:11px}

/* ===== 神经元动态图谱 ===== */
@keyframes neuron-pulse {
  0%, 100% { opacity: 0.6; r: 10; }
  50% { opacity: 1; r: 14; }
}
@keyframes neuron-glow {
  0%, 100% { filter: drop-shadow(0 0 2px currentColor); }
  50% { filter: drop-shadow(0 0 8px currentColor); }
}
@keyframes signal-flow {
  0% { stroke-dashoffset: 40; }
  100% { stroke-dashoffset: 0; }
}
@keyframes core-breathe {
  0%, 100% { transform: scale(1); opacity: 0.8; }
  50% { transform: scale(1.15); opacity: 1; }
}
.brain-node {
  animation: neuron-pulse 2.5s ease-in-out infinite, neuron-glow 2.5s ease-in-out infinite;
  transform-origin: center;
  transform-box: fill-box;
}
.brain-link {
  fill: none;
  stroke: rgba(72, 213, 245, 0.35);
  stroke-width: 1.5;
  stroke-dasharray: 6 4;
  animation: signal-flow 1.2s linear infinite;
}
.brain-core {
  animation: core-breathe 3s ease-in-out infinite;
  transform-origin: center;
  transform-box: fill-box;
}
/* 让不同节点有错峰动画 */
.brain-node:nth-of-type(2n) { animation-delay: 0.4s; }
.brain-node:nth-of-type(3n) { animation-delay: 0.8s; }
.brain-node:nth-of-type(4n) { animation-delay: 1.2s; }

/* ===== 全站实时感 ===== */
@keyframes live-dot {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}
.live-indicator {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #55daa8;
  animation: live-dot 1.5s ease-in-out infinite;
  margin-right: 6px;
}
@keyframes data-update {
  0% { background-color: rgba(85, 218, 168, 0.15); }
  100% { background-color: transparent; }
}
.kpi-flash {
  animation: data-update 1s ease-out;
}

/* ===== 实时价格跳动 ===== */
@keyframes price-up {
  0% { background-color: rgba(85, 218, 168, 0.4); color: #55daa8; }
  100% { background-color: transparent; }
}
@keyframes price-down {
  0% { background-color: rgba(255, 123, 123, 0.4); color: #ff7b7b; }
  100% { background-color: transparent; }
}
.price-up { animation: price-up 0.8s ease-out; }
.price-down { animation: price-down 0.8s ease-out; }
@keyframes ticker-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}
.market-ticker {
  animation: ticker-pulse 3s ease-in-out infinite;
}

/* ===== 第二步：生命气息增强 ===== */
@keyframes kpi-pulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.02); box-shadow: 0 0 12px rgba(72,213,245,0.3); }
  100% { transform: scale(1); }
}
.kpi-updated {
  animation: kpi-pulse 0.6s ease-out;
}
@keyframes heartbeat {
  0%, 100% { transform: scaleY(1); }
  25% { transform: scaleY(1.5); }
  50% { transform: scaleY(0.8); }
  75% { transform: scaleY(1.2); }
}
.heartbeat-bar {
  display: inline-block;
  width: 3px;
  background: #55daa8;
  margin: 0 1px;
  animation: heartbeat 1.2s ease-in-out infinite;
  vertical-align: bottom;
}
@keyframes flow-dash {
  to { stroke-dashoffset: -20; }
}
.flow-line {
  stroke-dasharray: 8 4;
  animation: flow-dash 1s linear infinite;
}
@keyframes glow-pulse {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}
.status-active {
  animation: glow-pulse 2s ease-in-out infinite;
}
/* ===== 优先级重构：状态栏、字号、错误处理 ===== */

/* --- 顶部运行状态栏（醒目，14px+） --- */
.runtime-strip {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  background: linear-gradient(90deg, #0d1b2e 0%, #122540 100%);
  border-bottom: 1px solid #1e3a5f;
  font-size: 14px;
  min-height: 44px;
}
.conn-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 600;
}
.conn-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #8a94a6;
  display: inline-block;
}
.conn-status.connected .conn-dot {
  background: #55daa8;
  box-shadow: 0 0 8px #55daa8;
  animation: glow-pulse 2s ease-in-out infinite;
}
.conn-status.connected #connText { color: #55daa8; }
.conn-status.disconnected .conn-dot {
  background: #ff7b7b;
  box-shadow: 0 0 8px #ff7b7b;
}
.conn-status.disconnected #connText { color: #ff7b7b; }
.runtime-sep { color: #2a4a6f; }
.runtime-meta {
  font-size: 13px;
  color: #8a94a6;
}
.mode-tag {
  font-size: 13px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 4px;
}
.sim-mode {
  background: rgba(255, 209, 102, 0.15);
  color: #ffd166;
  border: 1px solid rgba(255, 209, 102, 0.4);
}
.live-locked {
  background: rgba(255, 123, 123, 0.15);
  color: #ff7b7b;
  border: 1px solid rgba(255, 123, 123, 0.4);
}
.runtime-clock {
  margin-left: auto;
  font-size: 13px;
  color: #8a94a6;
  font-variant-numeric: tabular-nums;
}

/* --- 字号层级（正文 14-16px，辅助 12-13px） --- */
body { font-size: 15px; }
.main { font-size: 15px; }
.card, .cockpit-card, .panel {
  font-size: 14px;
}
.card small, .cockpit-card small, .panel small,
.card .meta, .cockpit-card .meta,
.footer, .footer small {
  font-size: 12px;
}
.footer-warning { font-size: 12px !important; }
/* 底部不再 8-9px */
.cockpit-graph-caption,
.graph-caption,
.chart-caption {
  font-size: 12px !important;
}
/* 关键数字突出 */
.kpi-value, .metric-value, .big-number {
  font-size: 24px;
  font-weight: 700;
  color: #e8f4ff;
}
.kpi-label, .metric-label {
  font-size: 13px;
  color: #8a94a6;
}
/* 异常状态用颜色+加粗，不用发光 */
.status-error, .alert-critical {
  color: #ff7b7b;
  font-weight: 700;
}
.status-warn {
  color: #ffd166;
  font-weight: 600;
}
.status-ok {
  color: #55daa8;
  font-weight: 600;
}
/* 减少发光装饰 */
.brain-node {
  filter: none !important;
}

/* --- 面板加载失败状态 --- */
.panel-error {
  padding: 24px;
  text-align: center;
  color: #8a94a6;
  font-size: 14px;
  border: 1px dashed #2a4a6f;
  border-radius: 8px;
  margin: 12px 0;
}
.panel-error strong {
  color: #ffb3b3;
  display: block;
  margin-bottom: 8px;
  font-size: 15px;
}
.panel-error button {
  margin-top: 12px;
  padding: 8px 20px;
  background: #48d5f5;
  color: #0a1628;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
}
.panel-error .error-time {
  font-size: 12px;
  color: #5a6a85;
  margin-top: 8px;
  display: block;
}

/* --- 数据来源标注 --- */
.data-source {
  font-size: 11px;
  color: #5a6a85;
  margin-top: 6px;
  display: block;
}
.data-source .src-real { color: #55daa8; }
.data-source .src-sim { color: #ffd166; }

/* --- 导航分组 --- */
.nav-group {
  margin-bottom: 16px;
}
.nav-group-title {
  font-size: 12px;
  font-weight: 700;
  color: #5a6a85;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 8px 16px 4px;
}
.nav-group-items {
  display: flex;
  flex-direction: column;
}

/* --- 首页决策面板 --- */
.decision-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}
.decision-card {
  background: #0f2038;
  border: 1px solid #1e3a5f;
  border-radius: 8px;
  padding: 16px;
}
.decision-card h3 {
  font-size: 15px;
  margin: 0 0 12px 0;
  color: #73cff8;
  display: flex;
  align-items: center;
  gap: 8px;
}
.decision-card ul {
  margin: 0;
  padding: 0 0 0 18px;
  font-size: 14px;
}
.decision-card li {
  margin-bottom: 6px;
  color: #c8d8e8;
}

/* ============================================================
   QuantOS v2 · G0 视觉语言（G0.1-G0.7）
   约定：
   - 全部色值走 :root 变量，不硬编码
   - 琥珀(--state-simulated) 仅用于：顶部状态带、模拟标签、已过期标签
   - 涨跌色独立于状态色：--delta-up 绿涨 / --delta-down 红跌
   ============================================================ */
:root{
  /* G0.5 状态色 token */
  --state-ok:#55daa8;        /* 正常/接通：绿 */
  --state-unknown:#8a94a6;   /* 未知：中性灰 */
  --state-simulated:#ffd166; /* 模拟/已过期：琥珀（限三处使用） */
  --state-fail:#ff7b7b;      /* 失败：红 */
  /* G0.5 涨跌色 token（独立于状态色） */
  --delta-up:#22c55e;        /* 涨：绿 */
  --delta-down:#ef4444;      /* 跌：红 */
  --focus-ring:#5bd0ff;      /* 焦点环 */
  /* G0 布局 token */
  --line:#284963;
  --line-soft:#1e3a5f;
  --fill-card:#0e283c;
  --accent:#48d5f5;
  --text-main:#d9e8f6;
  --text-sub:#8a94a6;
  --text-dim:#5a6a85;
  /* G0.1 模拟斜纹（低透明度，不压文字） */
  --stripe-sim:repeating-linear-gradient(45deg,color-mix(in srgb,var(--state-simulated) 10%,transparent) 0 10px,transparent 10px 20px);
}

/* ---------- G0.1 形式编码 ---------- */
/* 真实数据：实线边框 + 实心填充 */
.form-real{border:1px solid var(--line);background:var(--fill-card);}
/* 结构示意/未接入：虚线边框 + 无填充；配 .sketch-note 做文字标注 */
.form-sketch{border:1px dashed var(--state-unknown);background:transparent;}
.sketch-note{display:inline-block;margin-top:8px;font-size:11px;color:var(--state-unknown);letter-spacing:.5px;}
/* 模拟/合成：斜纹底，低透明度；只铺绘图区(.form-sim)或卡片左侧窄带(.form-sim-edge)，不覆盖文字 */
.form-sim{background-image:var(--stripe-sim);}
.form-sim-edge{position:relative;}
.form-sim-edge::before{content:"";position:absolute;top:0;bottom:0;left:0;width:6px;border-radius:6px 0 0 6px;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--state-simulated) 45%,transparent) 0 6px,transparent 6px 12px);pointer-events:none;}
/* 只读/锁定：锁图标 + 中性色 */
.form-locked{color:var(--state-unknown);border:1px solid var(--line-soft);}
.lock-ico::before{content:"🔒";margin-right:6px;}
/* 读取/校验失败：红色边框 + 图标 + 文字 */
.form-error{border:1px solid var(--state-fail);color:var(--state-fail);}
.err-ico::before{content:"⚠";margin-right:6px;font-weight:700;}

/* ---------- G0.2 容器层级 ---------- */
/* L1 每页一个主视觉：最大面积 + 强调边 */
.l1-hero{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;background:var(--fill-card);padding:20px;margin-bottom:16px;}
/* L2 普通卡：标准圆角边框 */
.l2-card{border:1px solid var(--line);border-radius:10px;background:var(--fill-card);padding:16px;}
/* L3 接入行：无框，底部分隔线 */
.l3-row{border:0;border-bottom:1px solid var(--line-soft);padding:12px 4px;}
.l3-row:last-child{border-bottom:0;}

/* ---------- G0.3 接入行结构 ---------- */
.access-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name tag" "desc desc";gap:2px 12px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--line-soft);}
.access-row:last-child{border-bottom:0;}
.ar-name{grid-area:name;font-size:14px;color:var(--text-main);font-weight:600;}
.ar-tag{grid-area:tag;justify-self:end;}
.ar-desc{grid-area:desc;font-size:12px;color:var(--text-sub);line-height:1.6;margin-top:4px;}
.tag{display:inline-block;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid transparent;}
.tag-unknown{color:var(--state-unknown);border-color:var(--line);background:color-mix(in srgb,var(--state-unknown) 8%,transparent);}
.tag-ok{color:var(--state-ok);border-color:color-mix(in srgb,var(--state-ok) 40%,transparent);background:color-mix(in srgb,var(--state-ok) 12%,transparent);}
.tag-sim{color:var(--state-simulated);border-color:color-mix(in srgb,var(--state-simulated) 40%,transparent);background:color-mix(in srgb,var(--state-simulated) 12%,transparent);}
.tag-fail{color:var(--state-fail);border-color:color-mix(in srgb,var(--state-fail) 40%,transparent);background:color-mix(in srgb,var(--state-fail) 12%,transparent);}

/* ---------- G0.4 字体与数字 ---------- */
body{font-variant-numeric:tabular-nums;line-height:1.6;}
p,li,td,.panel-body,.message{line-height:1.6;}
em{font-style:normal;} /* G0.4 中文不用斜体 */
.val-unknown{font-weight:400;color:var(--state-unknown);font-size:13px;letter-spacing:.5px;}
.delta-up{color:var(--delta-up);}
.delta-down{color:var(--delta-down);}

/* ---------- G0.6 动效 ---------- */
/* 事件触发单次高亮 250ms，不循环 */
@keyframes g0-flash{0%{background-color:color-mix(in srgb,var(--accent) 28%,transparent);}100%{background-color:transparent;}}
.evt-flash{animation:g0-flash .25s ease-out 1;}
/* 无事件时静止：停掉常驻循环动画（呼吸灯/常驻脉冲），只保留事件触发类(.evt-flash/.price-up/.price-down/.kpi-flash/.kpi-updated) */
.live-indicator,.heartbeat-bar,.market-ticker,.status-active,.brain-node,.brain-link,.brain-core,.conn-status.connected .conn-dot{animation:none;}
/* 动效上限 300ms：收紧现有过渡 */
.funnel-bar,.verdict-bar-fill{transition-duration:.3s;}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important;}
}

/* ---------- G0.7 隐藏 V1 UI SHELL ---------- */
/* app.js page-heading 模板中首个 chip 即 "V1 UI SHELL" 标签，隐藏之（保留"只读 / 非实盘授权" chip） */
.page-heading .heading-tools>.chip:first-child{display:none;}
