*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--brand-1:#EFF4FF;--brand-6:#3370FF;--brand-7:#2A61E3;--brand-8:#1F4EC2;--brand-text-gradient:linear-gradient(90deg,var(--brand-6),var(--brand-7));--gray-1:#FAFBFC;--gray-2:#F1F2F3;--gray-3:#EAEBEC;--gray-4:#DEDFE1;--gray-7:#84888A;--gray-8:#5F6366;--gray-9:#393E42;--gray-10:#0F1419;--bg-page:var(--gray-1);--bg-section:#FFF;--bg-card:#FFF;--text-title:var(--gray-10);--text-body:var(--gray-9);--text-secondary:var(--gray-8);--text-caption:var(--gray-7);--text-on-dark:rgba(255,255,255,.92);--line:var(--gray-4);--link:var(--brand-6);--font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑","Helvetica Neue",Helvetica,Arial,sans-serif;--font-mono:"SF Mono","JetBrains Mono","Roboto Mono",Menlo,Consolas,"PingFang SC",monospace;--bg-section-alt:var(--gray-2);--shadow-sm:0 1px 2px rgba(15,20,25,0.04),0 0 0 1px rgba(15,20,25,0.04);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--container:1200px;--gutter:24px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:9999px;--ring:0 0 0 1px var(--gray-4);--shadow-lg:0 12px 32px rgba(15,20,25,.08),0 0 0 1px rgba(15,20,25,.04);--shadow-brand:0 6px 20px rgba(51,112,255,.18);--ease:cubic-bezier(.22,1,.36,1)}
html{scroll-behavior:smooth}body{font-family:var(--font-sans);color:var(--text-body);background:var(--bg-page);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}svg{display:block}.article-container{max-width:760px;margin:auto;padding:0 var(--gutter)}

.article-hero{padding:var(--space-9) 0 var(--space-8);background:var(--bg-section);box-shadow:var(--ring)}.section-back-link{display:inline-flex;margin-bottom:var(--space-4);font-size:15px;font-weight:500}.article-meta{margin-bottom:var(--space-5)}.chip{display:inline-flex;border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:13px;line-height:1.6;font-weight:500;background:var(--gray-2);color:var(--gray-9)}.article-hero h1{font-size:40px;font-weight:600;line-height:1.3;color:var(--text-title);margin-bottom:var(--space-4)}.article-hero p{font-size:17px;line-height:1.7;color:var(--text-secondary)}.article-body{padding:var(--space-8) 0 var(--space-9);background:var(--bg-section)}.article-body article{max-width:760px;margin:auto;padding:0 var(--gutter)}.article-body h2{font-size:24px;font-weight:600;line-height:1.35;color:var(--text-title);margin:var(--space-7) 0 var(--space-4)}.article-body h2:first-child{margin-top:0}.article-body p,.article-body li{font-size:15px;line-height:1.8;color:var(--text-body)}.article-body p{margin:var(--space-4) 0}.article-body ul,.article-body ol{padding-left:var(--space-5);margin:var(--space-3) 0 var(--space-5)}.article-body li{margin:var(--space-2) 0}.article-body strong{font-weight:600;color:var(--text-title)}
.summary-block{margin-bottom:var(--space-7);padding:var(--space-6);border-radius:var(--radius-lg);background:var(--gray-2);box-shadow:var(--ring)}.summary-block h2{margin:0 0 var(--space-4)}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-5)}.summary-item{padding:var(--space-4);border-radius:var(--radius-md);background:var(--bg-card);box-shadow:var(--ring)}.summary-item strong{display:block;margin-bottom:var(--space-2)}.summary-item p{margin:0;font-size:13px;line-height:1.7;color:var(--text-secondary)}.note-block{margin:var(--space-5) 0;padding:var(--space-5);border-radius:var(--radius-md);background:var(--gray-2)}.record-table{width:100%;border-collapse:collapse;margin:var(--space-5) 0 var(--space-6);border-radius:var(--radius-md);box-shadow:var(--ring);background:var(--bg-card)}.record-table th,.record-table td{padding:var(--space-4);border-bottom:1px solid var(--gray-3);font-size:15px;line-height:1.7;text-align:left;vertical-align:top}.record-table th{background:var(--gray-2);font-weight:500;color:var(--text-secondary)}.record-table tr:last-child td{border:0}.quote-block{margin-top:var(--space-7);border-left:4px solid var(--gray-10);border-radius:var(--radius-md);background:var(--gray-2);padding:var(--space-5)}.quote-block h2{margin:0 0 var(--space-4)}.article-footer{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--line)}.inline-link,.article-footer a,.section-back-link{font-weight:500;color:var(--gray-10);text-decoration:underline;text-underline-offset:3px}
.framework-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin:0 0 var(--space-8);counter-reset:framework}.framework-node{position:relative;padding:var(--space-5) var(--space-4);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:var(--ring);counter-increment:framework}.framework-node::before{content:"0" counter(framework);display:block;margin-bottom:var(--space-3);font-size:13px;font-weight:500;color:var(--gray-7)}.framework-node strong{display:block;margin-bottom:var(--space-2);color:var(--text-title)}.framework-node p{margin:0;font-size:13px;line-height:1.7;color:var(--text-secondary)}.layer-heading{display:flex;align-items:center;gap:var(--space-3)}.layer-heading span{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 auto;border-radius:50%;background:var(--gray-10);color:var(--text-on-dark);font-size:13px}
.related-reading{margin-top:var(--space-8);padding-top:var(--space-7);border-top:1px solid var(--gray-3)}.related-reading>h2{margin:0 0 var(--space-5)}.related-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--space-4)}.related-card{display:flex;flex-direction:column;gap:var(--space-3);min-height:168px;padding:var(--space-5);border-radius:var(--radius-lg);background:var(--gray-1);box-shadow:var(--ring);text-decoration:none}.related-card span{font-size:13px;font-weight:500;color:var(--gray-7)}.related-card h3{font-size:17px;line-height:1.45;font-weight:600;color:var(--gray-10)}.article-body .related-card p{margin:0;font-size:13px;line-height:1.7;color:var(--gray-8)}.related-card:hover{background:var(--gray-2)}

@media(prefers-reduced-motion:no-preference){a,.btn-header-cta,.contact-qr-popup{transition:all 200ms var(--ease)}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}@media(max-width:980px){:root{--gutter:20px}.article-hero h1{font-size:34px}.summary-grid{grid-template-columns:1fr}.framework-flow{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){:root{--gutter:16px}.article-hero{padding:var(--space-8) 0 var(--space-7)}.article-body{padding:var(--space-7) 0 var(--space-8)}.article-hero h1{font-size:28px}.article-hero p{font-size:15px}.article-body h2{font-size:21px}.summary-block{padding:var(--space-5)}.framework-flow{grid-template-columns:1fr}.record-table{display:block;overflow-x:auto}}

/* ===== 早期文章模板（faq、how-to-test，body 带 article-v1 类）——由原内联样式合并而来 ===== */

body.article-v1{overflow-x:hidden}
.article-v1 .section-back-link,.article-v1 .article-footer a{color:var(--gray-8);text-decoration:none;background-image:none;-webkit-text-fill-color:currentColor}
.article-v1 .article-footer a{display:inline-flex;font-size:15px}
.article-v1 .footer-contact-email a,.article-v1 .footer-col a:hover,.article-v1 .footer-bottom-row a:hover{background-image:var(--brand-text-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.article-v1 .record-table{overflow:hidden}
.closing-note{margin-top:var(--space-7);padding-top:var(--space-6);border-top:1px solid var(--line);font-weight:500}
/* faq 页专属 */
.faq-article{counter-reset:faq-question}
.faq-index{margin:0 0 var(--space-7);padding:var(--space-5);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:var(--ring)}
.faq-index strong{display:block;margin-bottom:var(--space-4);font-size:17px;color:var(--text-title)}
.faq-index-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}
.faq-index a{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--gray-2);font-size:13px;line-height:1.6;color:var(--gray-9)}
.faq-index a:hover{background:var(--gray-3);color:var(--gray-10)}
.faq-heading{counter-increment:faq-question;position:relative;padding:var(--space-5) var(--space-5) var(--space-5) 64px;border-radius:var(--radius-lg);background:var(--bg-section-alt);box-shadow:var(--ring)}
.faq-heading::before{content:counter(faq-question);position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--gray-10);font:500 13px/1 var(--font-mono);color:var(--bg-card)}
/* how-to-test 页专属 */
.article-manual .summary-block{box-shadow:var(--shadow-sm)}
.manual-index{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0 0 var(--space-7);padding:var(--space-4);border-radius:var(--radius-md);background:var(--bg-card);box-shadow:var(--ring)}
.manual-index a{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);background:var(--gray-2);font-size:13px;font-weight:500;color:var(--gray-9)}
.manual-index a:hover{background:var(--gray-3);color:var(--gray-10)}
.step-heading{display:flex;align-items:center;gap:var(--space-3)}
.step-heading span{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:0 0 auto;border-radius:var(--radius-md);background:var(--gray-10);font:500 13px/1 var(--font-mono);color:var(--bg-card)}
@media(max-width:640px){

.article-v1 .btn-header-cta{padding:0 var(--space-4)}
.faq-index-links{grid-template-columns:1fr}
.faq-heading{padding:var(--space-4) var(--space-4) var(--space-4) 56px}
}


/* ===== 文章实体与路径信息 ===== */
.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);font-size:13px;line-height:1.6;color:var(--text-caption)}
.breadcrumbs a{color:var(--gray-8);text-decoration:none}
.breadcrumbs a:hover{text-decoration:underline;text-underline-offset:3px;color:var(--gray-10)}
.breadcrumbs [aria-hidden="true"]{color:var(--gray-7)}
.article-byline{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-3);font-size:13px;line-height:1.7;color:var(--text-caption)}
.article-byline span+span{position:relative}
.article-byline span+span::before{content:"";position:absolute;left:calc(var(--space-2) * -1);top:.45em;width:1px;height:1em;background:var(--gray-4)}
@media(max-width:640px){.article-byline{gap:var(--space-1) var(--space-3)}}
