/**
 * PSS Public Styles — Mobile First
 * 核心测试宽度：390px
 * 禁止横向滚动；按钮 >= 44px；卡片固定比例
 *
 * Phase 18B stylesheet 分区（自上而下保持；勿批量重命名历史 class）
 * Phase 18J — 客户前台外壳 / 容器 / 按钮 / notice / 卡片 / modal / sticky 收口（无业务 hook 重命名）
 * Phase 18J-R2 — 页面壳 `.pss-public-page`、窄/可读宽度、分享页与版库同构、notice/按钮别名、软提示页外壳
 * Phase 20A — Root Shell 跟随 WordPress / 主题容器宽度（shell 100%，不再 1180 限宽）
 * Phase 20B — 客户前台扁平化：移除 box-shadow / text-shadow / drop-shadow（保留 border focus，无 outline ring）
 * Phase 20C — 客户前台 typography token 与同等语义层级统一
 * Phase 20H — 隔离 Twenty Twenty-Five 全局 :focus outline（点击黑框）
 * ─ 变量（:root）：含 Phase 18B 「public」语义别名。
 * ─ 基础重置（.pss-library / .pss-selection / .pss-modal / .pss-sticky-bar）。
 * ─ 按钮、表单控件、徽章、分页。
 * ─ 版库卡片、Modal、Sticky bar。
 * ─ 选版篮、登录/门户、「版样组」与客户报价。
 * ─ 响应式微调。
 * ─ 文末「Phase 18B」增量布局/语义类（与既有 BEM 并存）。
 */

/* ──────────────────────────────────────────────
   CSS 变量
────────────────────────────────────────────── */
:root {
	--pss-primary:   #1a73e8;
	--pss-secondary: #5f6368;
	--pss-danger:    #d93025;
	--pss-success:   #34a853;
	--pss-border:    #e0e0e0;
	--pss-bg:        #f8f9fa;
	--pss-card-bg:   #ffffff;
	--pss-radius:    8px;
	--pss-font:      -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
	--pss-shadow:    none; /* Phase 20B：客户前台扁平化，不再使用阴影 */

	/* Phase 20C — Typography scale（客户前台统一字体层级） */
	--pss-font-size-xs: 0.75rem;
	--pss-font-size-sm: 0.875rem;
	--pss-font-size-base: 1rem;
	--pss-font-size-md: 1.0625rem;
	--pss-font-size-lg: 1.125rem;
	--pss-font-size-xl: 1.25rem;
	--pss-font-size-2xl: 1.5rem;
	--pss-line-height-tight: 1.25;
	--pss-line-height-normal: 1.5;
	--pss-line-height-relaxed: 1.65;
	--pss-font-weight-normal: 400;
	--pss-font-weight-medium: 500;
	--pss-font-weight-semibold: 600;
	--pss-font-weight-bold: 700;
	--pss-text-heading: #1d2327;
	--pss-text-body: #333;
	--pss-text-muted: var(--pss-public-muted);
	--pss-text-subtle: #50575e;
	/* Phase 18B — 对齐规范文档别名（映射既有 token，可供 18C+ 渐进替换） */
	--pss-public-radius: var(--pss-radius);
	--pss-public-gap: 12px;
	--pss-public-border: var(--pss-border);
	--pss-public-muted: var(--pss-secondary);
	--pss-public-shadow: var(--pss-shadow);
	/* Phase 18J — 客户页统一容器与节奏 */
	--pss-public-max-width: 1180px; /* legacy；shell 不再用作页面最终宽度（Phase 20A） */
	--pss-public-narrow-width: 760px;
	--pss-public-wide-width: 1280px;
	--pss-public-page-x: 16px;
	--pss-public-section-gap: 24px;
	--pss-public-readable-width: 900px;
	--pss-public-card-shell-radius: 12px;
	--pss-public-card-gap: 16px;

	/* Phase 18J-R3 — 间距刻度（语义页边距映射到原有 public token） */
	--pss-space-1: 4px;
	--pss-space-2: 8px;
	--pss-space-3: 12px;
	--pss-space-4: 16px;
	--pss-space-5: 20px;
	--pss-space-6: 24px;
	--pss-space-8: 32px;
	--pss-space-10: 40px;
	--pss-space-page-x: var(--pss-public-page-x);
	--pss-space-page-y: var(--pss-space-6);
	--pss-space-section: var(--pss-public-section-gap);
	--pss-space-card: var(--pss-public-card-gap);
	--pss-space-actions: var(--pss-space-3);

	/* 卡片 / Shell（与下文 `.pss-public-card` 口径一致） */
	--pss-card-border: var(--pss-public-border);
	--pss-card-radius: var(--pss-public-card-shell-radius);
	--pss-card-shadow: var(--pss-public-shadow);
	--pss-frontend-shell-width: 100%;
}

/* ═══════════════════════════════════════════════════════════════
   Phase 20A — Frontend Root Shell（跟随 WordPress / 主题容器宽度）
   ═══════════════════════════════════════════════════════════════ */

/* 不再用 !important 破开 .entry-content / block layout；PSS 在主题容器内 width:100% */
.entry-content > .pss-frontend-root,
.wp-block-post-content > .pss-frontend-root,
.is-layout-constrained > .pss-frontend-root,
main.site-main > .pss-frontend-root,
.site-main > .pss-frontend-root {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}

.pss-frontend-root {
	box-sizing: border-box;
	display: block;
	width: 100%;
	max-width: 100%;
	margin-block: var(--pss-space-page-y);
}

/*
 * Phase 20H — 覆盖 TT5 style.css 中 :where(.wp-site-blocks *:focus) 的 2px solid outline。
 * PSS 短代码均在 .wp-site-blocks 内渲染；此处统一移除主题注入的黑框，沿用 Phase 20B border focus。
 * .pss-customer-user-menu 不包 FrontendShell，须单独列出。
 */
.pss-frontend-root *:focus,
.pss-customer-user-menu *:focus,
.pss-password-modal *:focus {
	outline: none;
	outline-offset: 0;
}

.pss-frontend-shell {
	box-sizing: border-box;
	width: 100%;
	max-width: none;
	margin-inline: 0;
	padding-inline: 0;
}

/* Shell 内：`.pss-public-wrap` 退化为全宽通栏，不再叠加横向留白 */
.pss-frontend-shell .pss-public-wrap {
	width: 100%;
	max-width: none;
	margin-inline: 0;
	padding-inline: 0;
	overflow: visible;
}

/* Phase 18J-R3：取消「独占窄壳 / 可读正文」对客户页的视觉收窄（语义 class 仍可保留） */
.pss-public-wrap--narrow,
.pss-public-content--readable {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

/* UI 语义卡片（可与 `.pss-public-card` 叠加） */
.pss-ui-card {
	border-radius: var(--pss-card-radius);
	border: 1px solid var(--pss-card-border);
	background: var(--pss-card-bg);
	box-shadow: var(--pss-card-shadow);
	box-sizing: border-box;
}

/*
 * `.pss-ui-button` / `--primary` / `--secondary`：与 `.pss-btn*` 同元素叠加即可，不重写整条按钮链。
 */

/* ──────────────────────────────────────────────
   基础重置（仅 PSS 范围内）
────────────────────────────────────────────── */
.pss-library *,
.pss-selection *,
.pss-modal * {
	box-sizing: border-box;
	-webkit-tap-highlight-color: transparent;
}

.pss-library,
.pss-selection {
	font-family: var(--pss-font);
	color: #333;
	max-width: 100%;
	overflow-x: hidden;
}

/* ──────────────────────────────────────────────
   按钮
────────────────────────────────────────────── */
.pss-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 16px;
	border-radius: var(--pss-radius);
	border: none;
	cursor: pointer;
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	text-decoration: none;
	transition: background .15s;
	font-family: var(--pss-font);
	white-space: nowrap;
}

.pss-btn--primary,
.pss-btn-primary {
	background: var(--pss-primary);
	color: #fff;
}
.pss-btn--primary:hover,
.pss-btn-primary:hover { background: #1558b0; color: #fff; }

.pss-btn--secondary,
.pss-btn-secondary {
	background: #fff;
	color: var(--pss-secondary);
	border: 1px solid var(--pss-border);
}
.pss-btn--secondary:hover,
.pss-btn-secondary:hover { background: var(--pss-bg); }

.pss-btn--danger,
.pss-btn-danger { background: var(--pss-danger); color: #fff; }
.pss-btn--danger:hover,
.pss-btn-danger:hover { background: #b0271e; }

.pss-btn--save { background: var(--pss-success); color: #fff; }
.pss-btn--save:hover { background: #2a8a43; }

.pss-btn--full { width: 100%; }

/* 个人中心入口按钮行（Phase 16D） */
.pss-customer-portal-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: 0.75rem 0 0;
}
.pss-customer-portal-actions > p {
	margin: 0;
}

/* ──────────────────────────────────────────────
   表单元素
────────────────────────────────────────────── */
.pss-input,
.pss-select,
.pss-textarea {
	display: block;
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--pss-border);
	border-radius: 6px;
	font-size: var(--pss-font-size-base);
	font-family: var(--pss-font);
	background: #fff;
	color: var(--pss-text-body);
	min-height: 44px;
	line-height: var(--pss-line-height-normal);
}
.pss-input:focus,
.pss-select:focus,
.pss-textarea:focus {
	outline: none;
	outline-offset: 0;
	border-color: var(--pss-primary, #0073aa);
	box-shadow: none;
}

.pss-input--qty {
	width: 80px;
}
.pss-select--unit {
	width: 100px;
}
.pss-textarea {
	min-height: 72px;
	resize: vertical;
}

/* ──────────────────────────────────────────────
   筛选栏
────────────────────────────────────────────── */
.pss-filter-bar {
	margin-bottom: 16px;
}
.pss-filter-bar__inner {
	display: flex;
	flex-wrap: nowrap;
	gap: 8px;
	align-items: stretch;
	width: 100%;
	min-width: 0;
}
.pss-filter-bar__controls {
	display: flex;
	flex: 1 1 auto;
	flex-wrap: nowrap;
	gap: 8px;
	align-items: stretch;
	min-width: 0;
}
.pss-filter-type-field {
	flex: 0 0 auto;
	width: auto;
	min-width: 0;
}
.pss-filter-type-field .pss-portal-filter-type-switcher {
	width: auto;
	min-width: 0;
}
.pss-filter-bar__controls .pss-filter-search,
.pss-filter-bar__controls .pss-portal-filter-type-switcher .pss-portal-company-switcher__trigger,
.pss-filter-bar__controls .pss-filter-search-submit {
	height: 44px;
	min-height: 44px;
	max-height: 44px;
	box-sizing: border-box;
	line-height: 1.4;
	font-size: 14px;
}
.pss-filter-bar__controls .pss-portal-filter-type-switcher .pss-portal-company-switcher__trigger {
	width: auto;
	max-width: none;
	padding: 0 10px;
	background: #fff;
	border: 1px solid var(--pss-border, #dcdcde);
	border-radius: var(--pss-radius, 6px);
	color: var(--pss-text-body, #1d2327);
	white-space: nowrap;
}
.pss-portal-filter-type-switcher .pss-portal-company-switcher__menu {
	width: max-content;
	min-width: 100%;
	max-width: min(100vw - 32px, 280px);
}
.pss-portal-select-switcher__item,
.pss-portal-filter-type-switcher__item {
	width: 100%;
	text-align: left;
	cursor: pointer;
}
.pss-filter-search {
	flex: 1 1 auto;
	min-width: 0;
	width: auto;
	padding: 10px 12px;
	border: 1px solid var(--pss-border);
	border-radius: 6px;
	font-size: 14px;
	min-height: 44px;
}
.pss-filter-search-submit {
	flex: 0 0 44px;
	width: 44px;
	min-width: 44px;
	padding: 0;
}
.pss-filter-search-submit__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
}
.pss-filter-search-submit__svg {
	display: block;
	width: 24px;
	height: 24px;
}
.pss-filter-clear {
	flex: 0 0 auto;
	align-self: center;
	font-size: 13px;
	color: var(--pss-secondary);
	text-decoration: underline;
	white-space: nowrap;
}

/* ──────────────────────────────────────────────
   统计 + 加载
────────────────────────────────────────────── */
.pss-library__count {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	font-weight: 700;
	color: var(--pss-secondary);
	margin: 0 0 12px;
}
.pss-library__count-icon {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
}
.pss-library__count-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}
.pss-library__empty,
.pss-selection__empty {
	padding: 32px 0;
	text-align: center;
	color: var(--pss-secondary);
}
.pss-loading {
	text-align: center;
	padding: 24px;
	color: var(--pss-secondary);
	font-size: 14px;
}

/* ──────────────────────────────────────────────
   Asset 卡片网格
────────────────────────────────────────────── */
.pss-grid,
.pss-public-grid.pss-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 12px;
}

@media (min-width: 900px) {
	.pss-grid,
	.pss-public-grid.pss-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1200px) {
	.pss-grid,
	.pss-public-grid.pss-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ──────────────────────────────────────────────
   卡片
────────────────────────────────────────────── */
.pss-card {
	background: var(--pss-card-bg);
	border-radius: var(--pss-radius);
	box-shadow: var(--pss-shadow);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.pss-card__img-wrap {
	display: block;
	position: relative;
	width: 100%;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: var(--pss-bg);
	border: none;
	padding: 0;
	cursor: pointer;
}

.pss-card__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .2s;
}
.pss-card__img-wrap:hover .pss-card__img { transform: scale(1.03); }

.pss-card__img--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	color: #aaa;
	font-size: 12px;
}

/* 类型徽章（卡片大图角标 + 版样组 meta 标签共用视觉） */
.pss-card__type-badge,
.pss-clg-list__meta dt {
	padding: 3px 8px;
	border-radius: 4px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .04em;
	color: #fff;
}

/* 版库详情字段胶囊（颜色 / 尺码 / 工艺等）：与 segmented tabs 轨道底色一致 */
.pss-detail__field-label {
	padding: 3px 8px;
	border-radius: calc(var(--pss-public-radius, var(--pss-radius)) - 3px);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .04em;
	background: var(--pss-bg, #f8f9fa);
	color: var(--pss-public-muted, var(--pss-secondary));
	border: 1px solid var(--pss-public-border, var(--pss-border));
}

.pss-card__type-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	background: rgba(0,0,0,.55);
	pointer-events: none;
}

.pss-card__type-badge--clothing,
.pss-clg-list__item[data-type="clothing"] .pss-clg-list__meta dt,
.pss-clg-detail-header[data-type="clothing"] .pss-clg-list__meta dt {
	background: #ff9900;
}

.pss-card__type-badge--print,
.pss-clg-list__item[data-type="print"] .pss-clg-list__meta dt,
.pss-clg-detail-header[data-type="print"] .pss-clg-list__meta dt {
	background: rgba(46,125,50,.85);
}

.pss-card__featured-badge {
	position: absolute;
	top: 8px;
	right: 8px;
	width: 38px;
	height: 38px;
	pointer-events: auto;
	cursor: default;
	z-index: 2;
	line-height: 0;
}

.pss-card__featured-icon {
	display: block;
	width: 100%;
	height: 100%;
}

/* 卡片内容 */
.pss-card__body {
	padding: 10px 12px 12px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	flex: 1;
}

.pss-card__code {
	font-size: 13px;
	line-height: var(--pss-line-height-tight);
	color: var(--pss-secondary);
	margin: 0;
}
.pss-card__code-inner {
	display: inline-flex;
	align-items: center;
	gap: 0.2em;
	max-width: 100%;
}
.pss-card__code-icon {
	display: block;
	width: 1.2em;
	height: 1.2em;
	flex-shrink: 0;
}
.pss-detail__info > .pss-card__code {
	margin: 0 0 4px;
}

.pss-card__title {
	font-size: var(--pss-font-size-lg);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	margin: 0;
}
.pss-card__title-icon {
	display: inline-block;
	width: 1.1em;
	height: 1.1em;
	vertical-align: -0.15em;
	margin-right: 0.12em;
}

.pss-card__title-btn {
	display: block;
	width: 100%;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
	text-align: left;
}
.pss-card__title-btn:hover { color: var(--pss-primary); }

.pss-card__meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 12px;
	color: var(--pss-secondary);
}

.pss-card__meta--price-moq {
	justify-content: space-between;
	width: 100%;
	gap: 10px;
}

@media (max-width: 599px) {
	.pss-card__meta--price-moq {
		flex-wrap: wrap;
		align-items: flex-start;
		row-gap: 6px;
	}

	.pss-card__moq {
		flex-basis: 100%;
		padding-right: 0;
	}
}

.pss-card__moq {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	flex-shrink: 0;
	line-height: 1;
	white-space: nowrap;
	padding-right: 6px;
}

.pss-card__moq-label {
	font-size: 13px;
	line-height: 1;
	color: var(--pss-secondary);
	font-weight: 400;
}

.pss-card__moq-qty {
	display: inline-flex;
	align-items: center;
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
	color: var(--pss-primary);
}

.pss-card__moq-icon {
	display: block;
	width: 22px;
	height: 22px;
	flex-shrink: 0;
}

.pss-card__price {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.35em;
	line-height: 1;
}

.pss-card__price-amount {
	display: inline-flex;
	align-items: center;
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
	color: #ff9900;
}

.pss-card__price-unit {
	display: inline-flex;
	align-items: center;
	font-size: 13px;
	line-height: 1;
	color: var(--pss-secondary);
	font-weight: 400;
}

.pss-card__price-sep-icon {
	display: block;
	width: 13px;
	height: 13px;
	flex-shrink: 0;
	/* 与 16px 加粗数字光学对齐：SVG 几何居中 ≠ 视觉居中 */
	transform: translateY(1px);
}

/* ──────────────────────────────────────────────
   分页
────────────────────────────────────────────── */
.pss-pagination {
	display: flex;
	justify-content: center;
	gap: 4px;
	margin-top: 24px;
	flex-wrap: wrap;
}
.pss-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 6px;
	border: 1px solid var(--pss-border);
	background: #fff;
	color: #333;
	font-size: 14px;
	text-decoration: none;
}
.pss-pagination .page-numbers.current {
	background: var(--pss-primary);
	color: #fff;
	border-color: var(--pss-primary);
}

/* ──────────────────────────────────────────────
   Public Modal（全局：`#pss-detail-modal`，不依赖 .pss-library-page）
────────────────────────────────────────────── */
.pss-modal {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: flex-end; /* 移动端从底部弹出 */
	box-sizing: border-box;
	width: 100%;
	max-width: 100vw;
	min-height: 100dvh;
}
@media (min-width: 600px) {
	.pss-modal { align-items: center; }
}

.pss-modal__overlay {
	position: absolute;
	inset: 0;
	background: rgba(0,0,0,.5);
}

.pss-modal__box {
	position: relative;
	background: #fff;
	border-radius: 12px 12px 0 0;
	width: 100%;
	max-height: min(92vh, calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 16px));
	overflow-y: auto;
	z-index: 1;
	-webkit-overflow-scrolling: touch;
}
@media (min-width: 600px) {
	.pss-modal__box {
		border-radius: 12px;
		max-width: 680px;
		margin: auto;
	}
}

.pss-modal__close {
	position: sticky;
	top: 8px;
	float: right;
	margin: 8px 12px 0 0;
	width: 36px;
	height: 36px;
	padding: 0;
	background: var(--pss-bg);
	border: none;
	border-radius: 50%;
	color: var(--pss-text-body, #1d2327);
	line-height: 1;
	cursor: pointer;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
}

.pss-modal-close-icon {
	display: block;
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}

.pss-modal__body {
	padding: 8px 16px 24px;
}

/* ── 详情 Modal（#pss-detail-modal）布局分层 ──
 *   box    — 视口框架（flex 列，overflow:hidden，自身不滚动）
 *   scroll — 可滚动区（flex:1，#pss-modal-scroll > #pss-modal-body）
 *   footer — 固定底栏（flex:0，#pss-modal-footer，AJAX footer_html）
 *   scrollbar — 浮层滚动条（叠在 scroll 之上）
 *
 * 底栏与 scroll 为 box 内同级 flex 子项；禁止把 footer 放入 scroll/body。 */
.pss-modal#pss-detail-modal {
	z-index: 10050;
	--pss-detail-modal-body-pad-bottom: 32px;
	--pss-detail-modal-footer-pad: calc(12px + env(safe-area-inset-bottom, 0px));
}

.pss-modal#pss-detail-modal .pss-modal__shell {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 100%;
	margin-inline: auto;
	box-sizing: border-box;
}

@media (min-width: 600px) {
	.pss-modal#pss-detail-modal .pss-modal__shell {
		width: min(100% - 32px, 680px);
		max-width: 680px;
	}
}

.pss-modal#pss-detail-modal .pss-modal__box,
.pss-modal#pss-detail-modal .pss-modal__box.pss-modal-content {
	border-radius: 0;
	width: 100%;
	max-width: 100%;
	margin-inline: 0;
	box-sizing: border-box;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
	position: relative;
	max-height: min(92vh, calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 16px));
}

.pss-modal#pss-detail-modal .pss-modal__scroll.is-load-fail {
	display: flex;
	flex-direction: column;
}

.pss-modal#pss-detail-modal #pss-modal-body.is-load-fail {
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100%;
	box-sizing: border-box;
	padding: 24px 16px;
}

.pss-detail-modal__load-fail-text {
	margin: 0;
	text-align: center;
	font-size: 14px;
	color: var(--pss-secondary);
	line-height: 1.5;
}

.pss-modal#pss-detail-modal .pss-modal__scroll {
	flex: 1 1 auto;
	min-height: 0;
	overflow-x: hidden;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	box-sizing: border-box;
	width: 100%;
	scrollbar-width: none;
	-ms-overflow-style: none;
	outline: none;
}

.pss-modal#pss-detail-modal .pss-modal__scroll::-webkit-scrollbar {
	display: none;
	width: 0;
	height: 0;
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar {
	position: absolute;
	top: 8px;
	right: 2px;
	bottom: 8px;
	width: 12px;
	z-index: 2;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.28s ease;
}

/* 可滚动：右侧保留透明命中区，便于鼠标移入唤出（mac 行为） */
.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-scrollable {
	pointer-events: auto;
}

/* 悬停 / 滚动 / 拖拽 / 键盘聚焦时显示 */
.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-scrollable.is-active {
	opacity: 1;
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar-thumb {
	position: absolute;
	top: 0;
	left: 3px;
	right: 3px;
	min-height: 32px;
	border-radius: 999px;
	background: rgba(0, 0, 0, 0.42);
	cursor: grab;
	touch-action: none;
	opacity: 0;
	transition: opacity 0.28s ease, background-color 0.15s ease;
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-active .pss-modal__scrollbar-thumb {
	opacity: 1;
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-scrollable.is-active:hover .pss-modal__scrollbar-thumb,
.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-dragging .pss-modal__scrollbar-thumb {
	background: rgba(0, 0, 0, 0.58);
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar-thumb:focus-visible {
	outline: 2px solid var(--pss-primary, #2271b1);
	outline-offset: 1px;
	opacity: 1;
}

.pss-modal#pss-detail-modal .pss-modal__scrollbar.is-dragging .pss-modal__scrollbar-thumb,
.pss-modal#pss-detail-modal .pss-modal__scrollbar-thumb:active {
	cursor: grabbing;
}

.pss-modal#pss-detail-modal .pss-modal__body {
	flex: none;
	width: 100%;
	padding: 0 0 var(--pss-detail-modal-body-pad-bottom);
	overflow: visible;
	box-sizing: border-box;
}

.pss-modal#pss-detail-modal .pss-modal__footer {
	flex: 0 0 auto;
	flex-shrink: 0;
	width: 100%;
	box-sizing: border-box;
	padding: 12px 16px var(--pss-detail-modal-footer-pad);
	border-top: 1px solid var(--pss-border);
	background: #fff;
	position: relative;
	z-index: 2;
}

.pss-modal#pss-detail-modal .pss-modal__footer[hidden] {
	display: none !important;
}

.pss-modal#pss-detail-modal .pss-modal__footer:not([hidden]) {
	display: block;
}

.pss-modal#pss-detail-modal .pss-modal__footer .pss-btn {
	width: 100%;
	margin: 0;
}

.pss-modal#pss-detail-modal:has(#pss-modal-footer:not(:empty)) {
	--pss-detail-modal-footer-height: calc(12px + 44px + 12px + env(safe-area-inset-bottom, 0px));
}

.pss-modal#pss-detail-modal:has(#pss-modal-footer:not(:empty)) .pss-modal__scrollbar {
	bottom: calc(8px + var(--pss-detail-modal-footer-height, 80px));
}

.pss-modal#pss-detail-modal .pss-modal__close {
	position: absolute;
	top: 8px;
	right: 8px;
	float: none;
	margin: 0;
	z-index: 3;
}

@media (max-width: 599px) {
	.pss-modal#pss-detail-modal {
		align-items: stretch;
		height: 100dvh;
		min-height: 100dvh;
		max-height: 100dvh;
	}

	.pss-modal#pss-detail-modal .pss-modal__shell {
		flex: 1 1 auto;
		align-self: stretch;
		width: 100%;
		max-width: 100%;
		height: 100%;
		min-height: 100dvh;
		display: flex;
		flex-direction: column;
	}

	.pss-modal#pss-detail-modal .pss-modal__box,
	.pss-modal#pss-detail-modal .pss-modal__box.pss-modal-content {
		flex: 1 1 auto;
		width: 100%;
		height: 100%;
		min-height: 0;
		max-height: 100dvh;
		margin: 0;
		padding-bottom: 0;
		border-radius: 0;
	}

	.pss-modal#pss-detail-modal .pss-modal__close {
		top: calc(8px + env(safe-area-inset-top, 0px));
		right: calc(8px + env(safe-area-inset-right, 0px));
	}

	.pss-modal#pss-detail-modal .pss-modal__scroll {
		flex: 1 1 auto;
		min-height: 0;
	}

	.pss-modal#pss-detail-modal .pss-modal__body {
		flex: none;
		min-height: auto;
		overflow: visible;
		padding-bottom: var(--pss-detail-modal-body-pad-bottom);
	}

	/* 移动端保留原生触摸滚动，隐藏浮层滚动条避免与手势冲突 */
	.pss-modal#pss-detail-modal .pss-modal__scrollbar {
		display: none;
	}
}

/* ── 详情 modal 内容 ── */
.pss-detail {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.pss-detail__gallery {
	flex: 0 0 auto;
	width: 100%;
}

.pss-detail__cover-wrap {
	position: relative;
	width: 100%;
}

.pss-detail__cover-wrap .pss-card__featured-badge {
	top: auto;
	bottom: 8px;
	right: 8px;
}

.pss-detail__main {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
	min-width: 0;
}

@media (min-width: 600px) {
	.pss-detail__main {
		flex-direction: row;
		align-items: flex-start;
		gap: 20px;
	}
}

.pss-detail__cover {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 8px;
	display: block;
}

.pss-modal#pss-detail-modal .pss-detail__cover,
.pss-modal#pss-detail-modal .pss-detail__cover-placeholder {
	border-radius: 0;
}

.pss-modal#pss-detail-modal .pss-detail__thumbs {
	padding-inline: 16px;
}

.pss-modal#pss-detail-modal .pss-detail__main {
	padding-inline: 16px;
}

.pss-detail__thumbs {
	display: flex;
	gap: 6px;
	margin-top: 8px;
	overflow-x: auto;
}
.pss-detail__thumb {
	flex: 0 0 56px;
	height: 56px;
	border: 2px solid transparent;
	border-radius: 4px;
	overflow: hidden;
	cursor: pointer;
	padding: 0;
	background: none;
}
.pss-detail__thumb--active { border-color: var(--pss-primary); }
.pss-detail__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

.pss-detail__info {
	flex: 1 1 auto;
	width: 100%;
	min-width: 0;
}

.pss-detail__actions.pss-asset-detail-actions {
	display: block;
	width: 100%;
	min-width: 0;
	margin-top: 0;
}

@media (min-width: 600px) {
	.pss-detail__actions.pss-asset-detail-actions {
		flex: 0 0 280px;
		width: 280px;
		max-width: 280px;
	}
}

.pss-detail__actions .pss-add-form {
	border-top: 1px solid var(--pss-border);
	padding-top: 16px;
	margin-top: 0;
}

@media (min-width: 600px) {
	.pss-detail__actions .pss-add-form {
		border-top: none;
		border-left: 1px solid var(--pss-border);
		padding-top: 0;
		padding-left: 20px;
		margin-top: 0;
	}
}
.pss-detail__title {
	font-size: var(--pss-font-size-lg);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	margin: 0 0 10px;
}
.pss-detail__badges { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.pss-detail__meta { margin: 0 0 20px; }

.pss-detail__meta.pss-card__meta--price-moq {
	justify-content: space-between;
	flex-wrap: nowrap;
	align-items: center;
	width: 100%;
}

.pss-detail__meta .pss-card__moq {
	flex-basis: auto;
	margin-left: auto;
	padding-right: 0;
}

@media (max-width: 599px) {
	.pss-detail__meta.pss-card__meta--price-moq {
		flex-wrap: nowrap;
		align-items: center;
		row-gap: 0;
	}

	.pss-detail__meta .pss-card__moq {
		flex-basis: auto;
	}
}
.pss-detail__unit { font-size: 12px; background: var(--pss-bg); padding: 3px 8px; border-radius: 4px; }
.pss-detail__stock-status {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--pss-success);
	margin: 0 0 10px;
}
.pss-detail__stock-status-icon {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
}
.pss-detail__stock-status-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}
.pss-detail__stock-status-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin: 0 0 10px;
}
.pss-detail__stock-status-row .pss-detail__stock-status {
	margin: 0;
}
.pss-detail__field-val,
.pss-detail__desc {
	font-size: 13px;
	font-weight: normal;
	color: #1d2327;
}
.pss-detail__desc {
	line-height: 1.65;
	margin: 12px 0 0;
	padding-top: 12px;
	border-top: 1px dashed var(--pss-border);
}
.pss-detail__desc p {
	margin: 0 0 8px;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}
.pss-detail__desc p:last-child {
	margin-bottom: 0;
}
.pss-detail__field {
	display: flex;
	gap: 8px;
	font-size: 13px;
	line-height: 1.35;
	margin-bottom: 6px;
	align-items: center;
}
.pss-detail__field-label {
	display: inline-block;
	flex: 0 0 auto;
	white-space: nowrap;
}

/* 加入表单 */
.pss-add-form { border-top: 1px solid var(--pss-border); padding-top: 16px; margin-top: 16px; }
.pss-add-form__row {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
	flex-wrap: wrap;
}
.pss-add-form__row label {
	font-size: 13px;
	color: var(--pss-secondary);
	white-space: nowrap;
	min-width: 40px;
}
.pss-add-form__row--qty { align-items: center; }
.pss-add-form__qty-field {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 4px;
}
.pss-qty-stepper {
	display: flex;
	align-items: stretch;
	gap: 8px;
	width: 100%;
	min-width: 0;
	box-sizing: border-box;
}
.pss-qty-stepper__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 36px;
	width: 36px;
	min-width: 36px;
	min-height: 44px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--pss-border);
	border-radius: 6px;
	background: #fff;
	color: #ff9900;
	cursor: pointer;
	box-sizing: border-box;
	font-family: inherit;
	line-height: 0;
}
.pss-qty-stepper__icon {
	display: block;
	width: 16px;
	height: 16px;
}
.pss-qty-stepper__btn:hover:not(:disabled) {
	background: rgba(255, 153, 0, 0.08);
}
.pss-qty-stepper__btn:focus {
	outline: none;
	border-color: #ff9900;
}
.pss-qty-stepper__btn:focus-visible {
	outline: 2px solid #ff9900;
	outline-offset: 1px;
}
.pss-qty-stepper__btn:disabled {
	color: #c3c4c7;
	border-color: var(--pss-border);
	cursor: not-allowed;
	background: #fff;
	opacity: 1;
}
.pss-qty-stepper .pss-input--qty {
	flex: 1 1 auto;
	width: auto;
	min-width: 0;
	min-height: 44px;
	margin: 0;
	padding: 10px 8px;
	border-radius: 6px;
	text-align: center;
	font-weight: 700;
	-moz-appearance: textfield;
}
.pss-qty-stepper .pss-input--qty::-webkit-outer-spin-button,
.pss-qty-stepper .pss-input--qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.pss-add-form__row .pss-input,
.pss-add-form__row .pss-select,
.pss-add-form__row .pss-textarea,
.pss-add-form__row .pss-portal-form-select-switcher,
.pss-add-form__row .pss-add-form__qty-field { flex: 1; margin: 0; min-width: 0; width: 100%; }
.pss-modal#pss-detail-modal .pss-portal-form-select-switcher .pss-portal-company-switcher__trigger {
	width: 100%;
	padding: 10px 12px;
	min-height: 44px;
	background: #fff;
	border: 1px solid var(--pss-border);
	border-radius: 6px;
	font-size: var(--pss-font-size-base);
	font-weight: 400;
}
.pss-modal#pss-detail-modal .pss-portal-form-select-switcher .pss-portal-company-switcher__menu {
	min-width: 0;
	width: auto;
	max-width: calc(100vw - 16px);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
.pss-modal#pss-detail-modal .pss-add-form .pss-textarea,
.pss-modal#pss-detail-modal .pss-add-form input[name="recolor_note"] {
	font-size: 13px;
	line-height: 1.65;
	color: #1d2327;
}
.pss-modal#pss-detail-modal .pss-add-form .pss-textarea {
	resize: none;
}
.pss-add-form__unit-text {
	font-size: 13px;
	line-height: 1;
	color: var(--pss-secondary);
	white-space: nowrap;
}

/* ──────────────────────────────────────────────
   选版篮页面
────────────────────────────────────────────── */
.pss-selection__title {
	font-size: 20px;
	font-weight: 700;
	margin: 0 0 16px;
}
.pss-selection__count {
	display: inline-block;
	background: var(--pss-primary);
	color: #fff;
	border-radius: 12px;
	font-size: 13px;
	padding: 2px 8px;
	margin-left: 8px;
	vertical-align: middle;
}

/* 选版篮条目 */
.pss-sel-item {
	display: flex;
	gap: 12px;
	padding: 14px 0;
	border-bottom: 1px solid var(--pss-border);
	align-items: flex-start;
}
.pss-sel-item__thumb {
	flex: 0 0 72px;
	width: 72px;
	height: 90px;
	border-radius: 6px;
	overflow: hidden;
	background: var(--pss-bg);
}
.pss-sel-item__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.pss-sel-item__info { flex: 1; min-width: 0; }
.pss-sel-item__code { font-size: 11px; color: var(--pss-secondary); margin: 0 0 2px; }
.pss-sel-item__title { font-size: 14px; font-weight: 600; margin: 0 0 4px; }
.pss-sel-item__type {
	display: inline-block;
	font-size: 11px;
	padding: 2px 6px;
	border-radius: 3px;
	background: var(--pss-bg);
	color: var(--pss-secondary);
	margin-bottom: 4px;
}
.pss-sel-item__variant { font-size: 12px; color: #666; }

.pss-sel-item__controls { flex: 0 0 auto; display: flex; flex-direction: column; gap: 8px; min-width: 160px; }
@media (max-width: 480px) {
	.pss-sel-item { flex-direction: column; }
	.pss-sel-item__controls { min-width: 0; width: 100%; }
}

.pss-sel-item__qty-row {
	display: flex;
	gap: 6px;
	align-items: center;
}
.pss-sel-item__qty-row .pss-sel-qty { width: 72px; flex: none; }
.pss-sel-item__qty-row .pss-sel-unit { flex: 1; }

.pss-sel-item__actions { display: flex; gap: 8px; }
.pss-sel-item__actions .pss-btn { flex: 1; min-height: 44px; font-size: 13px; }

/* ──────────────────────────────────────────────
   报价状态徽章（前台）
────────────────────────────────────────────── */
.pss-quote-status { display:inline-block; padding:3px 10px; border-radius:12px; font-size:12px; font-weight:600; }
.pss-quote-status--draft     { background:#f3f3f3; color:#555; }
.pss-quote-status--sent      { background:#cce5ff; color:#004085; }
.pss-quote-status--accepted  { background:#d4edda; color:#155724; }
.pss-quote-status--rejected  { background:#f8d7da; color:#721c24; }
.pss-quote-status--expired   { background:#fff3cd; color:#856404; }
.pss-quote-status--cancelled { background:#e2e3e5; color:#383d41; }

.pss-inquiry-status { display:inline-block; padding:3px 10px; border-radius:12px; font-size:12px; font-weight:600; }
.pss-inquiry-status--submitted { background:#fff3cd; color:#856404; }
.pss-inquiry-status--reviewing { background:#cce5ff; color:#004085; }

/* ──────────────────────────────────────────────
   客户报价详情
────────────────────────────────────────────── */
.pss-back-link { font-size:14px; color:var(--pss-secondary); text-decoration:none; display:inline-block; margin-bottom:16px; }
.pss-back-link:hover { color:var(--pss-primary); }
.pss-qd-header { display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.pss-qd-header h2 { margin:0; font-size:22px; font-weight:700; }
.pss-qd-summary { background:#f8f9fa; border-radius:8px; padding:14px 16px; margin-bottom:16px; }
.pss-qd-summary__row { display:flex; gap:12px; font-size:14px; margin-bottom:6px; }
.pss-qd-summary__row:last-child { margin-bottom:0; }
.pss-qd-summary__label { color:var(--pss-secondary); min-width:80px; }
.pss-qd-items h3 { font-size:16px; font-weight:700; margin:0 0 12px; }
.pss-qd-item {
	display:flex; gap:14px; padding:14px 0; border-bottom:1px solid var(--pss-border); align-items:flex-start;
}
.pss-qd-item:last-child { border-bottom:none; }
.pss-qd-item__thumb { flex:0 0 64px; width:64px; height:80px; border-radius:6px; overflow:hidden; background:var(--pss-bg); }
.pss-qd-item__thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.pss-qd-item__info { flex:1; }
.pss-qd-item__code { font-size:11px; color:var(--pss-secondary); margin:0 0 3px; }
.pss-qd-item__title { font-size:14px; font-weight:600; margin:0 0 4px; }
.pss-qd-item__type { font-size:12px; color:var(--pss-secondary); margin:0 0 6px; }
.pss-qd-item__variant { font-size:12px; color:#555; }
.pss-qd-item__pricing { flex:0 0 auto; min-width:140px; }
.pss-qd-item__row { display:flex; justify-content:space-between; font-size:13px; margin-bottom:4px; }
.pss-qd-item__row--total { border-top:1px solid var(--pss-border); padding-top:4px; margin-top:4px; }
.pss-qd-item__label { color:var(--pss-secondary); }
.pss-qd-item__note { font-size:12px; color:#777; margin-top:6px; }
.pss-qd-grand-total {
	display:flex; justify-content:flex-end; align-items:center; gap:12px;
	padding:14px 0; font-size:16px;
	border-top:2px solid var(--pss-border); margin-top:8px;
}
.pss-qd-grand-total strong { font-size:20px; color:var(--pss-primary); }
.pss-qd-actions { display:flex; gap:12px; margin-top:20px; flex-wrap:wrap; }
.pss-qd-actions .pss-btn { min-width:140px; }
.pss-btn--success { background:var(--pss-success); color:#fff; }
.pss-btn--success:hover { background:#2a8a43; color:#fff; }
.pss-qd-result-static { padding:12px 16px; border-radius:8px; margin-top:16px; font-size:14px; font-weight:600; }
.pss-qd-result-static--accepted { background:#d4edda; color:#155724; }
.pss-qd-result-static--rejected { background:#f8d7da; color:#721c24; }
.pss-qd-result { padding:12px 16px; border-radius:8px; margin-top:16px; }
.pss-notice {
	border: 0;
	border-radius: var(--pss-radius);
	box-shadow: none;
	padding: var(--pss-space-5);
	margin: 0 0 var(--pss-public-card-gap);
	background: #eff6ff;
	color: #1e40af;
	font-size: var(--pss-font-size-lg);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-relaxed);
	text-align: center;
	box-sizing: border-box;
}
.pss-notice p,
.pss-notice__text,
.pss-notice .pss-login-invite-card__lead,
.pss-notice .pss-login-invite-card__copy,
.pss-notice .pss-login-invite-invalid__main,
.pss-notice .pss-login-invite-invalid__muted,
.pss-notice .pss-clg-feedback__hint {
	margin: 0;
	text-align: center;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}
.pss-notice .pss-login-invite-card__copy,
.pss-notice .pss-login-invite-invalid__muted,
.pss-notice .pss-clg-feedback__hint {
	margin-top: 0.35rem;
	opacity: 0.92;
}
.pss-notice:last-child {
	margin-bottom: 0;
}
.pss-notice--success,
.pss-notice-success.pss-notice,
.pss-notice.pss-notice-success {
	background: #ecfdf3;
	color: #166534;
}
.pss-notice--error,
.pss-notice-error.pss-notice {
	background: #fef2f2;
	color: #991b1b;
}
.pss-notice--warning,
.pss-notice-warning.pss-notice {
	background: #fffbeb;
	color: #92400e;
}
.pss-notice--info,
.pss-notice-info.pss-notice {
	background: #eff6ff;
	color: #1e40af;
}
.pss-notice--prominent {
	font-size: var(--pss-font-size-xl);
	padding: var(--pss-space-5);
}
/* Phase 16G-Hotfix / 18J-R2 / 20A：软提示页内边距；entry-content 宽度交由主题容器 */
.pss-soft-notice-page.entry-content {
	padding-left: 0;
	padding-right: 0;
}
.pss-soft-notice-page .pss-soft-notice-page__inner {
	margin-left: 0;
	margin-right: 0;
	padding-bottom: 2rem;
}

/* ──────────────────────────────────────────────
   打样轮次（客户视图）
────────────────────────────────────────────── */
.pss-sr-customer {
	border:1px solid var(--pss-border);border-radius:var(--pss-radius);
	padding:14px;margin-bottom:12px;background:#fafafa;
}
.pss-sr-customer__header { display:flex;align-items:center;gap:10px;margin-bottom:10px; }
.pss-sr-customer__no { font-weight:700;font-size:14px; }
.pss-sr-customer__img img {
	max-width:100%;border-radius:6px;display:block;margin-bottom:10px;
}
.pss-sr-customer__img { margin-bottom:10px; }
.pss-sr-download { font-size:12px;color:var(--pss-primary); }
.pss-sr-customer__feedback {
	background:#fff3cd;
	border:1px solid #ffc107;
	padding:8px 10px;border-radius:var(--pss-radius);font-size:13px;margin-bottom:10px;
}
.pss-sr-customer__approved { color:var(--pss-success);font-size:13px;font-weight:600; }
.pss-sr-customer__actions { margin-top:10px; }
.pss-sr-customer__btns { display:flex;gap:10px;margin-top:8px;flex-wrap:wrap; }
.pss-sr-customer__btns .pss-btn { flex:1;min-width:120px; }
.pss-sr-feedback-input { width:100%; }

/* ──────────────────────────────────────────────
   提交询价区域
────────────────────────────────────────────── */
.pss-submit-inquiry {
	margin-top: 24px;
	padding-top: 20px;
	border-top: 2px solid var(--pss-border);
}
/* Phase 18J-R9（1.2.96）：原 `.pss-submit-inquiry__inner { max-width: 560px }` 已删除。
 * 该限宽在 .pss-frontend-shell 内一直被 6-2 块退化为 none；模板内层 class 保留作语义标记。 */
.pss-submit-inquiry__title {
	font-size: 16px;
	font-weight: 700;
	margin: 0 0 14px;
}
.pss-submit-inquiry__field {
	margin-bottom: 14px;
}
.pss-submit-inquiry__field label {
	display: block;
	font-size: 13px;
	color: var(--pss-secondary);
	margin-bottom: 6px;
}
.pss-submit-inquiry__note {
	font-size: 12px;
	color: var(--pss-secondary);
	margin-top: 10px;
	line-height: 1.5;
}

/* 提交成功 */
.pss-submit-success {
	text-align: center;
	padding: 40px 20px;
}
.pss-submit-success__icon {
	width: 60px;
	height: 60px;
	background: var(--pss-success);
	color: #fff;
	border-radius: 50%;
	font-size: 28px;
	line-height: 60px;
	margin: 0 auto 16px;
}
.pss-submit-success h3 {
	font-size: 20px;
	font-weight: 700;
	margin: 0 0 12px;
}
.pss-submit-success p {
	font-size: 14px;
	color: var(--pss-secondary);
	margin: 0 0 8px;
}
.pss-submit-success strong {
	color: #333;
}

/* ──────────────────────────────────────────────
   Toast 通知
────────────────────────────────────────────── */
.pss-toast {
	position: fixed;
	bottom: 80px;
	left: 50%;
	transform: translateX(-50%);
	background: rgba(0,0,0,.8);
	color: #fff;
	padding: 10px 20px;
	border-radius: 24px;
	font-size: 14px;
	z-index: 9999;
	pointer-events: none;
	white-space: nowrap;
	opacity: 0;
	transition: opacity .25s;
}
.pss-toast--visible { opacity: 1; }

/* ──────────────────────────────────────────────
   Phase 14G：客户前台独立登录 [.pss-customer-login*]
────────────────────────────────────────────── */
/* Phase 18J-R9（1.2.96）：移除 `max-width: 420px / margin: 1.5em auto / padding: 0 16px`，
 * 这三项已被 6-2 块在 .pss-frontend-shell 内退化；保留仅与视觉无宽度副作用的属性。 */
.pss-customer-login {
	box-sizing: border-box;
	font-size: 15px;
}
.pss-customer-login__title {
	font-size: 1.35em;
	font-weight: 700;
	margin: 0 0 0.75em;
	line-height: 1.25;
}
.pss-customer-login-form {
	background: rgba(255, 255, 255, .72);
	border: 1px solid rgba(0, 0, 0, .08);
	border-radius: 12px;
	padding: 18px 20px 22px;
	box-sizing: border-box;
}
.pss-customer-login-field label {
	display: block;
	font-weight: 600;
	font-size: 13px;
	margin-bottom: 4px;
}
.pss-customer-login-field + .pss-customer-login-field {
	margin-top: 12px;
}
.pss-customer-login-field--inline label {
	display: inline;
	font-weight: 500;
}
.pss-login-remember-row {
	display: flex;
	width: 100%;
	justify-content: space-between;
	align-items: center;
	gap: var(--pss-space-3, 12px);
	flex-wrap: wrap;
	text-align: left;
	margin: 14px 0 0;
	box-sizing: border-box;
}
.pss-customer-login .pss-login-remember-row {
	flex-direction: row;
}
.pss-login-remember {
	display: inline-flex;
	align-items: center;
	gap: var(--pss-space-2, 8px);
	margin: 0;
	font-weight: 500;
	font-size: 13px;
	text-align: left;
}
.pss-login-forgot-link {
	margin-left: auto;
	font-size: var(--pss-font-size-sm, 13px);
	font-weight: var(--pss-font-weight-medium, 500);
	text-decoration: none;
	text-align: right;
	white-space: nowrap;
}

/* Phase 20E-R2：登录页密码找回弹窗（独立于 #pss-detail-modal） */
.pss-password-modal {
	position: fixed;
	inset: 0;
	z-index: 100100;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--pss-space-page-x, 16px);
	box-sizing: border-box;
}
.pss-password-modal[hidden] {
	display: none !important;
}
.pss-password-modal.is-open {
	display: flex;
}
body.pss-password-modal-open {
	overflow: hidden;
}
.pss-password-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.45);
	border: 0;
	padding: 0;
	margin: 0;
	cursor: pointer;
}
.pss-password-modal__box {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: min(100%, 520px);
	background: var(--pss-card-bg, #fff);
	border: 1px solid var(--pss-card-border, #c3c4c7);
	border-radius: var(--pss-card-radius, 8px);
	box-shadow: none;
	box-sizing: border-box;
}
.pss-password-modal__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--pss-space-3, 12px);
	padding: var(--pss-space-4, 16px) var(--pss-space-4, 16px) 0;
}
.pss-password-modal__title {
	margin: 0;
	flex: 1;
	min-width: 0;
	font-size: var(--pss-font-size-lg, 1.125rem);
	font-weight: var(--pss-font-weight-semibold, 600);
	line-height: var(--pss-line-height-tight, 1.3);
	color: var(--pss-text-heading, #1d2327);
}
.pss-password-modal__close {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--pss-text-muted, #646970);
	line-height: 1;
	cursor: pointer;
	border-radius: 4px;
}

.pss-password-modal__close .pss-modal-close-icon {
	width: 16px;
	height: 16px;
}
.pss-password-modal__close:hover,
.pss-password-modal__close:focus {
	color: var(--pss-text-heading, #1d2327);
}
.pss-password-modal__body {
	padding: var(--pss-space-4, 16px);
}
.pss-password-modal__body > .pss-notice {
	margin-bottom: var(--pss-space-3, 12px);
}
.pss-password-modal__panel .pss-login-panel__lead {
	margin: 0 0 var(--pss-space-3, 12px);
}
.pss-password-modal__actions {
	display: flex;
	flex-direction: column;
	gap: var(--pss-space-2, 8px);
	margin-top: var(--pss-space-4, 16px);
}
.pss-frontend-shell .pss-password-modal__box .pss-customer-login-input,
.pss-frontend-shell .pss-password-modal__box .pss-input {
	width: 100%;
	box-sizing: border-box;
}
.pss-customer-login-input[type="text"],
.pss-customer-login-input[type="password"] {
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	padding: 8px 10px;
	line-height: 1.35;
	border: 1px solid #c3c4c7;
	border-radius: 4px;
}
.pss-customer-login-submit {
	min-width: 120px;
}
.pss-customer-login-actions {
	margin: 14px 0 0;
}
.pss-customer-login-links {
	margin: 14px 0 0;
	font-size: 14px;
	line-height: 1.45;
}
.pss-customer-login-links__sep {
	opacity: .55;
}
.pss-customer-login-error {
	background: #fcf0f1;
	border: 1px solid #d63638;
	color: #1d2327;
	border-radius: 8px;
	padding: 10px 14px;
	margin-bottom: 14px;
	font-size: 14px;
}
.pss-customer-login-notice {
	background: rgba(255, 255, 255, .72);
	border: 1px solid rgba(0, 0, 0, .08);
	border-radius: 12px;
	padding: 16px 20px;
}
.pss-customer-login-notice p.description {
	color: #555;
	font-size: 13px;
	margin-top: 6px !important;
}

/* Phase 18C — 登录窄壳 — Phase 18J-R2 收口为 `.pss-public-wrap--narrow`（外层 `.pss-public-page--login`）
 * Phase 18J-R9（1.2.96）：移除 `max-width: min(100%, var(--pss-public-narrow-width))`，
 * 该限宽在壳内已由 6-2 块退化；现在改为单一全宽规则，登录页跟随 `.pss-frontend-shell` 1180 节奏。 */
.pss-public-page--login .pss-login-layout.pss-public-wrap--narrow {
	width: 100%;
	font-size: 15px;
	line-height: 1.5;
}
.pss-login-title,
.pss-login-subtitle,
.pss-login-tagline {
	margin: 0;
}
.pss-login-subtitle {
	font-size: 15px;
	font-weight: 600;
	color: #1d2327;
	margin-top: 0.35rem;
}
.pss-login-tagline {
	font-size: 14px;
	color: #50575e;
	margin-top: 0.45rem;
	line-height: 1.45;
}
.pss-login-heading {
	margin-bottom: 0.25rem;
}
.pss-login-card {
	padding: 18px 20px 22px;
	box-sizing: border-box;
}
.pss-login-card__body {
	padding: 0;
}
.pss-login-panel__title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 0 0 0.35rem;
	line-height: 1.35;
	color: #1d2327;
}
.pss-login-panel__lead {
	margin: 0 0 1rem;
	font-size: 14px;
	color: #50575e;
	line-height: 1.55;
}
/* Phase 19G / 20H：Google 快捷登录按钮与登录操作行 */
.pss-login-actions {
	display: flex;
	align-items: center;
	gap: var(--pss-space-3);
	width: 100%;
}

.pss-login-actions .pss-btn {
	min-width: 0;
}

.pss-login-actions__or {
	flex: 0 0 auto;
	color: var(--pss-text-muted);
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-tight);
	white-space: nowrap;
}

.pss-login-submit,
.pss-login-google__button {
	flex: 1 1 0;
	justify-content: center;
	gap: 8px;
}

.pss-login-google__button {
	display: inline-flex;
	align-items: center;
}

.pss-login-google__icon {
	display: inline-flex;
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
	align-items: center;
	justify-content: center;
}

.pss-login-google__icon svg,
.pss-login-google__svg {
	display: block;
	width: 100%;
	height: 100%;
}

@media (max-width: 520px) {
	.pss-login-actions {
		flex-direction: column;
		align-items: stretch;
	}

	.pss-login-actions__or {
		align-self: center;
	}

	.pss-login-submit,
	.pss-login-google__button {
		width: 100%;
	}
}

/* Phase 20H-R1：邀请绑定场景登录 / 注册双栏布局 */
.pss-login-invite-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--pss-space-5);
	align-items: stretch;
}

.pss-login-invite-layout > * {
	min-width: 0;
}

.pss-login-invite-layout__login,
.pss-login-invite-layout__register {
	height: 100%;
}

@media (max-width: 720px) {
	.pss-login-invite-layout {
		grid-template-columns: 1fr;
	}
}

/* Phase 20H-R2 / R3：邀请绑定成功提示（复用 .pss-notice--success.pss-notice--prominent） */

/* Phase 20H-R3+：客户前台 notice / 横幅统一四周边框，不使用左侧 accent 色条（public.css 内已无 border-left） */

.pss-login-divider {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: var(--pss-space-4, 16px) 0;
	color: #646970;
	font-size: 0.875rem;
}
.pss-login-divider::before,
.pss-login-divider::after {
	content: "";
	flex: 1;
	border-top: 1px solid var(--pss-border, #e5e7eb);
}
.pss-login-invite-card__lead {
	font-weight: 700;
	font-size: 15px;
	margin: 0 0 0.35rem;
	color: #1d2327;
}
.pss-login-invite-card__copy {
	margin: 0 0 0.85rem;
	font-size: 14px;
	color: #1d2327;
	line-height: 1.5;
	opacity: .95;
}
.pss-login-invite-card__meta {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.35rem 1rem;
	margin: 0;
	font-size: 14px;
}
.pss-login-invite-card__meta dt {
	margin: 0;
	color: #50575e;
	font-weight: 600;
}
.pss-login-invite-card__meta dd {
	margin: 0;
	word-break: break-word;
	color: #1d2327;
}
.pss-login-invite-invalid__main {
	margin: 0 0 0.35rem;
	font-weight: 600;
}
.pss-login-invite-invalid__muted {
	margin: 0;
	font-size: 13px;
	line-height: 1.45;
	color: #50575e;
}
.pss-login-help {
	font-size: 13px;
	color: #50575e;
	line-height: 1.55;
	margin: 0;
}
.pss-login-foot {
	font-size: 13px;
	color: #646970;
}
.pss-login-no-invite {
	border-radius: var(--pss-public-radius, 8px);
	border: 1px dashed rgba( 0, 0, 0, 0.12 );
	padding: 1rem 1.1rem;
	background: rgba( 255, 255, 255, 0.65 );
}
.pss-login-layout .pss-login-card .pss-customer-login-form {
	background: transparent;
	border: none;
	padding: 0;
	box-shadow: none;
}
.pss-login-layout .pss-customer-login-input,
.pss-login-layout .pss-customer-login-input.pss-input {
	min-height: 44px;
	padding: 10px 12px;
	font-size: 15px;
	border-radius: 6px;
}
.pss-login-layout .pss-customer-login-input[readonly] {
	background: var(--pss-bg, #f8f9fa);
	color: #1d2327;
	cursor: default;
}
.pss-login-logged-in__actions {
	display: flex;
	flex-direction: column;
	gap: 0.65rem;
	margin-top: 0.85rem;
}
/* Phase 18J-R9（1.2.96）：移除原 `@media (min-width: 480px) { ... { max-width: 320px } }`，
 * 该限宽在壳内已由 6-3 块退化；登录后的个人中心 actions 跟随父容器全宽。 */

/* Phase 18D：个人中心 / 企业选择 — Phase 18J：外壳由 .pss-public-wrap 统一宽度与左右留白
 * Phase 20A+：上下边距仅由 .pss-frontend-root margin-block 控制，不再单独加 margin-top。
 * Phase 20J+：Shell 内横向留白统一由 `.pss-frontend-shell` 归零，此处不再单独处理 overflow。 */
.pss-customer-portal.pss-public-wrap {
	font-size: 15px;
	line-height: 1.5;
	font-family: var(--pss-font);
}
.pss-customer-portal-title {
	font-size: 1.45rem;
	font-weight: 700;
	margin: 0 0 0.35em;
	line-height: 1.25;
	color: #1d2327;
}
.pss-customer-portal-subtitle {
	margin: 0 0 0.25em;
	color: #50575e;
	font-size: 14px;
	line-height: 1.5;
}
.pss-customer-portal-current-line {
	margin: 0.35rem 0 0;
	font-size: 15px;
	line-height: 1.45;
	color: #1d2327;
	font-weight: 600;
}

/* Phase 20I：个人中心企业切换条 + 快捷入口 */
.pss-portal-company-bar.pss-public-section {
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}

.pss-portal-company-bar.pss-public-section:has(+ .pss-filter-bar) {
	margin-bottom: 8px;
}

.pss-portal-company-bar {
	display: flex;
	align-items: center;
	gap: var(--pss-space-3, 0.75rem);
	flex-wrap: nowrap;
	width: 100%;
	overflow: visible;
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}

.pss-portal-company-switcher {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
	width: auto;
	max-width: none;
	overflow: visible;
	z-index: 20;
}

.pss-portal-company-switcher.is-open {
	z-index: 120;
}

.pss-portal-company-switcher__trigger {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--pss-space-2, 0.5rem);
	width: 100%;
	max-width: none;
	min-height: 44px;
	margin: 0;
	padding: 0.55rem 0.85rem;
	border: 1px solid var(--pss-border, var(--pss-public-border));
	border-radius: var(--pss-radius, var(--pss-public-radius, 8px));
	background: rgba( 26, 115, 232, .08 );
	color: #1d2327;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	text-align: left;
	cursor: pointer;
	box-sizing: border-box;
	font-family: inherit;
}

.pss-portal-company-switcher.is-single .pss-portal-company-switcher__trigger {
	cursor: default;
	opacity: 1;
}

.pss-portal-company-switcher__trigger:focus {
	outline: none;
	border-color: var(--pss-primary, #0073aa);
	box-shadow: none;
}

.pss-portal-company-switcher__trigger:disabled {
	cursor: default;
}

.pss-portal-company-switcher__icon {
	display: inline-flex;
	width: 20px;
	height: 20px;
	flex: 0 0 20px;
	align-items: center;
	justify-content: center;
}

.pss-portal-company-switcher__icon svg,
.pss-portal-company-switcher__svg {
	display: block;
	width: 100%;
	height: 100%;
}

.pss-portal-company-switcher__name {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.pss-portal-company-switcher__chevron {
	display: inline-flex;
	width: 14px;
	height: 14px;
	flex: 0 0 14px;
	align-items: center;
	justify-content: center;
}

.pss-portal-company-switcher__chevron-icon {
	display: block;
	width: 100%;
	height: 100%;
	transition: transform 0.15s ease;
}

.pss-portal-company-switcher.is-open .pss-portal-company-switcher__chevron-icon {
	transform: rotate(180deg);
}

.pss-portal-company-switcher__menu {
	position: absolute;
	top: calc(100% + var(--pss-space-1, 0.25rem));
	left: 0;
	z-index: 130;
	min-width: 100%;
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: var(--pss-space-2, 0.5rem);
	border: 1px solid var(--pss-border, var(--pss-public-border));
	border-radius: var(--pss-radius, var(--pss-public-radius, 8px));
	background: var(--pss-surface, #fff);
	box-shadow: none;
	box-sizing: border-box;
	max-height: min(320px, 60vh);
	overflow-y: auto;
	overflow-x: hidden;
}

.pss-portal-company-switcher__item-form {
	margin: 0;
	padding: 0;
}

.pss-portal-company-switcher__item {
	display: flex;
	align-items: center;
	width: 100%;
	min-width: 0;
	margin: 0;
	padding: 0.55rem 0.65rem;
	border: 0;
	border-radius: calc( var(--pss-radius, var(--pss-public-radius, 8px)) - 2px );
	background: transparent;
	color: #1d2327;
	font-size: 14px;
	line-height: 1.35;
	text-align: left;
	cursor: pointer;
	box-sizing: border-box;
	font-family: inherit;
}

.pss-portal-company-switcher__item-form + .pss-portal-company-switcher__item-form,
.pss-portal-company-switcher__item-form + .pss-portal-company-switcher__item,
.pss-portal-company-switcher__item + .pss-portal-company-switcher__item-form,
.pss-portal-company-switcher__item + .pss-portal-company-switcher__item {
	margin-top: 0.15rem;
}

.pss-portal-company-switcher__item:hover,
.pss-portal-company-switcher__item:focus {
	background: rgba( 26, 115, 232, .08 );
	outline: none;
}

.pss-portal-company-switcher__item.is-current {
	background: rgba( 26, 115, 232, .12 );
	cursor: default;
}

.pss-portal-company-switcher__item-name {
	font-weight: 600;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.pss-portal-company-actions {
	display: flex;
	align-items: stretch;
	gap: 0;
	flex: 0 0 auto;
	flex-wrap: nowrap;
	margin-left: auto;
	overflow: visible;
	border-radius: var(--pss-radius, var(--pss-public-radius, 8px));
}

.pss-portal-company-actions__button,
.pss-btn--portal-action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--pss-space-2, 0.5rem);
	flex: 0 0 152px;
	width: 152px;
	min-width: 152px;
	max-width: 152px;
	margin: 0;
	padding-inline: var(--pss-space-5, 1.25rem);
	background: #2563eb;
	border: 1px solid #2563eb;
	border-radius: 0;
	color: #ffffff;
	box-shadow: none;
	text-decoration: none;
	font-size: var(--pss-font-size-base, 1rem);
	font-weight: var(--pss-font-weight-semibold, 600);
	line-height: 1;
	position: relative;
}

.pss-portal-company-actions__button + .pss-portal-company-actions__button,
.pss-btn--portal-action + .pss-btn--portal-action {
	margin-left: -1px;
	border-left-color: rgba( 255, 255, 255, 0.28 );
}

.pss-portal-company-actions__button:first-child,
.pss-btn--portal-action:first-child {
	border-top-left-radius: var(--pss-radius, var(--pss-public-radius, 8px));
	border-bottom-left-radius: var(--pss-radius, var(--pss-public-radius, 8px));
}

.pss-portal-company-actions__button:last-child,
.pss-btn--portal-action:last-child {
	border-top-right-radius: var(--pss-radius, var(--pss-public-radius, 8px));
	border-bottom-right-radius: var(--pss-radius, var(--pss-public-radius, 8px));
}

.pss-portal-company-actions__button:hover,
.pss-btn--portal-action:hover {
	background: #1d4ed8;
	border-color: #1d4ed8;
	color: #ffffff;
	text-decoration: none;
	z-index: 1;
}

.pss-portal-company-actions__button:focus,
.pss-btn--portal-action:focus {
	outline: none;
	border-color: #1d4ed8;
	color: #ffffff;
	box-shadow: none;
	z-index: 1;
}

.pss-portal-company-actions__button.is-disabled,
.pss-btn--portal-action.is-disabled {
	background: #94a3b8;
	border-color: #94a3b8;
	color: #ffffff;
	cursor: not-allowed;
	opacity: 1;
	pointer-events: none;
}

.pss-portal-action-icon {
	display: inline-flex;
	width: 1.35em;
	height: 1.35em;
	flex: 0 0 1.35em;
	align-items: center;
	justify-content: center;
	line-height: 0;
}

.pss-portal-action-icon svg,
.pss-portal-action-icon__svg {
	display: block;
	width: 100%;
	height: 100%;
}

.pss-portal-action-label {
	display: inline-flex;
	align-items: center;
	line-height: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.pss-portal-company-actions__button--selection {
	flex: 0 0 56px;
	width: 56px;
	min-width: 56px;
	max-width: 56px;
	padding-inline: 0;
	background: #ff9900;
	border-color: #ff9900;
	overflow: visible;
	z-index: 2;
}

.pss-portal-company-actions__button--selection:hover,
.pss-portal-company-actions__button--selection:focus {
	background: #e58800;
	border-color: #e58800;
	color: #ffffff;
}

.pss-portal-company-actions__button--selection.is-disabled {
	background: #94a3b8;
	border-color: #94a3b8;
}

.pss-portal-action-icon--selection {
	width: 1.8em;
	height: 1.8em;
	flex: 0 0 1.8em;
	line-height: 0;
}

.pss-portal-selection-badge {
	position: absolute;
	top: 0;
	right: 0;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	border-radius: 999px;
	background: #ff0000;
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
	box-sizing: border-box;
	pointer-events: none;
	transform: translate(50%, -50%);
	z-index: 3;
}

/* Phase 20I-R3/R4：切换企业顶部全宽 toast */
.pss-portal-toast {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: auto;
	z-index: 9999;
	width: 100vw;
	max-width: none;
	transform: translateY(-100%);
	padding: var(--pss-space-4, 16px) var(--pss-space-5, 20px);
	border: 0;
	border-radius: 0;
	box-shadow: none;
	font-size: var(--pss-font-size-base, 1rem);
	font-weight: var(--pss-font-weight-semibold, 600);
	line-height: var(--pss-line-height-relaxed, 1.5);
	text-align: center;
	opacity: 0;
	pointer-events: none;
	transition: transform 220ms ease, opacity 220ms ease;
	box-sizing: border-box;
}

.pss-portal-toast.is-visible {
	transform: translateY(0);
	opacity: 1;
}

.pss-portal-toast--success {
	background: #ecfdf3;
	color: #166534;
}

.pss-portal-toast--error {
	background: #fef2f2;
	color: #991b1b;
}

@media (max-width: 720px) {
	.pss-portal-company-bar {
		flex-direction: row;
		align-items: stretch;
	}

	.pss-portal-company-switcher {
		flex: 1 1 auto;
		width: 100%;
		max-width: none;
	}

	.pss-portal-company-switcher,
	.pss-portal-company-switcher__trigger {
		width: 100%;
		max-width: 100%;
	}

	.pss-portal-filter-type-switcher,
	.pss-portal-filter-type-switcher .pss-portal-company-switcher__trigger {
		width: auto;
		max-width: none;
		flex: 0 0 auto;
	}

	.pss-portal-company-switcher__menu {
		width: 100%;
		max-width: 100%;
	}

	.pss-portal-filter-type-switcher .pss-portal-company-switcher__menu {
		width: max-content;
		min-width: 100%;
		max-width: min(100vw - 32px, 280px);
	}

	.pss-frontend-shell .pss-public-wrap:has(.pss-portal-company-bar) {
		padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
	}

	.pss-portal-company-actions {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 9000;
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) 56px;
		gap: 0;
		width: 100%;
		margin: 0;
		padding: 0;
		padding-bottom: env(safe-area-inset-bottom, 0px);
		background: #2563eb;
		border-radius: 0;
		overflow: visible;
		box-sizing: border-box;
	}

	.pss-portal-company-actions__button,
	.pss-btn--portal-action {
		width: 100%;
		min-width: 0;
		max-width: none;
		flex: 1 1 auto;
		min-height: 56px;
		padding-inline: var(--pss-space-3, 0.75rem);
		border-radius: 0;
		margin: 0;
		line-height: 1;
	}

	.pss-portal-company-actions__button + .pss-portal-company-actions__button,
	.pss-btn--portal-action + .pss-btn--portal-action {
		margin-left: -1px;
		margin-top: 0;
		border-left-color: rgba(255, 255, 255, 0.28);
		border-top-color: #2563eb;
	}

	.pss-portal-company-actions__button:first-child,
	.pss-btn--portal-action:first-child,
	.pss-portal-company-actions__button:last-child,
	.pss-btn--portal-action:last-child {
		border-radius: 0;
	}

	.pss-portal-company-actions__button.is-disabled,
	.pss-btn--portal-action.is-disabled {
		background: #94a3b8;
		border-color: #94a3b8;
	}

	.pss-portal-company-actions__button--selection,
	.pss-portal-company-actions__button--selection.pss-btn--portal-action {
		width: 56px;
		min-width: 56px;
		max-width: 56px;
		flex: 0 0 56px;
		padding-inline: 0;
		background: #ff9900;
		border-color: #ff9900;
	}

	.pss-portal-company-actions__button--selection .pss-portal-selection-badge {
		left: auto;
		right: 33.333%;
		transform: translate(50%, -50%);
	}
}

.pss-customer-portal__admin-tip {
	margin: 0.45rem 0 0;
	font-size: 12px;
	color: #50575e;
	line-height: 1.45;
	border: 1px dashed #c3c4c7;
	border-radius: var(--pss-public-radius, 8px);
	padding: 0.55rem 0.75rem;
}
.pss-customer-portal__admin-tip code {
	font-size: 11px;
	background: #f0f0f1;
	padding: 0.1rem 0.25rem;
	border-radius: 3px;
}

/* ── Phase 16C：版样组 -- */
.pss-customer-library-groups {
	margin: 0 0 1.5rem;
}
.pss-clg-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.pss-clg-list > li {
	display: flex;
	height: 100%;
	margin: 0;
	padding: 0;
	min-width: 0;
}

/* 版样组列表：<600px 单列；其余断点与 .pss-grid 一致 */
.pss-clg-list.pss-grid {
	grid-template-columns: 1fr;
	align-items: stretch;
}
@media (min-width: 600px) {
	.pss-clg-list.pss-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (min-width: 900px) {
	.pss-clg-list.pss-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}
@media (min-width: 1200px) {
	.pss-clg-list.pss-grid {
		grid-template-columns: repeat(4, 1fr);
	}
}
.pss-clg-list__item {
	border: 1px solid rgba(0, 0, 0, .08);
	border-radius: 12px;
	padding: 1rem 1.125rem;
	background: rgba(255, 255, 255, .9);
	box-sizing: border-box;
}
.pss-clg-list__link {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	width: 100%;
	height: 100%;
	text-decoration: none;
	color: inherit;
	cursor: pointer;
	background: var(--pss-card-bg, #fff);
	transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pss-clg-card__content {
	flex: 1 1 auto;
	min-height: 0;
}
.pss-clg-list__link:hover {
	border-color: rgba(61, 99, 180, 0.35);
	background-color: var(--pss-bg, #f8f9fa);
}
.pss-clg-list__link:focus-visible {
	outline: 2px solid rgba(61, 99, 180, 0.45);
	outline-offset: 2px;
	background-color: var(--pss-bg, #f8f9fa);
}
.pss-clg-list__title {
	margin: 0 0 .35rem;
	font-size: 1.15rem;
	line-height: 1.35;
}
.pss-clg-card__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.5rem;
	margin: 0 0 0.35rem;
}
.pss-clg-card__head .pss-clg-list__title {
	margin: 0;
	flex: 1 1 auto;
	min-width: 0;
}
.pss-clg-card__status {
	flex: 0 0 auto;
	align-self: flex-start;
}
.pss-clg-list__desc {
	display: flex;
	align-items: flex-start;
	column-gap: 0.2em;
	margin: 0 0 .65rem;
	line-height: 1.65;
}
.pss-clg-list__desc .pss-card__code-icon {
	display: block;
	flex-shrink: 0;
	margin-top: calc((1.65em - 1.2em) / 2);
}
.pss-clg-list__desc .pss-clg-card__desc-text {
	flex: 1;
	min-width: 0;
}
.pss-clg-list__meta {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: center;
	flex: 0 0 auto;
	gap: .35rem 1rem;
	margin: 0;
	padding-top: .65rem;
	font-size: 13px;
}
.pss-clg-list__meta dt {
	display: inline-block;
	margin: 0;
	white-space: nowrap;
}
.pss-clg-list__item:not([data-type]) .pss-clg-list__meta dt,
.pss-clg-detail-header:not([data-type]) .pss-clg-list__meta dt {
	background: rgba(0, 0, 0, .55);
}
.pss-clg-list__meta dd {
	margin: 0;
}
.pss-clg-list__count {
	margin: 0;
}
.pss-clg-list__count-num {
	display: inline-block;
	font-family: var(--pss-font);
	font-size: var(--pss-font-size-2xl, 1.5rem);
	font-weight: var(--pss-font-weight-bold, 700);
	line-height: 1;
	font-variant-numeric: tabular-nums;
	color: var(--pss-text-heading, #1d2327);
}
.pss-clg-list__item[data-type="clothing"] .pss-clg-list__count-num,
.pss-clg-detail-header[data-type="clothing"] .pss-clg-list__count-num {
	color: #ff9900;
}
.pss-clg-list__item[data-type="print"] .pss-clg-list__count-num,
.pss-clg-detail-header[data-type="print"] .pss-clg-list__count-num {
	color: rgba(46, 125, 50, 0.95);
}
.pss-customer-library-groups-tabs,
.pss-customer-quotes-tabs,
.pss-portal-segmented-tabs {
	display: inline-flex;
	flex-wrap: nowrap;
	align-items: stretch;
	gap: 0;
	margin: 0;
	padding: 3px;
	max-width: 100%;
	background: var(--pss-bg, #f8f9fa);
	border: 1px solid var(--pss-public-border, var(--pss-border));
	border-radius: var(--pss-public-radius, var(--pss-radius));
	box-sizing: border-box;
}
.pss-customer-library-groups-tabs__tab,
.pss-customer-quotes-tabs__tab,
.pss-portal-segmented-tabs__tab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 1 1 auto;
	gap: 0.35em;
	min-height: 40px;
	padding: 0.5rem 1.25rem;
	margin: 0;
	border: 1px solid transparent;
	border-radius: calc(var(--pss-public-radius, var(--pss-radius)) - 3px);
	text-decoration: none;
	color: var(--pss-public-muted, var(--pss-secondary));
	font-size: 14px;
	font-weight: var(--pss-font-weight-medium, 500);
	line-height: 1.25;
	white-space: nowrap;
	box-sizing: border-box;
	background: transparent;
	opacity: 1;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.pss-clg-tabs__tab-icon {
	display: none;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1em;
	height: 1em;
	line-height: 0;
}
.pss-clg-tabs__tab-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}
.pss-customer-library-groups-tabs__tab.is-current .pss-clg-tabs__tab-icon,
.pss-customer-quotes-tabs__tab.is-current .pss-clg-tabs__tab-icon,
.pss-portal-segmented-tabs__tab.is-current .pss-clg-tabs__tab-icon {
	display: inline-flex;
}
.pss-customer-library-groups-tabs[data-type="clothing"] .pss-clg-tabs__tab-icon,
.pss-customer-quotes-tabs[data-type="clothing"] .pss-clg-tabs__tab-icon,
.pss-portal-segmented-tabs[data-type="clothing"] .pss-clg-tabs__tab-icon {
	color: #ff9900;
}
.pss-customer-library-groups-tabs[data-type="print"] .pss-clg-tabs__tab-icon,
.pss-customer-quotes-tabs[data-type="print"] .pss-clg-tabs__tab-icon,
.pss-portal-segmented-tabs[data-type="print"] .pss-clg-tabs__tab-icon {
	color: rgba(46, 125, 50, 0.95);
}
.pss-customer-library-groups-tabs:not([data-type]) .pss-clg-tabs__tab-icon,
.pss-customer-quotes-tabs:not([data-type]) .pss-clg-tabs__tab-icon,
.pss-portal-segmented-tabs:not([data-type]) .pss-clg-tabs__tab-icon {
	color: var(--pss-primary, #1a73e8);
}
.pss-clg-tabs__tab-label {
	display: inline-block;
}
.pss-clg-tabs__tab-icon--archive {
	display: inline-flex;
	width: 1.4em;
	height: 1.4em;
}
.pss-clg-tabs__tab-icon--archive .pss-clg-archive-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}
.pss-customer-library-groups-tabs__tab:not(.is-current):hover,
.pss-customer-quotes-tabs__tab:not(.is-current):hover,
.pss-portal-segmented-tabs__tab:not(.is-current):hover {
	color: var(--pss-text-body, #333);
	background: rgba(255, 255, 255, 0.55);
}
.pss-customer-library-groups-tabs__tab.is-current,
.pss-customer-quotes-tabs__tab.is-current,
.pss-portal-segmented-tabs__tab.is-current {
	font-weight: var(--pss-font-weight-semibold, 600);
	color: var(--pss-text-heading, #1d2327);
	background: var(--pss-card-bg, #fff);
	border-color: var(--pss-public-border, var(--pss-border));
}
.pss-customer-library-groups-tabs__tab:focus-visible,
.pss-customer-quotes-tabs__tab:focus-visible,
.pss-portal-segmented-tabs__tab:focus-visible {
	outline: 2px solid rgba(61, 99, 180, 0.45);
	outline-offset: 1px;
	z-index: 1;
}

.pss-customer-library-group-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.65rem;
	align-items: center;
	margin: 0.85rem 0 0;
}

.pss-inline-form {
	display: inline;
	margin: 0;
	padding: 0;
}

.pss-hint {
	font-size: 14px;
	color: #646970;
	margin: .35rem 0 0;
}
.pss-library-group-my-detail-main .pss-clg-back {
	margin: 0 0 1rem;
	font-size: 14px;
}
.pss-library-group-my-detail-main .pss-clg-back__link {
	text-decoration: none;
}
.pss-library-share-head--customer .pss-library-share-tenant {
	margin-top: .15rem;
}

/* ══════════════════════════════════════════════════════════════
   Phase 18B — 增量布局 / Notice / 表单语义类
   （与上文 .pss-card / .pss-btn--* 并存；请勿删除既有选择器）

   「敏感 DOM 契约」以 assets/js/public.js 文件头为准；改 Modal/选版篮/粘性栏 id 类名须同步改 JS。
   ══════════════════════════════════════════════════════════════ */

.pss-public-wrap {
	width: min(100%, var(--pss-public-max-width));
	max-width: var(--pss-public-max-width);
	box-sizing: border-box;
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--pss-public-page-x);
	padding-right: var(--pss-public-page-x);
	overflow-x: hidden;
	font-family: var(--pss-font);
}

/* 非 Shell 场景的 legacy 横向留白；所有 `[pss_*]` 客户页经 FrontendShell 包裹后由上方 shell 规则归零 */

/* Phase 18J-R2 — 页面壳、窄版、可读正文区 */
.pss-public-page {
	box-sizing: border-box;
	max-width: 100%;
}
.pss-public-wrap--narrow {
	max-width: min(100%, var(--pss-public-narrow-width));
}
.pss-public-content--readable {
	max-width: var(--pss-public-readable-width);
	margin-left: auto;
	margin-right: auto;
	width: 100%;
	box-sizing: border-box;
}
.pss-public-header,
.pss-public-content {
	min-width: 0;
}

.pss-public-title {
	margin: 0 0 0.35rem;
	font-size: var(--pss-font-size-2xl);
	font-weight: var(--pss-font-weight-bold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}
.pss-public-subtitle {
	margin: 0;
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-muted);
}

/* 可选宽屏页（本阶段默认不用；供少数 full-bleed 实验） */
.pss-public-wrap.pss-public-wide {
	width: min(100%, var(--pss-public-wide-width));
}

.pss-public-section {
	margin-bottom: var(--pss-space-section, var(--pss-public-section-gap));
}

.pss-public-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--pss-space-2) var(--pss-public-gap);
}

.pss-public-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--pss-space-card, var(--pss-public-gap));
}

@media (min-width: 600px) {
	.pss-public-grid--cols-2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* 轻量外壳：与 .pss-card（版样网格）语义区分，可用于门户/区块包裹 */
.pss-public-card {
	border-radius: var(--pss-public-radius);
	border: 1px solid var(--pss-public-border);
	background: var(--pss-card-bg);
	box-shadow: var(--pss-public-shadow);
}

/* Phase 20H-R3：客户前端 notice 语义色在 .pss-notice 基础块统一定义 */

.pss-empty-state {
	text-align: center;
	padding: 2rem 1rem;
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
	color: var(--pss-text-muted);
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	box-sizing: border-box;
}

.pss-empty-state__title,
.pss-empty-state .pss-library-empty__title,
.pss-empty-state .pss-selection-empty__title,
.pss-empty-state .pss-quotes-empty__title,
.pss-empty-state .pss-clg-empty__title {
	margin: 0 0 0.5rem;
	font-size: var(--pss-font-size-xl);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}

.pss-empty-state__hint,
.pss-empty-state .pss-library-empty__hint,
.pss-empty-state .pss-selection-empty__hint,
.pss-empty-state .pss-quotes-empty__hint,
.pss-empty-state .pss-clg-empty__hint {
	margin: 0 0 1rem;
	font-size: var(--pss-font-size-sm);
	color: var(--pss-text-muted);
	line-height: var(--pss-line-height-normal);
}

.pss-notice--admin-hint {
	background: #f0f2f4;
	border: 1px dashed #c3c4c7;
	padding: 11px 14px;
	font-size: 13px;
	color: #50575e;
	border-radius: var(--pss-public-radius);
	line-height: 1.45;
	box-sizing: border-box;
}

/* 次要按钮语义：等价于现行 .pss-btn--secondary，供新模板用词统一 */
.pss-btn-ghost,
.pss-btn--ghost {
	background: transparent;
	color: var(--pss-secondary);
	border: 1px solid transparent;
}
.pss-btn-ghost:hover,
.pss-btn--ghost:hover {
	background: var(--pss-bg);
}

.pss-btn-link {
	background: transparent;
	color: var(--pss-primary);
	border: none;
	min-height: 44px;
	text-decoration: underline;
	font-weight: 600;
}
.pss-btn-link:hover {
	color: #1558b0;
}

.pss-link-action {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.25;
	text-decoration: underline;
	text-underline-offset: 2px;
	color: var(--pss-secondary);
	overflow-wrap: anywhere;
}
.pss-link-action:hover {
	color: var(--pss-primary);
}

.pss-btn:disabled,
.pss-btn.pss-btn-disabled,
.pss-btn[aria-disabled='true'] {
	opacity: 0.55;
	cursor: not-allowed;
	pointer-events: none;
}

/* 表单行（不改变登录/invite 表单 name；仅可选 class 排版） */
.pss-form-row {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	margin-bottom: 0.85rem;
}
.pss-form-label {
	font-weight: var(--pss-font-weight-medium);
	font-size: var(--pss-font-size-sm);
	color: var(--pss-text-heading);
}
.pss-form-control .pss-input,
.pss-form-control .pss-select,
.pss-form-control .pss-textarea {
	width: 100%;
}
.pss-form-help {
	margin: 0.25rem 0 0;
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-muted);
}
.pss-form-error {
	margin: 0.25rem 0 0;
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-danger);
	font-weight: var(--pss-font-weight-semibold);
}

/* ══════════════════════════════════════════════════════════════
   Phase 18E — 普通版库 · 版样卡片 · 详情弹窗（与 public.js Hook 共存）
   保留：#pss-library #pss-detail-modal #pss-modal-body .pss-detail-trigger
         .pss-add-btn .pss-add-form [data-asset-id]
   ══════════════════════════════════════════════════════════════ */

.pss-library-page.pss-public-wrap .pss-library-header__title,
.pss-library-page .pss-library-share-title {
	margin: 0 0 0.35rem;
	font-size: 1.35rem;
	font-weight: 700;
	line-height: 1.25;
	color: #1d2327;
}

.pss-library-page .pss-library-header__subtitle,
.pss-library-page .pss-library-share-desc {
	margin: 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--pss-public-muted);
}

.pss-library-page .pss-library-header__tenant,
.pss-library-page .pss-library-share-tenant {
	margin: 0.15rem 0 0;
	font-size: 14px;
	font-weight: 600;
	color: #333;
	line-height: 1.55;
}

.pss-library-page .pss-library-share-desc {
	margin-top: 0.5rem;
}

.pss-library-empty__title {
	margin: 0 0 0.5rem;
	font-size: 16px;
	font-weight: 600;
	color: #333;
}

.pss-library-empty__hint {
	margin: 0;
	font-size: 14px;
	color: var(--pss-public-muted);
}

.pss-library-page .pss-library-block-hint,
.pss-library-page .pss-library-admin-tip {
	margin: 0.5rem 0 0;
	font-size: 13px;
	line-height: 1.45;
	color: var(--pss-public-muted);
}

.pss-library-page .pss-library-admin-tip {
	color: var(--pss-secondary);
	border: 1px solid var(--pss-border, var(--pss-public-border));
	border-radius: var(--pss-radius);
	padding: 0.5rem 0.75rem;
}

/* 封面点击区：整块可点且不破坏宽高比（.pss-card__img-wrap 仍承担比例） */
.pss-asset-card .pss-card-media__hit {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	margin: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	text-align: left;
}

.pss-asset-card .pss-card__img-wrap.pss-card-media {
	position: relative;
	aspect-ratio: 1 / 1;
}

.pss-card__price-note {
	font-size: 11px;
	color: var(--pss-public-muted);
	font-weight: 500;
}

.pss-asset-card .pss-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 0;
	gap: 10px;
}

.pss-asset-card .pss-card__bottom {
	margin-top: auto;
	display: flex;
	flex-direction: column;
	gap: 10px;
	width: 100%;
	padding-top: 10px;
}

.pss-detail__cover-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1 / 1;
	width: 100%;
	border-radius: 8px;
	background: var(--pss-bg);
	color: var(--pss-public-muted);
	font-size: 13px;
	text-align: center;
	padding: 12px;
}

.pss-detail__price-muted {
	font-size: 13px;
	font-weight: 600;
	color: var(--pss-public-muted);
	padding: 2px 0;
}

.pss-detail__form-intro {
	font-size: 13px;
	color: var(--pss-public-muted);
	line-height: 1.45;
	margin: 0 0 10px;
}

@media (max-width: 599px) {
	.pss-modal:not(#pss-detail-modal) .pss-modal__box.pss-modal-content {
		max-height: min(94vh, 100dvh - 16px);
		padding-bottom: max(24px, env(safe-area-inset-bottom));
		display: flex;
		flex-direction: column;
	}
	.pss-modal:not(#pss-detail-modal) .pss-modal__body {
		flex: 1;
		overflow-y: auto;
		min-height: 0;
		-webkit-overflow-scrolling: touch;
	}
}


/* ══════════════════════════════════════════════════════════════
   Phase 18F — 版样组 / 报价列表 segmented tabs + 卡片（`.pss-portal-segmented-page`）
   保留 Phase 16C 既有 class（.pss-clg-* 等），两页共用同一套断点与间距。
   ══════════════════════════════════════════════════════════════ */

.pss-customer-library-groups-page,
.pss-customer-quotes-page,
.pss-portal-segmented-page {
	font-family: var(--pss-font);
	color: #333;
}

.pss-customer-library-groups-page .pss-clg-feedback:not(.pss-notice) .pss-clg-feedback__hint,
.pss-clg-feedback:not(.pss-notice) .pss-clg-feedback__hint {
	margin: 0.35rem 0 0;
	font-size: 13px;
	font-weight: 400;
	color: var(--pss-public-muted);
	line-height: 1.45;
}

.pss-portal-segmented-page .pss-clg-tabs {
	margin-top: 0;
	margin-bottom: 0;
}

.pss-portal-segmented-page .pss-filter-bar {
	margin-bottom: 12px;
}

.pss-portal-segmented-page .pss-portal-segmented-tabs.pss-clg-tabs {
	display: inline-flex;
	flex-wrap: nowrap;
	gap: 0;
	width: fit-content;
	max-width: 100%;
	margin-top: 0;
	margin-bottom: 12px;
}

.pss-portal-segmented-page .pss-portal-segmented-tabs__tab.pss-clg-tabs__btn {
	min-height: 44px;
}

.pss-frontend-shell .pss-portal-segmented-page .pss-portal-segmented-tabs.pss-clg-tabs {
	display: inline-flex;
	flex-wrap: nowrap;
	gap: 0;
	padding: 3px;
	width: fit-content;
	max-width: 100%;
	margin-top: 0;
	margin-bottom: 12px;
}

.pss-frontend-shell .pss-portal-segmented-page .pss-filter-bar + .pss-portal-segmented-tabs.pss-clg-tabs,
.pss-frontend-shell .pss-portal-segmented-page .pss-public-section + .pss-portal-segmented-tabs.pss-clg-tabs {
	margin-top: 0;
}

@media (max-width: 599px) {
	.pss-portal-segmented-tabs,
	.pss-portal-segmented-page .pss-portal-segmented-tabs.pss-clg-tabs,
	.pss-frontend-shell .pss-portal-segmented-page .pss-portal-segmented-tabs.pss-clg-tabs {
		display: flex;
		width: 100%;
	}
	.pss-portal-segmented-tabs__tab {
		flex: 1 1 0;
		min-width: 0;
		padding-left: 0.75rem;
		padding-right: 0.75rem;
	}
}

.pss-clg-empty .pss-clg-empty__title {
	margin: 0 0 0.5rem;
	font-size: 16px;
	font-weight: 600;
	color: #333;
}
.pss-clg-empty .pss-clg-empty__hint {
	margin: 0;
	font-size: 14px;
	color: var(--pss-public-muted);
}

.pss-portal-segmented-page .pss-clg-card.pss-clg-list__item {
	border: 1px solid var(--pss-public-border);
	border-radius: var(--pss-public-radius);
	box-shadow: var(--pss-public-shadow);
	box-sizing: border-box;
	background: var(--pss-card-bg);
}
.pss-portal-segmented-page .pss-clg-list.pss-grid > li {
	display: flex;
	height: 100%;
}
.pss-portal-segmented-page .pss-clg-list__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var(--pss-card-bg);
	transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pss-portal-segmented-page .pss-clg-list__link:hover,
.pss-portal-segmented-page .pss-clg-list__link:focus-visible {
	background-color: var(--pss-bg);
}
.pss-portal-segmented-page .pss-clg-card__content {
	flex: 1 1 auto;
	min-height: 0;
}
.pss-portal-segmented-page .pss-clg-list__meta {
	flex: 0 0 auto;
	margin-top: 0;
}

/* 列表卡片 meta 胶囊：与 segmented tabs 轨道底色一致（版样组 / 报价共用） */
.pss-portal-segmented-page .pss-clg-list__item .pss-clg-list__meta dt,
.pss-portal-segmented-page .pss-clg-list__item[data-type="clothing"] .pss-clg-list__meta dt,
.pss-portal-segmented-page .pss-clg-list__item[data-type="print"] .pss-clg-list__meta dt {
	background: var(--pss-bg, #f8f9fa);
	color: var(--pss-public-muted, var(--pss-secondary));
	border: 1px solid var(--pss-public-border, var(--pss-border));
	border-radius: calc(var(--pss-public-radius, var(--pss-radius)) - 3px);
}
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-inquiry-status,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-inquiry-status--submitted,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-inquiry-status--reviewing,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status--sent,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status--accepted,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status--rejected,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status--expired,
.pss-portal-segmented-page .pss-cq-card .pss-clg-card__status.pss-quote-status--cancelled {
	background: var(--pss-bg, #f8f9fa);
	color: var(--pss-text-heading, #1d2327);
	border: 1px solid var(--pss-public-border, var(--pss-border));
	border-radius: calc(var(--pss-public-radius, var(--pss-radius)) - 3px);
}

.pss-customer-library-groups-page .pss-clg-card__tenant {
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	color: var(--pss-public-muted);
}

.pss-portal-segmented-page .pss-clg-list__title {
	font-size: 1.125rem;
}

.pss-customer-library-groups-page .pss-clg-card-archive-hint {
	margin: -0.2rem 0 0;
	font-size: 12px;
	color: var(--pss-public-muted);
	line-height: 1.4;
	flex: 1 1 100%;
	order: 3;
}

.pss-library-group-my-detail-main.pss-customer-library-groups-page .pss-clg-back {
	display: flex;
	flex-wrap: wrap;
	gap: 0.65rem;
	margin: 0 0 1.25rem;
}
.pss-library-group-my-detail-main .pss-clg-back__link.pss-btn {
	min-height: 44px;
	align-self: flex-start;
	width: fit-content;
	text-decoration: none;
	box-sizing: border-box;
	line-height: 1.2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35em;
}
.pss-clg-back__icon {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1em;
	height: 1em;
	line-height: 0;
	transform: scaleX(-1);
}
.pss-clg-back__icon .pss-clg-tabs__tab-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}
.pss-clg-detail-back[data-type="clothing"] .pss-clg-back__icon {
	color: #ff9900;
}
.pss-clg-detail-back[data-type="print"] .pss-clg-back__icon {
	color: rgba(46, 125, 50, 0.95);
}
.pss-clg-detail-back:not([data-type]) .pss-clg-back__icon {
	color: var(--pss-primary, #1a73e8);
}
.pss-clg-back__label {
	display: inline-block;
}

.pss-clg-detail-actions .pss-clg-detail-actions__btn.pss-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35em;
	min-height: 44px;
	box-sizing: border-box;
	line-height: 1.2;
}

.pss-clg-action-btn__icon {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1em;
	height: 1em;
	line-height: 0;
}

.pss-clg-detail-actions__archive .pss-clg-action-btn__icon {
	width: 1.4em;
	height: 1.4em;
}

.pss-clg-action-btn__icon .pss-clg-archive-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}

.pss-clg-action-btn__label {
	display: inline-block;
}

.pss-library-group-my-detail-main .pss-clg-detail-back.pss-clg-detail-actions {
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
}

.pss-library-group-my-detail-main .pss-clg-detail-actions__archive,
.pss-library-group-my-detail-main .pss-clg-detail-actions__unarchive {
	display: inline-flex;
	flex: 0 0 auto;
	margin: 0;
}

@media (max-width: 599px) {
	.pss-library-group-my-detail-main .pss-clg-detail-back.pss-clg-detail-actions {
		width: 100%;
	}

	.pss-library-group-my-detail-main .pss-clg-back__link.pss-btn {
		flex: 1 1 auto;
		min-width: 0;
		width: auto;
	}

	.pss-library-group-my-detail-main .pss-clg-detail-actions__archive .pss-clg-detail-actions__btn.pss-btn {
		flex: 0 0 auto;
		width: auto;
		padding-left: 0.65rem;
		padding-right: 0.85rem;
	}

	.pss-library-group-my-detail-main .pss-clg-detail-actions__unarchive .pss-btn {
		flex: 0 0 auto;
		width: auto;
	}
}

/* Phase 18J-R9（1.2.96）：移除 `max-width: 46rem` 介绍文本可读宽度限制，
 * 与登录态各页 header 下副标题保持全宽（壳的 1180px 节奏）。 */
.pss-clg-detail-header .pss-clg-detail-intro {
	margin: 0.75rem 0 1rem;
	font-size: 14px;
	color: var(--pss-public-muted);
	line-height: 1.5;
}

.pss-clg-detail-header__title .pss-card__title-icon,
.pss-clg-detail-header__title .pss-clg-card__title-icon {
	display: inline-block;
	width: 1.1em;
	height: 1.1em;
	vertical-align: -0.12em;
	margin-right: 0.12em;
}

.pss-clg-detail-header .pss-clg-detail-header__desc {
	margin-top: 0.75rem;
	margin-bottom: 0;
}

.pss-clg-detail-header .pss-clg-detail-header__meta {
	margin-top: 0.75rem;
	margin-bottom: 0;
}

@media (min-width: 600px) {
	.pss-clg-detail-header .pss-clg-detail-header__meta {
		display: flex;
		flex-wrap: nowrap;
		align-items: center;
		gap: 0.35rem 0.65rem;
	}
	.pss-clg-detail-header .pss-clg-detail-header__meta dt:not(:first-of-type) {
		margin-left: 0.85rem;
	}
}

.pss-clg-detail-actions {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0.35rem;
	margin: 0.5rem 0 0;
}
.pss-clg-detail-actions-hint {
	margin: 0 0 0.25rem;
	font-size: 12px;
	color: var(--pss-public-muted);
	line-height: 1.4;
}

@media (min-width: 560px) {
	.pss-clg-detail-actions {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
	}
}

.pss-library-group-my-detail-main .pss-library-empty__title {
	margin: 0 0 0.5rem;
	font-size: 16px;
	font-weight: 600;
}
.pss-library-group-my-detail-main .pss-library-empty__hint {
	font-size: 14px;
	color: var(--pss-public-muted);
	margin: 0;
	line-height: 1.45;
}

/* ══════════════════════════════════════════════════════════════
 * Phase 18G — [pss_selection] 选版篮与提交询价
 * ─ DOM 钩子（#pss-selection、模板行、控件 class）保持不变；仅限布局与可读性。
══════════════════════════════════════════════════════════════ */
.pss-visually-hidden {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap !important;
	border: 0 !important;
}

.pss-selection-page .pss-selection-header {
	margin-bottom: 1rem;
}
/* Phase 18J-R9（1.2.96）：移除 `max-width: 42rem`，与全局副标题节奏对齐为全宽。 */
.pss-selection-header__subtitle {
	margin: 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--pss-public-muted, var(--pss-secondary, #555));
}

.pss-selection-page .pss-selection-list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.pss-selection-page .pss-selection-item.pss-sel-item {
	background: #fff;
	border: 1px solid var(--pss-border);
	border-radius: var(--pss-radius, 8px);
	padding: 14px 16px;
	margin-bottom: 12px;
	border-bottom: none;
	box-shadow: none;
}
.pss-selection-page .pss-selection-item.pss-sel-item:last-child {
	margin-bottom: 0;
}

.pss-selection-page .pss-sel-item__thumb {
	flex: 0 0 76px;
	width: 76px;
	height: 95px;
}

.pss-selection-page .pss-sel-item__source {
	font-size: 11px;
	color: var(--pss-public-muted, var(--pss-secondary));
	margin: 0 0 6px;
	line-height: 1.35;
	font-weight: 500;
}

.pss-selection-page .pss-selection-note-label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	margin: 10px 0 6px;
	color: var(--pss-public-fg, #333);
}

.pss-submit-inquiry__intro {
	margin: 0 0 14px;
	font-size: 14px;
	line-height: 1.55;
	color: var(--pss-public-muted, var(--pss-secondary));
}

.pss-selection-page .pss-selection-remove-hint {
	font-size: 12px;
	color: var(--pss-public-muted, var(--pss-secondary));
	margin: -4px 0 10px;
	line-height: 1.45;
}

.pss-selection-page .pss-sel-note {
	min-height: 88px;
	line-height: 1.45;
}

.pss-selection-page .pss-submit-inquiry.pss-detail-card {
	margin-top: 28px;
	padding: 22px 18px 24px;
	box-sizing: border-box;
	border: 1px solid var(--pss-public-border);
	border-top: 3px solid var(--pss-primary);
	border-radius: var(--pss-public-card-shell-radius);
	background: var(--pss-card-bg);
	box-shadow: var(--pss-public-shadow);
}

.pss-selection-page #pss-submit-inquiry-btn {
	min-height: 48px;
	font-size: 16px;
	font-weight: 700;
	box-shadow: none;
}

.pss-selection-page .pss-selection-empty .pss-btn-primary {
	margin-top: 12px;
	min-height: 48px;
}

@media (max-width: 480px) {
	.pss-selection-page .pss-selection-item.pss-sel-item {
		padding: 12px;
	}

	.pss-selection-page .pss-sel-item__actions.pss-selection-item-actions {
		flex-direction: column;
	}

	.pss-selection-page .pss-sel-item__qty-row .pss-sel-qty {
		min-height: 44px;
	}

	.pss-selection-page .pss-sel-item__qty-row .pss-sel-unit.pss-select {
		min-height: 44px;
	}

	.pss-selection-page .pss-selection-item-controls .pss-btn {
		min-height: 44px;
	}
}

/* ══════════════════════════════════════════════════════════════
 * Phase 18H — [pss_customer_quotes] 报价列表与报价详情
 * ─ 保留 `#pss-qd-actions` / `.pss-qd-accept` / `.pss-qd-reject` / `data-quote-id` DOM 钩子。
══════════════════════════════════════════════════════════════ */
.pss-quotes-empty__title {
	font-weight: 600;
	font-size: 16px;
	margin: 0 0 8px;
}
.pss-quotes-empty__hint {
	font-size: 14px;
	color: var(--pss-public-muted, var(--pss-secondary));
	margin: 0;
	line-height: 1.45;
}

.pss-inquiry-detail__notice {
	margin: 12px 0 0;
	font-size: 14px;
	color: var(--pss-public-muted, var(--pss-secondary));
	line-height: 1.45;
}

.pss-quote-detail-page .pss-quote-summary-card {
	background: #fff;
	border: 1px solid var(--pss-border);
	border-radius: var(--pss-radius, 8px);
	padding: 16px;
	margin-bottom: 20px;
	box-shadow: none;
}
.pss-quote-detail-page .pss-quote-detail__header {
	margin-bottom: 12px;
	flex-wrap: wrap;
}
.pss-quote-detail-page .pss-quote-detail__meta {
	background: transparent;
	padding: 0;
	margin-bottom: 0;
}
.pss-quote-detail-page .pss-quote-detail__meta .pss-qd-summary__row:last-child {
	margin-bottom: 0;
}
.pss-quote-detail-page .pss-quote-summary__inquiry span {
	flex: 1;
	line-height: 1.55;
	min-width: 0;
}
.pss-quote-detail-page .pss-quote-inquiry-no {
	display: inline-block;
	margin-left: 4px;
	font-weight: 600;
	color: var(--pss-public-fg, #333);
}
.pss-quote-detail-page .pss-quote-items {
	margin-top: 8px;
}
.pss-quote-detail-page .pss-quote-item {
	background: var(--pss-bg, #fafafa);
	padding: 12px;
	border-radius: var(--pss-radius, 8px);
	border-bottom: none;
	margin-bottom: 12px;
}
.pss-quote-detail-page .pss-quote-item:last-of-type {
	margin-bottom: 0;
}

/* Phase 18J-R9（1.2.96）：移除 `max-width: 40rem`，与全局介绍文本节奏对齐为全宽。 */
.pss-quote-actions__lead {
	font-size: 14px;
	line-height: 1.55;
	color: var(--pss-public-muted, var(--pss-secondary));
	margin: 0 0 16px;
}
.pss-quote-detail-page .pss-quote-actions__btns.pss-qd-actions {
	margin-top: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}
.pss-quote-detail-page .pss-quote-actions__btns.pss-qd-actions .pss-btn {
	min-height: 48px;
	min-width: 140px;
	flex: 1;
	font-size: 15px;
	font-weight: 700;
}

.pss-qd-result-static--expired {
	background: #fff3cd;
	color: #856404;
	padding: 12px 16px;
	border-radius: 8px;
	margin-top: 16px;
	font-size: 14px;
	font-weight: 600;
}
.pss-qd-result-static--cancelled {
	background: #e2e3e5;
	color: #383d41;
	padding: 12px 16px;
	border-radius: 8px;
	margin-top: 16px;
	font-size: 14px;
	font-weight: 600;
}

@media (max-width: 520px) {
	.pss-quote-detail-page .pss-qd-item {
		flex-direction: column;
	}
	.pss-quote-detail-page .pss-qd-item__pricing.pss-quote-item__pricing {
		width: 100%;
		min-width: 0;
		align-self: stretch;
		padding-top: 8px;
		border-top: 1px solid var(--pss-border);
	}
	.pss-quote-detail-page .pss-quote-actions__btns.pss-qd-actions {
		flex-direction: column;
	}
	.pss-quote-detail-page .pss-quote-actions__btns.pss-qd-actions .pss-btn {
		flex: none;
		width: 100%;
	}
}

/* ══════════════════════════════════════════════════════════════
 * Phase 18J — 客户前台整体样式统一（与 Phase 18B–18H 并存；不重命名 hook）
══════════════════════════════════════════════════════════════ */

/* Modal 关闭：满足 44px 触控下限 */
#pss-modal-close.pss-modal__close.pss-modal-close {
	min-width: 44px;
	min-height: 44px;
	box-sizing: border-box;
}

/* 返回链路：可读点击区域 */
.pss-quote-detail-page .pss-back-link,
.pss-library-group-my-detail-main .pss-clg-back__link {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
}

/* Phase 18J-R9（1.2.96）：删除版库 / 选版栏 / 版样组列表页眉副标题
 * `max-width: 46rem` 旧可读宽度限制；副标题改为跟随 .pss-frontend-shell 1180 全宽。 */

/* Toast：抬高以避开粘性底栏与安全区（仍低于 modal #pss-detail-modal） */
.pss-toast {
	bottom: calc(72px + env(safe-area-inset-bottom, 0px));
}

/* 列表条目卡片边框色与圆角收口（不改变 BEM class 名称） */
.pss-selection-page .pss-selection-item.pss-sel-item {
	border-radius: var(--pss-public-radius);
	border-color: var(--pss-public-border);
}

/* ══════════════════════════════════════════════════════════════════════
 * Phase 18J-R5 — Frontend Shell Final Unification（统一收口；与既有 BEM 共存）
 *
 * 目标：所有客户前台页面进入 `.pss-frontend-root > .pss-frontend-shell` 后：
 *   1) shell 宽度 100%，跟随 WordPress / 主题容器（Phase 20A）；
 *   2) shell 与壳内 `.pss-public-wrap` 均无横向 padding / margin（全宽贴齐主题容器）；
 *   3) 旧 narrow/readable/特殊宽度在壳内全部退化为铺满；
 *   4) Modal 锚定视口，不受壳与页面 class 影响；
 *   5) `.pss-btn` 强制 border-box，避免门户「前往登录」按钮被右侧裁切；
 *   6) 公共卡片 / actions / form 行 / notice 走统一 token；
 *
 * 不重命名任何 hook（#pss-library / #pss-selection / #pss-detail-modal /
 * .pss-detail-trigger / .pss-add-btn / .pss-sel-* / .pss-qd-* / data-*）。
 * ══════════════════════════════════════════════════════════════════════ */

/* 6-1 Root / Shell：单一宽度与节奏（壳层重申，使其在 cascade 末端胜出） */
.pss-frontend-root {
	margin-block: var(--pss-space-page-y, var(--pss-space-6));
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}
.pss-frontend-shell {
	width: 100%;
	max-width: none;
	margin-inline: 0;
	padding-inline: 0;
	box-sizing: border-box;
}

.pss-frontend-shell .pss-portal-company-bar {
	overflow: visible;
}

.pss-frontend-shell .pss-portal-company-bar.pss-public-section:has(+ .pss-filter-bar) {
	margin-bottom: 8px;
}

/* 6-2 取消壳内所有「特殊宽度容器」 — 仅在壳内生效，保留 class 兼容 */
.pss-frontend-shell .pss-public-wrap,
.pss-frontend-shell .pss-public-wrap--narrow,
.pss-frontend-shell .pss-public-page--login .pss-login-layout.pss-public-wrap--narrow,
.pss-frontend-shell .pss-public-content--readable,
.pss-frontend-shell .pss-customer-portal,
.pss-frontend-shell .pss-customer-portal.pss-public-wrap,
.pss-frontend-shell .pss-login-layout,
.pss-frontend-shell .pss-customer-login,
.pss-frontend-shell .pss-soft-notice-page__inner,
.pss-frontend-shell .pss-soft-fallback__inner,
.pss-frontend-shell .pss-submit-inquiry__inner,
.pss-frontend-shell .pss-login-logged-in__actions {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
	box-sizing: border-box;
}

/* 6-3 登录旧外壳 max-width:420px / 内边距 — 壳内退化 */
.pss-frontend-shell .pss-customer-login {
	margin-top: 0;
	padding: 0;
	font-size: 15px;
}
.pss-frontend-shell .pss-login-logged-in__actions {
	max-width: none;
}

/* 6-4 个人中心：旧 .pss-customer-portal-actions 改用公共 actions 节奏，按钮不溢出 */
.pss-frontend-shell .pss-customer-portal-actions,
.pss-frontend-shell .pss-public-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: var(--pss-space-actions, var(--pss-space-3));
	margin: var(--pss-space-3) 0 0;
	min-width: 0;
}
.pss-frontend-shell .pss-customer-portal-actions > p,
.pss-frontend-shell .pss-public-actions > p {
	margin: 0;
	flex: 1 1 auto;
	min-width: 0;
}

/* 6-5 按钮：强制 border-box；`pss-btn--full` 在壳内不溢出（修个人中心截断） */
.pss-btn,
.pss-frontend-shell .pss-btn,
.pss-frontend-shell a.pss-btn,
.pss-frontend-shell button.pss-btn {
	box-sizing: border-box;
	max-width: 100%;
	overflow-wrap: anywhere;
}
.pss-frontend-shell .pss-btn--full {
	width: 100%;
	max-width: 100%;
}

/* 6-6 公共卡片：所有「卡」吃同一套基础 — `.pss-ui-card` 与旧别名共用视觉 */
.pss-frontend-shell .pss-ui-card,
.pss-frontend-shell .pss-public-card,
.pss-frontend-shell .pss-list-card,
.pss-frontend-shell .pss-detail-card,
.pss-frontend-shell .pss-login-card,
.pss-frontend-shell .pss-clg-card,
.pss-frontend-shell .pss-clg-list__item,
.pss-frontend-shell .pss-cq-card {
	background: var(--pss-card-bg);
	border: 1px solid var(--pss-card-border, var(--pss-public-border));
	border-radius: var(--pss-card-radius, var(--pss-public-card-shell-radius));
	box-shadow: var(--pss-card-shadow, var(--pss-public-shadow));
	padding: var(--pss-space-card, var(--pss-space-4));
	box-sizing: border-box;
}

/* 版样网格卡片：取消 shell 统一 padding，封面贴齐卡片边缘 */
.pss-frontend-shell .pss-asset-card.pss-list-card,
.pss-frontend-shell .pss-asset-card.pss-ui-card,
.pss-frontend-shell .pss-asset-card.pss-public-card {
	padding: 0;
	overflow: hidden;
}

/* 卡片栈间距：用 token 统一上下间隔（版样组列表走 .pss-grid 与版库同构） */
.pss-frontend-shell .pss-clg-list:not(.pss-grid) {
	display: flex;
	flex-direction: column;
	gap: var(--pss-space-card, var(--pss-space-4));
}

/* 6-7 sections / header 间距：统一 */
.pss-frontend-shell .pss-public-section {
	margin-bottom: var(--pss-space-section, var(--pss-space-6));
}
.pss-frontend-shell .pss-public-section:last-child {
	margin-bottom: 0;
}
.pss-frontend-shell .pss-public-header {
	margin-bottom: var(--pss-space-section, var(--pss-space-6));
}

/* 6-8 表单 / 输入控件 — 公共 token */
.pss-frontend-shell .pss-form-row + .pss-form-row {
	margin-top: var(--pss-space-3);
}

.pss-frontend-shell .pss-customer-login .pss-login-remember-row {
	display: flex;
	flex-direction: row;
	width: 100%;
	justify-content: space-between;
	align-items: center;
	gap: var(--pss-space-3, 12px);
	flex-wrap: wrap;
	text-align: left;
}

.pss-frontend-shell .pss-customer-login .pss-login-remember-row .pss-login-remember {
	display: inline-flex;
	align-items: center;
	margin: 0;
	text-align: left;
}

.pss-frontend-shell .pss-customer-login .pss-login-remember-row .pss-login-forgot-link {
	margin-left: auto;
	text-align: right;
	white-space: nowrap;
}

/* 6-9 报价详情 / 选版提交 — 取消独立特殊宽度（class 保留） */
.pss-frontend-shell .pss-submit-inquiry__inner {
	max-width: none;
}
/* 选版提交区 / 报价摘要卡：用公共卡片节奏覆盖旧页面级 padding/border */
.pss-frontend-shell .pss-selection-page .pss-submit-inquiry.pss-detail-card,
.pss-frontend-shell .pss-quote-detail-page .pss-quote-summary-card {
	padding: var(--pss-space-card, var(--pss-space-4));
	margin-top: var(--pss-space-section, var(--pss-space-6));
	margin-bottom: var(--pss-space-section, var(--pss-space-6));
	border: 1px solid var(--pss-card-border, var(--pss-public-border));
	border-radius: var(--pss-card-radius, var(--pss-public-card-shell-radius));
	box-shadow: var(--pss-card-shadow, var(--pss-public-shadow));
}
.pss-frontend-shell .pss-selection-page .pss-submit-inquiry.pss-detail-card {
	border-top: 3px solid var(--pss-primary);
}
/* Phase 18J-R9（1.2.96）：删除 R8 Hotfix（1.2.94）的副标题 / 介绍文本「max-width: 100%」覆盖块。
 * 原因：R9 已经在各自原始规则（.pss-library-header__subtitle / .pss-selection-header__subtitle /
 *      .pss-clg-header__subtitle / .pss-clg-detail-intro / .pss-quotes-header__subtitle /
 *      .pss-quote-actions__lead）的位置移除了 40-46rem 的可读宽度限制；
 *      不再需要在文件末尾用 `.pss-frontend-shell ...` 高 specificity 把它们再退化为 100%。 */

/* 6-10 Modal — 锚定视口；不依赖任何 .pss-*-page 选择器 */
.pss-modal#pss-detail-modal,
.pss-modal {
	position: fixed;
	inset: 0;
	z-index: 10050;
	display: flex;
	width: 100%;
	max-width: 100vw;
	min-height: 100dvh;
	box-sizing: border-box;
}
.pss-modal__overlay {
	position: absolute;
	inset: 0;
}
.pss-modal__box,
.pss-modal__box.pss-modal-content {
	box-sizing: border-box;
}
@media (min-width: 600px) {
	.pss-modal__box,
	.pss-modal__box.pss-modal-content {
		max-width: 680px;
	}
}

/* R8（1.2.93）：删除 R5/R6 这里残留的 `.pss-library-page / -groups-page / -selection-page /
 *               -quote-detail-page .pss-modal__box` 页面级 modal 宽度规则。
 *               单一宽度来源在 R8 块的「Modal — single source」段：
 *               `.pss-modal#pss-detail-modal .pss-modal__box(.pss-modal-content)`。 */

/* 6-11 软提示页：壳内自然贴齐，不再叠加 entry-content 边距 */
.pss-frontend-shell .pss-soft-notice-page__inner,
.pss-frontend-shell .pss-soft-fallback__inner {
	padding-bottom: var(--pss-space-8, 32px);
}

/* 6-12 移动端：actions 纵向堆叠；`--pss-space-page-x` 仍供 modal 等视口边距使用 */
@media (max-width: 480px) {
	:root {
		--pss-space-page-x: 12px;
	}
	.pss-frontend-shell .pss-public-actions,
	.pss-frontend-shell .pss-customer-portal-actions {
		flex-direction: column;
		align-items: stretch;
	}
}

/* ══════════════════════════════════════════════════════════════════════
 * Phase 18J-R6 — 前台样式系统最终一致性收口（State / Tabs / Modal / Actions / Mobile）
 *
 *   1) 所有「提示文字 + 操作按钮」的提示区到按钮区距离统一为 --pss-space-state-actions；
 *   2) `customer-library-groups-tabs` 与上方说明区保留单一 section gap；
 *   3) 详情弹窗 box 宽度统一来自 `.pss-modal__box`，禁止 page class 覆盖；
 *   4) 所有 `*-actions` 类共用 actions gap；
 *   5) 480px 内所有 actions 容器纵向拉满；
 *   6) Empty / login gate 容器节奏统一，不再受 <p> 默认 margin 影响。
 *
 *   特别说明：不新增 class（保留旧 BEM 命名），仅在壳内提高 specificity 收口；
 *            未触碰任何业务 / 表单 / nonce / id / data-* / AJAX 字段。
 * ══════════════════════════════════════════════════════════════════════ */

/* 7-0 spacing token 增补（缺省则回退到 R5 已有 token） */
:root {
	--pss-space-state-actions: var(--pss-space-4, 16px);
	--pss-space-tabs: var(--pss-space-section, var(--pss-space-6, 24px));
}

/* 7-1 提示区到按钮区：所有 .pss-notice + .pss-public-actions / 裸 <p>(含按钮) 节奏一致
 *     这是修复「报价页未登录提示↔按钮间距」与其它页不一致的根因。 */
.pss-frontend-shell .pss-notice + .pss-public-actions,
.pss-frontend-shell .pss-notice + p,
.pss-frontend-shell .pss-notice + div.pss-public-actions {
	margin-top: var(--pss-space-state-actions);
}
.pss-frontend-shell .pss-notice + p {
	margin-bottom: 0;
}
/* 多个 notice 同级时统一节奏 */
.pss-frontend-shell .pss-notice + .pss-notice {
	margin-top: var(--pss-space-3);
}

/* 7-2 Empty state 统一：用 flex 列 + gap 接管 <p>/<a> 默认 margin
 *
 *   R6 Hotfix（1.2.92）：从该规则组中移除 `.pss-selection-login-gate`。
 *   原因：`.pss-selection-login-gate` 是「未登录 auth wall」容器，不是 empty state；
 *   其内部已使用 `.pss-notice` + `.pss-public-actions` 标准结构，应与普通版库 /
 *   版样组 / 报价的 guest gate 保持普通 block flow（全宽 notice + 16px
 *   折叠间距），而不是被 flex 列化为 auto 宽度。具体见 R6 报告 Hotfix 段。
 *
 *   R9（1.2.96）：本块做三处收口，让 R8 8-11 那段「先 flex-start margin: 0、再用
 *   :not(.pss-auth-wall) 补 margin auto / align center」的绕行规则可以消失：
 *     1) 给每个 selector 追加 `:not(.pss-auth-wall)`，避免任何 auth wall 容器
 *        即便误挂 `.pss-empty-state / .pss-X-empty` 也被 flex 列化；
 *     2) `align-items` 从 `flex-start` 改成 `center`，与基础 `.pss-empty-state`
 *        和新启用的 `.pss-state-panel--empty`（R8 8-3）的 `text-align: center`
 *        / `margin-left/right: auto` 语义一致；
 *     3) 移除原本的 `margin: 0`：块本身居中改由基础 `.pss-empty-state`（line ~1526）
 *        和 `.pss-state-panel--empty`（R8 8-3）共同提供的 `margin-left/right: auto` 承担。 */
.pss-frontend-shell .pss-empty-state:not(.pss-auth-wall),
.pss-frontend-shell .pss-library-empty:not(.pss-auth-wall),
.pss-frontend-shell .pss-clg-empty:not(.pss-auth-wall),
.pss-frontend-shell .pss-selection-empty:not(.pss-auth-wall),
.pss-frontend-shell .pss-quotes-empty:not(.pss-auth-wall) {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--pss-space-2, 8px);
}
.pss-frontend-shell .pss-empty-state:not(.pss-auth-wall) > *,
.pss-frontend-shell .pss-library-empty:not(.pss-auth-wall) > *,
.pss-frontend-shell .pss-clg-empty:not(.pss-auth-wall) > *,
.pss-frontend-shell .pss-selection-empty:not(.pss-auth-wall) > *,
.pss-frontend-shell .pss-quotes-empty:not(.pss-auth-wall) > * {
	margin: 0;
}
.pss-frontend-shell .pss-empty-state:not(.pss-auth-wall) .pss-public-actions,
.pss-frontend-shell .pss-empty-state:not(.pss-auth-wall) .pss-btn,
.pss-frontend-shell .pss-library-empty:not(.pss-auth-wall) .pss-btn,
.pss-frontend-shell .pss-clg-empty:not(.pss-auth-wall) .pss-btn,
.pss-frontend-shell .pss-selection-empty:not(.pss-auth-wall) .pss-btn,
.pss-frontend-shell .pss-quotes-empty:not(.pss-auth-wall) .pss-btn {
	margin-top: var(--pss-space-state-actions);
}

/* 7-3 segmented tabs（版样组 / 报价）— 与上方说明 / notice 之间保持 section gap */
.pss-frontend-shell .pss-customer-library-groups-tabs,
.pss-frontend-shell .pss-customer-quotes-tabs,
.pss-frontend-shell .pss-portal-segmented-tabs,
.pss-frontend-shell .pss-clg-tabs,
.pss-frontend-shell .pss-tabs {
	margin-top: var(--pss-space-tabs);
	margin-bottom: var(--pss-space-section, var(--pss-space-6));
	display: flex;
	flex-wrap: wrap;
	gap: var(--pss-space-2, 8px);
}
/* tabs 紧跟在 .pss-public-section 后时不重复加距 */
.pss-frontend-shell .pss-public-section + .pss-customer-library-groups-tabs,
.pss-frontend-shell .pss-public-section + .pss-customer-quotes-tabs,
.pss-frontend-shell .pss-public-section + .pss-portal-segmented-tabs,
.pss-frontend-shell .pss-public-section + .pss-clg-tabs,
.pss-frontend-shell .pss-public-section + .pss-tabs {
	margin-top: var(--pss-space-section, var(--pss-space-6));
}

/* 7-4 Modal — 详情弹窗布局见文件前部「详情 Modal 布局分层」段（shell / box / scroll / body） */

/* 7-5 所有 *-actions 类共用 actions 节奏（合并 R5 6-4，扩展到剩余的页面 actions class） */
.pss-frontend-shell .pss-public-actions,
.pss-frontend-shell .pss-card-actions,
.pss-frontend-shell .pss-list-card__actions,
.pss-frontend-shell .pss-empty-state__actions,
.pss-frontend-shell .pss-customer-portal-actions,
.pss-frontend-shell .pss-customer-library-group-actions,
.pss-frontend-shell .pss-clg-card-actions,
.pss-frontend-shell .pss-clg-detail-actions,
.pss-frontend-shell .pss-quote-actions,
.pss-frontend-shell .pss-quote-actions__btns,
.pss-frontend-shell .pss-selection-item-controls,
.pss-frontend-shell .pss-asset-detail-actions {
	display: block;
	flex-wrap: unset;
	align-items: stretch;
	gap: 0;
	min-width: 0;
}
.pss-frontend-shell .pss-public-actions > p,
.pss-frontend-shell .pss-customer-portal-actions > p,
.pss-frontend-shell .pss-customer-library-group-actions > p,
.pss-frontend-shell .pss-clg-card-actions > p,
.pss-frontend-shell .pss-clg-detail-actions > p,
.pss-frontend-shell .pss-quote-actions > p,
.pss-frontend-shell .pss-quote-actions__btns > p {
	margin: 0;
	min-width: 0;
}

/* 7-6 详情卡片 actions：保持与列表 actions 同节奏 */
.pss-frontend-shell .pss-clg-card-actions,
.pss-frontend-shell .pss-customer-library-group-actions {
	margin-top: var(--pss-space-3, 12px);
}

/* 7-8 移动端 (≤480px)：所有 actions 容器纵向拉满；按钮全宽 */
@media (max-width: 480px) {
	.pss-frontend-shell .pss-public-actions,
	.pss-frontend-shell .pss-customer-portal-actions,
	.pss-frontend-shell .pss-customer-library-group-actions,
	.pss-frontend-shell .pss-clg-card-actions,
	.pss-frontend-shell .pss-clg-detail-actions,
	.pss-frontend-shell .pss-quote-actions,
	.pss-frontend-shell .pss-quote-actions__btns {
		flex-direction: column;
		align-items: stretch;
	}
	.pss-frontend-shell .pss-public-actions .pss-btn,
	.pss-frontend-shell .pss-customer-portal-actions .pss-btn,
	.pss-frontend-shell .pss-customer-library-group-actions .pss-btn,
	.pss-frontend-shell .pss-clg-card-actions .pss-btn,
	.pss-frontend-shell .pss-clg-detail-actions .pss-btn,
	.pss-frontend-shell .pss-quote-actions .pss-btn,
	.pss-frontend-shell .pss-quote-actions__btns .pss-btn {
		width: 100%;
	}
	.pss-frontend-shell .pss-public-actions > p,
	.pss-frontend-shell .pss-customer-portal-actions > p,
	.pss-frontend-shell .pss-customer-library-group-actions > p,
	.pss-frontend-shell .pss-clg-card-actions > p,
	.pss-frontend-shell .pss-clg-detail-actions > p {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: var(--pss-space-2, 8px);
	}
}

/* 版样组详情：窄屏返回 + 归档保持同行（覆盖 7-8 全宽纵向规则） */
@media (max-width: 480px) {
	.pss-frontend-shell .pss-library-group-my-detail-main .pss-clg-detail-back.pss-clg-detail-actions {
		flex-direction: row;
		align-items: center;
	}

	.pss-frontend-shell .pss-library-group-my-detail-main .pss-clg-detail-back.pss-clg-detail-actions .pss-btn {
		width: auto;
	}

	.pss-frontend-shell .pss-library-group-my-detail-main .pss-clg-back__link.pss-btn {
		flex: 1 1 auto;
		min-width: 0;
	}
}

/* 7-9 卡片栈：版样组 / 报价列表走 .pss-clg-list.pss-grid 与版库同构 */

/* 7-10 .pss-public-actions：当独立出现（非 empty-state 内）时与上一兄弟保持 gap
 *      避免某些页面缺 `.pss-notice` 直接放 actions 时贴着 header */
.pss-frontend-shell h1 + .pss-public-actions,
.pss-frontend-shell h2 + .pss-public-actions,
.pss-frontend-shell h3 + .pss-public-actions,
.pss-frontend-shell .pss-public-header + .pss-public-actions {
	margin-top: var(--pss-space-state-actions);
}

/* ══════════════════════════════════════════════════════════════════════
 * Phase 18J-R8 — State / Auth Wall / Modal / Component Semantics
 *
 *   Codex R7 审计三层语义：
 *     - empty   ：真正的「无数据」占位（空版库 / 空版样组 / 空选版篮 / 空报价）。
 *                 视觉上居中、限宽 28rem，仍保留 `.pss-empty-state` 命名。
 *     - state   ：通用「状态面板」基础（标题 + 说明 + 可选 actions），全宽块流。
 *                 由 `.pss-state-panel` + `--info` / `--empty` modifier 承载。
 *     - auth    ：「未登录 / 未绑定 / 未选企业 / 报价无权」等门禁状态，全宽块流，
 *                 由 `.pss-auth-wall` 语义化承载；可与 `.pss-state-panel` 组合，
 *                 也可作为 guest-gate wrap 的纯语义 marker。
 *
 *   核心原则（Codex R7 / R8 任务）：
 *     1) auth wall 绝不继承 `.pss-empty-state { max-width: 28rem }`。
 *     2) Modal 宽度唯一来源 = `.pss-modal#pss-detail-modal .pss-modal__box`，
 *        删除所有 `.pss-X-page .pss-modal__box` 页面级 override。
 *     3) Portal / login / tenant choice 卡片接入公共 card token（不重写视觉）。
 *     4) 不靠末尾高 specificity 单点 patch 解决问题；用语义类正向建模。
 * ══════════════════════════════════════════════════════════════════════ */

/* 8-1 通用 state panel 基础视觉（全宽，块流；不继承 empty-state 的 28rem 收窄） */
.pss-frontend-shell .pss-state-panel {
	display: block;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	text-align: left;
}

/* 8-2 state-panel modifier：info 型（用于 auth wall / 提示型 panel） */
.pss-frontend-shell .pss-state-panel--info {
	/* 视觉由内部 .pss-notice + .pss-public-actions 自行承载；
	 * 这里只确保容器不限宽、不居中。 */
	display: block;
}

/* 8-3 state-panel modifier：empty 型（跟随容器全宽；Phase 20A 取消 28rem） */
.pss-frontend-shell .pss-state-panel--empty {
	text-align: center;
	padding: 2rem 1rem;
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
	color: var(--pss-text-muted);
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	box-sizing: border-box;
}

/* 8-4 Auth wall — 语义类：明确「这是门禁状态，不是空数据」
 *     可单独作为 guest-gate wrap 的语义 marker，也可与 .pss-state-panel 组合。
 *     Auth walls are NOT empty states; keep width controlled by shell. */
.pss-frontend-shell .pss-auth-wall {
	display: block;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	text-align: left;
}
/* 防御：哪怕同一个元素叠加了 `.pss-empty-state`（历史模板兼容），auth wall 也吃全宽 */
.pss-frontend-shell .pss-auth-wall.pss-empty-state {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
	padding: 0;
	text-align: left;
}

/* 8-5 登录 no-invite 提示：把它从 empty-state 28rem 中拉出来
 *     即使旧 HTML 还残留 `.pss-empty-state`，本规则也确保它视觉与登录主卡同宽。 */
.pss-frontend-shell .pss-login-no-invite,
.pss-frontend-shell .pss-login-no-invite.pss-empty-state {
	max-width: none;
	width: 100%;
	margin: 0;
	padding: 1rem 1.1rem;
	text-align: left;
	box-sizing: border-box;
}

/* 8-6 个人中心「无可用企业」也是 auth wall 语义，不是 empty data
 *     CustomerTenantSelectorView::render_no_active_tenant_rows() 历史 class 兼容。
 *     R8 PHP 已补 `.pss-auth-wall pss-state-panel pss-state-panel--info`，
 *     这里再用 page 上下文 selector 兜底，避免任何 cascade 漏网。 */
.pss-frontend-shell .pss-customer-portal .pss-empty-state,
.pss-frontend-shell .pss-customer-portal .pss-state-panel {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
	text-align: left;
}

/* 8-7 Guest gate 外壳语义统一：四个客户前台未登录入口都补 `.pss-auth-wall`，
 *     CSS 仅声明语义（全宽 + 块流 + 与上方 hero/header 节奏一致），
 *     间距规则照 R6 7-1（notice → actions 16px）走，不再写新 margin。 */
.pss-frontend-shell .pss-auth-wall .pss-notice,
.pss-frontend-shell .pss-state-panel .pss-notice {
	width: 100%;
	box-sizing: border-box;
}
.pss-frontend-shell .pss-auth-wall .pss-public-actions,
.pss-frontend-shell .pss-state-panel .pss-public-actions {
	width: 100%;
	box-sizing: border-box;
}

/* 8-8 Modal — single source of truth
 *
 *   规则唯一来源：`.pss-modal#pss-detail-modal .pss-modal__box(.pss-modal-content)`
 *   （已在 R6 7-4 定义；特异性 0,2,1，胜过任何 page-class 0,2,0 override）。
 *
 *   R8 在此把 `.pss-library-page / -groups-page / -selection-page / -quote-detail-page
 *   .pss-modal__box` 历史 page-class override 全部归零（width: unset; max-width: unset）。
 *   即便未来某处又意外引入页面级 modal 规则，本兜底也会让它失效。 */
.pss-frontend-shell .pss-library-page .pss-modal__box,
.pss-frontend-shell .pss-customer-library-groups-page .pss-modal__box,
.pss-frontend-shell .pss-selection-page .pss-modal__box,
.pss-frontend-shell .pss-quote-detail-page .pss-modal__box,
.pss-frontend-shell .pss-library-page .pss-modal__box.pss-modal-content,
.pss-frontend-shell .pss-customer-library-groups-page .pss-modal__box.pss-modal-content,
.pss-frontend-shell .pss-selection-page .pss-modal__box.pss-modal-content,
.pss-frontend-shell .pss-quote-detail-page .pss-modal__box.pss-modal-content {
	width: unset;
	max-width: unset;
}

/* 8-9 Portal cards / 登录 notice / tenant choice 接入公共 card token
 *     不重写视觉（保留原有 border/radius/padding 数值作为兼容兜底），
 *     而是用公共 card token 提供「同一组 token-driven」视觉基底。
 *
 *     这一步让 R5 6-6 的卡片基础 selector（.pss-public-card / .pss-ui-card / ...）
 *     真正覆盖 portal entry / tenant choice / login notice / no-invite，
 *     从而消除「同样是卡，padding 不同」的历史多源问题。 */
.pss-frontend-shell .pss-customer-login-notice,
.pss-frontend-shell .pss-login-no-invite,
.pss-frontend-shell .pss-login-invite-card {
	background: var(--pss-card-bg);
	border: 1px solid var(--pss-card-border, var(--pss-public-border));
	border-radius: var(--pss-card-radius, var(--pss-public-card-shell-radius));
	box-shadow: var(--pss-card-shadow, var(--pss-public-shadow));
	box-sizing: border-box;
}
/* 卡 padding 统一使用 --pss-space-card（保持各自语义内的 padding 历史值不冲突） */
.pss-frontend-shell .pss-customer-login-notice {
	padding: var(--pss-space-card, var(--pss-space-4));
}
.pss-frontend-shell .pss-login-invite-card {
	padding: var(--pss-space-card, var(--pss-space-4));
}

/* 8-10 Forms：filter / 选版篮 / 登录 / 报价输入控件接入统一视觉
 *      .pss-filter-search / .pss-filter-type 已是原生 input/select，
 *      R8 把它们与 `.pss-input / .pss-select / .pss-textarea` 同步到一组样式。 */
.pss-frontend-shell .pss-filter-search,
.pss-frontend-shell .pss-filter-type,
.pss-frontend-shell .pss-input,
.pss-frontend-shell .pss-select,
.pss-frontend-shell .pss-textarea,
.pss-frontend-shell .pss-customer-login-input {
	box-sizing: border-box;
	min-height: 44px;
	padding: 10px 12px;
	border: 1px solid var(--pss-public-border, var(--pss-border));
	border-radius: var(--pss-public-radius, 6px);
	background: #fff;
	font-size: 14px;
	line-height: 1.4;
	color: #1d2327;
}
.pss-frontend-shell .pss-textarea {
	min-height: 96px;
	line-height: 1.5;
	resize: vertical;
}
.pss-frontend-shell .pss-filter-search:focus,
.pss-frontend-shell .pss-filter-type:focus,
.pss-frontend-shell .pss-input:focus,
.pss-frontend-shell .pss-select:focus,
.pss-frontend-shell .pss-textarea:focus,
.pss-frontend-shell .pss-customer-login-input:focus {
	outline: none;
	outline-offset: 0;
	border-color: var(--pss-primary, #0073aa);
	box-shadow: none;
}

/* 8-11 删除（Phase 18J-R9 / 1.2.96）
 *
 *   旧 R8 8-11（1.2.95）是为了补救 R6 7-2 把 `.pss-empty-state` 强制设为
 *   `align-items: flex-start; margin: 0` 后，块本身贴左 + 内部 flex 项目左对齐的问题。
 *   R9 直接把 R6 7-2 改为 `align-items: center` 并移除 `margin: 0`，
 *   块本身居中由 `.pss-empty-state` 基础规则（line ~1526）+ `.pss-state-panel--empty`
 *   （8-3）的 `margin-left/right: auto` 提供，内部居中由 `align-items: center` +
 *   基础规则的 `text-align: center` 提供。
 *
 *   因此本块（原 R8 8-11 的 margin auto / align center / text-align center 兜底）
 *   全部可以消失。auth wall 不被 R6 7-2 触及（因为 R9 已经为其加了 `:not(.pss-auth-wall)`），
 *   也不会继承 `.pss-empty-state` 的 28rem 限宽（R8 8-4/8-5/8-6 的防御性规则保留）。 */

/* ══════════════════════════════════════════════════════════════════════
 * Phase 20C — Customer Frontend Typography（同等语义层级统一）
 *
 * 策略：在 `.pss-frontend-shell` 内用 token 收口 scattered 字号 / 字重 / 行高；
 * 保留 border / spacing / 宽度 / 无阴影基线；表单 focus 仅内层蓝 border（Phase 20D）。
 * ══════════════════════════════════════════════════════════════════════ */

.pss-frontend-shell {
	font-family: var(--pss-font);
	font-size: var(--pss-font-size-base);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-body);
}

/* ── Page title（主标题） ── */
.pss-frontend-shell .pss-public-title,
.pss-frontend-shell .pss-library-page .pss-library-header__title,
.pss-frontend-shell .pss-library-page .pss-library-share-title,
.pss-frontend-shell .pss-clg-detail-header__title,
.pss-frontend-shell .pss-selection-header__title,
.pss-frontend-shell .pss-selection__title,
.pss-frontend-shell .pss-customer-portal-title,
.pss-frontend-shell .pss-customer-login__title,
.pss-frontend-shell .pss-quote-detail-page .pss-qd-header h2 {
	font-size: var(--pss-font-size-2xl);
	font-weight: var(--pss-font-weight-bold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}

/* ── Section title（区块标题） ── */
.pss-frontend-shell .pss-login-panel__title,
.pss-frontend-shell .pss-submit-inquiry__title,
.pss-frontend-shell .pss-qd-items h3,
.pss-frontend-shell .pss-submit-success h3 {
	font-size: var(--pss-font-size-xl);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}

/* ── Card / list item title（卡片标题） ── */
.pss-frontend-shell .pss-card__title,
.pss-frontend-shell .pss-detail__title,
.pss-frontend-shell .pss-sel-item__title,
.pss-frontend-shell .pss-qd-item__title,
.pss-frontend-shell .pss-clg-list__title,
.pss-frontend-shell .pss-login-invite-card__lead {
	font-size: var(--pss-font-size-lg);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}

/* ── Body / 正文 ── */
.pss-frontend-shell .pss-customer-login,
.pss-frontend-shell .pss-public-page--login .pss-login-layout.pss-public-wrap--narrow,
.pss-frontend-shell .pss-customer-portal.pss-public-wrap,
.pss-frontend-shell .pss-login-invite-card__copy,
.pss-frontend-shell .pss-login-invite-card__meta,
.pss-frontend-shell .pss-customer-login-error,
.pss-frontend-shell .pss-qd-summary__row {
	font-size: var(--pss-font-size-base);
	font-weight: var(--pss-font-weight-normal);
	line-height: var(--pss-line-height-normal);
}

.pss-frontend-shell .pss-detail__info .pss-detail__desc,
.pss-frontend-shell .pss-detail__info .pss-detail__desc p {
	font-size: 13px;
	font-weight: normal;
	line-height: 1.65;
	color: #1d2327;
}

.pss-frontend-shell .pss-modal#pss-detail-modal .pss-add-form .pss-textarea,
.pss-frontend-shell .pss-modal#pss-detail-modal .pss-add-form input[name="recolor_note"] {
	font-size: 13px;
	line-height: 1.65;
	color: #1d2327;
}

.pss-frontend-shell .pss-modal#pss-detail-modal .pss-add-form .pss-textarea {
	resize: none;
}

/* ── Muted / 副标题 / 说明 ── */
.pss-frontend-shell .pss-public-subtitle,
.pss-frontend-shell .pss-library-page .pss-library-header__subtitle,
.pss-frontend-shell .pss-library-page .pss-library-share-desc,
.pss-frontend-shell .pss-selection-header__subtitle,
.pss-frontend-shell .pss-customer-portal-subtitle,
.pss-frontend-shell .pss-login-tagline,
.pss-frontend-shell .pss-login-panel__lead,
.pss-frontend-shell .pss-login-divider,
.pss-frontend-shell .pss-submit-inquiry__intro,
.pss-frontend-shell .pss-quote-actions__lead,
.pss-frontend-shell .pss-clg-detail-intro,
.pss-frontend-shell .pss-empty-state,
.pss-frontend-shell .pss-state-panel--empty,
.pss-frontend-shell .pss-empty-state__hint,
.pss-frontend-shell .pss-library-empty__hint,
.pss-frontend-shell .pss-selection-empty__hint,
.pss-frontend-shell .pss-quotes-empty__hint,
.pss-frontend-shell .pss-clg-empty__hint {
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-normal);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-muted);
}

.pss-frontend-shell .pss-notice .pss-login-invite-invalid__muted,
.pss-frontend-shell .pss-notice .pss-clg-feedback__hint {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	text-align: center;
	color: inherit;
}

.pss-frontend-shell .pss-login-subtitle {
	font-size: var(--pss-font-size-base);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-heading);
}

/* ── Meta / badge / 辅助 ── */
.pss-frontend-shell .pss-sel-item__code,
.pss-frontend-shell .pss-sel-item__source,
.pss-frontend-shell .pss-sel-item__variant,
.pss-frontend-shell .pss-qd-item__code,
.pss-frontend-shell .pss-qd-item__type,
.pss-frontend-shell .pss-qd-item__variant,
.pss-frontend-shell .pss-qd-item__note,
.pss-frontend-shell .pss-card__type,
.pss-frontend-shell .pss-card__price-note,
.pss-frontend-shell .pss-card-actions-hint,
.pss-frontend-shell .pss-quote-status,
.pss-frontend-shell .pss-clg-list__meta dd,
.pss-frontend-shell .pss-customer-portal__admin-tip,
.pss-frontend-shell .pss-notice--admin-hint,
.pss-frontend-shell .pss-library-page .pss-library-block-hint,
.pss-frontend-shell .pss-library-page .pss-library-admin-tip,
.pss-frontend-shell .pss-selection-page .pss-selection-remove-hint,
.pss-frontend-shell .pss-clg-detail-actions-hint,
.pss-frontend-shell .pss-submit-inquiry__note,
.pss-frontend-shell .pss-customer-login-notice p.description {
	font-size: var(--pss-font-size-xs);
	font-weight: var(--pss-font-weight-normal);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-muted);
}

.pss-frontend-shell .pss-badge,
.pss-frontend-shell .pss-card__badge {
	font-size: var(--pss-font-size-xs);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
}

/* ── Label / 表单标签 ── */
.pss-frontend-shell .pss-form-label,
.pss-frontend-shell .pss-submit-inquiry__field label,
.pss-frontend-shell .pss-customer-login-field label,
.pss-frontend-shell .pss-selection-page .pss-selection-note-label,
.pss-frontend-shell .pss-login-invite-card__meta dt {
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-medium);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-heading);
}

/* ── Input / Select / Textarea ── */
.pss-frontend-shell .pss-input,
.pss-frontend-shell .pss-select,
.pss-frontend-shell .pss-textarea,
.pss-frontend-shell .pss-customer-login-input,
.pss-frontend-shell .pss-filter-search,
.pss-frontend-shell .pss-filter-type {
	font-size: var(--pss-font-size-base);
	line-height: var(--pss-line-height-normal);
}

/* ── Button / link action ── */
.pss-frontend-shell .pss-btn,
.pss-frontend-shell a.pss-btn,
.pss-frontend-shell button.pss-btn,
.pss-frontend-shell .pss-link-action,
.pss-frontend-shell .pss-back-link {
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
}

.pss-frontend-shell .pss-selection-page #pss-submit-inquiry-btn,
.pss-frontend-shell .pss-quote-detail-page .pss-quote-actions__btns.pss-qd-actions .pss-btn {
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
}

.pss-frontend-shell .pss-portal-company-actions__button,
.pss-frontend-shell .pss-btn--portal-action {
	font-size: var(--pss-font-size-base);
	font-weight: var(--pss-font-weight-semibold);
	line-height: 1;
}

/* ── Notice ── */
.pss-frontend-shell .pss-notice {
	font-size: var(--pss-font-size-lg);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-relaxed);
	text-align: center;
}

/* ── Empty state title（与 section title 同级） ── */
.pss-frontend-shell .pss-empty-state__title,
.pss-frontend-shell .pss-empty-state .pss-library-empty__title,
.pss-frontend-shell .pss-empty-state .pss-selection-empty__title,
.pss-frontend-shell .pss-empty-state .pss-quotes-empty__title,
.pss-frontend-shell .pss-empty-state .pss-clg-empty__title,
.pss-frontend-shell .pss-clg-empty .pss-clg-empty__title,
.pss-frontend-shell .pss-library-empty__title,
.pss-frontend-shell .pss-quotes-empty__title {
	font-size: var(--pss-font-size-xl);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-tight);
	color: var(--pss-text-heading);
}

/* ── 强调数值 / 价格 ── */
.pss-frontend-shell .pss-clg-list__count-num,
.pss-frontend-shell .pss-qd-grand-total strong {
	font-size: var(--pss-font-size-xl);
	font-weight: var(--pss-font-weight-bold);
	line-height: var(--pss-line-height-tight);
}

/* ── 个人中心强调行 ── */
.pss-frontend-shell .pss-customer-portal-current-line,
.pss-frontend-shell .pss-portal-company-switcher__name,
.pss-frontend-shell .pss-library-page .pss-library-header__tenant,
.pss-frontend-shell .pss-library-page .pss-library-share-tenant {
	font-size: var(--pss-font-size-base);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-heading);
}

.pss-frontend-shell .pss-qd-result-static {
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-semibold);
	line-height: var(--pss-line-height-normal);
}

/* ──────────────────────────────────────────────
   Phase 20F — [pss_customer_user_menu] 页眉用户菜单
────────────────────────────────────────────── */
.pss-customer-user-menu {
	position: relative;
	display: inline-flex;
	align-items: center;
	max-width: 100%;
	font-family: var(--pss-font);
	box-sizing: border-box;
}

.pss-customer-user-menu__login {
	display: inline-flex;
	align-items: center;
	gap: var(--pss-space-2);
	padding: 0.35rem 0.5rem 0.35rem 0.35rem;
	min-height: 0;
	border: 1px solid var(--pss-border);
	border-radius: 999px;
	background: var(--pss-card-bg);
	color: var(--pss-text-body);
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-medium);
	line-height: var(--pss-line-height-tight);
	text-decoration: none;
	box-sizing: border-box;
	max-width: 100%;
	box-shadow: none;
	overflow-wrap: anywhere;
}

.pss-customer-user-menu__login:hover {
	border-color: var(--pss-primary);
	color: var(--pss-primary);
	text-decoration: none;
}

.pss-customer-user-menu__login:focus {
	outline: none;
	border-color: var(--pss-primary);
	box-shadow: none;
}

.pss-customer-user-menu__trigger {
	display: inline-flex;
	align-items: center;
	gap: var(--pss-space-2);
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-medium);
	line-height: var(--pss-line-height-tight);
	text-decoration: none;
	box-sizing: border-box;
	max-width: 100%;
	border: 1px solid var(--pss-border);
	background: var(--pss-card-bg);
	color: var(--pss-text-body);
	border-radius: 999px;
	padding: 0.35rem 0.5rem 0.35rem 0.35rem;
	min-height: 0;
	cursor: pointer;
	box-shadow: none;
	overflow-wrap: anywhere;
}

.pss-customer-user-menu__trigger:hover {
	border-color: var(--pss-primary);
	color: var(--pss-primary);
}

.pss-customer-user-menu__trigger:focus {
	outline: none;
	border-color: var(--pss-primary);
	box-shadow: none;
}

.pss-customer-user-menu__avatar {
	width: 24px;
	height: 24px;
	flex: 0 0 24px;
	border-radius: 50%;
	object-fit: cover;
	background: var(--pss-bg);
	display: block;
}

.pss-customer-user-menu__name {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.pss-customer-user-menu__muted {
	display: inline-block;
	font-size: var(--pss-font-size-sm);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-muted);
	max-width: min(100vw - 24px, 280px);
}

.pss-customer-user-menu__dropdown {
	position: absolute;
	top: 100%;
	right: 0;
	z-index: 100;
	min-width: 180px;
	max-width: min(calc(100vw - 24px), 260px);
	list-style: none;
	margin: 0;
	padding: var(--pss-space-2);
	border: 1px solid var(--pss-border);
	border-radius: var(--pss-public-card-shell-radius);
	background: var(--pss-card-bg);
	box-shadow: none;
	opacity: 0;
	visibility: hidden;
	transform: translateY(-4px);
	pointer-events: none;
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
}

.pss-customer-user-menu:hover .pss-customer-user-menu__dropdown,
.pss-customer-user-menu:focus-within .pss-customer-user-menu__dropdown {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
	pointer-events: auto;
}

.pss-customer-user-menu__item {
	margin: 0;
	padding: 0;
}

.pss-customer-user-menu__link {
	display: block;
	width: 100%;
	box-sizing: border-box;
	padding: var(--pss-space-2) var(--pss-space-3);
	font-size: var(--pss-font-size-sm);
	font-weight: var(--pss-font-weight-medium);
	line-height: var(--pss-line-height-normal);
	color: var(--pss-text-body);
	text-decoration: none;
	border-radius: var(--pss-radius);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.pss-customer-user-menu__link:hover {
	color: var(--pss-primary);
	background: var(--pss-bg);
}

.pss-customer-user-menu__link:focus {
	outline: none;
	border: 1px solid var(--pss-primary);
	box-shadow: none;
}

.pss-customer-user-menu__link.is-current,
.pss-customer-user-menu__link[aria-current="page"] {
	background: var(--pss-bg);
	color: var(--pss-primary);
	font-weight: var(--pss-font-weight-semibold);
}

.pss-customer-user-menu__link.is-current:hover,
.pss-customer-user-menu__link[aria-current="page"]:hover {
	background: var(--pss-bg);
	color: var(--pss-primary);
}

.pss-customer-user-menu__item--disabled {
	opacity: 0.55;
	cursor: not-allowed;
	color: var(--pss-text-muted);
}

.pss-customer-user-menu__item--disabled:hover {
	color: var(--pss-text-muted);
	background: transparent;
}

.pss-customer-user-menu__item--separator {
	margin-top: var(--pss-space-2);
	padding-top: var(--pss-space-2);
	border-top: 1px solid var(--pss-border);
}

.pss-customer-user-menu__link--logout {
	color: var(--pss-text-body);
}

.pss-customer-user-menu__link--logout:hover {
	color: var(--pss-primary);
	background: var(--pss-bg);
}

/* 详情弹窗 — 窄屏全屏 + 宽窄屏统一底部安全区（收口，避免被通用 modal 规则覆盖） */
@media (max-width: 599px) {
	.pss-modal#pss-detail-modal {
		align-items: stretch;
		height: 100dvh;
		min-height: 100dvh;
		max-height: 100dvh;
	}

	.pss-modal#pss-detail-modal .pss-modal__shell {
		flex: 1 1 auto;
		align-self: stretch;
		width: 100%;
		max-width: 100%;
		height: 100%;
		min-height: 100dvh;
	}

	.pss-modal#pss-detail-modal .pss-modal__box,
	.pss-modal#pss-detail-modal .pss-modal__box.pss-modal-content {
		flex: 1 1 auto;
		width: 100%;
		height: 100%;
		min-height: 0;
		max-height: 100dvh;
		margin: 0;
		padding-bottom: 0;
	}
}

.pss-modal#pss-detail-modal .pss-modal__body {
	padding-bottom: var(--pss-detail-modal-body-pad-bottom);
}
