:root{
--primary:#2E6F8E;--primary-hover:#285F7A;--accent:#6FC3DF;--dark:#22262A;--light:#FBFBFA;--surface:#FFFFFF;--paper:#FBFBFA;
--s-char:#2C3136;--s-sand:#F1EEE7;--s-lilac:#ECEAF1;--ink-char:#F3F5F6;--ink-sand:#22262A;--ink-lilac:#22262A;
--ink-d:#F3F5F6;--mute-d:#A3ACB2;--ink-l:#22262A;--mute-l:#555B60;--hair-d:rgba(243,245,246,.12);--hair-l:rgba(34,38,42,.14);--control-line:#818B92;--focus:#6FC3DF;
--f-head:"Chivo",-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans TC","Hiragino Kaku Gothic ProN","Yu Gothic","Malgun Gothic",sans-serif;
--f-body:"Manrope",-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans TC","Hiragino Kaku Gothic ProN","Yu Gothic","Malgun Gothic",sans-serif;
--f-mono:"SFMono-Regular","SF Mono","Menlo","Consolas",-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
--text-xs:.75rem;--text-sm:.875rem;--text-base:1.0625rem;--text-card:1.3125rem;--text-lg:1.5rem;--text-section:clamp(2rem,3.1vw,2.75rem);--text-display:clamp(2.5rem,4.45vw,4rem);
--leading-body:1.65;--leading-small:1.5;--leading-title:1.15;
--r-s:12px;--r-m:20px;--r-p:999px;--radius-sm:12px;
--space-1:8px;--space-2:16px;--space-3:24px;--space-4:40px;--space-5:64px;--space-6:120px;--space-close:120px;--field-gap:8px;
--sp1:8px;--sp2:16px;--sp3:24px;--sp4:40px;--sp5:64px;--sp6:120px;
--gutter:24px;--width-narrow:48rem;--width-standard:75rem;--width-wide:88rem;--header-height:72px;--hero-top:96px;--hero-crumb-top:64px;--crumb-gap:24px;
--shadow-stage:0 24px 60px rgba(10,20,28,.28),0 2px 6px rgba(10,20,28,.12);--shadow-float:0 16px 40px rgba(6,12,16,.25);
--duration:200ms;--ease:cubic-bezier(.2,.65,.3,1);--icon-size:24px;--icon-stroke:1.8;
}
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{background:var(--dark);scroll-padding-top:calc(var(--header-height) + var(--space-3));text-size-adjust:100%}
body{background:var(--dark);color:var(--ink-d);font-family:var(--f-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}
main{overflow-x:clip}
h1,h2,h3,h4,h5,h6{font-family:var(--f-head);font-weight:800;letter-spacing:-.01em;overflow-wrap:break-word}
h1{font-size:var(--text-display);line-height:var(--leading-title)}
h2{font-size:var(--text-section);line-height:var(--leading-title)}
h3{font-size:var(--text-card);line-height:1.25}
h4{font-size:var(--text-base);line-height:1.4}
h5{font-size:var(--text-sm);line-height:var(--leading-small)}
h6{font-size:var(--text-xs);line-height:var(--leading-small)}
p{font-size:var(--text-base);line-height:var(--leading-body)}
li{font-size:var(--text-base);line-height:var(--leading-body)}
small{font-size:var(--text-sm);line-height:var(--leading-small)}
figcaption{font-size:var(--text-sm);line-height:var(--leading-small)}
blockquote{font-size:var(--text-base);line-height:1.8}
code{font-family:var(--f-mono);font-size:var(--text-sm);line-height:var(--leading-small);font-variant-numeric:tabular-nums}
th,td{font-size:var(--text-sm);line-height:var(--leading-body)}
dt{font-size:var(--text-xs);line-height:var(--leading-small)}
dd{font-size:var(--text-base);line-height:var(--leading-body)}
label{font-size:var(--text-sm);line-height:var(--leading-small)}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
button,input,textarea,select{max-width:100%}
button{color:inherit}
img,svg,video{display:block;max-width:100%}
img{height:auto}
svg{flex-shrink:0}
table{display:table;width:100%;border-collapse:collapse}
button:disabled{cursor:not-allowed;opacity:.55}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
::selection{background:var(--primary);color:var(--surface)}
.container,.wrap,.container-narrow,.container-wide{width:calc(100% - var(--gutter)*2);margin-inline:auto}
.container,.wrap{max-width:var(--width-standard)}
.container-narrow{max-width:var(--width-narrow)}
.container-wide{max-width:var(--width-wide)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.muted{color:var(--mute-d)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.grid{display:grid;gap:var(--space-3)}
.grid>*{min-width:0}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-auto{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr))}
.stack{display:flex;flex-direction:column;gap:var(--space-3)}
.flow>*+*{margin-top:var(--space-3)}
.mt-1{margin-top:var(--space-1)}
.mt-2{margin-top:var(--space-2)}
.mt-3{margin-top:var(--space-3)}
.mt-4{margin-top:var(--space-4)}
.mt-5{margin-top:var(--space-5)}
.text-sm{font-size:var(--text-sm);line-height:var(--leading-small)}
.text-xs{font-size:var(--text-xs);line-height:var(--leading-small)}
.text-center{text-align:center}
.prose{max-width:var(--width-narrow)}
.prose h2,.prose h3{font-size:var(--text-lg);line-height:1.35;margin-block:var(--space-4) var(--space-2)}
.prose p,.prose ul,.prose ol{margin-block:var(--space-3)}
.prose ul,.prose ol{padding-inline-start:var(--space-3)}
.prose a{text-decoration:underline;text-underline-offset:4px}
pre{max-width:100%;overflow-x:auto;padding:var(--space-3);border-radius:var(--r-s);background:#1B1F22;color:#F3F5F6;font-family:var(--f-mono);font-size:var(--text-sm);line-height:var(--leading-body)}
code{overflow-wrap:anywhere}
pre code{display:block;overflow-x:auto;white-space:pre;overflow-wrap:normal}
.reveal{opacity:1;transform:none}
.reveal.is-pending{opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.reveal.reveal-left.is-pending{transform:translate(-20px,24px)}
.reveal.reveal-right.is-pending{transform:translate(20px,24px)}
.reveal.is-visible{opacity:1;transform:none}
@media(max-width:64rem){
:root{--space-6:88px;--space-close:88px}
.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:42rem){
:root{--gutter:20px;--space-5:40px;--space-6:64px;--space-close:64px;--hero-top:48px;--hero-crumb-top:48px}
.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){
*,*::before,*::after{animation:none!important;scroll-behavior:auto!important;transition:none!important}
.reveal.is-pending{opacity:1;transform:none}
}
