@font-face {
  font-family: 'Monaspace Neon';
  src: url('https://cdn.jsdelivr.net/gh/githubnext/monaspace@v1.000/fonts/webfonts/MonaspaceNeon-Regular.woff')
    format('woff');
  font-display: swap;
  font-feature-settings: 'calt', 'liga', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06',
    'ss07', 'ss08', 'ss09';
}

:root {
  --sl-font:
    'Comfortaa', 'Montserrat', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Helvetica, Arial, sans-serif;
  --sl-font-mono:
    'Monaspace Neon', 'JetBrains Mono', SFMono-Regular, Menlo, Monaco, Consolas,
    'Liberation Mono', 'Courier New', monospace;
  --kent-font-heading:
    'Montserrat Alternates', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
    Arial, sans-serif;

  --sl-content-width: 75rem;
  --sl-text-base: 1rem;
  --sl-text-lg: 1.125rem;
  --sl-text-xl: 1.25rem;
  --sl-text-2xl: 1.5rem;
  --sl-text-3xl: 1.8125rem;
  --sl-text-4xl: 2.1875rem;
  --sl-text-5xl: 2.625rem;
  --sl-text-body: var(--sl-text-base);
  --sl-text-code: 0.95rem;
  --sl-text-code-sm: 0.85rem;
  --sl-line-height: 1.8;
  --sl-line-height-headings: 1.2;
  --kent-header-offset: var(--sl-nav-height);

  --kent-motion-ease-standard: ease;
  --kent-motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --kent-motion-fast: 140ms var(--kent-motion-ease-standard);
  --kent-motion-normal: 400ms var(--kent-motion-ease-standard);
  --kent-motion-expressive: 700ms var(--kent-motion-ease-standard);
  --kent-motion-morph: 350ms ease-in-out;
  --kent-motion-morph-stage-delay: 200ms;
  --kent-motion-morph-stage: 200ms ease-in-out;
  --kent-motion-stagger-fast: 35ms;
  --kent-motion-stagger-normal: 70ms;

  --kent-radius-s: 8px;
  --kent-radius-m: 12px;
  --kent-radius-l: 16px;
  --kent-radius-x: 18px;
  --kent-radius-xl: 24px;
  --kent-outline-subtle: color-mix(in srgb, var(--sl-color-text) 12%, transparent);
  --kent-outline-accent: color-mix(in srgb, var(--sl-color-accent) 35%, transparent);
  --kent-surface-0: color-mix(in srgb, var(--sl-color-bg) 92%, var(--sl-color-white) 8%);
  --kent-surface-1: color-mix(in srgb, var(--sl-color-bg) 86%, var(--sl-color-white) 14%);
  --kent-surface-accent: color-mix(in srgb, var(--sl-color-accent) 12%, transparent);
  --kent-shadow-island-0: 0 4px 4px rgb(0 0 0 / 10%);
  --kent-shadow-island-1: 0 4px 4px rgb(0 0 0 / 24%);
  --kent-shadow-island-2: 0 8px 8px rgb(0 0 0 / 32%);
}

:root[data-header-state='hidden'] {
  --kent-header-offset: 0rem;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --kent-motion-fast: 0ms var(--kent-motion-ease-standard);
    --kent-motion-normal: 0ms var(--kent-motion-ease-standard);
    --kent-motion-expressive: 0ms var(--kent-motion-ease-standard);
    --kent-motion-morph: 0ms ease-in-out;
    --kent-motion-morph-stage-delay: 0ms;
    --kent-motion-morph-stage: 0ms ease-in-out;
    --kent-motion-stagger-fast: 0ms;
    --kent-motion-stagger-normal: 0ms;
  }
}

@keyframes kent-route-fade-scale {
  from {
    opacity: 0;
    transform: scale(0.985);
  }

  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes kent-route-fade-out {
  from {
    opacity: 1;
    transform: scale(1);
  }

  to {
    opacity: 0;
    transform: scale(0.995);
  }
}

@keyframes kent-surface-reveal {
  from {
    opacity: 0;
    transform: translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: no-preference) {
  html,
  body {
    scroll-behavior: smooth;
  }

  ::view-transition-old(root) {
    animation: kent-route-fade-out var(--kent-motion-fast) both;
    transform-origin: center;
  }

  ::view-transition-new(root) {
    animation: kent-route-fade-scale var(--kent-motion-fast) both;
    transform-origin: center;
  }

  header.header {
    view-transition-name: kent-docs-header;
  }

  [data-has-sidebar] .sidebar-pane {
    view-transition-name: kent-docs-sidebar;
  }

  h1#_top {
    view-transition-name: kent-docs-title;
  }

  @media (min-width: 72rem) {
    .right-sidebar {
      view-transition-name: kent-docs-toc;
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  html,
  body {
    scroll-behavior: auto;
  }
}

:root[data-theme='dark'] {
  --sl-color-white: #ffffff;
  --sl-color-gray-1: #e0e0e0;
  --sl-color-gray-2: #c8c8c8;
  --sl-color-gray-3: #8f97a1;
  --sl-color-gray-4: #5a5651;
  --sl-color-gray-5: #34373c;
  --sl-color-gray-6: #1c1a18;
  --sl-color-black: #12100e;

  --kent-color-primary: #3185fc;
  --kent-color-primary-low: color-mix(in srgb, var(--kent-color-primary) 18%, transparent);
  --kent-color-primary-high: color-mix(in srgb, var(--kent-color-primary) 85%, white);
  --kent-color-secondary: #f96824;
  --kent-color-secondary-low: color-mix(in srgb, var(--kent-color-secondary) 18%, transparent);
  --kent-color-secondary-high: color-mix(in srgb, var(--kent-color-secondary) 85%, white);
  --kent-color-success: #12ba85;
  --kent-color-success-low: color-mix(in srgb, var(--kent-color-success) 18%, transparent);
  --kent-color-success-high: color-mix(in srgb, var(--kent-color-success) 85%, white);
  --kent-color-warning: #ffe74c;
  --kent-color-warning-low: color-mix(in srgb, var(--kent-color-warning) 18%, transparent);
  --kent-color-warning-high: color-mix(in srgb, var(--kent-color-warning) 70%, black);
  --kent-color-error: #dc2e3c;
  --kent-color-error-low: color-mix(in srgb, var(--kent-color-error) 18%, transparent);
  --kent-color-error-high: color-mix(in srgb, var(--kent-color-error) 85%, white);

  --sl-color-accent-low: var(--kent-color-primary-low);
  --sl-color-accent: var(--kent-color-primary);
  --sl-color-accent-high: var(--kent-color-primary-high);
  --sl-color-blue: var(--kent-color-primary);
  --sl-color-blue-low: var(--kent-color-primary-low);
  --sl-color-blue-high: var(--kent-color-primary-high);
  --sl-color-green: var(--kent-color-success);
  --sl-color-green-low: var(--kent-color-success-low);
  --sl-color-green-high: var(--kent-color-success-high);
  --sl-color-orange: var(--kent-color-warning);
  --sl-color-orange-low: var(--kent-color-warning-low);
  --sl-color-orange-high: var(--kent-color-warning-high);
  --sl-color-purple: var(--kent-color-secondary);
  --sl-color-purple-low: var(--kent-color-secondary-low);
  --sl-color-purple-high: var(--kent-color-secondary-high);
  --sl-color-red: var(--kent-color-error);
  --sl-color-red-low: var(--kent-color-error-low);
  --sl-color-red-high: var(--kent-color-error-high);

  --sl-color-text: var(--sl-color-gray-2);
  --sl-color-text-accent: var(--sl-color-accent-high);
  --sl-color-text-invert: #12100e;
  --sl-color-bg: var(--sl-color-black);
  --sl-color-bg-nav: var(--sl-color-gray-6);
  --sl-color-bg-sidebar: var(--sl-color-gray-6);
  --sl-color-bg-inline-code: var(--sl-color-gray-5);
  --sl-color-bg-accent: var(--sl-color-accent);
  --sl-color-hairline-light: var(--sl-color-gray-5);
  --sl-color-hairline: var(--sl-color-gray-6);
  --sl-color-hairline-shade: var(--sl-color-black);
  --sl-color-backdrop-overlay: rgba(18, 16, 14, 0.72);
}

:root[data-theme='light'] {
  --sl-color-white: #12100e;
  --sl-color-gray-1: #2a2825;
  --sl-color-gray-2: #5a5651;
  --sl-color-gray-3: #8f97a1;
  --sl-color-gray-4: #a39f99;
  --sl-color-gray-5: #d0d0d0;
  --sl-color-gray-6: #e8e6e4;
  --sl-color-gray-7: #f4f3f2;
  --sl-color-black: #faf9f7;

  --kent-color-primary: #3185fc;
  --kent-color-primary-low: color-mix(in srgb, var(--kent-color-primary) 14%, transparent);
  --kent-color-primary-high: color-mix(in srgb, var(--kent-color-primary) 90%, black);
  --kent-color-secondary: #f96824;
  --kent-color-secondary-low: color-mix(in srgb, var(--kent-color-secondary) 14%, transparent);
  --kent-color-secondary-high: color-mix(in srgb, var(--kent-color-secondary) 90%, black);
  --kent-color-success: #12ba85;
  --kent-color-success-low: color-mix(in srgb, var(--kent-color-success) 14%, transparent);
  --kent-color-success-high: color-mix(in srgb, var(--kent-color-success) 90%, black);
  --kent-color-warning: #ffe74c;
  --kent-color-warning-low: color-mix(in srgb, var(--kent-color-warning) 30%, transparent);
  --kent-color-warning-high: color-mix(in srgb, var(--kent-color-warning) 60%, black);
  --kent-color-error: #dc2e3c;
  --kent-color-error-low: color-mix(in srgb, var(--kent-color-error) 14%, transparent);
  --kent-color-error-high: color-mix(in srgb, var(--kent-color-error) 90%, black);

  --sl-color-accent-low: var(--kent-color-primary-low);
  --sl-color-accent: var(--kent-color-primary);
  --sl-color-accent-high: var(--kent-color-primary-high);
  --sl-color-blue: var(--kent-color-primary);
  --sl-color-blue-low: var(--kent-color-primary-low);
  --sl-color-blue-high: var(--kent-color-primary-high);
  --sl-color-green: var(--kent-color-success);
  --sl-color-green-low: var(--kent-color-success-low);
  --sl-color-green-high: var(--kent-color-success-high);
  --sl-color-orange: var(--kent-color-warning);
  --sl-color-orange-low: var(--kent-color-warning-low);
  --sl-color-orange-high: var(--kent-color-warning-high);
  --sl-color-purple: var(--kent-color-secondary);
  --sl-color-purple-low: var(--kent-color-secondary-low);
  --sl-color-purple-high: var(--kent-color-secondary-high);
  --sl-color-red: var(--kent-color-error);
  --sl-color-red-low: var(--kent-color-error-low);
  --sl-color-red-high: var(--kent-color-error-high);

  --sl-color-text: #5a5651;
  --sl-color-text-accent: var(--sl-color-accent-high);
  --sl-color-text-invert: #faf9f7;
  --sl-color-bg: var(--sl-color-black);
  --sl-color-bg-nav: var(--sl-color-gray-7);
  --sl-color-bg-sidebar: var(--sl-color-gray-6);
  --sl-color-bg-inline-code: var(--sl-color-gray-5);
  --sl-color-bg-accent: var(--sl-color-accent-high);
  --sl-color-hairline-light: var(--sl-color-gray-5);
  --sl-color-hairline: var(--sl-color-gray-6);
  --sl-color-hairline-shade: var(--sl-color-gray-5);
  --sl-color-backdrop-overlay: rgba(90, 86, 81, 0.4);
}

header.header {
  backdrop-filter: saturate(140%) blur(12px);
  transition:
    transform var(--kent-motion-fast),
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast);
}

mobile-starlight-toc nav,
.right-sidebar {
  transition:
    top var(--kent-motion-fast),
    padding-top var(--kent-motion-fast);
}

mobile-starlight-toc nav {
  top: calc(var(--kent-header-offset) - 1px);
  isolation: isolate;
  opacity: 1;
  transform: none;
}

mobile-starlight-toc .dropdown {
  background-color: var(--sl-color-black);
}

@media (min-width: 72rem) {
  .right-sidebar {
    padding-top: var(--kent-header-offset);
  }
}

.site-title img {
  height: 1.4rem;
  width: 1.4rem;
}

.site-title span {
  font-family: var(--kent-font-heading);
  font-weight: 700;
}

aside.right-sidebar {
  position: sticky;
}

header.header a,
.site-title,
.sidebar-pane a,
starlight-toc a,
mobile-starlight-toc a,
mobile-starlight-toc summary,
.sl-markdown-content a,
.pagination-links a,
.mobile-preferences a,
.footer-shell a {
  transition:
    color var(--kent-motion-fast),
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast),
    text-decoration-color var(--kent-motion-fast),
    text-underline-offset var(--kent-motion-fast),
    transform var(--kent-motion-fast);
}

header.header a:hover,
.site-title:hover,
.sidebar-pane a:hover,
starlight-toc a:hover,
mobile-starlight-toc a:hover,
.sl-markdown-content a:hover,
.pagination-links a:hover,
.mobile-preferences a:hover,
.footer-shell a:hover {
  text-underline-offset: 0.2em;
}

.sidebar-pane a[aria-current='page'] {
  background-color: var(--kent-surface-accent);
  box-shadow: inset 2px 0 0 var(--sl-color-accent);
}

starlight-toc a[aria-current='true'],
mobile-starlight-toc a[aria-current='true'] {
  color: var(--sl-color-text-accent);
  background-color: var(--kent-surface-accent);
}

.DocSearch-Button,
.theme-toggle,
.mobile-preferences,
.pagination-links a {
  transition:
    color var(--kent-motion-fast),
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast),
    transform var(--kent-motion-fast);
}

sl-doc-search {
  width: 100%;
}

.DocSearch-Button {
  max-width: none;
}

.search-wrapper sl-doc-search,
.search-wrapper .DocSearch-Button {
  width: 100%;
  max-width: 25rem;
  margin-inline: auto;
}

.DocSearch-Button:hover,
.DocSearch-Button:focus-visible,
.theme-toggle:hover,
.theme-toggle:focus-visible,
.pagination-links a:hover,
.pagination-links a:focus-visible {
  box-shadow: var(--kent-shadow-island-0);
}

.sl-heading-wrapper .sl-anchor-link {
  transition:
    color var(--kent-motion-fast),
    opacity var(--kent-motion-fast),
    transform var(--kent-motion-fast);
}

.sl-markdown-content blockquote,
.sl-markdown-content pre,
.sl-markdown-content code,
.expressive-code,
.starlight-aside {
  transition:
    color var(--kent-motion-fast),
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast);
}

.sl-markdown-content blockquote,
.starlight-aside {
  border-radius: var(--kent-radius-m);
  box-shadow: var(--kent-shadow-island-0);
}

.expressive-code,
.sl-markdown-content pre {
  border-radius: var(--kent-radius-l);
}

.sl-markdown-content li.task-list-item > input[type='checkbox'] {
  transition:
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast);
}

@media (prefers-reduced-motion: no-preference) {
  h1#_top,
  .sl-markdown-content,
  [data-has-sidebar] .sidebar-pane {
    animation: kent-surface-reveal var(--kent-motion-normal) both;
  }

  .sl-markdown-content {
    animation-delay: var(--kent-motion-stagger-fast);
  }

  [data-has-sidebar] .sidebar-pane {
    animation-delay: var(--kent-motion-stagger-normal);
  }

  header.header a:hover,
  .site-title:hover,
  .sidebar-pane a:hover,
  starlight-toc a:hover,
  mobile-starlight-toc a:hover,
  .sl-markdown-content a:hover,
  .mobile-preferences a:hover,
  .footer-shell a:hover {
    transform: translateX(1px);
  }

  .DocSearch-Button:hover,
  .DocSearch-Button:focus-visible,
  .theme-toggle:hover,
  .theme-toggle:focus-visible,
  .pagination-links a:hover,
  .pagination-links a:focus-visible {
    transform: translateY(-1px);
  }

  .DocSearch-Button:active,
  .theme-toggle:active,
  .pagination-links a:active {
    transform: translateY(0) scale(0.99);
  }

  @media (min-width: 72rem) {
    .right-sidebar-panel {
      animation: kent-surface-reveal var(--kent-motion-normal) both;
      animation-delay: calc(var(--kent-motion-stagger-normal) * 2);
    }
  }
}

body,
.sl-markdown-content {
  font-family: var(--__sl-font);
  letter-spacing: normal;
}

h1,
h2,
header.header,
header.header * {
  font-family: var(--kent-font-heading);
}

h1,
h2,
h3 {
  font-weight: 600;
}

h4,
h5,
h6 {
  font-family: var(--__sl-font);
  font-weight: 500;
  letter-spacing: normal;
}

h1::first-letter,
h2::first-letter,
h3::first-letter {
  color: var(--sl-color-accent);
}

code,
pre,
.expressive-code,
.sl-markdown-content pre {
  font-family: var(--__sl-font-mono);
  font-feature-settings: 'calt', 'liga', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06',
    'ss07', 'ss08', 'ss09';
}

.sl-markdown-content {
  font-size: var(--sl-text-body);
  line-height: var(--sl-line-height);
}

.sl-markdown-content p,
.sl-markdown-content li,
.sl-markdown-content blockquote {
  line-height: 1.8;
}

.sl-markdown-content h1,
.sl-markdown-content h2,
.sl-markdown-content h3,
.sl-markdown-content h4,
.sl-markdown-content h5,
.sl-markdown-content h6 {
  letter-spacing: normal;
}

.sl-markdown-content .task-list-item {
  list-style: none;
}

.sl-markdown-content ul.contains-task-list {
  padding-inline-start: 0;
}

.sl-markdown-content li.task-list-item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.sl-markdown-content li.task-list-item > input[type='checkbox'] {
  appearance: none;
  margin: 0.2rem 0 0;
  width: 1.05rem;
  height: 1.05rem;
  flex: 0 0 auto;
  border: 1px solid var(--sl-color-gray-4);
  border-radius: 0.25rem;
  background-color: var(--sl-color-bg-inline-code);
  position: relative;
}

.sl-markdown-content li.task-list-item > input[type='checkbox']:checked {
  border-color: var(--sl-color-accent);
  background-color: color-mix(in srgb, var(--sl-color-accent) 18%, var(--sl-color-bg-inline-code));
}

.sl-markdown-content li.task-list-item > input[type='checkbox']:checked::after {
  content: '';
  position: absolute;
  inset: 0.12rem 0.28rem 0.22rem 0.22rem;
  border-right: 2px solid var(--sl-color-accent);
  border-bottom: 2px solid var(--sl-color-accent);
  transform: rotate(40deg);
}

[data-has-sidebar] .sidebar-pane {
  background-color: var(--sl-color-bg-sidebar);
  transition:
    background-color var(--kent-motion-fast),
    border-color var(--kent-motion-fast),
    box-shadow var(--kent-motion-fast);
}

@media (min-width: 50rem) {
  [data-has-sidebar] .main-pane {
    max-width: none;
  }

  [data-has-sidebar] .sidebar-pane {
    inset-block: 0;
  }

  [data-has-sidebar] .sidebar-content {
    padding-top: calc(var(--sl-nav-height) + 1rem);
  }
}
