/*
 * 主题自定义样式。
 *
 * 为什么单独一个文件：assets/css/main.css 是从原 bundle 逐字节提取的，
 * 与原稿完全一致（有脚本校验）。改动写在这里，两边互不干扰，
 * 将来重新提取 main.css 也不会覆盖这些。
 *
 * 加载顺序在 main.css 之后，所以同优先级的规则这里生效。
 *
 * 目录：
 *   1. 产品 tab 面板
 *   2. 数量加减器
 *   3. 询价车角标
 *   4. 侧栏筛选（PC 端选中态重做 + 手机端折叠侧栏）
 */

/* =========================================================================
 * 0a. iOS 的默认描边
 *
 * iOS Safari 点任何链接/按钮都会闪一个灰蓝色半透明方块
 * （-webkit-tap-highlight-color 的默认值）。原稿是 React 演示，
 * 没人在真 iPhone 上点过，所以一直没处理。
 *
 * 注意不要顺手把 :focus 的轮廓也干掉 —— 那是键盘用户唯一的定位手段。
 * 这里只关点击时的高亮方块。
 * ====================================================================== */

html {
	-webkit-tap-highlight-color: transparent;
}

/* 不动 button 的 appearance —— 原稿每个按钮都有自己的 background /
 * border / border-radius，iOS 的默认外观早被盖住了。
 * 加 appearance:none 是多余的，还有把原稿样式弄坏的风险。
 */

/* =========================================================================
 * 0b. iOS 的毛玻璃
 *
 * Safari 直到 18（2024-09）才认无前缀的 backdrop-filter，此前必须写
 * -webkit-backdrop-filter。main.css 里 4 处一个前缀都没有 —— 原稿是
 * React 演示，没在真 iPhone 上跑过。
 *
 * 四处底下都垫了半透明纯色，所以在旧 iOS 上的降级是「只是没有模糊」，
 * 不会破版。但第一条是移动端导航抽屉的遮罩，属高频路径，值得补。
 *
 * main.css 要与原 bundle 逐字节一致，不能动，所以补在这里。
 *
 * ⚠ 取值必须与 main.css 保持同步。将来重新提取 main.css 后核对一次：
 *     grep -n 'backdrop-filter' assets/css/main.css
 * ====================================================================== */

.overlay_662cf3 {
	/* main.css:685 —— 移动端抽屉遮罩 */
	-webkit-backdrop-filter: blur(2px);
}

.badge_54cea2 {
	/* main.css:3001 */
	-webkit-backdrop-filter: blur(4px);
}

.qualityBadge_05898b {
	/* main.css:3576 —— 首屏质量徽标 */
	-webkit-backdrop-filter: blur(4px);
}

.stat_05898b {
	/* main.css:3615 —— 首屏统计块 */
	-webkit-backdrop-filter: blur(6px);
}

/* =========================================================================
 * 0. 手机端溢出兜底
 *
 * 原稿有几处固定宽度的网格，在窄屏上撑破视口、导致整页能横向拖动：
 *   .rRow_296a10  (ProductDetail 相关产品)  150px 1fr 130px 128px = 408px
 *   .row_c0977b   (SearchResults 结果行)    140px 1fr 200px 128px = 468px
 * 原稿是 React 演示，没人在真手机上翻过，所以一直没暴露。
 *
 * 这里给全站兜底：任何东西都不许超出视口宽度。
 * 长的目录号（RK-APRO-125I）和邮箱地址也在这里断行。
 * ====================================================================== */

html,
body {
	overflow-x: hidden;
	max-width: 100%;
}

@media (max-width: 640px) {

	/* 固定列的网格在窄屏改成堆叠 */
	.rRow_296a10,
	.row_c0977b {
		grid-template-columns: 1fr !important;
		gap: 4px;
	}

	/* 表格/网格里的长串（目录号、邮箱）允许断行 */
	.rRow_296a10 span,
	.row_c0977b span,
	.row_eb0795 span,
	.row_eb0795 a {
		overflow-wrap: anywhere;
		word-break: break-word;
	}

	/* 图片一律不许撑破 */
	img {
		max-width: 100%;
		height: auto;
	}
}

/* =========================================================================
 * 1. 产品 tab 面板
 *
 * 不用 [hidden] —— 它的优先级极低（浏览器默认样式），
 * 很容易被组件自身的 display 规则盖掉，导致两个 panel 同时显示。
 * ====================================================================== */

.phoenix-panel-hidden {
	display: none !important;
}

/* =========================================================================
 * 2. 数量加减器
 *
 * 原稿只有一个裸 <input type=number>，手机上点那两个小箭头几乎点不中。
 * 这里做成 [−][ 3 ][+]，触摸目标 40px。
 * ====================================================================== */

.phoenix-qty {
	display: inline-flex;
	align-items: stretch;
	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-sm);
	overflow: hidden;
	background: #fff;
}

.phoenix-qty__btn {
	width: 40px;
	min-height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.15rem;
	line-height: 1;
	color: var(--color-text-muted);
	background: var(--color-gray-50);
	border: 0;
	cursor: pointer;
	user-select: none;
	transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}

.phoenix-qty__btn:hover:not(:disabled) {
	background: var(--color-gray-100);
	color: var(--color-accent);
}

.phoenix-qty__btn:active:not(:disabled) {
	background: var(--color-border);
}

.phoenix-qty__btn:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}

.phoenix-qty__btn:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: -2px;
}

/* 覆盖原 input 的边框/圆角 —— 现在边框由外层容器提供 */
.phoenix-qty .qtyInput_296a10 {
	width: 54px;
	border: 0;
	border-left: 1px solid var(--color-border);
	border-right: 1px solid var(--color-border);
	border-radius: 0;
	padding: 9px 4px;
	font-variant-numeric: tabular-nums;
	-moz-appearance: textfield;
}

/* 去掉浏览器自带的小箭头 —— 已经有 +/- 了 */
.phoenix-qty .qtyInput_296a10::-webkit-outer-spin-button,
.phoenix-qty .qtyInput_296a10::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.phoenix-qty .qtyInput_296a10:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: -2px;
}

/* 「已加入」反馈 */
.addBtn_296a10.phoenix-added {
	background: #1a7f4b;
	border-color: #1a7f4b;
}

/* =========================================================================
 * 3. 询价车角标
 *
 * 原稿 cartDot 是个纯装饰的小圆点（永远显示，不表示数量）。
 * 改成真实件数，0 件时隐藏。
 * ====================================================================== */

.cartDot_662cf3 {
	/* 覆盖原来的 8px 圆点尺寸 */
	top: 2px;
	right: 2px;
	width: auto;
	height: auto;
	min-width: 17px;
	padding: 0 4px;
	border-radius: 9px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.65rem;
	font-weight: 700;
	line-height: 17px;
	color: #fff;
	font-variant-numeric: tabular-nums;
	box-sizing: border-box;
}

/* =========================================================================
 * 4. 侧栏筛选
 * ====================================================================== */

/* ---- 4a. 选中态重做（PC + 手机通用）----
 *
 * 原来是 inset 3px 左侧橙色描边 —— 视觉上像残留的进度条。
 * 改成整块淡橙底 + 左侧圆角条，和右侧内容区的卡片语言一致。
 * 另：原稿两个侧栏的选中态完全不同（分类=橙描边，主题=navy 实底），
 * 统一成同一套。
 */

.railLinkActive_eb0795,
.railLinkActive_8f91be,
.railLinkActive_8f91be:hover,
.railLinkActive_0f5020 {
	position: relative;
	background: var(--color-accent-soft);
	color: var(--color-accent-hover);
	font-weight: 600;
	box-shadow: none; /* 去掉原来的 inset 描边 */
}

.railLinkActive_eb0795::before,
.railLinkActive_8f91be::before,
.railLinkActive_0f5020::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 3px;
	height: 18px;
	border-radius: 0 2px 2px 0;
	background: var(--color-accent);
}

.railLinkActive_eb0795 .count_eb0795,
.railLinkActive_8f91be .count_8f91be,
.railLinkActive_0f5020 .count_0f5020 {
	color: var(--color-accent-hover);
	background: rgba(224, 90, 24, 0.12);
	border-radius: 8px;
	padding: 1px 6px;
	font-weight: 600;
}

/* ---- 4b. 手机端：折叠侧栏 ----
 *
 * 三个侧栏，断点跟原稿走，且各不相同：
 *   分类页 .rail_eb0795  → max-width: 940px
 *   主题页 .rail_8f91be  → max-width: 860px
 *   新闻页 .rail_0f5020  → max-width: 860px
 * （原稿在这些宽度把 layout 塌成单列，抽屉就该在同一刻接管）
 *
 * 布局要点：
 *   - 从 header 下方开始，不是 top:0 —— header 是 sticky，抽屉 top:0
 *     会钻到它底下，看着像凭空浮着的一块
 *   - 一直铺到视口底部，内容自己滚
 *   - 关闭按钮 absolute 定位，不参与 flex 布局（否则会把内容挤上去，
 *     下半截留一大片空白）
 *
 * @media 里不能用 var() 当条件，所以两个断点各写一遍。
 */

:root {
	/* 侧栏三件套的层级。
	 *
	 * main.css 有自己的一套刻度（--z-header:100 / --z-dropdown:120 /
	 * --z-overlay:190 / --z-drawer:200），这三个是它的延伸，别再写魔数 ——
	 * 谁调高了 --z-header 或往中间插一层，得能一眼看见这里。
	 *
	 * 三者刻意**低于** --z-header(100)，这不是疏忽：
	 *   - 抽屉的 top 是 rail.js 实测的 header 底边，两者永不重叠
	 *   - 遮罩虽然 inset:0，但被 header 盖住 —— 抽屉打开时 header 保持
	 *     明亮可点，这跟「抽屉从 header 下沿开始」的设计是自洽的
	 * 和头部自己的抽屉（--z-drawer:200，盖住 header）是两套不同的东西。
	 */
	--z-rail-toggle: 60;
	--z-rail-overlay: 70;
	--z-rail-drawer: 80;

	/* 抽屉顶边 = header 的实际底边。
	 *
	 * 这个值由 rail.js 实测后写进来（syncTop()）—— 不写死是因为组合太多：
	 * header 是 sticky，但上面还有 TopBar（860px 才隐藏），
	 * 而分类页的断点是 940px，所以 861–940px 且没滚动时 header 是被顶下去的；
	 * 再加上登录时的 WP 管理条（32/46px）。与其穷举，不如让 JS 量。
	 *
	 * 这里的 73px 只是 JS 没跑起来时的兜底（= .bar 的 min-height 72 + 1px 边框）。
	 */
	--phoenix-rail-top: 73px;
}

/* 遮罩
 *
 * 不用 display 切换，用 pointer-events + visibility。
 *
 * 之前的写法有个严重 bug：默认 display:none，@media 里 display:block。
 * 结果 940px 以下遮罩一直铺在页面上（inset:0、z-index:70），
 * opacity:0 看不见但照样吃掉所有点击 —— 整个手机端点不了任何东西，
 * 连悬浮按钮（z-index:60）都被盖住。
 *
 * hidden 属性救不了：[hidden]{display:none} 优先级 (0,1,0)，
 * 压不过 media query 里的 (0,2,0)。
 */
.phoenix-rail-overlay {
	position: fixed;
	inset: 0;
	z-index: var(--z-rail-overlay);
	background: rgba(7, 27, 51, 0.45);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.24s var(--ease), visibility 0.24s var(--ease);
}

.phoenix-rail-overlay.is-shown {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

/* 悬浮拉手 —— 贴左边缘 */
.phoenix-rail-toggle {
	display: none;
	position: fixed;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	z-index: var(--z-rail-toggle);
	align-items: center;
	gap: 7px;
	padding: 14px 10px 14px 8px;
	border: 0;
	border-radius: 0 10px 10px 0;
	background: var(--color-primary);
	color: #fff;
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	writing-mode: vertical-rl;
	cursor: pointer;
	box-shadow: 0 3px 16px rgba(7, 27, 51, 0.3);
	transition: opacity var(--dur) var(--ease), background var(--dur) var(--ease);
}

.phoenix-rail-toggle svg {
	writing-mode: horizontal-tb;
}

.phoenix-rail-toggle:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 2px;
}

/* 抽屉开着时把拉手藏掉，别和抽屉打架 */
body.phoenix-rail-open .phoenix-rail-toggle {
	opacity: 0;
	pointer-events: none;
}

/* 关闭按钮 —— absolute，不占 flex 布局 */
.phoenix-rail-close {
	display: none;
	position: absolute;
	top: 10px;
	right: 8px;
	z-index: 2;
	width: 40px;
	height: 40px;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	/* 不给底色 —— 抽屉本身就是浅色，灰圆底显得脏。
	 * 40×40 保证触摸目标够大（WCAG 建议 44，这里靠 padding 补足）。 */
	background: transparent;
	color: var(--color-text-muted);
	cursor: pointer;
	transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}

.phoenix-rail-close:hover {
	color: var(--color-primary);
	background: rgba(10, 35, 64, 0.06);
}

.phoenix-rail-close:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 2px;
}

/* 抽屉容器聚焦时不画环 —— 它是个 <aside>，不是可交互控件。
 *
 * rail.js 打开抽屉时会 rail.focus()（让键盘用户能直接 Tab 到里面的
 * 链接）。iOS Safari 对程序触发的 .focus() 也会画焦点环，
 * 手指点开就看见一圈莫名其妙的橙线。
 *
 * 注意：只去掉容器的，按钮和链接的焦点环必须留着 ——
 * 那是键盘用户唯一的定位手段。
 */
.rail_eb0795:focus,
.rail_8f91be:focus,
.rail_0f5020:focus,
.rail_eb0795:focus-visible,
.rail_8f91be:focus-visible,
.rail_0f5020:focus-visible {
	outline: none;
}

body.phoenix-rail-open {
	overflow: hidden;
}

/* ---- 分类页抽屉 ---- */

@media (max-width: 940px) {

	.rail_eb0795 {
		position: fixed !important;
		top: var(--phoenix-rail-top);
		left: 0;
		bottom: 0;
		z-index: var(--z-rail-drawer);

		/* 贴左边、占满高度，不悬空 */
		width: min(86vw, 330px);
		margin: 0 !important;
		padding: 16px 14px calc(24px + env(safe-area-inset-bottom, 0px));

		background: var(--color-cream);
		border-right: 1px solid var(--color-border);
		box-shadow: 6px 0 32px rgba(7, 27, 51, 0.16);

		/* 内容自己滚，别带着页面滚 */
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;

		/* 覆盖原稿窄屏下的 row/wrap */
		display: flex !important;
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		justify-content: flex-start;
		gap: 20px;

		transform: translateX(-100%);
		transition: transform 0.26s var(--ease);
		visibility: hidden;
	}

	.rail_eb0795.is-open {
		transform: translateX(0);
		visibility: visible;
	}

	.phoenix-rail-toggle[data-phoenix-rail-for="category"] {
		display: flex;
	}

	.rail_eb0795 .phoenix-rail-close {
		display: flex;
	}
}

/* ---- 主题页 / 新闻页抽屉 ---- */

@media (max-width: 860px) {

	.rail_8f91be,
	.rail_0f5020 {
		position: fixed !important;
		top: var(--phoenix-rail-top);
		left: 0;
		bottom: 0;
		z-index: var(--z-rail-drawer);

		width: min(86vw, 330px);
		margin: 0 !important;
		padding: 16px 14px calc(24px + env(safe-area-inset-bottom, 0px));

		background: var(--color-cream);
		border-right: 1px solid var(--color-border);
		box-shadow: 6px 0 32px rgba(7, 27, 51, 0.16);

		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;

		display: flex !important;
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		justify-content: flex-start;
		gap: 20px;

		transform: translateX(-100%);
		transition: transform 0.26s var(--ease);
		visibility: hidden;
	}

	.rail_8f91be.is-open,
	.rail_0f5020.is-open {
		transform: translateX(0);
		visibility: visible;
	}

	.phoenix-rail-toggle[data-phoenix-rail-for="topic"] {
		display: flex;
	}

	.rail_8f91be .phoenix-rail-close,
	.rail_0f5020 .phoenix-rail-close {
		display: flex;
	}
}

/* ---- 抽屉内部（两个断点共用，用 .is-open 限定）---- */

/* 卡片去掉自身底色/边框，融进抽屉 */
.rail_eb0795.is-open .railBox_eb0795,
.rail_8f91be.is-open .railBox_8f91be,
.rail_0f5020.is-open .railBox_0f5020 {
	background: transparent;
	border: 0;
	padding: 0;
}

/* 标题吸顶 —— 列表长的时候还能看见自己在哪一组 */
.rail_eb0795.is-open .railTitle_eb0795,
.rail_8f91be.is-open .railTitle_8f91be,
.rail_0f5020.is-open .railTitle_0f5020 {
	position: sticky;
	top: -16px;
	z-index: 1;
	margin: 0 -14px 2px;
	padding: 6px 14px;
	background: var(--color-cream);
}

/* 第一个标题要给右上角的关闭按钮让位，否则文字会跑到按钮底下 */
.rail_eb0795.is-open .railBox_eb0795:first-child .railTitle_eb0795,
.rail_8f91be.is-open .railBox_8f91be:first-child .railTitle_8f91be,
.rail_0f5020.is-open .railBox_0f5020:first-child .railTitle_0f5020 {
	padding-right: 52px;
}

/* 两组之间的分隔线 */
.rail_eb0795.is-open .railBox_eb0795 + .railBox_eb0795 {
	border-top: 1px solid var(--color-border);
	padding-top: 18px !important;
}

/* 加大触摸目标 */
.rail_eb0795.is-open .railLink_eb0795,
.rail_8f91be.is-open .railLink_8f91be,
.rail_0f5020.is-open .railLink_0f5020 {
	padding: 12px;
	min-height: 46px;
}

/* =========================================================================
 * 5. 询价页的清单
 *
 * 原稿这里只有一段说明文字。现在放真实清单，可改数量、可删除。
 * ====================================================================== */

.phoenix-cart-row {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 0;
	border-bottom: 1px solid var(--color-border);
}

.phoenix-cart-row:last-of-type {
	border-bottom: 0;
}

.phoenix-cart-row__info {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.phoenix-cart-row__info strong {
	font-family: var(--font-mono);
	font-size: 0.8rem;
	color: var(--color-primary);
}

.phoenix-cart-row__info span {
	font-size: 0.8rem;
	color: var(--color-text-muted);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.phoenix-cart-row__qty {
	width: 52px;
	padding: 5px 6px;
	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-sm);
	font-size: 0.85rem;
	text-align: center;
	font-variant-numeric: tabular-nums;
}

.phoenix-cart-row__del {
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--color-text-muted);
	cursor: pointer;
	transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}

.phoenix-cart-row__del:hover {
	background: var(--color-accent-soft);
	color: var(--color-accent);
}

.phoenix-cart-clear {
	margin-top: 12px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--color-text-muted);
	font-size: 0.8rem;
	text-decoration: underline;
	cursor: pointer;
}

.phoenix-cart-clear:hover {
	color: var(--color-accent);
}

/* =========================================================================
 * 6. 手机端细节
 *
 * 原稿是 React 演示，很多地方没在真手机上试过。
 * ====================================================================== */

@media (max-width: 640px) {

	/* 数量加减器：手机上别和 QTY 标签挤在一行 */
	.qtyRow_296a10 {
		flex-wrap: wrap;
	}

	/* 询价页清单：窄屏下把数量和删除挪到第二行 */
	.phoenix-cart-row {
		flex-wrap: wrap;
		gap: 8px;
	}

	.phoenix-cart-row__info {
		flex: 1 1 100%;
	}

	.phoenix-cart-row__qty {
		width: 64px;
		min-height: 40px;
	}

	.phoenix-cart-row__del {
		width: 40px;
		height: 40px;
		margin-left: auto;
	}

	/* 长目录号不许撑破卡片 */
	.phoenix-cart-row__info strong,
	.phoenix-cart-row__info span {
		overflow-wrap: anywhere;
		white-space: normal;
	}

	/* 悬浮按钮在小屏收窄一点，别挡住内容 */
	.phoenix-rail-toggle {
		padding: 10px 9px 10px 7px;
		font-size: 0.68rem;
	}
}

/* 管理条的高度已经算进 --phoenix-rail-top（见第 4b 节），
 * 这里不需要再单独覆盖 top —— 之前那两条写死的 32px/46px 会
 * 盖掉变量，让抽屉重新钻到 header 底下。
 */

/* =========================================================================
 * 7. 单篇文章
 *
 * 原稿没有文章详情页（新闻卡片全是 href="#"）。正文来自 WP 编辑器，
 * 是自由 HTML —— 这里给它套上和 ContentPage 一致的排版。
 * ====================================================================== */

.phoenix-post-hero {
	margin-bottom: 28px;
	border-radius: var(--radius-lg);
	overflow: hidden;
}

.phoenix-post-hero img {
	display: block;
	width: 100%;
	height: auto;
}

.phoenix-post-body > * + * {
	margin-top: 1em;
}

.phoenix-post-body h2 {
	margin-top: 1.6em;
	font-size: 1.35rem;
	color: var(--color-heading);
}

.phoenix-post-body h3 {
	margin-top: 1.4em;
	font-size: 1.1rem;
	color: var(--color-heading);
}

.phoenix-post-body p,
.phoenix-post-body li {
	color: var(--color-text);
	line-height: 1.75;
}

.phoenix-post-body ul,
.phoenix-post-body ol {
	padding-left: 1.3em;
}

.phoenix-post-body li + li {
	margin-top: 0.4em;
}

.phoenix-post-body img {
	max-width: 100%;
	height: auto;
	border-radius: var(--radius);
}

.phoenix-post-body a {
	color: var(--color-accent);
	text-decoration: underline;
}

.phoenix-post-body blockquote {
	margin-left: 0;
	padding-left: 18px;
	border-left: 3px solid var(--color-accent);
	color: var(--color-text-muted);
	font-style: italic;
}

.phoenix-post-body pre {
	overflow-x: auto;
	padding: 14px;
	background: var(--color-gray-50);
	border-radius: var(--radius-sm);
	font-size: 0.85rem;
}

.phoenix-post-body table {
	width: 100%;
	border-collapse: collapse;
	display: block;
	overflow-x: auto;
}

.phoenix-post-body th,
.phoenix-post-body td {
	padding: 8px 10px;
	border: 1px solid var(--color-border);
	text-align: left;
}

.phoenix-post-pages {
	margin-top: 24px;
	font-size: 0.9rem;
}

/* =========================================================================
 * 8. 归档页
 *
 * 分类/标签/作者/日期归档复用新闻列表的版式（NewsListing.*），
 * 这里只补分页的间距。
 * ====================================================================== */

.phoenix-archive-pager {
	padding-bottom: 48px;
}

/* =========================================================================
 * 9. 表单的手机端
 *
 * 原稿的 .row2 到 460px 才拆单列 —— 那个宽度上「INSTITUTION /
 * ORGANIZATION」这种长标签早就被挤成两行了，两个字段一高一低，很难看。
 * 常见手机是 390/414px，正好卡在两列。
 *
 * 另外 iOS 上 font-size < 16px 的输入框会触发自动放大页面，
 * 用户填完表单发现页面歪了 —— 这是 iOS 的既定行为，只能靠字号躲开。
 * ====================================================================== */

@media (max-width: 640px) {

	/* 两列拆单列 —— 原稿的 460px 太晚了 */
	.row2_04055f {
		grid-template-columns: 1fr;
		gap: 16px;
	}

	/* 表单卡片：手机上别浪费两侧空间 */
	.form_04055f {
		padding: 20px 16px;
		gap: 16px;
		border-radius: var(--radius);
	}

	.formTitle_04055f {
		font-size: 1.05rem;
	}

	/* 标签：原稿 0.7rem + 0.12em 字距，长标签在窄屏很难读 */
	.label_04055f {
		font-size: 0.72rem;
		letter-spacing: 0.08em;
		line-height: 1.4;
	}

	/* 输入框：16px 是 iOS 不自动放大的门槛，别再低了 */
	.form_04055f input,
	.form_04055f select,
	.form_04055f textarea {
		font-size: 16px;
		padding: 12px;
		min-height: 46px;
	}

	.form_04055f textarea {
		min-height: 96px;
	}

	/* 勾选框：手机上放大触摸目标 */
	.check_04055f {
		gap: 12px;
		font-size: 0.9rem;
	}

	.check_04055f input {
		width: 20px;
		height: 20px;
		margin-top: 1px;
	}

	/* 提交按钮：手机上占满宽度更好按 */
	.submit_04055f {
		align-self: stretch;
		width: 100%;
		min-height: 50px;
		padding: 14px 20px;
	}

	/* 表单卡片外的说明文字 */
	.sideCard_04055f {
		padding: 18px 16px;
	}
}

/* 联系页的表单是另一套类名（ContactForm.*），同样处理 */
@media (max-width: 640px) {

	.form_a94823 input,
	.form_a94823 select,
	.form_a94823 textarea {
		font-size: 16px;
		padding: 12px;
		min-height: 46px;
	}

	.form_a94823 textarea {
		min-height: 96px;
	}

	.submit_a94823 {
		align-self: stretch;
		width: 100%;
		min-height: 50px;
	}
}

/* =========================================================================
 * 10. 首屏（Hero）
 *
 * 原稿 --fs-hero 是 clamp(2.3rem, 4.7vw, 3.65rem) = 36.8~58.4px。
 * 配原稿那种短标题没问题，但现在的标题有 42 个字符：
 *
 *   "Research Peptides, Antibodies & Assay Kits."
 *
 * 按 Inter Bold 算它需要约 1256px，而右边有张图占掉一半 —— 标题列
 * 只有 583px（桌面）/ 350px（手机）。于是桌面 3-4 行、手机 4 行。
 *
 * 这里按「两行放得下」倒推字号。麻烦的是列宽不是随视口单调变化的：
 *
 *   980px  单列，列宽 940px  ← 最宽松
 *   1200px 两栏，列宽 563px  ← 反而更紧
 *
 * clamp() 是线性的，做不到中间回落，所以两段各写一个。
 *
 * 断行点（自然）：
 *   Research Peptides,
 *   Antibodies & Assay Kits.      ← 24 字符，按这行定字号
 * ====================================================================== */

/* 手机 / 平板：单列，列宽跟着视口走 */
@media (max-width: 980px) {

	.title_05898b {
		font-size: clamp(1.65rem, 6.6vw, 2.6rem);
		line-height: 1.08;
		letter-spacing: -0.018em;
		/* 标点不要单独掉到下一行 */
		text-wrap: balance;
	}
}

/* 桌面：两栏，列宽基本固定在 583px（container 封顶 1200） */
@media (min-width: 981px) {

	.title_05898b {
		font-size: clamp(2.4rem, 3.4vw, 2.95rem);
		line-height: 1.06;
		text-wrap: balance;
	}
}

/* ---- 手机首屏更紧凑 ----
 *
 * 原稿的间距是按桌面调的，手机上首屏基本被标题占满，
 * 副标题和按钮都得滚动才看得到。
 */

@media (max-width: 640px) {

	/* 上下留白砍掉一半 */
	.inner_05898b {
		padding-block: 28px 32px;
		gap: 24px;
	}

	.title_05898b {
		margin-top: 12px;
	}

	.sub_05898b {
		margin-top: 10px;
		font-size: 0.9rem;
	}

	.ctaRow_05898b {
		margin-top: 16px;
		gap: 10px;
	}

	/* 顶部那个 B2B 标签：字太大，占掉一整行 */
	.badge_05898b {
		font-size: 0.62rem;
		letter-spacing: 0.09em;
		padding: 7px 12px;
	}

	/* 副标题上面那句 lead */
	.lead_05898b {
		font-size: 0.98rem;
		margin-top: 10px;
	}

	/* 统计数字条：手机上原稿是横排，挤不下 */
	.stats_05898b {
		gap: 14px;
		margin-top: 22px;
		padding-top: 18px;
	}

	.statValue_05898b {
		font-size: 1.35rem;
	}

	.statLabel_05898b {
		font-size: 0.66rem;
	}
}

/* =========================================================================
 * 11. 团队卡片
 *
 * 原稿：>760px 三列；≤760px 塌成单列，三张卡竖着堆 —— 手机上要滚很久
 * 才能看完，而且每张卡都是 4:5 的大图。
 *
 * 改成：
 *   ≤760px   横向轮播（scroll-snap），一屏一张，手指划
 *   761px+   保持原稿的三列（平板一行显示全部，本来就对）
 *
 * 用原生滚动而不是 JS 轮播：
 *   - 3 张卡不值得引一套 JS
 *   - 原生滚动在手机上手感更好（惯性、回弹都是系统的）
 *   - 键盘/读屏免费支持：它就是个可滚动区域
 *   - JS 挂了也还能用
 * ====================================================================== */

@media (max-width: 760px) {

	.grid_0d9306 {
		/* 覆盖原稿的 grid-template-columns:1fr / max-width:400px */
		display: flex;
		max-width: none;

		gap: 14px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;

		/* 让轮播撑出 .container 的内边距，卡片能滑到屏幕边缘 —— 
		 * 用 var(--container-pad) 而不是写死 16px：原稿这个值是 24px，
		 * 而且它是变量，以后改了这里自动跟着。 */
		padding: 4px var(--container-pad) 16px;
		margin-inline: calc(var(--container-pad) * -1);

		/* snap 的落点要扣掉左内边距，否则每张卡都会偏 */
		scroll-padding-left: var(--container-pad);

		/* 滚动条藏掉 —— 露出的下一张卡就是提示，不需要滚动条 */
		scrollbar-width: none;
	}

	.grid_0d9306::-webkit-scrollbar {
		display: none;
	}

	/* 键盘聚焦到轮播时给个提示 —— 用户要知道现在方向键能滚这里。
	 * 只在轮播模式下画（桌面是普通网格，聚焦画圈很怪）。 */
	.grid_0d9306:focus-visible {
		outline: 2px solid var(--color-accent);
		outline-offset: 4px;
		border-radius: var(--radius);
	}

	.card_0d9306 {
		/* 82% 让下一张露出约 18% —— 这就是「可以横划」的视觉提示，
		 * 不用额外加箭头或圆点。 */
		flex: 0 0 82%;
		max-width: 320px;

		/* start 而不是 center：center 会让第一张也居中、左边空一块，
		 * 反而看不出还有下一张。 */
		scroll-snap-align: start;

		/* 原稿的 hover 位移在触摸屏上没意义，还会让 snap 抖 */
		transform: none !important;
	}

	.card_0d9306:hover {
		transform: none !important;
		box-shadow: none;
	}

	.card_0d9306:hover .photo_0d9306 img {
		transform: none;
	}

	/* 手机上照片矮一点，一屏能看到名字和职位 */
	.photo_0d9306 {
		aspect-ratio: 4 / 3.4;
	}

	.meta_0d9306 {
		padding: 14px 12px 16px;
	}
}

/* 桌面是普通三列网格 —— tabindex 带来的焦点环在这里没意义，去掉。
 * （轮播模式下的焦点环在上面单独给了。）*/
@media (min-width: 761px) {

	.grid_0d9306:focus,
	.grid_0d9306:focus-visible {
		outline: none;
	}
}

/* 只有一个人的时候别做成轮播 */
@media (max-width: 760px) {

	.grid_0d9306:not(:has(.card_0d9306 + .card_0d9306)) {
		display: grid;
		grid-template-columns: 1fr;
		max-width: 400px;
		margin-inline: auto;
		padding: 0;
		overflow: visible;
	}

	.grid_0d9306:not(:has(.card_0d9306 + .card_0d9306)) .card_0d9306 {
		flex: none;
		max-width: none;
	}
}

/* =========================================================================
 * 5. 站点级挂件：悬浮按钮 / 询盘弹窗 / Cookie 同意条
 *
 * 标记见 inc/components/site-widgets.php（挂在 wp_footer）。
 * 交互见 assets/js/consent.js + assets/js/modal.js。
 *
 * 全部用 main.css 已有的设计变量（--color-primary / --color-accent /
 * --radius / --shadow-md / --dur / --ease），不引入新配色 —— 这三个组件是
 * 后加的，但不该看出来是后加的。
 * ====================================================================== */

:root {
	/* 三个挂件的层级，接进 main.css 的刻度：
	 *   --z-header:100  --z-dropdown:120  --z-overlay:190  --z-drawer:200
	 * 以及 2.3.6 给侧栏定的：
	 *   --z-rail-toggle:60  --z-rail-overlay:70  --z-rail-drawer:80
	 *
	 * 排位的理由，逐个说：
	 *
	 *  - 悬浮按钮 65：**刻意压在侧栏遮罩(70)之下**。分类页的侧栏抽屉一拉开，
	 *    遮罩就该把它一起压暗、点不动 —— 否则抽屉开着还能点到 WhatsApp，
	 *    和抽屉自己把拉手藏起来的逻辑自相矛盾。
	 *    （几何上不与 header 冲突：一个贴顶、一个贴右下。）
	 *
	 *  - Cookie 条 150：高于 header(100) 和下拉(120) —— 法务提示不该被任何
	 *    常规 UI 盖住。但低于导航遮罩(190)，手机菜单拉开时它让位。
	 *
	 *  - 弹窗 210/220：**全站最高**，高于导航抽屉(200)。它是模态，
	 *    遮罩必须盖住 header（对照：侧栏抽屉的遮罩刻意不盖 header，
	 *    因为那个不是模态）。
	 */
	--z-fab: 65;
	--z-cookie: 150;
	--z-modal-bg: 210;
	--z-modal-box: 220;

	/* 同意条显示时，悬浮按钮要往上让。高度由 consent.js 实测写入
	 * （文案会换行，手机上能到三行，写死必错 —— 和 rail.js 的 syncTop() 同理）。 */
	--phoenix-fab-lift: 0px;
}

/* ---- 5a. 悬浮按钮（右下角）---- */

.phoenix-fab {
	position: fixed;
	right: 16px;
	bottom: calc(16px + env(safe-area-inset-bottom, 0px));
	z-index: var(--z-fab);

	display: flex;
	flex-direction: column;
	gap: 10px;

	/* 同意条弹出时整体上移，让开它 */
	transform: translateY(calc(-1 * var(--phoenix-fab-lift)));
	transition: transform 0.26s var(--ease);
}

/* 侧栏抽屉打开时收起 —— 和 .phoenix-rail-toggle 一个待遇。
 * 光靠 z-index 压在遮罩下只是「点不到」，视觉上还杵在那儿。 */
body.phoenix-rail-open .phoenix-fab {
	opacity: 0;
	pointer-events: none;
}

.phoenix-fab__b {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;

	width: 52px;
	height: 52px;
	border-radius: var(--radius-pill);

	color: #fff;
	box-shadow: var(--shadow-md);
	transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease),
		background var(--dur) var(--ease);
}

.phoenix-fab__b svg {
	width: 25px;
	height: 25px;
}

.phoenix-fab__b--wa {
	/* WhatsApp 官方绿 —— 这个不跟主题配色走。用户认的是这个颜色，
	   换成品牌橙反而让人认不出来。 */
	background: #25d366;
}

.phoenix-fab__b--wa:hover {
	background: #1eb855;
}

.phoenix-fab__b--mail {
	background: var(--color-primary);
}

.phoenix-fab__b--mail:hover {
	background: var(--color-primary-2);
}

.phoenix-fab__b:hover {
	transform: translateY(-2px);
	box-shadow: var(--shadow-lg);
}

.phoenix-fab__b:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 3px;
}

/* 悬停时从按钮左侧滑出的文字标签。
 * 默认不占位（absolute），否则会把按钮挤歪。 */
.phoenix-fab__t {
	position: absolute;
	right: calc(100% + 10px);
	top: 50%;
	transform: translateY(-50%) translateX(6px);

	padding: 6px 11px;
	border-radius: var(--radius-sm);
	background: var(--color-primary-dark);
	color: #fff;
	font-size: 0.78rem;
	font-weight: 600;
	white-space: nowrap;

	opacity: 0;
	pointer-events: none;
	transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
}

.phoenix-fab__b:hover .phoenix-fab__t,
.phoenix-fab__b:focus-visible .phoenix-fab__t {
	opacity: 1;
	transform: translateY(-50%) translateX(0);
}

/* 手机上不显示标签 —— 没有 hover，它只会在点击的一瞬间闪一下。
 * 按钮有 aria-label，读屏没问题。 */
@media (max-width: 640px) {

	.phoenix-fab {
		right: 12px;
		bottom: calc(12px + env(safe-area-inset-bottom, 0px));
	}

	.phoenix-fab__b {
		width: 48px;
		height: 48px;
	}

	.phoenix-fab__t {
		display: none;
	}
}

/* ---- 5b. 询盘弹窗 ---- */

.phoenix-modal__bg {
	position: fixed;
	inset: 0;
	z-index: var(--z-modal-bg);

	background: rgba(7, 20, 35, 0.55);
	-webkit-backdrop-filter: blur(3px);   /* Safari 18 之前只认前缀，见 0b 节 */
	backdrop-filter: blur(3px);

	/* 关着的时候绝不能吃点击。
	 *
	 * 这是 2.3.1 那个 bug 的教训：遮罩 position:fixed + inset:0，
	 * 只靠 opacity:0 藏起来的话，它照样铺在整页上吃掉所有点击 ——
	 * 而且 CSS 不报错、JS 不报错，只有真机上点一下才知道。
	 * pointer-events + visibility 双保险，别改成 display 切换。 */
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.24s var(--ease), visibility 0.24s var(--ease);
}

.phoenix-modal.is-open .phoenix-modal__bg {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

.phoenix-modal__box {
	position: fixed;
	z-index: var(--z-modal-box);
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%) scale(0.97);

	width: min(560px, calc(100vw - 32px));
	max-height: min(88vh, 760px);
	overflow-y: auto;
	overscroll-behavior: contain;

	background: var(--color-bg);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);

	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.24s var(--ease), transform 0.24s var(--ease),
		visibility 0.24s var(--ease);
}

.phoenix-modal.is-open .phoenix-modal__box {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translate(-50%, -50%) scale(1);
}

/* 容器不是可交互控件，不画焦点环 —— 但 JS 要 focus 它（见 modal.js：
   聚焦第一个输入框会让 iOS 立刻弹键盘，把弹窗顶得只剩一条）。 */
.phoenix-modal__box:focus,
.phoenix-modal__box:focus-visible {
	outline: none;
}

.phoenix-modal__x {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 2;

	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;

	border: 0;
	border-radius: var(--radius-pill);
	background: transparent;
	color: var(--color-text-on-navy-muted);
	cursor: pointer;
	transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}

.phoenix-modal__x svg {
	width: 18px;
	height: 18px;
}

.phoenix-modal__x:hover {
	color: #fff;
	background: rgba(255, 255, 255, 0.12);
}

.phoenix-modal__x:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 2px;
}

/* 头部用主题的深蓝，和 PageHead 的 navy 变体一个调子 */
.phoenix-modal__head {
	padding: 26px 28px 22px;
	background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-2) 100%);
	color: #fff;
}

.phoenix-modal__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin-bottom: 10px;

	font-size: var(--fs-eyebrow);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-accent);
}

.phoenix-modal__eyebrow::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-accent);
}

.phoenix-modal__head h2 {
	margin: 0 0 8px;
	font-family: var(--font-display);
	font-size: clamp(1.35rem, 2.6vw, 1.7rem);
	line-height: var(--lh-heading);
	font-weight: 700;
	color: #fff;
}

.phoenix-modal__head p {
	margin: 0;
	font-size: var(--fs-small);
	line-height: 1.55;
	color: var(--color-text-on-navy-muted);
}

.phoenix-modal__body {
	padding: 22px 28px 26px;
}

.phoenix-modal__form {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.phoenix-modal__row2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}

.phoenix-modal__f {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.phoenix-modal__f > span {
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-text-muted);
}

.phoenix-modal__f input,
.phoenix-modal__f textarea {
	width: 100%;
	padding: 11px 13px;

	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-sm);
	background: var(--color-bg);

	font-family: var(--font-body);
	/* 16px 是硬底线 —— iOS 上小于 16px 的输入框一聚焦就自动放大整页。
	   2.3.1 在表单上踩过，这里不能重蹈。 */
	font-size: 16px;
	color: var(--color-text);
	transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}

.phoenix-modal__f textarea {
	resize: vertical;
	min-height: 96px;
}

.phoenix-modal__f input:focus,
.phoenix-modal__f textarea:focus {
	outline: none;
	border-color: var(--color-accent);
	box-shadow: 0 0 0 3px var(--color-accent-soft);
}

.phoenix-modal__submit {
	margin-top: 4px;
	padding: 14px 22px;

	border: 0;
	border-radius: var(--radius-sm);
	background: var(--color-accent);
	color: #fff;

	font-family: var(--font-body);
	font-size: 0.94rem;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--dur) var(--ease), transform var(--dur) var(--ease);
}

.phoenix-modal__submit:hover {
	background: var(--color-accent-hover);
}

.phoenix-modal__submit:active {
	transform: translateY(1px);
}

.phoenix-modal__submit:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

.phoenix-modal__alt {
	margin: 2px 0 0;
	text-align: center;
	font-size: var(--fs-small);
	color: var(--color-text-muted);
}

.phoenix-modal__alt a {
	color: var(--color-accent);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}

@media (max-width: 640px) {

	.phoenix-modal__box {
		/* 手机上贴底，像原生 sheet。居中会在键盘弹出时被顶得很难看。 */
		top: auto;
		bottom: 0;
		left: 0;
		transform: translate(0, 100%);

		width: 100%;
		max-height: 92vh;
		border-radius: var(--radius-lg) var(--radius-lg) 0 0;
	}

	.phoenix-modal.is-open .phoenix-modal__box {
		transform: translate(0, 0);
	}

	.phoenix-modal__head {
		padding: 22px 20px 18px;
	}

	.phoenix-modal__body {
		padding: 18px 20px calc(22px + env(safe-area-inset-bottom, 0px));
	}

	/* 两列在窄屏必拆 —— 「Institution / Organization」这种长标签挤成两行。
	   2.3.1 记录过：常见手机 390/414px 正好卡在两列。 */
	.phoenix-modal__row2 {
		grid-template-columns: 1fr;
	}

	.phoenix-modal__submit {
		width: 100%;
	}
}

/* ---- 5c. Cookie 同意条 ---- */

.phoenix-cookie {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: var(--z-cookie);

	background: var(--color-primary-dark);
	border-top: 1px solid var(--color-navy-line);
	box-shadow: 0 -8px 32px rgba(7, 27, 51, 0.22);

	/* 同 5b：关着时绝不吃点击。这条横跨整个视口底部，
	   万一漏了兜底，底部的一切都点不了。 */
	transform: translateY(100%);
	visibility: hidden;
	pointer-events: none;
	transition: transform 0.3s var(--ease), visibility 0.3s var(--ease);
}

.phoenix-cookie.is-shown {
	transform: translateY(0);
	visibility: visible;
	pointer-events: auto;
}

.phoenix-cookie__in {
	max-width: var(--container);
	margin: 0 auto;
	padding: 16px var(--container-pad) calc(16px + env(safe-area-inset-bottom, 0px));

	display: flex;
	align-items: center;
	gap: 24px;
}

.phoenix-cookie__t {
	flex: 1 1 auto;
	min-width: 0;
}

.phoenix-cookie__t strong {
	display: block;
	margin-bottom: 3px;
	font-family: var(--font-display);
	font-size: 0.92rem;
	font-weight: 700;
	color: #fff;
}

.phoenix-cookie__t p {
	margin: 0;
	font-size: var(--fs-small);
	line-height: 1.5;
	color: var(--color-text-on-navy-muted);
}

.phoenix-cookie__t a {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.phoenix-cookie__t a:hover {
	color: var(--color-accent);
}

.phoenix-cookie__b {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 10px;
}

.phoenix-cookie__accept,
.phoenix-cookie__ghost {
	padding: 11px 20px;
	border-radius: var(--radius-sm);

	font-family: var(--font-body);
	font-size: 0.86rem;
	font-weight: 600;
	white-space: nowrap;
	cursor: pointer;
	transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease);
}

.phoenix-cookie__accept {
	border: 0;
	background: var(--color-accent);
	color: #fff;
}

.phoenix-cookie__accept:hover {
	background: var(--color-accent-hover);
}

.phoenix-cookie__ghost {
	border: 1px solid rgba(255, 255, 255, 0.28);
	background: transparent;
	color: #fff;
}

.phoenix-cookie__ghost:hover {
	border-color: #fff;
	background: rgba(255, 255, 255, 0.08);
}

.phoenix-cookie__accept:focus-visible,
.phoenix-cookie__ghost:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 2px;
}

@media (max-width: 760px) {

	.phoenix-cookie__in {
		flex-direction: column;
		align-items: stretch;
		gap: 14px;
	}

	.phoenix-cookie__b {
		display: grid;
		grid-template-columns: 1fr 1fr;
	}

	.phoenix-cookie__accept,
	.phoenix-cookie__ghost {
		/* 46px 触摸目标，和侧栏抽屉的标准一致 */
		padding: 13px 16px;
	}
}

/* 页脚的弹窗入口 —— 让 <button> 长得和它上面那几个 <a> 一模一样。
 * 用 button 是因为它不导航（站内刚清过一轮 href="#" 死链，别再引入）。 */
.phoenix-footer-inquiry {
	display: inline-flex;
	align-items: center;
	gap: inherit;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
}

.phoenix-footer-inquiry:focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 3px;
}

/* =========================================================================
 * 自定义上传 Logo（2.39.0）
 *
 * 主题设置 → Logo 传了图后，phoenix_get_logo() 会吐一个 <img class="customImg_ebf615">
 * 顶替内置的 SVG + 文字。这里给它一个和内置标识差不多的高度，宽度自适应，
 * 太宽的图用 max-width 收着，别把页眉撑破。
 *
 * 装在 .logo_ebf615 这个 inline-flex 容器里，align-items:center 会让它垂直居中。
 * ====================================================================== */
.customImg_ebf615 {
	display: block;
	height: 40px;
	width: auto;
	max-width: 220px;
	object-fit: contain;
}

/* 手机头部空间紧，稍微压低一点 */
@media (max-width: 640px) {
	.customImg_ebf615 {
		height: 34px;
		max-width: 160px;
	}
}

/* =========================================================================
 * 服务详情 CPT 正文（2.43.0）
 *
 * single-phoenix_service.php 的正文是 the_content()（Elementor 编的地方）。
 * 导入的服务是普通 HTML（段落 / h2 / 要点列表），这里给它一套和原服务页
 * 一致的排版，这样没上 Elementor、或只用经典编辑器时也好看。
 * Elementor 自己的控件有自己的样式，基本不受这里影响（这里只管裸标签）。
 * ====================================================================== */
.phoenix-service-body p {
	color: var(--color-text-muted);
	font-size: 1rem;
	line-height: 1.72;
	margin-bottom: 16px;
}
.phoenix-service-body p a,
.phoenix-service-body li a {
	color: var(--color-accent);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}
.phoenix-service-body h2,
.phoenix-service-body .elementor-heading-title {
	font-size: 1.35rem;
	font-weight: 700;
	color: var(--color-primary);
	margin: 34px 0 16px;
	padding-top: 24px;
	border-top: 1px solid var(--color-border);
}
.phoenix-service-body > h2:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}
.phoenix-service-body ul {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.phoenix-service-body ul li {
	position: relative;
	padding-left: 22px;
	color: var(--color-text-muted);
	font-size: 0.96rem;
	line-height: 1.6;
}
.phoenix-service-body ul li::before {
	content: '';
	position: absolute;
	left: 2px;
	top: 9px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--color-accent);
}
.phoenix-service-body ul li strong {
	color: var(--color-heading);
	font-weight: 700;
}

/* =========================================================================
 * 案例正文的丰富元素：指标条 / 规格表 / FAQ（2.46.0）
 *
 * 都挂在 .phoenix-service-body 下（后代选择器），所以裸 HTML 和 Elementor
 * text-editor 里渲染出来的都吃这套样式。配色同主题 token。
 * ====================================================================== */

/* 顶部指标条 */
.phoenix-service-body .phoenix-case-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin: 4px 0 26px;
}
.phoenix-service-body .phoenix-case-stat {
	flex: 1 1 120px;
	background: #f8f5f0;
	border: 1px solid #e6e9ee;
	border-radius: 12px;
	padding: 16px 14px;
	text-align: center;
}
.phoenix-service-body .phoenix-case-stat-v {
	display: block;
	font-size: 1.45rem;
	font-weight: 800;
	color: #0a2340;
	line-height: 1.2;
}
.phoenix-service-body .phoenix-case-stat-l {
	display: block;
	margin-top: 5px;
	font-size: 0.8rem;
	color: #5c6875;
	line-height: 1.4;
}

/* 规格表 */
.phoenix-service-body .phoenix-case-specs {
	width: 100%;
	border-collapse: collapse;
	margin: 8px 0 26px;
	border: 1px solid #e6e9ee;
	border-radius: 10px;
	overflow: hidden;
	font-size: 0.95rem;
}
.phoenix-service-body .phoenix-case-specs th {
	background: #0a2340;
	color: #fff;
	text-align: left;
	padding: 12px 16px;
	font-weight: 600;
}
.phoenix-service-body .phoenix-case-specs td {
	padding: 11px 16px;
	border-top: 1px solid #e6e9ee;
	color: #384656;
	vertical-align: top;
}
.phoenix-service-body .phoenix-case-specs td:first-child {
	font-weight: 600;
	color: #10233c;
	width: 38%;
}
.phoenix-service-body .phoenix-case-specs tr:nth-child(even) td {
	background: #faf8f4;
}

/* FAQ */
.phoenix-service-body .phoenix-case-faq {
	margin: 8px 0 24px;
}
.phoenix-service-body .phoenix-case-faq-item {
	border: 1px solid #e6e9ee;
	border-left: 3px solid #e05a18;
	border-radius: 10px;
	padding: 15px 20px;
	margin-bottom: 12px;
	background: #fff;
}
.phoenix-service-body .phoenix-case-faq-item h3 {
	margin: 0 0 6px;
	padding: 0;
	border: 0;
	font-size: 1.02rem;
	font-weight: 700;
	color: #10233c;
}
.phoenix-service-body .phoenix-case-faq-item p {
	margin: 0;
	color: #5c6875;
	line-height: 1.7;
}

@media (max-width: 560px) {
	.phoenix-service-body .phoenix-case-stat {
		flex-basis: 40%;
	}
}

/* =========================================================================
 * 页脚 Logo 自动反白
 *
 * 页脚背景是深蓝渐变（--color-primary → --color-primary-dark），
 * 而多数公司只有一版深色 logo，直接放上去几乎看不见。
 *
 * brightness(0) 先把所有非透明像素压成黑，invert(1) 再翻成白 ——
 * 不管原图什么颜色，出来都是纯白剪影，透明区域原样保留。
 *
 * ⚠ 前提是 logo 有透明背景（PNG / SVG）。
 *   如果传的是白底 JPG，压黑翻白之后会是一整块白方块 —— 那是图的问题，
 *   不是这条 CSS 的问题，换带透明通道的图即可。
 *
 * 不想要这个效果：把下面这条规则删掉，或者在自定义 CSS 里写
 *   .phoenix-footer-logo--invert { filter: none; }
 * ====================================================================== */
.phoenix-footer-logo--invert {
	filter: brightness(0) invert(1);
	/* Safari 15 之前不认无前缀的 filter 组合 */
	-webkit-filter: brightness(0) invert(1);
	transition: opacity 0.2s ease;
}

.phoenix-footer-logo--invert:hover {
	opacity: 0.85;
}

/* 打印时页面是白底，反白的 logo 会整个消失 —— 打印稿恢复原色 */
@media print {
	.phoenix-footer-logo--invert {
		filter: none;
		-webkit-filter: none;
	}
}
