/*fern-site-stylesheet*/:root {
  --header-height: 64px;
  --header-height-real: 64px;
  --mobile-header-height-real: 64px;
  --content-width: 640px;
  --sidebar-width: 288px;
  --page-width: 100vw;
  --logo-height: 20px;
  --font-body: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  --font-heading: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  --font-code: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
}

:root {
  --typography-body-font-family: var(--font-body);
  --typography-heading-font-family: var(--font-heading);
  --typography-code-font-family: var(--font-code);
}


.light, :root {
  --accent-1: #f7f7fa;
  --accent-2: #f4f3fb;
  --accent-3: #ecebfb;
  --accent-4: #e1e0ff;
  --accent-5: #d6d4ff;
  --accent-6: #c8c5ff;
  --accent-7: #b5b0f7;
  --accent-8: #9c93ef;
  --accent-9: #7d63ee;
  --accent-10: #7155df;
  --accent-11: #5e46bd;
  --accent-12: #302364;

  --accent-a1: #30623305;
  --accent-a2: #1c1b9f08;
  --accent-a3: #0c0bcf10;
  --accent-a4: #e1e0ff;
  --accent-a5: #d6d4ff;
  --accent-a6: #c8c5ff;
  --accent-a7: #1102e74c;
  --accent-a8: #1603da6a;
  --accent-a9: #2c02e39b;
  --accent-a10: #2b02cfa9;
  --accent-a11: #2100a4b8;
  --accent-a12: #10014bdc;

  --accent-contrast: #fff;
  --accent-surface: #f3f1facc;
  --accent-indicator: #7d63ee;
  --accent-track: #7d63ee;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .light, :root {
      --accent-1: oklch(97.8% 0.0031 287.3);
      --accent-2: oklch(96.8% 0.0101 287.3);
      --accent-3: oklch(94.6% 0.0211 287.3);
      --accent-4: oklch(91.7% 0.0437 287.3);
      --accent-5: oklch(88.6% 0.0635 287.3);
      --accent-6: oklch(84.5% 0.081 287.3);
      --accent-7: oklch(78.6% 0.1009 287.3);
      --accent-8: oklch(70.8% 0.1331 287.3);
      --accent-9: oklch(59.8% 0.2003 287.3);
      --accent-10: oklch(55.5% 0.2003 287.3);
      --accent-11: oklch(48.8% 0.1785 287.3);
      --accent-12: oklch(31.3% 0.1092 287.3);

      --accent-a1: color(display-p3 0.0039 0.2471 0.0157 / 0.016);
      --accent-a2: color(display-p3 0.0078 0 0.4392 / 0.028);
      --accent-a3: color(display-p3 0.0078 0 0.7373 / 0.06);
      --accent-a4: color(display-p3 0.0039 0 0.9216 / 0.104);
      --accent-a5: color(display-p3 0.0314 0 0.9451 / 0.152);
      --accent-a6: color(display-p3 0.0235 0 0.9412 / 0.212);
      --accent-a7: color(display-p3 0.0431 0 0.8392 / 0.296);
      --accent-a8: color(display-p3 0.0588 0 0.8 / 0.412);
      --accent-a9: color(display-p3 0.1373 0 0.8392 / 0.6);
      --accent-a10: color(display-p3 0.1373 0 0.7647 / 0.656);
      --accent-a11: color(display-p3 0.1059 0 0.6039 / 0.716);
      --accent-a12: color(display-p3 0.0471 0 0.2706 / 0.856);

      --accent-contrast: #fff;
      --accent-surface: color(display-p3 0.9529 0.9529 0.9765 / 0.8);
      --accent-indicator: oklch(59.8% 0.2003 287.3);
      --accent-track: oklch(59.8% 0.2003 287.3);
    }
  }
}


.light, :root {
  --grayscale-1: #fdfcfd;
  --grayscale-2: #faf9fb;
  --grayscale-3: #f2eff3;
  --grayscale-4: #eae7ec;
  --grayscale-5: #e3dfe6;
  --grayscale-6: #dbd8e0;
  --grayscale-7: #d0cdd7;
  --grayscale-8: #bcbac7;
  --grayscale-9: #8e8c99;
  --grayscale-10: #84828e;
  --grayscale-11: #65636d;
  --grayscale-12: #211f26;

  --grayscale-a1: #55005503;
  --grayscale-a2: #2b005506;
  --grayscale-a3: #30004010;
  --grayscale-a4: #20003618;
  --grayscale-a5: #20003820;
  --grayscale-a6: #14003527;
  --grayscale-a7: #10003332;
  --grayscale-a8: #08003145;
  --grayscale-a9: #05001d73;
  --grayscale-a10: #0500197d;
  --grayscale-a11: #0400119c;
  --grayscale-a12: #020008e0;

  --grayscale-contrast: #000;
  --grayscale-surface: #ffffffcc;
  --grayscale-indicator: #8e8c99;
  --grayscale-track: #8e8c99;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .light, :root {
      --grayscale-1: color(display-p3 0.991 0.988 0.992);
      --grayscale-2: color(display-p3 0.98 0.976 0.984);
      --grayscale-3: color(display-p3 0.946 0.938 0.952);
      --grayscale-4: color(display-p3 0.915 0.906 0.925);
      --grayscale-5: color(display-p3 0.886 0.876 0.901);
      --grayscale-6: color(display-p3 0.856 0.846 0.875);
      --grayscale-7: color(display-p3 0.814 0.804 0.84);
      --grayscale-8: color(display-p3 0.735 0.728 0.777);
      --grayscale-9: color(display-p3 0.555 0.549 0.596);
      --grayscale-10: color(display-p3 0.514 0.508 0.552);
      --grayscale-11: color(display-p3 0.395 0.388 0.424);
      --grayscale-12: color(display-p3 0.128 0.122 0.147);

      --grayscale-a1: #55005503;
      --grayscale-a2: #2b005506;
      --grayscale-a3: #30004010;
      --grayscale-a4: #20003618;
      --grayscale-a5: #20003820;
      --grayscale-a6: #14003527;
      --grayscale-a7: #10003332;
      --grayscale-a8: #08003145;
      --grayscale-a9: #05001d73;
      --grayscale-a10: #0500197d;
      --grayscale-a11: #0400119c;
      --grayscale-a12: #020008e0;

      --grayscale-contrast: #000;
      --grayscale-surface: color(display-p3 1 1 1 / 80%);
      --grayscale-indicator: color(display-p3 0.555 0.549 0.596);
      --grayscale-track: color(display-p3 0.555 0.549 0.596);
    }
  }
}


.dark {
  --accent-1: #060410;
  --accent-2: #151325;
  --accent-3: #241d49;
  --accent-4: #302265;
  --accent-5: #392b73;
  --accent-6: #443682;
  --accent-7: #524498;
  --accent-8: #6553ba;
  --accent-9: #7d63ee;
  --accent-10: #7155df;
  --accent-11: #b2a7ff;
  --accent-12: #dfddff;

  --accent-a1: #0700d905;
  --accent-a2: #948af91b;
  --accent-a3: #7c64fc41;
  --accent-a4: #7854fd5e;
  --accent-a5: #7e5efd6d;
  --accent-a6: #8669ff7c;
  --accent-a7: #8973ff93;
  --accent-a8: #8a72ffb7;
  --accent-a9: #866afeee;
  --accent-a10: #8161fede;
  --accent-a11: #b2a7ff;
  --accent-a12: #dfddff;

  --accent-contrast: #fff;
  --accent-surface: #24213e80;
  --accent-indicator: #7d63ee;
  --accent-track: #7d63ee;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .dark {
      --accent-1: oklch(12.2% 0.0294 287.3);
      --accent-2: oklch(19.9% 0.0363 287.3);
      --accent-3: oklch(26.6% 0.0785 287.3);
      --accent-4: oklch(31.1% 0.1115 287.3);
      --accent-5: oklch(34.9% 0.1188 287.3);
      --accent-6: oklch(39.1% 0.1227 287.3);
      --accent-7: oklch(44.5% 0.1331 287.3);
      --accent-8: oklch(51.4% 0.1559 287.3);
      --accent-9: oklch(59.8% 0.2003 287.3);
      --accent-10: oklch(55.5% 0.2003 287.3);
      --accent-11: oklch(77.8% 0.1593 287.3);
      --accent-12: oklch(91.2% 0.0523 287.3);

      --accent-a1: color(display-p3 0.0275 0 0.9686 / 0.017);
      --accent-a2: color(display-p3 0.5961 0.5529 0.9961 / 0.103);
      --accent-a3: color(display-p3 0.4941 0.4118 1 / 0.242);
      --accent-a4: color(display-p3 0.4706 0.3529 1 / 0.353);
      --accent-a5: color(display-p3 0.4902 0.3961 1 / 0.41);
      --accent-a6: color(display-p3 0.5255 0.4353 1 / 0.472);
      --accent-a7: color(display-p3 0.5412 0.4706 1 / 0.558);
      --accent-a8: color(display-p3 0.5451 0.4667 1 / 0.693);
      --accent-a9: color(display-p3 0.5255 0.4314 1 / 0.898);
      --accent-a10: color(display-p3 0.5059 0.4 1 / 0.837);
      --accent-a11: color(display-p3 0.7059 0.6706 1 / 0.976);
      --accent-a12: color(display-p3 0.8863 0.8784 1 / 0.988);

      --accent-contrast: #fff;
      --accent-surface: color(display-p3 0.1412 0.1255 0.2353 / 0.5);
      --accent-indicator: oklch(59.8% 0.2003 287.3);
      --accent-track: oklch(59.8% 0.2003 287.3);
    }
  }
}


.dark {
  --grayscale-1: #111113;
  --grayscale-2: #18191b;
  --grayscale-3: #212225;
  --grayscale-4: #272a2d;
  --grayscale-5: #2e3135;
  --grayscale-6: #363a3f;
  --grayscale-7: #43484e;
  --grayscale-8: #5a6169;
  --grayscale-9: #696e77;
  --grayscale-10: #777b84;
  --grayscale-11: #b0b4ba;
  --grayscale-12: #edeef0;

  --grayscale-a1: #00000000;
  --grayscale-a2: #d8f4f609;
  --grayscale-a3: #ddeaf814;
  --grayscale-a4: #d3edf81d;
  --grayscale-a5: #d9edfe25;
  --grayscale-a6: #d6ebfd30;
  --grayscale-a7: #d9edff40;
  --grayscale-a8: #d9edff5d;
  --grayscale-a9: #dfebfd6d;
  --grayscale-a10: #e5edfd7b;
  --grayscale-a11: #f1f7feb5;
  --grayscale-a12: #fcfdffef;

  --grayscale-contrast: #fff;
  --grayscale-surface: rgba(0, 0, 0, 0.05);
  --grayscale-indicator: #696e77;
  --grayscale-track: #696e77;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .dark {
      --grayscale-1: color(display-p3 0.067 0.067 0.074);
      --grayscale-2: color(display-p3 0.095 0.098 0.105);
      --grayscale-3: color(display-p3 0.13 0.135 0.145);
      --grayscale-4: color(display-p3 0.156 0.163 0.176);
      --grayscale-5: color(display-p3 0.183 0.191 0.206);
      --grayscale-6: color(display-p3 0.215 0.226 0.244);
      --grayscale-7: color(display-p3 0.265 0.28 0.302);
      --grayscale-8: color(display-p3 0.357 0.381 0.409);
      --grayscale-9: color(display-p3 0.415 0.431 0.463);
      --grayscale-10: color(display-p3 0.469 0.483 0.514);
      --grayscale-11: color(display-p3 0.692 0.704 0.728);
      --grayscale-12: color(display-p3 0.93 0.933 0.94);

      --grayscale-a1: #00000000;
      --grayscale-a2: #d8f4f609;
      --grayscale-a3: #ddeaf814;
      --grayscale-a4: #d3edf81d;
      --grayscale-a5: #d9edfe25;
      --grayscale-a6: #d6ebfd30;
      --grayscale-a7: #d9edff40;
      --grayscale-a8: #d9edff5d;
      --grayscale-a9: #dfebfd6d;
      --grayscale-a10: #e5edfd7b;
      --grayscale-a11: #f1f7feb5;
      --grayscale-a12: #fcfdffef;

      --grayscale-contrast: #fff;
      --grayscale-surface: color(display-p3 0 0 0 / 5%);
      --grayscale-indicator: color(display-p3 0.415 0.431 0.463);
      --grayscale-track: color(display-p3 0.415 0.431 0.463);
    }
  }
}

.light, :root {
  color-scheme: light;
  --accent: rgba(125, 99, 238, 1);
  --background: rgba(251, 250, 254, 1);
  --border: rgba(209, 207, 217, 1);
  --sidebar-background: initial;
  --header-background: color-mix(in srgb, var(--background), transparent 30%);
  --card-background: rgba(255, 255, 255, 1);
  --theme-color: #fbfafe;
}

.dark {
  color-scheme: dark;
  --accent: rgba(125, 99, 238, 1);
  --background: rgba(6, 5, 12, 1);
  --border: rgba(46, 44, 54, 1);
  --sidebar-background: initial;
  --header-background: color-mix(in srgb, var(--background), transparent 30%);
  --card-background: rgba(26, 26, 28, 1);
  --theme-color: #06050c;
}

/* Canvas Body Theme */
:root [data-body-theme="canvas"] .canvas-wrapper {
  display: flex;
  width: 100%;
  overflow: auto;
  height: 100%;
  border-radius: 16px 16px 16px 16px;
  justify-content: center;
  align-items: flex-start;
  margin-right: 12px;
  margin-bottom: 12px;
  height: calc(100vh - var(--header-height-real) - 12px);
  border: 1px solid var(--border);
  background-color: var(--card-background);
}

:root [data-body-theme="canvas"] body {
  overflow: hidden;
}


:root [data-body-theme="canvas"] #fern-toc {
  position: sticky;
  max-height: calc(100vh - var(--header-height-real) - 12px);
  overflow-y: auto;
  overflow-x: hidden;
  top: 0;
}

:root [data-body-theme="canvas"] #fern-toc:has(> *) {
  margin-right: 12px;
}

:root [data-body-theme="canvas"] .fern-layout-guide,
:root [data-body-theme="canvas"] .fern-layout-overview {
  width: 100%;
  border: none;
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
}

:root [data-body-theme="canvas"] .fern-layout-reference {
  width: 100%;
  border: none;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  position: relative;
}

/* The sticky changelog day label offsets its top by the header height by default
   (window scroll). On canvas the scroll container already starts below the fixed
   header, so zero the offset to keep the date from pinning too early. */
:root [data-body-theme="canvas"] {
  --fern-changelog-sticky-top: 0px;
}

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');

:root {
  --font-heading: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  --font-code: 'JetBrains Mono', 'Fira Code', Menlo, Monaco, Consolas, 'Courier New', monospace !important;
  --radius: 0.35rem !important;
  --fern-border-radius: 0.35rem !important;
}

/* Remove sidebar and header border lines for seamless recessed look */
#fern-sidebar {
  border-right-width: 0 !important;
}

#fern-header {
  border-color: transparent !important;
}

/* Draw the canvas border inside so it isn't clipped at the top */
.canvas-wrapper {
  border-color: transparent !important;
  box-shadow: inset 0 0 0 1px var(--border);
}

/* 1. Completely remove #builtwithfern footer element & links */
#builtwithfern,
a#builtwithfern,
[id="builtwithfern"],
[id*="builtwithfern"],
.fern-layout-footer #builtwithfern,
.fern-layout-footer a[href*="buildwithfern.com"],
footer a[href*="buildwithfern.com"],
a[href*="buildwithfern.com"],
[class*="built-with-fern"],
[class*="BuiltWithFern"],
[class*="fern-badge"],
[id*="fern-badge"],
.fern-footer-badge {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  height: 0 !important;
  width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

/* 2. Remove specifically the Edit buttons and Fern dashboard / repo links in header */
header a[href*="dashboard.buildwithfern.com"],
#fern-header a[href*="dashboard.buildwithfern.com"],
header a[href*="github.com"],
#fern-header a[href*="github.com"],
header a[href*="edit" i],
#fern-header a[href*="edit" i],
header button[aria-label*="edit" i],
#fern-header button[aria-label*="edit" i],
header [aria-label*="Edit this page" i],
#fern-header [aria-label*="Edit this page" i],
[class*="page-actions"] a[href*="github.com"],
[class*="page-actions"] a[href*="dashboard"] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* 3. Ensure the light/dark mode switcher in header is clearly visible and styled */
#fern-header [aria-label*="theme" i],
#fern-header [aria-label*="mode" i],
#fern-header [aria-label*="dark" i],
#fern-header [aria-label*="light" i],
#fern-header [data-theme-toggle],
#fern-header [class*="theme-toggle" i],
#fern-header [class*="themetoggle" i],
#fern-header [class*="mode-toggle" i] {
  display: inline-flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}