.fm-site{--on-acc:var(--bg);--acc-soft:color-mix(in oklab, var(--acc) 13%, transparent);--acc-mid:color-mix(in oklab, var(--acc) 38%, var(--bg));--ink:#15140f;--ink-deep:#0e0d0a;--ink-fg:#ede8de;--ink-mut:#8f887c;--ink-line:#ede8de21;--ink-acc:#9178de;--ink-ok:#9fbf8f;--fm-shadow-window:0 30px 60px -40px #1b1a1759;--page-bg:var(--bg);--page-fg:var(--fg);--page-mut:var(--mut);--page-line:var(--line);--page-sel:var(--sel);--page-acc:var(--acc);--page-on-acc:var(--on-acc);min-height:calc(100 * var(--svh));background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5;overflow-x:clip}.fm-site.fm-page{flex-direction:column;display:flex}.fm-site .fm-page-main{flex:1 0 auto}:root[data-theme=dark] .fm-site{--on-acc:var(--ground);--fm-shadow-window:0 30px 60px -40px #000c}.fm-site *,.fm-site :before,.fm-site :after{box-sizing:border-box}:where(.fm-site svg:not([width])){flex-shrink:0;width:1em;height:1em}.fm-site ::selection{background:var(--text-sel)}html:has(.fm-site){background:var(--bg)!important}html:has(.fm-site) body{background:var(--bg)!important}html:has(.fm-site){scroll-behavior:smooth;scroll-padding-top:80px}@media (prefers-reduced-motion:reduce){html:has(.fm-site){scroll-behavior:auto}}.fm-site a{color:var(--acc);text-decoration:none}@media (hover:hover) and (pointer:fine){.fm-site a:hover{text-decoration:underline}}.fm-site .fm-serif{font-family:var(--serif);font-weight:400}.fm-site .fm-mono{font-family:var(--mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums}.fm-site .fm-em{color:var(--acc);font-style:italic}.fm-site .fm-em[data-sheen]{background:linear-gradient(100deg, var(--acc) 40%, color-mix(in oklab, var(--acc) 35%, white) 50%, var(--acc) 60%) 100% 0 / 300% 100%;color:#0000;-webkit-background-clip:text;background-clip:text;margin-inline:-.1em;padding-inline:.1em;animation:1.6s cubic-bezier(.22,1,.36,1) both fm-sheen}.fm-site .fm-em[data-sheen=view]{animation-delay:.2s}@keyframes fm-sheen{to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.fm-site .fm-em[data-sheen]{animation-duration:.01ms;animation-delay:0s}}.fm-site .fm-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-size:10.5px}.fm-site .fm-h1{font-family:var(--serif);letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:clamp(46px,6vw,76px);font-weight:400;line-height:.98}.fm-site .fm-h2{font-family:var(--serif);letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:clamp(36px,4.2vw,54px);font-weight:400;line-height:1.02}.fm-site .fm-h3{font-family:var(--serif);margin:0;font-size:40px;font-weight:400;line-height:1.05}.fm-site .fm-lede{color:var(--mut);text-wrap:pretty;margin:0;font-size:18px;line-height:1.55}.fm-site .fm-muted{color:var(--mut)}.fm-site .fm-faint{color:var(--faint)}.fm-site .fm-code{font-family:var(--mono);letter-spacing:-.03em;color:var(--fg);background:var(--ground);border-radius:5px;padding:1px 6px;font-size:.875em}.fm-site .fm-container{width:100%;max-width:1200px;margin:0 auto;padding-left:24px;padding-right:24px}.fm-site .fm-stack{flex-direction:column;display:flex}.fm-site .fm-cells{background:var(--line);border:1px solid var(--line);border-radius:12px;gap:1px;display:grid;overflow:hidden}.fm-site .fm-cells>*{background:var(--bg)}.fm-site .fm-frame{background:var(--ground);border-radius:16px;padding:10px}.fm-site .fm-frame>.fm-island{background:var(--bg);border-radius:12px;overflow:hidden}.fm-site .fm-card{border:1px solid var(--line);border-radius:12px}.fm-site .fm-btn{background:var(--acc);height:44px;color:var(--on-acc);font:inherit;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-base), border-color var(--dur-base), transform var(--dur-base) var(--ease-out);border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 18px;font-weight:500;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.fm-site .fm-btn:hover{background:color-mix(in srgb, var(--acc) 86%, var(--fg));text-decoration:none}.fm-site .fm-btn-outline:hover{background:var(--sel);border-color:color-mix(in srgb, var(--mut) 60%, transparent)}}.fm-site .fm-btn:active{transform:scale(.985)}.fm-site .fm-btn-outline{color:var(--fg);border-color:var(--line);background:0 0}.fm-site .fm-btn-sm{height:36px;padding:0 14px;font-size:14.5px}.fm-site .fm-btn-icon{width:36px;padding:0}.fm-site .fm-btn-icon .fm-theme-icon{width:16px;height:16px}.fm-site .fm-btn-block{width:100%;height:46px;display:flex}.fm-site .fm-pill{border:1px solid var(--line);color:var(--fg);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:13.5px;display:inline-flex}.fm-site .fm-segmented{border:1px solid var(--line);border-radius:10px;gap:4px;padding:3px;font-size:14px;display:inline-flex}.fm-site .fm-segmented>a,.fm-site .fm-segmented>button{height:32px;color:var(--mut);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;padding:0 14px;text-decoration:none;display:inline-flex}.fm-site .fm-segmented>[aria-current=page],.fm-site .fm-segmented>[aria-pressed=true]{background:var(--ground);color:var(--fg)}.fm-site .fm-input{border:1px solid var(--line);height:44px;color:var(--fg);font:inherit;background:0 0;border-radius:8px;padding:0 12px;font-size:15px}.fm-site .fm-input::placeholder{color:var(--faint)}@media (pointer:coarse){.fm-site .fm-input{font-size:max(16px, calc(16px / var(--ui-scale,1)))}}.fm-site .fm-field{flex-direction:column;gap:6px;font-size:13.5px;font-weight:500;display:flex}.fm-site .fm-codeblock{background:var(--ground);border-radius:12px;overflow:hidden}.fm-site .fm-codeblock-bar{border-bottom:1px solid var(--line);color:var(--mut);align-items:center;padding:10px 16px;font-size:12px;display:flex}.fm-site .fm-codeblock-copy{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;margin-left:auto;margin-right:-6px;padding:2px 6px;display:inline-flex}@media (hover:hover) and (pointer:fine){.fm-site .fm-codeblock-copy:hover{color:var(--fg)}}.fm-site .fm-codeblock-copy:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.fm-site .fm-codeblock pre{font-family:var(--mono);letter-spacing:-.03em;white-space:pre;margin:0;padding:18px;font-size:13.5px;line-height:1.75;overflow-x:auto}.fm-site .fm-codeblock .fm-var{color:var(--acc)}:root:has(.fm-site){--ui-scale:1!important}.fm-site .fm-header{--s:var(--fm-scrolled,0);--i:var(--fm-ink,0);--bg:color-mix(in oklab, var(--ink) calc(100% * var(--i)), var(--page-bg));--fg:color-mix(in oklab, var(--ink-fg) calc(100% * var(--i)), var(--page-fg));--mut:color-mix(in oklab, var(--ink-mut) calc(100% * var(--i)), var(--page-mut));--line:color-mix(in oklab, var(--ink-line) calc(100% * var(--i)), var(--page-line));--sel:color-mix(in oklab, #ede8de14 calc(100% * var(--i)), var(--page-sel));--acc:color-mix(in oklab, var(--ink-acc) calc(100% * var(--i)), var(--page-acc));--on-acc:color-mix(in oklab, var(--ink-deep) calc(100% * var(--i)), var(--page-on-acc));color:var(--fg);z-index:20;position:sticky;top:0}.fm-site .fm-header:before{content:"";pointer-events:none;z-index:-1;background:color-mix(in oklab, var(--bg) calc(94% * var(--s)), transparent);-webkit-backdrop-filter:blur(calc(8px * var(--s))) saturate(calc(100% + 40% * var(--s)));border-bottom:1px solid color-mix(in oklab, var(--line) calc(100% * var(--s)), transparent);position:absolute;inset:0}.fm-site .fm-header-inner{align-items:center;gap:28px;padding:13px 24px;display:flex}@media (prefers-reduced-transparency:reduce){.fm-site .fm-header:before{background:color-mix(in oklab, var(--bg) calc(100% * var(--s)), transparent);-webkit-backdrop-filter:none}}.fm-site .fm-brand{color:var(--fg);align-items:center;gap:9px;text-decoration:none;display:flex}.fm-site .fm-brand:hover{text-decoration:none}.fm-site .fm-brand-name{font-family:var(--serif);letter-spacing:-.01em;font-size:29px;line-height:1}.fm-site .fm-nav{gap:2px;min-width:0;font-size:14.5px;display:flex}.fm-site .fm-nav a{height:34px;color:var(--mut);white-space:nowrap;transition:background-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);border-radius:999px;align-items:center;padding:0 12px;display:inline-flex}.fm-site .fm-nav a:active{color:var(--fg);background:color-mix(in oklab, var(--fg) 6%, transparent);text-decoration:none}@media (hover:hover) and (pointer:fine){.fm-site .fm-nav a:hover{color:var(--fg);background:color-mix(in oklab, var(--fg) 6%, transparent);text-decoration:none}}.fm-site .fm-nav a[aria-current=page]{color:var(--fg);background:color-mix(in oklab, var(--fg) 9%, transparent)}.fm-site .fm-header-actions{flex-shrink:0;align-items:center;gap:10px;margin-left:auto;display:flex}.fm-site .fm-footer-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:40px;padding-top:56px;padding-bottom:40px;display:grid}.fm-site .fm-footer-about{flex-direction:column;grid-column:span 2;gap:14px;min-width:0;display:flex}.fm-site .fm-footer-col{flex-direction:column;gap:10px;font-size:14px;display:flex}.fm-site .fm-footer-col a{color:var(--mut)}.fm-site .fm-footer-base{color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:8px 20px;padding-top:18px;padding-bottom:28px;font-size:13px;display:flex}.fm-site .fm-footer-field{touch-action:pan-y;width:100%;height:160px;display:block}@media (width<=760px){.fm-site .fm-sm-hide{display:none!important}.fm-site .fm-footer-about{grid-column:auto}}@media (prefers-reduced-motion:reduce){.fm-site .fm-btn{transition:background-color var(--dur-base), border-color var(--dur-base)}.fm-site .fm-btn:active{transform:none}}.fm-site:has(.fm-api-docs) .fm-header{--s:1}.fm-site .fm-api-docs{min-height:calc(100 * var(--svh));border-bottom:1px solid var(--line);position:relative}.fm-site .fm-api-docs-body{opacity:0;transition:opacity var(--dur-base) ease}.fm-site .fm-api-docs[data-loaded] .fm-api-docs-body{opacity:1}.fm-site .fm-api-docs-loading{color:var(--mut);justify-content:center;align-items:center;gap:10px;padding-top:30vh;font-size:14px;display:flex;position:absolute;inset:0 0 auto}.fm-site .fm-api-docs[data-loaded] .fm-api-docs-loading{display:none}.fm-site .fm-api-docs-loading svg{animation:.9s linear infinite fm-spin}@keyframes fm-spin{to{transform:rotate(360deg)}}
