@font-face{font-family:geist;src:url(../media/Geist_Regular-s.p.0oy49fle4cg52.woff2?dpl=dpl_ERAwGaw9UVC9hSyFLgpJBjewLxqa)format("woff2");font-display:block;font-weight:400;font-style:normal}@font-face{font-family:geist;src:url(../media/Geist_Medium-s.p.3gqixp6bd-ey-.woff2?dpl=dpl_ERAwGaw9UVC9hSyFLgpJBjewLxqa)format("woff2");font-display:block;font-weight:500;font-style:normal}@font-face{font-family:geist Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.geist_fada51ad-module__RQRRVa__className{font-family:geist,geist Fallback}.geist_fada51ad-module__RQRRVa__variable{--font-geist:"geist", "geist Fallback"}
html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
:root{--canvas:#fbfbfb;--card:#fff;--card-edge:#d4d4d4;--badge:#f1f1f1;--text:#1f1f1f;--text-muted:#646464;--connector:#8f8f8f;--pass:#45a378;--refusal:#880d1e;--mark-green:#15803d;--selection:#1f1f1f1f;--sans:var(--font-geist), system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--gutter:clamp(16px, 3.4vw, 96px);--term-max:880px;--display:clamp(40px, 7.2vw, 104px);--ease:cubic-bezier(.2, .7, .1, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--canvas:#111;--card:#191919;--card-edge:#353535;--badge:#252525;--text:#ededed;--text-muted:#a8a8a8;--connector:#707070;--pass:#34d399;--refusal:#ea7b8a;--selection:#ededed2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--canvas:#111;--card:#191919;--card-edge:#353535;--badge:#252525;--text:#ededed;--text-muted:#a8a8a8;--connector:#707070;--pass:#34d399;--refusal:#ea7b8a;--selection:#ededed2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}::selection{background:var(--selection);color:var(--text)}.only-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .only-light{display:none}:root:not([data-theme=light]) .only-dark{display:block}}:root[data-theme=dark] .only-light{display:none}:root[data-theme=dark] .only-dark{display:block}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--canvas);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.55;overflow-x:clip}a{color:inherit;-webkit-text-decoration-color:var(--card-edge);text-decoration-color:var(--card-edge);text-underline-offset:3px;transition:text-decoration-color .16s var(--ease)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--text);outline-offset:3px;border-radius:4px}img,svg{max-width:100%;display:block}code,pre{font-family:var(--mono);font-size:.875em}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{left:var(--gutter);z-index:20;background:var(--text);color:var(--canvas);border-radius:6px;padding:8px 12px;position:absolute;top:-48px}.skip:focus{top:12px}.wrap{width:100%;padding:0 var(--gutter)}.mono{font-family:var(--mono);letter-spacing:.04em;color:var(--text-muted);font-size:12px}.nav{z-index:10;background:var(--canvas);position:sticky;top:0}.nav-inner{align-items:center;height:64px;display:flex}.brand{align-items:center;gap:12px;font-size:18px;font-weight:500;text-decoration:none;display:flex}.brand .logo{flex:none;width:32px;height:32px;overflow:visible}.logo-plate{stroke:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .logo-plate{stroke:#3d444d}}:root[data-theme=dark] .logo-plate{stroke:#3d444d}.logo-arrow{transition:opacity .12s linear}.logo.dropped .logo-arrow{opacity:0}.nav-links{color:var(--text-muted);align-items:center;font-size:14px;display:flex}.node{border:1px solid var(--card-edge);background:var(--canvas);height:36px;color:var(--text-muted);transition:color .16s var(--ease);border-radius:8px;justify-content:center;align-items:center;padding:0 12px;text-decoration:none;display:inline-flex;position:relative}.trace{pointer-events:none;position:absolute;top:-1px;left:-1px;overflow:visible}.trace path{fill:none;stroke:var(--text-muted);stroke-width:1px;stroke-dasharray:0 1000}.node:hover,.node:focus-visible{color:var(--text)}.node[aria-current=page]{border-color:var(--text-muted);color:var(--text)}.node.mark{min-width:40px;color:var(--text);padding:0 10px}.sound-switch{cursor:pointer}.sound-face{display:inline-flex}.sound-face svg,.copy svg{overflow:visible}:root{--icon-play:.76s;--icon-play-soft:1s}.turn,.speaker,.wave-near,.wave-far,.cross,.sheet-front,.sheet-back{transform-box:fill-box;transform-origin:50%}.sound-face path{vector-effect:non-scaling-stroke;stroke-width:1.875px}@keyframes speaker-play{0%{animation-timing-function:cubic-bezier(.2,.7,.3,1)}32%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);translate:-.75px;scale:.92}}@keyframes wave-near-play{0%{animation-timing-function:cubic-bezier(.2,.7,.3,1)}32%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);translate:1.25px}}@keyframes wave-far-play{0%{animation-timing-function:cubic-bezier(.2,.7,.3,1)}32%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);translate:2.25px}}@keyframes turn-play{0%{animation-timing-function:cubic-bezier(.2,.7,.3,1)}32%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);scale:.72 1}}@keyframes cross-play{0%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1)}to{rotate:90deg}}@keyframes sheet-back-play{0%{animation-timing-function:cubic-bezier(.25,.6,.3,1)}35%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);translate:-1.5px -1.5px}}@keyframes sheet-front-play{0%{animation-timing-function:cubic-bezier(.25,.6,.3,1)}35%{animation-timing-function:linear(0, .042, .152, .304, .476, .649, .809, .946, 1.054, 1.132, 1.18, 1.203, 1.203, 1.187, 1.16, 1.126, 1.09, 1.056, 1.025, 1, .98, .967, .96, .958, .96, .964, .97, .978, .985, .992, .998, 1.002, 1.005, 1.008, 1.009, 1.009, 1);translate:1.5px 1.5px}}.sound-switch.play .turn{animation:turn-play var(--icon-play)}.sound-switch.play .speaker{animation:speaker-play var(--icon-play)}.sound-switch.play .wave-near{animation:wave-near-play var(--icon-play) 40ms}.sound-switch.play .wave-far{animation:wave-far-play var(--icon-play) 90ms}.sound-switch.play .cross{animation:cross-play var(--icon-play)}.copy.play .sheet-back{animation:sheet-back-play var(--icon-play-soft)}.copy.play .sheet-front{animation:sheet-front-play var(--icon-play-soft) 60ms}@media (prefers-reduced-motion:reduce){.turn,.speaker,.wave-near,.wave-far,.cross,.sheet-front,.sheet-back{animation:none!important}}.wire{background:var(--card-edge);width:20px;height:1px;transition:background .2s var(--ease);animation:wire-in .52s var(--ease) both;animation-delay:calc(.25s + var(--n,0) * .11s);flex:none}.wire-long{flex:1;min-width:24px;margin-left:14px}:is(.wire:has(+.node:hover),.wire-long:has(+.nav-links>.node:first-child:hover)){background:var(--connector)}@keyframes wire-in{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@media (prefers-reduced-motion:reduce){.wire{animation:none}}.hanger{z-index:11;flex-direction:column;align-items:center;display:flex;position:fixed;top:0;right:8px}.hanger-string{pointer-events:none;width:1px;height:1px;position:absolute;top:0;left:50%;overflow:visible}.hanger-string path{fill:none;stroke:var(--card-edge);stroke-width:1px;stroke-linecap:round}.hanger-load{transform-origin:50% 0;flex-direction:column;align-items:center;margin-top:150px;display:flex}@media (min-width:720px){.hanger{z-index:9}}@media (min-width:720px) and (max-width:959px){.hanger-load{margin-top:80px}}@media (max-width:719px){.hanger-load{margin-top:12px}}.hanger.short{z-index:11}.hanger.short .hanger-load{margin-top:12px}.lamp-switch{cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:0 0;border:0;margin-top:-1px;padding:0 0 6px;display:block}.lamp-switch:focus-visible{outline-offset:2px}.lamp{shape-rendering:geometricprecision;display:block;overflow:visible}.lamp-neck{fill:var(--canvas);stroke:var(--connector);stroke-width:1px}.lamp-shade{fill:var(--canvas);stroke:var(--connector);stroke-width:1.2px;stroke-linejoin:round;transition:stroke .3s var(--ease)}.lamp-bulb{fill:var(--canvas);stroke:var(--connector);stroke-width:1px;transition:fill .3s var(--ease)}.lamp-pool{z-index:10;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 0.97 0 0 0 0 0.91 0 0 0 0.09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E") 0 0 / 160px 160px, radial-gradient(circle at var(--lx,100%) var(--ly,0), #fff8e842 0, #fff8e814 16px, transparent 44px), conic-gradient(from calc(140deg + var(--lamp-rot,0deg)) at var(--lx,100%) var(--ly,0), transparent 0deg, #fff8e804 6deg, #fff8e80b 12deg, #fff8e814 18deg, #fff8e81d 26deg, #fff8e824 40deg, #fff8e81d 54deg, #fff8e814 62deg, #fff8e80b 68deg, #fff8e804 74deg, transparent 80deg, transparent 360deg);-webkit-mask-image:radial-gradient(circle at var(--lx,100%) var(--ly,0), #000 0, #000000d1 140px, #0000008c 320px, #00000052 480px, #00000026 640px, #0000000d 780px, transparent 900px);-webkit-mask-image:radial-gradient(circle at var(--lx,100%) var(--ly,0), #000 0, #000000d1 140px, #0000008c 320px, #00000052 480px, #00000026 640px, #0000000d 780px, transparent 900px);mask-image:radial-gradient(circle at var(--lx,100%) var(--ly,0), #000 0, #000000d1 140px, #0000008c 320px, #00000052 480px, #00000026 640px, #0000000d 780px, transparent 900px);mix-blend-mode:screen;opacity:0;transition:opacity .5s var(--ease);position:fixed;inset:0}.lamp-pool.on{opacity:1}.display,.chapter-title,.lede,.copy-col p,.hero-meta{transition:text-shadow .45s var(--ease)}.lamp-switch:hover .lamp-shade{stroke:var(--text)}.lamp-rim{fill:none;stroke:#0000;stroke-width:1.2px;stroke-linecap:round}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .lamp-shade{stroke:var(--text)}:root:not([data-theme=light]) .lamp-bulb{fill:#fff8e8;stroke:#fff8e8}:root:not([data-theme=light]) .lamp-rim{stroke:#fff8e8bf}}:root[data-theme=dark] .lamp-shade{stroke:var(--text)}:root[data-theme=dark] .lamp-bulb{fill:#fff8e8;stroke:#fff8e8}:root[data-theme=dark] .lamp-rim{stroke:#fff8e8bf}@media (prefers-color-scheme:dark) and (prefers-reduced-motion:no-preference){:root:not([data-theme=light]) .lamp.flicker .lamp-bulb,:root:not([data-theme=light]) .lamp.flicker .lamp-rim{animation:.52s step-end both lamp-flicker}}@media (prefers-reduced-motion:no-preference){:root[data-theme=dark] .lamp.flicker .lamp-bulb,:root[data-theme=dark] .lamp.flicker .lamp-rim{animation:.52s step-end both lamp-flicker}}@keyframes lamp-flicker{0%{opacity:0}18%{opacity:1}30%{opacity:.2}46%{opacity:1}58%{opacity:.4}70%,to{opacity:1}}.nav{view-transition-name:site-nav}.hanger{view-transition-name:theme-hanger}::view-transition-old(site-nav){animation:none}::view-transition-old(theme-hanger){display:none}.lamp-pool{view-transition-name:lamp-light}::view-transition-old(lamp-light){display:none}::view-transition-new(lamp-light){mix-blend-mode:normal;animation:none}::view-transition-image-pair(lamp-light){isolation:auto}::view-transition-group(lamp-light){mix-blend-mode:screen}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-new(site-nav){animation:none}::view-transition-new(theme-hanger){animation:none}::view-transition-new(root){-webkit-mask-image:linear-gradient(#000 83.34%,#0000 100%);mask-image:linear-gradient(#000 83.34%,#0000 100%);-webkit-mask-position:0 -120vh;mask-position:0 -120vh;-webkit-mask-size:100% 120vh;mask-size:100% 120vh;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}::view-transition-new(site-nav){-webkit-mask-image:linear-gradient(#000 83.34%,#0000 100%);mask-image:linear-gradient(#000 83.34%,#0000 100%);-webkit-mask-position:0 -120vh;mask-position:0 -120vh;-webkit-mask-size:100% 120vh;mask-size:100% 120vh;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@media (max-width:719px){.wire{display:none}.nav-links{gap:8px;margin-left:auto}}@media (max-width:480px){.nav-links .optional{display:none}}.command{border:1px solid var(--card-edge);background:var(--card);max-width:100%;font-family:var(--mono);color:var(--text);border-radius:8px;align-items:center;gap:10px;padding:8px 8px 8px 14px;font-size:13px;display:inline-flex}.command code{font-size:inherit;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.command .prompt-icon{border-radius:3px;flex:none;width:16px;height:16px}.command .prompt{color:var(--text-muted);-webkit-user-select:none;user-select:none}.copy{background:var(--badge);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:color .16s var(--ease);border:0;border-radius:6px;flex:none;place-items:center;display:inline-grid;position:relative}.copy-face{display:inline-flex;position:relative}.copy:hover{color:var(--text)}.copy[data-copied=true]{color:var(--text);cursor:default}.copy-wait{border-radius:inherit;background:var(--card-edge);animation:copy-drain var(--copied,1.6s) linear forwards;position:absolute;inset:0}@keyframes copy-drain{0%{clip-path:inset(0)}to{clip-path:inset(100% 0 0)}}.copy[data-copied=true] path{stroke-dasharray:1;animation:check-draw .32s var(--ease) 60ms backwards}@keyframes check-draw{0%{stroke-dashoffset:1px}}@media (prefers-reduced-motion:reduce){.copy-wait,.copy[data-copied=true] path{animation:none}}.install{justify-items:start;gap:10px;min-width:0;max-width:100%;display:grid}.install [role=tabpanel]{max-width:100%}.install-tabs{align-items:center;display:flex;position:relative}.install-tab-wrap{align-items:center;display:inline-flex}.install-tab{color:var(--text-muted);font:inherit;letter-spacing:inherit;cursor:pointer;transition:color .16s var(--ease);background:0 0;border:0;padding:2px 0 5px}.install-tab:hover,.install-tab[aria-selected=true]{color:var(--text)}.install-tab:focus-visible{outline-offset:2px}.install-sep{background:var(--card-edge);width:1px;height:10px;margin:0 12px 3px}.install-line{background:var(--text);pointer-events:none;width:0;height:1px;position:absolute;bottom:0;left:0}.install-tabs.measured .install-line{transition:transform .42s var(--ease), width .42s var(--ease)}.install-tabs:not(.measured) .install-tab[aria-selected=true]{box-shadow:inset 0 -1px 0 var(--text)}.command-swap{grid-template-columns:minmax(0,max-content);min-width:0;display:inline-grid;position:relative;overflow:hidden}.command-line{grid-area:1/1;align-items:center;gap:10px;min-width:0;display:inline-flex}.command-size{visibility:hidden}.command-line.leaving{animation:command-out .36s var(--ease) forwards;position:absolute;inset:0 auto 0 0}.command-line.entering{animation:command-in .48s var(--ease) 60ms backwards}@keyframes command-out{to{opacity:0;transform:translateY(-100%)}}@keyframes command-in{0%{opacity:0;transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){.install-tabs.measured .install-line,.command-line.entering{transition:none;animation:none}.command-line.leaving{display:none}}.cta{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.hero{padding:clamp(48px,10vw,128px) 0 clamp(32px,5vw,56px)}.hero-grid{gap:32px;display:grid}@media (min-width:960px){.hero-grid{grid-template-columns:7fr 4fr;align-items:end;gap:64px}}.display{font-size:var(--display);letter-spacing:-.035em;text-wrap:balance;margin:0;font-weight:500;line-height:.98}.wide-break{display:none}@media (min-width:960px){.wide-break{display:inline}.hero .display{font-size:clamp(40px,6.3vw,92px)}}@media (min-width:1600px){.hero .display{font-size:clamp(92px,5vw,140px)}}.word,.word-inner{display:inline-block}.lede{max-width:44ch;color:var(--text-muted);margin:0 0 24px;font-size:18px}.hero-meta{gap:24px;margin-bottom:20px;display:flex}.band{border-top:1px solid var(--card-edge);border-bottom:1px solid var(--card-edge);background:var(--canvas);margin:0}.band .wrap{padding-top:clamp(24px,4vw,48px);padding-bottom:clamp(24px,4vw,48px)}.band img,.band svg{width:100%;max-width:max(1344px,70vw);height:auto;margin:0 auto;display:block}.chapter{padding:clamp(72px,12vw,160px) 0 clamp(40px,6vw,72px)}.chapter-head{gap:16px 48px;margin-bottom:clamp(32px,5vw,56px);display:grid}.chapter-head>*,.hero-grid>*,.spec>*{min-width:0}@media (min-width:960px){.chapter-head{grid-template-columns:3fr 5fr 4fr;align-items:start}}.marker{border-top:1px solid var(--text);align-items:baseline;gap:12px;padding-top:10px;display:flex}.marker .num{font-family:var(--sans);letter-spacing:-.03em;color:var(--text);font-size:clamp(28px,2.8vw,40px);font-weight:500;line-height:1}.chapter-title{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(32px,4.4vw,60px);font-weight:500;line-height:1.02}@media (min-width:1600px){.chapter-title{font-size:clamp(60px,3.4vw,88px)}}.copy-col p{max-width:46ch;color:var(--text-muted);margin:0 0 14px}@media (min-width:1920px){.copy-col p{font-size:18px}.lede{font-size:20px}}.spec{gap:24px;display:grid}@media (min-width:1280px){.spec{grid-template-columns:3fr 5fr 4fr;gap:48px}.spec-parts{grid-column:1;width:100%;max-width:400px}.spec-file{width:100%;max-width:var(--term-max);grid-column:2/-1}}.code{border:1px solid var(--card-edge);background:var(--card);counter-reset:line;border-radius:10px;margin:0;padding:20px 0;font-size:13px;line-height:1.75;overflow-x:auto}.code .line{white-space:pre;padding:0 20px 0 0;display:block}.code .line:before{counter-increment:line;content:counter(line);text-align:right;width:44px;color:var(--connector);-webkit-user-select:none;user-select:none;padding-right:16px;display:inline-block}.code .key{color:var(--text-muted)}.aside-list{margin:0;padding:0;list-style:none}.aside-list li{border-top:1px solid var(--card-edge);color:var(--text-muted);padding:12px 0;font-size:14px}.aside-list li .mono{margin-bottom:2px;display:block}@media (min-width:1280px){.spec-chapter .chapter-head{margin-bottom:28px}.spec-chapter .code{padding:14px 0;line-height:1.55}}@media (min-width:1280px) and (max-height:860px){.spec-chapter{padding-top:56px}.spec-chapter .chapter-title{font-size:clamp(32px,3.4vw,48px)}.spec-chapter .chapter-head{margin-bottom:20px}.spec-chapter .code{padding:10px 0;font-size:12px;line-height:1.45}.spec-chapter .spec-skill{margin-top:12px}}.spec-skill{margin-top:20px}.spec-parts{border:1px solid var(--card-edge);background:var(--card);border-radius:10px;align-self:center;overflow:hidden}.spec-parts li:first-child{border-top:0}.spec-parts li{cursor:default;transition:opacity .32s var(--ease), color .32s var(--ease), background-color .32s var(--ease);grid-template-columns:30px 1fr;align-items:center;column-gap:14px;padding-left:16px;padding-right:16px;display:grid}.part-glyph{color:var(--text-muted);transition:color .32s var(--ease);grid-row:span 2;display:inline-flex}.part-glyph svg{overflow:visible}.part-key{font-family:var(--mono);color:var(--text);font-size:14px}.part-what{grid-column:2}.spec[data-lit] .spec-parts li{opacity:.45}.spec[data-lit] .spec-parts li[data-lit]{opacity:1;background-color:var(--badge)}.spec-parts li[data-lit] .part-glyph,.spec-chips button[data-lit] .part-glyph{color:var(--text)}.spec-chips{z-index:4;background:var(--canvas);flex-wrap:wrap;gap:8px;margin:-8px 0;padding:8px 0;display:flex;position:sticky;top:64px}.spec-chips button{border:1px solid var(--card-edge);background:var(--card);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:opacity .32s var(--ease), background-color .32s var(--ease), border-color .32s var(--ease);border-radius:999px;align-items:center;gap:10px;padding:7px 14px 7px 10px;display:inline-flex}@media (hover:hover){.spec-chips button:hover{opacity:1;border-color:var(--text-muted)}}.spec-chips button:focus-visible{outline:2px solid var(--text);outline-offset:2px}.spec-chips .part-glyph{grid-row:auto}.spec-chips .part-key{font-size:13px}.spec[data-lit] .spec-chips button{opacity:.55}.spec[data-lit] .spec-chips button[data-lit]{opacity:1;border-color:var(--text-muted);background-color:var(--badge)}.spec-parts{display:none}@media (max-width:480px){.spec-chips{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.spec-chips button{border-radius:12px;flex-direction:column;justify-content:center;gap:4px;padding:8px 4px 7px}.spec-chips .part-key{font-size:12px}}@media (min-width:1280px){.spec-chips{display:none}.spec-parts{display:block}}@keyframes card-float{0%,to{translate:0}50%{translate:0 -1.5px}}.spec .play .g-card{animation:1.8s ease-in-out infinite card-float}@keyframes frame-walk{to{stroke-dashoffset:-10px}}.spec .play .g-frame{animation:1.4s linear infinite frame-walk}.g-edge-line{stroke-dasharray:1;stroke-dashoffset:0}@keyframes edge-run{0%{stroke-dashoffset:0;animation-timing-function:cubic-bezier(.55,0,.7,.4)}42%{stroke-dashoffset:-1px}42.01%{stroke-dashoffset:1px;animation-timing-function:cubic-bezier(.3,.6,.35,1)}to{stroke-dashoffset:0}}.spec .play .g-edge-line{animation:1.6s infinite edge-run}@keyframes dot-cross{0%{opacity:1;animation-timing-function:cubic-bezier(.45,0,.25,1);translate:0}62%{opacity:1;translate:14px}74%{opacity:0;translate:14px}75%{opacity:0;translate:0}to{opacity:1;translate:0}}.spec .play .g-dot{animation:1.4s infinite dot-cross}.spec-file{border:1px solid var(--card-edge);background:var(--card);border-radius:10px;min-width:0;overflow:hidden}.spec-file-head{border-bottom:1px solid var(--card-edge);align-items:center;gap:10px;padding:8px 8px 8px 16px;display:flex}.spec-file-head .copy{margin-left:auto}.spec-file .code{border:0;border-radius:0}.spec-row{transition:opacity .32s var(--ease), background-color .32s var(--ease);display:block}.spec[data-lit] .spec-row{opacity:.35}.spec[data-lit=nodes] .spec-row[data-part=nodes],.spec[data-lit=frames] .spec-row[data-part=frames],.spec[data-lit=edges] .spec-row[data-part=edges],.spec[data-lit=flows] .spec-row[data-part=flows]{opacity:1;background-color:var(--badge)}@media (prefers-reduced-motion:reduce){.spec-parts li,.spec-chips button,.spec-row{transition:none}.spec .play .g-card,.spec .play .g-frame,.spec .play .g-edge-line,.spec .play .g-dot{animation:none}}#nodes .edges{display:none}.gate{align-items:center;gap:24px;display:grid}@media (min-width:960px){.chapter[data-gate]{padding-top:0;padding-bottom:0}.gate{grid-template-columns:4fr 7fr;gap:64px;height:calc(100vh - 64px);padding-top:24px;padding-bottom:24px}}.gate-figure svg{width:100%;height:auto;max-height:calc(100vh - 140px)}@media (max-width:959px){.gate-figure svg{max-height:calc(100vh - 200px)}}.progress{background:var(--card-edge);height:1px;margin:24px 0 12px;position:relative}.progress span{transform-origin:0;background:var(--text);position:absolute;inset:0;transform:scaleX(0)}.states{justify-content:space-between;gap:16px;display:flex}.states .refused{color:var(--refusal)}.states .passed{color:var(--pass);text-align:right}.pair{gap:16px;display:grid}@media (min-width:960px){.pair{grid-template-columns:1fr 1fr}}.pair figure{border:1px solid var(--card-edge);border-radius:10px;margin:0;overflow:hidden}.pair img{width:100%;height:auto}.pair figcaption{border-top:1px solid var(--card-edge);background:var(--card);padding:10px 14px}.gallery,.gallery-cols{gap:16px;display:grid}.gallery-col{display:contents}@media (min-width:960px){.gallery-cols{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.gallery-col{flex-direction:column;gap:16px;min-width:0;display:flex}.gallery-col>.tile{flex:1 0 auto}}.gallery-bleed{padding:0 16px}.tile{z-index:3;border:1px solid var(--card-edge);background:var(--canvas);border-radius:10px;flex-direction:column;margin:0;display:flex;position:relative;overflow:hidden}.tile .shot{overscroll-behavior-x:contain;scrollbar-width:none;flex:1;place-items:center safe center;padding:20px;display:grid;overflow-x:auto}.tile .shot::-webkit-scrollbar{display:none}.tile .shot.pans{cursor:grab;-webkit-mask-image:linear-gradient(90deg,#0000,#000 40px calc(100% - 40px),#0000);mask-image:linear-gradient(90deg,#0000,#000 40px calc(100% - 40px),#0000)}.tile .shot.pans.dragging{cursor:grabbing}.tile .shot:focus-visible{outline:1px solid var(--text-muted);outline-offset:-4px}.tile img{width:auto;max-width:none;height:auto}.tile-foot{position:relative}.tile-foot>.copy{position:absolute;top:8px;right:12px}.tile-spec{border-top:1px solid var(--card-edge);background:var(--card)}.tile-spec summary{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 52px 12px 16px;font-size:14px;list-style:none;display:flex}.tile-spec summary::-webkit-details-marker{display:none}.tile-spec summary .mono{white-space:nowrap}.tile-plus{transition:rotate .42s cubic-bezier(.34,1.56,.64,1);display:inline-block}.tile-spec[open] .tile-plus,.sample-spec[open] .tile-plus{rotate:45deg}.tile-spec,.sample-spec{interpolate-size:allow-keywords}.tile-spec::details-content{block-size:0;transition:block-size .52s var(--ease), content-visibility .52s allow-discrete;overflow:hidden}.sample-spec::details-content{block-size:0;transition:block-size .52s var(--ease), content-visibility .52s allow-discrete;overflow:hidden}.tile-spec[open]::details-content{block-size:auto}.sample-spec[open]::details-content{block-size:auto}.tile-spec .code{opacity:0;transition:opacity .32s var(--ease), translate .52s var(--ease);translate:0 -6px}.tile-spec[open] .code{opacity:1;transition-delay:80ms;translate:0}@media (prefers-reduced-motion:reduce){.tile-plus,.tile-spec .code{transition:none}.tile-spec::details-content{transition:none}.sample-spec::details-content{transition:none}}.tile-spec summary:hover .mono{color:var(--text)}.tile-spec .code{border:0;border-top:1px solid var(--card-edge);border-radius:0;max-height:420px;margin:0;font-size:12px;overflow:auto}.it{position:relative}.install-docs{margin:20px 0 0;font-size:15px}@media (min-width:960px){.it,.install-docs{grid-template-columns:3fr 5fr 4fr;column-gap:48px;display:grid}.it-term{width:100%;max-width:var(--term-max);grid-column:2/-1;justify-self:start}.install-docs>span{grid-column:2/-1}}.install-docs a{color:var(--text);border-bottom:1px solid var(--card-edge);justify-self:start;text-decoration:none}.install-docs a:hover{border-bottom-color:var(--text)}.it-drop{pointer-events:none;position:absolute;left:0;overflow:visible}.it-edge{fill:none;stroke:var(--text-muted);stroke-width:1px;stroke-dasharray:1;stroke-dashoffset:1px}.it-head{fill:none;stroke:var(--mark-green);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;opacity:0}.term.it-term{z-index:3;background:0 0;position:relative;overflow:visible}.it-term:not(.drawn){border-color:#0000}.it-border{pointer-events:none;transition:opacity .6s var(--ease);position:absolute;top:-1px;left:-1px;overflow:visible}.it-border path{fill:none;stroke:var(--text-muted);stroke-width:1px;stroke-dasharray:0 1000000}.it-term.drawn .it-border{opacity:0}.it-face{background:var(--card);opacity:0;border-radius:11px;overflow:hidden}.term-body.it-body{height:clamp(320px,50vh,480px);overflow:hidden}.it-ask .term-cmd{color:var(--text)}.it-ok>span,.it-spin>span{color:var(--mark-green)}.it-file{border-left:1px solid var(--card-edge);margin:6px 0 6px 4px;padding-left:14px}.it-file .code{white-space:pre-wrap;overflow-wrap:anywhere;background:0 0;border:0;margin:0;padding:0;font-size:13px;line-height:1.6}.it-row{display:block}.it-file .code .line{white-space:pre-wrap;padding:0}.it-file .code .line:before{width:28px;padding-right:14px}.it-gap{height:12px}@media (prefers-reduced-motion:reduce){.it-face{opacity:1}}@media (min-width:960px){.faq-term{grid-template-columns:3fr 5fr 4fr;column-gap:48px;display:grid}.faq-term>.term{width:100%;max-width:var(--term-max);grid-column:2/-1}}.term{border:1px solid var(--card-edge);background:var(--card);border-radius:12px;overflow:hidden}.term-bar{border-bottom:1px solid var(--card-edge);background:var(--badge);justify-content:space-between;padding:10px 16px;display:flex}.term-body{height:clamp(220px,34vh,340px);font-family:var(--mono);scrollbar-width:thin;padding:18px 20px 8px;font-size:14px;line-height:1.7;overflow-y:auto}.term-entry{margin-bottom:14px}.term-line,.term-out{margin:0}.term-prompt{color:var(--mark-green)}.term-cmd{color:var(--text)}.term-out{max-width:76ch;color:var(--text-muted)}.term-cursor{vertical-align:text-bottom;background:var(--text-muted);width:.55em;height:1.1em;margin-left:2px;display:inline-block}.term-cursor.blink{animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.term-cursor.blink{animation:none}}.term-ask{border-top:1px solid var(--card-edge);background:var(--card-edge);gap:1px;display:grid}@media (min-width:720px){.term-ask{grid-template-columns:1fr 1fr}}.term-q{background:var(--card);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background .16s var(--ease);border:0;gap:2px;padding:14px 20px;font-size:15px;display:grid}.term-q .mono{color:var(--mark-green)}.term-q:hover{background:var(--badge)}.term-q[data-asked=true],.term-q[data-asked=true] .mono{color:var(--text-muted)}.term-a,.term-plus{display:none}@media (max-width:719px){.faq-term .term-body{display:none}.faq-term .term-q{grid-template-columns:1fr auto;column-gap:16px}.faq-term .term-q>:not(.term-plus){grid-column:1}.faq-term .term-plus{font-family:var(--mono);color:var(--text-muted);grid-area:1/2/span 2;align-self:center;transition:rotate .42s cubic-bezier(.34,1.56,.64,1);display:block}.faq-term .term-q:has(+.term-a[data-open=true]) .term-plus{rotate:45deg}.faq-term .term-a[data-open=true]{background:var(--card);font-family:var(--mono);margin-top:-1px;padding:0 20px 16px;font-size:14px;line-height:1.7;display:block}}@media (max-width:719px) and (prefers-reduced-motion:reduce){.faq-term .term-plus{transition:none}}@media (max-width:719px) and (hover:none){.faq-term .term-q:hover{background:var(--card)}}.footer{border-top:1px solid var(--card-edge);color:var(--text-muted);padding:48px 0 64px;font-size:14px}.footer-grid{flex-wrap:wrap;align-items:baseline;gap:16px 32px;display:flex}.footer-grid nav{flex-wrap:wrap;gap:16px 24px;margin-left:auto;display:flex}.splash-screen{display:none}html.splash .splash-screen{z-index:100;place-items:center;display:grid;position:fixed;inset:0}.splash-bg{background:var(--canvas);position:absolute;inset:0}.splash-logo{position:relative;overflow:visible}html.splash .splash-plate{opacity:0}html.splash .splash-line{stroke-dasharray:1 2;stroke-dashoffset:1.02px}html.splash .splash-arrow,html.splash .brand .logo{opacity:0}html.splash-hold .intro .word-inner,html.splash-hold .intro-fade{animation-play-state:paused}@keyframes rise{0%{clip-path:inset(100% -10% -25%)}to{clip-path:inset(-25% -10%)}}@keyframes fade-up{0%{opacity:0}}.intro .word-inner{animation:rise 1.5s var(--ease) backwards;animation-delay:calc(var(--start,.12s) + var(--i,0) * var(--step,90ms))}.intro-fade{animation:fade-up 1.4s var(--ease) both;animation-delay:var(--delay,0s)}@media (prefers-reduced-motion:reduce){.intro .word-inner,.intro-fade{animation:none}}main{position:relative}.spine{z-index:2;pointer-events:none;position:fixed;inset:0}.spine-top{z-index:11;pointer-events:none;position:fixed;inset:0}.spine-svg{width:100%;height:100%;overflow:visible}.spine-track{fill:none;stroke:var(--card-edge);stroke-width:1px;stroke-linecap:round;opacity:.4}.spine-line{fill:none;stroke:var(--card-edge);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round}.spine-strand{fill:#fff;stroke:none;opacity:0}.spine-strand.out{fill:var(--text)}.spine-head{fill:none;stroke:var(--mark-green);stroke-width:5.5px;stroke-linecap:round;stroke-linejoin:round;opacity:1}@media (max-width:640px){.spine,.spine-top{display:none}}.docs{grid-template-columns:minmax(0,1fr);gap:24px;padding-top:24px;padding-bottom:96px;display:grid}@media (min-width:960px){.docs{grid-template-columns:200px minmax(0,720px);justify-content:center;gap:64px;padding-top:48px}}.docs>*{min-width:0}.docs-nav{flex-direction:column;gap:32px;font-size:14px;display:flex}.docs-nav ul{margin:12px 0 0;padding:0;list-style:none}.docs-nav p{margin:0;line-height:16px}.docs-nav a{border-left:1px solid var(--card-edge);color:var(--text-muted);transition:color .16s var(--ease), border-color .16s var(--ease);padding:6px 0 6px 12px;line-height:20px;text-decoration:none;display:block}.docs-nav a:hover{color:var(--text)}.docs-nav a.docs-version{border:0;padding:0}.docs-nav a.docs-version:hover{color:var(--text)}.docs-nav a[aria-current=page]{border-left-color:var(--text);color:var(--text)}@media (min-width:960px){.docs-nav{align-self:start;position:sticky;top:112px}}@media (max-width:959px){.docs-nav{gap:16px}.docs-nav ul{scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.docs-nav a{border:1px solid var(--card-edge);white-space:nowrap;border-radius:8px;padding:6px 12px}.docs-nav a[aria-current=page]{border-color:var(--text)}}.doc-head h1{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(32px,4vw,48px);font-weight:500;line-height:1.05}.doc-title{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 24px;display:grid}@media (max-width:559px){.doc-title{grid-template-columns:minmax(0,1fr)}.doc-copy-wrap{justify-self:start}}.doc-copy-wrap{margin-top:6px;display:inline-flex}.copy.copy-labelled{width:auto;height:32px;font-family:var(--mono);letter-spacing:.02em;align-items:center;gap:8px;padding:0 12px 0 10px;font-size:12px;display:inline-flex}.copy-words{white-space:nowrap;display:inline-grid;position:relative}.copy-words>span{grid-area:1/1}.copy-words>[data-shown=false]{visibility:hidden}.doc-lede{color:var(--text-muted);text-wrap:pretty;margin:16px 0 0;font-size:18px}.doc-source{margin:12px 0 0}.doc-body{margin-top:40px}.doc-body p,.doc-body li{text-wrap:pretty}.doc-body>p,.doc-body>ul,.doc-body>ol{margin:0 0 16px}.doc-body ul,.doc-body ol{padding-left:20px}.doc-body li+li{margin-top:6px}.doc-body ol>li+li{margin-top:12px}.doc-body strong{font-weight:500}.doc-heading{letter-spacing:-.02em;scroll-margin-top:88px;font-weight:500;position:relative}h2.doc-heading{border-top:1px solid var(--card-edge);margin:56px 0 16px;padding-top:16px;font-size:24px;line-height:1.2}h3.doc-heading{margin:32px 0 12px;font-size:18px;line-height:1.3}.doc-anchor{color:var(--connector);opacity:0;transition:opacity .16s var(--ease);margin-left:8px;text-decoration:none}.doc-heading:hover .doc-anchor,.doc-anchor:focus-visible{opacity:1}.doc-body :not(pre)>code{background:var(--badge);overflow-wrap:anywhere;border-radius:4px;padding:1px 5px;font-size:.86em}.doc-code{border:1px solid var(--card-edge);background:var(--card);border-radius:10px;margin:0 0 20px}.doc-code-head{border-bottom:1px solid var(--card-edge);justify-content:space-between;align-items:center;padding:6px 6px 6px 16px;display:flex}.doc-tabs{gap:16px;display:flex}.doc-tabs button{cursor:pointer;transition:color .16s var(--ease), border-color .16s var(--ease);background:0 0;border:0;border-bottom:1px solid #0000;padding:4px 0}.doc-tabs button:hover{color:var(--text)}.doc-tabs button[aria-selected=true]{border-bottom-color:var(--text);color:var(--text)}.doc-code pre{margin:0;padding:16px;font-size:13px;line-height:1.7;overflow-x:auto}.doc-code pre code{font-size:inherit}.tok-key,.tok-flag{color:var(--text-muted)}.tok-command{font-weight:500}.tok-punct,.tok-comment{color:var(--connector)}.tok-comment{font-style:italic}.doc-table{border:1px solid var(--card-edge);border-radius:10px;margin:0 0 20px;overflow-x:auto}.doc-table table{border-collapse:collapse;width:100%;font-size:14px}.doc-table th,.doc-table td{border-bottom:1px solid var(--card-edge);text-align:left;vertical-align:top;padding:10px 14px}.doc-table th{font-weight:500}.doc-body .doc-table code{overflow-wrap:normal}.doc-table tr:last-child td{border-bottom:0}.doc-figure{justify-content:center;margin:24px 0 32px;display:flex}.doc-figure img{height:auto}.doc-steps{grid-template-columns:1fr 1fr;gap:16px;margin-top:64px;display:grid}.doc-step{border:1px solid var(--card-edge);transition:border-color .16s var(--ease);border-radius:10px;flex-direction:column;gap:4px;padding:14px 16px;text-decoration:none;display:flex}.doc-step:hover{border-color:var(--connector)}.doc-step.next{text-align:right;grid-column:2}.sample{border-top:1px solid var(--text);margin-top:96px;padding-top:12px}.sample-num{margin:0}.sample h2.doc-heading{border-top:0;margin-top:8px;padding-top:0}.sample-spec summary{border:1px solid var(--card-edge);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;padding:10px 14px;list-style:none;display:flex}.sample-spec summary::-webkit-details-marker{display:none}.sample-spec summary:hover .mono{color:var(--text)}.sample-spec .doc-code{margin-top:8px}.sample-spec pre{max-height:480px}
