/* ---------- 文章列表 ---------- */
.al-head {
	padding: clamp(40px, 6vw, 88px) 0 clamp(24px, 3vw, 40px);
}
.al-head h1 {
	font-size: clamp(36px, 5.4vw, 50px);
}
.al-sub {
	margin: 14px 0 0;
	font-size: clamp(16px, 1.4vw, 19px);
	color: var(--k500);
}
.al-cats {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: clamp(24px, 3vw, 36px);
}
.al-cat {
	display: inline-flex;
	align-items: center;
	height: 40px;
	padding: 0 18px;
	border-radius: 999px;
	border: 1.5px solid var(--k200);
	font-size: 15px;
	font-weight: 600;
	color: var(--k700);
	transition:
		border-color 0.2s,
		background 0.2s,
		color 0.2s;
}
.al-cat:hover {
	border-color: var(--ink);
	color: var(--ink);
}
.al-cat.on {
	border-color: var(--ink);
	background: var(--ink);
	color: #fff;
}
.al-body {
	padding-bottom: clamp(72px, 9vw, 136px);
}
.al-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(20px, 2.4vw, 32px);
}
.al-card {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-bottom: 8px;
}
.al-cover {
	position: relative;
	display: block;
	aspect-ratio: 16/10;
	border-radius: 16px;
	background: var(--stage, #f4f1ec);
	overflow: hidden;
	margin-bottom: 6px;
}
.al-cover img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.al-card:hover .al-cover img {
	transform: scale(1.04);
}
.al-meta {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 14px;
	color: var(--k500);
}
.al-meta .tag-o {
	background: var(--o100);
}
.al-title {
	font-size: clamp(18px, 1.5vw, 21px);
	line-height: 1.45;
	font-weight: 600;
	transition: color 0.2s;
}
.al-card:hover .al-title {
	color: var(--o700);
}
.al-desc {
	font-size: 15px;
	line-height: 1.65;
	color: var(--k500);
}
/* 标题两行、摘要两行，超出省略 */
.al-title,
.al-desc {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
	overflow-wrap: anywhere;
}
.al-empty {
	margin: 0;
	padding: 80px 0;
	text-align: center;
	color: var(--k500);
}

.al-pages {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 8px;
	margin-top: clamp(40px, 5vw, 64px);
}
.al-pg {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 44px;
	height: 44px;
	padding: 0 12px;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 600;
	color: var(--k700);
	transition: background 0.2s;
}
a.al-pg:hover {
	background: var(--k100);
}
.al-pg.on {
	background: var(--ink);
	color: #fff;
}
.al-pg-step {
	padding: 0 18px;
	border: 1.5px solid var(--k200);
}
.al-pg-gap {
	min-width: 24px;
	padding: 0;
	color: var(--k500);
}

@media (max-width: 1024px) {
	.al-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 640px) {
	.al-grid {
		grid-template-columns: minmax(0, 1fr);
	}
	.al-pg-step span {
		display: none;
	}
}

/* ---------- 文章详情 ---------- */
/* 正文排版见 article-content.css；--hdr-offset 是吸顶页头（收起后）的高度 + 管理工具栏，由 article.js 实时写入 */
.art {
	padding: clamp(32px, 5vw, 64px) 0 clamp(72px, 9vw, 136px);
}
.art-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 300px;
	gap: clamp(40px, 6vw, 96px);
	align-items: start;
}
.art-main {
	max-width: 800px;
	min-width: 0;
}
.art-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	font-size: 14px;
	color: var(--k500);
}
.art-meta .tag-o {
	background: var(--o100);
}
.art-title {
	margin-top: 16px;
	font-size: clamp(30px, 4vw, 44px);
	line-height: 1.2;
	letter-spacing: -0.02em;
	overflow-wrap: anywhere;
}
.art-content {
	margin-top: clamp(28px, 3vw, 40px);
	padding-top: clamp(28px, 3vw, 40px);
	border-top: 1px solid var(--k200);
}

.art-nav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin-top: clamp(48px, 5vw, 72px);
}
.art-nav-it {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 20px 24px;
	border-radius: 16px;
	background: var(--stage, #f4f1ec);
	transition: background 0.2s;
}
a.art-nav-it:hover {
	background: var(--o50);
}
.art-nav-next {
	text-align: right;
}
.art-nav-lb {
	font-size: 13px;
	font-weight: 600;
	color: var(--k500);
}
.art-nav-it strong {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
	font-size: 16px;
	line-height: 1.5;
	font-weight: 600;
}
.art-nav-it.is-empty strong {
	color: var(--k500);
	font-weight: 500;
}

/* 侧栏：目录 + 近期文章，整体吸顶在页头下方；比视口高时侧栏内部滚动 */
.art-side {
	position: sticky;
	top: calc(var(--hdr-offset, 88px) + 16px);
	max-height: calc(100vh - var(--hdr-offset, 88px) - 32px);
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.art-side-h {
	font-size: 16px;
	letter-spacing: 0;
}
.art-recent {
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}
.art-recent a {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 14px 0;
	border-bottom: 1px solid var(--k200);
}
.art-recent li:last-child a {
	border-bottom: none;
}
.art-recent time {
	font-size: 13px;
	color: var(--k500);
}
.art-recent strong {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
	font-size: 15px;
	line-height: 1.5;
	font-weight: 600;
	transition: color 0.2s;
}
.art-recent a:hover strong {
	color: var(--o700);
}

/* 本文目录：<details> 整体可折叠；有小节的章节可单独折叠（.is-folded 由 article.js 控制） */
.toc {
	border: 1px solid var(--k200);
	border-radius: 16px;
	background: #fff;
}
.toc-h {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 20px;
	font-size: 14px;
	font-weight: 700;
	color: var(--ink);
	cursor: pointer;
	list-style: none;
	user-select: none;
}
.toc-h::-webkit-details-marker {
	display: none;
}
.toc-h::after {
	content: '';
	flex: none;
	width: 7px;
	height: 7px;
	margin-right: 4px;
	border-right: 2px solid var(--k500);
	border-bottom: 2px solid var(--k500);
	transform: rotate(45deg) translateY(-2px);
	transition: transform 0.2s;
}
.toc[open] > .toc-h::after {
	transform: rotate(-135deg) translateY(-2px);
}
.toc-list,
.toc-sub {
	margin: 0;
	padding: 0;
	list-style: none;
}
.toc-list {
	padding: 0 10px 12px;
	margin-top: -4px;
}
.toc-row {
	display: flex;
	align-items: flex-start;
	gap: 2px;
}
.toc-row .toc-link {
	flex: 1;
	min-width: 0;
}
.toc-link {
	position: relative;
	display: flex;
	gap: 10px;
	padding: 6px 8px;
	border-radius: 8px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--k600);
	transition:
		color 0.2s,
		background 0.2s;
}
.toc-link:hover {
	color: var(--ink);
	background: var(--k50);
}
.toc-no {
	flex: none;
	min-width: 1em;
	font-variant-numeric: tabular-nums;
	color: var(--k500);
}
.toc-sub .toc-link {
	padding-left: 29px;
	font-size: 13px;
}
.toc-fold {
	flex: none;
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	margin-top: 2px;
	border-radius: 8px;
	color: var(--k500);
	transition:
		background 0.2s,
		color 0.2s;
}
.toc-fold:hover {
	background: var(--k100);
	color: var(--ink);
}
.toc-fold svg {
	transition: transform 0.25s;
}
.toc-item.is-folded .toc-fold svg {
	transform: rotate(-90deg);
}
/* 小节折叠：grid 行高 1fr ↔ 0fr，高度可过渡 */
.toc-sub-wrap {
	display: grid;
	grid-template-rows: 1fr;
	transition: grid-template-rows 0.25s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.toc-sub-wrap > .toc-sub {
	min-height: 0;
	overflow: hidden;
}
.toc-item.is-folded > .toc-sub-wrap {
	grid-template-rows: 0fr;
}
.toc-init .toc-sub-wrap,
.toc-init .toc-sub,
.toc-init .toc-fold svg {
	transition: none !important;
}
/* 收起后小节链接不可见也不可 Tab 到；等收起动画结束再隐藏 */
.toc-item.is-folded > .toc-sub-wrap > .toc-sub {
	visibility: hidden;
	transition: visibility 0s 0.25s;
}
/* 当前阅读到的章节 */
.toc-link.on {
	color: var(--ink);
	font-weight: 600;
	background: var(--o50);
}
.toc-link.on::before {
	content: '';
	position: absolute;
	left: 0;
	top: 8px;
	bottom: 8px;
	width: 3px;
	border-radius: 2px;
	background: var(--o500);
}
.toc-link.on .toc-no {
	color: var(--o700);
}
/* 收起的章节里有当前小节时，章节标题也标出来 */
.toc-item.is-folded:has(.toc-sub .toc-link.on) > .toc-row .toc-link {
	color: var(--ink);
	font-weight: 600;
}
/* 窄屏：目录放在正文前，默认收起 */
.toc-inline {
	display: none;
	margin-top: 24px;
}

@media (max-width: 1024px) {
	.art-grid {
		grid-template-columns: minmax(0, 1fr);
	}
	.art-side {
		position: static;
		max-height: none;
		overflow: visible;
		padding-top: 32px;
		border-top: 1px solid var(--k200);
	}
	.toc-side {
		display: none;
	}
	.toc-inline {
		display: block;
	}
}
@media (max-width: 640px) {
	.art-nav {
		grid-template-columns: minmax(0, 1fr);
	}
	.art-nav-next {
		text-align: left;
	}
}

/* ---------- 偏好设置 ---------- */
.pf {
	background: var(--k50);
	padding: clamp(40px, 6vw, 88px) 0 clamp(72px, 9vw, 136px);
}
.pf-in {
	max-width: calc(760px + var(--gutter) * 2);
}
.pf-head h1 {
	font-size: clamp(32px, 4.4vw, 44px);
}
.pf-head p {
	margin: 12px 0 0;
	font-size: clamp(16px, 1.3vw, 18px);
	line-height: 1.6;
	color: var(--k500);
}
.pf-card {
	margin-top: clamp(28px, 3.4vw, 40px);
	padding: clamp(24px, 3.4vw, 40px);
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 1px 2px rgba(18, 23, 31, 0.04);
}
.pf-sec + .pf-sec {
	margin-top: 32px;
	padding-top: 32px;
	border-top: 1px solid var(--k100);
}
.pf-sec-h h2 {
	font-size: 18px;
	letter-spacing: 0;
}
.pf-sec-h p {
	margin: 6px 0 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--k500);
}

/* 语言：两张可选卡片（原生 radio，外观由 label 承担） */
.pf-langs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	margin-top: 18px;
}
.pf-lang {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 18px;
	border: 1.5px solid var(--k200);
	border-radius: 14px;
	cursor: pointer;
	transition:
		border-color 0.2s,
		background 0.2s,
		box-shadow 0.2s;
}
.pf-lang:hover {
	border-color: var(--k600);
}
.pf-lang input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.pf-lang-tx {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.pf-lang-tx strong {
	font-size: 16px;
	font-weight: 600;
}
.pf-lang-tx span {
	font-size: 13px;
	color: var(--k500);
}
.pf-check {
	flex: none;
	display: grid;
	place-items: center;
	width: 22px;
	height: 22px;
	border: 1.5px solid var(--k200);
	border-radius: 50%;
	color: transparent;
	transition:
		background 0.2s,
		border-color 0.2s,
		color 0.2s;
}
.pf-lang:has(input:checked) {
	border-color: var(--o500);
	background: var(--o50);
}
.pf-lang:has(input:checked) .pf-check {
	border-color: var(--o500);
	background: var(--o500);
	color: #fff;
}
.pf-lang:has(input:focus-visible) {
	outline: 2px solid var(--i600);
	outline-offset: 2px;
}

/* 货币：原生下拉，只换外观 */
.pf-select {
	position: relative;
	margin-top: 18px;
}
.pf-select select {
	width: 100%;
	height: 52px;
	padding: 0 44px 0 16px;
	border: 1.5px solid var(--k200);
	border-radius: 12px;
	background: #fff;
	font: inherit;
	font-size: 15px;
	color: var(--ink);
	appearance: none;
	cursor: pointer;
	transition: border-color 0.2s;
}
.pf-select select:hover {
	border-color: var(--k600);
}
.pf-select select:focus-visible {
	outline: none;
	border-color: var(--o500);
	box-shadow: 0 0 0 4px var(--o100);
}
.pf-select > svg {
	position: absolute;
	right: 16px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--k500);
	pointer-events: none;
}

.pf-note,
.pf-msg {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 28px 0 0;
	padding: 12px 16px;
	border-radius: 12px;
	font-size: 14px;
	line-height: 1.6;
}
.pf-note[hidden],
.pf-msg[hidden] {
	display: none;
}
.pf-note {
	background: var(--k50);
	color: var(--k600);
}
.pf-note svg {
	flex: none;
	margin-top: 3px;
	color: var(--k500);
}
.pf-msg {
	background: #fef2f2;
	color: #b42318;
}
.pf-msg + .pf-actions,
.pf-note + .pf-msg {
	margin-top: 12px;
}

.pf-actions {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 12px;
	margin-top: 32px;
	padding-top: 28px;
	border-top: 1px solid var(--k100);
}
.pf-cancel,
.pf-save {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 48px;
	padding: 0 26px;
	border-radius: 999px;
	font-size: 16px;
	font-weight: 700;
	transition:
		background 0.2s,
		border-color 0.2s,
		opacity 0.2s;
}
.pf-cancel {
	border: 1.5px solid var(--k200);
	color: var(--k700);
}
.pf-cancel:hover {
	border-color: var(--ink);
	color: var(--ink);
}
.pf-save {
	min-width: 148px;
	background: var(--ink);
	color: #fff;
}
.pf-save:hover {
	background: #2a313c;
}
.pf-save:disabled {
	opacity: 0.7;
	cursor: progress;
}
.pf-save.is-busy::before {
	content: '';
	width: 14px;
	height: 14px;
	margin-right: 8px;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-top-color: #fff;
	border-radius: 50%;
	animation: pf-spin 0.7s linear infinite;
}
@keyframes pf-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (max-width: 560px) {
	.pf-langs {
		grid-template-columns: minmax(0, 1fr);
	}
	.pf-actions {
		flex-direction: column-reverse;
		align-items: stretch;
	}
}

/* ---------- 服务页（3D 打印 / CNC，templates/service.php） ---------- */
/* 区块标题沿用首页的 .sec-head / .sec-side；主按钮沿用 .cta；入场动画与数字滚动沿用 main.js 的 .rv / .cnt */
.sv-sec {
	padding: clamp(64px, 8vw, 120px) 0;
}
.sv-alt {
	background: var(--k50);
}
.sv-sec .sec-head {
	margin-bottom: clamp(32px, 4vw, 56px);
}
.sv h3 {
	margin: 0;
	letter-spacing: -0.01em;
}

/* 首屏 */
.sv-hero {
	position: relative;
	overflow: hidden;
	padding: clamp(40px, 6vw, 88px) 0 clamp(48px, 6vw, 80px);
	background: radial-gradient(60% 80% at 100% 0%, var(--o50) 0%, transparent 60%), #fff;
}
.sv-hero-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	gap: clamp(32px, 5vw, 80px);
	align-items: center;
}
.sv-copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
	min-width: 0;
}
.sv-eyebrow {
	margin: 0;
	display: inline-flex;
	align-items: center;
	height: 32px;
	padding: 0 14px;
	border-radius: 999px;
	background: var(--o50);
	font-size: 14px;
	font-weight: 700;
	color: var(--o700);
}
.sv-copy h1 {
	font-size: clamp(38px, 5vw, 58px);
}
.sv-sub {
	margin: 0;
	max-width: 560px;
	font-size: clamp(16px, 1.4vw, 19px);
	line-height: 1.65;
	color: var(--k600);
}
.sv-points {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px 24px;
	margin: 4px 0 0;
	padding: 0;
	list-style: none;
	font-size: 15px;
	line-height: 1.5;
	color: var(--k700);
}
.sv-points li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}
.sv-tick {
	flex: none;
	display: grid;
	place-items: center;
	width: 22px;
	height: 22px;
	margin-top: -1px;
	border-radius: 50%;
	background: var(--o100);
	color: var(--o700);
}
.sv-ctas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	margin-top: 8px;
}
.sv-ctas .cta {
	margin-top: 0;
}
.sv-ghost {
	display: inline-flex;
	align-items: center;
	height: 56px;
	padding: 0 26px;
	border: 1.5px solid var(--ink);
	border-radius: 999px;
	font-size: 17px;
	font-weight: 700;
	transition:
		background 0.2s,
		color 0.2s;
}
.sv-ghost:hover {
	background: var(--ink);
	color: #fff;
}
.sv-secure {
	margin: 0;
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--k500);
}
.sv-media {
	position: relative;
	min-width: 0;
}
.sv-media img {
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: 24px;
	box-shadow: 0 30px 60px rgba(18, 23, 31, 0.14);
}
.sv-badge {
	position: absolute;
	left: -20px;
	bottom: 28px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 16px 20px;
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 16px 40px rgba(18, 23, 31, 0.16);
}
.sv-badge strong {
	font-size: 28px;
	line-height: 1.1;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--o700);
}
.sv-badge span {
	font-size: 13px;
	color: var(--k500);
}

/* 数据条 */
.sv-stats {
	border-block: 1px solid var(--k100);
}
.sv-stat-list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin: 0;
	padding: 0;
	list-style: none;
}
.sv-stat-list li {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: clamp(24px, 3vw, 36px) clamp(16px, 2vw, 32px);
}
.sv-stat-list li + li {
	border-left: 1px solid var(--k100);
}
.sv-num {
	display: flex;
	align-items: baseline;
	gap: 4px;
	font-size: clamp(32px, 3.6vw, 44px);
	font-weight: 600;
	line-height: 1;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
}
.sv-num small {
	font-size: 0.42em;
	font-weight: 600;
	letter-spacing: 0;
	color: var(--o700);
}
.sv-stat-lb {
	font-size: 14px;
	color: var(--k500);
}

/* 工艺卡片 */
.sv-procs {
	display: grid;
	gap: clamp(16px, 2vw, 24px);
}
.sv-procs-3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sv-procs-5 {
	grid-template-columns: repeat(5, minmax(0, 1fr));
}
.sv-proc {
	display: flex;
	flex-direction: column;
	border-radius: 20px;
	background: var(--stage, #f4f1ec);
	overflow: hidden;
	transition:
		transform 0.3s,
		box-shadow 0.3s;
}
.sv-proc:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 48px rgba(18, 23, 31, 0.12);
}
.sv-proc-img {
	display: block;
	aspect-ratio: 1;
	overflow: hidden;
}
.sv-proc-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.sv-proc:hover .sv-proc-img img {
	transform: scale(1.05);
}
.sv-proc-b {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 18px 20px 22px;
}
.sv-proc-tag {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--o700);
}
.sv-proc h3 {
	font-size: 18px;
	line-height: 1.4;
}
.sv-proc p {
	margin: 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--k500);
}

/* 优势 / 特点：编号卡片 */
.sv-feats {
	display: grid;
	gap: clamp(16px, 2vw, 24px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.sv-feats-3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sv-feats-4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
.sv-feat {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: clamp(24px, 2.6vw, 32px);
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
}
.sv-feat-no {
	font:
		600 15px/1 'Outfit',
		sans-serif;
	color: var(--o700);
}
.sv-feat h3 {
	font-size: 19px;
	line-height: 1.4;
}
.sv-feat p {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--k600);
}
.sv-summary {
	margin: clamp(20px, 2.4vw, 28px) 0 0;
	padding: 20px 24px 20px 28px;
	border-left: 3px solid var(--o500);
	border-radius: 0 16px 16px 0;
	background: #fff;
	font-size: 16px;
	line-height: 1.75;
	color: var(--k700);
}

/* 工业级 vs 桌面级 */
.sv-cmp {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 24px);
}
.sv-cmp-it {
	display: grid;
	grid-template-columns: 200px minmax(0, 1fr);
	gap: 24px;
	align-items: start;
	padding: 20px;
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
}
.sv-cmp-it.is-ours {
	border-color: var(--o500);
	box-shadow: 0 0 0 3px var(--o50);
}
.sv-cmp-img img {
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: 12px;
}
.sv-cmp-b {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	padding-top: 4px;
}
.sv-cmp-it.is-ours .tag-o {
	background: var(--o100);
}
.sv-cmp-b h3 {
	font-size: 19px;
}
.sv-cmp-b p {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--k600);
}

/* 适用场景 */
.sv-scns {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 24px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.sv-scn {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: clamp(24px, 2.6vw, 32px);
	border-radius: 20px;
	background: var(--stage, #f4f1ec);
}
.sv-scn .sv-tick {
	width: 32px;
	height: 32px;
	background: #fff;
}
.sv-scn h3 {
	font-size: 19px;
}
.sv-scn p {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--k600);
}

/* 材料表格（3D 打印） */
.sv-table {
	overflow-x: auto;
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
}
.sv-table:focus-visible {
	outline: 2px solid var(--i600);
	outline-offset: 2px;
}
.sv-table table {
	width: 100%;
	min-width: 760px;
	border-collapse: collapse;
	font-size: 15px;
	line-height: 1.6;
}
.sv-table th,
.sv-table td {
	padding: 16px 20px;
	border-bottom: 1px solid var(--k100);
	text-align: left;
	vertical-align: top;
}
.sv-table thead th {
	background: var(--k50);
	font-size: 13px;
	font-weight: 700;
	color: var(--k500);
	white-space: nowrap;
}
.sv-table tbody tr:last-child > * {
	border-bottom: 0;
}
.sv-table tbody tr:hover > * {
	background: var(--o50);
}
.sv-table tbody th {
	font-weight: 600;
	color: var(--ink);
}
.sv-table td {
	color: var(--k600);
}
.sv-pill {
	display: inline-flex;
	align-items: center;
	height: 24px;
	padding: 0 10px;
	border-radius: 999px;
	background: var(--k100);
	font-size: 12px;
	font-weight: 700;
	color: var(--k700);
}
.sv-lead {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.sv-feat-td {
	min-width: 280px;
}
.sv-hint {
	display: none;
	margin: 12px 0 0;
	font-size: 13px;
	color: var(--k500);
}

/* 材料分组（CNC） */
.sv-groups {
	columns: 3 280px;
	column-gap: clamp(16px, 2vw, 24px);
}
.sv-group {
	break-inside: avoid;
	margin-bottom: clamp(16px, 2vw, 24px);
	padding: 24px;
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
}
.sv-group h3 {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	font-size: 17px;
}
.sv-group h3 span {
	font-size: 13px;
	font-weight: 600;
	color: var(--k500);
	font-variant-numeric: tabular-nums;
}
.sv-group ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
}
.sv-group li {
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--k50);
	font-size: 14px;
	color: var(--k700);
}

/* 科普 */
.sv-about {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(24px, 5vw, 80px);
	align-items: start;
}
.sv-about h2 {
	font-size: clamp(30px, 3.6vw, 42px);
}
.sv-about-tx p {
	margin: 0 0 1.1em;
	font-size: 17px;
	line-height: 1.85;
	color: var(--k600);
}
.sv-about-tx p:last-child {
	margin-bottom: 0;
}

@media (max-width: 1180px) {
	.sv-procs-5 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.sv-feats-4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.sv-cmp {
		grid-template-columns: minmax(0, 1fr);
	}
}
@media (max-width: 900px) {
	.sv-hero-grid,
	.sv-about {
		grid-template-columns: minmax(0, 1fr);
	}
	.sv-media {
		order: -1;
	}
	.sv-badge {
		left: 16px;
		bottom: 16px;
	}
	.sv-stat-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.sv-stat-list li:nth-child(3) {
		border-left: 0;
	}
	.sv-stat-list li:nth-child(n + 3) {
		border-top: 1px solid var(--k100);
	}
	.sv-feats-3,
	.sv-scns,
	.sv-procs-3 {
		grid-template-columns: minmax(0, 1fr);
	}
	.sv-hint {
		display: block;
	}
}
@media (max-width: 640px) {
	.sv-points {
		grid-template-columns: minmax(0, 1fr);
	}
	.sv-ctas {
		width: 100%;
	}
	.sv-ctas .cta,
	.sv-ghost {
		flex: 1 1 100%;
		justify-content: center;
	}
	.sv-procs-5 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.sv-feats-4 {
		grid-template-columns: minmax(0, 1fr);
	}
	.sv-cmp-it {
		grid-template-columns: minmax(0, 1fr);
	}
	.sv-proc-b {
		padding: 14px 16px 18px;
	}
}

/* ---------- 关于我们（templates/about.php） ---------- */
/* 复用服务页的 .sv-eyebrow / .sv-sub / .sv-ctas / .sv-sec / .sv-about / .sv-num */
.ab-hero {
	padding: clamp(40px, 6vw, 96px) 0 clamp(48px, 6vw, 88px);
	background: radial-gradient(60% 80% at 100% 0%, var(--o50) 0%, transparent 60%), #fff;
}
.ab-hero-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: clamp(32px, 5vw, 80px);
	align-items: center;
}
.ab-copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
	min-width: 0;
}
.ab-copy h1 {
	font-size: clamp(36px, 4.6vw, 56px);
}
.ab-hl {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ab-hl li {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 18px 22px;
	border: 1px solid var(--k200);
	border-radius: 16px;
	background: #fff;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.5;
	box-shadow: 0 1px 2px rgba(18, 23, 31, 0.04);
}
.ab-hl-no {
	flex: none;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	background: var(--o50);
	font:
		600 15px/1 'Outfit',
		sans-serif;
	color: var(--o700);
}

/* 工厂实力：深色数据带，背景是旧站工厂横幅图 */
.ab-band {
	position: relative;
	padding: clamp(48px, 6vw, 80px) 0;
	background:
		linear-gradient(90deg, rgba(18, 23, 31, 0.92), rgba(18, 23, 31, 0.78)),
		var(--band) center / cover no-repeat,
		var(--ink);
	color: #fff;
}
.ab-band-h {
	font-size: clamp(24px, 2.6vw, 32px);
	letter-spacing: -0.01em;
}
.ab-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 24px;
	margin: clamp(24px, 3vw, 36px) 0 0;
	padding: 0;
	list-style: none;
}
.ab-stats li {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding-left: 20px;
	border-left: 2px solid rgba(255, 255, 255, 0.16);
}
.ab-stats .sv-num small {
	color: var(--o500);
}
.ab-stats .sv-stat-lb {
	color: rgba(255, 255, 255, 0.7);
}

/* 我们的能力 */
.ab-caps {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 20px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.ab-cap {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 24px;
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
}
.ab-cap h3 {
	font-size: 18px;
}
.ab-cap p {
	flex: 1;
	margin: 0;
	font-size: 14px;
	line-height: 1.7;
	color: var(--k600);
}
.ab-cap-more {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 4px;
	font-size: 14px;
	font-weight: 700;
	color: var(--o700);
}
.ab-cap-more svg {
	transition: transform 0.2s;
}
.ab-cap-more:hover svg {
	transform: translateX(3px);
}

/* 使命与愿景 */
.ab-vals {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 24px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.ab-val {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: clamp(24px, 3vw, 36px);
	border-radius: 20px;
	background: var(--stage, #f4f1ec);
}
.ab-val-lb {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--o700);
}
.ab-val h3 {
	font-size: clamp(19px, 1.6vw, 22px);
	line-height: 1.45;
}
.ab-val p {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--k600);
}

/* 创始团队（旧站的团队介绍图） */
.ab-team {
	margin: 0;
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
	overflow: hidden;
}
.ab-team img {
	display: block;
	width: 100%;
	height: auto;
}

@media (max-width: 1180px) {
	.ab-caps {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 900px) {
	.ab-hero-grid,
	.ab-vals {
		grid-template-columns: minmax(0, 1fr);
	}
	.ab-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		row-gap: 28px;
	}
	.ab-caps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 560px) {
	.ab-caps {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- 联系我们（templates/contact.php） ---------- */
/* 表单控件复用登录的 .sg-field / .sg-err / .sg-msg / .sg-submit（auth.css） */
.ct {
	padding: clamp(40px, 6vw, 88px) 0 clamp(72px, 9vw, 128px);
	background: radial-gradient(50% 60% at 100% 0%, var(--o50) 0%, transparent 60%), #fff;
}
.ct-head {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 18px;
	max-width: 720px;
}
.ct-head h1 {
	font-size: clamp(36px, 4.6vw, 52px);
}
.ct-grid {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: start;
	margin-top: clamp(32px, 4vw, 56px);
}
.ct-info {
	display: grid;
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ct-info li {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr);
	grid-template-rows: auto auto;
	column-gap: 16px;
	row-gap: 4px;
	align-items: center;
	padding: 20px 22px;
	border: 1px solid var(--k200);
	border-radius: 18px;
	background: #fff;
}
.ct-ic {
	grid-row: 1 / span 2;
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border-radius: 14px;
	background: var(--o50);
	color: var(--o700);
}
.ct-lb {
	font-size: 13px;
	color: var(--k500);
}
.ct-val {
	font-size: 18px;
	font-weight: 600;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
	overflow-wrap: anywhere;
}
a.ct-val:hover {
	color: var(--o700);
}
.ct-addr {
	font-size: 15px;
	font-style: normal;
	line-height: 1.6;
	color: var(--k700);
}
.ct-form {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: clamp(24px, 3vw, 36px);
	border: 1px solid var(--k200);
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 24px 48px rgba(18, 23, 31, 0.06);
}
.ct-form h2 {
	font-size: 22px;
	letter-spacing: 0;
}
.ct-form-desc {
	margin: -8px 0 4px;
	font-size: 14px;
	color: var(--k500);
}
.ct-row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}
.ct-form .sg-field textarea {
	display: block;
	width: 100%;
	min-height: 132px;
	padding: 12px 20px;
	border: 1px solid #dce0e5;
	border-radius: 6px;
	font: inherit;
	font-size: 16px;
	line-height: 1.6;
	color: #202124;
	resize: vertical;
	transition:
		border-color 0.15s ease-in-out,
		box-shadow 0.15s ease-in-out;
}
.ct-form .sg-field textarea::placeholder {
	color: #96969a;
}
.ct-form .sg-field textarea:focus {
	outline: 0;
	border-color: rgba(32, 33, 36, 0.1);
	box-shadow: 0 4px 10px 3px rgba(32, 33, 36, 0.1);
}
.ct-form .sg-field textarea[aria-invalid='true'] {
	border-color: #dc3545;
}
@media (max-width: 900px) {
	.ct-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}
@media (max-width: 480px) {
	.ct-row {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- 条款类内容页（templates/content.php，版式复用文章详情） ---------- */
.doc .art-grid {
	grid-template-columns: minmax(0, 1fr) 280px;
}

/* ---------- 404 ---------- */
.nf-in {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	padding-top: clamp(72px, 10vw, 140px);
	padding-bottom: clamp(88px, 12vw, 160px);
	text-align: center;
}
.nf-code {
	margin: 0;
	font:
		600 clamp(96px, 14vw, 180px)/0.9 'Outfit',
		sans-serif;
	letter-spacing: -0.05em;
	color: transparent;
	-webkit-text-stroke: 1.5px rgba(18, 23, 31, 0.18);
}
.nf-in h1 {
	font-size: clamp(28px, 3.6vw, 40px);
}
.nf-desc {
	margin: 0 0 12px;
	max-width: 440px;
	color: var(--k500);
	font-size: 17px;
	line-height: 1.6;
}

/* ---------- 用户空间（Vue，templates/space.php）：挂载前的加载状态 ---------- */
.mml-space-app {
	min-height: 60vh;
}
.mml-space-loading {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	min-height: 60vh;
	color: var(--k500);
	font-size: 14px;
}
.mml-space-loading span {
	width: 36px;
	height: 36px;
	border: 3px solid var(--o100);
	border-top-color: var(--o500);
	border-radius: 50%;
	animation: mml-space-spin 0.8s linear infinite;
}
@keyframes mml-space-spin {
	to {
		transform: rotate(360deg);
	}
}
