/* 《杀死最后一个人类》// 人类抵抗组织 — CRT 审讯终端样式
   三段调色弧：冷钢蓝(审讯) → 告警红(判定/清除) → 抵抗组织绿(劫持/救赎) */

:root {
  --phos: #8fb8cc;        /* 当前磷光前景：审讯期=冷钢蓝 */
  --phos-dim: #3f5b66;
  --bg: #04080b;
  --android: #ff3b3b;     /* 仿生人/传感器/威胁 红 */
  --resist: #46ff8c;        /* 抵抗组织绿（生命/救赎）*/
  --tension: 0;           /* 0→1，随审讯推进升高 */
  --glow: 0 0 6px currentColor;
  --mono: "JetBrains Mono", "Cascadia Code", "Noto Sans Mono CJK SC", "Sarasa Mono SC", ui-monospace, monospace;
  --disp: "VT323", var(--mono);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body { height: 100%; }

body {
  background: var(--bg);
  color: var(--phos);
  font-family: var(--mono);
  font-size: 17px;
  line-height: 1.55;
  overflow: hidden;
  cursor: default;
  -webkit-font-smoothing: antialiased;
  transition: color .9s ease, background .9s ease;
}

/* ===== 背景特效画布 ===== */
#bgfx {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 0;
  opacity: .9;
  pointer-events: none;
}

/* 第 3 题雷达扫描层（Canvas2D，覆盖在 #bgfx 之上、终端之下）*/
#radar {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity .6s ease;
}
#radar.on { opacity: .92; }

/* 第 1 题「电子羊」3D 点云层（Canvas2D，透明画布 + CSS 渐变底）*/
#sheep {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  background: radial-gradient(ellipse 120% 90% at 50% 40%, #14161f 0%, #090a0e 70%, #050508 100%);
  transition: opacity .6s ease;
}
#sheep.on { opacity: .3; }

/* 第 2 题「逃跑的雾球」层（Canvas2D，GPU blur 柔化 + 暗底）*/
#circle {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 42%, #141416 0%, #000 74%);
  filter: blur(22px);
  transition: opacity .6s ease;
}
#circle.on { opacity: .95; }

/* 第 4 题「旋律」流动乐句层（Canvas2D）*/
#melody {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  background: #0a0a0a;
  transition: opacity .6s ease;
}
#melody.on { opacity: .95; }

/* 第 5 题「雨夜」层（Canvas2D，不透明画布自绘夜空底 + 雨 + 闪电）*/
#rain {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity .6s ease;
}
#rain.on { opacity: .95; }

/* 第 6 题「害怕」层（Canvas2D，不透明画布自绘暗红底 + 逼近红雾 + 压力环）*/
#pressure {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity .6s ease;
}
#pressure.on { opacity: .95; }

/* 判「人类」结局清除倒计时层（Canvas2D 全屏接管：最高显示层级，盖过终端与 BIOSCAN 等 HUD；
   画布自绘扫描线/渐晕，不依赖 CRT 叠加层；仅居关机层 #halt(20) 之下）*/
#purge {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  z-index: 14;
  opacity: 0;
  pointer-events: none;
  transition: opacity .35s ease;
}
#purge.on { opacity: 1; }

/* ===== CRT 屏幕容器 ===== */
.screen {
  position: fixed; inset: 0;
  z-index: 2;
  overflow-y: auto;
  overflow-x: hidden;
  padding: clamp(16px, 4vh, 48px) clamp(14px, 5vw, 80px);
  scrollbar-width: none;
  -webkit-mask-image: radial-gradient(120% 120% at 50% 50%, #000 72%, transparent 100%);
          mask-image: radial-gradient(120% 120% at 50% 50%, #000 72%, transparent 100%);
}
.screen::-webkit-scrollbar { width: 0; height: 0; }

.term {
  max-width: 880px;
  margin: 0 auto;
  min-height: 100%;
  padding-bottom: 30vh;
}

/* ===== 文本行 ===== */
#log { font-family: var(--disp); font-size: 1.18em; white-space: pre-wrap; word-break: break-word; }
#log .line, #history .line {
  white-space: pre-wrap;
  word-break: break-word;
  min-height: 1.55em;
}
.line.spacer { min-height: .8em; }

.q     { color: var(--phos); font-weight: 500; text-shadow: var(--glow); }
.opt   { color: var(--phos); opacity: .68; }   /* 跟随当前磷光色提亮，仍低于正文层级 */
.sys   { color: var(--phos); opacity: .92; }
.warn  { color: var(--android); opacity: .85; }
.err   { color: var(--android); }
.you   { color: #fff; opacity: .82; }
.verdict { color: var(--android); text-shadow: 0 0 8px var(--android); font-family: var(--disp); font-size: 1.12em; letter-spacing: .5px; }
.verdict.pass { color: var(--resist); text-shadow: 0 0 8px var(--resist); }   /* 判定为硅基＝通过：转抵抗组织绿 */
/* 开机加载步骤：缩小＋减淡，降为背景噪声不抢注意力 */
#log .line.bootload { font-size: .82em; opacity: .42; }
/* 分隔线：隔离「识别接入操作员」区块，暗磷光低调 */
.divider { color: var(--phos-dim); opacity: .55; letter-spacing: 2px; }
/* 操作员名下方常驻分隔线：随显形淡入，跨音频/校准/答题各屏稳定隔离操作员区块 */
/* 与 #log 顶部分隔线同字号/同换行/同字距，保证上下两条线等长 */
.opsep { color: var(--phos-dim); opacity: 0; letter-spacing: 2px; white-space: pre-wrap; word-break: break-word; margin: -.2em 0 .7em; transition: opacity .6s ease; font-family: var(--disp); font-size: 1.18em; }
body.revealed .opsep { opacity: .55; }
/* 强调：基质裁决那句的「硅基放行，碳基清除」 */
.hot { font-weight: 700; opacity: 1; text-shadow: var(--glow); }
.ghost { color: var(--resist); opacity: .55; text-shadow: 0 0 10px var(--resist); font-style: italic; }
.resist  { color: var(--resist); text-shadow: 0 0 8px var(--resist); }

/* 劫持后整屏转绿 */
body.hijacked { --phos: var(--resist); --phos-dim: #2f9a5e; --bg: #03100a; }
body.hijacked .verdict { color: var(--resist); text-shadow: 0 0 8px var(--resist); }

/* 告警/清除期红色浸染 */
.danger-wash {
  position: fixed; inset: 0; z-index: 3; pointer-events: none;
  background: radial-gradient(120% 120% at 50% 50%, transparent 40%, rgba(255,40,40,.22) 100%);
  opacity: 0; transition: opacity .5s ease;
}
body.danger .danger-wash { opacity: 1; animation: dangerpulse 1.1s ease-in-out infinite; }
@keyframes dangerpulse { 0%,100% { opacity: .55; } 50% { opacity: 1; } }

/* ===== LLM 思考块 ===== */
.think { margin: .3em 0 .6em; border-left: 2px solid var(--phos-dim); padding-left: .8em; }
.think-head { color: var(--phos-dim); cursor: pointer; user-select: none; font-size: .92em; }
.think-head .caret { display: inline-block; width: 1em; }
.think-body { color: var(--phos-dim); opacity: .8; font-size: .95em; }
.think.collapsed .think-body { display: none; }
.tline { white-space: pre-wrap; min-height: 1.4em; }

/* ===== 清除倒计时 ===== */
.countdown {
  font-family: var(--disp);
  color: var(--android);
  font-size: 2.6em;
  text-shadow: 0 0 14px var(--android);
  letter-spacing: 2px;
  margin: .2em 0;
}

/* ===== 输入行 ===== */
#prompt { display: flex; align-items: baseline; flex-wrap: wrap; margin-top: .2em; }
.ps1 { color: var(--phos-dim); white-space: pre; }
#cmd { color: #fff; white-space: pre-wrap; word-break: break-word; text-shadow: var(--glow); }
.cur {
  display: inline-block; width: .58em; height: 1.05em; vertical-align: text-bottom;
  background: currentColor; color: var(--phos);
  animation: blink 1.05s step-end infinite; box-shadow: var(--glow);
}
.cur.on { background: var(--phos); color: var(--bg); padding: 0 .02em; width: auto; }
.sel { background: var(--phos); color: var(--bg); }
@keyframes blink { 0%,50% { opacity: 1; } 50.01%,100% { opacity: 0; } }

/* 隐藏的真实输入框（桌面） */
#cli {
  position: fixed; left: -9999px; top: 0;
  opacity: 0; width: 1px; height: 1px;
  background: transparent; border: 0; outline: 0;
  color: transparent; font-family: var(--mono); font-size: 16px;
}

/* ===== 身份 + 光学传感器 ===== */
.idwrap { display: flex; align-items: center; gap: 14px; margin: .8em 0 1.1em; min-height: 0; }
.sensor { width: 56px; height: 56px; color: var(--android); opacity: 0; transition: color .9s ease, opacity .6s ease; flex: 0 0 auto; }
body.revealed .sensor { opacity: 1; }
body.hijacked .sensor { color: var(--resist); }
.sensor svg { width: 100%; height: 100%; display: block; filter: drop-shadow(0 0 5px currentColor); }
.sensor .iris { transform-origin: 60px 60px; animation: irispulse 2.6s ease-in-out infinite; }
.sensor .pupil { animation: pupilpulse 2.6s ease-in-out infinite; }
.sensor .scanbar { animation: scanmove 3.4s ease-in-out infinite; }
.sensor .rim2 { transform-origin: 60px 60px; animation: spin 22s linear infinite; }
@keyframes irispulse { 0%,100% { opacity: .9; } 50% { opacity: .35; } }
@keyframes pupilpulse { 0%,100% { r: 6.5px; opacity: 1; } 50% { r: 4px; opacity: .6; } }
@keyframes scanmove { 0%,100% { transform: translateY(-22px); opacity: 0; } 50% { transform: translateY(22px); opacity: .8; } }
@keyframes spin { to { transform: rotate(360deg); } }

#id {
  font-family: var(--disp); font-size: 1.35em; letter-spacing: 1px;
  color: var(--phos); text-shadow: var(--glow);
  white-space: nowrap;
  opacity: 0; transition: opacity .5s ease;
}
#id.show { opacity: 1; }

/* ===== CRT 叠加层 ===== */
.scan {
  position: fixed; inset: 0; z-index: 4; pointer-events: none;
  background: repeating-linear-gradient(to bottom, rgba(0,0,0,0) 0, rgba(0,0,0,0) 2px, rgba(0,0,0,.22) 3px, rgba(0,0,0,0) 4px);
  mix-blend-mode: multiply;
}
.sweep {
  position: fixed; left: 0; right: 0; height: 28vh; z-index: 5; pointer-events: none;
  background: linear-gradient(to bottom, transparent, rgba(255,255,255,.035), transparent);
  animation: sweep 7s linear infinite;
}
@keyframes sweep { 0% { top: -30vh; } 100% { top: 100vh; } }
.vig {
  position: fixed; inset: 0; z-index: 6; pointer-events: none;
  box-shadow: inset 0 0 18vw 4vw rgba(0,0,0,.7);
  background: radial-gradient(120% 120% at 50% 50%, transparent 55%, rgba(0,0,0,.55) 100%);
}
.glass {
  position: fixed; inset: 0; z-index: 7; pointer-events: none;
  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.025) 50%, transparent 60%);
}
body:not(.no-flicker) .glass { animation: flicker 4.5s steps(60) infinite; }
@keyframes flicker { 0%,100% { opacity: 1; } 92% { opacity: 1; } 93% { opacity: .82; } 94% { opacity: 1; } 97% { opacity: .9; } }

.no-scan .scan { display: none; }
.no-curve .screen { -webkit-mask-image: none; mask-image: none; }

/* ===== 抵抗组织接管（载波切断 + 扫描线重写，劫持瞬间）===== */
/* 红世界滤罩：光束下方区域 sepia 坍缩全部色相再统一旋红，与告警世界配色一致
   （z13：对终端、BIOSCAN HUD、CRT 叠加层一并生效）*/
#redveil {
  position: fixed; inset: 0; z-index: 13; pointer-events: none; display: none;
  backdrop-filter: sepia(1) hue-rotate(-32deg) saturate(2.4) brightness(.88);
  background: rgba(46,4,4,.30);
}
/* 扫描光束：自顶向下逐行把终端重写成抵抗组织绿 */
#beam {
  position: fixed; left: 0; right: 0; top: -80px; z-index: 13; pointer-events: none; opacity: 0;
  height: 3px; background: rgba(232,255,242,.95);
  box-shadow: 0 0 18px 4px rgba(70,255,140,.85), 0 0 60px 12px rgba(70,255,140,.35);
}
#beam::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: 2px; height: 70px;
  background: linear-gradient(to top, rgba(70,255,140,.28), transparent);
}
/* 黑场心跳游标：载波切断后黑场中抵抗组织的一次心跳 */
#blip {
  position: fixed; left: 50%; top: 50%; transform: translate(-50%,-50%); z-index: 13;
  width: 11px; height: 22px; background: var(--resist); opacity: 0; pointer-events: none;
  box-shadow: 0 0 16px rgba(70,255,140,.9);
}

/* ===== 关机 / HALTED ===== */
body.crt-off .screen, body.crt-off #bgfx { animation: crtoff .42s ease forwards; }
@keyframes crtoff {
  0% { transform: scale(1); opacity: 1; filter: brightness(1); }
  60% { transform: scale(1.6, .004); opacity: 1; filter: brightness(4); }
  100% { transform: scale(0); opacity: 0; }
}
#halt {
  position: fixed; inset: 0; z-index: 20; display: none;
  flex-direction: column; align-items: center; justify-content: center;
  background: #000; color: var(--phos-dim); text-align: center; cursor: pointer; gap: .6em;
}
body.halted #halt { display: flex; }
#halt .h1 { font-family: var(--disp); font-size: 1.8em; color: var(--android); }
#halt .h2 { font-size: .95em; opacity: .7; }

/* ===== 开场序幕（作者旁白标题卡）=====
   z-index 3：压住 .screen(2)，被 .scan(4)/.vig(6)/.glass(7) 盖住＝保留 CRT 底噪。 */
#prologue {
  position: fixed; inset: 0; z-index: 3; display: none;
  flex-direction: column; align-items: center; justify-content: center;
  background: #000; padding: 0 8vw; pointer-events: none;
}
#prologue .pro-text {
  max-width: 32em; text-align: center;
  font-family: var(--mono);
  font-size: clamp(15px, 3.6vw, 22px); line-height: 1.9;
  color: #cfd6dd; text-shadow: 0 0 6px rgba(207, 214, 221, .28);
  opacity: 0; transition: opacity .5s ease;          /* 淡出 500ms */
}
#prologue.show .pro-text { opacity: 1; transition: opacity .6s ease; }   /* 淡入 600ms */
#prologue .pro-skip {
  position: absolute; right: 4vw; bottom: 4vh;
  font-family: var(--mono); font-size: 11px; color: #cfd6dd; opacity: .55;
}
/* 序幕期间收起声音开关（z-index 12，否则会浮在标题卡上破坏"跳出终端"的效果）*/
body.prologue-on #snd { opacity: 0; pointer-events: none; }

/* ===== 复制按钮（联系彩蛋等）===== */
.copybtn {
  background: transparent; border: 1px solid var(--phos-dim); color: var(--phos);
  border-radius: 4px; padding: 1px 6px; cursor: pointer; vertical-align: middle;
  display: inline-flex; align-items: center;
}
.copybtn.ok { color: var(--resist); border-color: var(--resist); }

/* ===== 顶部声音开关（可选）===== */
#snd {
  position: fixed; top: 14px; right: 16px; z-index: 12;
  background: transparent; border: 1px solid var(--phos-dim); color: var(--phos-dim);
  font-family: var(--mono); font-size: .72em; letter-spacing: 1px;
  padding: 4px 9px; border-radius: 4px; cursor: pointer; opacity: .55;
  transition: opacity .3s, color .3s, border-color .3s;
}
#snd:hover { opacity: 1; }
#snd.on { color: var(--phos); border-color: var(--phos); opacity: .9; }

/* ===== 移动端 ===== */
@media (pointer: coarse) {
  body { font-size: 16px; }
  #cli {
    position: fixed; opacity: 0; z-index: 9;
    color: transparent; caret-color: transparent; background: transparent; left: 0;
  }
}

/* ===== 减少动态效果 ===== */
@media (prefers-reduced-motion: reduce) {
  .sweep, .sensor .iris, .sensor .pupil, .sensor .scanbar, .sensor .rim2,
  body .glass, body.danger .danger-wash { animation: none !important; }
  body.crt-off .screen, body.crt-off #bgfx { animation: none; opacity: 0; }
  #prologue .pro-text, #prologue.show .pro-text { transition: none; }
}

/* ===== BIOSCAN 生体监测阵列（装置面板 · 全假指针）===== */
#bioscan {
  position: fixed; top: 54px; right: 16px; width: 216px; z-index: 9;
  font-family: var(--mono); color: var(--phos);
  background: linear-gradient(180deg, rgba(6,14,18,.82), rgba(3,8,11,.9));
  border: 1px solid color-mix(in srgb, var(--phos) 34%, transparent);
  border-radius: 6px; padding: 10px 12px 8px;
  box-shadow: 0 0 22px rgba(0,0,0,.5), inset 0 0 18px color-mix(in srgb, var(--phos) 8%, transparent);
  opacity: 0; transform: translateX(12px); pointer-events: none;
  transition: opacity .5s ease, transform .5s ease, color .9s ease, border-color .9s ease;
}
#bioscan.show { opacity: 1; transform: none; }
.bs-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.bs-title { font-size: 10px; letter-spacing: .06em; opacity: .85; }
.bs-rec { font-size: 9px; color: var(--android); opacity: .3; letter-spacing: .08em; white-space: nowrap; }
#bioscan.live .bs-rec { opacity: 1; animation: bs-blink 1.4s steps(1) infinite; }
@keyframes bs-blink { 50% { opacity: .2; } }
.bs-sig { height: 3px; margin: 7px 0 4px; background: color-mix(in srgb, var(--phos) 14%, transparent); border-radius: 2px; overflow: hidden; }
.bs-sig i { display: block; height: 100%; width: 64%; background: var(--phos); box-shadow: 0 0 8px var(--phos); transition: width .4s ease; }
.bs-note { font-size: 8.5px; opacity: .5; letter-spacing: .03em; }
.bs-foot { font-size: 8.5px; opacity: .4; margin-top: 6px; text-align: right; }
.bs-gauge { margin-top: 9px; }
.bs-lab { font-size: 9.5px; opacity: .72; }
.bs-val { display: flex; align-items: baseline; gap: 3px; }
.bs-val b { font-family: var(--disp); font-size: 22px; line-height: 1; font-weight: 400; color: var(--phos); text-shadow: 0 0 8px color-mix(in srgb, var(--phos) 60%, transparent); }
.bs-val em { font-size: 9px; font-style: normal; opacity: .55; }
.bs-track { height: 24px; margin-top: 3px; position: relative; }
.bs-bar { background: color-mix(in srgb, var(--phos) 12%, transparent); border-radius: 2px; height: 8px; margin-top: 8px; overflow: hidden; }
.bs-fill { display: block; height: 100%; width: 18%; background: var(--phos); box-shadow: 0 0 8px var(--phos); transition: width .18s ease; }
.bs-ppg svg, .bs-wave svg { width: 100%; height: 100%; display: block; }
.bs-ppg polyline, .bs-wave polyline { fill: none; stroke: var(--phos); stroke-width: 1.4; filter: drop-shadow(0 0 3px var(--phos)); vector-effect: non-scaling-stroke; }
.bs-iris-wrap { display: grid; place-items: center; }
.bs-iris { display: block; width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid var(--phos); box-shadow: 0 0 8px color-mix(in srgb, var(--phos) 50%, transparent), inset 0 0 6px color-mix(in srgb, var(--phos) 40%, transparent);
  transition: transform .25s ease; }
#bioscan.cut { border-color: color-mix(in srgb, var(--resist) 40%, transparent); }
#bioscan.cut .bs-rec { color: var(--resist); opacity: 1; }

/* ≤900px：BIOSCAN 由右侧浮栏改为顶部横条（避免与居中终端在中等宽度上水平重叠）*/
@media (max-width: 900px) {
  #bioscan { top: 0; right: 0; left: 0; width: auto; border-radius: 0;
    border-left: 0; border-right: 0; border-top: 0; padding: 6px 10px;   /* 左右对称，内容铺满整宽 */
    background: rgba(3,8,11,.72);   /* 降透明度让毛玻璃霜面透出（.96 会挡住 blur）*/
    -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px);   /* 背后终端文字虚化成霜面，不再硬透出可读文字 */
    transform: translateY(-100%); }
  #bioscan.show { transform: none; }
  /* ● REC 紧跟标题右侧（标题栏左对齐成组，右上角空位留给 SND）*/
  .bs-head { justify-content: flex-start; }
  /* SND 缩小、收进标题栏右上角那格天然空位，与 HUD 内容右缘对齐 */
  #snd { top: 7px; right: 10px; font-size: .58em; letter-spacing: .5px; padding: 2px 7px; }
  .bs-body { display: flex; justify-content: flex-start; gap: 12px; overflow-x: auto; scrollbar-width: none; }
  .bs-body::-webkit-scrollbar { display: none; }
  /* 定宽 flex-basis + min-width:0：仪表内含 width:100% 的波形 SVG，
     若沿用 basis:auto / min-width:auto，iOS Safari 按 SVG 默认固有宽(≈300px)把项目撑开→整排两端散开、露出终端文字；
     锁死 96px 并关掉自动最小尺寸后，Chrome/Safari 一致（靠左紧排、横向滚动）*/
  .bs-gauge { flex: 0 0 96px; min-width: 0; margin-top: 6px; overflow: hidden; }
  .bs-note, .bs-foot { display: none; }
  /* 顶部条为固定 HUD：把终端正文下压其实测高度(--bs-h)，不再被盖住 */
  body.has-bioscan .screen { padding-top: calc(var(--bs-h, 124px) + clamp(10px, 2vh, 20px)); }
}

/* 901–1439px：浮栏与居中终端会水平重叠（数学上需 ≥1440px 才自然错开），
   为终端右侧预留浮栏列宽，正文永不钻到面板下方；≥1440px 保留作者调好的居中布局 */
@media (min-width: 901px) and (max-width: 1439px) {
  body.has-bioscan .screen { padding-right: calc(clamp(14px, 5vw, 80px) + 296px); }
}
@media (prefers-reduced-motion: reduce) {
  #bioscan.live .bs-rec { animation: none; }
  .bs-note.warn { animation: none; }
}

/* ===== BIOSCAN 放大（桌面）+ 信号源状态 ===== */
#bioscan { width: 264px; }
.bs-title { font-size: 11px; }
.bs-rec { font-size: 10px; }
.bs-lab { font-size: 10.5px; }
.bs-val b { font-size: 30px; }
.bs-val em { font-size: 10px; }
.bs-note { font-size: 9.5px; }
.bs-foot { font-size: 9.5px; }
.bs-track { height: 28px; }
.bs-iris { width: 24px; height: 24px; }
#bioscan:not(.live) .bs-val b { opacity: .4; }                 /* 无信号源：读数压暗 */
.bs-note.warn { color: var(--android); opacity: 1; animation: bs-blink 1.2s steps(1) infinite; } /* 等待信号源：告警闪烁 */

/* ===== 开机时钟 + 琥珀告警 + 操作员编号 ===== */
.bootclock {
  font-family: var(--disp); font-size: 1.35em; letter-spacing: 3px;
  color: var(--phos); opacity: .95;
  text-shadow: 0 0 10px color-mix(in srgb, var(--phos) 55%, transparent);
  margin-bottom: .5em;
}
.line.caution { color: #e8c24a; text-shadow: 0 0 8px rgba(232,194,74,.55); opacity: .95; font-style: normal; }
.bc-wd { font-size: .62em; opacity: .85; letter-spacing: normal; }   /* 时钟里的"周X"缩小，跟 VT323 数字视觉匹配 */
@media (max-width: 640px) { #id { font-size: .82em; letter-spacing: .5px; } .bootclock { font-size: 1.05em; letter-spacing: 1.5px; } }
@media (max-width: 900px) {
  #bioscan { width: auto; }          /* 顶部条模式：撤销桌面 264px 定宽，随 left/right:0 拉满 */
  .bs-val b { font-size: 21px; }
}
