/* ============================================================
 * galaxy-v16-unified.css —— 产业星球区「紫红金·数字孪生科技风」
 * 覆盖 galaxy-v16.css 中多彩卡通身份色，确保与顶部 VR 开屏/晨检条协调。
 * 核心升级：emoji → 科技感 SVG 线条图标；球面加经纬网格、扫描线、编号 HUD。
 * 色相纪律：主色 286–296°（紫红）/ 辅助 46°（金）/ 点缀 340°（玫红）；
 * 禁 230–283° 蓝相、禁大面积绿/橙。
 * ============================================================ */

/* ============================================================
 *  一、轨道统一：紫红实环 + 金色虚环 + 科技刻度
 * ============================================================ */
.gx-orbit-1{
  border-color:rgba(176,38,207,.55)!important;
  box-shadow:
    0 0 0 1px rgba(176,38,207,.12),
    0 0 18px rgba(176,38,207,.25),
    inset 0 0 18px rgba(176,38,207,.18)!important;
}
.gx-orbit-2{
  border-color:rgba(252,211,77,.42)!important;
  border-style:dashed!important;
  box-shadow:
    0 0 0 1px rgba(252,211,77,.08),
    0 0 12px rgba(252,211,77,.18)!important;
}

/* ============================================================
 *  二、中央大球：数字孪生核心星球
 * ============================================================ */
.gx-core,
.gx-core[data-planet]{
  position:relative;
  border-radius:50%;
  background:
    radial-gradient(circle at 32% 26%, rgba(252,211,77,.28) 0%, transparent 32%),
    radial-gradient(ellipse 60% 18% at 50% 30%, rgba(217,140,240,.35), transparent 55%),
    radial-gradient(ellipse 45% 12% at 65% 70%, rgba(138,23,168,.65), transparent 60%),
    radial-gradient(circle at 50% 50%, #C13FE0 0%, #B026CF 38%, #8A17A8 72%, #2B1030 100%)!important;
  border-color:rgba(252,211,77,.45)!important;
  box-shadow:
    0 0 0 1px rgba(252,211,77,.25),
    0 0 48px 6px rgba(176,38,207,.55),
    0 0 110px rgba(176,38,207,.28),
    0 18px 38px rgba(0,0,0,.55),
    inset 0 0 60px rgba(255,255,255,.12),
    inset 0 -28px 40px rgba(0,0,0,.35),
    inset 16px 16px 60px rgba(255,255,255,.20)!important;
  overflow:visible!important;
}

/* 外层 HUD 旋转环 */
.gx-core .gx-hud-ring{
  position:absolute;
  inset:-18%;
  border-radius:50%;
  border:1px solid rgba(252,211,77,.35);
  border-top-color:rgba(176,38,207,.85);
  border-bottom-color:rgba(176,38,207,.85);
  box-shadow:0 0 20px rgba(176,38,207,.22), inset 0 0 20px rgba(176,38,207,.10);
  animation:gxHudSpin 14s linear infinite;
  pointer-events:none;
}
.gx-core .gx-hud-ring::before{
  content:"";
  position:absolute;
  inset:8%;
  border-radius:50%;
  border:1px dashed rgba(252,211,77,.28);
  animation:gxHudSpin 22s linear infinite reverse;
}
.gx-core .gx-hud-ring::after{
  content:"";
  position:absolute;
  inset:-6%;
  border-radius:50%;
  border:1px solid rgba(217,140,240,.20);
  border-left-color:rgba(252,211,77,.55);
  animation:gxHudSpin 8s linear infinite;
}

/* 经纬网格 */
.gx-core .gx-grid,
.gx-planet .gx-grid{
  position:absolute;
  inset:0;
  border-radius:50%;
  pointer-events:none;
  background:
    repeating-linear-gradient(0deg, transparent 0px, transparent 9px, rgba(255,255,255,.06) 9px, rgba(255,255,255,.06) 10px),
    repeating-linear-gradient(90deg, transparent 0px, transparent 9px, rgba(255,255,255,.06) 9px, rgba(255,255,255,.06) 10px);
  opacity:.60;
  animation:gxGridPulse 4s ease-in-out infinite;
}
.gx-planet .gx-grid{
  background:
    repeating-linear-gradient(0deg, transparent 0px, transparent 7px, rgba(255,255,255,.07) 7px, rgba(255,255,255,.07) 8px),
    repeating-linear-gradient(90deg, transparent 0px, transparent 7px, rgba(255,255,255,.07) 7px, rgba(255,255,255,.07) 8px);
  opacity:.50;
}

/* 扫描线 */
.gx-core .gx-scan,
.gx-planet .gx-scan{
  position:absolute;
  inset:-5%;
  border-radius:50%;
  pointer-events:none;
  overflow:hidden;
}
.gx-core .gx-scan::before,
.gx-planet .gx-scan::before{
  content:"";
  position:absolute;
  left:0;right:0;
  height:2px;
  background:linear-gradient(90deg, transparent, rgba(252,211,77,.9), rgba(217,140,240,.9), transparent);
  box-shadow:0 0 14px rgba(252,211,77,.7);
  animation:gxScan 3.2s ease-in-out infinite;
  top:0;
}
.gx-planet .gx-scan::before{
  height:1.5px;
  animation-duration:2.6s;
}

/* 编号 HUD */
.gx-core .gx-id,
.gx-planet .gx-id{
  position:absolute;
  top:-4px;
  right:-2px;
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:11px;
  font-weight:700;
  color:#0D040F;
  background:rgba(252,211,77,.95);
  border:1px solid rgba(255,255,255,.45);
  border-radius:3px;
  padding:1px 5px;
  letter-spacing:.5px;
  z-index:5;
  box-shadow:0 0 10px rgba(252,211,77,.65);
  pointer-events:none;
}
.gx-planet .gx-id{
  font-size:11px;
  top:-2px;
  right:-1px;
  padding:1px 3px;
}

/* 图标容器 */
.gx-core-icon,
.gx-planet-icon{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:3;
  pointer-events:none;
}
.gx-core-icon svg,
.gx-planet-icon svg{
  width:52%;
  height:52%;
  filter:drop-shadow(0 0 6px rgba(252,211,77,.85)) drop-shadow(0 0 12px rgba(176,38,207,.55));
}
.gx-core-icon svg{
  width:48%;
  height:48%;
}
/* SVG 内部线条强制高亮，保留原有填充 */
.gx-core-icon svg [stroke]:not([stroke="none"]),
.gx-planet-icon svg [stroke]:not([stroke="none"]){
  stroke:#FFF!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
}
.gx-core-icon svg [fill="#D98CF0"],
.gx-core-icon svg [fill="#FCD34D"],
.gx-planet-icon svg [fill="#D98CF0"],
.gx-planet-icon svg [fill="#FCD34D"]{
  fill-opacity:1!important;
  filter:drop-shadow(0 0 3px currentColor);
}

/* 原有 emoji 彻底隐藏 */
.gx-core-emoji,
.gx-planet-emoji{ display:none!important; }

/* 标签 */
.gx-core-label,
.gx-planet-label,
.gx-core-sub{
  color:#F7EAFB!important;
  text-shadow:0 1px 6px rgba(0,0,0,.85)!important;
}
.gx-core-label{
  position:absolute;
  bottom:-34px;
  left:50%;
  transform:translateX(-50%);
  font-size:13px;
  font-weight:700;
  letter-spacing:1px;
  white-space:nowrap;
  text-shadow:0 2px 8px rgba(0,0,0,.85)!important;
}
.gx-core-sub{
  position:absolute;
  bottom:-50px;
  left:50%;
  transform:translateX(-50%);
  font-size:11px;
  color:#DCC3DE!important;
  letter-spacing:.8px;
  white-space:nowrap;
  text-shadow:0 2px 8px rgba(0,0,0,.85)!important;
}

/* ============================================================
 *  三、小行星：数字孪生行星
 * ============================================================ */
.gx-planet,
.gx-planet[data-planet]{
  background:
    radial-gradient(circle at 32% 26%, rgba(217,140,240,.42) 0%, transparent 28%),
    radial-gradient(circle at 70% 72%, rgba(138,23,168,.55) 0%, transparent 40%),
    radial-gradient(circle at 50% 50%, #B026CF 0%, #8A17A8 58%, #2B1030 100%)!important;
  border-color:rgba(252,211,77,.40)!important;
  box-shadow:
    0 0 0 1px rgba(252,211,77,.18),
    0 0 24px 3px rgba(176,38,207,.48),
    0 0 50px rgba(176,38,207,.22),
    0 10px 22px rgba(0,0,0,.55),
    inset 0 0 30px rgba(255,255,255,.10),
    inset 0 -14px 22px rgba(0,0,0,.35),
    inset 8px 8px 24px rgba(255,255,255,.20)!important;
  overflow:visible!important;
}

/* hover 提亮 */
.gx-planet:hover,
.gx-core:hover{
  filter:brightness(1.18) saturate(1.12)!important;
}
.gx-planet:hover .gx-scan::before,
.gx-core:hover .gx-scan::before{
  animation-duration:1.2s;
}
.gx-planet:hover .gx-hud-ring,
.gx-core:hover .gx-hud-ring{
  animation-duration:4s;
}

/* 动画 */
@keyframes gxHudSpin{
  from{ transform:rotate(0deg); }
  to{ transform:rotate(360deg); }
}
@keyframes gxScan{
  0%{ top:0; opacity:0; }
  10%{ opacity:1; }
  90%{ opacity:1; }
  100%{ top:100%; opacity:0; }
}
@keyframes gxGridPulse{
  0%,100%{ opacity:.45; }
  50%{ opacity:.75; }
}

/* ============================================================
 *  四、分组卡片背景 + 小标题星球统一
 * ============================================================ */
.tpl-group.galaxy-nebula,
.tpl-group.galaxy-nebula.g-yi,
.tpl-group.galaxy-nebula.g-er,
.tpl-group.galaxy-nebula.g-san,
.tpl-group.galaxy-nebula.g-strat,
.tpl-group.galaxy-nebula.g-biz{
  background:
    radial-gradient(ellipse 60% 80% at 50% 50%, rgba(176,38,207,.12), transparent 70%),
    radial-gradient(ellipse 110% 30% at 50% 20%, rgba(193,63,224,.18), transparent 65%),
    radial-gradient(ellipse 110% 35% at 50% 95%, rgba(0,0,0,.55), transparent 65%),
    radial-gradient(ellipse 40% 30% at 8% 10%, rgba(252,211,77,.14), transparent 65%),
    radial-gradient(ellipse 40% 30% at 92% 88%, rgba(176,38,207,.14), transparent 65%),
    linear-gradient(170deg, rgba(59,20,66,.70) 0%, rgba(43,16,48,.88) 50%, rgba(26,13,31,.95) 100%)!important;
}

.tpl-group[data-planet$="-cluster"]::before,
.g-yi    .tpl-group[data-planet$="-cluster"]::before,
.g-er    .tpl-group[data-planet$="-cluster"]::before,
.g-san   .tpl-group[data-planet$="-cluster"]::before,
.g-strat .tpl-group[data-planet$="-cluster"]::before,
.g-biz   .tpl-group[data-planet$="-cluster"]::before{
  background:
    radial-gradient(ellipse 36% 26% at 6% 10%,  rgba(176,38,207,.42), transparent 60%),
    radial-gradient(ellipse 32% 28% at 94% 8%,  rgba(252,211,77,.32), transparent 60%),
    radial-gradient(ellipse 36% 28% at 90% 92%, rgba(193,63,224,.36), transparent 60%),
    radial-gradient(ellipse 32% 26% at 8% 92%,  rgba(216,27,96,.28), transparent 60%),
    radial-gradient(ellipse 50% 38% at 50% 50%, rgba(176,38,207,.14), transparent 65%),
    radial-gradient(ellipse 100% 30% at 50% 100%, rgba(0,0,0,.45), transparent 70%)!important;
}

.tgh-ico,
.g-yi    .tgh-ico,
.g-er    .tgh-ico,
.g-san   .tgh-ico,
.g-strat .tgh-ico,
.g-biz   .tgh-ico{
  background:
    radial-gradient(circle at 30% 28%, rgba(255,255,255,.85) 0%, rgba(255,255,255,.18) 12%, transparent 30%),
    radial-gradient(circle at 38% 38%, #C13FE0 0%, #B026CF 50%, #6B1285 100%)!important;
  box-shadow:
    0 0 0 1.5px rgba(176,38,207,.55),
    0 0 22px rgba(176,38,207,.65),
    0 0 44px rgba(176,38,207,.35),
    0 12px 22px rgba(0,0,0,.55),
    inset 4px 6px 12px rgba(255,255,255,.28),
    inset -5px -7px 18px rgba(0,0,0,.45)!important;
}

.g-yi    .tgh-ico{ filter:hue-rotate(0deg)!important; }
.g-er    .tgh-ico{ filter:hue-rotate(0deg)!important; }
.g-san   .tgh-ico{ filter:hue-rotate(0deg)!important; }
.g-strat .tgh-ico{ filter:hue-rotate(0deg)!important; }
.g-biz   .tgh-ico{ filter:hue-rotate(0deg)!important; }

/* ============================================================
 *  WebGL 真实 3D 星系场景样式（2026-09-17 追加）
 * ============================================================ */

/* 隐藏旧 CSS 星系系统，避免与新 WebGL 叠加 */
.gx-system,
.gx-core,
.gx-planet,
.gx-orbit{ display:none!important; }

/* 兜底：three.js 加载失败/超时时恢复旧 CSS 星系，避免区域空白 */
.gxw-no-webgl .gx-system,
.gxw-no-webgl .gx-core,
.gxw-no-webgl .gx-planet,
.gxw-no-webgl .gx-orbit{ display:block!important; }

.gxw-scene{
  position:relative;
  width:100%;
  height:400px;
  overflow:hidden;
  border-radius:16px;
  border:1px solid rgba(176,38,207,0.28);
  background:
    radial-gradient(ellipse 80% 60% at 50% 50%, rgba(69,32,83,0.35) 0%, rgba(13,4,15,0.92) 70%),
    linear-gradient(180deg, rgba(26,13,31,0.95), rgba(13,4,15,0.98));
  box-shadow:
    0 0 0 1px rgba(255,255,255,.04) inset,
    0 12px 44px rgba(0,0,0,.55),
    0 0 60px rgba(176,38,207,.12);
  margin:14px 0 12px;
}

.gxw-canvas{
  display:block;
  width:100%;
  height:100%;
}

.gxw-labels{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:5;
}

.gxw-label{
  position:absolute;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  pointer-events:none;
  white-space:nowrap;
  transition:opacity .25s;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,.85));
}

.gxw-label-core .gxw-name{
  font-size:15px;
  font-weight:700;
  color:#F7EAFB;
  letter-spacing:1.2px;
  text-shadow:0 0 12px rgba(193,63,224,.8), 0 2px 10px rgba(0,0,0,.9);
}

.gxw-label-core .gxw-sub{
  font-size:11px;
  color:#D98CF0;
  letter-spacing:.6px;
  margin-top:3px;
  text-shadow:0 0 8px rgba(193,63,224,.5);
}

.gxw-label-planet .gxw-name{
  font-size:11.5px;
  font-weight:600;
  color:#F7EAFB;
  letter-spacing:.4px;
  padding:3px 10px;
  border-radius:999px;
  background:rgba(26,13,31,0.72);
  border:1px solid rgba(176,38,207,0.45);
  box-shadow:0 0 12px rgba(176,38,207,.25);
  text-shadow:0 1px 4px rgba(0,0,0,.85);
}

@media (max-width:768px){
  .gxw-scene{ height:280px; margin:10px 0; }
  .gxw-label-core .gxw-name{ font-size:13px; }
  .gxw-label-planet .gxw-name{ font-size:11px; padding:2px 7px; }
}

/* 模板按钮星系化后仍保留功能 */
.gxw-scene + .templates{
  position:relative;
  z-index:2;
}
