/* Imports */
@import url("base.css");
@import url("geist.css");
@import url("code.css");

/* Theme variables */
:root {
    --bold: 0 0% 0%;
    --background: 0 0% 98%;
    --foreground: 0 0% 9%;
    --muted: 0 0% 92%;
    --muted-foreground: 0 0% 40%;
    --popover-foreground: 0 0% 9%;
    --card-foreground: 0 0% 9%;
    --primary: 0 0% 9%;
    --accent: 0 0% 82%;
    --accent-foreground: 0 0% 9%;
    --border: 0 0% 92%;
    --input: 0 0% 92%;
    --light-accent: 0, 0%, 94%;
    --link: 210.84, 100%, 41.96%;
    --radius: 12px;
    --box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08), 0px 1px 1px rgba(0, 0, 0, 0.04), 0px 8px 8px -8px rgba(0, 0, 0, 0.04);
    --code-background: 0, 0%, 100%;
    --pre-shadow: 0, 0%, 83.92%;
    --highlight: 209.55 100% 94%;
    --danger-admonition-background: 0, 62.48%, 80.01%;
    --danger-admonition-foreground: 5.6, 69.49%, 45.14%;
    --hint-admonition-background: 274.81, 100%, 87.75%;
    --hint-admonition-foreground: 276.88, 100%, 40%;
    --tip-admonition-background: 98.86, 39.38%, 66.18%;
    --tip-admonition-foreground: 123.11, 91.39%, 29%;
    --warning-admonition-background: 28.89, 92.66%, 86.38%;
    --warning-admonition-foreground: 34.59, 100%, 43.75%;
    --seealso-admonition-background: 198.63, 88.66%, 48.43%;
    --seealso-admonition-foreground: 216.35, 100%, 47%;
    --tab-foreground: 0, 0%, 40%, 0.5;
    --ease-out: cubic-bezier(0.25, 1, 0.5, 1);
    --ease-in-out: cubic-bezier(0, 0, 0.2, 1);
    --ease-in-out-circ: cubic-bezier(0.79, 0.14, 0.15, 0.86);
    --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
    --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
    --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
    --duration-fast: 150ms;
    --duration-normal: 500ms;
    --duration-slow: 1000ms;
    --sidebar-width: 250px;
    --header-offset: 2.5rem;
    --anchor-offset-extra: 12px;
    --header-surface: color-mix(in srgb, hsl(var(--background)) 75%, transparent);
    --sidebar-backdrop-blur: 8px;
    --sidebar-backdrop-alpha: 0.28;
    --sidebar-backdrop-color: color-mix(in srgb, hsl(var(--foreground)) calc(var(--sidebar-backdrop-alpha) * 100%), transparent);
    --red-color: 357.87, 68.98%, 51.96%;
    --yellow-color: 38.9, 100%, 57.06%;
    --green-color: 131.25, 41.03%, 45.88%;
}

/* Dark theme overrides */
html[data-theme="dark"] {
    --bold: 0 0% 100%;
    --background: 0 0% 0%;
    --foreground: 0 0% 93%;
    --muted-foreground: 0 0% 63%;
    --accent-foreground: 0 0% 93%;
    --card-foreground: 0 0% 9%;
    --accent: 0 0% 9%;
    --muted: 0 0% 12%;
    --border: 0 0% 12%;
    --input: 0 0% 12%;
    --light-accent: 0, 0%, 8%;
    --link: 210.61, 100%, 61.18%;
    --code-background: 0, 0%, 4%;
    --pre-shadow: 0 0% 12%;
    --highlight: 211.25, 97.96%, 19.22%;
    --danger-admonition-background: 0, 54.44%, 12.95%;
    --danger-admonition-foreground: 5.6, 76.17%, 55.94%;
    --hint-admonition-background: 285.39, 73.16%, 19.06%;
    --hint-admonition-foreground: 296.58, 100%, 73.25%;
    --tip-admonition-background: 141.89, 55.64%, 21.2%;
    --tip-admonition-foreground: 123.11, 65.98%, 42.78%;
    --warning-admonition-background: 28.89, 100%, 10.59%;
    --warning-admonition-foreground: 34.59, 100%, 50%;
    --seealso-admonition-background: 213.21, 94%, 15%;
    --seealso-admonition-foreground: 208.46, 100%, 64%;
    --tab-foreground: 0, 0%, 63%, 0.5;
    --box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08), 0px 1px 1px rgba(255, 255, 255, 0.04), 0px 8px 8px -8px rgba(255, 255, 255, 0.04);
    --sidebar-backdrop-alpha: 0.38;
    --sidebar-backdrop-color: color-mix(in srgb, hsl(var(--background)) calc(var(--sidebar-backdrop-alpha) * 100%), transparent);
}

/* Global default transitions */
* {
    transition: border-color var(--duration-normal) var(--ease-in-out);
    -ms-overflow-style: none;
    scrollbar-width: none;
}

*::-webkit-scrollbar {
    width: 0;
    height: 0;
}

*::-webkit-scrollbar-track {
    background: transparent;
}

*::-webkit-scrollbar-thumb {
    background-color: transparent;
    border: none;
}

/* Transition/motion gates */
html.no-transitions *,
html.no-transitions *::before,
html.no-transitions *::after {
    transition: none !important;
    animation: none !important;
}

/* Base */
body {
    transition: none;
}

html {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    font-size: 1.05rem;
    scroll-behavior: smooth;
    transition: none;
    scroll-padding-top: var(--header-offset);
}

/* Theme transition opt-in */
html.theme-transition,
html.theme-transition body,
html.theme-transition *,
html.theme-transition *::before,
html.theme-transition *::after {
    transition: background-color var(--duration-normal) var(--ease-in-out),
        color var(--duration-normal) var(--ease-in-out),
        fill var(--duration-normal) var(--ease-in-out),
        stroke var(--duration-normal) var(--ease-in-out),
        box-shadow var(--duration-normal) var(--ease-in-out),
        text-decoration-color var(--duration-normal) var(--ease-in-out) !important;
    will-change: background-color, color, fill, stroke, box-shadow, text-decoration-color;
}

/* Typography */
.font-sans {
    font-family: "Geist Sans", sans-serif;
}

b,
strong,
.font-bold {
    font-weight: 600;
    color: hsl(var(--bold));
}

code,
kbd,
pre,
samp {
    font-family: "Geist Mono", monospace;
}

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

/* Layout */
.site-body {
    min-height: 100vh;
    font-family: "Geist Sans", sans-serif;
    background-color: hsl(var(--background));
    color: hsl(var(--foreground));
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

.site-body--locked {
    overflow: hidden;
    touch-action: none;
}

.site-shell {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.site-shell__skip-link {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 100;
    padding: 1rem;
    font-size: 1rem;
    background-color: hsl(var(--background));
    color: hsl(var(--foreground));
    transform: translateX(-100%);
    opacity: 0;
    transition: transform var(--duration-fast) var(--ease-in-out), opacity var(--duration-fast) var(--ease-in-out);
}

.site-shell__skip-link:focus {
    transform: translateX(0);
    opacity: 1;
    outline: 2px solid hsl(var(--accent));
    outline-offset: 4px;
}

.site-shell__main {
    flex: 1 0 auto;
    width: 100%;
}

.site-layout {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.site-layout__content {
    position: relative;
    padding-block: 1.5rem;
}

@media (min-width: 768px) {
    .site-layout {
        display: grid;
        align-items: start;
        gap: 4rem;
        grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
    }

    .site-layout__content {
        padding-block: 2rem;
    }
}

@media (min-width: 1280px) {
    .site-layout--has-secondary {
        grid-template-columns: var(--sidebar-width) minmax(0, 1fr) var(--sidebar-width);
    }
}

.site-layout__meta {
    margin-top: 2rem;
    margin-bottom: 3rem;
    font-size: 0.875rem;
    color: hsl(var(--muted-foreground));
}

.site-page {
    width: 100%;
    max-width: 68ch;
    margin-inline: auto;
}

@media (min-width: 768px) {
    .site-page {
        padding-inline: 0;
    }
}

.site-page--wide {
    max-width: min(100%, 1100px);
}

.site-page__content {
    min-width: 0;
}

/* Sidebars */
.site-sidebar__backdrop {
    z-index: 1000;
    position: fixed;
    inset: 0;
    pointer-events: auto;
    background-color: var(--sidebar-backdrop-color);
    backdrop-filter: blur(var(--sidebar-backdrop-blur));
    -webkit-backdrop-filter: blur(var(--sidebar-backdrop-blur));
    will-change: backdrop-filter, background-color;
}

.site-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    height: 100svh;
    width: var(--sidebar-width, 280px);
    max-width: 85vw;
    background-color: hsl(var(--background));
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    transform: translateX(-100%);
    transition: transform var(--duration-fast) var(--ease-in-out);
    padding: 1rem 1.5rem;
    display: flex;
    flex-direction: column;
    overscroll-behavior: contain;
    color: hsl(var(--foreground));
    font-size: 0.875rem;
    line-height: 1.55;
    will-change: transform;
    animation: none;
}

.site-sidebar--visible {
    z-index: 1100;
    transform: translateX(0);
}

@keyframes site-sidebar-bounce-in {
    0% {
        transform: translateX(-110%);
    }

    70% {
        transform: translateX(6%);
    }

    100% {
        transform: translateX(0);
    }
}

.site-body--sidebar-open .site-sidebar--primary {
    transform: translateX(0);
}

.site-sidebar--secondary {
    display: none;
}

@media (min-width: 768px) {
    .site-sidebar {
        position: sticky;
        top: var(--header-offset);
        height: calc(100vh - var(--header-offset));
        width: 100%;
        max-width: none;
        background: transparent;
        box-shadow: none;
        transform: none;
        padding: 0;
        gap: 1.5rem;
    }

    .site-sidebar--primary {
        display: block;
    }
}

@media (min-width: 1280px) {
    .site-layout--has-secondary .site-sidebar--secondary {
        display: block;
    }
}

.site-sidebar__brand {
    margin-top: -0.4rem;
    padding-top: 0rem !important;
    padding-left: 0rem !important;
}

.site-sidebar__brand-image {
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.site-sidebar__brand-image--dark {
    display: none;
}

.site-sidebar__brand-image--light {
    display: block;
}

html[data-theme="dark"] .site-sidebar__brand-image--single {
    filter: invert(1);
}

html[data-theme="dark"] .site-sidebar__brand-image--dark {
    display: block;
}

html[data-theme="dark"] .site-sidebar__brand-image--light {
    display: none;
}

.site-sidebar__brand-title {
    color: hsl(var(--foreground));
}

.site-sidebar__scroll {
    position: relative;
    flex: 1 1 auto;
    overflow: hidden;
}

.site-sidebar__content {
    position: relative;
    height: 100%;
    overflow-y: auto;
    padding-right: 0.25rem;
}

@media (min-width: 768px) {
    .site-sidebar__content {
        overflow: visible;
        padding-right: 0;
    }
}

.site-sidebar__title {
    font-size: 0.75rem;
    font-weight: 600;
    color: hsl(var(--muted-foreground) / 0.5);
    text-transform: uppercase;
    margin-bottom: 0.25rem;
}

.site-sidebar__close {
    position: absolute;
    right: 1rem;
    border: none;
    background: transparent;
    font-size: 1.125rem;
    color: hsl(var(--foreground));
    cursor: pointer;
    transition: color var(--duration-fast) var(--ease-in-out);
}

.site-sidebar__close:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-sidebar__close:hover,
.site-sidebar__close:focus-visible {
    color: hsl(var(--accent-foreground));
}

@media (min-width: 768px) {
    .site-sidebar__close {
        display: none;
    }
}

@media (min-width: 768px) {
    .site-sidebar__brand {
        display: none !important;
    }

    .site-sidebar--secondary {
        padding-top: 2rem;
    }
}

.site-sidebar--secondary {
    padding-top: 2rem;
}

.site-sidebar__toc {
    margin: 2rem 0 1rem 0;
    width: 100%;
    font-size: 0.875rem;
    color: hsl(var(--muted-foreground));
}

.site-sidebar__toc ul {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

.site-sidebar__toc a {
    color: inherit;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    transition: color var(--duration-fast) var(--ease-in-out);
}

.site-sidebar--primary a,
.site-sidebar--primary a,
.site-sidebar--secondary a,
.site-sidebar__toc a,
.site-sidebar__mobile-link,
.site-sidebar__alphabet-link {
    text-decoration: none;
}

.site-sidebar__toc a:hover,
.site-sidebar__toc a:focus-visible,
.site-sidebar--secondary a.toc-active {
    color: hsl(var(--foreground));
}

.site-sidebar__cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1.25rem;
    width: 100%;
    font-size: 0.85rem;
    border: 1px solid hsl(var(--border)) !important;
    border-radius: calc(var(--radius) * 0.9);
    text-decoration: none;
    height: 2rem;
    padding: 0 0.5rem !important;
    color: hsl(var(--muted-foreground));
    background-color: hsl(var(--light-accent));
    transition: background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);
}

.site-sidebar__cta span {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.site-sidebar--alpha {
    padding-top: 0;
}

.site-sidebar__alphabet {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 1rem;
}

.site-sidebar__alphabet-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 600;
    color: hsl(var(--muted-foreground));
    transition: background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);
}

.site-sidebar__alphabet-link:hover,
.site-sidebar__alphabet-link:focus-visible {
    color: hsl(var(--foreground));
    background-color: color-mix(in srgb, hsl(var(--accent)) 20%, transparent);
}

.site-sidebar__alphabet-link:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-sidebar__mobile-list {
    list-style: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.site-sidebar__mobile-item {
    color: hsl(var(--muted-foreground));
    transition: color var(--duration-normal) var(--ease-in-out);
}

.site-sidebar__mobile-link {
    display: inline-flex;
    align-items: center;
    color: hsl(var(--foreground));
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-in-out);
}

.site-sidebar__mobile-item:hover,
.site-sidebar__mobile-item:focus-visible,
.site-sidebar__mobile-link:hover,
.site-sidebar__mobile-link:focus-visible {
    color: hsl(var(--accent-foreground));
}

.site-sidebar__mobile-link:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

/* Search */
.site-search {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 38rem;
}

.site-search__label {
    flex: 1 1 auto;
    width: 100%;
}

.site-search__input {
    width: 100%;
    border: 1px solid hsl(var(--border));
    border-radius: var(--radius);
    background-color: hsl(var(--background));
    color: hsl(var(--foreground));
    font-size: 0.95rem;
    padding: 0.55rem 0.85rem;
    transition: border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);
}

.site-search__input::placeholder {
    color: hsl(var(--muted-foreground));
}

.site-search__input:focus {
    outline: none;
    border-color: hsl(var(--accent));
    box-shadow: 0 0 0 3px color-mix(in srgb, hsl(var(--accent)) 28%, transparent);
}

.site-search__submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border: none;
    border-radius: var(--radius);
    background-color: hsl(var(--accent));
    color: hsl(var(--accent-foreground));
    cursor: pointer;
    transition: background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);
}

.site-search__submit:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-search__submit:hover,
.site-search__submit:focus-visible {
    background-color: hsl(var(--foreground));
    color: hsl(var(--background));
}

.site-header__search .DocSearch-Button {
    width: 100%;
    font-size: 0.95rem;
}

.site-header__search .DocSearch-Button-Keys {
    margin-left: auto;
}

@media (max-width: 640px) {
    .site-header__utilities {
        gap: 0.5rem;
        justify-content: flex-end;
    }

    .site-header__search {
        flex: 0 0 auto;
        width: auto;
    }

    .site-search {
        width: auto;
        gap: 0.25rem;
    }

    .site-search__label {
        display: none;
    }

    .site-header__search .site-search__submit {
        width: 2.5rem;
        height: 2.5rem;
    }

    .site-header__search .DocSearch-Button {
        padding: 0.65rem;
        justify-content: center;
    }

    .site-header__search .DocSearch-Button-Placeholder,
    .site-header__search .DocSearch-Button-Keys {
        display: none;
    }

    .site-header__search .DocSearch-Button-Container {
        gap: 0;
    }
}

/* Author */
.site-author {
    display: flex;
    flex-direction: column;
    font-size: 0.875rem;
    color: hsl(var(--muted-foreground));
    text-align: center;
}

.site-author__profile {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    text-align: left;
    margin-bottom: 1rem;
}

.site-author__avatar {
    width: 20px;
    height: 20px;
    border-radius: 100% !important;
    margin: 0 !important;
}

.site-author__details {
    display: flex;
    min-width: 0;
    align-items: flex-start;
    text-align: left;
}

.site-author__name {
    font-weight: 500 !important;
    color: hsl(var(--accent-foreground)) !important;
    text-decoration: none;
    margin-right: 0.5rem;
}

.site-author__name:hover,
.site-author__name:focus-visible {
    color: hsl(var(--accent-foreground));
}

.site-author__name:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-author__bio {
    color: hsl(var(--muted-foreground));
}

.site-author__social {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 4rem;
}

.site-author__social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);
}

.site-author__social-link--linkedin {
    color: #0a66c2 !important;
}

.site-author__social-link--github {
    color: hsl(var(--foreground)) !important;
}

.site-author__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
}

.site-author__meta-group {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.site-author__copy {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    text-decoration: none;
    color: hsl(var(--foreground));
    font-weight: 500;
}

.site-author__timestamp {
    margin: 0;
    color: hsl(var(--muted-foreground));
}

@media (max-width: 640px) {

    .site-author__meta {
        align-items: stretch;
        text-align: left
    }

    .site-author__details {
        align-items: center;
        text-align: center;
        flex-direction: column;
    }
}

/* Media */
.site-media {
    margin: 2rem auto !important;
    width: min(100%, 768px) !important;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: center;
}

.site-media__frame {
    width: 100%;
    border-radius: var(--radius);
    overflow: hidden;
    background-color: hsl(var(--muted));
}

.site-media__frame--ratio {
    position: relative;
    padding-bottom: 56.25%;
}

.site-media__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    border-radius: inherit;
}

.site-media__video {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
    border-radius: inherit;
}

.site-media__caption {
    font-size: 0.85rem;
    color: hsl(var(--muted-foreground));
    text-align: center;
}

/* YouTube cards */
.site-youtube-card {
    display: block;
    padding-inline: 0.15rem;
}

.site-youtube-card__body {
    display: flex;
    flex-direction: column;
}

.site-youtube-card__thumbnail {
    position: relative;
    width: 100%;
    overflow: hidden;
    padding-top: 56.25%;
}

.site-youtube-card__thumbnail img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin: 0 !important;
}

.site-youtube-card__content {
    display: flex;
    flex-direction: column;
    margin-top: 1rem;
    letter-spacing: -0.5px;
    font-family: "Geist Mono", monospace;
}

.site-youtube-card__title {
    font-weight: 500;
    font-size: 0.85rem;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    line-clamp: 1;
    color: hsl(var(--muted-foreground));
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}

.site-youtube-card__channel {
    color: hsl(var(--foreground));
    font-size: .8rem;
    line-height: 1.25rem;
    margin: 0 1rem 1.25rem 0 !important;
}

.site-youtube-card:focus-visible {
    outline: none;
}

/* Pagination */
.site-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
    margin-inline: auto;
    background: hsl(var(--code-background));
    border-radius: 50px;
    padding: 0.25rem;
    width: max-content;
    border: 1px solid hsl(var(--border));
}

.site-pagination__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    background-color: hsl(var(--muted));
    color: hsl(var(--foreground));
}

.site-pagination__link:hover,
.site-pagination__link:focus {
    background-color: hsl(var(--accent));
}

/* Search results page */
.site-search-page {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.site-search-page__fallback {
    font-size: 0.875rem;
    padding: 1rem;
    border-radius: var(--radius);
    background-color: #fee2e2;
    color: #991b1b;
}

.site-search-page__results {
    min-height: 4rem;
}

/* Genindex */
.site-genindex {
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}

.site-genindex__title {
    margin-bottom: 0.5rem;
}

.site-genindex__section {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.site-genindex__heading {
    font-size: 1.25rem;
    margin: 0;
}

.site-genindex__table {
    width: 100%;
    border-collapse: collapse;
}

.site-genindex__column {
    width: 33%;
    vertical-align: top;
    padding-inline: 0.5rem;
}

.site-genindex__list,
.site-genindex__sublist {
    list-style: none;
    margin: 0;
    padding: 0;
}

.site-genindex__item {
    margin-bottom: 0.35rem;
}

.site-genindex__sublist {
    margin-top: 0.25rem;
    padding-left: 0.75rem;
}

.site-genindex__subitem {
    margin-bottom: 0.2rem;
}

@media (max-width: 900px) {
    .site-genindex__column {
        width: 100%;
        display: block;
    }

    .site-genindex__table tr {
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
    }
}

/* Scroll to top */
.site-scrolltop {
    transform: translateX(-50%);
    position: fixed;
    bottom: 4rem !important;
    left: 50%;
    z-index: 10;
    padding: 0.5rem 1rem;
    border-radius: 50px;
    font-size: 0.95rem;
    background-color: hsl(var(--muted));
    color: hsl(var(--accent-foreground));
    cursor: pointer;
    transition: opacity var(--duration-slow) var(--ease-in-out);
}

.site-scrolltop--hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

@media (min-width: 768px) {
    .site-scrolltop {
        bottom: 10rem;
    }
}

/* Footer */
.site-footer {
    padding-block: 1.5rem;
    background-color: transparent;
}

.site-footer__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 6rem;
}

.site-footer__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    text-align: center;
    max-width: 72ch;
}

@media (min-width: 768px) {
    .site-footer {
        padding-block: 0;
    }

    .site-footer__content {
        flex-direction: row;
        gap: 0.5rem;
        text-align: left;
    }
}

@media (min-width: 1280px) {

    .site-footer__inner {
        justify-content: space-around;
    }
}

.site-footer__text {
    font-size: 0.875rem;
    line-height: 1.6;
    color: hsl(var(--muted-foreground));
}

.site-footer__text a {
    color: hsl(var(--foreground));
}

/* Breadcrumbs */
.site-breadcrumbs {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
    font-size: 0.875rem;
    color: hsl(var(--muted-foreground));
}

.site-breadcrumbs__link {
    max-width: 18ch;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: inherit;
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-in-out);
}

.site-breadcrumbs__link:hover,
.site-breadcrumbs__link:focus-visible {
    color: hsl(var(--foreground));
    transition: color var(--duration-slow) var(--ease-out);
}

.site-breadcrumbs__link:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-breadcrumbs__link--home i {
    font-size: 0.95rem;
}

.site-breadcrumbs__separator {
    color: hsl(var(--muted-foreground));
    font-size: 0.875rem;
}

.site-breadcrumbs__current {
    max-width: 18ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: hsl(var(--foreground));
}

.site-breadcrumbs__current svg,
.site-breadcrumbs__link svg,
.site-breadcrumbs__current .fab,
.site-breadcrumbs__link .fab,
.site-breadcrumbs__current .fas,
.site-breadcrumbs__link .fas {
    display: none;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .scbs-carousel-indicators [data-bs-target] {
        transition: none !important;
    }

    .scbs-carousel .scbs-carousel-indicators .scbs-active {
        transition-delay: 0s;
    }

    .scbs-carousel .scbs-carousel-caption,
    .scbs-carousel .scbs-carousel-item figure figcaption,
    .scbs-carousel .carousel-item figure figcaption {
        transition: none;
    }
}

/* Small iPhone view */
@media (max-width: 640px) {
    #author {
        flex-direction: column;
        gap: 0.25rem;
        text-align: center;
    }
}

@media (max-width: 768px) {

    html {
        font-size: 1rem;
        line-height: 1.5rem !important;
    }

    blockquote {
        font-size: 1rem !important;
        line-height: 1.5rem !important;
        padding: 2rem 0 !important;
    }

    .container {
        padding-inline: 2rem;
    }

    .site-sidebar--visible {
        animation: site-sidebar-bounce-in calc(var(--duration-normal) * 1.15) var(--ease-out-back);
        animation-fill-mode: forwards;
        width: 100%;
    }

    .container .literal-block-wrapper {
        padding-inline: 0 !important;
    }

    .site-sidebar--primary ul ul {
        margin-left: 0.5rem;
    }

    .site-sidebar--primary ul ul:before,
    .site-sidebar--primary ul ul:is(.dark *):before {
        left: 0 !important;
    }

    .fas,
    .sd-octicon,
    .sd-material-icon {
        height: fit-content !important;
        width: fit-content !important;
    }

    nav a i {
        top: -2px;
    }

    #content table {
        display: block;
        max-width: 100%;
        width: max-content;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        table-layout: auto;
    }

    #content table colgroup col {
        width: auto !important;
    }

    #content h1 {
        font-size: 2rem !important;
        letter-spacing: -1.56px !important;
        line-height: 2rem !important;
    }

    .site-feedback-shell__title,
    #content h2 {
        font-size: 1.5rem !important;
        letter-spacing: -0.36px !important;
        line-height: 1.5rem !important;
        margin-top: calc(92px / 2) !important;
    }

    #content h3,
    #content section>p.lead {
        font-size: 1.25rem !important;
        letter-spacing: -0.86px !important;
        line-height: 1.5rem !important;
    }

    #content table th,
    #content table td {
        white-space: nowrap;
    }

    .admonition {
        max-width: 100% !important;
    }

    .site-sidebar--primary a {
        color: hsl(var(--foreground));
        padding-left: 0;
    }

    .site-sidebar--primary .caption {
        color: hsl(var(--muted-foreground));
        padding-left: 0;
    }

    .site-sidebar--secondary a.toc-active {
        transition: all 0.2s ease;
    }

    .scbs-carousel-item .scbs-d-none {
        display: block !important;
    }

    #content figure:hover .face-tag-wrap .face-tag,
    #content .zoom-inner:hover .face-tag-wrap .face-tag,
    #content .face-tag-wrap .face-tag:focus-visible {
        display: none;
    }

    .code-block-caption .caption-text {
        align-items: center;
        display: flex;
    }

    .code-block-caption>span>a {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        width: 30ch;
    }

    .scbs-carousel-indicators {
        margin-bottom: 0.3rem !important;
    }

    .scbs-carousel-control-prev-icon,
    .scbs-carousel-control-next-icon {
        margin-top: 0.7rem;
    }

    .admonition.attention::before,
    .admonition.caution::before,
    .admonition.error::before,
    .admonition.hint::before,
    .admonition.important::before,
    .admonition.note::before,
    .admonition.seealso::before,
    .admonition.tip::before,
    .admonition.warning::before,
    .admonition.danger::before,
    .admonition.unusual-one::after {
        left: 0.5rem !important;
    }

    .admonition.attention,
    .admonition.caution,
    .admonition.error,
    .admonition.hint,
    .admonition.important,
    .admonition.note,
    .admonition.seealso,
    .admonition.tip,
    .admonition.warning,
    .admonition.danger {
        padding-left: 2.5rem !important;
    }

    .admonition.unusual-one {
        padding-inline: 1rem !important;
    }

    .sd-row-cols-2>*,
    .sd-row-cols-3>* {
        width: 100% !important;
    }

    details.sd-dropdown .sd-summary-icon {
        display: none !important;
    }

    .picture-figure.align-left,
    .picture-figure.align-right {
        float: none;
        max-width: 100%;
        margin: 1rem auto;
        display: block;
    }

    .picture-figure {
        margin: 1rem auto;
    }

}

/* Content: headings */
#content h1 {
    font-size: 3rem;
    font-weight: 600;
    line-height: 3.5rem;
    text-align: center;
    color: hsl(var(--foreground));
    letter-spacing: -3.36px;
    margin-bottom: 2rem;
}

#content h2 {
    border: none;
    font-size: 2rem;
    line-height: 2.5rem;
    margin-top: calc(92px / 1.5);
    padding-bottom: 0;
    letter-spacing: -2.18px;
}

#content h3 {
    line-height: 1.625rem;
    letter-spacing: -0.4px;
}

/* Anchor scroll offset */
#content :is(h1, h2, h3, h4, h5, h6, .section, section, [id])[id] {
    scroll-margin-top: calc(var(--header-offset) + var(--anchor-offset-extra));
}

/* Utilities */
.whitespace-nowrap>svg,
#content h1 svg {
    display: none;
}

#content section>p {
    line-height: 1.5rem;
}

#content .rubric {
    font-size: 2rem;
    line-height: 2.5rem;
    margin-top: calc(92px / 1.5);
    padding-bottom: 0;
    letter-spacing: -2.18px;
}

/* Lead paragraph */
#content section>p.lead {
    color: hsl(var(--muted-foreground));
    font-size: 24px;
    line-height: 36px;
    text-align: start;
    padding: 1.5rem 0 0.5rem 0;
    font-weight: 500;
    letter-spacing: -0.96px;
}

#content ul:not(.search),
#content ul:not(.search) p,
#content ul:not(.search)>li {
    margin-top: 0;
    margin-left: 0.6rem;
}

#content ul:not(.search):not(:first-child) p,
#content ul:not(.search)>li:not(:first-child) {
    margin-top: 0.75rem;
}

#content .admonition>ul:not(.search):not(:first-child) p,
#content .admonition>ul:not(.search)>li:not(:first-child) {
    margin-top: 0.5rem;
}

table.docutils caption {
    caption-side: bottom;
    margin-top: 1rem;
    letter-spacing: initial;
    font-weight: 400;
    text-align: center;
    margin-bottom: 2rem;
}

#content img:not(figure img) {
    margin: 60px auto;
    border-radius: var(--radius);
    transition: transform var(--duration-slow) var(--ease-in-out);
    display: block;
}

#content figure {
    margin: 4rem auto;
    width: fit-content;
    position: relative;
}

#content figure img {
    margin: 0;
    display: block !important;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    transition: transform var(--duration-slow) var(--ease-in-out);
    transform-origin: center;
}

#content figure.zoom .zoom-inner {
    overflow: hidden;
}

#content .face-tag-wrap .face-tag {
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--duration-fast, 0.2s) var(--ease-in-out);
}

#content figure:hover .face-tag-wrap .face-tag,
#content .zoom-inner:hover .face-tag-wrap .face-tag,
#content .face-tag-wrap .face-tag:focus-visible {
    opacity: 0.5;
    pointer-events: auto;
}

#content .face-tag-wrap .face-tag::after {
    content: attr(title);
    position: absolute;
    left: 0;
    top: 100%;
    transform: translateY(4px);
    white-space: nowrap;
    font-size: 0.65em;
    line-height: 1.2;
    padding: 2px 6px;
    border-radius: 4px;
    color: hsl(var(--foreground));
    background: hsl(var(--background));
    box-shadow: 0 1px 2px hsl(var(--muted-foreground) / 0.15);
    pointer-events: none;
    opacity: 0;
    transition: opacity var(--duration-fast, 0.2s) var(--ease-in-out);
}

#content figure:hover .face-tag-wrap .face-tag::after,
#content .zoom-inner:hover .face-tag-wrap .face-tag::after,
#content .face-tag-wrap .face-tag:focus-visible::after {
    opacity: 1;
}

#content figcaption {
    letter-spacing: initial;
    font-weight: 400;
    text-align: center;
    margin-bottom: 2rem;
}

a.headerlink {
    text-decoration: none !important;
}

.highlighted,
#content a:not(.toc-backref) {
    text-decoration: none;
    font-weight: inherit;
    color: hsl(var(--link));
}

#content a:not(.admonition) {
    text-decoration: none;
}

/* Code caption link */
.code-block-caption>span>a {
    color: hsl(var(--muted-foreground)) !important;
    font-family: "Geist Mono", monospace;
    font-size: small;
    padding-left: 0.5rem;
    text-decoration-line: none !important;
}

/* Headerlink icon on hover */
h2:hover>a.headerlink:before,
h3:hover>a.headerlink:before,
h4:hover>a.headerlink:before,
h5:hover>a.headerlink:before,
h6:hover>a.headerlink:before {
    visibility: visible;
    color: hsl(var(--foreground));
    content: "\e1cd";
    display: inline-block;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    font-size: 1rem !important;
    font: var(--fa-font-regular);
    margin-right: 0;
    margin-left: 0.5rem;
}

.headerlink:focus:after,
.headerlink:focus:before,
.headerlink:hover:after,
.headerlink:hover:before {
    animation: none;
}

.copy,
.headerlink:after {
    display: none !important;
}

/* Sidebar links */
.site-sidebar--primary .caption {
    font-size: 0.75rem !important;
    color: hsl(var(--muted-foreground) / 0.5);
    text-transform: uppercase;
}

.site-sidebar--primary a {
    display: inline-flex;
    align-items: center;
    color: hsl(var(--muted-foreground));
    text-decoration: none;
    transition: color var(--duration-normal) var(--ease-in-out);
}

.site-sidebar--primary a.current {
    border: none;
    background-color: transparent !important;
    color: hsl(var(--foreground));
}

.site-sidebar--secondary a:hover,
.site-sidebar--primary a:hover {
    text-decoration-line: none !important;
    color: hsl(var(--bold));
}

.site-sidebar--secondary a {
    transition-duration: var(--duration-normal);
}

/* Header */
.site-header {
    position: sticky;
    top: 0;
    z-index: 40;
    width: 100%;
    background-color: var(--header-surface);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid transparent;
    transition: background-color var(--duration-normal) var(--ease-in-out), box-shadow var(--duration-normal) var(--ease-in-out), border-color var(--duration-normal) var(--ease-in-out);
}

html[data-theme="dark"] .site-header {
    background-color: var(--header-surface);
}

@supports not ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))) {
    .site-header {
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
        background-color: hsl(var(--background));
    }
}

.site-header--with-border {
    border-bottom-color: hsl(var(--border));
}

.site-header__inner {
    display: flex;
    align-items: center;
    min-height: 3.5rem
}

.site-header__primary {
    display: none;
    align-items: center;
}

@media (min-width: 768px) {
    .site-header__primary {
        display: flex;
    }
}

.site-header__logo {
    display: inline-flex;
    border: 1px solid hsl(var(--border));
    border-radius: 0.5rem;
    cursor: pointer;
    padding: 0.4rem 0.5rem;
}

.site-header__logo-image {
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.site-header__logo-image--single,
.site-header__logo-image--dark,
.site-header__logo-image--light {
    margin-right: 0.5rem;
}

.site-header__logo-image--dark {
    display: none;
}

.site-header__logo-image--light {
    display: block;
}

html[data-theme="dark"] .site-header__logo-image--single {
    filter: invert(1);
}

html[data-theme="dark"] .site-header__logo-image--dark {
    display: block;
}

html[data-theme="dark"] .site-header__logo-image--light {
    display: none;
}

.site-sidebar__brand-title,
.site-header__title {
    font-size: 0.85rem;
    font-family: "Geist Mono", monospace;
}

.site-sidebar__brand-title::before,
.site-header__title::before {
    content: "\f015";
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    display: inline-block;
    visibility: visible;
    font: var(--fa-font-regular);
}

@media (max-width: 768px) {

    .site-sidebar__brand-title::before,
    .site-header__title::before {
        font: var(--fa-font-regular);
        padding: 0.65rem;
        font-size: 0.9rem;
    }

    .site-sidebar__brand-title::before {
        border: 1px solid hsl(var(--border)) !important;
        margin-left: 0.5rem;
        border-radius: 0.5rem;
    }
}

.site-header__title {
    display: inline-block;
}

@media (min-width: 640px) {
    .site-header__title {
        display: inline-block;
    }
}

.site-header__nav {
    display: none;
}

@media (min-width: 768px) {
    .site-header__nav {
        display: block;
    }
}

.site-header__nav-list {
    display: flex;
    align-items: center;
    list-style: none;
    gap: 1.5rem;
    margin: 0;
    padding: 0;
}

.site-header__nav-item {
    display: flex;
}

.site-header__nav-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    font-size: 0.95rem;
    font-weight: 500;
    color: hsl(var(--muted-foreground));
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-in-out);
}

.site-header__nav-link:focus-visible {
    outline: 2px solid hsl(var(--accent));
    outline-offset: 2px;
}

.site-header__nav-link:hover,
.site-header__nav-link:focus-visible {
    color: hsl(var(--foreground));
}

.site-header__nav-link--active {
    color: hsl(var(--foreground));
}

.site-header__menu-toggle {
    display: inline-flex;
    border: none;
    background-color: transparent;
    border: 1px solid hsl(var(--border));
    border-radius: 0.5rem;
    margin: 0;
    cursor: pointer;
    cursor: pointer;
}

@media (min-width: 768px) {
    .site-header__menu-toggle {
        display: none;
    }
}

.site-header__utilities {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

@media (min-width: 768px) {
    .site-header__utilities {
        flex-wrap: nowrap;
    }
}

.site-header__search {
    align-items: center;
}

.site-header__theme-toggle {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: 0.75rem;
    background: transparent;
    color: hsl(var(--foreground));
    transition: background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);
    cursor: pointer;
    justify-content: end;
}

.site-header__theme-toggle-icon {
    font-size: 1rem;
    transition: transform var(--duration-normal) var(--ease-in-out), opacity var(--duration-normal) var(--ease-in-out);
    transform-origin: center;
}

html[data-theme="light"] .site-header__theme-toggle-icon--light {
    opacity: 0;
    display: none;
}

.site-header__theme-toggle-icon--dark {
    opacity: 1;
}

html[data-theme="dark"] .site-header__theme-toggle-icon--light {
    opacity: 1;
}

html[data-theme="dark"] .site-header__theme-toggle-icon--dark {
    opacity: 0;
    display: none;
}

.site-header__icon-list {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    list-style: none;
}

.site-header__icon-link {
    display: inline-flex;
    border: 1px solid hsl(var(--border)) !important;
    border-radius: 0.5rem;
    padding: 0.5rem;
    font-size: 0.8rem;
    background-color: hsl(var(--light-accent));
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
    height: 2rem;
    color: hsl(var(--muted-foreground));
    transition: background-color var(--duration-normal) var(--ease-in-out), color var(--duration-normal) var(--ease-in-out), box-shadow var(--duration-normal) var(--ease-in-out), transform var(--duration-normal) var(--ease-in-out);
}

.site-header__icon-link:hover,
.site-header__icon-link:focus-visible {
    color: hsl(var(--accent-foreground));
}

.is-active {
    transform: translateY(0);
}

/* Inline code */
code {
    background-color: hsl(var(--code-background));
    font-size: 0.9em;
    font-weight: 400;
    line-height: inherit;
    position: relative;
    white-space: pre-wrap;
    display: inline;
    word-break: break-word;
    margin: 0;
    background-clip: padding-box;
    border: 1px solid hsl(var(--muted-foreground)/0.3);
    padding: 2px 4px;
    border-radius: 0.25rem;
    transition: transform var(--duration-fast) var(--ease-in-out);
}

#content a code {
    color: hsl(var(--foreground));
    text-decoration-line: underline;
    text-decoration-color: hsl(var(--foreground) / 0.35);
    text-underline-offset: 2px;
    font-weight: inherit;
}

/* Code block */
pre {
    background-color: hsl(var(--code-background));
    overflow-x: auto;
    padding-bottom: 20px;
    padding-top: 20px;
    max-height: 480px;
    text-align: left;
    white-space: pre;
    word-spacing: normal;
    word-break: normal;
    font-size: 13px;
    line-height: 20px;
    tab-size: 4;
    border-radius: var(--radius) !important;
    transition: transform var(--duration-fast) var(--ease-in-out);
}

pre span.linenos {
    color: hsl(0, 0%, 63%) !important;
}

.literal-block-wrapper .code-block-caption {
    padding: 0 12px 0 16px;
    display: flex;
    height: 48px;
    align-items: center;
    background-color: hsl(var(--light-accent));
    border-radius: var(--radius) var(--radius) 0 0;
    border-bottom: 1px solid hsl(var(--pre-shadow));
}

.literal-block-wrapper pre {
    border-radius: 0 0 var(--radius) var(--radius) !important;
}

/* Copy button */
button.copybtn {
    border: none !important;
    background-color: transparent !important;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px 8px;
}

.site-sidebar--primary .caption button svg,
button.copybtn svg {
    display: none !important;
}

button.copybtn::before {
    font-weight: 900;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    font-size: 1rem !important;
    line-height: 1;
    display: inline-block;
    visibility: visible;
    content: "\f328";
    font: var(--fa-font-regular);
}

/* Copy tooltip */
.o-tooltip--left:after {
    transform: translateX(-102%) translateY(0);
    transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);
    background-color: hsl(var(--code-background)) !important;
    color: hsl(0, 0%, 63%) !important;
    padding: 4px 10px !important;
    border: 1px solid hsl(var(--border)) !important;
    border-radius: 8px !important;
}

/* Blockquote */
blockquote {
    border: none;
    margin-inline: auto;
    font-style: normal;
    padding: 5rem 0;
    font-size: 20px;
    line-height: 24px;
    text-align: center;
}

blockquote p:first-child::before {
    font-size: 2rem;
    font-style: normal;
    font-weight: 400;
    line-height: 2.25rem;
    font-family: Georgia, Times New Roman, Times, serif;
    vertical-align: middle;
    content: "“";
}

blockquote p:first-child::after {
    font-size: 2rem;
    font-style: normal;
    font-weight: 400;
    line-height: 2.25rem;
    font-family: Georgia, Times New Roman, Times, serif;
    vertical-align: middle;
    content: "”";
}

@media (max-width: 768px) {

    blockquote p:first-child::before,
    blockquote p:first-child::after {
        line-height: 1rem;
    }
}


blockquote p.attribution {
    text-align: right;
    font-size: 1rem;
    line-height: 1.25rem;
    font-weight: 500;
    letter-spacing: 0px;
    margin-top: 1.5rem;
}

blockquote p.attribution em {
    font-weight: 400;
    font-style: normal;
    color: hsl(var(--muted-foreground));
}

i {
    line-height: 1.5 !important;
}

#calendarIcon::before {
    font-size: 0.875rem;
    line-height: 1.25rem;
    content: "\f133";
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    font: var(--fa-font-regular);
    margin-right: 10px;
}

.prev-next {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    background-color: hsl(var(--muted));
}

/* Figures & images */
.picture-figure img {
    border-radius: 0 !important;
}

.variant-dark {
    position: absolute;
    inset: 0;
}

.picture-wrapper {
    position: relative;
    display: inline-block;
}

/* Admonitions */
.admonition {
    background-color: hsl(var(--light-accent), 0.2);
    border-radius: var(--radius);
    border: 1px solid hsl(var(--muted-foreground) / 0.2);
    color: hsl(var(--accent-foreground));
    line-height: 1.5rem;
    max-width: 90%;
    margin-inline: auto;
    padding: 1rem 1.5rem;
}

.admonition p:not(.admonition-title) {
    margin-top: 0;
}

.admonition code {
    background-color: transparent;
}

#content .admonition a {
    text-decoration: underline !important;
    text-underline-offset: 2px;
}

.admonition a code {
    color: inherit !important;
    text-decoration-color: inherit !important;
}

.admonition-title {
    margin-bottom: 0.5rem;
}

.note:is(.dark *) {
    background-color: hsl(var(--light-accent), 0.1);
    color: hsl(var(--accent-foreground));
}

.seealso {
    border: 1px solid hsl(var(--seealso-admonition-foreground), 0.1);
    background-color: hsl(var(--seealso-admonition-background), 0.1);
    color: hsl(var(--seealso-admonition-foreground));
}

.seealso:is(.dark *) {
    border: 1px solid hsl(var(--seealso-admonition-foreground), 0.1);
    background-color: hsl(var(--seealso-admonition-background), 0.1);
    color: hsl(var(--seealso-admonition-foreground));
}

.tip {
    border: 1px solid hsl(var(--tip-admonition-foreground), 0.1);
    background-color: hsl(var(--tip-admonition-background), 0.4);
    color: hsl(var(--tip-admonition-foreground)) !important;
}

.tip:is(.dark *) {
    border: 1px solid hsl(var(--tip-admonition-foreground), 0.1);
    background-color: hsl(var(--tip-admonition-background), 0.1);
}

.important,
.hint {
    border: 1px solid hsl(var(--hint-admonition-foreground), 0.1);
    background-color: hsl(var(--hint-admonition-background), 0.4);
    color: hsl(var(--hint-admonition-foreground));
}

.important:is(.dark *),
.hint:is(.dark *) {
    border: 1px solid hsl(var(--hint-admonition-foreground), 0.1);
    background-color: hsl(var(--hint-admonition-background), 0.1);
    color: hsl(var(--hint-admonition-foreground));
}

.error,
.danger {
    border: 1px solid hsl(var(--danger-admonition-foreground), 0.1);
    background-color: hsl(var(--danger-admonition-background), 0.4);
    color: hsl(var(--danger-admonition-foreground));
}

.error:is(.dark *),
.danger:is(.dark *) {
    border: 1px solid hsl(var(--danger-admonition-foreground), 0.1);
    background-color: hsl(var(--danger-admonition-background), 0.1);
    color: hsl(var(--danger-admonition-foreground));
}

.warning,
.caution,
.attention {
    border: 1px solid hsl(var(--warning-admonition-foreground), 0.1);
    background-color: hsl(var(--warning-admonition-background), 0.5);
    color: hsl(var(--warning-admonition-foreground));
}

.warning:is(.dark *),
.caution:is(.dark *),
.attention:is(.dark *) {
    border: 1px solid hsl(var(--warning-admonition-foreground), 0.1);
    background-color: hsl(var(--warning-admonition-background), 0.1);
    color: hsl(var(--warning-admonition-foreground));
}

.admonition.attention,
.admonition.caution,
.admonition.error,
.admonition.hint,
.admonition.important,
.admonition.note,
.admonition.seealso,
.admonition.tip,
.admonition.warning,
.admonition.danger {
    position: relative;
    padding-left: 3rem;
}

.admonition.attention>.admonition-title,
.admonition.caution>.admonition-title,
.admonition.error>.admonition-title,
.admonition.hint>.admonition-title,
.admonition.important>.admonition-title,
.admonition.note>.admonition-title,
.admonition.seealso>.admonition-title,
.admonition.tip>.admonition-title,
.admonition.warning>.admonition-title,
.admonition.danger>.admonition-title {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.admonition.tip code {
    border: 1px solid hsl(var(--tip-admonition-foreground), 0.3);
}

.admonition.tip a {
    color: hsl(var(--tip-admonition-foreground)) !important;
    text-decoration-color: hsl(var(--tip-admonition-foreground), 0.25) !important;
}

.admonition.hint code,
.admonition.important code {
    border: 1px solid hsl(var(--hint-admonition-foreground), 0.3);
}

.admonition.hint a,
.admonition.important a {
    color: hsl(var(--hint-admonition-foreground)) !important;
    text-decoration-color: hsl(var(--hint-admonition-foreground), 0.25) !important;
}

.admonition.seealso code {
    border: 1px solid hsl(var(--seealso-admonition-foreground), 0.3);
}

.admonition.seealso a {
    color: hsl(var(--seealso-admonition-foreground)) !important;
    text-decoration-color: hsl(var(--seealso-admonition-foreground), 0.25) !important;
}

.admonition.attention code,
.admonition.caution code,
.admonition.warning code {
    border: 1px solid hsl(var(--warning-admonition-foreground), 0.3);
}

.admonition.attention a,
.admonition.caution a,
.admonition.warning a {
    color: hsl(var(--warning-admonition-foreground)) !important;
    text-decoration-color: hsl(var(--warning-admonition-foreground), 0.25) !important;
}

.admonition.error code,
.admonition.danger code {
    border: 1px solid hsl(var(--danger-admonition-foreground), 0.3);
}

.admonition.error a,
.admonition.danger a {
    color: hsl(var(--danger-admonition-foreground)) !important;
    text-decoration-color: hsl(var(--danger-admonition-foreground), 0.25) !important;
}

.admonition.attention::before,
.admonition.caution::before,
.admonition.error::before,
.admonition.hint::before,
.admonition.important::before,
.admonition.note::before,
.admonition.seealso::before,
.admonition.tip::before,
.admonition.warning::before,
.admonition.danger::before {
    content: "\f05a";
    font: var(--fa-font-regular);
    position: absolute;
    left: 1rem;
    width: 28px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    color: hsl(var(--accent-foreground));
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    pointer-events: none;
}

.admonition.danger::before {
    content: "\f714";
    color: hsl(var(--danger-admonition-foreground));
}

.admonition.error::before {
    content: "\f188";
    color: hsl(var(--danger-admonition-foreground));
}

.admonition.warning::before,
.admonition.caution::before,
.admonition.attention::before {
    content: "\f071";
    color: hsl(var(--warning-admonition-foreground));
}

.admonition.tip::before {
    content: "\f14e";
    color: hsl(var(--tip-admonition-foreground));
}

.admonition.important::before {
    content: "\f005";
    color: hsl(var(--hint-admonition-foreground));
}

.admonition.hint::before {
    content: "\f0eb";
    color: hsl(var(--hint-admonition-foreground));
}

.admonition.seealso::before {
    content: "\f0ac";
    color: hsl(var(--seealso-admonition-foreground));
}

.admonition.unusual-one::before {
    display: none;
}

.admonition.unusual-one {
    padding-left: 1.5rem;
}

.admonition.unusual-one p:not(.admonition-title) {
    margin-top: 0.5rem;
}

.admonition.unusual-one>.admonition-title {
    position: absolute;
    width: auto !important;
    height: auto !important;
    clip: auto;
    border: 0;
    margin-bottom: 0.5rem;
    position: relative;
}

/* ToC vertical guide line */
@supports (position: relative) {
    .site-sidebar--primary ul ul {
        position: relative;
    }

    .site-sidebar--primary ul ul:before {
        content: "";
        position: absolute;
        width: 1px;
        background-color: hsl(var(--border)) !important;
        top: 0.25rem;
        bottom: 0.25rem;
        left: 0.25rem;
    }
}

/* Left sidebar accordion */
#left-sidebar a {
    border: none;
}

#left-sidebar a.current {
    font-weight: 400;
    border: none;
}

#left-sidebar ul ul {
    padding: 0 0 .5rem .75rem !important;
}

.site-sidebar--primary li.has-children {
    position: relative;
}

.site-sidebar--primary li.has-children>a {
    display: inline-block;
    width: auto;
    padding-right: 1.25rem;
}

.site-sidebar--primary li.has-children>button.nav-toggle {
    position: absolute;
    top: 0.5rem;
    right: 0;
    width: 1.5rem;
    height: 1.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    color: hsl(var(--muted-foreground));
    transition: color var(--duration-normal) var(--ease-in-out);
    z-index: 2;
}

.site-sidebar--primary li.has-children>button.nav-toggle::before {
    content: "\f078";
    font: var(--fa-font-regular);
    font-weight: 900;
    font-size: 0.8rem;
    line-height: 1;
    display: inline-block;
    transform: rotateX(0deg);
    transition: transform var(--duration-normal) var(--ease-in-out);
    transform-origin: 50% 50%;
}

.site-sidebar--primary li.has-children[aria-expanded="true"]>button.nav-toggle::before {
    color: hsl(var(--bold));
    transform: rotateX(180deg);
}

.site-sidebar--primary li.has-children>ul {
    display: block !important;
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    will-change: max-height, opacity;
    transition: max-height var(--duration-normal) var(--ease-in-out), opacity var(--duration-normal) var(--ease-in-out);
}

.site-sidebar--primary li.has-children[aria-expanded="true"]>ul {
    max-height: 1200px;
    opacity: 1;
}

.site-sidebar--primary li.has-children>a:hover+button.nav-toggle::before,
.site-sidebar--primary li.has-children>button.nav-toggle:hover::before,
.site-sidebar--primary li.has-children.current>button.nav-toggle::before,
.site-sidebar--primary li.has-children[aria-expanded="true"]>button.nav-toggle::before {
    color: hsl(var(--bold));
    transition: color var(--duration-slow) var(--ease-out);
}

/* Badges */
.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border-radius: 9999px;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-size: 12px;
    height: 24px;
    padding: 0 10px;
    letter-spacing: 0;
    vertical-align: middle;
}

li .badge {
    display: none;
}

.beta {
    background-color: hsl(353, 96%, 90%);
    color: hsl(347, 77%, 50%);
}

.new {
    background-color: hsl(141, 79%, 85%);
    color: hsl(142, 76%, 36%);
}

.highlight pre {
    padding: 1rem;
}

li .highlight pre {
    margin-bottom: 1.5rem;
}

/* Carousel */
.scbs-carousel-control-next,
.scbs-carousel-control-prev {
    width: auto !important;
    opacity: 1 !important;
    top: 90% !important;
}

.scbs-carousel-indicators [data-bs-target] {
    box-sizing: border-box !important;
    width: 0.5rem !important;
    height: 0.5rem !important;
    margin: 0.25rem !important;
    background-color: hsl(var(--accent-foreground)) !important;
    border-top: none !important;
    border-bottom: none !important;
    border-radius: 100% !important;
    background-clip: border-box !important;
    transition:
        opacity var(--duration-fast) var(--ease-in-out),
        background-color var(--duration-fast) var(--ease-in-out),
        width var(--duration-normal) var(--ease-out),
        height var(--duration-normal) var(--ease-out),
        border-radius var(--duration-normal) var(--ease-out) !important;
    will-change: opacity, background-color, width, height, border-radius;
}

.scbs-carousel-caption {
    bottom: 2.5rem !important;
    right: 0 !important;
    left: 0 !important;
    position: relative !important;
    padding-bottom: 0 !important;
    padding-top: 0 !important;
}

.scbs-carousel h5 {
    letter-spacing: initial;
    font-weight: 400 !important;
    color: hsl(var(--muted-foreground)) !important;
    font-size: 0.875rem;
    margin-inline: auto;
    max-width: 80%;
    line-height: 1.25rem;
}

.scbs-carousel .scbs-carousel-indicators .scbs-active {
    transition-delay: 0s;
}

.scbs-carousel-indicators .scbs-active {
    opacity: 1 !important;
    width: 40px !important;
    height: 8px !important;
    border-radius: 50px !important;
    transition: width var(--duration-normal) var(--ease-out),
        height var(--duration-normal) var(--ease-out),
        border-radius var(--duration-normal) var(--ease-out) !important;
    transform: none !important;
}

@supports selector(:has(*)) {
    .scbs-carousel:has(.scbs-carousel-item.scbs-carousel-item-start, .scbs-carousel-item.scbs-carousel-item-end) .scbs-carousel-indicators [data-bs-target] {
        pointer-events: none;
        cursor: default;
    }

    .scbs-carousel:has(.scbs-carousel-item.scbs-carousel-item-start, .scbs-carousel-item.scbs-carousel-item-end) .scbs-carousel-control-next,
    .scbs-carousel:has(.scbs-carousel-item.scbs-carousel-item-start, .scbs-carousel-item.scbs-carousel-item-end) .scbs-carousel-control-prev {
        pointer-events: none;
    }
}

.scbs-carousel .scbs-carousel-caption,
.scbs-carousel .scbs-carousel-item figure figcaption,
.scbs-carousel .carousel-item figure figcaption {
    opacity: 0;
    transform: translateY(0);
    transition: opacity 1.5s, transform var(--duration-normal) var(--ease-out);
    pointer-events: none;
}

.scbs-carousel .scbs-carousel-item.scbs-active .scbs-carousel-caption,
.scbs-carousel .scbs-carousel-item.active .scbs-carousel-caption,
.scbs-carousel .carousel-item.active .scbs-carousel-caption,
.scbs-carousel .scbs-carousel-item.scbs-active figure figcaption,
.scbs-carousel .scbs-carousel-item.active figure figcaption,
.scbs-carousel .carousel-item.active figure figcaption {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.scbs-carousel-control-prev-icon,
.scbs-carousel-control-next-icon {
    background-image: none !important;
    width: 48px !important;
    height: 48px !important;
    border-radius: 50%;
    opacity: 1;
    background-color: hsl(var(--muted));
}

.scbs-carousel-control-prev-icon::before,
.scbs-carousel-control-next-icon::before {
    font-weight: 900 !important;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    font-size: 1rem !important;
    line-height: 1 !important;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.8rem;
    visibility: visible;
    opacity: 1;
    margin: 2px 0;
    color: hsl(var(--accent-foreground));
    font: var(--fa-font-regular);
}

.scbs-carousel-control-prev-icon::before {
    content: "\f060";
    margin-top: 0.2rem;
}

.scbs-carousel-control-next-icon::before {
    content: "\f061";
    margin-top: 0.2rem;
}

/* Generic tooltip */
a[data-tooltip] {
    position: relative;
}

a[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: 125%;
    left: 50%;
    transform: translateX(-50%);
    background: hsl(var(--muted) / 0.75);
    color: hsl(var(--foreground));
    padding: 0.1rem 0.5rem;
    border: 1px solid hsl(var(--border));
    border-radius: calc(var(--radius) / 2);
    opacity: 0;
    white-space: nowrap;
    pointer-events: none;
    transition: opacity var(--duration-slow) var(--ease-in-out);
}

a[data-tooltip].show-tooltip::after {
    opacity: 1;
}

/* Feedback shell */
.site-feedback-shell {
    display: flex;
    flex-direction: column;
}

.site-feedback-shell__inner {
    margin-bottom: 1rem;
}

.site-feedback-shell__title {
    font-size: 2rem;
    line-height: 2.5rem;
    letter-spacing: -1.28px;
    font-size: 1.875rem;
    font-weight: 600;
    margin-top: calc(92px / 1.5);
}

.site-feedback-shell__subtitle {
    color: hsl(var(--muted-foreground));
    font-size: 1.05rem;
    font-weight: 400;
    margin-top: 1rem;
    line-height: 1.5rem;
    letter-spacing: initial !important;
    width: 95%;
}

@media (max-width: 768px) {

    .subtitle-text,
    .site-feedback-shell__subtitle {
        width: 100% !important;
        letter-spacing: -0.36px !important;
    }

    #content .rubric {
        font-size: 1.5rem;
        letter-spacing: -0.36px !important;
        line-height: 1.5rem !important;
    }
}

.site-feedback-shell__button {
    background: hsl(var(--foreground));
    color: hsl(var(--background));
    border-radius: 50px;
    font-size: 1rem;
    line-height: 1.5rem;
    padding: 0.5rem 1rem;
    max-width: fit-content;
    border: 1px solid transparent;
    transition: background var(--duration-normal) var(--ease-out), color var(--duration-normal) var(--ease-out), border var(--duration-normal) var(--ease-out);
}

.site-feedback-shell__button:hover,
.site-feedback-shell__button:focus-visible {
    color: hsl(var(--foreground));
    border: 1px solid hsl(var(--border));
    background: hsl(var(--code-background));
}

/* GitHub Repository Details */
.site-github-repository {
    display: flex;
    justify-content: space-between;
    font-size: 0.9rem;
    color: hsl(var(--muted-foreground));
    cursor: pointer;
}

.sd-card-text+.site-github-repository {
    margin-top: 1rem;
}

.site-github-repository__details {
    display: flex;
    gap: 1rem;
}

.site-github-repository__name {
    color: hsl(var(--muted-foreground)) !important;
}

.site-github-repository__name:hover {
    color: hsl(var(--foreground)) !important;
}

.site-github-repository__name::before {
    content: "\f09b";
    text-rendering: auto;
    color: hsl(var(--muted-foreground)) !important;
    -webkit-font-smoothing: antialiased;
    font: var(--fa-font-brands);
    margin-right: 0.5rem;
    vertical-align: middle;
}

.site-github-repository__stars::before {
    content: "\f005";
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    font: var(--fa-font-regular);
    margin-right: 0.5rem;
}

.site-github-repository__forks::before {
    content: "\e13b";
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    font: var(--fa-font-regular);
    margin-right: 0.5rem;
}

/* FAQ Container */
.site-faq {
    border: none;
    background-color: transparent;
}

.site-faq .sd-summary-text {
    font-size: 1.15rem !important;
    font-weight: 600 !important;
    letter-spacing: -0.36px !important;
    line-height: 1.5rem !important;
}

.site-faq .sd-card-text {
    color: hsl(var(--muted-foreground)) !important;
    font-size: 1.05rem !important;
    font-weight: 400 !important;
    margin-top: 1rem !important;
    line-height: 1.5rem !important;
    letter-spacing: initial !important;
}

.site-faq .sd-summary-content.sd-card-body {
    padding: 0;
}

@media (max-width: 768px) {

    .site-faq .sd-summary-text {
        font-size: 1rem !important;
        font-weight: 600 !important;
        line-height: 1.5rem !important;
    }
}

/* Utility helpers */
.rounded-lg {
    border-radius: calc(var(--radius) + 1rem);
}

.title-text {
    font-size: 2rem !important;
    line-height: 2.5rem !important;
    letter-spacing: -1.28px !important;
    font-weight: 600 !important;
    margin-top: calc(92px / 1.5) !important;
}


.subtitle-text {
    color: hsl(var(--muted-foreground));
    font-size: 1.05rem !important;
    font-weight: 400 !important;
    margin-top: 1rem !important;
    line-height: 1.5rem !important;
    letter-spacing: initial !important;
    width: 90%;
}

.pt-64 {
    padding-top: 4rem;
}

.mb-64 {
    margin-bottom: 4rem;
}

.mb-24 {
    margin-bottom: 1.5rem;
}

.gap-2 {
    gap: 0.5rem;
}

.grayscale {
    filter: grayscale(100%);
    transition: filter var(--duration-normal) linear;
}

.grayscale:hover {
    filter: grayscale(0%);
}

.mrl-0 {
    margin-inline: 0 !important;
}

.far {
    font: var(--fa-font-regular);
}

.justify-end {
    justify-content: flex-end;
}

.relative {
    position: relative;
}

.border-offset {
    border: 1px solid hsl(var(--border));
}

.outline-offset {
    outline: 1px solid hsl(var(--border));
    outline-offset: 0.5rem;
}

.fa-2xs {
    vertical-align: baseline;
    color: hsl(var(--link));
}

.fa-sm {
    font-size: large;
}

.centered {
    text-align: center;
}

.button-container {
    display: inline-flex;
    margin-top: 1.5rem;
    padding-inline: 0;
    gap: 0.5rem;
}

.green,
.green>p {
    color: hsl(var(--green-color));
}

.yellow,
.yellow>p {
    color: hsl(var(--yellow-color));
}

.red,
.red>p {
    color: hsl(var(--red-color));
}
