/* A single hard interruption at each major turn; no looping flashes. */
#signal-impact[hidden]{display:none}
#signal-impact{--hit:#c21822;--hit-ink:#fff4e9;position:fixed;inset:0;z-index:1000;overflow:hidden;pointer-events:none;user-select:none;background:var(--hit);color:var(--hit-ink);contain:paint}
#signal-impact.impact-receiver{--hit:#020708;--hit-ink:#cafff2}
#signal-impact.impact-vacant{--hit:#050505;--hit-ink:#f3f3ec}
#signal-impact.impact-paper{--hit:#f5f3e9;--hit-ink:#090909}
#signal-impact.impact-isolation{--hit:#080000;--hit-ink:#ff343d}
#signal-impact.impact-broadcast{--hit:#c21822;--hit-ink:#090404}
.impact-edge,.impact-foot{position:absolute;left:4vw;right:4vw;z-index:3;display:flex;justify-content:space-between;font:14px/1.8 monospace;letter-spacing:3px}
.impact-edge{top:4vh;border-bottom:2px solid currentColor;padding-bottom:12px}.impact-foot{bottom:4vh;border-top:2px solid currentColor;padding-top:12px}
.impact-wall{position:absolute;inset:-10vh -20vw;display:flex;flex-direction:column;justify-content:space-around;transform:rotate(-7deg);opacity:.22}
.impact-wall span{font:900 clamp(65px,12vw,240px)/1.1 var(--sans);white-space:nowrap;letter-spacing:-.045em}
.impact-wall span:nth-child(even){transform:translateX(-10vw)}
.impact-core{position:absolute;inset:17% 2%;display:flex;justify-content:center;align-items:center;overflow:hidden}
.impact-core>span{font:900 clamp(68px,19vw,330px)/1.12 var(--sans);letter-spacing:-.075em;text-align:center;white-space:nowrap;text-shadow:7px 0 var(--hit),-5px 3px var(--hit)}
.impact-slice{position:absolute;inset:48% 0 auto;height:2.8vh;background:var(--hit);border-block:3px solid var(--hit-ink);transform:translateX(-3vw) skewX(-35deg)}
.impact-receiver .impact-core{border-block:1px solid #568277}.impact-paper .impact-core{transform:rotate(-3deg)}
.impact-paper .impact-wall{opacity:1}.impact-paper .impact-core{background:var(--hit);inset:28% -2%;border-block:18px solid #080808}
.impact-vacant .impact-core{inset:22% 0;background:#efefe9;color:#050505}.impact-vacant .impact-slice{background:#050505;border-color:#050505}
.signal-hit #signal-impact{animation:signal-impact-in 1.5s linear both}
@keyframes signal-impact-in{0%,6%{background:#000;color:#000;transform:scale(1.04)}7%,12%{transform:translateX(-1.3vw) scale(1.08)}13%,22%{transform:translateX(.7vw) scale(1.025)}23%,100%{transform:none}}

/* Large persistent evidence panels carry the tension after the interruption. */
.signal-stage{--stage:#060707;--accent:#e8f6ee;position:relative;isolation:isolate;background:var(--stage);color:var(--accent);border:1px solid currentColor;overflow:hidden;margin:0 0 28px;padding:20px 24px;min-width:0}
.stage-meta,.stage-footer{position:relative;z-index:2;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font:12px/1.8 monospace;letter-spacing:1px}
.stage-meta{border-bottom:1px solid currentColor;padding-bottom:12px}.stage-footer{padding-top:12px;border-top:1px solid currentColor}
.stage-title{position:relative;z-index:2;font:900 clamp(65px,8.6vw,130px)/1.25 var(--sans);letter-spacing:-.045em;padding:35px 0 28px;text-align:center;white-space:nowrap}
.stage-echo{position:absolute;top:54px;left:-20px;white-space:nowrap;font:900 clamp(70px,10vw,160px)/1.4 var(--sans);opacity:.15;transform:translateY(9px);letter-spacing:-.04em;pointer-events:none}
.stage-fracture{position:absolute;top:47%;left:-4%;width:108%;height:7px;background:var(--stage);border-top:2px solid var(--accent);z-index:3;pointer-events:none}
.signal-stage>p{position:relative;z-index:2;font:16px/1.9 var(--sans);margin:8px 0 20px;color:inherit;text-align:center}
.stage-red{--stage:#b81321;--accent:#fff1e9;border-color:#f8414c}.stage-red .stage-echo{opacity:.38;transform:translateX(-50px) translateY(20px)}
.stage-vacant{--stage:#060606;--accent:#f3f3ee}.stage-vacant .stage-title{background:#e9e9e2;color:#060606;margin:20px -24px;padding:16px 0}.stage-vacant .stage-fracture{top:42%;background:#060606;border:0;height:5px}
.stage-paper{--stage:#f5f4ea;--accent:#090909;border:4px solid #090909}.stage-paper .stage-title{text-shadow:4px 3px #8e8e84;transform:rotate(-2deg)}.stage-paper .stage-echo{opacity:.2;transform:translateX(65px) translateY(-20px)}.stage-paper .stage-fracture{height:16px;top:55%;background:#090909}
.stage-isolation{--stage:#090102;--accent:#ff4b51;border-color:#912a30}.stage-isolation .stage-title{letter-spacing:.045em}.stage-isolation .stage-echo{opacity:.14}

/* The original red monitoring page remains the first warning. */
.haunted .intrusion-banner{box-shadow:0 0 0 8px #4e050b,0 0 90px #87080c24}
.haunted .broken-heading{font-weight:900;text-shadow:4px 0 #e20021,-4px 0 #381419}

/* RX: narrow cold signal against an almost black station. */
.receiver-mode{--paper:#030707;--surface:#091111;--ink:#def6eb;--muted:#a8c6b9;--line:#476759;--green:#c2ffde;--red:#e0fdf0;--soft:#10211b;background:#030707}
.receiver-mode .utility{background:#bceccc;color:#05110b}.receiver-mode .brand-icon{color:#cdfcdf}
.receiver-mode header{border-bottom:6px solid #c2edcf}.receiver-mode .article{background:#080e0c}
.receiver-mode .page-layout{grid-template-columns:minmax(0,1fr)}.receiver-mode .doc-side{display:none}
.receiver-mode .line-receiver{border-color:#709c87;background:#050a07;box-shadow:inset 8px 0 #b4eccc}
.receiver-mode .receiver-state em{font:bold 32px/1.4 var(--sans);color:#d8ffea}
.receiver-mode .receiver-strip{height:9px;background:#c6ffe7;border:0;animation:none;opacity:.75}
.receiver-mode .signal-stage{--accent:#c9ffea;min-height:300px}
.receiver-mode .stage-title{text-shadow:5px 0 #24654b,-3px 0 #779a8c;letter-spacing:.02em}
.receiver-mode .stage-echo{transform:translateX(-15%) translateY(18px);opacity:.22}

/* Consultation: the red occupies the whole page, black panels stay usable. */
.consultation-breach{--paper:#820b15;--surface:#100405;--ink:#fff1e9;--muted:#e7b8b9;--line:#9b313b;--green:#ffddd6;--red:#ff7279;--soft:#24080c;background:#820b15;color:#fff1e9}
.consultation-breach .utility{background:#070102;color:#efadb2}.consultation-breach .brand-icon{color:#fff1e9}
.consultation-breach header{background:#9c0d1c;border-bottom:8px solid #090001}
.consultation-breach .search-bar{background:#100204;border:1px solid #f47a86}
.consultation-breach .search-bar button,.consultation-breach .solid-btn{background:#f0dfd8;color:#240307;border-color:#f0dfd8}
.consultation-breach .chat-window{background:#0b0304;border:2px solid #fd6471;box-shadow:9px 9px 0 #39030a}
.consultation-breach .chat-head{background:#b10c20;color:#fff4eb;border-bottom:2px solid #ed6a75}
.consultation-breach .chat-log{background:#0b0304}.consultation-breach .message-content{background:#2a090f;border-color:#a63e48;color:#ffe9e1}
.consultation-breach .message.mine .message-content{background:#401017;color:#ffe7e5;border-color:#da797e}
.consultation-breach .message-label,.consultation-breach .task-number{color:#edb0b5}
.consultation-breach .task-card{background:#170508;border-color:#bc525c;color:#ffefe7}
.consultation-breach .task-card input,.consultation-breach .chat-form input{background:#050203;color:#fff1e9;border-color:#b65d64}
.consultation-breach .task-card input:disabled{color:#bca7a9}.consultation-breach .anomaly-mark{color:#ff838b}
.consultation-breach .vacant-reply{background:#0a0203;color:#f9cdc8;border-color:#f04759;padding:0 0 18px}
.consultation-breach .vacant-reply .signal-stage{margin:0 0 16px;border-width:0 0 2px}.consultation-breach .vacant-heading{margin:0 20px;color:#efadaf;border-color:#a2434a;font-size:14px}
.consultation-breach .vacant-text{margin:18px 20px;color:#f4d3d1;font:16px/1.8 var(--sans);text-align:left}
.consultation-breach .vacant-reply>small{display:block;margin:0 20px;color:#d8a7ac}
.consultation-breach .stage-title{font-size:clamp(68px,8vw,112px)}

/* ZX: an empty, high-contrast registration sheet, with no subtle reveal. */
.operator-void{--paper:#050505;--surface:#101010;--ink:#f2f2eb;--muted:#c1c1b8;--line:#66675d;--green:#e3e4d7;--red:#f8f8ed;--soft:#292a24;background:#050505;color:#f2f2eb}
.operator-void .utility{background:#eeeee5;color:#070707}.operator-void header{border-bottom:8px solid #d7d8cc}.operator-void .brand-icon{color:#eeeeeb}
.operator-void .search-bar{background:#090909}.operator-void .search-bar button,.operator-void .solid-btn{background:#ededdf;color:#050505;border-color:#ededdf}
.operator-void .page-layout,.paper-mode .page-layout{grid-template-columns:minmax(0,1fr)}.operator-void .doc-side,.paper-mode .doc-side{display:none}
.operator-void .article{background:#0c0c0c}.operator-void .empty-desk{background:#e8e8df;color:#090909;border:0;box-shadow:8px 8px 0 #414339}
.operator-void .desk-count>strong{color:#080808;font-size:160px}.operator-void .desk-count{grid-template-columns:160px minmax(0,1fr)}
.operator-void .desk-count>div{font:bold 28px/1.6 var(--sans)}.operator-void .desk-count small{font-weight:400;color:#373b2e}
.operator-void .desk-heading,.operator-void .desk-traffic,.operator-void .desk-response{color:#20231c}.operator-void .desk-response{border-bottom:12px solid #161813}
.operator-void .article .terminal-fact{background:#151712;border-color:#bcbdb3}.operator-void .terminal-fact>strong{color:#f2f2e9!important}.operator-void .terminal-fact>span,.operator-void .terminal-fact small{color:#c8cbbd!important}
.operator-void .article-body blockquote{background:#262922}.operator-void .article-body th,.operator-void .article-body td{background:#171914;color:#ededdf}

/* PC: sharply cut monochrome print instead of a slow underprint. */
.paper-mode{--paper:#c4c4bc;--surface:#f3f2e9;--ink:#10110e;--muted:#4e5047;--line:#96988b;--green:#11140f;--red:#202119;--soft:#e5e5dc;background:#090a08}
.paper-mode header{background:#eeeeE5;border-bottom:10px solid #10110d}.paper-mode .utility{background:#070806;color:#e8e9dd}
.paper-mode .carbon-document{box-shadow:12px 12px 0 #0e100c;border:2px solid #11140d;background:#f3f2e9}
.paper-mode .article-body{background:#f3f2e9;color:#10110e;position:relative;padding-inline:10px}
.paper-mode .paper-register{background:#10110e;color:#f4f4e9;padding:14px 18px;margin:0 0 28px;border:0;font-size:14px}
.paper-mode .paper-tail{border-bottom:9px solid #13160e;margin-bottom:26px}.paper-mode .paper-end{font-size:14px;color:#20271a}
.paper-mode .signal-stage{margin:-1px -1px 30px}.paper-mode .stage-title{padding-top:44px;padding-bottom:44px}
.paper-mode footer{background:#edeee6}
.paper-mode .search-help,.paper-mode main>.breadcrumb{color:#e0e3d4}

/* Isolation narrows to active red routes. Successful isolation stays quiet. */
.isolation-mode{--paper:#080203;--surface:#160508;--ink:#ffeddf;--muted:#dcaca7;--line:#86404a;--green:#f1bfb6;--red:#ff555b;--soft:#25080c;background:#080203;color:#ffeddf}
.isolation-mode .utility{background:#4c0811;color:#ffd9ce}.isolation-mode .brand-icon{color:#f9b5b5}
.isolation-mode .signal-stage{min-height:270px;box-shadow:12px 0 #500810,-12px 0 #500810}
.isolation-mode .patch-panel,.isolation-mode .search-bar{background:#110305;border-color:#a13a49}
.isolation-mode .solid-btn,.isolation-mode .search-bar button{background:#edc8bc;border-color:#edc8bc;color:#260406}
.isolation-mode .patch-row{border-color:#6d2431}.isolation-mode .wire-label strong{color:#ffe0d2}.isolation-mode .wire-label small{color:#eaaeac}
.isolation-mode .wire-line{background:#ff424f;box-shadow:0 0 18px #da12395e}.isolation-mode .wire-line:before,.isolation-mode .wire-line:after{background:#210209;border-color:#ff5967}
.isolation-mode .wire-switch{background:#900d25;color:#ffe6df;border-color:#f26276}.isolation-mode .cut .wire-line{background:linear-gradient(to right,#57474b 40%,transparent 40%,transparent 60%,#57474b 60%);box-shadow:none}
.isolation-mode .cut .wire-switch{background:#171514;color:#c1b4a7;border-color:#665752}.isolation-mode .cut .wire-label strong{color:#bbaeaa}
.isolation-mode .return-voices{background:#140307;border-color:#8f2e42}.isolation-mode .return-heading,.isolation-mode .isolation-whisper{color:#ffc0bb;border-color:#752337}
.isolation-mode .voice-trace{color:#ffddce}.isolation-mode .trace-cut{color:#999287}.isolation-mode .trace-state,.isolation-mode .voice-trace>small{color:#ccaaa1}
.isolation-mode.signal-quiet .signal-stage{--accent:#b8c2af;--stage:#070a06;box-shadow:none;border-color:#4a5845}
.isolation-mode.signal-quiet .stage-title{font-size:0}.isolation-mode.signal-quiet .stage-title:after{content:'信号中断';font-size:clamp(52px,7vw,100px)}
.isolation-mode.signal-quiet .stage-echo,.isolation-mode.signal-quiet .stage-fracture{display:none}
.isolation-mode.signal-quiet .return-voices{background:#080a07;border-color:#56624c}.isolation-mode.signal-quiet .return-heading,.isolation-mode.signal-quiet .isolation-whisper{color:#bac3b1;border-color:#4b5643}
.broadcast-mode .standby-board{background:#030706;border:2px solid #d1f7da}.broadcast-mode .standby-board>strong{font:900 clamp(76px,13vw,150px)/1.2 monospace;color:#d7ffe3}
.broadcast-mode .onair-ending{background:#130205;border-color:#ff4158}.broadcast-mode .listener-connected .next-listener{background:#b91530;color:#fff1e4;font:bold 28px/1.6 var(--sans)}

/* Text, controls and attachments remain readable at narrow widths. */
@media(max-width:680px){
  .impact-edge,.impact-foot{font-size:12px;letter-spacing:1px;gap:14px}.impact-core>span{font-size:20vw}.impact-wall span{font-size:25vw}.impact-slice{height:2vh}
  .signal-stage{padding:16px 14px;margin-bottom:22px}.stage-meta,.stage-footer{font-size:12px;gap:5px}.stage-title{font-size:clamp(54px,15vw,92px);padding:32px 0;letter-spacing:-.065em}
  .stage-echo{font-size:25vw;top:66px}.signal-stage>p{font-size:16px;text-align:left;margin-bottom:18px}
  .stage-vacant .stage-title{margin-inline:-14px}.receiver-mode .signal-stage{min-height:260px}
  .consultation-breach .stage-title{font-size:17vw}.consultation-breach .chat-shell{gap:24px}.consultation-breach .vacant-heading,.consultation-breach .vacant-text{margin-inline:14px}
  .operator-void .desk-count{grid-template-columns:90px minmax(0,1fr);gap:12px}.operator-void .desk-count>strong{font-size:110px}.operator-void .desk-count>div{font-size:21px}.operator-void .desk-count small{font-size:12px}
  .paper-mode .carbon-document{box-shadow:5px 5px 0 #0e100c}.paper-mode .article-body{padding-inline:0}.paper-mode .paper-register{padding:12px;font-size:12px}
  .isolation-mode .signal-stage{min-height:250px;box-shadow:5px 0 #500810,-5px 0 #500810}.isolation-mode .stage-title{letter-spacing:0}
}
@media(prefers-reduced-motion:reduce){#signal-impact{display:none!important}.signal-stage,.signal-hit #signal-impact{animation:none!important}}
.no-motion #signal-impact{display:none!important}
