/* ════════════════════════════════════════════════════════════════
   玄机雷达 · radar.css —— 仅 /lab/radar/ 加载，复用 lab.css 的 --lab-* 令牌
   ════════════════════════════════════════════════════════════════ */

/* ── 页面骨架 ───────────────────────────────────────────────── */
.rdr-wrap { max-width: 1080px; margin: 0 auto; padding: 88px 18px 64px; }
.rdr-sec { margin: 0 0 40px; }
.rdr-sec-h {
  font-size: 20px; font-weight: 700; color: var(--lab-gold, #d4af37);
  letter-spacing: .04em; margin: 0 0 4px;
}
.rdr-sec-s { font-size: 13px; color: var(--lab-text-dim, #9aa0b4); margin: 0 0 18px; }
.rdr-div {
  height: 1px; margin: 36px 0;
  background: linear-gradient(90deg, transparent,
              rgba(212,175,55,.35), transparent);
}

/* ── 区域1 Hero · 雷达扫描 ─────────────────────────────────── */
.rdr-hero {
  display: flex; align-items: center; gap: 32px; flex-wrap: wrap;
  padding: 28px 0 10px;
}
.rdr-radar-box { width: 200px; height: 200px; flex-shrink: 0; position: relative; }
.rdr-scan-ring { animation: rdr-rotate 4s linear infinite; transform-origin: center; }
@keyframes rdr-rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.rdr-scan-dot { animation: rdr-pulse 2s ease-in-out infinite; }
@keyframes rdr-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: .4; transform: scale(.8); }
}
.rdr-hero-txt { flex: 1; min-width: 240px; }
.rdr-hero-eyebrow {
  font-size: 12px; letter-spacing: .26em; color: var(--lab-fire, #c43d1a);
  text-transform: uppercase; margin: 0 0 8px;
}
.rdr-hero-title {
  font-size: 38px; font-weight: 800; margin: 0 0 10px;
  color: var(--lab-ivory, #f4ead6);
  background: linear-gradient(120deg, #f4ead6, var(--lab-gold, #d4af37));
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.rdr-hero-sub { font-size: 14px; color: var(--lab-text-dim, #9aa0b4); line-height: 1.7; margin: 0 0 14px; }
.rdr-status {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--lab-gold, #d4af37);
  border: 1px solid rgba(212,175,55,.35); border-radius: 18px;
  padding: 6px 14px;
}
.rdr-status .dot {
  width: 8px; height: 8px; border-radius: 50%; background: #27c08a;
  animation: rdr-pulse 1.6s ease-in-out infinite;
}

/* ── 区域2 Tab ─────────────────────────────────────────────── */
.rdr-tabs { display: flex; gap: 6px; margin: 0 0 22px; flex-wrap: wrap; }
.rdr-tab {
  font: inherit; cursor: pointer; padding: 9px 18px; border-radius: 20px;
  background: transparent; color: var(--lab-text-dim, #9aa0b4);
  border: 1px solid rgba(212,175,55,.28); transition: all .18s;
}
.rdr-tab.active {
  color: #1a120a; background: var(--lab-gold, #d4af37);
  border-color: var(--lab-gold, #d4af37); font-weight: 700;
}
.rdr-tab:hover:not(.active) { color: var(--lab-gold, #d4af37); }
.rdr-pane { display: none; }
.rdr-pane.active { display: block; animation: rdr-float-in .4s ease-out; }

/* ── 热力色块（SVG fill 类） ───────────────────────────────── */
.rdr-heat-5 { fill: #C8102E; } .rdr-heat-4 { fill: #E8943A; }
.rdr-heat-3 { fill: #D4AF37; } .rdr-heat-2 { fill: #6B7280; }
.rdr-heat-1 { fill: #4B6CB7; }
.rdr-heat-cell { cursor: pointer; transition: opacity .15s; }
.rdr-heat-cell:hover { opacity: .82; }

/* ── 关键节点 Banner ───────────────────────────────────────── */
.rdr-keys { display: flex; gap: 10px; flex-wrap: wrap; margin: 16px 0 8px; }
.rdr-key-card {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; border-radius: 10px; font-size: 13px;
  background: var(--lab-bg-card, rgba(28,16,12,.6));
  border: 1px solid rgba(212,175,55,.3); color: var(--lab-ivory, #f4ead6);
}
.rdr-key-card .ic { font-size: 18px; }
.rdr-day-peak { box-shadow: 0 0 16px rgba(200,16,46,.45); border-color: var(--lab-fire, #c43d1a) !important; }
.rdr-day-bottom { box-shadow: 0 0 16px rgba(212,175,55,.45); border-color: var(--lab-gold, #d4af37) !important; }
.rdr-day-warning { box-shadow: 0 0 16px rgba(232,148,58,.45); }

/* ── 逐日 / 逐周列表 ──────────────────────────────────────── */
.rdr-daily-list, .rdr-weekly-list { display: flex; flex-direction: column; gap: 8px; }
.rdr-day-card, .rdr-week-card {
  padding: 12px 14px; border-radius: 10px; cursor: pointer;
  background: var(--lab-bg-card, rgba(28,16,12,.55));
  border: 1px solid rgba(212,175,55,.22); transition: border-color .15s;
}
.rdr-day-card:hover, .rdr-week-card:hover { border-color: rgba(212,175,55,.5); }
.rdr-day-top { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rdr-day-date { font-weight: 700; color: var(--lab-ivory, #f4ead6); min-width: 96px; }
.rdr-day-pillar { font-size: 12px; color: var(--lab-text-dim, #9aa0b4); }
.rdr-day-stars { color: var(--lab-gold, #d4af37); letter-spacing: 1px; }
.rdr-day-op { margin-left: auto; font-size: 13px; color: var(--lab-ivory, #f4ead6); }
.rdr-day-reason { font-size: 12px; color: var(--lab-text-dim, #9aa0b4); margin: 8px 0 0; line-height: 1.6; }
.rdr-month-group { margin: 0 0 22px; }
.rdr-month-head {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
  padding: 10px 14px; border-radius: 10px 10px 0 0;
  background: rgba(212,175,55,.1); border: 1px solid rgba(212,175,55,.3);
  border-bottom: none;
}
.rdr-month-head .m { font-size: 16px; font-weight: 700; color: var(--lab-gold, #d4af37); }
.rdr-month-head .gz { font-size: 12px; color: var(--lab-text-dim, #9aa0b4); }
.rdr-month-head .op { margin-left: auto; font-size: 13px; color: var(--lab-ivory, #f4ead6); }

/* ── 长期 SVG 年度时间轴 ──────────────────────────────────── */
.rdr-year-svg { width: 100%; height: auto; }
.rdr-year-month-block { cursor: pointer; transition: opacity .15s; }
.rdr-year-month-block:hover { opacity: .85; }
.rdr-tp-card {
  margin: 10px 0 0; padding: 12px 14px; border-radius: 10px; font-size: 13px;
  background: var(--lab-bg-card, rgba(28,16,12,.6));
  border: 1px solid rgba(212,175,55,.3); color: var(--lab-ivory, #f4ead6);
}
.rdr-tp-card.peak { border-color: var(--lab-fire, #c43d1a); }
.rdr-tp-card.bottom { border-color: var(--lab-gold, #d4af37); }

/* ── 区域3 信号墙 ──────────────────────────────────────────── */
.rdr-signal-card {
  padding: 20px; border-radius: 14px; animation: rdr-float-in .5s ease-out;
  background: var(--lab-bg-card, rgba(28,16,12,.65));
  border: 1px solid rgba(212,175,55,.3);
}
@keyframes rdr-float-in {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
.rdr-sig-type { font-size: 22px; font-weight: 800; margin: 0 0 4px; }
.rdr-sig-type.attack { color: #c8102e; }
.rdr-sig-type.defense { color: #4b6cb7; }
.rdr-sig-meta { font-size: 13px; color: var(--lab-text-dim, #9aa0b4); margin: 0 0 14px; }
.rdr-conf-track { height: 6px; border-radius: 3px; background: rgba(212,175,55,.15); overflow: hidden; }
.rdr-conf-bar {
  height: 6px; border-radius: 3px; width: 0;
  background: linear-gradient(90deg, var(--lab-gold, #d4af37), var(--lab-fire, #c43d1a));
  transition: width 1.2s ease-out;
}
.rdr-sig-reasons { list-style: none; padding: 0; margin: 16px 0 0; }
.rdr-sig-reasons li {
  font-size: 13px; color: var(--lab-ivory, #f4ead6);
  padding: 7px 0 7px 18px; position: relative;
}
.rdr-sig-reasons li::before {
  content: "◈"; position: absolute; left: 0; color: var(--lab-gold, #d4af37);
}
.rdr-match-badge {
  display: inline-block; margin: 14px 0 0; padding: 6px 14px; border-radius: 16px;
  font-size: 13px; font-weight: 700;
}
.rdr-match-badge.hi { color: #1a120a; background: var(--lab-gold, #d4af37); }
.rdr-match-badge.mid { color: var(--lab-gold, #d4af37); border: 1px solid rgba(212,175,55,.5); }
.rdr-match-badge.lo { color: #c8102e; border: 1px solid rgba(200,16,46,.5); }
.rdr-empty {
  text-align: center; padding: 40px 20px; color: var(--lab-text-dim, #9aa0b4);
  border: 1px dashed rgba(212,175,55,.3); border-radius: 14px;
}
.rdr-empty .ic { font-size: 36px; display: block; margin: 0 0 10px; }
.rdr-hist-list { display: flex; flex-direction: column; gap: 6px; margin: 16px 0 0; }
.rdr-hist-row {
  font-size: 12px; padding: 9px 12px; border-radius: 8px; cursor: pointer;
  background: var(--lab-bg-card, rgba(28,16,12,.5));
  border: 1px solid rgba(212,175,55,.18); color: var(--lab-text-dim, #9aa0b4);
}
.rdr-hist-row b { color: var(--lab-ivory, #f4ead6); }

/* ── 区域4 解锁专属 ───────────────────────────────────────── */
.rdr-unlock {
  text-align: center; padding: 34px 22px; border-radius: 14px;
  background: rgba(212,175,55,.07); border: 1px solid rgba(212,175,55,.28);
}
.rdr-unlock h3 { color: var(--lab-gold, #d4af37); margin: 0 0 8px; }
.rdr-unlock p { color: var(--lab-text-dim, #9aa0b4); font-size: 14px; margin: 0 0 16px; }
.rdr-unlock-cta {
  display: inline-block; font: inherit; cursor: pointer; text-decoration: none;
  padding: 11px 26px; border-radius: 22px; font-weight: 700;
  color: #1a120a; background: var(--lab-gold, #d4af37); border: none;
}

/* ── 移动端 ───────────────────────────────────────────────── */
@media (max-width: 480px) {
  .rdr-wrap { padding: 78px 14px 48px; }
  .rdr-hero-title { font-size: 30px; }
  .rdr-radar-box { width: 150px; height: 150px; margin: 0 auto; }
  .rdr-daily-list .rdr-day-reason { display: none; }
  .rdr-daily-list .rdr-day-card.expanded .rdr-day-reason { display: block; }
  .rdr-day-op { margin-left: 0; }
}

/* ── 亮色模式 ─────────────────────────────────────────────── */
:root[data-theme="light"] .rdr-sec-s,
:root[data-theme="light"] .rdr-hero-sub,
:root[data-theme="light"] .rdr-day-reason { color: #6b4c2a; }
:root[data-theme="light"] .rdr-hero-title { color: #8b4a1a; -webkit-text-fill-color: #8b4a1a; }
:root[data-theme="light"] .rdr-signal-card,
:root[data-theme="light"] .rdr-key-card,
:root[data-theme="light"] .rdr-day-card,
:root[data-theme="light"] .rdr-week-card,
:root[data-theme="light"] .rdr-tp-card,
:root[data-theme="light"] .rdr-hist-row {
  background: var(--lab-bg-card, #fdf8f0); border-color: rgba(184,134,11,.22);
}
:root[data-theme="light"] .rdr-day-date,
:root[data-theme="light"] .rdr-day-op,
:root[data-theme="light"] .rdr-sig-reasons li,
:root[data-theme="light"] .rdr-hist-row b { color: #2c1a0e; }
:root[data-theme="light"] .rdr-tab { color: #6b4c2a; }

/* ── 就地录入表单（radarpersonal · 零跳转）──────────────────── */
.rdr-input-form {
  padding: 20px;
  border: 1px solid var(--lab-border, rgba(212,175,55,.3));
  border-radius: 12px;
  background: var(--lab-bg-elev, rgba(28,16,12,.55));
  margin-top: 16px;
}
.rdr-form-row {
  display: flex; gap: 8px; margin-bottom: 12px; width: 100%;
}
.rdr-form-field {
  flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px;
}
.rdr-form-field label {
  font-size: 11px; color: var(--lab-text-dim, #9aa0b4);
}
.rdr-form-field select,
.rdr-form-field input {
  height: 40px; box-sizing: border-box;
  border: 1px solid var(--lab-border, rgba(212,175,55,.3));
  border-radius: 8px;
  background: var(--lab-bg-card, rgba(28,16,12,.6));
  color: var(--lab-ivory, #f4ead6);
  font: inherit; font-size: 13px; padding: 0 10px; width: 100%;
}
.rdr-submit-btn {
  width: 100%; height: 44px;
  background: var(--lab-gold, #d4af37); color: #1a0f00;
  border: none; border-radius: 10px;
  font-size: 14px; font-weight: 600; cursor: pointer; margin-top: 4px;
}
.rdr-submit-btn:disabled { opacity: .6; cursor: default; }
.rdr-cta-btn {
  padding: 12px 24px;
  border: 1px solid var(--lab-gold, #d4af37); border-radius: 20px;
  background: transparent; color: var(--lab-gold, #d4af37);
  font: inherit; font-size: 14px; cursor: pointer; margin-top: 12px;
}
.rdr-form-err {
  font-size: 13px; color: var(--lab-fire, #c43d1a); margin: 10px 0 0;
}
#rdrPersonalResult { margin-top: 16px; }
#rdrPersonalResult .rdr-cta-btn { margin-top: 14px; }

@media (max-width: 480px) {
  .rdr-form-row { flex-wrap: wrap; }
  .rdr-form-field { min-width: calc(50% - 4px); }
}
:root[data-theme="light"] .rdr-input-form {
  background: var(--lab-bg-elev, #faf3e6);
  border-color: rgba(184,134,11,.28);
}
:root[data-theme="light"] .rdr-form-field select,
:root[data-theme="light"] .rdr-form-field input {
  background: #fff; color: #2c1a0e; border-color: rgba(184,134,11,.3);
}
:root[data-theme="light"] .rdr-form-field label { color: #6b4c2a; }

/* ═══ cardv2: 玄机雷达解锁卡 v2（ruv2- 命名空间）═══
   注：data-theme 挂 <html> → spec 的 body[data-theme] 改 :root[data-theme]；
   .rdr-unlock 基础带 text-align:center，v2 需 text-align:left 覆盖。 */
.rdr-unlock-v2 {
  position: relative;
  text-align: left;
  border-radius: 24px;
  overflow: hidden;
  background: var(--lab-bg-card, #FFFDF7);
  border: 1px solid rgba(201,162,39,0.22);
  padding: 44px 40px;
  cursor: pointer;
  margin: 24px 0;
  transition: background .4s, box-shadow .3s, transform .15s ease;
}
:root[data-theme="dark"] .rdr-unlock-v2 {
  background: #16100A;
  border-color: rgba(201,162,39,0.16);
}
.rdr-unlock-v2::before {
  content:''; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(ellipse 65% 50% at 100% 50%, rgba(201,162,39,0.1) 0%, transparent 60%),
    radial-gradient(ellipse 40% 55% at 0% 0%, rgba(200,16,46,0.05) 0%, transparent 50%);
}
:root[data-theme="dark"] .rdr-unlock-v2::before {
  background:
    radial-gradient(ellipse 65% 50% at 100% 50%, rgba(201,162,39,0.14) 0%, transparent 60%),
    radial-gradient(ellipse 50% 40% at 0% 100%, rgba(200,16,46,0.08) 0%, transparent 50%);
}
.rdr-unlock-v2:hover { box-shadow: 0 24px 60px rgba(201,162,39,0.1); }
.ruv2-radar {
  position:absolute; right:36px; top:50%; transform:translateY(-50%);
  width:200px; height:200px; pointer-events:none;
}
.ruv2-rc {
  position:absolute; inset:0; border-radius:50%;
  border:1px solid rgba(201,162,39,0.18);
}
.ruv2-rc:nth-child(2){inset:26px;}
.ruv2-rc:nth-child(3){inset:52px;border-color:rgba(201,162,39,0.26);}
.ruv2-rc:nth-child(4){inset:78px;border-color:rgba(201,162,39,0.34);}
.ruv2-cross { position:absolute; inset:0; }
.ruv2-cross::before {
  content:''; position:absolute;
  top:50%; left:0; right:0; height:1px;
  background:rgba(201,162,39,0.1); transform:translateY(-50%);
}
.ruv2-cross::after {
  content:''; position:absolute;
  left:50%; top:0; bottom:0; width:1px;
  background:rgba(201,162,39,0.1); transform:translateX(-50%);
}
.ruv2-sweep {
  position:absolute; inset:0; border-radius:50%; overflow:hidden;
  animation:ruv2Sweep 3s linear infinite;
}
.ruv2-sweep::before {
  content:''; position:absolute;
  top:50%; left:50%; width:50%; height:2px; margin-top:-1px;
  background:linear-gradient(90deg,transparent,rgba(200,16,46,0.7));
  transform-origin:left center;
}
.ruv2-sweep::after {
  content:''; position:absolute; inset:0; border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(200,16,46,0.09) 55deg,transparent 85deg);
}
@keyframes ruv2Sweep { to{transform:rotate(360deg);} }
.ruv2-sdot {
  position:absolute; width:6px; height:6px; border-radius:50%;
  background:#C8102E; box-shadow:0 0 8px #C8102E;
  animation:ruv2Blink 2s ease-in-out infinite;
}
.ruv2-sdot:nth-child(7){top:28%;left:68%;animation-delay:0s;}
.ruv2-sdot:nth-child(8){top:62%;left:22%;animation-delay:.8s;background:#C9A227;box-shadow:0 0 8px #C9A227;}
.ruv2-sdot:nth-child(9){top:18%;left:42%;animation-delay:1.5s;}
.ruv2-sdot:nth-child(10){top:74%;left:62%;animation-delay:.3s;background:#C9A227;box-shadow:0 0 8px #C9A227;}
@keyframes ruv2Blink{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.2;transform:scale(.5);}}
.ruv2-center {
  position:absolute; top:50%; left:50%;
  transform:translate(-50%,-50%);
  width:10px; height:10px; border-radius:50%;
  background:#C8102E; box-shadow:0 0 14px rgba(200,16,46,0.8);
}
.ruv2-content { position:relative; z-index:10; max-width:480px; }
.ruv2-eyebrow {
  display:flex; align-items:center; gap:8px; margin-bottom:14px;
  font-size:10px; letter-spacing:3px; color:#C8102E; font-weight:500;
}
:root[data-theme="dark"] .ruv2-eyebrow { color:#FF4060; }
.ruv2-live {
  width:8px; height:8px; border-radius:50%;
  background:#C8102E; box-shadow:0 0 6px #C8102E;
  flex-shrink:0;
  animation:ruv2Live 1.5s ease-in-out infinite;
}
@keyframes ruv2Live{
  0%,100%{box-shadow:0 0 6px #C8102E;}
  50%{box-shadow:0 0 16px rgba(200,16,46,0.75),0 0 24px rgba(200,16,46,0.35);}
}
.ruv2-title {
  font-family:'Noto Serif SC',serif; font-size:26px; font-weight:700;
  color:#1A0A00; line-height:1.3; margin-bottom:10px;
}
:root[data-theme="dark"] .ruv2-title { color:#FFFDF7; }
.ruv2-title em { font-style:normal; color:#8B6914; }
:root[data-theme="dark"] .ruv2-title em { color:#C9A227; }
.ruv2-desc {
  font-size:13px; color:#6B5430; line-height:1.85; margin-bottom:22px;
}
:root[data-theme="dark"] .ruv2-desc { color:rgba(255,253,247,0.5); }
.ruv2-pills { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:26px; }
.ruv2-pill {
  padding:5px 13px; border-radius:20px; font-size:11px;
  background:rgba(201,162,39,0.1); border:1px solid rgba(201,162,39,0.28);
  color:#8B6914; letter-spacing:.3px;
}
:root[data-theme="dark"] .ruv2-pill {
  background:rgba(201,162,39,0.08); border-color:rgba(201,162,39,0.2);
  color:rgba(201,162,39,0.75);
}
.ruv2-btn {
  display:inline-flex; align-items:center; gap:10px;
  background:linear-gradient(135deg, #C9A227, #E8B830);
  color:#1A0A00;
  border:none; padding:13px 26px; border-radius:40px;
  font-family:'Noto Sans SC',sans-serif; font-size:13px;
  font-weight:600; letter-spacing:.8px; cursor:pointer;
  box-shadow:0 8px 28px rgba(201,162,39,0.35);
  transition:all .3s ease; position:relative; overflow:hidden;
}
.ruv2-btn::before {
  content:''; position:absolute; inset:0;
  background:linear-gradient(135deg,rgba(255,255,255,0.18),transparent);
  opacity:0; transition:opacity .3s;
}
.ruv2-btn:hover::before{opacity:1;}
.ruv2-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 14px 40px rgba(201,162,39,0.55);
}
.ruv2-icon { font-size:13px; transition:transform .3s; }
.ruv2-btn:hover .ruv2-icon { transform:rotate(45deg); }
.ruv2-disc {
  margin-top:12px; font-size:10px; color:rgba(107,84,48,0.45);
}
:root[data-theme="dark"] .ruv2-disc { color:rgba(255,253,247,0.22); }
@media (max-width: 720px) {
  .rdr-unlock-v2 { padding: 32px 20px; }
  .ruv2-radar { display: none; }
  .ruv2-content { max-width: 100%; }
  .ruv2-title { font-size: 22px; }
  .ruv2-pills { gap: 6px; }
  .ruv2-pill { font-size: 10px; padding: 4px 10px; }
}

/* =====================================================
   ruv2- Phase 1 信号墙视觉升级 (radarwall · eo-v1.0.97)
   真源在 radar.css（radar/index.html line17/18 引 lab.css+radar.css；
   既有 ruv2- 族 cardv2 全在本文件 line277+ → 续写于此·复用陷阱24①）。
   无信号态/信号卡/历史卡皆**恒深色面板**：深底浅字浅色页亦读，规避
   light 文字消失（复用陷阱24③；不采 spec 那 2 条仍留白字的 light 覆盖）。
   绑 radar 真实字段·无 ticker/匹配度%/时间窗口（API 不返回）。
   ===================================================== */
.ruv2-empty-panel {
  position: relative; overflow: hidden;
  background: #0E0704;
  border: 1px solid rgba(201,162,39,0.22);
  border-radius: 16px;
  padding: 34px 24px 26px;
  text-align: center;
}
:root[data-theme="light"] .ruv2-empty-panel {
  background: #0E0704 !important;
  border-color: rgba(201,162,39,0.22) !important;
}
.ruv2-radar-wrap {
  position: relative; width: 120px; height: 120px; margin: 0 auto 20px;
}
.ruv2-radar-ring {
  position: absolute; border-radius: 50%;
  border: 1px solid rgba(201,162,39,0.25);
  top: 50%; left: 50%; transform: translate(-50%, -50%);
}
.ruv2-radar-ring--1 { width: 40px; height: 40px; border-color: rgba(201,162,39,0.5); }
.ruv2-radar-ring--2 { width: 72px; height: 72px; }
.ruv2-radar-ring--3 { width: 110px; height: 110px; }
.ruv2-radar-core {
  position: absolute; width: 10px; height: 10px; border-radius: 50%;
  background: #C9A227; top: 50%; left: 50%;
  transform: translate(-50%, -50%); box-shadow: 0 0 6px #C9A227;
}
.ruv2-radar-sweep {
  position: absolute; top: 50%; left: 50%;
  width: 50%; height: 1px; transform-origin: left center;
  background: linear-gradient(to right, transparent, rgba(201,162,39,0.7));
  animation: ruv2RadarSweep 3s linear infinite;
}
@keyframes ruv2RadarSweep { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.ruv2-scan-status {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  font-size: 12px; color: #C9A227; opacity: 0.85; margin-bottom: 12px;
}
.ruv2-scan-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: #C9A227; animation: ruv2ScanPulse 1.5s ease-in-out infinite;
}
@keyframes ruv2ScanPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }
.ruv2-empty-msg {
  font-size: 16px; font-weight: 500; color: #FFFDF7;
  margin-bottom: 8px;
}
.ruv2-empty-sub {
  font-size: 13px; color: rgba(255,253,247,0.55);
  max-width: 420px; margin: 0 auto 14px; line-height: 1.6;
}
.ruv2-natal-bar {
  border-top: 1px solid rgba(201,162,39,0.2);
  padding-top: 14px; margin-top: 6px;
}
.ruv2-natal-title {
  font-size: 11px; color: rgba(201,162,39,0.5);
  letter-spacing: 0.05em; margin-bottom: 6px;
}
.ruv2-natal-content {
  font-size: 13px; color: rgba(255,253,247,0.7); line-height: 1.6;
}
.ruv2-signal-card {
  background: #140C00;
  border: 1px solid rgba(201,162,39,0.3);
  border-radius: 12px; padding: 18px 20px; margin-bottom: 12px;
}
:root[data-theme="light"] .ruv2-signal-card { background: #140C00 !important; }
.ruv2-signal-card--attack  { border-color: rgba(200,16,46,0.5); }
.ruv2-signal-card--neutral { border-color: rgba(201,162,39,0.5); }
.ruv2-signal-card--defense { border-color: rgba(61,107,50,0.5); }
.ruv2-sc-header {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 14px; font-size: 12px;
}
.ruv2-sc-live { font-size: 11px; color: #C8102E; animation: ruv2ScanPulse 1.5s ease-in-out infinite; }
.ruv2-sc-type { font-weight: 500; color: #C9A227; letter-spacing: 0.04em; }
.ruv2-sc-time { margin-left: auto; color: rgba(255,253,247,0.4); font-size: 11px; }
.ruv2-sc-match { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.ruv2-sc-match-label { font-size: 11px; color: rgba(255,253,247,0.45); white-space: nowrap; }
.ruv2-sc-match-bar { flex: 1; height: 4px; background: rgba(201,162,39,0.15); border-radius: 2px; overflow: hidden; }
.ruv2-sc-match-fill { height: 100%; width: 0; background: #C9A227; border-radius: 2px; transition: width 0.6s ease; }
.ruv2-sc-match-val { font-size: 12px; color: #C9A227; font-weight: 500; min-width: 36px; text-align: right; }
.ruv2-sc-conf { font-size: 13px; color: rgba(255,253,247,0.6); margin-bottom: 14px; }
.ruv2-sc-conf strong { color: #FFFDF7; }
.ruv2-sc-interp { border-top: 1px solid rgba(201,162,39,0.15); padding-top: 12px; margin-bottom: 10px; }
.ruv2-sc-interp-title { font-size: 11px; color: rgba(201,162,39,0.45); text-align: center; margin-bottom: 8px; letter-spacing: 0.04em; }
.ruv2-sc-interp-text { font-size: 13px; color: rgba(255,253,247,0.65); line-height: 1.65; }
.ruv2-sc-window { font-size: 12px; color: rgba(255,253,247,0.45); text-align: right; margin-top: 8px; }
.ruv2-hist-card {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px;
  border: 1px solid rgba(201,162,39,0.15);
  border-radius: 8px; margin-bottom: 8px;
  background: rgba(20,12,0,0.55);
  transition: border-color 0.2s;
}
:root[data-theme="light"] .ruv2-hist-card { background: rgba(20,12,0,0.85) !important; }
.ruv2-hist-card:hover { border-color: rgba(201,162,39,0.3); }
.ruv2-hc-left { display: flex; flex-direction: column; gap: 4px; min-width: 92px; }
.ruv2-hc-date { font-size: 11px; color: rgba(255,253,247,0.4); }
.ruv2-hc-badge { font-size: 10px; padding: 2px 8px; border-radius: 4px; font-weight: 500; letter-spacing: 0.03em; width: fit-content; }
.ruv2-hc-badge--attack  { background: rgba(200,16,46,0.2);  color: #ff5d73; }
.ruv2-hc-badge--defense { background: rgba(61,107,50,0.22); color: #7fc46f; }
.ruv2-hc-badge--neutral { background: rgba(201,162,39,0.15); color: #C9A227; }
.ruv2-hc-mid { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ruv2-hc-ticker { font-size: 14px; font-weight: 600; color: #FFFDF7; }
.ruv2-hc-conf { font-size: 11px; color: rgba(255,253,247,0.4); }
.ruv2-hc-right { min-width: 52px; text-align: right; }
.ruv2-hc-result { font-size: 12px; font-weight: 500; }
.ruv2-hc-result--neutral { color: rgba(201,162,39,0.6); }
@media (prefers-reduced-motion: reduce) {
  .ruv2-radar-sweep, .ruv2-scan-dot, .ruv2-sc-live { animation: none; }
}
@media (max-width: 480px) {
  .ruv2-empty-panel { padding: 26px 16px 22px; }
  .ruv2-signal-card { padding: 16px 14px; }
  .ruv2-hc-left { min-width: 78px; }
}

/* === signaldepth eo-v1.1.00 — 四维/命格/行动 三块均在恒深色信号卡内
   (.ruv2-signal-card #140C00，浅页亦 !important 锁深)，故白字 light 覆盖
   在此为正确（不同于非深底面板的 light no-op 陷阱）。碰撞实测 0。 === */
.ruv2-sc-dims {
  border-top: 1px solid rgba(201,162,39,0.15);
  padding-top: 12px;
  margin: 12px 0;
}
.ruv2-sc-dim-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 7px;
}
.ruv2-sc-dim-label {
  font-size: 11px;
  color: rgba(255,253,247,0.45);
  width: 28px;
  flex-shrink: 0;
}
.ruv2-sc-dim-bar {
  flex: 1;
  height: 3px;
  background: rgba(201,162,39,0.12);
  border-radius: 2px;
  overflow: hidden;
}
.ruv2-sc-dim-fill {
  height: 100%;
  background: #C9A227;
  border-radius: 2px;
  transition: width 0.8s ease;
}
.ruv2-sc-dim-fill--gua { background: #5A7A9A; }
.ruv2-sc-dim-fill--shu { background: #C8102E; }
.ruv2-sc-dim-val {
  font-size: 11px;
  color: rgba(255,253,247,0.4);
  min-width: 32px;
  text-align: right;
}
.ruv2-sc-natal {
  background: rgba(201,162,39,0.06);
  border: 1px solid rgba(201,162,39,0.2);
  border-radius: 8px;
  padding: 12px 14px;
  margin: 10px 0;
  font-size: 12px;
  line-height: 1.8;
}
.ruv2-sc-natal-title {
  font-size: 11px;
  color: rgba(201,162,39,0.5);
  text-align: center;
  margin-bottom: 8px;
  letter-spacing: 0.04em;
}
.ruv2-sc-natal-elem { color: #C9A227; font-weight: 500; }
.ruv2-sc-natal-dir  { color: rgba(255,253,247,0.8); }
.ruv2-sc-natal-favor { color: rgba(255,253,247,0.65); }
.ruv2-sc-natal-favor::before { content: "✦ 关注："; color: #5a9c4e; }
.ruv2-sc-natal-avoid { color: rgba(255,253,247,0.65); }
.ruv2-sc-natal-avoid::before { content: "✦ 规避："; color: #C8102E; }
.ruv2-sc-action {
  border-top: 1px solid rgba(201,162,39,0.15);
  padding-top: 12px;
  margin-top: 10px;
}
.ruv2-sc-action-title {
  font-size: 11px;
  color: rgba(201,162,39,0.5);
  text-align: center;
  margin-bottom: 8px;
  letter-spacing: 0.04em;
}
.ruv2-sc-action-summary {
  font-size: 14px;
  font-weight: 500;
  color: #FFFDF7;
  margin-bottom: 6px;
}
.ruv2-sc-action-position {
  font-size: 12px;
  color: #C9A227;
  margin-bottom: 4px;
}
.ruv2-sc-action-note {
  font-size: 12px;
  color: rgba(255,253,247,0.5);
  line-height: 1.6;
}
:root[data-theme=light] .ruv2-sc-natal,
:root[data-theme=light] .ruv2-sc-action-summary { color: #FFFDF7 !important; }

/* === signalwall eo-v1.1.01 — 历史信号全展开卡片 + 信号强度星级。
   .ruv2-hcard 为多段深色卡，沿用 .ruv2-hist-card 既有范式：半透明深底 +
   light 提高不透明度 !important 锁深（卡恒深 → 白字浅页亦可读，属力图
   正确位，非 radarwall/cardpulse 那类非深底 light no-op 陷阱）。新前缀
   ruv2-hcard-/ruv2-sc-stars 碰撞实测 0；四维条复用 signaldepth 既有
   .ruv2-sc-dim-*（无新增 CSS·历史 API 无 breakdown 时该分支休眠）。 === */
.ruv2-sc-stars,
.ruv2-hcard-stars {
  font-size: 12px;
  letter-spacing: -1px;
  filter: saturate(1.15);
}
.ruv2-sc-stars { margin: 0 8px; }
.ruv2-hcard {
  border: 1px solid rgba(201,162,39,0.15);
  border-left: 3px solid rgba(201,162,39,0.4);
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 12px;
  background: rgba(20,12,0,0.55);
  transition: border-color 0.2s;
}
:root[data-theme="light"] .ruv2-hcard { background: rgba(20,12,0,0.92) !important; }
.ruv2-hcard:hover { border-color: rgba(201,162,39,0.3); }
.ruv2-hcard--attack  { border-left-color: rgba(200,16,46,0.55); }
.ruv2-hcard--defense { border-left-color: rgba(61,107,50,0.6); }
.ruv2-hcard--neutral { border-left-color: rgba(201,162,39,0.45); }
.ruv2-hcard-top {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}
.ruv2-hcard-date { font-size: 11px; color: rgba(255,253,247,0.45); }
.ruv2-hcard-icon { font-size: 15px; line-height: 1; }
.ruv2-hcard-badge {
  font-size: 10px; padding: 2px 8px; border-radius: 4px;
  font-weight: 500; letter-spacing: 0.03em;
}
.ruv2-hcard-badge--attack  { background: rgba(200,16,46,0.2);  color: #ff5d73; }
.ruv2-hcard-badge--defense { background: rgba(61,107,50,0.22); color: #7fc46f; }
.ruv2-hcard-badge--neutral { background: rgba(201,162,39,0.15); color: #C9A227; }
.ruv2-hcard-conf {
  margin-left: auto;
  font-size: 12px; font-weight: 600; color: #FFFDF7;
}
.ruv2-hcard-sec {
  font-size: 11px; color: rgba(201,162,39,0.5);
  text-align: center; margin: 12px 0 8px;
  letter-spacing: 0.04em;
}
.ruv2-hcard-interp { border-top: 1px solid rgba(201,162,39,0.12); }
.ruv2-hcard-interp .ruv2-hcard-sec { margin-top: 10px; }
.ruv2-hcard-text {
  font-size: 13px; color: rgba(255,253,247,0.7);
  line-height: 1.7;
}
.ruv2-hcard-action { border-top: 1px solid rgba(201,162,39,0.12); }
.ruv2-hcard-act-sum {
  font-size: 14px; font-weight: 500; color: #FFFDF7; margin-bottom: 6px;
}
.ruv2-hcard-act-pos { font-size: 12px; color: #C9A227; margin-bottom: 4px; }
.ruv2-hcard-act-note {
  font-size: 12px; color: rgba(255,253,247,0.55); line-height: 1.6;
}
.ruv2-hcard-natal {
  background: rgba(201,162,39,0.06);
  border: 1px solid rgba(201,162,39,0.2);
  border-radius: 8px;
  padding: 10px 14px 12px;
  margin-top: 12px;
  font-size: 12px; line-height: 1.8;
}
.ruv2-hcard-natal .ruv2-hcard-sec { margin-top: 0; }
.ruv2-hcard-natal-elem { color: #C9A227; font-weight: 500; }
.ruv2-hcard-natal-dir  { color: rgba(255,253,247,0.8); }
.ruv2-hcard-natal-favor { color: rgba(255,253,247,0.65); }
.ruv2-hcard-natal-favor::before { content: "✦ 关注："; color: #5a9c4e; }
.ruv2-hcard-natal-avoid { color: rgba(255,253,247,0.65); }
.ruv2-hcard-natal-avoid::before { content: "✦ 规避："; color: #C8102E; }
.ruv2-hcard-result {
  margin-top: 12px;
  border-top: 1px solid rgba(201,162,39,0.12);
  padding-top: 10px;
  font-size: 12px; font-weight: 500;
}
.ruv2-hcard-result--pending { color: rgba(201,162,39,0.7); }
.ruv2-hcard-result--done    { color: #7fc46f; }
:root[data-theme=light] .ruv2-hcard-text,
:root[data-theme=light] .ruv2-hcard-act-sum,
:root[data-theme=light] .ruv2-hcard-natal,
:root[data-theme=light] .ruv2-hcard-conf { color: #FFFDF7 !important; }
@media (max-width: 480px) {
  .ruv2-hcard { padding: 12px 13px; }
  .ruv2-hcard-conf { margin-left: 0; }
}
