@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;900&family=ZCOOL+XiaoWei&family=JetBrains+Mono:wght@400;700&display=swap');

/* ========== 根容器 · 咒夜基调 ========== */
jjk {
  --bg-0:#060608; --bg-1:#0a0a0c; --bg-2:#111820;
  --curse:#8b0000; --blood:#e50914;
  --erotic:#e6005c; --pink:#ff4d9d;
  --six:#4facfe; --cyan:#00f2fe;
  --gold:#eebb44; --purple:#bb44ff;
  --steel:#3a5a7a; --steel2:#6b8ca8;
  --ink:#e2e2e2; --dim:#aaa;
  display:block;
  font-family:'Noto Serif SC','宋体',serif;
  font-size:14px; line-height:1.75; color:var(--ink);
  background:
    radial-gradient(ellipse at top,#141419 0%,#060608 70%),
    radial-gradient(circle at 20% 10%,rgba(139,0,0,.15) 0%,transparent 45%),
    radial-gradient(circle at 85% 90%,rgba(230,0,92,.1) 0%,transparent 55%);
  padding:14px 12px; border-radius:10px;
  border:1px solid rgba(139,0,0,.3);
  box-shadow:0 8px 32px rgba(0,0,0,.7), 0 0 24px rgba(139,0,0,.15) inset;
  position:relative; overflow:hidden;
}
jjk::before{
  content:''; position:absolute; inset:-2px;
  background:linear-gradient(135deg,transparent 30%,rgba(229,9,20,.08) 50%,transparent 70%);
  background-size:200% 200%;
  animation:cursePulse 8s ease-in-out infinite;
  pointer-events:none; z-index:0;
}
@keyframes cursePulse{0%,100%{background-position:0% 0%}50%{background-position:100% 100%}}

/* ========== 通用 details ========== */
jjk details{ margin:10px 0; border-radius:6px; overflow:hidden; position:relative; z-index:1; }
jjk summary{ cursor:pointer; list-style:none; user-select:none; position:relative; transition:all .3s; }
jjk summary::-webkit-details-marker{ display:none; }
jjk summary::after{
  content:'▾'; position:absolute; right:14px; top:50%;
  transform:translateY(-50%); transition:transform .35s;
  font-size:12px; opacity:.6;
}
jjk details[open] > summary::after{ transform:translateY(-50%) rotate(-180deg); }

/* ========== ① 思维链 · 领域前置演算 ========== */
jjk .chain{
  background:linear-gradient(135deg,#0e0103 0%,#1a0006 50%,#0e0103 100%);
  border:1px solid var(--curse);
  box-shadow:0 0 20px rgba(139,0,0,.3) inset, 0 4px 12px rgba(0,0,0,.5);
}
jjk .chain > summary{
  padding:11px 40px 11px 44px;
  font-family:'ZCOOL XiaoWei','Noto Serif SC',serif;
  font-size:13.5px; color:#ff6b6b; letter-spacing:1.5px;
  background:linear-gradient(90deg,rgba(139,0,0,.4) 0%,rgba(139,0,0,.1) 100%);
  border-bottom:1px solid rgba(229,9,20,.4);
  text-shadow:0 0 10px rgba(229,9,20,.7);
}
jjk .chain > summary::before{
  content:''; position:absolute; left:12px; top:50%;
  width:22px; height:22px; transform:translateY(-50%);
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke='%23e50914' stroke-width='2.5'><circle cx='50' cy='50' r='46'/><circle cx='50' cy='50' r='30'/><circle cx='50' cy='50' r='14' fill='%238b0000'/><path d='M50 4 L50 96 M4 50 L96 50 M17 17 L83 83 M83 17 L17 83'/></g></svg>") center/contain no-repeat;
  animation:sealRotate 10s linear infinite;
  filter:drop-shadow(0 0 6px var(--blood));
}
@keyframes sealRotate{ from{transform:translateY(-50%) rotate(0deg)} to{transform:translateY(-50%) rotate(360deg)} }

jjk .chain ol{ list-style:none; padding:10px 12px; margin:0; counter-reset:chain; }
jjk .chain li{
  counter-increment:chain;
  margin:6px 0; padding:9px 12px 9px 40px;
  background:rgba(20,0,0,.45);
  border-left:2px solid var(--curse);
  border-radius:4px; position:relative;
  font-size:12.5px; color:#ccc;
  transition:all .28s;
}
jjk .chain li::before{
  content:counter(chain,decimal-leading-zero);
  position:absolute; left:8px; top:50%;
  width:26px; height:26px; line-height:26px;
  transform:translateY(-50%); text-align:center;
  background:radial-gradient(circle,var(--blood) 0%,var(--curse) 70%,transparent 100%);
  color:#fff; font-family:'JetBrains Mono',monospace;
  font-weight:700; font-size:10.5px; border-radius:50%;
  box-shadow:0 0 8px rgba(229,9,20,.7);
}
jjk .chain li:hover{
  background:rgba(50,0,0,.7);
  border-left-color:var(--blood);
  box-shadow:0 0 14px rgba(229,9,20,.35), inset 0 0 8px rgba(229,9,20,.1);
  transform:translateX(3px);
}
jjk .chain li f{
  display:inline-block; font-weight:700; color:#ff9999;
  margin-right:6px; font-family:'ZCOOL XiaoWei',serif; font-size:13px;
}
jjk .chain li v{ display:block; margin-top:4px; color:#bbb; font-size:11.5px; line-height:1.65; }
jjk .chain li.mc{ background:linear-gradient(90deg,rgba(80,40,0,.55),rgba(20,0,0,.4)); border-left-color:var(--gold); }
jjk .chain li.mc::before{ background:radial-gradient(circle,var(--gold) 0%,#aa7700 70%,transparent 100%); box-shadow:0 0 8px rgba(238,187,68,.7); }
jjk .chain li.mc f{ color:#ffd070; }
jjk .chain li.lock{ background:linear-gradient(90deg,rgba(60,20,80,.5),rgba(20,0,0,.4)); border-left-color:var(--purple); }
jjk .chain li.lock::before{ background:radial-gradient(circle,var(--purple) 0%,#663388 70%,transparent 100%); box-shadow:0 0 8px rgba(187,68,255,.7); }
jjk .chain li.lock f{ color:#d99aff; }

/* ========== ② 正文 · 墨血史诗 ========== */
jjk nv{
  display:block; margin:14px 0; padding:20px 18px 20px 24px;
  background:linear-gradient(135deg,#0d0d11 0%,#08080a 100%);
  border-left:3px solid var(--curse);
  border-radius:0 6px 6px 0;
  box-shadow:0 0 20px rgba(0,0,0,.6) inset, 0 2px 8px rgba(139,0,0,.2);
  font-size:15px; color:#e8e8e8; line-height:1.92;
  text-align:justify; letter-spacing:.4px;
  position:relative;
}
jjk nv::before{
  content:''; position:absolute; top:0; left:-3px;
  width:3px; height:30%;
  background:linear-gradient(to bottom,transparent,var(--blood),transparent);
  animation:bloodFlow 4s ease-in-out infinite;
  box-shadow:0 0 8px var(--blood);
}
@keyframes bloodFlow{ 0%,100%{top:-10%;opacity:.3} 50%{top:70%;opacity:1} }
jjk nv::after{
  content:'呪'; position:absolute; right:14px; bottom:8px;
  font-family:'ZCOOL XiaoWei',serif; font-size:42px;
  color:rgba(139,0,0,.1); font-weight:900;
  pointer-events:none;
}
jjk nv p{ margin:0 0 14px 0; text-indent:2em; }
jjk nv p:last-child{ margin-bottom:0; }
jjk nv p:first-of-type:first-letter{
  font-size:2em; font-weight:900; float:left;
  color:var(--blood); line-height:1; padding:2px 8px 0 0;
  font-family:'ZCOOL XiaoWei',serif;
  text-shadow:0 0 12px rgba(229,9,20,.6);
}

/* ========== ③ 舞台 · 结界轴心 ========== */
jjk stage{
  display:block; margin:12px 0;
  background:linear-gradient(135deg,#0a1220 0%,#111820 100%);
  border:1px solid rgba(79,172,254,.45);
  border-radius:6px;
  box-shadow:0 0 14px rgba(79,172,254,.15) inset;
  overflow:hidden; position:relative;
}
jjk stage::before{
  content:''; position:absolute; top:0; left:0; right:0; height:1px;
  background:linear-gradient(90deg,transparent,var(--cyan),transparent);
  animation:scan 4.5s linear infinite;
}
@keyframes scan{ 0%{transform:translateX(-100%)} 100%{transform:translateX(100%)} }
jjk stage hd{
  display:block; padding:9px 14px;
  background:linear-gradient(90deg,rgba(79,172,254,.22),transparent);
  color:var(--cyan); font-weight:700; font-size:13px;
  letter-spacing:2px;
  border-bottom:1px dashed rgba(79,172,254,.35);
  text-shadow:0 0 8px rgba(79,172,254,.6);
}
jjk stage d{
  display:block; padding:7px 14px; font-size:12.5px;
  color:#b8d4e8;
  border-bottom:1px solid rgba(79,172,254,.08);
  transition:all .22s;
}
jjk stage d:last-child{ border-bottom:none; }
jjk stage d:hover{ background:rgba(79,172,254,.08); padding-left:18px; }
jjk stage d f{
  display:inline-block; color:var(--six); font-weight:600;
  margin-right:8px; min-width:90px;
  font-family:'JetBrains Mono',monospace; font-size:11.5px;
}

/* ========== ④ 记忆残秽 ========== */
jjk .mem{
  background:linear-gradient(135deg,#1a0a0a 0%,#0f0505 100%);
  border:1px solid rgba(170,68,68,.4);
  box-shadow:0 0 14px rgba(170,68,68,.15) inset;
}
jjk .mem > summary{
  padding:10px 14px; font-weight:700; font-size:13px;
  background:linear-gradient(90deg,#3a1010 0%,#1a0808 100%);
  color:#ffcccc; letter-spacing:1.2px;
  border-bottom:1px solid rgba(229,9,20,.35);
  text-shadow:0 0 6px rgba(229,9,20,.6);
}
jjk .mem count{
  display:inline-block; margin-left:8px;
  padding:2px 10px; font-size:11px;
  background:rgba(139,0,0,.55);
  border:1px solid var(--curse); border-radius:12px;
  font-family:'JetBrains Mono',monospace; color:var(--gold);
}
jjk .mem note{
  display:block; margin:10px 12px 4px 12px;
  padding:8px 12px; font-size:11.5px;
  background:rgba(238,187,68,.06);
  border-left:2px solid var(--gold); border-radius:0 4px 4px 0;
  color:#ddbb88; font-style:italic; line-height:1.7;
}
jjk .mem sec{
  display:block; margin:10px 12px; padding:10px;
  background:rgba(0,0,0,.4); border-radius:5px;
}
jjk .mem sec.ltm{
  border:1px solid rgba(238,187,68,.3);
  background:linear-gradient(135deg,rgba(30,20,0,.55),rgba(10,5,0,.35));
  box-shadow:0 0 10px rgba(238,187,68,.08) inset;
}
jjk .mem sec.stm{
  border:1px solid rgba(79,172,254,.28);
  background:linear-gradient(135deg,rgba(0,10,20,.55),rgba(0,5,10,.35));
  box-shadow:0 0 10px rgba(79,172,254,.08) inset;
}
jjk .mem sec hd{
  display:block; padding:4px 8px 8px 8px;
  font-size:12px; font-weight:700; letter-spacing:.8px;
  border-bottom:1px dashed rgba(255,255,255,.1);
  margin-bottom:8px;
}
jjk .mem sec.ltm hd{ color:var(--gold); text-shadow:0 0 6px rgba(238,187,68,.4); }
jjk .mem sec.stm hd{ color:var(--six); text-shadow:0 0 6px rgba(79,172,254,.4); }
jjk .mem sec d{
  display:block; padding:7px 10px; margin:5px 0;
  font-size:12px; line-height:1.7;
  background:rgba(0,0,0,.35);
  border-left:2px solid;
  border-radius:0 4px 4px 0;
  transition:all .25s;
}
jjk .mem sec.ltm d{ border-left-color:var(--gold); color:#d8c8a0; }
jjk .mem sec.stm d{ border-left-color:var(--six); color:#a8c8e0; }
jjk .mem sec d:hover{ background:rgba(255,255,255,.05); transform:translateX(3px); }
jjk .mem sec d f{
  display:inline-block; padding:2px 8px; margin-right:8px;
  font-family:'JetBrains Mono',monospace; font-weight:700; font-size:10.5px;
  border-radius:3px;
}
jjk .mem sec.ltm d f{ background:linear-gradient(90deg,var(--gold),#aa7700); color:#000; }
jjk .mem sec.stm d f{ background:linear-gradient(90deg,var(--six),#2266aa); color:#000; }
jjk .mem sec.stm d.new{
  border-left-color:var(--blood);
  background:linear-gradient(90deg,rgba(229,9,20,.18),rgba(0,0,0,.3));
  animation:newPulse 2s ease-in-out infinite;
}
jjk .mem sec.stm d.new f{ background:linear-gradient(90deg,var(--blood),var(--curse)); color:#fff; }
@keyframes newPulse{ 0%,100%{box-shadow:0 0 0 rgba(229,9,20,0)} 50%{box-shadow:0 0 14px rgba(229,9,20,.45)} }

/* ========== ⑤ 宿星受体 · USER ========== */
jjk .user{
  background:linear-gradient(135deg,#1a0505 0%,#0a0000 100%);
  border:1px solid rgba(139,0,0,.65);
  box-shadow:0 0 18px rgba(139,0,0,.28) inset, 0 4px 12px rgba(0,0,0,.5);
}
jjk .user > summary{
  padding:11px 14px; font-weight:700; font-size:14px;
  letter-spacing:2.5px; color:#fff;
  background:linear-gradient(90deg,#000 0%,var(--curse) 50%,#000 100%);
  border-bottom:1px solid var(--blood);
  position:relative; overflow:hidden;
  text-shadow:0 0 10px rgba(229,9,20,.85), 0 0 2px #000;
}
jjk .user > summary::before{
  content:''; position:absolute; inset:0;
  background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);
  animation:blackFlash 5s ease-in-out infinite;
  pointer-events:none;
}
@keyframes blackFlash{
  0%,80%,100%{transform:translateX(-120%);opacity:0}
  85%{opacity:1} 95%{transform:translateX(120%);opacity:0}
}
jjk .user d{
  display:block; padding:8px 14px; font-size:12.5px;
  color:#d8c8c8;
  border-bottom:1px solid rgba(139,0,0,.12);
  transition:all .22s;
}
jjk .user d:last-child{ border-bottom:none; }
jjk .user d:hover{ background:rgba(139,0,0,.12); padding-left:18px; }
jjk .user d f{
  display:inline-block; min-width:110px;
  color:#ff8888; font-weight:700; margin-right:8px;
  font-family:'ZCOOL XiaoWei',serif; font-size:13px;
  text-shadow:0 0 4px rgba(229,9,20,.35);
}
jjk .user d[t="soul"]{
  background:linear-gradient(90deg,rgba(187,102,102,.14),transparent);
  border-left:2px solid #bb6666; color:#ffaaaa;
}
jjk .user d[t="body"]{
  background:linear-gradient(90deg,rgba(187,68,255,.12),transparent);
  border-left:2px solid var(--purple); color:#ddbbee;
}
jjk .user d[t="body"] f{ color:var(--purple); text-shadow:0 0 5px rgba(187,68,255,.5); }
jjk .user d[t="rel"]{
  background:linear-gradient(90deg,rgba(238,187,68,.12),transparent);
  border-left:2px solid var(--gold); color:#eeddaa;
  font-size:12px; line-height:1.85;
}
jjk .user d[t="rel"] f{ color:var(--gold); text-shadow:0 0 5px rgba(238,187,68,.5); }
jjk .user d[t="goal"]{
  background:linear-gradient(90deg,rgba(79,172,254,.12),transparent);
  border-left:2px solid var(--six); color:#bbd8f0;
}
jjk .user d[t="goal"] f{ color:var(--six); text-shadow:0 0 5px rgba(79,172,254,.5); }

/* ========== ⑥ 女性NPC · 受体解剖析像 ========== */
jjk .npc{
  background:linear-gradient(135deg,#1a0510 0%,#0a0005 100%);
  border:1px solid rgba(230,0,92,.48);
  box-shadow:0 0 18px rgba(230,0,92,.17) inset, 0 4px 12px rgba(0,0,0,.45);
}
jjk .npc > summary{
  padding:11px 14px 11px 40px;
  font-weight:700; font-size:13.5px; letter-spacing:1.5px;
  color:#ffe0ee;
  background:linear-gradient(90deg,#200010 0%,var(--erotic) 100%);
  border-bottom:1px solid var(--pink);
  position:relative;
  text-shadow:0 0 10px rgba(255,77,157,.65), 0 0 2px #000;
}
jjk .npc > summary::before{
  content:'❀'; position:absolute; left:14px; top:50%;
  transform:translateY(-50%); font-size:17px;
  color:var(--pink); text-shadow:0 0 10px var(--pink);
  animation:flowerSpin 4s ease-in-out infinite;
}
@keyframes flowerSpin{
  0%,100%{transform:translateY(-50%) scale(1) rotate(0deg);opacity:.85}
  50%{transform:translateY(-50%) scale(1.25) rotate(180deg);opacity:1}
}
jjk .npc nn{
  color:#ffccdd; margin-left:6px;
  font-family:'ZCOOL XiaoWei',serif; font-size:15.5px;
  text-shadow:0 0 8px var(--erotic);
}
jjk .npc d{
  display:block; padding:7px 14px; font-size:12.5px;
  color:#e6b3cc;
  border-bottom:1px solid rgba(230,0,92,.1);
  transition:all .22s;
}
jjk .npc d:hover{ background:rgba(230,0,92,.08); }
jjk .npc d f{
  display:inline-block; min-width:95px;
  color:#ff99cc; font-weight:700; margin-right:8px;
  font-family:'ZCOOL XiaoWei',serif; font-size:12.5px;
}
jjk .npc d[t="q"]{
  background:linear-gradient(90deg,rgba(255,153,204,.1),transparent);
  padding:11px 16px;
  border-left:2px solid var(--pink);
  font-style:italic;
}
jjk .npc d[t="q"] q{
  display:block; margin-top:5px;
  padding-left:14px; color:#fff0f5;
  font-family:'Noto Serif SC',serif; font-size:13px; line-height:1.78;
  border-left:1px dashed rgba(255,255,255,.22);
  quotes:none;
}
jjk .npc d[t="q"] q::before{ content:'『'; color:var(--pink); font-size:18px; margin-right:3px; }
jjk .npc d[t="q"] q::after{ content:'』'; color:var(--pink); font-size:18px; margin-left:3px; }

jjk .npc hd.bh{
  display:block; margin:12px 12px 6px 12px; padding:7px 10px;
  background:linear-gradient(90deg,rgba(255,77,157,.25),transparent,rgba(255,77,157,.25));
  border-top:1px solid var(--pink); border-bottom:1px solid var(--pink);
  color:#ff99ff; font-weight:700; font-size:12.5px;
  letter-spacing:1.2px; text-align:center;
  text-shadow:0 0 10px var(--pink);
  animation:bhGlow 2.8s ease-in-out infinite;
}
@keyframes bhGlow{
  0%,100%{box-shadow:0 0 0 rgba(255,77,157,0)}
  50%{box-shadow:inset 0 0 16px rgba(255,77,157,.45), 0 0 10px rgba(255,77,157,.25)}
}
jjk .npc bd{ display:block; padding:0 4px; }
jjk .npc bd d{
  margin:0 8px; padding:6px 12px; font-size:12px;
  background:rgba(20,5,15,.45);
  border-bottom:1px dashed rgba(230,0,92,.12);
}
jjk .npc bd d f{ min-width:85px; color:#ffb3d9; font-size:11.5px; }
jjk .npc bd d[t="core"]{
  background:radial-gradient(ellipse at left,rgba(187,68,255,.2) 0%,rgba(230,0,92,.1) 50%,transparent 100%);
  border-left:2px solid var(--purple);
  color:#ffd0f0;
  animation:corePulse 3.5s ease-in-out infinite;
}
jjk .npc bd d[t="core"] f{ color:var(--purple); text-shadow:0 0 8px var(--purple); }
@keyframes corePulse{
  0%,100%{box-shadow:inset 0 0 8px rgba(187,68,255,.2)}
  50%{box-shadow:inset 0 0 20px rgba(187,68,255,.4), 0 0 8px rgba(230,0,92,.2)}
}
jjk .npc d[t="hist"]{
  background:linear-gradient(90deg,rgba(238,187,68,.1),transparent);
  border-left:2px solid var(--gold);
  color:#e8d0a0;
  font-family:'JetBrains Mono',monospace; font-size:11.5px;
}
jjk .npc d[t="hist"] f{ color:var(--gold); }
jjk .npc d[t="goal"]{
  background:linear-gradient(90deg,rgba(79,172,254,.1),transparent);
  border-left:2px solid var(--six); color:#b8d4e8;
}
jjk .npc d[t="goal"] f{ color:var(--six); }

/* ========== ⑦ 男性NPC · 档案卡 ========== */
jjk .mnpc{
  background:linear-gradient(135deg,#0a1218 0%,#050a10 100%);
  border:1px solid rgba(107,140,168,.5);
  box-shadow:0 0 14px rgba(107,140,168,.12) inset, 0 4px 12px rgba(0,0,0,.45);
}
jjk .mnpc > summary{
  padding:11px 14px 11px 42px;
  font-weight:700; font-size:13.5px; letter-spacing:1.5px;
  color:#e0e8f0;
  background:linear-gradient(90deg,#0a1520 0%,var(--steel) 100%);
  border-bottom:1px solid var(--steel2);
  position:relative;
  text-shadow:0 0 8px rgba(107,140,168,.55), 0 0 2px #000;
}
jjk .mnpc > summary::before{
  content:''; position:absolute; left:12px; top:50%;
  width:20px; height:20px; transform:translateY(-50%);
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><g fill='none' stroke='%236b8ca8' stroke-width='1.5'><path d='M12 2 L12 22 M6 8 L18 8 M4 14 L20 14' stroke-linecap='round'/><circle cx='12' cy='12' r='10'/></g></svg>") center/contain no-repeat;
  filter:drop-shadow(0 0 5px var(--cyan));
  animation:steelShimmer 4.5s ease-in-out infinite;
}
@keyframes steelShimmer{
  0%,100%{opacity:.7; filter:drop-shadow(0 0 4px var(--steel2))}
  50%{opacity:1; filter:drop-shadow(0 0 10px var(--cyan))}
}
jjk .mnpc nn{
  color:#ccddee; margin-left:6px;
  font-family:'ZCOOL XiaoWei',serif; font-size:15.5px;
  text-shadow:0 0 8px var(--steel2);
}
jjk .mnpc d{
  display:block; padding:7px 14px; font-size:12.5px;
  color:#c0d0e0;
  border-bottom:1px solid rgba(107,140,168,.12);
  transition:all .22s;
}
jjk .mnpc d:last-child{ border-bottom:none; }
jjk .mnpc d:hover{ background:rgba(107,140,168,.1); padding-left:18px; }
jjk .mnpc d f{
  display:inline-block; min-width:100px;
  color:var(--steel2); font-weight:700; margin-right:8px;
  font-family:'JetBrains Mono',monospace; font-size:11.5px;
  text-shadow:0 0 4px rgba(107,140,168,.35);
}
jjk .mnpc d[t="q"]{
  background:linear-gradient(90deg,rgba(107,140,168,.12),transparent);
  padding:11px 16px;
  border-left:2px solid var(--cyan);
  font-style:italic;
}
jjk .mnpc d[t="q"] q{
  display:block; margin-top:5px;
  padding-left:14px; color:#ddeeff;
  font-family:'Noto Serif SC',serif; font-size:13px; line-height:1.78;
  border-left:1px dashed rgba(255,255,255,.2);
  quotes:none;
}
jjk .mnpc d[t="q"] q::before{ content:'「'; color:var(--cyan); font-size:18px; margin-right:3px; }
jjk .mnpc d[t="q"] q::after{ content:'」'; color:var(--cyan); font-size:18px; margin-left:3px; }
jjk .mnpc d[t="goal"]{
  background:linear-gradient(90deg,rgba(0,242,254,.1),transparent);
  border-left:2px solid var(--cyan); color:#b8e0ee;
}
jjk .mnpc d[t="goal"] f{ color:var(--cyan); }

/* ========== ⑧ 系统日志 ========== */
jjk .log{
  background:linear-gradient(135deg,#0a0a10 0%,#050508 100%);
  border:1px solid rgba(100,100,120,.3);
  opacity:.92;
}
jjk .log > summary{
  padding:9px 12px; font-weight:600; font-size:12.5px;
  color:#aaa; letter-spacing:1.2px;
  background:linear-gradient(90deg,#1a1a20,#0a0a10);
  border-bottom:1px solid rgba(100,100,120,.2);
}
jjk .log d{
  display:block; padding:6px 14px; font-size:11.5px;
  color:#999;
  border-bottom:1px dashed rgba(100,100,120,.1);
}
jjk .log d:last-child{ border-bottom:none; }
jjk .log d f{
  display:inline-block; min-width:100px;
  color:#bbb; font-weight:600; margin-right:8px;
  font-family:'JetBrains Mono',monospace; font-size:11px;
}
jjk .log d[t="act"]{
  background:linear-gradient(90deg,rgba(238,187,68,.1),transparent);
  border-left:2px solid var(--gold); color:#d8c890;
  padding:8px 14px; line-height:1.75;
}
jjk .log d[t="act"] f{ color:var(--gold); }

/* ========== ⑨ markdown 兼容（平台自动转换） ========== */
jjk strong{ color:#ff9999; font-weight:700; text-shadow:0 0 4px rgba(229,9,20,.4); }
jjk em, jjk i{ color:#ffb3d9; font-style:italic; }
jjk h2, jjk h3{
  color:var(--blood); font-family:'ZCOOL XiaoWei',serif;
  border-bottom:1px solid rgba(139,0,0,.4); padding-bottom:4px;
  text-shadow:0 0 6px rgba(229,9,20,.4);
}
jjk ul li, jjk ol li{ margin:4px 0; }
jjk blockquote{
  margin:8px 0; padding:8px 12px;
  background:rgba(139,0,0,.1);
  border-left:3px solid var(--curse);
  border-radius:0 4px 4px 0; color:#ccc; font-style:italic;
}

/* ========== ⑩ 移动端自适应 ========== */
@media (max-width:520px){
  jjk{ font-size:13px; padding:10px 8px; }
  jjk nv{ padding:14px 12px 14px 16px; font-size:14px; line-height:1.85; }
  jjk .chain > summary{ font-size:12.5px; padding:10px 32px 10px 40px; letter-spacing:1px; }
  jjk .chain li{ padding:8px 8px 8px 36px; font-size:11.8px; }
  jjk .user d f, jjk .npc d f, jjk .mnpc d f, jjk stage d f, jjk .log d f{
    display:block; min-width:0; margin-bottom:3px; font-size:11px;
  }
  jjk .user > summary, jjk .npc > summary, jjk .mnpc > summary{
    font-size:12.5px; letter-spacing:1.2px;
  }
  jjk .mem sec{ margin:8px 6px; padding:8px; }
  jjk .mem sec d{ font-size:11.5px; }
}
/* ========== ⑪ 区域热力监控 · 橙红警戒 ========== */
jjk .zone{
  background:linear-gradient(135deg,#1a1005 0%,#0a0602 100%);
  border:1px solid rgba(255,140,0,.45);
  box-shadow:0 0 16px rgba(255,140,0,.12) inset;
}
jjk .zone > summary{
  padding:11px 14px; font-weight:700; font-size:13.5px;
  letter-spacing:1.8px; color:#ffd9a0;
  background:linear-gradient(90deg,#2a1808 0%,#ff8c00 50%,#2a1808 100%);
  background-size:200% 100%;
  border-bottom:1px solid #ff8c00;
  text-shadow:0 0 8px rgba(255,140,0,.65), 0 0 2px #000;
  animation:zoneSweep 6s linear infinite;
}
@keyframes zoneSweep{ 0%{background-position:200% 0} 100%{background-position:-200% 0} }
jjk .zone note{
  display:block; margin:10px 12px 6px 12px; padding:7px 12px;
  font-size:11.5px; color:#ffc88c; font-style:italic;
  background:rgba(255,140,0,.07);
  border-left:2px solid #ff8c00; border-radius:0 4px 4px 0;
  font-family:'JetBrains Mono',monospace;
}
jjk .zone grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:8px; padding:8px 10px;
}
jjk .zone z{
  display:block; padding:10px 12px;
  background:linear-gradient(135deg,rgba(30,15,5,.7),rgba(10,5,0,.5));
  border:1px solid rgba(255,140,0,.25);
  border-radius:5px; position:relative; overflow:hidden;
  transition:all .3s;
}
jjk .zone z::before{
  content:''; position:absolute; top:0; left:0; width:4px; height:100%;
  background:linear-gradient(to bottom,transparent,currentColor,transparent);
}
jjk .zone z[data-lv="critical"]{ color:#ff3333; border-color:rgba(255,51,51,.55); animation:criticalBlink 1.5s ease-in-out infinite; }
jjk .zone z[data-lv="high"]{ color:#ff8c00; border-color:rgba(255,140,0,.5); }
jjk .zone z[data-lv="mid"]{ color:#ffcc33; border-color:rgba(255,204,51,.4); }
jjk .zone z[data-lv="low"]{ color:#88cc66; border-color:rgba(136,204,102,.35); }
jjk .zone z[data-lv="unknown"]{ color:#bb44ff; border-color:rgba(187,68,255,.45); animation:unknownFlicker 2.5s steps(2,end) infinite; }
@keyframes criticalBlink{
  0%,100%{box-shadow:0 0 8px rgba(255,51,51,.3) inset, 0 0 8px rgba(255,51,51,.3)}
  50%{box-shadow:0 0 20px rgba(255,51,51,.6) inset, 0 0 16px rgba(255,51,51,.5)}
}
@keyframes unknownFlicker{ 0%,100%{opacity:1} 50%{opacity:.55} }
jjk .zone z:hover{ transform:translateY(-2px); box-shadow:0 4px 18px rgba(255,140,0,.3); }
jjk .zone z hd{
  display:block; padding-bottom:6px; margin-bottom:6px;
  font-size:14px; font-weight:700; letter-spacing:1.5px;
  font-family:'ZCOOL XiaoWei',serif;
  border-bottom:1px dashed currentColor;
  text-shadow:0 0 8px currentColor;
}
jjk .zone z r{
  display:flex; align-items:center; padding:3px 0;
  font-size:11.8px; color:#d8c8a8;
  border-bottom:1px dotted rgba(255,140,0,.1);
}
jjk .zone z r:last-child{ border-bottom:none; }
jjk .zone z r f{
  min-width:72px; color:#ffaa55; font-weight:600; font-size:11px;
  font-family:'JetBrains Mono',monospace;
}
jjk .zone z r bar{
  display:inline-block; flex:1; height:8px; margin:0 6px;
  background:rgba(0,0,0,.5); border-radius:4px;
  border:1px solid rgba(255,140,0,.3);
  position:relative; overflow:hidden;
}
jjk .zone z r bar::before{
  content:''; position:absolute; top:0; left:0; height:100%;
  width:var(--w,50%);
  background:linear-gradient(90deg,#88cc66 0%,#ffcc33 45%,#ff8c00 75%,#ff3333 100%);
  box-shadow:0 0 8px currentColor;
  animation:barFill 1.2s ease-out;
}
jjk .zone z r bar[data-v="22"]::before{ width:22% }
jjk .zone z r bar[data-v="48"]::before{ width:48% }
jjk .zone z r bar[data-v="72"]::before{ width:72% }
jjk .zone z r bar[data-v="88"]::before{ width:88% }
jjk .zone z r bar[data-v="95"]::before{ width:95% }
@keyframes barFill{ from{width:0} }
jjk .zone z r n{
  min-width:40px; text-align:right;
  font-family:'JetBrains Mono',monospace; font-size:11px;
  color:currentColor; font-weight:700;
}
jjk .zone z r lv{
  padding:1px 8px; font-size:10.5px; font-weight:700;
  background:currentColor; color:#000 !important;
  border-radius:3px; letter-spacing:.8px;
}
jjk .zone alert{
  display:block; margin:8px 12px 10px; padding:9px 14px;
  background:linear-gradient(90deg,rgba(255,51,51,.15),rgba(255,140,0,.12),rgba(255,51,51,.15));
  border:1px solid rgba(255,51,51,.4); border-radius:4px;
  font-size:12px; color:#ffcccc; text-align:center;
  font-family:'JetBrains Mono',monospace;
  letter-spacing:1px;
  animation:alertPulse 2.5s ease-in-out infinite;
}
@keyframes alertPulse{ 0%,100%{box-shadow:0 0 0 rgba(255,51,51,0)} 50%{box-shadow:0 0 16px rgba(255,51,51,.35) inset, 0 0 10px rgba(255,51,51,.25)} }
jjk .zone alert em{ color:#ff4444; font-weight:900; font-size:14px; font-style:normal; text-shadow:0 0 8px #ff4444; padding:0 4px; }
jjk .zone alert up{ color:#ffaa33; font-weight:700; }

/* ========== ⑫ 未登场角色 · 幽雷达 ========== */
jjk .ghost{
  background:
    radial-gradient(circle at 50% 50%,rgba(0,255,136,.05) 0%,transparent 60%),
    linear-gradient(135deg,#020805 0%,#000302 100%);
  border:1px solid rgba(0,255,136,.35);
  box-shadow:0 0 18px rgba(0,255,136,.1) inset;
  position:relative;
}
jjk .ghost > summary{
  padding:11px 14px 11px 44px;
  font-weight:700; font-size:13.5px; letter-spacing:2px;
  color:#88ffcc;
  background:linear-gradient(90deg,#001510,#002820 60%,#001510);
  border-bottom:1px solid #00ff88;
  position:relative;
  font-family:'JetBrains Mono',monospace;
  text-shadow:0 0 10px rgba(0,255,136,.65);
}
jjk .ghost > summary::before{
  content:''; position:absolute; left:12px; top:50%;
  width:24px; height:24px; transform:translateY(-50%);
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke='%2300ff88' stroke-width='1.5'><circle cx='50' cy='50' r='48'/><circle cx='50' cy='50' r='32'/><circle cx='50' cy='50' r='16'/><line x1='50' y1='2' x2='50' y2='98'/><line x1='2' y1='50' x2='98' y2='50'/><path d='M50 50 L90 30 A44 44 0 0 0 50 6 Z' fill='%2300ff88' fill-opacity='0.3'/></g></svg>") center/contain no-repeat;
  animation:radarSpin 4s linear infinite;
  filter:drop-shadow(0 0 6px #00ff88);
}
@keyframes radarSpin{ from{transform:translateY(-50%) rotate(0deg)} to{transform:translateY(-50%) rotate(360deg)} }
jjk .ghost note{
  display:block; margin:10px 12px 4px; padding:7px 12px;
  font-size:11.5px; color:#88ccaa; font-style:italic;
  background:rgba(0,255,136,.05);
  border-left:2px solid #00ff88; border-radius:0 4px 4px 0;
  font-family:'JetBrains Mono',monospace;
}
jjk .ghost radar{
  display:block; padding:8px 10px;
  background-image:
    linear-gradient(rgba(0,255,136,.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,255,136,.04) 1px,transparent 1px);
  background-size:20px 20px;
}
jjk .ghost g{
  display:block; margin:6px 0; padding:9px 12px;
  background:linear-gradient(135deg,rgba(0,30,20,.75),rgba(0,10,5,.6));
  border:1px solid rgba(0,255,136,.2);
  border-left-width:3px; border-radius:4px;
  transition:all .3s; position:relative;
}
jjk .ghost g::after{
  content:''; position:absolute; top:50%; right:10px;
  width:8px; height:8px; border-radius:50%;
  transform:translateY(-50%);
  box-shadow:0 0 8px currentColor;
  animation:ghostPing 2s ease-in-out infinite;
}
@keyframes ghostPing{ 0%,100%{opacity:.4;transform:translateY(-50%) scale(.7)} 50%{opacity:1;transform:translateY(-50%) scale(1.1)} }
jjk .ghost g[data-th="critical"]{ color:#ff4444; border-left-color:#ff4444; background:linear-gradient(135deg,rgba(40,0,0,.7),rgba(10,0,0,.5)); }
jjk .ghost g[data-th="high"]{ color:#ff8c00; border-left-color:#ff8c00; }
jjk .ghost g[data-th="mid"]{ color:#ffdd44; border-left-color:#ffdd44; }
jjk .ghost g[data-th="dorm"]{ color:#888; border-left-color:#888; opacity:.72; }
jjk .ghost g[data-th="dorm"]::after{ animation:none; opacity:.3; }
jjk .ghost g:hover{ transform:translateX(4px); box-shadow:0 0 14px currentColor; }
jjk .ghost g hd{
  display:block; padding-bottom:6px; margin-bottom:6px;
  font-size:13.5px; font-weight:700;
  font-family:'ZCOOL XiaoWei',serif;
  color:currentColor;
  border-bottom:1px dashed rgba(0,255,136,.2);
  text-shadow:0 0 6px currentColor;
}
jjk .ghost g r{
  display:block; padding:3px 0; font-size:11.8px;
  color:#a8ccb8;
}
jjk .ghost g r f{
  display:inline-block; min-width:90px;
  color:#00ff88; font-weight:600; font-size:11px;
  font-family:'JetBrains Mono',monospace;
  text-shadow:0 0 4px rgba(0,255,136,.4);
}
jjk .ghost g[data-th="dorm"] r f{ color:#999; text-shadow:none; }
jjk .ghost g r t{
  display:inline-block; padding:1px 8px;
  background:rgba(0,0,0,.6); border:1px solid currentColor;
  color:currentColor; font-weight:700; font-size:11px;
  font-family:'JetBrains Mono',monospace; border-radius:3px;
  letter-spacing:.5px;
}
jjk .ghost g r th{
  display:inline-block; padding:2px 10px;
  background:currentColor; color:#000 !important;
  font-weight:900; font-size:10.5px; letter-spacing:1px;
  border-radius:3px;
}

/* ========== ⑬ 世间通讯 · 三界情报流 ========== */
jjk .news{
  background:linear-gradient(135deg,#0f0a05 0%,#080503 100%);
  border:1px solid rgba(200,170,120,.3);
  box-shadow:0 0 14px rgba(200,170,120,.08) inset;
}
jjk .news > summary{
  padding:11px 14px; font-weight:700; font-size:13.5px;
  letter-spacing:2px; color:#e8d8b8;
  background:linear-gradient(90deg,#1a1008,#2a1810 50%,#1a1008);
  border-bottom:1px double rgba(200,170,120,.5);
  font-family:'ZCOOL XiaoWei',serif;
  text-shadow:0 0 6px rgba(200,170,120,.4);
  position:relative;
}
jjk .news > summary::before{
  content:''; position:absolute; bottom:-1px; left:0; right:0; height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,100,100,.8),transparent);
  animation:newsTicker 4s linear infinite;
}
@keyframes newsTicker{ 0%{background-position:-100% 0} 100%{background-position:200% 0} }
jjk .news tab{
  display:block; margin:8px 10px; padding:8px 10px;
  background:rgba(0,0,0,.4); border-radius:4px;
  position:relative;
}
jjk .news tab.mass{ border-left:3px solid #88aacc; background:linear-gradient(135deg,rgba(10,20,30,.55),rgba(5,10,15,.4)); }
jjk .news tab.inner{ border-left:3px solid #ffaa33; background:linear-gradient(135deg,rgba(30,20,5,.55),rgba(15,10,0,.4)); }
jjk .news tab.dark{ border-left:3px solid #bb44ff; background:linear-gradient(135deg,rgba(20,5,30,.55),rgba(10,0,15,.4)); }
jjk .news tab hd{
  display:block; padding:5px 10px; margin-bottom:6px;
  font-size:12.5px; font-weight:700; letter-spacing:1.5px;
  border-bottom:1px dashed rgba(255,255,255,.12);
  font-family:'ZCOOL XiaoWei',serif;
}
jjk .news tab.mass hd{ color:#aaccff; text-shadow:0 0 6px rgba(136,170,204,.45); }
jjk .news tab.inner hd{ color:#ffcc77; text-shadow:0 0 6px rgba(255,170,51,.45); }
jjk .news tab.dark hd{ color:#dd99ff; text-shadow:0 0 6px rgba(187,68,255,.45); }
jjk .news n{
  display:block; padding:7px 10px; margin:4px 0;
  font-size:12px; line-height:1.7;
  background:rgba(0,0,0,.3); border-radius:3px;
  border-left:2px solid rgba(255,255,255,.1);
  transition:all .25s;
  position:relative; overflow:hidden;
}
jjk .news n::before{
  content:''; position:absolute; top:0; left:-100%; width:100%; height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);
  transition:left .6s;
}
jjk .news n:hover::before{ left:100%; }
jjk .news n:hover{ background:rgba(255,255,255,.04); border-left-color:currentColor; }
jjk .news tab.mass n{ color:#c8d8e8; }
jjk .news tab.inner n{ color:#e8d8a8; }
jjk .news tab.dark n{ color:#d8b8ee; }
jjk .news n dt{
  display:inline-block; padding:1px 7px; margin-right:6px;
  font-family:'JetBrains Mono',monospace; font-size:10.5px;
  background:rgba(0,0,0,.6);
  color:#999; border:1px solid rgba(255,255,255,.1);
  border-radius:2px;
}
jjk .news n tt{
  display:inline-block; padding:1px 8px; margin-right:6px;
  font-size:10.5px; font-weight:700; letter-spacing:1px;
  border-radius:2px; color:#000;
}
jjk .news tab.mass n tt{ background:#88aacc; }
jjk .news tab.inner n tt{ background:#ffaa33; }
jjk .news tab.dark n tt{ background:#bb44ff; color:#fff; }
jjk .news n h{
  display:inline; font-weight:700; font-size:12.5px;
  font-family:'ZCOOL XiaoWei',serif;
  color:#fff;
}
jjk .news tab.mass n h{ color:#eef4fa; }
jjk .news tab.inner n h{ color:#fff0d0; }
jjk .news tab.dark n h{ color:#f5e0ff; }
jjk .news n p{
  display:block; margin:5px 0 0 0; padding-left:12px;
  font-size:11.5px; line-height:1.75; color:#aaa;
  border-left:1px dotted rgba(255,255,255,.15);
  font-style:italic;
}

/* ========== 移动端追加 ========== */
@media (max-width:520px){
  jjk .zone grid{ grid-template-columns:1fr; }
  jjk .ghost > summary{ font-size:12px; letter-spacing:1.2px; }
  jjk .ghost g r f, jjk .zone z r f{ display:block; margin-bottom:2px; }
  jjk .zone z r bar{ margin:0 4px; }
  jjk .news tab{ margin:6px 6px; padding:6px 8px; }
  jjk .news n{ font-size:11.5px; }
  jjk .news n dt, jjk .news n tt{ font-size:10px; padding:1px 5px; }
}