/* 还灯 · 2010 年前后乡镇门户站皮肤
   色板：旧纸白 #E8E3D6 / 灰雾白 #D7D8D3 / 旧站蓝 #3E5468 / 深灰 #333638
   链接蓝 #4A6B8A / 暗红 #8E2E2E / 灯黄 #C9A85A / 黑雾 #101316 / 青灰 #5E6B6C */

:root {
  color-scheme: light;
  --paper: #e8e3d6;
  --paper-2: #f4f1e6;
  --bg: #d7d8d3;
  --text: #333638;
  --muted: #5e6b6c;
  --blue: #3e5468;
  --blue-dark: #2f4152;
  --blue-line: #5a7086;
  --link: #4a6b8a;
  --rust: #8e2e2e;
  --lamp: #c9a85a;
  --black: #101316;
  --line: #9a9588;
  --line-soft: #c9c5b8;
  font-family: SimSun, "宋体", "Songti SC", "Noto Serif SC", serif;
  font-size: 14px;
  font-synthesis: none;
  letter-spacing: 0;
}

/* ===== 首章 P0 灰盒：真实电脑操作链 ===== */
.chapter-outer-entry .case-hero { min-height: 100vh; place-items: center; padding: 70px 28px 120px; }
.chapter-outer-entry .case-content-note { position: absolute; z-index: 2; right: 0; bottom: 48px; left: 0; }
.chapter-outer-entry .case-footer { position: absolute; z-index: 2; right: 0; bottom: 0; left: 0; }
.outer-computer-card { width: min(520px, calc(100vw - 40px)); padding: 34px 36px 40px; text-align: center; background: rgba(8,12,14,.78); border: 1px solid rgba(193,211,217,.28); box-shadow: 0 28px 80px rgba(0,0,0,.55); }
.outer-date { margin: 0 0 14px; color: #879397; letter-spacing: .16em; font: 12px "Microsoft YaHei",sans-serif; }
.outer-computer-card h1 { margin: 0; font-size: clamp(38px,5vw,62px); }
.outer-computer { position: relative; width: min(320px,80%); height: 190px; margin: 22px auto 14px; }
.outer-screen { display: block; height: 150px; border: 12px solid #252b2d; border-radius: 5px; background: radial-gradient(circle at 50% 45%,#111,#020303 72%); box-shadow: 0 0 32px rgba(180,212,220,.09), inset 0 0 20px #000; }
.outer-base { position: absolute; left: 29%; right: 29%; bottom: 1px; height: 13px; background: #262d2f; box-shadow: 0 -28px 0 -19px #303739; }
.outer-label { margin: 0 0 20px; color: #a8b0b2; font: 12px "Microsoft YaHei",sans-serif; letter-spacing: .12em; }
.outer-computer-card .case-primary { min-width: 150px; }
.win7-task-app.task-attention {
  animation: taskAttention .8s steps(2, end) 2;
  box-shadow: inset 0 0 0 1px rgba(255, 204, 78, .95), 0 0 10px rgba(255, 154, 31, .8);
}
@keyframes taskAttention { 50% { background: linear-gradient(#f6b844, #b85a04); } }

.chapter-phone .chapter-phone-home,
.chapter-phone .chapter-phone-photo { position: absolute; inset: 0; overflow: hidden; color: #fff; }
.chapter-phone .chapter-phone-home .home-wallpaper { position: absolute; inset: 0; opacity: .68; }
.chapter-phone-time { position: relative; z-index: 2; padding: 64px 20px 0; text-align: center; display: grid; gap: 3px; text-shadow: 0 1px 4px #000; }
.chapter-phone-time strong { font-size: 44px; font-weight: 300; }
.chapter-phone-time span { font-size: 12px; }
.chapter-phone .home-grid { position: relative; z-index: 2; margin-top: 30px; padding: 0 28px; grid-template-columns: repeat(3, 1fr); gap: 20px 8px; justify-content: center; }
.phone-usb-caption { position: absolute; z-index: 2; bottom: 34px; inset-inline: 0; text-align: center; color: rgba(255,255,255,.7); font-size: 11px; }
.chapter-phone-photo { background: #050505; display: grid; grid-template-rows: 48px 1fr 58px; }
.chapter-phone-photo header { display: grid; grid-template-columns: 50px 1fr 50px; align-items: center; background: rgba(15,15,17,.96); text-align: center; }
.chapter-phone-photo header button { border: 0; background: transparent; color: #63aaff; font-size: 30px; display: grid; place-items: center; line-height: 0; }
.chapter-phone-photo header button svg,
.app-nav .nav-back svg,
.phone-os-root .nav-back svg,
.login-card button svg {
  width: 18px;
  height: 18px;
  display: block;
}
.chapter-phone-photo header span { font-size: 11px; color: #aaa; }
.surface-photo-crop { overflow: hidden; display: flex; align-items: center; justify-content: center; background: #000; }
.surface-photo-crop img { width: 100%; height: 100%; object-fit: contain; filter: brightness(.92) contrast(1.04); }
.surface-photo-crop.is-key-photo img { width: 100%; max-width: none; object-fit: contain; filter: brightness(.9) contrast(1.04); }
.chapter-phone-photo footer { display: grid; place-content: center; text-align: center; font-size: 12px; background: rgba(15,15,17,.98); }
.chapter-phone-photo footer small { color: #929292; }
.chapter-phone .app-nav { position: relative; z-index: 22; }
.chapter-phone .app-nav .nav-back { display: grid; place-items: center; line-height: 0; }
.chapter-phone .app-nav .nav-back svg { width: 20px; height: 20px; display: block; }
.chapter-phone .app-body { padding: 12px 14px 34px; }
.chapter-phone-list { padding-top: 6px !important; }
.chapter-phone-row { width: 100%; min-height: 58px; display: flex; align-items: center; gap: 10px; padding: 8px 2px; border: 0; border-bottom: .5px solid rgba(255,255,255,.13); background: transparent; color: #fff; text-align: left; font-family: inherit; }
.chapter-phone-row > span:nth-child(2) { min-width: 0; flex: 1; }
.chapter-phone-row .row-icon { width: 38px; height: 38px; border-radius: 9px; background: linear-gradient(#778998,#52616e); font-size: 13px; }
.chapter-phone-row .row-icon.has-avatar { overflow: hidden; background: #4d555a; }
.chapter-phone-row .row-icon.has-avatar img { width: 100%; height: 100%; object-fit: cover; }
.chapter-phone-row strong, .chapter-phone-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chapter-phone-row strong { font-size: 13px; font-weight: 500; }
.chapter-phone-row small { margin-top: 3px; color: #8f8a9e; font-size: 10px; }
.chapter-phone-row em { color: #777180; font-size: 10px; font-style: normal; }
.chapter-gallery { padding: 2px 0 34px !important; }
.chapter-gallery > p { margin: 12px 14px; color: #777180; font-size: 10px; }
.chapter-gallery .photo-grid { grid-template-columns: repeat(3, 1fr); gap: 2px; }
.chapter-gallery .photo-grid button { min-width: 0; }
.chapter-photo-placeholder { position: relative; width: 100%; height: 100%; overflow: hidden; background: linear-gradient(155deg,#8694a0,#2f3941 56%,#15191c); }
.chapter-photo-placeholder::before { content: ""; position: absolute; left: -8%; right: -8%; bottom: -12%; height: 45%; transform: skewY(-7deg); background: rgba(14,20,22,.62); }
.chapter-photo-placeholder span { position: absolute; inset: 16% 24%; border: 1px solid rgba(255,255,255,.18); }
.photo-ph { position: relative; overflow: hidden; }
.photo-ph::before, .detail-thumb::before { content: ""; position: absolute; inset: 0; background: linear-gradient(145deg,rgba(255,255,255,.18),transparent 45%); }
.tone-station { background: linear-gradient(155deg,#8ba0aa 0 45%,#324552 46% 69%,#151a1e 70%); }
.tone-breakfast { background: radial-gradient(circle at 35% 55%,#e7d9ad 0 18%,transparent 19%),radial-gradient(circle at 67% 48%,#9f6d35 0 14%,transparent 15%),linear-gradient(145deg,#9c8264,#35302b); }
.tone-bus { background: linear-gradient(165deg,#a1b3b7 0 42%,#66736f 43% 66%,#2b322f 67%); }
.tone-window { background: linear-gradient(90deg,#232a2e 0 12%,#879a9f 13% 45%,#37454b 46% 82%,#1d2225 83%); }
.tone-desk { background: linear-gradient(145deg,#baa982 0 36%,#7b6a4d 37% 65%,#292b2e 66%); }
.tone-dog { background: radial-gradient(ellipse at 58% 62%,#b68843 0 16%,transparent 17%),linear-gradient(#9eac9e 0 58%,#526344 59%); }
.tone-sign { background: linear-gradient(165deg,#9aa7a3 0 45%,#49605b 46% 73%,#242b29 74%); }
.tone-pavilion { background: linear-gradient(150deg,#a3aaa4 0 48%,#5b625e 49% 70%,#7e2f28 71% 78%,#272b29 79%); }
.tone-west-road { background: #36403d; }
.tone-steps { background: repeating-linear-gradient(170deg,#5d625e 0 18px,#3f4441 19px 36px); }
.tone-accidental { background: radial-gradient(circle at 78% 24%,#4b4f51,transparent 18%),#08090a; }
.chapter-call-list > div, .chapter-browser-history > div { padding: 11px 4px; border-bottom: .5px solid rgba(255,255,255,.13); }
.chapter-call-list strong, .chapter-call-list small, .chapter-browser-history strong, .chapter-browser-history small { display: block; }
.chapter-call-list strong, .chapter-browser-history strong { color: #f4f2f7; font-size: 13px; font-weight: 500; }
.chapter-call-list small, .chapter-browser-history small { margin-top: 4px; color: #837e8d; font-size: 10px; }
.chapter-call-list .missed strong { color: #d96868; }
.chapter-browser-history > p { margin: 3px 4px 7px; color: #777180; font-size: 10px; }
.songyan-contact { padding: 18px 16px 84px !important; color: #eee; text-align: center; }
.songyan-contact > img { width: 78px; height: 78px; border-radius: 20px; object-fit: cover; }
.songyan-contact h2 { margin: 9px 0 2px; font-size: 20px; }
.songyan-contact > p { margin: 0 0 16px; color: #aaa3b8; }
.songyan-contact dl { display: grid; grid-template-columns: 92px minmax(0,1fr); margin: 0; border-top: 1px solid rgba(255,255,255,.09); text-align: left; }
.songyan-contact dt, .songyan-contact dd { margin: 0; border-bottom: 1px solid rgba(255,255,255,.07); padding: 9px 4px; font-size: 12px; }
.songyan-contact dt { color: #888298; }
.phone-voice-record { margin-top: 16px; border: 1px solid rgba(255,255,255,.1); border-radius: 6px; padding: 12px; background: rgba(0,0,0,.18); text-align: left; }
.phone-voice-record strong, .phone-voice-record small { display: block; }
.phone-voice-record small { margin: 4px 0 9px; color: #8e879c; }
.phone-voice-record audio { width: 100%; height: 34px; }

.chapter-explorer { position: relative; height: 100%; min-height: 430px; background: #fff; color: #1c1c1c; font: 13px "Segoe UI", "Microsoft YaHei", sans-serif; }
.explorer-toolbar { height: 42px; display: grid; grid-template-columns: auto minmax(240px, 1fr) minmax(150px, 28%); align-items: center; gap: 6px; padding: 5px 8px; border-bottom: 1px solid #b8c5d0; background: linear-gradient(#f9fbfd, #e6edf4); }
.explorer-nav { display: flex; align-items: center; gap: 3px; }
.explorer-nav button {
  width: 28px;
  min-width: 28px;
  height: 28px;
  min-height: 28px;
  display: grid;
  place-items: center;
  line-height: 0;
  border: 1px solid #aab8c4;
  border-radius: 3px;
  padding: 0;
  color: #2c5570;
  background: linear-gradient(#fff,#dce7f0);
}
.explorer-nav button:disabled { opacity: .5; }
.explorer-nav button svg { width: 14px; height: 14px; display: block; }
.explorer-address { height: 28px; display: flex; align-items: center; gap: 4px; padding: 0 8px; border: 1px solid #9aabb9; background: #fff; overflow: hidden; }
.explorer-address button { border: 0; background: transparent; padding: 3px 5px; color: #173d5d; white-space: nowrap; }
.explorer-address input { width: 100%; min-width: 0; height: 100%; border: 0; padding: 0; outline: 0; color: #173d5d; background: transparent; box-shadow: none; font: 12px "Segoe UI", "Microsoft YaHei", sans-serif; }
.explorer-search {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 28px;
  border: 1px solid #9aabb9;
  padding: 0 8px;
  color: #6b7f8c;
  background: #fff;
}
.explorer-search svg { width: 13px; height: 13px; flex: 0 0 auto; color: #6b7f8c; }
.explorer-search input { width: 100%; height: 100%; border: 0; padding: 0; color: #8b8b8b; background: transparent; box-shadow: none; }
.explorer-commandbar { height: 34px; display: flex; align-items: center; gap: 2px; padding: 2px 8px; border-bottom: 1px solid #c7d0d8; background: linear-gradient(#f9fbfc,#e8eef3); }
.explorer-commandbar button { min-width: 58px; height: 27px; border: 1px solid transparent; background: transparent; color: #273b4b; font: inherit; cursor: pointer; }
.explorer-commandbar button:not(:disabled):hover { border-color: #a9bed0; background: linear-gradient(#fff,#dae9f5); }
.explorer-commandbar button:disabled { color: #aaa; cursor: default; }
.explorer-commandbar span { min-width: 0; margin-left: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #777; font-size: 12px; }
.explorer-main { display: grid; grid-template-columns: 176px 1fr; height: calc(100% - 76px); min-height: 354px; }
.explorer-main aside { padding: 8px 0; border-right: 1px solid #cfd8df; background: linear-gradient(90deg,#eef5fa,#f5f9fc); overflow-y: auto; }
.explorer-nav-group { margin-bottom: 2px; }
.explorer-nav-caption { display: block; padding: 4px 12px 2px; color: #5a7a8e; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .3px; }
.explorer-main aside button { display: block; width: 100%; padding: 5px 12px 5px 20px; border: 0; background: transparent; color: #163d5e; text-align: left; font-size: 12px; }
.explorer-main aside button:hover { background: #dcecf9; outline: 1px solid #bdd5e7; }
.explorer-main aside button.active { background: #c8e0f4; outline: 1px solid #9ec5e0; font-weight: 600; }
.explorer-files { overflow: auto; padding: 18px 22px 36px; }
.explorer-files h2 { margin: 0 0 10px; padding-bottom: 5px; color: #2c6b99; font-size: 13px; font-weight: 500; border-bottom: 1px solid #d8e1e8; }
.explorer-files h2:not(:first-child) { margin-top: 26px; }
.drive-list { display: grid; grid-template-columns: repeat(auto-fill,minmax(270px,1fr)); gap: 10px; }
.drive-row { display: grid; grid-template-columns: 58px 1fr; align-items: center; padding: 8px; border: 1px solid transparent; background: transparent; text-align: left; }
.drive-row:hover { border-color: #8ec3e7; background: #e8f5ff; }
.drive-icon {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  color: #5e91b7;
  line-height: 0;
}
.drive-icon svg { width: 40px; height: 40px; display: block; }
.drive-row > span:last-child { display: grid; gap: 4px; min-width: 0; align-content: center; }
.drive-row i { display: block; height: 12px; border: 1px solid #8e9aa3; background: #fff; padding: 1px; }
.drive-row i b { display: block; height: 100%; background: linear-gradient(90deg,#20a7db,#55d5f3); }
.drive-row small, .file-grid small, .photo-file small, .download-list small { color: #6b6b6b; font-weight: 400; }
.drive-row.portable .drive-icon { color: #414b54; }
.drive-row.portable.phantom { opacity: .82; }
.drive-row.portable.phantom .drive-icon { filter: grayscale(.72); }
.file-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 12px; border-bottom: 1px solid #d8e1e8; }
.file-heading h2 { border: 0; margin: 0; }
.file-heading span { padding-bottom: 6px; color: #777; }
.file-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(140px,1fr)); gap: 10px; }
.file-grid button { display: grid; grid-template-columns: 48px 1fr; grid-template-rows: 1fr 1fr; align-items: center; min-height: 64px; border: 1px solid transparent; background: transparent; text-align: left; }
.file-grid .static-folder { display: grid; grid-template-columns: 48px 1fr; grid-template-rows: 1fr 1fr; align-items: center; min-height: 64px; padding: 1px 6px; border: 1px solid transparent; }
.file-grid .static-folder .folder-large { grid-row: 1 / 3; }
.file-grid .static-folder small { color: #6b6b6b; }
.file-grid button:hover { border-color: #7db7df; background: #e8f5ff; }
.folder-large { position: relative; grid-row: 1 / 3; width: 42px; height: 29px; border: 1px solid #b87813; border-radius: 2px; background: linear-gradient(#ffd86a,#e8a430); box-shadow: inset 0 1px rgba(255,255,255,.55); }
.folder-large::before { content: ""; position: absolute; left: 3px; top: -7px; width: 20px; height: 9px; border: 1px solid #b87813; border-bottom: 0; border-radius: 2px 2px 0 0; background: #efb73d; }
.photo-file-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(145px,1fr)); gap: 12px; }
.photo-file { min-width: 0; min-height: 142px; display: grid; grid-template-rows: 92px auto auto; gap: 3px; padding: 7px; border: 1px solid transparent; background: transparent; color: #222; text-align: left; }
button.photo-file:hover { border-color: #74acd2; background: #e9f5ff; }
.photo-file img, .photo-file > span { width: 100%; height: 92px; object-fit: cover; background: linear-gradient(135deg,#d6dce1,#f8f8f8); border: 1px solid #ccd3d9; }
.photo-file strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.muted-file { opacity: .72; }
.download-list { display: grid; }
.download-list > * { display: grid; grid-template-columns: 44px 1fr; padding: 8px 10px; border: 1px solid transparent; background: transparent; color: #222; text-align: left; }
.download-list > *:hover { border-color: #83b9df; background: #e9f5ff; }
.download-list > * span { grid-row: 1/3; font-size: 28px; }
.download-list .file-type { width: 30px; height: 34px; display: grid; place-items: center; color: #fff; font-size: 10px; font-weight: 700; border-radius: 2px; background: linear-gradient(#4ba2d9,#176398); box-shadow: 0 1px 2px #999; }
.download-list .file-type.web { border-radius: 50%; font: italic 700 24px Georgia,serif; background: radial-gradient(circle at 35% 30%,#7ed8ff,#0879c8 58%,#064d8a); }
.download-list .file-type.txt { color: #444; background: linear-gradient(#fff,#dce6ee); border: 1px solid #8f9da8; }
.download-list .file-type.img { background: linear-gradient(#78a64c,#365b2e); }
.download-list .file-type.pdf { background: linear-gradient(#df6a5e,#98291f); }
.download-list .file-type.audio { background: linear-gradient(#9b77c2,#563d78); }
.explorer-detail-header, .explorer-detail-row { display: grid; grid-template-columns: minmax(240px,1fr) 150px 110px 76px; align-items: center; min-height: 28px; }
.explorer-detail-header { padding: 0 8px 4px 38px; border-bottom: 1px solid #cbd6df; color: #5d6670; font-size: 12px; }
.explorer-detail-header button { height: 24px; padding: 0 5px; border: 0; border-right: 1px solid #d8e0e6; background: transparent; color: inherit; text-align: left; font: inherit; }
.explorer-detail-header button:hover { background: linear-gradient(#fff,#e5f1f8); }
.explorer-detail-list { min-width: 620px; }
.explorer-detail-row { width: 100%; padding: 3px 8px; border: 1px solid transparent; background: transparent; color: #222; text-align: left; font: inherit; }
.explorer-detail-row:hover { border-color: #8fc2e5; background: #eaf6ff; }
.explorer-detail-row.selected { border-color: #66a7d5; background: #d9efff; }
.explorer-detail-row > strong { display: flex; align-items: center; min-width: 0; padding-left: 34px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; }
.explorer-detail-row > small { color: #555; white-space: nowrap; }
.detail-thumb { position: absolute; width: 24px; height: 22px; margin-left: 2px; overflow: hidden; border: 1px solid #adb9c2; }
.detail-thumb img { width: 100%; height: 100%; object-fit: cover; }
.detail-thumb.file-type { display: grid; place-items: center; color: #fff; border-radius: 1px; border-color: #7990a0; background: linear-gradient(#4ba2d9,#176398); font-size: 7px; font-weight: 700; }
.detail-thumb.file-type.web { border-radius: 50%; font: italic 700 16px Georgia,serif; background: radial-gradient(circle at 35% 30%,#7ed8ff,#0879c8 58%,#064d8a); }
.detail-thumb.file-type.txt { color: #444; background: linear-gradient(#fff,#dce6ee); }
.detail-thumb.file-type.img { background: linear-gradient(#78a64c,#365b2e); }
.detail-thumb.file-type.pdf { background: linear-gradient(#df6a5e,#98291f); }
.detail-thumb.file-type.audio { background: linear-gradient(#9b77c2,#563d78); }
.detail-thumb.file-type.sheet { background: linear-gradient(#57a776,#276944); }

.explorer-context-menu { position: fixed; z-index: 95; width: 166px; padding: 3px 2px; border: 1px solid #979797; background: #f6f6f6; box-shadow: 2px 2px 6px rgba(0,0,0,.32); }
.explorer-context-menu[hidden] { display: none; }
.explorer-context-menu button { width: 100%; padding: 6px 24px; border: 0; background: transparent; color: #222; text-align: left; font: 12px "Segoe UI","Microsoft YaHei",sans-serif; }
.explorer-context-menu button:hover { background: #d8ebfa; }
.explorer-context-menu > div { height: 1px; margin: 2px 4px; background: #d2d2d2; }

.explorer-modal-backdrop { position: absolute; z-index: 80; inset: 0; display: grid; place-items: center; background: rgba(15,28,38,.12); }
.explorer-properties { width: min(390px,calc(100% - 28px)); border: 1px solid #5f7689; background: #f4f4f4; box-shadow: 0 8px 30px rgba(0,0,0,.35); }
.explorer-properties > header { height: 34px; display: flex; align-items: center; padding-left: 10px; color: #102536; background: linear-gradient(#e8f6ff,#c5e3f5); border-bottom: 1px solid #8ca6b8; }
.explorer-properties > header strong { flex: 1; font-weight: 500; }
.explorer-properties > header button {
  align-self: stretch;
  width: 42px;
  display: grid;
  place-items: center;
  border: 0;
  color: #fff;
  background: linear-gradient(#dd8376,#b93e31);
}
.explorer-properties > header button svg { width: 11px; height: 11px; display: block; }
.properties-body { padding: 18px; }
.properties-file { display: grid; grid-template-columns: 42px 1fr; align-items: center; gap: 10px; padding-bottom: 14px; border-bottom: 1px solid #ccc; }
.properties-file .file-type { width: 34px; height: 38px; display: grid; place-items: center; color: #fff; background: linear-gradient(#4ba2d9,#176398); font-size: 9px; }
.properties-body dl { display: grid; grid-template-columns: 92px minmax(0,1fr); gap: 7px 4px; margin: 16px 0; }
.properties-body dt { color: #555; }
.properties-body dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.properties-body > label { margin-right: 18px; color: #555; }
.explorer-properties > footer { display: flex; justify-content: flex-end; gap: 7px; padding: 0 14px 14px; }
.explorer-properties > footer button { min-width: 72px; padding: 5px 12px; border: 1px solid #7b8d9a; background: linear-gradient(#fff,#dce7ee); }

.chapter-photo-viewer { height: 100%; min-height: 430px; display: grid; grid-template-rows: minmax(0,1fr) 38px 42px; background: #111; }
.photo-stage { position: relative; min-height: 0; display: flex; align-items: center; justify-content: center; overflow: hidden; background: radial-gradient(circle,#282828,#090909 75%); }
.photo-stage img { max-width: 90%; max-height: 90%; object-fit: contain; box-shadow: 0 2px 22px #000; transform-origin: center; transition: transform 120ms ease-out; user-select: none; }
.chapter-photo-viewer.return-photo-near .photo-stage::after {
  content: "";
  position: absolute;
  right: 6.5%;
  bottom: 7%;
  width: 16px;
  height: 28px;
  border-radius: 48% 48% 42% 42%;
  background: rgba(235, 238, 225, .18);
  box-shadow: 0 0 9px rgba(238, 241, 228, .14);
  filter: blur(.5px);
  pointer-events: none;
}
.viewer-toolbar { min-width: 0; display: flex; align-items: center; justify-content: center; gap: 4px; padding: 4px 8px; color: #222; background: linear-gradient(#fafafa,#d8d8d8); border-top: 1px solid #777; border-bottom: 1px solid #aaa; }
.viewer-toolbar button { width: 30px; height: 27px; display: grid; place-items: center; padding: 0; border: 1px solid transparent; border-radius: 2px; color: #26343d; background: transparent; }
.viewer-toolbar button:hover:not(:disabled) { border-color: #8da7b7; background: linear-gradient(#fff,#dceaf2); }
.viewer-toolbar button:disabled { color: #9ca4a9; opacity: .62; }
.viewer-toolbar button svg { width: 16px; height: 16px; }
.viewer-toolbar output { min-width: 46px; text-align: center; font-size: 12px; }
.viewer-separator { width: 1px; height: 21px; margin: 0 5px; background: #adb3b7; box-shadow: 1px 0 #fff; }
.chapter-photo-viewer footer { display: grid; grid-template-columns: 50px 1fr 50px; align-items: center; color: #e5e5e5; background: linear-gradient(#292929,#111); text-align: center; }
.chapter-photo-viewer footer button {
  width: 36px;
  height: 30px;
  min-height: 30px;
  justify-self: center;
  display: grid;
  place-items: center;
  border: 1px solid transparent;
  border-radius: 3px;
  background: transparent;
  color: #fff;
}
.chapter-photo-viewer footer button:hover {
  border-color: rgba(255,255,255,.28);
  background: rgba(255,255,255,.1);
}
/* J01 不做频闪跳脸：放大细看时照片缓慢沉暗并留在微暗状态，
   惊吓来自玩家自己发现画面里的人影比刚才更近，而不是画面扑向玩家 */
.folk-photo-jump .chapter-photo-viewer .photo-stage img { animation: folk-photo-jump .95s ease-out both; }
@keyframes folk-photo-jump {
  0% { filter: none; }
  38% { filter: brightness(.7) contrast(1.12); }
  100% { filter: brightness(.93) contrast(1.05); }
}
.chapter-photo-viewer footer button svg { width: 15px; height: 15px; }
.phantom-photo-viewer { height: 100%; min-height: 430px; display: grid; grid-template-rows: minmax(0,1fr) 42px; background: #090b0c; }
.phantom-photo-stage { display: grid; place-items: center; overflow: hidden; padding: 28px; background: radial-gradient(circle at 50% 40%,#1a2024 0,#07090a 70%); }
.phantom-desktop-capture { position: relative; width: min(82%,760px); aspect-ratio: 16/9; overflow: hidden; border: 1px solid #20282d; background: linear-gradient(145deg,#23597a,#0c3048 68%,#071b27); box-shadow: 0 0 0 1px #000,0 14px 44px #000; filter: saturate(.55) contrast(1.08); }
.phantom-desktop-capture > .station-desktop-preview { position: absolute; inset: 0; min-height: 0; margin: 0; border: 0; }
.phantom-lamp { position: absolute; z-index: 3; left: 50%; top: 15%; width: 9.5%; aspect-ratio: .72; transform: translateX(-50%); border: 1px solid rgba(255,255,255,.75); border-radius: 46% 46% 38% 38%; background: radial-gradient(ellipse at center,rgba(255,255,244,.92) 0 13%,rgba(230,239,225,.46) 14% 40%,rgba(220,230,222,.08) 42% 68%,transparent 70%); box-shadow: 0 0 24px rgba(231,240,228,.38); }
.phantom-lamp::before { content:""; position:absolute; left:50%; bottom:100%; width:1px; height:30%; background:#d9dfdd; }
.phantom-lamp::after { content:""; position:absolute; left:50%; top:100%; width:1px; height:32%; background:#d9dfdd; box-shadow:-2px 7px 0 -0.5px #d9dfdd,2px 10px 0 -0.5px #d9dfdd; }
.phantom-photo-viewer footer { display:grid; grid-template-columns:50px 1fr 50px; align-items:center; color:#e5e5e5; background:linear-gradient(#292929,#111); text-align:center; }
.phantom-photo-viewer footer button { height:100%; border:0; border-radius:0; color:#e5e5e5; background:transparent; box-shadow:none; }
.phantom-photo-viewer footer button:hover { background:rgba(255,255,255,.08); }
.phantom-photo-viewer footer svg { width:15px; height:15px; }

.chapter-audio-viewer { height: 100%; min-height: 430px; display: grid; grid-template-columns: 260px minmax(0,1fr); grid-template-rows: 1fr 44px; gap: 0 30px; align-items: center; padding: 38px 44px 0; color: #eef4f7; background: radial-gradient(circle at 32% 38%,#3f5868,#17252d 68%,#0d151a); }
.audio-player-art { position: relative; width: 220px; aspect-ratio: 1; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.24); background: linear-gradient(145deg,#8fa1aa,#3f5058); box-shadow: 0 12px 32px rgba(0,0,0,.35); }
.audio-player-art span { width: 92px; height: 92px; border-radius: 50%; background: radial-gradient(circle,#d7dfe3 0 11%,#27343a 12% 28%,#afbec6 29% 31%,#27343a 32% 48%,#9eafb7 49% 51%,#27343a 52%); }
.audio-player-art i { position: absolute; width: 3px; height: 130px; background: rgba(255,255,255,.22); transform: rotate(42deg); }
.audio-player-copy { min-width: 0; }
.audio-player-copy h2 { margin: 0 0 8px; overflow-wrap: anywhere; font-size: 21px; font-weight: 400; }
.audio-player-copy p, .audio-player-copy small { color: #b8c6cc; }
.audio-player-copy audio { width: min(520px,100%); margin: 24px 0 12px; }
.audio-facts { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 5px 10px; max-width: 560px; margin: 18px 0 12px; padding: 12px; border: 1px solid rgba(255,255,255,.16); background: rgba(0,0,0,.18); color: #c8d2d7; font-size: 12px; }
.audio-facts dt { color: #83939b; }
.audio-facts dd { margin: 0; }
.chapter-audio-viewer > footer { grid-column: 1/-1; align-self: end; margin: 0 -44px; padding: 8px 14px; background: rgba(0,0,0,.34); }
.chapter-audio-viewer > footer button, .chapter-document-viewer footer button, .file-viewer-empty button { padding: 5px 14px; border: 1px solid #778995; background: linear-gradient(#fff,#d9e4eb); color: #222; }
.chapter-document-viewer { height: 100%; min-height: 430px; display: grid; grid-template-rows: 38px minmax(0,1fr) 30px; background: #5c6266; }
.document-page-stage { min-height: 0; overflow: auto; padding: 24px; background: #63696d; }
.document-page-stage img { display: block; height: auto; margin: 0 auto; background: #fff; box-shadow: 0 3px 18px rgba(0,0,0,.5); }
.document-page-error { display: grid; place-content: center; gap: 5px; color: #e6ecef; text-align: center; }
.document-page-error span { color: #c2cbd0; font-size: 12px; }
.document-viewer-toolbar { justify-content: flex-start; border-top: 0; }
.document-viewer-toolbar label { display: flex; align-items: center; gap: 5px; font-size: 12px; }
.document-viewer-toolbar input { width: 38px; height: 22px; padding: 1px 4px; border: 1px solid #8698a5; background: #fff; color: #222; text-align: center; }
.chapter-document-viewer footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 5px 12px; color: #eee; background: #25292c; font-size: 12px; }
.file-viewer-empty { height: 100%; display: grid; place-content: center; justify-items: center; gap: 18px; background: #f4f4f4; }
.empty-folder-copy { margin: 34px 12px; color: #777; }
.media-error { width: min(520px,100%); margin: 24px 0 12px; padding: 16px 18px; border: 1px solid rgba(255,255,255,.18); background: rgba(0,0,0,.22); }
.media-error strong, .media-error span { display: block; }
.media-error span { margin-top: 5px; color: #b8c6cc; font-size: 12px; }

.chapter-inline-document { height: 100%; min-height: 430px; display: grid; grid-template-rows: 38px 1fr; background: #777b7f; }
.document-toolbar, .sheet-toolbar { display: flex; align-items: center; gap: 18px; padding: 5px 10px; border-bottom: 1px solid #aeb8c0; background: linear-gradient(#fafcfd,#e5edf3); color: #3d4b55; }
.document-toolbar button, .sheet-toolbar button, .chapter-text-viewer footer button { padding: 4px 13px; border: 1px solid #8fa0ad; background: linear-gradient(#fff,#dce7ee); color: #222; }
.document-canvas { overflow: auto; padding: 26px; }
.paper-document { width: min(680px,calc(100% - 24px)); min-height: 780px; margin: 0 auto; padding: 74px 72px; background: #f7f5ed; color: #181818; box-shadow: 0 4px 20px rgba(0,0,0,.42); font: 16px/2 "SimSun","Microsoft YaHei",serif; }
.paper-document h1 { margin: 0 0 46px; text-align: center; font-size: 25px; letter-spacing: 0; }
.paper-document p { margin: 0 0 22px; }
.paper-document .doc-sign { margin-top: 70px; text-align: right; }
.paper-document table { width: 100%; border-collapse: collapse; margin: 24px 0; font-size: 14px; }
.paper-document th, .paper-document td { padding: 8px; border: 1px solid #555; text-align: left; }

.chapter-sheet-viewer { height: 100%; min-height: 430px; display: grid; grid-template-rows: 38px 29px 31px minmax(0,1fr) 28px 26px; background: #e9edef; color: #202020; }
.sheet-name { display: flex; align-items: center; padding: 0 12px; border-bottom: 1px solid #aeb8c0; background: #f8fbfc; font-weight: 600; }
.sheet-formula { display: grid; grid-template-columns: 58px 30px minmax(0,1fr); align-items: center; border-bottom: 1px solid #aab3b9; background: #f7f9fa; font-size: 12px; }
.sheet-formula output { align-self: stretch; display: grid; place-items: center; border-right: 1px solid #bdc6cb; }
.sheet-formula span { color: #4f5960; text-align: center; font: italic 13px Georgia,serif; }
.sheet-formula input { align-self: stretch; min-width: 0; border: 0; border-left: 1px solid #c4cbcf; padding: 3px 8px; background: #fff; color: #202020; }
.sheet-grid { overflow: auto; padding: 0; background: #eef1f2; }
.sheet-grid table { min-width: 760px; border-collapse: separate; border-spacing: 0; background: #fff; font: 13px "Segoe UI","Microsoft YaHei",sans-serif; }
.sheet-grid th, .sheet-grid td { min-width: 120px; height: 30px; padding: 5px 8px; border: 1px solid #aeb9bf; text-align: left; }
.sheet-grid th { background: linear-gradient(#f8fbfc,#dce5e8); font-weight: 500; }
.sheet-grid thead th { position: sticky; top: 0; z-index: 2; padding: 0; text-align: center; }
.sheet-grid thead th span { display: block; border-bottom: 1px solid #bbc5ca; color: #68757c; font-size: 10px; }
.sheet-grid .sheet-corner, .sheet-grid .sheet-row-number { min-width: 38px; width: 38px; text-align: center; color: #68757c; }
.sheet-grid .sheet-row-number { position: sticky; left: 0; z-index: 1; }
.sheet-grid tr:nth-child(even) td { background: #f9fbf9; }
.sheet-grid td { outline: 0; cursor: cell; }
.sheet-grid td.selected { position: relative; background: #fff !important; box-shadow: inset 0 0 0 2px #217346; }
.sheet-note { width: fit-content; margin: 24px 0 0 36px; padding: 10px 18px; color: #5b361d; background: #fff7d6; border: 1px solid #d7c48d; transform: rotate(-1deg); font-family: "KaiTi","Microsoft YaHei",sans-serif; }
.sheet-tabs { display: flex; align-items: end; gap: 1px; padding: 2px 8px 0 44px; border-top: 1px solid #aab3b9; background: #e4e8ea; }
.sheet-tabs button { min-width: 78px; height: 25px; padding: 2px 10px; border: 1px solid #aab3b9; border-bottom: 0; background: #d7dddf; color: #455158; font-size: 11px; }
.sheet-tabs button.active { border-top: 2px solid #217346; background: #fff; color: #111; }
.chapter-sheet-viewer > footer { display: flex; align-items: center; justify-content: space-between; padding: 4px 12px; border-top: 1px solid #aab3b9; background: #edf2f4; color: #56636b; font-size: 12px; }

@media (max-width: 760px), (max-height: 620px) {
  .chapter-photo-viewer, .chapter-document-viewer, .chapter-sheet-viewer { min-height: 340px; }
  .viewer-toolbar { justify-content: flex-start; overflow-x: auto; }
  .chapter-photo-viewer footer span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

.chapter-text-viewer { height: 100%; min-height: 430px; display: grid; grid-template-rows: 28px 1fr 34px; background: #fff; color: #111; }
.chapter-text-viewer .notepad-menu { border-bottom: 1px solid #d4d4d4; }
.chapter-text-viewer pre { margin: 0; padding: 8px 10px; overflow: auto; white-space: pre-wrap; font: 14px/1.55 Consolas,"Microsoft YaHei",monospace; }
.chapter-text-viewer footer { display: flex; align-items: center; justify-content: space-between; padding: 4px 8px; border-top: 1px solid #d4d4d4; background: #f4f4f4; color: #555; font-size: 12px; }

.offline-file-page { min-height: 100%; padding: 0 0 42px; background: #fff; color: #333; }
.legacy-tour-page, .local-notice-page { width: min(850px,calc(100% - 40px)); margin: 0 auto; padding: 24px 34px 60px; font: 14px/1.8 Arial,"Microsoft YaHei",sans-serif; }
.legacy-tour-page { border-left: 1px solid #d8ddd6; border-right: 1px solid #d8ddd6; }
.legacy-site, .local-notice-page > header { margin: 0 -34px 24px; padding: 12px 34px; color: #f2f4e8; background: #48614f; font-size: 18px; }
.legacy-tour-page h1, .local-notice-page h1 { margin: 20px 0 8px; color: #263d2b; font-size: 25px; font-weight: 500; }
.legacy-date { color: #888; font-size: 12px; }
.legacy-tour-page dl { display: grid; grid-template-columns: 82px 1fr; margin: 26px 0; border-top: 1px solid #ddd; }
.legacy-tour-page dt, .legacy-tour-page dd { margin: 0; padding: 8px; border-bottom: 1px solid #ddd; }
.legacy-tour-page dt { color: #657364; background: #f2f5f0; }
.local-notice-page h2 { margin-top: 28px; color: #365e7d; font-size: 17px; border-bottom: 1px solid #ccdbe6; }
.local-notice-page blockquote { margin: 18px 0; padding: 12px 16px; border-left: 4px solid #8fa9bb; background: #f1f5f8; color: #4b555d; }
.local-message-page { width: min(760px,calc(100% - 40px)); margin: 0 auto; padding: 28px 34px 60px; font: 14px/1.7 Arial,"Microsoft YaHei",sans-serif; }
.local-message-page > header { margin: -28px -34px 24px; padding: 12px 34px; color: #eef5f2; background: #49645a; }
.message-sender { display: grid; grid-template-columns: 90px 1fr; gap: 14px; padding: 14px; border: 1px solid #d8dfdc; background: #f5f8f7; }
.message-sender strong { color: #24664f; font-size: 18px; }
.message-sender span { color: #6b7470; font-size: 12px; }
.local-message-page blockquote { margin: 24px 0; padding: 14px 18px; border-left: 3px solid #7c9f91; background: #f4f7f6; }
.broken-attachment { margin-top: 18px; padding: 28px; border: 1px dashed #aeb9b5; color: #808783; background: #f7f8f8; text-align: center; }

.douban-page { min-height: 100%; padding: 0 24px 40px; color: #4b4b4b; background: #fff; font: 13px Arial,"Microsoft YaHei",sans-serif; }
.douban-page > header { height: 36px; margin: 0 -24px 24px; padding: 0 28px; display: flex; align-items: center; gap: 24px; background: #f2f7f5; border-bottom: 1px solid #d9e8e3; color: #567; }
.douban-page > header strong { color: #16845b; font: 700 22px Georgia,serif; }
.group-cover { max-width: 950px; height: 150px; margin: 0 auto 14px; overflow: hidden; background: #dce5e1; }
.group-cover img { width: 100%; height: 100%; object-fit: cover; object-position: center 52%; }
.douban-group-head { display: flex; gap: 14px; align-items: center; max-width: 950px; margin: auto; padding-bottom: 18px; border-bottom: 1px solid #e2e2e2; }
.douban-group-head h1 { margin: 0 0 7px; color: #087b55; font-size: 24px; font-weight: 500; }
.douban-group-head p { margin: 0; color: #999; }
.group-avatar { width: 62px; height: 62px; object-fit: cover; border-radius: 4px; box-shadow: 0 0 0 1px #d3d3d3; }
.douban-page > main { max-width: 950px; margin: 18px auto; display: grid; grid-template-columns: minmax(0,1fr) 220px; gap: 34px; }
.douban-page h2 { font-size: 16px; color: #087b55; }
.douban-search { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.douban-search input { flex: 1; min-width: 200px; padding: 6px 8px; border: 1px solid #c8d8d2; font-size: 13px; }
.douban-search button { padding: 6px 16px; border: 1px solid #0a8; background: #0a8; color: #fff; cursor: pointer; }
.douban-search-hint { width: 100%; margin: 4px 0 0; color: #999; font-size: 11px; }
.douban-topic { width: 100%; display: grid; grid-template-columns: 58px minmax(0,1fr); gap: 10px; align-items: center; margin: 0; padding: 9px 4px; border: 0; border-bottom: 1px dashed #ddd; background: transparent; text-align: left; color: #3377aa; font: inherit; }
.douban-topic > img { width: 58px; height: 42px; display: block; object-fit: cover; background: #edf3f0; border: 1px solid #e0e7e4; }
.douban-topic .topic-no-image { width: 58px; height: 42px; display: block; background: transparent; border: 0; }
.douban-topic > span:last-child { min-width: 0; }
.douban-topic strong { font-weight: 400; }
.douban-topic strong, .douban-topic small { display: block; }
.douban-topic small { margin-top: 5px; color: #999; }
.douban-topic.faded { opacity: .76; }
.douban-source-link { display: block; margin: 16px 0; padding: 10px 12px; border: 1px solid #d7e4df; border-radius: 0; color: #3377aa; background: #f6faf8; text-align: left; font: inherit; box-shadow: none; }
.douban-source-link:hover { border-color: #9dbdb0; background: #edf6f2; }
.douban-page aside { border-left: 1px solid #eee; padding-left: 20px; color: #777; }
.snapshot-note { color: #aaa; }
.douban-thread h1 { margin: 2px 0 8px; color: #444; font-size: 22px; font-weight: 500; }
.thread-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; }
.thread-heading > span { flex: 0 0 auto; color: #999; font-size: 12px; }
.thread-path { color: #3377aa; }
.thread-author { display: flex; gap: 10px; align-items: center; color: #999; }
.thread-author img { width: 32px; height: 32px; border-radius: 3px; object-fit: cover; }
.thread-author strong { color: #3377aa; }
.thread-copy { line-height: 1.85; }
.douban-thread figure { margin: 18px 0; width: 240px; }
.douban-thread figure img { width: 100%; border: 1px solid #ddd; }
.douban-thread figcaption { padding-top: 4px; color: #999; }
.douban-reply { display: grid; grid-template-columns: 38px minmax(0,1fr); gap: 10px; padding: 13px 6px; border-top: 1px solid #e5e5e5; }
.douban-reply > img { width: 38px; height: 38px; object-fit: cover; border-radius: 3px; }
.douban-reply > div { min-width: 0; color: #aaa; }
.douban-reply > div > div { display: flex; align-items: center; gap: 10px; }
.douban-reply strong { color: #3377aa; font-weight: 400; }
.douban-reply time { margin-left: auto; }
.douban-reply p { margin: 9px 0 2px; line-height: 1.65; }
.douban-reply.reply-thirteen { margin-top: 6px; border: 1px solid #ddd; background: #f8f8f8; animation: replyAppear 1.2s ease both; }
.reply-empty-avatar { width: 38px; height: 38px; display: block; border: 1px solid #ededed; border-radius: 3px; background: #fff; }
.reply-photo-attachment { width: min(360px, 100%); min-height: 74px; display: grid; grid-template-columns: 88px minmax(0, 1fr); align-items: center; gap: 11px; margin-top: 10px; border: 1px solid #d8d8d8; border-radius: 2px; padding: 5px; color: #555; background: #fff; box-shadow: none; text-align: left; }
.reply-photo-attachment:hover { border-color: #b8c9c2; background: #f7faf9; }
.reply-photo-attachment img { width: 88px; height: 66px; display: block; object-fit: cover; background: #ececec; }
.reply-photo-attachment span { min-width: 0; }
.reply-photo-attachment strong, .reply-photo-attachment small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reply-photo-attachment strong { color: #3377aa; font-weight: 400; }
.reply-photo-attachment small { margin-top: 6px; color: #999; }
@keyframes replyAppear { from { opacity: 0; } to { opacity: 1; } }
.douban-reply.reply-thirteen.is-locked { display: block; border-style: dashed; background: #fafafa; cursor: pointer; padding: 10px 14px; }
.douban-reply.reply-thirteen.is-locked:hover { background: #f0f0f0; }
.reply-lock-slot { display: flex; align-items: center; gap: 12px; width: 100%; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
.reply-lock-icon { width: 22px; height: 22px; flex-shrink: 0; border-radius: 50%; border: 1px solid #bbb; position: relative; }
.reply-lock-icon::before { content: ""; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; border: 1px solid #999; border-radius: 50%; transform: translate(-50%, -60%); background: #fff; }
.reply-lock-icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 10px; height: 6px; border: 1px solid #999; border-radius: 2px; transform: translate(-50%, 30%); background: #ddd; }
.reply-lock-slot strong { display: block; color: #888; font-weight: 400; font-size: 13px; }
.reply-lock-slot small { display: block; margin-top: 3px; color: #aaa; font-size: 11px; }
.audio-source-goto { margin-left: 10px; padding: 2px 8px; font-size: 12px; background: #2f5d8a; color: #fff; border: 1px solid #1a3f65; border-radius: 3px; cursor: pointer; }
.audio-source-goto:hover { background: #3b74aa; }
.thread-snapshot { padding-top: 18px; border-top: 1px solid #eee; }
.report-asset-slot { min-height: 130px; display: flex; flex-direction: column; justify-content: center; margin: 18px 0 8px; border: 1px solid #c8c8c8; color: #777; background: repeating-linear-gradient(135deg, #f2f2f2 0, #f2f2f2 8px, #ececec 8px, #ececec 16px); text-align: center; }
.report-asset-slot strong { color: #555; font-weight: 500; }
.report-asset-slot span { margin-top: 5px; font-size: 12px; }
.report-image-link { width: min(620px,100%); display: grid; grid-template-columns: 148px minmax(0,1fr); align-items: center; gap: 14px; margin: 18px auto 8px; padding: 8px; border: 1px solid #b8c2c7; border-radius: 0; color: #2e5f82; background: #f2f4f5; text-align: left; box-shadow: none; }
.report-image-link:hover { border-color: #6f94ad; background: #fff; }
.report-image-link img { width: 148px; height: 96px; display: block; object-fit: cover; border: 1px solid #aeb7bb; background: #d8dcde; }
.report-image-link span, .report-image-link strong, .report-image-link small { display: block; min-width: 0; }
.report-image-link strong { overflow-wrap: anywhere; font-weight: 500; }
.report-image-link small { margin-top: 5px; color: #777; }
.handwritten-note { margin: 14px 0; border-left: 3px solid #728a9b; padding: 7px 12px; color: #34424b; font-family: "KaiTi", "STKaiti", serif; }

@media (max-width: 900px) {
  .explorer-main { grid-template-columns: 132px 1fr; }
  .douban-page > main { grid-template-columns: 1fr; }
  .douban-page aside { border-left: 0; border-top: 1px solid #eee; padding: 16px 0; }
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

/* SVG 图标精灵：仅用于 <use> 引用，不渲染自身 */
.icon-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* 细滚动条：轨道透明，滑块半透明，悬停加深（参考旧站项目） */
* { scrollbar-width: thin; scrollbar-color: rgba(60, 70, 72, .4) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: rgba(60, 70, 72, .32);
  border: 2.5px solid transparent;
  border-radius: 8px;
  background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover { background: rgba(60, 70, 72, .55); background-clip: padding-box; }

html {
  min-height: 100%;
  background: var(--bg);
  -webkit-tap-highlight-color: transparent;
}

body {
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
  color: var(--text);
  line-height: 1.7;
  background:
    repeating-linear-gradient(0deg, rgba(62, 84, 104, .025) 0 1px, transparent 1px 3px),
    var(--bg);
}

button, input, select { font: inherit; letter-spacing: 0; color: var(--text); }

/* ---------- 旧式控件：方角、浅灰底、深灰边框、按下内凹 ---------- */
button, .button {
  min-height: 30px;
  border: 1px solid #7d8288;
  border-radius: 0;
  padding: 4px 14px;
  color: var(--blue);
  background: linear-gradient(#efede3, #ddd9ca);
  box-shadow: inset 1px 1px 0 #fbfaf3, inset -1px -1px 0 #b3ae9e;
  cursor: pointer;
  text-decoration: none;
  font-size: 13px;
}
button:hover { background: linear-gradient(#f6f4ea, #e4e0d1); }
button:active { box-shadow: inset -1px -1px 0 #fbfaf3, inset 1px 1px 0 #b3ae9e; transform: translateY(1px); }
button:focus-visible, input:focus-visible, select:focus-visible { outline: 2px solid var(--lamp); outline-offset: 1px; }
button[disabled] { cursor: not-allowed; opacity: .5; }
button.secondary { color: var(--text); }
button.danger { color: #f0e9dd; background: linear-gradient(#a03a37, #7c2825); border-color: #5f1f1d; box-shadow: inset 1px 1px 0 #b8605c, inset -1px -1px 0 #4a1715; }
button.danger:hover { background: linear-gradient(#ac4441, #862d2a); }
button.text-button { min-height: 30px; padding: 3px 8px; color: var(--link); background: transparent; border-color: transparent; box-shadow: none; text-decoration: underline; }
button.text-button:active { transform: none; box-shadow: none; }
button.icon-button { width: 34px; min-width: 34px; padding: 2px; font-family: Tahoma, Verdana, sans-serif; font-size: 14px; line-height: 1.6; display: grid; place-items: center; }
button.icon-button svg { width: 14px; height: 14px; display: block; }

input, select {
  width: 100%;
  min-height: 30px;
  border: 1px solid #8b8f8a;
  border-radius: 0;
  padding: 4px 8px;
  background: #fffdf3;
  box-shadow: inset 1px 1px 2px rgba(60, 60, 50, .18);
}
input:focus, select:focus { border-color: var(--blue); }
input::placeholder { color: #8a867a; opacity: 1; }

button, [data-action], .nav button { touch-action: manipulation; }
/* 嵌套滚动容器到边界时不带走整页 */
.win7-window-content, .phone-chat-scroll, .site-shell { overscroll-behavior: contain; }

label { display: block; font-weight: 700; }
label > input, label > select { margin-top: 5px; font-weight: 400; }

a { color: var(--link); }

/* ---------- 站壳 ---------- */
.site-shell { width: min(980px, 100%); min-height: 100vh; margin: 0 auto; background: var(--paper-2); border-inline: 1px solid var(--line); box-shadow: 0 0 18px rgba(46, 55, 60, .25); }

.utility-bar { display: flex; justify-content: space-between; gap: 10px; padding: 3px 14px; color: var(--muted); background: var(--paper); border-bottom: 1px solid var(--line-soft); font-size: 12px; line-height: 1.8; }
.utility-bar .ub-link { color: var(--link); cursor: pointer; }
.utility-bar .ub-link:hover { text-decoration: underline; }

.masthead { position: relative; padding: 14px 16px 10px; color: var(--blue); background: var(--paper-2); text-align: center; }
.masthead .site-kicker { margin: 0 0 4px; color: var(--muted); font-family: Verdana, Tahoma, sans-serif; font-size: 11px; letter-spacing: 1px; }
.masthead .site-title { margin: 0; font-size: clamp(24px, 4.6vw, 32px); line-height: 1.3; font-weight: 700; letter-spacing: 4px; }
.masthead .site-subtitle { margin: 4px 0 0; color: var(--blue-line); font-family: "Times New Roman", SimSun, serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; }
.masthead .mast-clock { position: absolute; right: 16px; top: 26px; margin: 0; color: var(--muted); font-size: 12px; }
.mast-rule { height: 0; border-top: 2px solid var(--blue); border-bottom: 1px solid var(--blue-line); margin: 8px 0 0; }

.banner-img { display: block; width: 100%; height: 132px; object-fit: cover; object-position: center 62%; border-block: 1px solid var(--line); filter: saturate(.55) contrast(.94) brightness(.97); }

.nav { display: flex; overflow-x: auto; background: var(--blue); border-bottom: 1px solid #24343f; scrollbar-width: thin; }
.nav button { flex: 0 0 auto; min-height: 32px; border: 0; border-right: 1px solid var(--blue-line); border-radius: 0; padding: 5px 16px; color: var(--paper); background: transparent; box-shadow: none; font-size: 13px; letter-spacing: 1px; }
.nav button:hover { background: var(--blue-dark); color: #fff; }
.nav button:active { transform: none; }
.nav button.active { background: var(--blue-dark); color: #fff; box-shadow: inset 0 -3px 0 var(--lamp); }
.nav button.locked { color: #90a0af; background: #374a5c; }

.notice-bar { display: flex; align-items: center; gap: 8px; overflow: hidden; border-bottom: 1px solid var(--line-soft); background: #eae6d8; padding: 3px 10px; font-size: 12px; }
.notice-bar .nb-tag { flex: 0 0 auto; padding: 1px 7px; color: var(--rust); border: 1px solid #c09a8f; background: #f3e3da; font-weight: 700; }
.notice-bar .nb-roll { display: inline-block; white-space: nowrap; padding-left: 100%; color: var(--muted); animation: nb-scroll 36s linear infinite; }
@keyframes nb-scroll { to { transform: translateX(-100%); } }
.notice-bar:hover .nb-roll { animation-play-state: paused; }

.status-bar { display: flex; flex-wrap: wrap; gap: 6px 20px; align-items: center; padding: 5px 14px; border-bottom: 1px solid var(--line-soft); background: var(--paper); color: var(--muted); font-size: 12px; }
.status-bar .count-item { white-space: nowrap; }
.led { display: inline-block; min-width: 34px; padding: 1px 6px; margin-left: 4px; color: var(--lamp); background: var(--black); border: 1px solid #4c5258; border-radius: 2px; font-family: "Courier New", Consolas, monospace; font-weight: 700; font-size: 12px; letter-spacing: 3px; text-align: center; }
.led.bad-led { color: #d08a7d; }
.status-bar .status-mark { margin-left: auto; color: #8a5551; }

.breadcrumb { margin: 0; padding: 7px 16px 0; color: var(--muted); font-size: 12px; }
.breadcrumb b { color: var(--text); font-weight: 400; }

.layout { display: grid; grid-template-columns: minmax(0, 1fr) 236px; align-items: start; gap: 16px; padding: 14px 16px 26px; }
.main { min-width: 0; }

/* ---------- 栏目标题区 ---------- */
.page-heading { margin: 0 0 3px; color: var(--blue); font-size: 21px; line-height: 1.5; font-weight: 700; }
.page-lede { margin: 0 0 16px; padding-bottom: 8px; color: var(--muted); border-bottom: 1px dotted var(--line); line-height: 1.8; }
.eyebrow { margin: 0 0 4px; color: var(--rust); font-size: 12px; }

/* ---------- 面板（旧站栏目盒） ---------- */
.panel { border: 1px solid var(--line); background: var(--paper-2); margin: 14px 0; }
.panel:first-child { margin-top: 0; }
.panel-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0; padding: 5px 10px; color: var(--blue); background: linear-gradient(#e2e7ea, #d3dade); border-bottom: 1px solid var(--line); font-size: 14px; font-weight: 700; }
.panel-title::before { content: "■"; margin-right: 7px; color: var(--blue-line); font-size: 11px; }
.panel-title > span:first-child { flex: 1; }
.panel-title .panel-more { font-weight: 400; font-size: 12px; color: var(--link); white-space: nowrap; }
.panel-body { padding: 12px; }
.panel-body.flush { padding: 0; }

/* ---------- 提示与反馈 ---------- */
.notice, .feedback { border: 1px solid var(--blue-line); border-left: 4px solid var(--blue); padding: 9px 12px; margin: 14px 0; background: #e0e6e9; line-height: 1.8; font-size: 13px; }
.notice.bad, .feedback.bad { border-color: #b08078; border-left-color: var(--rust); color: #6e2422; background: #ecdcdc; }
.feedback.good { border-color: #8da08a; border-left-color: #5e7360; background: #dfe7dc; }
.whisper { display: inline-block; margin-top: 6px; color: #6e2621; font-size: 13px; }
.small { color: var(--muted); font-size: 12px; line-height: 1.7; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.action-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.action-row.split { justify-content: space-between; }
.stack { display: grid; gap: 12px; }
.form-grid { display: grid; gap: 14px; }
.form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.choice-group { border: 1px solid var(--line); padding: 10px 12px; background: #efece0; }
.choice-group legend { padding: 0 6px; color: var(--blue); font-weight: 700; }
.choice { display: flex; gap: 8px; align-items: flex-start; padding: 5px 4px; font-weight: 400; }
.choice input { width: 15px; min-height: 15px; margin: 5px 0 0; }

/* ---------- 列表（旧站公告式：点线分隔 + 右侧日期） ---------- */
.archive-list, .link-list, .comment-list, .ledger-list { margin: 0; padding: 0; list-style: none; }
.archive-list li, .link-list li, .comment-list li, .ledger-list li { border-bottom: 1px dotted var(--line); padding: 8px 6px; line-height: 1.7; font-size: 13px; }
.archive-list li:last-child, .link-list li:last-child, .comment-list li:last-child { border-bottom: 0; }
.archive-list li::before, .link-list li::before { content: "·"; margin-right: 6px; color: var(--blue-line); font-weight: 700; }
.archive-list button, .link-list button { width: auto; min-height: 0; padding: 0; color: var(--link); background: transparent; border: 0; box-shadow: none; text-decoration: underline; font-size: 13px; }
.archive-list button:active, .link-list button:active { transform: none; }
.archive-date { float: right; color: var(--muted); font-family: Verdana, Tahoma, sans-serif; font-size: 11px; line-height: 2; }
.future-date { color: var(--rust); }

/* ---------- 收名簿 / 线索 ---------- */
.sidebar { position: sticky; top: 8px; }
.sidebar .panel + .panel { margin-top: 14px; }
.sidebar > h2 { display: none; }
.ledger { max-height: 300px; overflow: auto; border: 1px solid var(--line); background: var(--paper); }
.ledger-list li { position: relative; padding: 7px 8px 7px 24px; border-bottom: 1px dotted var(--line); font-size: 13px; line-height: 1.6; }
.ledger-list li::before { content: ""; position: absolute; left: 9px; top: 15px; width: 6px; height: 6px; background: var(--rust); }
.ledger-list li.new { animation: ink-in .8s ease-out both; }
@keyframes ink-in { from { opacity: 0; filter: blur(4px); transform: translateY(-3px); } to { opacity: 1; filter: none; transform: none; } }

.clue-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.clue-chip { border: 1px solid var(--line); padding: 3px 2px; text-align: center; color: #999e98; background: #e6e3d6; font-family: Verdana, Tahoma, sans-serif; font-size: 11px; }
.clue-chip::before { content: "□ "; font-size: 10px; }
.clue-chip.found { color: #3d2c14; background: #dcca9e; border-color: #a3854a; }
.clue-chip.found::before { content: "☑ "; }

/* ---------- 首页栏目块 ---------- */
.home-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid var(--line); border-right: 0; border-bottom: 0; }
.home-link { min-height: 78px; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); border-radius: 0; padding: 10px 12px; color: var(--muted); background: #efece0; box-shadow: none; text-align: left; font-size: 12px; line-height: 1.7; }
.home-link:hover { background: #e5e1d1; }
.home-link:active { transform: none; box-shadow: inset 1px 1px 2px rgba(60,60,50,.2); }
.home-link strong { display: block; margin-bottom: 2px; color: var(--blue); font-size: 15px; font-weight: 700; }
.home-link.locked { cursor: not-allowed; }
.home-link.locked strong { color: #98a09e; }

/* ---------- 场景与道具图 ---------- */
.scene { display: block; width: 100%; margin: 0 0 14px; border: 1px solid var(--line); filter: saturate(.6) contrast(.95); }
.lamp-scene { aspect-ratio: 16 / 7; object-fit: cover; }
.offering-scene { aspect-ratio: 16 / 5; object-fit: cover; object-position: center 65%; }
.prop { float: right; width: 128px; margin: 0 0 10px 14px; border: 1px solid var(--line); background: var(--paper); filter: saturate(.65); }

.lamp-buttons { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 14px 0; }
.lamp-buttons button { padding-inline: 6px; font-size: 12px; }
.lamp-buttons button.lit { color: #3a2610; background: linear-gradient(#dcb877, #c9a85a); border-color: #8d6f31; box-shadow: inset 1px 1px 0 #eddcb4, inset -1px -1px 0 #9a7a3a; }

.photo-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.photo { min-height: 200px; margin: 0; border: 6px solid #efe9d9; outline: 1px solid var(--line); padding: 12px; color: #efeada; background-color: #34413f; background-size: cover; background-position: center; filter: grayscale(.7) contrast(.95); }
.photo figcaption { font-family: Verdana, Tahoma, sans-serif; font-size: 11px; letter-spacing: 1px; }
.photo-old { background-image: linear-gradient(rgba(40, 48, 48, .45), rgba(40, 48, 48, .45)), url("/public/assets/scene_lamp_wall.png"); }
.photo-new { background-image: linear-gradient(rgba(30, 36, 38, .35), rgba(30, 36, 38, .35)), url("/public/assets/prop_old_photo.png"); }
.mini-lamps { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-top: 42px; }
.mini-lamp { min-height: 64px; border: 1px solid #1b2423; border-radius: 8px 8px 2px 2px; color: #252927; background: linear-gradient(#d9cfa6, #b7ac83); box-shadow: 0 0 10px rgba(201, 168, 90, .35); }
.mini-lamp.extra { background: linear-gradient(#8f8f86, #6d6d66); box-shadow: none; }

/* ---------- 供祭 ---------- */
.offering-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.offering { min-height: 84px; color: var(--text); background: #e6e2d2; border-color: #8a8f87; text-align: center; }
.offering:hover { background: #efece0; }
.offering.done { color: #33301c; background: linear-gradient(#dcd3b4, #cbbf99); }
.offering.done::after { content: "（已办）"; color: #7a6a3a; font-size: 11px; }
.offering small { display: block; margin-top: 4px; font-weight: 400; color: var(--muted); }

/* ---------- 雾声 / 雾门 / 结局 ---------- */
.mist-screen, .ending-screen, .blank-screen { position: relative; min-height: 62vh; display: grid; place-items: center; padding: 46px 20px; text-align: center; color: #ddd9cb; background: var(--black) url("/public/assets/scene_fog_gate.png") center 60% / cover no-repeat; }
.mist-screen::before, .ending-screen::before, .blank-screen::before { content: ""; position: absolute; inset: 0; background: rgba(16, 19, 22, .86); }
.mist-inner, .ending-inner { position: relative; width: min(620px, 100%); }
.mist-screen button, .ending-screen button { background: linear-gradient(#3a444a, #262e33); border-color: #12171a; box-shadow: inset 1px 1px 0 #55626a, inset -1px -1px 0 #171d21; color: #d9d5c6; }
.mist-screen button:hover, .ending-screen button:hover { background: linear-gradient(#455057, #2d363c); }
.mist-screen button.danger { color: #f0e9dd; }
.mist-screen button.secondary, .ending-screen button.secondary { background: linear-gradient(#2c3538, #1d2427); }
.mist-call { margin: 30px 0; color: #d9d1bd; font-size: 22px; line-height: 1.9; letter-spacing: 3px; text-shadow: 0 0 14px rgba(230, 229, 214, .28); }
.blank-screen::before { background: rgba(16, 19, 22, .96); }
.ending-screen .eyebrow { color: var(--lamp); font-family: Verdana, Tahoma, sans-serif; letter-spacing: 2px; }
.ending-screen h1 { font-size: 24px; letter-spacing: 5px; }

/* ---------- 路引 / 档案纸 ---------- */
.route-slip { border: 1px solid #9b8d73; padding: 18px 20px; background: linear-gradient(rgba(232, 227, 214, .82), rgba(226, 219, 200, .88)), url("/public/assets/paper_pass.png") center / cover; box-shadow: inset 0 0 34px rgba(85, 67, 42, .16); }
.route-row { display: grid; grid-template-columns: auto minmax(100px, 200px); gap: 10px; align-items: center; margin: 10px 0; font-weight: 400; }

.final-ledger { border: 1px solid #837b68; padding: 18px; background: linear-gradient(rgba(236, 231, 216, .9), rgba(228, 222, 203, .93)), url("/public/assets/scene_name_book.png") center / cover; box-shadow: inset 0 0 30px rgba(85, 67, 42, .12); }
.final-ledger > p { font-size: 13px; margin: 5px 0; }
.final-lamp-row { display: flex; align-items: center; gap: 14px; border-bottom: 1px dashed #a29880; margin-bottom: 12px; padding-bottom: 10px; }
.final-lamp-row p { margin: 0; color: #686250; font-size: 13px; line-height: 1.7; }
.final-lamp-row .paper-lamp { flex: 0 0 auto; }
.redact { color: #6b6f70; background: #333638; letter-spacing: 0; user-select: none; }

.note-track { margin: 0; padding: 0 0 0 20px; list-style: decimal inside; }
.note-track li { border-bottom: 1px dotted var(--line); padding: 6px 4px; font-size: 13px; }
.note-track li::marker { color: var(--blue-line); font-family: Verdana, Tahoma, sans-serif; }
.final-input-wrap { position: relative; margin-top: 20px; padding-top: 12px; border-top: 1px dashed #a29880; }
.final-input { min-height: 40px; font-size: 18px; letter-spacing: 2px; }
.final-progress { height: 3px; margin-top: 6px; background: #b5b3aa; overflow: hidden; }
.final-progress span { display: block; width: 0; height: 100%; background: var(--rust); transition: width .2s linear; }
.stop-control { color: #6e2422; font-weight: 700; }
.struck { color: #8b8c86; text-decoration: line-through 2px var(--rust); }
.comment-detail { padding: 6px 8px 2px 12px; border-left: 2px solid var(--blue-line); margin-top: 4px; }

/* ---------- 外层调查入口 ---------- */
.case-landing {
  min-width: 320px;
  color: #d8d4c8;
  background: #121514;
  font-family: "Microsoft YaHei", "Noto Sans SC", sans-serif;
}
.case-hero {
  position: relative;
  min-height: 100dvh;
  display: grid;
  align-items: end;
  overflow: hidden;
  padding: 72px max(28px, calc((100vw - 1040px) / 2)) 64px;
  background: #0d1110 url("/public/assets/bg_intro.png") center / cover no-repeat;
}
.case-hero-shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(105deg, rgba(8, 11, 11, 0.88) 0%, rgba(8, 11, 11, 0.62) 46%, rgba(8, 11, 11, 0.28) 78%),
    linear-gradient(0deg, rgba(6, 8, 8, 0.82), transparent 55%);
}
.case-hero-content {
  position: relative;
  width: min(520px, 100%);
  z-index: 1;
}
.dossier-sheet {
  position: relative;
  border-left: 2px solid rgba(142, 46, 46, 0.55);
  padding: 8px 0 8px 22px;
}
.dossier-stamp {
  position: absolute;
  top: -6px;
  right: 8px;
  transform: rotate(-12deg);
  border: 2px solid rgba(142, 46, 46, 0.55);
  color: rgba(142, 46, 46, 0.7);
  padding: 4px 10px;
  font: 700 13px/1 Consolas, "Courier New", monospace;
  letter-spacing: 0.28em;
  opacity: 0.85;
}
.case-code {
  margin: 0 0 18px;
  color: #8a9188;
  font: 500 11px/1.6 Consolas, "Courier New", "Microsoft YaHei", monospace;
  letter-spacing: 0.18em;
}
.case-hero h1 {
  max-width: 480px;
  margin: 0;
  color: #efece2;
  font: 600 clamp(34px, 5vw, 48px)/1.2 SimSun, "宋体", serif;
  letter-spacing: 0.12em;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.75);
}
.case-hero h1 span {
  display: block;
  margin-top: 6px;
  color: #b4a89a;
  font-size: 0.52em;
  letter-spacing: 0.45em;
  font-weight: 400;
}
.case-deck {
  max-width: 420px;
  margin: 22px 0 0;
  color: #a8aea6;
  font-size: 14px;
  line-height: 1.9;
  letter-spacing: 0.04em;
}
.case-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  max-width: 480px;
  margin: 26px 0 0;
  padding: 0;
  border: 0;
  background: none;
  backdrop-filter: none;
}
.case-facts div {
  display: flex;
  gap: 8px;
  align-items: baseline;
  padding: 0;
  border: 0 !important;
}
.case-facts dt {
  margin: 0;
  color: #6f756e;
  font: 500 10px/1.4 Consolas, "Courier New", monospace;
  letter-spacing: 0.12em;
}
.case-facts dd {
  margin: 0;
  color: #cfcabe;
  font: 500 12px/1.4 Consolas, "Courier New", "Microsoft YaHei", monospace;
}
.case-hint {
  margin: 22px 0 0;
  color: #7a6a58;
  font-size: 12px;
  letter-spacing: 0.06em;
}
.case-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 18px;
  margin-top: 28px;
}
.case-actions button,
.case-entry button {
  min-height: 42px;
  border-radius: 0;
  padding: 8px 4px;
  box-shadow: none;
  font-weight: 500;
  letter-spacing: 0.16em;
  background: transparent;
}
.case-actions .case-primary {
  min-width: 0;
  border: 0;
  border-bottom: 1px solid rgba(142, 46, 46, 0.85);
  color: #e8cfc8;
  font: 600 14px/1.4 SimSun, "宋体", serif;
}
.case-actions .case-primary:hover {
  color: #fff;
  border-bottom-color: #c07068;
  background: transparent;
}
.case-actions .case-secondary {
  min-width: 0;
  border: 0;
  color: #8a9188;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-decoration: underline;
  text-underline-offset: 5px;
}
.case-actions .case-secondary:hover {
  color: #d0d4cc;
  background: transparent;
}
.case-scroll {
  position: absolute;
  right: 28px;
  bottom: 20px;
  z-index: 2;
  min-height: 36px;
  border: 0;
  padding: 4px 6px;
  color: #6a726c;
  background: transparent;
  box-shadow: none;
  font: 500 11px/1 Consolas, "Courier New", monospace;
  letter-spacing: 0.2em;
}
.case-scroll:hover { color: #c8ccc4; background: transparent; }

.case-briefing {
  color: #2a2e2c;
  background: #cfcabc;
}
.case-briefing-inner {
  width: min(1040px, calc(100% - 56px));
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(260px, 0.85fr) minmax(360px, 1.15fr);
  gap: 56px;
  padding: 64px 0 72px;
}
.case-briefing-lead h2,
.case-entry h2 {
  margin: 0;
  font: 600 24px/1.5 SimSun, "宋体", serif;
  letter-spacing: 0.06em;
}
.case-briefing-lead > p:last-child {
  margin: 16px 0 0;
  color: #5a605a;
  line-height: 1.85;
  font-size: 14px;
}
.case-section-no {
  margin: 0 0 12px;
  color: #6e3a32;
  font: 700 11px/1.5 Consolas, "Courier New", "Microsoft YaHei", monospace;
  letter-spacing: 0.22em;
}
.case-received h3 {
  margin: 0 0 8px;
  color: #3a403c;
  font: 600 12px/1.4 Consolas, "Courier New", monospace;
  letter-spacing: 0.2em;
}
.case-received ol {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid rgba(40, 50, 45, 0.2);
}
.case-received li {
  display: grid;
  grid-template-columns: 40px 1fr;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(40, 50, 45, 0.15);
}
.case-received li span {
  color: #6e3a32;
  font: 700 12px/1.6 Consolas, "Courier New", monospace;
}
.case-received strong { display: block; font-size: 14px; letter-spacing: 0.04em; }
.case-received p { margin: 4px 0 0; color: #5a605a; font-size: 12px; }

.case-rules {
  color: #d4d0c4;
  background: #1a1e1c;
}
.case-rules-inner {
  width: min(1040px, calc(100% - 56px));
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(260px, 0.9fr) minmax(320px, 1.1fr);
  gap: 48px;
  padding: 56px 0 64px;
}
.case-rules h2 {
  margin: 0;
  font: 600 22px/1.5 SimSun, "宋体", serif;
  letter-spacing: 0.08em;
}
.case-rules ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.case-rules li {
  padding: 14px 0;
  border-bottom: 1px solid rgba(210, 205, 190, 0.12);
}
.case-rules li strong {
  display: block;
  margin-bottom: 4px;
  color: #b4a89a;
  font: 600 13px/1.4 Consolas, "Courier New", "Microsoft YaHei", monospace;
  letter-spacing: 0.14em;
}
.case-rules li span { color: #8a9188; font-size: 13px; line-height: 1.7; }

.case-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 36px;
  padding: 48px max(28px, calc((100vw - 1040px) / 2));
  color: #d8d4c8;
  background: #242826;
}
.case-entry p:not(.case-section-no) {
  margin: 10px 0 0;
  color: #8a9188;
  font-size: 13px;
}
.case-entry button {
  flex: 0 0 auto;
  min-width: 180px;
  border: 0;
  border-bottom: 1px solid rgba(142, 46, 46, 0.85);
  color: #e8cfc8;
  font: 600 14px/1.4 SimSun, "宋体", serif;
}
.case-entry button:hover {
  color: #fff;
  background: transparent;
}
.case-footer {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 18px max(28px, calc((100vw - 1040px) / 2));
  color: #5a605a;
  background: #0d1110;
  font: 500 10px/1.6 Consolas, "Courier New", monospace;
  letter-spacing: 0.16em;
}

@media (max-width: 860px) {
  .case-briefing-inner,
  .case-rules-inner {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 40px 0 48px;
    width: calc(100% - 40px);
  }
  .case-entry {
    flex-direction: column;
    align-items: flex-start;
    padding: 36px 20px;
  }
  .case-hero {
    min-height: 100dvh;
    align-items: end;
    padding: 56px 20px 56px;
  }
  .dossier-stamp { top: -28px; right: 0; }
  .case-hero h1 { letter-spacing: 0.08em; }
  .case-footer { flex-direction: column; padding: 14px 20px; }
}
.case-hero-shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(8, 13, 13, .93) 0, rgba(8, 13, 13, .74) 43%, rgba(8, 13, 13, .22) 75%, rgba(8, 13, 13, .72) 100%),
    linear-gradient(0deg, rgba(7, 10, 10, .97) 0, rgba(7, 10, 10, .72) 18%, transparent 52%);
}
.case-hero-top {
  position: absolute;
  top: 0;
  right: max(28px, calc((100vw - 1120px) / 2));
  left: max(28px, calc((100vw - 1120px) / 2));
  min-height: 58px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(222, 224, 211, .22);
  color: #c9ccc2;
  font-size: 11px;
}
.case-hero-top span:first-child { color: #f0ede2; font-size: 13px; font-weight: 700; }
.case-hero-content { position: relative; width: min(670px, 100%); z-index: 1; }
.case-code,
.case-section-no { margin: 0 0 12px; color: #b4bd9a; font: 700 11px/1.5 Consolas, "Microsoft YaHei", sans-serif; }
.case-hero h1 { max-width: 650px; margin: 0; color: #f3f0e7; font: 700 58px/1.12 SimSun, "宋体", serif; letter-spacing: 0; text-shadow: 0 4px 24px rgba(0,0,0,.7); }
.case-deck { max-width: 580px; margin: 22px 0 0; color: #d3d4cc; font-size: 17px; line-height: 1.85; text-shadow: 0 2px 12px rgba(0,0,0,.8); }
.case-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; max-width: 620px; margin: 30px 0 0; border-block: 1px solid rgba(226, 224, 210, .22); }
.case-facts.two { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 440px; }
.case-facts div { padding: 13px 18px 13px 0; }
.case-facts div + div { border-left: 1px solid rgba(226, 224, 210, .2); padding-left: 18px; }
.case-facts dt { margin-bottom: 4px; color: #8f9893; font-size: 10px; }
.case-facts dd { margin: 0; color: #e5e1d5; font-size: 13px; }
.case-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.case-actions button,
.case-entry button { min-height: 44px; border-radius: 2px; padding: 9px 22px; box-shadow: none; font-weight: 700; }
.case-actions .case-primary,
.case-entry button { border-color: #7e302c; color: #fff9ef; background: #8b332e; }
.case-actions .case-primary:hover,
.case-entry button:hover { background: #a13d36; }
.case-actions .case-secondary { border-color: #747b75; color: #e2e1d8; background: rgba(25, 31, 31, .72); }
.case-actions .case-secondary:hover { background: rgba(53, 61, 59, .9); }
.case-scroll { position: absolute; right: 28px; bottom: 18px; display: grid; justify-items: center; min-height: 42px; border: 0; padding: 4px 8px; color: #c7cbc2; background: transparent; box-shadow: none; font-size: 10px; }
.case-scroll b { font-size: 23px; line-height: 18px; }
.case-scroll:hover { color: #fff; background: rgba(0,0,0,.25); }

.case-briefing { color: #292e2d; background: #e7e5de; }
.case-briefing-inner { width: min(1120px, calc(100% - 56px)); margin: 0 auto; display: grid; grid-template-columns: minmax(280px, .8fr) minmax(420px, 1.2fr); gap: 74px; padding: 78px 0 84px; }
.case-briefing-lead h2,
.case-rules h2,
.case-entry h2 { margin: 0; font: 700 28px/1.42 SimSun, "宋体", serif; letter-spacing: 0; }
.case-briefing-lead > p:last-child { margin: 18px 0 0; color: #58605d; line-height: 1.85; }
.case-briefing .case-section-no { color: #873530; }
.case-received h3 { margin: 0 0 10px; font-size: 13px; }
.case-received ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid #aeb1ab; }
.case-received li { display: grid; grid-template-columns: 42px 1fr; gap: 14px; padding: 15px 0; border-bottom: 1px solid #bfc1bb; }
.case-received li > span { color: #8c3731; font: 700 12px/1.5 Consolas, monospace; }
.case-received strong { font-size: 14px; }
.case-received p { margin: 3px 0 0; color: #68706d; font-size: 12px; }

.case-rules { color: #e5e4dc; background: #2c3332; }
.case-rules-inner { width: min(1120px, calc(100% - 56px)); margin: 0 auto; display: grid; grid-template-columns: minmax(280px, .8fr) minmax(420px, 1.2fr); gap: 74px; padding: 70px 0; }
.case-rules ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid #59615e; }
.case-rules li { display: grid; grid-template-columns: 100px 1fr; gap: 16px; padding: 15px 0; border-bottom: 1px solid #59615e; }
.case-rules li strong { color: #d4c58f; }
.case-rules li span { color: #bfc5c1; }
.case-entry { display: flex; align-items: center; justify-content: space-between; gap: 36px; padding: 58px max(28px, calc((100vw - 1120px) / 2)); color: #282d2c; background: #d5d8d1; }
.case-entry p:not(.case-section-no) { margin: 10px 0 0; color: #5c6561; }
.case-entry button { flex: 0 0 auto; min-width: 210px; }
.case-content-note { min-height: 44px; display: flex; align-items: center; gap: 18px; padding: 10px max(28px, calc((100vw - 1120px) / 2)); border-top: 1px solid #383e3b; color: #aeb5b0; background: #202524; font-size: 12px; line-height: 1.6; }
.case-content-note strong { flex: 0 0 auto; color: #d7dbd6; font-weight: 600; }
.case-footer { min-height: 48px; display: flex; align-items: center; justify-content: space-between; padding: 8px max(28px, calc((100vw - 1120px) / 2)); color: #727a77; background: #171b1b; font: 10px/1.4 Consolas, monospace; }

/* ---------- 开场 / 旧信息 ---------- */
.intro-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    linear-gradient(0deg, rgba(12, 16, 18, .94) 0%, transparent 42%),
    linear-gradient(105deg, rgba(12, 16, 18, 0.82) 0%, rgba(12, 16, 18, 0.58) 48%, rgba(12, 16, 18, 0.48) 100%),
    url("/public/assets/bg_intro.png") center / cover no-repeat,
    var(--black);
}
.intro-shell::before {
  content: none;
}
.intro-panel { position: relative; width: min(640px, 100%); border: 1px solid #6f7772; outline: 1px solid #1d2325; padding: 26px 28px; color: #ddd9cb; background: rgba(20, 26, 28, .95); box-shadow: 0 14px 44px rgba(0, 0, 0, .55); }
.intro-panel h1 { margin-top: 0; font-size: 23px; letter-spacing: 4px; text-align: center; }
.intro-panel button { background: linear-gradient(#3a444a, #262e33); border-color: #12171a; box-shadow: inset 1px 1px 0 #55626a, inset -1px -1px 0 #171d21; color: #d9d5c6; }
.intro-panel button:hover { background: linear-gradient(#455057, #2d363c); }
.intro-panel .notice { color: var(--text); }
.old-message { border: 1px dashed #8a8574; margin: 18px 0; padding: 14px 16px; color: var(--text); background: linear-gradient(#e9e4d3, #ddd6bf); line-height: 1.95; box-shadow: inset 0 0 18px rgba(122, 106, 74, .18); font-size: 13px; }

/* ---------- 启动与登录 ---------- */
.boot-screen,
.login-screen {
  position: fixed;
  inset: 0;
  min-width: 320px;
  min-height: 100dvh;
  overflow: hidden;
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
}
.boot-screen { display: grid; place-items: center; color: #fff; background: #050505; }
.boot-center { display: grid; justify-items: center; margin-top: -4vh; }
.boot-mark { width: 92px; height: 92px; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 5px; transform: perspective(220px) rotateY(-10deg); filter: drop-shadow(0 0 11px rgba(105,184,255,.45)); }
.boot-mark i { opacity: .94; animation: bootPane 1.6s ease-in-out infinite alternate; }
.boot-mark i:nth-child(1) { background: linear-gradient(135deg, #ef5b4d, #ad241c); }
.boot-mark i:nth-child(2) { background: linear-gradient(135deg, #82cf47, #3c8d20); animation-delay: .18s; }
.boot-mark i:nth-child(3) { background: linear-gradient(135deg, #43a9ed, #1765aa); animation-delay: .36s; }
.boot-mark i:nth-child(4) { background: linear-gradient(135deg, #ffd54e, #e68e11); animation-delay: .54s; }
@keyframes bootPane { from { transform: scale(.84); opacity: .48; filter: blur(1px); } to { transform: scale(1); opacity: 1; filter: none; } }
.boot-center h1 { margin: 25px 0 24px; font-size: 22px; font-weight: 400; letter-spacing: 0; text-shadow: 0 1px 2px #000; }
.boot-center p { margin: 10px 0 0; color: #8a8a8a; font-size: 11px; }
.boot-progress { width: 118px; height: 15px; display: flex; justify-content: center; gap: 7px; overflow: hidden; }
.boot-progress span { width: 8px; height: 8px; border-radius: 50%; background: #8ed3ff; box-shadow: 0 0 8px #4bb3f2; animation: bootDots 1.15s ease-in-out infinite; }
.boot-progress span:nth-child(2) { animation-delay: .16s; }
.boot-progress span:nth-child(3) { animation-delay: .32s; }
@keyframes bootDots { 0%,100% { transform: translateY(5px); opacity: .25; } 50% { transform: translateY(0); opacity: 1; } }
.boot-copyright { position: absolute; bottom: 20px; left: 20px; color: #555; font-size: 10px; }
.boot-hint { position: absolute; bottom: 20px; right: 20px; max-width: 42vw; margin: 0; color: #666; font-size: 11px; text-align: right; opacity: .85; }

.login-screen {
  display: grid;
  place-items: center;
  color: #fff;
  background:
    radial-gradient(ellipse 78% 64% at 50% 37%, rgba(75, 177, 220, .94) 0%, rgba(32, 119, 165, .92) 34%, transparent 69%),
    linear-gradient(180deg, #0d5f89 0%, #0a4f78 46%, #063654 77%, #052a43 100%);
}
.login-screen::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .34;
  background:
    radial-gradient(ellipse 17% 68% at 50% -12%, rgba(255,255,255,.58), transparent 72%),
    linear-gradient(119deg, transparent 43%, rgba(128,216,246,.36) 44%, transparent 47%),
    linear-gradient(61deg, transparent 51%, rgba(122,207,240,.22) 52%, transparent 55%);
  filter: blur(2px);
}
.login-screen::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .26;
  background: repeating-radial-gradient(ellipse at 50% -12%, transparent 0 56px, rgba(167,225,245,.2) 58px, transparent 61px 92px);
  mix-blend-mode: screen;
}
.login-rays { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.login-rays i { position: absolute; top: -15%; left: 50%; width: 2px; height: 112%; transform-origin: top; background: linear-gradient(rgba(184,233,249,.4), transparent 72%); filter: blur(12px); }
.login-rays i:nth-child(1) { width: 16vw; transform: translateX(-50%) rotate(24deg); opacity: .34; }
.login-rays i:nth-child(2) { width: 10vw; transform: translateX(-50%) rotate(-31deg); opacity: .24; }
.login-rays i:nth-child(3) { width: 7vw; transform: translateX(-50%) rotate(5deg); opacity: .18; }
.login-brand { position: absolute; z-index: 2; bottom: 68px; left: 50%; display: flex; align-items: center; gap: 9px; transform: translateX(-50%); color: rgba(255,255,255,.94); font-size: 17px; text-shadow: 0 1px 3px #062d49; white-space: nowrap; }
.boot-mark.small { width: 30px; height: 30px; gap: 2px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.3)); }
.boot-mark.small i { animation: none; }
.login-card { position: relative; z-index: 2; display: grid; justify-items: center; min-width: 260px; margin-top: -7vh; padding: 18px 34px 24px; text-align: center; text-shadow: 0 1px 2px #164d6b; }
.login-avatar { width: 104px; height: 104px; display: grid; place-items: center; overflow: hidden; border: 3px solid rgba(255,255,255,.95); border-radius: 5px; background: #bdc9c8; box-shadow: 0 0 0 1px rgba(13,68,96,.9), 0 4px 18px rgba(0,0,0,.42), inset 0 0 0 2px rgba(255,255,255,.22); }
.login-avatar img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.32); filter: saturate(.68) contrast(.92) brightness(.82); }
.login-avatar.road-awake { position: relative; }
.login-avatar.road-awake::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 28% 13%, rgba(231,246,247,.46) 0 2px, transparent 3px),
    linear-gradient(98deg, transparent 19%, rgba(212,235,237,.28) 21%, transparent 24% 58%, rgba(215,235,236,.2) 61%, transparent 64%);
  filter: blur(.35px);
  mix-blend-mode: screen;
  opacity: .72;
}
.login-card h1 { margin: 13px 0 3px; font-size: 22px; font-weight: 400; letter-spacing: 0; }
.login-card p { margin: 0 0 13px; color: #d9edf7; font-size: 11px; }
.login-card button { min-height: 31px; border: 1px solid #103b55; border-radius: 3px; padding: 4px 14px; color: #fff; background: linear-gradient(#72badc, #2e769e 52%, #256384); box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 2px rgba(0,0,0,.28); text-shadow: 0 1px 1px #174f6c; display: inline-flex; align-items: center; justify-content: center; gap: 6px; line-height: 1.2; }
.login-card button svg { width: 13px; height: 13px; display: block; position: relative; top: 0.5px; }
.login-card button:hover { background: linear-gradient(#8acbea, #3988b0 52%, #2b7195); }
.login-form { display: grid; gap: 8px; justify-items: center; margin-bottom: 4px; }
.login-password-label { display: grid; gap: 4px; font-size: 11px; color: #d9edf7; text-shadow: 0 1px 2px #164d6b; }
.login-password-label input { width: 200px; min-height: 28px; padding: 3px 8px; border: 1px solid #103b55; border-radius: 3px; background: rgba(255,255,255,.92); color: #123; font-size: 13px; outline: none; }
.login-password-label input:focus { border-color: #2e769e; box-shadow: 0 0 0 2px rgba(46,118,158,.25); }
.login-feedback { min-height: 14px; font-size: 11px; color: #ffd27a; }
.login-feedback.bad { color: #ff8a8a; }
.login-guide-link { margin-top: 10px; border: 0; padding: 2px 6px; color: rgba(214,232,240,.7); background: transparent; box-shadow: none; font-size: 11px; cursor: pointer; }
.login-guide-link:hover { color: #fff; background: rgba(255,255,255,.1); text-decoration: underline; }
.login-screen > footer { position: absolute; z-index: 3; right: 0; bottom: 0; left: 0; min-height: 54px; display: grid; grid-template-columns: minmax(90px, 1fr) auto minmax(90px, 1fr); align-items: center; border-top: 1px solid rgba(255,255,255,.24); padding: 8px 28px; color: #c5dfea; background: linear-gradient(rgba(3,43,67,.72), rgba(2,31,50,.88)); box-shadow: inset 0 1px 0 rgba(0,0,0,.18); font-size: 11px; }
.login-screen > footer > :first-child { justify-self: start; }
.login-screen > footer > span { justify-self: center; }
.login-screen > footer > :last-child { justify-self: end; }
.login-power { width: 36px; min-height: 31px; display: grid; place-items: center; border: 1px solid #103b55; border-radius: 3px; padding: 0; color: #fff; background: linear-gradient(#72badc, #2e769e 52%, #256384); box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 2px rgba(0,0,0,.28); text-shadow: 0 1px 1px #174f6c; cursor: pointer; }
.login-power:hover { background: linear-gradient(#8acbea, #3988b0 52%, #2b7195); }
.login-power svg { width: 15px; height: 15px; }
.login-footer-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.login-system-actions { display: flex; align-items: center; gap: 8px; }
.login-system-actions .login-reset-link { min-height: 31px; border: 1px solid #103b55; border-radius: 3px; padding: 4px 10px; color: #fff; background: linear-gradient(#72badc, #2e769e 52%, #256384); box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 2px rgba(0,0,0,.28); text-shadow: 0 1px 1px #174f6c !important; font-size: 11px; cursor: pointer; }
.login-system-actions .login-reset-link:hover { background: linear-gradient(#8acbea, #3988b0 52%, #2b7195); }
.login-footer-actions button { min-height: 31px; border: 1px solid #103b55; border-radius: 3px; padding: 4px 13px; color: #fff; background: linear-gradient(#72badc, #2e769e 52%, #256384); box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 2px rgba(0,0,0,.28); text-shadow: 0 1px 1px #174f6c; font-size: 11px; cursor: pointer; }
.login-footer-actions button:hover { background: linear-gradient(#8acbea, #3988b0 52%, #2b7195); }
.login-reset-link { color: #fff !important; }

.login-reset-dialog { position: relative; z-index: 4; width: min(520px, calc(100% - 32px)); overflow: hidden; border: 1px solid #173f58; border-radius: 7px 7px 3px 3px; color: #1f2d34; background: #f3f6f7; box-shadow: 0 0 0 1px rgba(255,255,255,.75), 0 18px 54px rgba(0,0,0,.42); text-shadow: none; }
.login-reset-dialog > header { min-height: 32px; padding: 7px 12px; color: #0b2738; background: linear-gradient(#d9effb, #9dcee8 48%, #70acd0 52%, #8fc2dd); border-bottom: 1px solid #4d819f; text-shadow: 0 1px rgba(255,255,255,.85); font-size: 12px; }
.login-reset-body { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; align-items: start; padding: 24px 26px 18px; }
.login-reset-icon { width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid #b18416; border-radius: 50%; color: #6b4d00; background: linear-gradient(#fff8a9, #e7bd2f); box-shadow: inset 0 1px #fff; font: 700 25px/1 "Segoe UI", sans-serif; }
.login-reset-body h1 { margin: 0 0 8px; color: #22343d; font-size: 18px; font-weight: 600; }
.login-reset-body p { margin: 0; color: #4f5f66; font-size: 12px; line-height: 1.75; }
.login-reset-actions { min-height: 50px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid #c5d0d5; padding: 9px 14px; background: #e8eef1; }
.login-reset-actions button { min-width: 88px; min-height: 30px; border-radius: 3px; }
.recovered-message-screen { place-items: center; }
.recovered-message-window { position: relative; z-index: 2; width: min(620px, calc(100vw - 40px)); border: 1px solid #173d55; border-radius: 6px 6px 3px 3px; color: #1f2e36; background: #edf3f6; box-shadow: 0 22px 70px rgba(0,0,0,.42), 0 0 0 1px rgba(255,255,255,.65) inset; overflow: hidden; }
.recovered-message-window > header { min-height: 34px; display: flex; align-items: center; gap: 8px; padding: 5px 12px; color: #0b2738; background: linear-gradient(#d9effb, #9dcee8 48%, #70acd0 52%, #8fc2dd); border-bottom: 1px solid #4d819f; text-shadow: 0 1px rgba(255,255,255,.85); font-size: 12px; }
.recovered-message-window > header .win7-app-icon { width: 20px; height: 20px; }
.recovered-message-body { padding: 28px 30px 24px; }
.recovered-message-meta { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 10px; color: #5d6e76; font-size: 12px; }
.recovered-message-body blockquote { margin: 0 0 24px; border: 1px solid #bbc8ce; border-left: 4px solid #718c9a; padding: 20px 22px; color: #26343a; background: #fff; box-shadow: inset 0 1px #f5f8f9; font: 15px/2 SimSun, "宋体", serif; }
.recovered-message-body label { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin-bottom: 7px; color: #33464f; font-size: 12px; font-weight: 600; }
.recovered-message-body label span { color: #66777f; font-size: 11px; font-weight: 400; }
.recovered-message-body input { width: min(100%, 320px); min-height: 31px; border: 1px solid #7c929d; border-radius: 2px; padding: 5px 8px; color: #1f2e36; background: #fff; box-shadow: inset 0 1px 2px rgba(0,0,0,.12); }
.recovered-message-window > footer { min-height: 52px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid #c5d0d5; padding: 10px 14px; background: #e8eef1; }
.recovered-message-window > footer button { min-width: 88px; min-height: 30px; border-radius: 3px; }

/* ---------- 调查档案与跨站页面 ---------- */
.investigation-bar { display: flex; align-items: center; gap: 14px; min-height: 38px; padding: 4px 12px; color: #cfd4cf; background: #1f2426; border-bottom: 1px solid #080a0b; font: 12px/1.5 Tahoma, "Microsoft YaHei", sans-serif; }
.investigation-bar .ib-brand { color: #f0ece0; border: 1px solid #55605f; padding: 1px 7px; letter-spacing: 2px; }
.investigation-bar .ib-count { color: #e4bd68; font-family: Consolas, monospace; letter-spacing: 1px; }
.investigation-bar .ib-stage { color: #9fb0a6; letter-spacing: 1px; }
.investigation-bar .ib-note { margin-left: auto; color: #7f8a86; }
.investigation-bar .ib-home { min-height: 26px; padding: 2px 10px; color: #e8e4d6; background: #3e474c; border-color: #59636a; box-shadow: none; font-size: 12px; }
.investigation-bar .ib-home:hover { background: #4a545a; }

.portal-shell { width: min(1100px, 100%); min-height: 100vh; margin: 0 auto; color: #25292b; background: #eef0ed; border-inline: 1px solid #9ba29e; box-shadow: 0 0 24px rgba(18, 24, 27, .24); font-family: "Microsoft YaHei", "Noto Sans SC", sans-serif; }
.portal-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 92px; padding: 18px 24px; background: #f6f7f4; border-bottom: 1px solid #b7bdb9; }
.portal-header h1 { margin: 0; font-size: 24px; letter-spacing: 0; }
.portal-header .eyebrow { margin-bottom: 3px; }
.portal-main { padding: 24px; }

.desk-lead { display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 24px; align-items: center; padding: 22px 0 24px; border-bottom: 1px solid #b6bcb8; }
.desk-lead h2 { margin: 2px 0 8px; font: 700 27px/1.35 SimSun, "宋体", serif; letter-spacing: 0; }
.desk-lead p { margin: 0; max-width: 680px; }
.progress-stamp { display: grid; justify-items: center; padding: 14px 8px; border: 1px solid #7d8783; background: #f7f5ec; }
.progress-stamp strong { color: #87302d; font: 700 15px/1.35 "Microsoft YaHei", sans-serif; text-align: center; }
.progress-stamp span { margin-top: 5px; color: #66706c; font-size: 12px; }

.web-search-panel { padding: 18px 0; border-bottom: 1px solid #c3c8c5; }
.web-search > label { margin-bottom: 7px; color: #4d5754; }
.web-search > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.web-search input { min-height: 42px; border-color: #77817d; background: #fff; font-family: "Microsoft YaHei", sans-serif; }
.web-search button { min-height: 42px; padding-inline: 24px; color: #fff; background: #3d555d; border-color: #2d4046; box-shadow: none; }
.search-trail { margin: 8px 0 0; color: #6c7471; font-size: 12px; }

.site-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 20px 0 26px; }
.site-card { display: grid; grid-template-columns: 42px minmax(0, 1fr); min-height: 92px; align-content: center; column-gap: 11px; border: 1px solid #a2aaa6; border-radius: 4px; padding: 12px; background: #fafaf7; box-shadow: 0 2px 5px rgba(20, 28, 31, .08); text-align: left; }
.site-card:hover { background: #fff; border-color: #64726d; }
.site-card > span { grid-row: 1 / 3; display: grid; place-items: center; width: 42px; height: 42px; color: #f6f2e5; background: #4a5d62; border: 1px solid #29383c; font: 700 18px/1 SimSun, serif; }
.site-card strong { align-self: end; color: #263a40; font-size: 14px; }
.site-card small { align-self: start; color: #69716e; line-height: 1.45; }
.desk-columns { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); gap: 28px; }
.desk-columns h2 { margin: 0 0 10px; font-size: 17px; }
.evidence-book { border-top: 2px solid #5d6965; }
.evidence-item { width: 100%; min-height: 64px; display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: start; gap: 8px; border: 0; border-bottom: 1px solid #c2c7c4; border-radius: 0; padding: 10px 4px; color: #2c3432; background: transparent; box-shadow: none; text-align: left; }
.evidence-item:hover { background: #f8f7f0; }
.evidence-item.selected { background: #e7eee9; box-shadow: inset 3px 0 #7b3430; }
.evidence-check { width: 22px; height: 22px; display: grid; place-items: center; border: 1px solid #84908b; color: #66716c; font: 700 13px/1 Consolas, monospace; }
.evidence-item.selected .evidence-check { border-color: #7b3430; color: #fff; background: #873a35; }
.evidence-item strong, .evidence-item small { display: block; }
.evidence-item strong { color: #71312f; font-size: 13px; }
.evidence-item small { margin-top: 3px; color: #59615e; font-size: 12px; font-weight: 400; line-height: 1.55; }
.evidence-workbench { margin-top: 16px; border: 1px solid #9ea7a3; padding: 13px; background: #f1f3ef; }
.workbench-head { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.workbench-head h3 { margin: 0; color: #354541; font-size: 16px; }
.workbench-head .eyebrow { margin: 0 0 2px; }
.workbench-head > span { color: #7a302d; font: 700 18px/1 Consolas, monospace; }
.evidence-workbench > p { margin: 10px 0; color: #5a6460; font-size: 12px; }
.relation-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.relation-buttons button { min-height: 34px; padding: 5px 7px; color: #eef1ed; background: #465854; border-color: #2e403c; box-shadow: none; font-size: 12px; }
.relation-buttons button:hover { background: #5a6d68; }
.deduction-title { margin-top: 22px !important; }
.deduction-book { border-top: 2px solid #783531; }
.deduction-book article { padding: 12px 3px; border-bottom: 1px solid #c6c4b8; }
.deduction-book article > span { display: inline-block; margin-right: 7px; border: 1px solid #9a625c; padding: 1px 4px; color: #7f302d; font-size: 10px; }
.deduction-book strong { color: #3e4744; font-size: 13px; }
.deduction-book p { margin: 5px 0 0; color: #66706c; font-size: 12px; line-height: 1.55; }
.lead-list { margin: 0; padding: 12px 12px 12px 32px; border: 1px solid #b7b8aa; background: #f6f2df; }
.lead-list li { padding: 4px 0; }
.reset-link { margin-top: 14px; color: #7a302e; }
.reset-confirm { width: min(620px, 100%); margin: 54px auto; border: 1px solid #9f9f94; padding: 24px; background: #faf9f2; }
.reset-confirm h2 { margin: 4px 0 10px; }

.chat { width: fit-content; max-width: 72%; margin-bottom: 13px; border: 1px solid #adb4b0; border-radius: 4px; padding: 9px 12px; background: #fff; box-shadow: 0 1px 2px rgba(30, 35, 33, .08); }
.chat.outgoing { margin-left: auto; background: #dce9cc; border-color: #a8b79b; }
.chat.bad-chat { color: #742a28; border-color: #b27c76; }
.chat.live-chat { animation: ink-in 1.2s ease-out both; background: #ece2de; }
.message-time { color: #6d7672; text-align: center; font-size: 12px; }

.forum-userbar { display: flex; justify-content: space-between; gap: 20px; padding: 7px 10px; color: #5f6c6d; background: #e8ebe4; border: 1px solid #b5bbb3; font-size: 12px; }
.forum-userbar strong { color: #384f58; }
.login-box { width: min(440px, 100%); margin: 54px auto; border: 1px solid #8d918c; padding: 20px; background: #f5f2e8; }
.forum-table { width: 100%; margin-top: 14px; border-collapse: collapse; background: #f7f5ec; }
.forum-table th, .forum-table td { border: 1px solid #aaa99e; padding: 9px 10px; text-align: left; }
.forum-table th { color: #edf0e9; background: #536a75; }
.forum-table td small { display: block; color: #797d77; }
.forum-post { margin-top: 18px; border: 1px solid #a5a398; padding: 18px; background: #faf8ef; }
.forum-post blockquote { margin: 16px 0; border-left: 3px solid #8e2e2e; padding: 8px 12px; background: #eee8d9; }
.forum-live-time { color: #8e2e2e; }
.forum-sync-warning { margin-top: 14px; border: 1px solid #aa756f; padding: 10px 12px; color: #682e2b; background: #f6e9e4; }
.forum-sync-warning p { margin: 0 0 8px; }
.route-record-summary { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; margin-top: 10px; border-top: 1px solid #b9c3bd; padding-top: 9px; }
.route-record-summary small { color: #6e7873; }
.route-record-summary strong { color: #71312f; }
.record-hold { border-left: 3px solid #8e2e2e; padding-left: 9px; color: #6d3935; }
.post-meta, .deleted-line { color: #777b76; font-size: 12px; }
.deleted-line { text-decoration: line-through; }

.tour-hero { position: relative; min-height: 280px; overflow: hidden; border: 1px solid #86918b; }
.tour-hero img { width: 100%; height: 280px; object-fit: cover; filter: saturate(.68) contrast(.92); }
.tour-hero > div { position: absolute; left: 0; bottom: 0; width: 100%; padding: 18px 22px; color: #fff; background: rgba(25, 36, 34, .78); }
.tour-hero h2, .tour-hero p { margin: 2px 0; }
.tour-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 18px; }
.tour-grid article { border-top: 3px solid #587069; padding: 12px 2px; }
.tour-grid h3 { margin: 0 0 6px; }

.village-heading { padding: 18px; color: #f5f1e6; background: #7a302e; border-bottom: 4px solid #c2a354; }
.village-heading h2, .village-heading p { margin: 2px 0; }
.village-search { margin: 20px 0; }
.record-result { margin-top: 18px; border: 1px solid #a88f67; padding: 14px 16px; background: #fff8df; }
.old-home-columns { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(230px, .6fr); gap: 14px; }
.compact-evidence { margin: 0; padding-left: 18px; }
.compact-evidence li { padding: 3px 0; color: #5e503e; font-size: 12px; }

/* ---------- 分层站点皮肤：私人手机 → 论坛 → 旅游站 → 村务 →（旧站在 shell()） ---------- */
.portal-site-foot { padding: 12px 20px 20px; color: #8b928d; border-top: 1px dashed #b8bdb8; font-size: 11px; text-align: center; }
.tone-inbox { background: #0f1113; }
.tone-inbox .portal-site-foot { color: #5f6a70; border-top-color: #2a3136; }

.site-mast { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 16px 22px; }
.mast-strip { display: flex; flex-wrap: wrap; gap: 4px 20px; padding: 6px 22px; font-size: 12px; }
.mast-strip span { cursor: default; }

.tone-forum { background: #dfe3dc; }
.forum-mast { min-height: 96px; color: #eef2ec; background: linear-gradient(#557080, #3c525f); border-bottom: 3px solid #263a45; }
.forum-mast .mast-brand { font: 700 28px/1.25 SimSun, "宋体", serif; letter-spacing: 5px; }
.forum-mast .mast-brand b { font-weight: 400; color: #bfd2cd; }
.forum-mast .mast-tag { margin: 4px 0 0; color: #b8c6c2; font-size: 12px; letter-spacing: 1px; }
.forum-strip { color: #5b6a70; background: #cfd6ce; border-block: 1px solid #b0b8ae; }

.tone-tourism { background: #eef2ea; }
.tour-strip { color: #f2f6ee; background: #3e6b52; }
.tour-strip .on { background: #2c4f3d; }
.tour-mast {
  min-height: 150px;
  padding: 44px 22px 24px;
  background:
    radial-gradient(120% 150% at 85% -20%, rgba(201, 168, 90, .16), transparent 55%),
    linear-gradient(160deg, #2c5244 0%, #23443a 52%, #1a352d 100%);
}
.tour-mast .mast-brand { color: #f3f6ec; font: 700 32px/1.3 SimSun, "宋体", serif; letter-spacing: 5px; text-shadow: 0 1px 10px rgba(8, 26, 18, .9); }
.tour-mast .mast-tag { margin: 4px 0 0; color: #cfe0cb; font-size: 12px; text-shadow: 0 1px 6px rgba(8, 26, 18, .9); }

.tone-village { background: #f2f0e9; }
.village-mast { min-height: 104px; color: #f8f3e4; background: linear-gradient(#96372f, #7a2b25); border-bottom: 4px solid #c2a354; }
.village-emblem { font-size: 34px; line-height: 1; color: #e9b64d; }
.village-mast .mast-kicker { margin: 0 0 3px; color: #e6c793; font-size: 12px; letter-spacing: 3px; }
.village-mast .mast-brand { font: 700 26px/1.35 SimHei, "Microsoft YaHei", sans-serif; letter-spacing: 4px; }
.village-mast .mast-date { margin: 0; color: #dfc7a5; font-size: 11px; }
.village-strip { color: #3d4a55; background: linear-gradient(#e7eae4, #d3d8d0); border-block: 1px solid #b7bdb4; }
.village-strip .on { color: #7a2b25; background: #f5f0dd; box-shadow: inset 0 -2px 0 #c2a354; }

/* ===== 手机独立入口（对齐 lumen #stage / #device） ===== */
.phone-os {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  color: #d8dce0;
  background:
    radial-gradient(ellipse 70% 45% at 50% 0%, rgba(70, 95, 110, 0.28), transparent 55%),
    radial-gradient(ellipse 50% 40% at 80% 100%, rgba(40, 60, 70, 0.2), transparent 50%),
    #07090a;
  overflow: hidden;
}
.phone-os-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 22px 6px;
  font: 12px/1.2 -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif;
}
.phone-os-exit {
  min-height: 34px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 999px;
  padding: 6px 12px;
  color: #c5ccd2;
  background: rgba(255, 255, 255, 0.06);
  cursor: pointer;
}
.phone-os-exit:hover { background: rgba(255, 255, 255, 0.12); color: #fff; }
.phone-os-title { color: #8b959d; letter-spacing: 0.04em; }
.phone-os-badge {
  border: 1px solid rgba(142, 46, 46, 0.55);
  border-radius: 999px;
  padding: 4px 10px;
  color: #c08a88;
  font-size: 11px;
}
.phone-os-stage {
  position: relative;
  display: grid;
  place-items: center;
  padding: 8px 12px 18px;
}
.phone-os-caption {
  justify-self: center;
  width: min(520px, calc(100% - 32px));
  padding: 0 0 28px;
  text-align: center;
}
.phone-os-caption h2 {
  margin: 4px 0 14px;
  color: #e8ebe7;
  font: 600 18px/1.45 SimSun, "宋体", serif;
}
.phone-os-caption dl {
  display: inline-grid;
  grid-template-columns: 52px 1fr;
  gap: 6px 12px;
  margin: 0;
  text-align: left;
  font-size: 12px;
}
.phone-os-caption dt { color: #5f6a70; }
.phone-os-caption dd { margin: 0; color: #9aa5ab; }
.phone-glow {
  position: absolute;
  left: 50%;
  top: 8%;
  width: 420px;
  height: 78%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(120, 160, 175, 0.22), transparent 68%);
  filter: blur(36px);
  pointer-events: none;
}
.phone-device {
  position: relative;
  z-index: 1;
  width: min(393px, 100%);
  height: min(852px, calc(100dvh - 150px));
  max-height: 852px;
}
.phone-device-body {
  position: relative;
  width: 100%;
  height: 100%;
  padding: 12px;
  border-radius: 54px;
  background: linear-gradient(145deg, #3a3a42, #0a0a0c 40%, #1c1c22);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.06),
    0 0 0 3px #0a0a0b,
    0 40px 80px rgba(0, 0, 0, 0.65),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
}
.phone-screen {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 44px;
  color: #202426;
  background: #edf0ed;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;
  isolation: isolate;
}
.phone-screen button { box-shadow: none; font-family: inherit; letter-spacing: 0; }
.phone-lock-wallpaper, .phone-home-wallpaper { animation: phoneScreenIn .18s ease-out; }
@keyframes phoneScreenIn {
  from { opacity: .35; transform: scale(.985) translateY(6px); }
  to { opacity: 1; transform: none; }
}
.phone-os-status {
  position: absolute;
  z-index: 50;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 54px;
  padding: 14px 28px 0;
  color: #202426;
  font: 600 14px/1 -apple-system, BlinkMacSystemFont, "SF Pro Text", sans-serif;
  pointer-events: none;
}
.phone-os-status.light { color: rgba(255, 255, 255, 0.95); text-shadow: 0 1px 4px rgba(0, 0, 0, .45); }
.phone-os-time { letter-spacing: .02em; }
.phone-os-right { display: flex; align-items: center; gap: 7px; }
.phone-os-nosim { font-size: 10px; font-weight: 500; opacity: .85; }
.phone-os-signal { display: flex; align-items: flex-end; gap: 2px; height: 11px; }
.phone-os-signal i { display: block; width: 3px; border-radius: 1px; background: currentColor; }
.phone-os-signal i:nth-child(1) { height: 4px; }
.phone-os-signal i:nth-child(2) { height: 6px; }
.phone-os-signal i:nth-child(3) { height: 8px; }
.phone-os-signal i:nth-child(4) { height: 11px; }
.phone-os-signal i.off { opacity: .28; }
.phone-os-wifi { display: grid; place-items: center; height: 12px; }
.phone-os-batt { display: flex; align-items: center; gap: 3px; }
.phone-os-batt b { font-size: 11px; font-weight: 600; }
.phone-os-batt i {
  position: relative;
  display: block;
  width: 22px;
  height: 11px;
  border: 1.2px solid currentColor;
  border-radius: 3px;
  padding: 1px;
}
.phone-os-batt i::after {
  content: "";
  position: absolute;
  right: -3px;
  top: 3px;
  width: 2px;
  height: 5px;
  border-radius: 0 1px 1px 0;
  background: currentColor;
  opacity: .5;
}
.phone-os-batt em {
  display: block;
  width: 28%;
  height: 100%;
  border-radius: 1px;
  background: currentColor;
}
.phone-home-indicator {
  position: absolute;
  z-index: 10;
  bottom: 8px;
  left: 50%;
  width: 134px;
  min-height: 22px;
  transform: translateX(-50%);
  border: 0;
  padding: 8px 0;
  background: transparent;
}
.phone-home-indicator span {
  display: block;
  width: 134px;
  height: 5px;
  border-radius: 5px;
  background: rgba(25, 29, 31, .55);
}
.phone-view-lock .phone-home-indicator span,
.phone-view-home .phone-home-indicator span {
  background: rgba(255, 255, 255, .4);
}

.phone-lock-wallpaper, .phone-home-wallpaper {
  position: absolute;
  inset: 0;
  padding-top: 54px;
  background:
    radial-gradient(ellipse 80% 50% at 50% 18%, rgba(120, 155, 170, 0.34), transparent 55%),
    radial-gradient(ellipse 60% 40% at 80% 90%, rgba(90, 120, 110, 0.14), transparent 50%),
    linear-gradient(180deg, #1a242c 0%, #0c1216 45%, #070a0c 100%),
    url("/public/assets/station-mist.svg") center / cover no-repeat;
  background-blend-mode: screen, screen, normal, soft-light;
}
/* 锁屏改纵向弹性布局：时间固定、通知区可缩、提示永远钉在底部，三者永不重叠 */
.phone-lock-wallpaper { display: flex; flex-direction: column; }
.phone-lock-vignette, .phone-home-vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at 50% 40%, transparent 40%, rgba(0, 0, 0, 0.45) 100%);
}
.phone-lock-time {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  display: grid;
  justify-items: center;
  margin-top: 36px;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.35);
}
.phone-lock-time span { font-size: 16px; font-weight: 500; opacity: .92; letter-spacing: .02em; }
.phone-lock-time strong {
  margin-top: 2px;
  font: 200 82px/1 -apple-system, BlinkMacSystemFont, "SF Pro Display", Arial, sans-serif;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}
.phone-lock-notifications {
  position: relative;
  z-index: 2;
  flex: 0 1 auto;
  min-height: 0;
  display: grid;
  gap: 8px;
  margin: 24px 12px 0;
  max-height: none;
  overflow: auto;
  scrollbar-width: none;
}
.phone-lock-notifications::-webkit-scrollbar { display: none; }
.phone-notification {
  display: flex;
  gap: 10px;
  width: 100%;
  min-height: 88px;
  border: 0.5px solid rgba(255, 255, 255, 0.12);
  border-radius: 18px;
  padding: 12px 12px 12px 10px;
  color: #f7f8f7;
  background: rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  text-align: left;
  cursor: pointer;
  transition: transform .15s, background .15s;
}
.phone-notification:hover { background: rgba(255, 255, 255, 0.2); }
.phone-notification:active { transform: scale(0.98); }
.phone-notification-body { flex: 1; min-width: 0; display: grid; gap: 2px; }
.phone-notification-top { display: flex; justify-content: space-between; margin-bottom: 2px; }
.phone-notification b { font-size: 12px; font-weight: 500; color: rgba(255, 255, 255, 0.7); }
.phone-notification small { color: rgba(255, 255, 255, 0.7); font-size: 11px; }
.phone-notification strong { font-size: 14px; font-weight: 600; color: #fff; }
.phone-notification em {
  overflow: hidden;
  color: rgba(255, 255, 255, 0.88);
  font-size: 13px;
  font-style: normal;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.phone-notification.muted { opacity: .88; }
.phone-notification-icon {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 9px;
  color: #fff;
  font-weight: 700;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .25);
}
.phone-lock-footer {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  display: grid;
  justify-items: center;
  gap: 4px;
  margin-top: auto;
  padding-bottom: 34px;
}
.phone-unlock {
  width: 250px;
  border: 0;
  padding: 10px;
  color: #f0f2ef;
  background: transparent;
  font-size: 13px;
  letter-spacing: .04em;
  text-shadow: 0 1px 6px #000;
  cursor: pointer;
}
.phone-swipe-hint {
  display: block;
  margin-bottom: 4px;
  font-size: 16px;
  animation: phoneSwipe 1.8s ease-in-out infinite;
}
@keyframes phoneSwipe {
  0%, 100% { transform: translateY(0); opacity: .5; }
  50% { transform: translateY(-6px); opacity: 1; }
}
.phone-lock-hint { margin: 0; color: rgba(255, 255, 255, 0.55); font-size: 11px; text-shadow: 0 1px 4px #000; }

.phone-home-date {
  position: relative;
  z-index: 2;
  margin: 18px 22px 0;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
}
.phone-home-date span, .phone-home-date small { display: block; }
.phone-home-date strong { display: block; margin: 2px 0; font-size: 32px; font-weight: 500; }
.phone-home-date small { color: rgba(255, 255, 255, 0.72); font-size: 12px; }
.phone-app-grid {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px 8px;
  padding: 36px 18px 0;
}
.phone-app-icon {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 0;
  min-height: 78px;
  border: 0;
  padding: 0;
  color: #fff;
  background: transparent;
  cursor: pointer;
}
.phone-app-glyph {
  position: relative;
  display: grid;
  place-items: center;
  width: 60px;
  height: 60px;
  overflow: hidden;
  border-radius: 13.5px;
  box-shadow:
    0 1px 1px rgba(255, 255, 255, 0.18) inset,
    0 6px 14px rgba(0, 0, 0, 0.35),
    0 0 0 0.5px rgba(0, 0, 0, 0.12);
}
.phone-glyph-shine {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.22), transparent 42%);
}
.phone-glyph-text {
  position: relative;
  z-index: 1;
  font-size: 22px;
  font-weight: 700;
  text-shadow: none;
}
.phone-app-label {
  font-size: 12px;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
}
.phone-app-badge {
  position: absolute;
  top: -4px;
  right: 8px;
  min-width: 20px;
  height: 20px;
  border: 2px solid #f2f4f1;
  border-radius: 12px;
  padding: 1px 5px;
  color: #fff;
  background: #ff3b30;
  font-size: 11px;
  line-height: 14px;
  text-shadow: none;
}
.app-near { background: linear-gradient(180deg, #5cd87a 0%, #2faf4a 100%); }
.app-contacts { background: linear-gradient(180deg, #7d90a8, #5a6f88); }
.app-photos {
  background:
    radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.15), transparent 40%),
    linear-gradient(145deg, #1c1c1e, #3a3a3c);
}
.app-notes { background: linear-gradient(180deg, #ffd60a 0%, #f7b500 100%); }
.app-browser { background: linear-gradient(180deg, #5ac8fa 0%, #007aff 55%, #0055d4 100%); }
.app-phone { background: linear-gradient(180deg, #5cd87a 0%, #2faf4a 100%); }
.phone-dock {
  position: absolute;
  z-index: 2;
  bottom: 28px;
  left: 12px;
  right: 12px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  align-items: center;
  height: 88px;
  border: 0.5px solid rgba(255, 255, 255, 0.14);
  border-radius: 28px;
  padding: 6px 28px;
  background: rgba(255, 255, 255, 0.16);
  backdrop-filter: blur(22px);
  -webkit-backdrop-filter: blur(22px);
}
.phone-dock .phone-app-icon { min-height: 58px; }
.phone-dock .phone-app-label { display: none; }

/* 删旧 .phone-home-date / .phone-app-grid 块若重复，保留唯一定义 */

.phone-app { position: absolute; inset: 0; padding-top: 54px; padding-bottom: 28px; overflow: hidden; background: #f2f2f7; }
.phone-app-nav {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) 52px;
  align-items: end;
  min-height: 52px;
  border-bottom: 0.5px solid rgba(60, 60, 67, 0.18);
  padding: 4px 8px 8px;
  background: rgba(249, 249, 250, 0.92);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  text-align: center;
}
.phone-app-nav button { min-height: 40px; border: 0; padding: 0; color: #007aff; background: transparent; font-size: 32px; line-height: 1; font-weight: 300; display: grid; place-items: center; }
.phone-app-nav button svg { width: 22px; height: 22px; display: block; }
.phone-app-nav div { min-width: 0; }
.phone-app-nav strong, .phone-app-nav small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.phone-app-nav strong { font-size: 16px; font-weight: 600; }
.phone-app-nav small { margin-top: 1px; color: #8e8e93; font-size: 10px; font-weight: 400; }
.phone-chat-scroll {
  height: calc(100% - 108px);
  overflow-y: auto;
  padding: 16px 12px 84px;
  background: #fff;
}
.phone-chat-day { color: #8e8e93; text-align: center; font-size: 11px; margin: 0 0 12px; }
.phone-chat-scroll .chat {
  max-width: 78%;
  margin-bottom: 8px;
  border-radius: 18px;
  padding: 9px 12px;
  font-size: 14px;
  line-height: 1.45;
}
.phone-chat-scroll .chat.incoming {
  margin-right: auto;
  color: #1c1c1e;
  background: #e9e9eb;
  border-bottom-left-radius: 6px;
}
.phone-chat-scroll .chat.outgoing {
  margin-left: auto;
  color: #fff;
  background: #007aff;
  border-bottom-right-radius: 6px;
}
.phone-compose {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 28px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  min-height: 56px;
  border-top: 0.5px solid rgba(60, 60, 67, 0.18);
  padding: 8px 10px 10px;
  background: rgba(249, 249, 250, 0.94);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}
.phone-compose span {
  border: 1px solid #c7c7cc;
  border-radius: 18px;
  padding: 8px 12px;
  color: #8e8e93;
  background: #fff;
  font-size: 13px;
}
.phone-compose button { min-height: 34px; border: 0; padding: 0 8px; color: #c7c7cc; background: transparent; font-weight: 600; }
.contact-profile { padding: 34px 28px; text-align: center; }
.phone-contact-avatar { display: grid; place-items: center; width: 82px; height: 82px; margin: 0 auto 12px; border-radius: 18px; color: #f0eee4; background: #3d555d; font: 700 30px/1 SimSun, serif; }
.contact-profile h2 { margin: 0; font-size: 22px; }
.contact-profile > p { color: #7b8580; font-size: 12px; }
.contact-profile dl { margin: 28px 0 18px; border-block: 1px solid #ccd2cf; text-align: left; }
.contact-profile dt, .contact-profile dd { margin: 0; padding: 8px 2px; }
.contact-profile dt { padding-bottom: 0; color: #8b938f; font-size: 11px; }
.contact-profile dd { border-bottom: 1px solid #d7dcda; font-weight: 700; }
.contact-profile .contact-status { color: #762e2b; }
.phone-system-note { margin: 18px; border-left: 3px solid #8d3b36; padding: 9px 11px; color: #6f7773; background: #e2e6e3; font-size: 11px; line-height: 1.6; text-align: left; }

.phone-list { background: #fff; }
.phone-list > button, .phone-browser-card > button { display: grid; grid-template-columns: 42px minmax(0, 1fr) 16px; align-items: center; gap: 10px; width: 100%; min-height: 68px; border: 0; border-bottom: 1px solid #d9ddda; padding: 8px 12px; color: #232829; background: #fff; text-align: left; }
.phone-list > button:hover, .phone-browser-card > button:hover { background: #f2f5f3; }
.phone-list-icon { width: 40px; height: 40px; border-radius: 9px; background: #6d7773; font-weight: 700; }
.phone-list strong, .phone-list small, .phone-browser-card strong, .phone-browser-card small { display: block; }
.phone-list small, .phone-browser-card small { margin-top: 3px; overflow: hidden; color: #7f8984; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.phone-list em, .phone-browser-card em { color: #a0a8a4; font-style: normal; font-size: 20px; text-align: right; }
.phone-list-static { cursor: default; }
.phone-list .danger-row strong { color: #8d3430; }
.phone-note-view article { margin: 18px 14px; min-height: 460px; border: 1px solid #d4c89e; padding: 22px 18px; background: #fffcef; line-height: 1.8; }
.phone-note-view code { display: block; margin: 18px 0; border: 1px dashed #a59768; padding: 12px; color: #6d2e2b; background: #f5efd5; font-size: 17px; }
.phone-note-view hr { margin: 28px 0; border: 0; border-top: 1px solid #d8cfac; }

.phone-address-form { display: grid; grid-template-columns: 1fr auto; gap: 6px; padding: 10px; background: #dfe5e2; }
.phone-address-form input { min-width: 0; min-height: 38px; border: 1px solid #b7c0bc; border-radius: 7px; padding: 8px 10px; background: #fff; font-size: 12px; }
.phone-address-form button { min-height: 38px; border: 0; border-radius: 6px; padding: 0 12px; color: #fff; background: #3d6778; }
.phone-browser-card { margin-top: 12px; border-block: 1px solid #ccd3cf; background: #fff; }
.phone-browser-card h3 { margin: 0; padding: 10px 12px 6px; color: #7a847f; font-size: 11px; font-weight: 400; }
.phone-browser-card > button { grid-template-columns: minmax(0, 1fr) 16px; min-height: 58px; }
.browser-error-log, .phone-browser-result { margin: 14px 12px; border: 1px solid #c5cbc8; padding: 12px; background: #fff; font-size: 12px; }
.browser-error-log b { color: #923933; }
.browser-error-log p, .phone-browser-result p { margin: 5px 0; }
.phone-browser-result { border-color: #7d9a85; background: #eef7f0; }
.phone-browser-result button { width: 100%; margin-top: 8px; border: 0; padding: 9px; color: #fff; background: #406b51; }
.phone-browser #page-feedback { margin: 0 12px; }
.phone-browser #page-feedback .feedback { font-size: 11px; }

.phone-photo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; padding: 2px; }
.phone-photo-grid button { position: relative; aspect-ratio: 1; min-height: 0; overflow: hidden; border: 0; padding: 0; background: #56625d; }
.phone-photo-grid img { width: 100%; height: 100%; object-fit: cover; }
.phone-photo-grid button > span { position: absolute; left: 5px; bottom: 4px; color: #fff; font-size: 10px; text-shadow: 0 1px 4px #000; }
.phone-photo-placeholder { background: linear-gradient(145deg, #6b776f, #313b39) !important; }
.phone-photo-placeholder.dark { background: linear-gradient(145deg, #282d2d, #101313) !important; }
.phone-photo-placeholder span { inset: 50% auto auto 50% !important; transform: translate(-50%, -50%); color: rgba(255,255,255,.35) !important; font-size: 25px !important; }
.phone-photo-view > img { display: block; width: 100%; height: 390px; object-fit: cover; background: #111; }
.phone-photo-meta { padding: 16px; }
.phone-photo-meta strong, .phone-photo-meta span { display: block; }
.phone-photo-meta span { margin-top: 4px; color: #7a837f; font-size: 11px; }
.phone-photo-meta p { border-top: 1px solid #d2d7d4; padding-top: 12px; font-size: 12px; line-height: 1.6; }
.phone-recovery-note { align-self: center; border-left: 1px solid #3e474a; padding: 24px 0 24px 32px; color: #aab3af; }
.phone-recovery-note h2 { margin: 4px 0 12px; color: #e7e8e2; font: 700 22px/1.4 SimSun, serif; }
.phone-recovery-note p { line-height: 1.75; }
.phone-recovery-note dl { display: grid; grid-template-columns: 74px 1fr; gap: 7px 12px; margin-top: 26px; border-top: 1px solid #31383a; padding-top: 16px; font-size: 12px; }
.phone-recovery-note dt { color: #66716d; }
.phone-recovery-note dd { margin: 0; color: #b7c0bc; }

/* 可点纸灯 · 游戏特色交互 */
.paper-lamp {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 88px;
  min-height: 110px;
  border: 0;
  padding: 8px 10px 10px;
  background: transparent;
  cursor: pointer;
  color: inherit;
}
.paper-lamp .pl-rope {
  width: 2px;
  height: 18px;
  background: #8a8070;
  opacity: .8;
}
.paper-lamp .pl-body {
  position: relative;
  width: 54px;
  height: 64px;
  border-radius: 18px 18px 14px 14px;
  background: linear-gradient(#f4f1e6, #d9d2bc 70%, #c4bba3);
  border: 1px solid #a89f88;
  box-shadow: inset 0 0 12px rgba(255, 255, 255, 0.35), 0 4px 12px rgba(0, 0, 0, 0.18);
  overflow: hidden;
}
.paper-lamp .pl-shade {
  position: absolute;
  inset: 8px 6px;
  border: 1px dashed rgba(120, 110, 90, 0.35);
  border-radius: 10px;
}
/* 无火白灯：点亮=湿纸透冷光，不是火焰 */
.paper-lamp .pl-flame {
  position: absolute;
  left: 50%;
  top: 48%;
  width: 70%;
  height: 72%;
  transform: translate(-50%, -50%);
  border-radius: 40% 40% 36% 36%;
  background: radial-gradient(ellipse at 50% 45%, rgba(220, 232, 236, 0.55), rgba(170, 190, 198, 0.12) 55%, transparent 72%);
  opacity: 0;
  filter: blur(2px);
}
.paper-lamp.is-lit .pl-body {
  box-shadow: inset 0 0 16px rgba(210, 224, 230, 0.35), 0 0 18px rgba(170, 195, 210, 0.22), 0 4px 12px rgba(0, 0, 0, 0.22);
}
.paper-lamp.is-lit .pl-flame {
  opacity: 1;
  animation: lampBreath 4.8s ease-in-out infinite;
}
@keyframes lampBreath {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 0.9; }
}
.paper-lamp .pl-label {
  font-size: 12px;
  font-weight: 600;
}
.paper-lamp .pl-hint {
  font-size: 11px;
  color: #8a918d;
}
.paper-lamp.is-lit .pl-hint { color: #8a7030; }
.paper-lamp.size-sm { min-width: 72px; min-height: 96px; }
.paper-lamp.size-sm .pl-body { width: 42px; height: 50px; border-radius: 14px 14px 11px 11px; }
.paper-lamp.size-lg .pl-body { width: 72px; height: 86px; border-radius: 22px 22px 18px 18px; }
.paper-lamp.size-lg { min-width: 110px; min-height: 140px; }

.lamp-ritual {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
@media (max-width: 640px) {
  .lamp-ritual { grid-template-columns: 1fr; justify-items: center; text-align: left; }
}
.wall-lamps {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
  justify-content: center;
  margin: 14px 0;
}
.offer-lamp-row {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 10px;
}
.lamp-count {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
}
/* 引导页动态：薄雾漂移 + 对准照片灯位的「要亮不亮」光晕 */
.hero-mist {
  position: absolute;
  inset: -10% -15%;
  pointer-events: none;
  z-index: 2;
  opacity: 0.45;
  mix-blend-mode: screen;
  background:
    radial-gradient(ellipse 60% 45% at 30% 75%, rgba(200, 210, 215, 0.6), transparent 62%),
    radial-gradient(ellipse 50% 35% at 70% 40%, rgba(180, 195, 200, 0.5), transparent 65%),
    radial-gradient(ellipse 30% 35% at 85% 25%, rgba(220, 228, 230, 0.7), transparent 60%);
}
.hero-mist-a { animation: mistDriftA 28s ease-in-out infinite alternate; }
.hero-mist-b {
  opacity: 0.35;
  background:
    radial-gradient(ellipse 55% 45% at 80% 65%, rgba(210, 220, 222, 0.55), transparent 60%),
    radial-gradient(ellipse 45% 38% at 40% 25%, rgba(190, 205, 210, 0.45), transparent 58%);
  animation: mistDriftB 36s ease-in-out infinite alternate;
}
@keyframes mistDriftA {
  from { transform: translate3d(-1.5%, 0.5%, 0) scale(1.04); }
  to { transform: translate3d(2%, -1.5%, 0) scale(1.08); }
}
@keyframes mistDriftB {
  from { transform: translate3d(1.5%, 0, 0) scale(1.06); }
  to { transform: translate3d(-2.5%, 1.2%, 0) scale(1); }
}

/* 叠在 bg_intro 纸灯位置：冷湿纸反光，不是点着的火 */
.hero-lantern-glow {
  position: absolute;
  top: 8%;
  right: 15%;
  width: min(180px, 22vw);
  height: min(230px, 30vw);
  z-index: 1;
  pointer-events: none;
  border-radius: 46% 46% 42% 42%;
  background:
    radial-gradient(ellipse 55% 48% at 50% 44%, rgba(210, 222, 228, 0.16), transparent 70%),
    radial-gradient(ellipse 40% 55% at 50% 48%, rgba(180, 196, 204, 0.08), transparent 72%);
  filter: blur(14px);
  opacity: 0.22;
  animation: lanternBreath 11s ease-in-out infinite;
}
.hero-lantern-glow.guide-glow {
  top: 10%;
  right: 7%;
  width: min(120px, 18vw);
  height: min(150px, 24vw);
  opacity: 0.18;
}
@keyframes lanternBreath {
  0%, 100% { opacity: 0.12; }
  38%      { opacity: 0.28; }
  62%      { opacity: 0.16; }
}
.case-hero-shade { z-index: 0; }
.case-hero-content, .case-hero-top, .recovery-guide > *:not(.hero-mist):not(.hero-lantern-glow) {
  position: relative;
  z-index: 2;
}
.recovery-guide { position: relative; overflow: hidden; }

/* 引导页按钮与信息条适配 */
.case-hero-top {
  border-bottom-color: rgba(232, 230, 220, 0.14);
}
.case-hero-top span:first-child {
  font-size: 12px;
  letter-spacing: 0.14em;
  font-weight: 600;
}
.case-facts {
  background: rgba(10, 14, 14, 0.28);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.case-actions .case-primary {
  min-width: 148px;
  border: 1px solid #8b332e;
  background: linear-gradient(180deg, #9a3b35, #6e2824);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}
.case-actions .case-secondary {
  min-width: 132px;
  border: 1px solid rgba(232, 230, 220, 0.35);
  background: rgba(12, 16, 16, 0.35);
  color: #e9e7df;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.case-actions button {
  border-radius: 2px;
  letter-spacing: 0.06em;
}
.case-scroll {
  opacity: 0.75;
}
@media (prefers-reduced-motion: reduce) {
  .hero-mist, .hero-lantern-glow { animation: none; }
  .hero-lantern-glow { opacity: 0.4; }
}

/* 点灯显影 */
.lamp-reveal {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  margin: 14px 0;
  border: 1px solid var(--line);
  padding: 12px 14px;
  background: rgba(244, 241, 230, 0.55);
}
.lamp-reveal.is-open {
  border-color: #c9a85a;
  background: linear-gradient(rgba(255, 248, 220, 0.45), rgba(244, 241, 230, 0.7));
  box-shadow: 0 0 22px rgba(201, 168, 90, 0.18);
}
.lamp-reveal .lr-hidden {
  color: #8a918d;
  font-size: 13px;
  letter-spacing: 0.12em;
  filter: blur(0.2px);
}
.lamp-reveal.is-open .lr-hidden { display: none; }
.lamp-reveal .lr-body {
  display: none;
  color: var(--text);
  font-size: 14px;
  line-height: 1.8;
}
.lamp-reveal.is-open .lr-body { display: block; animation: inkIn 0.7s ease both; }
.lamp-reveal .lr-title {
  display: block;
  margin-bottom: 4px;
  color: var(--blue);
  font-weight: 700;
}
@media (max-width: 560px) {
  .lamp-reveal { grid-template-columns: 1fr; justify-items: center; text-align: left; }
  .final-lamp-row { align-items: flex-start; }
}
/* Win7 托盘气泡：右下角、指回通知区 */
.toast {
  position: fixed;
  z-index: 300;
  right: 14px;
  bottom: 60px;
  width: 260px;
  color: #1b2730;
  background: linear-gradient(#fdfdf8, #f0f3f5);
  border: 1px solid #7f96a6;
  border-radius: 4px;
  box-shadow: 0 8px 22px rgba(10, 30, 45, .28), 0 0 0 1px rgba(255, 255, 255, .55) inset;
  font: 12px/1.55 "Segoe UI", "Microsoft YaHei", sans-serif;
  text-align: left;
  animation: toast-in-win7 .22s ease-out;
}
.toast::after {
  content: "";
  position: absolute;
  right: 34px;
  bottom: -7px;
  width: 12px;
  height: 7px;
  background: #f0f3f5;
  border-right: 1px solid #7f96a6;
  border-bottom: 1px solid #7f96a6;
  transform: skewX(-28deg);
}
.toast-titlebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 26px;
  padding: 3px 4px 3px 10px;
  color: #163247;
  background: linear-gradient(#e7f2f8, #c5dcea 48%, #a8c6da 52%, #c3d9e6);
  border-bottom: 1px solid #8fb0c2;
  border-radius: 3px 3px 0 0;
  text-shadow: 0 1px 0 rgba(255, 255, 255, .8);
}
.toast-title {
  font-size: 12px;
  font-weight: 600;
}
.toast-close {
  width: 22px;
  min-width: 22px;
  height: 18px;
  min-height: 18px;
  display: grid;
  place-items: center;
  border: 1px solid #8d6a62;
  border-radius: 2px;
  padding: 0;
  color: #fff;
  background: linear-gradient(#e7a398, #b94b3e 52%, #9c2f24);
  box-shadow: none;
}
.toast-close svg { width: 8px; height: 8px; display: block; }
.toast-body {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  padding: 10px 12px 12px;
}
.toast-glyph {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  margin-top: 1px;
  color: #2f6d94;
}
.toast-glyph svg { width: 16px; height: 16px; display: block; }
.toast-text { margin: 0; color: #1b2730; font-size: 12px; line-height: 1.55; }
.toast.bad, .toast.error {
  background: linear-gradient(#fff9e6, #f3ead0);
  border-color: #b3a579;
}
.toast.bad::after, .toast.error::after { background: #f3ead0; border-color: #b3a579; }
.toast.bad .toast-titlebar, .toast.error .toast-titlebar {
  color: #4a3b18;
  background: linear-gradient(#f8e9b8, #e2d08f 48%, #d2bc6e 52%, #e6d59a);
  border-bottom-color: #b3a579;
}
.toast.bad .toast-glyph, .toast.error .toast-glyph { color: #9a6b12; }
.toast.good {
  background: linear-gradient(#f3fbf4, #e2f0e4);
  border-color: #86a98c;
}
.toast.good::after { background: #e2f0e4; border-color: #86a98c; }
.toast.good .toast-titlebar {
  color: #204628;
  background: linear-gradient(#d9efdC, #b7d6bb 48%, #9fc4a4 52%, #c0dcc4);
  border-bottom-color: #86a98c;
}
.toast.good .toast-glyph { color: #2f7a3c; }
.toast.contaminated {
  background: linear-gradient(#2a0d0d, #1a0606);
  border-color: #8b1a1a;
  color: #e8c8c8;
  box-shadow: 0 8px 22px rgba(80, 0, 0, .5), 0 0 18px rgba(180, 30, 30, .25), 0 0 0 1px rgba(120, 20, 20, .4) inset;
  animation: toast-in-contaminated .3s ease-out;
}
.toast.contaminated::after {
  background: #1a0606;
  border-color: #8b1a1a;
}
.toast.contaminated .toast-titlebar {
  color: #f0d0d0;
  background: linear-gradient(#4a1010, #2a0808 48%, #1a0404 52%, #2a0808);
  border-bottom-color: #6b1515;
  text-shadow: 0 0 6px rgba(200, 40, 40, .5);
}
.toast.contaminated .toast-title { color: #f0c0c0; }
.toast.contaminated .toast-text { color: #e0b8b8; }
.toast.contaminated .toast-glyph { color: #c83030; }
.toast.contaminated .toast-close { color: #f0c0c0; border-color: #6b1515; background: linear-gradient(#3a0c0c, #1a0404); }
@keyframes toast-in-contaminated {
  from { opacity: 0; transform: translateY(10px) scale(.95); filter: blur(2px); }
  50% { filter: blur(0); }
}
@keyframes toast-in-win7 {
  from { opacity: 0; transform: translateY(10px); }
}

/* ---------- 页脚 ---------- */
.footer { margin-top: 10px; border-top: 2px solid var(--blue); background: var(--paper); padding: 14px 16px 22px; color: var(--muted); text-align: center; font-size: 12px; line-height: 2; }
.footer .friend-links { color: var(--blue); }
.footer .friend-links span { color: var(--link); cursor: pointer; }
.footer .friend-links span:hover { text-decoration: underline; }
.footer .subliminal { color: #b3b0a3; }

/* 外层支线页 */
.side-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.side-links.row-links { margin: 14px 0 4px; }
.side-chip, .strip-btn {
  min-height: 34px;
  padding: 5px 12px;
  border: 1px solid #8a918c;
  border-radius: 2px;
  color: var(--text);
  background: #e4e2d8;
  font-size: 13px;
  cursor: pointer;
}
.side-chip:hover, .strip-btn:hover { background: #d7d4c8; }
.strip-btn.on { color: #fff; background: var(--blue); border-color: var(--blue); }
.mast-strip .strip-btn {
  min-height: 28px;
  border: 0;
  border-radius: 0;
  padding: 6px 14px;
  background: transparent;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
}
.mast-strip .strip-btn.on {
  color: var(--rust);
  background: rgba(255, 255, 255, .55);
  box-shadow: inset 0 -2px 0 var(--lamp);
}
.side-sheet { border: 1px solid var(--line); padding: 16px 18px; background: #f3f0e7; line-height: 1.8; }
.side-sheet h3 { margin: 0 0 8px; }
.side-photo { margin: 12px 0; }
.side-photo img { display: block; width: 100%; max-height: 220px; object-fit: cover; border: 1px solid var(--line); filter: saturate(.65) contrast(.96); }
.side-photo figcaption { margin-top: 6px; color: var(--muted); font-size: 12px; }
.fact-line { margin-top: 12px; padding: 8px 10px; border-left: 3px solid var(--blue-line); background: #e2e6e9; font-size: 13px; }
.next-word { margin-top: 10px; color: var(--muted); font-size: 13px; }
.note-draft { margin: 0; padding-left: 20px; }
.note-draft li { margin: 8px 0; }
.note-draft .highlight { color: var(--rust); font-weight: 700; }
.call-log { margin: 0; padding: 0; list-style: none; }
.call-log li {
  display: grid;
  grid-template-columns: 120px 1fr auto;
  gap: 10px;
  padding: 8px 4px;
  border-bottom: 1px dotted var(--line);
  font-size: 13px;
}
@media (max-width: 560px) {
  .call-log li { grid-template-columns: 1fr; gap: 2px; }
}
@media (max-width: 760px) {
  .site-shell { border: 0; }
  .masthead { padding: 12px 12px 8px; }
  .masthead .mast-clock { display: none; }
  .layout { grid-template-columns: 1fr; gap: 16px; padding: 12px 12px 22px; }
  .sidebar { position: static; }
  .status-bar { padding-inline: 12px; }
  .status-bar .status-mark { width: 100%; margin-left: 0; }
  .form-grid.two, .photo-compare { grid-template-columns: 1fr; }
  .offering-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-grid { grid-template-columns: 1fr; }
  .lamp-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .route-row { grid-template-columns: 1fr; }
  button, .button, input, select { min-height: 40px; font-size: 14px; }
  .nav button { min-height: 40px; padding: 8px 16px; }
  .archive-date { float: none; display: block; }
  .portal-header { min-height: 76px; padding: 14px 12px; }
  .portal-header h1 { font-size: 20px; }
  .portal-main { padding: 14px 12px 22px; }
  .investigation-bar { gap: 8px; padding-inline: 8px; }
  .investigation-bar .ib-note, .investigation-bar .ib-stage { display: none; }
  .tone-inbox .portal-main { margin-inline: 0; padding: 0; }
  .mast-strip { gap: 3px 12px; padding-inline: 12px; }
  .forum-mast, .village-mast { min-height: 74px; padding: 12px 14px; }
  .forum-mast .mast-brand { font-size: 22px; letter-spacing: 3px; }
  .tour-mast { min-height: 118px; padding: 38px 14px 14px; }
  .tour-mast .mast-brand { font-size: 24px; }
  .village-mast { flex-wrap: wrap; }
  .village-mast .mast-date { display: none; }
  .desk-lead { grid-template-columns: 1fr 94px; gap: 12px; }
  .desk-lead h2 { font-size: 21px; }
  .progress-stamp strong { font-size: 12px; }
  .site-grid { grid-template-columns: 1fr; }
  .desk-columns, .tour-grid, .old-home-columns { grid-template-columns: 1fr; }
  .chat { max-width: 88%; }
  .forum-userbar { flex-direction: column; gap: 2px; }
  .tour-hero, .tour-hero img { min-height: 230px; height: 230px; }
}

@media (max-width: 760px) {
  .tone-inbox .portal-site-foot { display: none; }
  .phone-stage { display: block; min-height: 0; }
  .phone-device { width: 100%; padding: 0; border: 0; border-radius: 0; box-shadow: none; }
  .phone-os-topbar { padding: 10px 12px 4px; }
  .phone-os-title { display: none; }
  .phone-os-caption { display: none; }
  .phone-glow { display: none; }
  .phone-device, .phone-device-body {
    width: min(393px, 100%);
    height: calc(100dvh - 72px);
    max-height: none;
    border-radius: 36px;
  }
  .phone-device-body { padding: 8px; }
  .phone-screen { border-radius: 30px; }
  .phone-stage { grid-template-columns: 1fr; min-height: 0; gap: 0; }
  .phone-screen { height: calc(100vh - 38px); min-height: 620px; border-radius: 0; }
  .phone-notification, .phone-app-nav button, .phone-address-form button, .phone-list > button, .phone-browser-card > button { font-size: inherit; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .notice-bar .nb-roll { animation: none; padding-left: 0; white-space: normal; }
  .mountain-system-arrival { animation: mountainSystemReduced 7.2s linear both !important; }
  .mountain-system-viewports i,
  .mountain-system-lights i { animation: none !important; transform: none !important; }
  .intrusion-line { width: auto; animation: none !important; }
}
@keyframes mountainSystemReduced { 0%,10% { opacity: 0; } 20%,82% { opacity: 1; } 100% { opacity: 0; } }

/* ===== Windows 7 调查电脑外壳 ===== */
.win7-os {
  position: fixed;
  z-index: 1;
  inset: 0;
  min-width: 320px;
  overflow: hidden;
  color: #17202a;
  background: #102d3b;
  font-family: "Segoe UI", "Microsoft YaHei", Tahoma, sans-serif;
  line-height: 1.45;
}
.win7-wallpaper {
  position: absolute;
  inset: 0 0 40px;
  background:
    linear-gradient(120deg, rgba(4, 35, 54, .08), rgba(20, 76, 98, .02) 45%, rgba(2, 24, 35, .12)),
    url("/public/assets/desktop_wallpaper_normal.png") center / cover no-repeat;
  filter: saturate(.92) contrast(.98) brightness(.92);
}
.win7-wallpaper::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to bottom, rgba(115, 187, 224, .08), transparent 56%, rgba(4, 19, 27, .58)),
    linear-gradient(to left, rgba(4, 19, 27, .44), transparent 24%);
}
.win7-os.contamination-mountain-awake .win7-wallpaper,
.win7-os.contamination-scar .win7-wallpaper {
  background:
    linear-gradient(to bottom, rgba(3, 10, 13, .28), rgba(2, 7, 9, .58)),
    url("/public/assets/desktop_wallpaper_lamp.png") center / cover no-repeat;
  filter: saturate(.5) contrast(1.1) brightness(.55);
}
.win7-os.contamination-mountain-awake .win7-window,
.win7-os.contamination-scar .win7-window {
  box-shadow: 0 13px 34px rgba(0, 0, 0, .62), 0 0 0 1px rgba(221, 233, 229, .2);
}
.win7-os.contamination-mountain-awake .win7-titlebar strong,
.win7-os.contamination-scar .win7-titlebar strong { font-weight: 400; }
.win7-wallpaper.road-awake {
  background:
    linear-gradient(to bottom, rgba(115, 187, 224, .06), transparent 56%, rgba(4, 19, 27, .52)),
    url("/public/assets/desktop_wallpaper_figure.png") center / cover no-repeat;
}
.win7-wallpaper.road-awake::before {
  content: "";
  position: absolute;
  z-index: 1;
  left: 66.2%;
  top: 53.5%;
  width: 5px;
  height: 9px;
  border-radius: 48% 48% 42% 42%;
  background: rgba(231, 241, 232, .82);
  box-shadow: 0 0 4px rgba(222, 237, 227, .32);
  filter: blur(.45px);
  opacity: .64;
}
.win7-desktop-caption {
  position: absolute;
  z-index: 2;
  top: 18px;
  right: 24px;
  display: grid;
  justify-items: end;
  color: rgba(240, 248, 250, .8);
  text-shadow: 0 1px 3px #10212a;
}
.win7-desktop-caption strong { font-size: 13px; font-weight: 400; }
.win7-desktop-caption span { color: rgba(224, 236, 239, .62); font-size: 11px; }

.handover-progress-mini {
  position: absolute;
  z-index: 52;
  top: 16px;
  right: 24px;
  padding: 4px 10px;
  border-radius: 3px;
  background: rgba(20, 40, 55, 0.55);
  backdrop-filter: blur(4px);
}
.handover-progress-mini strong { font: 600 15px/1 Consolas, monospace; color: rgba(220, 234, 239, 0.85); }
.handover-progress-mini small { margin-left: 2px; font-size: 10px; font-weight: 400; color: rgba(220, 234, 239, 0.55); }
.decoder-tool { padding: 20px; font: 13px "Segoe UI", "Microsoft YaHei", sans-serif; background: #f5f6f0; height: 100%; box-sizing: border-box; }
.decoder-tool h1 { margin: 0 0 4px; font-size: 18px; color: #2a4a3a; }
.decoder-hint { margin: 0 0 16px; color: #777; font-size: 12px; }
.decoder-tabs { display: flex; gap: 4px; margin-bottom: 16px; }
.decoder-tab { padding: 6px 14px; border: 1px solid #bbb; background: #eee; cursor: pointer; font-size: 12px; }
.decoder-tab.active { background: #fff; border-bottom-color: #fff; font-weight: 600; }
.decoder-panel { background: #fff; border: 1px solid #ccc; padding: 16px; min-height: 200px; }
.decoder-panel.hidden { display: none; }
.decoder-panel label { display: block; margin-bottom: 8px; }
.decoder-panel input { padding: 6px 8px; border: 1px solid #999; width: 260px; }
.decoder-panel button { padding: 6px 16px; background: #e0e0e0; border: 1px solid #999; cursor: pointer; }
.decoder-panel output { display: block; margin-top: 10px; padding: 8px; background: #f0f0f0; font-family: Consolas, monospace; min-height: 20px; }
.decoder-note { color: #999; font-size: 11px; margin-top: 8px; }
.morse-table td { padding: 4px 12px; border: 1px solid #ddd; }
.decoder-preset-btn { background: #e8edea; border: 1px solid #8ba898; border-radius: 3px; cursor: pointer; color: #1e4533; transition: all 0.15s; }
.decoder-preset-btn:hover { background: #d2e4db; border-color: #55856b; }
.handover-progress-mini strong { font: 600 15px/1 Consolas, monospace; color: rgba(220, 234, 239, 0.85); }
.handover-progress-mini small { margin-left: 2px; font-size: 10px; font-weight: 400; color: rgba(220, 234, 239, 0.55); }
.handover-progress {
  position: absolute;
  z-index: 52;
  top: 16px;
  right: 24px;
  width: 286px;
  min-height: 72px;
  padding: 8px 10px 9px;
  overflow: hidden;
  border: 1px solid rgba(205, 225, 236, .58);
  border-radius: 3px;
  color: rgba(245, 250, 252, .94);
  background: rgba(12, 35, 48, .76);
  box-shadow: 0 4px 14px rgba(2, 13, 19, .3), inset 0 1px rgba(255, 255, 255, .12);
  text-shadow: 0 1px 2px #07141a;
  pointer-events: auto;
}
.handover-progress > span { display: block; font-size: 10px; color: rgba(220, 234, 239, .72); }
.handover-progress > strong { position: absolute; top: 7px; right: 10px; font: 600 18px/1 Consolas, monospace; }
.handover-progress > strong small { margin-left: 2px; font-size: 10px; font-weight: 400; color: rgba(220, 234, 239, .68); }
.handover-progress > div { display: grid; grid-template-columns: repeat(15, 1fr); gap: 2px; margin-top: 10px; }
.handover-progress > div i { height: 3px; background: rgba(208, 224, 231, .22); }
.handover-progress > div i.reached { background: #d9e6e5; box-shadow: 0 0 5px rgba(224, 239, 237, .34); }
.handover-progress > p { margin: 7px 0 0; color: rgba(238, 245, 246, .88); letter-spacing: 0; }
.handover-progress-node { font-size: 11px; }
.handover-progress-objective { padding-top: 7px; border-top: 1px solid rgba(220, 234, 239, .16); font-size: 11px; line-height: 1.45; }
.handover-progress-objective b { display: block; margin-bottom: 2px; color: rgba(220, 234, 239, .58); font-size: 9px; font-weight: 400; }
.handover-progress.is-compact {
  top: 35px;
  right: 12px;
  width: min(310px, calc(100vw - 28px));
  min-height: 54px;
  padding: 7px 10px 8px;
  background: rgba(21, 65, 91, .7);
}
.handover-progress.is-compact > span { font-size: 9px; }
.handover-progress.is-compact > strong { top: 7px; right: 9px; font-size: 13px; }
.handover-progress.is-compact > div,
.handover-progress.is-compact > .handover-progress-node { display: none; }
.handover-progress.is-compact > .handover-progress-objective { display: block; margin-top: 5px; padding: 5px 28px 0 0; font-size: 10px; line-height: 1.35; }
.handover-progress.is-compact > .handover-progress-objective b { display: inline; margin-right: 5px; }
.handover-answer { margin-top: 8px; border-top: 1px solid rgba(220, 234, 239, .16); color: #eef5f7; text-shadow: none; }
.handover-answer summary { padding-top: 7px; color: #dbe8ec; font-size: 10px; cursor: pointer; }
.handover-answer form { display: grid; gap: 7px; padding-top: 8px; }
.handover-answer label { display: grid; gap: 3px; color: rgba(231, 240, 243, .78); font-size: 9px; }
.handover-answer input,
.handover-answer select { min-width: 0; width: 100%; height: 27px; padding: 3px 6px; border: 1px solid #8ea3ae; border-radius: 2px; background: #f7fafb; color: #142028; font: 11px/1.2 "Microsoft YaHei", sans-serif; }
.handover-answer button { justify-self: start; min-height: 26px; padding: 4px 11px; border: 1px solid #8da3ae; border-radius: 2px; background: linear-gradient(#fff, #dbe7ec); color: #142028; font-size: 10px; cursor: pointer; }
.handover-answer p { min-height: 1.3em; margin: 0; color: #ffb8ae; font-size: 9px; line-height: 1.4; }
.handover-sort-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; }
.handover-sort-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.handover-sort-grid label { text-align: center; }

.phone-account-strip { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-bottom: 1px solid #d9dde1; background: #f2f4f6; color: #66717a; font-size: 12px; }
.phone-account-strip strong { color: #30383e; font-weight: 500; }
.viewer-puzzle { display: grid; gap: 7px; padding: 10px 12px; border: 1px solid rgba(205, 225, 236, .46); background: rgba(8, 20, 27, .9); color: #eef5f7; box-shadow: 0 5px 20px rgba(0,0,0,.42); }
/* 默认左上角：原图差异物（白灯在左中、人影在中右）都在中下部，避开它们 */
.photo-stage > .viewer-puzzle { position: absolute; z-index: 4; left: 18px; top: 16px; width: min(340px, calc(100% - 36px)); }
.viewer-puzzle.is-dragging { user-select: none; box-shadow: 0 8px 28px rgba(0,0,0,.6); }
.viewer-puzzle-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; cursor: grab; touch-action: none; }
.viewer-puzzle-head:active { cursor: grabbing; }
.viewer-puzzle-collapse { padding: 2px 9px !important; font-size: 10px; line-height: 1.5; white-space: nowrap; }
.viewer-puzzle.is-collapsed { font: inherit; width: auto; justify-self: start; cursor: pointer; padding: 6px 12px; border: 1px solid rgba(205, 225, 236, .46); background: rgba(8, 20, 27, .9); color: #eef5f7; font-size: 12px; box-shadow: 0 5px 20px rgba(0,0,0,.42); }
.viewer-puzzle > strong { font-size: 12px; }
.viewer-puzzle label { display: grid; gap: 5px; color: #c7d4da; font-size: 11px; line-height: 1.4; }
.viewer-puzzle input { min-width: 0; padding: 6px 7px; border: 1px solid #7f929d; background: #fff; color: #111; }
.viewer-puzzle button { justify-self: start; padding: 5px 12px; border: 1px solid #7892a1; background: linear-gradient(#fff,#d9e5eb); color: #182127; }
.viewer-puzzle p { min-height: 1.2em; margin: 0; color: #f0b0a9; font-size: 10px; }
.viewer-puzzle.is-solved { grid-auto-flow: column; justify-content: start; }
.viewer-puzzle.is-solved span { color: #b9cbd1; font-size: 11px; }
.viewer-forum-link { display: block; width: 100%; margin: 0; padding: 10px 14px; border: 0; border-top: 1px solid #d8e0e5; background: #f4f6f7; color: #2e5f82; text-align: left; cursor: pointer; }
.viewer-forum-link:hover { background: #e8eef2; }
.viewer-forum-link span { display: block; font-size: 12px; }
.viewer-forum-link small { display: block; margin-top: 3px; color: #8899aa; font-size: 10px; }
.audio-player-copy .viewer-puzzle { max-width: 520px; margin: 12px 0; }
.station-line-puzzle { display: grid; gap: 8px 10px; justify-items: start; margin: 14px 0; padding: 13px; border: 1px solid #9aa9ad; background: #eef2f1; }
.station-line-puzzle h3, .station-line-puzzle p { margin: 0; }
.station-line-puzzle h3 { font-size: 14px; }
.station-line-puzzle p { color: #4f5a5c; font-size: 12px; }
.station-line-puzzle button { min-height: 30px; padding: 5px 12px; }
.voice-puzzle > span { color: #c7d4da; font-size: 11px; line-height: 1.5; }
.voice-waveform { display: flex; align-items: center; gap: 3px; height: 34px; padding: 4px 6px; border: 1px solid #57717a; background: #101d22; }
.voice-waveform i, .voice-waveform b { display: block; background: repeating-linear-gradient(90deg, #7aadb0 0 2px, transparent 2px 6px); }
.voice-waveform i { width: 36%; height: 11px; opacity: .55; }
.voice-waveform b { flex: 1; height: 24px; opacity: .85; }
.station-line-solved { margin: 14px 0; padding: 9px 12px; border: 1px solid #7b9990; background: #e4efea; color: #23453b; font: 600 12px/1.4 Consolas, monospace; }

.win7-desktop-icons {
  position: absolute;
  z-index: 3;
  top: 10px;
  right: 10px;
  left: 8px;
  bottom: 52px;
  display: grid;
  grid-auto-flow: column;
  grid-template-rows: repeat(6, 82px);
  grid-auto-columns: 78px;
  align-content: start;
  gap: 4px;
  user-select: none;
  -webkit-user-select: none;
}
.win7-desktop-icons > .win7-desktop-shortcut { touch-action: none; }
.win7-desktop-shortcut.is-drag-source { opacity: .32; }
.desktop-icon-drag-ghost {
  position: absolute;
  z-index: 75;
  width: 78px;
  min-height: 82px;
  pointer-events: none;
  opacity: .78;
  filter: drop-shadow(0 7px 8px rgba(0, 0, 0, .48));
}
.desktop-drop-slot {
  width: 78px;
  height: 82px;
  border: 1px solid rgba(222, 242, 255, .78);
  border-radius: 2px;
  background: rgba(103, 176, 222, .25);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22);
  pointer-events: none;
}
.desktop-drop-slot[hidden] { display: none; }
.win7-desktop-shortcut.lanternized.lantern-new { animation: desktopLanternReveal .72s cubic-bezier(.2,.62,.24,1) both; animation-delay: calc(var(--infection-index, 0) * 230ms); }
.desktop-lantern-icon { position: relative; width: 48px; height: 48px; display: block; overflow: hidden; border-radius: 42% 42% 48% 48%; background: rgba(10,14,18,.55); box-shadow: 0 2px 6px rgba(0,0,0,.5); }
.desktop-lantern-icon img { position: absolute; width: 40px; height: 40px; max-width: none; left: 50%; top: 50%; object-fit: contain; transform: translate(-50%,-50%); filter: brightness(1.15) drop-shadow(0 0 3px rgba(230,240,235,.35)); }
.lanternized.inner-lit .desktop-lantern-icon { background: rgba(20,28,32,.45); box-shadow: 0 0 14px rgba(224,235,226,.5), 0 2px 4px rgba(0,0,0,.42); }
.lantern-copy.fresh { opacity: 0; animation-name: desktopLanternReplicate !important; animation-duration: .46s !important; animation-timing-function: steps(2,end) !important; animation-delay: var(--copy-delay, 0ms) !important; animation-fill-mode: forwards !important; }
.lantern-copy.settled { opacity: 1; }
.lantern-copy .desktop-lantern-icon { background: rgba(8,10,12,.6); }
.fifth-lantern > span:last-child:empty { min-height: 17px; }
@keyframes desktopLanternReveal { 0% { opacity: 0; filter: blur(2px); } 62% { opacity: .48; } 100% { opacity: 1; filter: none; } }
@keyframes desktopLanternReplicate { from { opacity: 0; } to { opacity: 1; } }
.win7-desktop-shortcut {
  width: 78px;
  min-height: 82px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 3px;
  border: 1px solid transparent;
  border-radius: 2px;
  padding: 3px 2px;
  color: #fff;
  background: transparent;
  box-shadow: none;
  text-align: center;
  text-shadow: 0 1px 3px #000, 1px 1px 1px #000;
  font: 12px/1.2 "Segoe UI", "Microsoft YaHei UI", sans-serif;
}
.win7-desktop-shortcut:hover,
.win7-desktop-shortcut:focus-visible,
.win7-desktop-shortcut.selected {
  border-color: rgba(212, 236, 251, .65);
  outline: 0;
  background: rgba(103, 176, 222, .28);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.22);
}
.win7-desktop-shortcut.selected {
  background: rgba(72, 145, 194, .42);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.32);
}
.win7-desktop-shortcut:active { transform: none; background: rgba(64, 145, 198, .38); }
.win7-app-icon {
  position: relative;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  color: #fff;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.55));
}
.win7-app-icon .glyph { width: 100%; height: 100%; }
.win7-app-icon.icon-phone,
.win7-app-icon.icon-browser,
.win7-app-icon.icon-case,
.win7-app-icon.icon-notepad,
.win7-app-icon.icon-guide,
.win7-app-icon.icon-recycle { background: transparent; border: 0; box-shadow: none; }
.win7-app-icon.icon-recycle {
  background: url("/public/assets/hs.png") center / contain no-repeat !important;
}
.win7-app-icon.icon-recycle .glyph { display: none !important; }
.recycle-empty { padding: 48px 16px; text-align: center; color: #666; font-size: 14px; }
.explorer-recycle-header, .explorer-recycle-row {
  display: grid !important;
  grid-template-columns: minmax(180px, 1.2fr) minmax(160px, 1.4fr) 130px 76px !important;
  align-items: center;
}
.recycle-item-notice {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff8d6;
  border-bottom: 1px solid #e2cb83;
  padding: 6px 14px;
  font-size: 12px;
  color: #4a3e14;
}
.recycle-item-notice .recycle-notice-icon {
  font-size: 14px;
}
.recycle-item-notice button {
  margin-left: auto;
  padding: 3px 12px;
  font-size: 12px;
  color: #1e395b;
  background: linear-gradient(to bottom, #ffffff, #e1e9f2);
  border: 1px solid #7a9ebc;
  border-radius: 3px;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.recycle-item-notice button:hover {
  background: linear-gradient(to bottom, #f2f8ff, #cfdfee);
  border-color: #42749e;
}
.win7-app-icon.icon-browser {
  background: url("/public/assets/ie.png") center / contain no-repeat !important;
}
.win7-app-icon.icon-browser .glyph { display: none !important; }
.win7-app-icon::after { display: none; }

/* 桌面右键菜单（Win7 经典风格） */
.win7-ctx-menu {
  position: fixed; z-index: 90;
  width: 208px; padding: 2px;
  background: #f5f5f5;
  border: 1px solid #9a9a9a;
  border-radius: 0;
  box-shadow: 2px 2px 6px rgba(0,0,0,.35);
}
.win7-ctx-menu[hidden] { display: none !important; }
.win7-ctx-menu button {
  width: 100%; display: flex; align-items: center; gap: 10px;
  padding: 6px 10px;
  border: 0; border-radius: 0;
  background: transparent; color: #1c1c1c;
  font: 12px/1 "Segoe UI", "Microsoft YaHei", sans-serif; text-align: left;
  cursor: pointer;
}
.win7-ctx-menu button .glyph { width: 16px; height: 16px; flex-shrink: 0; display: block; }
.win7-ctx-menu button:hover { background: #d4e8f7; color: #0c3a66; }
.win7-ctx-menu button:hover .glyph { color: #0c3a66; }
.ctx-sep { height: 1px; margin: 2px 2px; background: #d0d0d0; border-bottom: 1px solid #fff; }

/* 刷新桌面动画 */
.win7-desktop-icons.icons-refresh .win7-desktop-shortcut { animation: icon-refresh .5s ease both; }
@keyframes icon-refresh {
  0% { opacity: .2; transform: scale(.92); }
  100% { opacity: 1; transform: none; }
}

.win7-window {
  position: absolute;
  z-index: 20;
  left: 200px;
  top: 80px;
  width: 700px;
  height: 500px;
  min-width: 480px;
  min-height: 320px;
  display: grid;
  grid-template-rows: 31px auto minmax(0, 1fr) 22px;
  overflow: hidden;
  border: 1px solid rgba(5, 35, 57, .94);
  border-radius: 7px 7px 3px 3px;
  background: rgba(181, 218, 239, .82);
  box-shadow: 0 0 0 1px rgba(255,255,255,.72), 0 18px 45px rgba(0,0,0,.44), inset 0 0 18px rgba(255,255,255,.24);
}
.win7-window.is-dragging { user-select: none; box-shadow: 0 0 0 1px rgba(255,255,255,.72), 0 24px 60px rgba(0,0,0,.55); }
.win7-window .win-resize { position: absolute; z-index: 8; }
.win7-window.maximized .win-resize { display: none; }
.win7-window .win-resize[data-dir="n"] { left: 10px; right: 10px; top: 0; height: 6px; cursor: ns-resize; }
.win7-window .win-resize[data-dir="s"] { left: 10px; right: 10px; bottom: 0; height: 6px; cursor: ns-resize; }
.win7-window .win-resize[data-dir="e"] { top: 10px; bottom: 10px; right: 0; width: 6px; cursor: ew-resize; }
.win7-window .win-resize[data-dir="w"] { top: 10px; bottom: 10px; left: 0; width: 6px; cursor: ew-resize; }
.win7-window .win-resize[data-dir="ne"] { right: 0; top: 0; width: 12px; height: 12px; cursor: nesw-resize; }
.win7-window .win-resize[data-dir="nw"] { left: 0; top: 0; width: 12px; height: 12px; cursor: nwse-resize; }
.win7-window .win-resize[data-dir="se"] { right: 0; bottom: 0; width: 12px; height: 12px; cursor: nwse-resize; }
.win7-window .win-resize[data-dir="sw"] { left: 0; bottom: 0; width: 12px; height: 12px; cursor: nesw-resize; }
.win7-window .win7-titlebar { cursor: grab; }
.win7-window .win7-titlebar:active { cursor: grabbing; }
.win7-window[data-app="notepad"],
.win7-window[data-app="guide"] { grid-template-rows: 31px minmax(0, 1fr) 22px; }
.win7-window.maximized { inset: 0 0 40px; width: auto; height: auto; border-width: 0 0 1px; border-radius: 0; box-shadow: none; }
.win7-titlebar {
  position: relative;
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  padding: 3px 116px 3px 7px;
  color: #071a28;
  background:
    linear-gradient(90deg, rgba(255,255,255,.34), transparent 28%),
    linear-gradient(#d9effb 0%, #a8d4ef 42%, #6aadd8 48%, #84bfdc 100%);
  border-bottom: 1px solid #4a819f;
  text-shadow: 0 1px 0 rgba(255,255,255,.9);
  user-select: none;
}
.win7-titlebar > .win7-app-icon { width: 20px; height: 20px; box-shadow: none; filter: none; }
.win7-titlebar > .win7-app-icon .glyph { width: 100%; height: 100%; }
.win7-titlebar strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 600; }
.win7-titlebar small { min-width: 0; overflow: hidden; color: #315066; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.win7-window-controls { position: absolute; top: 0; right: 6px; display: flex; }
.win7-window-controls button {
  width: 30px;
  min-width: 30px;
  min-height: 21px;
  display: grid;
  place-items: center;
  border: 1px solid #56798d;
  border-top: 0;
  border-radius: 0;
  padding: 0;
  color: #0b1e29;
  background: linear-gradient(rgba(255,255,255,.74), rgba(129,180,208,.76));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.35);
  font: 13px/19px "Segoe UI", sans-serif;
}
.win7-window-controls button:first-child { border-radius: 0 0 0 4px; }
.win7-window-controls .close { width: 46px; color: #fff; border-color: #74352f; border-radius: 0 0 4px 0; background: linear-gradient(#e9a39a, #b94b3e 48%, #9b2d22 52%, #c95f4f); text-shadow: 0 -1px 0 #682119; }
.win7-window-controls button:hover { background: linear-gradient(#fff, #b8dff1); }
.win7-window-controls .close:hover { background: linear-gradient(#ffc1b7, #d65b4d 48%, #b73529 52%, #e67160); }

.win7-menubar {
  min-height: 25px;
  padding: 4px 9px;
  color: #28343b;
  background: linear-gradient(#fff, #edf2f5);
  border-bottom: 1px solid #b5c1c8;
  font-size: 12px;
}

/* —— Internet Explorer 外壳（标签条 / 地址栏 / 命令栏） —— */
.win7-ie-chrome {
  position: relative;
  display: grid;
  grid-template-rows: auto auto auto;
  background: linear-gradient(#eef5f9, #d7e4ec);
}
.ie-tabstrip {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  min-height: 27px;
  padding: 3px 6px 0;
  background: linear-gradient(#c5d8e6, #b3c9d8);
}
.ie-tab {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  max-width: 220px;
  height: 24px;
  padding: 0 6px 0 8px;
  border: 1px solid #7f98a8;
  border-bottom: 0;
  border-radius: 4px 4px 0 0;
  background: linear-gradient(#f7fbfd, #dceaf2);
  color: #1f3a4c;
  font-size: 11px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85);
}
.ie-tab.active {
  background: linear-gradient(#ffffff, #e8f2f8);
  color: #0f2a3c;
  z-index: 1;
}
.ie-tab-glyph { width: 12px; height: 12px; flex: 0 0 auto; color: #3b6f8c; display: block; }
.ie-tab-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ie-tab-close {
  width: 16px;
  min-width: 16px;
  height: 16px;
  min-height: 16px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 2px;
  padding: 0;
  color: #4a6272;
  background: transparent;
}
.ie-tab-close svg { width: 8px; height: 8px; }
.ie-tab-close:hover { background: #e8a090; color: #fff; }
.ie-tab-new {
  width: 24px;
  min-width: 24px;
  height: 20px;
  min-height: 20px;
  margin-bottom: 2px;
  border: 1px solid transparent;
  border-radius: 3px;
  padding: 0;
  color: #2c4a5e;
  background: transparent;
  font-size: 14px;
  line-height: 1;
}
.ie-tab-new:hover { border-color: #8eb0c4; background: rgba(255,255,255,.55); }

.win7-browserbar {
  display: grid;
  grid-template-columns: auto 30px minmax(120px, 1fr) 30px auto minmax(110px, 168px);
  align-items: center;
  gap: 4px;
  min-height: 38px;
  padding: 5px 7px;
  background: linear-gradient(#f7fbfd, #dbe8ef);
  border-bottom: 1px solid #b7c5ce;
}
.win7-browserbar button {
  min-height: 27px;
  border-radius: 3px;
  padding: 1px 8px;
  color: #24495c;
  background: linear-gradient(#fff, #d9e5eb);
  border: 1px solid #95a8b2;
  box-shadow: inset 0 1px 0 #fff;
}
.win7-browserbar button svg,
.win7-ie-commandbar button svg,
.win7-window-controls button svg,
.explorer-nav button svg,
.explorer-search svg,
.chapter-photo-viewer footer button svg,
.login-power svg {
  width: 14px;
  height: 14px;
  display: block;
}
.win7-window-controls button svg { width: 10px; height: 10px; }
.win7-browserbar .browser-nav { display: flex; gap: 2px; }
.win7-browserbar .browser-nav button {
  width: 32px;
  min-width: 32px;
  border-radius: 50%;
  padding: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: linear-gradient(#79b95e, #3e8c31);
  border-color: #387b2e;
}
.win7-browserbar .browser-nav button + button {
  margin-left: 0;
  background: linear-gradient(#a7b8c1, #758d99);
  border-color: #697c86;
}
.win7-browserbar .browser-nav button:disabled {
  opacity: .55;
  filter: grayscale(.35);
}
.win7-browserbar .browser-home-btn,
.win7-browserbar .browser-refresh-btn {
  width: 30px;
  min-width: 30px;
  display: grid;
  place-items: center;
  padding: 0;
}
.win7-browserbar .browser-home-btn svg,
.win7-browserbar .browser-refresh-btn svg {
  position: relative;
  top: 0.5px;
}
.win7-browserbar .browser-go svg {
  position: relative;
  top: 0.5px;
}
.win7-browserbar .browser-address-wrap {
  position: relative;
  min-width: 0;
  margin: 0;
  display: flex;
  align-items: center;
}
.win7-browserbar .browser-address-wrap input {
  width: 100%;
  height: 27px;
  min-height: 27px;
  border-color: #7d969f;
  padding: 3px 28px 3px 30px;
  background: #fff;
  box-shadow: inset 0 1px 2px rgba(30,55,65,.16);
  font: 12px/1.3 Consolas, "Microsoft YaHei", sans-serif;
}
.browser-site-icon {
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 8px;
  width: 16px;
  height: 16px;
  display: grid;
  place-items: center;
  color: #315b72;
  transform: translateY(-50%);
  pointer-events: none;
}
.browser-site-icon svg {
  width: 14px;
  height: 14px;
  display: block;
  position: relative;
  top: 1px;
}
.win7-browserbar .browser-address-drop {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  right: 1px;
  width: 24px;
  min-width: 24px;
  height: auto;
  min-height: 0;
  border: 0;
  border-left: 1px solid #c2d0d8;
  border-radius: 0 2px 2px 0;
  padding: 0;
  display: grid;
  place-items: center;
  color: #3d5a6c;
  background: linear-gradient(#f4f8fa, #dce6ec);
  box-shadow: none;
}
.win7-browserbar .browser-address-drop svg { width: 10px; height: 10px; }
.win7-browserbar .browser-go {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-inline: 10px;
  color: #fff;
  border-color: #2f6b8c;
  background: linear-gradient(#5aa6c8, #2f6f95 48%, #275d80 52%, #3d87ad);
}
.win7-browserbar .browser-go:hover {
  background: linear-gradient(#6db6d6, #3a7fa6 48%, #2f6d91 52%, #4a97bf);
}
.win7-browserbar .browser-go svg { width: 12px; height: 12px; }
.win7-browserbar .browser-go span { font-size: 11px; }
.browser-searchbox {
  display: flex;
  align-items: center;
  min-width: 0;
  height: 27px;
  border: 1px solid #7d969f;
  border-radius: 2px;
  background: #fff;
  box-shadow: inset 0 1px 2px rgba(30,55,65,.12);
  overflow: hidden;
}
.browser-searchbox input {
  flex: 1;
  min-width: 0;
  height: 100%;
  border: 0;
  padding: 0 6px;
  background: transparent;
  box-shadow: none;
  font-size: 11px;
}
.browser-search-btn {
  width: 26px;
  height: 100%;
  display: grid;
  place-items: center;
  color: #3d647a;
  background: linear-gradient(#f2f7fa, #d7e3ea);
  border-left: 1px solid #c2d0d8;
}
.browser-search-btn svg { width: 12px; height: 12px; }

.win7-ie-commandbar {
  display: flex;
  align-items: center;
  gap: 1px;
  min-height: 28px;
  padding: 2px 8px;
  background: linear-gradient(#f9fcfe, #e7eff4);
  border-bottom: 1px solid #c2d0d8;
}
.win7-ie-commandbar button {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 24px;
  border: 1px solid transparent;
  border-radius: 3px;
  padding: 1px 6px;
  color: #23475c;
  background: transparent;
  font-size: 11px;
  line-height: 1;
}
.win7-ie-commandbar button:hover {
  border-color: #9dbcce;
  background: linear-gradient(#fff, #e2f0f8);
}
.win7-ie-commandbar button svg {
  width: 13px;
  height: 13px;
  flex: 0 0 auto;
  display: block;
  color: #3b6d8a;
  position: relative;
  top: 0.5px;
}
.win7-ie-commandbar button span { line-height: 1.2; }
.ie-command-sep {
  width: 1px;
  height: 16px;
  margin-inline: 5px;
  background: #c4d1d9;
}

.ie-address-menu {
  position: absolute;
  z-index: 30;
  top: calc(100% - 4px);
  left: 84px;
  right: 180px;
  min-width: 220px;
  max-width: 420px;
  padding: 4px;
  border: 1px solid #7f98a8;
  border-radius: 3px;
  background: #f7fbfd;
  box-shadow: 0 8px 18px rgba(20, 45, 60, .22);
}
.ie-address-menu[hidden] { display: none !important; }
.ie-address-menu-label {
  margin: 2px 6px 4px;
  color: #6a7f8c;
  font-size: 10px;
}
.ie-address-menu button {
  display: block;
  width: 100%;
  border: 0;
  border-radius: 2px;
  padding: 5px 8px;
  color: #1f3d50;
  background: transparent;
  text-align: left;
  font: 11px/1.35 Consolas, "Microsoft YaHei", sans-serif;
}
.ie-address-menu button:hover { background: #d7ebf7; }

.win7-ie-status {
  gap: 8px;
}
.win7-ie-status .ie-status-left,
.win7-ie-status .ie-status-right {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.win7-ie-status .ie-status-offline {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: #2f4d5e;
}
.win7-ie-status .ie-status-offline svg {
  width: 12px;
  height: 12px;
  color: #8a5a3a;
}
.win7-ie-status .ie-status-zone {
  padding-left: 10px;
  border-left: 1px solid #b7c4cb;
  color: #5c6e78;
}
.win7-ie-status .ie-status-hint {
  color: #7a898f;
}
.win7-ie-status .ie-status-zoom {
  padding-left: 10px;
  border-left: 1px solid #b7c4cb;
  color: #2f4d5e;
}

.win7-window-content { min-width: 0; min-height: 0; overflow: auto; background: #f4f4f4; }
.win7-window-content > .portal-shell,
.win7-window-content > .site-shell { width: 100%; min-height: 100%; margin: 0; border: 0; box-shadow: none; }
.win7-window-content > .intro-shell { min-height: 100%; }
.win7-window[data-app="phone"] .win7-window-content { overflow: hidden; background: #07090a; }
.win7-window-content .phone-os { min-height: 100%; height: 100%; }
.win7-window[data-app="phone"] .phone-os { grid-template-rows: auto minmax(0, 1fr); }
.win7-window[data-app="phone"] .phone-os-stage { min-height: 0; height: 100%; }
.win7-window[data-app="phone"] .phone-device { width: auto; height: calc(100% - 8px); max-height: 100%; aspect-ratio: 393 / 852; }
.win7-window[data-app="phone"] .phone-os-caption { display: none; }
/* 窗口内机身窄：状态栏字缩小 */
.win7-window[data-app="phone"] .phone-os-status { padding-inline: 20px; font-size: 12px; }

@media (min-width: 761px) {
  .win7-window[data-app="phone"] .phone-home-date { margin: 5px 12px 0; }
  .win7-window[data-app="phone"] .phone-home-date strong { font-size: 24px; }
  .win7-window[data-app="phone"] .phone-home-date small { font-size: 9px; }
  .win7-window[data-app="phone"] .phone-app-grid { gap: 7px 2px; padding: 17px 5px 0; }
  .win7-window[data-app="phone"] .phone-app-icon { gap: 3px; min-height: 55px; }
  .win7-window[data-app="phone"] .phone-app-glyph { width: 42px; height: 42px; border-radius: 10px; }
  .win7-window[data-app="phone"] .phone-glyph-text { font-size: 17px; }
  .win7-window[data-app="phone"] .phone-app-label { font-size: 9px; white-space: nowrap; }
  .win7-window[data-app="phone"] .phone-app-badge { right: 1px; transform: scale(.78); }
  .win7-window[data-app="phone"] .phone-dock { bottom: 15px; left: 7px; right: 7px; height: 58px; border-radius: 19px; padding: 4px 12px; }
  .win7-window[data-app="phone"] .phone-dock .phone-app-icon { min-height: 44px; }
}
.win7-window-status { display: flex; justify-content: space-between; gap: 12px; min-width: 0; padding: 3px 8px; color: #42535d; background: linear-gradient(#f7f9fa, #dce5ea); border-top: 1px solid #aab6bc; font-size: 10px; line-height: 15px; }
.win7-window-status span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.browser-start { min-height: 100%; padding: 28px clamp(18px, 5vw, 64px) 48px; color: #263238; background: linear-gradient(#f7fafb, #e8eef1); }
.browser-start header { max-width: 760px; padding-bottom: 18px; border-bottom: 1px solid #bdcbd2; }
.browser-start h1 { margin: 2px 0 6px; color: #244e67; font: 400 26px/1.3 "Segoe UI", "Microsoft YaHei", sans-serif; }
.browser-start header p:last-child { margin: 0; color: #66757c; }
.browser-bookmarks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; max-width: 920px; margin-top: 20px; }
.browser-search-box { display: flex; gap: 8px; max-width: 560px; margin-top: 20px; }
.browser-search-box input { flex: 1; padding: 8px 10px; border: 1px solid #9fb4bd; border-radius: 3px; font-size: 13px; }
.browser-search-box button { padding: 8px 18px; border: 1px solid #6a9ab8; border-radius: 3px; background: linear-gradient(#fff, #d8e6ee); cursor: pointer; font-size: 13px; }
.local-search-hit { max-width: 560px; margin-top: 10px; }
.local-search-hit button { display: flex; gap: 10px; align-items: center; width: 100%; padding: 10px 12px; border: 1px solid #9fb4bd; border-radius: 3px; background: #fff; text-align: left; cursor: pointer; }
.local-search-hit button:hover { border-color: #5796bb; background: #f0f7fb; }
.local-search-hit strong, .local-search-hit small { display: block; }
.local-search-hit small { margin-top: 3px; color: #718087; font-size: 11px; }
.local-search-none { max-width: 560px; margin-top: 10px; padding: 10px; color: #889; font-size: 12px; }
.browser-bookmarks > button { min-height: 76px; display: grid; grid-template-columns: 44px minmax(0,1fr); align-items: center; gap: 12px; border: 1px solid #aebdc5; border-radius: 3px; padding: 11px; color: #28363d; background: linear-gradient(#fff, #edf3f6); box-shadow: 0 1px 2px rgba(39,66,79,.12); text-align: left; }
.browser-bookmarks > button:hover { border-color: #5796bb; background: linear-gradient(#fff, #e4f3fb); }
.bookmark-icon { width: 40px; height: 40px; display: grid; place-items: center; color: #fff; background: linear-gradient(#699dbb, #315f78); border-radius: 4px; font: 700 18px SimSun, serif; }
.browser-bookmarks strong, .browser-bookmarks small { display: block; }
.browser-bookmarks small { margin-top: 3px; color: #718087; font-size: 11px; line-height: 1.35; }
.browser-empty { grid-column: 1 / -1; border: 1px solid #c2ccd1; padding: 18px; background: #fff; }
.browser-history { max-width: 920px; margin-top: 26px; border-top: 1px solid #b9c6cd; }
.browser-history h2 { margin: 18px 0 8px; color: #43555f; font-size: 14px; }
.browser-history p,
.browser-history-row { width: 100%; min-height: 32px; display: grid; grid-template-columns: 94px minmax(190px, 1fr) minmax(150px, 1fr); gap: 10px; margin: 0; border: 0; border-bottom: 1px solid #d2dadd; border-radius: 0; padding: 7px 3px; color: #345f77; background: transparent; box-shadow: none; font: 12px/1.4 Consolas, monospace; text-align: left; }
.browser-history-row:hover { background: #fff; }
.browser-history-row.anomaly { color: #7a302d; background: #f7eeee; }
.browser-history-row code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.browser-history time, .browser-history span { color: #7a878c; font-family: "Segoe UI", "Microsoft YaHei", sans-serif; }
.route-stops { margin: 22px 0; padding: 0; list-style: none; border-top: 1px solid #d8ddd6; counter-reset: route-stop; }
.route-stops li { min-height: 37px; display: flex; align-items: center; border-bottom: 1px solid #d8ddd6; color: #334a38; counter-increment: route-stop; }
.route-stops li::before { content: counter(route-stop, decimal-leading-zero); width: 52px; margin-right: 12px; color: #879087; font: 12px Consolas, monospace; }
.route-stops li:last-child:empty,
.route-stops li:last-child:has(span) { min-height: 42px; background: rgba(225,229,221,.35); }
.route-empty-stop button { width: min(260px, 55%); height: 24px; border: 0; padding: 0; color: transparent; background: transparent; box-shadow: none; cursor: default; }
.route-empty-stop button:focus-visible { outline: 1px dotted #788178; }
.cache-sync-note { display: block; margin-top: 24px; padding: 0; border: 0; background: transparent; color: #777; font: 12px Consolas, monospace; text-align: left; text-decoration: underline; cursor: pointer; }
.cache-sync-note:hover { color: #333; }
.cache-last-viewed { display: block; margin-top: 24px; padding: 0; border: 0; background: transparent; color: #777; font: 12px Consolas, monospace; text-align: left; text-decoration: underline; cursor: pointer; }
.cache-last-viewed:hover { color: #333; }
.legacy-inline-link { padding: 0; border: 0; background: none; color: #164d8a; font: inherit; text-decoration: underline; cursor: pointer; }

.station-cache {
  width: min(1024px, 100%);
  min-height: 100%;
  margin: 0 auto;
  border-inline: 1px solid #8c9aa6;
  background: #eef1f3;
  color: #18242d;
  font: 12px Tahoma, "Microsoft YaHei", sans-serif;
}
.station-cache > header { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 10px 18px; border-bottom: 1px solid #657582; background: linear-gradient(#506677,#2e4558); color: #fff; }
.station-cache > header div { display: grid; gap: 3px; }
.station-cache > header strong { font-size: 18px; font-weight: 400; }
.station-cache > header span, .station-cache > header small { color: #d9e1e6; }
.station-nav { display: flex; min-height: 34px; border-bottom: 1px solid #95a2ad; background: linear-gradient(#fbfcfd,#dce3e8); }
.station-nav button { min-width: 128px; padding: 8px 16px; border: 0; border-right: 1px solid #a8b2ba; background: transparent; color: #263947; font: inherit; text-align: left; }
.station-nav button:hover, .station-nav button.active { background: #fff; color: #102f48; }
.station-nav button.active { box-shadow: inset 0 -3px #436f93; }
.station-cache > main { min-height: 390px; padding: 18px; }
.station-cache > footer { display: flex; flex-wrap: wrap; gap: 20px; padding: 6px 14px; border-top: 1px solid #9da9b2; background: #dce2e6; color: #58656e; font-size: 11px; }
.station-home-copy h1, .station-module h1 { margin: 0 0 16px; font-size: 20px; font-weight: 400; color: #203e54; }
.station-home-copy dl { display: grid; grid-template-columns: 110px minmax(0,1fr); max-width: 520px; margin: 0 0 18px; border: 1px solid #aab5bd; }
.station-home-copy dt, .station-home-copy dd { margin: 0; padding: 6px 9px; border-bottom: 1px solid #c9d0d5; }
.station-home-copy dt { background: #dde4e9; color: #485963; }
.station-home-copy dd { background: #fff; }
.station-entry-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin: 18px 0; }
.station-entry-grid button { min-height: 74px; display: grid; align-content: center; gap: 5px; padding: 11px 13px; border: 1px solid #8ca0af; background: linear-gradient(#fff,#e0e7ec); color: #213846; text-align: left; font: inherit; }
.station-entry-grid button:hover { border-color: #4f7da0; background: #fff; }
.station-entry-grid strong { font-size: 14px; font-weight: 400; }
.station-entry-grid span { color: #68757d; font-size: 11px; }
.station-disabled-links { width: 100%; max-width: 640px; border-collapse: collapse; color: #737c82; }
.station-disabled-links td { padding: 5px 9px; border: 1px solid #c1c9cf; background: #e5e9ec; }
.station-disabled-links td:first-child { width: 160px; }
.station-summary, .monitor-meta { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-bottom: 16px; padding: 8px 10px; border: 1px solid #aab6bf; background: #fff; color: #4b5962; }
.station-module h2 { margin: 22px 0 8px; padding-bottom: 4px; border-bottom: 1px solid #aeb8bf; color: #304d60; font-size: 14px; }
.station-module h3 { margin: 0 0 6px; color: #354d5c; font-size: 12px; }
.station-data { width: 100%; border-collapse: collapse; background: #fff; }
.station-data th, .station-data td { padding: 6px 8px; border: 1px solid #aeb9c1; vertical-align: top; text-align: left; }
.station-data th { background: #dce5eb; color: #334a59; font-weight: 400; }
.five-lines .route-five td { transition: background .18s, color .18s; }
.five-lines .route-five td:nth-child(2) span { display: inline-block; padding: 1px 8px; background: linear-gradient(102deg,#e6e4dc 0 9%,#fff 12% 88%,#e5e2db 91%); }
.five-lines .route-five.is-transferred td { background: #edf3f6; color: #102a3c; }
.five-lines .route-five.is-transferred td:nth-child(3) { box-shadow: inset 3px 0 #507b95; }
.station-module details { margin-top: 10px; border: 1px solid #adb8c0; background: #f8fafb; }
.station-module summary { padding: 7px 10px; background: #dfe6eb; color: #2b4658; cursor: pointer; }
.station-module details > :not(summary) { margin: 10px; }
.station-module pre { overflow: auto; padding: 10px; border: 1px inset #ccd3d7; background: #fff; color: #29363d; font: 12px Consolas, monospace; white-space: pre-wrap; }
.station-struck { width: max-content; padding: 2px 8px; background: #e6e2dc; color: #666; text-decoration: line-through; }
.station-ledger { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.station-ledger section { padding: 9px; border: 1px solid #c5ccd1; background: #fff; }
.station-ledger p { line-height: 1.8; }
.station-ledger strong { display: block; margin-top: 3px; border-top: 1px solid #c2c2b9; background: linear-gradient(100deg,#fff,#e9e5dc,#fff); font-weight: 400; }
.station-core-contrast { display: grid; grid-template-columns: minmax(170px,.42fr) minmax(0,1.58fr); gap: 10px; margin-top: 12px; }
.station-core-contrast > section { min-width: 0; border: 1px solid #aab5bd; padding: 9px; background: #eef2f4; }
.station-core-contrast h3 { margin: 0 0 8px; color: #344853; font: 600 12px Tahoma,"Microsoft YaHei",sans-serif; }
.station-core-contrast dl { margin: 0; }
.station-core-contrast dl div { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; border-top: 1px solid #d0d7db; padding: 6px 2px; }
.station-core-contrast dl div:first-child { border-top: 0; }
.station-core-contrast dt { color: #58656c; }
.station-core-contrast dd { margin: 0; color: #202a2f; font: 600 17px Consolas,monospace; }
.paper-torn { background: linear-gradient(100deg,#fff 0 7%,#dedbd3 8% 10%,#fff 13% 88%,#dcd8d0 91% 93%,#fff 96%); }
.sync-slot-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 6px; }
.sync-slot-grid > div { min-height: 112px; display: grid; grid-template-rows: auto 1fr auto; padding: 6px; border: 1px solid #aab5bd; background: #fff; overflow: hidden; }
.sync-slot-grid b { color: #597080; font-weight: 400; }
.sync-slot-grid span { overflow-wrap: anywhere; color: #5c666c; font-size: 10px; }
.sync-slot-grid .slot-five { background: #f3f5f6; }
.station-desktop-preview { position: relative; min-height: 69px; margin: 4px 0; overflow: hidden; border: 1px solid #7c929e; background: linear-gradient(145deg,#2e6d92,#123e5a 65%,#0c2c40); filter: saturate(.65) contrast(.9); }
.station-desktop-preview i { position: absolute; width: 14px; height: 14px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.45); background: rgba(220,238,246,.24); color: #fff; font: normal 7px sans-serif; }
.station-desktop-preview b { position: absolute; right: 3px; bottom: 1px; color: #e7f1f5; font: 7px Tahoma,sans-serif; }
.station-desktop-preview .preview-avatar { position: absolute; left: 50%; top: 17%; width: 22px; height: 30px; border: 1px solid rgba(238,244,243,.36); border-radius: 50% 50% 44% 44%; transform: translateX(-50%); background: rgba(233,239,237,.1); }
.current-access td:first-child { width: 180px; white-space: nowrap; color: #5d696f; }
.station-monitor-feed { position: relative; aspect-ratio: 16 / 9; min-height: 260px; overflow: hidden; border: 8px solid #24292b; background: #111; box-shadow: inset 0 0 60px rgba(0,0,0,.52); cursor: default; user-select: none; }
.station-monitor-feed img { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; filter: grayscale(.42) contrast(.94) brightness(.88); }
.station-monitor-feed::before { content:""; position:absolute; z-index:2; inset:0; pointer-events:none; opacity:.18; background:repeating-linear-gradient(0deg,rgba(255,255,255,.08) 0 1px,rgba(0,0,0,.12) 1px 3px); mix-blend-mode:overlay; }
.station-monitor-feed::after { content:""; position:absolute; z-index:3; inset:-1px; pointer-events:none; background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.42) 100%); box-shadow:inset 0 0 26px rgba(0,0,0,.56); }
.station-monitor-feed time { position: absolute; z-index:4; left: 8px; top: 7px; padding: 2px 4px; background: rgba(0,0,0,.45); color: #e8ece8; font: 11px Consolas,monospace; pointer-events:none; }
.monitor-level { display: grid; grid-template-columns: 34px 1fr 54px; align-items: center; gap: 8px; margin-top: 8px; }
.monitor-level i { height: 8px; border: 1px solid #89969e; background: #202829; }
.monitor-level b { display: block; height: 100%; background: #7aa085; }
.station-system-note { color: #657179; font: 11px Consolas,monospace; }
.station-audio-panel { display: grid; grid-template-columns: minmax(160px,1fr) minmax(240px,2fr); align-items: center; gap: 8px 14px; margin: 18px 0; padding: 12px; border: 1px solid #aab6bf; background: #fff; }
.station-audio-panel audio { width: 100%; }
.station-audio-panel small { grid-column: 1/-1; color: #657179; }
.station-audio-panel.compact { margin: 10px; }
.station-broadcast-grid { display: grid; grid-template-columns: minmax(0,1fr) 248px; gap: 14px; align-items: stretch; }
.station-console { margin-top: 10px; border: 1px solid #78858d; padding: 10px; background: #c9ced0; box-shadow: inset 1px 1px #fff, inset -1px -1px #737b80; }
.station-console dl { display: grid; grid-template-columns: 86px minmax(0,1fr) 70px minmax(0,1fr); margin: 0 0 10px; border: 1px solid #8f989d; background: #eef0ef; }
.station-console dt, .station-console dd { min-height: 27px; margin: 0; padding: 6px 8px; border-right: 1px solid #aeb5b8; border-bottom: 1px solid #b9bec0; }
.station-console dt { color: #536068; background: #d8dcde; }
.station-console dd { color: #1f2b31; }
.station-meter { display: grid; grid-template-columns: 86px minmax(0,1fr) 54px; align-items: center; gap: 8px; }
.station-meter i { height: 12px; overflow: hidden; border: 1px inset #a1a9ad; background: repeating-linear-gradient(90deg,#1d2424 0 7px,#303737 8px 9px); }
.station-meter b { display: block; width: 0; height: 100%; background: linear-gradient(90deg,#527f60 0 72%,#b2a34d 73% 90%,#914b42 91%); transition: width .08s linear; }
.station-meter output { color: #39474e; font: 11px Consolas,monospace; text-align: right; }
.station-console-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 11px; }
.station-console-actions button { min-height: 27px; padding: 4px 12px; border: 1px solid #707a80; border-radius: 2px; background: linear-gradient(#fff,#d6dade); color: #202b31; font: 12px Tahoma,"Microsoft YaHei",sans-serif; box-shadow: inset 0 0 0 1px #eef1f3; }
.station-console-actions button:active { background: #cbd0d4; box-shadow: inset 1px 1px 2px rgba(0,0,0,.22); }
.station-console-actions label { display: flex; align-items: center; gap: 6px; color: #48555b; }
.station-console-actions input { width: 92px; accent-color: #55748a; }
.station-mic-note { flex-basis: 100%; margin: 4px 0 0; color: #5a686e; font-size: 11px; line-height: 1.5; }
.station-lamp-watch { min-height: 100%; display: grid; grid-template-rows: 30px minmax(270px,1fr) 25px; overflow: hidden; border: 7px solid #252a2c; background: #101516; box-shadow: inset 0 0 42px rgba(0,0,0,.9); }
.station-lamp-watch header, .station-lamp-watch footer { display: flex; align-items: center; justify-content: space-between; padding: 0 8px; color: #c7ceca; background: #252b2c; font: 10px Consolas,monospace; }
.station-lamp-watch header small { color: #84908c; }
.station-white-lamp { position: relative; display: grid; place-items: center; overflow: hidden; background: radial-gradient(circle at 50% 47%,rgba(205,219,210,.17),transparent 36%), linear-gradient(#29302f,#111616); }
.station-white-lamp::before { content:""; position:absolute; left:50%; top:0; width:1px; height:68px; background:#737c78; transform:translateX(-50%); }
.station-white-lamp i { position: relative; z-index: 1; width: 94px; height: 116px; margin-top: 38px; border: 1px solid #b9c1ba; border-radius: 47% 47% 42% 42%; background: repeating-linear-gradient(0deg,rgba(224,228,214,.82) 0 10px,rgba(154,163,153,.7) 11px 12px); box-shadow: 0 0 22px rgba(206,219,207,.38), inset 0 0 28px rgba(238,242,229,.22); transition: filter .35s, opacity .35s, transform .35s, box-shadow .35s; }
.station-white-lamp i::before, .station-white-lamp i::after { content:""; position:absolute; left:23px; right:23px; height:6px; border:1px solid #777f7a; background:#9ba29d; }
.station-white-lamp i::before { top:-5px; }
.station-white-lamp i::after { bottom:-5px; }
.station-white-lamp span { position:absolute; left:50%; top:50%; width:28px; height:46px; border-radius:50%; background:rgba(229,238,224,.58); filter:blur(9px); transform:translate(-50%,-22%); transition:opacity .3s,transform .3s; }
.station-white-lamp.affected i { transform: scaleX(1.035); filter: brightness(.78); }
.station-white-lamp.affected span { opacity:.48; transform:translate(-50%,-22%) scale(.76); }
.station-white-lamp.extinguished i { filter:brightness(.22); box-shadow:none; }
.station-white-lamp.extinguished span { opacity:0; }
.station-white-lamp.breathing i { filter:brightness(.3); transform:scaleX(1.055); box-shadow:0 0 7px rgba(209,221,208,.12); }
.station-white-lamp.breathing span { opacity:.12; transform:translate(-50%,-22%) scale(.3); }
.station-white-lamp.relit i { filter:brightness(1.12); box-shadow:0 0 34px rgba(221,233,216,.58), inset 0 0 32px rgba(255,255,242,.3); }
.station-white-lamp.relit span { opacity:.92; transform:translate(-50%,-22%) scale(1.15); }

@media (max-width: 820px) {
  .station-entry-grid, .station-ledger, .station-core-contrast { grid-template-columns: 1fr; }
  .sync-slot-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .station-broadcast-grid { grid-template-columns: 1fr; }
  .station-lamp-watch { min-height: 320px; }
  .station-console dl { grid-template-columns: 78px minmax(0,1fr); }
  .station-nav { overflow-x: auto; }
  .station-nav button { min-width: 112px; }
}
.offline-location-notice { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 7px 12px; margin: 8px 10px 0; border: 1px solid #b8c9d7; padding: 8px 10px; color: #394d5d; background: linear-gradient(#f8fcff, #e8f2f8); font-size: 12px; }
.offline-location-notice strong { color: #234d6d; font-weight: 600; }
.offline-location-notice span { min-width: 0; }
.current-access .access-meta th { width: 112px; color: #46545c; background: #edf1f2; font-weight: 400; }
.current-access .access-meta td { color: #2d3438; background: #f7f8f8; }
.current-access .predicted-access td { color: #4b5559; background: #eef1f1; }
.computer-notepad.invaded { grid-template-rows: 25px minmax(0,1fr) 22px; }
.invaded-notepad-document { min-height: 0; overflow: auto; padding: 8px; color: #111; background: #fff; font: 14px/1.55 Consolas, "Microsoft YaHei", monospace; }
.invaded-notepad-document p { margin: 0; white-space: nowrap; }
.intrusion-line { width: 0; overflow: hidden; animation: intrusionTyping 1.25s steps(10,end) forwards; color: #b3202a; }
.intrusion-line.line-two { animation-delay: 1.65s; }
.invaded-notepad-document textarea { display: block; width: 100%; min-height: 7.2em; height: auto; margin: 0; padding: 0; overflow: hidden; font: inherit; color: #111; }
.notepad-heard-line { margin-top: 0 !important; animation: heardLine 1.1s steps(6,end) both; color: #b3202a; font-weight: bold; }
.notepad-heard-line[hidden] { display: none; }
@keyframes intrusionTyping { from { width: 0; } to { width: 16em; } }
@keyframes heardLine { from { width: 0; overflow: hidden; } to { width: 8em; overflow: hidden; } }
.phone-anomaly-note { margin: 10px 0; border: 1px solid rgba(240,113,120,.45); border-radius: 8px; padding: 10px 12px; color: #efc2c5; background: rgba(94,37,45,.34); }
.phone-anomaly-note strong { color: #f07178; }
.phone-anomaly-note p { margin: 4px 0 0; font-size: 12px; line-height: 1.55; }

.computer-notepad { height: 100%; display: grid; grid-template-rows: 25px minmax(0,1fr) 22px; background: #fff; }
.notepad-menu { padding: 4px 8px; background: #f5f5f5; border-bottom: 1px solid #d1d1d1; color: #222; font-size: 12px; }
.computer-notepad textarea { width: 100%; height: 100%; resize: none; border: 0; border-radius: 0; padding: 8px; outline: 0; color: #111; background: #fff; box-shadow: none; font: 14px/1.55 Consolas, "Microsoft YaHei", monospace; }
.computer-notepad footer { padding: 3px 8px; border-top: 1px solid #ddd; color: #555; text-align: right; font-size: 10px; }

.recovery-guide {
  min-height: 100%;
  padding: clamp(22px, 5vw, 56px);
  color: #26343b;
  background:
    linear-gradient(120deg, rgba(249, 252, 253, 0.98) 0%, rgba(240, 246, 249, 0.94) 55%, rgba(229, 240, 245, 0.92) 100%),
    url("/public/assets/bg_intro.png") right center / cover no-repeat;
}
.recovery-guide::after {
  content: "";
  position: absolute;
  z-index: 1;
  right: 0;
  bottom: 0;
  width: min(62vw, 640px);
  height: 180px;
  pointer-events: none;
  background: linear-gradient(135deg, transparent 0 16%, #e5f0f5 48% 100%);
}
.recovery-guide header { max-width: 780px; padding-bottom: 18px; border-bottom: 1px solid #aec3ce; }
.recovery-guide h1 { margin: 3px 0 8px; color: #244f69; font-size: clamp(22px, 3vw, 32px); font-weight: 400; letter-spacing: 0; }
.recovery-guide header p:last-child { margin: 0; color: #64747c; }
.guide-flow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; max-width: 900px; margin: 22px 0 18px; }
.guide-flow article { min-height: 94px; display: grid; grid-template-columns: 46px minmax(0,1fr); align-items: center; gap: 13px; border: 1px solid #b3c4cc; border-radius: 3px; padding: 13px; background: rgba(255,255,255,.86); box-shadow: 0 1px 2px rgba(42,70,83,.1); }
.guide-flow article .win7-app-icon { width: 40px; height: 40px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.3)); }
.guide-flow article .win7-app-icon .glyph { width: 100%; height: 100%; }
.guide-flow strong { color: #244e65; font-size: 14px; }
.guide-flow p { margin: 4px 0 0; color: #65747a; font-size: 12px; line-height: 1.5; }
.guide-warning { max-width: 900px; border-left: 4px solid #9b4a42; padding: 10px 13px; color: #5e3733; background: #f5ece9; font-size: 12px; }
.recovery-guide .action-row { max-width: 900px; }

.win7-start-menu {
  position: absolute;
  z-index: 80;
  left: 4px;
  bottom: 39px;
  width: min(460px, calc(100% - 8px));
  height: 448px;
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 160px;
  grid-template-rows: 56px minmax(0, 1fr) 48px;
  overflow: hidden;
  border: 1px solid rgba(11, 42, 61, .92);
  border-radius: 7px 7px 0 0;
  padding: 8px;
  background: linear-gradient(135deg, rgba(210,235,248,.88), rgba(70,130,168,.85));
  backdrop-filter: blur(20px);
  box-shadow: 0 0 0 1px rgba(255,255,255,.5), 0 -8px 28px rgba(0,0,0,.4);
}
.start-user { grid-column: 1; grid-row: 1; display: flex; align-items: center; gap: 9px; padding: 0 8px; color: #fff; text-shadow: 0 1px 2px #153447; }
.start-avatar { width: 44px; height: 44px; display: grid; place-items: center; overflow: hidden; border: 2px solid #fff; border-radius: 4px; background: #bdc9c8; box-shadow: 0 1px 4px rgba(0,0,0,.35); }
.start-avatar img { width: 100%; height: 100%; object-fit: cover; }
.start-programs { grid-column: 1; grid-row: 2; display: grid; align-content: start; gap: 2px; border-radius: 3px; padding: 8px 5px; background: rgba(255,255,255,.92); box-shadow: inset 0 0 0 1px #b8cbd5; overflow-y: auto; }
.start-programs .start-program { width: 100%; min-height: 44px; display: grid; grid-template-columns: 36px minmax(0,1fr); justify-items: start; align-items: center; align-content: center; gap: 9px; border: 1px solid transparent; padding: 4px 8px; color: #172128; background: transparent; text-align: left; text-shadow: none; }
.start-programs .start-program:hover { border-color: #83b7d1; background: linear-gradient(#e9f6fc, #cbeafa); }
.start-programs .start-program .win7-app-icon { width: 30px; height: 30px; filter: drop-shadow(0 1px 1px rgba(0,0,0,.25)); }
.start-programs .start-program .win7-app-icon .glyph { width: 100%; height: 100%; }
.start-links { grid-column: 2; grid-row: 1 / 4; display: grid; align-content: start; gap: 1px; padding: 6px 7px 4px; color: #fff; text-shadow: 0 1px 1px #19405a; font-size: 12px; border-left: 1px solid rgba(255,255,255,.25); }
.start-links span,
.start-links button { padding: 6px 8px; border: 0; border-radius: 3px; color: inherit; background: transparent; box-shadow: none; font: inherit; text-align: left; text-shadow: inherit; cursor: pointer; }
.start-links button:hover { background: linear-gradient(90deg,rgba(150,205,240,.30),rgba(255,255,255,.12)); }
.start-links .start-session-note { margin-top: 8px; border-top: 1px solid rgba(255,255,255,.28); line-height: 1.45; cursor: default; }
.start-search { grid-column: 1; grid-row: 3; display: flex; align-items: center; padding: 8px 8px 0; }
.start-search input { min-height: 28px; width: 85%; border: 1px solid #5f879e; background: #fff; }
.start-shutdown { grid-column: 2; grid-row: 3; display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding: 6px 10px 0; border-top: 1px solid rgba(255,255,255,.22); }
.start-shutdown button {
  display: inline-flex; align-items: center; gap: 5px;
  min-height: 28px; padding: 3px 10px;
  white-space: nowrap;
  border: 1px solid rgba(24,64,90,.55); border-radius: 3px;
  color: #102a3d; font-size: 12px;
  background: linear-gradient(180deg,#f6fafd 0%,#d2e2ef 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 1px 2px rgba(0,0,0,.18);
}
.start-shutdown button svg { width: 15px; height: 15px; }
.start-shutdown button:hover {
  border-color: #5c85ab;
  background: linear-gradient(180deg,#ffffff 0%,#dcecf9 100%);
}
.start-shutdown button:active {
  background: linear-gradient(180deg,#cfe0f0,#bfd6ec);
  box-shadow: inset 0 1px 3px rgba(20,50,80,.3);
}

.win7-taskbar {
  position: absolute;
  z-index: 60;
  right: 0;
  bottom: 0;
  left: 0;
  height: 40px;
  display: grid;
  grid-template-columns: 58px minmax(0,1fr) minmax(194px, auto);
  grid-template-rows: minmax(0, 1fr);
  color: #fff;
  background: linear-gradient(rgba(76,134,169,.72), rgba(27,76,108,.82) 47%, rgba(12,51,77,.90) 50%, rgba(25,74,105,.90));
  backdrop-filter: blur(14px) saturate(1.5);
  -webkit-backdrop-filter: blur(14px) saturate(1.5);
  border-top: 1px solid rgba(215,240,252,.8);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 -2px 10px rgba(0,0,0,.35);
}
.win7-start-orb { position: relative; width: 54px; height: 54px; min-height: 54px; align-self: end; margin: 0 0 0 4px; border: 0; border-radius: 50%; padding: 0; background: transparent; box-shadow: none; cursor: pointer; }
.win7-start-orb img { width: 100%; height: 100%; display: block; filter: drop-shadow(0 2px 4px rgba(0,0,0,.5)); transition: filter .15s ease, transform .08s ease; }
.win7-start-orb:hover img, .win7-start-orb.active img { filter: drop-shadow(0 0 6px rgba(120,210,255,.9)) brightness(1.08); }
.win7-start-orb:active img { transform: scale(.94); }
.win7-start-orb::before { content: ""; position: absolute; inset: 0; border-radius: 50%; background: radial-gradient(circle at 38% 26%, rgba(255, 255, 255, .35), rgba(255, 255, 255, 0) 44%); pointer-events: none; }
.win7-task-apps { min-width: 0; display: flex; align-items: stretch; gap: 1px; overflow: visible; padding: 1px 3px; }
.win7-task-app { position: relative; width: 56px; min-width: 56px; min-height: 38px; display: flex; justify-content: center; align-items: center; gap: 0; overflow: hidden; border: 1px solid transparent; border-radius: 3px; padding: 1px 6px; color: #fff; background: rgba(255,255,255,.04); box-shadow: none; text-shadow: 0 1px 2px #0c2635; }
.win7-task-app.has-preview { overflow: visible; }
.win7-task-app:hover { border-color: rgba(200,232,248,.5); background: rgba(147,207,237,.2); }
.win7-task-app.active { border-color: rgba(208,239,252,.72); background: linear-gradient(rgba(182,226,247,.38), rgba(82,153,193,.28)); box-shadow: inset 0 0 10px rgba(255,255,255,.32), inset 0 -2px 0 rgba(216,244,255,.72); }
.win7-task-app .win7-app-icon { width: 30px; height: 30px; box-shadow: none; filter: drop-shadow(0 1px 1px rgba(0,0,0,.45)); }
.win7-task-app .win7-app-icon .glyph { width: 100%; height: 100%; }
.win7-task-app > .taskbar-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.taskbar-preview {
  position: absolute;
  left: 50%;
  bottom: 45px;
  width: 214px;
  padding: 7px 7px 5px;
  overflow: hidden;
  border: 1px solid rgba(224, 241, 250, .9);
  border-radius: 4px;
  background: linear-gradient(rgba(107, 151, 177, .96), rgba(38, 83, 111, .98));
  box-shadow: 0 8px 22px rgba(0, 0, 0, .58), inset 0 0 0 1px rgba(255, 255, 255, .22);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 7px);
  transition: opacity .12s ease, transform .12s ease;
}
.taskbar-preview img { display: block; width: 200px; aspect-ratio: 4 / 3; object-fit: cover; background: #050708; }
.taskbar-preview small { display: block; overflow: hidden; margin-top: 5px; color: #fff; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; text-shadow: 0 1px 2px #000; }
.win7-task-app.has-preview:hover .taskbar-preview,
.win7-task-app.has-preview:focus-visible .taskbar-preview { opacity: 1; transform: translate(-50%, 0); }
.win7-tray { position: relative; display: flex; align-items: center; justify-content: flex-end; gap: 1px; min-width: 194px; padding: 0 3px 0 5px; background: rgba(10,47,71,.24); border-left: 1px solid rgba(255,255,255,.12); font-size: 11px; }
.win7-tray .tray-icon-button,
.win7-tray .tray-status-icon {
  width: 28px;
  min-width: 28px;
  height: 38px;
  min-height: 38px;
  display: grid;
  place-items: center;
  border: 0;
  padding: 0;
  color: #fff;
  background: transparent;
  box-shadow: none;
  text-shadow: 0 1px 2px #071e2c;
}
.win7-tray .tray-icon-button { cursor: pointer; }
.win7-tray .tray-icon-button:hover { background: rgba(255, 255, 255, .14); }
.win7-tray .tray-glyph { display: block; width: 18px; height: 18px; }
.win7-tray .tray-overflow .tray-glyph { width: 15px; height: 15px; }
.win7-tray .tray-net .tray-glyph { width: 19px; height: 19px; }
.win7-tray .tray-usb .tray-glyph { width: 21px; height: 21px; filter: brightness(1.6) saturate(.55); }
.win7-tray .tray-usb.active { background: rgba(159,213,249,.22); }
.win7-task-app.has-system-notice::after {
  content: "";
  position: absolute;
  top: 3px;
  right: 6px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #f5cf74;
  box-shadow: 0 0 5px rgba(245,207,116,.7);
}
.win7-tray .tray-system-notice { color: #f5cf74; }
.win7-tray .tray-system-notice .tray-glyph { width: 16px; height: 16px; }
.win7-tray .tray-session-pending { color: #f5cf74; }
.win7-tray .tray-session-pending .tray-glyph { width: 16px; height: 16px; }
.win7-usb-menu { position:absolute; z-index:1101; right:104px; bottom:44px; width:272px; padding:5px; border:1px solid #777; background:linear-gradient(#fafafa,#e9e9e9); box-shadow:0 3px 12px rgba(0,0,0,.48); color:#151515; }
.win7-usb-menu button { width:100%; min-height:50px; display:grid; grid-template-columns:34px 1fr; gap:9px; align-items:center; border:1px solid transparent; border-radius:0; padding:5px 8px; background:transparent; color:#151515; text-align:left; box-shadow:none; }
.win7-usb-menu button:hover { border-color:#7da2ce; background:linear-gradient(#edf7ff,#d9ebfb); }
.win7-usb-menu svg { width:30px; height:30px; color:#44515b; }
.win7-usb-menu span { display:grid; gap:2px; }
.win7-usb-menu strong { font-size:12px; font-weight:400; }
.win7-usb-menu small { color:#606060; font-size:11px; }

/* Win7 通知气泡：仅在首次进入桌面时出现一次（引导托盘帮助） */
.win7-tray-balloon {
  position: absolute;
  right: 8px;
  bottom: 44px;
  z-index: 90;
  width: 280px;
  padding: 10px 28px 12px 14px;
  border: 1px solid #9db8d2;
  border-radius: 6px;
  background: linear-gradient(to bottom, #fbfdff 0%, #eef4fb 60%, #dce8f6 100%);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255,255,255,0.4) inset;
  color: #1a3a5c;
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
}
.win7-tray-balloon::after {
  content: "";
  position: absolute;
  right: 22px;
  bottom: -8px;
  width: 14px;
  height: 14px;
  background: linear-gradient(135deg, transparent 50%, #dce8f6 50%);
  border-right: 1px solid #9db8d2;
  border-bottom: 1px solid #9db8d2;
  transform: rotate(45deg);
  box-shadow: 3px 3px 4px rgba(0,0,0,0.08);
}
.win7-tray-balloon strong { display: block; font-size: 12px; font-weight: 600; margin-bottom: 5px; color: #1a3a5c; }
.tray-balloon-close {
  position: absolute;
  top: 5px;
  right: 5px;
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border: 1px solid transparent;
  border-radius: 3px;
  background: transparent;
  color: #8aa4bd;
  cursor: pointer;
  font-size: 12px;
  line-height: 1;
  opacity: 0.6;
}
.tray-balloon-close:hover { background: #d6e4f2; color: #2a5a8c; border-color: #b8cce0; }
.tray-balloon-close svg { width: 8px; height: 8px; }
.tray-balloon-body {
  display: block;
  width: 100%;
  border: 0;
  padding: 0;
  background: transparent;
  color: #2a4a66;
  font-size: 12px;
  line-height: 1.55;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
}
.tray-balloon-body:hover { color: #0f5a9c; text-decoration: underline; }

/* 污染后的红色系统通知 */
.win7-tray-balloon.contaminated-balloon {
  border-color: #8b1a1a;
  background: linear-gradient(to bottom, #fdf0f0 0%, #f5d8d8 100%);
  box-shadow: 0 6px 18px rgba(120,0,0,.35), 0 0 0 1px rgba(255,255,255,.3) inset;
  color: #5c0a0a;
  animation: contaminatedBalloonFade 10s forwards;
}
@keyframes contaminatedBalloonFade {
  0%, 75% { opacity: 1; }
  100% { opacity: 0; visibility: hidden; }
}
.win7-tray-balloon.contaminated-balloon::after {
  background: #f5d8d8;
  border-right-color: #8b1a1a;
  border-bottom-color: #8b1a1a;
}
.win7-tray-balloon.contaminated-balloon strong { color: #8b1a1a; }
.win7-tray-balloon.contaminated-balloon .tray-balloon-body { color: #6b1515; cursor: default; }
.win7-tray-balloon.contaminated-balloon .tray-balloon-body:hover { text-decoration: none; color: #6b1515; }

/* P22 解锁相序补偿规程的气泡通知 */
.win7-tray-balloon.sacrificial-balloon {
  border-color: #2b577f;
  background: linear-gradient(to bottom, #f0f6fc 0%, #dbe8f5 100%);
  box-shadow: 0 4px 16px rgba(10,35,60,.28), 0 0 0 1px rgba(255,255,255,.5) inset;
  color: #1a3a5c;
  z-index: 1000;
}
.win7-tray-balloon.sacrificial-balloon strong {
  color: #1a3a5c;
}
.win7-tray-balloon.sacrificial-balloon .tray-balloon-body {
  color: #0b4880;
  cursor: pointer;
  text-align: left;
  line-height: 1.45;
}
.win7-tray-balloon.sacrificial-balloon .tray-balloon-body:hover {
  color: #002244;
  text-decoration: underline;
}

.system-settings-dialog label:hover {
  background: rgba(180, 215, 245, 0.2);
  border-radius: 3px;
}

/* 仅充电状态的便携设备 */
.drive-row.portable.is-charging-only .drive-icon { opacity: 0.55; filter: grayscale(0.6); }

/* MTP 未授权时的资源管理器空态 */
.mtp-locked-notice { grid-template-columns: auto minmax(0, 1fr); align-items: center; }
.mtp-locked-notice button {
  grid-column: 1 / -1;
  justify-self: start;
  margin-top: 2px;
  padding: 5px 12px;
  border: 1px solid #8db2d2;
  border-radius: 3px;
  background: linear-gradient(#fbfdff, #e4eff8);
  color: #1d4c74;
  font-size: 12px;
  cursor: pointer;
}
.mtp-locked-notice button:hover { border-color: #5796bb; background: linear-gradient(#f0f7fb, #d4e6f4); }

/* 本机索引检索结果 */
.local-search-count { max-width: 560px; margin: 10px 0 0; color: #6b7a83; font-size: 12px; }
.local-search-hit.is-static { opacity: 0.72; }
.local-search-hit.is-static > div {
  display: flex;
  gap: 10px;
  align-items: center;
  width: 100%;
  padding: 10px 12px;
  border: 1px dashed #b4c2ca;
  border-radius: 3px;
  background: #f5f8fa;
  cursor: default;
}
.local-search-hit.is-static strong,
.local-search-hit.is-static small { display: block; }
.local-search-hit.is-static small { margin-top: 3px; color: #718087; font-size: 11px; }
.win7-tray .tray-volume { position: relative; }
.win7-tray .tray-volume.muted { opacity: .6; }
.win7-tray .tray-volume.muted::after {
  content: "";
  position: absolute;
  width: 14px;
  height: 1.6px;
  background: #ffd9d2;
  transform: rotate(-42deg);
}
.win7-tray .tray-clock { min-width: 72px; min-height: 38px; display: grid; justify-items: center; border: 0; padding: 2px 5px; color: #fff; background: transparent; box-shadow: none; font: 11px/1.2 "Segoe UI", sans-serif; text-shadow: 0 1px 2px #071e2c; }
.win7-tray .tray-clock:hover { background: rgba(255, 255, 255, .14); }
.win7-tray .tray-clock small { font-size: 10px; }
/* 托盘全屏按钮 */
.win7-tray .tray-fs { color: #fff; background: transparent; }
.win7-tray .tray-fs .tray-glyph { display: block; width: 15px; height: 15px; }
.win7-tray .tray-fs:hover { background: rgba(255, 255, 255, .14); }
.win7-tray .tray-fs.is-fullscreen { color: #cfeaff; background: rgba(120, 190, 255, .22); }
.toast { z-index: 300; }
.mountain-system-arrival {
  position: absolute;
  z-index: 240;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  background: rgba(1, 5, 6, .82);
  animation: mountainSystemArrival 7.2s linear both;
}
.mountain-system-arrival::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("/public/assets/bg_intro.png") 58% center / cover no-repeat;
  filter: saturate(.34) contrast(1.18) brightness(.3);
  transform: scale(1.035);
  animation: mountainSystemBreathe 7.2s cubic-bezier(.22,.58,.22,1) both;
}
.mountain-system-arrival::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 3, 4, .18), rgba(0, 2, 3, .72));
}
.mountain-system-viewports {
  position: absolute;
  z-index: 2;
  inset: 9% 6% 14%;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(3px, .7vw, 11px);
  align-items: stretch;
}
.mountain-system-viewports > i {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(217, 230, 225, .2);
  background-image: url("/public/assets/bg_intro.png");
  background-size: 500% 100%;
  background-position: calc(var(--segment) * 25%) center;
  filter: saturate(.28) contrast(1.16) brightness(.45);
  opacity: 0;
  transform: translateY(calc((var(--segment) - 1.5) * 7px));
  animation: mountainViewportReveal 7.2s steps(2, end) both;
  animation-delay: calc(var(--segment) * 110ms);
}
.mountain-system-viewports > i::after {
  content: "";
  position: absolute;
  inset: 0;
  box-shadow: inset 0 0 34px rgba(0, 4, 5, .7);
}
.mountain-system-viewports .current-position {
  --segment: 4;
  background:
    linear-gradient(rgba(0, 5, 7, .52), rgba(0, 3, 5, .84)),
    url("/public/assets/desktop_wallpaper_normal.png") center / cover no-repeat;
}
.mountain-system-viewports .current-position span {
  position: absolute;
  inset: 18% 13%;
  border: 1px solid rgba(225, 236, 231, .18);
  box-shadow: inset 0 0 28px rgba(0, 0, 0, .72);
}
.mountain-system-lights {
  position: absolute;
  z-index: 3;
  right: 7%;
  bottom: 17%;
  left: 7%;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  justify-items: center;
}
.mountain-system-lights i {
  width: clamp(5px, .7vw, 10px);
  aspect-ratio: .62;
  border-radius: 46%;
  background: rgba(231, 239, 234, .78);
  box-shadow: 0 0 9px rgba(226, 238, 232, .32);
  opacity: 0;
  animation: mountainLightReveal 7.2s steps(2, end) both;
}
.mountain-system-lights i:nth-child(2) { animation-delay: 120ms; }
.mountain-system-lights i:nth-child(3) { animation-delay: 240ms; }
.mountain-system-lights i:nth-child(4) { animation-delay: 360ms; }
.mountain-system-lights i:nth-child(5) { animation-delay: 620ms; }
@keyframes mountainSystemArrival { 0%,8% { opacity: 0; } 18%,84% { opacity: 1; } 100% { opacity: 0; } }
@keyframes mountainSystemBreathe { from { transform: scale(1.035) translateY(0); } to { transform: scale(1.085) translateY(1.2%); } }
@keyframes mountainViewportReveal { 0%,20% { opacity: 0; } 31%,85% { opacity: .94; } 100% { opacity: 0; } }
@keyframes mountainLightReveal { 0%,52% { opacity: 0; } 60%,86% { opacity: .9; } 100% { opacity: 0; } }

@media (max-width: 760px) {
  .handover-progress,
  .handover-progress.is-compact {
    top: 5px;
    right: 8px;
    width: 82px;
    min-height: 24px;
    padding: 4px 7px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: rgba(21, 65, 91, .76);
  }
  .handover-progress.is-compact { right: 112px; }
  .handover-progress > span { font-size: 9px; }
  .handover-progress > strong { position: static; font-size: 13px; }
  .handover-progress > div,
  .handover-progress > p,
  .handover-progress > .handover-answer { display: none; }
  .case-hero { min-height: 100dvh; align-items: end; padding: 78px 20px 70px; background-position: 58% center; }
  .case-hero-shade { background: linear-gradient(0deg, rgba(7,12,12,.96) 0, rgba(7,12,12,.74) 60%, rgba(7,12,12,.25) 100%); }
  .case-hero-top { right: 20px; left: 20px; min-height: 50px; }
  .case-hero-top span:last-child { display: none; }
  .case-hero h1 { font-size: 38px; line-height: 1.18; }
  .case-deck { margin-top: 14px; font-size: 14px; line-height: 1.65; }
  .case-facts { margin-top: 18px; }
  .case-facts div { padding: 10px 8px 10px 0; }
  .case-facts div + div { padding-left: 8px; }
  .case-facts dt { font-size: 9px; }
  .case-facts dd { font-size: 11px; line-height: 1.35; }
  .case-actions { margin-top: 18px; }
  .case-actions button { flex: 1 1 145px; padding-inline: 10px; }
  .case-scroll { right: 10px; bottom: 8px; }
  .case-scroll span { display: none; }
  .case-briefing-inner,
  .case-rules-inner { width: calc(100% - 40px); grid-template-columns: 1fr; gap: 34px; padding: 54px 0; }
  .case-briefing-lead h2,
  .case-rules h2,
  .case-entry h2 { font-size: 24px; }
  .case-rules li { grid-template-columns: 82px 1fr; gap: 12px; }
  .case-entry { align-items: stretch; flex-direction: column; padding: 48px 20px; }
  .case-entry button { width: 100%; min-width: 0; }
  .case-content-note { align-items: flex-start; flex-direction: column; gap: 2px; padding-inline: 20px; }
  .case-footer { gap: 20px; padding-inline: 20px; }
  .boot-mark { width: 74px; height: 74px; }
  .boot-center h1 { font-size: 19px; }
  .login-card { margin-top: -5vh; padding-inline: 18px; }
  .login-avatar { width: 88px; height: 88px; font-size: 36px; }
  .login-brand { bottom: 59px; left: 50%; transform: translateX(-50%); font-size: 15px; }
  .login-screen > footer { min-height: 48px; grid-template-columns: 44px 1fr; gap: 8px; padding-inline: 14px; }
  .login-screen > footer > span { display: none; }
  .login-footer-actions { gap: 5px; }
  .login-footer-actions button { padding-inline: 8px; font-size: 10px; }
  .login-reset-body { grid-template-columns: 36px minmax(0, 1fr); gap: 10px; padding: 20px 18px 16px; }
  .login-reset-icon { width: 32px; height: 32px; font-size: 20px; }
  .login-reset-body h1 { font-size: 16px; }
  .recovered-message-window { width: calc(100vw - 24px); }
  .recovered-message-body { padding: 20px 18px 18px; }
  .recovered-message-meta, .recovered-message-body label { align-items: flex-start; flex-direction: column; gap: 3px; }
  .recovered-message-body blockquote { padding: 16px; font-size: 14px; }
  .recovered-message-body input { width: 100%; }
  .win7-wallpaper { bottom: 46px; background-position: 39% center; }
  .win7-desktop-caption { display: none; }
  .win7-desktop-icons {
    top: 10px;
    left: 8px;
    right: 8px;
    bottom: 56px;
    grid-auto-flow: row;
    grid-template-columns: repeat(3, minmax(78px, 1fr));
    grid-template-rows: repeat(2, 86px);
    grid-auto-columns: auto;
    justify-items: center;
    gap: 2px 4px;
  }
  .win7-desktop-shortcut { width: 78px; min-height: 82px; }
  .win7-window, .win7-window.maximized { inset: 0 0 46px; min-width: 0; min-height: 0; border: 0; border-radius: 0; box-shadow: none; }
  .win7-window { grid-template-rows: 32px auto minmax(0, 1fr); }
  .win7-window-status { display: none; }
  .win7-titlebar small { display: none; }
  .win7-titlebar { min-height: 32px; padding-right: 108px; }
  .win7-window-controls { right: 2px; }
  .win7-window-controls button { width: 30px; min-width: 30px; min-height: 22px; }
  .win7-window-controls .close { width: 44px; }
  .win7-browserbar {
    grid-template-columns: auto 28px minmax(0, 1fr) 28px;
    padding-inline: 4px;
  }
  .win7-browserbar .browser-go,
  .win7-browserbar .browser-searchbox,
  .win7-ie-commandbar { display: none; }
  .win7-browserbar .browser-nav button { width: 27px; min-width: 27px; min-height: 27px; }
  .ie-tab { max-width: 160px; }
  .ie-address-menu { left: 52px; right: 52px; }
  .browser-start { padding: 18px 12px 32px; }
  .browser-start h1 { font-size: 21px; }
  .browser-bookmarks { grid-template-columns: 1fr; }
  .browser-history p,
  .browser-history-row { grid-template-columns: 76px minmax(0, 1fr); }
  .browser-history p span,
  .browser-history-row span { grid-column: 2; }
  .recovery-guide { padding: 20px 14px 32px; }
  .recovery-guide h1 { font-size: 22px; }
  .guide-flow { grid-template-columns: 1fr; margin-top: 16px; }
  .guide-flow article { min-height: 78px; }
  .win7-taskbar { height: 46px; grid-template-columns: 52px minmax(0,1fr) 62px; }
  .win7-start-orb { width: 50px; height: 50px; min-height: 50px; margin: 0 0 0 1px; }
  .win7-task-apps { gap: 0; padding-inline: 0; }
  .win7-task-app { width: 48px; min-width: 42px; flex: 0 1 48px; padding-inline: 5px; }
  .win7-task-app > .taskbar-label { display: none; }
  .win7-task-app .win7-app-icon { width: 28px; height: 28px; }
  .win7-tray { min-width: 62px; width: 62px; gap: 0; padding: 0 2px; }
  .win7-tray button { min-height: 44px; padding-inline: 4px; }
  .tray-overflow, .tray-usb, .tray-net, .tray-volume, .tray-fs, .win7-tray .tray-clock small { display: none !important; }
  .win7-tray .tray-clock { min-width: 56px; padding-inline: 2px; }
  .win7-start-menu { bottom: 45px; height: min(470px, calc(100dvh - 52px)); grid-template-columns: minmax(0,1fr) 122px; }
  .start-links { padding-inline: 4px; }
  .start-links span,
  .start-links button { padding-inline: 2px; font-size: 11px; }
  .start-shutdown { padding: 6px 4px 0; }
  .start-shutdown button { gap: 5px; padding: 4px 9px; }
  .win7-window-content .portal-main { padding-bottom: 32px; }
  .win7-window-content .forum-mast { gap: 7px; }
  .win7-window-content .forum-mast .mast-brand { white-space: nowrap; font-size: 18px; letter-spacing: 2px; }
  .win7-window-content .forum-mast .mast-tag { font-size: 10px; line-height: 1.45; }
  .win7-window[data-app="phone"] .phone-os-stage { height: calc(100% - 42px); }
  .win7-window[data-app="phone"] .phone-stage,
  .win7-window[data-app="phone"] .phone-device,
  .win7-window[data-app="phone"] .phone-device-body,
  .win7-window[data-app="phone"] .phone-screen { height: 100%; min-height: 0; }
  .win7-window[data-app="phone"] .phone-device { width: min(393px, 100%); }

  /* 全面屏底部安全区：任务栏加高，桌面/窗口/开始菜单同步抬升 */
  .win7-taskbar { height: calc(46px + env(safe-area-inset-bottom)); }
  .win7-wallpaper,
  .win7-window,
  .win7-window.maximized { bottom: calc(46px + env(safe-area-inset-bottom)); }
  .win7-start-menu { bottom: calc(46px + env(safe-area-inset-bottom)); }

  /* 宽表格（财务/值班/登记表）在窄屏内横向滚动，不撑破页面 */
  table { display: block; max-width: 100%; overflow-x: auto; }
}

@media (max-width: 380px) {
  .win7-desktop-icons { grid-template-columns: repeat(3, minmax(72px, 1fr)); grid-template-rows: repeat(2, 82px); }
  .win7-desktop-shortcut { width: 72px; min-height: 78px; font-size: 11px; }
  .win7-app-icon { width: 43px; height: 43px; }
  .win7-taskbar { grid-template-columns: 50px minmax(0, 1fr) 56px; }
  .win7-tray, .win7-tray .tray-clock { min-width: 56px; width: 56px; }
  .win7-task-app { min-width: 38px; flex-basis: 42px; }
  .intro-panel { padding: 22px 18px; }
  .tour-mast { padding: 36px 16px 20px; }
  .tour-mast .mast-brand { font-size: 26px; letter-spacing: 3px; }
  /* 锁屏压缩规则见 phone-ui.css（≤380px 块） */
}

/* 矮窗口（横屏手机 / 上网本）：开始菜单不顶出屏幕（锁屏压缩规则见 phone-ui.css） */
@media (max-height: 700px) {
  .win7-start-menu { height: min(430px, calc(100dvh - 52px)); }
}

@media (max-width: 480px) {
  .win7-browserbar {
    grid-template-columns: 31px minmax(0, 1fr) 31px;
    gap: 3px;
    min-height: 38px;
  }
  .win7-browserbar .browser-nav button + button,
  .win7-browserbar > .browser-home-btn,
  .win7-browserbar .browser-go,
  .win7-browserbar .browser-searchbox,
  .win7-ie-commandbar { display: none; }
  .win7-browserbar .browser-nav button { width: 31px; min-width: 31px; }
  .ie-tabstrip { min-height: 22px; padding-top: 2px; }
  .ie-tab { height: 20px; max-width: 120px; padding-inline: 5px; }
  .ie-tab-close { display: none; }
  .ie-address-menu { left: 8px; right: 8px; }
  .win7-menubar { overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
  .win7-titlebar strong { font-size: 11px; }
  .start-programs .start-program { min-height: 50px; }
  .start-links { font-size: 10px; }
  .desk-lead { grid-template-columns: 1fr; }
  .progress-stamp { width: 100%; justify-self: stretch; text-align: left; }
  .explorer-toolbar { grid-template-columns: auto minmax(0, 1fr); }
  .explorer-search { display: none; }
  .explorer-commandbar { overflow-x: auto; }
  .explorer-commandbar span { display: none; }
}

@media (max-height: 520px) and (orientation: landscape) {
  .login-card { margin-top: -3vh; padding-block: 8px 12px; }
  .login-avatar { width: 72px; height: 72px; }
  .login-card h1 { margin: 7px 0 1px; font-size: 18px; }
  .login-card p { margin-bottom: 7px; }
  .login-brand { bottom: 45px; font-size: 14px; }
  .recovered-message-screen .login-brand { display: none; }
  .recovered-message-window { max-height: calc(100dvh - 16px); }
  .recovered-message-body { padding: 12px 18px; }
  .recovered-message-meta { margin-bottom: 6px; }
  .recovered-message-body blockquote { margin-bottom: 10px; padding: 10px 16px; font-size: 13px; line-height: 1.65; }
  .recovered-message-body label { margin-bottom: 4px; }
  .recovered-message-window > footer { min-height: 42px; padding-block: 6px; }
  .recovered-message-window > footer button { min-height: 28px; }
  .win7-desktop-icons {
    grid-template-columns: repeat(5, 78px);
    grid-template-rows: 82px;
    justify-content: start;
  }
  .win7-window,
  .win7-window.maximized {
    inset: 0 0 40px;
    min-width: 0;
    min-height: 0;
    border-width: 0 0 1px;
    border-radius: 0;
    box-shadow: none;
  }
  .win7-start-menu { height: calc(100dvh - 50px); }
}

/* 雾岭旧电脑专用光标：外层调查页保持浏览器默认，触屏设备不启用。 */
@media (pointer: fine) {
  body.computer-cursor,
  body.computer-cursor * {
    cursor: url("/public/assets/cursor-wuling.svg") 3 2, default;
  }

  body.computer-cursor :is(button, a, select, summary, label, [role="button"], [data-action], .home-link, .utility-bar .ub-link) {
    cursor: url("/public/assets/cursor-wuling-active.svg") 3 2, pointer;
  }

  body.computer-cursor :is(input:not([type="button"]):not([type="submit"]):not([type="checkbox"]):not([type="radio"]), textarea, [contenteditable="true"]) {
    cursor: text;
  }

  body.computer-cursor :is(button, input, select, textarea)[disabled],
  body.computer-cursor [aria-disabled="true"] {
    cursor: not-allowed;
  }
}

/* Formal shutdown and ending presentation, kept outside the Windows shell. */
.shutdown-screen,
.formal-result,
.result-credits { position: fixed; inset: 0; min-width: 720px; min-height: 480px; overflow: hidden; color: #fff; background: #050708; }
.shutdown-screen { display: grid; place-items: center; background: radial-gradient(circle at 50% 42%, #26739d 0, #0d486d 38%, #052c49 72%, #031c31 100%); }
.shutdown-screen.stage-power { background: radial-gradient(circle at 50% 42%, #245e82 0, #0b3855 42%, #031c31 100%); }
.shutdown-screen > p { margin: 96px 0 0; font: 18px/1.4 "Segoe UI", "Microsoft YaHei", sans-serif; text-shadow: 0 1px 2px #001827; }
.shutdown-win-mark { position: absolute; top: calc(50% - 26px); left: 50%; transform: translate(-50%, -50%); }
.shutdown-screen.stage-dark { display: block; background: #020303; }
.shutdown-reflection { position: absolute; inset: 0; opacity: .62; background: linear-gradient(180deg, #020303 0 58%, #07100f 76%, #020303 100%); animation: shutdown-reflection-in 2.6s ease both; }
.shutdown-reflection::before { content: ""; position: absolute; inset: 22% 9% 12%; background: url("/public/assets/bg_intro.png") center 64% / cover no-repeat; filter: grayscale(.8) brightness(.18) contrast(1.35); opacity: .5; mask-image: linear-gradient(90deg, transparent, #000 18%, #000 82%, transparent); }
.reflection-chair { position: absolute; left: calc(50% - 38px); bottom: 8%; width: 76px; height: 94px; border: 2px solid rgba(192,207,199,.13); border-top-width: 7px; box-shadow: 0 20px 0 -17px rgba(192,207,199,.12); }
.reflection-lamp,
.result-white-lamp { position: absolute; width: 48px; aspect-ratio: .78; border-radius: 48% 48% 42% 42%; background: radial-gradient(ellipse, rgba(242,245,226,.92) 0 22%, rgba(204,219,203,.58) 45%, rgba(233,238,219,.1) 68%, transparent 72%); filter: blur(.25px); box-shadow: 0 0 28px rgba(222,234,213,.24), 0 0 80px rgba(215,228,207,.1); }
.reflection-lamp { left: calc(50% - 24px); top: 26%; }
.reflection-fog { position: absolute; left: -15%; width: 130%; height: 19%; background: rgba(202,218,211,.06); filter: blur(34px); }
.reflection-fog.fog-a { top: 48%; transform: rotate(-3deg); }
.reflection-fog.fog-b { top: 61%; transform: rotate(4deg); }

.formal-result { isolation: isolate; background: #020404; }
.result-return-night-stage {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
  background: #020303;
}
.return-night-frame {
  position: absolute;
  inset: -1.5%;
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0;
  filter: brightness(0.82) contrast(1.12);
  will-change: opacity, transform;
}
.return-night-vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 50%, transparent 40%, rgba(2, 4, 4, 0.62) 80%, #020404 100%),
              linear-gradient(180deg, rgba(2, 4, 4, 0.45) 0%, transparent 22%, transparent 72%, #020404 100%);
}

.return-night-frame.frame-01 {
  animation: return-night-fade-01 12s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.return-night-frame.frame-02 {
  animation: return-night-fade-02 12s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.return-night-frame.frame-03 {
  animation: return-night-fade-03 12s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.return-night-frame.frame-04 {
  animation: return-night-fade-04 12s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes return-night-fade-01 {
  0% { opacity: 0; transform: scale(1.01); }
  6% { opacity: 1; transform: scale(1.02); }
  22% { opacity: 1; }
  30% { opacity: 0; transform: scale(1.04); }
  100% { opacity: 0; }
}

@keyframes return-night-fade-02 {
  0%, 20% { opacity: 0; transform: scale(1.02); }
  28% { opacity: 1; transform: scale(1.03); }
  47% { opacity: 1; }
  55% { opacity: 0; transform: scale(1.05); }
  100% { opacity: 0; }
}

@keyframes return-night-fade-03 {
  0%, 45% { opacity: 0; transform: scale(1.03); }
  53% { opacity: 1; transform: scale(1.04); }
  72% { opacity: 1; }
  80% { opacity: 0; transform: scale(1.06); }
  100% { opacity: 0; }
}

@keyframes return-night-fade-04 {
  0%, 70% { opacity: 0; transform: scale(1.04); }
  78% { opacity: 1; transform: scale(1.05); }
  92% { opacity: 1; transform: scale(1.06); }
  100% { opacity: 0.95; transform: scale(1.06); }
}

.result-mountain { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(0,0,0,.12), #030606 92%), url("/public/assets/bg_intro.png") center 64% / cover no-repeat; filter: grayscale(.68) brightness(.42) contrast(1.24); transform: scale(1.04); animation: result-mountain-breathe 12s ease-in-out both; }
.result-mountain::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #020404 0, transparent 26%, transparent 74%, #020404 100%), linear-gradient(180deg, rgba(220,230,223,.12), transparent 34%, #020404 96%); }
.result-road-segments { position: absolute; left: 15%; right: 15%; bottom: 15%; display: grid; grid-template-columns: repeat(5, 1fr); height: 48%; perspective: 520px; }
.result-road-segments i { border-left: 1px solid rgba(220,229,222,.27); background: linear-gradient(165deg, transparent 0 48%, rgba(215,225,218,.24) 49% 51%, transparent 52%); transform: rotateX(62deg); transform-origin: bottom; }
.result-road-segments i:last-child { border-right: 1px solid rgba(220,229,222,.14); }
.result-vacancy .result-road-segments .broken { opacity: .16; animation: vacancy-road-break 9s 2s ease-in both; }
.result-empty-chair { position: absolute; left: calc(50% - 44px); bottom: 7%; width: 88px; height: 116px; border: 2px solid rgba(210,221,214,.46); border-top-width: 9px; box-shadow: 0 25px 0 -20px rgba(210,221,214,.34), 0 0 24px rgba(191,207,198,.05); }
.formal-result .result-white-lamp { left: calc(50% - 24px); top: 18%; }
.result-white-lamp.flicker { animation: result-lamp-three 7.4s 1s steps(1) both; }
.result-footprints { position: absolute; left: 49%; bottom: 4%; width: 150px; height: 140px; transform: translateX(-50%) rotate(-18deg); }
.result-footprints i { position: absolute; width: 14px; height: 28px; border-radius: 55% 42% 58% 35%; background: rgba(21,33,30,.82); box-shadow: 0 0 7px rgba(185,206,195,.08); }
.result-footprints i:nth-child(1) { left: 4px; bottom: 8px; transform: rotate(-12deg); }.result-footprints i:nth-child(2) { left: 34px; bottom: 32px; transform: rotate(14deg); }.result-footprints i:nth-child(3) { left: 50px; bottom: 67px; transform: rotate(-8deg); }.result-footprints i:nth-child(4) { left: 85px; bottom: 91px; transform: rotate(17deg); }.result-footprints i:nth-child(5) { left: 109px; bottom: 121px; transform: rotate(-4deg); }
.result-phone { position: absolute; left: 13%; bottom: 10%; width: 184px; height: 340px; padding: 56px 13px 20px; border: 8px solid #080a0a; border-radius: 23px; color: rgba(240,246,239,.74); background: radial-gradient(circle at 50% 22%, rgba(215,228,216,.14), transparent 42%), #050706; box-shadow: 0 0 36px rgba(218,231,217,.1); text-align: center; }
.result-phone span { font: 36px/1 "Segoe UI", sans-serif; }.result-phone p { margin: 92px 0 0; padding: 12px 6px; border-top: 1px solid rgba(255,255,255,.08); border-bottom: 1px solid rgba(255,255,255,.08); font: 16px/1.6 "Microsoft YaHei", sans-serif; }
.result-returning-figure { position: absolute; right: 23%; bottom: 0; width: 230px; height: 78%; background: linear-gradient(90deg, transparent 7%, rgba(7,10,9,.96) 24% 76%, transparent 93%); clip-path: polygon(37% 0,65% 0,73% 15%,82% 48%,100% 100%,0 100%,18% 48%,27% 15%); animation: returning-figure-near 12s ease-in both; }
.result-returning-figure i { position: absolute; left: 35%; top: 3%; width: 31%; height: 20%; border-radius: 48%; background: linear-gradient(105deg, rgba(231,236,224,.82), rgba(157,173,164,.34)); filter: blur(1px); }
.result-returner .result-white-lamp { left: auto; right: 13%; top: auto; bottom: 9%; }
.result-watchers { position: absolute; inset: 31% 18% auto; display: flex; justify-content: space-between; }.result-watchers i { width: 46px; height: 190px; border-top: 2px solid rgba(211,222,215,.23); background: linear-gradient(90deg, rgba(185,202,193,.08), rgba(2,5,4,.98) 38% 72%, rgba(185,202,193,.06)); filter: drop-shadow(0 0 8px rgba(206,220,211,.08)); clip-path: polygon(33% 0,67% 0,78% 22%,100% 100%,0 100%,22% 22%); animation: watchers-turn 4s 4.6s ease both; }
.result-fifth .result-empty-chair { animation: fifth-chair-empty 8s ease both; }
.result-login-echo { position: absolute; left: 50%; top: 50%; width: 210px; height: 250px; transform: translate(-50%,-50%); display: grid; place-items: start center; padding-top: 28px; opacity: 0; background: radial-gradient(circle, #24688e, #073858 62%, transparent 64%); animation: login-echo 4s 7.4s ease both; }
.result-login-echo img { width: 90px; height: 90px; object-fit: cover; border: 3px solid rgba(255,255,255,.75); border-radius: 4px; filter: grayscale(1) brightness(.75); }.result-login-echo span { position: absolute; top: 142px; width: 92px; height: 15px; border-bottom: 1px solid rgba(255,255,255,.22); }

.result-credits {
  position: fixed;
  inset: 0;
  min-width: 720px;
  min-height: 480px;
  overflow: hidden;
  color: #d8ddd9;
  background: #020303;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  user-select: none;
}
.result-credits-stage {
  position: relative;
  width: min(720px, 90vw);
  height: 100vh;
  display: flex;
  justify-content: center;
  overflow: hidden;
}
.result-credits-lantern {
  position: absolute;
  top: 14%;
  left: 50%;
  transform: translateX(-50%);
  width: 90px;
  height: 120px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(220, 235, 215, 0.18) 0%, rgba(200, 220, 195, 0.06) 50%, transparent 75%);
  filter: blur(14px);
  pointer-events: none;
  animation: credits-lantern-breathe 4s ease-in-out infinite alternate;
}
.result-credits-track {
  width: 100%;
  max-width: 580px;
  margin: 0 auto;
  text-align: center;
  animation: result-credits-scroll 26s cubic-bezier(0.2, 0.05, 0.2, 1) forwards;
}
.result-credits-brand {
  margin-bottom: 46px;
}
.result-credits-brand h1 {
  margin: 0;
  font: 400 32px/1.4 "Microsoft YaHei", "PingFang SC", sans-serif;
  letter-spacing: 4px;
  color: #edf2ed;
  text-shadow: 0 0 16px rgba(237, 242, 237, 0.3);
}
.result-credits-brand .credits-en {
  margin: 6px 0 0;
  font-size: 11px;
  letter-spacing: 3px;
  color: #7b887d;
  font-family: "Segoe UI", sans-serif;
}
.result-credits-role {
  margin: 26px 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.result-credits-role .role-title {
  font-size: 12px;
  color: #839286;
  letter-spacing: 2px;
}
.result-credits-role .role-name {
  font-size: 16px;
  color: #d1ded4;
  letter-spacing: 1px;
  font-weight: 500;
}
.result-credits-tribute {
  margin: 50px 0 30px;
  padding-top: 25px;
  border-top: 1px solid rgba(131, 146, 134, 0.2);
}
.result-credits-tribute .tribute-heading {
  font-size: 13px;
  letter-spacing: 2px;
  color: #8ba090;
  margin-bottom: 12px;
}
.result-credits-tribute p {
  margin: 6px 0;
  font-size: 13px;
  line-height: 1.6;
  color: #b0bfb4;
}
.result-credits-tribute .tribute-shenxing {
  margin-top: 14px;
  color: #c5d0c8;
  font-style: normal;
  opacity: .95;
}
.result-story-lines {
  position: absolute;
  left: 6%;
  right: 6%;
  bottom: 7%;
  z-index: 3;
  max-width: 520px;
  margin: 0 auto;
  padding: 14px 18px;
  border-top: 1px solid rgba(180, 200, 190, 0.22);
  background: linear-gradient(180deg, rgba(4, 10, 12, 0), rgba(4, 10, 12, 0.55));
}
.result-story-lines p {
  margin: 4px 0;
  font-size: 15px;
  line-height: 1.75;
  letter-spacing: 0.06em;
  color: #d5ddd6;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.85);
}
.result-credits-epilogue {
  margin-top: 55px;
  padding-bottom: 60px;
}
.result-credits-epilogue .epilogue-quote {
  font-size: 15px;
  color: #e5ede6;
  font-style: italic;
  letter-spacing: 1px;
  margin: 0 0 10px;
}
.result-credits-epilogue .epilogue-sign {
  font-size: 13px;
  color: #7a8c7e;
  margin: 0;
}
.result-credits-epilogue .epilogue-prompt {
  display: inline-block;
  margin-top: 36px;
  font-size: 11px;
  color: #556358;
  letter-spacing: 1px;
  opacity: 0.8;
  animation: credits-prompt-pulse 2s ease-in-out infinite;
}

@keyframes result-credits-scroll {
  0% {
    transform: translateY(80vh);
    opacity: 0;
  }
  8% {
    opacity: 1;
  }
  82% {
    opacity: 1;
  }
  100% {
    transform: translateY(-6vh);
    opacity: 1;
  }
}
@keyframes credits-lantern-breathe {
  0% { opacity: 0.3; transform: translateX(-50%) scale(0.9); }
  100% { opacity: 0.8; transform: translateX(-50%) scale(1.15); }
}
@keyframes credits-prompt-pulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 0.9; }
}

/* ============================================================
   行为摘要结算页（结果场景 → 片尾之间；只陈述真实行为，可截图带走）
   无打字机、无闪烁动画，天然满足 reduced-motion
   ============================================================ */
.result-summary { position: fixed; inset: 0; min-width: 720px; min-height: 480px; display: grid; place-items: center; overflow: hidden; background: #020404; color: #dfe7e0; font-family: "Segoe UI", "Microsoft YaHei", sans-serif; cursor: pointer; }
.result-summary-card { width: min(520px, calc(100vw - 48px)); padding: 40px 44px 32px; background: rgba(10, 14, 13, .72); border: 1px solid rgba(190, 205, 194, .14); box-shadow: 0 18px 60px rgba(0, 0, 0, .6); cursor: default; }
.result-summary-card h2 { margin: 0 0 18px; font-size: 15px; font-weight: 600; letter-spacing: .18em; color: #9fb3a4; }
.result-summary-list { margin: 0; padding: 0; list-style: none; }
.result-summary-list li { position: relative; padding: 3px 0 3px 18px; font-size: 14px; line-height: 1.7; letter-spacing: .04em; color: #cfd9d1; }
.result-summary-list li::before { content: "·"; position: absolute; left: 2px; color: #6d7f71; }
.result-summary-line { margin: 22px 0 0; padding-top: 16px; border-top: 1px solid rgba(190, 205, 194, .12); font-size: 15px; letter-spacing: .06em; color: #eef3ec; }
.result-summary-actions { margin-top: 26px; display: flex; align-items: center; gap: 16px; }
.result-summary-copy { padding: 5px 18px; font-size: 12.5px; letter-spacing: .1em; color: #cfd9d1; background: transparent; border: 1px solid rgba(190, 205, 194, .3); border-radius: 2px; cursor: pointer; }
.result-summary-copy:hover:not(:disabled) { border-color: rgba(220, 232, 222, .6); color: #f2f6f0; }
.result-summary-copy:disabled { opacity: .55; cursor: default; }
.result-summary-skip { font-size: 11px; letter-spacing: .1em; color: #556358; }
.result-summary-fallback { margin-top: 14px; width: 100%; height: 120px; padding: 8px; resize: none; background: #060908; color: #cfd9d1; border: 1px solid rgba(190, 205, 194, .2); font: 12px/1.6 "Segoe UI", "Microsoft YaHei", sans-serif; }

/* ============================================================
   Windows 7 系统属性 OEM 彩蛋对话框 (WL-0715 / Bobby)
   ============================================================ */
.sysprops-backdrop {
  position: absolute;
  inset: 0;
  z-index: 1500;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(10, 20, 30, 0.32);
}
.sysprops-dialog {
  width: min(650px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  display: flex;
  flex-direction: column;
  background: #f0f0f0;
  border: 1px solid #3c5a76;
  border-radius: 6px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.3) inset;
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
  font-size: 12px;
  color: #1e1e1e;
  overflow: hidden;
  user-select: text;
}
.sysprops-titlebar {
  height: 32px;
  background: linear-gradient(180deg, #dcebfa 0%, #b8d6f3 40%, #9bc2e8 100%);
  border-bottom: 1px solid #7599be;
  display: flex;
  align-items: center;
  padding: 0 8px 0 10px;
  user-select: none;
}
.sysprops-titlebar-icon {
  width: 16px;
  height: 16px;
  margin-right: 8px;
}
.sysprops-titlebar strong {
  flex: 1;
  font-size: 12px;
  font-weight: 600;
  color: #1a334d;
}
.sysprops-close-btn {
  width: 44px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #a33;
  border-radius: 2px;
  background: linear-gradient(180deg, #e87b70 0%, #c93b30 100%);
  color: #fff;
  cursor: pointer;
}
.sysprops-close-btn:hover {
  background: linear-gradient(180deg, #f08e84 0%, #dc4235 100%);
}
.sysprops-content {
  padding: 14px 20px;
  overflow-y: auto;
  flex: 1;
}
.sysprops-hero {
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid #d9d9d9;
}
.sysprops-hero h2 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: #003399;
}
.sysprops-section {
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid #e2e2e2;
}
.sysprops-section-title {
  font-size: 12px;
  font-weight: bold;
  color: #003399;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
}
.sysprops-section-title::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #d6e0ea;
  margin-left: 10px;
}
.sysprops-win-ver {
  display: flex;
  align-items: center;
  gap: 16px;
}
.sysprops-win-logo {
  width: 50px;
  height: 50px;
  object-fit: contain;
}
.sysprops-win-meta strong {
  display: block;
  font-size: 13px;
  color: #1a334d;
  margin-bottom: 2px;
}
.sysprops-win-meta span {
  display: block;
  color: #4a5c68;
  font-size: 11px;
  line-height: 1.4;
}
.sysprops-grid {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 6px 12px;
  font-size: 12px;
  line-height: 1.5;
}
.sysprops-grid dt {
  color: #555;
  text-align: right;
}
.sysprops-grid dd {
  margin: 0;
  color: #111;
}
.sysprops-oem-badge {
  background: #f7fafc;
  border: 1px solid #c9d8e5;
  border-radius: 4px;
  padding: 10px 14px;
  margin-bottom: 10px;
  display: flex;
  gap: 14px;
  align-items: center;
}
.sysprops-oem-icon {
  width: 44px;
  height: 44px;
  border-radius: 4px;
  background: #192723;
  color: #e2d9c8;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: bold;
  border: 1px solid #3c544b;
  flex-shrink: 0;
  letter-spacing: 1px;
}
.sysprops-oem-details strong {
  display: block;
  font-size: 13px;
  color: #1a334d;
  margin-bottom: 2px;
}
.sysprops-oem-details span {
  display: block;
  color: #4a5c68;
  font-size: 11px;
}
.sysprops-rating-badge {
  display: inline-block;
  background: #4679aa;
  color: #fff;
  font-weight: bold;
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 11px;
  margin-right: 6px;
}
.sysprops-warning-box {
  background: #fff8eb;
  border: 1px solid #e8c886;
  border-radius: 4px;
  padding: 8px 12px;
  margin-top: 6px;
  color: #7a4f00;
  font-size: 11px;
  line-height: 1.45;
}
.sysprops-footer {
  padding: 10px 16px;
  background: #e6edf2;
  border-top: 1px solid #c8d7e2;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.sysprops-btn {
  min-width: 76px;
  height: 24px;
  padding: 0 12px;
  border: 1px solid #707070;
  border-radius: 3px;
  background: linear-gradient(180deg, #f2f2f2 0%, #ebebeb 50%, #cfcfcf 51%, #e1e1e1 100%);
  cursor: pointer;
  font-size: 12px;
  color: #000;
}
.sysprops-btn:hover {
  border-color: #3c7fb1;
  background: linear-gradient(180deg, #eaf6fd 0%, #d9f0fc 50%, #bee6fd 51%, #a7d9f5 100%);
}

.next-call-arrival { position: absolute; inset: 0; z-index: 1200; overflow: hidden; pointer-events: none; background: #030706; animation: next-call-arrival 11s ease both; }.next-call-road { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, #020403 96%), url("/public/assets/chapter2/return-photo/xidao_return_03_near.png") center / cover no-repeat; filter: grayscale(.72) brightness(.44) contrast(1.22); }
.next-call-carrier { position: absolute; left: 36%; bottom: -3%; width: 120px; height: 58%; background: rgba(3,6,5,.95); clip-path: polygon(35% 0,65% 0,75% 18%,100% 100%,0 100%,25% 18%); }.next-call-lamp { position: absolute; right: -28px; top: 48%; width: 44px; aspect-ratio: .78; border-radius: 50%; background: rgba(225,234,216,.58); box-shadow: 0 0 34px rgba(220,232,214,.38); }
.next-call-room { position: absolute; right: 6%; top: 18%; width: 28%; height: 46%; border: 1px solid rgba(210,223,215,.3); background: rgba(1,3,2,.64); box-shadow: inset 0 0 58px #000, 0 0 24px rgba(196,214,204,.06); }.next-call-monitor { position: absolute; left: 23%; top: 25%; width: 54%; height: 39%; border: 8px solid #0c1010; background: rgba(198,218,209,.42); box-shadow: 0 0 30px rgba(199,219,209,.22); }.next-call-stranger { position: absolute; left: 46%; bottom: 0; width: 30px; height: 43%; border-top: 1px solid rgba(221,231,224,.25); background: #010202; clip-path: polygon(32% 0,68% 0,78% 23%,100% 100%,0 100%,22% 23%); }
.next-call-ridge-lights { position: absolute; left: 13%; right: 13%; top: 18%; display: flex; justify-content: space-around; }.next-call-ridge-lights i { width: 12px; height: 18px; border-radius: 50%; opacity: 0; background: #edf2df; box-shadow: 0 0 18px #dfe9d7; animation: ridge-light-on .5s forwards; }.next-call-ridge-lights i:nth-child(2){animation-delay:.32s}.next-call-ridge-lights i:nth-child(3){animation-delay:.64s}.next-call-ridge-lights i:nth-child(4){animation-delay:.96s}.next-call-ridge-lights i:nth-child(5){animation-delay:1.28s}

@keyframes shutdown-reflection-in { from { opacity: 0; } to { opacity: .62; } }
@keyframes result-mountain-breathe { 0% { transform: scale(1.04); } 100% { transform: scale(1.11) translateY(1.5%); } }
@keyframes vacancy-road-break { 0%,35% { opacity: .16; } 100% { opacity: 0; transform: rotateX(62deg) translateX(45px); } }
@keyframes result-lamp-three { 0%,10%,21%,32%,43%,54% { opacity: .08; } 5%,16%,27%,38%,49% { opacity: 1; } 58%,100% { opacity: 0; } }
@keyframes returning-figure-near { from { transform: scale(.68); transform-origin: bottom; } to { transform: scale(1.04); transform-origin: bottom; } }
@keyframes watchers-turn { from { transform: rotate(0); } to { transform: rotate(5deg) scaleX(.88); } }
@keyframes fifth-chair-empty { 0%,54% { opacity: .9; } 75%,100% { opacity: .05; } }
@keyframes login-echo { 0%,8% { opacity: 0; } 22%,76% { opacity: .92; } 100% { opacity: 0; } }
@keyframes result-credits-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes next-call-arrival { 0% { opacity: 0; } 12%,78% { opacity: 1; } 100% { opacity: 0; } }
@keyframes ridge-light-on { to { opacity: .88; } }

@media (prefers-reduced-motion: reduce) {
  .shutdown-reflection,.result-mountain,.result-white-lamp,.result-returning-figure,.result-watchers i,.result-empty-chair,.result-login-echo,.result-credits>div,.result-credits-track,.next-call-arrival,.next-call-ridge-lights i,.return-night-frame { animation-duration: .01ms !important; animation-delay: 0s !important; }
  .return-night-frame.frame-04 { opacity: 0.95 !important; }
}

/* ============================================================
   Windows 脱机文件同步冲突（P15 版本冲突 / P19 四来源排序）
   ============================================================ */
.sync-conflict-dialog {
  margin: 14px 0;
  border: 1px solid #7a93b3;
  border-radius: 4px;
  background: #f4f7fb;
  box-shadow: 0 2px 8px rgba(30, 50, 80, .18);
  overflow: hidden;
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
}
.sync-conflict-dialog > header {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 12px;
  color: #fff;
  font-size: 12px;
  background: linear-gradient(180deg, #5b8fd4 0%, #3c6cb5 55%, #2f5ca3 100%);
  text-shadow: 0 1px 1px rgba(0, 20, 50, .35);
}
.sync-conflict-dialog > header strong { font-weight: 600; }
.sync-conflict-dialog > header small { margin-left: auto; font-weight: 400; opacity: .85; }
.sync-conflict-badge {
  display: inline-grid;
  place-items: center;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #f5c84c;
  color: #5b4300;
  font: 700 12px/1 "Segoe UI", sans-serif;
  text-shadow: none;
}
.sync-conflict-badge.is-ok { background: #7bbf7b; color: #fff; }
.sync-conflict-body { padding: 14px 16px 12px; background: #f4f7fb; }
.sync-conflict-body p { margin: 0 0 12px; color: #33424f; font-size: 12px; line-height: 1.7; }
.sync-conflict-form {
  display: grid;
  gap: 10px 12px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: end;
  border-top: 1px solid #d3dce7;
  padding-top: 12px;
}
.sync-conflict-form label { display: grid; gap: 4px; font-size: 11px; color: #5a6a78; }
.sync-conflict-form input,
.sync-conflict-form select {
  height: 25px;
  padding: 2px 7px;
  border: 1px solid #9fb0c2;
  border-radius: 3px;
  background: #fff;
  color: #1d2a36;
  font: 12px "Segoe UI", "Microsoft YaHei", sans-serif;
}
.sync-conflict-form input:focus,
.sync-conflict-form select:focus { outline: 1px solid #7fa8d6; border-color: #5b8fd4; }
.sync-conflict-form > button {
  grid-column: auto;
  justify-self: end;
  min-width: 92px;
  height: 26px;
  border: 1px solid #5b7ca5;
  border-radius: 3px;
  background: linear-gradient(180deg, #fdfefe, #e7f0fa 55%, #d3e4f6);
  color: #1d3a5f;
  font: 12px "Segoe UI", "Microsoft YaHei", sans-serif;
  cursor: pointer;
}
.sync-conflict-form > button:hover { background: linear-gradient(180deg, #ffffff, #eaf4ff 55%, #d9e9fa); }
.sync-conflict-form [data-mainline-feedback]:empty { display: none; }
.sync-conflict-form [data-mainline-feedback] {
  grid-column: 1 / -1;
  margin: 0;
  color: #a93426;
  font-size: 12px;
}
.route-version-conflict { max-width: 560px; }
.route-version-conflict .sync-conflict-form { grid-template-columns: 1fr 1fr auto; align-items: end; }
.route-version-conflict .sync-conflict-form > button { grid-column: auto; }

/* 记事本壳内的同步冲突视图（P19） */
.sync-conflict-viewer { background: #eef2f6; }
.sync-conflict-viewer > .sync-conflict-dialog { margin: 12px; }
.sync-conflict-viewer.is-resolved pre {
  margin: 0 12px 10px;
  padding: 10px 12px;
  border: 1px solid #cdd7e1;
  background: #fff;
  font-family: Consolas, "Microsoft YaHei", monospace;
  font-size: 12px;
  white-space: pre-wrap;
}
.sync-index-preview { margin: 0 0 12px; padding: 8px 12px 8px 34px; border: 1px solid #c8d5e1; background: #fff; color: #314253; font: 12px/1.9 Consolas, "Microsoft YaHei", monospace; }
.sync-index-preview time { display: inline-block; min-width: 102px; color: #687787; }
.sync-resolve-action { padding: 6px 12px; border: 1px solid #5b7ca5; border-radius: 3px; background: linear-gradient(#fff, #d3e4f6); color: #1d3a5f; cursor: pointer; }
.sync-resolved-list {
  margin: 0 0 4px;
  padding: 8px 12px 8px 30px;
  border: 1px solid #bcd8c3;
  border-radius: 3px;
  background: #eef8f0;
  color: #26502f;
  font: 12px/1.9 Consolas, "Microsoft YaHei", monospace;
}
@media (max-width: 480px) {
  .sync-conflict-form,
  .route-version-conflict .sync-conflict-form { grid-template-columns: 1fr; }
  .sync-conflict-form > button { grid-column: auto; justify-self: stretch; }
  .sync-index-preview time { display: block; }
}

/* ============================================================
   当前照片属性 + 发送队列（P07，零输入）
   ============================================================ */
.chapter-photo-viewer.has-props { position: relative; }
.photo-props-entry {
  margin-left: auto;
  height: 26px;
  padding: 0 12px;
  border: 1px solid #5b7ca5;
  border-radius: 3px;
  background: linear-gradient(180deg, #fdfefe, #e7f0fa 55%, #d3e4f6);
  color: #1d3a5f;
  font: 12px "Segoe UI", "Microsoft YaHei", sans-serif;
  cursor: pointer;
}
.photo-props-entry:hover { background: linear-gradient(180deg, #ffffff, #eaf4ff 55%, #d9e9fa); }
.photo-props-shade {
  position: absolute;
  inset: 0;
  z-index: 40;
  display: grid;
  place-items: center;
  padding: 18px;
  background: rgba(8, 12, 18, .55);
}
.photo-props-dialog {
  width: min(430px, 100%);
  border: 1px solid #6f88a8;
  border-radius: 5px;
  background: #f3f6fa;
  box-shadow: 0 14px 40px rgba(0, 0, 0, .5);
  overflow: hidden;
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
}
.photo-props-dialog > header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px 7px 13px;
  color: #fff;
  font-size: 12px;
  background: linear-gradient(180deg, #4d7ec4 0%, #3663a8 60%, #2b5596 100%);
  text-shadow: 0 1px 1px rgba(0, 20, 50, .35);
}
.photo-props-dialog > header strong { font-weight: 600; }
.photo-props-dialog > header span { margin-left: auto; font-weight: 400; opacity: .85; }
.photo-props-dialog > header button {
  width: 22px;
  height: 20px;
  border: 0;
  border-radius: 3px;
  background: transparent;
  color: #fff;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.photo-props-dialog > header button:hover { background: rgba(255, 255, 255, .2); }
.photo-props-tabs { display: flex; gap: 2px; padding: 8px 12px 0; background: #eef2f7; border-bottom: 1px solid #cfd9e4; }
.photo-props-tabs span { padding: 5px 14px; font-size: 12px; color: #33475a; background: #f3f6fa; border: 1px solid #cfd9e4; border-bottom: 0; border-radius: 3px 3px 0 0; }
.photo-props-grid {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 1px;
  margin: 0;
  padding: 10px 12px;
  background: #d7e0ea;
  border-bottom: 1px solid #cfd9e4;
}
.photo-props-grid dt,
.photo-props-grid dd { margin: 0; padding: 5px 9px; background: #fff; font-size: 12px; }
.photo-props-grid dt { color: #5d6b78; background: #eef2f7; }
.photo-props-grid dd { color: #22303c; }
.photo-props-grid .is-key { font-weight: 700; color: #8a2f22; background: #fdf3ee; }
.photo-props-queue { padding: 10px 14px 4px; }
.photo-props-queue strong { display: block; font-size: 12px; color: #33475a; margin-bottom: 3px; }
.photo-props-queue p { margin: 0; font-size: 11px; line-height: 1.65; color: #6a7885; }
.photo-props-dialog > footer { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 14px 13px; }
.photo-props-dialog > footer button {
  min-width: 78px;
  height: 26px;
  border: 1px solid #8297ad;
  border-radius: 3px;
  background: linear-gradient(180deg, #fefefe, #e9eef4);
  color: #22303c;
  font: 12px "Segoe UI", "Microsoft YaHei", sans-serif;
  cursor: pointer;
}
.photo-props-dialog > footer button:hover { border-color: #5b7ca5; background: linear-gradient(180deg, #ffffff, #dde8f4); }
.photo-props-dialog > footer button.is-primary {
  border-color: #4d6f9c;
  background: linear-gradient(180deg, #6c97cf, #3c6cb5);
  color: #fff;
  text-shadow: 0 1px 1px rgba(0, 20, 50, .3);
}

/* ============================================================
   P09-10 村务网 · 历史值守信息复核
   ============================================================ */
.identity-audit {
  margin: 16px 0 4px;
  border: 1px solid #a88f67;
  background: #fffdf6;
  box-shadow: 0 1px 0 #f0e6cf;
}
.identity-audit > header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  background: #7a302e;
  border-bottom: 3px solid #c2a354;
  color: #f5f1e6;
}
.identity-audit > header strong { font-size: 13px; font-weight: 600; }
.identity-audit > header span { margin-left: auto; font-size: 11px; opacity: .82; }
.identity-audit > p { margin: 0; padding: 11px 14px 4px; font-size: 12.5px; line-height: 1.8; color: #43382c; }
.identity-audit-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 12px;
  align-items: end;
  padding: 8px 14px 14px;
}
.audit-comparison { display: grid; gap: 5px; font-size: 11px; line-height: 1.6; color: #6d5f4c; }
.audit-comparison span:last-child { color: #8a2f22; }
.identity-audit-form button {
  min-height: 34px;
  padding: 4px 18px;
  border: 1px solid #8f6a34;
  background: linear-gradient(180deg, #c9a45c, #a67c3f);
  color: #fff8e6;
  font-size: 13px;
  cursor: pointer;
}
.identity-audit-form button:hover { background: linear-gradient(180deg, #d2af69, #af8548); }
.identity-audit.is-solved { background: #f4f7ef; border-color: #93a57b; }
.identity-audit.is-solved > header { background: #3f5d39; border-bottom-color: #8fa474; }
.identity-audit.is-solved p { color: #2f3d29; }
.identity-audit.is-solved b { color: #7a302e; }
.identity-audit.is-solved small { display: block; padding: 0 14px 13px; color: #6f7a62; font-size: 11px; }

/* P16 复核标记：玩家亲手指出两份原件中相互矛盾的两栏 */
.audit-instruction { margin: 0 0 8px; font-size: 12px; color: #43382c; }
.audit-comparison { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.audit-record { display: grid; gap: 5px; align-content: start; padding: 8px; border: 1px solid #d8c9a8; background: #fffaf0; }
.audit-record > strong { font-size: 11px; color: #6d5f4c; letter-spacing: .06em; }
.audit-field {
  min-height: 0 !important;
  padding: 5px 8px !important;
  border: 1px solid #b8a67e !important;
  background: #fffdf6 !important;
  color: #43382c !important;
  font-size: 11.5px !important;
  text-align: left;
  cursor: pointer;
}
.audit-field:hover { border-color: #8f6a34 !important; background: #f5ead2 !important; }
.audit-field.is-picked { border-color: #7a302e !important; background: #f2deda !important; box-shadow: inset 0 0 0 1px #7a302e; color: #7a302e !important; }
.audit-feedback { grid-column: 1 / -1; margin: 4px 0 0; min-height: 18px; font-size: 11.5px; line-height: 1.6; color: #8a2f22; }
.identity-audit-form > button[disabled] { opacity: .45; cursor: not-allowed; }

/* ============================================================
   P12 手机 · 小米云服务通话记录修复
   ============================================================ */
.call-chain-restore {
  margin: 10px 4px 6px;
  padding: 14px 14px 12px;
  border-radius: 14px;
  background: #f6f7fb;
  color: #22303c;
  text-align: left;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .28);
}
.call-chain-restore > header { display: flex; align-items: center; gap: 10px; }
.call-chain-restore .restore-icon {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #e2e8f2;
  color: #4d6f9c;
  font-size: 15px;
  font-weight: 700;
}
.call-chain-restore .restore-icon:empty::before { content: "☁"; font-size: 16px; }
.call-chain-restore > header strong { display: block; font-size: 13.5px; font-weight: 600; color: #22303c; }
.call-chain-restore > header small { display: block; margin-top: 1px; font-size: 10px; color: #8a93a0; }
.call-chain-restore > p { margin: 9px 0 0; font-size: 11.5px; line-height: 1.65; color: #5a6571; }
.call-chain-restore .call-anomaly { padding: 7px 9px; border-left: 3px solid #a4433d; background: #f8eded; color: #7d3030; font: 11px/1.5 Consolas, "Microsoft YaHei", monospace; }
.call-chain-restore > button {
  width: 100%;
  margin-top: 8px;
  min-height: 36px;
  border: 0;
  border-radius: 18px;
  background: linear-gradient(180deg, #5b8fd4, #3a6bb8);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.call-chain-restore > button:active { background: #3361a8; }
.call-chain-restore.is-solved { background: #eef6ef; }
.call-chain-restore.is-solved .restore-icon { background: #d9ecdd; color: #2f7d49; }
.restore-chain {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 10px;
  margin: 10px 0 0;
  padding: 0;
  list-style: none;
  counter-reset: chain;
}
.restore-chain li {
  position: relative;
  padding: 7px 9px 7px 30px;
  border-radius: 8px;
  background: #fff;
  font-size: 12.5px;
  font-weight: 600;
  color: #2f3d29;
}
.restore-chain li::before {
  counter-increment: chain;
  content: counter(chain);
  position: absolute;
  left: 8px;
  top: 50%;
  transform: translateY(-50%);
  display: grid;
  place-items: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #3f5d39;
  color: #f4f7ef;
  font-size: 9px;
}
.restore-chain small { display: block; font-weight: 400; font-size: 9.5px; color: #82908a; }

/* ============================================================
   P21 广播设备 · 线路测试队列
   ============================================================ */
.audio-queue {
  margin: 14px 0;
  padding: 12px 14px;
  border: 1px solid #9aa9ad;
  background: #eef2f1;
}
.audio-queue > h3 { margin: 0 0 9px; font-size: 13.5px; color: #2c383c; }
.audio-queue-sources { list-style: none; margin: 0 0 8px; padding: 0; border: 1px solid #b6c0c2; background: #fff; }
.audio-queue-sources li {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 4px 9px;
  align-items: baseline;
  padding: 6px 10px;
  border-bottom: 1px solid #dde4e4;
  font-size: 12px;
}
.audio-queue-sources li:last-child { border-bottom: 0; }
.audio-queue-sources b { font: 700 12px Consolas, monospace; color: #435056; }
.audio-queue-sources span { color: #2c383c; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audio-queue-sources small { color: #97413c; font-size: 10.5px; white-space: nowrap; }
.audio-queue-sources li.is-done small { color: #2f7d49; }
.audio-queue-sources li.is-done b::after { content: " ✓"; color: #2f7d49; }
.audio-queue-ready p { margin: 0 0 8px; font-size: 12px; line-height: 1.6; color: #4f5a5c; }
.audio-queue-ready button { min-height: 30px; padding: 5px 16px; }
.audio-queue-wait { margin: 2px 0 0; font: 12px/1.7 Consolas, "Microsoft YaHei", monospace; color: #8a6d1f; }
.audio-queue.is-solved { border-color: #7b9990; background: #e4efea; }
.audio-queue.is-solved h3 { color: #23453b; }
.audio-queue-done { margin: 0 0 5px; font: 700 12.5px/1.7 Consolas, "Microsoft YaHei", monospace; color: #23453b; }
.audio-queue-note { margin: 0; font-size: 11.5px; color: #4a6358; }

/* P22 队列排序：按声音经过线路的方向点选三段 */
.audio-order-pool { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin: 8px 0 6px; }
.audio-order-pick {
  display: grid;
  gap: 3px;
  justify-items: start;
  min-height: 0;
  padding: 7px 9px;
  border: 1px solid #9aa9ad;
  background: #fff;
  color: #2c383c;
  font-size: 11.5px;
  text-align: left;
  cursor: pointer;
}
.audio-order-pick b { font: 700 11px Consolas, monospace; color: #435056; }
.audio-order-pick span { overflow-wrap: anywhere; }
.audio-order-pick small { color: #6a7a7e; font-size: 10.5px; }
.audio-order-pick:hover:not(:disabled) { border-color: #43585e; background: #f2f6f6; }
.audio-order-pick.is-picked { border-color: #2f7d49; background: #e4efea; cursor: default; }
.audio-order-pick.is-picked b { color: #2f7d49; }
.audio-order-feedback { margin: 0 0 8px; min-height: 17px; font-size: 11.5px; line-height: 1.5; color: #6a4a1f; }
.audio-queue-ready > button[disabled] { opacity: .45; cursor: not-allowed; }
@media (max-width: 620px) {
  .identity-audit-form { grid-template-columns: 1fr; }
  .identity-audit-form button { width: 100%; }
  .audio-queue-sources li { grid-template-columns: 22px minmax(0, 1fr); }
  .audio-queue-sources small { grid-column: 2; white-space: normal; }
  .sync-index-preview li { overflow-wrap: anywhere; }
}

/* ============================================================
   观察型回执：P06 论坛缓存更新 / P16 回程缩略图 / P20 追视记录
   ============================================================ */
.topic-cache-updated {
  display: block;
  margin-top: 3px;
  font-style: normal;
  font-size: 10.5px;
  color: #8a6d1f;
}
.topic-cache-updated::before { content: "● "; color: #c2a354; }
.return-photo-receipt {
  font-style: normal;
  margin-left: 14px;
  padding: 1px 7px;
  border-radius: 2px;
  background: rgba(123, 153, 144, .28);
  color: #9fd0c2;
  font-size: 10px;
  font-family: Consolas, "Microsoft YaHei", monospace;
  white-space: nowrap;
}
.monitor-track-bar {
  margin: 8px 0;
  padding: 7px 12px;
  border: 1px solid #8a6d1f;
  background: #f0e6c8;
  color: #5d4a16;
  font: 700 12px/1.5 Consolas, "Microsoft YaHei", monospace;
  letter-spacing: .5px;
}
.monitor-track-bar::before { content: "● "; color: #b08a2c; }

/* 密码对话框 & 修复快捷方式 */
.password-dialog .form-grid, .explorer-properties .form-grid { display: grid; gap: 10px; }
.password-dialog .form-grid label, .explorer-properties .form-grid label { display: grid; gap: 4px; font-size: 12px; color: #333; }
.password-dialog .form-grid input, .explorer-properties .form-grid input { padding: 5px 8px; border: 1px solid #7f9db9; font-size: 13px; }
.password-dialog .form-grid button, .explorer-properties .form-grid button { justify-self: start; padding: 5px 18px; background: linear-gradient(#f5f5f5,#e0e0e0); border: 1px solid #888; cursor: pointer; font-size: 12px; }

/* ZIP 查看器 */
.zip-viewer { height: 100%; min-height: 400px; display: grid; grid-template-rows: 38px 29px minmax(0,1fr) 26px; background: #e9edef; color: #202020; }
.zip-viewer .sheet-toolbar { display: flex; align-items: center; gap: 8px; padding: 0 8px; background: linear-gradient(#f8f8f8,#e8e8e8); border-bottom: 1px solid #c0c0c0; font-size: 12px; color: #444; }
.zip-viewer > footer { display: flex; align-items: center; justify-content: space-between; padding: 4px 12px; border-top: 1px solid #aab3b9; background: #edf2f4; font-size: 12px; }
.zip-address { padding: 6px 12px; background: #f0f0f0; border-bottom: 1px solid #ccc; font-size: 12px; display: flex; align-items: center; gap: 6px; overflow: hidden; }
.zip-address strong { color: #1a5fb4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.zip-contents { padding: 20px; overflow-y: auto; background: #fff; }
.zip-contents h3 { margin: 0 0 12px; font-size: 14px; color: #333; }
.zip-contents ul { list-style: none; padding: 0; margin: 0; }
.zip-contents li { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-bottom: 1px solid #eee; font-size: 13px; }
.zip-icon { font-size: 16px; }
.zip-note { margin-top: 16px; font-size: 11px; color: #888; }

/* 人事检索 & 日志查询 */
.personnel-result, .log-result { margin-top: 16px; padding: 12px; background: #f9f9f9; border: 1px solid #ddd; }
.personnel-result h3, .log-result h3 { margin: 0 0 10px; font-size: 14px; color: #333; }
.station-home-copy .form-grid label { display: grid; gap: 4px; font-size: 12px; }
.station-home-copy .form-grid input { padding: 5px 8px; border: 1px solid #7f9db9; font-size: 13px; }
.station-home-copy .form-grid button { justify-self: start; padding: 5px 18px; background: linear-gradient(#f5f5f5,#e0e0e0); border: 1px solid #888; cursor: pointer; }

/* ===== J02 吹灯贴镜：覆纸脸压玻璃三帧（位图资产，无假脸兜底） ===== */
.glass-jump-overlay {
  position: fixed; inset: 0; z-index: 10000;
  overflow: hidden; background: #000;
  pointer-events: none;
}
.glass-jump-frame {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0; will-change: opacity, transform, filter;
}
.glass-jump-overlay.is-playing .glass-jump-frame-1 { animation: glass-jump-approach 1.7s linear both; }
.glass-jump-overlay.is-playing .glass-jump-frame-2 { animation: glass-jump-pressed 1.7s steps(1,end) both; }
.glass-jump-overlay.is-playing .glass-jump-frame-3 { animation: glass-jump-recede 1.7s linear both; }
@keyframes glass-jump-approach {
  0% { opacity: 0; transform: scale(1.07); filter: brightness(.35) contrast(1.25); }
  7% { opacity: .85; filter: brightness(.6) contrast(1.3); }
  34% { opacity: .92; transform: scale(1.13); filter: brightness(.72) contrast(1.32); }
  39% { opacity: .92; }
  41%, 100% { opacity: 0; }
}
@keyframes glass-jump-pressed {
  0%, 40% { opacity: 0; }
  42% { opacity: 1; transform: scale(1.17); filter: brightness(.82) contrast(1.42) saturate(.82); }
  60% { opacity: 1; transform: scale(1.19); filter: brightness(.78) contrast(1.45) saturate(.82); }
  64%, 100% { opacity: 0; }
}
@keyframes glass-jump-recede {
  0%, 63% { opacity: 0; transform: scale(1.08); }
  67% { opacity: .9; filter: brightness(.6) contrast(1.25); }
  92% { opacity: .25; transform: scale(1.02); filter: brightness(.34) contrast(1.18); }
  100% { opacity: 0; }
}
/* 起雾玻璃、暗角与 CRT 扫描线，统一罩在三帧之上 */
.glass-jump-overlay::before {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background:
    radial-gradient(120% 90% at 50% 46%, transparent 42%, rgba(0,0,0,.55) 78%, #000 100%),
    radial-gradient(46% 30% at 50% 42%, rgba(190,205,200,.10), transparent 70%);
}
.glass-jump-overlay::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none;
  background: repeating-linear-gradient(0deg, rgba(0,0,0,.16) 0 1px, transparent 1px 4px);
  opacity: .32;
}

/* ===== 空位结局：位图版（预载成功时替换 CSS 合成层） ===== */
.result-ending-photo { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.result-ending-photo img {
  width: 100%; height: 100%; object-fit: cover;
  transform: scale(1.04);
  filter: grayscale(.52) brightness(.52) contrast(1.16);
  animation: ending-photo-settle 14s ease-out both;
}
.result-ending-photo::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(2,4,4,.35), transparent 30%, rgba(2,4,4,.55) 100%),
    radial-gradient(90% 70% at 50% 60%, transparent 55%, rgba(2,4,4,.6) 100%);
}
@keyframes ending-photo-settle {
  0% { transform: scale(1.1); filter: grayscale(.52) brightness(.3) contrast(1.2); }
  100% { transform: scale(1.04); filter: grayscale(.52) brightness(.52) contrast(1.16); }
}
.result-vacancy.has-ending-photo .result-mountain,
.result-vacancy.has-ending-photo .result-road-segments,
.result-vacancy.has-ending-photo .result-empty-chair,
.result-vacancy.has-ending-photo .result-white-lamp,
.result-vacancy.has-ending-photo .result-footprints,
.result-returner.has-ending-photo .result-mountain,
.result-returner.has-ending-photo .result-phone,
.result-returner.has-ending-photo .result-returning-figure,
.result-returner.has-ending-photo .result-white-lamp,
.result-fifth.has-ending-photo .result-mountain,
.result-fifth.has-ending-photo .result-road-segments,
.result-fifth.has-ending-photo .result-watchers,
.result-fifth.has-ending-photo .result-empty-chair,
.result-fifth.has-ending-photo .result-login-echo { display: none; }
@media (prefers-reduced-motion: reduce) {
  .result-ending-photo img { animation: none; }
}

/* ===== CAM 03 高能惊悚贴脸与断流故障演出 ===== */
.station-monitor-feed.jumpscare-shock {
  animation: cctv-strobe 0.8s steps(2, start) both;
  filter: contrast(180%) brightness(140%) invert(20%);
  position: relative;
}
.station-monitor-feed.jumpscare-shock::before {
  content: "";
  position: absolute; inset: 0; z-index: 10;
  background: radial-gradient(circle at 50% 50%, rgba(139, 0, 0, 0.45), transparent 70%),
              repeating-linear-gradient(0deg, rgba(255,255,255,0.2) 0 2px, transparent 2px 4px);
  pointer-events: none;
  animation: cctv-tear 0.15s infinite;
}
.station-monitor-feed.signal-lost {
  position: relative;
  background: #030507 !important;
}
.station-monitor-feed.signal-lost::before {
  content: "";
  position: absolute; inset: 0; z-index: 11;
  background:
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.12) 0 1px, transparent 1px 3px),
    linear-gradient(90deg, rgba(255, 50, 50, 0.14), rgba(50, 255, 255, 0.14));
  mix-blend-mode: screen;
  pointer-events: none;
  animation: cctv-sync-tear 0.35s steps(4) 1 normal forwards;
}
.station-monitor-feed.signal-lost img {
  opacity: 0.05 !important;
  filter: blur(8px);
}
.station-monitor-feed.signal-lost::after {
  content: "【 CAM03 信号中断 · SIGNAL LOST 】\A 远端视频流丢失 · 当前距离无法测定\A 正在尝试重新同步基带……";
  white-space: pre-line;
  position: absolute; inset: 0; z-index: 12;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font: 700 13px/1.8 Consolas, "Microsoft YaHei", monospace;
  color: #ff4d4f;
  text-shadow: 0 0 8px rgba(255,77,79,0.7), 0 0 2px #fff;
  background: rgba(0, 0, 0, 0.88);
  animation: signal-blink 0.4s infinite alternate;
}

@media (prefers-reduced-motion: reduce) {
  .station-monitor-feed.jumpscare-shock { animation: none; }
  .station-monitor-feed.jumpscare-shock::before { animation: none; }
  .station-monitor-feed.signal-lost::before { animation: none; opacity: 0.2; }
  .screen-glass-shudder { animation: none; }
}

:root.reduced-motion .station-monitor-feed.jumpscare-shock,
body.reduced-motion .station-monitor-feed.jumpscare-shock,
.reduced-motion .station-monitor-feed.jumpscare-shock {
  animation: none !important;
  transform: none !important;
}

:root.reduced-motion .station-monitor-feed.jumpscare-shock::before,
body.reduced-motion .station-monitor-feed.jumpscare-shock::before,
.reduced-motion .station-monitor-feed.jumpscare-shock::before {
  animation: none !important;
  opacity: 0.1 !important;
}

:root.reduced-motion .station-monitor-feed.signal-lost::before,
body.reduced-motion .station-monitor-feed.signal-lost::before,
.reduced-motion .station-monitor-feed.signal-lost::before {
  animation: none !important;
  opacity: 0.15 !important;
}

:root.reduced-motion .screen-glass-shudder,
body.reduced-motion .screen-glass-shudder,
.reduced-motion .screen-glass-shudder {
  animation: none !important;
  transform: none !important;
}

@keyframes cctv-strobe {
  0% { transform: scale(1) translate(0, 0); }
  20% { transform: scale(1.08) translate(-6px, 3px); filter: invert(80%); }
  40% { transform: scale(1.15) translate(8px, -4px); filter: contrast(300%) hue-rotate(90deg); }
  60% { transform: scale(1.22) translate(-10px, -6px); filter: invert(100%); }
  80% { transform: scale(1.28) translate(6px, 6px); filter: contrast(250%); }
  100% { transform: scale(1.3) translate(0, 0); filter: brightness(300%); }
}

@keyframes cctv-tear {
  0% { transform: translateY(0); opacity: 0.8; }
  50% { transform: translateY(-4px); opacity: 0.3; }
  100% { transform: translateY(5px); opacity: 0.9; }
}

@keyframes cctv-sync-tear {
  0% { transform: scaleY(1) translateY(0); opacity: 0.95; filter: contrast(180%); }
  25% { transform: scaleY(1.35) translateY(-8%); opacity: 0.85; filter: invert(40%) hue-rotate(60deg); }
  50% { transform: scaleY(0.7) translateY(12%); opacity: 0.6; filter: contrast(240%); }
  75% { transform: scaleY(1.1) translateY(-4%); opacity: 0.35; }
  100% { transform: scaleY(1) translateY(0); opacity: 0.12; }
}

@keyframes signal-blink {
  0% { opacity: 0.85; }
  100% { opacity: 1; }
}

/* ===== 破壁敲击屏幕微震颤（敲击显示器物理反馈） ===== */
.screen-glass-shudder {
  animation: glass-shudder 0.18s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}
@keyframes glass-shudder {
  0% { transform: translate(0, 0); }
  20% { transform: translate(-3px, 2px); }
  40% { transform: translate(3px, -2px); }
  60% { transform: translate(-2px, 1px); }
  80% { transform: translate(1px, -1px); }
  100% { transform: translate(0, 0); }
}

