/* =====================================================
   GWCAPITAL // TRON SCAMHUNTER
   Cyberpunk forensics console — cyan/magenta neon theme
   ===================================================== */

@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;500;700&family=Rajdhani:wght@500;600;700&display=swap');

:root {
  --cy-bg: #02050d;
  --cy-bg-panel: #07101e;
  --cy-surface: #0b1426;
  --cy-surface-hi: #122036;
  --cy-border: #1a2942;
  --cy-border-hi: #2a4468;

  --cy-cyan: #00f0ff;
  --cy-cyan-dim: #0891b2;
  --cy-cyan-glow: rgba(0, 240, 255, 0.5);
  --cy-magenta: #ff1a8c;
  --cy-magenta-dim: #be185d;
  --cy-magenta-glow: rgba(255, 26, 140, 0.5);
  --cy-green: #00ff88;
  --cy-green-glow: rgba(0, 255, 136, 0.45);
  --cy-orange: #ff9500;
  --cy-orange-glow: rgba(255, 149, 0, 0.4);
  --cy-red: #ff3366;
  --cy-red-glow: rgba(255, 51, 102, 0.5);
  --cy-yellow: #ffcc00;

  --cy-text: #e8f0ff;
  --cy-text-dim: #8ba3c7;
  --cy-text-faded: #506381;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--cy-bg);
  color: var(--cy-text);
  font-family: 'JetBrains Mono', 'SF Mono', 'Menlo', monospace;
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* 背景网格 */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(0, 240, 255, 0.04) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(0, 240, 255, 0.04) 1px, transparent 1px);
  background-size: 32px 32px;
  pointer-events: none;
  z-index: 0;
}

/* 扫描线叠加 */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent 2px,
    rgba(255, 255, 255, 0.012) 3px,
    transparent 4px
  );
  pointer-events: none;
  z-index: 2;
  mix-blend-mode: overlay;
}

body > * { position: relative; z-index: 1; }

::selection { background: var(--cy-cyan); color: var(--cy-bg); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--cy-bg-panel); }
::-webkit-scrollbar-thumb {
  background: var(--cy-border-hi);
  border-radius: 0;
}
::-webkit-scrollbar-thumb:hover { background: var(--cy-cyan-dim); }

body { user-select: none; }
input, textarea, .markdown-body, .allow-select { user-select: text; }

/* ---------- 品牌字样 ---------- */
.cy-brand {
  font-family: 'Orbitron', sans-serif;
  font-weight: 900;
  letter-spacing: 0.22em;
  background: linear-gradient(90deg, var(--cy-cyan) 0%, var(--cy-magenta) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 0 28px var(--cy-cyan-glow);
}

.cy-sub {
  font-family: 'Rajdhani', sans-serif;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cy-text-dim);
}

.cy-tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cy-text-faded);
}

.cy-label {
  font-family: 'Rajdhani', sans-serif;
  font-weight: 600;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--cy-text-faded);
  margin-bottom: 6px;
}

/* ---------- 面板/卡片 ---------- */
.cy-panel {
  background:
    linear-gradient(135deg, rgba(0, 240, 255, 0.02) 0%, transparent 100%),
    var(--cy-surface);
  border: 1px solid var(--cy-border);
  position: relative;
}

/* 角上的 L 型装饰 */
.cy-panel-corners::before,
.cy-panel-corners::after {
  content: '';
  position: absolute;
  width: 14px; height: 14px;
  pointer-events: none;
}
.cy-panel-corners::before {
  top: -1px; left: -1px;
  border-top: 2px solid var(--cy-cyan);
  border-left: 2px solid var(--cy-cyan);
}
.cy-panel-corners::after {
  bottom: -1px; right: -1px;
  border-bottom: 2px solid var(--cy-magenta);
  border-right: 2px solid var(--cy-magenta);
}

.cy-panel-hi {
  box-shadow:
    0 0 30px rgba(0, 240, 255, 0.08),
    inset 0 0 30px rgba(0, 240, 255, 0.02);
}

/* ---------- 输入框 ---------- */
.cy-input, .cy-textarea {
  background: var(--cy-bg-panel);
  border: 1px solid var(--cy-border);
  border-radius: 0;
  color: var(--cy-text);
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  padding: 12px 16px;
  width: 100%;
  transition: all 0.2s;
  outline: none;
}
.cy-input:focus, .cy-textarea:focus {
  border-color: var(--cy-cyan);
  box-shadow: 0 0 12px rgba(0, 240, 255, 0.25), inset 0 0 12px rgba(0, 240, 255, 0.04);
}
.cy-input::placeholder, .cy-textarea::placeholder { color: var(--cy-text-faded); }
.cy-textarea { resize: none; line-height: 1.5; }

/* ---------- 按钮 ---------- */
.cy-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: linear-gradient(180deg, rgba(0, 240, 255, 0.08), transparent);
  border: 1px solid var(--cy-cyan);
  color: var(--cy-cyan);
  font-family: 'Rajdhani', sans-serif;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 24px;
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
  box-shadow: 0 0 16px rgba(0, 240, 255, 0.2), inset 0 0 16px rgba(0, 240, 255, 0.04);
}
.cy-btn:hover:not(:disabled) {
  color: var(--cy-bg);
  background: linear-gradient(180deg, var(--cy-cyan), var(--cy-cyan-dim));
  box-shadow: 0 0 36px rgba(0, 240, 255, 0.55);
  text-shadow: none;
}
.cy-btn:disabled {
  color: var(--cy-text-faded);
  border-color: var(--cy-border);
  box-shadow: none;
  cursor: not-allowed;
  background: transparent;
}

.cy-btn-green {
  border-color: var(--cy-green);
  color: var(--cy-green);
  box-shadow: 0 0 16px var(--cy-green-glow), inset 0 0 16px rgba(0, 255, 136, 0.04);
}
.cy-btn-green:hover:not(:disabled) {
  background: linear-gradient(180deg, var(--cy-green), #00cc70);
  color: var(--cy-bg);
  box-shadow: 0 0 36px var(--cy-green-glow);
}

.cy-btn-magenta {
  border-color: var(--cy-magenta);
  color: var(--cy-magenta);
  box-shadow: 0 0 16px var(--cy-magenta-glow), inset 0 0 16px rgba(255, 26, 140, 0.04);
}
.cy-btn-magenta:hover:not(:disabled) {
  background: linear-gradient(180deg, var(--cy-magenta), var(--cy-magenta-dim));
  color: #fff;
  box-shadow: 0 0 36px var(--cy-magenta-glow);
}

.cy-btn-ghost {
  border-color: var(--cy-border-hi);
  color: var(--cy-text-dim);
  box-shadow: none;
  background: transparent;
}
.cy-btn-ghost:hover:not(:disabled) {
  border-color: var(--cy-text-dim);
  color: var(--cy-text);
  background: rgba(255, 255, 255, 0.03);
}

.cy-btn-sm {
  padding: 6px 14px;
  font-size: 11px;
  letter-spacing: 0.15em;
}

/* ---------- 状态徽章 ---------- */
.cy-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 12px;
  background: rgba(0, 240, 255, 0.08);
  color: var(--cy-cyan);
  border: 1px solid rgba(0, 240, 255, 0.3);
}
.cy-badge::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 6px currentColor;
  animation: cy-pulse 1.5s ease-in-out infinite;
}
@keyframes cy-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.25; }
}

.cy-badge-orange { color: var(--cy-orange); background: rgba(255, 149, 0, 0.1); border-color: rgba(255, 149, 0, 0.3); }
.cy-badge-green  { color: var(--cy-green);  background: rgba(0, 255, 136, 0.1); border-color: rgba(0, 255, 136, 0.3); }
.cy-badge-red    { color: var(--cy-red);    background: rgba(255, 51, 102, 0.1); border-color: rgba(255, 51, 102, 0.3); }
.cy-badge-magenta{ color: var(--cy-magenta);background: rgba(255, 26, 140, 0.1); border-color: rgba(255, 26, 140, 0.3); }
.cy-badge-dim    { color: var(--cy-text-faded); background: rgba(255, 255, 255, 0.02); border-color: var(--cy-border); }
.cy-badge-dim::before { animation: none; opacity: 0.5; }

/* ---------- 顶部状态行 ---------- */
.cy-topbar {
  background: linear-gradient(180deg, var(--cy-surface-hi), var(--cy-surface));
  border-bottom: 1px solid var(--cy-border-hi);
  padding: 10px 24px;
  display: flex;
  align-items: center;
  gap: 16px;
  position: relative;
}
.cy-topbar::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cy-cyan), var(--cy-magenta), transparent);
  opacity: 0.6;
}

/* ---------- 底部状态行 ---------- */
.cy-statusbar {
  background: var(--cy-bg-panel);
  border-top: 1px solid var(--cy-border);
  padding: 6px 24px;
  display: flex;
  gap: 24px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  color: var(--cy-text-faded);
  letter-spacing: 0.05em;
}
.cy-statusbar b {
  color: var(--cy-cyan);
  font-weight: 700;
}
.cy-statusbar .cy-sb-label {
  color: var(--cy-text-faded);
  margin-right: 6px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

/* ---------- 侧边栏布局 ---------- */
.cy-sidebar {
  background: var(--cy-surface);
  border-right: 1px solid var(--cy-border);
  padding: 20px 16px;
  overflow-y: auto;
}
.cy-sidebar-right {
  background: var(--cy-bg-panel);
  border-left: 1px solid var(--cy-border);
  padding: 20px 16px;
  overflow-y: auto;
}

.cy-addr {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  background: var(--cy-bg-panel);
  border-left: 2px solid var(--cy-cyan-dim);
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  color: var(--cy-text-dim);
  margin-bottom: 4px;
}
.cy-addr-risk { border-left-color: var(--cy-red); color: var(--cy-text); background: rgba(255, 51, 102, 0.04); }
.cy-addr-done { border-left-color: var(--cy-green); opacity: 0.75; }

.cy-big-number {
  font-family: 'Orbitron', sans-serif;
  font-weight: 700;
  color: var(--cy-cyan);
  text-shadow: 0 0 8px var(--cy-cyan-glow);
  font-size: 22px;
  line-height: 1;
}

/* ---------- 日志流 ---------- */
#log-stream { padding: 20px 24px; }

.cy-log-thinking {
  color: var(--cy-text-dim);
  font-style: italic;
  padding: 6px 0 6px 12px;
  border-left: 2px solid var(--cy-border-hi);
  margin: 4px 0;
}
.cy-log-thinking::before {
  content: '> ';
  color: var(--cy-cyan);
  font-style: normal;
  font-weight: 700;
}

.cy-log-toolcall {
  color: var(--cy-cyan);
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  padding: 4px 0 4px 12px;
  border-left: 2px solid var(--cy-cyan);
  margin: 2px 0;
}
.cy-log-toolcall::before {
  content: '[调用] ';
  color: var(--cy-text-faded);
  font-size: 10px;
  letter-spacing: 0.1em;
}

.cy-log-toolresult {
  color: var(--cy-green);
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  padding: 2px 0 6px 28px;
  opacity: 0.9;
}
.cy-log-toolresult.err { color: var(--cy-red); }
.cy-log-toolresult::before {
  content: '↳ ';
  color: var(--cy-text-faded);
}

.cy-log-error {
  color: var(--cy-red);
  background: rgba(255, 51, 102, 0.08);
  border: 1px solid rgba(255, 51, 102, 0.3);
  padding: 10px 14px;
  margin: 8px 0;
  font-family: 'JetBrains Mono', monospace;
}

.cy-log-info {
  color: var(--cy-text-faded);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 10px 0;
  text-align: center;
  position: relative;
}
.cy-log-info::before, .cy-log-info::after {
  content: '';
  display: inline-block;
  width: 40px;
  height: 1px;
  background: var(--cy-border-hi);
  vertical-align: middle;
  margin: 0 12px;
}

/* ---------- 阶段结论卡片 ---------- */
.cy-phase-card {
  background:
    linear-gradient(135deg, rgba(255, 26, 140, 0.04) 0%, transparent 50%),
    var(--cy-surface);
  border: 1px solid var(--cy-magenta);
  border-left: 4px solid var(--cy-magenta);
  padding: 18px 20px;
  margin: 16px 0;
  box-shadow: 0 0 24px rgba(255, 26, 140, 0.14);
  position: relative;
}
.cy-phase-card h3 {
  font-family: 'Rajdhani', sans-serif;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cy-magenta);
  text-shadow: 0 0 10px var(--cy-magenta-glow);
  margin: 0 0 12px;
  font-size: 15px;
}

.cy-report-card {
  background: var(--cy-surface);
  border: 1px solid var(--cy-green);
  border-left: 4px solid var(--cy-green);
  padding: 24px;
  margin: 16px 0;
  box-shadow: 0 0 24px var(--cy-green-glow);
}
.cy-report-card h3 {
  font-family: 'Rajdhani', sans-serif;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cy-green);
  text-shadow: 0 0 10px var(--cy-green-glow);
  margin: 0 0 14px;
  font-size: 16px;
}

/* ---------- Markdown 渲染 ---------- */
.markdown-body h1 { font-family: 'Orbitron', sans-serif; font-weight: 700; font-size: 1.3em; margin: 14px 0 8px; color: var(--cy-cyan); letter-spacing: 0.08em; }
.markdown-body h2 { font-family: 'Rajdhani', sans-serif; font-weight: 700; font-size: 1.2em; margin: 12px 0 6px; color: var(--cy-text); letter-spacing: 0.08em; text-transform: uppercase; border-bottom: 1px solid var(--cy-border); padding-bottom: 4px; }
.markdown-body h3 { font-size: 1.05em; margin: 10px 0 4px; color: var(--cy-cyan); font-weight: 600; }
.markdown-body p { margin: 4px 0 8px; }
.markdown-body ul { padding-left: 20px; margin: 4px 0 8px; }
.markdown-body li { margin: 2px 0; }
.markdown-body code { background: var(--cy-bg-panel); padding: 1px 6px; border-radius: 2px; font-size: 0.88em; color: var(--cy-cyan); border: 1px solid var(--cy-border); }
.markdown-body pre { background: var(--cy-bg-panel); padding: 10px; border: 1px solid var(--cy-border); overflow-x: auto; margin: 8px 0; }
.markdown-body pre code { background: transparent; border: none; padding: 0; }
.markdown-body table { border-collapse: collapse; margin: 8px 0; width: 100%; font-size: 0.92em; }
.markdown-body th, .markdown-body td { border: 1px solid var(--cy-border); padding: 6px 10px; text-align: left; }
.markdown-body th { background: var(--cy-bg-panel); color: var(--cy-cyan); font-weight: 600; letter-spacing: 0.05em; }
.markdown-body strong { color: var(--cy-text); font-weight: 700; }
.markdown-body hr { border: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--cy-border-hi), transparent); margin: 12px 0; }

/* Mermaid */
#mermaid-container svg { max-width: 100%; height: auto; }

/* ---------- 分隔线 ---------- */
.cy-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cy-border-hi), transparent);
  margin: 16px 0;
}

/* ---------- 主页大面板动画 ---------- */
@keyframes cy-fadein {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.cy-fadein { animation: cy-fadein 0.4s ease-out; }

/* ---------- 地址点击链接 ---------- */
.cy-link-addr {
  color: var(--cy-cyan);
  text-decoration: none;
  border-bottom: 1px dashed rgba(0, 240, 255, 0.3);
  transition: all 0.15s;
  cursor: pointer;
}
.cy-link-addr:hover {
  color: var(--cy-magenta);
  border-bottom-color: var(--cy-magenta);
  text-shadow: 0 0 6px var(--cy-magenta-glow);
}

/* ---------- Mermaid 右栏容器(支持 panzoom) ---------- */
#mermaid-container {
  background: var(--cy-bg);
  border: 1px solid var(--cy-border);
  padding: 8px;
  min-height: 240px;
  max-height: 60vh;
  overflow: hidden;
  position: relative;
}
#mermaid-container svg {
  cursor: grab;
}
#mermaid-container svg:active { cursor: grabbing; }

.mm-wrap {
  background: var(--cy-bg-panel);
  border: 1px solid var(--cy-border);
  padding: 12px;
  margin: 10px 0;
  overflow-x: auto;
}

/* ---------- Mermaid 图例 ---------- */
.cy-graph-legend .legend-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  color: var(--cy-text-dim);
  padding: 3px 0;
  font-family: 'JetBrains Mono', monospace;
}
.cy-graph-legend .legend-dot {
  display: inline-block;
  width: 10px; height: 10px;
  border-radius: 2px;
  flex-shrink: 0;
}

/* ---------- 报告视图 ---------- */
#report-body {
  padding: 40px 60px;
  background: var(--cy-bg);
  color: var(--cy-text);
}
.report-content {
  max-width: 900px;
  margin: 0 auto;
  font-size: 14px;
  line-height: 1.75;
  user-select: text;
}
.report-content h1 {
  font-size: 1.8em;
  margin-bottom: 0.5em;
}
.report-content h2 {
  font-size: 1.35em;
  margin-top: 1.8em;
}

/* ---------- Toast ---------- */
.cy-toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--cy-surface-hi);
  border: 1px solid var(--cy-cyan);
  color: var(--cy-cyan);
  padding: 10px 20px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.08em;
  box-shadow: 0 0 24px var(--cy-cyan-glow);
  z-index: 100;
}

/* ---------- 打印样式(保存 PDF) ---------- */
@media print {
  html, body {
    background: white !important;
    color: black !important;
    overflow: auto !important;
  }
  body::before, body::after { display: none !important; }
  #view-home, #view-analysis { display: none !important; }
  #view-report { height: auto !important; }
  #view-report .cy-topbar { display: none !important; }
  #report-body {
    background: white !important;
    color: black !important;
    padding: 20px !important;
  }
  .report-content {
    color: black !important;
    max-width: none !important;
  }
  .markdown-body h1, .markdown-body h2, .markdown-body h3 {
    color: black !important;
    text-shadow: none !important;
    border-bottom-color: #ccc !important;
  }
  .markdown-body code {
    background: #f0f0f0 !important;
    color: #c7254e !important;
    border: none !important;
  }
  .markdown-body pre {
    background: #f5f5f5 !important;
    border: 1px solid #ddd !important;
  }
  .markdown-body th {
    background: #f0f0f0 !important;
    color: black !important;
  }
  .markdown-body th, .markdown-body td {
    border: 1px solid #999 !important;
    color: black !important;
  }
  .mm-wrap {
    background: white !important;
    border: 1px solid #ccc !important;
  }
  .cy-link-addr {
    color: #0066cc !important;
    border: none !important;
    text-decoration: underline;
  }
}
