/* wasteland.css -- 「废土」皮肤（默认皮肤）。
 *
 * 调性来源：posapp/ 的 POS 剧情终端界面（Fallout 4 剧情终端，绿色磷光 CRT）。
 * 取的是它的**配色与质感逻辑**，不是它的图片：近黑偏绿底、磷光绿主色、
 * 扫描线 + 显像管暗角、等宽字体、硬直角。那份页面的令牌名是 --pb/--bg2/--txt…
 * 这里把它们翻到本仓库的契约名（tokens.css 顶部那张表）上，所以两个前端的
 * 观感来自同一组数值，而不是「看起来差不多」。
 *
 * 为什么只有一层 :root、不加 [data-skin] 选择器：
 *   它是**出厂默认**。不带属性就是它，首帧即正确，不需要 JS 参与，
 *   也就没有「先闪一下旧配色再换肤」的问题。用户选了别的皮肤时，
 *   theme.js 会在 <html> 上写 data-skin，其它皮肤文件用更高优先级的选择器接管。
 *
 * 与 bebot/features/themes.py::SKINS['wasteland'].tokens **必须逐值相同**：
 *   这里是调不到 /api/config/themes 的页面（非创始人、离线、接口 5xx）的兜底，
 *   两份数值一旦漂移，同一台设备在两种身份下会看到两套颜色。
 *   断言见 tests/test_webapp_skins.py::test_static_skin_matches_registry。
 */

:root {
  /* 面：由深到浅四档，全部带绿色分量 —— 纯灰在磷光绿旁边会显脏 */
  --bg: #040805;
  --bg-sunken: #020502;
  --bg-elevated: #08120a;
  --bg-raised: #0d1d11;

  /* 文字：磷光染色的白，不是纯白（纯白在 CRT 观感里太刺） */
  --text: #cdfadb;
  --text-dim: #8fc7a4;
  --muted: #6eae86;

  /* 强调：磷光绿。--accent-soft / --accent-line 是它的两种透明度，
   * 分别用于填充与描边，这样页面不必自己 color-mix。 */
  --accent: #3dff8a;
  --accent-text: #03150a;
  --accent-soft: rgba(61, 255, 138, 0.10);
  --accent-line: rgba(61, 255, 138, 0.32);

  /* 描边：低饱和的绿，避免 1px 纯绿线在暗底上过于刺眼 */
  --border: #1e3d29;

  /* 状态：直接沿用终端的四色语义（危险 / 警告 / 成功 / 信息） */
  --danger: #ff6f5e;
  --warn: #ffd25e;
  --ok: #3dff8a;
  --info: #86d9ff;

  /* 字体：正文保留系统中文字体栈（剧情终端也用系统中文，等宽中文会糊）；
   * 等宽栈第一位是终端同款的 Share Tech Mono，未安装时逐级回退到本机等宽。 */
  --font-body: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-mono: "Share Tech Mono", "Cascadia Mono", Consolas, monospace;

  /* 形状：硬直角。废土终端没有圆角卡片，圆角会让它看起来像普通后台。 */
  --radius: 4px;
  --radius-sm: 3px;
  --radius-lg: 6px;

  /* 光：磷光辉光只给强调色与主按钮，满屏发光会把手写正文糊掉 */
  --glow: 0 0 7px rgba(61, 255, 138, 0.45);
  --shadow: 0 0 0 1px rgba(61, 255, 138, 0.08);

  /* 纹理档位：扫描线 0.55 / 暗角 0.55 与剧情终端实测值一致；
   * 颗粒降低到 0.05（终端没有颗粒层，这里是借用 ui-shared 的质感旋钮，
   * 所以给低档，避免叠两层噪声）。 */
  --texture-scanline: 0.55;
  --texture-vignette: 0.55;
  --texture-grain: 0.05;
  --texture-glow: 0.35;

  /* 动效：数值取自剧情终端的 @keyframes 实测 ——
   *   进场 .35s / 上移 4px（fin）、切页 .26s（tabin）、光标 1.1s（blink）、
   *   亮度抖动 6s steps(1)（flick）、颗粒 .9s steps(3)（grain）、
   *   滚条 10s（roll）、完成脉冲 1.8s（donepulse）。
   * `--motion-step` 是步进时机：用 steps(6) 才有机械年代感，线性过渡一看就是现代网页。 */
  --motion-enter-duration: 0.35s;
  --motion-enter-shift: 4px;
  --motion-swap-duration: 0.26s;
  --motion-blink: 1.1s;
  --motion-crt-flicker: 6s;
  --motion-crt-grain: 0.9s;
  --motion-crt-roll: 10s;
  --motion-pulse-duration: 1.8s;
  --motion-pulse-glow: 0 0 28px rgba(61, 255, 138, 0.65);
  --motion-step: steps(6);
}

/* --- 废土专属润色：只在「确定不是别的皮肤」时生效 ---
 * 选择器 :root:not([data-skin="base"]) 覆盖两种情况：不带属性（出厂默认）
 * 与显式选了 wasteland。写成 :root 会让下面的规则漏到 base 皮肤上
 * （base 可能是浅色，锁死 color-scheme: dark 会把滚动条和表单控件刷黑）。 */
:root:not([data-skin="base"]) {
  color-scheme: dark;
}

/* 磷光辉光：标题淡淡发光，模拟荧光屏余晖。不参与布局。 */
:root:not([data-skin="base"]) h1,
:root:not([data-skin="base"]) h2 {
  text-shadow: var(--glow);
}
