/* Consumer document shell. Shared typography, actions and fluid reading grid.
   Shape scale: square navigation/accents, 12px controls, 16px panels, pill actions.
   Layers: sticky mobile contents 10, header 20, skip link 30; native dialog uses the top layer. */
html[data-docs] {
  --docs-bg: var(--fs-docs-light-bg, #ffffff);
  --docs-text: var(--fs-docs-light-text, #18212e);
  --docs-heading: var(--fs-docs-light-heading, #101722);
  --docs-h1-size: var(--fs-docs-light-h1-size, 2rem);
  --docs-h2-size: var(--fs-docs-light-h2-size, 1.5rem);
  --docs-h3-size: var(--fs-docs-light-h3-size, 1.25rem);
  --docs-h4-size: var(--fs-docs-light-h4-size, 1.125rem);
  --docs-muted: var(--fs-docs-light-muted, #526075);
  --docs-surface: var(--fs-docs-light-surface, #ffffff);
  --docs-soft: var(--fs-docs-light-soft, #f2f5fa);
  --docs-border: var(--fs-docs-light-border, #cbd5e3);
  --docs-accent: var(--fs-docs-light-accent, var(--fs-action));
  --docs-selected: var(--fs-docs-light-selected, #e1edff);
  --docs-code: var(--fs-docs-light-code, #315a91);
  --docs-success: var(--fs-docs-light-success, #157957);
  --docs-warning: var(--fs-docs-light-warning, #9a5b00);
  --docs-danger: var(--fs-docs-light-danger, #c2353f);
  --docs-info-surface: var(--fs-docs-light-info-surface, #f0f6ff);
  --docs-success-surface: var(--fs-docs-light-success-surface, #eef9f3);
  --docs-warning-surface: var(--fs-docs-light-warning-surface, #fff7e8);
  --docs-danger-surface: var(--fs-docs-light-danger-surface, #fff1f0);
  --docs-logo-light: var(--fs-docs-light-logo-light, block);
  --docs-logo-dark: var(--fs-docs-light-logo-dark, none);
  --docs-control-radius: var(--fs-docs-light-control-radius, var(--fs-radius-sm));
  --docs-panel-radius: var(--fs-docs-light-panel-radius, 1rem);
  --docs-shell-width: var(--fs-docs-light-shell-width, 90rem);
  --docs-grid-gap: var(--fs-docs-light-grid-gap, 2rem);
  --docs-sidebar-width: var(--fs-docs-light-sidebar-width, 16rem);
  --docs-toc-width: var(--fs-docs-light-toc-width, 14rem);
  --docs-header-height: var(--fs-docs-light-header-height, 4.5rem);
  --docs-header-shadow: var(--fs-docs-light-header-shadow, 0 4px 24px rgb(0 0 0 / 0.05));
  --docs-sidebar-top: var(--fs-docs-light-sidebar-top, 2.5rem);
  --docs-article-top: var(--fs-docs-light-article-top, 2.75rem);
  --docs-viewport-gutter: var(--fs-docs-light-viewport-gutter, 2rem);
  color-scheme: light;
  background: var(--docs-bg);
  scroll-padding-top: 0;
  scroll-padding-bottom: 1rem;
  scroll-behavior: auto;
}

html[data-docs-theme='dark'] {
  --docs-header-shadow: var(--fs-docs-dark-header-shadow, 0 4px 24px rgb(0 0 0 / 0.2));
  --docs-bg: var(--fs-docs-dark-bg, var(--fs-surface));
  --docs-text: var(--fs-docs-dark-text, #f8fafc);
  --docs-heading: var(--fs-docs-dark-heading, #f8fafc);
  --docs-muted: var(--fs-docs-dark-muted, var(--fs-text-secondary));
  --docs-surface: var(--fs-docs-dark-surface, var(--fs-surface-raised));
  --docs-soft: var(--fs-docs-dark-soft, var(--fs-surface-raised));
  --docs-border: var(--fs-docs-dark-border, var(--fs-border-strong));
  --docs-accent: var(--fs-docs-dark-accent, var(--fs-accent));
  --docs-selected: var(--fs-docs-dark-selected, #17365f);
  --docs-code: var(--fs-docs-dark-code, #b1cded);
  --docs-success: var(--fs-docs-dark-success, #57c99c);
  --docs-warning: var(--fs-docs-dark-warning, #ffc15a);
  --docs-danger: var(--fs-docs-dark-danger, #ff9294);
  --docs-info-surface: var(--fs-docs-dark-info-surface, #111f34);
  --docs-success-surface: var(--fs-docs-dark-success-surface, #10251f);
  --docs-warning-surface: var(--fs-docs-dark-warning-surface, #241e14);
  --docs-danger-surface: var(--fs-docs-dark-danger-surface, #28191d);
  --docs-logo-light: var(--fs-docs-dark-logo-light, none);
  --docs-logo-dark: var(--fs-docs-dark-logo-dark, block);
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  html[data-docs]:not([data-docs-theme]) {
    --docs-header-shadow: var(--fs-docs-dark-header-shadow, 0 4px 24px rgb(0 0 0 / 0.2));
    --docs-bg: var(--fs-docs-dark-bg, var(--fs-surface));
    --docs-text: var(--fs-docs-dark-text, #f8fafc);
    --docs-heading: var(--fs-docs-dark-heading, #f8fafc);
    --docs-muted: var(--fs-docs-dark-muted, var(--fs-text-secondary));
    --docs-surface: var(--fs-docs-dark-surface, var(--fs-surface-raised));
    --docs-soft: var(--fs-docs-dark-soft, var(--fs-surface-raised));
    --docs-border: var(--fs-docs-dark-border, var(--fs-border-strong));
    --docs-accent: var(--fs-docs-dark-accent, var(--fs-accent));
    --docs-selected: var(--fs-docs-dark-selected, #17365f);
    --docs-code: var(--fs-docs-dark-code, #b1cded);
    --docs-success: var(--fs-docs-dark-success, #57c99c);
    --docs-warning: var(--fs-docs-dark-warning, #ffc15a);
    --docs-danger: var(--fs-docs-dark-danger, #ff9294);
    --docs-info-surface: var(--fs-docs-dark-info-surface, #111f34);
    --docs-success-surface: var(--fs-docs-dark-success-surface, #10251f);
    --docs-warning-surface: var(--fs-docs-dark-warning-surface, #241e14);
    --docs-danger-surface: var(--fs-docs-dark-danger-surface, #28191d);
    --docs-logo-light: var(--fs-docs-dark-logo-light, none);
    --docs-logo-dark: var(--fs-docs-dark-logo-dark, block);
    color-scheme: dark;
  }
}

html[data-docs] body {
  background: var(--docs-bg);
  color: var(--docs-text);
}

.fs-docs {
  --fs-text: var(--docs-text);
  --fs-link: var(--docs-accent);
  --fs-link-hover: var(--docs-accent);
  --fs-focus: var(--docs-accent);
  --fs-control-hover: var(--docs-selected);
  --dg-font-family: var(--fs-font-family);
  --dg-text: var(--docs-text);
  --dg-muted: var(--docs-muted);
  --dg-surface: var(--docs-surface);
  --dg-surface-alt: var(--docs-soft);
  --dg-border: var(--docs-border);
  --dg-accent: var(--docs-accent);
  --dg-on-accent: var(--docs-bg);
  --dg-code: var(--docs-code);
  --dg-success: var(--docs-success);
  --dg-warning: var(--docs-warning);
  --dg-danger: var(--docs-danger);
  --dg-font-size: 1rem;
  --dg-line-height: 1.7;
  --dg-space: 1.25rem;
  --dg-radius: var(--docs-panel-radius);
  --dg-anchor-offset: 7rem;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  color: var(--docs-text);
  background: var(--docs-bg);
  font-family: var(--dg-font-family);
  -webkit-font-smoothing: antialiased;
}

.fs-docs a {
  color: var(--docs-accent);
  text-underline-offset: 0.2em;
}

.fs-docs :is(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--docs-accent);
  outline-offset: 3px;
}

.fs-docs :is(a, button, select, summary, input, .dg-tab-label) {
  transition: color var(--fs-duration-fast),
  background-color var(--fs-duration-fast),
  border-color var(--fs-duration-fast);
}

.fs-docs ::selection {
  color: var(--docs-heading);
  background: var(--docs-selected);
}

.fs-docs-skip {
  position: fixed;
  z-index: 30;
  top: 0.75rem;
  left: 1rem;
  padding: 0.6rem 1rem;
  background: var(--docs-surface);
  transform: translateY(-200%);
}

.fs-docs-skip:focus {
  transform: none;
}

/* The header and article share a fixed navigation column and the same gutter. */
.fs-docs-header-sentinel {
  flex: 0 0 1px;
  margin-bottom: -1px;
  visibility: hidden;
  pointer-events: none;
}

.fs-docs-header {
  position: sticky;
  top: 0;
  z-index: 20;
  flex-shrink: 0;
  width: 100%;
  background: var(--docs-bg);
}

.fs-docs-header[data-scrolled] {
  background: var(--docs-surface);
  box-shadow: var(--docs-header-shadow);
}

.fs-docs-header-inner {
  max-width: var(--docs-shell-width);
  min-height: var(--docs-header-height);
  padding: 0.875rem 2rem;
  margin-inline: auto;
  display: grid;
  grid-template-columns: var(--docs-sidebar-width) minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--docs-grid-gap);
}

.fs-docs-brand {
  display: block;
  flex-shrink: 0;
}

.fs-docs-logo-light {
  display: var(--docs-logo-light);
}

.fs-docs-logo-dark {
  display: var(--docs-logo-dark);
}

.fs-docs-menu-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: var(--docs-control-radius);
  background: transparent;
  color: var(--docs-text);
  cursor: pointer;
}

.fs-docs-menu-toggle:hover {
  background: var(--docs-soft);
}

.fs-docs-menu-toggle svg {
  width: 1.5rem;
  height: 1.5rem;
}

.fs-docs-menu-toggle .fs-docs-menu-close-icon,
.fs-docs-menu-toggle[aria-expanded='true'] .fs-docs-menu-open-icon {
  display: none;
}

.fs-docs-menu-toggle[aria-expanded='true'] .fs-docs-menu-close-icon {
  display: block;
}

.fs-docs-search {
  display: none;
  align-items: center;
  gap: 0.625rem;
  grid-column: 2;
  width: min(24rem, 100%);
  min-height: 2.75rem;
  padding: 0.6rem 1rem;
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-control-radius);
  background: var(--docs-soft);
  color: var(--docs-text);
  font: inherit;
  font-size: 0.9375rem;
  line-height: 1.5;
  cursor: pointer;
  margin-left: 0;
}

.fs-docs-search:hover {
  border-color: var(--docs-accent);
  background: var(--docs-surface);
  color: var(--docs-heading);
}

.fs-docs-search > svg {
  width: 1.125rem;
  height: 1.125rem;
  flex-shrink: 0;
  color: var(--docs-muted);
}

.fs-docs-search-label {
  flex: 1;
  text-align: left;
}

.fs-docs-search kbd,
.fs-docs-search-footer kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.375rem;
  min-height: 1.375rem;
  padding: 0.0625rem 0.3125rem;
  border: 1px solid var(--docs-border);
  border-radius: 0.25rem;
  background: var(--docs-bg);
  color: var(--docs-muted);
  font: inherit;
  font-size: 0.75rem;
  line-height: 1;
  white-space: nowrap;
}

.fs-docs-theme {
  grid-column: 3;
  display: none;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  margin-left: auto;
  padding: 0;
  border: 0;
  border-radius: var(--docs-control-radius);
  background: transparent;
  color: var(--docs-muted);
  cursor: pointer;
}

.fs-docs-theme:is(:hover, :focus-visible) {
  color: var(--docs-heading);
  background: var(--docs-soft);
}

.fs-docs-theme svg {
  display: none;
  width: 1.25rem;
  height: 1.25rem;
}

.fs-docs-theme[data-theme-preference='system'] [data-theme-icon='system'],
.fs-docs-theme[data-theme-preference='light'] [data-theme-icon='light'],
.fs-docs-theme[data-theme-preference='dark'] [data-theme-icon='dark'] {
  display: block;
}

.fs-docs[data-enhanced] :is(.fs-docs-search, .fs-docs-theme) {
  display: inline-flex;
}

.fs-docs .fs-docs-account {
  grid-column: 4;
  align-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0.3125rem 1rem;
  border-radius: var(--fs-radius-pill);
  background: var(--fs-action);
  color: var(--fs-on-action);
  font-size: var(--fs-type-action-size);
  font-weight: var(--fs-type-action-weight);
  line-height: var(--fs-type-action-line-height);
  white-space: nowrap;
  text-decoration: none;
  margin-left: auto;
}

.fs-docs[data-enhanced] .fs-docs-account {
  margin-left: 0;
}

.fs-docs .fs-docs-account:hover {
  background: var(--fs-action-hover);
  color: var(--fs-on-action);
}

/* Sidebar: indentation establishes hierarchy; only the current page has a marker. */
.fs-docs-grid {
  flex: 1;
  width: 100%;
  max-width: var(--docs-shell-width);
  margin-inline: auto;
  padding: 0 2rem;
  display: grid;
  align-content: start;
  grid-template-columns: var(--docs-sidebar-width) minmax(0, 1fr);
  gap: var(--docs-grid-gap);
}

.fs-docs-navigation {
  min-width: 0;
}

.fs-docs[data-without-navigation] .fs-docs-grid {
  grid-template-columns: minmax(0, 1fr);
}

.fs-docs-menu {
  position: sticky;
  top: calc(var(--docs-header-height) + var(--docs-sidebar-top));
  max-height: calc(
    100dvh - var(--docs-header-height) - var(--docs-sidebar-top) - var(--docs-viewport-gutter)
  );
  overflow: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--docs-border) transparent;
  margin-top: var(--docs-sidebar-top);
  padding: 0.25rem 1.25rem 0.5rem 0.25rem;
}

.fs-docs .dg-sidenav {
  padding: 0;
  overflow: visible;
  font-size: 0.875rem;
}

.fs-docs :is(.dg-toc-tree, .dg-toc-children) {
  list-style: none;
  padding: 0;
  margin: 0;
}

.fs-docs .dg-toc-item {
  margin: 0;
  padding: 0;
}

.fs-docs .dg-toc-tree > .dg-toc-item {
  margin-bottom: 0.3rem;
}

.fs-docs :is(.dg-toc-summary, .dg-toc-link) {
  min-height: 2.5rem;
  border-radius: 0;
  font-size: 0.9375rem;
  line-height: 1.5;
}

.fs-docs .dg-toc-summary {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.55rem 0.5rem;
  cursor: pointer;
}

.fs-docs .dg-toc-label {
  padding: 0;
  color: var(--docs-heading);
  font-size: inherit;
  font-weight: 600;
  line-height: inherit;
}

.fs-docs .dg-toc-text {
  display: block;
  min-width: 0;
}

.fs-docs .dg-toc-summary .dg-toc-text {
  flex: 1;
}

.fs-docs .dg-toc-chevron {
  width: 0.875rem;
  height: 0.875rem;
}

.fs-docs .dg-toc-children {
  border-left: 0;
  margin: 0.2rem 0 1.1rem 0.5rem;
  padding: 0;
}

/* DocsGen supplies an Overview child as well as a duplicate parent link. */
.fs-docs .dg-toc-children > .dg-toc-leaf:first-child {
  display: none;
}

.fs-docs .dg-toc-leaf {
  display: block;
  padding: 0;
  border-radius: 0;
  background: transparent;
}

.fs-docs .dg-toc-spacer {
  display: none;
}

.fs-docs .dg-toc-link {
  display: block;
  position: relative;
  padding: 0.5rem 0.5rem;
  color: var(--docs-text);
  text-decoration: none;
}

.fs-docs .dg-toc-children .dg-toc-link {
  padding-left: 1rem;
}

.fs-docs .dg-toc-link[aria-current='page'] {
  color: var(--docs-accent);
  background: transparent;
  font-weight: 650;
  box-shadow: none;
}

.fs-docs .dg-toc-link[aria-current='page']::before {
  content: '';
  position: absolute;
  top: 0.4rem;
  bottom: 0.4rem;
  left: -1px;
  width: 2px;
  background: var(--docs-accent);
}

.fs-docs .dg-toc-summary:hover,
.fs-docs .dg-toc-link:hover {
  color: var(--docs-heading);
  background: var(--docs-soft);
  text-decoration: none;
}

.fs-docs .dg-toc-link[aria-current='page']:hover {
  color: var(--docs-accent);
}

.fs-docs .dg-toc-link[href='/docs/'] {
  color: var(--docs-accent);
  font-size: 1rem;
  font-weight: 700;
}

.fs-docs .dg-toc-tree > .dg-toc-item:has(.dg-toc-link[href='/docs/']) {
  margin-bottom: 1rem;
}

.fs-docs .dg-toc-link[href='/docs/']::before {
  content: none;
}

/* Reading composition. Keep side furniture subordinate to the article. */
.fs-docs-main {
  min-width: 0;
  padding-top: var(--docs-article-top);
}

.fs-docs-article-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--docs-toc-width);
  gap: var(--docs-grid-gap);
}

.fs-docs-article,
.fs-docs-failure {
  /* Keep both sticky containing blocks extending through the article's end space. */
  padding-bottom: max(2rem, env(safe-area-inset-bottom));
}

.fs-docs-article {
  min-width: 0;
}

.fs-docs-breadcrumbs {
  color: var(--docs-muted);
  font-size: 0.9375rem;
  line-height: 1.6;
  margin-bottom: 1.5rem;
}

.fs-docs-breadcrumbs a[href] {
  color: var(--docs-accent);
  text-decoration: none;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

.fs-docs-breadcrumbs a[href]:is(:hover, :focus-visible) {
  text-decoration-line: underline;
}

.fs-docs .dg-breadcrumbs {
  font-size: inherit;
}

.fs-docs .dg-breadcrumb-list {
  padding: 0;
  margin: 0;
  font-size: inherit;
}

.fs-docs .dg-markdown-content {
  overflow-wrap: anywhere;
  font-size: var(--fs-type-body-size);
  line-height: 1.7;
}

.fs-docs .dg-markdown-content :is(h1, h2, h3, h4, h5, h6) {
  color: var(--docs-heading);
  font-family: var(--fs-font-family-display);
}

.fs-docs .dg-markdown-content h1 {
  font-size: var(--docs-h1-size);
  font-weight: var(--fs-type-display-weight);
  line-height: 1.25;
  letter-spacing: var(--fs-type-display-tracking);
  margin: 0 0 1.5rem;
  text-wrap: balance;
}

.fs-docs .dg-markdown-content > .fs-docs-mobile-toc ~ p:first-of-type {
  font-size: var(--fs-type-lead-size);
  line-height: var(--fs-type-lead-line-height);
  color: var(--docs-text);
  margin-bottom: 2.25rem;
}

.fs-docs .dg-markdown-content h2 {
  font-size: var(--docs-h2-size);
  font-weight: var(--fs-type-section-weight);
  line-height: 1.25;
  margin: 2.75rem 0 1rem;
  letter-spacing: var(--fs-type-section-tracking);
  text-wrap: pretty;
}

.fs-docs .dg-markdown-content h3 {
  font-size: var(--docs-h3-size);
  font-weight: var(--fs-type-compact-weight);
  line-height: var(--fs-type-compact-line-height);
  margin: 2rem 0 0.75rem;
  letter-spacing: var(--fs-type-compact-tracking);
}

.fs-docs .dg-markdown-content :is(h4, h5, h6) {
  font-size: 1rem;
  font-weight: var(--fs-type-compact-weight);
  line-height: 1.4;
  letter-spacing: 0;
  margin: 1.5rem 0 0.5rem;
}

.fs-docs .dg-markdown-content h4 {
  font-size: var(--docs-h4-size);
}

.fs-docs .dg-markdown-content :is(h1, h2, h3, h4, h5, h6, [id]) {
  scroll-margin-top: 7rem;
}

.fs-docs .dg-markdown-content :is(p, ul, ol, dl) {
  margin-bottom: 1.25rem;
}

/* Keep native markers and numbering; these rules exclude tabs and contents lists. */
.fs-docs .dg-markdown-content ol:not([class]) {
  padding-inline-start: 1.75rem;
  list-style-position: outside;
}

.fs-docs .dg-markdown-content ul:not([class]) {
  padding-inline-start: 1.375rem;
  list-style-position: outside;
}

.fs-docs .dg-markdown-content :is(ul, ol):not([class]) > li {
  padding-inline-start: 0.375rem;
}

.fs-docs .dg-markdown-content :is(ul, ol):not([class]) > li + li {
  margin-top: 0.625rem;
}

.fs-docs .dg-markdown-content :is(ul, ol):not([class]) > li::marker {
  color: var(--docs-text);
  font-size: 1em;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

.fs-docs .dg-markdown-content li > :is(ul, ol):not([class]) {
  margin-block: 0.625rem 0;
}

.fs-docs .dg-markdown-content li > p {
  margin-bottom: 0.625rem;
}

.fs-docs .dg-markdown-content li > p:last-child {
  margin-bottom: 0;
}

.fs-docs .dg-markdown-content :is(p, li, td, th, dd) a:not(nav a) {
  text-decoration-line: none;
  text-decoration-thickness: 1px;
  text-decoration-color: currentColor;
}

.fs-docs .dg-markdown-content :is(p, li, td, th, dd) a:not(nav a):is(:hover, :focus-visible) {
  text-decoration-line: underline;
}

/* Reserve a nonbreaking suffix, then paint the original SVG in that space.
   This avoids painting a mask across fragmented inline boxes in Safari. */
.fs-docs a:has(> .dg-external-link) > .dg-external-link {
  position: absolute;
  display: inline-block;
  width: 0.875em;
  height: 0.875em;
  margin-inline-start: 0.2em;
  margin-block-start: 0.25em;
  border: 0;
  box-shadow: none;
}

.fs-docs a:has(> .dg-external-link)::after {
  content: '\00a0';
  padding-inline-end: 0.875em;
}

.fs-docs .dg-heading-anchor {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 1em;
  min-height: 1.5rem;
  margin-inline-start: 0.375rem;
  vertical-align: -0.125em;
  line-height: 1;
  border-radius: var(--docs-control-radius);
  color: var(--docs-muted);
  opacity: 0;
  text-decoration: none;
}

.fs-docs .dg-markdown-content :is(h1, h2, h3, h4, h5, h6):hover .dg-heading-anchor,
.fs-docs .dg-heading-anchor:focus-visible {
  opacity: 1;
}

.fs-docs .dg-heading-anchor:is(:hover, :focus-visible) {
  color: var(--docs-accent);
  background: var(--docs-soft);
}

.fs-docs .dg-heading-anchor > span {
  display: flex;
  line-height: 0;
}

.fs-docs .dg-heading-anchor svg {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}

.fs-docs .dg-heading-anchor[data-copied] {
  position: relative;
  opacity: 1;
  color: var(--docs-success);
}

.fs-docs .dg-heading-anchor[data-copied] > span {
  visibility: hidden;
}

.fs-docs .dg-heading-anchor[data-copied]::after {
  content: '\2713';
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--fs-font-family);
  font-size: 1.25rem;
}

.fs-docs-copy-status {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.fs-docs-copy-status[data-visible] {
  position: fixed;
  inset: auto 1rem calc(1rem + env(safe-area-inset-bottom));
  z-index: 30;
  width: fit-content;
  max-width: calc(100% - 2rem);
  height: auto;
  margin-inline: auto;
  padding: 0.75rem 1rem;
  overflow: visible;
  clip-path: none;
  white-space: normal;
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-control-radius);
  background: var(--docs-surface);
  color: var(--docs-text);
  box-shadow: var(--docs-header-shadow);
  pointer-events: none;
}

.fs-docs .dg-markdown-content :not(pre) > code {
  border: 1px solid var(--docs-border);
  border-radius: 2px;
  padding: 0.1em 0.3em;
  font-size: 0.8125em;
}

.fs-docs .dg-markdown-content pre {
  max-width: 100%;
  overflow-x: auto;
  margin-block: 1.5rem;
  border-radius: var(--docs-panel-radius);
  background: var(--docs-soft);
}

.fs-docs .dg-markdown-content pre code {
  line-height: 1.7;
}

.fs-docs .dg-code-copy-btn {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: var(--docs-control-radius);
  color: var(--docs-muted);
  background: transparent;
  line-height: 1;
}

.fs-docs .dg-code-copy-btn:is(:hover, :focus-visible) {
  color: var(--docs-accent);
  background: var(--docs-selected);
}

.fs-docs .dg-code-copy-btn .dg-copy-icon {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
  line-height: 0;
}

.fs-docs .dg-code-copy-btn .dg-copy-icon svg {
  display: none;
}

.fs-docs .dg-code-copy-btn .dg-copy-icon::before {
  content: '';
  display: block;
  width: 100%;
  height: 100%;
  background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='8' width='12' height='13' rx='2'/%3E%3Cpath d='M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}

/* DocsGen exposes this state through its accessible label; retain its copy behavior. */
.fs-docs .dg-code-copy-btn[aria-label='Copied to clipboard'] .dg-copy-icon::before {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m5 12 4 4L19 6' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.fs-docs .dg-markdown-content blockquote {
  padding: 0.25rem 1.25rem;
  border-left: 2px solid var(--docs-border);
  border-radius: 0;
}

.fs-docs .dg-markdown-content blockquote > :last-child {
  margin-bottom: 0;
}

.fs-docs .dg-markdown-content img {
  display: block;
  max-width: 100%;
  height: auto;
  margin-block: 1.5rem;
}

.fs-docs .dg-table-responsive {
  --docs-table-rule: color-mix(in srgb, var(--docs-border) 65%, var(--docs-bg));
  margin-block: 1.5rem 2rem;
  border: 1px solid var(--docs-table-rule);
  border-radius: var(--docs-panel-radius);
  background: var(--docs-bg);
  scrollbar-color: var(--docs-border) var(--docs-bg);
}

.fs-docs .dg-markdown-content table {
  margin: 0;
  font-size: 1rem;
  line-height: 1.6;
  font-variant-numeric: tabular-nums;
  /* Keep words readable; the native focusable wrapper scrolls wider tables. */
  overflow-wrap: break-word;
  word-break: normal;
}

.fs-docs .dg-markdown-content :is(th, td) {
  padding: 0.875rem 1rem;
  vertical-align: top;
  border-bottom-color: var(--docs-table-rule, var(--docs-border));
}

.fs-docs .dg-markdown-content th {
  color: var(--docs-heading);
  font-size: 0.9375rem;
  font-weight: 600;
  background: var(--docs-soft);
}

.fs-docs .dg-markdown-content tbody th {
  font-size: inherit;
  background: transparent;
}

.fs-docs .dg-markdown-content tbody > tr:last-child > :is(th, td) {
  border-bottom: 0;
}

.fs-docs .dg-markdown-content :is(th, td) > :last-child {
  margin-bottom: 0;
}

.fs-docs .dg-markdown-content tbody > tr:nth-child(even) {
  background: color-mix(in srgb, var(--docs-soft) 55%, var(--docs-bg));
}

.fs-docs .dg-markdown-content tbody > tr:focus-within {
  background: var(--docs-soft);
}

@media (hover: hover) {
  .fs-docs .dg-markdown-content tbody > tr:hover {
    background: var(--docs-soft);
  }
}

@media (forced-colors: active) {
  .fs-docs .dg-table-responsive {
    --docs-table-rule: CanvasText;
  }
}

.fs-docs .dg-note {
  --docs-note-surface: var(--docs-info-surface);
  position: relative;
  padding: 1.25rem 1.5rem;
  margin-block: 1.75rem;
  gap: 1rem;
  border: 0;
  border-radius: var(--docs-panel-radius);
  background: var(--docs-note-surface);
  font-size: 1rem;
  line-height: 1.7;
}

.fs-docs .dg-note[data-dg-type='tip'] {
  --docs-note-surface: var(--docs-success-surface);
}

.fs-docs .dg-note[data-dg-type='warning'] {
  --docs-note-surface: var(--docs-warning-surface);
}

.fs-docs .dg-note[data-dg-type='alert'] {
  --docs-note-surface: var(--docs-danger-surface);
}

.fs-docs .dg-note::before {
  content: none;
}

.fs-docs .dg-note-icon {
  fill: none;
  stroke: currentColor;
  stroke-width: var(--fs-icon-stroke);
  stroke-linecap: round;
  stroke-linejoin: round;
}

.fs-docs .dg-note-title {
  font-weight: 700;
  color: var(--docs-heading);
  margin-bottom: 0.375rem;
}

.fs-docs .dg-note-content > :last-child {
  margin-bottom: 0;
}

.fs-docs .dg-tabs {
  margin-block: 1.5rem 2rem;
}

.fs-docs .dg-markdown-content .dg-tab-list {
  flex-wrap: nowrap;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  gap: 1.25rem;
  padding: 5px;
  margin: 0 0 1.25rem;
  border-bottom: 0;
}

.fs-docs .dg-markdown-content .dg-tab-item {
  flex: 0 0 auto;
  max-width: 100%;
  margin: 0;
}

.fs-docs .fs-docs-tab-strip {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  margin-bottom: 1.25rem;
}

.fs-docs .fs-docs-tab-strip[data-scroll-controls] {
  grid-template-columns: 44px minmax(0, 1fr) 44px;
}

.fs-docs .fs-docs-tab-strip .dg-tab-list {
  margin-bottom: 0;
}

.fs-docs .fs-docs-tab-scroll {
  display: grid;
  place-items: center;
  width: 44px;
  height: 3rem;
  margin-top: 5px;
  padding: 0;
  border: 0;
  border-radius: 0.375rem;
  background: var(--docs-surface);
  color: var(--docs-accent);
  cursor: pointer;
}

.fs-docs .fs-docs-tab-scroll[hidden] {
  display: none;
}

.fs-docs .fs-docs-tab-scroll[aria-disabled='true'] {
  color: var(--docs-muted);
  cursor: default;
}

.fs-docs .fs-docs-tab-scroll:not([aria-disabled='true']):hover {
  background: var(--docs-selected);
}

.fs-docs .fs-docs-tab-scroll svg {
  width: 1.25rem;
  height: 1.25rem;
}

.fs-docs .dg-tab-label {
  display: flex;
  align-items: center;
  white-space: normal;
  overflow-wrap: anywhere;
  min-height: 3rem;
  padding: 0.75rem 0;
  border-bottom-width: 2px;
  border-radius: 0;
  font-size: var(--fs-type-action-size);
  font-weight: var(--fs-type-action-weight);
  line-height: var(--fs-type-action-line-height);
  color: var(--docs-text);
}

.fs-docs .dg-tab-label[aria-selected='true'] {
  color: var(--docs-accent);
}

.fs-docs .dg-tab-label:hover {
  background: transparent;
  color: var(--docs-heading);
}

.fs-docs .dg-accordion {
  margin-block: 1.75rem;
  border: 0;
  border-radius: 0;
}

.fs-docs .dg-accordion-item + .dg-accordion-item {
  border-top: 0;
}

.fs-docs .dg-accordion-button {
  justify-content: space-between;
  gap: 1rem;
  padding: 1.5rem 0;
  font-family: var(--fs-font-family-display);
  font-size: clamp(1.25rem, 1.8vw, 1.5rem);
  font-weight: var(--fs-type-compact-weight);
  color: var(--docs-heading);
  line-height: var(--fs-type-compact-line-height);
}

.fs-docs .dg-accordion-button::before {
  order: 1;
  flex-shrink: 0;
  color: var(--docs-accent);
}

.fs-docs .dg-accordion-button:hover {
  color: var(--docs-accent);
}

.fs-docs .dg-accordion-body {
  padding: 0 0 1.25rem;
}

.fs-docs .dg-accordion-body > :last-child {
  margin-bottom: 0;
}

.fs-docs .dg-card {
  border-radius: var(--docs-panel-radius);
  padding: 1.5rem;
  background: var(--docs-soft);
}

.fs-docs .dg-card-title {
  font-size: 1.25rem;
}

.fs-docs .dg-card-text {
  font-size: 1rem;
}

/* Reserve the active marker's width and keep type weight stable to prevent reflow. */
.fs-docs-toc {
  position: sticky;
  top: calc(var(--docs-header-height) + var(--docs-article-top));
  align-self: start;
  max-height: calc(
    100dvh - var(--docs-header-height) - var(--docs-article-top) - var(--docs-viewport-gutter)
  );
  overflow: auto;
  scrollbar-width: thin;
}

.fs-docs .dg-page-toc-title {
  color: var(--docs-heading);
  font-size: 0.9375rem;
  font-weight: 600;
  margin: 0.25rem 0 1rem;
}

.fs-docs-mobile-toc,
.fs-docs .dg-mobile-toc-bar {
  display: none;
}

.fs-docs :is(.dg-page-toc-list, .dg-mobile-toc-list, .fs-docs-contents) {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.5;
}

.fs-docs :is(.dg-page-toc-item, .dg-mobile-toc-item) {
  display: block;
  min-height: 0;
}

.fs-docs :is(.dg-page-toc-item, .dg-mobile-toc-item)::before,
.fs-docs :is(.dg-page-toc-link, .dg-mobile-toc-link)::after {
  display: none;
}

.fs-docs :is(.dg-page-toc-link, .dg-mobile-toc-link),
.fs-docs-contents a {
  display: block;
  padding: 0.5rem 0 0.5rem 0.9375rem;
  border-left: 2px solid transparent;
  border-radius: 0;
  color: var(--docs-text);
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.55;
  text-decoration: none;
}

.fs-docs :is(.dg-page-toc-link, .dg-mobile-toc-link):hover {
  color: var(--docs-heading);
  text-decoration: none;
}

.fs-docs :is(.dg-page-toc-link, .dg-mobile-toc-link)[aria-current='location'] {
  color: var(--docs-accent);
  border-left-color: var(--docs-accent);
  background: transparent;
  font-weight: 400;
}

.fs-docs .dg-page-toc-level-3 a,
.fs-docs .dg-mobile-toc-level-3 a,
.fs-docs-contents [data-level='3'] a {
  padding-left: 1.75rem;
}

.fs-docs-feedback {
  margin-top: 2.5rem;
  padding: clamp(1rem, 3vw, 1.5rem);
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-panel-radius);
  background: transparent;
  font-size: 0.875rem;
  line-height: 1.5;
}

.fs-docs-feedback[hidden],
.fs-docs-feedback [hidden] {
  display: none;
}

.fs-docs-feedback-row,
.fs-docs-feedback-votes,
.fs-docs-feedback-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

.fs-docs-feedback-row {
  justify-content: space-between;
  gap: 1rem 1.5rem;
}

.fs-docs-feedback-row strong {
  color: var(--docs-heading);
  font-size: 1rem;
  font-weight: 600;
}

.fs-docs .fs-docs-feedback p {
  margin: 0.5rem 0 0;
  color: var(--docs-muted);
  font-size: 0.8125rem;
  line-height: 1.5;
}

.fs-docs .fs-docs-feedback-intro {
  margin-top: 0.25rem;
  font-size: 0.875rem;
}

.fs-docs-feedback-votes {
  flex-wrap: nowrap;
  gap: 0.5rem;
}

.fs-docs-feedback button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 44px;
  padding: 0.5rem 0.875rem;
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-control-radius);
  background: var(--docs-bg);
  color: var(--docs-text);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.fs-docs-feedback button svg,
.fs-docs-feedback-status svg {
  flex: none;
  width: 1.25rem;
  height: 1.25rem;
}

.fs-docs-feedback-votes button {
  min-width: 5.25rem;
}

.fs-docs-feedback-selected,
.fs-docs-feedback button[aria-pressed='true'] .fs-docs-feedback-thumb {
  display: none;
}

.fs-docs-feedback button[aria-pressed='true'] .fs-docs-feedback-selected {
  display: block;
}

.fs-docs-feedback button:not([aria-disabled='true']):hover {
  border-color: var(--docs-accent);
  background: var(--docs-soft);
}

.fs-docs-feedback button[aria-pressed='true'] {
  border-color: var(--docs-accent);
  background: var(--docs-selected);
  color: var(--docs-accent);
}

.fs-docs-feedback button[aria-expanded='true']:not([aria-pressed='true']) {
  color: var(--docs-accent);
}

.fs-docs-feedback button[aria-disabled='true'] {
  cursor: default;
}

.fs-docs-feedback[data-state='pending'] button {
  cursor: progress;
}

.fs-docs-feedback form {
  margin-top: 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--docs-border);
}

.fs-docs-feedback fieldset {
  min-width: 0;
  margin: 0 0 1rem;
  padding: 0;
  border: 0;
}

.fs-docs-feedback legend {
  padding: 0;
  font-size: 1rem;
  font-weight: 600;
}

.fs-docs-feedback-optional {
  margin-left: 0.25rem;
  color: var(--docs-muted);
  font-size: 0.8125rem;
  font-weight: 400;
}

.fs-docs-feedback-option {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-height: 44px;
  padding: 0.5rem 0.75rem;
  border-radius: var(--docs-control-radius);
  background: var(--docs-bg);
  cursor: pointer;
}

.fs-docs-feedback-options {
  display: grid;
  gap: 0.5rem;
  margin-top: 1rem;
}

.fs-docs-feedback-option:has(:checked) {
  background: var(--docs-selected);
}

.fs-docs-feedback-option:has(:focus-visible) {
  outline: 2px solid var(--docs-accent);
  outline-offset: 3px;
}

.fs-docs-feedback-option:has(:disabled) {
  cursor: progress;
}

.fs-docs-feedback input {
  flex: 0 0 auto;
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
  accent-color: var(--docs-accent);
}

.fs-docs-feedback label[for='fs-feedback-comment'] {
  display: block;
  margin-top: 1.25rem;
  font-weight: 600;
}

.fs-docs-feedback textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  margin-top: 0.5rem;
  padding: 0.75rem;
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-control-radius);
  background: var(--docs-bg);
  color: var(--docs-text);
  font: inherit;
  font-size: 1rem;
  min-height: 7rem;
  line-height: 1.5;
  resize: vertical;
}

.fs-docs-feedback textarea::placeholder {
  color: var(--docs-muted);
  opacity: 1;
}

.fs-docs-feedback-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.25rem 1rem;
  margin-top: 0.5rem;
  font-size: 0.8125rem;
  color: var(--docs-muted);
}

.fs-docs .fs-docs-feedback-meta p {
  margin: 0;
}

.fs-docs-feedback-count {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.fs-docs-feedback button[type='submit'] {
  background: var(--fs-action);
  border-color: var(--fs-action);
  color: #fff;
}

.fs-docs-feedback button[type='submit']:not([aria-disabled='true']):hover {
  background: var(--fs-action-hover);
  border-color: var(--fs-action-hover);
}

.fs-docs-feedback button[data-feedback-cancel] {
  background: transparent;
  border-color: transparent;
}

.fs-docs .fs-docs-feedback-support {
  margin-top: 1rem;
}

.fs-docs-feedback-status {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin-top: 1rem;
}

.fs-docs-feedback-status:not(:has([data-feedback-message]:not(:empty))) {
  margin: 0;
}

.fs-docs-feedback-status-icon,
.fs-docs-feedback-status-icon > * {
  display: none;
}

.fs-docs-feedback:is([data-state='submitted'], [data-state='error'], [data-state='pending'])
.fs-docs-feedback-status-icon,
.fs-docs-feedback[data-state='submitted'] .fs-docs-feedback-success,
.fs-docs-feedback[data-state='error'] .fs-docs-feedback-error,
.fs-docs-feedback[data-state='pending'] .fs-docs-feedback-spinner {
  display: block;
}

.fs-docs-feedback[data-state='submitted'] .fs-docs-feedback-status {
  color: var(--docs-success);
}

.fs-docs-feedback[data-state='error'] .fs-docs-feedback-status {
  color: var(--docs-danger);
}

.fs-docs-feedback-spinner {
  box-sizing: border-box;
  width: 1.25rem;
  height: 1.25rem;
  border: 2px solid var(--docs-border);
  border-top-color: var(--docs-accent);
  border-radius: 50%;
  animation: fs-feedback-spin 0.8s linear infinite;
}

@keyframes fs-feedback-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .fs-docs-feedback-spinner {
    animation: none;
  }
}

@media (forced-colors: active) {
  .fs-docs-feedback button[aria-pressed='true'],
  .fs-docs-feedback-option:has(:checked) {
    outline: 2px solid Highlight;
    outline-offset: -3px;
  }
}

.fs-docs-pagination {
  margin-top: 2.5rem;
  padding-top: 1rem;
  border-top: 1px solid color-mix(in srgb, var(--docs-border) 50%, var(--docs-bg));
}

.fs-docs-pagination:not(:has(.dg-pagination-link)) {
  display: none;
}

.fs-docs .dg-pagination-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
  margin: 0;
}

.fs-docs .dg-pagination-slot:has([rel='next']) {
  grid-column: 2;
}

.fs-docs .dg-pagination-slot:empty {
  display: none;
}

.fs-docs .dg-pagination-slot {
  min-width: 0;
}

.fs-docs .dg-pagination-link {
  min-height: 3.5rem;
  padding: 0.5rem 0;
  border: 0;
  border-radius: 0;
  text-decoration: none;
  color: var(--docs-heading);
  background: transparent;
}

.fs-docs .dg-pagination-link:is(:hover, :focus-visible) {
  color: var(--docs-accent);
  background: transparent;
}

.fs-docs .dg-pagination-inner {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.fs-docs .dg-pagination-content {
  flex: 1;
  min-width: 0;
  text-align: start;
}

.fs-docs .dg-pagination-next {
  text-align: end;
}

.fs-docs .dg-prev-next-label {
  color: var(--docs-muted);
  font-size: 0.8125rem;
  font-weight: 400;
  line-height: 1.25rem;
  text-transform: none;
  margin: 0;
}

.fs-docs .dg-prev-next-title {
  min-width: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.fs-docs .dg-pagination-icon {
  flex-shrink: 0;
  width: 1.125rem;
  height: 1.125rem;
  color: var(--docs-muted);
}

.fs-docs .dg-pagination-icon svg {
  display: none;
}

/* The shared Tabler chevron replaces DocsGen's arrow without changing link behavior. */
.fs-docs .dg-pagination-icon::before {
  content: '';
  width: 100%;
  height: 100%;
  background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 6l-6 6l6 6' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.fs-docs .dg-pagination-link[rel='next'] .dg-pagination-icon::before {
  transform: rotate(180deg);
}

@media (forced-colors: active) {
  .fs-docs .dg-pagination-icon::before {
    background: LinkText;
    forced-color-adjust: none;
  }
}

/* Quiet article-level utilities follow pagination in the normal document flow. */
.fs-docs-footer {
  margin-top: 2.5rem;
  padding-top: 1rem;
  border-top: 1px solid color-mix(in srgb, var(--docs-border) 50%, var(--docs-bg));
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.25rem 1.5rem;
  color: var(--docs-muted);
  font-size: 0.875rem;
  line-height: 1.6;
}

.fs-docs-footer > span {
  font-size: 0.8125rem;
}

.fs-docs-footer nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
}

.fs-docs-footer a {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  color: var(--docs-muted);
  text-decoration: none;
}

.fs-docs-footer a:is(:hover, :focus-visible) {
  color: var(--docs-accent);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.fs-docs-failure {
  padding-block: 3rem;
  max-width: 42rem;
}

.fs-docs-failure h1 {
  font-size: clamp(2rem, 2.8vw, 2.5rem);
  line-height: 1.2;
  color: var(--docs-heading);
}

.fs-docs-failure p {
  margin-block: 1.5rem;
}

/* Search has one scroll owner. The field, status and keyboard help stay fixed. */
html[data-docs]:has(.fs-docs-search-dialog[open]) {
  overflow: hidden;
}

.fs-docs-search-dialog {
  width: min(44rem, calc(100% - 2rem));
  max-width: none;
  height: min(34rem, calc(100dvh - max(2rem, 8dvh) - 2rem));
  max-height: calc(100dvh - max(2rem, 8dvh) - 2rem);
  margin: max(2rem, 8dvh) auto 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-panel-radius);
  background: var(--docs-surface);
  color: var(--docs-text);
  font-family: var(--fs-font-family);
  font-size: var(--fs-type-body-size);
  line-height: var(--fs-type-body-line-height);
  box-shadow: var(--fs-shadow-modal);
}

.fs-docs-search-dialog[data-search-state='idle'] {
  height: fit-content;
}

.fs-docs-search-dialog[open] {
  display: flex;
  flex-direction: column;
}

.fs-docs-search-dialog::backdrop {
  background: var(--fs-backdrop);
  backdrop-filter: blur(8px);
}

.fs-search-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  gap: var(--fs-space-3);
  padding: var(--fs-space-4) var(--fs-space-4) var(--fs-space-3) var(--fs-space-6);
}

.fs-search-header h2 {
  margin: 0;
  color: var(--docs-heading);
  font-family: var(--fs-font-family-display);
  font-size: var(--fs-type-compact-size);
  font-weight: var(--fs-type-compact-weight);
  line-height: var(--fs-type-compact-line-height);
  letter-spacing: var(--fs-type-compact-tracking);
}

.fs-search-icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: var(--docs-control-radius);
  background: transparent;
  color: var(--docs-muted);
  cursor: pointer;
}

.fs-search-icon-button:hover {
  color: var(--docs-heading);
  background: var(--docs-selected);
}

.fs-search-icon-button svg,
.fs-search-form > svg {
  width: 1.25rem;
  height: 1.25rem;
}

.fs-search-form {
  position: relative;
  flex-shrink: 0;
  margin: 0.25rem 1.5rem 0;
}

.fs-search-form > svg {
  position: absolute;
  top: 1rem;
  left: 0.875rem;
  pointer-events: none;
  color: var(--docs-muted);
}

.fs-search-form input {
  display: block;
  width: 100%;
  height: 3.25rem;
  padding: 0 3.25rem 0 2.75rem;
  border: 1px solid var(--docs-muted);
  border-radius: var(--docs-control-radius);
  background: var(--docs-bg);
  color: var(--docs-text);
  font: inherit;
  font-size: var(--fs-type-body-size);
  line-height: var(--fs-type-body-line-height);
  box-shadow: none;
}

.fs-docs .fs-search-form input {
  transition: none;
}

.fs-search-form input::placeholder {
  color: var(--docs-muted);
  opacity: 1;
}

.fs-docs .fs-search-form input:focus-visible {
  outline: 2px solid var(--docs-accent);
  outline-offset: 2px;
  border-color: transparent;
}

.fs-search-form [data-search-clear] {
  position: absolute;
  right: 0.25rem;
  top: 0.25rem;
}

.fs-search-status {
  flex-shrink: 0;
  min-height: 2.75rem;
  margin: 0;
  padding: 0.875rem 1.5rem 0.5rem;
  color: var(--docs-muted);
  font-size: var(--fs-type-small-size);
  line-height: var(--fs-type-small-line-height);
}

.fs-search-status:empty {
  min-height: 0;
  padding-block: 0;
}

.fs-search-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-gutter: stable;
  padding: 0.25rem 0.75rem 0.75rem;
}

.fs-docs .fs-search-scroll:focus-visible {
  outline-offset: -3px;
}

.fs-search-results {
  display: grid;
  gap: 0.25rem;
  list-style: none;
  padding: 0;
  margin: 0;
}

.fs-search-results > li {
  margin: 0;
  padding: 0;
}

.fs-docs .fs-search-result {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 1.125rem;
  column-gap: 1rem;
  row-gap: 0.375rem;
  padding: 0.875rem 1rem;
  border: 1px solid transparent;
  border-radius: var(--docs-control-radius);
  color: var(--docs-text);
  text-decoration: none;
  /* Selection must track held arrow keys immediately, with no fading trail. */
  transition: none;
}

.fs-search-result-title {
  font-size: var(--fs-type-body-size);
  font-weight: var(--fs-type-action-weight);
  line-height: var(--fs-type-body-line-height);
  overflow-wrap: anywhere;
}

.fs-search-result-excerpt {
  grid-column: 1;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  overflow-wrap: anywhere;
  color: var(--docs-muted);
  font-size: var(--fs-type-small-size);
  line-height: var(--fs-type-small-line-height);
}

.fs-search-result > svg {
  grid-column: 2;
  grid-row: 1 / 3;
  align-self: center;
  width: 1.125rem;
  height: 1.125rem;
  color: var(--docs-muted);
}

.fs-docs .fs-search-result[aria-selected='true'] {
  background: var(--docs-selected);
  border-color: var(--docs-accent);
}

.fs-search-result[aria-selected='true'] svg {
  color: var(--docs-accent);
}

.fs-search-result[aria-selected='true'] .fs-search-result-title {
  color: var(--docs-heading);
}

.fs-search-result mark {
  background: transparent;
  color: var(--docs-text);
  font-weight: var(--fs-type-action-weight);
}

.fs-search-start {
  padding: var(--fs-space-4) var(--fs-space-3);
}

.fs-search-start p,
.fs-search-empty {
  margin: 0 0 1rem;
  color: var(--docs-muted);
  font-size: var(--fs-type-body-size);
  line-height: var(--fs-type-body-line-height);
}

.fs-search-start p {
  margin: 0;
  font-size: 0.875rem;
}

.fs-search-start p + p {
  margin-top: 0.5rem;
}

.fs-search-start p:first-child {
  color: var(--docs-text);
  font-weight: 600;
}

.fs-search-empty {
  padding: 0.5rem 0.75rem;
}

.fs-search-more {
  min-height: 2.75rem;
  padding: var(--fs-space-2) var(--fs-space-4);
  border: 1px solid var(--docs-border);
  border-radius: var(--docs-control-radius);
  background: var(--docs-surface);
  color: var(--docs-text);
  font: inherit;
  font-size: var(--fs-type-action-size);
  font-weight: var(--fs-type-action-weight);
  line-height: var(--fs-type-action-line-height);
  letter-spacing: var(--fs-type-action-tracking);
  cursor: pointer;
}

.fs-search-more {
  display: block;
  width: calc(100% - 1.5rem);
  margin: 0.75rem 0.75rem 0.25rem;
  color: var(--docs-accent);
}

.fs-search-more:hover {
  background: var(--docs-selected);
  border-color: var(--docs-accent);
}

.fs-search-more:disabled {
  cursor: wait;
  color: var(--docs-muted);
}

.fs-docs-search-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  flex-shrink: 0;
  padding: 0.75rem 1.5rem;
  border-top: 1px solid var(--docs-border);
  background: var(--docs-soft);
  color: var(--docs-muted);
  font-size: 0.75rem;
  line-height: 1.5;
}

.fs-docs-search-footer > span {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}

.fs-search-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.fs-docs-search-dialog [hidden] {
  display: none;
}

@media (hover: hover) {
  .fs-search-result:hover:not([aria-selected='true']) {
    background: var(--docs-soft);
    border-color: var(--docs-border);
  }
}

@media (hover: none) and (pointer: coarse) {
  .fs-docs-search-footer,
  .fs-docs-search [data-docs-search-shortcut] {
    display: none;
  }
}

@media (forced-colors: active) {
  .fs-docs .fs-search-result[aria-selected='true'] {
    outline: 2px solid Highlight;
    outline-offset: -2px;
  }
}

@media (width < 80rem) {
  .fs-docs:has(.fs-docs-mobile-toc[data-sticky]) .fs-docs-header {
    box-shadow: none;
  }

  .fs-docs-grid {
    gap: var(--docs-grid-gap);
  }

  .fs-docs-article-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .fs-docs-toc {
    display: none;
  }

  .fs-docs-mobile-toc {
    display: block;
    margin-bottom: 1.75rem;
    font-size: 0.875rem;
  }

  .fs-docs[data-enhanced] .fs-docs-mobile-toc {
    position: sticky;
    top: var(--docs-header-height);
    z-index: 10;
  }

  .fs-docs-mobile-toc[data-sticky] {
    margin-left: calc(-1 * var(--docs-toc-bleed-left));
    margin-right: calc(-1 * var(--docs-toc-bleed-right));
  }

  .fs-docs .dg-markdown-content :is(h1, h2, h3, h4, [id]) {
    scroll-margin-top: calc(var(--docs-header-height) + 5rem);
  }

  .fs-docs[data-enhanced] .dg-mobile-toc-bar {
    display: block;
    position: relative;
    top: auto;
    z-index: 1;
    border: 0;
    border-radius: var(--docs-control-radius);
    background: var(--docs-soft);
  }

  .fs-docs .dg-mobile-toc-bar-inner {
    gap: 0.25rem;
    padding: 0.375rem 0.5rem;
  }

  .fs-docs .dg-mobile-toc-bar:has([aria-expanded='true']) {
    border-radius: var(--docs-control-radius) var(--docs-control-radius) 0 0;
  }

  .fs-docs .fs-docs-mobile-toc[data-sticky] .dg-mobile-toc-bar {
    border-radius: 0;
    box-shadow: var(--docs-header-shadow);
  }

  .fs-docs-mobile-toc[data-sticky] .dg-mobile-toc-bar-inner {
    padding-left: max(1rem, env(safe-area-inset-left));
    padding-right: max(1rem, env(safe-area-inset-right));
  }

  .fs-docs .dg-mobile-toc-toggle {
    min-height: 2.75rem;
    min-width: 0;
    gap: 0.75rem;
    padding: 0.5rem 0.25rem;
    border-radius: 0.5rem;
    color: var(--docs-text);
  }

  .fs-docs .dg-mobile-toc-current {
    flex: 1;
  }

  .fs-docs-toc-chevron {
    flex: 0 0 1rem;
    width: 1rem;
    height: 1rem;
    color: var(--docs-muted);
    transform: rotate(90deg);
  }

  [aria-expanded='true'] > .fs-docs-toc-chevron {
    transform: rotate(-90deg);
  }

  .fs-docs .dg-mobile-toc-current-text {
    font-size: 0.875rem;
    font-weight: 500;
  }

  .fs-docs .dg-mobile-toc-dropdown {
    position: absolute;
    top: 100%;
    inset-inline: 0;
    max-height: min(
      55dvh,
      var(--docs-toc-available-height, calc(100dvh - var(--docs-header-height) - 4rem - 0.5rem))
    );
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    scrollbar-width: thin;
    scrollbar-color: var(--docs-border) transparent;
    scroll-padding-block: 0.5rem;
    box-shadow: var(--docs-header-shadow);
    border: 0;
    border-radius: 0 0 var(--docs-control-radius) var(--docs-control-radius);
    background: var(--docs-surface);
    padding: 0.5rem 0.75rem;
  }

  .fs-docs-mobile-toc[data-sticky] .dg-mobile-toc-dropdown {
    border-radius: 0;
    padding-left: max(1rem, env(safe-area-inset-left));
    padding-right: max(1rem, env(safe-area-inset-right));
  }

  @media (prefers-reduced-motion: no-preference) {
    .fs-docs-mobile-toc {
      transition: margin-left var(--fs-duration-fast) ease-out,
      margin-right var(--fs-duration-fast) ease-out;
    }

    .fs-docs .dg-mobile-toc-bar {
      transition: border-radius var(--fs-duration-fast) ease-out,
      box-shadow var(--fs-duration-fast) ease-out;
    }

    .fs-docs :is(.dg-mobile-toc-bar-inner, .dg-mobile-toc-dropdown) {
      transition: padding-left var(--fs-duration-fast) ease-out,
      padding-right var(--fs-duration-fast) ease-out;
    }
  }

  .fs-docs .dg-mobile-toc-nav {
    padding: 0;
  }

  /* Article list rhythm must not leak into this navigation panel. */
  .fs-docs .dg-mobile-toc-nav .dg-mobile-toc-list,
  .fs-docs .dg-mobile-toc-list .dg-mobile-toc-item {
    margin: 0;
    padding: 0;
  }

  .fs-docs .dg-mobile-toc-link {
    display: flex;
    align-items: center;
    min-height: 2.75rem;
    padding: 0.625rem 0.75rem 0.625rem 0.875rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
  }

  .fs-docs .dg-mobile-toc-level-3 .dg-mobile-toc-link {
    padding-inline-start: 1.875rem;
  }

  .fs-docs .dg-mobile-toc-link:focus-visible {
    outline-offset: -2px;
    background: var(--docs-soft);
  }

  .fs-docs .dg-mobile-toc-share-btn {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 0.5rem;
    color: var(--docs-muted);
  }

  @media (hover: hover) {
    .fs-docs :is(.dg-mobile-toc-toggle, .dg-mobile-toc-share-btn):hover {
      background: var(--docs-selected);
      color: var(--docs-heading);
    }

    .fs-docs .dg-mobile-toc-link:hover {
      background: var(--docs-soft);
    }
  }

  .fs-docs-mobile-toc noscript details {
    padding-block: 0.875rem;
  }

  .fs-docs-mobile-toc summary {
    cursor: pointer;
  }

  .fs-docs .fs-docs-contents {
    margin-top: 1rem;
  }
}

@media (width < 62rem) {
  .fs-docs-header-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) repeat(3, 2.75rem);
    gap: 0.25rem;
    padding: 0.875rem 1.25rem;
  }

  .fs-docs[data-enhanced] .fs-docs-menu-toggle {
    display: inline-flex;
    grid-column: 4;
    grid-row: 1;
  }

  .fs-docs-search {
    grid-column: 2;
    grid-row: 1;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    margin-left: 0;
    border: 0;
    background: transparent;
    color: var(--docs-muted);
  }

  .fs-docs-search:is(:hover, :focus-visible) {
    background: var(--docs-soft);
    color: var(--docs-heading);
  }

  .fs-docs-search > svg {
    width: 1.25rem;
    height: 1.25rem;
    color: inherit;
  }

  .fs-docs-search :is(.fs-docs-search-label, kbd) {
    display: none;
  }

  .fs-docs-theme {
    grid-column: 3;
    grid-row: 1;
    margin-left: auto;
  }

  .fs-docs .fs-docs-account {
    display: none;
  }

  .fs-docs-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    padding: 0 1.5rem;
  }

  .fs-docs[data-enhanced]:not([data-menu-open]) .fs-docs-navigation {
    display: none;
  }

  .fs-docs-navigation {
    scroll-margin-top: calc(var(--docs-header-height) + 1rem);
  }

  .fs-docs-menu {
    position: static;
    max-height: none;
    margin: 0;
    padding: 0;
  }

  .fs-docs-menu > nav {
    padding: 0.5rem 0.25rem 1.5rem;
  }

  .fs-docs :is(.dg-toc-summary, .dg-toc-link) {
    min-height: 2.75rem;
    padding-block: 0.7rem;
  }

  .fs-docs-main {
    padding-top: 1.75rem;
  }

  .fs-docs-breadcrumbs {
    margin-bottom: 1.25rem;
  }
}

@media (width < 48rem) {
  .fs-docs-footer {
    flex-direction: column;
    align-items: flex-start;
  }

  .fs-docs .dg-pagination-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.75rem;
  }

  .fs-docs .dg-pagination-slot:has([rel='next']) {
    grid-column: 1;
  }
}

@media (width < 36rem) {
  html[data-docs] {
    --docs-h1-size: 1.75rem;
    --docs-h2-size: 1.375rem;
  }

  .fs-docs-grid {
    padding-inline: 1.25rem;
  }

  .fs-docs .dg-markdown-content {
    font-size: 1rem;
    line-height: 1.7;
  }

  .fs-docs .dg-markdown-content h2 {
    margin-top: 2.25rem;
  }

  .fs-docs .dg-markdown-content .dg-tab-list {
    gap: 0.25rem 1rem;
  }

  .fs-docs .dg-note {
    padding: 1rem;
  }

  .fs-docs-search-dialog {
    margin-top: 1rem;
    height: min(34rem, calc(100dvh - 2rem));
    max-height: calc(100dvh - 2rem);
  }

  .fs-search-header {
    padding: 0.5rem 0.5rem 0.5rem 1rem;
  }

  .fs-search-form {
    margin-inline: 1rem;
  }

  .fs-search-status {
    padding-inline: 1rem;
  }

  .fs-search-scroll {
    padding-inline: 0.5rem;
  }

  .fs-docs .fs-search-result {
    padding: 0.75rem;
    column-gap: 0.5rem;
  }

  .fs-docs-search-footer {
    gap: 0.5rem 0.75rem;
    padding: 0.75rem 1rem;
  }
}

@media (width < 24rem) {
  html[data-docs] {
    --docs-h1-size: 1.5rem;
    --docs-h2-size: 1.25rem;
    --docs-h3-size: 1.125rem;
    --docs-h4-size: 1rem;
  }

  .fs-docs-brand img {
    width: 108px;
    height: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fs-docs *,
  .fs-docs *::before,
  .fs-docs *::after {
    scroll-behavior: auto;
    transition: none;
    animation: none;
  }
}

@media (forced-colors: active) {
  .fs-docs .dg-code-copy-btn .dg-copy-icon::before {
    background: ButtonText;
    forced-color-adjust: none;
  }

  .fs-docs .dg-toc-link[aria-current='page'] {
    outline: 1px solid Highlight;
    outline-offset: -1px;
  }

  .fs-docs :is(.dg-page-toc-link, .dg-mobile-toc-link)[aria-current='location'] {
    border-left: 2px solid Highlight;
  }
}

/* Match the loading surface to the docs while the provider loads its theme. */
.fs-docs-form {
  min-width: 0;
  margin-block: 1.5rem;
}

.fs-docs-form-viewport {
  position: relative;
  width: 100%;
  height: 0;
  overflow: clip;
  background: var(--docs-bg);
  color-scheme: inherit;
}

.fs-docs-form-frame {
  position: absolute;
  inset: 0 auto auto 0;
  display: block;
  max-width: none;
  border: 0;
  transform-origin: top left;
  pointer-events: none;
}

.fs-docs-form[data-state='loading'] .fs-docs-form-viewport {
  /* Keep layout observers running while an opaque cover conceals the frame. */
  height: 400px;
}

.fs-docs-form:not([data-state='ready']) .fs-docs-form-viewport::after {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--docs-bg);
}

.fs-docs-form[data-state='ready'] .fs-docs-form-frame {
  pointer-events: auto;
}

.fs-docs-form-status[hidden] {
  display: none;
}

/* The same document shell can omit search without reserving an empty control. */
.fs-docs[data-without-search] .fs-docs-header-inner {
  grid-template-columns: var(--docs-sidebar-width) minmax(0, 1fr) auto;
}

.fs-docs[data-without-search] .fs-docs-theme {
  justify-self: end;
}

@media (width < 62rem) {
  .fs-docs[data-without-search] .fs-docs-header-inner {
    grid-template-columns: minmax(0, 1fr) repeat(2, 2.75rem);
  }

  .fs-docs[data-without-search] .fs-docs-theme {
    grid-column: 2;
  }

  .fs-docs[data-without-search] .fs-docs-menu-toggle {
    grid-column: 3;
  }

  .fs-docs[data-without-search][data-without-navigation] .fs-docs-header-inner {
    grid-template-columns: minmax(0, 1fr) 2.75rem;
  }
}

@media print {
  html[data-docs] {
    color-scheme: light;
    --docs-bg: #fff;
    --docs-text: #000;
    --docs-heading: #000;
    --docs-accent: #000;
  }

  .fs-docs
  :is(
      .fs-docs-header,
      .fs-docs-navigation,
      .fs-docs-toc,
      .fs-docs-mobile-toc,
      .fs-docs-pagination,
      .fs-docs-footer,
      .fs-docs-feedback,
      .fs-docs-skip,
      .fs-docs-breadcrumbs,
      .dg-heading-anchor
    ) {
    display: none;
  }

  .fs-docs :is(.fs-docs-grid, .fs-docs-article-grid) {
    display: block;
    padding: 0;
  }

  .fs-docs :is(.fs-docs-main, .fs-docs-article) {
    max-width: none;
    padding: 0;
  }

  .fs-docs .dg-markdown-content {
    font-size: 11pt;
  }

  .fs-docs .dg-markdown-content h1 {
    font-size: 24pt;
  }

  .fs-docs .dg-markdown-content :is(h2, h3) {
    break-after: avoid;
  }

  .fs-docs .dg-markdown-content p {
    orphans: 3;
    widows: 3;
  }
}
