.connect-theme-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}

/* Hosted Mintlify rewrites the logo src to a mintcdn URL with a query string, so
   match on the class rather than the path. Mintlify's default is h-6 (24px). */
#navbar img.nav-logo {
  height: 19.2px !important;
  max-height: 19.2px !important;
  width: auto !important;
}

/* Section name above page titles (e.g. "Get Started") — sidebar already shows it. */
#header .eyebrow {
  display: none;
}

/* The brand accent, for anything in this file that needs to paint with it.
   Resolves per mode the way Mintlify's own chrome does: `colors.primary` in
   light, `colors.light` in dark, since the light-mode blue is too dark to carry
   contrast against a near-black ground.

   Both are published as space-separated RGB channels rather than colors, so they
   only work wrapped in `rgb()` — `var(--primary)` on its own yields `24 64 237`,
   which is not a color, and the declaration is dropped. Hex literals here are
   the fallbacks for that indirection, matching `docs.json`. */
:root {
  --docs-accent: rgb(var(--primary, 24 64 237));
}

:root.dark {
  --docs-accent: rgb(var(--primary-light, 95 124 255));
}

/* Motion tokens, mirrored verbatim from `@exa/design` (index.css). Mintlify
   builds the docs site outside the pnpm workspace, so the design system's CSS
   cannot be imported here; the tokens are reproduced instead, and every
   transition and animation in this file runs on them. */
:root {
  --motion-duration-fast: 100ms;
  --motion-duration: 150ms;
  --motion-duration-slow: 220ms;
  --motion-duration-drawer: 300ms;
  --motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --motion-easing-out: cubic-bezier(0.23, 1, 0.32, 1);
  --motion-easing-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --motion-easing-drawer: cubic-bezier(0.32, 0.72, 0, 1);
}

/* Durations collapse to nothing rather than animations being disabled
   piecemeal, so scripts can read one token and know there is nothing to run. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --motion-duration-fast: 0ms;
    --motion-duration: 0ms;
    --motion-duration-slow: 0ms;
    --motion-duration-drawer: 0ms;
  }
}

/* Frontmatter description under the page title. Exa gray 500/400 — a rung
   lighter than `neutral-text-secondary`, to keep the line clearly subordinate
   to a title set at full weight. The home page hero sets its own. */
#header .prose {
  margin-top: 12px;
}

#header p {
  color: var(--color-exa-gray-700);
}

.dark #header p {
  color: var(--color-exa-gray-800);
}

/* Page TOC. This follows OpenAI's compact scrollspy: no heading, a quiet
   full-height rail, and one measured indicator that moves to the active,
   possibly wrapped row. `toc-indicator.js` injects and positions the indicator;
   the list remains fully usable before the script runs. */
#table-of-contents {
  --docs-toc-track: rgba(9, 9, 11, 0.08);
  --docs-toc-indicator: var(--color-exa-gray-1000);
  --docs-toc-text: var(--color-exa-gray-700);
  --docs-toc-text-hover: var(--color-exa-gray-900);
  --docs-toc-text-active: var(--color-exa-gray-1000);
  color: var(--docs-toc-text);
  overflow-anchor: none;
}

:root.dark #table-of-contents {
  --docs-toc-track: rgba(250, 250, 250, 0.12);
  --docs-toc-indicator: var(--color-exa-gray-1000);
  --docs-toc-text: var(--color-exa-gray-800);
  --docs-toc-text-hover: var(--color-exa-gray-900);
  --docs-toc-text-active: var(--color-exa-gray-1000);
}

#table-of-contents nav > h2 {
  display: none;
}

#table-of-contents nav > div {
  position: relative;
}

#table-of-contents nav > div::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  background: var(--docs-toc-track);
  pointer-events: none;
}

#table-of-contents-content {
  position: relative;
  margin: 0 0 0 12px;
  padding: 0;
  list-style: none;
}

#table-of-contents-content .toc-item + .toc-item {
  margin-top: 12px;
}

#table-of-contents-content .toc-item > ul {
  margin: 12px 0 0;
  padding: 0;
  list-style: none;
}

#table-of-contents .toc-item {
  margin-left: 0;
  line-height: 20px;
}

#table-of-contents .toc-item[data-depth="1"] {
  border-left: 0 !important;
  padding-left: 0 !important;
}

#table-of-contents .toc-item > a {
  display: block;
  border-left: 0 !important;
  padding: 0 0 0 8px !important;
  color: var(--docs-toc-text) !important;
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  text-shadow: none !important;
  transition: color var(--motion-duration) var(--motion-easing-standard);
}

#table-of-contents .toc-item[data-depth="1"] > a {
  padding-left: 20px !important;
}

#table-of-contents .toc-item > a:hover {
  color: var(--docs-toc-text-hover) !important;
}

#table-of-contents .toc-item[data-active-deepest] > a,
#table-of-contents .toc-item:has(> a[aria-current]) > a {
  color: var(--docs-toc-text-active) !important;
  font-weight: 400;
}

#table-of-contents .toc-item > a:focus-visible {
  outline: none;
  border-radius: 4px;
  box-shadow: 0 0 0 3px var(--docs-tab-ring);
}

.docs-toc-indicator {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 2px;
  height: 0;
  background: var(--docs-toc-indicator);
  transform: translateY(0);
  transform-origin: left top;
  transition:
    transform var(--motion-duration-slow) var(--motion-easing-standard),
    height var(--motion-duration-slow) var(--motion-easing-standard);
  will-change: transform;
  pointer-events: none;
}

.docs-toc-indicator[data-initial] {
  transition: none;
}

header a[href*="dashboard.exa.ai"] .bg-primary-dark {
  background: var(--color-black) !important;
  background-color: var(--color-black) !important;
}

/* ABCDiatype Bold is also declared in docs.json so Mintlify preloads it. */
@font-face {
  font-family: "ABCDiatype";
  src: url("https://exa.ai/fonts/ABCDiatype-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "ABCDiatype";
  src: url("https://exa.ai/fonts/ABCDiatype-Medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "ABCDiatype";
  src: url("https://exa.ai/fonts/ABCDiatype-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

main h1,
article h1 {
  font-family: "ABCDiatype", sans-serif;
  font-weight: 700 !important;
}

main h2,
main h3,
main h4,
article h2,
article h3,
article h4 {
  font-family: "ABCDiatype", sans-serif;
  font-weight: 500 !important;
}

main p,
article p {
  font-size: calc(1em - 1pt);
}

:root {
  --docs-radius: 6px;
}

@media (width >= 1024px) {
  header > .relative.max-w-8xl {
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  html[data-page-mode="none"] #body-content {
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  html[data-page-mode="none"] #body-content > .w-full,
  html[data-page-mode="none"] #content-container {
    flex: 1 1 auto;
    min-width: 0;
  }

  html[data-page-mode="none"] #content-container {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  html[data-page-mode="none"] #content-area {
    max-width: 60rem !important;
  }
}

.rounded,
.rounded-md,
.rounded-lg,
.rounded-xl,
.rounded-2xl,
.not-prose.rounded-xl,
input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
textarea,
select {
  border-radius: var(--docs-radius) !important;
}

.rounded-l,
.rounded-l-md,
.rounded-l-lg,
.rounded-l-xl,
.rounded-l-2xl {
  border-top-left-radius: var(--docs-radius) !important;
  border-bottom-left-radius: var(--docs-radius) !important;
}

.rounded-r,
.rounded-r-md,
.rounded-r-lg,
.rounded-r-xl,
.rounded-r-2xl {
  border-top-right-radius: var(--docs-radius) !important;
  border-bottom-right-radius: var(--docs-radius) !important;
}

.rounded-t,
.rounded-t-md,
.rounded-t-lg,
.rounded-t-xl,
.rounded-t-2xl {
  border-top-left-radius: var(--docs-radius) !important;
  border-top-right-radius: var(--docs-radius) !important;
}

.rounded-b,
.rounded-b-md,
.rounded-b-lg,
.rounded-b-xl,
.rounded-b-2xl {
  border-bottom-right-radius: var(--docs-radius) !important;
  border-bottom-left-radius: var(--docs-radius) !important;
}

[role="dialog"].rounded-search {
  border-radius: calc(var(--docs-radius) + 4px) !important;
}

.accordion:not(:last-child),
.accordion:not(:last-child) > summary {
  border-bottom-right-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}

.accordion:not(:first-child),
.accordion:not(:first-child) > summary {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

.accordion > summary {
  align-items: center !important;
}

.accordion > summary > .mr-0\.5,
.accordion > summary > .h-4.w-4 {
  margin-top: 0;
}

.accordion > summary .leading-tight > p:first-child {
  font-family: "ABCDiatype", sans-serif;
  font-size: 1.0625rem !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  margin-bottom: 0 !important;
}

.accordion > summary .leading-tight > p:first-child:not(:only-child) {
  margin-bottom: 0.5rem !important;
}

.accordion > summary .leading-tight > p:nth-child(2) {
  line-height: 1.45 !important;
}

/* Accordion / Expandable motion. Both are `<details>`: open flips the `open`
   attribute and `aria-expanded` on the summary, and Mintlify rotates the
   caret with a class, so the transition here only retimes it. */
.accordion > summary,
.expandable > summary {
  transition: background-color var(--motion-duration) var(--motion-easing-standard);
}

.accordion > summary:active,
.expandable > summary:active {
  background-color: var(--color-exa-gray-300);
}

.dark .accordion > summary:active,
.dark .expandable > summary:active {
  background-color: var(--color-exa-gray-500);
}

.accordion summary [data-component-part="accordion-caret-right"] svg,
.expandable > summary > svg {
  transition: transform var(--motion-duration-slow) var(--motion-easing-out);
}

/* Height animation where the browser can interpolate to `auto`; elsewhere the
   reveal below still runs and the open stays instant. */
@supports (interpolate-size: allow-keywords) {
  .accordion,
  .expandable {
    interpolate-size: allow-keywords;
  }

  .accordion::details-content,
  .expandable::details-content {
    height: 0;
    overflow: clip;
    transition:
      height var(--motion-duration-slow) var(--motion-easing-out),
      content-visibility var(--motion-duration-slow) allow-discrete;
  }

  .accordion[open]::details-content,
  .expandable[open]::details-content {
    height: auto;
  }
}

.accordion[open] > [data-component-part="accordion-content"],
.expandable[open] > [data-component-part="expandable-content"] {
  animation: docs-reveal var(--motion-duration-slow) var(--motion-easing-out) both;
}

@keyframes docs-reveal {
  from {
    opacity: 0;
    transform: translateY(-2px);
  }
}

#navigation-items button[aria-expanded="true"].bg-primary\/10 {
  background: transparent !important;
  color: var(--color-exa-gray-800) !important;
  text-shadow: none !important;
}

.dark #navigation-items button[aria-expanded="true"].dark\:bg-primary-light\/10 {
  background: transparent !important;
  color: var(--color-exa-gray-800) !important;
  text-shadow: none !important;
}

#navigation-items a[aria-current="page"] {
  background: var(--color-exa-gray-200) !important;
  color: var(--color-black) !important;
  font-weight: 600 !important;
  text-shadow: none !important;
}

.dark #navigation-items a[aria-current="page"] {
  background: rgba(255, 255, 255, 0.08) !important;
  color: var(--color-exa-gray-1000) !important;
  font-weight: 600 !important;
  text-shadow: none !important;
}

/* Sidebar group motion. A collapsed group's `<ul>` mounts on expand and is
   removed on collapse, so only the entry animates; the exit stays instant.
   `data-expanding` is set by `sidebar-groups.js` on the expand click so the
   reveal cannot replay when Mintlify remounts the nav on a route change.
   The chevron already flips a rotate class — this only retimes it. */
#navigation-items button[aria-expanded] svg {
  transition-duration: var(--motion-duration-slow);
  transition-timing-function: var(--motion-easing-out);
}

#navigation-items li[data-expanding] > button[aria-expanded="true"] + ul {
  animation: docs-reveal var(--motion-duration-slow) var(--motion-easing-out) both;
}

@supports (interpolate-size: allow-keywords) {
  #navigation-items li[data-expanding] > button[aria-expanded="true"] + ul {
    interpolate-size: allow-keywords;
    height: auto;
    overflow: clip;
    transition: height var(--motion-duration-slow) var(--motion-easing-out);

    @starting-style {
      height: 0;
    }
  }
}

#navigation-items a,
#navigation-items button {
  transition:
    background-color var(--motion-duration) var(--motion-easing-standard),
    color var(--motion-duration) var(--motion-easing-standard);
}

#navigation-items {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.18) transparent;
}

#navigation-items::-webkit-scrollbar {
  width: 5px;
  background: transparent;
}

#navigation-items::-webkit-scrollbar-track {
  background: transparent;
}

#navigation-items::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background-color: rgba(0, 0, 0, 0.18);
}

#navigation-items::-webkit-scrollbar-thumb:hover {
  background-color: rgba(0, 0, 0, 0.28);
}

.dark #navigation-items {
  scrollbar-color: rgba(255, 255, 255, 0.22) transparent;
}

.dark #navigation-items::-webkit-scrollbar-thumb {
  background-color: rgba(255, 255, 255, 0.22);
}

.dark #navigation-items::-webkit-scrollbar-thumb:hover {
  background-color: rgba(255, 255, 255, 0.32);
}

.connect-theme-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.connect-theme-icon .connect-theme-icon-dark {
  display: none;
}

.dark .connect-theme-icon .connect-theme-icon-light,
:root.dark .connect-theme-icon .connect-theme-icon-light,
html.dark .connect-theme-icon .connect-theme-icon-light {
  display: none;
}

.dark .connect-theme-icon .connect-theme-icon-dark,
:root.dark .connect-theme-icon .connect-theme-icon-dark,
html.dark .connect-theme-icon .connect-theme-icon-dark {
  display: block;
}

.connect-logo-wide {
  display: inline-flex;
  align-items: center;
  height: 1.25rem;
  flex-shrink: 0;
}

.connect-logo-wide img {
  height: 100%;
  width: auto;
  object-fit: contain;
}

.connect-tile-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 4.5rem;
  padding: 0.5rem;
}

.connect-tile-logo img {
  max-height: 2.5rem;
  max-width: 80%;
  width: auto;
  object-fit: contain;
}

.connect-tile-logo--wordmark img {
  width: 76%;
  max-width: 76%;
  max-height: 4.4rem;
}

.connect-request-tiles .columns {
  row-gap: 1rem;
}

.dark .connect-provider-cards img[src*="particle.svg"],
:root.dark .connect-provider-cards img[src*="particle.svg"],
html.dark .connect-provider-cards img[src*="particle.svg"],
.dark .connect-provider-cards img[src*="financialdatasets.svg"],
:root.dark .connect-provider-cards img[src*="financialdatasets.svg"],
html.dark .connect-provider-cards img[src*="financialdatasets.svg"],
.dark .connect-provider-cards img[src*="polymarket.svg"],
:root.dark .connect-provider-cards img[src*="polymarket.svg"],
html.dark .connect-provider-cards img[src*="polymarket.svg"] {
  filter: brightness(0) invert(1);
}

.llm-ctx {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.compact-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.75rem;
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}

.compact-cards a {
  display: block;
  border-radius: 0.375rem;
  border: 1px solid var(--border-color, var(--color-exa-gray-300));
  padding: 0.625rem 0.75rem;
  text-decoration: none !important;
  transition: border-color var(--motion-duration) var(--motion-easing-standard);
}

.compact-cards a:hover {
  border-color: var(--docs-accent);
}

.compact-cards .title {
  display: block;
  font-weight: 600;
  font-size: 0.875rem;
  line-height: 1.25rem;
}

.compact-cards .desc {
  display: block;
  font-size: 0.75rem;
  line-height: 1rem;
  color: var(--color-exa-gray-700);
  margin-top: 0.125rem;
}

.callout {
  border-color: rgba(0, 0, 0, 0.08) !important;
  background: var(--color-exa-gray-100) !important;
}

.callout [data-component-part="callout-content"],
.callout [data-component-part="callout-content"] *,
.callout [data-component-part="callout-icon"],
.callout [data-component-part="callout-icon"] * {
  color: var(--color-black) !important;
}

.callout [data-component-part="callout-icon"] svg {
  fill: currentColor;
}

.dark .callout {
  border-color: rgba(255, 255, 255, 0.08) !important;
  background: rgba(255, 255, 255, 0.06) !important;
}

.dark .callout [data-component-part="callout-content"],
.dark .callout [data-component-part="callout-content"] *,
.dark .callout [data-component-part="callout-icon"],
.dark .callout [data-component-part="callout-icon"] * {
  color: var(--color-exa-gray-1000) !important;
}

.agent-output-sheet {
  --agent-output-panel-height: 24rem;
  --agent-output-background-primary: var(--color-white);
  --agent-output-background-secondary: var(--color-exa-gray-200);
  --agent-output-text-primary: var(--color-exa-gray-1000);
  --agent-output-text-secondary: var(--color-exa-gray-800);
  --agent-output-border-primary: rgba(9, 9, 11, 0.14);
  --agent-output-border-soft: rgba(9, 9, 11, 0.08);
  position: relative;
  margin: 1rem 0 2rem;
  border: 1px solid var(--agent-output-border-primary);
  border-radius: 12px;
  background: var(--agent-output-background-primary);
  overflow: hidden;
}

.agent-output-tab-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.agent-output-panels {
  height: var(--agent-output-panel-height);
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

.agent-output-panel {
  display: none;
  min-height: 100%;
}

#agent-output-tab-findall:checked ~ .agent-output-panels .agent-output-panel-findall,
#agent-output-tab-kyb:checked ~ .agent-output-panels .agent-output-panel-kyb,
#agent-output-tab-jobs:checked ~ .agent-output-panels .agent-output-panel-jobs,
#agent-output-tab-rows:checked ~ .agent-output-panels .agent-output-panel-rows,
#agent-output-tab-contacts:checked ~ .agent-output-panels .agent-output-panel-contacts,
#agent-output-tab-exclusions:checked ~ .agent-output-panels .agent-output-panel-exclusions,
#agent-output-tab-followup:checked ~ .agent-output-panels .agent-output-panel-followup {
  display: block;
}

.agent-output-toolbar {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--agent-output-border-primary);
  background: var(--agent-output-background-primary);
}

.agent-output-toolbar > div:first-child {
  min-width: 0;
}

.agent-output-actions {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 0.35rem;
}

.agent-output-eyebrow {
  margin-bottom: 0.12rem;
  color: var(--agent-output-text-secondary);
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.125rem;
}

.agent-output-title {
  color: var(--agent-output-text-primary);
  font-size: 0.8125rem;
  font-weight: 510;
  line-height: 1.125rem;
  letter-spacing: 0;
}

.agent-output-title code {
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font-size: inherit;
}

.agent-output-cta {
  display: inline-flex;
  align-items: center;
  min-height: 1.7rem;
  padding: 0.28rem 0.55rem;
  border: 1px solid var(--color-exa-gray-300);
  border-radius: 5px;
  background: var(--color-white) !important;
  background-image: none !important;
  box-shadow: none !important;
  color: var(--color-exa-blue-700) !important;
  font-size: 0.7rem;
  font-weight: 650;
  text-decoration: none !important;
  white-space: nowrap;
}

.agent-output-cta:hover {
  background: var(--color-exa-gray-200) !important;
}

.agent-output-cta::before,
.agent-output-cta::after {
  display: none !important;
  content: none !important;
}

.agent-output-scroll {
  min-height: calc(var(--agent-output-panel-height) - 3.05rem);
  overflow-x: auto;
  background: var(--agent-output-background-primary);
}

.agent-output-grid {
  width: 100%;
  min-width: 860px;
  margin: 0 !important;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--agent-output-background-primary);
  table-layout: fixed;
  color: var(--agent-output-text-primary);
  font-size: 0.8125rem;
  line-height: 1.125rem;
}

.agent-output-grid th,
.agent-output-grid td {
  padding: 0.5rem 0.75rem;
  border-right: 1px solid var(--agent-output-border-soft);
  border-bottom: 1px solid var(--agent-output-border-soft);
  color: var(--agent-output-text-primary);
  line-height: 1.125rem;
  text-align: left;
  vertical-align: top;
}

.agent-output-grid th:last-child,
.agent-output-grid td:last-child {
  border-right: 0;
}

.agent-output-grid .agent-output-columns,
.agent-output-grid .agent-output-corner,
.agent-output-grid .agent-output-rownum {
  display: none;
}

.agent-output-grid thead tr:nth-child(2) th {
  background: var(--agent-output-background-secondary);
  color: var(--agent-output-text-secondary);
  font-size: 0.75rem;
  font-weight: 510;
  line-height: 1.125rem;
}

.agent-output-grid tbody tr:last-child th,
.agent-output-grid tbody tr:last-child td {
  border-bottom: 0;
}

.agent-output-grid th:nth-child(2),
.agent-output-grid td:nth-child(2) {
  width: 5.8rem;
}

.agent-output-grid th:nth-child(3),
.agent-output-grid td:nth-child(3) {
  width: 7rem;
}

.agent-output-grid th:nth-child(4),
.agent-output-grid td:nth-child(4) {
  width: 15rem;
}

.agent-output-grid th:nth-child(5),
.agent-output-grid td:nth-child(5) {
  width: 11.5rem;
}

.agent-output-grid th:nth-child(6),
.agent-output-grid td:nth-child(6) {
  width: 5.8rem;
}

.agent-output-grid th:nth-child(7),
.agent-output-grid td:nth-child(7) {
  width: 6.2rem;
}

.agent-output-chip {
  display: inline-block;
  margin: 0.06rem 0.2rem 0.06rem 0;
  padding: 0.08rem 0.32rem;
  border: 1px solid var(--color-exa-gray-300);
  border-radius: 999px;
  background: var(--color-exa-gray-100);
  color: var(--color-exa-gray-900);
  font-size: 0.68rem;
  font-weight: 600;
  white-space: nowrap;
}

.agent-output-link {
  color: var(--color-exa-blue-700);
  font-weight: 650;
}

.agent-output-source {
  color: var(--color-exa-gray-800);
  font-weight: 600;
}

.agent-output-more {
  color: var(--color-exa-gray-700) !important;
  font-size: 0.72rem;
  font-weight: 650;
  text-align: left !important;
  white-space: nowrap;
}

.agent-output-grid .agent-output-more-row .agent-output-rownum {
  font-size: 0.66rem;
}

.agent-output-note-row th,
.agent-output-note-row td {
  background: var(--agent-output-background-primary);
}

.agent-output-note {
  color: var(--color-exa-gray-700) !important;
  font-size: 0.72rem;
  font-weight: 650;
}

.agent-output-placeholder-row th,
.agent-output-placeholder-row td {
  height: 2rem;
  background: var(--agent-output-background-primary);
}

.agent-output-blur {
  display: block;
  height: 0.7rem;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--color-exa-gray-200) 0%, var(--color-exa-gray-300) 58%, var(--color-exa-gray-100) 100%);
  filter: blur(0.35px);
  opacity: 0.8;
}

.agent-output-blur-xs {
  width: 2rem;
}

.agent-output-blur-sm {
  width: 3.4rem;
}

.agent-output-blur-md {
  width: 5.2rem;
}

.agent-output-blur-lg {
  width: 8rem;
}

.agent-output-blur-xl {
  width: min(11rem, 82%);
}

.agent-output-blur-pill {
  height: 1.02rem;
  width: 5.2rem;
  border: 1px solid var(--color-exa-gray-300);
  background: var(--color-exa-gray-100);
}

.agent-output-blur-wide {
  width: 8rem;
}

.agent-output-tabs {
  display: flex;
  gap: 0.16rem;
  margin-top: 0 !important;
  padding: 0.32rem 0.42rem 0.16rem;
  border-top: 1px solid var(--agent-output-border-primary);
  background: var(--agent-output-background-primary);
  overflow-x: auto;
}

.agent-output-tab {
  display: inline-flex;
  align-items: center;
  min-height: 1.45rem;
  padding: 0.22rem 0.5rem;
  border: 1px solid transparent;
  border-radius: 5px;
  color: var(--color-exa-gray-800);
  font-size: 0.68rem;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}

.agent-output-tab:hover {
  background: var(--color-exa-gray-200);
}

#agent-output-tab-findall:checked ~ .agent-output-tabs .agent-output-tab-findall,
#agent-output-tab-kyb:checked ~ .agent-output-tabs .agent-output-tab-kyb,
#agent-output-tab-jobs:checked ~ .agent-output-tabs .agent-output-tab-jobs,
#agent-output-tab-rows:checked ~ .agent-output-tabs .agent-output-tab-rows,
#agent-output-tab-contacts:checked ~ .agent-output-tabs .agent-output-tab-contacts,
#agent-output-tab-exclusions:checked ~ .agent-output-tabs .agent-output-tab-exclusions,
#agent-output-tab-followup:checked ~ .agent-output-tabs .agent-output-tab-followup {
  border-color: var(--color-exa-gray-300);
  background: var(--color-white);
  color: var(--color-exa-blue-700);
}

.dark .agent-output-sheet {
  --agent-output-background-primary: var(--color-black);
  --agent-output-background-secondary: var(--color-exa-gray-200);
  --agent-output-text-primary: var(--color-exa-gray-1000);
  --agent-output-text-secondary: var(--color-exa-gray-900);
  --agent-output-border-primary: rgba(250, 250, 250, 0.16);
  --agent-output-border-soft: rgba(250, 250, 250, 0.1);
}

.dark .agent-output-grid th,
.dark .agent-output-grid td {
  border-color: var(--agent-output-border-soft);
}

.dark .agent-output-scroll,
.dark .agent-output-grid,
.dark .agent-output-grid thead tr:nth-child(2) th {
  background: var(--agent-output-background-primary);
}

.dark .agent-output-title,
.dark .agent-output-grid td {
  color: var(--agent-output-text-primary) !important;
}

.dark .agent-output-grid thead tr:nth-child(2) th {
  color: var(--agent-output-text-secondary) !important;
}

.dark .agent-output-chip,
.dark .agent-output-blur-pill {
  border-color: var(--agent-output-border-primary);
  background: var(--agent-output-background-secondary);
  color: var(--agent-output-text-primary);
}

.dark .agent-output-placeholder-row th,
.dark .agent-output-placeholder-row td,
.dark .agent-output-note-row th,
.dark .agent-output-note-row td {
  background: var(--agent-output-background-primary);
}

.dark .agent-output-note,
.dark .agent-output-source,
.dark .agent-output-tab {
  color: var(--agent-output-text-secondary);
}

.dark .agent-output-blur {
  background: linear-gradient(90deg, var(--color-neutral-subtle-hover) 0%, var(--color-neutral-subtle-active) 58%, var(--color-neutral-subtle) 100%);
}

.dark .agent-output-link {
  color: var(--color-exa-blue-900);
}

.dark .agent-output-tab:hover {
  background: var(--color-neutral-subtle-hover);
}

.dark #agent-output-tab-findall:checked ~ .agent-output-tabs .agent-output-tab-findall,
.dark #agent-output-tab-kyb:checked ~ .agent-output-tabs .agent-output-tab-kyb,
.dark #agent-output-tab-jobs:checked ~ .agent-output-tabs .agent-output-tab-jobs,
.dark #agent-output-tab-rows:checked ~ .agent-output-tabs .agent-output-tab-rows,
.dark #agent-output-tab-contacts:checked ~ .agent-output-tabs .agent-output-tab-contacts,
.dark #agent-output-tab-exclusions:checked ~ .agent-output-tabs .agent-output-tab-exclusions,
.dark #agent-output-tab-followup:checked ~ .agent-output-tabs .agent-output-tab-followup {
  border-color: var(--color-neutral-border);
  background: var(--color-background-secondary);
  color: var(--color-exa-blue-1000);
}

.dark .agent-output-cta {
  border-color: var(--color-neutral-border);
  background: var(--color-background-secondary) !important;
  color: var(--color-exa-blue-1000) !important;
}

.dark .agent-output-cta:hover {
  background: var(--color-neutral-subtle-hover) !important;
}

@media (width < 900px) {
  .agent-output-sheet {
    --agent-output-panel-height: 26rem;
  }

  .agent-output-scroll {
    min-height: calc(var(--agent-output-panel-height) - 5.1rem);
  }

  .agent-output-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .agent-output-grid {
    min-width: 860px;
  }
}

.eb-toggle {
  display: none;
}

.eb-label {
  display: block;
  cursor: pointer;
  padding: 0.625rem 0;
  padding-left: 1.75rem;
  position: relative;
  font-size: 1rem;
  line-height: 1.6;
  user-select: none;
}

.eb-label::before {
  content: '>';
  position: absolute;
  left: 0.125rem;
  top: 0.375rem;
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-exa-gray-500);
  transition:
    transform var(--motion-duration) var(--motion-easing-standard),
    color var(--motion-duration) var(--motion-easing-standard);
}

.eb-title {
  display: block;
  font-family: "ABCDiatype", sans-serif;
  font-weight: 700;
  font-size: 1rem;
  color: var(--color-exa-gray-1000);
}

.dark .eb-title {
  color: var(--color-exa-gray-1000);
}

.eb-label:hover::before {
  color: var(--docs-accent);
}

.eb-desc {
  display: block;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--color-exa-gray-1000);
  margin-top: 0.125rem;
  font-weight: 400;
}

.eb-desc + .eb-desc {
  margin-top: 0.5rem;
}

.dark .eb-desc {
  color: var(--color-exa-gray-900);
}

.eb-tags {
  display: block;
  font-size: 0.8125rem;
  color: var(--color-exa-gray-500);
  margin-top: 0.25rem;
  letter-spacing: 0.01em;
}

.eb-label:hover .eb-tags {
  color: var(--color-exa-gray-700);
}

.eb-content {
  max-height: 0;
  overflow: hidden;
  padding-left: 1.75rem;
  transition: max-height var(--motion-duration-slow) var(--motion-easing-standard);
}

.eb-toggle:checked ~ .eb-content {
  max-height: 800px;
}

.eb-toggle:checked + .eb-label::before {
  transform: rotate(90deg);
  color: var(--docs-accent);
}

.eb-content > div {
  margin-top: 0 !important;
  margin-bottom: 0.25rem !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.eb-content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

.eb-content th,
.eb-content td {
  text-align: left;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--border-color, var(--color-exa-gray-300));
}

.eb-content th {
  font-weight: 600;
  color: var(--color-exa-gray-700);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.eb-content td code {
  font-size: 0.8125rem;
  background: var(--color-exa-gray-200);
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
}

.eb-content > p,
.eb-content > span {
  display: block !important;
  font-size: 0.875rem !important;
  text-transform: none !important;
  letter-spacing: 0.01em;
  color: var(--color-exa-gray-900) !important;
  font-weight: 600 !important;
  margin-top: 1rem !important;
  margin-bottom: -0.25rem !important;
  font-family: inherit !important;
}

.eb-content > span strong {
  font-size: inherit !important;
  color: inherit !important;
  font-weight: inherit !important;
}

.steps-list {
  list-style: none;
  padding-left: 0;
  margin: 2rem 0;
  margin-left: 0.875rem;
}

.steps-list li {
  position: relative;
  padding-left: 2rem;
  padding-bottom: 1.25rem;
}

.steps-list li:last-child {
  padding-bottom: 0;
}

.step-number {
  position: absolute;
  left: 0;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background-color: var(--color-exa-gray-200);
  color: var(--color-exa-gray-700);
  font-size: 0.875rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-left: -0.8125rem;
  flex-shrink: 0;
  z-index: 1;
}

.step-line {
  position: absolute;
  left: 0;
  width: 1px;
  height: calc(100% - 2rem);
  top: 2rem;
  background-color: var(--color-exa-gray-300);
}

.steps-list li:last-child .step-line {
  background: linear-gradient(to bottom, var(--color-exa-gray-300), transparent);
}

.step-title {
  font-weight: 600;
  margin-bottom: 0.5rem;
  font-size: 1.125rem;
}

.step-content {
  margin-top: 0.5rem;
  color: var(--color-exa-gray-700);
  font-size: 1rem;
}

.dark .step-number {
  background-color: var(--color-exa-gray-500);
  color: var(--color-exa-gray-800);
}

.dark .step-line {
  background-color: var(--color-exa-gray-500);
}

.dark .steps-list li:last-child .step-line {
  background: linear-gradient(to bottom, var(--color-exa-gray-500), transparent);
}

.dark .step-content {
  color: var(--color-exa-gray-900);
}

.api-button {
  align-items: center;
  background: var(--color-brand-solid);
  color: var(--color-brand-on-solid);
  display: flex;
  text-transform: uppercase;
  font-size: 16px;
  font-style: normal;
  font-weight: 400;
  gap: 10px;
  height: 40px;
  justify-content: center;
  line-height: 27px;
  padding: 14px 32px;
  text-decoration: none;
  transition: var(--motion-duration-fast) var(--motion-easing-standard);
  border: 2px solid var(--color-brand-solid);
  word-spacing: 8px;
  letter-spacing: 1px;
}

.api-button:hover {
  background-color: var(--color-brand-solid-hover);
  border-color: var(--color-brand-solid-hover);
  color: var(--color-brand-on-solid);
}

.endpoint-link {
  font-size: 1.15em !important;
  font-weight: 500 !important;
  letter-spacing: -0.03em !important;
}

/* ---------------------------------------------------------------------------
   Tabs — mirrors the `surface` variant of `@exa/design/ui/tabs`: a track at the
   secondary background rung holding a raised pill on the selected tab. Mintlify
   builds the docs site outside the pnpm workspace, so the React component
   cannot be imported here; its tokens are reproduced instead, and the landing
   page's language switcher shares them.

   Mintlify ships an underline row instead, with every label semibold and the
   selected one turned blue, so the idle tabs read as the emphasized ones.

   The pill is a single element slid between tabs by `content-tabs.js`, the way
   `useSlidingIndicator` moves it in the design system. Mintlify ships no such
   element, so the script injects it; until then the selected tab paints its own
   background through the `:not([data-sliding])` fallback below.
   --------------------------------------------------------------------------- */
:root {
  /* neutral-background-secondary / -primary, the two neutral text rungs, and
     `shadow-detail`, plus neutral-border-secondary at 30% for the focus ring. */
  --docs-tab-track: var(--color-exa-gray-200);
  --docs-tab-pill: var(--color-white);
  --docs-tab-pill-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
  --docs-tab-text: var(--color-exa-gray-800);
  --docs-tab-text-selected: var(--color-exa-gray-1000);
  --docs-tab-ring: rgba(9, 9, 11, 0.07);
  --docs-tab-menu-bg: var(--color-white);
  --docs-tab-control-border: rgba(9, 9, 11, 0.14);
  --docs-tab-control-border-hover: rgba(9, 9, 11, 0.24);
  --docs-tab-menu-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.08);
  /* Underline variant only: neutral-border-primary for the rule, and the brand
     accent beneath the selected tab. */
  --docs-tab-line: rgba(9, 9, 11, 0.14);
  --docs-tab-accent: var(--docs-accent);
  /* Code surfaces: neutral-background-primary, and the ghost button's hover
     fill (neutral-foreground-primary at 5%). */
  --docs-code-surface: var(--color-white);
  --docs-code-header: rgba(9, 9, 11, 0.024);
  --docs-code-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
  --docs-code-action-hover: rgba(9, 9, 11, 0.05);
  --docs-code-tab-hover: rgba(9, 9, 11, 0.05);
}

:root.dark {
  /* Dark keeps the selected contrast directional — the pill sits a step lighter
     than its track — and drops the shadow, which reads as grime on dark ground. */
  --docs-tab-track: var(--color-exa-gray-200);
  --docs-tab-pill: var(--color-exa-gray-300);
  --docs-tab-pill-shadow: none;
  --docs-tab-text: var(--color-exa-gray-900);
  --docs-tab-text-selected: var(--color-exa-gray-1000);
  --docs-tab-ring: rgba(250, 250, 250, 0.09);
  --docs-tab-menu-bg: var(--color-black);
  --docs-tab-control-border: rgba(250, 250, 250, 0.16);
  --docs-tab-control-border-hover: rgba(250, 250, 250, 0.24);
  /* Dark drops the drop shadows and keeps only the hairline ring. */
  --docs-tab-menu-shadow: 0 0 0 1px rgba(250, 250, 250, 0.16);
  --docs-tab-line: rgba(250, 250, 250, 0.16);
  /* Mintlify's dark code ground, which the panel inside the frame already uses. */
  --docs-code-surface: var(--color-exa-gray-100);
  --docs-code-header: rgba(250, 250, 250, 0.03);
  --docs-code-shadow: none;
  --docs-code-action-hover: rgba(250, 250, 250, 0.06);
  --docs-code-tab-hover: rgba(250, 250, 250, 0.06);
}

/* Mintlify hangs the group's spacing off the tab list (`mb-6`) and leaves
   nothing above it, which an underline row gets away with and a filled track
   does not. The group owns its block rhythm instead — the same one a standalone
   code block sits on — with the panel's trailing margin folded into it. */
.tab-container {
  margin-top: 20px;
  margin-bottom: 32px;
}

.tab-container [data-component-part="tab-content"] > :last-child {
  margin-bottom: 0 !important;
}

/* The track hugs the tabs rather than spanning the column, so `min-w-full` and
   the bottom rule both go. A long row scrolls sideways instead of wrapping —
   wrapping split the pill across two lines and made an eight-tab group read as
   two tracks. `.docs-tabs` switches to the listbox when this row cannot fit.
   Other tab rows still scroll sideways; selection scrolls the active tab into
   view from `content-tabs.js`. Overflow clips the focus ring at the ends. */
.tab-container > [data-component-part="tabs-list"] {
  position: relative;
  isolation: isolate;
  width: fit-content;
  min-width: 0 !important;
  max-width: 100%;
  flex-wrap: nowrap;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scrollbar-width: none;
  -ms-overflow-style: none;
  align-items: center;
  align-content: center;
  gap: 4px !important;
  min-height: 36px;
  padding: 4px !important;
  margin-bottom: 12px !important;
  border-bottom: 0 !important;
  border-radius: 8px;
  background: var(--docs-tab-track);
  user-select: none;
}

.docs-tabs .tab-container > [data-component-part="tabs-list"] {
  margin-bottom: 24px !important;
}

.docs-tabs-menu {
  display: none;
}

/* Overflow (zoom, narrow column, small viewport): keep the tab row laid out
   at the column width so JS can keep measuring, but take it out of flow. */
.docs-tabs[data-menu] .tab-container {
  position: relative;
}

.docs-tabs[data-menu] .tab-container:has(> .docs-tabs-menu) > [data-component-part="tabs-list"] {
  position: absolute;
  inset: 0 auto auto 0;
  z-index: -1;
  visibility: hidden;
  pointer-events: none;
  width: 100%;
  max-width: 100%;
  margin-bottom: 0 !important;
}

.docs-tabs[data-menu] .docs-tabs-menu {
  position: relative;
  display: block;
  margin-bottom: 24px;
}

.docs-tabs-menu-trigger,
.docs-tabs-menu-item {
  box-sizing: border-box;
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  appearance: none;
  border: 0;
  border-radius: 8px;
  outline: none;
  background: none;
  color: var(--docs-tab-text-selected);
  font: inherit;
  font-size: 13px;
  font-weight: 400;
  line-height: 18px;
  text-align: left;
  cursor: pointer;
}

.docs-tabs-menu-trigger {
  height: 40px;
  padding: 0 14px;
  border: 1px solid var(--docs-tab-control-border);
  background: var(--docs-tab-menu-bg);
  touch-action: manipulation;
  transition:
    border-color var(--motion-duration) var(--motion-easing-standard),
    transform var(--motion-duration-fast) var(--motion-easing-standard);
}

.docs-tabs-menu-trigger:active {
  transform: scale(0.97);
}

.docs-tabs-menu-trigger:hover,
.docs-tabs-menu-trigger:focus-visible,
.docs-tabs-menu[data-open] .docs-tabs-menu-trigger {
  border-color: var(--docs-tab-control-border-hover);
}

.docs-tabs-menu-value {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 8px;
}

.docs-tabs-menu-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.docs-tabs-menu-icon-slot {
  display: flex;
}

.docs-tabs-menu-icon {
  display: block;
  width: 16px;
  height: 16px;
  flex: none;
  margin: 0 !important;
  object-fit: contain;
}

html.dark
  .docs-tabs-menu-icon:is(
    [src*="chatgpt.svg"],
    [src*="cursor.svg"],
    [src*="fx.svg"],
    [src*="grok.svg"],
    [src*="other-clients.svg"]
  ) {
  filter: invert(1);
}

.docs-tabs-menu-chevron {
  width: 7px;
  height: 7px;
  flex: none;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  color: var(--docs-tab-text);
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--motion-duration) var(--motion-easing-standard);
}

.docs-tabs-menu[data-open] .docs-tabs-menu-chevron {
  transform: translateY(2px) rotate(225deg);
}

.docs-tabs-menu-content {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 60;
  display: grid;
  width: 100%;
  max-height: 288px;
  gap: 2px;
  padding: 4px;
  overflow-y: auto;
  overscroll-behavior: contain;
  border-radius: 8px;
  background: var(--docs-tab-menu-bg);
  box-shadow: var(--docs-tab-menu-shadow);
  transform-origin: top;
  animation: docs-tabs-menu-open var(--motion-duration) var(--motion-easing-out);
}

.docs-tabs-menu-content[hidden] {
  display: none;
}

.docs-tabs-menu-item {
  min-height: 36px;
  padding: 8px 10px;
}

.docs-tabs-menu-item:is(:hover, :focus-visible) {
  background: var(--docs-tab-track);
}

.docs-tabs-menu-item[aria-selected="true"] {
  color: var(--docs-accent);
  font-weight: 500;
}

.docs-tabs-menu-check {
  flex: none;
  opacity: 0;
}

.docs-tabs-menu-item[aria-selected="true"] .docs-tabs-menu-check {
  opacity: 1;
}

@keyframes docs-tabs-menu-open {
  from {
    opacity: 0;
    transform: scale(0.98) translateY(-2px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.tab-container > [data-component-part="tabs-list"]::-webkit-scrollbar {
  display: none;
}

/* Sized and moved by `content-tabs.js`; it carries no geometry of its own so a
   pill that never gets measured stays invisible rather than parking at 0,0. */
.docs-tabs-pill {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
  width: 0;
  height: 0;
  border-radius: 4px;
  background: var(--docs-tab-pill);
  box-shadow: var(--docs-tab-pill-shadow);
  transform-origin: left top;
  will-change: transform;
  pointer-events: none;
}

.tab-container [data-component-part="tab-button"] {
  position: relative;
  z-index: 1;
  gap: 6px;
  padding: 4px 12px !important;
  margin-bottom: 0 !important;
  border-bottom: 0 !important;
  border-radius: 4px;
  font-size: 13px !important;
  font-weight: 400 !important;
  line-height: 18px !important;
  color: var(--docs-tab-text) !important;
  transition:
    color var(--motion-duration-slow) var(--motion-easing-out),
    background-color var(--motion-duration-slow) var(--motion-easing-out);
}

.tab-container [data-component-part="tab-button"][data-active="false"]:hover {
  color: var(--docs-tab-text-selected) !important;
}

.tab-container [data-component-part="tab-button"] img,
.tab-container [data-component-part="tab-button"] svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

/* ChatGPT and Cursor marks are black; invert them on dark so they stay visible. */
html.dark
  .tab-container
  [data-component-part="tab-button"]
  img:is([src*="chatgpt.svg"], [src*="cursor.svg"], [src*="fx.svg"], [src*="grok.svg"], [src*="other-clients.svg"]) {
  filter: invert(1);
}

/* Selection is carried by the pill and the text rung alone; the surface variant
   holds one weight across states so the row cannot reflow. */
.tab-container [data-component-part="tab-button"][data-active="true"] {
  color: var(--docs-tab-text-selected) !important;
}

/* Before the script has injected a pill, the selected tab paints one. */
.tab-container
  > [data-component-part="tabs-list"]:not([data-sliding])
  [data-component-part="tab-button"][data-active="true"] {
  background: var(--docs-tab-pill);
  box-shadow: var(--docs-tab-pill-shadow);
}

/* Mintlify puts the tab stop on the `li`, so the ring belongs there. */
.tab-container [role="tab"]:focus-visible {
  outline: none;
  border-radius: 4px;
  box-shadow: 0 0 0 3px var(--docs-tab-ring);
}

/* ---------------------------------------------------------------------------
   The `underline` variant, opted into per group by wrapping the Tabs in
   `<div className="docs-tabs-underline">`. Mintlify's Tabs takes no variant
   prop, so the wrapper class is the only hook.

   Reach for it when a group has enough tabs that a filled track would become a
   slab — the surface variant assumes a short row. This variant carries the brand
   accent in the rule beneath the selected tab, and unlike the surface variant it
   does raise the selected label's weight, since there is no pill to mark it.

   These overrides have to repeat `!important` wherever the surface rules above
   used it; specificity alone does not beat an important declaration.
   --------------------------------------------------------------------------- */
.docs-tabs-underline .tab-container > [data-component-part="tabs-list"] {
  width: 100%;
  align-items: flex-end;
  /* An underline row cannot wrap: the rule belongs under every tab, and it
     would only sit beneath the last line. Overflow scrolls the way Mintlify
     intends, which also means this variant's focus ring clips at the edges. */
  flex-wrap: nowrap;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  min-height: 0;
  padding: 0 !important;
  border-bottom: 1px solid var(--docs-tab-line) !important;
  border-radius: 0;
  background: none;
}

.docs-tabs-underline .tab-container [data-component-part="tab-button"] {
  height: 32px;
  padding: 4px 8px !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0;
  background: none !important;
  box-shadow: none !important;
  transition:
    color var(--motion-duration-slow) var(--motion-easing-out),
    border-color var(--motion-duration-slow) var(--motion-easing-out);
}

.docs-tabs-underline .tab-container [data-component-part="tab-button"][data-active="true"] {
  border-bottom-color: var(--docs-tab-accent) !important;
  font-weight: 510 !important;
}

.eval-tab-radio {
  display: none;
}

.eval-tab-labels {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--border-color, var(--color-exa-gray-300));
  margin-bottom: 0;
}

.eval-tab-label {
  padding: 0.5rem 1rem;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-exa-gray-700);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition:
    color var(--motion-duration) var(--motion-easing-standard),
    border-color var(--motion-duration) var(--motion-easing-standard);
}

.eval-tab-label:hover {
  color: var(--color-exa-gray-1000);
}

#eval-accuracy:checked ~ .eval-tab-labels label[for="eval-accuracy"],
#eval-latency:checked ~ .eval-tab-labels label[for="eval-latency"],
#eval-verticals:checked ~ .eval-tab-labels label[for="eval-verticals"] {
  color: var(--docs-accent);
  border-bottom-color: var(--docs-accent);
}

.eval-panel {
  display: none;
}

.eval-panel img {
  width: 100%;
  border-radius: 0.5rem;
  border: 1px solid var(--border-color, var(--color-exa-gray-300));
}

#eval-accuracy:checked ~ .eval-panel-accuracy,
#eval-latency:checked ~ .eval-panel-latency,
#eval-verticals:checked ~ .eval-panel-verticals {
  display: block;
}

/* Pydantic blog callout: override the default card hover accent to Pydantic purple. */
a[href="https://pydantic.dev/articles/harness-exa"]:hover {
  border-color: #e520e9 !important;
}

/* ---------------------------------------------------------------------------
   code surfaces (`<CodeGroup>` and standalone code blocks)

   Modeled on the ElevenLabs docs' code card (a Fern build of the same idea as
   the design system's CodeBlock), rebuilt on Mintlify's own DOM: one 12px card
   with a hairline edge and a whisper of shadow, a 40px tinted header holding
   left-aligned text tabs — the selected one carries weight and a 2px accent
   rule — with ghost icon actions on the right, one divider, then the code on
   the surface itself. Values that are the design system's stay the design
   system's: `neutral-border-primary` edges, `--docs-tab-*` text rungs, the
   brand accent, and shadows dropped in dark.
   --------------------------------------------------------------------------- */

.code-group,
.code-block:not(.docs-home-code *) {
  border-color: var(--docs-tab-line) !important;
  border-radius: 12px !important;
  box-shadow: var(--docs-code-shadow);
}

/* The frame is the surface: Mintlify's `p-0.5` inset around the panel is what
   makes the code read as a second, nested card. */
.code-group {
  padding: 0 !important;
  background: var(--docs-code-surface) !important;
  overflow: hidden;
}

/* Mintlify rounds the panel from the wrapper (`[&_[data-component-part=
   code-block-root]]:rounded-xt!`), so matching that selector's specificity is
   not enough to square it against the frame. */
.code-group [data-component-part="code-block-root"][class] {
  background: transparent !important;
  border-radius: 0 !important;
}

/* The header: a tinted 40px strip with the tab row filling the left and the
   actions on the right, one rule below. */
.code-group [data-component-part="code-group-tab-bar"] {
  align-items: center;
  min-height: 40px;
  padding: 0 6px 0 6px !important;
  background: var(--docs-code-header);
  border-bottom: 1px solid var(--docs-tab-line);
}

/* Mintlify hangs the tab row in a scroll area whose content box is
   block-level, so the tabs only ever get their own text height and the
   selected rule floats mid-strip like a link underline. Stretching that chain
   is what puts the rule on the strip's own bottom edge. */
.code-group
  [data-component-part="code-group-tab-bar"]
  [data-component-part="scroll-area"] {
  align-self: stretch;
}

.code-group
  [data-component-part="code-group-tab-bar"]
  [data-component-part="scroll-area-viewport"],
.code-group
  [data-component-part="code-group-tab-bar"]
  [data-component-part="scroll-area-content"] {
  display: flex;
  height: 100%;
}

.code-group [role="tablist"] {
  align-self: stretch;
  align-items: stretch !important;
  gap: 2px !important;
  margin: 0;
  padding: 0 !important;
}

/* Tabs are quiet 13px text spanning the header's height; the label inside
   tints on hover, and the selected tab draws its own 2px accent rule across
   the bottom of the strip. */
.code-group [role="tab"] {
  position: relative;
  display: flex;
  align-self: stretch;
  align-items: center;
  margin: 0 !important;
  padding: 0;
  font-size: 13px;
  font-weight: 400 !important;
  line-height: 18px;
  color: var(--docs-tab-text) !important;
}

.code-group [role="tab"]:hover {
  color: var(--docs-tab-text-selected) !important;
}

.code-group [role="tab"] > div:first-child {
  padding: 0 8px !important;
  border-radius: 0 !important;
  background: none !important;
  color: inherit !important;
  outline: none !important;
}

.code-group [role="tab"][aria-selected="true"] {
  color: var(--docs-tab-text-selected) !important;
  font-weight: 600 !important;
  box-shadow: inset 0 -2px 0 0 var(--docs-tab-accent);
}


/* The rule Mintlify absolutely positions under the selected label; the tab
   paints its own instead, so the rule spans the label and sits on the strip's
   own bottom edge. */
.code-group [role="tab"] > div:first-child + div {
  display: none !important;
}

.code-group [role="tab"]:focus-visible > div:first-child {
  box-shadow: 0 0 0 3px var(--docs-tab-ring);
}

/* A one-language group has nothing to switch between, so its lone tab reads as
   a filename label — carrying weight, no rule, no hover. */
.code-group [role="tab"]:only-child {
  cursor: default;
  font-weight: 510 !important;
  color: var(--docs-tab-text-selected) !important;
  box-shadow: none;
}

/* Mintlify's "report incorrect code" action leaves the copy button as the only
   thing in the header. Its tooltip trigger wraps the button, so the wrapper is
   what has to go, or its gap stays behind. */
[data-base-ui-tooltip-trigger]:has(> button[aria-label="Report incorrect code"]) {
  display: none;
}

/* Header actions as ghost icon buttons: 28px, a hover fill off the neutral
   foreground rather than Mintlify's own bordered chip. */
.code-group .code-block-copy-button button,
.code-block .code-block-copy-button button,
.code-group
  [data-component-part="code-group-tab-bar"]
  button:not([role="tab"]):not([aria-label="Select language"]) {
  width: 28px !important;
  height: 28px !important;
  border-radius: 6px !important;
  color: var(--docs-tab-text) !important;
  transition:
    background-color var(--motion-duration) var(--motion-easing-standard),
    color var(--motion-duration) var(--motion-easing-standard),
    transform var(--motion-duration-fast) var(--motion-easing-standard);
}

.code-group .code-block-copy-button button:active,
.code-block .code-block-copy-button button:active,
.code-group
  [data-component-part="code-group-tab-bar"]
  button:not([role="tab"]):active {
  transform: scale(0.94);
}

/* Mintlify swaps the icon node on copy; the replacement animates in from a
   starting style rather than popping. */
[data-testid="copy-code-button"] svg {
  transition:
    opacity var(--motion-duration-slow) var(--motion-easing-out),
    transform var(--motion-duration-slow) var(--motion-easing-out);

  @starting-style {
    opacity: 0;
    transform: scale(0.6);
  }
}

.code-group .code-block-copy-button button:hover,
.code-block .code-block-copy-button button:hover,
.code-group
  [data-component-part="code-group-tab-bar"]
  button:not([role="tab"]):hover {
  background: var(--docs-code-action-hover) !important;
  color: var(--docs-tab-text-selected) !important;
}

.code-group .code-block-copy-button button:focus-visible,
.code-block .code-block-copy-button button:focus-visible,
.code-group
  [data-component-part="code-group-tab-bar"]
  button:not([role="tab"]):focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--docs-tab-ring);
}

[data-api-example] [data-component-part="code-group-tab-bar"] > div > span[title="cURL"],
[data-api-example] [data-component-part="code-group-tab-bar"] > div > span[title="Python"],
[data-api-example] [data-component-part="code-group-tab-bar"] > div > span[title="JavaScript"] {
  display: none;
}

/* The language picker Mintlify renders for multi-language `x-codeSamples`
   (icon, language name, chevron) keeps its width and reads as a ghost text
   button in the same 28px header row, rather than being squared like the
   icon actions. */
.code-group
  [data-component-part="code-group-tab-bar"]
  button[aria-label="Select language"] {
  height: 28px !important;
  padding: 0 !important;
  border-radius: 6px !important;
}

.code-group
  [data-component-part="code-group-tab-bar"]
  button[aria-label="Select language"] > div {
  height: 28px;
  padding: 0 6px 0 8px !important;
  border: 0 !important;
  border-radius: 6px !important;
  font-size: 13px;
  line-height: 18px;
  color: var(--docs-tab-text) !important;
  transition:
    background-color var(--motion-duration) var(--motion-easing-standard),
    color var(--motion-duration) var(--motion-easing-standard);
}

.code-group
  [data-component-part="code-group-tab-bar"]
  button[aria-label="Select language"]:hover > div {
  background: var(--docs-code-action-hover) !important;
  color: var(--docs-tab-text-selected) !important;
}

/* A standalone block is the same card with an empty tab row: the frame owns the
   surface and the corners, so the panel inside squares off against it. */
.code-block:not(.docs-home-code *) {
  background: var(--docs-code-surface) !important;
  overflow: hidden;
}

.code-block:not(.docs-home-code *) [data-component-part="code-block-root"][class] {
  background: transparent !important;
  border-radius: 0 !important;
}

/* A fenced block with a title renders its own header; give it the group's
   strip so the two read as one component. */
.code-block:not(.docs-home-code *) [data-component-part="code-block-header"] {
  align-items: center;
  min-height: 40px;
  padding: 0 8px 0 14px !important;
  background: var(--docs-code-header);
  border-bottom: 1px solid var(--docs-tab-line);
  border-radius: 0 !important;
  font-family: inherit;
  font-size: 13px !important;
  font-weight: 510;
  line-height: 18px !important;
  color: var(--docs-tab-text-selected) !important;
}

/* Without a title Mintlify floats the actions over the first line of code
   instead. That floating row becomes the strip, and the panel is inset below
   it, so the actions land in a header rather than on the code. Titled and
   untitled blocks are told apart by the panel's preceding sibling — Mintlify's
   own build drops `:has()` rules, so this stays on sibling combinators. */
.code-block:not(.docs-home-code *) > [data-floating-buttons="true"] {
  top: 0 !important;
  right: 0 !important;
  left: 0;
  height: 40px;
  justify-content: flex-end;
  padding: 0 8px;
  background: var(--docs-code-header);
  border-bottom: 1px solid var(--docs-tab-line);
}

/* …and the strip carries the block's language, so an untitled block reads like
   a group with a single tab rather than an empty bar. Mintlify's grammar names
   are not labels, hence the mapping below. */
.code-block:not(.docs-home-code *) > [data-floating-buttons="true"]::before {
  content: var(--docs-code-lang, "");
  margin-right: auto;
  padding-left: 14px;
  font-size: 13px;
  font-weight: 510;
  line-height: 18px;
  color: var(--docs-tab-text-selected);
}

.code-block[language="bash"],
.code-block[language="sh"],
.code-block[language="shell"],
.code-block[language="shellscript"] {
  --docs-code-lang: "Shell";
}

.code-block[language="powershell"] {
  --docs-code-lang: "PowerShell";
}

.code-block[language="python"] {
  --docs-code-lang: "Python";
}

.code-block[language="javascript"],
.code-block[language="js"] {
  --docs-code-lang: "JavaScript";
}

.code-block[language="typescript"],
.code-block[language="ts"] {
  --docs-code-lang: "TypeScript";
}

.code-block[language="jsx"] {
  --docs-code-lang: "JSX";
}

.code-block[language="tsx"] {
  --docs-code-lang: "TSX";
}

.code-block[language="json"] {
  --docs-code-lang: "JSON";
}

.code-block[language="yaml"],
.code-block[language="yml"] {
  --docs-code-lang: "YAML";
}

.code-block[language="http"] {
  --docs-code-lang: "HTTP";
}

.code-block[language="go"] {
  --docs-code-lang: "Go";
}

.code-block[language="ruby"] {
  --docs-code-lang: "Ruby";
}

.code-block[language="rust"] {
  --docs-code-lang: "Rust";
}

.code-block[language="java"] {
  --docs-code-lang: "Java";
}

.code-block[language="csharp"] {
  --docs-code-lang: "C#";
}

.code-block[language="php"] {
  --docs-code-lang: "PHP";
}

.code-block[language="html"] {
  --docs-code-lang: "HTML";
}

.code-block[language="css"] {
  --docs-code-lang: "CSS";
}

.code-block[language="sql"] {
  --docs-code-lang: "SQL";
}

/* The strip overlays the panel's top, so the panel clears it and keeps its own
   14px rhythm below the rule, matching the group's panel. */
.code-block:not(.docs-home-code *)
  > [data-floating-buttons="true"]
  + [data-component-part="code-block-root"] {
  padding-top: 54px;
}

/* Newer Mintlify renderers move the panel's `py-3.5 px-4` off the root onto an
   inner scroll-area viewport, so the clearance above stacks on that padding
   instead of replacing it. Zeroing the viewport's top share keeps the same
   54px strip + 14px rhythm on both markups; the older markup has no viewport
   part, so this no-ops there. */
.code-block:not(.docs-home-code *)
  > [data-floating-buttons="true"]
  + [data-component-part="code-block-root"]
  [data-component-part="scroll-area-viewport"] {
  padding-top: 0;
}

/* Mintlify pairs the copy actions with a right-edge fade that sweeps the code
   under them. With the actions in the header strip the fade only streaks a
   gradient across it, and upstream dropped its class, so it is known only as
   the strip's (or the header's) part-less sibling. */
.code-block:not(.docs-home-code *)
  > [data-floating-buttons="true"]
  ~ div:not([data-component-part]),
.code-block:not(.docs-home-code *)
  > [data-component-part="code-block-header"]
  ~ div:not([data-component-part]) {
  display: none;
}

/* ---------------------------------------------------------------------------
   docs home (`/index.mdx`)

   Landing page built from the "Final Docs Homepage" design: 1080px content
   column, ABC Diatype headings, Geist Mono code, and a CSS-only API explorer
   (two radio groups — API and language — select one of 15 code panes).
   Sizes below are the design's pixel values at the 1512px desktop frame.
   --------------------------------------------------------------------------- */

@font-face {
  font-family: "GeistMono";
  src: url("https://exa.ai/fonts/GeistMono-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

.docs-home {
  --docs-home-line: rgba(113, 102, 91, 0.08);
  --docs-home-surface: var(--color-exa-gray-100);
  --docs-home-chip: var(--color-exa-gray-200);
  --docs-home-hover: rgba(17, 15, 13, 0.045);
  --docs-home-hover-ring: rgba(17, 15, 13, 0.08);
  --docs-home-hover-shadow: 0 6px 18px rgba(17, 15, 13, 0.07);
  --docs-home-muted: rgba(0, 0, 0, 0.6);
  --docs-home-strong: rgba(0, 0, 0, 0.9);
  --docs-home-pane-bg: var(--color-white);
  --docs-home-pane-border: var(--color-exa-gray-300);
  --docs-home-focus: rgba(10, 46, 168, 0.7);
  margin-top: 0;
}

.dark .docs-home {
  --docs-home-line: rgba(255, 255, 255, 0.1);
  --docs-home-surface: rgba(255, 255, 255, 0.03);
  --docs-home-chip: rgba(255, 255, 255, 0.08);
  --docs-home-hover: rgba(255, 255, 255, 0.07);
  --docs-home-hover-ring: rgba(255, 255, 255, 0.14);
  --docs-home-hover-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
  --docs-home-muted: rgba(255, 255, 255, 0.72);
  --docs-home-strong: var(--color-white);
  /* The pane supplies the background for both the code and playground row. */
  --docs-home-pane-bg: var(--color-exa-gray-100);
  --docs-home-pane-border: rgba(255, 255, 255, 0.1);
  --docs-home-focus: rgba(255, 255, 255, 0.7);
}

/* The design's 1080px measure is wider than a regular page's. Keep it on the
   regular page grid while space is constrained so the sidebar does not move
   when navigating to or from the landing page. */
@media (width >= 1280px) {
  #body-content:has(.docs-home) {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  #content-container:has(.docs-home) {
    max-width: none !important;
    padding-left: 88px !important;
    padding-right: 40px !important;
    /* The container is `row-reverse` to float the table of contents right; with
       no table of contents the lone column would otherwise hug the right edge. */
    justify-content: flex-end !important;
  }

  #content-area:has(.docs-home) {
    width: 100% !important;
    max-width: 1080px !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* On very wide viewports, regular pages are centred by the table-of-contents
   column balancing the sidebar. The overview has no table of contents, so an
   empty matching slot keeps its wider column on the same centre line. */
@media (width >= 1920px) {
  #content-container:has(.docs-home) {
    justify-content: normal !important;
  }

  #content-container:has(.docs-home)::before {
    content: "";
    display: block;
    flex: 0 0 304px;
  }

  #content-area:has(.docs-home) {
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* The Mintlify page header doubles as the hero: frontmatter title carries
   the design's 32px heading. Description size matches other pages. The
   LLMs.txt chip lives in the MDX body, so #content-area is the positioning
   context that lets it sit on the title row. Mintlify's #content is
   `relative` and size-contained, which would otherwise trap the chip below
   the header. */
#content-area:has(.docs-home) {
  position: relative;
}

#content-area:has(.docs-home) #content {
  position: static;
}

#content-area:has(.docs-home) #header {
  padding-right: 280px;
}

/* The docs home has its own llms.txt action in the hero. Mintlify's generated
   page context menu competes for the same title-row space at medium widths. */
#content-area:has(.docs-home) #page-context-menu {
  display: none !important;
}

#content-area:has(.docs-home) #page-title {
  font-size: 32px !important;
  line-height: 42px !important;
  letter-spacing: -0.02em;
  font-weight: 500 !important;
}

#content-area:has(.docs-home) #header .prose {
  margin-top: 10px;
}

#content-area:has(.docs-home) #header p {
  margin-bottom: 0;
  color: rgba(0, 0, 0, 0.6);
}

.dark #content-area:has(.docs-home) #header p {
  color: rgba(255, 255, 255, 0.6);
}

/* Mintlify's prose styles underline links with a border; the design's links
   are undecorated apart from the LLMs.txt word. */
.docs-home a,
.docs-home a:hover {
  border-bottom: 0 !important;
  text-decoration: none;
}

.docs-home a.docs-home-llms {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid var(--docs-home-line) !important;
  border-radius: 10px;
  background: var(--docs-home-surface);
  font-size: 14px;
  font-weight: 400 !important;
  line-height: 1.4em;
  color: var(--docs-home-muted);
  text-decoration: none;
  white-space: nowrap;
}

.docs-home-llms * {
  font-weight: 400 !important;
}

.docs-home-llms-word {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.docs-home a.docs-home-llms:hover {
  background: var(--docs-home-chip);
  border-color: var(--docs-home-hover-ring) !important;
  color: var(--docs-home-strong);
}

.docs-home-quickstart {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  min-height: 117px;
  padding: 30px 32px;
  border-radius: 10px;
  /* Banner artwork is inlined so it paints with the stylesheet instead of
     after a separate image fetch. */
  background: #002f96 url("data:image/webp;base64,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") center / cover no-repeat;
  color: var(--color-white);
}

.docs-home-quickstart-copy {
  position: relative;
  z-index: 1;
  max-width: 455px;
}

.docs-home-quickstart-title {
  display: block;
  font-family: "ABCDiatype", sans-serif;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--color-white);
  text-decoration: none;
}

.docs-home-quickstart-copy p {
  margin: 4px 0 0;
  font-size: 14px !important;
  line-height: 1.4em;
  color: rgba(255, 255, 255, 0.8);
}

.docs-home-quickstart-actions {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 12px;
}

.docs-home-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 18px;
  border: none;
  border-radius: 6px;
  font-family: "ABCDiatype", sans-serif;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: -0.02em;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.14);
  transition:
    background var(--motion-duration) var(--motion-easing-standard),
    box-shadow var(--motion-duration) var(--motion-easing-standard),
    transform var(--motion-duration-fast) var(--motion-easing-standard);
}

/* Outrank prose link colors without changing the responsive button layout. */
.docs-home a.docs-home-button {
  background: var(--color-neutral-subtle);
  color: var(--color-neutral-foreground-primary);
}

.docs-home a.docs-home-button:hover {
  background: var(--color-neutral-subtle-hover);
  color: var(--color-neutral-foreground-primary);
  transform: translateY(-1px);
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.3), 0 6px 16px rgba(0, 0, 0, 0.28);
}

.docs-home-button:active {
  transform: scale(0.97);
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.24), 0 2px 6px rgba(0, 0, 0, 0.24);
}

.docs-home-button:hover svg {
  opacity: 1;
}

.docs-home-button svg {
  opacity: 0.8;
}

.docs-home a.docs-home-button:focus-visible {
  outline: 2px solid var(--color-white);
  outline-offset: 3px;
}

.docs-home-try {
  position: relative;
  margin-top: 32px;
  border: 1px solid var(--docs-home-line);
  border-radius: 10px;
  background: var(--docs-home-surface);
}

.docs-home-radio {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.docs-home-try-grid {
  display: grid;
  grid-template-columns: 244px minmax(0, 1fr);
  column-gap: 16px;
  row-gap: 14px;
  align-items: end;
  padding: 16px 19px 19px 16px;
}

.docs-home-try-title {
  margin: 0 0 0 14px !important;
  font-size: 22px !important;
  font-weight: 500 !important;
  letter-spacing: -0.01em;
}

/* Language switcher mirrors the `surface` variant of `@exa/design/ui/tabs`.
   Mintlify builds the docs site outside the pnpm workspace, so the React
   component cannot be imported here; its tokens are reproduced instead. */
.docs-home-langs {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  width: fit-content;
  height: 36px;
  padding: 4px;
  border-radius: 8px;
  background: var(--docs-tab-track);
  user-select: none;
}

/* Single pill shared by all tabs, positioned by `home-tabs.js` so the
   selection slides the way `useSlidingIndicator` moves it in the design
   system. Without the script the checked-label fallback below paints it. */
.docs-home-langs-pill {
  position: absolute;
  top: 4px;
  bottom: 4px;
  left: 0;
  z-index: 0;
  width: 0;
  border-radius: 4px;
  background: var(--docs-tab-pill);
  box-shadow: var(--docs-tab-pill-shadow);
  pointer-events: none;
  transition:
    left var(--motion-duration-slow) var(--motion-easing-out),
    width var(--motion-duration-slow) var(--motion-easing-out);
}

.docs-home-langs-pill[data-initial] {
  transition: none;
}

.docs-home-langs label {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: 4px;
  font-size: 13px;
  font-weight: 400;
  line-height: 18px;
  white-space: nowrap;
  color: var(--docs-tab-text);
  cursor: pointer;
  transition: color var(--motion-duration-slow) var(--motion-easing-out);
}

.docs-home-lang-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

.docs-home-langs label:hover {
  color: var(--docs-tab-text-selected);
}

.docs-home-apis {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-self: start;
}

.docs-home-apis label {
  position: relative;
  z-index: 1;
  padding: 10px 12px;
  border-radius: 6px;
  font-family: "ABCDiatype", sans-serif;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: inherit;
  opacity: 0.6;
  cursor: pointer;
  transition:
    opacity var(--motion-duration) var(--motion-easing-standard),
    background-color var(--motion-duration) var(--motion-easing-standard);
}

/* Same single-pill pattern as the language switcher above, slid vertically by
   `home-tabs.js`; the `:not([data-sliding])` fallback below paints the fill on
   the checked label itself until then. */
.docs-home-apis-pill {
  position: absolute;
  z-index: 0;
  border-radius: 6px;
  background: var(--docs-home-chip);
  pointer-events: none;
  transition:
    top var(--motion-duration-slow) var(--motion-easing-out),
    left var(--motion-duration-slow) var(--motion-easing-out),
    width var(--motion-duration-slow) var(--motion-easing-out),
    height var(--motion-duration-slow) var(--motion-easing-out);
}

.docs-home-apis-pill[data-initial] {
  transition: none;
}

.docs-home-apis label:hover {
  background: var(--docs-home-hover);
  opacity: 0.9;
}

.docs-home-pane {
  display: flex;
  flex-direction: column;
  height: 340px;
  border: 1px solid var(--docs-home-pane-border);
  border-radius: 8px;
  background: var(--docs-home-pane-bg);
  overflow: hidden;
}

/* Each pane wraps a normal Mintlify code block (syntax highlighting and copy
   button included) stripped of its own frame, so the card supplies the frame. */
.docs-home-code {
  display: none;
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}

.docs-home-code .code-block {
  height: 100%;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 8px !important;
  background: transparent !important;
}

.docs-home-code .code-block > div:last-child {
  height: 100%;
  overflow: hidden;
}

/* Mintlify also paints an inner root, independently of the wrapper and pre. */
.docs-home-code [data-component-part="code-block-root"][class] {
  background: transparent !important;
}

.docs-home-code pre {
  height: 100%;
  margin: 0 !important;
  padding: 17px 19px !important;
  overflow: auto !important;
  background: transparent !important;
  font-family: "GeistMono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
  font-size: 14px !important;
  line-height: 1.4 !important;
  letter-spacing: -0.01em;
}

/* The pre above owns the panel's inset; newer renderers also pad an inner
   scroll-area viewport, which would double it. */
.docs-home-code [data-component-part="scroll-area-viewport"] {
  padding: 0;
}

.docs-home-code code {
  font-family: inherit !important;
  font-size: inherit !important;
}

/* Mintlify's right-edge fade is sized for a wide block; inside the pane it
   sweeps across most of the code on narrow viewports. Drop it and give the
   floating actions their own backdrop instead, since Mintlify only paints one
   when the overlay is absent from the DOM. */
.docs-home-code [data-fade-overlay] {
  display: none;
}

.docs-home-code [data-floating-buttons="true"] button {
  background: var(--docs-home-chip);
}

.docs-home-pane-link {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  padding: 9px 14px;
  border-top: 1px solid var(--docs-home-pane-border);
  font-size: 13px;
  color: var(--docs-home-muted);
}

.docs-home-pane-link::after {
  content: "";
  width: 12px;
  height: 12px;
  flex-shrink: 0;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6'/%3E%3Cpath d='m21 3-9 9'/%3E%3Cpath d='M15 3h6v6'/%3E%3C/svg%3E")
    center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6'/%3E%3Cpath d='m21 3-9 9'/%3E%3Cpath d='M15 3h6v6'/%3E%3C/svg%3E")
    center / contain no-repeat;
}

.docs-home-pane-link:hover {
  background: var(--docs-home-hover);
  color: var(--docs-home-strong);
}

#docs-home-api-search:checked ~ .docs-home-try-grid label[for="docs-home-api-search"],
#docs-home-api-deep:checked ~ .docs-home-try-grid label[for="docs-home-api-deep"],
#docs-home-api-tools:checked ~ .docs-home-try-grid label[for="docs-home-api-tools"],
#docs-home-api-agent:checked ~ .docs-home-try-grid label[for="docs-home-api-agent"],
#docs-home-api-agent-research:checked ~ .docs-home-try-grid label[for="docs-home-api-agent-research"],
#docs-home-api-contents:checked ~ .docs-home-try-grid label[for="docs-home-api-contents"] {
  opacity: 1;
}

/* Before the script has injected a pill, the checked label paints one. */
#docs-home-api-search:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-search"],
#docs-home-api-deep:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-deep"],
#docs-home-api-tools:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-tools"],
#docs-home-api-agent:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-agent"],
#docs-home-api-agent-research:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-agent-research"],
#docs-home-api-contents:checked ~ .docs-home-try-grid .docs-home-apis:not([data-sliding]) label[for="docs-home-api-contents"] {
  background: var(--docs-home-chip);
}

/* Selection is carried by the pill and the text rung alone. The design system's
   surface tabs hold one weight across states so the row cannot reflow. */
#docs-home-lang-python:checked ~ .docs-home-try-grid label[for="docs-home-lang-python"],
#docs-home-lang-javascript:checked ~ .docs-home-try-grid label[for="docs-home-lang-javascript"],
#docs-home-lang-curl:checked ~ .docs-home-try-grid label[for="docs-home-lang-curl"] {
  color: var(--docs-tab-text-selected);
}

#docs-home-lang-python:checked ~ .docs-home-try-grid .docs-home-langs:not([data-sliding]) label[for="docs-home-lang-python"],
#docs-home-lang-javascript:checked ~ .docs-home-try-grid .docs-home-langs:not([data-sliding]) label[for="docs-home-lang-javascript"],
#docs-home-lang-curl:checked ~ .docs-home-try-grid .docs-home-langs:not([data-sliding]) label[for="docs-home-lang-curl"] {
  background: var(--docs-tab-pill);
  box-shadow: var(--docs-tab-pill-shadow);
}

/* Tabs use the design system's neutral focus ring rather than the page's
   accent outline, which the surrounding one-off controls keep. */
#docs-home-lang-python:focus-visible ~ .docs-home-try-grid label[for="docs-home-lang-python"],
#docs-home-lang-javascript:focus-visible ~ .docs-home-try-grid label[for="docs-home-lang-javascript"],
#docs-home-lang-curl:focus-visible ~ .docs-home-try-grid label[for="docs-home-lang-curl"] {
  outline: 3px solid var(--docs-tab-ring);
  outline-offset: 0;
}

#docs-home-api-search:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-search"],
#docs-home-api-deep:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-deep"],
#docs-home-api-tools:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-tools"],
#docs-home-api-agent:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-agent"],
#docs-home-api-agent-research:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-agent-research"],
#docs-home-api-contents:focus-visible ~ .docs-home-try-grid label[for="docs-home-api-contents"] {
  outline: 2px solid var(--docs-home-focus);
  outline-offset: 1px;
}

#docs-home-api-search:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="search-python"],
#docs-home-api-search:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="search-javascript"],
#docs-home-api-search:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="search-curl"],
#docs-home-api-deep:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="deep-python"],
#docs-home-api-deep:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="deep-javascript"],
#docs-home-api-deep:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="deep-curl"],
#docs-home-api-tools:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="tools-python"],
#docs-home-api-tools:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="tools-javascript"],
#docs-home-api-tools:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="tools-curl"],
#docs-home-api-agent:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="agent-python"],
#docs-home-api-agent:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="agent-javascript"],
#docs-home-api-agent:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="agent-curl"],
#docs-home-api-agent-research:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="agent-research-python"],
#docs-home-api-agent-research:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="agent-research-javascript"],
#docs-home-api-agent-research:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="agent-research-curl"],
#docs-home-api-contents:checked ~ #docs-home-lang-python:checked ~ .docs-home-try-grid [data-pane="contents-python"],
#docs-home-api-contents:checked ~ #docs-home-lang-javascript:checked ~ .docs-home-try-grid [data-pane="contents-javascript"],
#docs-home-api-contents:checked ~ #docs-home-lang-curl:checked ~ .docs-home-try-grid [data-pane="contents-curl"] {
  display: block;
}

/* The newly shown pane fades in over the outgoing one's instant removal.
   `data-switching` is set by `home-tabs.js` on the radio change so the reveal
   cannot replay when the homepage remounts on a soft navigation. */
.docs-home-pane[data-switching] [data-pane] {
  animation: docs-reveal var(--motion-duration-slow) var(--motion-easing-out) both;
}

#docs-home-api-search:checked ~ .docs-home-try-grid [data-pane-link="search"],
#docs-home-api-deep:checked ~ .docs-home-try-grid [data-pane-link="deep"],
#docs-home-api-tools:checked ~ .docs-home-try-grid [data-pane-link="tools"],
#docs-home-api-agent:checked ~ .docs-home-try-grid [data-pane-link="agent"],
#docs-home-api-agent-research:checked ~ .docs-home-try-grid [data-pane-link="agent-research"],
#docs-home-api-contents:checked ~ .docs-home-try-grid [data-pane-link="contents"] {
  display: flex;
}

/* Thumbnail and title share the grid cell's left edge. Hover raises a
   backdrop outside the content so alignment does not shift. */
.docs-home-section {
  margin: 68px 0 28px !important;
  font-size: 24px !important;
  font-weight: 500 !important;
  letter-spacing: -0.01em;
}

.docs-home-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 36px;
  row-gap: 40px;
}

.docs-home-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  gap: 14px;
  height: 100%;
  color: inherit;
  text-decoration: none;
}

.docs-home-card::before {
  content: "";
  position: absolute;
  inset: -18px;
  z-index: -1;
  border-radius: 12px;
  opacity: 0;
  transition:
    opacity var(--motion-duration) var(--motion-easing-standard),
    background var(--motion-duration) var(--motion-easing-standard),
    box-shadow var(--motion-duration) var(--motion-easing-standard);
}

.docs-home-card:hover::before,
.docs-home-card:focus-visible::before {
  background: var(--docs-home-chip);
  box-shadow: inset 0 0 0 1px var(--docs-home-hover-ring), var(--docs-home-hover-shadow);
  opacity: 1;
}

.docs-home-card:focus-visible {
  outline: 2px solid var(--docs-home-focus);
  outline-offset: 18px;
}

.docs-home-card:hover .docs-home-card-title,
.docs-home-card:focus-visible .docs-home-card-title {
  color: var(--docs-home-strong);
}

.docs-home-card:hover .docs-home-card-body,
.docs-home-card:focus-visible .docs-home-card-body {
  opacity: 0.75;
}

.docs-home-card img {
  display: block;
  width: 100%;
  margin: 0 !important;
  aspect-ratio: 526 / 250;
  border-radius: 8px;
  object-fit: cover;
}

.docs-home-card-title {
  font-family: "ABCDiatype", sans-serif;
  font-size: 20px;
  font-weight: 500;
}

.docs-home-card-text {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.docs-home-card-body {
  font-size: 14px;
  font-weight: 400 !important;
  line-height: 1.45em;
  opacity: 0.6;
}

/* Responsive: the design is a 1512px desktop frame, so below the docs' own
   1024px breakpoint the explorer stacks and the pane grows with its code. */
@media (width < 1024px) {
  .docs-home {
    margin-top: 0;
  }

  #content-area:has(.docs-home) #header {
    padding-right: 0;
  }

  /* Matches the desktop rule's `.docs-home a.docs-home-llms` specificity;
     a bare `.docs-home-llms` would lose and leave the chip floating over
     the wrapped title. */
  .docs-home a.docs-home-llms {
    position: static;
    margin-bottom: 24px;
  }

  .docs-home-try-grid {
    grid-template-columns: minmax(0, 1fr);
    padding: 16px;
  }

  .docs-home-try-title {
    margin-left: 0 !important;
  }

  .docs-home-apis {
    flex-direction: row;
    gap: 6px;
    margin: 0 -16px;
    padding: 0 16px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .docs-home-apis::-webkit-scrollbar {
    display: none;
  }

  .docs-home-apis label {
    padding: 8px 12px;
    background: var(--docs-home-chip);
    white-space: nowrap;
  }

  /* The chip row gives every label a fill, so there is no selection to slide. */
  .docs-home-apis-pill {
    display: none;
  }

  .docs-home-pane {
    height: auto;
    min-height: 260px;
  }

  .docs-home-code {
    max-height: 340px;
  }
}

@media (width < 768px) {
  .docs-home-quickstart {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
    padding: 24px;
  }

  .docs-home-quickstart-actions {
    width: 100%;
  }

  .docs-home-button {
    flex: 1 1 0;
  }

  .docs-home-cards {
    grid-template-columns: minmax(0, 1fr);
    gap: 36px;
  }

  .docs-home-section {
    margin-top: 48px !important;
  }

  /* The pre carries its own `!important` font-size, so the override has to
     land on the pre itself, not inherit from the wrapper. Tighter padding
     buys the narrow viewport a few more characters per line; long lines
     still scroll horizontally inside the pre. */
  .docs-home-code pre {
    padding: 14px !important;
    font-size: 13px !important;
  }
}

/* ---------------------------------------------------------------------------
   Navbar — Aspen stacks a 56px logo row over a 40px tab row and parks search
   in the middle of the logo row, which leaves the tabs reading as a subnav
   rather than as the site's primary navigation. The two rows are collapsed
   into one here, with the tabs centred on it; search moves to the top of the
   sidebar (see `sidebar-search.js` and the section below).

   The tabs move from Mintlify's underline treatment to the `surface` variant of
   `@exa/design/ui/tabs` — a pill on the selected label. A centred underline in
   a single row has no list rule to sit on, so it would read as a stray mark.
   --------------------------------------------------------------------------- */
:root {
  /* neutral-text-secondary and -primary for the labels, neutral-background-
     secondary for the selected pill, then the neutral hover rung, and
     neutral-border-secondary at 30% for the focus ring. */
  --docs-nav-tab-text: var(--color-exa-gray-800);
  --docs-nav-tab-text-selected: var(--color-exa-gray-1000);
  --docs-nav-tab-pill: var(--color-exa-gray-200);
  --docs-nav-tab-hover: rgba(9, 9, 11, 0.04);
  --docs-nav-tab-ring: rgba(9, 9, 11, 0.07);
}

:root.dark {
  /* Dark keeps the selection a step lighter than the navbar it sits on. */
  --docs-nav-tab-text: var(--color-exa-gray-900);
  --docs-nav-tab-text-selected: var(--color-exa-gray-1000);
  --docs-nav-tab-pill: var(--color-exa-gray-300);
  --docs-nav-tab-hover: rgba(255, 255, 255, 0.06);
  --docs-nav-tab-ring: rgba(250, 250, 250, 0.09);
}

/* One breakpoint carries all of it: Mintlify's `lg`, where the sidebar rail
   appears and can hold the search trigger. Below it the rail is a drawer and
   search stays in the navbar, so the navbar also keeps Mintlify's two rows —
   centring the tabs there would drop them on top of the search field still
   sitting in the middle of the logo row. Splitting the two halves across
   different widths instead leaves a band with a hole where search used to be
   and a tab row stranded below it. */
@media (width >= 1024px) {
  /* The sidebar's trigger stands in for this one, which stays in the DOM to
     receive its forwarded clicks. `display: none` also takes it out of the tab
     order, so the two do not both answer for search. */
  #navbar div:has(> #search-bar-entry) {
    display: none;
  }

  /* Both rows claim the same grid cell, so the tab row overlays the logo row
     instead of adding its own 40px band. */
  #navbar div.relative:has(> div > .nav-tabs) {
    display: grid;
  }

  #navbar div.relative:has(> div > .nav-tabs) > * {
    grid-area: 1 / 1;
  }

  /* The row spans the full width so the tabs centre on the navbar rather than
     on whatever gap the logo and the controls leave. Its empty gutters lie
     over the logo row, so they must not take the clicks. */
  #navbar div:has(> .nav-tabs) {
    height: auto;
    align-self: center;
    justify-content: center;
    pointer-events: none;
  }

  #navbar .nav-tabs {
    gap: 4px;
    pointer-events: auto;
  }

  #navbar .nav-tabs-item {
    align-self: center;
    height: 32px;
    padding: 0 12px;
    border-radius: var(--docs-radius);
    font-weight: 400;
    /* Mintlify fakes a bolder selected label with a horizontal text-shadow,
       which double-strikes the glyphs once the weight is real. */
    text-shadow: none;
    color: var(--docs-nav-tab-text);
    transition:
      color var(--motion-duration-slow) var(--motion-easing-standard),
      background-color var(--motion-duration-slow) var(--motion-easing-standard);
  }

  /* The underline, painted as an absolutely positioned child of the link. */
  #navbar .nav-tabs-item > div {
    display: none;
  }

  #navbar .nav-tabs-item:hover {
    background: var(--docs-nav-tab-hover);
    color: var(--docs-nav-tab-text-selected);
  }

  #navbar .nav-tabs-item[data-active="true"] {
    background: var(--docs-nav-tab-pill);
    font-weight: 510;
    color: var(--docs-nav-tab-text-selected);
  }

  /* The sidebar's sticky offset and height are keyed off this; Mintlify's own
     value assumes the navbar is two rows tall. */
  :root {
    --mintlify-slot-header-height: 3.5rem !important;
  }
}

/* Mintlify-generated API and changelog components do not consume Exa tokens
   themselves. Use component hooks rather than overriding Tailwind globally. */
.tryit-button {
  background: var(--color-brand-solid) !important;
  color: var(--color-brand-on-solid) !important;
}

.tryit-button:hover:not(:disabled) {
  background: var(--color-brand-solid-hover) !important;
  opacity: 1;
}

.tryit-button [data-component-part="icon-svg"] {
  background-color: currentColor;
}

.tryit-button:focus-visible,
[data-component-part="update-label"]:focus-visible {
  outline: 2px solid var(--color-brand-solid);
  outline-offset: 3px;
}

/* Selected endpoint badges use a solid brand fill. Unselected badges carry
   Mintlify's method color classes; translate those to the semantic palette. */
.method-pill,
.method-nav-pill > span {
  background: var(--color-brand-solid) !important;
  color: var(--color-brand-on-solid) !important;
}

:is(.method-pill, .method-nav-pill > span)[class*="bg-blue-"],
[data-component-part="update-label"] {
  background: var(--color-brand-subtle) !important;
  color: var(--color-brand-foreground-secondary) !important;
}

:is(.method-pill, .method-nav-pill > span)[class*="bg-green-"] {
  background: var(--color-success-subtle) !important;
  color: var(--color-success-foreground-secondary) !important;
}

:is(.method-pill, .method-nav-pill > span)[class*="bg-red-"],
[data-component-part="field-required-pill"] {
  background: var(--color-danger-subtle) !important;
  color: var(--color-danger-foreground-secondary) !important;
}

:is(.method-pill, .method-nav-pill > span)[class*="bg-yellow-"],
:is(.method-pill, .method-nav-pill > span)[class*="bg-orange-"],
[data-component-part="field-deprecated-pill"] {
  background: var(--color-warning-subtle) !important;
  color: var(--color-warning-foreground-secondary) !important;
}

[data-component-part="field-info-pill"] {
  background: var(--color-neutral-subtle) !important;
  color: var(--color-neutral-foreground-secondary) !important;
}

[data-component-part="field-name"] {
  color: var(--color-brand-foreground-secondary) !important;
}

[data-component-part="update-label"]:hover {
  background: var(--color-brand-subtle-hover) !important;
}

.callout[data-callout-type="warning"] {
  background: var(--color-warning-subtle) !important;
  border-color: var(--color-warning-border) !important;
}

.callout[data-callout-type="warning"] [data-component-part="callout-content"],
.callout[data-callout-type="warning"] [data-component-part="callout-content"] *,
.callout[data-callout-type="warning"] [data-component-part="callout-icon"],
.callout[data-callout-type="warning"] [data-component-part="callout-icon"] * {
  color: var(--color-warning-foreground-secondary) !important;
}

/* ---------------------------------------------------------------------------
   Sidebar search — the trigger `sidebar-search.js` mounts above the page tree.
   It is a button, not an input: Mintlify's search is a dialog, and typing into
   a field that immediately hands off to one is a worse promise than a target
   that opens it. The treatment still borrows the input's affordances — border,
   placeholder rung, shortcut caps — because that is what makes it findable.
   --------------------------------------------------------------------------- */
:root {
  /* neutral-border-primary, then the neutral hover rung for the resting caps. */
  --docs-sidebar-search-border: rgba(9, 9, 11, 0.14);
  --docs-sidebar-search-border-hover: rgba(9, 9, 11, 0.28);
  --docs-sidebar-search-key: rgba(9, 9, 11, 0.05);
}

:root.dark {
  --docs-sidebar-search-border: rgba(250, 250, 250, 0.16);
  --docs-sidebar-search-border-hover: rgba(250, 250, 250, 0.32);
  --docs-sidebar-search-key: rgba(250, 250, 250, 0.08);
}

.docs-sidebar-search {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 8px;
  /* The right inset matches the `pr-5` on the page tree's scroll area, so the
     box ends where the navigation rows do. */
  margin: 20px 20px 4px 0;
  padding: 0 10px;
  height: 36px;
  border: 1px solid var(--docs-sidebar-search-border);
  border-radius: var(--docs-radius);
  background: transparent;
  font-size: 14px;
  line-height: 1;
  color: var(--docs-nav-tab-text);
  cursor: pointer;
  transition:
    color var(--motion-duration-slow) var(--motion-easing-standard),
    border-color var(--motion-duration-slow) var(--motion-easing-standard),
    transform var(--motion-duration-fast) var(--motion-easing-standard);
}

/* Reserve vertical space for the trigger sidebar-search.js mounts into
   #sidebar-content after hydration, so #navigation-items doesn't shift. */
@media (width >= 1024px) {
  #sidebar-content:not(:has(> .docs-sidebar-search)) {
    padding-top: 60px;
  }
}

.docs-sidebar-search:active {
  transform: scale(0.97);
}

/* The script mounts the trigger into whichever page tree Mintlify renders,
   including the one inside the narrow-viewport drawer. Those widths keep the
   navbar's own search button, so the trigger would be a second way to open the
   same dialog, sized to a rail it is no longer sitting in. */
@media (width < 1024px) {
  .docs-sidebar-search {
    display: none;
  }
}

.docs-sidebar-search:hover {
  border-color: var(--docs-sidebar-search-border-hover);
  color: var(--docs-nav-tab-text-selected);
}

.docs-sidebar-search:focus-visible {
  outline: none;
  border-color: var(--docs-sidebar-search-border-hover);
  box-shadow: 0 0 0 3px var(--docs-nav-tab-ring);
}

.docs-sidebar-search-icon {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
}

.docs-sidebar-search-label {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left;
}

.docs-sidebar-search-keys {
  flex: 0 0 auto;
  display: flex;
  gap: 3px;
}

.docs-sidebar-search-keys kbd {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 4px;
  background: var(--docs-sidebar-search-key);
  font-family: inherit;
  font-size: 11px;
  line-height: 1;
}

/* Keep CTAs aligned across cards with different description lengths. */
.card:has([data-component-part="card-cta"]) {
  display: flex;
  flex-direction: column;
}

.card:has([data-component-part="card-cta"]) > [data-component-part="card-content-container"] {
  display: flex;
  flex: 1;
  flex-direction: column;
}

.card:has([data-component-part="card-cta"]) .w-full:has(> [data-component-part="card-title"]) {
  display: flex;
  flex: 1;
  flex-direction: column;
}

.card [data-component-part="card-cta"] {
  margin-top: auto !important;
  padding-top: 2rem;
}

/* Keep quickstart steps on the same vertical rhythm. Mintlify Tabs put
   mb-8 on the inner code-block; CodeGroup puts it on the group itself. */
.docs-quickstart-section {
  display: flow-root;
}

.docs-quickstart-section + .docs-quickstart-section {
  margin-top: 2.5rem;
}

.docs-quickstart-auth > .steps {
  margin-top: 1.5rem;
}

.docs-quickstart-auth .step:last-child .tabs {
  margin-bottom: 0;
}

.docs-quickstart-auth + .docs-quickstart-section {
  margin-top: 1.5rem;
}

.docs-quickstart-section > h2:first-child {
  margin-top: 0 !important;
}

.docs-quickstart-section .code-block,
.docs-quickstart-section .code-group,
.docs-quickstart-section > :last-child {
  margin-bottom: 0 !important;
}

/* Columns collapse their own vertical margin, and the line after them
   is a span, so a sibling margin-top is ignored. The gap has to live
   on the columns. Last-child columns are already zeroed above. */
.docs-quickstart-section .columns {
  margin-bottom: 1.5rem;
}

/* playground query — static code-block lookalike whose trailing link opens the
   query in the API playground. Inline markup keeps both HTML and Markdown
   exports free of generated snippet variables. Sizing tracks native code blocks. */

.playground-query {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0.5rem 0 1.25rem;
  padding: 0.6rem 0.6rem 0.6rem 1rem;
  border: 1px solid var(--border-color, var(--color-exa-gray-300));
  border-radius: var(--docs-radius);
}

.dark .playground-query {
  border-color: rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.03);
}

.playground-query-text {
  flex: 1 1 auto;
  min-width: 0;
  padding: 0;
  border: 0;
  background: none;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--color-exa-gray-1000);
  overflow-wrap: anywhere;
}

/* Native inline code preserves query punctuation without smart quotes. */
.playground-query-text code {
  padding: 0;
  border: 0;
  background: none;
  font-size: inherit;
  line-height: inherit;
  color: inherit;
}

/* Mintlify renders inline code with quote pseudo-elements in some contexts. */
.playground-query-text code::before,
.playground-query-text code::after {
  content: none;
}

.dark .playground-query-text {
  color: var(--color-exa-gray-1000);
}

.playground-query-run {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 5px;
  color: var(--color-exa-gray-700);
  transition:
    color var(--motion-duration) var(--motion-easing-standard),
    background-color var(--motion-duration) var(--motion-easing-standard),
    transform var(--motion-duration-fast) var(--motion-easing-standard);
}

.playground-query-run:active {
  transform: scale(0.94);
}

/* The button sits in prose, which decorates anchors with an underline (applied
   as text-decoration in some themes and a background gradient in others). */
.playground-query-run,
.playground-query-run:hover,
.playground-query-run:focus,
.playground-query-run:visited {
  text-decoration: none !important;
  border-bottom: 0 !important;
  background-image: none !important;
}

.playground-query-run::before,
.playground-query-run::after {
  content: none !important;
  display: none !important;
}

.playground-query-run svg {
  display: block;
  width: 14px;
  height: 14px;
}

.playground-query-run:hover {
  color: var(--color-exa-gray-1000);
  background-color: rgba(0, 0, 0, 0.05);
}

.dark .playground-query-run:hover {
  color: var(--color-exa-gray-1000);
  background-color: rgba(255, 255, 255, 0.08);
}

/* ---------------------------------------------------------------------------
   Hover and press states for Mintlify chrome that ships without any: the
   navbar CTA, page pagination, and cards. The press scale reads as a physical
   response at the fast duration; reduced motion keeps the rest and drops it.
   --------------------------------------------------------------------------- */

#topbar-cta-button a {
  transition: transform var(--motion-duration-fast) var(--motion-easing-standard);
}

#topbar-cta-button a:active {
  transform: scale(0.97);
}

[data-component-part="pagination-prev"],
[data-component-part="pagination-next"] {
  transition:
    border-color var(--motion-duration) var(--motion-easing-standard),
    box-shadow var(--motion-duration) var(--motion-easing-standard),
    background-color var(--motion-duration) var(--motion-easing-standard);
}

[data-component-part="pagination-chevron"] {
  transition: transform var(--motion-duration) var(--motion-easing-out);
}

[data-component-part="pagination-next"]:hover [data-component-part="pagination-chevron"] {
  transform: translateX(2px);
}

[data-component-part="pagination-prev"]:hover [data-component-part="pagination-chevron"] {
  transform: translateX(-2px);
}

.card {
  transition:
    border-color var(--motion-duration) var(--motion-easing-standard),
    box-shadow var(--motion-duration) var(--motion-easing-standard);
}

@media (prefers-reduced-motion: reduce) {
  .docs-home-button:active,
  .docs-sidebar-search:active,
  .docs-tabs-menu-trigger:active,
  .code-group .code-block-copy-button button:active,
  .code-block .code-block-copy-button button:active,
  .code-group [data-component-part="code-group-tab-bar"] button:not([role="tab"]):active,
  #topbar-cta-button a:active,
  .playground-query-run:active {
    transform: none;
  }
}

/* ---------------------------------------------------------------------------
   base-ui menus — the theme menu, the page's "More actions" menu, and the
   code-group language menu all render `div[role="menu"][data-side]` with
   `data-starting-style`/`data-ending-style` attributes during enter and exit.
   Mintlify times those at 100ms ease-out on scale+opacity; this retimes them
   to the tokens and adds the small travel the design system's menus take. The
   docs `.docs-tabs-menu` listbox is a `[role="listbox"]`, not a menu, so it is
   untouched. `motion-reduce:transition-none` on the element already snaps
   reduced-motion users past all of this.
   --------------------------------------------------------------------------- */
[role="menu"][data-side] {
  transition-property: opacity, scale, translate;
  transition-duration: var(--motion-duration-slow);
  transition-timing-function: var(--motion-easing-out);
}

[role="menu"][data-side][data-starting-style] {
  opacity: 0;
  scale: 0.96;
  translate: 0 -4px;
}

[role="menu"][data-side="top"][data-starting-style] {
  translate: 0 4px;
}

[role="menu"][data-side][data-ending-style] {
  opacity: 0;
  scale: 0.98;
  translate: 0 -2px;
  transition-duration: var(--motion-duration);
}

[role="menu"][data-side="top"][data-ending-style] {
  translate: 0 2px;
}

[role="menu"] [role="menuitem"] {
  transition:
    background-color var(--motion-duration-fast) var(--motion-easing-standard),
    color var(--motion-duration-fast) var(--motion-easing-standard);
}

/* The page header's "Copy page | More actions" pair is one segmented control,
   so the press scale goes on the wrapper rather than either half. */
#page-context-menu {
  transition: transform var(--motion-duration-fast) var(--motion-easing-standard);
}

#page-context-menu:has(button:active) {
  transform: scale(0.98);
}

@media (prefers-reduced-motion: reduce) {
  #page-context-menu:has(button:active) {
    transform: none;
  }
}

/* ---------------------------------------------------------------------------
   The native footer link is server-rendered by docs.json. Mintlify has no
   footer-logo toggle, so hide the duplicate header logo and keep one native
   social group beside the link at every breakpoint.
   --------------------------------------------------------------------------- */
#footer.advanced-footer:has(a[href="https://exa.ai/docs/llms.txt"]) > div {
  max-width: none;
  padding: 2.5rem 1.25rem 7rem;
  gap: 1.5rem;
}

#footer.advanced-footer > div > div:first-child {
  flex-direction: row;
  align-items: center;
  gap: 3rem;
}

#footer.advanced-footer > div > div:first-child > div:has(.nav-logo) {
  display: none;
}

/* Use the desktop social group on mobile too; hide its native mobile copy. */
#footer.advanced-footer > div > div:first-child > div:has(> a.h-fit) {
  display: flex;
  min-width: 0;
  gap: 1.5rem;
}

#footer.advanced-footer > div > div:has(> a.h-fit) {
  display: none;
}

#footer.advanced-footer > div > div > div:has(a[href="https://exa.ai/docs/llms.txt"]) {
  display: block;
  order: 1;
  flex: initial;
  margin-left: auto;
}

@media (width >= 1024px) {
  #footer.advanced-footer:has(a[href="https://exa.ai/docs/llms.txt"]) > div {
    padding-left: 5.5rem;
    padding-right: 2.5rem;
  }
}

#footer a[href="https://exa.ai/docs/llms.txt"] {
  margin-left: auto;
  max-width: none;
  font-size: 0.875rem;
  line-height: 1.25rem;
  white-space: normal;
  color: var(--color-exa-gray-700);
  text-decoration: none;
}

#footer a[href="https://exa.ai/docs/llms.txt"]:hover {
  color: var(--color-exa-gray-900);
}

#footer a[href="https://exa.ai/docs/llms.txt"]:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
  border-radius: 2px;
}

.dark #footer a[href="https://exa.ai/docs/llms.txt"] {
  color: var(--color-exa-gray-800);
}

.dark #footer a[href="https://exa.ai/docs/llms.txt"]:hover {
  color: var(--color-exa-gray-1000);
}

/* ---------------------------------------------------------------------------
   Sidebar brand icons — frontmatter `icon:` file paths render as <img>, which
   cannot follow text color or the active-page accent. These rules hide the
   bitmap (zero-width content box) and repaint each mark as a mask tinted like
   Mintlify's built-in icons. SVGs are inlined because CSS url() cannot see the
   deployment base path. Regenerate with docs/scripts/gen-sidebar-icon-css.py.
   --------------------------------------------------------------------------- */
/* sidebar-icons:generated-begin — generated by docs/scripts/gen-sidebar-icon-css.py, do not hand-edit */
#sidebar-content img[src*="/images/sidebar-icons/"] {
  box-sizing: border-box;
  width: 1rem;
  height: 1rem;
  padding-left: 1rem;
  background-color: rgb(var(--gray-400));
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: 100%;
  mask-size: 100%;
  -webkit-mask-image: var(--sidebar-icon-mask);
  mask-image: var(--sidebar-icon-mask);
}

.dark #sidebar-content img[src*="/images/sidebar-icons/"] {
  background-color: rgb(var(--gray-500));
}

#sidebar-content a[aria-current="page"] img[src*="/images/sidebar-icons/"],
.dark #sidebar-content a[aria-current="page"] img[src*="/images/sidebar-icons/"] {
  background-color: var(--docs-accent);
}

@media (forced-colors: active) {
  #sidebar-content img[src*="/images/sidebar-icons/"] {
    background-color: CanvasText;
  }
}

#sidebar-content img[src$="/sidebar-icons/affiliatecom.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/affiliatecom.svg");
}

#sidebar-content img[src$="/sidebar-icons/ag2.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/ag2.svg");
}

#sidebar-content img[src$="/sidebar-icons/anthropic.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/anthropic.svg");
}

#sidebar-content img[src$="/sidebar-icons/baselayer.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/baselayer.svg");
}

#sidebar-content img[src$="/sidebar-icons/baseten.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/baseten.svg");
}

#sidebar-content img[src$="/sidebar-icons/browserbase.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/browserbase.svg");
}

#sidebar-content img[src$="/sidebar-icons/codex.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/codex.svg");
}

#sidebar-content img[src$="/sidebar-icons/crewai.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/crewai.svg");
}

#sidebar-content img[src$="/sidebar-icons/elevenlabs.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/elevenlabs.svg");
}

#sidebar-content img[src$="/sidebar-icons/exa-for-sheets.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/exa-for-sheets.svg");
}

#sidebar-content img[src$="/sidebar-icons/exa-slack.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/exa-slack.svg");
}

#sidebar-content img[src$="/sidebar-icons/fiber.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/fiber.svg");
}

#sidebar-content img[src$="/sidebar-icons/financialdatasets.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/financialdatasets.svg");
}

#sidebar-content img[src$="/sidebar-icons/fireworks.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/fireworks.svg");
}

#sidebar-content img[src$="/sidebar-icons/grok-build.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/grok-build.svg");
}

#sidebar-content img[src$="/sidebar-icons/gumloop.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/gumloop.svg");
}

#sidebar-content img[src$="/sidebar-icons/hermes-agent.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/hermes-agent.svg");
}

#sidebar-content img[src$="/sidebar-icons/jinko.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/jinko.svg");
}

#sidebar-content img[src$="/sidebar-icons/langchain.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/langchain.svg");
}

#sidebar-content img[src$="/sidebar-icons/llamaindex.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/llamaindex.svg");
}

#sidebar-content img[src$="/sidebar-icons/macrobond.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/macrobond.svg");
}

#sidebar-content img[src$="/sidebar-icons/n8n.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/n8n.svg");
}

#sidebar-content img[src$="/sidebar-icons/nevermined.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/nevermined.svg");
}

#sidebar-content img[src$="/sidebar-icons/openai.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/openai.svg");
}

#sidebar-content img[src$="/sidebar-icons/openclaw.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/openclaw.svg");
}

#sidebar-content img[src$="/sidebar-icons/openhuman.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/openhuman.svg");
}

#sidebar-content img[src$="/sidebar-icons/openrouter.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/openrouter.svg");
}

#sidebar-content img[src$="/sidebar-icons/particle.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/particle.svg");
}

#sidebar-content img[src$="/sidebar-icons/polymarket.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/polymarket.svg");
}

#sidebar-content img[src$="/sidebar-icons/pydantic-ai.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/pydantic-ai.svg");
}

#sidebar-content img[src$="/sidebar-icons/similarweb.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/similarweb.svg");
}

#sidebar-content img[src$="/sidebar-icons/snowflake.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/snowflake.svg");
}

#sidebar-content img[src$="/sidebar-icons/stripe.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/stripe.svg");
}

#sidebar-content img[src$="/sidebar-icons/tempo.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/tempo.svg");
}

#sidebar-content img[src$="/sidebar-icons/truefoundry.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/truefoundry.svg");
}

#sidebar-content img[src$="/sidebar-icons/vercel.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/vercel.svg");
}

#sidebar-content img[src$="/sidebar-icons/world.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/world.svg");
}

#sidebar-content img[src$="/sidebar-icons/x402.svg"] {
  --sidebar-icon-mask: url("https://exa.ai/docs/images/sidebar-icons/x402.svg");
}
/* sidebar-icons:generated-end */
