:root {
  --ground: #fafaf8;
  --ink: #0b0b0a;
  --ink-80: rgb(11 11 10 / 0.8);
  --ink-70: rgb(11 11 10 / 0.7);
  --ink-45: rgb(11 11 10 / 0.45);
  --rule: rgb(11 11 10 / 0.07);
  --hover: rgb(11 11 10 / 0.035);
  --violet: #5b3fd6;
  --orchid: #8b3fc9;
  --hl-violet: rgb(124 92 255 / 0.22);
  --hl-orchid: rgb(190 110 245 / 0.24);
  --neo: #23398e;
  --bad: #b42318;
  --deepwiki: url("data:image/png;base64,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");
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground: #111110;
    --ink: #f2f1ec;
    --ink-80: rgb(242 241 236 / 0.82);
    --ink-70: rgb(242 241 236 / 0.68);
    --ink-45: rgb(242 241 236 / 0.42);
    --rule: rgb(242 241 236 / 0.09);
    --hover: rgb(242 241 236 / 0.045);
    --violet: #a995ff;
    --orchid: #d29bff;
    --hl-violet: rgb(124 92 255 / 0.32);
    --hl-orchid: rgb(190 110 245 / 0.28);
    --neo: #7b8fe6;
    --bad: #ff8a7a;
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font: 400 15px/1.7 Inter, ui-sans-serif, system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.page { display: flex; flex-direction: column; min-height: 100dvh; padding: 0 20px; }
@media (min-width: 640px) { .page { padding: 0 40px; } }
main { width: 100%; max-width: 1040px; margin: 0 auto; flex: 1; padding: 80px 0 64px; }
@media (min-width: 640px) { main { padding-top: 120px; } }
.lede { max-width: 520px; }
.grid { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 96px; }
.grid > :first-child { max-width: 560px; }
@media (min-width: 900px) {
  .grid { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); }
  .aside { position: sticky; top: 48px; align-self: start; }
}

h1 {
  display: flex; align-items: center; gap: 12px; margin: 0;
  font: 400 32px/1.1 "EB Garamond", ui-serif, Georgia, serif;
  letter-spacing: -0.01em;
}
@media (min-width: 640px) { h1 { font-size: 36px; } }
.mark { height: 0.95em; width: auto; flex-shrink: 0; overflow: visible; }
.mark .tier { opacity: 0; transform: translateX(-5px); animation: tier-in 0.6s cubic-bezier(.3,.7,.2,1) forwards; }
.mark .tier:nth-child(2) { animation-delay: 0.05s; }
.mark .tier:nth-child(3) { animation-delay: 0.18s; }
.mark .tier:nth-child(4) { animation-delay: 0.31s; }
@keyframes tier-in { to { opacity: 1; transform: none; } }

.lede { margin: 16px 0 0; color: var(--ink-70); line-height: 1.6; }

section { margin-top: 64px; }
@media (min-width: 640px) { section { margin-top: 80px; } }
h2 { margin: 0; font: 400 11px/1.4 "Geist Mono", ui-monospace, monospace; color: var(--ink-45); }
.prose { margin-top: 24px; color: var(--ink-80); }
.prose p { margin: 0 0 20px; }
.prose p:last-child { margin-bottom: 0; }
code { font: 400 0.88em "Geist Mono", ui-monospace, monospace; }
.t-violet { color: var(--violet); }
.t-orchid { color: var(--orchid); }

.hl {
  color: inherit;
  padding: 0 0.12em; margin: 0 -0.06em;
  border-radius: 0.3em 0.15em 0.35em 0.2em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: 0 70%;
  background-size: 0% 72%;
  transition: background-size 0.7s cubic-bezier(.3,.7,.2,1) var(--hl-delay, 0s);
}
.hl-violet { background-image: linear-gradient(var(--hl-violet), var(--hl-violet)); }
.hl-orchid { background-image: linear-gradient(var(--hl-orchid), var(--hl-orchid)); }
.hl.on { background-size: 100% 72%; }

.links { list-style: none; margin: 20px 0 0; padding: 0; }
.links li + li { border-top: 1px solid var(--rule); }
.links a {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 8px; margin: 0 -8px; border-radius: 8px;
  color: var(--ink); text-decoration: none;
  transition: background-color 0.15s ease;
}
.links a:hover { background: var(--hover); }
.links a:focus-visible { outline: 2px solid var(--violet); outline-offset: 2px; }
.icon { width: 16px; height: 16px; flex-shrink: 0; color: var(--ink-70); fill: currentColor; transition: color 0.15s ease; }
.links a:hover .icon { color: var(--ink); }
.icon-deepwiki {
  background: currentColor;
  -webkit-mask: var(--deepwiki) center / contain no-repeat;
          mask: var(--deepwiki) center / contain no-repeat;
}
.label { flex: 1; }
.meta { font: 400 12px "Geist Mono", ui-monospace, monospace; color: var(--ink-45); }
.arrow { width: 12px; height: 12px; color: var(--ink-45); transition: transform 0.2s cubic-bezier(.3,.7,.2,1), color 0.15s ease; }
.links a:hover .arrow { transform: translate(2px, -2px); color: var(--ink); }

.built { margin: 16px 0 0; color: var(--ink-70); }
.neo {
  display: inline-flex; align-items: center; gap: 0.28em; vertical-align: -0.12em;
  color: var(--ink); text-decoration: none;
  font-weight: 700; letter-spacing: -0.03em;
}
.neo-egg { height: 0.82em; width: auto; fill: var(--neo); transition: transform 0.25s cubic-bezier(.3,.7,.2,1); }
.neo:hover .neo-egg { transform: rotate(-12deg) scale(1.08); }
.footer-neo { display: inline-flex; align-items: center; gap: 0.35em; }
.footer-neo .neo { vertical-align: 0; }
@media (min-width: 900px) { .aside section + section { margin-top: 56px; } }

footer {
  width: 100%; max-width: 1040px; margin: 0 auto;
  display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid var(--rule); padding: 8px 0;
  font-size: 12px; color: var(--ink-45);
}

@media (prefers-reduced-motion: reduce) {
  .mark .tier { animation: none; opacity: 1; transform: none; }
  .aside { position: static; }
  .hl { transition: none; }
}

.masthead { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.masthead h1 a { color: inherit; text-decoration: none; display: flex; align-items: center; gap: 12px; }
.sitenav { display: flex; gap: 4px; font: 400 12px "Geist Mono", ui-monospace, monospace; }
.sitenav a {
  color: var(--ink-45); text-decoration: none;
  padding: 6px 10px; border-radius: 8px;
  transition: color 0.15s ease, background-color 0.15s ease;
}
.sitenav a:hover { color: var(--ink); background: var(--hover); }
.sitenav a[aria-current="page"] { color: var(--ink); }

.doc { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 72px; margin-top: 64px; }
@media (min-width: 900px) {
  .doc { grid-template-columns: 180px minmax(0, 680px); }
  .toc { position: sticky; top: 40px; align-self: start; }
}
.toc { display: none; }
@media (min-width: 900px) { .toc { display: block; } }
.toc ol { list-style: none; margin: 16px 0 0; padding: 0; }
.toc a {
  display: block; padding: 4px 0; font-size: 13px; color: var(--ink-45); text-decoration: none;
  transition: color 0.15s ease;
}
.toc a:hover, .toc a.active { color: var(--ink); }

.doc-body section { margin-top: 0; padding-top: 8px; margin-bottom: 64px; scroll-margin-top: 24px; }
.doc-body h3 { margin: 32px 0 8px; font: 500 15px/1.5 Inter, sans-serif; color: var(--ink); }
.doc-body p, .doc-body li { color: var(--ink-80); }
.doc-body p { margin: 16px 0 0; }
.doc-body ol, .doc-body ul { margin: 16px 0 0; padding-left: 20px; }
.doc-body li + li { margin-top: 6px; }
.doc-body a { color: var(--violet); text-decoration: none; }
.doc-body a:hover { text-decoration: underline; text-underline-offset: 3px; }
.title { margin: 0; font: 400 28px/1.15 "EB Garamond", ui-serif, Georgia, serif; letter-spacing: -0.01em; color: var(--ink); }
.title + p { margin-top: 12px; }

.code {
  position: relative; margin: 16px 0 0;
  border: 1px solid var(--rule); border-radius: 10px; background: var(--hover);
}
.code pre {
  margin: 0; padding: 14px 16px; overflow-x: auto;
  font: 400 12.5px/1.65 "Geist Mono", ui-monospace, monospace; color: var(--ink);
}
.code .copy {
  position: absolute; top: 8px; right: 8px;
  font: 400 11px "Geist Mono", ui-monospace, monospace; color: var(--ink-45);
  background: var(--ground); border: 1px solid var(--rule); border-radius: 6px;
  padding: 3px 8px; cursor: pointer; opacity: 0; transition: opacity 0.15s ease, color 0.15s ease;
}
.code:hover .copy, .code .copy:focus-visible { opacity: 1; }
.code .copy:hover { color: var(--ink); }

.table { width: 100%; margin-top: 16px; border-collapse: collapse; font-size: 14px; }
.table th {
  text-align: left; font: 400 11px "Geist Mono", ui-monospace, monospace; color: var(--ink-45);
  padding: 8px 12px 8px 0; border-bottom: 1px solid var(--rule);
}
.table td { padding: 10px 12px 10px 0; border-bottom: 1px solid var(--rule); color: var(--ink-80); vertical-align: top; }
.table td:first-child { white-space: nowrap; }
.table tr:last-child td { border-bottom: 0; }

.note {
  margin-top: 16px; padding: 12px 14px; border-radius: 10px;
  background: var(--hl-violet); color: var(--ink-80); font-size: 14px;
}
.empty { margin-top: 64px; color: var(--ink-45); font: 400 12px "Geist Mono", ui-monospace, monospace; }

.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 28px; }
.cta-row .meta { font-size: 12px; }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 40px; padding: 0 18px; border-radius: 10px; border: 1px solid var(--rule);
  background: var(--ground); color: var(--ink); cursor: pointer; text-decoration: none;
  font: 500 14px/1 Inter, ui-sans-serif, system-ui, sans-serif;
  transition: background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease, transform 0.15s ease;
}
.btn:hover { background: var(--hover); border-color: var(--ink-45); }
.btn:focus-visible { outline: 2px solid var(--violet); outline-offset: 2px; }
.btn:disabled { opacity: 0.5; cursor: default; }
.btn-primary { background: var(--violet); color: var(--ground); border-color: var(--violet); }
.btn-primary:hover { background: var(--violet); border-color: var(--violet); opacity: 0.92; }
.btn-primary .arrow { color: currentColor; }
.btn-danger { color: var(--bad); }
.btn-sm { height: 32px; padding: 0 12px; font-size: 13px; border-radius: 8px; }
.sitenav a.nav-cta { color: var(--ink); background: var(--hover); }
.sitenav a.nav-cta:hover { background: var(--hl-violet); }

[hidden] { display: none !important; }
