@layer custom {
    :root {
        --theme-section-space: clamp(
            calc(var(--bs-spacer) * 3),
            7vw,
            calc(var(--bs-spacer) * 6)
        );
        --theme-grid-gap: clamp(var(--bs-spacer), 3vw, var(--bs-spacer-5));
        --theme-media-radius: var(--bs-radius-5);
        --theme-header-height: 5rem;
    }
    .website-theme {
        min-block-size: 100vh;
        display: flex;
        flex-direction: column;
    }
    .website-theme .site-main {
        flex: 1;
    }
    .website-theme :where(h1, h2, h3, p) {
        overflow-wrap: anywhere;
    }
    .website-theme
        :where(.btn-solid, .btn-outline, .btn-text, .btn-icon, .page-link) {
        min-block-size: 44px;
    }
    .website-theme :where(a, button, input, textarea, summary):focus-visible {
        outline: 3px solid var(--bs-primary-focus-ring);
        outline-offset: 3px;
    }
    .theme-skip {
        position: fixed;
        inset-block-start: 1rem;
        inset-inline-start: 1rem;
        z-index: 2000;
        padding: var(--bs-spacer);
        background: var(--bs-bg-body);
        color: var(--bs-fg-body);
        translate: 0 -200%;
    }
    .theme-skip:focus {
        translate: none;
    }
    .theme-header {
        background: var(--bs-bg-body);
        border-block-end: 1px solid var(--bs-border-color);
        z-index: 1020;
    }
    .theme-header .navbar {
        container-name: website-navigation;
    }
    .theme-header-sticky {
        position: sticky;
        inset-block-start: var(--cms-preview-banner-height, 0px);
    }
    .theme-header-inner {
        min-block-size: var(--theme-header-height);
        gap: var(--bs-spacer);
    }
    .theme-brand {
        font-family: var(--bs-heading-font-family);
        font-weight: var(--bs-heading-font-weight);
        font-size: var(--bs-font-size-xl);
        text-decoration: none;
        letter-spacing: var(--cms-heading-letter-spacing);
        max-inline-size: 70%;
        overflow-wrap: anywhere;
        white-space: normal;
    }
    .theme-brand img {
        object-fit: contain;
        object-position: left center;
        inline-size: 160px;
        block-size: 44px;
    }
    .theme-menu {
        list-style: none;
        padding: 0;
        margin: 0;
        display: flex;
        gap: var(--bs-spacer-2);
    }
    .theme-menu-primary {
        flex-direction: column;
    }
    .theme-menu-item {
        position: relative;
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        align-items: stretch;
        isolation: isolate;
    }
    .theme-menu-item:has(> .theme-menu-disclosure) {
        grid-template-columns: minmax(0, 1fr) 44px;
    }
    .theme-menu-item::before {
        content: '';
        grid-area: 1 / 1 / 2 / -1;
        border-radius: var(--bs-radius-4);
        pointer-events: none;
        z-index: -1;
        transition: background var(--cms-motion-duration-short) ease;
    }
    .theme-menu-item:is(:hover, :focus-within)::before,
    .theme-menu-item:has(> [aria-current='page'])::before,
    .theme-menu-item:has(> .theme-menu-disclosure[open])::before {
        background: color-mix(
            in srgb,
            var(--bs-primary-base) 8%,
            var(--bs-bg-body)
        );
    }
    .theme-menu a {
        grid-area: 1 / 1 / 2 / 2;
        display: inline-flex;
        align-items: center;
        gap: var(--bs-spacer-2);
        min-block-size: 44px;
        padding: var(--bs-spacer-2) var(--bs-spacer-3);
        border-radius: var(--bs-radius-4);
        color: var(--bs-fg-body);
        text-decoration: none;
        overflow-wrap: anywhere;
    }
    .theme-menu-primary > li > a {
        font-weight: var(--bs-font-weight-medium);
    }
    .theme-menu-disclosure {
        display: contents;
    }
    .theme-menu-disclosure summary {
        grid-area: 1 / 2 / 2 / 3;
        display: inline-flex;
        justify-content: center;
        align-items: center;
        cursor: pointer;
        min-inline-size: 44px;
        min-block-size: 44px;
        list-style: none;
        border-radius: var(--bs-radius-4);
    }
    .theme-menu-disclosure summary::-webkit-details-marker {
        display: none;
    }
    .theme-menu-disclosure summary i {
        font-size: 1rem;
        line-height: 1;
        transition: rotate var(--cms-motion-duration-short) ease;
    }
    .theme-menu-disclosure[open] > summary i {
        rotate: 180deg;
    }
    .theme-menu-disclosure > ul {
        grid-area: 2 / 1 / 3 / -1;
        list-style: none;
        margin: 0;
        padding-block: var(--bs-spacer-1);
        padding-inline: var(--bs-spacer-3) 0;
    }
    .theme-search-trigger {
        min-inline-size: 44px;
        border-radius: var(--bs-radius-4);
        font-size: var(--bs-font-size-xl);
    }
    .theme-search-dialog {
        --bs-dialog-width: 100%;
        --bs-dialog-margin: 0;
        --bs-dialog-border-width: 0;
        --bs-dialog-border-radius: 0;
        --bs-dialog-box-shadow: none;
        --bs-dialog-backdrop-blur: 0px;
        position: fixed;
        inset: 0 0 auto;
        inline-size: 100%;
        max-inline-size: none;
        block-size: clamp(13rem, 18vw, 16rem);
        max-block-size: 100dvh;
        border: 0;
        box-shadow: none;
        margin: 0;
    }
    .theme-search-dialog[open]:not(.hiding) {
        overflow: auto;
    }
    .theme-search-body {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: var(--bs-spacer-3);
        inline-size: 100%;
        block-size: 100%;
        padding: var(--bs-spacer-5) var(--bs-gutter-x) var(--bs-spacer-4);
    }
    .theme-search-body h2 {
        margin: 0;
        font-size: var(--bs-font-size-2xl);
        text-align: center;
    }
    .theme-search-body form {
        inline-size: min(42rem, 100%);
    }
    .theme-search-body input,
    .theme-search-body button {
        min-block-size: 3.5rem;
    }
    .theme-search-body input {
        font-size: var(--bs-font-size-lg);
    }
    .theme-search-body button {
        min-inline-size: 3.5rem;
    }
    .theme-search-close {
        position: absolute;
        z-index: 1;
        inset-block-start: var(--bs-spacer-3);
        inset-inline-end: max(var(--bs-spacer-3), env(safe-area-inset-right));
        min-inline-size: 44px;
        font-size: var(--bs-font-size-xl);
    }
    .theme-navigation-body {
        display: flex;
        flex-direction: column;
        min-inline-size: 0;
        gap: var(--bs-spacer-4);
    }
    .theme-navigation-actions {
        display: flex;
        flex-wrap: wrap;
        gap: var(--bs-spacer-2);
        align-items: center;
    }
    .theme-section {
        padding-block: var(--theme-section-space);
    }
    .theme-hero {
        padding-block: var(--theme-section-space);
        background: linear-gradient(
            145deg,
            var(--bs-bg-body),
            var(--bs-primary-bg-subtle)
        );
        overflow: clip;
    }
    .theme-hero-grid {
        display: grid;
        gap: var(--theme-grid-gap);
        align-items: center;
    }
    .theme-hero h1 {
        margin-block: var(--bs-spacer) var(--bs-spacer-4);
        text-wrap: balance;
    }
    .theme-kicker {
        display: block;
        font-size: var(--bs-font-size-sm);
        font-weight: 700;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--bs-primary-fg-emphasis);
        margin-block-end: var(--bs-spacer);
    }
    .theme-lead {
        font-size: var(--bs-font-size-lg);
        line-height: var(--bs-body-line-height);
        max-inline-size: 56ch;
    }
    .theme-hero-actions {
        display: flex;
        flex-wrap: wrap;
        gap: var(--bs-spacer);
        margin-block-start: var(--bs-spacer-4);
    }
    .theme-hero-media {
        margin: 0;
        overflow: hidden;
        border-radius: var(--theme-media-radius);
        aspect-ratio: 6 / 5;
    }
    .theme-hero-media img {
        display: block;
        inline-size: 100%;
        block-size: 100%;
        object-fit: cover;
    }
    .theme-hero-art {
        position: relative;
        isolation: isolate;
        min-block-size: 18rem;
        border-radius: var(--theme-media-radius);
        background: var(--bs-primary-bg-muted);
        display: grid;
        place-items: center;
        overflow: hidden;
    }
    .theme-hero-orbit {
        inline-size: 72%;
        aspect-ratio: 1;
        border: 1px solid var(--bs-primary-border);
        border-radius: 50%;
        background: radial-gradient(
            circle at 65% 30%,
            var(--bs-bg-body),
            var(--bs-primary-bg-subtle)
        );
        box-shadow: var(--bs-box-shadow-sm);
    }
    .theme-hero-art span {
        position: absolute;
        inline-size: 38%;
        aspect-ratio: 1;
        border-radius: var(--bs-radius-4);
        background: var(--bs-primary-bg);
        rotate: -15deg;
        inset-inline-start: 14%;
        inset-block-end: 12%;
    }
    .theme-hero-art span:last-child {
        inline-size: 24%;
        background: var(--bs-secondary-bg);
        rotate: 18deg;
        inset-inline-start: auto;
        inset-inline-end: 15%;
        inset-block-end: auto;
        inset-block-start: 16%;
    }
    .theme-section-heading {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        gap: var(--bs-spacer);
        margin-block-end: var(--bs-spacer-4);
    }
    .theme-section-heading h2 {
        margin: 0;
    }
    .theme-search-form {
        display: flex;
        gap: var(--bs-spacer-2);
    }
    .theme-search-form input {
        min-inline-size: 0;
        flex: 1;
    }
    .theme-pagination {
        margin-block-start: var(--bs-spacer-5);
    }
    .theme-pagination .pagination {
        flex-wrap: wrap;
        gap: var(--bs-spacer-1);
    }
    .theme-comments {
        border-block-start: 1px solid var(--bs-border-color);
        padding-block-start: var(--bs-spacer-5);
    }
    .theme-comment-list,
    .theme-comment-replies {
        list-style: none;
        padding: 0;
    }
    .theme-comment {
        border-block-start: 1px solid var(--bs-border-color);
        padding-block: var(--bs-spacer-3);
    }
    .theme-comment-replies {
        padding-inline-start: min(4vw, var(--bs-spacer-3));
        border-inline-start: 1px solid var(--bs-border-color);
        margin-block-start: var(--bs-spacer-3);
    }
    .theme-comment-heading {
        display: flex;
        align-items: start;
        justify-content: space-between;
        gap: var(--bs-spacer);
        margin-block-end: var(--bs-spacer-3);
    }
    .theme-comment-heading .badge {
        margin-inline-start: var(--bs-spacer-2);
    }
    .theme-comment-form {
        margin-block-start: var(--bs-spacer-5);
    }
    .theme-form-grid {
        display: grid;
        gap: var(--bs-spacer-3);
    }
    .theme-form-full {
        grid-column: 1 / -1;
    }
    .theme-footer {
        padding-block-start: var(--theme-section-space);
        background: var(--bs-bg-2);
        border-block-start: 1px solid var(--bs-border-color);
    }
    .theme-footer-grid {
        display: grid;
        gap: var(--bs-spacer-5);
        padding-block-end: var(--bs-spacer-5);
    }
    .theme-footer-intro {
        max-inline-size: 34ch;
    }
    .theme-menu-footer {
        flex-direction: column;
        gap: 0;
    }
    .theme-menu-footer a {
        padding-inline: 0;
    }
    .theme-footer-action {
        margin-block-start: var(--bs-spacer-3);
    }
    .theme-footer-bottom {
        border-block-start: 1px solid var(--bs-border-color);
        padding-block: var(--bs-spacer-3);
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        gap: var(--bs-spacer);
        font-size: var(--bs-font-size-sm);
    }
    .theme-footer-bottom p {
        margin: 0;
    }
    .theme-footer-bottom > div {
        display: flex;
        flex-wrap: wrap;
        gap: var(--bs-spacer-3);
    }
    .theme-footer-bottom a {
        padding-block: 0.5rem;
    }
    .theme-error {
        min-block-size: 60vh;
        display: grid;
        align-items: center;
    }
    .theme-error h1 {
        text-wrap: balance;
    }
    .theme-gate {
        min-block-size: 100svh;
        display: grid;
        align-items: center;
        background: linear-gradient(
            145deg,
            var(--bs-bg-body),
            var(--bs-primary-bg-subtle)
        );
    }
    :where([id]) {
        scroll-margin-block-start: calc(
            var(--theme-header-height) + var(--bs-spacer)
        );
    }
    @media (min-width: 768px) {
        .theme-form-grid {
            grid-template-columns: repeat(2, minmax(0, 1fr));
        }
        .theme-footer-grid {
            grid-template-columns: 1.1fr 0.7fr 1.2fr;
        }
    }
    @media (min-width: 1024px) {
        .theme-hero-grid {
            grid-template-columns: 1.2fr 1fr;
        }
        .theme-hero-art {
            min-block-size: 28rem;
        }
    }
    @container website-navigation (min-width: 768px) {
        .theme-header-inner {
            gap: var(--bs-spacer-3);
        }
        .theme-brand {
            flex-shrink: 0;
            max-inline-size: min(35%, 18rem);
        }
        .theme-menu-primary {
            flex: 1 1 auto;
            gap: var(--bs-spacer-2);
            justify-content: flex-end;
            flex-direction: row;
            align-items: center;
            flex-wrap: wrap;
        }
        .theme-menu-primary > li > a {
            white-space: nowrap;
        }
        .theme-menu-primary > li:has(> .theme-menu-disclosure) > a {
            padding-inline-end: 0;
        }
        .theme-menu-primary > li > .theme-menu-disclosure > summary {
            justify-content: flex-start;
        }
        .theme-menu-primary > li {
            min-inline-size: 0;
        }
        .theme-menu-primary .theme-menu-depth-0 > ul {
            position: absolute;
            inset-block-start: 100%;
            inset-inline-end: 0;
            inline-size: min(20rem, 80vw);
            max-block-size: calc(
                100dvh - var(--theme-header-height) -
                    var(--cms-preview-banner-height, 0px) - var(--bs-spacer-4)
            );
            overflow-y: auto;
            padding: var(--bs-spacer-2);
            border: 1px solid var(--bs-border-color);
            border-radius: var(--bs-radius-5);
            background: var(--bs-bg-body);
            box-shadow: var(--bs-box-shadow-lg);
            z-index: 2;
        }
        .theme-navigation-body {
            flex-wrap: wrap;
            flex-direction: row;
            align-items: center;
            justify-content: flex-end;
            gap: var(--bs-spacer-2) var(--bs-spacer-3);
        }
        .theme-navigation-actions {
            flex-shrink: 0;
        }
    }
    .theme-motion-none .theme-menu-item::before,
    .theme-motion-none .theme-menu-disclosure summary i,
    .theme-motion-none .theme-search-dialog {
        transition: none;
    }
    @media (prefers-reduced-motion: reduce) {
        .theme-menu-item::before,
        .theme-menu-disclosure summary i {
            transition: none;
        }
    }
    @media print {
        .theme-header,
        .theme-footer,
        .theme-comments,
        .theme-adjacent-posts,
        .theme-related {
            display: none;
        }
        .theme-section {
            padding-block: 0;
        }
    }
}
