:root{
--primary:#5E0F57;--primary-h:#470B42;--accent:#E0457B;--dark:#1B1030;--light:#FBFAFD;--paper:#FBFAFD;--surface:#FFFFFF;
--lav:#EEECFB;--lav-ink:#2A1F5C;--lav-mute:#5A5084;--mint:#E6F2EC;--mint-ink:#1E4A35;--mint-mute:#44705B;--sky:#E7EFF7;--sky-ink:#1C3A5A;--sky-mute:#46627F;--cream:#F6F0DF;--cream-ink:#5A4210;--cream-mute:#756032;
--ink:#1B1030;--mute:#5B5470;--soft:#676079;--line:#DDD8E7;--line-dark:#534566;--control-line:#81768E;
--terminal:#1B1030;--terminal-text:#CFC7E2;--terminal-mute:#ADA2C4;--terminal-panel:#251840;--terminal-cell:#2E2050;
--fh:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","PingFang TC","Hiragino Kaku Gothic ProN","Yu Gothic","Malgun Gothic",sans-serif;
--fb:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","PingFang TC","Hiragino Kaku Gothic ProN","Yu Gothic","Malgun Gothic",sans-serif;
--fm:"SF Mono","JetBrains Mono",ui-monospace,Menlo,Consolas,"PingFang SC","Microsoft YaHei",monospace;
--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-card:1.35rem;--text-section:2.5rem;--text-display:3.75rem;
--lh-tight:1.15;--lh-title:1.3;--lh-body:1.65;--lh-code:1.65;
--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:40px;--space-7:48px;--space-8:56px;--space-9:64px;--space-10:80px;--space-11:88px;--space-12:112px;--space-section:120px;--space-close:120px;--field-gap:8px;
--gutter:24px;--container:1184px;--container-wide:1328px;--container-read:752px;--hero-pad:40px;--hero-crumb-pad:48px;--crumb-gap:24px;--stage-min:480px;
--radius-button:4px;--radius-sm:8px;--radius-chip:999px;--radius-cell:14px;--radius-card:24px;--radius-band:32px;
--shadow-card:0 2px 6px rgba(42,31,92,.05),0 30px 60px -30px rgba(42,31,92,.30);
--shadow-window:0 1px 2px rgba(27,16,48,.06),0 30px 70px -30px rgba(27,16,48,.30);
--shadow-menu:0 18px 40px -16px rgba(27,16,48,.28);--shadow-small:0 1px 3px rgba(27,16,48,.08);
--ease:cubic-bezier(.2,.7,.2,1);--duration:180ms;--nav-height:72px;--z-header:40;--z-dialog:80;
}
*,:before,:after{box-sizing:border-box}
*{margin:0;padding:0}
html{scroll-padding-top:calc(var(--nav-height) + var(--space-4));text-size-adjust:100%}
body{background:var(--light);color:var(--ink);font-family:var(--fb);font-size:var(--text-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;min-width:0}
main{overflow-x:clip}
h1,h2,h3,h4,h5,h6{font-family:var(--fh);font-weight:500;overflow-wrap:break-word}
h1{font-size:var(--text-display);line-height:var(--lh-tight);letter-spacing:-1px}
h2{font-size:var(--text-section);line-height:1.18;letter-spacing:-.8px}
h3{font-size:var(--text-card);line-height:var(--lh-title);letter-spacing:-.4px;font-weight:600}
h4{font-size:var(--text-md);line-height:var(--lh-title);font-weight:600}
h5,h6{font-size:var(--text-base);line-height:var(--lh-title);font-weight:600}
p,li,blockquote,dt,dd,label{font-size:var(--text-base);line-height:var(--lh-body)}
small,figcaption{font-size:var(--text-sm);line-height:1.5}
code,pre{font-family:var(--fm);font-size:var(--text-sm);line-height:var(--lh-code)}
th,td{font-size:var(--text-sm);line-height:1.6;text-align:start}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
button,input,textarea,select{font-size:var(--text-base);line-height:1.5}
button{border:0}
img,svg,video{display:block;max-width:100%}
img{height:auto}
svg{flex-shrink:0}
ul,ol{padding-inline-start:var(--space-4)}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--primary);outline-offset:4px}
[hidden]{display:none!important}
.container,.wrap{width:min(var(--container),calc(100% - var(--gutter)*2));margin-inline:auto}
.container-wide{width:min(var(--container-wide),calc(100% - var(--gutter)*2));margin-inline:auto}
.container-read{width:min(var(--container-read),calc(100% - var(--gutter)*2));margin-inline:auto}
.mono{font-family:var(--fm);font-variant-numeric:tabular-nums}
.lead{font-size:var(--text-md);line-height:1.6;color:var(--mute)}
.muted{color:var(--mute)}
.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-2,.grid-3,.grid-4{display:grid;gap:var(--space-4);align-items:stretch}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
:where(.grid-2,.grid-3,.grid-4)>*{min-width:0}
.stack{display:flex;flex-direction:column;gap:var(--space-4)}
.gap-2{gap:var(--space-2)}
.gap-3{gap:var(--space-3)}
.gap-6{gap:var(--space-6)}
.mt-4{margin-top:var(--space-4)}
.mt-6{margin-top:var(--space-6)}
.pt-0{padding-top:0}
.text-center{text-align:center}
pre{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding:var(--space-4);background:var(--terminal);color:var(--terminal-text);border-radius:var(--radius-cell)}
code{overflow-wrap:anywhere}
pre code{display:block;width:max-content;min-width:100%;overflow-wrap:normal}
p>code,li>code{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--lav);color:var(--lav-ink)}
.reveal{opacity:1;transform:none}
.reveal.is-pending{opacity:0;transform:translateY(16px);transition:opacity 500ms var(--ease),transform 500ms var(--ease)}
.reveal.reveal-left.is-pending{transform:translateX(-16px)}
.reveal.reveal-right.is-pending{transform:translateX(16px)}
.reveal.is-visible{opacity:1;transform:none}
@media(min-width:64.001rem){.desktop-only{display:initial}}
@media(max-width:64rem){
:root{--space-section:80px;--space-close:80px}
.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:42rem){
:root{--gutter:24px;--text-display:2.5rem;--text-section:2rem;--hero-pad:40px;--space-section:64px;--space-close:64px}
.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){
*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}
.reveal.is-pending{opacity:1;transform:none}
}
