/* 主题色 CSS 变量的唯一来源。以前每个主题的 style.css 各自声明一份完全相同的 :root 块，
   这里提取成单独文件供所有主题共用，减少一份新增主题时容易忘记复制/改错的重复代码。
   这里只是默认值，运行时 CP 后台配置的主题色会在 <html> 上用内联 style 覆盖
   （见 core/js/main.js 的 setProperty 调用），跟这个默认值声明在哪个文件无关。 */
:root {
  --client_themes_front_color: #49d149;
  --client_themes_front_color_90: #49d149e6;
  --client_themes_front_color_75: #49d149c0;
  /* _rgb 用于 rgba(var(--client_themes_front_color_rgb), 0.14) 这类任意透明度，
     _light 是等比提亮 1.15 后的 hover 色。两者都由 main.js 按实际主题色重算，
     不能在 CSS 里用 color-mix()/oklch() 现算——客户端 CEF 不支持，详见 main.js 注释。 */
  --client_themes_front_color_rgb: 73, 209, 73;
  --client_themes_front_color_light: #54f054;
  --client_themes_back_color: #111111;
  --client_themes_back_color_90: #111111e6;
  --client_themes_back_color_75: #111111c0;
}

/* ===================== 省电模式（power save）=====================
 *
 * 玩家进游戏之后菜单界面没人看，却还在原速跑 CSS 动画。客户端 libcef 以
 * --disable-gpu --disable-gpu-compositing 启动，所有渲染走软件路径：一帧动画、一次
 * carousel 淡入淡出，都要 CPU 把对应区域重新光栅化一遍（主题里还大量使用
 * backdrop-filter，一次重绘要连带把背后的内容重新模糊一次），这笔开销直接从游戏帧率里扣。
 *
 * 开关由 core/js/helper.js 的 power_save_set() 挂在 <html> 上，进入/退出条件见那里。
 * 这里只负责"冻结动画"，不改任何会影响观感的属性（backdrop-filter/阴影/颜色一律不动），
 * 使得玩家中途切回菜单时界面和平时长得一模一样，只是暂时不动。
 *
 * 跟上面那些主题色变量一样放在这个文件里，图的是同一件事：三个主题的 main.htm 都引了它，
 * 写一份就够，新增主题不会漏。规则全程只用 html.icafe-power-save 这一个钩子，不认任何
 * 主题自己的类名，所以对主题无感知；带 !important，也不怕排在后面的 style.css/base.css 压过来。
 */
html.icafe-power-save *,
html.icafe-power-save *::before,
html.icafe-power-save *::after {
  animation-play-state: paused !important;
}

/*
 * 例外：弹窗和 toast 的出场动画不能冻。省电期间 wss 仍然可能推来需要玩家看见的东西
 * （管理员消息、时间快用完的提醒），这类动画多半是从 opacity:0 / scale 开始的，冻在
 * 第一帧等于整个弹窗不可见。它们只在出现的那一瞬间各跑一次，不构成持续开销。
 */
html.icafe-power-save .sweet-alert,
html.icafe-power-save .sweet-alert *,
html.icafe-power-save .sweet-overlay,
html.icafe-power-save #toast-container,
html.icafe-power-save #toast-container * {
  animation-play-state: running !important;
}
