/* ============================================================
   星河指挥部 · cosmic.css · 紫主红辅 · 护眼版
   加载顺序：必须放在 theme-bridge.css 之后（全站最后引入）
   原则：只换皮不换功能；保留所有 id/class 选择器；
         配色统一为「紫主红辅」：紫色为全站主调，红色仅出现在
         心跳脉搏（生命体征）这一处关键位置；去掉火橙、降辉光、
         提底色，长时间观看不刺眼。
   数据纪律：环形进度仅表示「能力就绪度」（真实计数），不编造经营率值
   ============================================================ */

:root{
  /* 紫主红辅色板（覆盖 theme-bridge 的绿 identity，仅作视觉，不动分组色） */
  --bg:#1A0D1F;                          /* 柔紫夜调，不黑不刺眼 */
  --panel:rgba(59,22,66,.55);
  --panel-2:rgba(43,16,48,.50);
  --line:rgba(176,38,207,.30);            /* 描边稍微提一档，辅助卡片浮起感 */
  --text:#FAEFFE;                        /* 提亮一档 · 紫底上清晰可读 */
  --text-strong:#FFFFFF;                 /* 主标题/关键数字 · 用纯白 */
  --muted:#DCC3DE;                       /* 紫灰提亮一档 · 副标/标签能看清 */
  --accent:#B026CF;                      /* 紫罗兰 · 全站主强调（紫色为主） */
  --accent-2:#8A17A8;                    /* 深紫（原九紫位） */
  --accent-3:#D98CF0;                    /* 浅紫点缀（原数据蓝位） */
  --danger:#F43F5E;                      /* 红 · 仅心跳/生命体征用 */
  --warn:#F59E0B;                        /* 暖橙 · 极少用，仅预警 */
  --cosmic-glow:0 0 16px rgba(176,38,207,.38);
  --cosmic-glow-v:0 0 16px rgba(138,23,168,.42);
  --cosmic-glow-b:0 0 14px rgba(244,63,94,.34);
  --beat:1.15s;                          /* 心跳周期 ≈ 52bpm 静息态，呼吸感 */

  /* 中文字体栈：苹方 → 鸿蒙 → 思源黑体 → 微软雅黑 → 苹方备用 → 系统默认 */
  --font-cosmic:"PingFang SC","HarmonyOS Sans SC","Noto Sans SC","Source Han Sans SC",
                "Microsoft YaHei",-apple-system,BlinkMacSystemFont,"Helvetica Neue",
                Arial,sans-serif;
  /* 等宽字体（数字/英文小标） */
  --font-mono-cosmic:ui-monospace,SFMono-Regular,"JetBrains Mono",Menlo,Consolas,monospace;
}

/* 全局字体 · 中文优先 · 关键数字用 tabular-nums */
html,body{
  font-family:var(--font-cosmic);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-feature-settings:"tnum" 1, "kern" 1;
  letter-spacing:.2px;
}
/* 数字默认 tabular，避免 BPM/计数跳动 */
.stat-v, .ring .ring-num, .vital-bpm b, .core-title b{
  font-variant-numeric:tabular-nums;
}

/* ===================== 全屏 Aurora 流光（紫调 · 降 bloom）===================== */
body::before{
  content:"";position:fixed;inset:-25%;z-index:-3;pointer-events:none;
  background:
    conic-gradient(from 0deg at 32% 38%,
      rgba(176,38,207,.10), transparent 26%,
      rgba(138,23,168,.13) 50%, transparent 72%,
      rgba(217,140,240,.08) 88%, transparent 100%);
  filter:blur(80px);
  opacity:.70;
  animation:auroraDrift 40s linear infinite;
}
/* 背景：宇宙深空底色极暗（v4：让 cosmic-galaxy.js 的银河/星云真正透出来） */
body{
  background:
    radial-gradient(1100px 720px at 50% 8%, rgba(138,23,168,.08), transparent 60%),
    linear-gradient(180deg, #0D040F 0%, #0D040F 55%, #0D040F 100%);
  background-attachment:fixed;
}
/* 让旧绿网格更淡，避免与星河冲突 */
.bg-tech::before{ opacity:.16; }
.bg-tech::after{ background:linear-gradient(180deg, transparent, rgba(176,38,207,.045), transparent); }

/* 全息扫描线（极淡 CRT 扫描，降透明度 + 慢脉冲，护眼） */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:9998;
  background:repeating-linear-gradient(to bottom, rgba(0,0,0,0) 0 2px, rgba(176,38,207,.035) 3px 4px);
  mix-blend-mode:soft-light;opacity:.18;
  animation:scanPulse 3.4s ease-in-out infinite;
}

/* ===================== 顶栏：透明玻璃指挥台 ===================== */
.topbar{
  padding:10px 0 6px;
  border-bottom:1px solid var(--line);
}
.brand{ gap:14px; }
.logo-img{
  width:46px;height:46px;border-radius:12px;
  box-shadow:0 0 18px rgba(176,38,207,.5), 0 0 34px rgba(138,23,168,.22);
  border:1px solid rgba(176,38,207,.32);
}
.brand h1{
  font-size:25px;letter-spacing:1px;
  background:linear-gradient(90deg,#B026CF,#D98CF0 50%,#8A17A8,#B026CF 100%);
  background-size:240% auto;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:none;
  filter:drop-shadow(0 0 12px rgba(176,38,207,.32));
  animation:gradientShift 9s linear infinite;
}
.brand .sub{ color:var(--muted);font-size:13px;letter-spacing:.5px;font-family:var(--font-cosmic);font-weight:500; }
.mode-badge{
  border:1px solid rgba(176,38,207,.30);
  background:rgba(59,22,66,.55);
  color:#F7EAFB;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  box-shadow:var(--cosmic-glow);
}
.mode-badge.live{ color:var(--accent);border-color:rgba(176,38,207,.5);box-shadow:0 0 16px rgba(176,38,207,.45); }
.mode-badge.live::before{ background:var(--accent);box-shadow:0 0 12px var(--accent); }

/* ===================== HUD 状态条：顶部细光带（紫调 · 默认立体） ===================== */
.hud{
  border:1px solid rgba(176,38,207,.30);
  background:linear-gradient(180deg, rgba(176,38,207,.16), rgba(43,16,48,.52));
  /* 双层投影 + 紫色辉光外放，让状态条自己浮起来 */
  box-shadow:
    0 6px 20px rgba(0,0,0,.38),
    inset 0 1px 0 rgba(255,255,255,.10),
    0 0 16px rgba(138,23,168,.10);
  animation:vitalGlow var(--beat) ease-in-out infinite;
}
.hud b{ color:var(--text-strong);font-weight:600; }
.hud-dot{ background:var(--accent);box-shadow:0 0 8px var(--accent); }
/* HUD 内文字按状态层级：标签用 light-strong，状态值用 strong */
.hud>*, .hud span, .hud small{ color:var(--text);font-family:var(--font-cosmic); }
.hud b, .hud strong, .hud .val, .hud>span b{ color:var(--text-strong);font-weight:700; }

/* ===================== 全息卡：通用流光描边 + 立体悬浮（宇宙舱体） ===================== */
.card, .agri-card, .rt-card, .tpl-group, .scene, .intel, .realtime, .agri,
.composer, .mb-card, .pulse-ticker, .agri-context, .scene-roi, .map-block{
  position:relative;overflow:visible;       /* 改 visible，让背后光晕溢出可见 */
  border:1px solid rgba(176,38,207,.32) !important;
  /* ★ 关键：默认态就有明显纵深，三层彩色投影 + 上下双高光，让卡片像悬浮舱体 */
  background:
    linear-gradient(180deg, rgba(69,32,83,.62), rgba(51,18,57,.58)) !important;
  box-shadow:
    /* 远端紫色辉光外放（让卡片背后透出彩光） */
    0 0 38px rgba(176,38,207,.32),
    0 0 70px rgba(138,23,168,.20),
    /* 中层鲜紫色辉光 */
    0 0 22px rgba(217,140,240,.18),
    /* 紧贴卡片的彩色边缘光（紫罗兰） */
    0 0 0 1px rgba(176,38,207,.22),
    /* 主投影：下沉深黑 */
    0 22px 48px rgba(0,0,0,.58),
    /* 副投影：右侧微反光 */
    14px 14px 28px rgba(0,0,0,.32),
    /* 顶部 1px 白高光 + 底部 1px 黑内阴影（让卡片自身看着"立体"） */
    inset 0 1px 0 rgba(255,255,255,.14),
    inset 0 -1px 0 rgba(0,0,0,.34);
  transition:transform .5s cubic-bezier(.16,1,.3,1), box-shadow .5s ease, border-color .5s ease;
  will-change:transform;
  -webkit-backdrop-filter:blur(10px);
          backdrop-filter:blur(10px);
}

/* ★ 卡片背后环境光晕：用 ::before 占满卡片区，模糊投影，实现"卡片在发光场中漂浮" */
.card::before, .agri-card::before, .rt-card::before, .tpl-group::before, .scene::before,
.mb-card::before, .pulse-ticker::before, .map-block::before{
  content:"";position:absolute;top:0;left:0;width:42%;height:2px;z-index:2;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  opacity:.85;pointer-events:none;border-radius:2px;
  animation:cosmicFlow 2600ms cubic-bezier(.4,0,.2,1) infinite;
}
.tpl-group.g-strat::before, .synthesis::before{ background:linear-gradient(90deg,transparent,var(--accent-2),transparent); }
.realtime::before, .hud-mode-blue::before{ background:linear-gradient(90deg,transparent,var(--accent-3),transparent); }

/* ★ 卡片背后"辐射光圈"（彩色辉光外放） */
.card::after, .agri-card::after, .rt-card::after, .tpl-group::after{
  content:"";position:absolute;inset:-22px;z-index:-1;pointer-events:none;
  background:
    radial-gradient(60% 50% at 50% 100%, rgba(176,38,207,.18), transparent 70%),
    radial-gradient(80% 60% at 50% 0%, rgba(138,23,168,.14), transparent 65%);
  filter:blur(14px);opacity:.85;
  animation:glowBreathe 5.2s ease-in-out infinite;
}
@keyframes glowBreathe{
  0%,100%{ opacity:.78; transform:translateY(0); }
  50%    { opacity:.95; transform:translateY(-3px); }
}

/* hover 全息增强（更明显抬升 + 紫色辉光外放 + 紫色亮边） */
.card:hover, .agri-card:hover, .rt-card:hover, .tpl-group:hover, .mb-card:hover{
  transform:translateY(-12px) scale(1.02);
  border-color:rgba(217,140,240,.72) !important;
  box-shadow:
    0 0 56px rgba(176,38,207,.55),
    0 0 96px rgba(138,23,168,.30),
    0 0 28px rgba(217,140,240,.30),
    0 0 0 1px rgba(217,140,240,.40),
    0 32px 72px rgba(0,0,0,.68),
    18px 18px 36px rgba(0,0,0,.42),
    inset 0 1px 0 rgba(255,255,255,.18),
    inset 0 -1px 0 rgba(0,0,0,.32);
}
.tpl:hover{ box-shadow:0 0 14px rgba(176,38,207,.34); border-color:rgba(176,38,207,.55); }

/* ===================== 中央指挥舱 cosmic-core ===================== */
.cosmic-core{
  position:relative;margin:18px 0 22px;padding:26px 22px 18px;border-radius:24px;
  background:
    radial-gradient(760px 420px at 50% -8%, rgba(176,38,207,.20), transparent 62%),
    radial-gradient(620px 320px at 50% 125%, rgba(252,211,77,.10), transparent 60%),
    linear-gradient(180deg, rgba(43,16,48,.58), rgba(26,10,30,.52));
  border:1px solid rgba(176,38,207,.38);
  /* 暗紫金属舱：双层投影 + 紫红/金光晕外放 + 顶高光 */
  box-shadow:
    0 24px 64px rgba(0,0,0,.55),
    0 8px 22px rgba(0,0,0,.32),
    0 0 32px rgba(176,38,207,.18),
    0 0 64px rgba(252,211,77,.08),
    inset 0 1px 0 rgba(255,255,255,.10),
    inset 0 -1px 0 rgba(0,0,0,.30);
  overflow:hidden;
  perspective:1200px;
  animation:vitalGlow var(--beat) ease-in-out infinite;
}
/* 顶部流光：紫红 → 金 → 紫红，科技扫描感 */
.cosmic-core::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;z-index:4;
  background:linear-gradient(90deg,transparent,#B026CF 40%,#FCD34D 55%,#B026CF 70%,transparent);
  animation:cosmicFlow 3400ms ease-in-out infinite;
  box-shadow:0 0 10px rgba(176,38,207,.45);
}
.cosmic-core::after{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:conic-gradient(from 0deg at 50% 50%, rgba(176,38,207,.06), transparent 30%, rgba(138,23,168,.10) 55%, transparent 80%, rgba(252,211,77,.05) 100%);
  animation:auroraDrift 32s linear infinite;
  opacity:.6;
}
.core-grid{
  display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:20px;align-items:center;
  transform-style:preserve-3d;transition:transform .2s ease-out;
  position:relative;z-index:2;
}
.core-head{ grid-column:1/-1;display:flex;align-items:center;gap:12px;margin-bottom:8px;position:relative;z-index:2; }
.core-kicker{
  font-family:var(--font-mono-cosmic);font-size:11px;letter-spacing:3.5px;color:#FCD34D;text-transform:uppercase;
  padding:4px 10px;border-radius:999px;background:rgba(252,211,77,.08);border:1px solid rgba(252,211,77,.28);
  text-shadow:0 0 8px rgba(252,211,77,.35);
}
.core-title{
  font-size:24px;font-weight:800;color:transparent;letter-spacing:.8px;font-family:var(--font-cosmic);
  background:linear-gradient(90deg,#F7EAFB 0%,#E9A0FF 45%,#FCD34D 100%);
  -webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 0 12px rgba(176,38,207,.35)) drop-shadow(0 2px 4px rgba(0,0,0,.45));
}
.core-title b{ background:linear-gradient(90deg,#FCD34D,#FDE68A);-webkit-background-clip:text;background-clip:text;color:transparent; }

/* 左侧：旋转基地数字孪生 + 全息投影光束 */
.core-globe{ position:relative;height:200px;display:flex;align-items:center;justify-content:center; }
.globe-ring{ position:absolute;border-radius:50%;border:1px solid rgba(176,38,207,.32); }
.globe-ring.r1{ width:160px;height:160px;animation:cosmicSpin 18s linear infinite; box-shadow:0 0 14px rgba(176,38,207,.25); }
.globe-ring.r2{ width:200px;height:200px;border-color:rgba(252,211,77,.32);animation:cosmicSpin 26s linear infinite reverse; box-shadow:0 0 14px rgba(252,211,77,.18); }
.globe-ring.r3{ width:120px;height:120px;border-color:rgba(138,23,168,.36);animation:cosmicSpin 12s linear infinite; box-shadow:0 0 14px rgba(138,23,168,.25); }
/* 全息投影光束（柔和紫） */
.globe-projector{
  position:absolute;bottom:6px;left:50%;width:120px;height:130px;transform:translateX(-50%);
  background:linear-gradient(to bottom, rgba(176,38,207,.30), rgba(138,23,168,.06) 70%, transparent);
  clip-path:polygon(46% 0, 54% 0, 100% 100%, 0 100%);
  filter:blur(2px);opacity:.5;pointer-events:none;z-index:1;
  animation:projectorFlicker 3.6s ease-in-out infinite;
  mix-blend-mode:screen;
}
/* 中央指挥舱 v4：真·主星（自转纹理 + 大气层 + 极光云带） */
.globe-core{
  width:96px;height:96px;border-radius:50%;
  position:relative;
  isolation:isolate;
  /* 真·3D 球面：径向高光 + 紫调主面 + 背光阴影 */
  background:
    radial-gradient(circle at 28% 22%, rgba(255,255,255,.92) 0%, rgba(255,255,255,.22) 10%, transparent 35%),
    radial-gradient(circle at 38% 38%, #B026CF 0%, #8A17A8 45%, #2B1030 100%),
    radial-gradient(circle at 75% 78%, rgba(0,0,0,.65) 0%, rgba(0,0,0,.22) 25%, transparent 55%),
    radial-gradient(circle at 78% 92%, rgba(0,0,0,.55) 0%, rgba(0,0,0,.18) 22%, transparent 60%);
  box-shadow:
    /* 大气层 v5：紫红 + 金环，去粉 */
    0 0 0 1px rgba(176,38,207,.55),
    0 0 22px rgba(176,38,207,.70),
    0 0 50px rgba(138,23,168,.55),
    0 0 90px rgba(176,38,207,.42),
    0 0 140px rgba(252,211,77,.20),
    0 0 200px rgba(176,38,207,.22),
    0 24px 40px rgba(0,0,0,.65),
    inset 8px 10px 22px rgba(255,255,255,.32),
    inset -10px -12px 28px rgba(0,0,0,.60);
  display:flex;align-items:center;justify-content:center;font-size:34px;
  z-index:2;
  animation:cosmicPulse 3s ease-in-out infinite, heartbeat var(--beat) ease-in-out infinite;
}
.globe-core > span{
  filter:drop-shadow(0 0 8px rgba(255,255,255,.5)) drop-shadow(0 0 18px rgba(176,38,207,.8));
  position:relative;z-index:5;
}
/* 自转纹理层（独立元素，由 decision-3d.js 注入；fallback 用 ::before） */
.globe-core .globe-surface{
  position:absolute;inset:0;border-radius:50%;
  overflow:hidden;z-index:1;
  mix-blend-mode:overlay;
  background:
    repeating-linear-gradient(0deg,
      transparent 0, transparent 10%,
      rgba(255,255,255,.22) 11%, transparent 12%,
      transparent 24%, rgba(0,0,0,.30) 25%, transparent 26%,
      transparent 100%),
    radial-gradient(ellipse 80% 50% at 50% 25%, rgba(255,255,255,.25) 0%, transparent 50%),
    radial-gradient(ellipse 90% 50% at 50% 75%, rgba(0,0,0,.35) 0%, transparent 60%);
  animation:globeSurfaceSpin 22s linear infinite;
  pointer-events:none;
}
@keyframes globeSurfaceSpin{ to{ transform:rotate(360deg); } }
/* 极地暗带 */
.globe-core::before{
  content:"";position:absolute;inset:0;border-radius:50%;
  pointer-events:none;z-index:4;
  background:
    radial-gradient(ellipse 90% 14% at 50% 0%, rgba(0,0,0,.65) 0%, transparent 70%),
    radial-gradient(ellipse 90% 14% at 50% 100%, rgba(0,0,0,.65) 0%, transparent 70%);
}
/* 360° 环绕数据光环（双向旋转 conic 弧，紫） */
.globe-core::before, .globe-core::after{
  content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:1;
}
.globe-core::before{
  inset:-28px;
  background:conic-gradient(from 0deg, transparent 0 68%, rgba(176,38,207,.72) 86%, transparent 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 7px), #000 calc(100% - 7px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 7px), #000 calc(100% - 7px));
  animation:cosmicSpin 9s linear infinite;
}
.globe-core::after{
  inset:-44px;
  background:conic-gradient(from 0deg, transparent 0 58%, rgba(138,23,168,.62) 80%, transparent 100%);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 6px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 6px));
  animation:cosmicSpin 14s linear infinite reverse;
}
.globe-label{ position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;color:var(--muted);font-family:ui-monospace,monospace;letter-spacing:1px; }

/* 中央：三环仪表（能力就绪度，真实计数）+ 心跳辉光同步 */
.core-rings{ display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap; }
.ring{ position:relative;width:96px;height:96px;animation:vitalGlow var(--beat) ease-in-out infinite; }
.ring svg{ transform:rotate(-90deg);width:96px;height:96px;display:block; }
.ring .track{ fill:none;stroke:rgba(255,255,255,.08);stroke-width:8; }
.ring .bar{ fill:none;stroke-width:8;stroke-linecap:round;filter:drop-shadow(0 0 6px currentColor); }
.ring .ring-inner{ position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center; }
.ring .ring-num{ font-size:21px;font-weight:700;color:#F7EAFB;font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace; }
.ring .ring-label{ font-size:11px;color:var(--muted);margin-top:2px;letter-spacing:.5px; }

/* 右侧：实时数字墙 */
.core-stats{ display:flex;flex-direction:column;gap:10px; }
.stat-row{ display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 12px;border-radius:12px;background:rgba(59,22,66,.50);
  border:1px solid rgba(176,38,207,.22);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  /* 行默认即有立体感：阴影抬升 + 顶高光 */
  box-shadow:0 4px 14px rgba(0,0,0,.32), 0 0 0 1px rgba(138,23,168,.05), inset 0 1px 0 rgba(255,255,255,.06);
  animation:vitalGlow var(--beat) ease-in-out infinite; }
.stat-k{ font-size:11.5px;color:var(--muted);letter-spacing:.5px;font-family:var(--font-cosmic); }
.stat-v{ font-size:15px;font-weight:700;color:var(--text-strong);font-family:var(--font-mono-cosmic);text-shadow:0 0 8px rgba(176,38,207,.18); }
.stat-v.ok{ color:var(--accent); }
.stat-v.violet{ color:var(--accent-2); }
.stat-v.blue{ color:var(--accent-3); }
.core-note{ grid-column:1/-1;margin-top:6px;font-size:11px;color:var(--muted);opacity:.85;line-height:1.5; }

/* 心跳脉搏条（ECG 波形 + BPM）—— 全站唯一的「红色」使用处 */
.core-vital{
  grid-column:1/-1;display:flex;align-items:center;gap:16px;margin-top:14px;
  padding:10px 14px;border-radius:16px;
  background:linear-gradient(90deg, rgba(176,38,207,.12), rgba(138,23,168,.09));
  border:1px solid rgba(176,38,207,.18);position:relative;z-index:2;
  box-shadow:inset 0 0 22px rgba(176,38,207,.05);
}
.vital-bpm{ display:flex;align-items:baseline;gap:4px;font-family:var(--font-mono-cosmic);white-space:nowrap;
  animation:heartbeat var(--beat) ease-in-out infinite; }
.vital-bpm .heart{ color:var(--danger);font-size:22px;filter:drop-shadow(0 0 10px rgba(244,63,94,.7)); }
.vital-bpm b{ font-size:26px;color:var(--danger);font-variant-numeric:tabular-nums;font-weight:800;text-shadow:0 0 12px rgba(244,63,94,.4); }
.vital-bpm small{ font-size:11px;color:var(--muted);letter-spacing:1px;font-family:var(--font-cosmic); }
.core-ecg{ flex:1;height:54px;width:100%;display:block; }

@keyframes cosmicSpin{ to{ transform:rotate(360deg); } }
@keyframes cosmicPulse{ 50%{ box-shadow:0 0 46px rgba(176,38,207,.85), inset 0 0 20px rgba(0,0,0,.38); } }
@keyframes cosmicFlow{ 0%{transform:translateX(-120%)} 100%{transform:translateX(120%)} }
@keyframes heartbeat{
  0%   { transform:scale(1); }
  10%  { transform:scale(1.07); }
  22%  { transform:scale(1); }
  34%  { transform:scale(1.045); }
  48%  { transform:scale(1); }
  100% { transform:scale(1); }
}
@keyframes vitalGlow{
  0%   { box-shadow:0 8px 28px rgba(0,0,0,.42), 0 0 0 1px rgba(138,23,168,.08), inset 0 1px 0 rgba(255,255,255,.06); }
  50%  { box-shadow:0 8px 28px rgba(0,0,0,.42), 0 0 14px rgba(176,38,207,.20), inset 0 1px 0 rgba(255,255,255,.06); }
  100% { box-shadow:0 8px 28px rgba(0,0,0,.42), 0 0 0 1px rgba(138,23,168,.08), inset 0 1px 0 rgba(255,255,255,.06); }
}
@keyframes auroraDrift{ to{ transform:rotate(360deg); } }
@keyframes gradientShift{ to{ background-position:240% center; } }
@keyframes scanPulse{ 0%,100%{ opacity:.16; } 50%{ opacity:.24; } }
@keyframes projectorFlicker{ 0%,100%{ opacity:.46; } 50%{ opacity:.60; } }

/* ===================== 等距赛博网格地面（紫调透视纵深 + 呼吸）===================== */
.core-floor{
  position:absolute;left:-14%;right:-14%;bottom:-4%;height:66%;z-index:0;pointer-events:none;
  transform:perspective(440px) rotateX(63deg);transform-origin:bottom center;
  background-image:
    linear-gradient(rgba(176,38,207,.28) 1px, transparent 1px),
    linear-gradient(90deg, rgba(176,38,207,.28) 1px, transparent 1px),
    linear-gradient(rgba(138,23,168,.16) 1px, transparent 1px),
    linear-gradient(90deg, rgba(138,23,168,.16) 1px, transparent 1px);
  background-size:30px 30px, 30px 30px, 30px 30px, 30px 30px;
  -webkit-mask-image:linear-gradient(to top, #000 10%, transparent 92%);
          mask-image:linear-gradient(to top, #000 10%, transparent 92%);
  opacity:.46;
  animation:cyberFloor 6.5s linear infinite, floorBreathe var(--beat) ease-in-out infinite;
}
/* 第二层更深网格（视差纵深） */
.core-floor::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(138,23,168,.18) 1px, transparent 1px),
    linear-gradient(90deg, rgba(138,23,168,.18) 1px, transparent 1px);
  background-size:60px 60px;
  -webkit-mask-image:linear-gradient(to top, #000 4%, transparent 70%);
          mask-image:linear-gradient(to top, #000 4%, transparent 70%);
  opacity:.42;
}
/* 地平线辉光（网格消失处的发光横带，紫红→金） */
.core-floor::after{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg, transparent, rgba(176,38,207,.82), rgba(138,23,168,.72), rgba(252,211,77,.80), transparent);
  box-shadow:0 0 18px rgba(176,38,207,.55), 0 0 32px rgba(252,211,77,.24);
  filter:blur(.4px);
}
@keyframes cyberFloor{
  from{ background-position:0 0,0 0,0 0,0 0; }
  to{ background-position:0 30px,0 30px,0 30px,0 30px; }
}
@keyframes floorBreathe{ 0%,100%{ opacity:.40; filter:brightness(1); } 50%{ opacity:.56; filter:brightness(1.18); } }

/* ===================== 基础层写死绿/金元素 → 紫主红辅统一 ===================== */
.btn.primary{ background:var(--accent); color:#1a0d1f; box-shadow:0 0 14px rgba(176,38,207,.32); }
.btn.primary:hover{ filter:brightness(1.08); box-shadow:0 0 22px rgba(176,38,207,.48); }
.mode-badge.live{ color:var(--accent); border-color:rgba(176,38,207,.5); }
.mode-badge.live::before{ background:var(--accent); box-shadow:0 0 12px var(--accent); }
.synthesis-body .syn-h3,
.scene-h,
.rt-pill.ok{ color:var(--accent) !important; }
.card .stance[data-stance="稳健"]{ color:#D98CF0; border-color:#452053; background:rgba(176,38,207,.08); }
.drill-crumb-item{ color:var(--accent); }
.drill-crumb-item:hover{ background:rgba(176,38,207,.12); }
.scene-tab.active{ background:var(--accent); color:#1a0d1f; border-color:var(--accent); box-shadow:0 0 12px rgba(176,38,207,.34); }
.agri-item .conf{ color:var(--accent); }
.mb-body b{ color:var(--accent); }
.cat-h{ color:#D98CF0; border-left:3px solid var(--accent); }

/* ===================== 通用文字提亮层 · 解决「紫底糊字」 ===================== */
/* 卡片内标题一律偏白，让紫底上的小字清楚可读 */
.card h1, .card h2, .card h3, .card h4, .card h5,
.agri-card h1, .agri-card h2, .agri-card h3, .agri-card h4,
.rt-card h1, .rt-card h2, .rt-card h3, .rt-card h4,
.tpl-group h1, .tpl-group h2, .tpl-group h3, .tpl-group h4,
.scene h3, .scene h4, .intel h3, .intel h4,
.mb-card h3, .mb-card h4,
.realtime h3, .realtime h4,
.pulse-ticker h3, .map-block h3,
.synthesis-body h3{
  color:var(--text-strong);
  font-weight:700;
  font-family:var(--font-cosmic);
}
/* 卡片内副标/小字 · 用 muted 但提亮一档 */
.card small, .card .desc, .card .sub, .card .meta,
.agri-card small, .rt-card small, .tpl-group small, .scene small{
  color:var(--muted);
  font-weight:500;
}
/* 顶栏「模式：待连接」按钮 · 加点悬浮 hover */
.btn{ transition:all .3s cubic-bezier(.16,1,.3,1); }
.btn:hover:not(.primary){ transform:translateY(-1px); border-color:rgba(217,140,240,.55); }
.mode-badge{ transition:all .3s ease; }
.mode-badge:hover{ transform:translateY(-1px); box-shadow:0 0 18px rgba(176,38,207,.5); }

/* ===================== 移动端适配 ===================== */
@media (max-width:900px){
  .core-grid{ grid-template-columns:1fr; }
  .core-globe{ height:160px; }
  .brand h1{ font-size:20px; }
  .core-vital{ flex-direction:column;align-items:stretch;gap:8px; }
}
@media (prefers-reduced-motion: reduce){
  body::before, body::after,
  .globe-ring,.globe-core,.cosmic-core,.cosmic-core::before,.cosmic-core::after,
  .core-floor,.core-floor::before,.globe-core::before,.globe-core::after,
  .card::before,.agri-card::before,.rt-card::before,.tpl-group::before,.scene::before,
  .mb-card::before,.pulse-ticker::before,.map-block::before,
  .card::after,.agri-card::after,.rt-card::after,.tpl-group::after,
  .aurora-band,.starfield,.starfield i, .shooting-star, .shooting-star::before,
  .float-card-1,.float-card-2,.float-card-3,.float-card-4,
  .ring,.stat-row,.hud,.vital-bpm,.globe-projector,.brand h1{
    animation:none !important;
  }
  .card:hover, .agri-card:hover, .rt-card:hover, .tpl-group:hover, .mb-card:hover{
    transform:none;
  }
}

/* ===================== 真·宇宙悬浮层（错峰浮动 + 极光带 + 星点 + 流星） ===================== */

/* ★ 4 张数据卡片错峰呼吸（非齐步），给「空间错落感」 */
.float-card-1{ animation:floatY 6.4s ease-in-out infinite; }
.float-card-2{ animation:floatY 5.8s ease-in-out -.6s infinite; }
.float-card-3{ animation:floatY 7.1s ease-in-out -1.2s infinite; }
.float-card-4{ animation:floatY 6.7s ease-in-out -1.8s infinite; }
@keyframes floatY{
  0%,100%{ transform:translateY(0); }
  50%    { transform:translateY(-6px); }
}

/* ★ 极光带：横亘屏幕的紫光带，从左侧流入，循环 */
.aurora-band{
  position:fixed;left:-10%;right:-10%;top:36%;
  height:160px;z-index:-2;pointer-events:none;
  background:linear-gradient(180deg,
    transparent 0%,
    rgba(176,38,207,.18) 18%,
    rgba(138,23,168,.22) 38%,
    rgba(217,140,240,.16) 58%,
    rgba(176,38,207,.10) 78%,
    transparent 100%);
  filter:blur(36px);opacity:.7;
  transform:rotate(-4deg);
  animation:auroraSlide 28s linear infinite;
}
@keyframes auroraSlide{
  0%  { transform:translateX(-12%) rotate(-4deg); opacity:.55; }
  50% { transform:translateX(4%) rotate(-4deg);   opacity:.8;  }
  100%{ transform:translateX(-12%) rotate(-4deg); opacity:.55; }
}

/* ★ 星空层：CSS 多光点（不依赖 canvas，真正"宇宙深邃"） */
.starfield{
  position:fixed;inset:0;z-index:-3;pointer-events:none;overflow:hidden;
  background:
    radial-gradient(1px 1px at 12% 18%, rgba(255,255,255,.85), transparent 50%),
    radial-gradient(1px 1px at 28% 8%, rgba(247,234,251,.8), transparent 50%),
    radial-gradient(1.2px 1.2px at 56% 22%, rgba(255,255,255,.7), transparent 50%),
    radial-gradient(1px 1px at 78% 12%, rgba(217,140,240,.85), transparent 50%),
    radial-gradient(1px 1px at 88% 36%, rgba(255,255,255,.7), transparent 50%),
    radial-gradient(1px 1px at 8% 56%, rgba(176,38,207,.85), transparent 50%),
    radial-gradient(1.4px 1.4px at 64% 60%, rgba(255,255,255,.85), transparent 50%),
    radial-gradient(1px 1px at 22% 76%, rgba(247,234,251,.7), transparent 50%),
    radial-gradient(1.2px 1.2px at 92% 84%, rgba(217,140,240,.75), transparent 50%),
    radial-gradient(1px 1px at 42% 92%, rgba(255,255,255,.7), transparent 50%),
    radial-gradient(1px 1px at 6% 32%, rgba(255,255,255,.65), transparent 50%),
    radial-gradient(1.2px 1.2px at 38% 46%, rgba(247,234,251,.85), transparent 50%);
  animation:starTwinkle 5s ease-in-out infinite;
}
.starfield i{
  position:absolute;display:block;width:2px;height:2px;border-radius:50%;
  background:rgba(255,255,255,.92);box-shadow:0 0 6px rgba(217,140,240,.6);
}
.starfield i:nth-child(1){ top:8%;  left:8%;  animation:twinkle 2.4s ease-in-out infinite; }
.starfield i:nth-child(2){ top:16%; left:34%; animation:twinkle 3.1s ease-in-out -0.6s infinite; }
.starfield i:nth-child(3){ top:42%; left:18%; animation:twinkle 2.7s ease-in-out -1.2s infinite; }
.starfield i:nth-child(4){ top:62%; left:78%; animation:twinkle 3.5s ease-in-out -1.8s infinite; }
.starfield i:nth-child(5){ top:78%; left:46%; animation:twinkle 2.9s ease-in-out -2.3s infinite; }
.starfield i:nth-child(6){ top:24%; left:88%; animation:twinkle 3.3s ease-in-out -0.9s infinite; }
.starfield i:nth-child(7){ top:88%; left:14%; animation:twinkle 2.6s ease-in-out -1.4s infinite; }
.starfield i:nth-child(8){ top:54%; left:64%; animation:twinkle 3.8s ease-in-out -2.6s infinite; }
@keyframes twinkle{
  0%,100%{ opacity:.3;  transform:scale(1); }
  50%    { opacity:1;   transform:scale(1.6); }
}
@keyframes starTwinkle{
  0%,100%{ filter:brightness(1); }
  50%    { filter:brightness(1.35); }
}

/* ★ 流星：偶现斜划（每 8-12 秒一次） */
.shooting-star{
  position:fixed;left:0;top:0;width:180px;height:1.5px;z-index:-2;pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.0) 0%, rgba(255,255,255,.95) 60%, rgba(217,140,240,.6) 100%);
  filter:drop-shadow(0 0 6px rgba(217,140,240,.8));
  border-radius:1px;
  opacity:0;
  transform:translate(-300px,-100px) rotate(20deg);
  animation:shoot 11s linear infinite;
}
.shooting-star::before{
  content:"";position:absolute;left:-6px;top:-3px;width:6px;height:6px;border-radius:50%;
  background:rgba(255,255,255,.95);box-shadow:0 0 10px rgba(255,255,255,.9), 0 0 18px rgba(217,140,240,.8);
}
.shooting-star.s2{ top:30%; animation-delay:3.6s; animation-duration:13s; }
.shooting-star.s3{ top:62%; animation-delay:6.8s; animation-duration:9.5s; }
@keyframes shoot{
  0%   { opacity:0; transform:translate(-300px,-100px) rotate(20deg); }
  4%   { opacity:1; }
  18%  { opacity:1; transform:translate(110vw, 200px) rotate(20deg); }
  20%  { opacity:0; }
  100% { opacity:0; }
}

/* ★ 标题品牌字 · 给浮动光晕（与中央舱呼应） */
.brand h1{
  filter:drop-shadow(0 0 14px rgba(176,38,207,.55)) drop-shadow(0 0 28px rgba(138,23,168,.28));
}

/* ===================== 移动端/触屏性能降级（2026-09-07 性能专项） =====================
   原则：保持设计效果（配色/星球/辉光全保留），只砍移动端 GPU 杀手：
   · filter:blur 大面积层、mix-blend-mode 全屏层
   · box-shadow / filter / background-position 的"帧动画"（每帧重绘，非合成层）
   · backdrop-filter（移动端著名性能杀手，保留半透明底色视觉几乎无差）
   保留的 5 类关键动画（全部为 transform/opacity 合成层动画，GPU 便宜）：
   ① 主星呼吸+心跳 cosmicPulse/heartbeat ② 卡片顶部流光 cosmicFlow
   ③ 晨检卡错峰浮动 floatY ④ 星点闪烁 twinkle ⑤ 主星光环 cosmicSpin
   ================================================================================ */
@media (pointer: coarse), (max-width: 820px){
  /* 1. 全屏极光：blur(80px) 全屏旋转 → 降模糊 + 停动画（静态极光依然好看） */
  body::before{ filter:blur(24px); animation:none; }
  /* 2. 全屏 CRT 扫描线（mix-blend-mode:soft-light 全屏合成）→ 关闭 */
  body::after{ display:none; }
  /* 3. 卡片 backdrop-filter + 常驻 will-change 合成层 → 关闭（半透明底色保留） */
  .card, .agri-card, .rt-card, .tpl-group, .scene, .intel, .realtime, .agri,
  .composer, .mb-card, .pulse-ticker, .agri-context, .scene-roi, .map-block,
  .mode-badge, .stat-row{
    -webkit-backdrop-filter:none; backdrop-filter:none;
    will-change:auto;
  }
  /* 4. 卡片辐射光圈（inset:-22px + blur(14px) + glowBreathe 帧动画）→ 关闭 */
  .card::after, .agri-card::after, .rt-card::after, .tpl-group::after{ display:none; }
  /* 5. vitalGlow（box-shadow 帧动画 → 每帧全卡重绘）→ 关闭 */
  .hud, .cosmic-core, .ring, .stat-row{ animation:none; }
  /* 6. 地面网格 background-position 帧动画 + floorBreathe filter 动画 → 静态网格 */
  .core-floor{ animation:none; }
  /* 7. 极光带 blur(36px) 全屏漂移 → 降模糊 + 停动画 */
  .aurora-band{ filter:blur(16px); animation:none; }
  /* 8. 全屏 starfield 的 filter:brightness 帧动画 → 关闭（静态星点保留） */
  .starfield{ animation:none; }
  /* 9. 流星 → 移动端关闭（偶现装饰，触屏不可感知） */
  .shooting-star{ display:none; }
  /* 10. 指挥舱扫描光 sheen（conic 旋转帧动画）→ 关闭，保留静态舱体 */
  .cosmic-core::after{ animation:none; }
  /* 11. theme-bridge 背景层：gridDrift（background-position 帧动画）、
         scanSweep（top 帧动画 → 触发布局）、bg-dot 浮动 → 全部静态 */
  .bg-tech::before, .bg-tech::after{ animation:none; }
  .bg-dot{ animation:none; opacity:.5; }
  /* 12. 标题渐变流动 + drop-shadow → 静态渐变字（保留配色） */
  .brand h1{ animation:none; filter:drop-shadow(0 0 10px rgba(176,38,207,.4)); }
}
