/* horror.css — 中后期异常态（独立，可整体禁用）
 * 提示词第66节：禁止血色/血液/恐怖字体/glitch/红闪/鬼脸/噪点/黑屏/恐怖滤镜
 * 恐怖藏在正常 UI 中；仅做"信息层"异常，每次变化须回故事逻辑
 * 通过给 body 加 .phase-doubt/.phase-suspect/.phase-investigate/.phase-collapse 类驱动
 */
body.phase-doubt .page-head h1,
body.phase-doubt .section-title { /* 无变化，仅子结构异 */ }

/* ===== 信息异常（phase-doubt）===== */
/* CLUE-001 模板不核对：正文偶现重复句/错别字 */
body.phase-doubt .anomaly-typo { position:relative; }
body.phase-doubt .anomaly-typo::after {
  content:""; /* 无可见 glitch，仅由 JS 在文本里插重复字 */
}
/* 团队页空位（phase-doubt+）：第5位缺图 */
.team-slot.empty .ph-img {
  background:
    repeating-linear-gradient(45deg,#f0eee5,#f0eee5 10px,#e8e5d8 10px,#e8e5d8 20px);
  position:relative;
}
.team-slot.empty .ph-img::after {
  content:"信息维护中"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:#b8b3a3; font-size:12px; letter-spacing:2px;
}

/* ===== 矛盾可查（phase-suspect）===== */
/* 销控状态冲突高亮（回逻辑：掩盖坠落点修补）*/
.sales-conflict { color:var(--color-warn); font-weight:600; position:relative; }
.sales-conflict::after { content:" ⟂"; color:#a04020; }
/* 值班表自相矛盾行 */
.duty-conflict-row { background:#fdf6e8; }
.duty-conflict-row td { border-bottom:1px dashed #c9a36a !important; }
/* 客诉"已安抚"重复句（模板生成）*/
.complaint-resolved { color:var(--color-text-soft); }
.complaint-resolved.resolved-x3::before { content:"已安抚 已安抚 "; color:#c9a36a; opacity:.7; }

/* ===== 残页/旧版本（phase-investigate）===== */
.cache-page {
  background:#f3f0e6; border:1px dashed #c9b896; padding:20px 24px; position:relative;
  font-family:"STKaiti","KaiTi",var(--font-serif); color:#5a4d30;
}
.cache-page::before {
  content:"残页缓存 · 已从正式发布删除"; position:absolute; top:-10px; left:14px;
  background:#fbf9f1; color:#a0834a; font-size:10px; padding:0 8px; letter-spacing:1px;
}
.cache-page .redacted { background:#3a2f1a; color:#3a2f1a; user-select:none; }
.cache-page .redacted:hover { color:#fbf9f1; background:#3a2f1a; }

/* ===== 失稳态（phase-collapse）===== */
/* CLUE-025 被发现：页面"维护中"（回逻辑：周建国远程清除）*/
.maintenance-screen {
  position:fixed; inset:0; z-index:250; background:rgba(250,250,247,.98);
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:32px;
}
.maintenance-screen .ms-title { color:var(--color-text-soft); font-size:18px; letter-spacing:3px; margin-bottom:12px; }
.maintenance-screen .ms-sub { color:#b8b3a3; font-size:13px; }
.maintenance-screen .ms-spin { width:28px; height:28px; border:2px solid var(--color-line); border-top-color:var(--color-accent); border-radius:50%; margin-bottom:24px; animation:spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
/* 异常客服回复（终章B）*/
.abnormal-reply { color:#8a5a2b; font-style:italic; }

/* 监控"维护中"占位（回逻辑：漏删前的常态）*/
.cctv-maintenance {
  aspect-ratio:16/9; background:#1a1a1a; color:#888; display:flex; align-items:center; justify-content:center;
  font-family:monospace; font-size:12px; letter-spacing:2px; border-radius:var(--radius);
}
.cctv-maintenance .rec { color:#b34; }
.cctv-maintenance .rec::before { content:"● REC "; animation:blink 1.4s infinite; }
@keyframes blink { 50% { opacity:.3; } }

/* 监控元数据卡（回逻辑：删除未清的文件名残留）*/
.cctv-meta { background:#1a1a1a; color:#b8d4ff; font-family:monospace; font-size:12px; padding:14px; border-radius:var(--radius); }
.cctv-meta .file-deleted { color:#ff8a8a; text-decoration:line-through; }
.cctv-meta .ts { color:#6a8aa8; }

/* 录音播放条（克制）*/
.audio-bar { display:flex; align-items:center; gap:12px; background:#f4f2ec; padding:12px 16px; border-radius:var(--radius); }
.audio-bar button { width:36px; height:36px; border-radius:50%; background:var(--color-primary); color:#fff; border:none; }
.audio-bar .track { flex:1; height:4px; background:#d8d2c2; border-radius:2px; position:relative; }
.audio-bar .track .prog { position:absolute; left:0; top:0; height:100%; background:var(--color-accent); border-radius:2px; }
.audio-bar .ts { font-size:12px; color:var(--color-text-soft); font-family:monospace; }

/* 协议印章（克制，仅棕红印，非血红）*/
.doc-paper .stamp.seal { color:#a04030; border-color:#a04030; }

/* 钮扣式异常：阶段切换提示（极轻）*/
.phase-notice { position:fixed; bottom:16px; left:50%; transform:translateX(-50%); background:rgba(31,58,95,.92); color:#e8e3d3; font-size:12px; padding:8px 18px; border-radius:20px; z-index:170; letter-spacing:1px; opacity:0; transition:opacity .4s; }
.phase-notice.show { opacity:1; }

/* ===== 结局页 ===== */
.ending-page { max-width:680px; margin:0 auto; padding:80px 24px; text-align:center; animation:endFadeIn 1.2s ease; position:relative; }
.ending-page .end-label { font-size:11px; letter-spacing:6px; color:var(--color-accent); }
.ending-page h2 { font-family:var(--font-serif); font-size:36px; color:var(--color-primary-dark); margin:12px 0 28px; font-weight:400; }
.ending-page .end-text { color:var(--color-text-soft); font-size:15px; line-height:2; margin-bottom:18px; text-align:left; }
.ending-page .end-state { margin-top:32px; padding:20px; background:#f4f2ec; border-radius:var(--radius); font-family:monospace; font-size:13px; color:var(--color-text-soft); text-align:left; line-height:1.9; }
.ending-page .end-actions { margin-top:40px; display:flex; gap:16px; justify-content:center; }
.ending-page .end-actions a { padding:12px 32px; border:1px solid var(--color-primary); color:var(--color-primary); font-size:13px; letter-spacing:2px; transition:all .3s; }
.ending-page .end-actions a:hover { background:var(--color-primary); color:#fff; }

/* 入场动画 */
@keyframes endFadeIn { from{opacity:0; transform:translateY(12px);} to{opacity:1; transform:translateY(0);} }
/* 段落逐个淡入 */
@keyframes paraIn { from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);} }
.end-text, .end-chain { animation:paraIn .8s ease both; }
.ending-page .end-text:nth-child(4){ animation-delay:.3s; }
.ending-page .end-text:nth-child(5){ animation-delay:.6s; }
.ending-page .end-text:nth-child(6){ animation-delay:.9s; }
.ending-page .end-text:nth-child(7){ animation-delay:1.2s; }
.ending-page .end-text:nth-child(8){ animation-delay:1.5s; }
.ending-page .end-text:nth-child(9){ animation-delay:1.8s; }
.ending-page .end-text:nth-child(10){ animation-delay:2.1s; }
.ending-page .end-text:nth-child(11){ animation-delay:2.4s; }
.ending-page .end-text:nth-child(12){ animation-delay:2.7s; }
.ending-page .end-text:nth-child(13){ animation-delay:3.0s; }

/* ===== A「归档」：档案印章落下 + 冷蓝灰 + 文件纹理 ===== */
.ending-A { background:linear-gradient(180deg,#f6f5f0 0%,#eef0f3 100%); border-radius:8px; }
.ending-A::before {
  content:""; position:absolute; inset:0; border-radius:8px; pointer-events:none;
  background:repeating-linear-gradient(0deg, transparent 0, transparent 28px, rgba(58,90,122,.03) 28px, rgba(58,90,122,.03) 29px);
}
.ending-A .end-stamp.seal-archive {
  width:96px; height:96px; border:3px solid #3a5a7a; border-radius:50%;
  display:flex; align-items:center; justify-content:center; flex-direction:column;
  font-family:var(--font-serif); font-size:16px; color:#3a5a7a; opacity:0;
  margin:0 auto 20px; letter-spacing:2px; position:relative;
  animation:stampDrop .6s ease .3s both;
}
@keyframes stampDrop {
  0%{opacity:0; transform:rotate(-30deg) scale(1.8) translateY(-40px);}
  60%{opacity:1; transform:rotate(-8deg) scale(.95) translateY(4px);}
  100%{opacity:.75; transform:rotate(-12deg) scale(1) translateY(0);}
}
.ending-A .end-stamp.seal-archive::after {
  content:""; position:absolute; width:108px; height:108px; border:1px solid #3a5a7a; border-radius:50%; opacity:.3;
}
.ending-A .end-state { border-left:3px solid #3a5a7a; background:#eef0f3; }
.ending-A .end-label { color:#3a5a7a; }
.ending-A .end-note { color:#3a5a7a; opacity:.6; }

/* ===== B「封存」：扫描线 + 警告灯 + 封条 + 终端风 ===== */
.ending-B { animation:bShake .4s ease, endFadeIn 1.2s ease; position:relative; overflow:hidden; background:#2a2a2a; border-radius:8px; color:#aaa; }
.ending-B::before {
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:8px;
  background:repeating-linear-gradient(0deg, transparent 0, transparent 3px, rgba(0,0,0,.15) 3px, rgba(0,0,0,.15) 4px);
  animation:scanline 8s linear infinite;
}
@keyframes scanline { from{background-position:0 0;} to{background-position:0 100px;} }
.ending-B .end-warn-box {
  background:#1a1a1a; color:#c41a1a; font-family:monospace; font-size:12px;
  padding:14px 20px; border-radius:4px; margin-bottom:28px; letter-spacing:1px;
  border:1px solid #5a1a1a; animation:warnBlink 1.5s ease-in-out infinite;
}
@keyframes warnBlink { 0%,100%{border-color:#5a1a1a; box-shadow:0 0 0 rgba(196,26,26,0);} 50%{border-color:#c41a1a; box-shadow:0 0 12px rgba(196,26,26,.3);} }
.ending-B .end-seal-strip {
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) rotate(-22deg);
  font-size:42px; font-family:var(--font-serif); color:rgba(160,80,80,.12);
  letter-spacing:24px; font-weight:700; pointer-events:none; white-space:nowrap;
  border-top:2px solid rgba(160,80,80,.1); border-bottom:2px solid rgba(160,80,80,.1);
  padding:8px 48px; z-index:0;
}
.ending-B .end-text { color:#888; position:relative; z-index:1; }
.ending-B .end-label { color:#c41a1a; }
.ending-B .end-state { background:#1a1a1a; color:#888; border:1px solid #333; }
.ending-B h2 { color:#bbb; }
.ending-B .end-actions a { border-color:#666; color:#aaa; }
.ending-B .end-actions a:hover { background:#666; color:#fff; }
.ending-B .end-note { color:#666; }
@keyframes bShake { 20%{transform:translateX(-2px);} 40%{transform:translateX(2px);} 60%{transform:translateX(-1px);} }

/* ===== C「悬置」：漂浮碎片 + 雾气 + 模糊 ===== */
.ending-C { position:relative; }
.ending-C::before {
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:8px;
  background:radial-gradient(ellipse at 30% 40%, rgba(200,200,200,.15) 0%, transparent 50%),
             radial-gradient(ellipse at 70% 60%, rgba(180,180,180,.1) 0%, transparent 50%);
  animation:fog 12s ease-in-out infinite;
}
@keyframes fog { 0%,100%{opacity:.5; transform:translate(0,0);} 50%{opacity:.8; transform:translate(8px,-4px);} }
.ending-C .end-missing {
  font-size:14px; color:#aaa; letter-spacing:8px; margin-bottom:20px; font-family:monospace;
  animation:blink 2.5s ease-in-out infinite;
}
@keyframes blink { 0%,100%{opacity:.3;} 50%{opacity:.7;} }
.ending-C .end-text { filter:blur(0.4px); color:#999; }
.ending-C h2 { color:#888; }
.ending-C .end-label { color:#aaa; }
.ending-C .end-state { background:#f0f0f0; color:#aaa; border:1px dashed #ccc; }
.ending-C .end-actions a { border-color:#aaa; color:#aaa; }
.ending-C .end-actions a:hover { background:#aaa; color:#fff; }
.ending-C .end-note { color:#bbb; }

/* ===== D「清册」：金粉飘落 + 金色高亮 + 印章盖印 ===== */
.ending-D { background:linear-gradient(180deg,#fbfaf5 0%,#f5f1e8 100%); border-radius:8px; position:relative; }
.ending-D::before {
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:8px;
  background:radial-gradient(circle at 50% 0%, rgba(201,168,74,.08) 0%, transparent 60%);
}
.ending-D .end-roster-head {
  font-size:13px; letter-spacing:8px; color:#8a6a20; margin-bottom:8px;
  font-family:var(--font-serif); border-bottom:2px solid #c9a84a; padding-bottom:12px; display:inline-block;
}
.ending-D h2 { color:#5a3a10; }
.ending-D .end-label { color:#8a6a20; }
.ending-D .end-state { background:#f5f1e8; border-left:3px solid #c9a84a; }
.ending-D .end-text { color:#4a3a20; }
.ending-D .end-chain {
  background:#faf6ec; padding:16px 20px; border-radius:6px;
  border:1px solid #e8d8a8; font-family:monospace; font-size:13px; line-height:1.9;
  animation:chainGlow 3s ease-in-out infinite;
}
@keyframes chainGlow { 0%,100%{box-shadow:0 0 0 rgba(201,168,74,0);} 50%{box-shadow:0 0 16px rgba(201,168,74,.25);} }
.ending-D .end-actions a { border-color:#8a6a20; color:#8a6a20; }
.ending-D .end-actions a:hover { background:#8a6a20; color:#fff; }
.ending-D .end-note { color:#8a6a20; opacity:.7; }

/* ===== E「无声」：声波消失 + 噪点 + 逐段淡出 ===== */
.ending-E { position:relative; }
.ending-E::before {
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:8px;
  background:repeating-linear-gradient(45deg, transparent 0, transparent 2px, rgba(0,0,0,.015) 2px, rgba(0,0,0,.015) 4px);
}
.ending-E .end-silent {
  font-size:32px; opacity:.4; margin-bottom:20px;
  animation:silentFade 4s ease-in-out both;
}
@keyframes silentFade { 0%{opacity:.8; transform:scale(1.2);} 100%{opacity:.3; transform:scale(1);} }
.ending-E h2 { color:#bbb; }
.ending-E .end-label { color:#ccc; }
.ending-E .end-state { background:#f8f8f8; color:#ccc; border:1px solid #eee; }
.ending-E .end-actions { opacity:.5; }
.ending-E .end-actions a { border-color:#ccc; color:#ccc; }
.ending-E .end-actions a:hover { background:#ccc; color:#fff; }
.ending-E .end-note { color:#ccc; }

/* 移动端异常适配保持可读 */
@media (max-width:640px){
  .ending-page h2{ font-size:28px; }
  .cctv-meta{ font-size:11px; }
  .ending-B .end-seal-strip{ font-size:28px; letter-spacing:16px; }
  .ending-B{ padding:60px 16px; }
}
