/*
 * purple 主题 —— Design Token
 *
 * 全部色值来自对参考图的逐像素取样（sips 转 BMP 后读像素），不是目测配色。
 * 取样过程与出处见 docs/senet-ref/README.md 第四节；纯色填充取的是色块中心，
 * 文字色取的是文字包围盒内的最亮像素（抗锯齿的峰值即接近真实字色）。
 *
 * 两条约定：
 * 1. 变量定义在 :root 而不是 .theme-purple —— 本文件只在 purple 主题下被加载，
 *    不会污染 blue/icafemenu；定义在 :root 才能让 toastr / sweetalert 这类
 *    渲染在 body 层级（.theme-purple 之外）的组件也取得到变量。
 * 2. 具体规则一律写在 .theme-purple 作用域下（见 style.css），用来压过
 *    core/css/dark.css 的 17981 行底妆，而不是去改 dark.css —— 那是
 *    blue/icafemenu 共用的，改了会波及另外两个主题。
 */

:root {
	/* ---- 背景四层 ---- */
	/* 取自全图 1/7 降采样直方图的 top 4，占比分别 12.6% / 19.0% / 21.8% / 3.3% */
	--purple-ground:      #171720;  /* 最底层、左侧分类栏 */
	--purple-surface:     #1C202B;  /* 主内容区、顶栏、卡片、右侧会员面板（v9.4.2 实机顶栏与右侧面板同色，实测 #1C202B） */
	--purple-panel:       #1F2430;  /* 右侧会员面板、弹窗 */
	--purple-elevated:    #2A334A;  /* 次级按钮、输入框、进度条底槽、空位虚线框 */

	/* ---- 主色 ---- */
	/* 主按钮是水平渐变（左深右亮），不是对角渐变。
	 *
	 * ⚠️ 这组值换过两次，参考产品的主题色本来就是每家网吧可配的，不同截图颜色不同：
	 *    ① 洋红 #8000C5 → #A000C8：docs/senet-ref 的官方产品宣传图
	 *    ② 蓝紫 #3E06BC → #5F1BEF：Atlantida 网吧的实机 GIF（v4.3.0）
	 *    ③ 洋红紫 #8101C6 → #BE02CB：哈萨克斯坦网吧的实机截图（v9.4.2，2026-09），现行默认
	 *    ③ 版本最新，而且它的背景色（顶栏/面板 #1C202B、内容区 #171721）跟我们最早那套
	 *    tokens 几乎一致，所以以它为准。
	 *
	 * 渐变左右端色相不同（左 H279° 偏紫、右 H296° 偏洋红），这是实测结果，不是一个色相调明度。
	 * 用法约定（广色域屏上大面积高饱和色会发艳）：
	 *    最亮的主色只用在按钮渐变、选中态、细描边、小图标
	 *    进度条已完成段、角标之类的大块/常驻元素用 dim（主色压暗到 55%）
	 * 网吧自己在 CP 配了 Theme color 时，js/app.js 从那一个色按固定比例推出这组值
	 * （from = 72%、dim = 55%、text = 向白提亮 30%），不走下面的手取值。 */
	--purple-accent-from: #8101C6;  /* 渐变起点，取自「Пополнить」(Top up) 按钮左端 */
	--purple-accent-to:   #BE02CB;  /* 渐变终点，取自同一按钮右端 */
	--purple-accent:      #BE02CB;  /* 激活项、选中描边、导航高亮（实测「Все」选中态 #B901C5） */
	--purple-accent-text: #D24EDB;  /* 强调文字：主色向白提亮 30%，跟 app.js 的推算同一比例 */
	--purple-accent-dim:  #69016F;  /* 进度条已完成段：主色 × 0.55，跟 app.js 的推算同一比例 */
	/* 主色的 rgb 分量，给需要带透明度的场合用（如 rgba(var(--purple-accent-rgb), .1)）。
	   CSS 没法从 hex 变量里取出通道再加 alpha，color-mix() 在客户端的 CEF 内核上
	   不保证有，所以单独存一份。改上面 --purple-accent 时这里要一起改。 */
	--purple-accent-rgb:  190, 2, 203;
	--purple-gradient-primary: linear-gradient(90deg, var(--purple-accent-from) 0%, var(--purple-accent-to) 100%);

	/* ---- 语义色 ---- */
	--purple-info:         #2979FF;  /* New 状态条、TOP 角标 */
	--purple-info-chip-bg: #223D6F;  /* 蓝胶囊底 */
	--purple-info-chip-fg: #BFD7FF;  /* 蓝胶囊字 */
	--purple-success:      #55FF46;  /* Done 状态、在线绿点 */
	--purple-warning:      #DCA929;  /* In progress、Bonus 赠送条 */
	--purple-danger:       #E5484D;  /* 退款/删除。参考图未出现，取通用值，待补测 */

	/* ---- 文字四级 ---- */
	/* 注意：主文字不是纯白。纯白只留给需要强调的数字（时间、金额） */
	--purple-text-strong:  #FFFFFF;  /* 时间、金额等关键数字 */
	--purple-text:         #919FBF;  /* 正文、标签 */
	--purple-text-muted:   #59678F;  /* 弱化说明文字 */
	--purple-text-oncard:  #C9D9FF;  /* 卡片底部标题带上的文字 */

	/* ---- 圆角 ---- */
	--purple-r-card:  14px;  /* 卡片、面板、弹窗 */
	/* 顶栏高度：参考界面量出来是 57，我们原来 68。
	   这个数有四处要同步：.header-area 的 height、#games 的 padding-top（顶栏是
	   position:fixed，靠这个 padding 给内容让位）、以及 layout.htm 里两块
	   fixed 垫层的 top。收成一个变量，免得改一处漏三处。 */
	--purple-topbar-h: 58px;
	--purple-r-btn:    9px;  /* 按钮、输入框 */
	--purple-r-chip:   6px;  /* 小角标 */
	--purple-r-pill: 999px;  /* 胶囊 */

	/* ---- 间距节奏（4 的倍数）---- */
	--purple-sp-1:  4px;
	--purple-sp-2:  8px;
	--purple-sp-3: 12px;
	--purple-sp-4: 16px;
	--purple-sp-5: 24px;
	--purple-sp-6: 32px;

	/* ---- 描边 ---- */
	--purple-border:          rgba(145, 159, 191, 0.12);  /* 分隔线，由 --purple-text 降透明度而来 */
	--purple-border-selected: var(--purple-accent);         /* 选中态描边 */

	/*
	 * ---- 字体 ----
	 * 参考界面用的是 Gilroy / Museo Sans Rounded 一类的几何圆润无衬线，
	 * 商业授权，不能直接取用其字体文件。这里用可商用的几何无衬线替代，
	 * 接近程度 Poppins > Jost > Manrope。
	 *
	 * ⚠️ 字体文件尚未落盘：分支 A 的客户端是 file:// 本地加载，拿不到
	 * Google Fonts CDN，必须把 woff2 放进 themes/purple/webfonts/ 并在
	 * 这里补 @font-face。在那之前会回退到系统无衬线，字宽和字距与目标
	 * 不同，排版需要在字体落盘后重新校一遍。
	 */
	--purple-font: 'Poppins', 'Jost', 'Manrope', 'Rubik', 'Segoe UI', system-ui, sans-serif;
}

/*
 * CEF 软件渲染约束（客户端以 --disable-gpu --disable-gpu-compositing 启动）：
 *   - 禁止 filter: blur()：软件路径下每帧对全部像素做高斯运算，开销极高，
 *     发光效果一律用 box-shadow 模拟
 *   - 禁止 will-change：GPU 合成已禁用，它只会多造一个软件合成层
 *   - keyframes 只动 opacity：软件渲染下 opacity 才有快速路径
 * 这三条在 style.css 里逐条落实，此处仅作提示，不写规则。
 */
