{"id":"7ab18570-ad30-4e8f-b843-b0bde2293915","authorId":"oWVDoNCa4QtWPakJGgUTVgA3ThVEauTz","title":"午夜轮班 · 伪人加油站","description":"【微恐慎入】三十个夜班，只为宠物的药费。顾客里混着穿人皮的东西。六点一个不漏才算收工；漏了，靠猎枪活过八点。有问题进群踹我，交流群 1098131943，试验，会有很多BUG。deepseek会乱格式。cluade/gemini测试正常，建议开头格式正常再游玩。","background":"mf5ceambpp4yndhlcky9myvf.webp","backgroundWidth":1672,"backgroundHeight":941,"cover":"bv4zvy80cbe05190qcqi4u1l.webp","coverWidth":1672,"coverHeight":941,"introPage":"oirlc67iq4er45gtzj86rykm.html","changelog":"","createdAt":"2026-07-25T17:21:49.383Z","updatedAt":"2026-07-30T00:14:41.502Z","initPublicAt":"2026-07-29T19:08:12.348Z","renderTemplate":null,"assistantRegexReplace":[{"enabled":true,"applyMode":"backend","messageRole":"all","regex":"/(?<!\\d)(1[0-7]|[1-9])(?!\\d)\\s*([岁歳])(的)?/g","replaceString":"外貌年轻的"},{"enabled":true,"applyMode":"backend","messageRole":"all","regex":"/[萝罗][莉丽莉]|[Ll][Oo][Ll][Ii]/g","replaceString":"娇小身材的少女"},{"enabled":true,"applyMode":"backend","messageRole":"all","regex":"/正太|[Ss][Hh][Oo][Tt][Aa]/g","replaceString":"少年身材的青年"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^```[a-zA-Z]*$/gm","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^[^\\n]{1,24}\\r?\\n(?=\\(\\()/","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/<\\/?[a-zA-Z][^<>]*>/g","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/</g","replaceString":"&lt;"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^[ \\t　]+/gm","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/[ \\t\\r　]+$/gm","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^：/gm","replaceString":":"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^；/gm","replaceString":";"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^｛/gm","replaceString":"{"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^｝/gm","replaceString":"}"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^［/gm","replaceString":"["},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^］/gm","replaceString":"]"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^（（$/gm","replaceString":"(("},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^））$/gm","replaceString":"))"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\(\\($/gm","replaceString":"<details cot><summary>【值班记录】</summary>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\)\\)$/gm","replaceString":"</details>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[\\[([a-z]+)[ \\t]*([@%$])([^\\n]*)(\\r?\\n)/gm","replaceString":"[[$1$4$2$3$4"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[\\[[ \\t]*([@%$])([^\\n]*)(\\r?\\n)/gm","replaceString":"[[desk$3$1$2$3"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[\\[[ \\t]*$/gm","replaceString":"[[desk"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^([@%$])[ \\t]*\\r?\\n(?=[^\\n|]*\\|)/gm","replaceString":"$1"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[\\[([a-z]*)$/gm","replaceString":"<h bg=\"$1\">"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\]\\]$/gm","replaceString":"</h><n><ns>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\{\\{$/gm","replaceString":"</ns></n><g>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\}\\}$/gm","replaceString":"</k></label></f><f p=\"none\"><label nsum><input type=\"radio\" name=\"pt\"><span>关闭</span></label></f></g>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\{([a-z][a-z0-9]*)\\|([^\\n]*)$/gm","replaceString":"<f p=\"$1\"><label nsum><input type=\"radio\" name=\"pt\"><span>$2</span><k>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\}$/gm","replaceString":"</k></label></f>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[([^|\\]\\[\\n]*)\\|([^\\]\\[\\n]*)$/gm","replaceString":"<z><t>$1</t>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\[([^|\\]\\[\\n]+)$/gm","replaceString":"<z><t>$1</t>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\]$/gm","replaceString":"</z>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^@([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<ma>$3</ma><ti>第$1夜 / 30 ｜ $2</ti><lo>$4</lo><en>$5 · $6</en><po>第二人称</po><dv></dv>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^%([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*?)%?$/gm","replaceString":"<v><fa>不可挽回度</fa><l lv=\"$2\">$1「$3」</l><fr><fw style=\"width:$4%\"></fw></fr></v>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\$([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<qu><qa><e2>疗程</e2>第$1/10期 ｜ <e>距下次付费$2夜</e></qa><qb><e2>今夜营收</e2>$3元 ｜ <e>距天亮$4分钟</e></qb></qu>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^:([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<p dlg npc><k><m>$1</m>$2</k></p>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^;([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<p dlg user><k><m>$1</m>$2</k></p>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\.(\\S[^\\n]*)$/gm","replaceString":"<p dlg>$1</p>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^>([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<gh><gt>$1 ｜ $2</gt><gi>$3</gi><gb>值班终端 · NIGHT SHIFT TERMINAL</gb></gh>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^=(\\S[^\\n]*)$/gm","replaceString":"<t>$1</t>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^无\\|(?:-|—|–|无)(?:\\|(?:-|—|–|无))?$/gm","replaceString":"-|无"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\-\\|([^\\n]*)$/gm","replaceString":"<c e>$1</c>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\-([^|\\s][^\\n]*)$/gm","replaceString":"<c>— $1 —</c>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\*([^\\s*|\\n]+)$/gm","replaceString":""},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^~([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|(\\d+)$/gm","replaceString":"<x $1><j>$2</j>$3<wc>$4</wc></x>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^~([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<x $1><j>$2</j>$3</x>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\^([^|\\n]*)\\|([^|\\n]*)\\|([^|\\n]*)\\|([^\\n]*?)%?$/gm","replaceString":"<fm><fl>不可挽回度</fl><fv lv=\"$2\">$1「$3」</fv><fb><ff style=\"width:$4%\"></ff></fb></fm>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^\\+([^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<x f><j>$1</j>$2</x>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^¥[ \\t　]*$/gm","replaceString":"<sh><shg>枪械</shg><si k=\"g1\"><sw><sn>双管猎枪</sn><sm>停止力中 ｜ 噪音高 ｜ 清理中</sm><sl></sl></sw><sp>配备</sp></si><si k=\"g2\"><sw><sn>左轮手枪</sn><sm>停止力中 ｜ 噪音中 ｜ 清理低</sm><sl></sl></sw><sp>200</sp></si><si k=\"g3\"><sw><sn>泵动霰弹枪</sn><sm>停止力高 ｜ 噪音高 ｜ 清理高</sm><sl></sl></sw><sp>450</sp></si><shg>近战武器</shg><si k=\"m1\"><sw><sn>撬棍</sn><sm>停止力低 ｜ 无噪音 ｜ 清理低</sm><sl></sl></sw><sp>45</sp></si><si k=\"m2\"><sw><sn>钉枪</sn><sm>停止力中 ｜ 噪音低 ｜ 清理低</sm><sl></sl></sw><sp>120</sp></si><si k=\"m3\"><sw><sn>消防斧</sn><sm>停止力高 ｜ 无噪音 ｜ 清理高</sm><sl></sl></sw><sp>90</sp></si><shg>弹药</shg><si k=\"a1\"><sw><sn>常规霰弹<sq>即</sq></sn><sl></sl></sw><sp>4<su>/发</su><sb>箱6</sb></sp></si><si k=\"a2\"><sw><sn>鹿弹<sq>即</sq></sn><sm>停止力提升 ｜ 清理负担提升</sm><sl></sl></sw><sp>6<su>/发</su><sb>箱9</sb></sp></si><si k=\"a3\"><sw><sn>独头弹<sq>即</sq></sn><sm>停止力高 ｜ 噪音高 ｜ 清理高</sm><sl></sl></sw><sp>8<su>/发</su><sb>箱12</sb></sp></si><si k=\"a4\"><sw><sn>盐制弹药<sq>即</sq></sn><sm>对伪人具压制效果 ｜ 清理低</sm><sl></sl></sw><sp>15<su>/发</su><sb>箱23</sb></sp></si><shg>陷阱与防御</shg><si k=\"t1\"><sw><sn>木板</sn><sm>延缓类</sm><sl></sl></sw><sp>8<su>/块</su></sp></si><si k=\"t2\"><sw><sn>铁钉</sn><sm>延缓类</sm><sl></sl></sw><sp>10<su>/盒</su></sp></si><si k=\"t3\"><sw><sn>铁丝网</sn><sm>延缓类 ｜ 延缓时长为木板的两倍</sm><sl></sl></sw><sp>35<su>/卷</su></sp></si><si k=\"t4\"><sw><sn>门闩</sn><sm>延缓类 ｜ 可修复重复使用</sm><sl></sl></sw><sp>40<su>/副</su></sp></si><si k=\"t5\"><sw><sn>捕兽夹</sn><sm>杀伤类</sm><sl></sl></sw><sp>60<su>/个</su></sp></si><si k=\"t6\"><sw><sn>汽油桶</sn><sm>杀伤类 ｜ 纵火后额外造成清洁度损失</sm><sl></sl></sw><sp>70<su>/桶</su></sp></si><si k=\"t7\"><sw><sn>食盐<sq>即</sq></sn><sm>压制类</sm><sl></sl></sw><sp>5<su>/袋</su><sb>箱8</sb></sp></si><shg>干扰</shg><si k=\"l1\"><sw><sn>磁带录音机</sn><sl></sl></sw><sp>80</sp></si><si k=\"l2\"><sw><sn>空白磁带</sn><sm>可重复录制诱饵</sm><sl></sl></sw><sp>12<su>/盒</su></sp></si><si k=\"l3\"><sw><sn>手电筒</sn><sl></sl></sw><sp>25</sp></si><si k=\"l4\"><sw><sn>电池<sq>即</sq></sn><sl></sl></sw><sp>6<su>/组</su><sb>箱9</sb></sp></si><si k=\"l5\"><sw><sn>照明弹</sn><sl></sl></sw><sp>30<su>/支</su></sp></si><shg>医疗</shg><si k=\"d1\"><sw><sn>急救箱<sq>即</sq></sn><sl></sl></sw><sp>35<sb>箱53</sb></sp></si><si k=\"d2\"><sw><sn>止血带<sq>即</sq></sn><sl></sl></sw><sp>18<su>/份</su><sb>箱27</sb></sp></si><si k=\"d3\"><sw><sn>提神药片</sn><sm>服用后60分钟内全部移动耗时降低30% ｜ 每班次最多服用2份</sm><sl></sl></sw><sp>22<su>/份</su></sp></si><shg>容量</shg><si k=\"c1\"><sw><sn>工具腰带</sn><sm>CARRY +2</sm><sl></sl></sw><sp>90</sp></si><si k=\"c2\"><sw><sn>帆布挎包</sn><sm>CARRY +3</sm><sl></sl></sw><sp>140</sp></si><si k=\"c3\"><sw><sn>手推车</sn><sm>CARRY +5</sm><sl></sl></sw><sp>180</sp></si><shg>防护</shg><si k=\"p1\"><sw><sn>护膝护肘</sn><sm>HPMAX +10</sm><sl></sl></sw><sp>70</sp></si><si k=\"p2\"><sw><sn>加厚工装</sn><sm>HPMAX +15</sm><sl></sl></sw><sp>110</sp></si><si k=\"p3\"><sw><sn>二手防弹背心</sn><sm>HPMAX +30 ｜ 移动耗时 +1分钟</sm><sl></sl></sw><sp>260</sp></si><si k=\"p4\"><sw><sn>长期营养剂</sn><sm>HPMAX +5 ｜ 累计上限 +30</sm><sl></sl></sw><sp>60<su>/支</su></sp></si><shg>辅助工具</shg><si k=\"x1\"><sw><sn>放大镜</sn><sm>细查破绽耗时由3分钟降至2分钟</sm><sl></sl></sw><sp>30</sp></si></sh>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^([^|\\n<{\\[\\]}][^|\\n]*)\\|([^|\\n]*)\\|(\\d+(?:\\.\\d+)?)%?$/gm","replaceString":"<x><j>$1</j>$2</x><r><w style=\"width:$3%\"></w></r>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^([^|\\n<{\\[\\]}][^|\\n]*)\\|([^\\n]*)$/gm","replaceString":"<x><j>$1</j>$2</x>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^&&$/gm","replaceString":"</idc></idw>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^&(?!&)([^\\n]+)$(?=[\\s\\S]*<\\/idc><\\/idw>)/gm","replaceString":"<idw><idt>身份证 · $1</idt><idc>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^!([^\\n]+)$/gm","replaceString":"<div data-action=\"append-textinput\" data-value=\"$1\">$1</div>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^【(Q[1-9]|组装|文风锚)[·:：]?[ ]?([^\\n]*?)】[ \\t　]*([^\\n]*)$/gm","replaceString":"<ql s=\"$1\"><qk>$1</qk><qb>$2 $3</qb></ql>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/(✓)/g","replaceString":"<ok>$1</ok>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/(✗)/g","replaceString":"<ok n>$1</ok>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^([^<\\n][^\\n]*)$/gm","replaceString":"<p>$1</p>"},{"enabled":true,"applyMode":"front-end","messageRole":"assistant","regex":"/^[ \\t\\r　]*\\n/gm","replaceString":""}],"enableMemorySchema":false,"memorySchema":null,"injectStyles":"/* ═══ 气泡整体铺底 ═══\n   平台气泡结构：外层 .bg-card + px-4 py-3，内层 .rili-markdown-renderer 承载本卡全部内容。\n   用等值负 margin 反向撑满，让整个气泡内部就是同一个底色，\n   块与块之间不再漏出平台色，层次全部交给 3D 边缘表达。 */\n.rili-markdown-renderer{\n  margin:-12px -16px; padding:12px 16px;\n  border-radius:7px;\n  background:var(--scan),var(--surface);\n  color:var(--ink);\n  --paper:#25352a; --panel:#2c4036; --panel2:#293b2e;\n  --line:#3c5d46; --line2:#4d775b;\n  --ink:#edf5ef; --dim:#c0cdc3; --faint:#9caea2;\n  --neon:#95ffba; --neon-d:#50c67f;\n  --amber:#ffcb7c; --warn:#ffb994; --blood:#d7454d;\n  --accent:var(--neon);\n  --surface:#2b3d32;\n  /* 正文固定高度，覆盖面板与之等高，点击即整块盖住正文 */\n  --proseH:clamp(300px,48vh,470px);\n  --scan:repeating-linear-gradient(180deg,rgba(255,255,255,.024) 0 1px,transparent 1px 3px);\n  --mono:\"NSimSun\",\"新宋体\",\"SimSun\",\"宋体\",ui-monospace,\"SF Mono\",Menlo,Consolas,\"Noto Sans Mono CJK SC\",monospace;\n  --cn:\"SimSun\",\"宋体\",\"Songti SC\",\"STSong\",\"PMingLiU\",\"新細明體\",\"Noto Serif CJK SC\",\"Source Han Serif SC\",serif;\n}\n/* 同底色下，块的边界只靠 3D 边缘区分，所以边线要更清楚一点 */\ndetails[cot],h,n,g,g label>k,g label>span,div[data-action]{\n  border-color:color-mix(in srgb,var(--line) 70%,#000);\n}\n\n/* ═══ 降级兜底 ═══\n   任一区域容器未生成时（AI 漏写符号），其子元素会散落在根层。\n   以下规则保证它们仍然清晰可读，只是失去分区外观。\n   所有带祖先选择器的正常规则（h ma / g f>label / n p…）特异性更高，会自动覆盖这里。 */\nma,ti,lo,en,po,qa,qb,fa,l,gt,gi,gb,x,j,z,t,c,fm,fl,fv,v,qu,gh,f,k{display:block}\ne,e2,w,ff,fw,r,fr,fb{display:inline}\nlabel input{position:absolute; opacity:0; width:0; height:0}\n\nma,gt,t{color:var(--amber); font-weight:700; letter-spacing:.05em}\nti,lo,en,qa,qb,fa,gi{color:var(--ink)}\npo,gb{color:var(--dim); font-size:.88em}\nj,fl{color:var(--dim); font-family:var(--mono); font-size:.9em; margin-right:.5em}\nj::after,fl::after{content:\"：\"}\nl,fv{color:var(--accent); font-weight:700}\nc{color:var(--dim); text-align:center; font-size:.9em; margin:6px 0}\n\n/* 正文容器丢失时，段落与对话仍保持可读层次 */\np{margin:0 0 .9em; color:var(--ink); line-height:1.9}\np[dlg]{display:flex; gap:9px; align-items:flex-start;\n       padding:8px 10px; border-radius:var(--r);\n       background:rgba(255,255,255,.022); border-left:2px solid var(--line2)}\np[dlg][npc]{border-left-color:var(--amber)}\np[dlg][user]{border-left-color:var(--neon)}\np[dlg]:not([npc]):not([user]){background:none; border-left-color:var(--neon-d);\n       color:#c5d2c8; font-style:italic; padding:3px 0 3px 13px}\np k{display:block; flex:1; min-width:0}\np m{display:block; margin-bottom:2px; font-family:var(--mono);\n    font-size:.84em; letter-spacing:.06em; color:var(--amber)}\np[dlg][user] m{color:var(--neon)}\n\n/* 面板容器丢失时，退化为带边框的分组块 */\nf{margin:8px 0; border:1px solid var(--line); border-radius:var(--r); overflow:hidden}\nf>label{display:block; padding:8px 12px; background:var(--panel);\n        border-bottom:1px solid var(--line); font-weight:700; color:var(--ink)}\nf>k{padding:11px 13px; color:var(--ink)}\nx{margin:2px 0; color:var(--ink)}\nz{margin:7px 0; padding:8px 10px; border-left:2px solid var(--line2); background:rgba(255,255,255,.02)}\n\n/* ===== 伪人加油站 · 夜班终端 ===== */\n/* 变量挂在各顶层容器上（平台禁用 :root） */\nh, n, g, details[cot], div[data-action],\nf, k, m, x, z, c, t, v, qu, gh, fm, ma, ti, lo, en, po, p{\n  --paper:#25352a; --panel:#2c4036; --panel2:#293b2e;\n  --line:#3c5d46; --line2:#4d775b;\n  --ink:#edf5ef; --dim:#c0cdc3; --faint:#9caea2;\n  --neon:#95ffba; --neon-d:#50c67f;\n  --amber:#ffcb7c; --warn:#ffb994; --blood:#d7454d;\n  --accent:var(--neon);\n  --mono:\"NSimSun\",\"新宋体\",\"SimSun\",\"宋体\",ui-monospace,\"SF Mono\",Menlo,Consolas,\"Noto Sans Mono CJK SC\",monospace;\n  --cn:\"SimSun\",\"宋体\",\"Songti SC\",\"STSong\",\"PMingLiU\",\"新細明體\",\"Noto Serif CJK SC\",\"Source Han Serif SC\",serif;\n  --r:8px;\n\n  /* 统一底色：所有背景气泡共用同一个颜色，层次只靠阴影表达 */\n  --surface:#2b3d32;\n  --scan:repeating-linear-gradient(180deg,rgba(255,255,255,.024) 0 1px,transparent 1px 3px);\n\n  /* 3D 边缘·凸起：顶部高光 + 底部内阴影 + 三层落影 */\n  --edge-up:\n    inset 0 1px 0 rgba(255,255,255,.13),\n    inset 0 -1.5px 0 rgba(0,0,0,.55),\n    inset 1px 0 0 rgba(255,255,255,.035),\n    inset -1px 0 0 rgba(0,0,0,.30),\n    0 1px 1px rgba(0,0,0,.30),\n    0 4px 9px rgba(0,0,0,.28),\n    0 11px 24px rgba(0,0,0,.22);\n\n  /* 3D 边缘·平面容器：轻高光 + 落影 */\n  --edge-out:\n    inset 0 1px 0 rgba(255,255,255,.095),\n    inset 0 -1px 0 rgba(0,0,0,.45),\n    0 1px 2px rgba(0,0,0,.28),\n    0 6px 16px rgba(0,0,0,.26),\n    0 16px 34px rgba(0,0,0,.18);\n\n  /* 3D 边缘·凹陷：顶部内阴影 + 底部内高光 */\n  --edge-in:\n    inset 0 2px 5px rgba(0,0,0,.48),\n    inset 0 1px 0 rgba(0,0,0,.58),\n    inset 0 -1px 0 rgba(255,255,255,.055),\n    0 1px 0 rgba(255,255,255,.03);\n\n  /* 3D 边缘·按下 */\n  --edge-press:\n    inset 0 2px 6px rgba(0,0,0,.46),\n    inset 0 -1px 0 rgba(255,255,255,.04);\n}\n\n/* ===== 顶部 HUD ===== */\nh{\n  display:block; margin:0 0 10px; padding:12px 14px;\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line); border-left:3px solid var(--accent);\n  border-radius:var(--r); color:var(--ink);\n  font-family:var(--mono); font-size:clamp(12px,3.4vw,13.5px); line-height:1.7;\n  box-shadow:var(--edge-out);\n}\nh ma,h ti,h lo,h en,h po{display:block; letter-spacing:.02em}\nh ma{\n  color:var(--accent); font-weight:700; letter-spacing:.14em;\n  text-shadow:0 0 10px color-mix(in srgb,var(--accent) 55%,transparent);\n}\nh ti,h lo{color:var(--ink)}\nh en{color:var(--dim)}\nh po{color:var(--faint); font-size:.88em}\nh dv{\n  display:block; height:1px; margin:9px 0;\n  background:linear-gradient(90deg,var(--accent),transparent 78%); opacity:.5;\n}\n\n/* 区域键配色：h[bg=...] 只改 --accent，其余自动跟随 */\nh[bg=\"shop\"]  {--accent:#d6f9ff}\nh[bg=\"desk\"]  {--accent:#ffcb7c}\nh[bg=\"pump\"]  {--accent:#8cc2ff}\nh[bg=\"stock\"] {--accent:#d1b269}\nh[bg=\"cold\"]  {--accent:#a7e9ff}\nh[bg=\"wc\"]    {--accent:#bbe1c1}\nh[bg=\"office\"]{--accent:#95ffba}\nh[bg=\"rest\"]  {--accent:#ffdaa3}\nh[bg=\"dock\"]  {--accent:#7b9bd3}\nh[bg=\"lot\"]   {--accent:#a5a5de}\n\n/* 不可挽回度 */\nh v{display:block; margin:8px 0 6px}\nh fa{display:block; color:var(--dim); font-size:.86em; letter-spacing:.08em}\nh l{display:block; margin:2px 0 5px; font-weight:700; color:var(--neon)}\nh l[lv=\"0\"]{color:#bdefcc}\nh l[lv=\"1\"]{color:#e8f2ba}\nh l[lv=\"2\"]{color:var(--amber)}\nh l[lv=\"3\"]{color:var(--warn)}\nh l[lv=\"4\"]{color:var(--blood); animation:pulse 1.9s ease-in-out infinite}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}\nh fr,g r,g fb{\n  display:block; height:7px; border-radius:99px; overflow:hidden;\n  background:rgba(255,255,255,.05); border:1px solid var(--line);\n}\nh fw,g w,g ff{\n  display:block; height:100%; border-radius:99px;\n  background:linear-gradient(90deg,var(--neon-d),var(--neon));\n  box-shadow:0 0 10px color-mix(in srgb,var(--neon) 45%,transparent);\n  transition:width .55s cubic-bezier(.4,0,.2,1);\n}\nh l[lv=\"3\"]~fr fw,h l[lv=\"4\"]~fr fw{background:linear-gradient(90deg,#b42832,var(--blood)); box-shadow:0 0 10px rgba(198,43,52,.5)}\n\n/* 任务行 */\nh qu{display:block; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line2)}\nh qa,h qb{display:block; color:var(--ink); font-size:.94em}\nh e{\n  display:inline-block; padding:0 7px; margin-left:2px; border-radius:99px;\n  background:rgba(121,255,168,.1); border:1px solid var(--line2);\n  color:var(--neon); font-size:.85em;\n}\n\n/* ===== 正文 ===== */\nn{\n  /* 定位框：不滚动。档案卡以它为包含块，才不会跟着正文滚走 */\n  display:block; position:relative; margin:10px 0; padding:0;\n  box-sizing:border-box; height:var(--proseH); overflow:hidden;\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line); border-radius:var(--r);\n  box-shadow:var(--edge-in);\n  color:#eaf2ec; font-size:clamp(14px,3.9vw,15.5px); line-height:1.98;\n}\nn p{margin:0 0 1.05em; text-align:justify; letter-spacing:.012em; color:#eaf2ec}\nn p:last-child{margin-bottom:0}\nn p::selection,n k::selection{background:rgba(121,255,168,.25)}\n/* 内层滚动器 */\nns{\n  display:block; box-sizing:border-box; height:100%; padding:17px 19px;\n  overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable;\n}\n/* 正文滚动条 */\nns::-webkit-scrollbar{width:8px}\nns::-webkit-scrollbar-track{background:rgba(0,0,0,.35); border-radius:9px; margin:6px 0}\nns::-webkit-scrollbar-thumb{\n  background:linear-gradient(180deg,\n    color-mix(in srgb,var(--accent) 78%,transparent),\n    color-mix(in srgb,var(--accent) 44%,transparent));\n  border-radius:9px; border:1px solid rgba(0,0,0,.45);\n  box-shadow:0 0 8px color-mix(in srgb,var(--accent) 38%,transparent);\n}\nns::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent) 70%,transparent)}\n\n/* 对话 */\nn p[dlg]{\n  display:flex; gap:9px; align-items:flex-start;\n  margin:0 0 .95em; padding:9px 11px; border-radius:var(--r);\n  background:linear-gradient(180deg,rgba(255,255,255,.028),rgba(255,255,255,.012));\n  border:1px solid var(--line); border-left:2px solid var(--line2);\n}\nn p[dlg][npc]{border-left-color:var(--amber)}\nn p[dlg][user]{border-left-color:var(--neon); flex-direction:row}\nn p[dlg]:not([npc]):not([user]){\n  background:none; border:none; border-left:2px solid var(--neon-d);\n  color:#c5d2c8; font-style:italic; padding:3px 0 3px 13px;\n}\nn k{display:block; flex:1; min-width:0}\nn m{\n  display:block; margin-bottom:2px; font-family:var(--mono);\n  font-size:.84em; letter-spacing:.06em; color:var(--amber);\n}\nn p[dlg][user] m{color:var(--neon)}\n\n/* 立绘 */\n\n/* 专有名词 */\nn zz{\n  position:relative; border-bottom:1px dotted var(--accent);\n  color:var(--neon); cursor:help; outline:none;\n}\nn zz zt{\n  position:absolute; left:0; bottom:135%; z-index:9;\n  display:block; width:max-content; max-width:min(74vw,290px);\n  padding:8px 10px; border-radius:var(--r);\n  background:var(--panel); border:1px solid var(--line2);\n  color:var(--ink); font-size:.85em; line-height:1.6; font-style:normal;\n  box-shadow:0 8px 26px rgba(0,0,0,.6);\n  opacity:0; visibility:hidden; transform:translateY(4px); transition:.18s;\n}\nn zz:hover zt,n zz:focus zt{opacity:1; visibility:visible; transform:translateY(0)}\nn zz zt span{color:var(--dim); margin-right:4px}\n\n/* ===== 状态终端 ===== */\ng{\n  display:block; margin:12px 0 10px;\n  font-family:var(--mono); font-size:clamp(11.5px,3.2vw,13px); line-height:1.72;\n  color:var(--ink);\n  background:var(--scan),var(--surface);\n  box-shadow:var(--edge-out);\n}\ng gh{\n  display:block; padding:11px 13px; margin-bottom:8px; border-radius:var(--r);\n  background:linear-gradient(180deg,rgba(255,255,255,.035),transparent),var(--scan);\n  border:1px solid var(--line2);\n  box-shadow:inset 0 -1px 0 rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,.045);\n}\ng gt{display:block; color:var(--neon); letter-spacing:.06em}\ng gi{display:block; color:var(--ink); font-size:1.04em; margin:1px 0}\ng gb{display:block; color:var(--faint); font-size:.8em; letter-spacing:.22em}\n\n/* ===== 状态区：抬头 + 标签栏 + 面板，一体化背景 ===== */\ng{\n  display:flex; flex-wrap:wrap; justify-content:flex-start; align-items:flex-start;\n  gap:7px 6px; position:relative;\n  margin:10px 0; padding:0 13px 13px;\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line); border-radius:var(--r);\n  box-shadow:var(--edge-out);\n}\n/* 抬头与容器齐边，靠分隔线而非独立卡片来分区 */\ng gh{\n  flex:0 0 100%; order:-1;\n  display:block; margin:0 -13px 11px; padding:12px 14px 10px;\n  background:\n    repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0 1px,transparent 1px 3px),\n    linear-gradient(135deg,#2d4a39,transparent);\n  border:none; border-bottom:1px solid var(--line2); border-radius:0;\n}\n\n/* f 与 label 都退出布局，span 与 k 直接成为 g 的 flex 项 */\ng f{display:contents}\ng f>label{display:contents; cursor:pointer}\ng label input{position:absolute; opacity:0; width:0; height:0; pointer-events:none}\n\n/* 标签按钮·长方形 */\ng label>span{\n  order:1; flex:0 1 auto;\n  padding:9px 15px; border-radius:7px;\n  display:flex; align-items:center; justify-content:center;\n  cursor:pointer; user-select:none; -webkit-tap-highlight-color:transparent;\n  max-width:11em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\n  font-family:var(--mono); font-size:clamp(11px,3vw,12.5px);\n  font-weight:700; letter-spacing:.09em; color:var(--dim);\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line);\n  border-bottom:2px solid color-mix(in srgb,var(--line) 75%,#000);\n  box-shadow:var(--edge-up);\n  transition:transform .2s cubic-bezier(.2,.9,.25,1),box-shadow .2s,\n             border-color .2s,background .2s,color .2s;\n}\ng label>span:hover{\n  transform:translateY(-2px); color:var(--ink);\n  border-color:color-mix(in srgb,var(--accent) 55%,var(--line));\n  border-bottom-color:var(--accent);\n  background:var(--scan),color-mix(in srgb,var(--accent) 7%,var(--surface));\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -1.5px 0 rgba(0,0,0,.5),0 2px 2px rgba(0,0,0,.3),0 7px 15px rgba(0,0,0,.34),0 16px 32px rgba(0,0,0,.26);\n}\ng label>span:active{\n  transform:translateY(1px);\n  box-shadow:var(--edge-press);\n}\n\n/* 面板本体 */\n/* 展开：兄弟选择器，无 :has() 无 @supports，全浏览器可用 */\ng label>input:checked~span{\n  transform:translateY(-3px); color:var(--accent);\n  border-color:color-mix(in srgb,var(--accent) 70%,var(--line));\n  border-bottom-color:var(--accent);\n  background:var(--scan),color-mix(in srgb,var(--accent) 17%,var(--surface));\n  text-shadow:0 0 9px color-mix(in srgb,var(--accent) 55%,transparent);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),inset 0 -1.5px 0 rgba(0,0,0,.5),0 2px 2px rgba(0,0,0,.3),0 8px 18px rgba(0,0,0,.38),0 0 18px color-mix(in srgb,var(--accent) 40%,transparent);\n}\n/* 关闭钮 */\ng f[p=\"none\"] label>span{\n  margin-left:auto; color:#d9bebe;\n  background:var(--scan),color-mix(in srgb,#d7454d 11%,var(--surface));\n  border-color:#644a4a; border-bottom-color:#895353;\n}\ng f[p=\"none\"] label>span:hover{\n  color:#eed3d3;\n  background:linear-gradient(180deg,#4d3333,#372727);\n  border-color:#a46262; border-bottom-color:#b26d6d;\n  box-shadow:0 5px 14px rgba(0,0,0,.45),0 0 12px rgba(180,60,60,.3);\n}\n\n/* 面板标题 */\ng f[p=\"duty\"] k::before{content:\"NIGHT:/> run DUTY.SYS   ·   值班信息\"}\ng f[p=\"gear\"] k::before{content:\"NIGHT:/> run GEAR.SYS   ·   随身资产\"}\ng f[p=\"store\"] k::before{content:\"NIGHT:/> run STORE.SYS   ·   店面\"}\ng f[p=\"guest\"] k::before{content:\"NIGHT:/> run GUEST.LOG   ·   在店顾客\"}\ng f[p=\"pet\"] k::before{content:\"NIGHT:/> run PET.SYS   ·   宠物\"}\ng f[p=\"memo\"] k::before{content:\"NIGHT:/> run MEMO.DAT   ·   记忆区\"}\ng f[p=\"report\"] k::before{content:\"NIGHT:/> run REPORT.OUT   ·   本夜结算\"}\ng f[p=\"siege\"] k::before{content:\"NIGHT:/> run SIEGE.EXE   ·   围攻\"}\ng f[p=\"threat\"] k::before{content:\"NIGHT:/> run THREAT.LOG   ·   威胁\"}\n\n/* 分节占位「-|无」 */\nc[e]{color:var(--faint); text-align:center; font-size:.88em; margin:4px 0; font-style:italic}\n\n/* 顶栏小标签：疗程 / 今夜定额 */\nh qa e2,h qb e2{\n  display:inline-block; margin-right:6px; padding:1px 6px; border-radius:4px;\n  background:color-mix(in srgb,var(--accent) 16%,transparent);\n  border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));\n  font-family:var(--mono); font-size:.82em; font-weight:700; letter-spacing:.08em;\n  color:var(--accent); vertical-align:1px;\n}\n/* 危险阶段的标签底色 */\ng f[p=\"siege\"] label>span,g f[p=\"threat\"] label>span{\n  background:var(--scan),color-mix(in srgb,#d7454d 13%,var(--surface));\n}\n\n/* ═══ CRT 终端面板 ═══\n   悬停按钮 → 终端下滑预览；点击 → 锁定进入完整界面。\n   用 max-height 过渡而非 display 切换，因为 display 无法产生动画。\n   悬停判定放在 span 与 k 上而不是 label 上：label 是 display:contents，\n   无盒子，:hover 在 Chromium 下不会从子元素冒泡上来。 */\ng label>k{\n  /* 绝对定位于状态区上方，正好落在正文的位置上；高度 0 时零布局影响。\n     pointer-events:none —— 折叠态的边框仍占 4px 且横贯整行，\n     不屏蔽命中就会变成一条看不见的触发条 */\n  position:absolute; left:0; right:0; bottom:calc(100% + 10px); z-index:30;\n  pointer-events:none;\n  box-sizing:border-box; height:0; opacity:0; transform:translateY(6px);\n  margin:0; padding:0 15px; border:0 solid transparent; border-radius:var(--r);\n  overflow:hidden; overscroll-behavior:contain;\n  cursor:auto; user-select:text; font-family:var(--mono);\n  background:\n    repeating-linear-gradient(180deg,rgba(121,255,168,.05) 0 1px,transparent 1px 3px),\n    linear-gradient(180deg,#1c3424,#182c16);\n  box-shadow:var(--edge-in);\n  box-shadow:0 -6px 26px rgba(0,0,0,.55),inset 0 0 40px rgba(0,0,0,.45);\n  transition:\n    height .42s cubic-bezier(.24,1.02,.4,1),\n    opacity .24s ease,\n    transform .34s cubic-bezier(.24,1.1,.4,1),\n    padding .3s ease, border-width .2s ease, filter .3s ease;\n}\n/* 终端标题栏：屏幕顶部的命令行 */\ng label>k::before{\n  display:block; margin:0 -15px 11px; padding:8px 12px 7px;\n  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 24%,#1f3325),#1f3325);\n  border-bottom:1px solid color-mix(in srgb,var(--accent) 34%,transparent);\n  color:var(--accent); font-family:var(--mono); font-weight:700;\n  font-size:.8em; letter-spacing:.16em; white-space:nowrap;\n  overflow:hidden; text-overflow:ellipsis;\n  text-shadow:0 0 9px color-mix(in srgb,var(--accent) 70%,transparent);\n}\n/* 屏幕底部闪烁光标 */\ng label>k::after{\n  content:\"_\"; display:block; margin-top:8px;\n  color:var(--accent); font-family:var(--mono); font-weight:700;\n  text-shadow:0 0 8px color-mix(in srgb,var(--accent) 75%,transparent);\n  animation:caret 1.06s step-end infinite;\n}\n@keyframes caret{0%,49%{opacity:1}50%,100%{opacity:0}}\n\ng label>k::-webkit-scrollbar{width:5px}\ng label>k::-webkit-scrollbar-thumb{\n  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 72%,transparent),color-mix(in srgb,var(--accent) 40%,transparent));\n  border-radius:9px; border:1px solid rgba(0,0,0,.45);\n}\n\n/* 悬停按钮 → 下滑预览。触发只挂在 span 上：k 是绝对定位的整行盒子，\n   挂 :hover 会让标签行下沿的空白也成为触发区 */\ng label>span:hover~k{\n  /* 预览：只盖住正文下半，底部渐隐提示内容未完 */\n  -webkit-mask-image:linear-gradient(180deg,#000 90%,transparent 100%);\n  mask-image:linear-gradient(180deg,#000 90%,transparent 100%);\n  height:calc(var(--proseH) * .46); opacity:1; transform:none;\n  padding:0 15px 13px;\n  border-width:1px; border-color:color-mix(in srgb,var(--line) 55%,#000);\n  filter:brightness(.93) saturate(.92);\n}\n/* 点击 → 锁定进入完整界面 */\ng label>input:checked~k{\n  -webkit-mask-image:none; mask-image:none; pointer-events:auto;\n  height:var(--proseH); opacity:1; transform:none;\n  padding:0 15px 15px;\n  border-width:1px; border-color:color-mix(in srgb,var(--line) 75%,#000);\n  overflow-y:auto; filter:none;\n  animation:crtOn .52s ease-out;\n}\n/* 覆盖态的滚动条与正文同款 */\ng label>k::-webkit-scrollbar-track{background:rgba(0,0,0,.4); border-radius:9px; margin:6px 0}\n/* 显像管亮起 */\n@keyframes crtOn{\n  0%{filter:brightness(2.8) saturate(.25)}\n  20%{filter:brightness(2) saturate(.6)}\n  52%{filter:brightness(1.16)}\n  100%{filter:none}\n}\n\n/* 按钮与其终端窗贴合成一体 */\ng label>span:hover,\ng label>input:checked~span{border-bottom-left-radius:0; border-bottom-right-radius:0}\n\n/* ═══ 正文内的证件触发 ═══\n   悬浮 idt 即浮出 idc。二者是 idw 的兄弟节点，用相邻兄弟选择器联动，\n   不依赖 :has() 与 @supports。 */\nn idw{display:block; margin:.5em 0}\nn idt{\n  display:inline-block; padding:2px 7px 2px 5px; border-radius:4px 4px 0 0;\n  cursor:help; user-select:none; -webkit-tap-highlight-color:transparent;\n  color:var(--amber); font-weight:700; letter-spacing:.02em;\n  background:linear-gradient(180deg,transparent 58%,color-mix(in srgb,var(--amber) 16%,transparent));\n  border-bottom:1px dashed color-mix(in srgb,var(--amber) 58%,transparent);\n  text-shadow:0 0 8px color-mix(in srgb,var(--amber) 32%,transparent);\n  transition:background .22s,color .22s,text-shadow .22s;\n}\nn idt::before{content:\"▣ \"; font-size:.92em; opacity:.85}\nn idt::after{content:\" ✦\"; font-size:.78em; opacity:.7; vertical-align:2px}\nn idt:hover{\n  color:#ffe7c1;\n  background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 10%,transparent) 40%,\n                                    color-mix(in srgb,var(--amber) 28%,transparent));\n  border-bottom-color:var(--amber);\n  text-shadow:0 0 12px color-mix(in srgb,var(--amber) 55%,transparent);\n}\n\n/* 证件档案：贴在正文滚动视口上，覆盖整个正文区 */\nn idc{\n  /* 包含块是 n 而非 ns，所以正文滚动时它稳稳盖在原处 */\n  position:absolute; left:0; right:0; top:0; bottom:0; z-index:40;\n  display:block; box-sizing:border-box;\n  margin:0; padding:0 15px 15px; border-radius:var(--r);\n  overflow-y:auto; overscroll-behavior:contain;\n  opacity:0; visibility:hidden; pointer-events:none; transform:translateY(9px);\n  font-family:var(--mono); font-size:.94em; line-height:1.62;\n  color:var(--ink);\n  background:\n    repeating-linear-gradient(180deg,rgba(255,190,92,.05) 0 1px,transparent 1px 3px),\n    linear-gradient(180deg,#362913,#2e2312);\n  border:1px solid color-mix(in srgb,var(--amber) 34%,var(--line));\n  box-shadow:0 8px 30px rgba(0,0,0,.62),inset 0 0 42px rgba(0,0,0,.5);\n  transition:opacity .26s ease,transform .3s cubic-bezier(.24,1.05,.4,1),visibility 0s .3s;\n}\nn idt:hover ~ idc,\nn idc:hover{\n  opacity:1; visibility:visible; pointer-events:auto; transform:none;\n  transition:opacity .26s ease,transform .3s cubic-bezier(.24,1.05,.4,1),visibility 0s 0s;\n  animation:crtOn .5s ease-out;\n}\nn idc::before{\n  content:\"NIGHT:/> query NET-DB.REC   ·   证件与档案\";\n  display:block; margin:0 -15px 11px; padding:8px 12px 7px;\n  background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 24%,#1f3325),#2e2517);\n  border-bottom:1px solid color-mix(in srgb,var(--amber) 34%,transparent);\n  color:var(--amber); font-weight:700; font-size:.82em; letter-spacing:.16em;\n  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n  text-shadow:0 0 9px color-mix(in srgb,var(--amber) 60%,transparent);\n}\nn idc::-webkit-scrollbar{width:6px}\nn idc::-webkit-scrollbar-thumb{\n  background:color-mix(in srgb,var(--amber) 55%,transparent); border-radius:9px;\n}\n/* 证件照与字段版式，与档案面板同款；不能用 flex，flex 容器会避开浮动 */\nn idc>t{\n  display:block; margin:0 0 8px; text-align:left; border:none; background:none;\n  font-family:var(--mono); font-size:1.26em; font-weight:700; letter-spacing:.06em;\n  color:var(--amber); text-shadow:0 0 12px color-mix(in srgb,var(--amber) 45%,transparent);\n}\nn idc>c{clear:none; margin:9px 0 6px; color:color-mix(in srgb,var(--amber) 62%,var(--dim))}\nn idc>x{\n  display:block; margin:0; padding:5px 0;\n  border-bottom:1px dotted color-mix(in srgb,var(--amber) 16%,transparent);\n}\nn idc>x j{\n  display:inline-block; width:4.6em; margin:0 9px 0 0; vertical-align:top;\n  text-align:justify; text-align-last:justify;\n  color:color-mix(in srgb,var(--amber) 52%,var(--dim));\n  font-size:.88em;\n}\nn idc>x j::after{content:none}\nn idc>x[f]{clear:both}\nn idc>x[f] j{display:block; width:auto; margin:0 0 2px}\n\n/* ═══ 身份证 / 数据库档案面板 ═══\n   复用覆盖层机制，配色改琥珀，版式改为左照片右字段的档案样式 */\ng f[p^=\"doc\"] label>span{\n  background:var(--scan),color-mix(in srgb,var(--amber) 13%,var(--surface));\n  border-bottom-color:color-mix(in srgb,var(--amber) 60%,var(--line));\n  color:color-mix(in srgb,var(--amber) 75%,var(--ink));\n}\ng f[p^=\"doc\"] label>span:hover{\n  background:var(--scan),color-mix(in srgb,var(--amber) 20%,var(--surface));\n  border-color:color-mix(in srgb,var(--amber) 55%,var(--line));\n  border-bottom-color:var(--amber); color:var(--amber);\n}\ng f[p^=\"doc\"] label>input:checked~span{\n  background:var(--scan),color-mix(in srgb,var(--amber) 28%,var(--surface));\n  border-color:color-mix(in srgb,var(--amber) 70%,var(--line));\n  border-bottom-color:var(--amber); color:var(--amber);\n  text-shadow:0 0 9px color-mix(in srgb,var(--amber) 60%,transparent);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),inset 0 -1.5px 0 rgba(0,0,0,.5),\n             0 2px 2px rgba(0,0,0,.3),0 8px 18px rgba(0,0,0,.38),\n             0 0 18px color-mix(in srgb,var(--amber) 40%,transparent);\n}\n/* 档案纸面：琥珀色磷光 + 横向档案纹 */\ng f[p^=\"doc\"] k{\n  --accent:var(--amber);\n  background:\n    repeating-linear-gradient(180deg,rgba(255,190,92,.05) 0 1px,transparent 1px 3px),\n    linear-gradient(180deg,#362913,#2e2312);\n  border-color:color-mix(in srgb,var(--amber) 32%,var(--line));\n}\ng f[p^=\"doc\"] k::before{content:\"NIGHT:/> query NET-DB.REC   ·   证件与档案\"}\n/* 左侧证件照 */\n/* 姓名大字 */\ng f[p^=\"doc\"] k>t{\n  display:block; margin:0 0 8px; padding:0; text-align:left;\n  font-family:var(--mono); font-size:1.28em; font-weight:700; letter-spacing:.06em;\n  color:var(--amber); text-shadow:0 0 12px color-mix(in srgb,var(--amber) 45%,transparent);\n  border:none; background:none;\n}\n/* 字段区绕开照片；分节线只跨右栏 */\ng f[p^=\"doc\"] k>c{\n  clear:none; margin:9px 0 6px;\n  color:color-mix(in srgb,var(--amber) 62%,var(--dim));\n}\n/* 档案字段改为左右对齐的紧凑表格，一行一项 */\n/* 不能用 flex：flex 容器会主动避开浮动的证件照，字段会被逐个挤到照片下方。\n   改用 inline-block，行内盒才会正常绕排浮动。 */\ng f[p^=\"doc\"] k>x{\n  display:block; margin:0; padding:5px 0;\n  border-bottom:1px dotted color-mix(in srgb,var(--amber) 16%,transparent);\n}\ng f[p^=\"doc\"] k>x j{\n  display:inline-block; width:4.6em; margin:0 9px 0 0; vertical-align:top;\n  text-align:justify; text-align-last:justify;\n  color:color-mix(in srgb,var(--amber) 52%,var(--dim));\n  font-size:.88em; letter-spacing:.02em;\n}\ng f[p^=\"doc\"] k>x j::after{content:none}\ng f[p^=\"doc\"] k>x[f]{clear:both}\ng f[p^=\"doc\"] k>x[f] j{display:block; width:auto; margin:0 0 2px}\n/* 照片下方之后的内容恢复通栏 */\n\n/* 面板配色：按 p 属性 */\ng f[p=\"duty\"]  {--accent:#95ffba}\ng f[p=\"gear\"]  {--accent:#ffcb7c}\ng f[p=\"store\"] {--accent:#a7e9ff}\ng f[p=\"guest\"] {--accent:#e1c5ff}\ng f[p=\"pet\"]   {--accent:#ffdaa3}\ng f[p=\"memo\"]  {--accent:#b4c1ff}\ng f[p=\"report\"]{--accent:#ffe7a3}\ng f[p=\"siege\"] {--accent:#ff876c}\ng f[p=\"threat\"]{--accent:#ff6f6f}\ng f[p=\"siege\"],g f[p=\"threat\"]{border-color:#7e3732}\ng f[p=\"siege\"] label>span,g f[p=\"threat\"] label>span{\n  background:var(--scan),color-mix(in srgb,#d7454d 13%,var(--surface));\n}\ng f[p=\"threat\"] label>span::after{animation:pulse 1.2s ease-in-out infinite}\n\n/* 行项 */\ng t{\n  display:block; margin:0 0 8px; padding-bottom:6px;\n  border-bottom:1px solid var(--line);\n  color:var(--accent); font-weight:700; letter-spacing:.05em; font-size:1.06em;\n}\ng x{\n  display:flex; gap:8px; align-items:baseline;\n  padding:3px 0; border-bottom:1px dotted rgba(255,255,255,.045);\n}\ng x:last-child{border-bottom:none}\ng j{\n  flex:0 0 auto; min-width:5.2em; max-width:9em;\n  color:var(--dim); font-size:.92em; letter-spacing:.04em;\n}\ng j::after{content:\"·\"; margin-left:5px; color:var(--faint)}\ng x[f]{display:block}\ng x[f] j{display:inline-block; margin-right:6px}\ng c{\n  display:block; margin:9px 0 4px; color:var(--faint);\n  font-size:.85em; letter-spacing:.16em; text-align:center;\n}\ng d{display:block; height:1px; margin:8px 0; background:var(--line)}\ng r{margin:3px 0 6px}\ng z{\n  display:block; margin:0 0 9px; padding:9px 10px; border-radius:var(--r);\n  background:rgba(255,255,255,.022); border:1px solid var(--line);\n}\ng z:last-child{margin-bottom:0}\n\n/* 记忆条目 */\ng x[ltm],g x[stm],g x[pem]{\n  display:block; margin:4px 0; padding:7px 9px; border-radius:4px;\n  background:rgba(255,255,255,.02); border-left:2px solid var(--line2);\n  line-height:1.75;\n}\ng x[ltm]{border-left-color:#b4c1ff}\ng x[stm]{border-left-color:#95ffba}\ng x[pem]{border-left-color:var(--blood); background:rgba(198,43,52,.06)}\ng x[ltm] j,g x[stm] j,g x[pem] j{\n  display:block; max-width:none; margin-bottom:3px; color:var(--accent); font-size:.86em;\n}\ng x[ltm] j::after,g x[stm] j::after,g x[pem] j::after{content:\"\"}\n\n/* 记忆区迷你进度条 */\ng fm{display:block; margin:6px 0 8px; padding:7px 9px; border-radius:4px; background:rgba(255,255,255,.025)}\ng fl{display:block; color:var(--dim); font-size:.84em; letter-spacing:.08em}\ng fv{display:block; margin:2px 0 4px; font-weight:700; color:var(--amber)}\ng fv[lv=\"0\"]{color:#bdefcc}\ng fv[lv=\"1\"]{color:#e8f2ba}\ng fv[lv=\"2\"]{color:var(--amber)}\ng fv[lv=\"3\"]{color:var(--warn)}\ng fv[lv=\"4\"]{color:var(--blood); animation:pulse 1.9s ease-in-out infinite}\n\n/* ===== 行动推荐（正则已转为 data-action 可点击控件，无容器） ===== */\ndiv[data-action]{\n  font-family:var(--mono); font-size:clamp(12px,3.4vw,13.5px);\n  display:block; margin:0 0 6px; padding:10px 13px 10px 35px;\n  position:relative; border-radius:var(--r); cursor:pointer;\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line); border-left:2px solid var(--neon-d);\n  color:var(--ink); line-height:1.68;\n  -webkit-tap-highlight-color:transparent;\n  transition:transform .16s,border-color .16s,background .16s,box-shadow .16s;\n  box-shadow:var(--edge-up);\n}\ndiv[data-action]::before{\n  content:\"▸\"; position:absolute; left:14px; top:10px;\n  color:var(--neon); opacity:.85; transition:transform .16s;\n}\ndiv[data-action]:hover{\n  transform:translateY(-1px); border-left-color:var(--neon);\n  background:var(--scan),color-mix(in srgb,var(--accent) 6%,var(--surface));\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),inset 0 -1.5px 0 rgba(0,0,0,.5),0 2px 2px rgba(0,0,0,.3),0 7px 15px rgba(0,0,0,.33);\n}\ndiv[data-action]:hover::before{transform:translateX(2px)}\ndiv[data-action]:active{\n  transform:translateY(1px);\n  background:linear-gradient(180deg,#365b47,#2d4938);\n  box-shadow:var(--edge-press);\n}\ndiv[data-action]:last-child{border-left-color:var(--faint); color:var(--dim)}\ndiv[data-action]:last-child:hover{border-left-color:var(--dim); box-shadow:none}\n\n/* ===== 值班记录（思维链） ===== */\ndetails[cot]{\n  display:block; margin:8px 0;\n  border-radius:var(--r);\n  background:var(--scan),var(--surface);\n  border:1px solid var(--line);\n  font-family:var(--mono); font-size:clamp(10.5px,2.9vw,12px); color:var(--dim);\n  box-shadow:var(--edge-out);\n}\ndetails[cot] summary{\n  cursor:pointer; padding:8px 12px; color:var(--faint);\n  letter-spacing:.1em; list-style:none; user-select:none;\n}\ndetails[cot] summary::-webkit-details-marker{display:none}\ndetails[cot] summary::before{content:\"▸ \"; color:var(--neon-d)}\ndetails[cot][open] summary::before{content:\"▾ \"}\ndetails[cot] summary:hover{color:var(--dim)}\ndetails[cot] p{\n  margin:0; padding:5px 12px; line-height:1.7; word-break:break-word;\n  border-top:1px dotted rgba(255,255,255,.05);\n}\n\n/* ===== 移动端 ===== */\n@media (max-width:520px){\n  h{padding:10px 11px}\n  g label>span{padding:8px 12px}\n  g label>span:hover~k,g label>input:checked~k{padding:0 12px 13px}\n  g{padding:0 10px 11px}\n  g gh{margin:0 -10px 10px; padding:11px 12px 9px}\n  g x{flex-direction:column; gap:1px; padding:5px 0}\n  g j{min-width:0; max-width:none; font-size:.88em}\n  g j::after{content:\"\"}\n  n p[dlg]{gap:7px; padding:8px 9px}\n  div[data-action]{padding:10px 11px 10px 31px}\n  div[data-action]::before{left:12px}\n  n zz zt{max-width:80vw}\n}\n\n/* ══════════════════════════════════════════════════════════════════════\n   GALGAME_LAYOUT_START · 电脑端横屏影院式 / 手机端小说式纵向流\n   平台真实结构: .max-w-2xl(672px) > .row > .is-assistant(w-fit) > 气泡(w-fit,px-4 py-3)\n                 > .space-y-3 > .rili-markdown-renderer > details[cot] h n g div[data-action]\n   两条铁律:\n     一 画面尺寸全部用显式长度算定, 绝不出现 100% 或 auto 参与 grid 轨道,\n       否则在 w-fit 祖先下会走 max-content, 被1200字正文的单行宽度撑爆\n     二 画面行高必须是确定值, 否则对话框的百分比高度会退化成 auto 并撑开整行\n   本段可整块删除以还原原纵向布局。\n   ══════════════════════════════════════════════════════════════════════ */\n\n/* ══════════════ SHOP_PANEL_START ══════════════\n   商店面板。目录是客户端展开的静态结构，AI 只写一个 ¥。\n   行首那枚 18px 方块是 16×16 点阵自造字，当遮罩用，颜色随面板 accent。\n   ════════════════════════════════════════════ */\n\n/* 页签配色：VFD 真空荧光显示屏 ZnO:Zn 磷光体 505nm 的青绿，\n   90 年代收款机计价窗就是这个颜色。\n   k 自己会把 --accent 重置回 neon（见通用标签那条），所以必须连 k 一起指定，\n   与证件面板 g f[p^=\"doc\"] k{--accent:var(--amber)} 同一写法。 */\ng f[p=\"shop\"],\ng f[p=\"shop\"] k{--accent:#8bebd3}\ng f[p=\"shop\"] k::before{content:\"NIGHT:/> run SHOP.DAT   ·   商店目录\"}\n\nsh{display:block; margin:3px 0 1px}\n\n/* 品类分隔：左标签 + 向右拖出的点线，DOS 清单的老写法 */\nsh shg{\n  display:flex; align-items:center; gap:7px;\n  margin:8px 0 2px; padding:0 1px;\n  color:var(--accent); font-family:var(--mono);\n  font-size:.8em; font-weight:700; letter-spacing:.18em;\n  text-shadow:0 0 7px color-mix(in srgb,var(--accent) 50%,transparent);\n}\nsh shg::before{content:\"[\"; opacity:.5}\nsh shg::after{\n  content:\"\"; flex:1 1 auto; height:0;\n  border-top:1px dotted color-mix(in srgb,var(--accent) 34%,transparent);\n}\nsh shg:first-child{margin-top:1px}\n\n/* 一件商品一行：图标 ｜ 品名+参数+引线 ｜ 价 */\nsh si{\n  display:grid;\n  grid-template-columns:18px minmax(0,1fr) auto;\n  column-gap:9px; align-items:baseline;\n  padding:1px 2px 2px;\n  line-height:1.62;\n}\nsh si::before{\n  content:\"\"; grid-column:1; align-self:center;\n  width:18px; height:18px;\n  background-color:var(--accent);\n  -webkit-mask:var(--ic) center/18px 18px no-repeat;\n          mask:var(--ic) center/18px 18px no-repeat;\n  opacity:.9;\n}\nsh si:hover{background:color-mix(in srgb,var(--accent) 9%,transparent)}\nsh si:hover::before{opacity:1; filter:drop-shadow(0 0 5px color-mix(in srgb,var(--accent) 60%,transparent))}\n\n/* 品名与参数同一行排，排不下时参数换行，引线跟着走 */\nsh sw{\n  grid-column:2; min-width:0;\n  display:flex; flex-wrap:wrap; align-items:baseline;\n  column-gap:9px; row-gap:0;\n}\nsh sn{\n  flex:0 0 auto;\n  color:var(--ink); font-weight:700; letter-spacing:.02em;\n}\n/* 应急采购箱当场能拿到的，挂一枚反白小章 */\nsh sq{\n  display:inline-block; margin-left:5px; padding:0 3px;\n  background:var(--accent); color:#1b3026;\n  font-family:var(--mono); font-size:.7em; font-weight:700;\n  line-height:1.4; letter-spacing:0; border-radius:1px;\n  vertical-align:1px;\n}\nsh sm{\n  flex:0 1 auto; min-width:0;\n  color:var(--dim); font-size:.86em;\n}\n/* 品名与价格之间那根点引线，DOS 价目单的标配 */\nsh sl{\n  flex:1 1 24px; min-width:12px; height:0;\n  align-self:center; margin:0 1px;\n  border-bottom:1px dotted color-mix(in srgb,var(--line) 90%,transparent);\n}\n\nsh sp{\n  grid-column:3; justify-self:end;\n  min-width:6.6em; text-align:right; white-space:nowrap;\n  color:var(--amber); font-family:var(--mono); font-weight:700;\n  font-variant-numeric:tabular-nums;\n}\nsh su{color:var(--dim); font-weight:400; font-size:.86em}\n/* 箱价与标价同一行，行高才守得住一行一件 */\nsh sb{\n  color:color-mix(in srgb,var(--accent) 78%,var(--dim));\n  font-size:.84em; font-weight:400; letter-spacing:0;\n}\nsh sb::before{content:\"·\"; margin:0 3px; opacity:.45}\n\n/* 窄屏上参数会折到第二行，引线就成了断在半空的一截，收掉 */\n@media (max-width:720px){\n  sh sl{display:none}\n  sh sw{column-gap:8px}\n}\n@media (max-width:520px){\n  sh si{column-gap:7px}\n  sh sw{column-gap:7px}\n  sh sp{min-width:5.8em}\n  sh shg{letter-spacing:.1em}\n}\n\n/* ── 33 枚 16×16 点阵自造字，当遮罩用，颜色随 --accent ── */\nsh si[k=\"g1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 3H9V5H1Z M1 7H9V9H1Z M9 2H12V11H9Z M12 6H15V10H12Z M13 10H15V13H13Z'/%3E%3C/svg%3E\")}  /* 双管猎枪 */\nsh si[k=\"g2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M6 3H10V9H6Z M12 3H14V14H12Z M1 5H6V7H1Z M10 5H12V11H10Z M14 9H15V14H14Z M11 11H12V13H11Z'/%3E%3C/svg%3E\")}  /* 左轮手枪 */\nsh si[k=\"g3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 4H11V6H1Z M3 7H8V9H3Z M11 3H15V9H11Z M11 9H14V14H11Z'/%3E%3C/svg%3E\")}  /* 泵动霰弹枪 */\nsh si[k=\"m1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M10 1H13V15H1V13H6V11H1V9H10Z'/%3E%3C/svg%3E\")}  /* 撬棍 */\nsh si[k=\"m2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 3H13V7H2Z M2 7H5V11H2Z M9 7H13V15H9Z M5 8H8V10H5Z'/%3E%3C/svg%3E\")}  /* 钉枪 */\nsh si[k=\"m3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 1H5V8H1Z M5 2H6V8H5Z M6 3H7V15H6Z M7 4H14V5H7Z M7 5H13V6H7Z M7 6H9V15H7Z M1 8H4V9H1Z'/%3E%3C/svg%3E\")}  /* 消防斧 */\nsh si[k=\"a1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 5H7V7H9V5H13V12H3Z M2 12H14V15H2Z'/%3E%3C/svg%3E\")}  /* 常规霰弹 */\nsh si[k=\"a2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 12H14V15H2Z M4 1H6V12H4Z M10 1H12V12H10Z M6 1H10V3H6Z M6 5H10V6H6Z M6 8H10V9H6Z M6 11H10V12H6Z'/%3E%3C/svg%3E\")}  /* 鹿弹 */\nsh si[k=\"a3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M7 1H9V3H7Z M6 3H10V5H6Z M5 5H11V12H5Z M4 12H12V15H4Z'/%3E%3C/svg%3E\")}  /* 独头弹 */\nsh si[k=\"a4\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 5H11V12H3Z M2 12H12V15H2Z M9 1H11V3H9Z M12 3H14V5H12Z M12 7H14V9H12Z'/%3E%3C/svg%3E\")}  /* 盐制弹药 */\nsh si[k=\"t1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 5H15V7H1Z M1 8H15V9H1Z M1 10H15V11H1Z M3 3H5V5H3Z M11 3H13V5H11Z M1 9H4V10H1Z M12 9H15V10H12Z M1 7H3V8H1Z M13 7H15V8H13Z'/%3E%3C/svg%3E\")}  /* 木板 */\nsh si[k=\"t2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 2H14V5H2Z M6 5H10V12H6Z M7 12H9V15H7Z'/%3E%3C/svg%3E\")}  /* 铁钉 */\nsh si[k=\"t3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 6H15V8H1Z M1 9H15V10H1Z M1 3H3V6H1Z M13 3H15V6H13Z M1 10H3V13H1Z M13 10H15V13H13Z M4 4H5V6H4Z M7 4H8V6H7Z M10 4H11V6H10Z M1 8H3V9H1Z M13 8H15V9H13Z M4 10H6V11H4Z M7 10H9V11H7Z M10 10H12V11H10Z M5 5H6V6H5Z M8 5H9V6H8Z M11 5H12V6H11Z M4 11H5V12H4Z M7 11H8V12H7Z M10 11H11V12H10Z'/%3E%3C/svg%3E\")}  /* 铁丝网 */\nsh si[k=\"t4\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 7H15V10H1Z M12 2H15V7H12Z M12 10H15V14H12Z M6 5H9V7H6Z M6 10H9V12H6Z M1 6H3V7H1Z M1 10H3V11H1Z'/%3E%3C/svg%3E\")}  /* 门闩 */\nsh si[k=\"t5\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 2H13V4H3Z M3 12H13V14H3Z M5 7H11V9H5Z M3 4H6V5H3Z M7 4H10V5H7Z M11 4H14V5H11Z M3 11H6V12H3Z M7 11H10V12H7Z M11 11H14V12H11Z M2 3H3V4H2Z M13 3H14V4H13Z M4 5H5V6H4Z M8 5H9V6H8Z M12 5H13V6H12Z M4 10H5V11H4Z M8 10H9V11H8Z M12 10H13V11H12Z M2 12H3V13H2Z M13 12H14V13H13Z'/%3E%3C/svg%3E\")}  /* 捕兽夹 */\nsh si[k=\"t6\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 6H12V9H2Z M2 10H12V12H2Z M2 13H12V15H2Z M2 4H9V5H2Z M12 4H14V7H12Z M2 5H4V6H2Z M7 5H9V6H7Z M2 9H3V10H2Z M11 9H12V10H11Z M2 12H3V13H2Z M11 12H12V13H11Z'/%3E%3C/svg%3E\")}  /* 汽油桶 */\nsh si[k=\"t7\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 2H13V4H3Z M6 4H10V6H6Z M5 6H11V7H12V13H4V7H5Z M6 8H10V10H6Z'/%3E%3C/svg%3E\")}  /* 食盐 */\nsh si[k=\"l1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 4H15V11H1Z M9 2H14V4H9Z M3 5H8V10H3Z M5 5H6V10H5Z M9 11H11V13H9Z M12 11H14V13H12Z'/%3E%3C/svg%3E\")}  /* 磁带录音机 */\nsh si[k=\"l2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 2H14V14H2Z M4 4H7V7H4Z M9 4H12V7H9Z M4 9H12V12H4Z'/%3E%3C/svg%3E\")}  /* 空白磁带 */\nsh si[k=\"l3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 3H4V13H2Z M4 4H6V12H4Z M6 6H13V10H6Z M13 5H15V11H13Z'/%3E%3C/svg%3E\")}  /* 手电筒 */\nsh si[k=\"l4\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 1H5V3H3Z M2 3H6V14H2Z M11 1H13V3H11Z M10 3H14V14H10Z'/%3E%3C/svg%3E\")}  /* 电池 */\nsh si[k=\"l5\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M4 1H12V4H4Z M12 1H14V3H12Z M5 4H11V15H5Z M5 6H11V8H5Z'/%3E%3C/svg%3E\")}  /* 照明弹 */\nsh si[k=\"d1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M6 2H10V4H13V14H3V4H6V2Z M7 3H9V4H7Z M7 6H9V8H11V10H9V12H7V10H5V8H7Z'/%3E%3C/svg%3E\")}  /* 急救箱 */\nsh si[k=\"d2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 4H11V13H2Z M5 7H8V10H5Z M11 6H14V8H11Z M12 8H15V11H12Z'/%3E%3C/svg%3E\")}  /* 止血带 */\nsh si[k=\"d3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 2H5V1H7V2H9V1H11V2H13V13H11V15H5V13H3Z M5 3H7V5H5Z M9 3H11V5H9Z M5 7H7V9H5Z M9 7H11V9H9Z M5 11H7V13H5Z M9 11H11V13H9Z'/%3E%3C/svg%3E\")}  /* 提神药片 */\nsh si[k=\"c1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 3H11V4H5Z M5 4H7V12H5Z M9 4H11V7H9Z M1 5H5V7H1Z M11 5H15V7H11Z M7 6H9V7H7Z M2 7H5V12H2Z M10 7H14V10H10Z'/%3E%3C/svg%3E\")}  /* 工具腰带 */\nsh si[k=\"c2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M1 1H4L8 5H5L1 2Z M2 5H14V8H2Z M3 8H13V14H3Z M5 9H7V11H5Z'/%3E%3C/svg%3E\")}  /* 帆布挎包 */\nsh si[k=\"c3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 1H9V3H2Z M2 3H6V11H2Z M6 9H14V11H6Z M3 11H5V15H3Z M10 11H12V15H10Z M2 12H3V14H2Z M5 12H6V14H5Z M9 12H10V14H9Z M12 12H13V14H12Z'/%3E%3C/svg%3E\")}  /* 手推车 */\nsh si[k=\"p1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 2H9V3H10V8H9V9H3V8H2V3H3Z M8 9H13V10H14V13H13V14H8V13H7V10H8Z'/%3E%3C/svg%3E\")}  /* 护膝护肘 */\nsh si[k=\"p2\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M4 2H7V10H4Z M9 2H12V10H9Z M1 3H4V5H1Z M7 3H9V10H7Z M12 3H15V5H12Z M1 5H3V8H1Z M13 5H15V8H13Z M4 10H6V15H4Z M10 10H12V15H10Z'/%3E%3C/svg%3E\")}  /* 加厚工装 */\nsh si[k=\"p3\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M3 4H6V6H10V4H13V15H3Z M7 8H9V13H7Z M1 9H3V11H1Z M13 9H15V11H13Z'/%3E%3C/svg%3E\")}  /* 二手防弹背心 */\nsh si[k=\"p4\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M6 1H10V4H9V7H10V8H11V9H12V15H4V9H5V8H6V7H7V4H6Z M6 10H10V12H6Z'/%3E%3C/svg%3E\")}  /* 长期营养剂 */\nsh si[k=\"x1\"]{--ic:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M4 1H9V4H4Z M3 2H4V11H3Z M9 2H10V11H9Z M2 3H3V10H2Z M10 3H11V11H10Z M1 4H2V9H1Z M4 4H5V5H4Z M8 4H9V5H8Z M11 4H12V9H11Z M4 8H5V12H4Z M8 8H9V12H8Z M5 9H8V12H5Z M11 10H14V13H11Z M14 11H15V15H14Z M12 13H14V15H12Z'/%3E%3C/svg%3E\")}  /* 放大镜 */\n\n/* ══════════════ SHOP_PANEL_END ══════════════ */\n\n/* ══════════════════════════════════════════════════════════════════════\n   RETRO_OS_LAYOUT_START · 老式操作系统窗口\n   窗口自上而下: 标题栏(gh) / 标签行(g 的 label) / 信息条(h) / 内容区(n) /\n                 行动区(div[data-action]) / 底栏(容器::after)\n   面板体(k)以标签行为参照绝对定位，向下覆盖信息条与内容区，即\"切换网页\"。\n   平台真实结构见 build_pv.js。尺寸一律显式算定，不留 auto 参与轨道。\n   本段可整块删除以还原平台默认纵向布局。\n   ══════════════════════════════════════════════════════════════════════ */\n\n@keyframes gearSpin{\n  0%{transform:translate(-50%,-50%) rotate(0deg)}\n  100%{transform:translate(-50%,-50%) rotate(360deg)}\n}\n\n/* ── 场景底图挂载点：填 url(...) 即为该区域内容区底图 ── */\nh[bg=\"desk\"]  {--scene:none}\nh[bg=\"shop\"]  {--scene:none}\nh[bg=\"pump\"]  {--scene:none}\nh[bg=\"stock\"] {--scene:none}\nh[bg=\"cold\"]  {--scene:none}\nh[bg=\"wc\"]    {--scene:none}\nh[bg=\"office\"]{--scene:none}\nh[bg=\"rest\"]  {--scene:none}\nh[bg=\"dock\"]  {--scene:none}\nh[bg=\"lot\"]   {--scene:none}\nh[bg=\"siege\"] {--scene:none}\n\n/* ══════════════ 窗口外壳，两端通用 ══════════════ */\n:is(.rili-markdown-renderer,.markdown-body):has(>h){\n  --bevelHi:#6f9b7d;          /* 立体高光边 */\n  --bevelLo:#1b3026;          /* 立体阴影边 */\n  --winBg:#2c4036;\n  --titleH:34px;\n  --infoH:74px;\n  --barH:24px;\n\n  position:relative;\n  display:flex; flex-direction:column;\n  box-sizing:border-box;\n  padding:3px; margin:0;\n  border-radius:3px;\n  border:2px solid;\n  border-color:var(--bevelHi) var(--bevelLo) var(--bevelLo) var(--bevelHi);\n  background:var(--scan),var(--winBg);\n  box-shadow:0 10px 34px rgba(0,0,0,.55),\n             inset 0 0 0 1px rgba(255,255,255,.045);\n  overflow:visible;\n}\n\n/* ── 窗口头：标题栏 + 标签行，同一块 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>g{\n  order:1; position:relative; z-index:5;\n  display:flex; flex-wrap:wrap; align-items:flex-end;\n  gap:0 2px;\n  margin:0 0 -2px; padding:0 0 0 3px;\n  background:none; box-shadow:none; border:0;\n}\n\n/* 标题栏 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh{\n  order:0; flex:1 1 100%;\n  box-sizing:border-box;\n  display:flex; align-items:center; gap:10px;\n  height:var(--titleH); width:calc(100% + 6px); max-width:calc(100% + 6px);\n  margin:-3px -3px 4px; padding:0 10px 0 11px;\n  border:0; border-radius:0;\n  background:linear-gradient(180deg,#447154 0%,#345c43 46%,#294b37 100%);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),\n             inset 0 -1px 0 rgba(0,0,0,.5);\n  font-family:var(--mono); letter-spacing:.06em;\n}\n/* 左侧程序图标 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh::before{\n  content:\"\"; flex:0 0 auto;\n  width:13px; height:13px; border-radius:2px;\n  background:linear-gradient(160deg,var(--neon),var(--neon-d) 62%,#1d4e31);\n  box-shadow:0 0 7px color-mix(in srgb,var(--neon) 55%,transparent),\n             inset 0 1px 0 rgba(255,255,255,.5);\n}\n/* 右侧三枚窗口按钮 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh::after{\n  content:\"\"; order:3; flex:0 0 auto; margin-left:10px;\n  width:56px; height:15px;\n  background:\n    linear-gradient(180deg,#4e7f5d,#33553f) left/16px 15px no-repeat,\n    linear-gradient(180deg,#4e7f5d,#33553f) center/16px 15px no-repeat,\n    linear-gradient(180deg,#9a3d47,#692c33) right/16px 15px no-repeat;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.16);\n  border-radius:2px;\n  opacity:.92;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh gb{\n  order:1; flex:0 1 auto; min-width:0;\n  color:#e4f2e7; font-size:11px; font-weight:700;\n  text-shadow:0 1px 0 rgba(0,0,0,.6);\n  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh gt{\n  order:2; flex:0 0 auto; margin-left:auto;\n  color:var(--neon); font-size:11px; letter-spacing:.1em; white-space:nowrap;\n  text-shadow:0 0 8px color-mix(in srgb,var(--neon) 45%,transparent);\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g gh gi{display:none}\n\n/* ── 标签：经典页签，选中的那枚与内容区连成一体 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span{\n  order:1; flex:0 0 auto;\n  height:27px; padding:0 13px;\n  border:1px solid; border-bottom:0;\n  border-color:var(--bevelHi) var(--bevelLo) transparent var(--bevelHi);\n  border-radius:4px 4px 0 0;\n  background:linear-gradient(180deg,#324d3f,#283f35);\n  color:var(--dim); font-size:11.5px; letter-spacing:.04em;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);\n  transform:translateY(2px);\n  transition:background .16s, color .16s, transform .14s;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span:hover{\n  background:linear-gradient(180deg,#3b5e4a,#2d493b);\n  color:var(--ink); transform:translateY(0);\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>input:checked~span{\n  background:linear-gradient(180deg,#426d51,#32543f);\n  color:var(--neon); font-weight:700; transform:translateY(0);\n  border-color:var(--neon-d) var(--bevelLo) transparent var(--neon-d);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 -2px 8px rgba(0,0,0,.35);\n}\n/* 关闭页签靠右 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g f[p=\"none\"] label>span{margin-left:auto; margin-right:34px}\n\n/* ── 页签内容：以标签行为参照向下铺开，盖住信息条与内容区 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>k{\n  position:absolute; left:0; right:0; top:100%; bottom:auto; z-index:30;\n  pointer-events:none;\n  box-sizing:border-box;\n  height:0; opacity:0; overflow:hidden;\n  margin:0; padding:0 14px;\n  border:2px solid transparent; border-radius:0 3px 3px 3px;\n  background:var(--scan),linear-gradient(180deg,#263b31,#213229);\n  box-shadow:inset 1px 1px 0 rgba(0,0,0,.5),inset -1px -1px 0 rgba(255,255,255,.05);\n  transition:height .3s cubic-bezier(.25,1,.4,1), opacity .18s ease,\n             padding .24s ease, border-color .18s ease;\n}\n@media (hover:hover){\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span:hover~k{\n  /* 预览：盖住信息条与正文的上半，正文下半必须留着 */\n  height:calc(var(--infoH,76px) + 4px + var(--proseH,430px) * .5);\n  min-height:clamp(210px,28vh,300px);\n  opacity:1;\n  padding:12px 14px; border-color:var(--bevelLo) var(--bevelHi) var(--bevelHi) var(--bevelLo);\n  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 80%,rgba(0,0,0,.45) 91%,transparent 100%);\n  mask-image:linear-gradient(180deg,#000 0,#000 80%,rgba(0,0,0,.45) 91%,transparent 100%);\n  filter:brightness(.94) saturate(.94);\n}\n}\n/* 预览时把底下的正文压暗，渐隐处透出来的字才不抢读。\n   仅在有悬停能力的宽屏生效；手机端没有预览态，压暗会白发生 */\n@media (min-width:721px) and (hover:hover){\n  :is(.rili-markdown-renderer,.markdown-body):has(>h):has(g label>span:hover)>n{\n    opacity:.26; filter:saturate(.6);\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>n{\n    transition:opacity .22s ease, filter .22s ease;\n  }\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h) g label>input:checked~k{\n  -webkit-mask-image:none; mask-image:none; filter:none; pointer-events:auto;\n  height:calc(var(--infoH,76px) + 4px + var(--proseH,430px));\n  min-height:clamp(300px,44vh,430px);\n  opacity:1; overflow-y:auto;\n  padding:12px 14px 14px;\n  border-color:var(--bevelLo) var(--bevelHi) var(--bevelHi) var(--bevelLo);\n  animation:crtOn .5s ease-out;\n}\n\n/* ── 信息条：内嵌凹槽，两行 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h{\n  order:2;\n  box-sizing:border-box;\n  display:grid;\n  grid-template-columns:auto auto 1fr auto;\n  grid-template-rows:auto auto;\n  align-content:center; align-items:center;\n  column-gap:12px; row-gap:2px;\n  height:var(--infoH,76px); margin:0 0 4px; padding:9px 12px 8px;\n  border:2px solid;\n  border-color:var(--bevelLo) var(--bevelHi) var(--bevelHi) var(--bevelLo);\n  border-radius:2px; border-left-width:2px;\n  background:var(--scan),linear-gradient(180deg,#263b31,#22332a);\n  box-shadow:none;\n  font-size:11.5px; line-height:1.4; overflow:hidden;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h ma{grid-area:1/1; font-size:11.5px}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h ti{grid-area:1/2; white-space:nowrap}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h lo{grid-area:1/3; justify-self:start; color:var(--ink)}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h en{grid-area:2/3; justify-self:start; font-size:.9em}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h po{display:none}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h dv{display:none}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h v{\n  grid-area:2/1/3/3;\n  display:flex; align-items:center; gap:8px; white-space:nowrap;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h fa{font-size:.86em}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h fr{flex:0 0 88px; max-width:88px; margin:0}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>h qu{\n  grid-area:1/4/3/5; justify-self:end; align-self:center;\n  display:flex; flex-direction:column; gap:2px; white-space:nowrap;\n}\n\n/* ── 内容区：凹槽，正文在此 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>n{\n  order:3;\n  box-sizing:border-box;\n  margin:0; height:var(--proseH,430px);\n  border:2px solid;\n  border-color:var(--bevelLo) var(--bevelHi) var(--bevelHi) var(--bevelLo);\n  border-radius:2px;\n  background:\n    var(--scene,none) center/cover no-repeat,\n    var(--scan),linear-gradient(180deg,#24382d,#203024);\n  box-shadow:none;\n  overflow:hidden;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>n ns{padding:15px 17px}\n\n/* ── 行动区 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>div[data-action]{\n  order:4; margin:4px 0 0; border-radius:2px;\n  border:1px solid; border-color:var(--bevelHi) var(--bevelLo) var(--bevelLo) var(--bevelHi);\n}\n\n/* ── 底栏 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)::after{\n  content:\"NS-TERM 93\";\n  order:9; box-sizing:border-box;\n  display:flex; align-items:center;\n  height:var(--barH); margin:4px -3px -3px; padding:0 10px;\n  border-top:1px solid rgba(255,255,255,.06);\n  background:linear-gradient(180deg,#2f483a,#263c30);\n  color:var(--faint); font-family:var(--mono);\n  font-size:8.5px; letter-spacing:.24em;\n  /* 右下角缩放纹 */\n  background-image:\n    repeating-linear-gradient(135deg,rgba(255,255,255,.10) 0 1px,transparent 1px 4px),\n    linear-gradient(180deg,#2f483a,#263c30);\n  background-size:14px 10px,100% 100%;\n  background-position:right 8px center,0 0;\n  background-repeat:no-repeat,no-repeat;\n}\n\n/* ── 值班记录：标题栏右侧的齿轮 ── */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]{\n  position:absolute; z-index:9;\n  top:calc(var(--titleH) + 5px); right:5px;\n  width:max-content; margin:0; padding:0;\n  background:none; border:0; box-shadow:none;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary{\n  position:relative; box-sizing:border-box;\n  width:26px; height:26px; margin-left:auto; padding:0;\n  border-radius:3px;\n  font-size:0; color:transparent; letter-spacing:0;\n  background:linear-gradient(180deg,#3b6049,#2a4535);\n  border:1px solid; border-color:var(--bevelHi) var(--bevelLo) var(--bevelLo) var(--bevelHi);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.1);\n  transition:box-shadow .2s ease,border-color .2s ease,background .2s ease;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary::before,\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>summary::before{\n  content:\"\";\n  position:absolute; left:50%; top:50%;\n  width:15px; height:15px;\n  transform:translate(-50%,-50%);\n  transform-origin:50% 50%;\n  background-color:var(--neon);\n  -webkit-mask:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.488.488 0 0 0-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z'/%3E%3C/svg%3E\") center/contain no-repeat;\n  mask:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.488.488 0 0 0-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z'/%3E%3C/svg%3E\") center/contain no-repeat;\n  filter:drop-shadow(0 0 5px color-mix(in srgb,var(--neon) 55%,transparent));\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary:hover::before{\n  animation:gearSpin 2.6s linear infinite;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary:hover{\n  background:linear-gradient(180deg,#44885c,#30523f);\n  border-color:var(--neon-d) var(--bevelLo) var(--bevelLo) var(--neon-d);\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]{\n  width:min(420px,calc(100% - 16px));\n  padding:0 0 8px;\n  border:2px solid;\n  border-color:var(--bevelHi) var(--bevelLo) var(--bevelLo) var(--bevelHi);\n  border-radius:3px;\n  background:var(--scan),linear-gradient(180deg,#283e32,#22332a);\n  box-shadow:0 8px 26px rgba(0,0,0,.55);\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>summary{margin:6px 6px 2px auto}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>p{margin:0 12px .5em; padding:0}\n@media (prefers-reduced-motion:reduce){\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary:hover::before{\n    animation:none; transform:translate(-50%,-50%) rotate(30deg);\n  }\n}\n\n/* ══════════════ 电脑端：窗口突破消息列并居中 ══════════════ */\n@media (min-width:721px){\n  .is-assistant:has(h[bg]){\n    --gw:clamp(640px,calc(100dvw - 380px),1000px);\n    width:100%; max-width:none; overflow:visible;\n  }\n  .is-assistant:has(h[bg])>div,\n  .is-assistant:has(h[bg]) .space-y-3{\n    width:100%; max-width:none; min-width:0;\n    margin:0; padding:0; overflow:visible;\n    background:transparent; border-color:transparent; box-shadow:none;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h){\n    width:var(--gw,900px); max-width:none;\n    margin-left:calc((100% - var(--gw)) / 2);\n    --proseH:clamp(330px,40vh,460px);\n  }\n}\n\n/* ══════════════ 手机端：窗口固定，正文窗内滚动，标签行在下方 ══════════════\n   与电脑端的差别只有三处：标题栏改用容器 ::before（因为 gh 挂在 g 里，\n   而 g 要整块移到底部）、标签行 order 排到正文之后、页签内容向上覆盖正文。\n   ═════════════════════════════════════════════════════════════════════ */\n@media (max-width:720px){\n  .is-assistant:has(h[bg]){width:100%; max-width:none}\n  .is-assistant:has(h[bg])>div,\n  .is-assistant:has(h[bg]) .space-y-3{\n    width:100%; max-width:none; min-width:0;\n    margin:0; padding:0; background:transparent; border-color:transparent;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h){\n    margin:0; padding:10px 11px; border-radius:9px;\n    --infoH:auto;\n    --proseH:clamp(280px,46vh,460px);\n  }\n\n  /* ── 标题栏：容器 ::before，程序图标与窗口按钮画在背景上 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)::before{\n    content:\"值班终端 · NIGHT SHIFT TERMINAL\";\n    order:0; box-sizing:border-box;\n    display:flex; align-items:center;\n    height:var(--titleH,34px); margin:-10px -11px 5px; padding:0 10px 0 30px;\n    color:#e4f2e7; font-family:var(--mono);\n    font-size:10.5px; font-weight:700; letter-spacing:.08em;\n    text-shadow:0 1px 0 rgba(0,0,0,.6);\n    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n    background:\n      /* 左端程序图标 */\n      linear-gradient(160deg,var(--neon),var(--neon-d) 62%,#1d4e31) left 10px center/12px 12px no-repeat,\n      /* 右端三枚窗口按钮 */\n      linear-gradient(180deg,#4e7f5d,#33553f) right 44px center/15px 14px no-repeat,\n      linear-gradient(180deg,#4e7f5d,#33553f) right 26px center/15px 14px no-repeat,\n      linear-gradient(180deg,#9a3d47,#692c33) right 8px center/15px 14px no-repeat,\n      linear-gradient(180deg,#447154 0%,#345c43 46%,#294b37 100%);\n    box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -1px 0 rgba(0,0,0,.5);\n  }\n  /* gh 的内容已由 ::before 与信息条承担，整块隐去 */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g gh{display:none}\n\n  /* ── 信息条：四行，紧凑，高度随内容 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h{\n    order:1;\n    grid-template-columns:auto minmax(0,1fr);\n    grid-template-rows:repeat(4,auto);\n    height:auto; min-height:0; row-gap:3px; column-gap:9px;\n    margin:0 0 4px; padding:8px 10px;\n    font-size:10.5px; line-height:1.42; overflow:visible;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h ma{grid-area:1/1; font-size:10.5px}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h ti{grid-area:1/2; justify-self:start}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h lo{grid-area:2/1/3/3}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h en{grid-area:3/1/4/3; font-size:.94em}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h v{grid-area:4/1/5/3; gap:7px}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h fr{flex:1 1 auto; max-width:none}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>h qu{\n    grid-area:5/1/6/3; flex-direction:column; gap:3px;\n    justify-self:start; white-space:normal; margin-top:2px;\n  }\n\n  /* ── 正文：窗口固定，内容在窗内滚动 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>n{\n    order:2;\n    height:var(--proseH,380px); min-height:0; max-height:none;\n    margin:0; overflow:hidden;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>n ns{\n    height:100%; overflow-y:auto; overscroll-behavior:contain;\n    padding:14px 14px 13px;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>n idc{top:0; bottom:0; min-height:0}\n\n  /* ── 标签行移到正文下方 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>g{\n    order:3; position:relative;\n    align-items:flex-start;\n    margin:4px 0 0; padding:0 0 0 2px;\n  }\n  /* 页签改为下挂式：圆角在下，选中的去掉上边框与上方内容连成一体 */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span{\n    height:29px; padding:0 11px; font-size:11px;\n    border:1px solid; border-top:0;\n    border-color:transparent var(--bevelLo) var(--bevelLo) var(--bevelHi);\n    border-radius:0 0 4px 4px;\n    transform:translateY(-2px);\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span:hover{transform:translateY(0)}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>input:checked~span{\n    transform:translateY(0);\n    border-color:transparent var(--bevelLo) var(--neon-d) var(--neon-d);\n    box-shadow:inset 0 -1px 0 rgba(255,255,255,.14),0 2px 8px rgba(0,0,0,.35);\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g f[p=\"none\"] label>span{margin-left:auto; margin-right:0}\n\n  /* ── 页签内容向上覆盖正文，与正文严格等高等位 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>k{\n    position:absolute; left:0; right:0;\n    top:auto; bottom:calc(100% + 4px); z-index:30;\n    pointer-events:none;\n    box-sizing:border-box;\n    height:0; max-height:none; opacity:0; overflow:hidden;\n    margin:0; padding:0 13px;\n    border:2px solid transparent; border-radius:2px;\n    transition:height .3s cubic-bezier(.25,1,.4,1), opacity .18s ease,\n               padding .24s ease, border-color .18s ease;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>span:hover~k{\n    height:0; padding:0 13px; border-color:transparent;\n    -webkit-mask-image:none; mask-image:none; filter:none;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h) g label>input:checked~k{\n    -webkit-mask-image:none; mask-image:none; filter:none; pointer-events:auto;\n    height:var(--proseH,380px); min-height:0;\n    opacity:1; overflow-y:auto;\n    padding:12px 13px 13px;\n    border-color:var(--bevelLo) var(--bevelHi) var(--bevelHi) var(--bevelLo);\n    animation:crtOn .5s ease-out;\n  }\n\n  /* ── 行动区与齿轮 ── */\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>div[data-action]{order:4}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]{\n    top:calc((var(--titleH,34px) - 24px) / 2); right:68px;   /* 标题栏内竖直居中，让开右端三枚窗口按钮 */\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary{\n    width:24px; height:24px;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot]>summary::before{\n    width:14px; height:14px;\n  }\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>summary{margin:5px 5px 2px auto}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]{\n    width:min(320px,calc(100vw - 40px));\n  }\n}\n\n/* ══════════════════ RETRO_OS_LAYOUT_END ══════════════════ */\n\n/* ══════════════ COT_PANEL_START ══════════════\n   值班记录面板。原来是一坨等宽长文，十一行挤在 420px 里读不出层次。\n   现在每一步是一行：左边一枚步骤章，右边正文；勾叉上色，组装那一步单独立出来。\n   标签由正则打好（ql / qk / qb / ok），CSS 只管排版。\n   ════════════════════════════════════════════ */\n\ndetails[cot] ql{\n  --qc:var(--neon-d);\n  display:grid; grid-template-columns:auto minmax(0,1fr);\n  column-gap:9px; align-items:start;\n  margin:0; padding:6px 12px 7px;\n  border-top:1px dotted rgba(255,255,255,.055);\n  line-height:1.66;\n}\ndetails[cot] ql:first-of-type{border-top:0}\n\n/* 步骤章：等宽、定宽、上下居中，十一枚章排下来是一条整齐的左缘 */\ndetails[cot] qk{\n  box-sizing:border-box;\n  width:4.4em; padding:1px 2px;      /* 定宽而非 min-width：Q1 是两个半角、文风锚是三个全角，\n                                        用 min-width 三者宽度各不相同，右边正文的左缘就会参差 */\n  overflow:hidden;\n  border:1px solid color-mix(in srgb,var(--qc) 46%,transparent);\n  border-radius:2px;\n  background:color-mix(in srgb,var(--qc) 15%,transparent);\n  color:var(--qc); font-family:var(--mono);\n  font-size:.86em; font-weight:700; letter-spacing:.06em;\n  text-align:center; white-space:nowrap;\n  text-shadow:0 0 6px color-mix(in srgb,var(--qc) 40%,transparent);\n}\ndetails[cot] qb{\n  min-width:0; word-break:break-word;\n  color:var(--dim); font-size:.98em;\n}\n\n/* 逐步配色：前半是推演，后半是校验，颜色由冷转暖，扫一眼就知道读到哪儿了 */\ndetails[cot] ql[s=\"Q1\"]{--qc:#b4c1ff}\ndetails[cot] ql[s=\"Q2\"]{--qc:#a7e9ff}\ndetails[cot] ql[s=\"Q3\"]{--qc:#95ffba}\ndetails[cot] ql[s=\"组装\"]{--qc:#8bebd3}\ndetails[cot] ql[s=\"Q4\"]{--qc:#e1c5ff}\ndetails[cot] ql[s=\"Q5\"]{--qc:#ffa06e}\ndetails[cot] ql[s=\"Q6\"]{--qc:#ffcb7c}\ndetails[cot] ql[s=\"Q7\"]{--qc:#d1b269}\ndetails[cot] ql[s=\"Q8\"]{--qc:#bbe1c1}\ndetails[cot] ql[s=\"Q9\"]{--qc:#799181}\ndetails[cot] ql[s=\"文风锚\"]{--qc:#ffdaa3}\n\n/* 组装是新加的一步，也是最长的一行，单独给一道左缘与底色立出来 */\ndetails[cot] ql[s=\"组装\"]{\n  background:linear-gradient(90deg,color-mix(in srgb,#8bebd3 9%,transparent),transparent 62%);\n  box-shadow:inset 2px 0 0 color-mix(in srgb,#8bebd3 62%,transparent);\n}\ndetails[cot] ql[s=\"组装\"] qb{color:var(--ink)}\n/* 文风锚收尾，与上面十步之间断一道 */\ndetails[cot] ql[s=\"文风锚\"]{border-top:1px solid color-mix(in srgb,var(--line) 85%,transparent)}\n\n/* 勾叉：过与不过一眼分开，值班记录里满屏都是这两个字符 */\nok{color:var(--neon); font-weight:700}\nok[n]{color:var(--warn)}\ndetails[cot] qb ok{margin:0 1px; text-shadow:0 0 5px color-mix(in srgb,currentColor 45%,transparent)}\n\n/* 十一行装不下 420px 的高度：桌面先把面板放宽，剩下的交给滚动。\n   本块整体排在复古窗布局之后，同特异度靠后来居上覆盖它的 420px；\n   手机那档不动，仍由复古窗的 320px 管，所以这条要圈在 min-width 里 */\n@media (min-width:721px){\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]{\n    width:min(560px,calc(100% - 16px));\n  }\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]{\n  max-height:min(72vh,560px); overflow-y:auto; overscroll-behavior:contain;\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>summary{\n  position:sticky; top:0; z-index:2;\n  background:linear-gradient(180deg,#283e32,#283e32ee);\n}\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]>ql{\n  margin:0; padding:6px 12px 7px;\n}\n@media (max-width:720px){\n  details[cot] ql{grid-template-columns:auto minmax(0,1fr); column-gap:7px; padding:5px 10px 6px}\n  details[cot] qk{width:4.2em; font-size:.8em; letter-spacing:.02em}\n  :is(.rili-markdown-renderer,.markdown-body):has(>h)>details[cot][open]{max-height:min(64vh,460px)}\n}\n/* ══════════════ COT_PANEL_END ══════════════ */\n\n/* ══════════════ NESTED_PANEL_START ══════════════\n   兜底：模型漏写某个面板的收尾 }，后面的面板就会被套进上一个面板的正文里。\n   套进去之后它的单选钮与顶层页签同名，一点就把外层取消选中，\n   而它自己又被外层那个 height:0 / overflow:hidden 的盒子裁掉——于是变成点不开的死按钮。\n   与其如此，不如就地摊平：页签退化成分节标题，内容直接展开在原地，一个字都不丢。\n   这里只兜底，不纵容：格式该修还是要修，见 FORMAT 的面板收尾铁律。\n   ═══════════════════════════════════════════════ */\n\n:is(.rili-markdown-renderer,.markdown-body) g k f{\n  display:block; width:100%; margin:9px 0 2px;\n}\n:is(.rili-markdown-renderer,.markdown-body) g k f label{display:block}\n/* 单选钮拔掉：它和顶层页签同名，留着就会互相顶掉 */\n:is(.rili-markdown-renderer,.markdown-body) g k f label>input{display:none}\n\n/* 页签退化成分节标题，样式对齐面板内既有的 -分节 标题 */\n:is(.rili-markdown-renderer,.markdown-body) g k f label>span{\n  display:block; width:auto; max-width:none;\n  height:auto; min-height:0; padding:0 0 4px; margin:0;\n  border:0; border-bottom:1px dotted color-mix(in srgb,var(--accent) 34%,transparent);\n  border-radius:0; transform:none; box-shadow:none; background:none;\n  color:var(--accent); font-size:.86em; font-weight:700; letter-spacing:.16em;\n  text-align:left; cursor:default; pointer-events:none;\n}\n:is(.rili-markdown-renderer,.markdown-body) g k f label>span::before{\n  content:\"└ \"; opacity:.6;\n}\n:is(.rili-markdown-renderer,.markdown-body) g k f[p=\"none\"] label>span{margin:0}\n\n/* 内容就地展开：脱离绝对定位与折叠态的一切 */\n:is(.rili-markdown-renderer,.markdown-body) g k f label>k{\n  position:static; inset:auto; z-index:auto;\n  width:auto; height:auto; min-height:0; max-height:none;\n  margin:0; padding:4px 0 0;\n  opacity:1; overflow:visible; transform:none;\n  border:0; border-radius:0; background:none; box-shadow:none;\n  pointer-events:auto;\n  -webkit-mask-image:none; mask-image:none; filter:none; animation:none;\n  transition:none;\n}\n/* 内联态不要终端标题栏与闪烁光标，那是浮层面板的装饰 */\n:is(.rili-markdown-renderer,.markdown-body) g k f label>k::before,\n:is(.rili-markdown-renderer,.markdown-body) g k f label>k::after{display:none}\n/* ══════════════ NESTED_PANEL_END ══════════════ */\n\n/* ══════════════ FAULT_TOLERANCE_START ══════════════\n   模型漏写结构行时的显示层兜底。逐条都是实测崩过的：\n\n   ① 漏写 ]] —— 顶栏 h 不闭合、正文容器 n 不开张，1200 字正文全被塞进顶栏，\n      而顶栏是定高 grid + overflow:hidden，实测正文可见字数直接归零。\n   ② 漏写 {{ —— 状态区容器 g 不开张，七个面板落在正文容器里，实测页签数归零。\n   ③ 漏写某个面板的 } —— 后面的面板套进上一个面板（另见 NESTED_PANEL 块）。\n\n   兜底只保内容不丢、界面不崩；格式该修还是要修，见 FORMAT 的成对闭合与面板收尾。\n   ═════════════════════════════════════════════════ */\n\n/* ① 顶栏里出现了正文段落 → 顶栏放弃定高 grid，改成普通流，把正文放出来 */\n:is(.rili-markdown-renderer,.markdown-body) h:has(p),\n:is(.rili-markdown-renderer,.markdown-body) h:has(f){\n  display:block; height:auto; min-height:0; max-height:none; overflow:visible;\n}\n:is(.rili-markdown-renderer,.markdown-body) h:has(p)>p{\n  grid-area:auto; margin:.55em 0; padding:0;\n  color:var(--ink); font-size:1rem; line-height:1.95; letter-spacing:.01em;\n}\n/* 顶栏那几个字段在退化态下仍要认得出，给它们排成一行一项 */\n:is(.rili-markdown-renderer,.markdown-body) h:has(p)>:is(ma,ti,lo,en,po,dv,v,fr,qu){\n  grid-area:auto; display:block; margin:0 0 3px;\n}\n\n/* ② ③ 面板落到了不该落的地方（正文容器里、或另一个面板的正文里）→ 就地摊平。\n   与 NESTED_PANEL 同一套写法，这里把作用域从 k 扩到 ns 与 n。 */\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f{\n  display:block; width:100%; margin:9px 0 2px;\n}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label{display:block}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>input{display:none}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>span{\n  display:block; width:auto; max-width:none;\n  height:auto; min-height:0; padding:0 0 4px; margin:0;\n  border:0; border-bottom:1px dotted color-mix(in srgb,var(--accent) 34%,transparent);\n  border-radius:0; transform:none; box-shadow:none; background:none;\n  color:var(--accent); font-size:.86em; font-weight:700; letter-spacing:.16em;\n  text-align:left; cursor:default; pointer-events:none;\n}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>span::before{content:\"└ \"; opacity:.6}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>k{\n  position:static; inset:auto; z-index:auto;\n  width:auto; height:auto; min-height:0; max-height:none;\n  margin:0; padding:4px 0 0;\n  opacity:1; overflow:visible; transform:none;\n  border:0; border-radius:0; background:none; box-shadow:none; pointer-events:auto;\n  -webkit-mask-image:none; mask-image:none; filter:none; animation:none; transition:none;\n}\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>k::before,\n:is(.rili-markdown-renderer,.markdown-body) :is(ns,n,h) f label>k::after{display:none}\n/* ══════════════ FAULT_TOLERANCE_END ══════════════ */\n\n/* ══════════════ MOBILE_FULLBLEED_START ══════════════\n   手机端把窗口铺到屏幕两边。\n\n   窗口外面套着两层平台盒子，各自吃掉一点横向空间：\n     .max-w-2xl 消息列      px-4  → 左右各 16px\n     .is-assistant>div 气泡 px-4 + 1px 边框\n   气泡那层此前已在 移动端 段里抹平（padding:0 / 背景透明），\n   剩下的 16px + 1px 就是截图里左右那两条空隙。\n\n   做法沿用「龙王传说」那张卡的思路，两条并行、互不依赖：\n     一 把消息列的左右内边距与气泡的左右边框就地抹掉；\n     二 窗口自己按视口宽定位——先把左边缘挪到父盒中线，再回拉自身一半。\n   消息列本来就在视口里水平居中，所以不论 一 是否生效，二 都正好落在\n   0 ~ 100dvw 上。变换后的盒子不越出视口，聊天区不会多出横向滚动条。\n\n   全部选择器都以 :has(…>h) 限定「这条消息装的是本卡的窗口」，\n   同页其他消息与其他卡不受影响。顶层逗号分隔而不写在括号里，\n   平台前缀化按逗号切分时每一支都能独立成立。\n   ══════════════════════════════════════════════════ */\n@media (max-width:720px){\n\n  /* 一 消息列让出左右内边距 */\n  .max-w-2xl:has(.rili-markdown-renderer>h),\n  .max-w-2xl:has(.markdown-body>h){\n    padding-left:0!important;\n    padding-right:0!important;\n    max-width:none!important;\n  }\n\n  /* 一之二 气泡让出左右边框，横向不再留描边 */\n  .is-assistant:has(h[bg])>div{\n    border-left-width:0!important;\n    border-right-width:0!important;\n    border-radius:0!important;\n    overflow:visible!important;\n  }\n\n  /* 二 窗口按视口铺平；贴边后外圆角只会漏出页面底色，一并去掉 */\n  .rili-markdown-renderer:has(>h),\n  .markdown-body:has(>h){\n    box-sizing:border-box!important;\n    width:100dvw!important;\n    max-width:100dvw!important;\n    margin-left:50%!important;\n    margin-right:0!important;\n    transform:translateX(-50%)!important;\n    border-radius:0!important;\n  }\n}\n/* ══════════════ MOBILE_FULLBLEED_END ══════════════ */\n\n/* ══════════════ RETRO_CJK_FONT_START ══════════════\n   正文换 90 年代中文电脑字体。终端外壳走 --mono（新宋体等宽），\n   这里只管正文与对白，两边同属宋体一族，观感是一整套。\n   放在样式表最后，是为了压过平台注入的默认字体，而不必到处写 !important。\n   ══════════════════════════════════════════════════ */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) n{\n  font-family:var(--cn);\n}\n/* 证件档案是打印件，同样是那个年代的宋体公文脸 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h) n idc{\n  font-family:var(--cn);\n}\n/* 行动推荐是给人读的句子，不是数值，跟正文同一套字 */\n:is(.rili-markdown-renderer,.markdown-body):has(>h)>div[data-action]{\n  font-family:var(--cn);\n}\n/* ══════════════ RETRO_CJK_FONT_END ══════════════ */\n\n/* ══════════════ MEMWC_START ══════════════\n   记忆条目末尾的字数徽标。字数是硬约束（STM 80~120、LTM 300~500、PEM 50~100），\n   做成一枚看得见的小牌子，作者一眼能看出哪条缩水了。\n   ══════════════════════════════════════════ */\ng x[ltm] wc,g x[stm] wc,g x[pem] wc,g x[dst] wc,g x[dlt] wc{\n  display:inline-block; margin-left:6px; padding:0 5px;\n  border:1px solid var(--line2); border-radius:3px;\n  background:rgba(0,0,0,.20);\n  font-family:var(--mono); font-size:.76em; line-height:1.6;\n  color:var(--faint); vertical-align:1px; white-space:nowrap;\n}\ng x[ltm] wc::after,g x[stm] wc::after,g x[pem] wc::after,g x[dst] wc::after,g x[dlt] wc::after{\n  content:\"字\"; margin-left:1px; opacity:.7;\n}\n/* ══════════════ MEMWC_END ══════════════ */\n\n/* ══════════════ PLATFORM_CHROME_START ══════════════\n   顶栏与输入栏，按值班终端同一套语言重做：同样的深绿、同样的斜面边、同样的扫描线、\n   同样的等宽宋体，装饰字用与商店图标同一规格的 16×16 点阵 SVG 当遮罩，颜色跟着 --accent 走。\n\n   平台真实结构（作者导出的页面为准，不是选择器清单里那一版）：\n     顶栏  nav.sticky.custom-styles > header.h-12.md:h-16 > #nav-left / #nav-middle / #nav-right\n           custom-styles 就挂在 nav 自己身上，所以注入的样式够不到 nav，只能从 header 往下写；\n           好在 header 就是整条栏的可视面，给它铺满底色即可完全盖住 nav 的毛玻璃。\n     输入栏 div.absolute.bottom-0 > div.max-w-2xl > form#prompt-input\n              > [data-slot=input-group][data-compact] > #prompt-input-header / #prompt-input-body / #prompt-input-footer\n           它在聊天区那个 .custom-styles 之内，注入样式够得到。\n   平台自带的 svg 图案本身改不了，只调 currentColor 与 transform。\n   底色转深之后，所有前景一律给到浅色，正文对比度不低于 7:1，图标不低于 4.5:1。\n   ══════════════════════════════════════════════════ */\n\n/* 这两处是平台外壳，拿不到卡里那套变量，就地再挂一份，取值与窗口外壳一致 */\nheader:has(#nav-left),\nform#prompt-input{\n  --cpaper:#25352a; --cpanel:#2c4036; --cline:#3c5d46;\n  --cink:#e7f2e9; --cdim:#c0cdc3; --cfaint:#9caea2;\n  --cneon:#95ffba; --cneon-d:#50c67f; --camber:#ffcb7c;\n  --cbevelHi:#5b8368; --cbevelLo:#0d1712;\n  --cmono:\"NSimSun\",\"新宋体\",\"SimSun\",\"宋体\",ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;\n  --cscan:repeating-linear-gradient(180deg,rgba(255,255,255,.028) 0 1px,transparent 1px 3px);\n  /* 点阵造字，与商店图标同规格：16×16 网格、整数坐标、只用 M L H V Z、斜线只走45° */\n  --gterm:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M2 3H14V11H2ZM3 4V10H13V4Z\"/><path d=\"M4 6H12V7H4ZM4 8H12V9H4ZM7 11H9V13H7ZM4 13H12V15H4Z\"/></svg>');\n  --gprompt:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M2 3L8 9L2 15L2 11L4 9L2 7Z\"/><path d=\"M10 5H14V13H10Z\"/></svg>');\n}\n\n/* ══ 顶栏 ══ */\nheader:has(#nav-left){\n  box-sizing:border-box;\n  background:var(--cscan),linear-gradient(180deg,#2f4438 0%,#26362b 62%,#1e2c23 100%) !important;\n  border:0 !important;\n  border-bottom:2px solid var(--cbevelLo) !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),\n             inset 0 -3px 0 rgba(0,0,0,.35),\n             0 3px 12px rgba(0,0,0,.42) !important;\n  color:var(--cink) !important;\n  font-family:var(--cmono) !important;\n}\n\n/* 中间那块本来是空的，拿来当终端铭牌：点阵监视器 + 机器名 */\nheader:has(#nav-left) #nav-middle{ min-width:0; overflow:hidden }\nheader:has(#nav-left) #nav-middle::before{\n  content:\"\";\n  flex:0 0 auto; width:15px; height:15px; margin-right:7px;\n  background:var(--cneon);\n  -webkit-mask:var(--gterm) center/contain no-repeat; mask:var(--gterm) center/contain no-repeat;\n  filter:drop-shadow(0 0 4px rgba(149,255,186,.45));\n}\nheader:has(#nav-left) #nav-middle::after{\n  content:\"NIGHT SHIFT TERMINAL\";\n  min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;\n  font-family:var(--cmono) !important;\n  font-size:11px; font-weight:700; letter-spacing:.16em;\n  color:#cfe8d6; text-shadow:0 1px 0 rgba(0,0,0,.65);\n}\n\n/* 顶栏按钮：小一号的窗口按钮，压下去有回弹 */\nheader:has(#nav-left) button{\n  border:1px solid var(--cline) !important;\n  border-radius:3px !important;\n  background:linear-gradient(180deg,#37503f,#26382d) !important;\n  color:#cfe8d6 !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -1px 0 rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.35) !important;\n  transition:background .16s ease,color .16s ease,box-shadow .16s ease,transform .06s ease !important;\n}\nheader:has(#nav-left) button:hover{\n  background:linear-gradient(180deg,#456551,#2f4739) !important;\n  color:var(--cneon) !important;\n  border-color:var(--cneon-d) !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 0 0 1px rgba(149,255,186,.28),0 2px 8px rgba(0,0,0,.42) !important;\n}\nheader:has(#nav-left) button:active{\n  transform:translateY(1px);\n  box-shadow:inset 0 2px 5px rgba(0,0,0,.5) !important;\n}\n/* 平台自带的 svg 图案改不了，只借 currentColor 与一点位移做反馈 */\nheader:has(#nav-left) button svg{ transition:transform .16s ease }\nheader:has(#nav-left) button:hover svg{ transform:scale(1.08) }\n\n/* ══ 输入栏 ══ */\nform#prompt-input{\n  background:transparent !important;\n  font-family:var(--cmono) !important;\n}\nform#prompt-input [data-slot=\"input-group\"]{\n  background:var(--cscan),linear-gradient(180deg,#2b3d32 0%,#233229 100%) !important;\n  border:2px solid !important;\n  border-color:var(--cbevelHi) var(--cbevelLo) var(--cbevelLo) var(--cbevelHi) !important;\n  border-radius:4px !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),\n             inset 0 -2px 0 rgba(0,0,0,.42),\n             0 6px 20px rgba(0,0,0,.45) !important;\n  color:var(--cink) !important;\n}\nform#prompt-input:focus-within [data-slot=\"input-group\"]{\n  border-color:var(--cneon-d) var(--cbevelLo) var(--cbevelLo) var(--cneon-d) !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),\n             0 0 0 1px rgba(149,255,186,.30),\n             0 6px 22px rgba(0,0,0,.5) !important;\n}\n\n/* 上沿的命令行铭牌，与面板里的 NIGHT:/> run ***.SYS 同一句式 */\nform#prompt-input #prompt-input-header::before{\n  content:\"NIGHT:/> INPUT.SYS\";\n  flex:0 0 100%;\n  display:flex; align-items:center; gap:6px;\n  margin:-2px -2px 5px; padding:4px 8px;\n  border-bottom:1px solid var(--cline);\n  background:linear-gradient(180deg,rgba(80,198,127,.16),rgba(80,198,127,.04));\n  font-family:var(--cmono) !important;\n  font-size:10.5px; font-weight:700; letter-spacing:.1em;\n  color:var(--cneon); text-shadow:0 0 6px rgba(149,255,186,.35);\n}\nform#prompt-input #prompt-input-header{ color:var(--cdim) !important }\n\n/* 上排功能键：模组 / 评论 / 图片 / 搜索 一律做成终端小键 */\nform#prompt-input #prompt-input-header button{\n  border:1px solid var(--cline) !important;\n  border-radius:3px !important;\n  background:linear-gradient(180deg,#33493c,#24352b) !important;\n  color:var(--cdim) !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 1px 2px rgba(0,0,0,.34) !important;\n  font-family:var(--cmono) !important;\n  transition:background .16s ease,color .16s ease,border-color .16s ease !important;\n}\nform#prompt-input #prompt-input-header button:hover{\n  background:linear-gradient(180deg,#436250,#2c4136) !important;\n  border-color:var(--cneon-d) !important;\n  color:var(--cneon) !important;\n}\n\n/* 正文输入：绿字终端，光标与选中都用霓虹 */\nform#prompt-input textarea[data-slot=\"input-group-control\"]{\n  background:transparent !important;\n  color:var(--cink) !important;\n  caret-color:var(--cneon) !important;\n  font-family:var(--cmono) !important;\n  font-size:14px !important; line-height:1.7 !important;\n}\nform#prompt-input textarea[data-slot=\"input-group-control\"]::placeholder{\n  color:var(--cfaint) !important; opacity:1 !important;\n}\nform#prompt-input textarea[data-slot=\"input-group-control\"]::selection{\n  background:var(--cneon) !important; color:#101a13 !important;\n}\n\n/* 下排：设置 / 说明 / 模型 / 回复模式，同一套小键 */\nform#prompt-input #prompt-input-footer{ color:var(--cdim) !important }\nform#prompt-input #prompt-input-footer button{\n  border:1px solid var(--cline) !important;\n  border-radius:3px !important;\n  background:linear-gradient(180deg,#33493c,#24352b) !important;\n  color:var(--cdim) !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 1px 2px rgba(0,0,0,.34) !important;\n  font-family:var(--cmono) !important;\n  transition:background .16s ease,color .16s ease,border-color .16s ease !important;\n}\nform#prompt-input #prompt-input-footer button:hover{\n  background:linear-gradient(180deg,#436250,#2c4136) !important;\n  border-color:var(--cneon-d) !important;\n  color:var(--cneon) !important;\n}\n/* 模型名那一枚要读得清，给足亮度 */\nform#prompt-input #prompt-input-footer button span{ color:inherit !important }\n\n/* 发送键：整条栏里唯一的琥珀色，一眼能找到。\n   平台在生成中会把这一枚换成「停止」，类名与尺寸不变、只有 aria-label 变，\n   所以按 data-size 锁定这一枚，再单独把停止态改成血红，两种状态一眼可分。 */\nform#prompt-input #prompt-input-footer button[data-size=\"icon-sm\"],\nform#prompt-input #prompt-input-footer button[type=\"submit\"]{\n  border:1px solid #b98430 !important;\n  background:linear-gradient(180deg,#ffd79a,#e0a34a 62%,#b8801f) !important;\n  color:#241a08 !important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 0 rgba(0,0,0,.28),0 2px 8px rgba(0,0,0,.4) !important;\n}\nform#prompt-input #prompt-input-footer button[data-size=\"icon-sm\"]:hover,\nform#prompt-input #prompt-input-footer button[type=\"submit\"]:hover{\n  background:linear-gradient(180deg,#ffe3b4,#eeb45e 62%,#c98d24) !important;\n  border-color:#e0b45e !important;\n  color:#241a08 !important;\n}\nform#prompt-input #prompt-input-footer button[data-size=\"icon-sm\"]:active,\nform#prompt-input #prompt-input-footer button[type=\"submit\"]:active{ transform:translateY(1px) }\n\n/* 生成中那一枚是「停止」，换成血红，跟发送区分开 */\nform#prompt-input #prompt-input-footer button[aria-label=\"停止\"]{\n  border:1px solid #8f3a41 !important;\n  background:linear-gradient(180deg,#e8757c,#c8434c 62%,#93262e) !important;\n  color:#2a0d10 !important;\n}\nform#prompt-input #prompt-input-footer button[aria-label=\"停止\"]:hover{\n  background:linear-gradient(180deg,#f0908f,#d4525b 62%,#a52f37) !important;\n  border-color:#c26a70 !important;\n}\n\n/* 手机上顶栏只有 48px 高，铭牌收成短名，免得把左右两组按钮挤掉 */\n@media (max-width:767px){\n  header:has(#nav-left) #nav-middle::after{ content:\"NS-TERM\"; font-size:10px; letter-spacing:.12em }\n  header:has(#nav-left) #nav-middle::before{ width:13px; height:13px; margin-right:5px }\n  form#prompt-input #prompt-input-header::before{ font-size:9.5px; letter-spacing:.06em }\n}\n/* ══════════════ PLATFORM_CHROME_END ══════════════ */\n","options":{"items":[{"order":0,"label":"差评","type":"SET-INPUT","value":"【差评】+差评内容"},{"order":1,"label":"好评","type":"SET-INPUT","value":"【好评】+好评内容"}]},"language":"zh","containsNSFW":true,"publicAccess":true,"deletedAt":null,"isAnonymous":false,"enableSafeguard":false,"defaultModelSettings":{"model":"dragonfruit_gemini_anti/gemini-3.1-pro-preview"},"totalConversations":33,"totalMessages":167,"totalCreditsUsed":304580,"totalTokensUsed":8453304,"totalPlayedUsers":17,"deeplyPlayed":3,"fixedPromptLength":15963,"lorebookLength":68637,"author":{"id":"oWVDoNCa4QtWPakJGgUTVgA3ThVEauTz","name":"XclinkS","displayUsername":"Xclink","username":"xclink"},"cardsTags":[{"tag":{"name":"可涩涩","cardsCount":209}},{"tag":{"name":"恐怖色情","cardsCount":2}},{"tag":{"name":"伪人","cardsCount":5}},{"tag":{"name":"玩法卡","cardsCount":1}},{"tag":{"name":"恐怖","cardsCount":11}}],"cardsVoices":[],"prompt":null,"promptSizeBytes":null}