/* ======== FILE: style.css ======== */
/*--
Author: W3layouts
Author URL: http://w3layouts.com
--*/
.siderbar {
	padding: 10px 0 0;
	position: fixed;
	width: 250px;
	height: 300px;
	z-index: 1000;
	background-color: none;
	opacity: 1;
	filter: alpha(opacity=20);
}

.voicechat {
	display: none;
}

html,
body {
	font-size: 100%;
	font-family: 'Open Sans', sans-serif;
	background: #ffffff;
	margin: 0;
}

.logo-image {
	width: 50%;
	/* 缩放为原始宽度的一半 */
	height: auto;
	/* 高度自适应，保持图片比例 */
}

p,
ul li,
ol li {
	margin: 0;
	font-size: 14px;
	letter-spacing: 1px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: 'Jura', sans-serif;
	margin: 0;
}

ul,
label {
	margin: 0;
	padding: 0;
}

ul2 {
	list-style-type: none;
	padding-left: 0;
}

ul2 li {
	background-color: #ffffff;
	padding: 10px;
	margin: 5px 0;
	border: 1px solid #ddd;
	border-radius: 5px;
	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1);
}

ul2 li:hover {
	background-color: #ecf0f1;
}

body a:hover {
	text-decoration: none;
}

/* ===== 顶栏右侧：站点信息 + 登录（和导航同一条吸顶栏） =====
   原来信息条与导航是上下两条，只有白条吸顶、信息条会滚走；
   现在合成一条：桌面端并排靠右，移动端跟着汉堡菜单一起展开。
   色板跟 pg_common.css 一致：底 #fff / 边框 #e9edf2 / 主色 #2b83bd。 */
.head-side {
	position: relative;
	display: flex;
	align-items: center;
	gap: 14px;
	flex-shrink: 0;
}

.head-info {
	display: flex;
	align-items: center;
	gap: 6px 12px;
	min-width: 0;
	font-size: 13.5px;
	color: #5b6b80;
}

/* ★ 桌面端顶栏的宽度预算（改之前先读这段）
   来龙去脉：
     · 2026-10-01 登录态超宽 215px，导航右对齐一超宽就往左顶（压到站标上）→ 登录后收起 QQ群/邮箱；
     · 2026-10-04 顶栏加语言开关（多语言），实测**未登录时也只剩 2px 余量** ——
       开关（59px + 间距）一进来就把「主 页」压到 logo 上（首项文字左边界 254 < 站标右边界 306）。
     · 2026-10-04 晚 用户选 A 方案：**顶栏容器不再死守 Bootstrap 的 1170，改成随窗口自适应**
       （1170 起、1560 封顶）。窄桌面（1200-1439）仍要按老规矩让位；宽桌面（≥1440）把让出去的全放回来。
   容器宽度口径：max(1170px, min(1560px, 100% - 48px))
     1200→1170（与老版一致，不退步） 1280→1232  1440→1392  1600→1552  1920→1560 */
@media (min-width: 1200px) {
	.navbar-sticky .container.navbar-flex {
		width: max(1170px, min(1560px, calc(100% - 48px)));
		max-width: none;
	}

	/* ★ 右区只留「在线 + 登录/账户 + 语言」：QQ群/邮箱 桌面端一律放页脚。
	   2026-10-04 实测（用户要的三区版式：logo 最左 / 导航正中 / 其余最右）：
	   QQ群+邮箱 占 276px，会把第 3 列撑到 min-content 满格 ⇒ 导航右边只剩 13px（又像贴着右侧），
	   任意宽度都救不回来（容器 1560 时第三列的份额 562 仍 < 群+邮箱+登录+语言的 596）。
	   把它们留在页脚（每页都有），右区收窄到 ~320px，导航两侧才有真留白：
	   1440 实测 左 322 / 右 158，且导航中心与整条栏中心完全重合。 */
	.head-side .hb-item-group,
	.head-side .hb-item-mail {
		display: none;
	}

	/* ★ 右区与信息行都不许被压扁（2026-10-04 用户反馈"在线和登录挤在一块"的真因）：
	   .head-info 原本是 min-width:0（给手机折叠面板留的收缩余量），三段式栅格里第三列可以缩，
	   信息行就跟着缩到 37px，而「Online 78 online」要 129px ⇒ 内容溢出压在登录按钮上
	   （英文档 1200/1280/1366 实测内部溢出 92/61/18px；中文繁中文案短，一直看不出来）。
	   .head-side 也得钉住：只钉 .head-info 时栅格仍按等分给列宽（实测 334/334），
	   而右区内容要 399px ⇒ 语言开关被顶到容器外（页面横向溢出 54px）。
	   两个都钉住后，栅格按真实最小内容分配三列。 */
	.head-side {
		min-width: max-content;
	}

	.head-info {
		min-width: max-content;
	}

	/* 英文档：导航一项比中文宽 30~60px（Client / More…），桌面端整体再收紧一档
	   —— 收内边距 + 去掉中文排版用的字距（英文不需要）。实测把净空从 -4px 拉回 40px+。 */
	html[lang="en"] .navbar-flex .navbar-nav > li > a {
		padding: 0 10px;
		letter-spacing: 0;
	}
}

/* 中窄桌面（1200-1599，容器 1170-1552）：登录态的在线人数标签、英文问候语放不下 —— 让位。
   （≥1600 顶栏有 ≥1552px，见下一段放回）
   ★ 上界必须是 1599.98：早先写 1439.98，而宽档从 1600 起 —— 1440-1599 这一档谁都不管，
     英文问候语会冒出来把右区撑到 615px（实测导航偏移 -183）。 */
@media (min-width: 1200px) and (max-width: 1599.98px) {
	/* 在线人数**瘦身常显**而不是藏起来：只留「图标 + 数字」，hover 的摘要/明细浮层照旧
	   （用户 2026-10-04 明确要"在线人数别没了，换个形式显示"）。
	   实测（1201px 登录态净空）：中文 99→37、繁中 97→35、英文 57→90。 */
	.head-side:has(.hb-hello) .hb-item-online .hb-k,
	.head-side:has(.hb-hello) .hb-item-online .hb-unit {
		display: none;
	}

	/* 登录态右区最胖（身份两行 + 账户 + 登出 + 语言 + 在线）——问候信息框收到 150，
	   给导航留出余量（不然 1200 下导航左空只剩 30 多px、整体往左偏）。≥1600 放宽回 200。 */
	.hb-hello {
		max-width: 150px;
	}

	/* 英文档右区最紧：身份框再收到 130 */
	html[lang="en"] .hb-hello {
		max-width: 130px;
	}
}

/* 宽桌面（≥1600，容器 ≥1552px）：把窄桌面让出去的东西放回来。
   ★ 门槛取 1600 而不是 1440：登录态的右区（问候语+账户+登出+语言+在线）在 1440 那档会把第三列填满，
   导航右边只剩 13px（又像贴着右侧）。1600 起第三列份额 558px 才有富余，放回来不挤。 */
@media (min-width: 1600px) {
	/* 在线人数恢复全标签「在线 x 人」（登录态也是）；游客本来就没瘦身过 */
	.head-side:has(.hb-hello) .hb-item-online .hb-k,
	.head-side:has(.hb-hello) .hb-item-online .hb-unit {
		display: inline;
	}

	/* 宽桌面身份块放宽：中文 200 / 英文 190（窄档是 150/130，见上面 1200-1599.98 那段） */
	.hb-hello {
		max-width: 200px;
	}

	html[lang="en"] .hb-hello {
		max-width: 190px;
	}
}

/* 注意：这里不能设 position: relative —— 登录浮层要贴在整条栏的下方，
   得挂到 .head-side 上（它和栏一样高）；挂到按钮行上会浮到栏中间。 */
.head-user {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	flex-shrink: 0;
}

/* 在线人数的小字拆分（游戏x·小镇y）：栏内不放，只在悬浮框/title 里看，省宽度 */
.hb-item #client-count .hb-split {
	display: none;
}

.hb-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	white-space: nowrap;
}

/* 信息要看得清：图标更亮、标签中灰、数值深色加粗 —— 原来整条都是浅灰，糊在一起 */
.hb-item i {
	/* 图标用 logo 里的青蓝，跟站内素材同族 */
	color: #2f8fd0;
}

.hb-item .hb-k {
	color: #7b8894;
}

.hb-item .hb-v,
.hb-item #client-count {
	color: #1c2b3e;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}

.hb-item a {
	color: #2b6f9e;
	text-decoration: none;
	font-weight: 600;
}

.hb-item a:hover {
	color: #1b5f8f;
	text-decoration: underline;
}

/* ===== 顶栏：语言开关（2026-10-04 多语言） =====
   桌面端 = 地球按钮 + 点开的浮层（跟登录浮层同款：贴整条栏下方，挂 .head-side）；
   移动端 = 不做浮层，三项（简/繁/EN）平铺在信息行里，见下方 @media (max-width:1199px)。
   宽度刻意做小：顶栏是固定高度的一条，且「登录态超宽会把导航往左顶」（见上面 .head-side 注释），
   这里只占一个地球图标 + 当前语言短名。 */
.hb-lang {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.hb-lang-btn {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 26px;
	padding: 0 9px;
	border: 1px solid #dbe3ec;
	border-radius: 7px;
	background: #fff;
	color: #44586d;
	font-family: inherit;
	font-size: 12.5px;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.hb-lang-btn:hover {
	background: #f6f9fc;
	border-color: #c3d3e2;
	color: #2b83bd;
}

.hb-lang-btn .fa-globe {
	color: #2f8fd0;
	font-size: 12px;
}

.hb-lang-btn .fa-caret-down {
	color: #9aabbd;
	font-size: 10px;
}

.hb-lang-menu {
	display: none;
	position: absolute;
	right: 0;
	top: calc(100% + 11px);
	z-index: 1003;
	min-width: 132px;
	padding: 5px;
	background: #fff;
	border: 1px solid #e4e9ee;
	border-radius: 10px;
	box-shadow: 0 12px 32px rgba(31, 74, 111, 0.14);
}

.hb-lang-menu.open {
	display: block;
}

.hb-lang-menu a {
	display: block;
	padding: 8px 12px;
	border-radius: 7px;
	color: #34495e;
	font-size: 13px;
	text-decoration: none;
	white-space: nowrap;
}

.hb-lang-menu a:hover {
	background: #f2f7fb;
	color: #2b83bd;
}

.hb-lang-menu a.cur {
	background: #f2f7fb;
	color: #2b83bd;
	font-weight: 700;
}

.header-user {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	flex-shrink: 0;
}

/* 登录态身份块：头像 + **两行**（名字黑、GC 小灰）—— 用户 2026-10-04 定的版式。
   单行「晚上好~ 名字(990001)」又宽又挤（昵称不可控，长了会把导航往左顶）；
   两行后宽度收窄 ~40px，登录态也能给导航让出余量。 */
.hb-hello {
	display: flex;
	align-items: center;
	gap: 6px;
	max-width: 200px;
}

/* 顶栏小头像：账户页选过头像才显示（inc/header.php 输出；图走服务端软渲 char_head.php） */
.hb-avatar {
	width: 22px;
	height: 22px;
	border-radius: 50%;
	object-fit: cover;
	flex: none;
	border: 1px solid rgba(90, 167, 216, 0.45);
}

/* 名字 / GC 两行：各自一行 + 溢出省略号（min-width:0 是让 flex 子项真能收窄） */
.hb-id {
	display: block;
	min-width: 0;
	line-height: 1.25;
}

.hb-name,
.hb-gc {
	display: block;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.hb-name {
	font-size: 13px;
	font-weight: 700;
	color: #1c2b3e;
}

.hb-gc {
	font-size: 11px;
	font-weight: 500;
	color: #8896a4;
	letter-spacing: .02em;
}

/* 问候语（"早上好~"）：登录时显示在**站标右侧**（2026-10-04 用户要求从名字那边挪走）。
   —— 手机端不显示（标题行只有 logo+汉堡）；桌面端才占位（左侧本来就有大片空白，不挤导航）。 */
.hb-greet-line {
	display: none;
}

@media (min-width: 1200px) {
	.hb-greet-line {
		display: inline-block;
		margin-left: 14px;
		font-size: 13px;
		font-weight: 500;
		color: #7b8894;
		white-space: nowrap;
	}
}

/* 英文档 1200-1279 放不下：英文导航宽，站标到导航之间只剩 ~87px，问候语会把导航顶出去 */
@media (min-width: 1200px) and (max-width: 1279.98px) {
	html[lang="en"] .hb-greet-line {
		display: none;
	}
}

.hb-login {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
}

/* 输入胶囊（label 包住 input，点图标也能聚焦）—— 与内容页 pg-input 同款 */
.hb-field {
	display: flex;
	align-items: center;
	gap: 7px;
	height: 32px;
	padding: 0 11px;
	border-radius: 8px;
	background: #fff;
	border: 1px solid #dbe3ec;
	transition: border-color .15s ease, box-shadow .15s ease;
	cursor: text;
}

.hb-field:hover {
	border-color: #c3d3e2;
}

.hb-field:focus-within {
	border-color: #5aa7d8;
	box-shadow: 0 0 0 3px rgba(90, 167, 216, 0.16);
}

.hb-field i {
	font-size: 12px;
	color: #9aabbd;
}

.hb-field input {
	width: 104px;
	height: 100%;
	padding: 0;
	border: none;
	outline: none;
	background: transparent;
	color: #2c3e50;
	font-size: 13px;
	font-family: inherit;
}

.hb-field input::placeholder {
	color: #a8b6c6;
}

.hb-btn {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 32px;
	padding: 0 15px;
	border-radius: 8px;
	border: 1px solid #dbe3ec;
	background: #fff;
	color: #44586d;
	font-size: 13px;
	font-family: inherit;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.hb-btn:hover {
	background: #f6f9fc;
	border-color: #c3d3e2;
	color: #2b83bd;
}

.hb-btn-primary {
	background: #2b83bd;
	border-color: #2b83bd;
	color: #fff;
}

.hb-btn-primary:hover {
	background: #3596d4;
	border-color: #3596d4;
	color: #fff;
}

/* 下拉面板：与 pg_common.css 同一套视觉语言
   （白面板 / 12px 圆角 / 边框 #e4e9ee / 软阴影 / 主色 #2f6fa8） */
.dropdown {
	position: relative;
	display: inline-block;
}

.dropdown-content {
	display: none;
	position: absolute;
	background-color: #fff;
	min-width: 168px;
	z-index: 999;
	padding: 6px;
	border: 1px solid #e4e9ee;
	border-radius: 12px;
	box-shadow: 0 12px 32px rgba(31, 74, 111, 0.14);
}

.dropdown:hover .dropdown-content,
.dropdown.open .dropdown-content {
	display: block;
}

.dropdown-content li {
	margin: 0;
	padding: 0;
	list-style: none;
	cursor: pointer;
	color: #34495e;
	font-size: 13.5px;
}

/* 点击区扩到整行：padding 挪到 a 上，点 li 空白处也能跳转 */
.dropdown-content li a {
	display: block;
	padding: 9px 12px;
	border-radius: 8px;
	color: #34495e;
	transition: background-color 0.14s ease, color 0.14s ease;
}

.dropdown-content li:hover {
	background-color: transparent;
}

.dropdown-content li:hover a {
	background-color: #f0f4f8;
	color: #2f6fa8;
}

/* ===== 导航栏：浅色卡片风 =====
   与 pg_common.css 同一套视觉语言：
   白底 + 底部细线 + 软阴影；条目悬停/展开 = 淡蓝底 + 底部指示条。
   主色 #2f6fa8 · 正文 #34495e · 次要 #7b8894 · 边框 #e4e9ee */
.navbar-sticky {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: #fff;
	border-bottom: 1px solid #e9edf2;
	box-shadow: 0 2px 12px rgba(31, 74, 111, 0.06);
}

/* 移动端菜单的遮罩元素（inc/header.php 输出，main.js 在菜单展开时给 body 挂 .nav-open）。
   默认不显示 —— 它必须是全局规则：只在 ≤1199 里藏，桌面端它就成 body 的一个真实子元素了
   （首页 body 是一屏弹性容器，多一个子项就动版）。 */
.nav-scrim {
	display: none;
}

.navbar-flex .container {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.navbar-flex .navbar-default {
	width: 100%;
	display: flex;
	align-items: stretch;
	justify-content: space-between;
	min-height: 64px;
	border: none;
	background: transparent;
	margin-bottom: 0;
}

/* ★ Bootstrap 3 给 .navbar / .navbar-header 挂了 clearfix 伪元素（display:table）。
   这两层现在都是 flex 容器，伪元素会变成两个「真实 flex 子项」——
   .navbar-default 又是 space-between，折叠态（≤1199，菜单 display:none）
   只剩 .navbar-header 一个可见子项，于是 logo+汉堡被两个 0 宽伪元素挤到正中间，
   右侧留一大片空白（1199 宽实测 logo 右边界 690 → 空白 509px；平板/手机上
   「导航条空白」就是它）。做 flex 的容器一律先把 clearfix 伪元素关掉。 */
.navbar-flex .navbar-default::before,
.navbar-flex .navbar-default::after,
.navbar-flex .navbar-header::before,
.navbar-flex .navbar-header::after {
	display: none;
}

.navbar-flex .navbar-header {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.navbar-brand {
	display: flex;
	align-items: center;
	padding: 0;
	height: auto;
}

.navbar-brand img {
	width: auto;
	height: 46px;
	max-height: 46px;
}

.navbar-flex .navbar-collapse {
	flex-grow: 1;
	padding: 0;
}

/* 桌面端：**三段式** —— 站标最左 | 导航真正居中 | 站点信息·登录·语言 靠最右
   （2026-10-04 用户定的版式："logo 放最左边、登录放最右边、多语言最靠右、导航放中间"）
   做法：.navbar-default 变 grid「1fr auto 1fr」，.navbar-collapse 用 display:contents 把
   nav 与 .head-side 提上来当第 2/3 个栅格项 —— 两侧 1fr 等宽 ⇒ 导航落在**整条栏的正中**，
   不再是"贴着右侧信息块"的右对齐（那个版式下导航一超宽就往左顶压站标）。
   ★ display:contents 必须带 !important：bootstrap 3 在 ≥768 写了
     .navbar-collapse.collapse{display:block!important}（这条媒体查询只在 ≥1200 生效，手机端不受影响）。 */
@media (min-width: 1200px) {
	.navbar-flex .navbar-default {
		display: grid;
		grid-template-columns: 1fr auto 1fr;
		align-items: stretch;
	}

	.navbar-flex .navbar-collapse {
		display: contents !important;
	}

	/* ★ 同理：bootstrap 给 .navbar-collapse 也挂了 clearfix 伪元素（display:table）。
	   折叠容器变成 display:contents 后，这两个伪元素会升级成**第 4、第 5 个栅格项**，
	   把 nav / .head-side 挤到第二行（实测栅格模板列变成 681px 0px 681px、行变成 46px 32px）。
	   做栅格/flex 的容器一律先关掉 clearfix 伪元素 —— 与上面 .navbar-default 那条同一个道理。 */
	.navbar-flex .navbar-collapse::before,
	.navbar-flex .navbar-collapse::after {
		display: none;
	}

	/* 显式指定三列，不依赖自动排版（防将来 DOM 里再插东西又跑位） */
	.navbar-flex .navbar-header {
		grid-column: 1;
	}

	.navbar-flex .navbar-collapse > nav {
		grid-column: 2;
		display: flex;
		align-items: stretch;
		justify-content: center;
	}

	/* 站点信息 + 登录 + 语言 靠最右，与菜单之间留一道竖线 */
	.head-side {
		grid-column: 3;
		justify-self: end;
		margin-left: 13px;
		padding-left: 13px;
		border-left: 1px solid #e9edf2;
	}

	/* 点「登录」弹出的表单浮在整条栏下方 */
	.hb-login-panel {
		position: absolute;
		right: 0;
		top: calc(100% + 9px);
		z-index: 1002;
		padding: 12px;
		background: #fff;
		border: 1px solid #e4e9ee;
		border-radius: 12px;
		box-shadow: 0 12px 32px rgba(31, 74, 111, 0.14);
	}

	.hb-login {
		flex-direction: column;
		align-items: stretch;
		gap: 8px;
		width: 216px;
	}

	.hb-field input {
		width: 100%;
	}
}

/* 登录面板：默认收起，点按钮才展开 */
.hb-login-panel {
	display: none;
}

.hb-login-panel.open {
	display: block;
}

.navbar-flex .navbar-nav {
	display: flex;
	align-items: stretch;
	gap: 2px;
	margin: 0;
	float: none;
}

.navbar-flex .navbar-nav > li {
	position: relative;
	display: flex;
}

.navbar-flex .navbar-nav > li {
	/* 单条顶栏里空间紧，条目不许被压扁（压了就换行，两个字变两行） */
	flex-shrink: 0;
}

.navbar-flex .navbar-nav > li > a {
	position: relative;
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0 12px;
	height: auto;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: none;
	white-space: nowrap;
	color: #34495e;
	overflow: visible;
	transition: color .15s ease, background-color .15s ease;
}

.navbar-flex .navbar-nav > li > a span {
	white-space: nowrap;
}

/* 留言板 GM 红点：登录的 GM 有未看动态时，根级「留言板」标题旁的数字徽标。
   见 inc/navbar.php 的 $navBoardDot / inc/message_board_lib.php::mb_gm_unseen_count。 */
.navbar-flex .navbar-nav > li > a .nav-board-dot {
	display: inline-block;
	min-width: 17px;
	height: 17px;
	line-height: 17px;
	margin-left: 5px;
	padding: 0 5px;
	border-radius: 9px;
	background: #e74c3c;
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0;
	text-align: center;
	vertical-align: 4px;
	box-shadow: 0 0 0 2px rgba(255, 255, 255, .85), 0 1px 4px rgba(231, 76, 60, .55);
}

/* 悬停 / 展开：淡蓝底 + 底部指示条 */
.navbar-flex .navbar-nav > li > a::after {
	content: "";
	position: absolute;
	left: 12px;
	right: 12px;
	bottom: 0;
	height: 3px;
	border-radius: 3px 3px 0 0;
	background: #2f6fa8;
	transform: scaleX(0);
	transition: transform .18s ease;
}

.navbar-flex .navbar-nav > li:hover > a,
.navbar-flex .navbar-nav > li.open > a,
.navbar-flex .navbar-nav > li.active > a {
	background-color: #f4f8fc;
	color: #2f6fa8;
}

.navbar-flex .navbar-nav > li:hover > a::after,
.navbar-flex .navbar-nav > li.open > a::after,
.navbar-flex .navbar-nav > li.active > a::after {
	transform: scaleX(1);
}

.navbar-flex .navbar-nav > li > a .caret {
	border-top-color: currentColor;
	border-top-width: 4px;
	transition: transform .18s ease;
}

.navbar-flex .navbar-nav > li.open > a .caret {
	transform: rotate(180deg);
}

/* 条目与面板之间留了 8px 空隙，鼠标划过时不能掉出 hover —— 用一块透明区补上 */
.navbar-flex .navbar-nav > li.dropdown::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	height: 10px;
}

/* 关掉老式 cl-effect-5「文字飞入」动画（改底色 + 指示条），桌面移动端都关 */
.navbar-flex .cl-effect-5 a {
	overflow: visible;
}

.navbar-flex .cl-effect-5 a span[data-hover] {
	display: inline-block;
	height: auto;
	line-height: 1.35;
	vertical-align: baseline;
}

.navbar-flex .cl-effect-5 a span::before {
	display: none;
}

.navbar-flex .cl-effect-5 a:hover span,
.navbar-flex .cl-effect-5 a:focus span,
.navbar-flex .cl-effect-5 a:active span {
	transform: none;
	-webkit-transform: none;
	-moz-transform: none;
}

/* 下拉挂在导航底边下方 8px 处 */
.navbar-flex .dropdown-content {
	position: absolute;
	left: 0;
	top: calc(100% + 8px);
	min-width: 176px;
	z-index: 1001;
}

/* ===== 「功能」大菜单：分组标签 + 多列 =====
   长列表横着铺开（列变多而不是行变多），矮屏也能一屏看全；
   万一还超出，面板自身限高滚动，不会跑到屏幕外点不到。
   移动端另有一套（单列 + 分组标签），见 max-width:767px 段落。 */
@media (min-width: 1200px) {

	/* 其余下拉的短屏保护：超出视口高度就在面板内部滚动 */
	.navbar-flex .dropdown-content {
		max-height: calc(100vh - 180px);
		overflow-x: hidden;
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.navbar-flex .dropdown-content.dropdown-mega {
		display: none;
		position: absolute;
		/* ★ 居中挂在「功能」项下方, 不再右对齐: 面板现在 5 列 ~810px 宽,
		   右对齐会让左边缘跑出屏幕 (2026-10-01 加「自助服务」列时实测 x=-80)。 */
		left: 50%;
		right: auto;
		transform: translateX(-50%);
		top: calc(100% + 8px);
		min-width: 0;
		max-width: calc(100vw - 32px);
		max-height: calc(100vh - 180px);
		overflow-x: hidden;
		overflow-y: auto;
		overscroll-behavior: contain;
		padding: 12px 8px 14px;
	}

	.navbar-flex .dropdown:hover .dropdown-content.dropdown-mega,
	.navbar-flex .dropdown.open .dropdown-content.dropdown-mega {
		/* 默认 stretch：各列等高，列间分隔线齐平 */
		display: flex;
	}

	.navbar-flex .dropdown-mega .mega-col {
		min-width: 158px;
		padding: 0 10px;
	}

	.navbar-flex .dropdown-mega .mega-col + .mega-col {
		border-left: 1px solid #eef2f6;
	}

	.navbar-flex .dropdown-mega .mega-group + .mega-group {
		margin-top: 10px;
		padding-top: 10px;
		border-top: 1px solid #f0f4f8;
	}

	/* 分组标签：沿用 pg-card-title 的样式（小号灰字 + 左侧蓝色竖条） */
	.navbar-flex .dropdown-mega .mega-label {
		position: relative;
		display: flex;
		align-items: center;
		padding: 6px 10px 8px 12px;
		font-size: 12px;
		font-weight: 700;
		line-height: 1;
		letter-spacing: .16em;
		color: #7b8894;
		white-space: nowrap;
	}

	.navbar-flex .dropdown-mega .mega-label::before {
		content: "";
		position: absolute;
		left: 0;
		top: 7px;
		width: 3px;
		height: 12px;
		border-radius: 2px;
		background: #2f6fa8;
	}

	.navbar-flex .dropdown-mega .mega-list {
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.navbar-flex .dropdown-mega .mega-list li {
		margin: 0;
		padding: 0;
		list-style: none;
		cursor: pointer;
	}

	.navbar-flex .dropdown-mega .mega-list li a {
		display: block;
		padding: 7px 10px;
		border-radius: 8px;
		font-size: 13.5px;
		line-height: 1.35;
		color: #34495e;
		white-space: nowrap;
		transition: background-color 0.16s ease, color 0.16s ease;
	}

	.navbar-flex .dropdown-mega .mega-list li a:hover {
		background-color: #f0f4f8;
		color: #2f6fa8;
	}
}
/* ===== /「功能」大菜单 ===== */
/* ===== /导航栏重构 ===== */

.grid-container {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	/* 列数为3 */
	grid-gap: 2px;
	/* 格子之间的间隔 */
}

.grid-item {
	background-color: #ccc;
	padding: 10px;
	text-align: center;
}

.grid-item h2 {
	margin-top: 0;
}

input[type="submit"],
input[type="reset"],
input[type="register"],
.w3ls_footer_grid_leftl,
.w3ls_footer_grid_leftr h4,
.w3l_footer_pos p a,
.w3ls_footer_grid_leftr a,
.w3layouts_header_right ul li a,
.w3ls_social li a,
.w3_team_grid1_pos,
.w3_team_grid1_pos img {
	transition: .5s ease-in;
	-webkit-transition: .5s ease-in;
	-moz-transition: .5s ease-in;
	-o-transition: .5s ease-in;
	-ms-transition: .5s ease-in;
}

/*-- header --*/
/* 旧 .w3layouts_header_* / input[type=submit] 版式已废弃，
   新的信息条与登录框见文件开头的 .header / .hb-* 段落 */

/*-- nav --*/
/* 基础 navbar 样式保留，布局由 .navbar-flex 接管 */
.navbar-default {
	border: none;
}

.navbar {
	margin-bottom: 0;
}

.w3_navigation {
	border-top: none;
}

.navbar-default .navbar-nav>.active>a,
.navbar-default .navbar-nav>.active>a:hover,
.navbar-default .navbar-nav>.active>a:focus {
	color: #2f6fa8;
	background: none;
}

.navbar-default .navbar-nav>li>a {
	color: #34495e;
}

.w3_navigation_pos {
	position: absolute;
	top: 0%;
	left: 35%;
	z-index: 999;
}

.w3_navigation_pos h1 a {
	font-size: 1em;
	color: #212121;
	text-decoration: none;
	border: 3px solid #ff5000;
	padding: 0.1em .4em;
	font-weight: 700;
	text-transform: uppercase;
	font-family: 'Jura', sans-serif;
}

.navbar-default .navbar-nav>li>a:hover {
	color: #2f6fa8;
}

/* Effect 5: same word slide in */
.cl-effect-5 a {
	overflow: hidden;
	padding: 0 4px;
}

.cl-effect-5 a span {
	position: relative;
	display: inline-block;
	-webkit-transition: -webkit-transform 0.3s;
	-moz-transition: -moz-transform 0.3s;
	transition: transform 0.3s;
}

.cl-effect-5 a span::before {
	position: absolute;
	top: 100%;
	content: attr(data-hover);
	-webkit-transform: translate3d(0, 0, 0);
	-moz-transform: translate3d(0, 0, 0);
	transform: translate3d(0, 0, 0);
}

.cl-effect-5 a:hover span,
.cl-effect-5 a:focus span {
	-webkit-transform: translateY(-100%);
	-moz-transform: translateY(-100%);
	transform: translateY(-100%);
}

/* Effect 5: same word slide in and border bottom */
/*-- //nav --*/
.fa-cog {
	-webkit-animation: fa-spin 3s infinite linear;
	animation: fa-spin 3s infinite linear;
}

/*-- //header --*/
/*-- banner --*/
.w3_navigation_pos h1 a i {
	font-size: .6em;
	color: #f83e03;
}

.slider-info {
	position: absolute;
	top: 40%;
	z-index: 999;
	left: 0px;
	width: 100%;
	height: 100%;
	text-align: center;
}

.slider-info h4 {
	font-size: 3em;
	color: #fff;
	letter-spacing: 5px;
	text-transform: uppercase;
	font-weight: 200;
}

.slider-info a {
	font-size: 1em;
	padding: 0.6em 2em;
	color: #fff;
}

/* Shutter In Horizontal */
.hvr-shutter-in-horizontal {
	display: inline-block;
	vertical-align: middle;
	-webkit-transform: translateZ(0);
	transform: translateZ(0);
	box-shadow: 0 0 1px rgba(0, 0, 0, 0);
	-webkit-backface-visibility: hidden;
	backface-visibility: hidden;
	-moz-osx-font-smoothing: grayscale;
	position: relative;
	background: #2098d1;
	-webkit-transition-property: color;
	transition-property: color;
	-webkit-transition-duration: 0.3s;
	transition-duration: 0.3s;
}

.hvr-shutter-in-horizontal:before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	background: #ff5000;
	-webkit-transform: scaleX(1);
	transform: scaleX(1);
	-webkit-transform-origin: 50%;
	transform-origin: 50%;
	-webkit-transition-property: transform;
	transition-property: transform;
	-webkit-transition-duration: 0.3s;
	transition-duration: 0.3s;
	-webkit-transition-timing-function: ease-out;
	transition-timing-function: ease-out;
}

.hvr-shutter-in-horizontal:hover,
.hvr-shutter-in-horizontal:focus,
.hvr-shutter-in-horizontal:active {
	color: white;
}

.hvr-shutter-in-horizontal:hover:before,
.hvr-shutter-in-horizontal:focus:before,
.hvr-shutter-in-horizontal:active:before {
	-webkit-transform: scaleX(0);
	transform: scaleX(0);
}

.slider-info p {
	font-size: 1em;
	text-transform: uppercase;
	color: #fff;
	letter-spacing: 7px;
	margin: 2em 0;
}

/*--slider--*/
#slider2,
#slider3 {
	box-shadow: none;
	-moz-box-shadow: none;
	-webkit-box-shadow: none;
	margin: 0 auto;
}

.rslides_tabs li:first-child {
	margin-left: 0;
}

.rslides_tabs .rslides_here a {
	background: rgba(255, 255, 255, .1);
	color: #fff;
	font-weight: bold;
}

.events {
	list-style: none;
}

.callbacks_container {
	position: relative;
	float: left;
	width: 100%;
}

.callbacks {
	position: relative;
	list-style: none;
	overflow: hidden;
	width: 100%;
	padding: 0;
	margin: 0;
}

.callbacks li {
	position: absolute;
	width: 100%;
}

.callbacks img {
	position: relative;
	z-index: 1;
	height: auto;
	border: 0;
}

.callbacks .caption {
	display: block;
	position: absolute;
	z-index: 2;
	font-size: 20px;
	text-shadow: none;
	color: #fff;
	left: 0;
	right: 0;
	padding: 10px 20px;
	margin: 0;
	max-width: none;
	top: 10%;
	text-align: center;
}

.callbacks_nav {
	position: absolute;
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
	bottom: 24%;
	left: 0;
	z-index: 3;
	text-indent: -9999px;
	overflow: hidden;
	text-decoration: none;
	width: 32px;
	height: 32px;
	background: transparent url("../images/left.png") no-repeat left top;
}

.callbacks_nav:hover {
	opacity: 0.5;
}

.callbacks_nav.next {
	left: auto;
	background: transparent url("../images/right.png") no-repeat right top;
	left: 51%;
}

.callbacks_nav.prev {
	right: auto;
	background-position: left top;
	left: 47%;
}

#slider3-pager a {
	display: inline-block;
}

#slider3-pager span {
	float: left;
}

#slider3-pager span {
	width: 100px;
	height: 15px;
	background: #fff;
	display: inline-block;
	border-radius: 30em;
	opacity: 0.6;
}

#slider3-pager .rslides_here a {
	background: #FFF;
	border-radius: 30em;
	opacity: 1;
}

#slider3-pager a {
	padding: 0;
}

#slider3-pager li {
	display: inline-block;
}

.rslides {
	position: relative;
	list-style: none;
	overflow: hidden;
	width: 100%;
	padding: 0;
}

.rslides li {
	-webkit-backface-visibility: hidden;
	position: absolute;
	display: none;
	width: 100%;
	left: 0;
	top: 0;
}

.rslides li {
	position: relative;
	display: block;
	float: left;
}

.rslides img {
	height: auto;
	border: 0;
	width: 100%;
}

.callbacks_tabs {
	list-style: none;
	position: absolute;
	bottom: -39%;
	left: 42%;
	padding: 0;
	margin: 0;
	z-index: 990;
	display: block;
	text-align: center;
}

.slider-top span {
	font-weight: 600;
}

.callbacks_tabs li {
	display: inline-block;
	margin: 0 7px;
}

/*----*/
.callbacks_tabs a {
	visibility: hidden;
}

.callbacks_tabs a:after {
	content: "\f111";
	font-size: 0;
	font-family: FontAwesome;
	visibility: visible;
	display: block;
	height: 12px;
	width: 12px;
	display: inline-block;
	background: #fff;
	border-radius: 50%;
	-webkit-border-radius: 50%;
	-o-border-radius: 50%;
	-moz-border-radius: 50%;
	-ms-border-radius: 50%;
}

.callbacks_here a:after {
	background: #f53753;
	border: 1px solid #f53753;
	height: 1px;
	width: 40px;
	border-radius: 0;
}

/*-- //banner --*/
/*-- about --*/
.about,
.services,
.team-bottom,
.mail {
	padding: 5em 0;
}

.w3l_head {
	font-size: 2.5em;
	font-weight: bold;
	color: #212121;
	letter-spacing: 3px;
	text-align: center;
}

.w3ls_head_para {
	color: #ff5000;
	text-transform: uppercase;
	letter-spacing: 8px;
	text-align: center;
}

.agileits_about_right p {
	color: #999;
	line-height: 2em;
	margin-bottom: 3em;
}

.agileits_about_right p i {
	display: block;
	margin: 2em 0 0;
}

.agileits_about_right {
	padding-left: 7em;
}

.agileits_about_right ul li {
	display: block;
	margin-bottom: 1em;
	color: #212121;
	line-height: 1.5em;
	text-transform: capitalize;
	font-family: 'Questrial', sans-serif;
	font-size: 1em;
	font-weight: 600;
	letter-spacing: 2px;
}

.agileits_about_right ul li i {
	color: #fa3d43;
	padding-right: 1em;
}

.agileits_about_right ul li:last-child,
.agileinfo_about_bottom_right_wthree ul li:last-child {
	margin-bottom: 0;
}

/*-- //about --*/
/*-- about-bottom --*/
.agileits_banner_bottom_grid_l h4 {
	text-transform: capitalize;
	font-size: 1.8em;
	color: #212121;
	line-height: 1.5em;
}

.agileits_banner_bottom_grid_l p {
	margin: 1em 0 0;
	line-height: 2em;
	color: #999;
}

.agileits_banner_bottom_grid_l p i {
	display: block;
	margin-bottom: 1em;
	color: #ff5000;
	letter-spacing: 4px;
	font-weight: 400;
}

.agileits_banner_bottom_grids {
	margin: 6em 0 0;
}

.agileits_banner_btm_grid_r {
	position: relative;
}

.agileits_banner_btm_grid_r_pos {
	position: absolute;
	top: -23%;
	right: -15%;
}

/*-- //about-bottom --*/
/*-- services --*/
/*-- services --*/
.services {
	background: url(../images/service.jpg) no-repeat center;
	background-size: cover;
	-webkit-background-size: cover;
	-o-background-size: cover;
	-ms-background-size: cover;
	-moz-background-size: cover;
}

#services h3 {
	text-align: center;
	color: #fff;

}

.services-agile-w3l,
.services-gd {
	margin: 0 auto;
	text-align: center;
}

.services-agile-w3l {
	margin-top: 2em;
}

.hi-icon,
.hi-icon:after {
	border-radius: 0px;
}

.hi-icon:before {
	font-family: inherit;
}

a.hi-icon img {
	margin: 17px 0 0;
}

.hi-icon-wrap {
	padding: 0;
}

.services-gd h4 {
	color: #2098d1;
	margin-top: 20px;
	font-size: 1.5em;
	letter-spacing: 2px;
	margin-bottom: 8px;
}

.services-gd p {
	color: #fff;
}

.hi-icon-wrap {
	text-align: center;
	margin: 0 auto;
	padding: 2em 0 1em;
}

.hi-icon {
	display: inline-block;
	font-size: 0px;
	cursor: pointer;
	margin: 0 auto;
	width: 102px;
	height: 102px;
	text-align: center;
	position: relative;
	z-index: 1;
	color: #fff;
	border-radius: 50%;
}

.hi-icon:after {
	pointer-events: none;
	position: absolute;
	width: 100%;
	height: 100%;
	content: '';
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
}

.hi-icon:before {
	font-family: 'ecoicon';
	speak: none;
	font-size: 48px;
	line-height: 90px;
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	display: block;
	-webkit-font-smoothing: antialiased;
}

/* Effect 9 */
.hi-icon-effect-9 .hi-icon {
	-webkit-transition: box-shadow 0.2s;
	-moz-transition: box-shadow 0.2s;
	transition: box-shadow 0.2s;
}

.hi-icon-effect-9 .hi-icon:after {
	top: 0;
	left: 0;
	padding: 0;
	box-shadow: 0 0 0 3px #fff;
	-webkit-transition: -webkit-transform 0.2s, opacity 0.2s;
	-moz-transition: -moz-transform 0.2s, opacity 0.2s;
	transition: transform 0.2s, opacity 0.2s;
	border-radius: 50%;
}

/* Effect 9a */
.hi-icon-effect-9a .hi-icon:hover:after {
	-webkit-transform: scale(0.85);
	-moz-transform: scale(0.85);
	-ms-transform: scale(0.85);
	transform: scale(0.85);
	opacity: 0.5;
}

.hi-icon-effect-9a .hi-icon:hover {
	box-shadow: 0 0 0 6px #fff;
	color: #fff;
}

/*-- //services --*/
/*-- //services-bottom --*/
/*-- /news --*/
.projects {
	padding: 5em 0 0 0;
}

.projects-info {
	text-align: center;
}

.projects-info p {
	color: #999999;
	font-size: .9em;
	margin: 1em auto 0;
	width: 40%;
}

.projects-grids {
	margin: 3em 0 0 0;
}

#owl-demo .item {
	text-align: center;
}

.projects-agile-grid-info {
	position: relative;
	overflow: hidden;
}

.projects-agile-grid-info img {
	width: 100%;
}

i.fa.fa-cutlery {
	color: #FFFFFF;
	font-size: 2em;
}

.projects-grid-caption h4 {
	color: #fff;
	font-size: 1.7em;
	font-weight: 100%;
	margin: 7.2em 0 0.5em 0;
	text-transform: uppercase;
	background: hsla(192, 18%, 92%, 0.31);
	padding: 10px;
	letter-spacing: 6px;
}

.projects-grid-caption p {
	color: #fff;
	font-size: 0.95em;
	margin: 0;
	letter-spacing: 12px;
}

.projects-grid-caption {
	background: rgba(0, 0, 0, 0.61);
	padding: 8em 1em 1em 1em;
	position: absolute;
	left: 0;
	bottom: -135%;
	text-align: center;
	width: 100%;
	height: 100%px;
	-webkit-transition: .5s all;
	transition: .5s all;
	-moz-transition: .5s all;
	border: 1px solid #999;
}

.projects-agile-grid-info:hover .projects-grid-caption {
	bottom: 0%;
}

/*-- //news --*/
/*-- gallery --*/
.w3l_gallery_grid li {
	display: inline-block;
	float: left;
	width: 32.33%;
	padding: 1%;
}

.box {
	position: relative;
	overflow: hidden;
}

.box img {
	position: absolute;
	left: 0;
	-webkit-transition: all 300ms ease-out;
	-moz-transition: all 300ms ease-out;
	-o-transition: all 300ms ease-out;
	-ms-transition: all 300ms ease-out;
	transition: all 300ms ease-out;
}

.box .overbox {
	background-color: hsla(0, 0%, 11%, 0.6);
	position: absolute;
	top: 0;
	left: 0;
	color: #fff;
	z-index: 100;
	-webkit-transition: all 300ms ease-out;
	-moz-transition: all 300ms ease-out;
	-o-transition: all 300ms ease-out;
	-ms-transition: all 300ms ease-out;
	transition: all 300ms ease-out;
	opacity: 0;
	width: 100%;
	padding: 7em 2em 2em;
}

.box,
.box .overbox {
	height: 230px;
}

.box:hover .overbox {
	opacity: 1;
}

.box .overtext {
	-webkit-transition: all 300ms ease-out;
	-moz-transition: all 300ms ease-out;
	-o-transition: all 300ms ease-out;
	-ms-transition: all 300ms ease-out;
	transition: all 300ms ease-out;
	transform: translateY(40px);
	-webkit-transform: translateY(40px);
}

.box .title {
	font-size: 1.6em;
	text-transform: uppercase;
	opacity: 0;
	transition-delay: 0.1s;
	transition-duration: 0.2s;
	background: rgba(236, 81, 9, 0.72);
	text-align: center;
	padding: 10px;
}

.box:hover .title,
.box:focus .title {
	opacity: 1;
	transform: translateY(0px);
	-webkit-transform: translateY(0px);
}

.box .tagline {
	font-size: 13px;
	line-height: 1.8em;
	opacity: 0;
	transition-delay: 0.2s;
	transition-duration: 0.2s;
}

.box:hover .tagline,
.box:focus .tagline {
	opacity: 1;
	transform: translateX(0px);
	-webkit-transform: translateX(0px);
}

ul#lightGallery {
	margin-top: 2em;
}

.modal {
	display: none;
	/* 默认隐藏 */
	position: fixed;
	z-index: 1000;
	/* 在最上层 */
	left: 0;
	top: 0;
	width: 100%;
	/* 全屏宽 */
	height: 100%;
	/* 全屏高 */
	overflow: auto;
	/* 允许滚动 */
	background-color: rgba(0, 0, 0, 0.8);
	/* 半透明背景 */
	justify-content: center;
	/* 横向居中 */
	align-items: center;
	/* 纵向居中 */
}

.modal img {
	height: auto;
	/* 自动高度以保持比例 */
	width: 100%;
	/* 全宽 */
	max-height: 100%;
	/* 最大高度为100%，防止溢出 */
	object-fit: contain;
	/* 保持比例并完整显示 */
	overflow: hidden;
	/* 隐藏多余的部分 */
}

.modal-content img {
	height: auto;
	/* 自动高度以保持比例 */
	width: 100%;
	/* 全宽 */
	max-height: 100%;
	/* 最大高度为100%，防止溢出 */
	object-fit: contain;
	/* 保持比例并完整显示 */
	overflow: hidden;
	/* 隐藏多余的部分 */
}

.modal-content h4 {
	color: #0099e5;
	text-align: center;
	font-size: 35px;
	margin-bottom: 15px;
}

.modal-content h5 {
	color: #000;
	padding: 20px 0 6px;
	font-size: 22px;
	margin-left: 0px;
}

.modal-content p {
	color: #676464;
	font-size: 14px;
	line-height: 28px;
	letter-spacing: 0.2px;
	word-spacing: 1px;
}

.modal-header {
	min-height: 16.42857143px;
	padding: 20px 30px;
}

.modal-dialog {
	width: 600px;
	margin: 109px auto;
}

.agileits_about_left h3 {
	text-align: left;
}

.agileits_about_left p {
	text-align: left;
}

/*-- mail --*/
.w3_mail_grids textarea {
	outline: none;
	padding: 10px;
	color: #212121;
	font-size: 14px;
	border: none;
	border-bottom: 2px solid #f2f2f2;
	background: none;
	width: 97.3%;
	margin: 0 0 3em 1.1em;
	min-height: 150px;
	resize: none;
	font-weight: 600;
}

.w3_mail_grids textarea::-webkit-input-placeholder {
	color: #212121 !important;
}

.w3_mail_grids input[type="submit"] {
	outline: none;
	color: #fff;
	letter-spacing: 5px;
	font-size: 1em;
	border: none;
	text-transform: uppercase;
	width: 100%;
	font-weight: 600;
	background: #2f6fa8;   /* 2026-10-01 登录/注册表单换肤: 黑 #111 → 站点主色 */
	padding: 0.9em;
	margin-top: 2em;
}

.w3_mail_grids input[type="submit"]:hover {
	background: #275c8d;
}

.w3_mail_grids input[type="register"] {
	outline: none;
	color: #fff;
	letter-spacing: 5px;
	font-size: 1em;
	border: none;
	text-transform: uppercase;
	width: 100%;
	font-weight: 600;
	background: #2f6fa8;   /* 同上 */
	padding: 0.9em;
	margin-top: 2em;
}

.w3_mail_grids input[type="register"]:hover {
	background: #275c8d;
}

/*-- mail --*/
.input {
	position: relative;
	z-index: 1;
	display: inline-block;
	margin: 0;
	max-width: 100%;
	width: calc(100% - 0em);
	vertical-align: top;
}

.input__field {
	display: block;
	border-radius: 0;
	outline: none;
	width: 100%;
	background: #f7fafc;   /* 2026-10-01 登录/注册表单换肤 (原 #f5f5f5/#111/#e4e4e4) */
	color: #34495e;
	padding: 18px;
	font-size: 14px;
	border: 1px solid #d8dee5;
	font-weight: 600;
	-webkit-appearance: none;
}

.input__field::placeholder {
	color: #a9b4bf;
	font-weight: normal;
}

.input__field:focus,
.w3_agile_mail_grid textarea:focus {
	outline: none;
	background: #fff;
}

.input__field:focus {
	border-color: #7fb3d5;
	box-shadow: 0 0 0 3px rgba(127,179,213,.18);
}

.input--ichiro {
	margin-top: 2em;
}

.w3_agile_mail_grid textarea {
	outline: none;
	width: 100%;
	background: #f5f5f5;
	color: #111;
	padding: 1em;
	font-size: 14px;
	border: 1px solid #e4e4e4;
	min-height: 239px;
	font-weight: 600;
	margin: 2em 0 0;
}

.w3_agile_mail_grid textarea::-webkit-input-placeholder {
	color: #212121 !important;
}

/*-- //mail --*/
/*-- footer -- 深色卡片区，与顶栏同一族靛蓝（取自站内大图暗部） */
.w3l_footer {
	background: linear-gradient(180deg, #1a2450 0%, #0d1633 100%);
	padding: 40px 0 0;
	color: #9fb3d4;
}

.ft-grids {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}

.ft-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 20px;
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.08);
	transition: background-color .18s ease, border-color .18s ease, transform .18s ease;
}

.ft-card:hover {
	background: rgba(255, 255, 255, 0.07);
	border-color: rgba(90, 167, 216, 0.5);
	transform: translateY(-2px);
}

.ft-icon {
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 13px;
	background: rgba(90, 167, 216, 0.16);
	color: #5aa7d8;
	font-size: 18px;
	transition: background-color .18s ease, color .18s ease;
}

.ft-card:hover .ft-icon {
	background: #2b83bd;
	color: #fff;
}

.ft-body {
	min-width: 0;
}

.ft-body h4 {
	margin: 0 0 5px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .08em;
	color: #e6eef7;
}

.ft-body p,
.ft-body a {
	margin: 0;
	font-size: 13px;
	color: #9fb3d4;
	text-decoration: none;
	word-break: break-all;
}

.ft-body a:hover {
	color: #fff;
}

/* 页脚 QQ 卡里的小字行（官方 QQ 群号；顶栏桌面端不再显示，见 .hb-item-group 那段注释） */
.ft-body .ft-sub {
	margin-top: 3px;
	font-size: 12px;
	opacity: .78;
}

.ft-pos {
	margin-top: 30px;
	padding: 16px 0 20px;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	text-align: center;
}

.ft-pos p {
	margin: 0;
	font-size: 12.5px;
	line-height: 1.9;
	color: #8296bf;
}

.ft-pos p a {
	color: #9fb3d4;
	text-decoration: none;
}

.ft-pos p a:hover {
	color: #fff;
}

.ft-pos img {
	vertical-align: -2px;
	margin-left: 2px;
}

/*-- //footer --*/
.map iframe {
	width: 100%;
	min-height: 350px;
	margin-top: 2em;
	margin-bottom: -6px;
	border: none;
}

/*-- to-top --*/
#toTop {
	display: none;
	text-decoration: none;
	position: fixed;
	bottom: 20px;
	right: 2%;
	overflow: hidden;
	z-index: 999;
	width: 32px;
	height: 32px;
	border: none;
	text-indent: 100%;
	background: url(../images/arrow.png) no-repeat 0px 0px;
}

#toTopHover {
	width: 32px;
	height: 32px;
	display: block;
	overflow: hidden;
	float: right;
	opacity: 0;
	-moz-opacity: 0;
	filter: alpha(opacity=0);
}

/*-- //to-top --*/
/*-- start-responsive-design --*/
@media (max-width:1440px) {
	.slider-info {
		position: absolute;
		top: 35%;
	}
}

@media (max-width:1366px) {
	.slider-info h4 {
		font-size: 2.8em;
	}

	.projects-grid-caption {
		padding: 8em 1em 1em 1em;
		position: absolute;
		left: 0;
		bottom: -146%;
	}

	.projects-grid-caption h4 {
		font-size: 1.4em;
		margin: 7.2em 0 0.5em 0;
	}
}

@media (max-width:1280px) {
	.slider-info h4 {
		font-size: 2.5em;
	}

	.agileits_banner_btm_grid_r_pos {
		position: absolute;
		top: -23%;
		right: -9%;
	}

	.projects-grid-caption {
		padding: 14em 1em 1em 1em;
		position: absolute;
		left: 0;
		bottom: -156%;
	}
}

@media (max-width:1080px) {
	.w3_navigation_pos {
		left: 41%;
	}

	.agileits_about_right {
		padding-left: 4em;
	}

	.w3layouts_header_right {
		float: right;
		position: relative;
		width: 30%;
	}

	.slider-info p {
		font-size: 0.9em;
		letter-spacing: 6px;
		margin: 2em 0;
	}

	.slider-info h4 {
		font-size: 2.3em;
	}

	.slider-info {
		position: absolute;
		top: 28%;
	}

	.callbacks_nav.prev {
		right: auto;
		background-position: left top;
		left: 45%;
	}

	.navbar-nav>li>a {
		margin: 2em 1em;
		font-size: 0.9em;
	}

	.w3_navigation_pos h1 a {
		font-size: 0.9em;
	}



	.w3_navigation_pos {
		left: 35%;
	}

	.agileits_banner_bottom_grid_l h4 {
		font-size: 1.6em;
	}

	.projects-grid-caption h4 {
		font-size: 1em;
		margin: 7.2em 0 0.5em 0;
	}

	.projects-grid-caption {
		padding: 19em 1em 1em 1em;
		position: absolute;
		left: 0;
		bottom: -179%;
	}

	.projects-grid-caption p {
		font-size: 0.85em;
		margin: 0;
		letter-spacing: 10px;
	}

	.w3ls_footer_grid_leftl {
		float: left;
		width: 43px;
		height: 43px;
	}

	.w3ls_footer_grid_leftl i {
		font-size: 1em;
		line-height: 2.7em;
	}

	.w3ls_footer_grid_leftr h4 {
		font-size: 1.1em;
		letter-spacing: 2px;
	}

	.box .overbox {
		padding: 6em 1em 2em;
	}

	.box,
	.box .overbox {
		height: 189px;
	}
}

@media (max-width: 1024px) {
	.w3_navigation_pos {
		left: 41%;
	}

	.agileits_about_right {
		padding-left: 4em;
	}

	.w3layouts_header_right {
		float: right;
		position: relative;
		width: 36%;
	}

	.slider-info p {
		font-size: 0.9em;
		letter-spacing: 6px;
		margin: 2em 0;
	}

	.slider-info h4 {
		font-size: 2.3em;
	}

	.slider-info {
		position: absolute;
		top: 28%;
	}

	.callbacks_nav.prev {
		right: auto;
		background-position: left top;
		left: 45%;
	}

	.navbar-nav>li>a {
		margin: 2em 1em;
		font-size: 0.9em;
	}

	.w3_navigation_pos h1 a {
		font-size: 0.9em;
	}



	.w3_navigation_pos {
		left: 35%;
	}

	.projects-grid-caption {
		padding: 19em 1em 1em 1em;
		position: absolute;
		left: 0;
		bottom: -190%;
	}

	.projects-grid-caption h4 {
		font-size: 0.9em;
		margin: 8.2em 0 0.5em 0;
	}
}

@media (max-width: 991px) {
	.w3_navigation_pos h1 a {
		font-size: 0.7em;
	}


	.navbar-nav>li>a {
		margin: 2em 0.5em;
	}

	.w3_navigation_pos {
		top: 28%;
		left: 38.5%;
	}

	.navbar-nav>li>a {
		padding: 0;
		line-height: 0.8em;
	}

	.w3_navigation_pos {
		top: 28%;
		left: 33.5%;
	}

	.w3layouts_header_right {
		float: right;
		position: relative;
		width: 36%;
	}

	.callbacks_nav.prev {
		right: auto;
		background-position: left top;
		left: 45%;
	}

	.agileits_banner_bottom_grids {
		margin: 1em 0 0;
	}

	.agileits_banner_bottom_grid_r {
		margin-top: 6em;
	}

	.agileits_banner_btm_grid_r_pos {
		position: absolute;
		top: -23%;
		right: 0%;
	}

	.services-gd.text-center {
		float: left;
		width: 25%;
	}

	.w3l_head {
		font-size: 2.3em;
	}

	.box .title {
		font-size: 1.2em;
	}

	.box,
	.box .overbox {
		height: 146px;
	}

	.box .overbox {
		padding: 4em 1em 2em;
	}

	.projects-grid-caption {
		padding: 21em 1em 1em 1em;
		position: absolute;
		left: 0;
		bottom: -248%;
	}

	.projects-grid-caption h4 {
		font-size: 0.9em;
		margin: 9.2em 0 0.5em 0;
	}

	.projects-grid-caption p {
		font-size: 0.8em;
		margin: 0;
		letter-spacing: 7px;
	}

	.w3ls_footer_grid_left {
		float: left;
		width: 100%;
		margin: 0 0px;
		padding: 20px 30px;
		margin-bottom: 10px;
	}

	.w3ls_footer_grid_leftr {
		float: right;
		width: 75%;
		text-align: left;
	}

	.w3l_footer {
		padding: 4em 0 3em 0;
	}

	.about,
	.services,
	.team-bottom,
	.mail {
		padding: 3em 0;
	}

	.w3l_footer_pos {
		margin-top: 2em;
	}

}

@media (max-width: 800px) {
	.w3_navigation_pos {
		left: 38.5%;
	}


	.w3_navigation_pos h1 a {
		font-size: .75em;
	}

	.w3_navigation_pos {
		left: 34%;
	}

	.navbar-nav {
		float: none;
		margin: 0em 0 0em 0;
	}

	.w3_navigation_pos {
		top: 12%;
		left: 33.5%;
	}

	.w3layouts_header_left p {
		float: left;
		margin: 5px 19px 0 0;
		font-size: 13px;
	}

	.header {
		padding: 0.6em 1em;
	}

	.slider-info h4 {
		font-size: 1.8em;
	}

	.slider-info a {
		font-size: 0.9em;
		padding: 0.6em 1.5em;
	}

	.slider-info p {
		font-size: 0.85em;
		letter-spacing: 5px;
		margin: 1em 0 1.5em 0;
	}

	.projects-grid-caption h4 {
		font-size: 0.9em;
		margin: 9.2em 0 0.5em 0;
		padding: 8px;
		letter-spacing: 2px;
	}

	.projects-grid-caption p {
		font-size: 0.8em;
		margin: 0;
		letter-spacing: 3px;
	}

	.services-gd h4 {
		margin-top: 20px;
		font-size: 1.3em;
	}

	.callbacks_nav {
		position: absolute;
		bottom: 21%;
	}

	.w3layouts_header_right {
		float: right;
		position: relative;
		width: 40%;
	}
}

@media (max-width: 768px) {
	.w3_navigation_pos h1 a {
		font-size: .75em;
	}

	.w3_navigation_pos {
		left: 34%;
	}

	.w3l_head {
		font-size: 2em;
	}

	.agileits_about_right {
		padding-left: 3em;
	}

	.agileinfo_about_bottom_right h2 {
		font-size: 1.7em;
	}

	.w3ls_head_para {
		letter-spacing: 5px;
	}

	.projects-grid-caption h4 {
		font-size: 1.1em;
		margin: 1.2em 0 0.5em 0;
		padding: 8px;
		letter-spacing: 2px;
	}

	.w3_agile_mail_grid textarea {
		outline: none;
		min-height: 191px;
		margin: 2em 0 0;
	}

	.map iframe {
		width: 100%;
		min-height: 250px;
		margin-top: 2em;
	}

	.projects {
		padding: 3em 0 0 0;
	}
}

@media (max-width: 1199px) {
	/* 汉堡按钮：去边框，做成浅蓝底圆角方块 */
	.navbar-default .navbar-toggle,
	.navbar-default .navbar-toggle:hover,
	.navbar-default .navbar-toggle:focus {
		margin: 0;
		padding: 10px;
		border: none;
		border-radius: 10px;
		background-color: #f0f4f8;
	}

	.navbar-default .navbar-toggle:active {
		background-color: #e3edf6;
	}

	.navbar-default .navbar-toggle .icon-bar {
		width: 20px;
		height: 2px;
		border-radius: 2px;
		background-color: #2f6fa8;
	}

	.navbar-default .navbar-toggle .icon-bar + .icon-bar {
		margin-top: 4px;
	}

	/* 移动端：.navbar-flex 垂直堆叠 */
	.navbar-flex .container {
		flex-wrap: wrap;
	}

	.navbar-flex .navbar-default {
		flex-wrap: wrap;
	}

	/* 折叠态那一行：logo 靠左（与正文左边缘对齐）、汉堡靠右（右撇子手指最容易够到）。
	   DOM 里汉堡在 logo 前面（bootstrap 3 的写法），用 order 换个位；
	   汉堡做成 44×44 的触控目标（原来 40×34 偏小不好点）。 */
	.navbar-flex .navbar-header {
		justify-content: space-between;
		width: 100%;
		/* 菜单展开时这一行是 flex 里的第一行，wrap 下不会跟着 .navbar-default 的
		   min-height 撑高（实测只剩 46px，logo 顶到屏幕上沿）——自己钉住 64px */
		min-height: 64px;
	}

	.navbar-flex .navbar-header .navbar-toggle {
		order: 2;
		/* 20px 图标 + 12px 左右 = 44 宽；上下 15px 补到 44 高（3 条 2px + 2×4px 间隔） */
		padding: 15px 12px;
	}

	.navbar-flex .navbar-header .navbar-brand {
		order: 1;
	}

	.navbar-flex .navbar-collapse {
		width: 100%;
	}

	/* 菜单展开后整条导航可能比屏幕还高，而它是吸顶的（吸顶元素超出屏幕的部分永远滚不到）。
	   让导航自身成为滚动容器，矮手机上也能翻到最后一条。 */
	.navbar-sticky {
		max-height: 100vh;
		max-height: 100dvh;
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	/* 菜单展开中：导航从屏幕顶端开始铺（main.js 在展开/收起时切这个类）。
	   只靠上面的吸顶 + 限高还不够 —— 吸顶导航的起点在页头下方，
	   它限高到 100dvh 后盒子底部会落到屏幕外，那一段内容怎么滚都看不到。
	   ★ 高度按内容走（min-height:0）：原来强制 min-height:100dvh，
	   6 个一级条目只占 446px，整屏白底下面 400px 全是空的（用户说的"navbar 的空白"）。
	   高的那一头仍有 max-height + overflow-y:auto 兜着，内容照样滚得到。 */
	.navbar-sticky.nav-menu-open {
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		min-height: 0;
		max-height: 100vh;
		max-height: 100dvh;
		overflow-y: auto;
		overscroll-behavior: contain;
		background: #fff;
		box-shadow: 0 12px 40px rgba(0, 0, 0, 0.22);
		border-bottom-left-radius: 14px;
		border-bottom-right-radius: 14px;
		z-index: 1050;
	}

	/* 面板收窄到内容高度后，面板外的部分压一层暗色（点它就关菜单，见 main.js）——
	   没有它的话"菜单开着"看不出来，下面的页面还能点。
	   （.nav-scrim 的隐藏默认值在文件上半部分，是全局规则） */
	body.nav-open .nav-scrim {
		display: block;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		background: rgba(15, 23, 42, 0.42);
		z-index: 1040;
	}

	/* 菜单滚起来以后（「功能」展开 1000+px）顶上的汉堡会滚出屏幕、没法关菜单 ——
	   展开态把 logo+汉堡那一行钉在面板顶部。 */
	.navbar-sticky.nav-menu-open .navbar-header {
		position: sticky;
		top: 0;
		z-index: 2;
		background: #fff;
		border-bottom: 1px solid #eef2f6;
	}

	/* 展开态汉堡变 X（同一下标位置，点一下收起） */
	.navbar-sticky.nav-menu-open .navbar-toggle .icon-bar {
		transition: transform .2s ease, opacity .2s ease;
	}

	.navbar-sticky.nav-menu-open .navbar-toggle .icon-bar:nth-child(2) {
		transform: translateY(6px) rotate(45deg);
	}

	.navbar-sticky.nav-menu-open .navbar-toggle .icon-bar:nth-child(3) {
		opacity: 0;
	}

	.navbar-sticky.nav-menu-open .navbar-toggle .icon-bar:nth-child(4) {
		transform: translateY(-6px) rotate(-45deg);
	}

	.navbar-flex .navbar-nav {
		flex-direction: column;
		gap: 0;
		width: 100%;
		background: #fff;
		align-items: stretch;
	}

	/* 顶层项：整行可点的一行一条，细分隔线，箭头靠右。
	   桌面端给 li/a 设了 flex（为了下拉挂到导航底边），这里必须还原成 block，
	   否则条目被压成内容宽度、整行照样点不到 */
	.navbar-flex .navbar-nav > li {
		display: block;
		width: 100%;
		border-bottom: 1px solid #eef2f6;
	}

	.navbar-flex .navbar-nav > li > a {
		position: relative;
		display: block;
		width: 100%;
		margin: 0;
		padding: 13px 18px;
		line-height: 1.25;
		text-align: center;
		font-size: 15px;
		font-weight: 600;
		letter-spacing: .04em;
		color: #34495e;
	}

	.navbar-flex .navbar-nav > li > a:active,
	.navbar-flex .navbar-nav > li.open > a {
		background-color: #f4f8fc;
		color: #2f6fa8;
	}

	.navbar-flex .navbar-nav > li > a .caret {
		position: absolute;
		right: 18px;
		top: 50%;
		margin-top: -2px;
		border-top-color: currentColor;
	}

	/* 顶层项的文字 span 在桌面端被撑到 2.8em（悬停动画用），移动端要还原，
	   否则每行会被顶得老高 */
	.navbar-flex .cl-effect-5 a span[data-hover] {
		height: auto;
		line-height: 1.25;
		vertical-align: baseline;
	}

	/* 移动端彻底禁用 .cl-effect-5 悬停文字飞入动画 */
	.navbar-flex .cl-effect-5 a span[data-hover]::before {
		display: none;
	}

	.navbar-flex .cl-effect-5 a:hover span,
	.navbar-flex .cl-effect-5 a:focus span,
	.navbar-flex .cl-effect-5 a:active span {
		transform: none;
		-webkit-transform: none;
		-moz-transform: none;
	}

	/* ===== 移动端下拉：整宽白底、一行一条 ===== */
	.navbar-flex .dropdown-content {
		position: static;
		width: 100%;
		margin: 0;
		box-shadow: none;
		border-radius: 0;
		display: none;
		background-color: #fafafa;
		padding: 0;
		overflow: visible;
	}

	.navbar-flex .dropdown.open .dropdown-content {
		display: block;
	}

	.navbar-flex .dropdown-content li {
		padding: 0;
		list-style-type: none;
		cursor: pointer;
		transition: none;
		color: #444;
		font-size: 14px;
		border-bottom: 1px solid #f2f2f2;
		text-align: center;
	}

	.navbar-flex .dropdown-content li:last-child {
		border-bottom: none;
	}

	.navbar-flex .dropdown-content li:hover {
		background-color: transparent;
	}

	.navbar-flex .dropdown-content li a {
		display: block;
		padding: 13px 16px;
		color: #34495e;
	}

	.navbar-flex .dropdown-content li:hover a,
	.navbar-flex .dropdown-content li a:active {
		color: #2f6fa8;
	}

	/* ===== 移动端「功能」大菜单：分组标题 + 两列格子 =====
	   21 条平铺要滚很久；排成两列 + 分组标题，一屏能看大半。
	   不限高 —— 整条导航只有一个滚动容器（见上面的 .navbar-sticky），
	   嵌套滚动条在手机上很难用 */
	.navbar-flex .dropdown-content.dropdown-mega {
		display: none;
		position: static;
		left: auto;
		right: auto;
		width: 100%;
		max-width: none;
		max-height: none;
		overflow: visible;
		margin: 0;
		padding: 2px 0 14px;
		border: none;
		border-radius: 0;
		box-shadow: none;
		background-color: #fff;
	}

	.navbar-flex .dropdown.open .dropdown-content.dropdown-mega {
		display: block;
	}

	/* 桌面端的四列在手机上拍平，各组依次排列 */
	.navbar-flex .dropdown-mega .mega-col {
		display: contents;
	}

	.navbar-flex .dropdown-mega .mega-col + .mega-col {
		border-left: none;
	}

	.navbar-flex .dropdown-mega .mega-group {
		margin: 0 16px;
	}

	.navbar-flex .dropdown-mega .mega-group + .mega-group {
		margin-top: 0;
		padding-top: 0;
		border-top: none;
	}

	/* 分组标题：小号灰字 + 左侧一截蓝色小竖条（同 pg-card-title） */
	.navbar-flex .dropdown-mega .mega-label {
		position: relative;
		padding: 14px 2px 8px 12px;
		text-align: left;
		font-size: 12px;
		font-weight: 700;
		letter-spacing: .16em;
		color: #7b8894;
		background: transparent;
		border-bottom: none;
	}

	.navbar-flex .dropdown-mega .mega-label::before {
		content: "";
		position: absolute;
		left: 0;
		top: 16px;
		width: 3px;
		height: 11px;
		border-radius: 2px;
		background: #2f6fa8;
	}

	.navbar-flex .dropdown-mega .mega-list {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.navbar-flex .dropdown-mega .mega-list li {
		padding: 0;
		list-style: none;
		border-bottom: none;
		text-align: center;
	}

	.navbar-flex .dropdown-mega .mega-list li a {
		display: block;
		/* 13px 上下 + 行高 17.5 ≈ 44px，手机上手指点得中（原来 40px 偏小） */
		padding: 13px 6px;
		border-radius: 8px;
		color: #34495e;
		font-size: 13.5px;
		line-height: 1.3;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.navbar-flex .dropdown-mega .mega-list li a:active {
		background-color: #f0f4f8;
		color: #2f6fa8;
	}

	/* 展开时父菜单项高亮 */
	.navbar-flex .dropdown.open > a {
		background-color: #f4f8fc;
		color: #2f6fa8 !important;
	}

	/* 箭头旋转 */
	.navbar-flex .dropdown > a .caret {
		transition: transform 0.2s ease;
	}

	.navbar-flex .dropdown.open > a .caret {
		transform: rotate(180deg);
	}

	.navbar-nav {
		float: none;
		margin: 0;
		text-align: center;
		background: #dfdfdf;
	}

	.navbar-nav>li>a {
		margin: 2em 0;
	}

	.w3_navigation_pos {
		left: 0;
	}

	.w3_navigation_pos {
		position: inherit;
		float: left;
		margin-top: .9em;
	}
}

@media (max-width: 736px) {
	.header {
		padding: 0.6em 1em;
	}

	.box .overbox {
		padding: 3em 1em 2em;
	}

	.box,
	.box .overbox {
		height: 139px;
	}

	.map iframe {
		min-height: 300px;
	}

	.box .overbox {
		padding: 3em 1em 2em;
	}

	.box,
	.box .overbox {
		height: 139px;
	}

	.w3layouts_header_right {
		float: right;
		position: relative;
		width: 37%;
	}

	.about,
	.services,
	.team-bottom,
	.mail {
		padding: 2em 0;
	}

	.projects {
		padding: 2em 0 0 0;
	}
}

@media (max-width: 667px) {
	.w3layouts_header_right ul li:last-child {
		margin-left: 1em;
	}

	.box,
	.box .overbox {
		height: 125px;
	}

	.box .title {
		font-size: 1em;
	}

	.w3layouts_header_left {
		float: none;
		width: 100%;
		margin: 0 auto;
	}

	.w3layouts_header_left p {
		float: none;
		margin: 0 auto;
		text-align: center;

	}

	.w3layouts_header_right {
		float: none;
		position: relative;
		width: 56%;
		margin: 4px auto 0;
	}

	.w3layouts_header_right input[type="search"] {
		width: 83%;
	}

	.callbacks_nav {
		position: absolute;
		bottom: 14%;
	}

	.callbacks_nav.prev {
		right: auto;
		background-position: left top;
		left: 43%;
	}
}

@media (max-width: 640px) {

	.box,
	.box .overbox {
		height: 114px;
	}

	.w3l_head {
		font-size: 1.8em;
	}

	.w3ls_head_para {
		letter-spacing: 5px;
		font-size: 12px !important;
	}

	.services-gd.text-center {
		float: left;
		width: 50%;
	}
}

@media (max-width: 600px) {
	.slider-info h4 {
		font-size: 1.5em;
	}

	.slider-info p {
		font-size: 0.8em;
		letter-spacing: 3px;
		margin: 1em 0 1.5em 0;
	}

	.slider-info {
		position: absolute;
		top: 21%;
	}
}

@media (max-width: 568px) {
	.agileits_banner_bottom_grid_l h4 {
		font-size: 1.4em;
	}

	.w3l_gallery_grid li {
		display: inline-block;
		float: left;
		width: 50%;
		padding: 1%;
	}

	.box,
	.box .overbox {
		height: 166px;
	}

	.box .overbox {
		padding: 5em 1em 2em;
	}

	.projects-grid-caption h4 {
		font-size: 1.1em;
		margin: 5em 0 0.5em 0;
		padding: 8px;
		letter-spacing: 2px;
	}

	.w3l_footer {
		padding: 2em 0 2em 0;
	}

	.w3l_footer_pos {
		margin-top: 1em;
	}
}

@media (max-width: 480px) {

	p,
	ul li,
	ol li {
		margin: 0;
		font-size: 13px;
	}

	.w3layouts_header_right {
		float: none;
		position: relative;
		width: 80%;
		margin: 4px auto 0;
	}

	.callbacks_nav {
		position: absolute;
		bottom: 9%;
	}

	.slider-info h4 {
		font-size: 1.4em;
		letter-spacing: 4px;
	}

	.box .overbox {
		padding: 4em 1em 2em;
	}

	.box,
	.box .overbox {
		height: 138px;
	}

	.projects-grid-caption h4 {
		font-size: 1.1em;
		margin: 0em 0 0.5em 0;
		padding: 8px;
		letter-spacing: 2px;
	}

	.w3_agile_mail_grid textarea {
		outline: none;
		min-height: 119px;
		margin: 2em 0 0;
	}

	.w3_agile_mail_grid {
		padding: 0 0px;
	}
}

@media (max-width: 414px) {
	.agileits_banner_btm_grid_r_pos {
		position: absolute;
		top: -37%;
		right: 0%;
	}

	.agileits_banner_bottom_grid_l {
		padding: 0 5px;
	}

	.agileits_about_left {
		padding: 0 5px;
	}

	.slider-info h4 {
		font-size: 1.3em;
		letter-spacing: 3px;
	}

	.slider-info h4 {
		font-size: 1.3em;
		letter-spacing: 3px;
	}

	.slider-info a {
		font-size: 0.9em;
		padding: 0.4em 1.5em 0.7em 1.5em;
	}

	.w3_navigation_pos {
		position: inherit;
		float: left;
		margin-top: .7em;
	}

	.callbacks_nav.prev {
		right: auto;
		background-position: left top;
		left: 40%;
		background-size: 72%;
	}

	.callbacks_nav.next {
		left: auto;
		background: transparent url(../images/right.png) no-repeat right top;
		left: 51%;
		background-size: 72%;
	}

	.callbacks_nav {
		position: absolute;
		bottom: 5%;
	}

	.box,
	.box .overbox {
		height: 112px;
	}

	.box .overbox {
		padding: 3em 1em 2em;
	}

	ul#lightGallery {
		margin-top: 1em;
	}

	.slider-img img {
		min-height: 175px;
	}

	.map iframe {
		min-height: 231px;
	}

	.agileits_banner_bottom_grid_l h4 {
		font-size: 1.2em;
	}

	.w3l_head {
		font-size: 1.5em;
	}

	.agileits_banner_btm_grid_r_pos img {
		width: 57%;
	}

	.agileits_banner_btm_grid_r_pos {
		position: absolute;
		top: -28%;
		right: -3%;
	}
}

@media (max-width: 384px) {
	.slider-info h4 {
		font-size: 1.2em;
		letter-spacing: 2px;
	}

	.slider-info p {
		font-size: 0.8em;
		letter-spacing: 1px;
		margin: 0.5em 0 1em 0;
	}

	.agileits_banner_btm_grid_r_pos img {
		width: 57%;
	}

	.agileits_banner_btm_grid_r_pos {
		position: absolute;
		top: -28%;
		right: -3%;
	}

	.box .overbox {
		padding: 3em 1em 2em;
	}

	.box,
	.box .overbox {
		height: 103px;
	}

	.services-gd h4 {
		margin-top: 20px;
		font-size: 1.2em;
	}
}

@media (max-width: 375px) {
	.w3layouts_header_right {
		float: none;
		position: relative;
		width: 95%;
		margin: 4px auto 0;
	}
}

@media (max-width: 320px) {
	.w3_navigation_pos h1 a {
		font-size: .65em;
	}

	.slider-info h4 {
		font-size: 1.2em;
		letter-spacing: 2px;
	}

	.slider-img img {
		min-height: 151px;
	}

	.w3l_gallery_grid li {
		display: inline-block;
		float: left;
		width: 100%;
		padding: 1%;
	}

	.box,
	.box .overbox {
		height: 120px;
	}

	.projects-grid-caption {
		padding: 24em 1em 1em 1em;
		position: absolute;
	}

	.w3layouts_header_right {
		float: none;
		position: relative;
		width: 100%;
		margin: 4px auto 0;
	}

	#mail {
		padding: 0em 0 2em 0;
	}
}
.custom-button {
	display: inline-block;
	margin: 5px;
	padding: 10px 20px;
	border: none;
	border-radius: 5px;
	background-color: #007bff;
	color: white;
	cursor: pointer;
	font-size: 16px;
	transition: background-color 0.3s;
}
.custom-button:hover {
	background-color: #0056b3;
}
.custom-footer {
	display: flex;
	justify-content: space-around;
	margin-top: 10px;
}

/* ======== FILE: shop.css ======== */
/* ================================
   全局表格样式
   ================================ */
table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-family: 'Arial', sans-serif;
    font-size: 14px;
    table-layout: auto;
    /* 允许自适应列宽 */
}

th,
td {
    padding: 8px 10px;
    text-align: center;
    border: 1px solid #ddd;
    white-space: nowrap;
    /* 保持文字不换行 */
    transition: background-color 0.3s ease;
}

/* 表头 */
th {
    background-color: #007bff;
    color: #fff;
    font-weight: bold;
    text-transform: uppercase;
}

/* 表格行高度 */
tbody tr {
    height: 40px;
}

/* 奇偶行背景 */
tbody tr:nth-child(odd) {
    background-color: #f9f9f9;
}

/* 鼠标悬停效果 */
tbody tr:hover {
    background-color: #f1f1f1;
}

/* 可滚动表格容器 */
.table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    /* iOS 平滑滚动 */
}

/* ================================
   工具栏 & 搜索框
   ================================ */
.toolbar,
.search-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 10px;
}

.btn-toggle {
    padding: 6px 12px;
    border: none;
    border-radius: 6px;
    background-color: #007bff;
    color: #fff;
    cursor: pointer;
    transition: background-color 0.2s ease, transform 0.2s ease;
    font-size: 13px;
    flex-shrink: 0;
    /* 防止按钮在移动端被压缩 */
}

.btn-toggle:hover {
    background-color: #0056b3;
    transform: translateY(-1px);
}

/* 搜索框自适应 */
#search-input {
    padding: 6px 10px;
    border: 1px solid #ccc;
    border-radius: 6px;
    font-size: 14px;
    flex: 1 1 auto;
    /* 自动拉伸 */
    min-width: 150px;
}


.search-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 15px;
    padding: 10px;
    background: #f9f9f9;
    border-radius: 5px;
    border: 1px solid #ddd;
}

.toolbar-group {
    flex: 1;
    min-width: 200px;
}

.filter-group {
    display: flex;
    gap: 10px;
}

.filter-group select {
    padding: 8px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background: #fff;
    min-width: 50px;
}

#search-input {
    width: 100%;
    padding: 8px 12px;
    box-sizing: border-box;
    border: 1px solid #ccc;
    border-radius: 4px;
}

/* 弹窗主体 */
.swal2-game-popup {
    background: linear-gradient(145deg, #2b2b2b, #1f1f1f);
    border: 1px solid #444;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.7);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

/* 详情卡片容器 */
.trade-detail-card {
    padding: 10px 5px;
    text-align: left;
}

/* 头部：物品名与状态 */
.trade-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid #444;
}

.item-name {
    font-size: 1.3rem;
    font-weight: bold;
    color: #ffd700;
    /* 金色 */
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
    word-break: break-all;
}

.status-badge {
    color: #1a1a1a;
    font-weight: bold;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.8rem;
    text-transform: uppercase;
}

/* 核心信息网格 (2列布局) */
.info-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 20px;
    background: rgba(0, 0, 0, 0.2);
    padding: 15px;
    border-radius: 8px;
}

.info-item {
    display: flex;
    flex-direction: column;
}

.info-item.full-width {
    grid-column: span 2;
    flex-direction: row;
    justify-content: space-between;
    padding-top: 10px;
    border-top: 1px solid #333;
}

.info-item .label {
    font-size: 0.8rem;
    color: #aaa;
    margin-bottom: 2px;
}

.info-item .value {
    font-size: 1.1rem;
    color: #fff;
    font-family: monospace;
}

.info-item .value.highlight {
    color: #ff6b6b;
    font-weight: bold;
    font-size: 1.4rem;
}

/* 底部信息 */
.trade-footer {
    border-top: 1px solid #444;
    padding-top: 15px;
}

.trade-footer .row {
    display: flex;
    justify-content: space-between;
    margin: 8px 0;
    font-size: 0.9rem;
}

.trade-footer .label {
    color: #888;
}

.trade-footer .text {
    color: #ddd;
    font-family: monospace;
}

.pagination {
    display: flex;
    justify-content: center;
    gap: 5px;
    flex-wrap: wrap;
}

.page-btn {
    padding: 5px 10px;
    border: 1px solid #007bff;
    background-color: #fff;
    color: #007bff;
    cursor: pointer;
    border-radius: 3px;
    font-size: 14px;
}

.page-btn:hover:not(.disabled) {
    background-color: #007bff;
    color: #fff;
}

.page-btn.active {
    background-color: #007bff;
    color: #fff;
    font-weight: bold;
}

.page-btn.disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* 商城特有样式 */
.store-header {
    text-align: center;
    margin-bottom: 30px;
    padding: 20px;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #e9ecef;
}

/* 卡片容器 */
.shop-confirm-card {
    font-family: 'Segoe UI', sans-serif;
    color: #333;
    padding: 10px 5px;
}

/* 头部：图标+标题 */
.item-header {
    text-align: center;
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eee;
}

.item-header h3 {
    margin: 10px 0 0;
    color: #2c3e50;
    font-size: 1.4em;
}

.item-icon {
    font-size: 3em;
    display: block;
}

/* 详细信息 Grid 布局 */
.item-details {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 15px;
    background: #f8f9fa;
    padding: 10px;
    border-radius: 6px;
}

.detail-row {
    display: flex;
    flex-direction: column;
    font-size: 0.9em;
}

.detail-row .label {
    color: #666;
    font-size: 0.8em;
    margin-bottom: 2px;
}

/* 修复描述过长错位问题 */
.detail-row .desc {
    color: #555;
    font-style: italic;

    /* 修改部分开始 */
    white-space: normal;
    /* 允许自动换行 */
    word-break: break-word;
    /* 强制长单词或无空格文本换行 */
    max-height: 60px;
    /* 限制最大高度 (大约3-4行) */
    overflow-y: auto;
    /* 超出后显示垂直滚动条 */
    line-height: 1.5;
    /* 调整行高，让文字不那么挤 */
    /* 修改部分结束 */
}

/* CDKey 显示区域容器 - 紧凑型 */
.cdkey-display {
    display: flex;
    flex-direction: column;
    /* 强制上下排列 */
    gap: 4px;
    /* 上下间距缩小 */
    background: #f8f9fa;
    padding: 6px 10px;
    /* 减小内边距 */
    border-radius: 6px;
    border: 1px solid #e9ecef;
    width: 100%;
    box-sizing: border-box;
    min-width: 0;
    /* 防止表格溢出 */
}

/* 下半部分：状态标签 */
.cdkey-status {
    font-size: 11px;
    /* 更小的字号 */
    padding: 2px 6px;
    /* 更紧凑的内边距 */
    border-radius: 3px;
    font-weight: bold;
    align-self: flex-start;
    /* 标签宽度自适应，不占满整行 */
    /* 如果想让标签靠右，改为 align-self: flex-end; */
}

/* 状态颜色保持不变 */
.status-unused {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}

.status-used {
    background-color: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}

.status-unknown {
    background-color: #e2e3e5;
    color: #383d41;
    border: 1px solid #d6d8db;
}

/* =========================================
   2. 弹窗内的 CDKey 卡片样式 (新增/独立)
   ========================================= */
/* 这个类只在弹窗 HTML 中使用，不受表格样式影响 */
.cdkey-card {
    display: flex;
    /* 默认横向 */
    align-items: center;
    justify-content: space-between;
    background: #e3f2fd;
    border: 2px dashed #90caf9;
    border-radius: 8px;
    padding: 15px 20px;
    margin: 10px 0;
}

.cdkey-card {
    color: #0d47a1;
    /* 弹窗内文字颜色不同 */
    font-size: 1.5rem;
    /* 弹窗内字体更大 */
    white-space: normal;
    /* 弹窗内允许换行 */
    text-align: center;
}

/* =========================================
   3. 移动端适配 (修复冲突版)
   ========================================= */
@media (max-width: 768px) {
    /* 注意：这里加了 .table 前缀（假设你的表格有这个类），
       或者你可以用更具体的选择器，防止影响到弹窗里的 .cdkey-card */

    /* 只有表格里的 cdkey-display 才会变成垂直排列 */
    .table .cdkey-display,
    td .cdkey-display {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
    }

    .table .cdkey-info,
    td .cdkey-info {
        width: 100%;
    }

    /* 弹窗里的 .cdkey-card 保持横向，或者变成垂直（看你喜欢） */
    /* 下面这段是针对弹窗内卡片的单独优化，防止在手机上太挤 */
    .cdkey-card {
        flex-direction: column;
        /* 弹窗里也改成垂直，方便复制 */
        gap: 10px;
        padding: 15px 10px;
    }

    .cdkey-card .copy-btn {
        width: 100%;
        margin-left: 0;
    }
}

/* 弹窗内的 CDKey 容器 */
.swal-cdkey-box {
    display: flex;
    align-items: center;
    background-color: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 8px;
    padding: 5px;
    /* 整体内边距 */
    margin: 0 auto;
    max-width: 100%;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
}

/* CDKey 文本样式 */
.swal-cdkey-text {
    flex: 1;
    font-family: 'Courier New', Courier, monospace;
    /* 等宽字体，方便核对 */
    font-size: 18px;
    font-weight: bold;
    color: #2c3e50;
    padding: 10px 15px;
    word-break: break-all;
    /* 防止超长字符撑破弹窗 */
    text-align: center;
    user-select: all;
    /* 允许双击全选 */
}

/* 复制按钮样式 */
.swal-copy-btn {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    font-size: 20px;
    /* Emoji 大小 */
    padding: 0 15px;
    cursor: pointer;
    transition: all 0.2s;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.swal-copy-btn:hover {
    background: #e9ecef;
    border-color: #adb5bd;
    transform: scale(1.05);
}

/* 移动端适配 */
@media (max-width: 500px) {
    .swal-cdkey-box {
        flex-direction: column;
        padding: 10px;
    }

    .swal-copy-btn {
        margin-top: 10px;
        padding: 10px 20px;
        width: 100%;
    }
}

/* 针对移动端的小优化：如果屏幕特别小，滚动条可能不好用，可以取消下面的注释让它完全展开 */

@media (max-width: 480px) {
    .detail-row .desc {
        max-height: none;
        overflow-y: visible;
    }
}


/* 价格区域 */
.price-section {
    text-align: right;
    margin-bottom: 15px;
    padding: 10px;
    background: #fff8e1;
    /* 淡黄色背景强调价格 */
    border-radius: 6px;
    border: 1px solid #ffe082;
}

.price-row {
    display: flex;
    justify-content: space-between;
    margin: 5px 0;
}

.sub-price {
    color: #777;
    font-size: 0.9em;
}

.total .main-price {
    color: #d35400;
    font-weight: bold;
    font-size: 1.2em;
}

/* 钱包余额 */
.wallet-info {
    display: flex;
    justify-content: space-between;
    font-size: 0.85em;
    color: #555;
    border-top: 1px dashed #ddd;
    padding-top: 10px;
}

.new-balance {
    color: #27ae60;
    /* 绿色表示剩余 */
    font-weight: bold;
}

/* 兑换卡片容器 */
.shop-redeem-card {
    font-family: 'Segoe UI', sans-serif;
    color: #333;
    padding: 5px;
}

/* 头部样式 (复用购买弹窗的风格) */
.item-header {
    text-align: center;
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eee;
}

.item-header h3 {
    margin: 10px 0 0;
    color: #2c3e50;
    font-size: 1.4em;
}

.item-icon {
    font-size: 3em;
    display: block;
}

/* 信息网格 */
.info-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 20px;
    background: #f8f9fa;
    padding: 10px;
    border-radius: 6px;
}

.info-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    /* 居中显示 */
    text-align: center;
}

.info-item .label {
    color: #666;
    font-size: 0.85em;
    margin-bottom: 4px;
}

.info-item .value {
    font-weight: bold;
    color: #333;
    font-size: 1.1em;
}

/* 输入框区域 */
.input-section {
    text-align: center;
    margin-bottom: 15px;
}

.input-section label {
    display: block;
    margin-bottom: 8px;
    color: #555;
    font-weight: bold;
}

/* 自定义输入框样式 (覆盖 SweetAlert 默认样式) */
.custom-swal-input {
    width: 100%;
    padding: 12px;
    font-size: 1.2em;
    border: 2px solid #ddd;
    border-radius: 8px;
    text-align: center;
    box-sizing: border-box;
    transition: border-color 0.3s;
    outline: none;
}

.custom-swal-input:focus {
    border-color: #3085d6;
    box-shadow: 0 0 8px rgba(48, 135, 214, 0.2);
}

/* 底部总计 */
.redeem-total {
    background: #e8f5e9;
    /* 淡绿色背景，表示收益 */
    border: 1px solid #c8e6c9;
    border-radius: 6px;
    padding: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.redeem-total span:first-child {
    color: #2e7d32;
    font-weight: bold;
}

.total-price {
    color: #d35400;
    /* 橙色高亮金额 */
    font-weight: bold;
    font-size: 1.3em;
}

/* ================================
   移动端自适应
   ================================ */
@media (max-width: 768px) {
    table {
        font-size: 12px;
    }

    th,
    td {
        padding: 6px 8px;
    }

    tbody tr {
        height: auto;
    }

    /* 工具栏按钮换行显示 */
    .toolbar,
    .search-toolbar {
        gap: 6px;
    }

    .btn-toggle {
        font-size: 12px;
        padding: 5px 8px;
    }

    /* 表格单元格换行显示，防止内容过宽 */
    td,
    th {
        white-space: normal;
    }

    /* 搜索框在移动端更窄 */
    #search-input {
        min-width: 100px;
        flex: 1 1 100%;
    }

    .search-toolbar {
        flex-direction: column;
    }

    .filter-group {
        width: 100%;
        justify-content: space-between;
    }

    .filter-group select {
        flex: 1;
        font-size: 12px;
    }
}

/* 超小屏幕优化 */
@media (max-width: 480px) {
    table {
        font-size: 11px;
    }

    .btn-toggle {
        padding: 4px 6px;
    }

    #search-input {
        padding: 4px 6px;
    }
}

/* 重新寄售信息容器 */
.resell-info-box {
    text-align: left;
    padding: 15px;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #e9ecef;
    max-width: 100%;
    box-sizing: border-box;
}

/* 信息行 */
.resell-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid #e9ecef;
    font-size: 14px;
    gap: 10px;
}

.resell-row:last-of-type {
    border-bottom: none;
}

.resell-row .label {
    color: #6c757d;
    font-weight: 500;
    white-space: nowrap;
}

.resell-row .value {
    color: #2c3e50;
    font-weight: bold;
    text-align: right;
    word-break: break-all;
}

/* 输入框区域 */
.resell-price-input {
    margin-top: 20px;
}

.resell-price-input label {
    display: block;
    margin-bottom: 8px;
    color: #2c3e50;
    font-weight: bold;
}

.input-group {
    display: flex;
    gap: 8px;
    align-items: stretch;
}

.input-group .swal2-input {
    flex: 1;
    margin: 0;
    min-width: 0;
}

.input-addon {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 15px;
    background: #e9ecef;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    color: #495057;
    font-weight: bold;
    white-space: nowrap;
}

/* --- 新增：实时计算区域样式 --- */
.resell-calculation {
    margin-top: 15px;
    padding: 12px;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 6px;
}

.calc-row {
    display: flex;
    justify-content: space-between;
    padding: 5px 0;
    font-size: 14px;
}

.calc-row.border-top {
    border-top: 1px dashed #dee2e6;
    margin-top: 5px;
    padding-top: 10px;
    font-weight: bold;
}

.calc-label {
    color: #6c757d;
}

.calc-value {
    color: #2c3e50;
    font-weight: bold;
    font-family: 'Courier New', monospace;
}

.text-danger {
    color: #dc3545;
}

.text-success {
    color: #28a745;
}

/* --- 移动端适配 --- */
@media (max-width: 576px) {
    .resell-info-box {
        padding: 10px;
    }

    .resell-row {
        flex-direction: column;
        gap: 4px;
        padding: 8px 0;
    }

    .resell-row .label {
        font-size: 12px;
        color: #adb5bd;
    }

    .resell-row .value {
        text-align: left;
        font-size: 15px;
    }

    .input-group {
        flex-direction: column;
    }

    .input-addon {
        padding: 10px;
        width: 100%;
        border-top-left-radius: 0;
        border-top-right-radius: 0;
        border-top: none;
        background: #fff;
    }

    .input-group .swal2-input {
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
        border-bottom: none;
    }
}

/* --- 确认弹窗样式 --- */
.cdkey-confirm-box {
    text-align: left;
    padding: 10px;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #e9ecef;
}

.cdkey-info-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid #e9ecef;
    font-size: 14px;
}

.cdkey-info-row:last-of-type {
    border-bottom: none;
}

.cdkey-info-row .label {
    color: #6c757d;
    font-weight: 500;
}

.cdkey-info-row .value {
    color: #2c3e50;
    font-weight: bold;
    text-align: right;
    word-break: break-all;
}

.text-muted {
    color: #adb5bd !important;
    font-weight: normal !important;
    font-size: 13px;
}

.cdkey-warning {
    margin-top: 15px;
    padding: 10px;
    background: #fff3cd;
    border: 1px solid #ffeeba;
    border-radius: 4px;
    color: #856404;
    font-size: 13px;
    text-align: center;
}

/* --- 结果弹窗样式 --- */
.cdkey-result-box {
    text-align: center;
    padding: 10px 0;
}

.result-intro {
    color: #6c757d;
    margin-bottom: 15px;
    font-size: 14px;
}

/* CDKey 卡片 */
.cdkey-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #e3f2fd;
    /* 浅蓝色背景 */
    border: 2px dashed #90caf9;
    /* 虚线边框 */
    border-radius: 8px;
    padding: 15px 20px;
    margin: 10px 0;
    position: relative;
}

.cdkey-text {
    flex: 1;
    font-family: 'Courier New', Courier, monospace;
    font-size: 1.5rem;
    font-weight: bold;
    color: #0d47a1;
    text-align: center;
    user-select: all;
    /* 双击全选 */
    word-break: break-all;
}

.copy-btn {
    background: #fff;
    border: 1px solid #90caf9;
    border-radius: 6px;
    font-size: 24px;
    padding: 5px 15px;
    cursor: pointer;
    transition: all 0.2s;
    margin-left: 10px;
    color: #0d47a1;
}

.copy-btn:hover {
    background: #bbdefb;
    transform: scale(1.05);
}

.result-tip {
    font-size: 12px;
    color: #95a5a6;
    margin-top: 15px;
}

/* --- 移动端适配 --- */
@media (max-width: 576px) {
    .cdkey-info-row {
        flex-direction: column;
        gap: 4px;
    }

    .cdkey-info-row .value {
        text-align: left;
    }

    .cdkey-card {
        flex-direction: column;
        gap: 10px;
        padding: 20px 10px;
    }

    .copy-btn {
        margin-left: 0;
        width: 100%;
        padding: 10px;
    }
}

/* --- 使用说明区域样式 --- */
.usage-instruction {
    margin-top: 20px;
    padding: 15px;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #e9ecef;
    text-align: left;
}

.usage-title {
    font-weight: bold;
    color: #2c3e50;
    margin-bottom: 8px;
    font-size: 14px;
}

.usage-text {
    margin: 0 0 10px 0;
    color: #6c757d;
    font-size: 13px;
}

/* 指令代码块 */
.usage-code {
    background: #2c3e50;
    /* 深色背景模仿终端 */
    color: #4cd137;
    /* 绿色文字模仿代码 */
    padding: 10px 15px;
    border-radius: 6px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: bold;
    font-size: 16px;
    text-align: center;
    margin-bottom: 10px;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
    user-select: all;
    /* 允许双击选中指令 */
}

.usage-note {
    margin: 0;
    color: #adb5bd;
    font-size: 12px;
    text-align: center;
    font-style: italic;
}

/* --- 移动端适配 --- */
@media (max-width: 576px) {
    .cdkey-result-box {
        padding: 5px;
    }

    .usage-code {
        font-size: 14px;
        /* 手机端字体稍微小一点 */
        padding: 8px 10px;
        word-break: break-all;
        /* 防止超长 Key 撑破 */
    }
}

/* --- 寄售弹窗独立样式 --- */

/* 1. 容器基础重置 (确保在弹窗内不受外部干扰) */
.shop-sell-container {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    color: #333;
    line-height: 1.5;
    box-sizing: border-box;
    width: 100%;
    max-width: 500px;
    /* 限制最大宽度，防止在大屏上太宽 */
    margin: 0 auto;
}

.shop-sell-container * {
    box-sizing: border-box;
    /* 关键：防止padding撑破宽度 */
}

/* 2. 信息展示区域 */
.shop-sell-info__item {
    margin: 0 0 8px 0;
    padding: 4px 0;
    border-bottom: 1px solid #f0f0f0;
    display: flex;
    justify-content: space-between;
}

.shop-sell-info__label {
    font-weight: 600;
    color: #555;
    flex-shrink: 0;
    width: 80px;
    /* 固定标签宽度，对齐美观 */
}

.shop-sell-info__value {
    flex: 1;
    text-align: right;
    color: #2c3e50;
    font-weight: 500;
}

/* 3. 输入表单区域 (Flex布局实现自适应) */
.shop-sell-form {
    display: flex;
    flex-wrap: wrap;
    /* 允许换行 */
    gap: 15px;
    /* 间距 */
    margin: 20px 0;
}

.shop-sell-form__group {
    flex: 1 1 100%;
    /* 默认占满一行 (移动端优先) */
    display: flex;
    flex-direction: column;
}

/* 桌面端适配：当屏幕足够大时，让输入框并排 */
@media (min-width: 480px) {
    .shop-sell-form__group {
        flex: 1 1 calc(50% - 8px);
        /* 各占一半宽度 */
    }
}

.shop-sell-form__label {
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 6px;
    color: #444;
}

.shop-sell-form__input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 16px;
    /* 防止iOS自动缩放 */
    transition: border-color 0.2s, box-shadow 0.2s;
    background-color: #fff;
}

.shop-sell-form__input:focus {
    outline: none;
    border-color: #3085d6;
    box-shadow: 0 0 0 3px rgba(48, 135, 214, 0.15);
}

/* 4. 统计与图表区域 */
.shop-sell-summary {
    border-top: 1px solid #eee;
    padding-top: 15px;
    margin-top: 10px;
    background-color: #f9f9f9;
    border-radius: 8px;
    padding: 15px;
}

.shop-sell-summary__total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.shop-sell-summary__text {
    font-size: 14px;
    color: #666;
}

.shop-sell-summary__price {
    font-size: 18px;
    font-weight: 700;
    color: #3085d6;
}

/* 5. 价格趋势图表 */
.shop-sell-chart {
    margin-top: 10px;
    text-align: center;
    position: relative;
}

.shop-sell-chart__status {
    font-size: 13px;
    color: #888;
    font-style: italic;
}

/* 简单的加载动画 */
@keyframes shop-sell-pulse {
    0% {
        opacity: 0.6;
    }

    50% {
        opacity: 1;
    }

    100% {
        opacity: 0.6;
    }
}

.shop-sell-chart--loading {
    animation: shop-sell-pulse 1.5s infinite;
}

.balance-fly {
    position: absolute;
    font-weight: 900;
    font-size: 24px;
    color: #fff;
    z-index: 9999;
    pointer-events: none;

    /* 核心修改：时间改为 2s，使用 linear 保持匀速上升 */
    animation: fly-animation 2s linear forwards;

    /* 保持发光效果 */
    text-shadow:
        0 0 10px rgba(255, 215, 0, 0.8),
        2px 2px 4px rgba(0, 0, 0, 0.5);
}

@keyframes fly-animation {
    0% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }

    /* 修改点：在 30% 的时候就达到最大，剩下 70% 的时间都在慢慢飘远 */
    30% {
        transform: translateY(-40px) scale(1.5);
        opacity: 1;
    }

    100% {
        opacity: 0;
        /* 飘得更高更远 */
        transform: translateY(-100px) scale(1.2);
    }
}

/* ======== FILE: shop_redeem.css ======== */
/* =========================================
   PSO 终端风格核心变量 (基于截图)
   ========================================= */
:root {
    /* --- 核心背景：深青绿 (截图中的面板色) --- */
    --pso-bg-dark: #052b2b; /* 面板/卡片色：稍亮一点的青绿色 */
    --pso-panel: #0a3d3d;

    /* --- 核心高亮：经典橙色 --- */
    --pso-orange: #ff8800;
    --pso-orange-glow: rgba(255, 136, 0, 0.6);

    /* --- 辅助高亮：亮青色 --- */
    --pso-cyan: #00ffff;

    /* --- 文字颜色 --- */
    --pso-text: #e0ffff;

    /* --- 扫描线颜色 --- */
    --pso-scanline: rgba(0, 0, 0, 0.3);
}

/* =========================================
   基础布局与触发按钮
   ========================================= */
.psu-terminal-trigger {
    text-align: center;
    padding: 30px 0;
    margin-bottom: 30px;
}

/* 触发按钮：模仿游戏里的交互按钮 */
.psu-access-btn {
    background: var(--pso-orange);
    border: 2px solid #fff;
    color: #000;
    padding: 10px 30px;
    font-size: 18px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 2px;
    cursor: pointer;
    transition: all 0.2s;
    
    /* --- 圆角调整 --- */
    border-radius: 12px; /* 增加圆角，不再使用切角 */
    box-shadow: 3px 3px 0px rgba(0, 0, 0, 0.5);
    font-family: "SimHei", "Microsoft YaHei", sans-serif;
}

.psu-access-btn:hover {
    background: #fff;
    color: var(--pso-orange);
    border-color: var(--pso-cyan);
    transform: scale(1.05);
}

/* =========================================
   对话框核心样式 (终端机外观)
   ========================================= */
.psu-secure-dialog {
    margin: auto;
    padding: 0;
    border: none;
    background: transparent;
    width: 90%;
    max-width: 800px;
    max-height: 85vh;
    color: var(--pso-text);
    font-family: "SimHei", "Microsoft YaHei", sans-serif;
}

/* 遮罩层 */
.psu-secure-dialog::backdrop {
    background: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(2px);
}

/* 对话框主容器：复刻截图边框 */
.dialog-content {
    background-color: var(--pso-bg-dark);
    border: 2px solid #fff;
    outline: 2px solid var(--pso-cyan);
    outline-offset: -6px;
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    display: flex;
    flex-direction: column;
    position: relative;
    
    /* --- 圆角调整 --- */
    border-radius: 16px; /* 外层容器大圆角，视觉更柔和 */
    overflow: hidden;
}

/* --- 对话框头部 --- */
.dialog-header {
    height: 45px;
    padding: 0 20px;
    background: linear-gradient(90deg, var(--pso-orange) 0%, #cc7000 100%);
    border-bottom: 2px solid var(--pso-cyan);
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: relative;
    
    /* --- 圆角调整：顶部装饰条 --- */
    border-radius: 12px 12px 0 0; /* 仅左上和右上圆角，底部保持直角以连接内容 */
}

.dialog-header h3 {
    margin: 0;
    font-size: 18px;
    color: #000;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 900;
    text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.4);
    line-height: 1;
    padding-top: 2px;
}

.close-btn {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid #000;
    color: #000;
    width: 28px;
    height: 28px;
    font-size: 20px;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s;
    margin-top: 2px;
    
    /* --- 圆角调整 --- */
    border-radius: 50%; /* 圆形按钮 */
}

.close-btn:hover {
    background: #fff;
    color: var(--pso-orange);
    transform: rotate(90deg);
}

/* =========================================
   内容区域 (物资列表)
   ========================================= */
.psu-bounty-manifest {
    padding: 30px 25px 25px;
    overflow-y: auto;
    flex: 1;
    background: transparent;
}

.psu-grid-layout {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 20px;
    
    /* --- 圆角调整 --- */
    border-radius: 12px; /* 网格容器圆角 */
    overflow: hidden;
}

/* =========================================
   物资卡片 (数据卡)
   ========================================= */
.psu-data-card {
    background: var(--pso-panel);
    border: 1px solid var(--pso-cyan);
    padding: 15px;
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: all 0.2s;
    position: relative;
    background-image: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0, 0, 0, 0.1) 2px, rgba(0, 0, 0, 0.1) 4px);
    
    /* --- 圆角调整 --- */
    border-radius: 12px; /* 卡片圆角 */
}

/* 卡片角落装饰：右上角橙色三角 */
.psu-data-card::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 15px 15px 0;
    border-color: transparent var(--pso-orange) transparent transparent;
    /* --- 圆角调整：如果需要三角形也圆润，可以加这个，但通常保持直角更锐利 --- */
    /* clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); */
}

.psu-data-card:hover {
    background: #145050;
    border-color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 0 15px var(--pso-cyan);
    cursor: pointer;
}

.psu-visual-display {
    width: 64px;
    height: 64px;
    margin-bottom: 12px;
    background: #000;
    border: 1px solid var(--pso-cyan);
    box-shadow: inset 0 0 10px var(--pso-cyan);
    display: flex;
    align-items: center;
    justify-content: center;
    
    /* --- 圆角调整 --- */
    border-radius: 8px; /* 图标容器微圆角 */
}

.psu-item-title {
    font-size: 14px;
    color: #fff;
    font-weight: bold;
    margin-bottom: 10px;
    text-align: center;
    text-shadow: 1px 1px 0 #000;
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.psu-cost-indicator {
    display: inline-flex;
    align-items: center;
    background: rgba(0, 0, 0, 0.6);
    border: 1px solid var(--pso-orange);
    padding: 2px 8px;
    font-size: 13px;
    font-weight: bold;
    color: var(--pso-orange);
    font-family: "Consolas", monospace;
    
    /* --- 圆角调整 --- */
    border-radius: 20px; /* 标签胶囊化圆角 */
}

.psu-currency-symbol {
    margin-right: 4px;
    filter: drop-shadow(0 0 2px var(--pso-orange));
}

.psu-empty-state {
    grid-column: 1 / -1;
    text-align: center;
    color: var(--pso-cyan);
    padding: 40px;
    font-size: 18px;
    text-shadow: 0 0 5px var(--pso-cyan);
    border: 1px dashed var(--pso-cyan);
    background: rgba(0, 255, 255, 0.05);
    
    /* --- 圆角调整 --- */
    border-radius: 12px;
}

/* =========================================
   滚动条样式
   ========================================= */
.psu-bounty-manifest::-webkit-scrollbar {
    width: 12px;
    background: var(--pso-bg-dark);
}

.psu-bounty-manifest::-webkit-scrollbar-track {
    border: 1px solid var(--pso-cyan);
    background: rgba(0, 0, 0, 0.2);
    
    /* --- 圆角调整 --- */
    border-radius: 10px;
}

.psu-bounty-manifest::-webkit-scrollbar-thumb {
    background: var(--pso-orange);
    border: 1px solid #fff;
    
    /* --- 圆角调整 --- */
    border-radius: 10px;
}

/* =========================================
   PSO 终端风格 - 兑换操作面板 (适配圆角)
   ========================================= */
.pso-terminal-panel {
    background-color: var(--pso-bg-dark);
    border: 1px solid var(--pso-cyan);
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.1);
    padding: 20px;
    position: relative;
    overflow: hidden;
    margin-top: 20px;
    
    /* --- 圆角调整 --- */
    border-radius: 12px;
}

.pso-terminal-panel::before {
    content: "SYSTEM: ITEM EXCHANGE // AUTHORIZED";
    position: absolute;
    top: 0;
    left: 0;
    background: var(--pso-orange);
    color: #000;
    font-size: 10px;
    font-weight: bold;
    padding: 2px 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    z-index: 2;
    
    /* --- 圆角调整 --- */
    border-radius: 8px 0 8px 0;
}

.pso-terminal-panel::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 50%, rgba(0, 0, 0, 0.2) 50%);
    background-size: 100% 4px;
    pointer-events: none;
    z-index: 1;
    opacity: 0.1;
}

.pso-item-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
    position: relative;
    z-index: 2;
}

.pso-item-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: rgba(0, 255, 255, 0.05);
    border: 1px solid rgba(0, 255, 255, 0.2);
    padding: 15px;
    transition: all 0.2s ease;
    
    /* --- 圆角调整 --- */
    border-radius: 10px;
}

.pso-item-row:hover {
    background: rgba(0, 255, 255, 0.1);
    border-color: var(--pso-orange);
    box-shadow: 0 0 10px rgba(255, 136, 0, 0.2);
    transform: translateX(5px);
}

.pso-item-info {
    display: flex;
    align-items: center;
    gap: 20px;
    flex: 1;
}

.pso-item-icon {
    width: 64px;
    height: 64px;
    background: #000;
    border: 1px solid var(--pso-cyan);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    
    /* --- 圆角调整 --- */
    border-radius: 8px;
}

.pso-item-icon::before {
    content: "+";
    position: absolute;
    color: var(--pso-cyan);
    font-size: 40px;
    opacity: 0.2;
}

.pso-item-desc {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.pso-item-name {
    color: var(--pso-text);
    font-size: 16px;
    font-weight: bold;
    text-shadow: 0 0 5px var(--pso-cyan);
    margin: 0;
}

.pso-item-price {
    color: var(--pso-orange);
    font-family: 'Courier New', monospace;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.pso-item-price::before {
    content: "💎";
}

.pso-action-area {
    display: flex;
    align-items: center;
}

.pso-btn-exchange {
    background: transparent;
    border: 1px solid var(--pso-orange);
    color: var(--pso-orange);
    padding: 8px 20px;
    font-family: 'Courier New', monospace;
    font-weight: bold;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.2s;
    
    /* --- 圆角调整 --- */
    border-radius: 20px; /* 按钮胶囊化 */
}

.pso-btn-exchange:hover {
    background: var(--pso-orange);
    color: #000;
    box-shadow: 0 0 15px var(--pso-orange-glow);
}

.pso-btn-exchange:disabled {
    border-color: #555;
    color: #555;
    cursor: not-allowed;
    background: transparent;
    box-shadow: none;
}

@media (max-width: 768px) {
    .pso-item-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 15px;
    }
    .pso-action-area {
        align-self: flex-end;
    }
}

/* ======== FILE: shop_store.css ======== */
    /* 商城特有样式 */
    .store-header {
        text-align: center;
        margin-bottom: 30px;
        padding: 20px;
        background: #f8f9fa;
        border-radius: 8px;
        border: 1px solid #e9ecef;
    }

    .category-tabs {
        display: flex;
        justify-content: center;
        gap: 10px;
        margin-bottom: 30px;
        flex-wrap: wrap;
    }

    .tab-btn {
        padding: 10px 20px;
        border: 1px solid #ddd;
        background: #fff;
        border-radius: 20px;
        cursor: pointer;
        transition: all 0.2s;
        font-weight: 500;
    }

    .tab-btn.active,
    .tab-btn:hover {
        background: #007bff;
        color: #fff;
        border-color: #007bff;
    }

    .product-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
        gap: 25px;
        padding: 10px 0;
    }

    .product-card {
        background: #fff;
        border: 1px solid #eee;
        border-radius: 8px;
        overflow: hidden;
        transition: transform 0.2s;
        display: flex;
        flex-direction: column;
    }

    .product-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
    }

    .product-img {
        height: 150px;
        background: #f1f3f5;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 50px;
        color: #adb5bd;
    }

    .product-info {
        padding: 15px;
        flex: 1;
        display: flex;
        flex-direction: column;
    }

    .product-name {
        font-size: 16px;
        font-weight: bold;
        margin-bottom: 5px;
        color: #212529;
    }

    .product-desc {
        font-size: 12px;
        color: #868e96;
        margin-bottom: 15px;
        flex: 1;
    }

    .product-price {
        font-size: 18px;
        color: #ff9800;
        font-weight: bold;
        text-align: right;
    }

    .buy-btn {
        width: 100%;
        padding: 10px;
        background: #007bff;
        color: #fff;
        border: none;
        border-radius: 4px;
        cursor: pointer;
        margin-top: 10px;
        transition: background 0.2s;
    }

    .buy-btn:hover {
        background: #0056b3;
    }

    /* 库存状态文字 */
    .stock-status {
        font-size: 12px;
        color: #4caf50;
        /* 绿色 */
        margin: 5px 0;
        font-weight: bold;
    }

    .stock-status.out {
        color: #f44336;
        /* 红色 */
    }

    .stock-status.unlimited {
        color: #999;
        font-weight: normal;
    }

    /* 售罄的商品卡片整体变淡 */
    .product-card.out-of-stock {
        opacity: 0.7;
        filter: grayscale(0.8);
        /* 变灰 */
    }

    /* 禁用按钮样式 */
    .buy-btn.disabled {
        background-color: #ccc;
        cursor: not-allowed;
        color: #666;
    }

    /* 弹窗内容容器 */
    .swal-custom-content {
        padding: 10px 0;
        text-align: center;
    }

    /* 物品名称高亮 */
    .item-name-highlight {
        color: #2c3e50;
        font-size: 1.5em;
        margin: 15px 0;
        padding: 10px;
        background: #f8f9fa;
        border-radius: 8px;
        border: 1px solid #e9ecef;
        word-break: break-all;
        /* 防止名字太长 */
    }

    /* 价格标签样式 */
    .price-tag {
        display: inline-block;
        background: #fff3cd;
        /* 淡黄色背景 */
        color: #856404;
        padding: 10px 20px;
        border-radius: 50px;
        /* 胶囊形状 */
        border: 1px solid #ffeeba;
        font-size: 1.1em;
        margin-bottom: 15px;
    }

    .price-tag span {
        display: block;
        font-size: 0.8em;
        opacity: 0.8;
    }

    .price-tag strong {
        font-size: 1.4em;
        display: block;
        margin-top: 5px;
    }

    /* 底部小字提示 */
    .swal-note {
        font-size: 0.85em;
        color: #6c757d;
        margin: 0;
    }

    /* 购买成功后的 CDKey 展示框 (配合 showPurchaseReceipt 使用) */
    .cdkey-receipt-box {
        background: #f1f3f5;
        padding: 15px;
        border-radius: 6px;
        border: 1px dashed #adb5bd;
        word-break: break-all;
        font-family: 'Consolas', 'Monaco', monospace;
        font-size: 1.2em;
        color: #343a40;
        margin: 10px 0;
        user-select: all;
        /* 方便一键全选 */
    }

/* ======== FILE: shop_donate.css ======== */
:root {
    /* --- 主题配置区 (改这里即可换主题) --- */
    --primary-color: #ff4757;
    --primary-hover: #e84148;
    --success-color: #28a745;
    --bg-color: #f8f9fa;
    --text-color: #333;
    --border-color: #eee;
    --shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}

.donate-wrapper {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    margin-top: 20px;
}

@media (max-width: 768px) {
    .donate-wrapper {
        grid-template-columns: 1fr;
    }
}

.donate-panel {
    background: #fff;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 25px;
    box-shadow: var(--shadow);
}

.user-balance {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    padding: 20px;
    border-radius: 8px;
    margin-bottom: 25px;
    color: #fff;
    text-align: center;
}

.user-balance h4 {
    margin: 0;
    font-size: 14px;
    opacity: 0.9;
}

.user-balance .points {
    font-size: 32px;
    font-weight: bold;
    margin: 10px 0 0 0;
}

.amount-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.amount-item {
    padding: 15px;
    border: 2px solid var(--border-color);
    border-radius: 6px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    font-weight: bold;
    color: #555;
}

.amount-item:hover {
    border-color: var(--primary-color);
}

.amount-item.active {
    border-color: var(--primary-color);
    background: #e7f1ff;
    color: var(--primary-color);
}

.custom-amount {
    position: relative;
    margin-bottom: 25px;
}

.custom-amount input {
    width: 100%;
    padding: 12px;
    padding-left: 35px;
    border: 1px solid var(--border-color);
    border-radius: 4px;
    box-sizing: border-box;
    font-size: 16px;
}

.currency-symbol {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--primary-color);
    font-weight: bold;
}

.payment-methods {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
}

.pay-method {
    flex: 1;
    padding: 15px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}

.pay-method.active {
    border-color: var(--success-color);
    background: #f0fff4;
    color: var(--success-color);
    font-weight: bold;
}

.submit-btn {
    width: 100%;
    padding: 15px;
    background: var(--primary-color);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 18px;
    font-weight: bold;
    cursor: pointer;
    transition: background 0.2s;
    box-shadow: 0 4px 15px rgba(255, 71, 87, 0.3);
}

.submit-btn:hover {
    background: var(--primary-hover);
}

/* 历史记录表格 */
.history-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 10px;
}

.history-table th,
.history-table td {
    padding: 12px;
    text-align: left;
    border-bottom: 1px solid var(--border-color);
    font-size: 14px;
}

.history-table th {
    background: var(--bg-color);
    color: #495057;
}

.status-badge {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: bold;
}

.status-pending {
    background: #fff3cd;
    color: #856404;
}

.status-success {
    background: #d4edda;
    color: #155724;
}

.status-fail {
    background: #f8d7da;
    color: #721c24;
}

.note-text {
    font-size: 12px;
    color: #888;
    margin-top: 10px;
    text-align: center;
}

/* 二维码模态框样式 */
.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.4);
    justify-content: center;
    align-items: center;
}

.modal-content {
    background-color: #fefefe;
    border-radius: 10px;
    padding: 20px;
    width: 90%;
    max-width: 400px;
    text-align: center;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
}

.qrcode-img {
    width: 200px;
    height: 200px;
    margin: 10px auto;
    border: 1px solid #eee;
}

.input-trade-no {
    width: 80%;
    padding: 10px;
    margin: 15px 0;
    border: 1px solid #ddd;
    border-radius: 5px;
    font-size: 14px;
}

.btn-confirm {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
}

.btn-confirm:hover {
    background-color: #0056b3;
}

.btn-close {
    background-color: #6c757d;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    margin-left: 10px;
}

/* ======== FILE: shop_get_item_back.css ======== */
/* 容器样式 */
.recycle-container {
    max-width: 1000px;
    margin: 20px auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    font-family: "Microsoft YaHei", sans-serif;
}

/* 头部 */
.recycle-header {
    padding: 20px;
    background: #fee2e2;
    /* 浅红背景 */
    border-bottom: 1px solid #fecaca;
    display: flex;
    align-items: center;
}

.recycle-header h3 {
    margin: 0;
    color: #991b1b;
    font-size: 1.25rem;
}

.recycle-header p {
    margin: 5px 0 0;
    color: #7f1d1d;
    font-size: 0.9rem;
}

/* 表格样式 */
.recycle-table {
    width: 100%;
    border-collapse: collapse;
}

.recycle-table th {
    background: #f3f4f6;
    padding: 12px 16px;
    text-align: left;
    font-weight: 600;
    color: #374151;
    border-bottom: 2px solid #e5e7eb;
}

.recycle-table td {
    padding: 12px 16px;
    border-bottom: 1px solid #e5e7eb;
    color: #4b5563;
}

.recycle-table tr:hover {
    background: #f9fafb;
}

/* 按钮样式 */
.btn-recycle {
    background: linear-gradient(to right, #ef4444, #dc2626);
    color: white;
    border: none;
    padding: 8px 16px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.9rem;
    transition: transform 0.1s;
}

.btn-recycle:hover {
    transform: scale(1.05);
    background: linear-gradient(to right, #dc2626, #b91c1c);
}

.empty-state {
    text-align: center;
    padding: 40px;
    color: #9ca3af;
}

/* 新增：多选框样式 */
.recycle-table input[type="checkbox"] {
    transform: scale(1.3);
    cursor: pointer;
    margin-right: 10px;
}

/* 新增：选中行的背景色 */
.recycle-table tr.selected {
    background-color: #fee2e2;
    /* 浅红色背景 */
    transition: background-color 0.2s;
}

/* 新增：批量操作栏 */
.batch-toolbar {
    padding: 15px 20px;
    background: #f9fafb;
    border-bottom: 1px solid #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.btn-batch {
    background: #dc2626;
    color: white;
    border: none;
    padding: 8px 20px;
    border-radius: 6px;
    cursor: pointer;
    font-weight: bold;
    display: none;
    /* 默认隐藏，选中后显示 */
}

.btn-batch:hover {
    background: #b91c1c;
}


/* 分页样式 */
.pagination {
    display: flex;
    justify-content: center;
    margin-top: 20px;
    gap: 5px;
}

.page-btn {
    padding: 8px 12px;
    border: 1px solid #ddd;
    background: #fff;
    color: #333;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
}

.page-btn:hover {
    background: #f0f0f0;
}

.page-btn.active {
    background: #007bff;
    color: #fff;
    border-color: #007bff;
}

.page-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ======== FILE: shop_points_rank.css ======== */
    .rank-container {
        max-width: 600px;
        margin: 20px auto;
        background: #fff;
        border-radius: 8px;
        overflow: hidden;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    }

    .rank-header {
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        padding: 20px;
        text-align: center;
        color: #fff;
    }

    .rank-header h3 {
        margin: 0;
        font-size: 1.5rem;
    }

    .rank-header p {
        margin: 5px 0 0;
        opacity: 0.9;
        font-size: 0.9rem;
    }

    .rank-list {
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .rank-item {
        display: flex;
        align-items: center;
        padding: 15px 20px;
        border-bottom: 1px solid #eee;
        transition: background 0.2s;
    }

    .rank-item:hover {
        background: #f8f9fa;
    }

    .rank-item:last-child {
        border-bottom: none;
    }

    /* 排名数字样式 */
    .rank-num {
        width: 30px;
        font-size: 1.2rem;
        font-weight: bold;
        color: #adb5bd;
        text-align: center;
        margin-right: 15px;
    }

    .rank-item:nth-child(1) .rank-num {
        color: #ffd700;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
    }

    /* 金 */
    .rank-item:nth-child(2) .rank-num {
        color: #c0c0c0;
    }

    /* 银 */
    .rank-item:nth-child(3) .rank-num {
        color: #cd7f32;
    }

    /* 铜 */

    .rank-name {
        flex: 1;
        font-weight: 500;
        color: #495057;
    }

    .rank-points {
        font-weight: bold;
        color: #ff9800;
        font-size: 1.1rem;
    }

    .rank-icon {
        margin-right: 5px;
    }

/* ======== FILE: shop_store_orders.css ======== */
    /* 订单表格样式 */
    .order-table {
        width: 100%;
        border-collapse: collapse;
        background: #fff;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        border-radius: 8px;
        overflow: hidden;
    }

    .order-table th {
        background: #f8f9fa;
        padding: 15px;
        text-align: left;
        font-weight: 600;
        color: #495057;
        border-bottom: 2px solid #dee2e6;
    }

    .order-table td {
        padding: 15px;
        border-bottom: 1px solid #dee2e6;
        color: #495057;
    }

    .order-table tr:hover {
        background: #f8f9fa;
    }

    .btn-view {
        background: #17a2b8;
        color: #fff;
        border: none;
        padding: 6px 12px;
        border-radius: 4px;
        cursor: pointer;
        font-size: 12px;
    }

    .btn-view:hover {
        background: #138496;
    }

    .status-ok {
        color: #28a745;
        font-weight: bold;
    }

    .status-err {
        color: #dc3545;
    }


    /* 分页样式 */
    .pagination {
        display: flex;
        justify-content: center;
        margin-top: 20px;
        gap: 5px;
    }

    .page-btn {
        padding: 8px 12px;
        border: 1px solid #ddd;
        background: #fff;
        color: #333;
        border-radius: 4px;
        cursor: pointer;
        transition: all 0.2s;
    }

    .page-btn:hover {
        background: #f0f0f0;
    }

    .page-btn.active {
        background: #007bff;
        color: #fff;
        border-color: #007bff;
    }

    .page-btn:disabled {
        opacity: 0.5;
        cursor: not-allowed;
    }

/* ======== FILE: cdkey.css ======== */
/* =========================
   ������
========================= */
.cdkey-wrapper {
    max-width: 1200px;
    margin: 40px auto;
    padding: 20px;
}

/* ���� */
.cdkey-title {
    font-size: 24px;
    margin-bottom: 20px;
    font-weight: bold;
}

/* ��Ƭ */
.cdkey-card {
    background: #f1f7e9;
    padding: 15px;
    border-radius: 10px;
    margin-bottom: 20px;
}

/* =========================
   ���� & ��������
========================= */
.cdkey-search input {
    width: 100%;
    padding: 8px 10px;
    border-radius: 6px;
    border: 1px solid #ccc;
    margin-bottom: 10px;
}

#bulk-delete-btn {
    background: #e74c3c;
    margin-bottom: 10px;
}

#bulk-delete-btn:hover {
    background: #c0392b;
}

/* =========================
   ����
========================= */
.cdkey-table {
    width: 100%;
    border-collapse: collapse;
    border-radius: 8px;
    overflow: hidden;

    table-layout: auto; /* ? ������ */
}

/* ��ͷ */
.cdkey-table th {
    background: #2c3e50;
    color: #fff;
    padding: 10px 6px;
    text-align: center;
    font-weight: 600;
    font-size: 13px;
}

/* ��Ԫ�� */
.cdkey-table td {
    padding: 8px 6px;
    text-align: center;
    word-break: break-word;
    font-size: 13px;
}

/* hover */
.cdkey-table tr:hover {
    background: #f9f9f9;
}

/* =========================
   �п���������˳��
========================= */

/* 1: checkbox */
.cdkey-table th:nth-child(1),
.cdkey-table td:nth-child(1) {
    width: 40px;
}

/* 2: ID */
.cdkey-table th:nth-child(2),
.cdkey-table td:nth-child(2) {
    width: 60px;
}

/* 3: CDKEY */
.cdkey-table th:nth-child(3),
.cdkey-table td:nth-child(3) {
    width: 150px;
}

/* 4: ��Ʒ */
.cdkey-table th:nth-child(4),
.cdkey-table td:nth-child(4) {
    width: 160px;
}

/* 5: ���� */
.cdkey-table th:nth-child(5),
.cdkey-table td:nth-child(5) {
    width: 240px;
}

/* 6: ʹ����� */
.cdkey-table th:nth-child(6),
.cdkey-table td:nth-child(6) {
    width: 100px;
}

/* 7~9 */
.cdkey-table th:nth-child(7),
.cdkey-table td:nth-child(7),
.cdkey-table th:nth-child(8),
.cdkey-table td:nth-child(8),
.cdkey-table th:nth-child(9),
.cdkey-table td:nth-child(9) {
    width: 80px;
}

/* 10: ���� */
.cdkey-table th:nth-child(10),
.cdkey-table td:nth-child(10) {
    width: 150px;
}

/* 11: ʱ�� */
.cdkey-table th:nth-child(11),
.cdkey-table td:nth-child(11) {
    width: 160px;
}

/* 12: ���� */
.cdkey-table th:nth-child(12),
.cdkey-table td:nth-child(12) {
    width: 140px;
}

/* =========================
   ��Ʒ
========================= */
.cdkey-item-name {
    font-weight: bold;
    color: #2c3e50;
    white-space: nowrap;
}

.cdkey-item-desc {
    color: #666;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* =========================
   ״̬
========================= */
.ok {
    color: #2ecc71;
    font-weight: bold;
}

.used {
    color: #e74c3c;
    font-weight: bold;
}

/* =========================
   ��ť
========================= */
.cdkey-wrapper button {
    padding: 5px 10px;
    border: none;
    background: #3498db;
    color: #fff;
    border-radius: 6px;
    cursor: pointer;
    font-size: 12px;
}

.cdkey-wrapper button:hover {
    background: #2980b9;
}

/* ɾ����ť������ɫ */
.delete-btn {
    background: #e74c3c;
}

.delete-btn:hover {
    background: #c0392b;
}

/* checkbox ���� */
.cdkey-table input[type="checkbox"] {
    transform: scale(1.2);
    cursor: pointer;
}

/* =========================
   �����
========================= */
.cdkey-wrapper input,
.cdkey-wrapper select {
    padding: 5px;
    margin: 3px;
    border-radius: 4px;
    border: 1px solid #ccc;
}

/* =========================
   �ƶ����Ż�
========================= */
@media (max-width: 768px) {

    /* ★ 只藏表头 (thead)。原先这里还写了 `.cdkey-table tr:first-child { display:none }`,
       本意是兼容"表头写在 tbody 第一行"的老式表格, 但本站用 .cdkey-table 的四个页面
       (cdkey_list / cdkey_redeem / challenge_reward_admin / quest_race_admin) 全是 thead+tbody,
       而它的特异性 (0,2,1) 压过下面 `.cdkey-table tr { display:block }` (0,1,1)
       → 手机宽度下每个表格的**第一条数据**都被藏掉 (2026-09-25 复核发现)。 */
    .cdkey-table thead {
        display: none;
    }

    /* ★ 卡片化的前提: 表格/表体本身也要 block。
       否则 <table> 仍是 table 盒, 行/单元格改成 block/flex 后会被匿名表格盒重排,
       实测单元格只剩 ~40px 宽、内容居中溢出被裁掉 (兑换码只看得见中间几个字) ——
       2026-09-25 复核发现, 本站四个用 .cdkey-table 的页面在手机宽度下都中了这一条。 */
    .cdkey-table,
    .cdkey-table tbody {
        display: block;
    }

    .cdkey-table tr {
        display: block;
        margin-bottom: 14px;
        background: #fff;
        border-radius: 12px;
        padding: 12px;
        box-shadow: 0 4px 10px rgba(0,0,0,0.08);
    }

    .cdkey-table td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 6px 0;
        border: none;
        font-size: 13px;
    }

    /* label */
    .cdkey-table td::before {
        content: attr(data-label);
        font-weight: bold;
        color: #888;
        margin-right: 10px;
    }

    /* checkbox �� */
    .cdkey-table td:first-child {
        justify-content: flex-end;
    }

    .item-name {
        font-size: 15px;
    }

    .item-desc {
        font-size: 12px;
        -webkit-line-clamp: 3;
    }

    .cdkey-wrapper button {
        font-size: 12px;
    }
}

/* ======== FILE: online_user.css ======== */
    /* 列表样式 */
    .user-list {
        list-style-type: none;
        padding: 0;
        display: flex;
        flex-wrap: wrap;
        justify-content: space-around;
        background: #fff;
        /* 白色背景 */
        border-radius: 8px;
        /* 圆角 */
        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        /* 轻微的阴影 */
    }

    /* 用户信息样式 */
    .user-info {
        margin: 10px;
        padding: 10px;
        border: 1px solid #ccc;
        /* 边框 */
        border-radius: 5px;
        /* 圆角 */
        background-clip: padding-box;
        /* 防止背景被裁切 */
        flex-basis: calc(33% - 20px);
        /* 三列布局 */
        max-width: 200px;
        /* 最大宽度 */
        transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
        /* 过渡动画 */
    }

    .user-info:hover {
        transform: translateY(-5px);
        /* 鼠标悬停时上移 */
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
        /* 鼠标悬停时阴影加深 */
    }

    .user-header {
        display: flex;
        align-items: center;
        cursor: pointer;
    }

    .user-header img {
        margin-right: 8px;
        border-radius: 50%;
        /* 用户头像圆角 */
        width: 32px;
        /* 头像大小 */
        height: 32px;
    }

    .user-name {
        font-weight: bold;
        /* 用户名加粗 */
        color: #333;
        /* 深灰色用户名 */
    }

    /* 隐藏信息样式 */
    .hidden-info {
        display: none;
        background-color: #f9f9f9;
        /* 轻微的背景色 */
        border: 1px solid #ddd;
        /* 边框颜色 */
        padding: 20px;
        /* 增加内边距 */
        border-radius: 8px;
        /* 圆角 */
        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
        /* 阴影 */
        position: absolute;
        width: 100%;
        /* 宽度100% */
        max-width: 500px;
        /* 最大宽度限制提高 */
        min-width: 240px;
        /* 最小宽度保证 */
        left: 50%;
        /* 居中显示 */
        top: calc(100% + 5px);
        transform: translateX(-50%);
        /* 水平居中 */
        z-index: 100;
        transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
        visibility: hidden;
        /* 默认不可见 */
        text-align: left;
        /* 文本左对齐 */
        font-size: 14px;
        /* 字体大小 */
        line-height: 1.5;
        /* 行高 */
        color: #666;
        /* 文本颜色 */
        white-space: pre-wrap;
        /* 保持空格和换行 */
    }

    .user-info:hover .hidden-info {
        display: block;
        opacity: 1;
        visibility: visible;
        /* 鼠标悬停时可见 */
    }

    /* 响应式设计 */
    @media (max-width: 768px) {
        .hidden-info {
            left: 0;
            /* 移动端不居中显示 */
            transform: translateX(0);
            /* 不水平居中 */
            max-width: 100%;
            /* 最大宽度100% */
            border-radius: 0;
            /* 移除圆角 */
        }
    }

    @media (max-width: 480px) {
        .user-info {
            flex-basis: 100%;
            /* 一列布局 */
        }
    }

/* ======== FILE: rt_drop.css ======== */
/* 过滤器和搜索区域 */
.filter-container {
    width: 80%; /* 设置宽度与表格一致 */
    margin: 0 auto; /* 水平居中 */
    background-color: white; /* 过滤器背景色 */
    padding: 10px 20px; /* 内边距 */
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* 阴影效果 */
    transition: position 0.3s ease, top 0.3s ease; /* 添加过渡效果 */
}

.sticky {
    position: fixed;
    top: var(--nav-height, 75px);
    left: 0;
    right: 0;
    z-index: 900;
    width: 100%;
    margin: 0;
    box-sizing: border-box;
}

/* 分页控件 */
.rt-pagination {
    width: 80%;
    margin: 10px auto;
    text-align: center;
    user-select: none;
}
.filter-container .rt-pagination {
    width: 100%;
    margin: 8px 0 0;
    text-align: left;
}
.rt-pagination span {
    margin-right: 10px;
    color: #555;
    font-size: 14px;
}
.filter-container .rt-pagination span {
    font-size: 13px;
}
.rt-pagination button {
    padding: 6px 12px;
    margin: 0 3px;
    border: 1px solid #007bff;
    background: white;
    color: #007bff;
    cursor: pointer;
    border-radius: 4px;
    font-size: 14px;
}
.filter-container .rt-pagination button {
    padding: 4px 10px;
    font-size: 13px;
}
.rt-pagination button.active {
    background: #007bff;
    color: white;
}
.rt-pagination button:hover:not(.active):not(:disabled) {
    background: #e6f2ff;
}
.rt-pagination button:disabled {
    border-color: #ccc;
    color: #999;
    cursor: not-allowed;
}

/* 掉落表格样式 */
.rt-table {
    width: 80%; /* 表格宽度 */
    border-collapse: collapse;
    margin: 20px auto 20px; /* 在表格上方留出空间，避免被过滤器覆盖 */
    text-align: left;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    overflow: hidden;
    background-color: white;
}

.rt-table th,
.rt-table td {
    border: 1px solid #e0e0e0;
    padding: 12px;
    transition: background-color 0.3s;
}

.rt-table th {
    background-color: #007bff;
    color: white;
    font-weight: bold;
}

.rt-table tbody tr:hover {
    background-color: #f1f1f1;
}

/* 标签样式 */
.filter-container label {
    margin-right: 10px;
    font-size: 16px;
    color: #555;
}

/* 下拉框和输入框样式 */
select,
#searchInput {
    padding: 10px;
    border: 1px solid #cccccc;
    border-radius: 4px;
    font-size: 16px;
    transition: border-color 0.3s;
    width: auto;
}

select:focus,
#searchInput:focus {
    border-color: #007bff;
    outline: none;
}

/* 清除按钮样式 */
#clearButton {
    padding: 10px 15px;
    border: none;
    border-radius: 4px;
    background-color: #ff4d4d;
    color: white;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 0.3s;
}

#clearButton:hover {
    background-color: #cc0000;
}

/* ====== 相册页面样式 ====== */
.albums-photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 15px;
    margin-top: 20px;
}

.albums-photo-item {
    position: relative;
    border: 1px solid #ddd;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    background: #fff;
}

.albums-photo-item:hover {
    transform: scale(1.03);
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.15);
}

.albums-photo-img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    cursor: pointer;
    border-bottom: 1px solid #ddd;
}

.albums-photo-meta {
    padding: 10px;
    font-size: 13px;
    color: #555;
}

.albums-photo-meta .photo-time {
    color: #888;
    font-size: 12px;
}

.albums-photo-meta .photo-comment {
    margin-top: 4px;
    word-break: break-all;
}

.albums-delete-btn {
    position: absolute;
    bottom: 10px;
    right: 10px;
    padding: 4px 10px;
    background-color: #e74c3c;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    transition: background-color 0.3s;
}

.albums-delete-btn:hover {
    background-color: #c0392b;
}

.albums-pagination {
    text-align: center;
    margin: 25px 0;
}

.albums-pagination a,
.albums-pagination span {
    display: inline-block;
    padding: 6px 12px;
    margin: 0 3px;
    border: 1px solid #ddd;
    border-radius: 4px;
    text-decoration: none;
    color: #333;
    background: #fff;
    transition: background-color 0.2s;
}

.albums-pagination a:hover {
    background-color: #f0f0f0;
}

.albums-pagination .current {
    background-color: #337ab7;
    color: #fff;
    border-color: #337ab7;
}

.albums-pagination .disabled {
    color: #aaa;
    cursor: not-allowed;
}

.albums-section {
    margin-bottom: 30px;
    padding: 15px;
    background: #fafafa;
    border-radius: 8px;
    border: 1px solid #eee;
}

.albums-section h2 {
    margin-top: 0;
    margin-bottom: 15px;
    font-size: 20px;
    color: #333;
}

.albums-upload-form,
.albums-create-form {
    margin-bottom: 20px;
}

.albums-upload-form input[type="file"],
.albums-upload-form textarea,
.albums-create-form input[type="text"] {
    margin-bottom: 10px;
}

.albums-empty {
    text-align: center;
    padding: 40px;
    color: #888;
    font-size: 16px;
}

/* lightGallery 适配 */
#lightGallery-albums .albums-photo-item {
    margin-bottom: 0;
}

/* ======== 抽奖系统样式 ======== */

/* 老虎机滚轮动画 */
@keyframes slotSpin {
    0% { transform: translateY(-5px); }
    50% { transform: translateY(5px); }
    100% { transform: translateY(-5px); }
}
.slot-reel.spinning {
    animation: slotSpin 0.1s linear infinite;
}

/* 卡片翻转动画 */
@keyframes cardOpen {
    0% { transform: scale(1) rotateY(0); }
    50% { transform: scale(1.1) rotateY(90deg); }
    100% { transform: scale(1) rotateY(0); }
}
.draw-card.opening {
    animation: cardOpen 0.6s ease forwards;
}

/* 抽奖头部光晕 */
@keyframes casinoGlow {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(180deg); }
}

/* 余额飘字动画 */
@keyframes balanceFlyUp {
    0% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(-40px) scale(1.3); }
}
.balance-fly {
    position: fixed;
    z-index: 9999;
    font-weight: bold;
    font-size: 18px;
    pointer-events: none;
    animation: balanceFlyUp 1.5s ease-out forwards;
}

/* 稀有奖品闪光 */
@keyframes rareShine {
    0% { box-shadow: 0 0 5px rgba(255, 215, 0, 0.3); }
    50% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.8), 0 0 40px rgba(255, 215, 0, 0.4); }
    100% { box-shadow: 0 0 5px rgba(255, 215, 0, 0.3); }
}
.prize-rare-glow {
    animation: rareShine 2s ease-in-out infinite;
}


/* =========================================================
   顶栏 / 页脚 移动端适配
   ★ 必须放在文件最后：上面的老模板媒体查询里还留着
     .w3l_footer / .w3l_footer_pos 的 padding/margin 覆盖，
     同优先级下靠源码顺序取胜。
   ========================================================= */
@media (max-width: 1199px) {
	/* 单条栏的断点是 1200，但 bootstrap 在 ≥768 就把汉堡藏了，这里放出来 */
	.navbar-flex .navbar-toggle {
		display: block;
	}

	/* ===== 单条栏里的「站点信息 + 登录」 =====
	   桌面端它跟在菜单后面并排；小屏放进汉堡菜单里，排在最前面。
	   ★ 只在展开时 display:flex —— 直接给 .navbar-collapse 设 flex
	     会盖掉 bootstrap 的 display:none，菜单永远收不起来。 */
	.navbar-flex .navbar-collapse {
		flex-direction: column;
	}

	/* bootstrap 3 在 ≥768 用 .navbar-collapse.collapse{display:block!important}
	   把菜单钉死为常显（它默认的展开断点就是 768）。单条栏的断点是 1200，
	   所以这里必须用同权重的 !important 覆盖回来，放在 app.css 末尾天然靠后取胜。 */
	.navbar-flex .navbar-collapse.collapse {
		display: none !important;
	}

	.navbar-flex .navbar-collapse.collapse.in,
	.navbar-flex .navbar-collapse.collapsing,
	.navbar-flex .navbar-collapse.show {
		display: flex !important;
	}

	.head-side {
		order: -1;
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
		margin: 0;
		padding: 12px 15px 14px;
		border-left: none;
		border-bottom: 1px solid #eef2f6;
	}

	.head-info {
		justify-content: center;
		flex-wrap: wrap;
		gap: 4px 14px;
	}

	/* 语言开关：移动端不做浮层 —— 简/繁/EN 三项平铺在信息行里，展开菜单就能直接切 */
	.hb-lang-btn {
		display: none;
	}

	.hb-lang-menu {
		display: flex;
		position: static;
		gap: 4px;
		min-width: 0;
		padding: 0;
		border: none;
		background: transparent;
		box-shadow: none;
	}

	/* 桌面端点开过浮层会留下 .open（display:block，特异性比上面这条高）——
	   窗口缩到手机宽度时那三个药丸会竖着堆成 104px 高。这里用同权重 + 靠后覆盖回来。 */
	.hb-lang-menu.open {
		display: flex;
	}

	.hb-lang-menu a {
		padding: 7px 14px;   /* 触控目标别太小：手机上是靠手指点的（≈33px 高） */
		border: 1px solid #dbe3ec;
		border-radius: 20px;
		background: #fff;
	}

	.hb-lang-menu a.cur {
		background: #eaf4fb;
		border-color: #bfd9ec;
	}

	/* 邮箱在页脚里也有，手机上省掉，信息行才能收成一行 */
	.head-info .hb-item-mail {
		display: none;
	}

	/* 语言开关：DOM 里它挂在 .head-user 之后（桌面端要它在最右角），
	   手机端在这里排回「在线人数」下面、「登录」上面，居中一行药丸 */
	.head-side > .hb-lang {
		align-self: center;
	}

	.head-side > .head-user {
		order: 1;
	}

	.head-user {
		justify-content: center;
		width: 100%;
	}

	/* 身份块在窄屏独占一行、整块居中（头像 + 名字/GC 两行）；
	   账户/登出 并排落在下一行，免得挤在一起最后一个按钮被孤零零换行 */
	.hb-hello {
		flex: 1 1 100%;
		max-width: 100%;
		justify-content: center;
		text-align: center;
	}

	/* 登录表单就地铺开，不再浮层 */
	.hb-login-panel {
		position: static;
		width: 100%;
		margin-top: 10px;
		padding: 12px;
		background: #f7fafc;
		border: 1px solid #e9edf2;
		border-radius: 10px;
		box-shadow: none;
	}

	.hb-login {
		flex-direction: row;
		flex-wrap: wrap;
		width: 100%;
		gap: 8px;
	}

	.hb-field {
		flex: 1 1 130px;
		min-width: 0;
		height: 36px;
		padding: 0 11px;
	}

	.hb-field input {
		width: 100%;
		min-width: 0;
	}

	.hb-btn {
		height: 36px;
		padding: 0 14px;
		flex: none;
	}

	/* ===== 页脚 ===== */
	.w3l_footer {
		padding: 24px 0 0;
	}

	.ft-grids {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.ft-card {
		padding: 14px 16px;
	}

	.ft-icon {
		width: 40px;
		height: 40px;
		border-radius: 11px;
		font-size: 16px;
	}

	.ft-pos {
		margin-top: 20px;
		padding: 14px 0 18px;
	}

	.ft-pos p {
		font-size: 11.5px;
	}
}

/* =========================================================
   首页：海报 + 页脚同屏，不用滚动
   原来海报按 4:3 铺满宽度（1600 宽时高 1189px），把页脚整个挤到屏幕外面，
   必须滚一屏才看得到页脚。
   现在首页整页做成一屏弹性布局：海报吃掉「页脚之外的剩余高度」，
   图片按 contain 等比缩放 —— 整张海报完整可见，页脚也在首屏里。
   两侧/上下的留白用 #0d1631（海报自身四边的实测底色，与页脚深靛蓝同色）。
   ========================================================= */
body:has(.banner) {
	display: flex;
	flex-direction: column;
	/* 必须是「确定高度」而不是 min-height：min-height 只是下限，
	   内容一旦更高就会把整页顶高（海报又撑回原尺寸）。
	   高度钉死成一屏，海报那条 flex 链才会真正被压缩。 */
	height: 100vh;
	height: 100dvh;
}

body:has(.banner) > .navbar-sticky,
body:has(.banner) > .w3l_footer {
	flex: none;
}

body:has(.banner) .banner {
	flex: 1 1 auto;
	min-height: 0;
	background: #0d1631;
	display: flex;
}

body:has(.banner) .banner > .slider {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 0;
	display: flex;
}

body:has(.banner) .callbacks_container {
	float: none;
	height: 100%;
	width: 100%;
	/* 它是弹性子项，min-height 默认 auto = 内容高度，会把整条链撑回图片原高 */
	min-height: 0;
}

.banner .rslides,
.banner .rslides > li,
.banner .slider-img {
	height: 100%;
}

.banner .rslides li {
	float: none;
}

.banner .slider-img {
	position: relative;
	line-height: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.banner .rslides img,
.banner .slider-img img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	max-height: none;
	min-height: 0;
	margin: 0;
	object-fit: contain;
}

.banner .slider-info {
	top: 0;
	left: 0;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

/* 图上压字，加一层阴影保证浅色画面也读得清 */
.banner .slider-info h4,
.banner .slider-info p {
	text-shadow: 0 2px 16px rgba(8, 20, 44, 0.6), 0 1px 3px rgba(8, 20, 44, 0.55);
}

.banner .slider-info h4 {
	margin: 0;
}

.banner .slider-info p {
	margin: 14px 0 26px;
}

@media (max-width: 767px) {
	.banner .slider-info h4 {
		font-size: 1.9em;
		letter-spacing: 3px;
	}

	.banner .slider-info p {
		font-size: .9em;
		letter-spacing: 4px;
		margin: 10px 0 20px;
	}
}

/* =========================================================
   认证页换肤 (2026-10-01 第三轮): 登录 / 注册 / 改密 / 找回账户
   ★ 作用域 = .auth-shell, 只加在这 5 个认证文件的容器上:
       inc/account_login.php · login2.php · register.php
       · resetpassword.php · check_account.php
     另有十几个页面也用 .mail / .w3l_head / .w3ls_head_para
     (download-* / about / 404 / photo …), 它们不带 .auth-shell, 完全不受影响。
   ★ 必须放在文件最后: 要压过 .mail 的 padding 与老模板的媒体查询
     (同优先级下靠源码顺序取胜, 同 6396 行那段顶栏/页脚适配的约定)。
   ========================================================= */
.auth-shell {
	padding: 2.6em 0 3.2em;
	/* 底色不在这里给: 有些页面 (如 shop.php) 把登录框套在自己的深色区块里,
	   区块内再铺一块浅色会像"画中画"。页面底色统一交给下面的 body 规则。 */
}

/* 表单变成居中白卡片 (与图鉴/任务页同一套卡片语言)
   ★ 用 .mail.auth-shell 两级 class: 有些页面 (如 account.php) 自己写了
     `.xxx-page .container { max-width: 1200px }` 的页内样式, 而页内 <style>
     在 app.css 之后、同权重会压过这里, 所以必须比它高一档。 */
.mail.auth-shell > .container {
	max-width: 440px;
	margin: 0 auto;
	padding: 32px 30px 26px;
	background: #fff;
	border-radius: 16px;
	box-shadow: 0 10px 34px rgba(26, 36, 80, .10);
}

.auth-shell .w3l_head {
	font-size: 1.45em;
	letter-spacing: 3px;
	color: #1a2450;
}

.auth-shell .w3ls_head_para {
	margin-top: 7px;
	font-size: 12px;
	letter-spacing: 1.5px;
	color: #97a3b0;
}

/* 表单区: 主表单占满一行, 底下三个次要入口并排一行 */
.auth-shell .w3_mail_grids {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 22px;
}

.auth-shell .w3_mail_grids > form {
	flex: 1 1 100%;
	min-width: 0;
}

/* 老模板是两列 (col-md-6) 的栅格, 卡片里一律单列 */
.auth-shell .form_settings > div {
	float: none;
	width: 100%;
	padding: 0;
}

.auth-shell .w3_mail_grids label {
	display: block;
	margin: 14px 0 6px;
	font-size: 12px;
	font-weight: 600;
	color: #7b8894;
}

.auth-shell .w3_mail_grids label:first-child {
	margin-top: 0;
}

.auth-shell .input.input--ichiro {
	display: block;
	margin-top: 14px;
}

.auth-shell .input__field {
	padding: 12px 13px;
	background: #fbfcfe;
	border-radius: 8px;
	font-weight: 500;
}

/* 主按钮: 通栏主色 (黑 #111 → #2f6fa8 见文件中部那两条基础规则) */
.auth-shell .w3_mail_grids > form .submit,
.auth-shell .w3_mail_grids > form input[type="submit"] {
	width: 100%;
	min-height: 46px;
	margin-top: 22px;
	padding: 0.85em;
	border: none;
	border-radius: 8px;
	background: #2f6fa8;
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 2px;
	cursor: pointer;
	transition: background .15s ease;
}

.auth-shell .w3_mail_grids > form .submit:hover,
.auth-shell .w3_mail_grids > form input[type="submit"]:hover {
	background: #275c8d;
}

/* 次要入口 (登录框下方的 注册 / 找回密码 / 找回账户): 描边小按钮, 不再是三条通栏黑条 */
.auth-shell .w3_mail_grids > .submit {
	flex: 1 1 0;
	width: auto;
	min-width: 0;
	margin-top: 0;
	padding: 10px 6px;
	border: 1px solid #cfe2f0;
	border-radius: 8px;
	background: #fff;
	color: #2f6fa8;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 1px;
	cursor: pointer;
	transition: background .15s ease, border-color .15s ease;
}

.auth-shell .w3_mail_grids > .submit:hover {
	background: #eef4f9;
	border-color: #a9c9e2;
	color: #2f6fa8;
}

/* 登录失败提示 (class 由 inc/account_login.php 显式给出) */
.auth-shell .auth-err p {
	margin: 0;
	color: #c0392b;
	font-size: 13px;
	line-height: 1.9;
}

/* 注册/改密/找回 的结果与报错块 */
.auth-shell .input--ichiro {
	font-size: 13px;
	line-height: 1.9;
	color: #34495e;
}

.auth-shell .input--ichiro h2 {
	margin: 0 0 6px;
	font-size: 1.1em;
	color: #1d7a6f;
}

.auth-shell .w3_mail_grids img {
	border: 1px solid #e4e9ee;
	border-radius: 8px;
}

@media (max-width: 720px) {
	.auth-shell {
		padding: 1.6em 0 2.2em;
	}

	.mail.auth-shell > .container {
		padding: 24px 18px 20px;
		border-radius: 14px;
	}

	.auth-shell .w3l_head {
		font-size: 1.3em;
	}
}

/* 认证页/账户页的页面底色 + 页脚以下不留白条 (与首页 body:has(.banner) 同一套路):
   html 给页脚底色 -> 页面比窗口矮时, 页脚下面的留白自然延续成页脚色;
   body 给浅色渐变 -> 正文底色 (只在 body 盒内绘制, 盖不到页脚以下的画布)。
   ★ 必须 html/body 分开给: app.css 开头是 `html, body { background: #ffffff }`,
     而画布底色取自 html, 只改 body 的话页脚以下仍是白的。 */
html:has(.auth-shell),
html:has(.account-page) {
	background: #0d1633;
}

body:has(.auth-shell),
body:has(.account-page) {
	background: linear-gradient(180deg, #f4f6fb 0%, #e9eef7 100%);
}

/* =========================================================
   自助页 (名字修改 / 名字改色 / 卡号自救) 复用同一套卡片控件
   这三个页面也是 .mail > .container 结构 + 登录门禁, 加上 .auth-shell
   就自动吃到上面的卡片壳 / 页面底色 / 页脚衔接; 卡片宽度用 .wide 放宽
   (改色页要横着排 4 组 RGBA, 自救页是 6 列表格)。
   ★ 这里的裸元素选择器 (label/select/input/button) 只作用于 .auth-shell 内,
     认证页的输入框因为更具体 (.input__field / .w3_mail_grids > form .submit) 不受影响;
     已经带 .input__field 的输入框用 :not() 排掉, 免得 1px 的 padding 打架。
   ========================================================= */
.mail.auth-shell.wide > .container {
	max-width: 720px;
}

.auth-shell h1 {
	margin: 0 0 6px;
	font-size: 1.45em;
	font-weight: bold;
	letter-spacing: 3px;
	color: #1a2450;
	text-align: center;
}

.auth-shell label {
	display: block;
	margin: 16px 0 6px;
	font-size: 12px;
	font-weight: 600;
	color: #7b8894;
}

.auth-shell select,
.auth-shell input[type="number"],
.auth-shell input[type="text"]:not(.input__field),
.auth-shell input[type="password"]:not(.input__field),
.auth-shell input[type="email"]:not(.input__field) {
	display: block;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: 11px 12px;
	border: 1px solid #d8dee5;
	border-radius: 8px;
	background: #fbfcfe;
	color: #34495e;
	font-family: inherit;
	font-size: 14px;
}

.auth-shell select {
	cursor: pointer;
}

.auth-shell input[type="color"] {
	display: block;
	width: 100%;
	height: 36px;
	margin-top: 8px;   /* 与上面的数字输入留出一档间距 */
	padding: 3px;
	border: 1px solid #d8dee5;
	border-radius: 8px;
	background: #fff;
	cursor: pointer;
}

.auth-shell select:focus,
.auth-shell input:focus:not([type="submit"]) {
	outline: none;
	border-color: #7fb3d5;
	box-shadow: 0 0 0 3px rgba(127,179,213,.18);
	background: #fff;
}

/* 主操作按钮 */
.auth-shell button,
.auth-shell form input[type="submit"] {
	display: block;
	width: 100%;
	min-height: 46px;
	margin-top: 22px;
	padding: 0.85em;
	border: none;
	border-radius: 8px;
	background: #2f6fa8;
	color: #fff;
	font-family: inherit;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 2px;
	cursor: pointer;
	transition: background .15s ease;
}

.auth-shell button:hover,
.auth-shell form input[type="submit"]:hover {
	background: #275c8d;
}

/* 次要按钮 (卡号自救的"刷新") */
.auth-shell input[type="submit"].auth-btn-ghost {
	display: inline-block;
	width: auto;
	min-height: 36px;
	margin-top: 0;
	padding: 7px 18px;
	border: 1px solid #cfe2f0;
	border-radius: 8px;
	background: #fff;
	color: #2f6fa8;
	font-size: 13px;
	letter-spacing: 1px;
}

.auth-shell input[type="submit"].auth-btn-ghost:hover {
	background: #eef4f9;
	border-color: #a9c9e2;
	color: #2f6fa8;
}

/* 说明条 (改名卡数量) */
.auth-shell .auth-note {
	margin: 12px 0 4px;
	padding: 10px 14px;
	border: 1px solid #cfe2f0;
	border-radius: 10px;
	background: #e8f1f8;
	color: #23517a;
	font-size: 13px;
	line-height: 1.8;
}

/* 在线角色名单表 (卡号自救) */
.auth-shell .character-table {
	width: 100%;
	margin: 18px 0 0;
	border-collapse: collapse;
	font-size: 13px;
	color: #34495e;
}

.auth-shell .character-table th,
.auth-shell .character-table td {
	padding: 10px 12px;
	border-bottom: 1px solid #f0f3f6;
	text-align: center;
}

.auth-shell .character-table th {
	border-bottom: 1px solid #e4e9ee;
	background: #f0f4f8;
	color: #2c3e50;
	font-size: 12px;
	font-weight: bold;
	white-space: nowrap;
}

.auth-shell .character-table tr:hover td {
	background: #f7fafc;
}

/* 表格里的"踢下线"是小号危险按钮, 不做通栏主色 */
.auth-shell .character-table input[type="submit"] {
	display: inline-block;
	width: auto;
	min-height: 0;
	margin: 0;
	padding: 6px 14px;
	border: 1px solid #f3cdca;
	border-radius: 7px;
	background: #fdecec;
	color: #c0392b;
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 0;
}

.auth-shell .character-table input[type="submit"]:hover {
	background: #c0392b;
	border-color: #c0392b;
	color: #fff;
}

@media (max-width: 720px) {
	.auth-shell .character-table th,
	.auth-shell .character-table td {
		padding: 8px 9px;
		font-size: 12.5px;
	}
}

/* ==========================================================================
   ★★ SweetAlert2 层级（全站反馈弹窗）—— 必须压过站内**所有**浮层 ★★
   默认只有 z-index:1060，而站内比它高的有一堆：
     相册 lightGallery 99999 / 论坛灯箱 30000 / 卡牌 3D 弹层 9999 / 英雄榜弹窗 9990 /
     #popup 10000 / 节日面板 1300 …
   ⇒ 在这些浮层里触发的弹窗（最典型：卡册弹层里点「分解重复卡」的确认框）会渲染在浮层**背后**：
     框看不见、但 body 已经被 swal2-shown 锁了滚动 —— 玩家看到的是"点了没反应 / 页面卡住"。
   实测判据（可复跑）：弹窗打开时 document.elementFromPoint(弹窗中心) 应命中 .swal2-*，
   而不是 iframe.mb-arm-frame / .tc-modal / .mb-lightbox。
   ★改这里的值之前：先 grep 全站 z-index，确认没有比它更高的浮层（lightGallery 是 99999）。
   ========================================================================== */
.swal2-container { z-index: 100000 !important; }

/* =========================================================
   高分辨率弹窗缩放 (2026-10-20) —— 2K/4K 上弹窗字号太小
   ---------------------------------------------------------
   只作用于**弹窗根节点**（fixed 全屏遮罩 / 原生 dialog）；
   用 zoom 而不是 transform：zoom 参与布局 ⇒ flex/百分比居中的弹窗缩放后
   仍然居中、遮罩仍然铺满视口，内容超出时照旧由各自容器滚动。
   分档与物品详情弹窗一致（css/item_codex.css 的 --codex-fs）。
   ★ 物品详情弹窗 (.codex-info) 自带一套，别把 .codex-modal 加进来（会叠加两次）。
   ========================================================= */
@media (min-width: 1600px) { :root { --ui-fs: 1.06; } }
@media (min-width: 1900px) { :root { --ui-fs: 1.16; } }
@media (min-width: 2300px) { :root { --ui-fs: 1.32; } }
@media (min-width: 3100px) { :root { --ui-fs: 1.55; } }

@media (min-width: 1600px) {
    .swal2-container,      /* SweetAlert2: 全站确认/提示 */
    .modal,                /* 站内弹窗 (页脚图片预览 / shop_donate) */
    .uie-modal,            /* GM 物品数据工作台 */
    .tc-modal,             /* 集换卡 3D 观赏弹层 */
    .ar-hm,                /* 卡牌竞技场 · 场次列表 */
    .vd-modal,             /* 视频广场播放 */
    .qa-modal-mask,        /* 任务管理 */
    .nc-modal-mask,        /* NPC 图鉴详情 */
    .mc-modal-mask,        /* 怪物图鉴详情 */
    .oc-modal-mask,        /* 场景物件图鉴详情 */
    .lta-modal-bg,         /* 抽奖活动弹窗 */
    .gpa-modal,            /* 公会权限管理 */
    .mb-arm,               /* 全站英雄榜角色弹窗 */
    .psu-secure-dialog {   /* 兑换/物资终端 (原生 <dialog>) */
        zoom: var(--ui-fs);
    }
    /* ⚠ 全屏"仪式/舞台/编辑器"类不缩放：开包仪式 (.cp-veil) / 开箱舞台 (.lt-case-veil) /
       地图素材库 (.mpe-ov) 都是按屏幕像素做交互的整屏场，zoom 会让点击坐标与画面对不上。 */

    /* ★ 上面这些面板原本用 vh 限高/限宽。zoom 只放大像素，**不会**折算 vh/vw
       ⇒ 100vh-32 这类限高放大后会顶出屏幕（实测怪物图鉴弹窗 1859px 高、顶端跑出视口外，
       标题和关闭按钮都点不到）。这里把限高改成相对遮罩的百分比，或把 vh 项除以 --ui-fs。 */
    .mc-modal { max-height: calc(100% - 28px) !important; }
    .nc-modal { max-height: calc(100% - 32px) !important; }
    .oc-modal { max-height: calc(100% - 24px) !important; }
    .uie-modal-box { max-height: calc(100% - 16px) !important; }
    .ar-hmbox { max-height: calc(100% - 8px) !important; }
    .qa-modal-body { max-height: calc((100vh - 135px) / var(--ui-fs)) !important; }
    .mb-arm-box { height: min(calc((100vh - 40px) / var(--ui-fs)), 920px) !important; }
    .psu-secure-dialog { max-height: calc((100vh - 40px) / var(--ui-fs)) !important; }
    .vd-term {
        max-height: calc((100vh - 48px) / var(--ui-fs)) !important;
        width: min(1040px, calc((100vw - 32px) / var(--ui-fs)), calc(((100vh - 250px) / var(--ui-fs)) * 1.778)) !important;
    }

    /* 3D 全屏覆盖层里的控制件也放大（画布本身按屏幕铺满，不受影响）：
       页签 / 标题 / 职业片 / 动作片 / 退出按钮 —— 2K 上 11px 的按钮太小，容易点不中 */
    .i3d-fs .i3d-fs-close,
    .i3d-fs .ci-sec-title,
    .i3d-fs .i3d-tabs,
    .i3d-fs .ci-cls-row,
    .i3d-fs .ci-act-row { zoom: var(--ui-fs); }
}
