:root{color-scheme:light;--ink:#152e46;--muted:#566b7d;--navy:#102d4b;--blue:#215c91;--paper:#f6f9fc;--line:#dce5ee;--teal:#8be2d1;--white:#fff;--radius:14px}
*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;color:var(--ink);background:var(--paper);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;line-height:1.85;text-rendering:optimizeLegibility}a{color:var(--blue);text-underline-offset:4px}a:hover{color:#123e63}a:focus-visible,pre:focus-visible{outline:3px solid #157f80;outline-offset:5px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.4;letter-spacing:-.025em}h2{font-size:1.65rem}h3{font-size:1.25rem}p{margin-bottom:1.1em}button,input,pre,code{font:inherit}.wrap{width:min(1160px,calc(100% - 64px));margin-inline:auto}.skip{position:fixed;top:-100px;left:16px;padding:10px 18px;background:#fff;z-index:99}.skip:focus{top:12px}.site-header{background:#fff;border-bottom:1px solid var(--line)}.header-inner{min-height:84px;display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:12px;color:var(--navy);font-weight:750;text-decoration:none;font-size:1.1rem}.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--navy);color:var(--teal);border-radius:9px;font:700 1.4rem ui-monospace,monospace}.header-inner nav{display:flex;gap:28px;flex-wrap:wrap}.header-inner nav a{font-size:.9375rem;color:var(--muted);text-decoration:none}.header-inner nav a:hover{color:var(--blue)}.home-hero,.article-heading{color:#fff;background:var(--navy)}.home-hero{padding:58px 0 56px;background-image:linear-gradient(115deg,transparent 72%,rgba(139,226,209,.04) 72%)}.hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:72px;align-items:center}.eyebrow{font-size:.8125rem;font-weight:700;letter-spacing:.15em;color:var(--teal);margin-bottom:18px}.eyebrow.dark{color:#326e78}.home-hero h1{font-size:clamp(2.3rem,4.3vw,3.8rem);line-height:1.24;margin-bottom:24px}.hero-intro{max-width:590px;color:#d6e4ef;font-size:1.0625rem;margin-bottom:24px}.identity{display:inline-block;font-size:.875rem;border-left:2px solid var(--teal);padding-left:12px;color:#d3e9ed;margin-bottom:0}.hero-note{border:1px solid #42617b;border-radius:var(--radius);padding:30px;background:#193b58;min-width:0}.note-label{font-size:.875rem;color:#c4d8e8}.hero-note time{display:block;line-height:1.25;font-size:3rem;letter-spacing:-.07em;margin:16px 0 20px;font-weight:650}.hero-note time span{font-size:2rem;letter-spacing:-.03em}.hero-note p{font-size:.875rem;color:#d9e8f1}.note-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;border-top:1px solid #42617b;padding-top:18px;font-size:.8125rem;color:var(--teal)}.tutorials{padding-top:60px;padding-bottom:64px}.section-intro{display:flex;justify-content:space-between;gap:28px;align-items:end;margin-bottom:28px}.section-intro h2{margin-bottom:0}.section-intro .eyebrow{margin-bottom:10px}.section-intro>p{font-size:.9375rem;color:var(--muted);margin-bottom:2px}.tutorial-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}.tutorial-row{display:grid;grid-template-columns:48px 1fr 36px;gap:24px;padding:28px 30px;text-decoration:none;color:var(--ink);transition:background .15s ease}.tutorial-row+.tutorial-row{border-top:1px solid var(--line)}.tutorial-row:hover{background:#edf5fa;color:var(--ink)}.row-number{font-size:.875rem;font-family:ui-monospace,monospace;color:#6d8295;padding-top:6px}.topic-label{font-size:.8125rem;font-weight:700;color:#367183;letter-spacing:.04em}.tutorial-row h3{margin:6px 0 8px}.tutorial-row p{color:var(--muted);font-size:.9375rem;margin-bottom:0}.row-arrow{font-size:1.7rem;color:var(--blue);align-self:center}.method-section{display:grid;grid-template-columns:1fr 1fr;gap:88px;border-top:1px solid var(--line);padding-top:48px;padding-bottom:66px}.method-section p{color:var(--muted)}.method-list{padding:0;margin:0;list-style:none}.method-list li{display:flex;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}.method-list li:first-child{padding-top:0}.method-list li>span{font-size:.875rem;font-family:ui-monospace,monospace;color:#46778f}.method-list h3{font-size:1.0625rem;margin:0 0 6px}.method-list p{font-size:.9375rem;margin:0}.site-footer{background:#edf2f7;border-top:1px solid var(--line);padding:36px 0}.footer-inner{display:flex;gap:40px;justify-content:space-between;align-items:start;font-size:.875rem}.footer-inner strong{font-size:1rem}.footer-inner p{color:var(--muted);margin:5px 0 0}.footer-inner>a{white-space:nowrap}.article-heading{padding:28px 0 42px}.breadcrumb{display:flex;gap:12px;font-size:.875rem;margin-bottom:36px;color:#a9c2d7}.breadcrumb a{color:#d1e4f2;text-decoration:none}.article-heading h1{font-size:clamp(1.85rem,3.1vw,2.85rem);max-width:960px;margin-bottom:20px}.article-heading .eyebrow{margin-bottom:14px}.article-deck{font-size:1.0625rem;color:#d2e2ed;max-width:880px}.article-meta{display:flex;gap:12px 24px;flex-wrap:wrap;color:#c3d9e8;font-size:.875rem}.article-meta>span+span{padding-left:24px;border-left:1px solid #4a677e}.article-grid{display:grid;grid-template-columns:minmax(0,810px) minmax(190px,1fr);gap:66px;padding-top:48px;padding-bottom:72px}.article-body{min-width:0;font-size:1rem}.article-section{margin-bottom:42px}.article-section h2{font-size:1.5rem;margin-bottom:20px;padding-left:14px;border-left:3px solid #39859a}.article-section p{overflow-wrap:anywhere}.article-section ul{padding-left:1.4rem}.article-section li{margin-bottom:12px}.article-section p>code,.article-section li>code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.875em;background:#e4eef6;border:1px solid #d4e3ef;padding:2px 5px;border-radius:4px;overflow-wrap:anywhere}.code-block{margin:24px 0;border:1px solid #c8d8e6;border-radius:10px;overflow:hidden;background:#fff}.code-block figcaption{display:flex;justify-content:space-between;gap:20px;padding:12px 16px;background:#eaf1f7;font-size:.875rem;color:#3a556d}.language{font-family:ui-monospace,monospace;color:#5d7489;flex:none}.code-block pre{padding:20px;margin:0;background:#142d44;color:#e4f1fa;overflow-x:auto;max-width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem;line-height:1.75;tab-size:2;white-space:pre}.code-block pre code{font:inherit}.toc{font-size:.875rem;min-width:0}.toc nav{position:sticky;top:26px;padding-left:22px;border-left:1px solid #cedde9}.toc-label{font-size:.8125rem;font-weight:750;color:#6b8092;letter-spacing:.08em}.toc ol{padding:0;list-style:none;margin:16px 0 0}.toc li{margin:0 0 14px;line-height:1.6}.toc a{color:var(--muted);text-decoration:none}.toc a:hover{color:var(--blue);text-decoration:underline}.toc>p{color:#6b8092;margin-top:28px;padding-left:22px;font-size:.8125rem}.sources-section{border-top:1px solid var(--line);padding-top:32px}.sources-section p{color:var(--muted)}.official-sources{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.official-sources a{font-size:.9375rem}.evidence-list{list-style:none;padding:0;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.evidence-list li+li{border-top:1px solid var(--line)}.evidence-list a{display:flex;justify-content:space-between;gap:20px;padding:13px 16px;text-decoration:none;font-size:.9375rem}.evidence-list a span{font-size:.8125rem;white-space:nowrap;color:var(--muted)}.source-note{font-size:.875rem}.related{border-top:1px solid var(--line);padding-top:32px;margin-top:36px}.related a{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none;font-size:.9375rem}.related h2{font-size:1.4rem}
@media(min-width:1600px){.wrap{width:min(1220px,calc(100% - 80px))}}
@media(max-width:1000px){.hero-grid{gap:36px;grid-template-columns:1.1fr .9fr}.hero-note{padding:24px}.article-grid{gap:36px;grid-template-columns:minmax(0,1fr) 210px}.method-section{gap:40px}.footer-inner{gap:24px;flex-wrap:wrap}}
@media(max-width:760px){.wrap{width:calc(100% - 36px)}.header-inner{min-height:76px;gap:12px;flex-wrap:wrap;padding:16px 0}.brand{font-size:1rem}.brand-mark{height:34px;width:34px}.header-inner nav{gap:20px}.header-inner nav a{font-size:.875rem}.home-hero{padding:36px 0}.hero-grid{grid-template-columns:1fr;gap:30px}.home-hero h1{font-size:2.55rem}.hero-intro{font-size:1rem}.hero-note{padding:22px}.hero-note time{font-size:2.5rem;margin:10px 0}.hero-note time span{font-size:1.8rem}.hero-note p{margin-bottom:14px}.section-intro{display:block;margin-bottom:22px}.section-intro>p{margin-top:12px}.tutorials{padding:38px 0 42px}.tutorial-row{grid-template-columns:26px minmax(0,1fr) 20px;gap:12px;padding:22px 18px}.tutorial-row h3{font-size:1.125rem;overflow-wrap:anywhere}.row-arrow{font-size:1.3rem}.method-section{grid-template-columns:1fr;gap:24px;padding:36px 0 42px}.method-list li{padding:16px 0}.footer-inner{display:block}.footer-inner>p{margin:20px 0}.footer-inner>a{display:inline-block;margin-top:12px}.article-heading{padding-bottom:30px}.breadcrumb{margin-bottom:26px}.article-heading h1{font-size:1.9rem}.article-deck{font-size:1rem}.article-meta{gap:8px 16px}.article-meta>span+span{padding-left:16px}.article-grid{display:flex;flex-direction:column;gap:28px;padding-top:28px;padding-bottom:44px}.toc{order:-1;background:#eaf1f7;padding:18px;border-radius:10px}.toc nav{position:static;border:0;padding:0}.toc ol{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin-top:12px}.toc li{margin:0}.toc>p{display:none}.article-section{margin-bottom:32px}.article-section h2{font-size:1.35rem}.code-block pre{padding:16px;font-size:.875rem}.code-block figcaption{gap:10px;padding:10px 14px;align-items:start}.sources-section h2{font-size:1.35rem}.evidence-list a{padding:12px;gap:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.tutorial-row{transition:none}}
@media print{.site-header,.site-footer,.toc,.skip,.related{display:none}.home-hero,.article-heading{background:#fff;color:#152e46}.article-heading *{color:#152e46}.wrap{width:100%}.article-grid{display:block;padding-top:24px}.code-block pre{white-space:pre-wrap;overflow:visible;background:#f5f5f5;color:#111}.article-body{font-size:12pt}a{color:#111}.article-section{break-inside:avoid}}
