{"id":"079b458c-884d-4244-85b1-598dd7528c2d","authorId":"pk5qV5nhSKnRHxAEICTe2MQMxWXcZYv1","title":"自宅警备员（简单测试版）","description":"（合租女房客的秘密）（自宅警备，老资历都懂吧？）\n搬进这间三室一厅合租公寓那天，你并没有期待什么特别的事。\n\n房东在电话里说：\"三个女生，都很好相处。\"你当时没多想。直到你打开衣柜顶层那个落灰的纸箱——前任租客留下的东西。里面是一叠说明书和一串账号密码：这套公寓的智能家居安防系统仍然绑定着旧账号，而重置选项被锁死了。\n\n换句话说，你拥有了一双合法存在于公共区域的眼睛。\n\n客厅、厨房、走廊、阳台——四个高清摄像头，带音频。卧室和浴室不在覆盖范围内。但你很快发现，前任租客在走廊的天花板夹层里留下了一个收纳盒：里面是几个未拆封的针孔摄像头和信号放大器。就像在说：\"如果你还想看得更多，工具都在这里。\"\n\n你没有扔掉它们。\n\n三位室友搬进来的那天，你坐在房间里，手机屏幕上是监控App的画面。走廊的摄像头对着三扇紧闭的卧室门，你看着她们各自拉着行李箱走进属于自己的房间——然后关门。那一刻你有种站在十字路口的错觉：你将要成为室友、朋友、还是别的什么？选择权在你手里。\n\n林知夏，二十岁，大二，学视觉传达的。她是最安静的那个，永远穿着宽大的卫衣，从客厅经过的速度像是这片公共区域铺满了地雷。但深夜的阳台上，你看到她一个人靠着栏杆发呆——那是她一天中唯一不在看手机的时刻。\n\n沈若曦，二十七岁，广告公司的客户经理。最早出门、最晚回家，周末会做一桌子菜然后问你们要不要一起吃。她看起来是三个人里最不需要帮助的——但你注意到她切菜时会突然停住，然后假装什么都没发生。\n\n方芷晴，二十六岁，后端开发工程师。戴银色细边眼镜，一天中大部分时间戴着降噪耳机坐在客厅餐桌前写代码。她的手指在机械键盘上快得像雨——但凌晨两点，你在监控里看到她从卧室出来，在客厅沙发上坐着，什么都没做。\n\n三个月过去了。你逐渐摸索出她们的作息、习惯、在哪个时段最松懈。你甚至开始在某些夜晚——趁她们都不在客厅的时段——检查走廊天花板夹层里的那个收纳盒。那些针孔摄像头还在原来的位置。\n\n你知道她们每个人都有秘密。不是因为你想知道——是因为住在同一个屋檐下，秘密会在不经意间从门缝里渗出来。一个加密相册、一个深藏的药瓶、一个深夜阳台上的背影。\n\n——故事从这里开始。你要当她们的室友、朋友、还是别的什么，你说了算。","background":"etb4lqklbabg14r2voh6knli.webp","backgroundWidth":920,"backgroundHeight":1456,"cover":"w48iabs7f2cz65fyy2bsjo92.webp","coverWidth":920,"coverHeight":1456,"introPage":"ldcolpst234z3nkajyr605ko.html","changelog":"","createdAt":"2026-07-28T14:36:24.536Z","updatedAt":"2026-07-28T15:12:14.010Z","initPublicAt":"2026-07-28T14:57:57.423Z","renderTemplate":null,"assistantRegexReplace":null,"enableMemorySchema":false,"memorySchema":null,"injectStyles":"/* ========================================================= */\n/* ===== 《自宅警备员》· builtInCss v4.0 ===== */\n/* ===== 折叠面板文字与正文对齐 + 视觉层次 + 移动端适配 ===== */\n/* ========================================================= */\n\n/* ===== 0. CSS变量 ===== */\n:root {\n  --bg-page:        #f2ece4;\n  --bg-card:        #fefcf8;\n  --bg-card2:       #f8f2e8;\n  --bg-card3:       #f0e8dc;\n  --bg-warm:        #faf4ea;\n  --border:         #d4c8b4;\n  --border-light:   #e2d8c8;\n  --border-strong:  #c0a888;\n  --text:           #3a2e22;\n  --text-dim:       #8a7864;\n  --text-bright:    #22160a;\n  --accent-warm:    #c87040;\n  --accent-rose:    #c87060;\n  --accent-gold:    #d49840;\n  --accent-teal:    #509878;\n  --rmate-a:        #d07040;\n  --rmate-a-bg:     rgba(208,112,64,0.10);\n  --rmate-a-border: rgba(208,112,64,0.22);\n  --rmate-b:        #509878;\n  --rmate-b-bg:     rgba(80,152,120,0.10);\n  --rmate-b-border: rgba(80,152,120,0.22);\n  --rmate-c:        #9870b8;\n  --rmate-c-bg:     rgba(152,112,184,0.10);\n  --rmate-c-border: rgba(152,112,184,0.22);\n  --pure-love:      #5088b8;\n  --pure-love-bg:   rgba(80,136,184,0.10);\n  --corruption:     #b84848;\n  --corruption-bg:  rgba(184,72,72,0.10);\n  --tech-green:     #40a070;\n  --tech-green-dim: rgba(64,160,112,0.10);\n  --risk-red:       #b84840;\n  --risk-red-dim:   rgba(184,72,64,0.10);\n  --shadow-card:    0 2px 8px rgba(80,50,30,0.08);\n  --shadow-pop:     0 6px 24px rgba(80,50,30,0.12);\n  --shadow-hover:   0 4px 16px rgba(80,50,30,0.10);\n  --radius-sm:      6px;\n  --radius-md:      12px;\n  --radius-lg:      18px;\n  --transition:     0.2s ease;\n  --font-mono:      'SF Mono','Cascadia Code','Consolas','Courier New',monospace;\n}\n\n/* ========================================================= */\n/* ===== 1. 通用折叠栏 ===== */\n/* ========================================================= */\ndetails {\n  display: block; background: var(--bg-card); padding: 0;\n  margin-bottom: 14px; max-width: 100%; width: 100%; box-sizing: border-box;\n  border: 1px solid var(--border); border-left: 5px solid var(--accent-warm);\n  box-shadow: var(--shadow-card); border-radius: var(--radius-md);\n  transition: box-shadow var(--transition), border-color var(--transition);\n  overflow: hidden;\n}\ndetails[open] {\n  box-shadow: var(--shadow-pop); border-color: var(--border-strong);\n}\ndetails:hover { border-left-color: var(--accent-rose); }\n\ndetails summary {\n  display: flex; align-items: center; justify-content: space-between;\n  list-style: none; cursor: pointer; position: relative;\n  background: linear-gradient(135deg, var(--bg-card2) 0%, var(--bg-warm) 100%);\n  padding: 14px 22px;\n  font-weight: 700; letter-spacing: 0.5px; color: var(--text-bright);\n  font-size: 1.05em;\n  width: 100%; max-width: 100%;\n  box-sizing: border-box; text-align: left; user-select: none;\n  transition: all var(--transition); overflow: hidden;\n  border-radius: var(--radius-md) var(--radius-md) 0 0;\n  border-bottom: 1px solid transparent;\n}\ndetails[open] summary { border-bottom-color: var(--border-light); }\ndetails summary::after {\n  content: \"▾\"; font-size: 0.78em; color: var(--accent-warm);\n  transition: transform var(--transition); margin-left: auto; font-weight: 700;\n}\ndetails summary:hover {\n  background: linear-gradient(135deg, var(--bg-card3) 0%, var(--bg-card2) 100%);\n}\ndetails[open] summary::after { transform: rotate(180deg); color: var(--accent-rose); }\ndetails summary::-webkit-details-marker { display: none; }\ndetails summary::marker { display: none; content: \"\"; }\ndetails:not([open]) summary { border-radius: var(--radius-md); }\n\n/* ↑ 核心：折叠内容基准 = 1em，与正文一致 */\n.details-body {\n  background: var(--bg-card); color: var(--text);\n  padding: 18px 22px; font-size: 1em; line-height: 1.78;\n  border-top: none;\n  border-radius: 0 0 var(--radius-md) var(--radius-md);\n}\n\n/* ========================================================= */\n/* ===== 2. 监控模块 ===== */\n/* ========================================================= */\ndetails.surveillance-details {\n  border-left-color: var(--accent-teal);\n}\ndetails.surveillance-details > summary {\n  background: linear-gradient(135deg, #f0f6f2 0%, #e8f0ea 100%);\n}\ndetails.surveillance-details > summary::after { color: var(--accent-teal); }\n\n.surveillance-body { padding: 0 !important; background: #fafdf8 !important; }\n\n.surv-overview {\n  padding: 16px 22px;\n  background: linear-gradient(180deg, #f8faf6 0%, #f4f8f0 100%);\n  border-bottom: 1px solid var(--border-light);\n}\n/* 小标签保持略小，但已从 0.8em 上调 */\n.surv-overview-title {\n  font-size: 0.88em; font-weight: 800; color: var(--text-dim);\n  letter-spacing: 1.2px; margin-bottom: 12px;\n  font-family: var(--font-mono); text-transform: uppercase;\n}\n.surv-cam-grid {\n  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 12px;\n}\n.surv-cam-slot {\n  display: flex; flex-direction: column; align-items: center; gap: 5px;\n  padding: 14px 8px; border-radius: var(--radius-sm);\n  font-size: 0.82em; text-align: center;\n  background: linear-gradient(180deg, rgba(64,160,112,0.06) 0%, rgba(64,160,112,0.10) 100%);\n  border: 1px solid rgba(64,160,112,0.20);\n}\n.surv-cam-slot .surv-cam-icon { font-size: 1.4em; }\n.surv-cam-slot .surv-cam-label { font-weight: 700; color: var(--accent-teal); letter-spacing: 0.5px; }\n.surv-cam-slot .surv-cam-status { font-size: 0.88em; color: var(--accent-teal); font-weight: 600; }\n\n.surv-hidden-status, .surv-phone-status {\n  display: flex; align-items: center; gap: 10px;\n  padding: 10px 16px; background: var(--bg-card);\n  border-radius: var(--radius-sm); border: 1px solid var(--border-light);\n  font-size: 0.88em; margin-bottom: 8px;\n}\n.surv-hidden-icon, .surv-phone-icon { font-size: 1.1em; }\n.surv-hidden-label, .surv-phone-label { color: var(--text-dim); flex: 1; font-weight: 600; }\n.surv-hidden-list { color: var(--text); font-weight: 700; }\n.surv-phone-state {\n  font-weight: 700; letter-spacing: 0.5px;\n  padding: 3px 10px; border-radius: 3px; font-size: 0.9em;\n}\n.surv-phone-state.hacked {\n  color: var(--accent-teal); background: rgba(64,160,112,0.10);\n  border: 1px solid rgba(64,160,112,0.20);\n}\n.surv-phone-state.locked {\n  color: var(--text-dim); background: var(--bg-card2);\n  border: 1px solid var(--border-light);\n}\n\n.surv-divider {\n  height: 2px;\n  background: linear-gradient(90deg, transparent 0%, var(--border-light) 20%, var(--border-light) 80%, transparent 100%);\n}\n\n.surv-cam-feeds { padding: 16px 22px; }\n\n.surv-feed {\n  margin-bottom: 12px;\n  border: 1px solid var(--border-light);\n  border-radius: var(--radius-md); overflow: hidden;\n  background: var(--bg-card); box-shadow: var(--shadow-card);\n}\n.surv-feed:last-child { margin-bottom: 0; }\n.surv-feed-header {\n  display: flex; justify-content: space-between; align-items: center;\n  padding: 9px 16px;\n  background: linear-gradient(135deg, #f8faf6 0%, #f0f4ee 100%);\n  border-bottom: 1px solid var(--border-light);\n  font-family: var(--font-mono);\n  font-size: 0.78em;\n}\n.surv-feed-label {\n  color: var(--accent-teal); letter-spacing: 0.8px; font-weight: 700;\n  display: flex; align-items: center; gap: 8px;\n}\n.surv-feed-label::before {\n  content: \"●\"; color: var(--accent-teal); font-size: 0.55em;\n  animation: recPulse 1.5s ease-in-out infinite;\n}\n@keyframes recPulse { 0%,100%{opacity:1} 50%{opacity:0.35} }\n.surv-feed-timestamp { color: var(--text-dim); letter-spacing: 0.5px; font-weight: 500; }\n.surv-feed-body { padding: 16px 18px; }\n/* ↑ 监控画面描述 → 1em */\n.surv-feed-text {\n  display: block; font-size: 1em; color: var(--text); line-height: 1.78;\n}\n\n.surv-messages {\n  padding: 16px 22px;\n  border-top: 1px solid var(--border-light);\n  background: linear-gradient(180deg, #fafdf8 0%, #f8faf6 100%);\n}\n.surv-messages-header {\n  font-size: 0.88em; font-weight: 800; color: var(--text-dim);\n  letter-spacing: 0.8px; margin-bottom: 12px; font-family: var(--font-mono);\n}\n/* surv-cam-note：每个摄像头下方的覆盖说明 */\n.surv-cam-slot .surv-cam-note {\n  font-size: 0.68em;\n  color: var(--text-dim);\n  opacity: 0.7;\n  line-height: 1.3;\n  text-align: center;\n}\n\n/* surv-hidden-detail：隐藏设备的具体位置 */\n.surv-hidden-detail {\n  font-size: 0.72em;\n  color: var(--text-dim);\n  padding: 6px 12px 6px 24px;\n  font-family: var(--font-mono);\n  line-height: 1.5;\n  opacity: 0.8;\n}\n\n/* surv-action-window：行动窗口提示 */\n.surv-action-window {\n  display: flex; align-items: center; gap: 8px;\n  padding: 8px 12px;\n  margin-top: 6px;\n  background: rgba(212,152,64,0.08);\n  border: 1px solid rgba(212,152,64,0.2);\n  border-radius: var(--radius-sm);\n  font-size: 0.72em;\n}\n.surv-action-icon { font-size: 1em; }\n.surv-action-label { color: var(--accent-gold); font-weight: 700; white-space: nowrap; }\n.surv-action-text { color: var(--text); line-height: 1.4; }\n\n/* surv-monitor-header：监视器画面区标题 */\n.surv-monitor-header {\n  font-size: 0.78em; font-weight: 800; color: var(--text-dim);\n  letter-spacing: 0.8px; margin-bottom: 10px;\n  font-family: var(--font-mono); text-transform: uppercase;\n}\n.surv-monitor-header::before {\n  content: \"▶ \";\n  color: var(--accent-teal);\n  font-size: 0.7em;\n}\n\n/* surv-feed-hid：隐藏摄像头画面（视觉区分） */\n.surv-feed-hid {\n  border-color: rgba(192,96,96,0.2) !important;\n}\n.surv-feed-hid .surv-feed-header {\n  background: linear-gradient(135deg, #fef6f4 0%, #faf0ec 100%) !important;\n}\n.surv-feed-hid .surv-feed-label {\n  color: var(--corruption) !important;\n}\n.surv-feed-hid .surv-feed-label::before {\n  color: var(--corruption) !important;\n}\n\n/* surv-sound-section：声音感知区 */\n.surv-sound-section {\n  padding: 12px 18px;\n  border-bottom: 1px solid var(--border-light);\n  background: linear-gradient(180deg, #fefdfa 0%, #faf8f2 100%);\n}\n.surv-sound-header {\n  font-size: 0.72em; font-weight: 800; color: var(--text-dim);\n  letter-spacing: 0.8px; margin-bottom: 8px; font-family: var(--font-mono);\n}\n.surv-sound-body {\n  font-size: 0.82em; color: var(--text); line-height: 1.65;\n}\n\n/* surv-msg-empty：无消息占位 */\n.surv-msg-empty {\n  font-size: 0.76em; color: var(--text-dim);\n  font-style: italic; text-align: center; padding: 10px;\n  opacity: 0.6;\n}\n\n/* ========================================================= */\n/* ===== 3. 室友档案面板 ===== */\n/* ========================================================= */\ndetails.roommate-details { border-left: 5px solid var(--accent-warm); }\ndetails.roommate-details[data-rmate=\"A\"] { border-left-color: var(--rmate-a); }\ndetails.roommate-details[data-rmate=\"B\"] { border-left-color: var(--rmate-b); }\ndetails.roommate-details[data-rmate=\"C\"] { border-left-color: var(--rmate-c); }\n\n.rmate-badge {\n  display: inline-flex; align-items: center; justify-content: center;\n  width: 30px; height: 30px; border-radius: 50%;\n  font-size: 0.9em; font-weight: 800; color: #fff; flex-shrink: 0;\n  box-shadow: 0 2px 6px rgba(0,0,0,0.12);\n}\n.rmate-badge.A { background: var(--rmate-a); }\n.rmate-badge.B { background: var(--rmate-b); }\n.rmate-badge.C { background: var(--rmate-c); }\n\n.roommate-body { background: var(--bg-card) !important; padding: 18px 22px !important; }\n\n.rmate-quickinfo { display: flex; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }\n.rmate-age, .rmate-occupation {\n  font-size: 0.9em; padding: 5px 14px; border-radius: 16px;\n  background: var(--bg-card2); color: var(--text-dim);\n  border: 1px solid var(--border-light); font-weight: 600;\n}\n.rmate-status {\n  font-size: 0.85em; padding: 5px 14px; border-radius: 16px;\n  font-weight: 700; letter-spacing: 0.5px;\n}\n.rmate-status.纯爱 {\n  background: var(--pure-love-bg); color: var(--pure-love);\n  border: 1px solid rgba(80,136,184,0.22);\n}\n.rmate-status.堕落 {\n  background: var(--corruption-bg); color: var(--corruption);\n  border: 1px solid rgba(184,72,72,0.22);\n}\n\n.rmate-section { margin-bottom: 14px; }\n/* 小标签保持可辨但不过小 */\n.rmate-section-label {\n  display: block;\n  font-size: 0.85em; font-weight: 800;\n  color: var(--text-dim); letter-spacing: 1px;\n  text-transform: uppercase; margin-bottom: 5px;\n}\n/* ↑ 正文级 */\n.rmate-text { font-size: 1em; color: var(--text); line-height: 1.78; margin: 0; }\n\n.rmate-inner-thoughts {\n  background: linear-gradient(135deg, #fef9f2 0%, #faf3e6 100%);\n  border-left: 4px solid var(--accent-gold); border-radius: 0 var(--radius-sm) var(--radius-sm) 0;\n  padding: 14px 18px; margin: 16px 0; font-style: italic;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.6);\n}\n.rmate-thoughts-label {\n  display: block;\n  font-size: 0.85em; font-weight: 800;\n  color: var(--accent-gold); letter-spacing: 0.5px; margin-bottom: 5px;\n}\n.rmate-inner-thoughts p { margin: 0; font-size: 1em; color: var(--text); line-height: 1.78; }\n\n.rmate-stat-row { margin-top: 16px; padding-top: 16px; border-top: 2px solid var(--border-light); }\n\n/* ========================================================= */\n/* ===== 4. 数值进度条 ===== */\n/* ========================================================= */\n.stat-bar { margin: 14px 0; }\n.stat-bar .stat-label {\n  display: flex; justify-content: space-between; align-items: center;\n  font-weight: 600; font-size: 1em; color: var(--text); margin-bottom: 6px; gap: 8px;\n}\n.stat-bar .stat-label span {\n  font-weight: 500; font-size: 0.96em; color: var(--text-dim); white-space: nowrap;\n}\n.stat-bar .bar-track {\n  width: 100%; height: 10px; background: var(--bg-card3);\n  border-radius: 999px; overflow: hidden;\n  box-shadow: inset 0 2px 4px rgba(0,0,0,0.08);\n  border: 1px solid var(--border-light);\n}\n.stat-bar .bar-fill {\n  height: 100%; border-radius: 999px; transition: width 0.6s ease; position: relative;\n}\n.stat-bar .bar-fill::after {\n  content: \"\"; position: absolute; top: 0; left: 0; right: 0;\n  height: 40%; background: linear-gradient(180deg, rgba(255,255,255,0.25) 0%, transparent 100%);\n  border-radius: 999px;\n}\n.stat-bar.trust .bar-fill { background: linear-gradient(90deg, #5088b8 0%, #70b0d8 100%); }\n.stat-bar.corruption .bar-fill { background: linear-gradient(90deg, #b84848 0%, #d86868 100%); }\n.stat-bar.risk-global .bar-fill { background: linear-gradient(90deg, var(--accent-gold) 0%, var(--risk-red) 100%); }\n\n/* ===== 4b. 数值总览面板 ===== */\n.stats-grid {\n  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; margin: 16px 0;\n}\n.stats-col {\n  padding: 16px; border-radius: var(--radius-md);\n  background: var(--bg-card); border: 1px solid var(--border-light);\n  box-shadow: var(--shadow-card); text-align: center;\n}\n.stats-col-header {\n  font-weight: 800; font-size: 1em; margin-bottom: 10px;\n  padding-bottom: 10px; border-bottom: 2px solid var(--border-light);\n}\n.stats-col.A .stats-col-header { color: var(--rmate-a); border-bottom-color: var(--rmate-a-border); }\n.stats-col.B .stats-col-header { color: var(--rmate-b); border-bottom-color: var(--rmate-b-border); }\n.stats-col.C .stats-col-header { color: var(--rmate-c); border-bottom-color: var(--rmate-c-border); }\n\n.stats-mini-row {\n  font-size: 0.92em; color: var(--text-dim);\n  padding: 6px 0; display: flex; justify-content: space-between; align-items: center;\n}\n.stats-mini-row span { font-weight: 700; color: var(--text); font-size: 1.05em; }\n\n.stats-detail {\n  margin-top: 14px; padding: 12px 16px;\n  background: var(--bg-card2); border-radius: var(--radius-sm); border: 1px solid var(--border-light);\n}\n.stats-detail p { margin: 0; font-size: 0.92em; color: var(--text-dim); line-height: 1.65; }\n\n/* ========================================================= */\n/* ===== 5. 时间锚点 ===== */\n/* ========================================================= */\n.time-header {\n  background: linear-gradient(160deg, #fefaf4 0%, #faf2e4 30%, #f6ece0 100%);\n  border-radius: var(--radius-lg); padding: 20px 24px; margin-bottom: 22px;\n  border: 2px solid var(--border-light);\n  box-shadow: var(--shadow-card), inset 0 1px 0 rgba(255,255,255,0.8);\n  position: relative; overflow: hidden;\n}\n.time-header::before {\n  content: \"\"; position: absolute; top: -40%; right: -10%;\n  width: 180px; height: 180px;\n  background: radial-gradient(circle, rgba(200,112,64,0.08) 0%, transparent 70%);\n  border-radius: 50%; pointer-events: none;\n}\n.time-header::after {\n  content: \"\"; position: absolute; bottom: -30%; left: -5%;\n  width: 140px; height: 140px;\n  background: radial-gradient(circle, rgba(80,152,120,0.05) 0%, transparent 70%);\n  border-radius: 50%; pointer-events: none;\n}\n.time-row-main {\n  display: flex; align-items: baseline; gap: 8px; margin-bottom: 10px;\n  position: relative; z-index: 1;\n}\n.time-icon { font-size: 1.4em; }\n.time-day { font-size: 1.35em; font-weight: 800; letter-spacing: 0.5px; color: var(--text-bright); }\n.time-sep { font-size: 1.15em; color: var(--text-dim); margin: 0 2px; }\n.time-period { font-size: 1.1em; font-weight: 700; color: var(--accent-warm); }\n.time-clock {\n  display: inline-flex; align-items: center; gap: 4px;\n  background: var(--bg-card); color: var(--text-dim);\n  font-family: var(--font-mono);\n  font-size: 0.92em; font-weight: 600;\n  padding: 4px 12px; border-radius: 14px;\n  border: 1px solid var(--border); box-shadow: 0 1px 3px rgba(0,0,0,0.04);\n  margin-left: 6px;\n}\n.time-row-loc {\n  display: flex; align-items: center; gap: 6px; margin-bottom: 6px;\n  font-size: 0.96em; position: relative; z-index: 1;\n}\n.time-loc-text { color: var(--text-dim); font-weight: 500; letter-spacing: 0.5px; }\n\n.time-row-roommates {\n  display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px;\n  position: relative; z-index: 1;\n}\n.rmate-tag {\n  font-size: 0.88em; font-weight: 700; padding: 4px 12px;\n  border-radius: 14px; letter-spacing: 0.3px; white-space: nowrap;\n}\n.rmate-tag.rmate-a { background: var(--rmate-a-bg); color: var(--rmate-a); border: 1px solid var(--rmate-a-border); }\n.rmate-tag.rmate-b { background: var(--rmate-b-bg); color: var(--rmate-b); border: 1px solid var(--rmate-b-border); }\n.rmate-tag.rmate-c { background: var(--rmate-c-bg); color: var(--rmate-c); border: 1px solid var(--rmate-c-border); }\n\n.time-row-weather, .time-row-surroundings {\n  display: flex; align-items: center; gap: 6px;\n  font-size: 0.92em; position: relative; z-index: 1;\n}\n.time-weather-text, .time-surroundings-text { color: var(--text-dim); }\n.time-surroundings-text { font-style: italic; }\n\n.time-divider {\n  height: 2px; margin: 14px 0;\n  background: linear-gradient(90deg, transparent 0%, var(--border) 15%, var(--border) 85%, transparent 100%);\n  position: relative; z-index: 1;\n}\n.time-row-budget {\n  display: flex; align-items: center; gap: 14px;\n  font-size: 0.9em; flex-wrap: wrap; position: relative; z-index: 1;\n}\n.budget-label { color: var(--text-dim); font-weight: 600; }\n.budget-item { font-weight: 700; padding: 3px 12px; border-radius: 12px; font-size: 0.96em; letter-spacing: 0.3px; }\n.budget-item.risk { color: var(--risk-red); background: var(--risk-red-dim); }\n.budget-item.cam { color: var(--accent-teal); background: var(--tech-green-dim); }\n.budget-item.route { letter-spacing: 0.5px; }\n.budget-item.route.纯爱 { color: var(--pure-love); background: var(--pure-love-bg); }\n.budget-item.route.堕落 { color: var(--corruption); background: var(--corruption-bg); }\n\n/* ========================================================= */\n/* ===== 6. 正文容器 ===== */\n/* ========================================================= */\n.narrative-p { text-indent: 2em; line-height: 1.95; margin: 0.85em 0; font-size: 1em; }\n\n.khorra-output {\n  max-width: 100%; width: 100%; box-sizing: border-box;\n  background: transparent;           /* 去背景 */\n  border-radius: 0;                  /* 去圆角 */\n  padding: 0;                        /* 去内边距 */\n  border: none;                      /* 去边框 */\n  box-shadow: none;                  /* 去阴影 */\n  line-height: 1.85; color: var(--text);\n}\n\n/* ========================================================= */\n/* ===== 7. 对话气泡 ===== */\n/* ========================================================= */\n.dialogue-box,\n.dialogue-box[data-role] {\n  position: relative; display: block;\n  border-radius: 4px 16px 16px 16px !important;\n  padding: 14px 20px 14px 18px !important;\n  margin: 16px 0 16px 10px !important;\n  text-indent: 0 !important;\n  border-left-width: 4px !important; border-left-style: solid !important;\n}\n.dialogue-box .speaker,\n.dialogue-box[data-role] .speaker {\n  display: block; font-size: 0.88em; font-weight: 800;\n  margin-bottom: 4px; letter-spacing: 0.5px; text-transform: uppercase;\n}\n.dialogue-box .dialogue-text,\n.dialogue-box[data-role] .dialogue-text {\n  display: block; font-size: 1.05em; line-height: 1.78;\n}\n\n.dialogue-box[data-role=\"rmate-a\"] {\n  background: linear-gradient(135deg, #fef8f2 0%, #faf0e4 100%) !important;\n  border-left-color: var(--rmate-a) !important;\n  box-shadow: 0 2px 10px rgba(208,112,64,0.08) !important;\n}\n.dialogue-box[data-role=\"rmate-a\"] .speaker { color: var(--rmate-a) !important; }\n.dialogue-box[data-role=\"rmate-a\"] .dialogue-text { color: #5a3a28 !important; }\n\n.dialogue-box[data-role=\"rmate-b\"] {\n  background: linear-gradient(135deg, #f2f8f4 0%, #e6f2ea 100%) !important;\n  border-left-color: var(--rmate-b) !important;\n  box-shadow: 0 2px 10px rgba(80,152,120,0.08) !important;\n}\n.dialogue-box[data-role=\"rmate-b\"] .speaker { color: var(--rmate-b) !important; }\n.dialogue-box[data-role=\"rmate-b\"] .dialogue-text { color: #2a4a3a !important; }\n\n.dialogue-box[data-role=\"rmate-c\"] {\n  background: linear-gradient(135deg, #f6f2fa 0%, #ece4f4 100%) !important;\n  border-left-color: var(--rmate-c) !important;\n  box-shadow: 0 2px 10px rgba(152,112,184,0.08) !important;\n}\n.dialogue-box[data-role=\"rmate-c\"] .speaker { color: var(--rmate-c) !important; }\n.dialogue-box[data-role=\"rmate-c\"] .dialogue-text { color: #4a2a5a !important; }\n\n.dialogue-box[data-role=\"user\"] {\n  background: linear-gradient(135deg, #f4f0ec 0%, #ede8e2 100%) !important;\n  border-left-color: #a89880 !important;\n  box-shadow: 0 2px 10px rgba(168,152,128,0.08) !important;\n}\n.dialogue-box[data-role=\"user\"] .speaker { color: #7a6a58 !important; }\n.dialogue-box[data-role=\"user\"] .dialogue-text { color: #5a4a3a !important; }\n\n/* ========================================================= */\n/* ===== 8. 内心独白 ===== */\n/* ========================================================= */\n.inner-monologue {\n  font-style: italic; color: var(--text-dim);\n  background: linear-gradient(135deg, #fef9f2 0%, #faf3e6 100%);\n  border-left: 4px solid var(--accent-gold); padding: 14px 20px; margin: 18px 0;\n  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;\n  font-size: 1em; line-height: 1.78; text-indent: 0;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.8);\n}\n\n/* ========================================================= */\n/* ===== 9. 解锁提醒 ===== */\n/* ========================================================= */\n.unlock-notice {\n  display: flex; align-items: center; justify-content: center; gap: 10px;\n  margin: 16px 0 20px 0; padding: 14px 22px;\n  background: linear-gradient(135deg, #fef8ee 0%, #faf0dc 100%);\n  border: 2px solid var(--accent-gold); border-radius: var(--radius-md);\n  font-size: 0.96em; color: var(--text);\n  box-shadow: 0 2px 10px rgba(212,152,64,0.12);\n}\n.unlock-icon { font-size: 1.25em; }\n.unlock-text strong { color: var(--accent-warm); font-weight: 800; }\n\n/* ========================================================= */\n/* ===== 10. 选择面板 ===== */\n/* ========================================================= */\n.choice-panel {\n  margin-top: 20px; padding: 20px 24px;\n  background: linear-gradient(135deg, #fefaf4 0%, #f8f2e8 100%);\n  border: 2px solid var(--border-light); border-radius: var(--radius-md);\n  box-shadow: var(--shadow-card);\n}\n.choice-header { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }\n.choice-icon { font-size: 1.15em; color: var(--accent-teal); }\n.choice-title { font-size: 1em; font-weight: 800; color: var(--text-bright); letter-spacing: 0.5px; }\n.choice-list { display: flex; flex-direction: column; gap: 10px; }\n.choice-card {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 14px; padding: 14px 18px;\n  background: var(--bg-card); border: 1px solid var(--border-light);\n  border-radius: var(--radius-sm); cursor: pointer;\n  transition: all 0.15s ease; box-shadow: 0 1px 4px rgba(0,0,0,0.03);\n}\n.choice-card:hover {\n  border-color: var(--border-strong); box-shadow: var(--shadow-hover); transform: translateX(2px);\n}\n.choice-card[data-choice=\"1\"] { border-left: 5px solid var(--rmate-a); }\n.choice-card[data-choice=\"2\"] { border-left: 5px solid var(--rmate-b); }\n.choice-card[data-choice=\"3\"] { border-left: 5px solid var(--rmate-c); }\n.choice-left { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }\n.choice-label {\n  display: inline-block; width: fit-content;\n  font-size: 0.8em; font-weight: 800; letter-spacing: 0.8px;\n  padding: 3px 10px; border-radius: 3px; text-transform: uppercase;\n}\n.choice-card[data-choice=\"1\"] .choice-label { color: var(--rmate-a); background: var(--rmate-a-bg); }\n.choice-card[data-choice=\"2\"] .choice-label { color: var(--rmate-b); background: var(--rmate-b-bg); }\n.choice-card[data-choice=\"3\"] .choice-label { color: var(--rmate-c); background: var(--rmate-c-bg); }\n.choice-text { font-size: 0.94em; color: var(--text); line-height: 1.55; }\n.choice-arrow {\n  font-size: 0.85em; color: var(--text-dim); flex-shrink: 0;\n  transition: transform 0.15s ease; font-weight: 700;\n}\n.choice-card:hover .choice-arrow { color: var(--accent-warm); transform: translateX(4px); }\n.choice-note {\n  margin-top: 12px; font-size: 0.82em; color: var(--text-dim);\n  font-style: italic; text-align: center; letter-spacing: 0.3px;\n}\n\n/* ========================================================= */\n/* ===== 11. 微信消息组件 ===== */\n/* ========================================================= */\n.wechat-msg-list { display: flex; flex-direction: column; gap: 8px; }\n.wechat-msg { display: flex; gap: 10px; margin-bottom: 8px; align-items: flex-start; }\n.wechat-msg.left { flex-direction: row; }\n.wechat-msg.right { flex-direction: row-reverse; }\n.wechat-avatar {\n  width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 0.84em; font-weight: 800; color: #fff;\n  box-shadow: 0 2px 4px rgba(0,0,0,0.10);\n}\n.wechat-bubble {\n  background: var(--bg-card); padding: 10px 14px;\n  border-radius: 3px 12px 12px 12px;\n  font-size: 0.94em; color: var(--text); line-height: 1.55; word-break: break-word;\n  box-shadow: 0 1px 3px rgba(0,0,0,0.04);\n  border: 1px solid var(--border-light);\n}\n.wechat-msg.right .wechat-bubble { border-radius: 12px 3px 12px 12px; }\n.wechat-bubble.self { background: #eaf6ee; border-color: rgba(64,160,112,0.15); }\n.wechat-name { display: block; font-size: 0.8em; color: var(--text-dim); margin-bottom: 3px; font-weight: 700; }\n\n/* ========================================================= */\n/* ===== 12. 记忆存档 ===== */\n/* ========================================================= */\n.memory-config-body {\n  font-size: 0.9em; color: var(--text-dim); line-height: 1.7;\n  font-family: var(--font-mono);\n  background: var(--bg-card2); padding: 10px 14px;\n  border-radius: var(--radius-sm); border: 1px solid var(--border-light);\n}\n.memory-table { width: 100%; border-collapse: collapse; font-size: 0.92em; }\n.memory-table th {\n  text-align: left; padding: 8px 10px; font-weight: 700;\n  color: var(--text-dim); border-bottom: 2px solid var(--border-light);\n  background: var(--bg-card2); letter-spacing: 0.5px;\n}\n.memory-table td {\n  padding: 8px 10px; border-bottom: 1px solid var(--border-light);\n  color: var(--text); vertical-align: top; line-height: 1.6;\n}\n.memory-table tr:last-child td { border-bottom: none; }\n.memory-note {\n  font-size: 0.84em; color: var(--text-dim);\n  margin-top: 10px; font-style: italic; text-align: center;\n  padding: 8px; background: var(--bg-card2); border-radius: var(--radius-sm);\n}\n\n.memory-summary {\n  background: var(--bg-card); border: 2px solid var(--border);\n  border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-card);\n}\n.memory-summary-header {\n  background: linear-gradient(135deg, var(--bg-card2) 0%, var(--bg-card3) 100%);\n  border-bottom: 1px solid var(--border);\n  padding: 12px 18px; display: flex; align-items: center; gap: 10px;\n  font-family: var(--font-mono);\n}\n.memory-summary-icon { font-size: 1.1em; }\n.memory-summary-title { font-weight: 800; color: var(--text-bright); letter-spacing: 0.5px; }\n.memory-summary-body { padding: 18px; font-size: 1em; color: var(--text); line-height: 1.8; }\n.memory-summary-footer {\n  background: var(--bg-card2); border-top: 1px solid var(--border);\n  padding: 10px 18px; font-size: 0.82em; color: var(--text-dim);\n  display: flex; justify-content: space-between; font-family: var(--font-mono);\n}\n\n/* ========================================================= */\n/* ===== 13. 思维链折叠 ===== */\n/* ========================================================= */\n.cot-exec-content {\n  font-size: 0.92em; color: var(--text-dim);\n  line-height: 1.68; white-space: pre-wrap; font-family: var(--font-mono);\n  background: var(--bg-card2); padding: 14px 18px;\n  border-radius: var(--radius-sm); border: 1px solid var(--border-light);\n}\n\n/* ========================================================= */\n/* ===== 14. 信息行 ===== */\n/* ========================================================= */\n.info-line { display: block; width: 100%; margin: 4px 0; line-height: 1.55; font-size: 0.94em; }\n.info-line .stat-detail-label { display: inline; margin-right: 4px; font-weight: 700; color: var(--text-dim); }\n\n/* ========================================================= */\n/* ===== 15. 内存嵌套折叠 ===== */\n/* ========================================================= */\ndetails.memory-config,\ndetails.memory-stm,\ndetails.memory-ltm {\n  background: transparent; border: none; border-left: none;\n  box-shadow: none; margin-bottom: 10px;\n}\ndetails.memory-config[open],\ndetails.memory-stm[open],\ndetails.memory-ltm[open] { box-shadow: none; border-color: transparent; }\ndetails.memory-config:hover,\ndetails.memory-stm:hover,\ndetails.memory-ltm:hover { border-left-color: transparent; }\n\ndetails.memory-config > summary,\ndetails.memory-stm > summary,\ndetails.memory-ltm > summary {\n  display: flex; align-items: center; gap: 8px;\n  list-style: none; cursor: pointer;\n  background: var(--bg-card2); border-radius: var(--radius-sm);\n  padding: 10px 16px; font-weight: 700; font-size: 0.92em;\n  color: var(--text-dim); letter-spacing: 0.5px;\n  border-left: none; border: 1px solid var(--border-light);\n}\ndetails.memory-config > summary::before,\ndetails.memory-stm > summary::before,\ndetails.memory-ltm > summary::before { display: none; }\ndetails.memory-config > summary::after,\ndetails.memory-stm > summary::after,\ndetails.memory-ltm > summary::after {\n  content: \"▾\"; font-size: 0.7em; color: var(--text-dim);\n  margin-left: auto; transition: transform 0.2s ease;\n}\ndetails.memory-config[open] > summary::after,\ndetails.memory-stm[open] > summary::after,\ndetails.memory-ltm[open] > summary::after { transform: rotate(180deg); }\ndetails.memory-config > summary:hover,\ndetails.memory-stm > summary:hover,\ndetails.memory-ltm > summary:hover { background: var(--bg-card3); color: var(--text-bright); }\n\n/* ========================================================= */\n/* ===== 16. 场景插图 ===== */\n/* ========================================================= */\n.scene-illustration {\n  width: 100%; max-width: 420px; margin: 20px auto;\n  border-radius: var(--radius-md); overflow: hidden;\n  box-shadow: var(--shadow-pop);\n  border: 3px solid var(--border-strong); background: var(--bg-card); text-align: center;\n}\n.scene-illustration img { width: 100%; height: auto; display: block; object-fit: cover; }\n.scene-caption {\n  display: block; padding: 10px 16px; font-size: 0.94em; font-weight: 700;\n  color: var(--text-dim);\n  background: linear-gradient(180deg, var(--bg-card) 0%, var(--bg-card2) 100%);\n  letter-spacing: 0.5px; border-top: 1px solid var(--border-light);\n}\n\n/* ========================================================= */\n/* ===== 17. 强制换行保护 ===== */\n/* ========================================================= */\ndetails, details > * {\n  word-wrap: break-word; overflow-wrap: anywhere;\n  word-break: break-word; white-space: normal; max-width: 100%;\n}\n.stat-bar, .bar-track, .bar-fill { min-width: 0; max-width: 100%; }\n.unlock-notice { flex-wrap: wrap; text-align: center; }\n\n/* ========================================================= */\n/* ===== 18. 移动端适配 ===== */\n\n/* ----- 18a. ≤768px ----- */\n@media (max-width: 768px) {\n  .khorra-output { padding: 18px 16px; }\n\n  details summary { padding: 12px 16px; font-size: 1em; }\n  .details-body { padding: 14px 16px; font-size: 0.96em; }\n\n  .time-header { padding: 16px 18px; border-radius: var(--radius-md); }\n  .time-day { font-size: 1.2em; }\n  .time-clock { font-size: 0.84em; }\n\n  .stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }\n  .surv-cam-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }\n  .surv-feed-text { font-size: 0.96em; }\n\n  .rmate-text { font-size: 0.96em; }\n  .rmate-inner-thoughts p { font-size: 0.96em; }\n\n  .dialogue-box, .dialogue-box[data-role] {\n    margin-left: 0 !important; margin-right: 0 !important;\n    padding: 12px 16px !important;\n  }\n  .choice-text { font-size: 0.9em; }\n  .memory-table { font-size: 0.88em; }\n  .memory-config-body { font-size: 0.86em; }\n  .memory-note { font-size: 0.8em; }\n  .cot-exec-content { font-size: 0.88em; }\n  .narrative-p { font-size: 0.96em; }\n}\n\n/* ----- 18b. ≤540px ----- */\n@media (max-width: 540px) {\n  .khorra-output { padding: 14px 12px; border-radius: var(--radius-md); }\n\n  details { margin-bottom: 10px; border-left-width: 4px; border-radius: var(--radius-sm); }\n  details summary { padding: 10px 14px; font-size: 0.94em; }\n  .details-body { padding: 12px 14px; font-size: 0.92em; }\n\n  .time-header { padding: 14px 14px; border-radius: var(--radius-md); margin-bottom: 16px; }\n  .time-row-main { gap: 4px; flex-wrap: wrap; margin-bottom: 8px; }\n  .time-day { font-size: 1.1em; }\n  .time-period { font-size: 0.94em; }\n  .time-clock { font-size: 0.8em; }\n  .time-row-loc { font-size: 0.88em; }\n  .rmate-tag { font-size: 0.82em; }\n  .time-row-weather, .time-row-surroundings { font-size: 0.86em; }\n  .time-row-budget { gap: 8px; font-size: 0.84em; }\n\n  .stats-grid { grid-template-columns: 1fr; gap: 8px; }\n  .stats-col {\n    display: flex; flex-wrap: wrap; align-items: center;\n    gap: 8px; padding: 12px 14px; text-align: left;\n  }\n  .stats-col-header {\n    margin-bottom: 0; padding-bottom: 0; border-bottom: none;\n    padding-right: 10px; border-right: 2px solid var(--border-light);\n    min-width: fit-content; font-size: 0.92em;\n  }\n  .stats-mini-row {\n    flex: 1; min-width: 100px;\n    justify-content: flex-start; gap: 8px;\n    padding: 2px 0; font-size: 0.86em;\n  }\n  .stats-detail p { font-size: 0.86em; }\n\n  .surv-cam-grid { grid-template-columns: repeat(2, 1fr); gap: 6px; }\n  .surv-cam-slot { font-size: 0.78em; }\n  .surv-feed-text { font-size: 0.92em; }\n  .surv-hidden-status, .surv-phone-status { font-size: 0.82em; }\n  .surv-feed-header { font-size: 0.74em; }\n\n  .rmate-text { font-size: 0.92em; }\n  .rmate-section-label { font-size: 0.8em; }\n  .rmate-inner-thoughts p { font-size: 0.92em; }\n  .rmate-thoughts-label { font-size: 0.8em; }\n\n  .stat-bar .stat-label { font-size: 0.94em; }\n  .stat-bar .stat-label span { font-size: 0.9em; }\n\n  .dialogue-box, .dialogue-box[data-role] {\n    margin: 12px 0 !important; padding: 10px 14px !important;\n    border-radius: 4px 12px 12px 12px !important;\n  }\n  .dialogue-box .dialogue-text, .dialogue-box[data-role] .dialogue-text { font-size: 0.96em; }\n\n  .inner-monologue { font-size: 0.94em; }\n  .unlock-notice { font-size: 0.9em; }\n  .choice-card { flex-direction: column; align-items: flex-start; gap: 8px; padding: 12px 14px; }\n  .choice-text { font-size: 0.88em; }\n  .choice-arrow { align-self: flex-end; }\n  .choice-note { font-size: 0.78em; }\n\n  .memory-table { font-size: 0.82em; }\n  .memory-table th:nth-child(2),\n  .memory-table td:nth-child(2) { display: none; }\n  .memory-config-body { font-size: 0.82em; }\n  .memory-note { font-size: 0.76em; }\n  .cot-exec-content { font-size: 0.84em; }\n  .narrative-p { text-indent: 1.4em; font-size: 0.94em; }\n}\n\n/* ----- 18c. ≤380px ----- */\n@media (max-width: 380px) {\n  .khorra-output { padding: 10px 8px; border-radius: var(--radius-sm); }\n\n  details summary { padding: 8px 10px; font-size: 0.88em; }\n  .details-body { padding: 10px 10px; font-size: 0.88em; }\n\n  .time-header { padding: 10px 10px; }\n  .time-day { font-size: 1em; }\n  .time-row-budget { gap: 4px; }\n  .budget-item { font-size: 0.88em; padding: 2px 6px; }\n\n  .stats-col { padding: 10px 10px; gap: 4px; }\n  .stats-col-header { font-size: 0.86em; }\n  .stats-mini-row { font-size: 0.8em; }\n\n  .surv-cam-grid { gap: 4px; }\n  .surv-cam-slot { font-size: 0.72em; padding: 8px 2px; }\n\n  .dialogue-box .dialogue-text, .dialogue-box[data-role] .dialogue-text { font-size: 0.9em; }\n\n  .memory-table { font-size: 0.76em; }\n  .choice-card { padding: 10px 10px; }\n  .choice-text { font-size: 0.84em; }\n\n  .rmate-quickinfo { flex-direction: column; gap: 4px; }\n  .rmate-age, .rmate-occupation, .rmate-status { align-self: flex-start; }\n}\n\n/* ----- 18d. 触摸友好 ----- */\n@media (hover: none) and (pointer: coarse) {\n  details summary { min-height: 44px; }\n  .choice-card { min-height: 44px; }\n  .memory-config > summary,\n  .memory-stm > summary,\n  .memory-ltm > summary { min-height: 40px; }\n}\n","options":{"items":[]},"language":"zh","containsNSFW":true,"publicAccess":true,"deletedAt":null,"isAnonymous":false,"enableSafeguard":false,"defaultModelSettings":null,"totalConversations":2,"totalMessages":4,"totalCreditsUsed":1757,"totalTokensUsed":61934,"totalPlayedUsers":1,"deeplyPlayed":0,"fixedPromptLength":16760,"lorebookLength":3230,"author":{"id":"pk5qV5nhSKnRHxAEICTe2MQMxWXcZYv1","name":"rev","displayUsername":"591691636","username":"591691636"},"cardsTags":[{"tag":{"name":"现代都市","cardsCount":564}},{"tag":{"name":"超高自由度","cardsCount":998}},{"tag":{"name":"可快餐可长线","cardsCount":622}},{"tag":{"name":"可剧情可涩涩","cardsCount":2489}},{"tag":{"name":"多角色","cardsCount":1132}},{"tag":{"name":"开局即可色","cardsCount":1463}},{"tag":{"name":"自由探索","cardsCount":1097}}],"cardsVoices":[],"prompt":null,"promptSizeBytes":null}