fix: scope trade-pro element baselines to body class (review I-1/I-2/I-3)
- body/h1-h4/p/a/:focus-visible/label/input/details/summary now under .sf-theme-trade-pro so they win the cascade over platform pro-base.css (cms typography actually applies now) - same scoping inside the 620px mobile block to keep overrides effective - data-reveal gated behind html.js + comment states Task 10 JS dependency Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+37
-34
@@ -270,7 +270,9 @@ html {
|
|||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
/* Element baselines are scoped to the theme body class so they win the cascade
|
||||||
|
over platform pro-base.css (same specificity would lose to later loads). */
|
||||||
|
body.sf-theme-trade-pro {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: var(--sf-tp-color-surface-page);
|
background: var(--sf-tp-color-surface-page);
|
||||||
color: var(--sf-tp-color-text-primary);
|
color: var(--sf-tp-color-text-primary);
|
||||||
@@ -281,10 +283,10 @@ body {
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
.sf-theme-trade-pro h1,
|
||||||
h2,
|
.sf-theme-trade-pro h2,
|
||||||
h3,
|
.sf-theme-trade-pro h3,
|
||||||
h4 {
|
.sf-theme-trade-pro h4 {
|
||||||
font-family: var(--sf-tp-font-family-heading);
|
font-family: var(--sf-tp-font-family-heading);
|
||||||
font-weight: var(--sf-tp-font-weight-bold);
|
font-weight: var(--sf-tp-font-weight-bold);
|
||||||
line-height: var(--sf-tp-line-height-tight);
|
line-height: var(--sf-tp-line-height-tight);
|
||||||
@@ -293,21 +295,21 @@ h4 {
|
|||||||
text-wrap: balance;
|
text-wrap: balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 { font-size: var(--sf-tp-font-size-display); }
|
.sf-theme-trade-pro h1 { font-size: var(--sf-tp-font-size-display); }
|
||||||
h2 { font-size: var(--sf-tp-font-size-3xl); }
|
.sf-theme-trade-pro h2 { font-size: var(--sf-tp-font-size-3xl); }
|
||||||
h3 { font-size: var(--sf-tp-font-size-xl); }
|
.sf-theme-trade-pro h3 { font-size: var(--sf-tp-font-size-xl); }
|
||||||
h4 { font-size: var(--sf-tp-font-size-lg); }
|
.sf-theme-trade-pro h4 { font-size: var(--sf-tp-font-size-lg); }
|
||||||
|
|
||||||
p {
|
.sf-theme-trade-pro p {
|
||||||
margin: 0 0 var(--sf-tp-space-4);
|
margin: 0 0 var(--sf-tp-space-4);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
.sf-theme-trade-pro a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
.sf-theme-trade-pro :focus-visible {
|
||||||
outline: var(--sf-tp-focus-outline-width) var(--sf-tp-focus-outline-style) var(--sf-tp-focus-outline-color);
|
outline: var(--sf-tp-focus-outline-width) var(--sf-tp-focus-outline-style) var(--sf-tp-focus-outline-color);
|
||||||
outline-offset: var(--sf-tp-focus-outline-offset);
|
outline-offset: var(--sf-tp-focus-outline-offset);
|
||||||
}
|
}
|
||||||
@@ -528,16 +530,16 @@ a {
|
|||||||
|
|
||||||
/* ── 表单(label 永远可见)── */
|
/* ── 表单(label 永远可见)── */
|
||||||
|
|
||||||
label {
|
.sf-theme-trade-pro label {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: var(--sf-tp-font-weight-semibold);
|
font-weight: var(--sf-tp-font-weight-semibold);
|
||||||
font-size: var(--sf-tp-font-size-sm);
|
font-size: var(--sf-tp-font-size-sm);
|
||||||
margin-block-end: var(--sf-tp-space-2);
|
margin-block-end: var(--sf-tp-space-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
.sf-theme-trade-pro input,
|
||||||
select,
|
.sf-theme-trade-pro select,
|
||||||
textarea {
|
.sf-theme-trade-pro textarea {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: var(--sf-tp-input-border-width) solid var(--sf-tp-color-border-default);
|
border: var(--sf-tp-input-border-width) solid var(--sf-tp-color-border-default);
|
||||||
border-radius: var(--sf-tp-input-border-radius);
|
border-radius: var(--sf-tp-input-border-radius);
|
||||||
@@ -547,37 +549,37 @@ textarea {
|
|||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:focus-visible,
|
.sf-theme-trade-pro input:focus-visible,
|
||||||
select:focus-visible,
|
.sf-theme-trade-pro select:focus-visible,
|
||||||
textarea:focus-visible {
|
.sf-theme-trade-pro textarea:focus-visible {
|
||||||
border-color: var(--sf-tp-color-border-brand);
|
border-color: var(--sf-tp-color-border-brand);
|
||||||
}
|
}
|
||||||
|
|
||||||
textarea {
|
.sf-theme-trade-pro textarea {
|
||||||
min-height: 120px;
|
min-height: 120px;
|
||||||
resize: vertical;
|
resize: vertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── FAQ 折叠(原生 details,静态可抓取)── */
|
/* ── FAQ 折叠(原生 details,静态可抓取)── */
|
||||||
|
|
||||||
details {
|
.sf-theme-trade-pro details {
|
||||||
border: var(--sf-tp-border-width-hairline) solid var(--sf-tp-color-border-subtle);
|
border: var(--sf-tp-border-width-hairline) solid var(--sf-tp-color-border-subtle);
|
||||||
border-radius: var(--sf-tp-radius-sm);
|
border-radius: var(--sf-tp-radius-sm);
|
||||||
margin-block-end: calc(var(--sf-tp-space-3) - var(--sf-tp-space-1));
|
margin-block-end: calc(var(--sf-tp-space-3) - var(--sf-tp-space-1));
|
||||||
background: var(--sf-tp-color-surface-default);
|
background: var(--sf-tp-color-surface-default);
|
||||||
}
|
}
|
||||||
|
|
||||||
summary {
|
.sf-theme-trade-pro summary {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: var(--sf-tp-space-4) calc(var(--sf-tp-space-4) + var(--sf-tp-space-1));
|
padding: var(--sf-tp-space-4) calc(var(--sf-tp-space-4) + var(--sf-tp-space-1));
|
||||||
font-weight: var(--sf-tp-font-weight-semibold);
|
font-weight: var(--sf-tp-font-weight-semibold);
|
||||||
}
|
}
|
||||||
|
|
||||||
details[open] summary {
|
.sf-theme-trade-pro details[open] summary {
|
||||||
border-block-end: var(--sf-tp-border-width-hairline) solid var(--sf-tp-color-border-subtle);
|
border-block-end: var(--sf-tp-border-width-hairline) solid var(--sf-tp-color-border-subtle);
|
||||||
}
|
}
|
||||||
|
|
||||||
details p {
|
.sf-theme-trade-pro details p {
|
||||||
padding: var(--sf-tp-space-4) calc(var(--sf-tp-space-4) + var(--sf-tp-space-1));
|
padding: var(--sf-tp-space-4) calc(var(--sf-tp-space-4) + var(--sf-tp-space-1));
|
||||||
color: var(--sf-tp-color-text-muted);
|
color: var(--sf-tp-color-text-muted);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -594,10 +596,11 @@ details p {
|
|||||||
color: var(--sf-tp-color-text-brand);
|
color: var(--sf-tp-color-text-brand);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── 滚动浮现动效(reduced-motion 与无 JS 时默认可见,渐进增强)── */
|
/* ── 滚动浮现动效(渐进增强:仅在 JS 打开 html.js 且注册 IntersectionObserver
|
||||||
|
后生效——Task 10 随布局引入配套 JS;无 JS/reduced-motion 时默认可见)── */
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
[data-reveal] {
|
html.js [data-reveal] {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(calc(var(--sf-tp-space-3)));
|
transform: translateY(calc(var(--sf-tp-space-3)));
|
||||||
transition:
|
transition:
|
||||||
@@ -606,7 +609,7 @@ details p {
|
|||||||
transition-delay: calc(var(--sf-tp-duration-fast) * var(--reveal-i, 0));
|
transition-delay: calc(var(--sf-tp-duration-fast) * var(--reveal-i, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-reveal].is-visible {
|
html.js [data-reveal].is-visible {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: none;
|
transform: none;
|
||||||
}
|
}
|
||||||
@@ -743,13 +746,13 @@ details p {
|
|||||||
.tabs { gap: 8px; margin-block-end: 16px; }
|
.tabs { gap: 8px; margin-block-end: 16px; }
|
||||||
.tab { min-width: auto; padding: 9px 14px; font-size: 11px; }
|
.tab { min-width: auto; padding: 9px 14px; font-size: 11px; }
|
||||||
|
|
||||||
/* FAQ */
|
/* FAQ(作用域同桌面基线,保持移动端覆写有效) */
|
||||||
details { margin-block-end: 6px; }
|
.sf-theme-trade-pro details { margin-block-end: 6px; }
|
||||||
summary { padding: 10px 12px; font-size: 12px; }
|
.sf-theme-trade-pro summary { padding: 10px 12px; font-size: 12px; }
|
||||||
details p { padding: 0 12px 10px; font-size: 11px; }
|
.sf-theme-trade-pro details p { padding: 0 12px 10px; font-size: 11px; }
|
||||||
|
|
||||||
/* 表单 */
|
/* 表单 */
|
||||||
input, select, textarea { padding: 8px 10px; font-size: 13px; }
|
.sf-theme-trade-pro input, .sf-theme-trade-pro select, .sf-theme-trade-pro textarea { padding: 8px 10px; font-size: 13px; }
|
||||||
label { font-size: 11px; }
|
.sf-theme-trade-pro label { font-size: 11px; }
|
||||||
textarea { min-height: 80px; }
|
.sf-theme-trade-pro textarea { min-height: 80px; }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user