/* ShopXN type system v1. Local candidate; original brand and baseline remain intact. */
:root {
  --sx-font-body: Inter, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
  --sx-font-interface: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
  --sx-type-display: clamp(2rem, 1.25rem + 3vw, 4rem);
  --sx-type-section: clamp(1.75rem, 1.25rem + 1.5vw, 2.75rem);
  --sx-type-article-heading: clamp(1.5rem, 1.25rem + 1vw, 2rem);
  --sx-type-subheading: clamp(1.125rem, 1rem + .5vw, 1.375rem);
  --sx-type-body: 1rem;
  --sx-type-reading: 1.0625rem;
  --sx-type-label: .875rem;
  --sx-type-caption: .75rem;
  --sx-leading-body: 1.75;
  --sx-leading-reading: 1.85;
  --sx-reading-width: 72ch;
  --sx-space-1: .25rem;
  --sx-space-2: .5rem;
  --sx-space-3: .75rem;
  --sx-space-4: 1rem;
  --sx-space-6: 1.5rem;
  --sx-space-8: 2rem;
  --sx-space-12: 3rem;
  --sx-space-section: clamp(3rem, 6vw, 6rem);
  --sx-control-height: 2.75rem;
  --sx-scroll-offset: 7rem;
}
html { scrollbar-gutter: stable; -webkit-text-size-adjust: 100%; scroll-padding-top: var(--sx-scroll-offset); }
body { font-family: var(--sx-font-body); }
.sx-skip { position: fixed; top: -100px; left: 20px; z-index: 3000; padding: 12px 18px; color: #242424; background: #fff; border: 1px solid #242424; border-radius: 4px; font-size: 16px; line-height: 24px; }
.sx-skip:focus { top: 12px; }
.sx-no-js { padding: 16px; border-left: 3px solid #242424; background: #f7f7f7; font-size: 16px; line-height: 1.75; }
.resource-center:has(.sx-no-js) :is(.rc-search,.rc-categories), body:has(.sx-no-js) #impact-calculator { display: none; }
/* Navigation is its own stable role, never inherited from an article's body. */
.xn-header { font-family: var(--sx-font-interface); }
.xn-header .xn-nav > a,
.xn-header .xn-controls > a:not(.xn-cta) {
  font-family: var(--sx-font-interface); font-size: var(--sx-type-label);
  font-weight: 400; line-height: 20px; letter-spacing: normal;
}
.xn-header .xn-controls > a:not(.xn-cta) { text-decoration: none; }
.xn-header .xn-controls > a:not(.xn-cta):hover { text-decoration: underline; text-underline-offset: 6px; }
.xn-header .xn-cta { font-family: var(--sx-font-interface); font-size: var(--sx-type-label); line-height: 20px; min-height: var(--sx-control-height); }
.xn-header .xn-mobile-links > a:not(.xn-cta) { font-size: 1rem; line-height: 1.5; }
/* Preserve the homepage's existing display composition; normalize service/article roles. */
.shopxn-v3 .sx-intro h1 { font-family: var(--sx-font-body); font-size: var(--sx-type-display); line-height: 1.2; }
.sx-editorial .reading-prose { font-family: var(--sx-font-body); font-size: var(--sx-type-reading); line-height: var(--sx-leading-reading); min-width: 0; }
.sx-editorial .reading-prose :is(p, ul, ol) { max-width: var(--sx-reading-width); }
.sx-editorial .reading-prose p { margin-block: 0 var(--sx-space-6); }
.sx-editorial .reading-prose h2 { font-size: var(--sx-type-article-heading); line-height: 1.3; margin-block: var(--sx-space-12) var(--sx-space-6); }
.sx-editorial .reading-prose h3 { font-size: var(--sx-type-subheading); line-height: 1.4; margin-block: var(--sx-space-8) var(--sx-space-4); }
.sx-editorial .reading-prose > h2:first-child { margin-block-start: 0; }
.sx-editorial .reading-prose :is(p,li,td,th) { overflow-wrap: break-word; }
.sx-editorial .reading-prose a { overflow-wrap: anywhere; text-underline-offset: .18em; }
.sx-editorial .reading-prose li + li { margin-block-start: var(--sx-space-2); }
.sx-editorial .reading-prose :is(pre, .table-responsive) { max-width: 100%; overflow-x: auto; }
.sx-editorial .reading-prose table { width: 100%; }
.sx-editorial .reading-prose :is(td,th) { padding: var(--sx-space-3) var(--sx-space-4); vertical-align: top; }
.sx-editorial .reading-prose img { max-width: 100%; height: auto; }
.sx-editorial .sx-content-section .sx-section-head h2 { font-size: var(--sx-type-section); line-height: 1.25; }
.sx-editorial .sx-content-section :is(p,li,dd) { font-size: var(--sx-type-body); line-height: var(--sx-leading-reading); }
.reading-toc { font-size: var(--sx-type-label); line-height: 1.5; }
.reading-toc a { display: block; padding-block: var(--sx-space-2); overflow-wrap: break-word; }
/* Controls: no default browser font, clipped copy, or arrow against the edge. */
.enquiry-form :is(input,select,textarea,button), .resource-center :is(input,select,button) { font-family: var(--sx-font-body); }
.resource-center .rc-search { position: sticky; top: 96px; z-index: 30; }
.resource-center .rc-search input { font-size: 1rem; }
.resource-center .rc-search button { font-size: var(--sx-type-label); }
.enquiry-form .form-label { display: block; font-size: var(--sx-type-label); line-height: 1.5; margin-block-end: var(--sx-space-2); }
.enquiry-form .form-control { box-sizing: border-box; width: 100%; min-width: 0; min-height: var(--sx-control-height); font-size: 1rem; line-height: 1.5; padding: .75rem 1rem; }
.enquiry-form select:not([multiple]) { appearance: none; padding-inline-end: 3rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23242424' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; background-size: 1rem; }
.enquiry-form select[multiple] { min-height: 10rem; background-image: none; }
.enquiry-form textarea.form-control { min-height: 9rem; resize: vertical; }
.enquiry-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.enquiry-form .sx-local-notice, .enquiry-form .form-status { grid-column: 1 / -1; }
.enquiry-form .sx-local-notice { border-left: 3px solid #242424; padding: 12px 16px; background: #f6f6f6; }
.enquiry-form .sx-field-error { display: block; color: #a12622; font-size: .875rem; line-height: 1.5; margin-top: .5rem; }
.enquiry-form [aria-invalid=true] { border-color: #a12622; }
.enquiry-form button:disabled { cursor: wait; opacity: .65; }
.sx-local-utility { margin: 0; color: #242424; background: #fff; }
.sx-local-error { box-sizing: border-box; max-width: 880px; margin: 0 auto; padding: var(--sx-space-section) 20px; min-height: 60vh; }
.sx-local-error h1 { font-size: var(--sx-type-section); line-height: 1.25; margin-block: 16px 24px; }
.sx-local-error p { font-size: 1rem; line-height: 1.8; max-width: 65ch; }
.sx-local-error nav { display: flex; flex-wrap: wrap; gap: 16px 32px; margin-top: 32px; }
.sx-local-error nav a { color: #242424; text-underline-offset: 4px; line-height: 1.6; padding-block: 12px; }
body :is(h2,h3,section[id],div[id]) { scroll-margin-top: var(--sx-scroll-offset); }
body :is(a,button,input,select,textarea,summary):focus-visible { outline: 2px solid #242424; outline-offset: 4px; }
@media(max-width:700px) {
  :root { --sx-type-reading: 1rem; --sx-scroll-offset: 6rem; }
  .resource-center .rc-search { top: 88px; }
  .sx-editorial .reading-prose :is(td,th) { padding: .625rem .75rem; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior: auto !important; }
  *,*::before,*::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* User Typography V1: one shared vocabulary, three density modes. */
:root {
  --sx-font-interface: var(--sx-font-body);
  --sx-font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --sx-type-hero: clamp(2.125rem, 1.75rem + 1.67vw, 3.25rem);
  --sx-type-page: clamp(2rem, 1.75rem + 1.1vw, 2.625rem);
  --sx-type-section: clamp(1.625rem, 1.4rem + 1vw, 2.125rem);
  --sx-type-article-heading: clamp(1.4375rem, 1.3rem + .6vw, 1.6875rem);
  --sx-type-subheading: clamp(1.1875rem, 1.1rem + .4vw, 1.3125rem);
  --sx-type-card: clamp(1.125rem, 1.05rem + .35vw, 1.25rem);
  --sx-type-lead: clamp(1.0625rem, 1rem + .2vw, 1.125rem);
  --sx-type-meta: .875rem;
  --sx-type-caption: .8125rem;
  --sx-ink: #242424; --sx-secondary: #4f5552; --sx-muted: #626966;
  --sx-surface: #fff; --sx-soft: #f6f7f5; --sx-border: #e5e8e5;
  --sx-width-site: 1160px; --sx-width-reading: 760px; --sx-width-technical: 1100px;
  --sx-space-16: 4rem; --sx-space-24: 6rem;
  --sx-heading-gap: 1.5rem; --sx-paragraph-gap: 1.25rem;
  --sx-card-padding: 1.5rem; --sx-grid-gap: clamp(1.5rem, 3vw, 3rem);
}
body, body.sx-minimal-root, body.sx-minimal-en, body.shopxn-v3, body.resource-center,
.resource-center .rc-main * { font-family: var(--sx-font-body); }
body { font-size: var(--sx-type-body); line-height: var(--sx-leading-body); }
/* Existing homepage has an !important Arial lock; override only that legacy lock. */
body.sx-minimal-root, body.sx-minimal-en { font-family: var(--sx-font-body) !important; }
body.sx-minimal-root .section-code { font-size: var(--sx-type-caption) !important; }
body.sx-minimal-root .thesis-grid>p { font-size: 1rem; line-height: 1.75; }
body.sx-minimal-root .hero-assurances { font-size: .875rem; line-height: 1.65; }
body :is(h1,h2,h3,h4,h5,h6) { font-family: var(--sx-font-body); text-wrap: balance; }
body :is(h1,h2) { font-weight: 700; letter-spacing: -.025em; }
body :is(h3,h4) { font-weight: 600; letter-spacing: -.015em; }
body :is(code,pre,kbd,samp) { font-family: var(--sx-font-mono); font-size: .9em; font-variant-ligatures: none; }
body pre { white-space: pre; overflow-x: auto; max-width: 100%; line-height: 1.65; }
html:lang(zh) body { --sx-leading-body: 1.85; --sx-leading-reading: 1.85; }
html:lang(en) body { --sx-leading-reading: 1.8; }
html:lang(zh) :is(h1,h2,h3) { line-height: 1.4; letter-spacing: -.015em; word-break: normal; overflow-wrap: break-word; }
.xn-header .xn-nav > a, .xn-header .xn-controls > a:not(.xn-cta) { font-weight: 500; line-height: 20px; }
.xn-header .xn-cta { font-weight: 600; }
body :is(.shell,.page-shell,.rc-shell) { max-width: var(--sx-width-site); }
body :is(.sx-intro h1), .shopxn-v3 .sx-intro h1 { font-size: var(--sx-type-page); line-height: 1.2; font-weight: 700; }
body.sx-minimal-root .hero h1, body.sx-minimal-en .hero h1 { font-family: var(--sx-font-body); font-size: var(--sx-type-hero); line-height: 1.12; letter-spacing: -.03em; max-width: 24ch; font-weight: 700; }
html:lang(zh) body .hero h1 { max-width: 20em; line-height: 1.3; }
body :is(.hero-lead,.sx-lead,.rc-lead) { font-size: var(--sx-type-lead); line-height: 1.7; color: var(--sx-secondary); }
body.sx-minimal-root :is(.section-intro,.architecture-head,.proof-copy,.process-head,.fit-title,.final-cta) h2,
body :is(.section-heading,.sx-section-head,.rc-section-heading) h2 { font-size: var(--sx-type-section); line-height: 1.25; font-weight: 700; }
body.sx-minimal-root :is(.diagnosis-row p,.process-step p,.proof-copy p,.fit-list p),
body.shopxn-v3 :is(.module-item p,.module-item li,.section-content p,.section-content dd) { font-size: 1rem; line-height: var(--sx-leading-body); }
body :is(.module-item h3,.diagnosis-row h3,.process-step h3) { font-size: var(--sx-type-card); line-height: 1.4; font-weight: 600; }
body :is(.section-code,.section-number,.module-number,.row-index,.hero-assurances,.sx-hero-meta) { font-family: var(--sx-font-body); font-size: var(--sx-type-caption); line-height: 1.5; }
body.sx-minimal-root .section-code { font-size: var(--sx-type-caption); }
body :is(.button,.btn,.sx-button,.rc-button,.rc-text-link,.sl-button),body.sx-minimal-root .button { font-family: var(--sx-font-body); font-size: .875rem; font-weight: 600; line-height: 1.4; min-height: 44px; }
body :is(.sx-footer,.site-footer,footer) { font-family: var(--sx-font-body); }
body :is(.sx-footer,.site-footer,footer) :is(p,a,li,span) { font-size: .875rem; line-height: 1.65; }
body :is(.breadcrumb,.breadcrumbs,.sx-breadcrumb) { font-size: .875rem; line-height: 1.5; }
/* Editorial: preserve anchors and list semantics; reserve real width for prose. */
.sx-editorial .reading-layout { grid-template-columns: 200px minmax(0,760px); gap: 48px; justify-content: center; }
.sx-editorial .reading-prose { font-size: var(--sx-type-reading); line-height: var(--sx-leading-reading); }
.sx-editorial .sx-intro h1 { font-size: clamp(1.875rem,1.6rem + 1.2vw,2.5rem); }
.sx-editorial .reading-prose :is(p,ul,ol) { max-width: min(75ch, var(--sx-width-reading)); font-size: inherit; line-height: inherit; }
.sx-editorial .reading-prose p { margin-bottom: var(--sx-paragraph-gap); }
.sx-editorial .reading-prose h2 { font-weight: 650; line-height: 1.35; }
.sx-editorial .reading-prose h3 { font-weight: 600; line-height: 1.4; }
.sx-editorial :is(.reading-prose,.check-chapter) li::marker { font-weight: 600; }
.sx-editorial .reading-toc :is(a,strong,h3), .sx-editorial .check-rail a { font-size: .875rem; line-height: 1.5; }
.sx-editorial :is(.reading-prose,.check-chapter) :is(small,figcaption) { font-size: .875rem; color: var(--sx-muted); }
body :is(.table-scroll,.ed-table) { max-width: 100%; overflow-x: auto; }
body :is(.table-scroll,.ed-table,.sx-content-section) :is(td,th) { font-size: .9375rem; line-height: 1.6; padding: 12px 16px; }
body :is(.table-scroll,.ed-table,.sx-content-section) th { font-weight: 600; }
body :is(.routing-stop,.network-grid) :is(p,li) { font-size: .875rem; line-height: 1.6; }
body .sx-decision-list dt { font-size: .875rem; font-weight: 600; }
body .sx-decision-list dd { font-size: 1rem; line-height: var(--sx-leading-body); }
body .philosophy-quote { font-size: clamp(1.5rem,1.25rem + 1vw,1.875rem); line-height: 1.65; }
/* Resources: editorial hierarchy, not miniature link-directory labels. */
.resource-center .rc-hero h1 { font-size: clamp(2.125rem,1.6rem + 2.5vw,3.5rem); font-weight: 700; line-height: 1.15; letter-spacing: -.03em; }
.resource-center .rc-hero h1 span { color: var(--sx-muted); }
.resource-center :is(.rc-kicker,.rc-article-meta,.rc-language,.rc-path-number,.rc-feature-copy>span:first-child) { font-size: .8125rem; line-height: 1.5; }
.resource-center :is(.rc-categories button,.rc-results p,.rc-read,.rc-feature-read,.rc-path a,.rc-text-link,.rc-button) { font-size: .875rem; }
.resource-center :is(.rc-results>span,.rc-categories button>span,.rc-categories>p) { font-size: .8125rem; color: var(--sx-muted); }
.resource-center :is(.rc-article p,.rc-feature-copy p,.rc-path p,.rc-library-note,.rc-section-heading>p) { font-size: .9375rem; line-height: 1.65; color: var(--sx-secondary); }
.resource-center .rc-article h3 { font-size: var(--sx-type-card); font-weight: 600; line-height: 1.4; letter-spacing: -.015em; }
.resource-center .rc-article { padding-block: 28px; }
.resource-center .rc-article h3 svg { margin-top: 5px; flex-shrink: 0; }
.resource-center :is(.rc-read,.rc-path a) { min-height: 44px; }
.resource-center :is(.rc-system-top,.rc-system-num,.rc-system-pair p,.rc-system-line,.rc-system-outcome>span,.rc-market-visual>span,.rc-market-visual>div) { font-size: .8125rem; line-height: 1.5; white-space: normal; }
.resource-center .rc-system-pair>div { min-width: 0; }
.resource-center .rc-system-outcome>div { flex-wrap: wrap; }
.resource-center .rc-library-layout { grid-template-columns: 220px minmax(0,1fr); gap: 40px; }
.resource-center .rc-lead { font-size: var(--sx-type-lead); }
.resource-center .rc-browser-bar p { font-size: .8125rem !important; line-height: 1.5 !important; color: var(--sx-muted) !important; }
.resource-center :is(.rc-system-num,.rc-path-number,.rc-article-meta,.rc-market-visual>div) { color: var(--sx-muted); }
@media(max-width:1100px) {
  .sx-editorial .reading-layout { grid-template-columns: 160px minmax(0,1fr); gap: 32px; }
}
@media(max-width:900px) {
  .sx-editorial .reading-layout { display: block; }
  .sx-editorial .reading-toc { position: static; max-height: none; margin-bottom: 32px; }
}
@media(max-width:800px) {
  .resource-center .rc-library-layout { grid-template-columns: 1fr; gap: 24px; }
  .resource-center .rc-categories button { font-size: .875rem; }
}
@media(max-width:700px) {
  :root { --sx-type-reading: 1rem; }
  body .xn-header .xn-mobile-links>a:not(.xn-cta) { font-size: .875rem; line-height: 1.45; }
  body :is(.reading-prose,.section-content,.check-chapter) :is(p,li) { font-size: 1rem; }
  body :is(input,select,textarea) { font-size: 1rem; }
  .resource-center .rc-article p { font-size: 1rem; line-height: 1.75; }
  .resource-center .rc-library-note { display: block; }
  .resource-center .rc-system-pair { gap: 8px; }
  .resource-center .rc-system-pair>div { padding: 16px 10px; }
}

/* 2026-10-14 center the article lead under the centered H1 */
body.sx-editorial .sx-intro .sx-lead{margin-left:auto;margin-right:auto}
