.projects-public-shell {
    --projects-border: var(--bs-border-color, rgba(0, 0, 0, .15));
    --projects-radius: var(--bs-border-radius-lg, .5rem);
    --projects-surface: var(--bs-body-bg, #fff);
    --projects-muted: var(--bs-secondary-color, var(--bs-secondary, #6c757d));
    padding-bottom: 2rem;
}

.projects-public-shell .card {
    border-color: var(--projects-border);
    border-radius: var(--projects-radius);
}

.projects-public-shell .form-control,
.projects-public-shell .form-select,
.projects-public-shell .input-group-text,
.projects-public-shell .btn {
    min-height: 2.75rem;
    border-radius: var(--bs-border-radius, .375rem);
}

.projects-public-shell .input-group > :not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.projects-public-shell .input-group > :not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.projects-public-shell .form-label {
    font-weight: 650;
}

.projects-public-shell a i {
    color: currentColor;
}

.projects-eyebrow {
    display: block;
    margin-bottom: .25rem;
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.projects-hero {
    position: relative;
    overflow: hidden;
    border-color: rgba(var(--bs-primary-rgb), .2) !important;
    background: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .12), rgba(var(--bs-primary-rgb), .025) 62%, transparent);
}

.projects-hero::after {
    position: absolute;
    right: -4rem;
    bottom: -6rem;
    width: 16rem;
    height: 16rem;
    border-radius: 50%;
    background: rgba(var(--bs-primary-rgb), .075);
    content: '';
    pointer-events: none;
}

.projects-hero-icon,
.projects-page-icon {
    display: inline-grid;
    width: 3.75rem;
    height: 3.75rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: var(--projects-radius);
    border: 1px solid rgba(var(--bs-primary-rgb), .24);
    background: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb), .1));
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: 1.6rem;
}

.projects-filter-card {
    background: var(--projects-surface);
    box-shadow: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));
}

.projects-browse-card {
    --projects-browse-count-width: 2rem;

    overflow: hidden;
    border-color: var(--projects-border);
    background: var(--projects-surface);
    box-shadow: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));
}

.projects-browse-card .card-header > .badge,
.projects-browse-section-label > span:last-child,
.projects-browse-count {
    flex: 0 0 var(--projects-browse-count-width);
    width: var(--projects-browse-count-width);
    text-align: center;
}

.projects-browse-card .card-header {
    border-bottom-color: var(--projects-border);
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

.projects-browse-section-label {
    padding: .7rem 1rem;
    border-top: 1px solid var(--projects-border);
    background: var(--bs-tertiary-bg, var(--projects-surface));
    color: var(--projects-muted);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.projects-browse-item {
    min-height: 3.25rem;
    padding: .8rem 1rem;
    border-color: var(--projects-border);
    color: var(--bs-body-color);
    font-weight: 600;
}

.projects-browse-item i {
    color: var(--projects-muted);
}

.projects-browse-item:hover,
.projects-browse-item:focus-visible {
    background: rgba(var(--bs-primary-rgb), .065);
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
}

.projects-browse-item.active,
.projects-browse-item.active:hover,
.projects-browse-item.active:focus-visible {
    z-index: 0;
    border-color: rgba(var(--bs-primary-rgb), .24);
    background: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb), .12));
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
}

.projects-browse-item.active i {
    color: currentColor;
}

.projects-browse-count {
    background: var(--bs-secondary-bg, var(--bs-tertiary-bg));
    color: var(--bs-secondary-color, var(--bs-body-color));
}

.projects-browse-item.active .projects-browse-count {
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
}

.projects-tag-swatch {
    display: inline-block;
    width: .7rem;
    height: .7rem;
    border: 1px solid rgba(0, 0, 0, .12);
    border-radius: 50%;
    vertical-align: .02em;
}

.projects-results-heading {
    padding-inline: .25rem;
}

.projects-project-card {
    overflow: hidden;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.projects-project-card:hover {
    border-color: rgba(var(--bs-primary-rgb), .4);
    box-shadow: 0 .75rem 1.75rem rgba(0, 0, 0, .09);
    transform: translateY(-3px);
}

.projects-project-media {
    position: relative;
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background-color: var(--bs-tertiary-bg, var(--projects-surface));
    background-image: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .045), transparent 65%);
}

.projects-project-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    transition: opacity .18s ease;
}

.projects-project-card:hover .projects-project-media img {
    opacity: .96;
}

.projects-project-placeholder {
    display: grid;
    height: 100%;
    place-items: center;
    background-color: var(--bs-tertiary-bg, var(--projects-surface));
    background-image: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .16), transparent 62%), radial-gradient(circle at 78% 22%, rgba(var(--bs-primary-rgb), .15), transparent 24%);
    color: rgba(var(--bs-primary-rgb), .65);
    font-size: 3rem;
}

.projects-project-status {
    position: absolute;
    top: .8rem;
    right: .8rem;
    border: 1px solid rgba(255, 255, 255, .4);
    box-shadow: 0 .2rem .6rem rgba(0, 0, 0, .08);
}

.projects-project-summary {
    display: -webkit-box;
    min-height: 3rem;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-height: 1.55;
}

.projects-detail-hero h1,
.projects-project-card .card-title,
.projects-page-header h1,
.projects-changelog-card h2,
.projects-submission-history h3 {
    overflow-wrap: anywhere;
}

.projects-project-footer {
    font-size: .84rem;
}

.projects-empty-state {
    padding: clamp(2.75rem, 7vw, 4.75rem) 1.5rem;
    border: 1px dashed var(--projects-border);
    border-radius: var(--projects-radius);
    background: var(--bs-tertiary-bg, var(--projects-surface));
    text-align: center;
}

.projects-empty-state-compact {
    padding-block: 2.5rem;
}

.projects-empty-icon {
    display: inline-grid;
    width: 4.25rem;
    height: 4.25rem;
    place-items: center;
    margin-bottom: 1rem;
    border-radius: var(--projects-radius);
    background: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb), .1));
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: 1.8rem;
}

.projects-empty-state p {
    max-width: 34rem;
    margin: 0 auto 1.25rem;
    color: var(--projects-muted);
}

.projects-breadcrumb {
    margin-bottom: 1.25rem;
    padding: .75rem 1rem;
    border: 1px solid var(--projects-border);
    border-radius: var(--projects-radius);
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

.projects-breadcrumb .breadcrumb-item {
    min-width: 0;
}

.projects-breadcrumb a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-weight: 600;
    text-decoration: none;
}

.projects-breadcrumb .breadcrumb-item.active {
    overflow: hidden;
    color: var(--projects-muted);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.projects-detail-hero {
    overflow: hidden;
    background: linear-gradient(135deg, var(--projects-surface), rgba(var(--bs-primary-rgb), .045));
}

.projects-detail-cover {
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border: 1px solid var(--projects-border);
    border-radius: var(--projects-radius);
    background-color: var(--bs-tertiary-bg, var(--projects-surface));
    background-image: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .045), transparent 65%);
    box-shadow: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));
}

.projects-detail-cover img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}

.projects-section-nav {
    display: flex;
    gap: .4rem;
    padding: .45rem;
    overflow-x: auto;
    border: 1px solid var(--projects-border);
    border-radius: var(--projects-radius);
    background: var(--projects-surface);
    scrollbar-width: thin;
}

.projects-section-link {
    display: inline-flex;
    min-height: 2.65rem;
    align-items: center;
    justify-content: center;
    padding: .65rem .9rem;
    border-radius: var(--bs-border-radius, .375rem);
    color: var(--bs-body-color);
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.projects-section-link:hover {
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    background: rgba(var(--bs-primary-rgb), .065);
}

.projects-section-link.active {
    box-shadow: inset 0 0 0 1px rgba(var(--bs-primary-rgb), .2);
    background: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb), .1));
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
}

.projects-section-link.active:hover {
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
}

.projects-content-card,
.projects-meta-card,
.projects-form-card,
.projects-guidelines-card,
.projects-contribution-card,
.projects-submission-history {
    overflow: hidden;
    box-shadow: 0 .4rem 1.25rem rgba(20, 30, 55, .055);
}

.projects-card-header {
    display: flex;
    align-items: center;
    gap: .8rem;
    padding: 1rem 1.25rem;
    background: var(--projects-surface);
}

.projects-card-header-icon,
.projects-aside-icon,
.projects-submission-icon,
.projects-change-icon {
    display: inline-grid;
    width: 2.6rem;
    height: 2.6rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: var(--bs-border-radius, .375rem);
    background: rgba(var(--bs-primary-rgb), .1);
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: 1.15rem;
}

.projects-rich-content {
    line-height: 1.7;
    overflow-wrap: anywhere;
}

.projects-rich-content > :last-child {
    margin-bottom: 0;
}

.projects-rich-content img,
.projects-rich-content iframe,
.projects-rich-content video {
    max-width: 100%;
}

.projects-rich-content table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
}

.projects-rich-content pre {
    max-width: 100%;
    overflow-x: auto;
}

.projects-meta-list > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--projects-border);
}

.projects-meta-list > div:first-child {
    border-top: 0;
}

.projects-meta-list dt {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    color: var(--projects-muted);
    font-size: .85rem;
    font-weight: 600;
}

.projects-meta-list dd {
    min-width: 0;
    margin: 0;
    font-weight: 650;
    overflow-wrap: anywhere;
    text-align: end;
}

.projects-change-preview {
    transition: border-color .18s ease, transform .18s ease;
}

.projects-change-preview:hover {
    border-color: rgba(var(--bs-primary-rgb), .4);
    transform: translateY(-2px);
}

.projects-page-header {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.projects-page-header h1 {
    font-size: clamp(1.7rem, 4vw, 2.4rem);
    font-weight: 750;
}

.projects-page-header p {
    margin: 0;
    color: var(--projects-muted);
}

.projects-timeline {
    position: relative;
    display: grid;
    gap: 1.5rem;
    padding-left: 2rem;
}

.projects-timeline::before {
    position: absolute;
    top: 1.5rem;
    bottom: 1.5rem;
    left: .7rem;
    width: 2px;
    background: var(--projects-border);
    content: '';
}

.projects-timeline-empty {
    padding-left: 0;
}

.projects-timeline-empty::before {
    display: none;
}

.projects-changelog-card {
    position: relative;
    scroll-margin-top: 1.5rem;
}

.projects-timeline-marker {
    position: absolute;
    top: 1.2rem;
    left: -2rem;
    display: grid;
    width: 1.45rem;
    height: 1.45rem;
    z-index: 1;
    place-items: center;
    border: 3px solid var(--bs-primary);
    border-radius: 50%;
    background: var(--projects-surface);
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: .58rem;
}

.projects-changelog-header {
    border-bottom-color: var(--projects-border);
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

.projects-guidelines-list {
    display: grid;
    gap: 1rem;
    padding: 0;
    list-style: none;
}

.projects-guidelines-list li {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    color: var(--projects-muted);
    line-height: 1.45;
}

.projects-guidelines-list i {
    margin-top: .15rem;
    color: var(--bs-success-text-emphasis, var(--bs-success));
}

.projects-contribution-card {
    background: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .08), var(--projects-surface));
}

.projects-history-empty {
    display: flex;
    min-height: 9rem;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: 2rem;
    color: var(--projects-muted);
    text-align: center;
}

.projects-history-empty i {
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: 2rem;
}

.projects-external-modal .modal-header {
    align-items: flex-start;
}

.projects-external-modal-icon {
    display: inline-grid;
    width: 2.75rem;
    height: 2.75rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb), .1));
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
    font-size: 1.2rem;
}

.projects-external-destination {
    padding: 1rem;
    border: 1px solid var(--projects-border);
    border-radius: var(--bs-border-radius-lg, .5rem);
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

.projects-external-destination-label {
    display: block;
    margin-bottom: .65rem;
    color: var(--projects-muted);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.projects-external-destination-copy {
    min-width: 0;
}

.projects-external-destination-host,
.projects-external-destination-url {
    display: block;
    overflow-wrap: anywhere;
}

.projects-gallery-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
}

.projects-gallery-browser {
    padding: .75rem;
    overflow: hidden;
    border: 1px solid var(--projects-border);
    border-radius: var(--projects-radius);
    background: var(--projects-surface);
    box-shadow: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));
}

.projects-gallery-featured {
    position: relative;
    display: grid;
    width: 100%;
    height: clamp(16rem, 34vw, 28rem);
    padding: .75rem;
    overflow: hidden;
    place-items: center;
    border: 0;
    border-radius: calc(var(--projects-radius) - .2rem);
    background-color: var(--bs-tertiary-bg, var(--projects-surface));
    background-image: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .06), transparent 65%);
    color: inherit;
}

.projects-gallery-featured img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}

.projects-gallery-featured-action {
    position: absolute;
    right: 1rem;
    bottom: 1rem;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .45rem .7rem;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 999px;
    background: rgba(0, 0, 0, .72);
    color: #fff;
    font-size: .78rem;
    font-weight: 700;
    box-shadow: 0 .2rem .7rem rgba(0, 0, 0, .18);
}

.projects-gallery-featured:hover,
.projects-gallery-featured:focus-visible {
    box-shadow: inset 0 0 0 .15rem rgba(var(--bs-primary-rgb), .5);
}

.projects-gallery-thumbnails,
.projects-gallery-modal-thumbnails {
    display: flex;
    overflow-x: auto;
    scrollbar-width: thin;
    scroll-snap-type: x proximity;
}

.projects-gallery-thumbnails {
    gap: .55rem;
    padding-top: .75rem;
}

.projects-gallery-thumbnail {
    position: relative;
    display: block;
    width: 7rem;
    aspect-ratio: 16 / 10;
    flex: 0 0 auto;
    padding: .25rem;
    overflow: hidden;
    scroll-snap-align: start;
    border: 1px solid var(--projects-border);
    border-radius: .55rem;
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

.projects-gallery-thumbnail img,
.projects-gallery-modal-thumbnail img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.projects-gallery-thumbnail > span {
    position: absolute;
    right: .35rem;
    bottom: .35rem;
    min-width: 1.35rem;
    padding: .1rem .3rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, .72);
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    text-align: center;
}

.projects-gallery-thumbnail:hover,
.projects-gallery-thumbnail:focus-visible,
.projects-gallery-thumbnail.is-active,
.projects-gallery-modal-thumbnail:hover,
.projects-gallery-modal-thumbnail:focus-visible,
.projects-gallery-modal-thumbnail.is-active {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 .15rem rgba(var(--bs-primary-rgb), .18);
}

.projects-gallery-modal {
    height: min(92vh, 60rem);
    overflow: hidden;
}

.projects-gallery-modal-header {
    gap: .75rem;
}

.projects-gallery-zoom-controls {
    display: flex;
    gap: .3rem;
    margin-left: auto;
}

.projects-gallery-zoom-level {
    min-width: 4.25rem;
    font-variant-numeric: tabular-nums;
}

.projects-gallery-viewport {
    position: relative;
    min-height: 20rem;
    flex: 1 1 auto;
    padding: 0;
    overflow: auto;
    overscroll-behavior: contain;
    background: rgba(0, 0, 0, .92);
}

.projects-gallery-stage {
    display: grid;
    min-width: 100%;
    min-height: 100%;
    padding: 3rem 4.5rem;
    place-items: center;
}

.projects-gallery-stage img {
    display: block;
    max-width: 100%;
    max-height: 68vh;
    object-fit: contain;
    zoom: var(--projects-gallery-zoom, 1);
    user-select: none;
}

.projects-gallery-viewport.is-zoomed .projects-gallery-stage img {
    cursor: grab;
}

.projects-gallery-viewport.is-panning .projects-gallery-stage img {
    cursor: grabbing;
}

.projects-gallery-navigation {
    position: absolute;
    z-index: 2;
    top: 50%;
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    place-items: center;
    transform: translateY(-50%);
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 50%;
    background: rgba(0, 0, 0, .68);
    color: #fff;
    box-shadow: 0 .2rem .8rem rgba(0, 0, 0, .2);
}

.projects-gallery-navigation:hover,
.projects-gallery-navigation:focus-visible {
    background: rgba(var(--bs-primary-rgb), .9);
}

.projects-gallery-navigation:disabled {
    opacity: .3;
}

.projects-gallery-navigation-previous {
    left: 1rem;
}

.projects-gallery-navigation-next {
    right: 1rem;
}

.projects-gallery-modal-footer {
    display: block;
    padding: .65rem 1rem .8rem;
}

.projects-gallery-position {
    display: block;
    margin-bottom: .5rem;
    color: var(--projects-muted);
    font-size: .75rem;
    font-variant-numeric: tabular-nums;
    text-align: center;
}

.projects-gallery-modal-thumbnails {
    justify-content: flex-start;
    gap: .4rem;
    padding: .15rem;
}

.projects-gallery-modal-thumbnail {
    width: 4.25rem;
    aspect-ratio: 16 / 10;
    flex: 0 0 auto;
    padding: .2rem;
    overflow: hidden;
    scroll-snap-align: center;
    border: 1px solid var(--projects-border);
    border-radius: .4rem;
    background: var(--bs-tertiary-bg, var(--projects-surface));
}

@media (min-width: 992px) {
    .projects-browse-wrap,
    .projects-meta-card,
    .projects-guidelines-card {
        position: sticky;
        top: 1.5rem;
    }
}

@media (max-width: 575.98px) {
    .projects-hero .card-body,
    .projects-detail-hero .card-body {
        padding: 1.25rem !important;
    }

    .projects-hero-icon,
    .projects-page-icon {
        width: 3.15rem;
        height: 3.15rem;
        font-size: 1.3rem;
    }

    .projects-page-header {
        align-items: flex-start;
    }

    .projects-gallery-heading,
    .projects-gallery-modal-header {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .projects-gallery-featured {
        height: 16rem;
    }

    .projects-gallery-featured-action {
        right: .65rem;
        bottom: .65rem;
    }

    .projects-gallery-modal-header > div:first-child {
        width: calc(100% - 2.5rem);
    }

    .projects-gallery-zoom-controls {
        width: 100%;
        order: 3;
        margin-left: 0;
    }

    .projects-gallery-zoom-controls .btn {
        flex: 1 1 auto;
    }

    .projects-gallery-stage {
        padding: 2.5rem 3.25rem;
    }

    .projects-gallery-navigation {
        width: 2.35rem;
        height: 2.35rem;
    }

    .projects-gallery-navigation-previous {
        left: .45rem;
    }

    .projects-gallery-navigation-next {
        right: .45rem;
    }

    .projects-project-footer {
        align-items: flex-start !important;
        flex-direction: column;
    }

    .projects-timeline {
        padding-left: 1.55rem;
    }

    .projects-timeline-marker {
        left: -1.55rem;
    }

    .projects-changelog-header,
    .projects-rich-content {
        padding: 1.25rem !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .projects-project-card,
    .projects-project-media img,
    .projects-change-preview {
        transition: none;
    }

    .projects-project-card:hover,
    .projects-change-preview:hover,
    .projects-project-card:hover .projects-project-media img {
        transform: none;
    }
}
