:root {
--paper-0: oklch(0.994 0.004 178);
--paper-1: oklch(0.983 0.005 178);
--paper-2: oklch(0.968 0.007 178);
--paper-3: oklch(0.942 0.009 178);
--ink-0: oklch(0.244 0.022 188);
--ink-1: oklch(0.398 0.018 188);
--ink-2: oklch(0.550 0.014 188);
--ink-3: oklch(0.700 0.012 188);
--line-1: oklch(0.908 0.010 178);
--line-2: oklch(0.862 0.012 178);
--line-strong: oklch(0.244 0.022 188 / 0.14);
--sea-50: oklch(0.962 0.040 178);
--sea-100: oklch(0.918 0.070 178);
--sea-200: oklch(0.842 0.100 178);
--sea-300: oklch(0.742 0.125 178);
--sea-400: oklch(0.655 0.140 178);
--sea-500: oklch(0.572 0.148 178);
--sea-600: oklch(0.498 0.134 179);
--sea-700: oklch(0.428 0.116 180);
--sea-on: oklch(0.990 0.008 178);
--cyan-50: oklch(0.964 0.040 205);
--cyan-100: oklch(0.924 0.072 205);
--cyan-200: oklch(0.866 0.108 205);
--cyan-300: oklch(0.782 0.135 205);
--cyan-400: oklch(0.708 0.148 205);
--cyan-500: oklch(0.640 0.152 205);
--cyan-600: oklch(0.558 0.140 207);
--cyan-700: oklch(0.472 0.122 208);
--cyan-on: oklch(0.992 0.006 205);
--ok-500: oklch(0.625 0.165 150);
--ok-700: oklch(0.480 0.135 152);
--ok-bg: oklch(0.945 0.060 150);
--warn-500: oklch(0.770 0.165 80);
--warn-700: oklch(0.585 0.135 70);
--warn-bg: oklch(0.958 0.075 84);
--err-500: oklch(0.600 0.215 27);
--err-700: oklch(0.490 0.188 26);
--err-bg: oklch(0.954 0.052 28);
--info-500: oklch(0.585 0.150 233);
--info-700: oklch(0.465 0.130 235);
--info-bg: oklch(0.952 0.045 233);
--term-bg: oklch(0.228 0.018 188);
--term-bg-2: oklch(0.288 0.018 188);
--term-fg: oklch(0.905 0.010 180);
--term-dim: oklch(0.640 0.012 184);
--term-line: oklch(0.380 0.014 186);
--term-sea: oklch(0.760 0.150 178);
--term-ok: oklch(0.800 0.185 150);
--term-warn: oklch(0.850 0.175 88);
--term-err: oklch(0.730 0.205 26);
--term-info: oklch(0.775 0.150 235);
--term-cyan: oklch(0.820 0.130 200);
--term-violet: oklch(0.770 0.150 305);
--ct-fg: var(--ink-0);
--ct-comment: oklch(0.605 0.018 215);
--ct-keyword: oklch(0.490 0.170 286);
--ct-string: oklch(0.495 0.130 150);
--ct-number: oklch(0.560 0.140 60);
--ct-function: oklch(0.505 0.160 252);
--ct-type: oklch(0.560 0.100 205);
--ct-property: oklch(0.470 0.092 212);
--ct-variable: oklch(0.510 0.158 350);
--ct-symbol: oklch(0.530 0.130 30);
--ct-punct: oklch(0.560 0.035 220);
--font-display: 'Manrope', ui-sans-serif, system-ui, sans-serif;
--font-body: 'Hanken Grotesk', ui-sans-serif, system-ui, -apple-system, sans-serif;
--font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
--weight-regular: 400;
--weight-medium: 500;
--weight-semi: 600;
--weight-bold: 700;
--text-2xs: 11px;
--text-xs: 12px;
--text-sm: 13px;
--text-base: 16px;
--text-md: 18px;
--text-lg: 21px;
--text-xl: 25px;
--text-2xl: 31px;
--text-3xl: 39px;
--text-4xl: 52px;
--text-5xl: 68px;
--text-6xl: 88px;
--leading-tight: 1.08;
--leading-snug: 1.28;
--leading-normal: 1.55;
--leading-relaxed: 1.72;
--tracking-tight: -0.02em;
--tracking-snug: -0.01em;
--tracking-normal: 0;
--tracking-wide: 0.04em;
--tracking-caps: 0.10em;
--space-0: 0;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-10: 40px;
--space-12: 48px;
--space-16: 64px;
--space-20: 80px;
--space-24: 96px;
--space-32: 128px;
--radius-0: 0px;
--radius-1: 3px;
--radius-2: 6px;
--radius-3: 10px;
--radius-4: 16px;
--radius-full: 999px;
--shadow-0: none;
--shadow-1: 0 1px 2px oklch(0.244 0.022 188 / 0.05);
--shadow-2: 0 1px 2px oklch(0.244 0.022 188 / 0.05), 0 2px 6px oklch(0.244 0.022 188 / 0.06);
--shadow-3: 0 2px 4px oklch(0.244 0.022 188 / 0.05), 0 8px 24px oklch(0.244 0.022 188 / 0.08);
--shadow-4: 0 4px 8px oklch(0.244 0.022 188 / 0.06), 0 16px 48px oklch(0.244 0.022 188 / 0.12);
--focus-ring: 0 0 0 3px oklch(0.572 0.148 178 / 0.35);
--ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);
--ease-inout: cubic-bezier(0.65, 0, 0.35, 1);
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
--ease-back: cubic-bezier(0.5, -0.4, 0.5, 1.4);
--dur-fast: 120ms;
--dur-base: 180ms;
--dur-slow: 280ms;
--grid-line: oklch(0.244 0.022 188 / 0.035);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
background: var(--paper-0);
color: var(--ink-0);
font-family: var(--font-body);
font-size: var(--text-base);
font-weight: var(--weight-regular);
line-height: var(--leading-normal);
-webkit-font-smoothing: antialiased;
}
::selection {
background: var(--sea-200);
}
a {
color: var(--sea-700);
font-weight: var(--weight-medium);
text-decoration-color: var(--sea-200);
text-underline-offset: 0.18em;
}
a:hover {
color: var(--sea-600);
}
a:focus-visible,
button:focus-visible,
select:focus-visible,
summary:focus-visible {
border-radius: var(--radius-2);
outline: none;
box-shadow: var(--focus-ring);
}
.topbar {
position: sticky;
top: 0;
z-index: 50;
display: flex;
align-items: center;
gap: var(--space-5);
height: 64px;
padding: 0 var(--space-6);
border-bottom: 1px solid var(--line-1);
background: color-mix(in oklch, var(--paper-0) 85%, transparent);
backdrop-filter: blur(10px);
}
.brand {
display: inline-flex;
align-items: center;
text-decoration: none;
}
.brand-wordmark {
display: block;
width: 144px;
height: auto;
}
.topnav {
display: flex;
gap: 3px;
margin-left: var(--space-2);
}
.topnav a {
border-radius: var(--radius-2);
color: var(--ink-1);
font-size: 14px;
font-weight: 500;
padding: 7px 11px;
text-decoration: none;
}
.topnav a:hover {
background: var(--paper-2);
color: var(--ink-0);
}
.topnav a[aria-current="page"] {
background: var(--sea-50);
color: var(--sea-700);
}
.sdk-language-picker {
display: inline-flex;
align-items: center;
gap: var(--space-2);
color: var(--ink-2);
font-family: var(--font-mono);
font-size: 10.5px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.sdk-language-picker select {
min-width: 106px;
border: 1px solid var(--line-2);
border-radius: 7px;
background: var(--paper-1);
color: var(--ink-0);
font-family: var(--font-body);
font-size: 13.5px;
font-weight: 600;
line-height: 1.2;
padding: 7px 28px 7px 10px;
text-transform: none;
}
.layout {
display: grid;
grid-template-columns: 248px minmax(0, 1fr) 220px;
gap: 0;
max-width: 1340px;
margin: 0 auto;
}
.mobile-nav {
display: none;
}
.tree,
.sidenav {
position: sticky;
top: 64px;
align-self: start;
height: calc(100vh - 64px);
overflow: auto;
border-right: 1px solid var(--line-1);
padding: 28px 18px 60px;
}
.nav-section + .nav-section {
margin-top: var(--space-5);
}
.nav-section-title,
.toc-title,
.crumb {
color: var(--ink-3);
font-family: var(--font-mono);
font-size: 10.5px;
font-weight: 600;
letter-spacing: 0.1em;
line-height: 1;
text-transform: uppercase;
}
.nav-section-title {
margin: 0 var(--space-2) var(--space-2);
}
.tree a,
.sidenav a {
display: block;
border-radius: var(--radius-2);
color: var(--ink-1);
font-size: 13.5px;
font-weight: 400;
line-height: 1.35;
padding: 6px 10px;
text-decoration: none;
}
.tree a:hover,
.sidenav a:hover {
background: var(--paper-2);
color: var(--ink-0);
}
.tree a[aria-current="page"],
.sidenav a[aria-current="page"] {
background: var(--sea-50);
color: var(--sea-700);
font-weight: 600;
}
.doc {
min-width: 0;
padding: 38px 56px 100px;
}
.crumb {
margin-bottom: 22px;
letter-spacing: 0.04em;
text-transform: none;
}
.doc h1,
.doc h2,
.doc h3 {
color: var(--ink-0);
font-family: var(--font-display);
letter-spacing: 0;
}
.doc h1 {
margin: 0 0 var(--space-4);
font-size: 43px;
font-weight: 700;
line-height: 1.05;
text-wrap: balance;
}
.doc h2 {
margin: 48px 0 14px;
padding-top: 6px;
font-size: 27px;
font-weight: 600;
line-height: 1.2;
scroll-margin-top: 86px;
}
.doc h3 {
margin: 30px 0 10px;
font-size: 19px;
font-weight: 600;
line-height: 1.25;
scroll-margin-top: 86px;
}
.doc p,
.doc li {
color: var(--ink-0);
font-size: 16.5px;
line-height: 1.62;
}
.doc p {
max-width: 68ch;
margin: 0 0 var(--space-4);
text-wrap: pretty;
}
.doc ul,
.doc ol {
max-width: 68ch;
margin: 0 0 18px;
padding-left: 22px;
}
.doc li {
margin-bottom: 7px;
padding-left: var(--space-1);
}
.doc li::marker {
color: var(--ink-3);
}
.doc strong {
font-weight: 600;
}
.doc pre {
max-width: 78ch;
margin: 10px 0 24px;
font-family: var(--font-mono);
font-size: var(--text-sm);
font-weight: 400;
font-synthesis-weight: none;
line-height: 1.7;
background: var(--paper-2);
border: 1px solid var(--line-1);
border-radius: var(--radius-2);
padding: var(--space-4) var(--space-5);
color: var(--ink-0);
overflow: auto;
tab-size: 2;
}
.doc pre code {
display: block;
min-width: max-content;
font-weight: 400;
font-synthesis-weight: none;
background: none;
border: 0;
padding: 0;
font-size: 1em;
color: inherit;
}
.doc :not(pre) > code {
font-family: var(--font-mono);
font-size: 0.88em;
font-weight: var(--weight-medium);
background: var(--paper-2);
border: 1px solid var(--line-1);
border-radius: var(--radius-1);
padding: 0.1em 0.38em;
color: var(--sea-700);
}
.sdk-snippet-group {
max-width: 78ch;
margin: 10px 0 24px;
}
.sdk-snippet-toolbar {
display: flex;
justify-content: flex-end;
margin-bottom: var(--space-2);
}
.sdk-snippet-group .sdk-snippet {
margin: 0;
}
.sdk-snippet {
display: none;
}
html[data-sdk-lang="rust"] .sdk-snippet[data-sdk-lang="rust"],
html[data-sdk-lang="python"] .sdk-snippet[data-sdk-lang="python"],
html[data-sdk-lang="typescript"] .sdk-snippet[data-sdk-lang="typescript"],
html[data-sdk-lang="java"] .sdk-snippet[data-sdk-lang="java"],
html[data-sdk-lang="go"] .sdk-snippet[data-sdk-lang="go"] {
display: block;
}
.hljs {
color: var(--ct-fg);
background: transparent;
}
.hljs-comment,
.hljs-quote {
color: var(--ct-comment);
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag {
color: var(--ct-keyword);
}
.hljs-section,
.hljs-name,
.hljs-selector-id,
.hljs-selector-class {
color: var(--ct-keyword);
font-weight: 500;
}
.hljs-string,
.hljs-regexp,
.hljs-meta .hljs-string {
color: var(--ct-string);
}
.hljs-number,
.hljs-literal {
color: var(--ct-number);
}
.hljs-title,
.hljs-title.function_ {
color: var(--ct-function);
}
.hljs-title.class_,
.hljs-type,
.hljs-built_in,
.hljs-class .hljs-title {
color: var(--ct-type);
}
.hljs-attr,
.hljs-attribute,
.hljs-property {
color: var(--ct-property);
}
.hljs-variable,
.hljs-template-variable,
.hljs-variable.language_,
.hljs-params {
color: var(--ct-variable);
}
.hljs-bullet,
.hljs-symbol,
.hljs-link {
color: var(--ct-symbol);
}
.hljs-meta,
.hljs-meta .hljs-keyword {
color: var(--ct-symbol);
}
.hljs-punctuation,
.hljs-operator {
color: var(--ct-punct);
}
.hljs-tag {
color: var(--ct-punct);
}
.hljs-tag .hljs-name {
color: var(--ct-keyword);
}
.hljs-tag .hljs-attr {
color: var(--ct-property);
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: 600;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: var(--ct-comment);
font-style: italic;
}
.token.keyword,
.token.selector,
.token.atrule,
.token.section,
.token.tag,
.token.namespace {
color: var(--ct-keyword);
}
.token.property,
.token.attr-name,
.token.key {
color: var(--ct-property);
}
.token.string,
.token.attr-value,
.token.char,
.token.regex,
.token.inserted {
color: var(--ct-string);
}
.token.number,
.token.boolean,
.token.constant {
color: var(--ct-number);
}
.token.function,
.token.method {
color: var(--ct-function);
}
.token.class-name,
.token.builtin {
color: var(--ct-type);
}
.token.variable,
.token.parameter {
color: var(--ct-variable);
}
.token.symbol,
.token.important {
color: var(--ct-symbol);
}
.token.operator,
.token.punctuation {
color: var(--ct-punct);
}
.token.deleted {
color: var(--err-700);
}
.token.bold {
font-weight: 600;
}
.token.italic {
font-style: italic;
}
.hljs-addition,
.token.inserted-sign {
display: block;
background: var(--ok-bg);
color: var(--ok-700);
}
.hljs-deletion,
.token.deleted-sign {
display: block;
background: var(--err-bg);
color: var(--err-700);
}
.doc table {
display: block;
max-width: 78ch;
margin: 10px 0 24px;
overflow-x: auto;
border: 1px solid var(--line-1);
border-radius: 9px;
border-spacing: 0;
background: var(--paper-1);
border-collapse: separate;
}
.doc th,
.doc td {
border-bottom: 1px solid var(--line-1);
padding: 10px 14px;
text-align: left;
vertical-align: top;
}
.doc tr:last-child td {
border-bottom: 0;
}
.doc th {
background: var(--paper-2);
color: var(--ink-2);
font-family: var(--font-mono);
font-size: 10.5px;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.doc blockquote {
display: flex;
max-width: 70ch;
margin: 10px 0 24px;
border: 1px solid color-mix(in oklch, var(--info-500) 25%, transparent);
border-radius: 9px;
background: var(--info-bg);
padding: 14px 17px;
}
.doc blockquote p {
color: var(--ink-0);
font-size: 14.5px;
line-height: 1.55;
}
.doc blockquote p:last-child {
margin-bottom: 0;
}
.toc {
position: sticky;
top: 64px;
align-self: start;
height: calc(100vh - 64px);
overflow: auto;
padding: 38px 22px;
font-size: 13px;
}
.toc-title {
margin-bottom: 12px;
}
.toc a {
display: block;
border-left: 2px solid var(--line-1);
color: var(--ink-2);
font-weight: 400;
line-height: 1.4;
padding: 5px 0 5px 12px;
text-decoration: none;
}
.toc a:hover {
color: var(--ink-0);
}
.toc a.sub {
padding-left: 24px;
font-size: 12.5px;
}
.page-nav {
display: flex;
gap: 14px;
max-width: 78ch;
margin-top: 48px;
border-top: 1px solid var(--line-1);
padding-top: 24px;
}
.page-nav a {
flex: 1;
border: 1px solid var(--line-1);
border-radius: 9px;
color: var(--ink-0);
padding: 14px 16px;
text-decoration: none;
}
.page-nav a:hover {
border-color: var(--sea-300);
background: var(--sea-50);
}
.page-nav span {
display: block;
color: var(--ink-3);
font-family: var(--font-mono);
font-size: 10.5px;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.page-nav strong {
display: block;
margin-top: var(--space-1);
color: var(--ink-0);
font-family: var(--font-display);
font-size: 16px;
}
@media (max-width: 1100px) {
.layout {
grid-template-columns: 248px minmax(0, 1fr);
}
.toc {
display: none;
}
}
@media (max-width: 820px) {
.topnav {
display: none;
}
.topbar {
gap: 14px;
padding: 0 18px;
}
.brand-wordmark {
width: 128px;
}
.sdk-language-picker span {
display: none;
}
.sdk-language-picker select {
min-width: 96px;
font-size: 13px;
}
.layout {
display: block;
padding: 26px 20px 70px;
}
.mobile-nav {
display: block;
margin: 0 0 26px;
border: 1px solid var(--line-1);
border-radius: 8px;
background: var(--paper-1);
box-shadow: var(--shadow-1);
}
.mobile-nav summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
min-height: 46px;
padding: 10px 13px;
color: var(--ink-0);
cursor: pointer;
list-style: none;
}
.mobile-nav summary::-webkit-details-marker {
display: none;
}
.mobile-nav summary::after {
content: "";
width: 9px;
height: 9px;
border-right: 1.5px solid var(--sea-700);
border-bottom: 1.5px solid var(--sea-700);
transform: rotate(45deg);
transition: transform var(--dur-fast) var(--ease-out);
}
.mobile-nav[open] summary::after {
transform: rotate(225deg);
}
.mobile-nav summary span {
color: var(--ink-3);
font-family: var(--font-mono);
font-size: 10.5px;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.mobile-nav summary strong {
flex: 1;
min-width: 0;
overflow: hidden;
color: var(--ink-0);
font-family: var(--font-display);
font-size: 15px;
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
}
.mobile-nav-panel {
border-top: 1px solid var(--line-1);
padding: 12px;
}
.mobile-nav .nav-section + .nav-section {
margin-top: 16px;
}
.mobile-nav .nav-section-title {
margin-left: 9px;
}
.mobile-nav a {
display: block;
border-radius: var(--radius-2);
color: var(--ink-1);
font-size: 14px;
line-height: 1.35;
padding: 7px 9px;
text-decoration: none;
}
.mobile-nav a:hover {
background: var(--paper-2);
color: var(--ink-0);
}
.mobile-nav a[aria-current="page"] {
background: var(--sea-50);
color: var(--sea-700);
font-weight: 600;
}
.tree,
.sidenav {
display: none;
}
.doc {
padding: 0;
}
.doc h1 {
font-size: 36px;
}
.doc pre {
font-size: 12.5px;
line-height: 1.6;
}
.page-nav {
flex-direction: column;
}
}