/* 葬AI Web4 — 重构样式
   设计语言：暗色「讣告 / 终端」编辑风，尖锐红作为态度标记。 */

:root {
  --bg:        #0a0a0b;
  --bg-soft:   #121214;
  --bg-card:   #161618;
  --bg-hover:  #1d1d20;
  --line:      #26262b;
  --line-soft: #1c1c20;
  --ink:       #e8e6e1;
  --ink-dim:   #a3a09a;
  --ink-faint: #6b6862;
  --accent:    #e5484d;  /* 葬·红 */
  --accent-dim:#7a2528;
  --gold:      #d4a72c;

  /* 实体配色（与图谱一致） */
  --c-product: #4cc9f0;
  --c-founder: #f7b955;  /* person/founder */
  --c-company: #b388ff;
  --c-vc:      #5be3a7;

  --mono: "SF Mono", "JetBrains Mono", "Menlo", "Consolas", monospace;
  --sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei",
          "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --serif: "Songti SC", "SimSun", Georgia, "Times New Roman", serif;
  --maxw: 1180px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* 细网格背景 */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(var(--line-soft) 1px, transparent 1px),
    linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);
  background-size: 44px 44px;
  opacity: .35;
  pointer-events: none;
  z-index: 0;
}

a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent); }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; }

/* ---------- 顶部导航 ---------- */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(10,10,11,.82);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.nav-inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 24px;
  height: 58px; display: flex; align-items: center; justify-content: space-between;
}
.brand { display: flex; align-items: baseline; gap: 10px; font-weight: 700; letter-spacing: .02em; }
.brand .mark {
  font-family: var(--mono); color: var(--accent); font-size: 20px;
  border: 1px solid var(--accent-dim); padding: 1px 7px; border-radius: 3px;
}
.brand .name { font-size: 17px; }
.brand .sub { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); letter-spacing: .15em; }
.nav-links { display: flex; gap: 4px; align-items: center; }
.nav-links a {
  font-size: 14px; color: var(--ink-dim); padding: 7px 13px; border-radius: 5px;
  font-family: var(--mono); letter-spacing: .02em;
}
.nav-links a:hover { background: var(--bg-hover); color: var(--ink); }
.nav-links a.active { color: var(--accent); }

/* ---------- 首页 hero ---------- */
.hero { padding: 88px 0 56px; border-bottom: 1px solid var(--line); }
.hero .tag {
  font-family: var(--mono); font-size: 12px; color: var(--accent);
  letter-spacing: .25em; text-transform: uppercase; margin-bottom: 22px;
}
.hero h1 {
  font-size: clamp(40px, 7vw, 76px); line-height: 1.02; margin: 0 0 24px;
  font-weight: 800; letter-spacing: -.02em;
}
.hero h1 .red { color: var(--accent); }
.hero .lede {
  font-size: clamp(17px, 2.4vw, 21px); color: var(--ink-dim); max-width: 720px;
  line-height: 1.7; margin: 0 0 38px;
}
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap; }
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 14px; padding: 12px 22px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--bg-card); color: var(--ink);
  transition: all .15s; cursor: pointer;
}
.btn:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-1px); }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn.primary:hover { background: #f0595e; color: #fff; }

/* ---------- 统计带 ---------- */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--line);
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin: 56px 0; }
.stat { background: var(--bg-card); padding: 30px 26px; }
.stat .num { font-family: var(--mono); font-size: 40px; font-weight: 700; color: var(--ink); line-height: 1; }
.stat .num .u { font-size: 16px; color: var(--accent); margin-left: 3px; }
.stat .lbl { font-size: 13px; color: var(--ink-faint); margin-top: 10px; letter-spacing: .04em; }

/* ---------- 通用 section ---------- */
.section { padding: 56px 0; }
.section-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 28px; }
.section-head h2 { font-size: 26px; margin: 0; font-weight: 700; letter-spacing: -.01em; }
.section-head h2::before { content: "// "; color: var(--accent); font-family: var(--mono); }
.section-head .more { font-family: var(--mono); font-size: 13px; color: var(--ink-dim); }
.section-head .more:hover { color: var(--accent); }

/* ---------- 卡片网格 ---------- */
.grid { display: grid; gap: 16px; }
.grid.c2 { grid-template-columns: repeat(2, 1fr); }
.grid.c3 { grid-template-columns: repeat(3, 1fr); }

.card {
  background: var(--bg-card); border: 1px solid var(--line); border-radius: 10px;
  padding: 22px; transition: all .15s; display: block;
}
.card:hover { border-color: var(--accent-dim); background: var(--bg-hover); transform: translateY(-2px); }

/* 文章卡 */
.art-card .meta { font-family: var(--mono); font-size: 12px; color: var(--ink-faint); display: flex; gap: 12px; margin-bottom: 12px; }
.art-card .meta .author { color: var(--accent); }
.art-card h3 { font-size: 18px; margin: 0 0 10px; line-height: 1.4; font-weight: 650; }
.art-card .excerpt { font-size: 14px; color: var(--ink-dim); line-height: 1.65;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.art-card .ents { margin-top: 14px; display: flex; gap: 6px; flex-wrap: wrap; }

.chip {
  font-family: var(--mono); font-size: 11px; padding: 2px 9px; border-radius: 20px;
  border: 1px solid var(--line); color: var(--ink-dim);
}
.chip.product { color: var(--c-product); border-color: color-mix(in srgb, var(--c-product) 35%, transparent); }
.chip.person, .chip.founder { color: var(--c-founder); border-color: color-mix(in srgb, var(--c-founder) 35%, transparent); }
.chip.company { color: var(--c-company); border-color: color-mix(in srgb, var(--c-company) 35%, transparent); }
.chip.vc, .chip.vc_firm { color: var(--c-vc); border-color: color-mix(in srgb, var(--c-vc) 35%, transparent); }

/* ---------- 文章列表页 ---------- */
.list-toolbar { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-bottom: 28px; }
.search {
  flex: 1; min-width: 240px; background: var(--bg-card); border: 1px solid var(--line);
  border-radius: 8px; padding: 11px 15px; color: var(--ink); font-size: 15px; font-family: var(--sans);
}
.search:focus { outline: none; border-color: var(--accent); }
.search::placeholder { color: var(--ink-faint); }
.filters { display: flex; gap: 6px; flex-wrap: wrap; }
.filter-btn {
  font-family: var(--mono); font-size: 13px; padding: 9px 16px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--bg-card); color: var(--ink-dim); cursor: pointer; transition: all .15s;
}
.filter-btn:hover { color: var(--ink); border-color: var(--ink-faint); }
.filter-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.count-note { font-family: var(--mono); font-size: 13px; color: var(--ink-faint); margin-bottom: 18px; }

.art-row {
  display: grid; grid-template-columns: 64px 1fr auto; gap: 18px; align-items: center;
  padding: 18px 20px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg-card);
  margin-bottom: 10px; transition: all .15s;
}
.art-row:hover { border-color: var(--accent-dim); background: var(--bg-hover); transform: translateX(3px); }
.art-row .idx { font-family: var(--mono); font-size: 15px; color: var(--ink-faint); font-weight: 600; }
.art-row .body h3 { margin: 0 0 6px; font-size: 17px; font-weight: 600; line-height: 1.4; }
.art-row .body .sub { font-family: var(--mono); font-size: 12px; color: var(--ink-faint); display: flex; gap: 12px; }
.art-row .body .sub .author { color: var(--accent); }
.art-row .go { font-family: var(--mono); color: var(--ink-faint); font-size: 18px; }
.art-row:hover .go { color: var(--accent); }
.no-results { padding: 60px 0; text-align: center; color: var(--ink-faint); font-family: var(--mono); }

/* ---------- 文章详情 ---------- */
.article-head { padding: 56px 0 32px; border-bottom: 1px solid var(--line); }
.article-head .crumb { font-family: var(--mono); font-size: 13px; color: var(--ink-faint); margin-bottom: 22px; }
.article-head .crumb a:hover { color: var(--accent); }
.article-head h1 { font-size: clamp(28px, 4.5vw, 44px); line-height: 1.18; margin: 0 0 22px; font-weight: 800; letter-spacing: -.01em; }
.article-head .meta { font-family: var(--mono); font-size: 14px; color: var(--ink-dim); display: flex; gap: 18px; flex-wrap: wrap; }
.article-head .meta .author { color: var(--accent); }

.prose { padding: 44px 0; font-size: 17px; line-height: 1.9; max-width: 760px; }
.prose h1 { font-size: 30px; margin: 1.6em 0 .7em; font-weight: 750; letter-spacing: -.01em; }
.prose h2 { font-size: 24px; margin: 1.6em 0 .6em; font-weight: 700; padding-left: 14px; border-left: 3px solid var(--accent); }
.prose h3 { font-size: 20px; margin: 1.4em 0 .5em; font-weight: 650; }
.prose p { margin: 1.1em 0; color: var(--ink); }
.prose ul, .prose ol { margin: 1.1em 0; padding-left: 1.5em; }
.prose li { margin: .4em 0; }
.prose blockquote {
  margin: 1.4em 0; padding: 14px 22px; border-left: 3px solid var(--accent-dim);
  background: var(--bg-soft); color: var(--ink-dim); border-radius: 0 8px 8px 0; font-style: italic;
}
.prose code {
  font-family: var(--mono); font-size: .88em; background: var(--bg-soft);
  padding: 2px 6px; border-radius: 4px; border: 1px solid var(--line); color: var(--gold);
}
.prose pre {
  background: var(--bg-soft); border: 1px solid var(--line); border-radius: 8px;
  padding: 18px; overflow-x: auto; margin: 1.4em 0;
}
.prose pre code { background: none; border: none; padding: 0; color: var(--ink); }
.prose a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
.prose img { max-width: 100%; border-radius: 8px; }
.prose hr { border: none; border-top: 1px solid var(--line); margin: 2.2em 0; }
.prose strong { color: var(--ink); font-weight: 700; }
.prose table { border-collapse: collapse; width: 100%; margin: 1.4em 0; font-size: 15px; }
.prose th, .prose td { border: 1px solid var(--line); padding: 9px 13px; text-align: left; }
.prose th { background: var(--bg-soft); font-family: var(--mono); }

/* 文章内实体侧栏 */
.entity-box { background: var(--bg-card); border: 1px solid var(--line); border-radius: 10px; padding: 22px; margin-top: 40px; }
.entity-box h4 { margin: 0 0 14px; font-family: var(--mono); font-size: 13px; color: var(--ink-faint); letter-spacing: .1em; text-transform: uppercase; }
.entity-list { display: flex; gap: 8px; flex-wrap: wrap; }

/* 文章上下篇导航 */
.article-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 36px 0 70px; }
.article-nav a {
  background: var(--bg-card); border: 1px solid var(--line); border-radius: 9px; padding: 18px 20px; transition: all .15s;
}
.article-nav a:hover { border-color: var(--accent-dim); background: var(--bg-hover); }
.article-nav .dir { font-family: var(--mono); font-size: 12px; color: var(--ink-faint); margin-bottom: 6px; }
.article-nav .t { font-size: 15px; color: var(--ink); font-weight: 600; }
.article-nav a:hover .t { color: var(--accent); }
.article-nav .next { text-align: right; }

/* ---------- 图谱页 ---------- */
.graph-layout { display: grid; grid-template-columns: 1fr 320px; gap: 0; height: calc(100vh - 58px); }
#graph-canvas { width: 100%; height: 100%; display: block; background: radial-gradient(circle at 50% 40%, #101013 0%, #0a0a0b 70%); cursor: grab; }
#graph-canvas:active { cursor: grabbing; }
.graph-stage { position: relative; overflow: hidden; border-right: 1px solid var(--line); }
.graph-overlay { position: absolute; top: 16px; left: 16px; z-index: 5; display: flex; gap: 8px; flex-wrap: wrap; }
.legend { position: absolute; bottom: 16px; left: 16px; z-index: 5; background: rgba(18,18,20,.85);
  border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; font-family: var(--mono); font-size: 12px; }
.legend .row { display: flex; align-items: center; gap: 8px; margin: 4px 0; color: var(--ink-dim); }
.legend .dot { width: 10px; height: 10px; border-radius: 50%; }
.graph-hint { position: absolute; bottom: 16px; right: 16px; z-index: 5; font-family: var(--mono);
  font-size: 11px; color: var(--ink-faint); background: rgba(18,18,20,.8); padding: 6px 10px; border-radius: 6px; border: 1px solid var(--line); }
.toggle {
  font-family: var(--mono); font-size: 12px; padding: 6px 12px; border-radius: 6px;
  border: 1px solid var(--line); background: rgba(18,18,20,.85); color: var(--ink-dim); cursor: pointer;
}
.toggle:hover, .toggle.active { color: var(--accent); border-color: var(--accent-dim); }

/* 图谱侧栏 */
.graph-side { background: var(--bg-soft); overflow-y: auto; }
.side-pad { padding: 20px; }
.node-detail .nd-type { font-family: var(--mono); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; }
.node-detail h3 { font-size: 22px; margin: 8px 0 14px; }
.node-detail .desc { font-size: 14px; color: var(--ink-dim); line-height: 1.7; }
.node-detail .nd-stats { display: flex; gap: 18px; margin: 18px 0; font-family: var(--mono); font-size: 13px; }
.node-detail .nd-stats .v { font-size: 20px; color: var(--ink); }
.node-detail .nd-stats .k { color: var(--ink-faint); font-size: 11px; }
.nd-section h5 { font-family: var(--mono); font-size: 12px; color: var(--ink-faint); letter-spacing: .08em; text-transform: uppercase; margin: 20px 0 10px; }
.nd-rel { font-size: 13px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); color: var(--ink-dim); }
.nd-rel .rt { font-family: var(--mono); color: var(--accent); font-size: 11px; }
.side-empty { color: var(--ink-faint); font-family: var(--mono); font-size: 13px; text-align: center; padding: 50px 14px; line-height: 1.8; }

/* 排行榜 */
.lb-tabs { display: flex; gap: 6px; margin-bottom: 18px; flex-wrap: wrap; }
.lb-tab { font-family: var(--mono); font-size: 13px; padding: 7px 14px; border-radius: 7px;
  border: 1px solid var(--line); background: var(--bg-card); color: var(--ink-dim); cursor: pointer; }
.lb-tab.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.lb-row { display: grid; grid-template-columns: 30px 1fr auto; gap: 12px; align-items: center;
  padding: 11px 12px; border-radius: 7px; transition: background .12s; cursor: pointer; }
.lb-row:hover { background: var(--bg-hover); }
.lb-row .rank { font-family: var(--mono); font-weight: 700; color: var(--ink-faint); }
.lb-row.top1 .rank { color: var(--gold); }
.lb-row.top2 .rank, .lb-row.top3 .rank { color: var(--accent); }
.lb-row .nm { font-size: 14px; font-weight: 600; }
.lb-row .nm .d { font-size: 11px; color: var(--ink-faint); font-weight: 400; display: block; }
.lb-row .metric { font-family: var(--mono); font-size: 12px; color: var(--ink-dim); text-align: right; }

/* 排行榜独立页 section（图谱页底部） */
.lb-page { background: var(--bg); padding: 56px 0 80px; border-top: 1px solid var(--line); }

/* ---------- 页脚 ---------- */
.foot { border-top: 1px solid var(--line); padding: 40px 0; color: var(--ink-faint); font-family: var(--mono); font-size: 13px; }
.foot .wrap { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; }
.foot a { color: var(--ink-dim); }
.foot a:hover { color: var(--accent); }

/* ---------- 响应式 ---------- */
@media (max-width: 900px) {
  .stats { grid-template-columns: repeat(2, 1fr); }
  .grid.c3, .grid.c2 { grid-template-columns: 1fr; }
  .graph-layout { grid-template-columns: 1fr; height: auto; }
  .graph-stage { height: 62vh; border-right: none; border-bottom: 1px solid var(--line); }
  .graph-side { max-height: none; }
  .nav-links a { padding: 7px 9px; font-size: 13px; }
  .brand .sub { display: none; }
  .article-nav { grid-template-columns: 1fr; }
}
