/* ==========================================================================
	Project: Kraken Projects Plugin
	File: public.css
	Purpose: base + layout + components + utilities.
	Author: Christopher Satterthwaite  |  Updated: 2026-01-29  |  Version: 1.0.0
========================================================================== */

/* TOC
[00] Root
[01] Base
[02] Layout
	[02.0] Inner Wrapper Styles
    [02.1] Header Styles
    [02.2] Layout Styles
    [02.3] Projects List Styles
        [02.3.a] Justified Layout Styles
        [02.3.b] Masonry Layout Styles
        [02.3.c] Grid Layout Styles
	[02.4] Footer
[03] Components
    [03.1] Archive Title Styles
    [03.2] Archive Description Styles
    [03.3] Category Navigation Styles
    [03.4] Project Card Styles
        [03.4.a] Card Media Styles
        [03.4.b] Card Content Styles
        [03.4.c] Card Meta Styles
        [03.4.d] Card Content Default Styles
        [03.4.e] Card Content Reveal Styles
        [03.4.f] Card Content Moving Styles
        [03.4.g] Card Content Overlay Styles
    [03.5] Heading Styles
    [03.6] Meta Styles
    [03.7] Content Styles
    [03.8] Back Button Styles
    [03.9] Post Navigation Styles
    [03.10] Share Bar Styles
    [03.11] Pagination Styles
    [03.12] Hero Styles
    [03.13] Gallery Styles
[04] Utilities
    [04.1] Screen Reader 
*/

/* ================= [00] Root ================= */
/* Generated in the css.php */

/* ================= [01] Base ================= */
/* Generated in the css.php */

/* ================= [02] Layout ================= */
/* -- [02.1] Header Styles -- */
.kpo-project__header {
  &.kpo-project__header--archive {
    max-width: var(--kpo-header-archive-max-width);
    margin: 0 auto;
    padding: var(--kpo-header-archive-padding);
  }

  &.kpo-project__header--single {
    max-width: var(--kpo-header-single-max-width);
    margin: 0 auto;
    padding: var(--kpo-header-single-padding);
  }
}

/* -- [02.2] Layout Styles -- */
.kpo-project__layout-inner {
    &.kpo-project__layout-inner--archive {
        max-width: var(--kpo-layout-inner-archive-max-width);
        margin: 0 auto;
        padding: var(--kpo-layout-inner-archive-padding);
    }

    &.kpo-project__layout-inner--single {
        max-width: var(--kpo-layout-inner-single-max-width);
        margin: 0 auto;
        padding: var(--kpo-layout-inner-single-padding);
    }
}

.wp-block-kraken-projects-project.alignfull .kpo-project__layout-inner,
.wp-block-kraken-projects-project.alignfull .kpo-project__content,
.wp-block-kraken-projects-project.alignfull .kpo-project__content-inner {
    width: 100%;
    max-width: none;
}

/* -- [02.3] Projects List Styles -- */
.kpo-projects__list {
    --kpo-projects-gap: 1rem;
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: var(--kpo-projects-gap);


    .kpo-project__item {
        position: relative;
        z-index: 80;
    }

    .kpo-project__item.kpo-project__item--active {
        z-index: 90;
    }

    &.kpo-projects__list--filterable {
        position: relative;

        .kpo-project__item {
            will-change: transform;
        }

        .kpo-project__item > .kpo-project-card {
            transition: opacity 0.4s ease, transform 0.4s ease;
            will-change: opacity, transform;
        }

        .kpo-project__item.kpo-project__item--filtered {
            pointer-events: none;
        }

        .kpo-project__item.kpo-project__item--filtered > .kpo-project-card {
            opacity: 0;
            transform: scale(0.96);
        }

        .kpo-project__item.kpo-project__item--filtered-hidden {
            display: none;
        }

        .kpo-project__item.kpo-project__item--paged-hidden {
            display: none;
        }

        @media (prefers-reduced-motion: reduce) {
            .kpo-project__item {
                transition: none;
            }

            .kpo-project__item > .kpo-project-card {
                transition: none;
            }
        }
    }

    /* -- [02.3.a] Justified Layout Styles-- */
    &.kpo-projects__list--justified {
        position: relative;
        display: block;
        --kpo-projects-gap: 0.5rem;
        --kpo-justified-row-height: 300px;
        --kpo-justified-row-tolerance: 0.25;
        opacity: 0;
        visibility: hidden;
        min-height: var(--kpo-justified-row-height, 300px);
        transition: opacity 0.2s ease-in-out;

        &.kpo-justified-ready {
            opacity: 1;
            visibility: visible;
        }

        &.kpo-layout-ready {
            opacity: 1;
            visibility: visible;
        }

        .kpo-project-card {
            display: block;
        }

        .kpo-project-card__media {
            width: 100%;
        }

        .kpo-project-card__media,
        .kpo-project-card__media-link {
            display: block;
            width: 100%;
        }

        .kpo-project-card__image {
            display: block;
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        @media (max-width: 991.98px) {
            display: flex;
            flex-wrap: wrap;
            --kpo-projects-gap: 1rem;
            gap: var(--kpo-projects-gap);
            opacity: 1;
            visibility: visible;
            min-height: 0;
            --kpo-card-ratio: 4 / 3;

            > .kpo-project__item {
                flex: 0 0 100%;
                max-width: 100%;
                position: relative;
            }
        }
    }

    /* -- [02.3.b] Masonry Layout Styles -- */
    &.kpo-projects__list--masonry {
        display: block;
        position: relative;
        gap: 0;
        --kpo-masonry-columns: 1;
        --kpo-card-ratio: auto;
        opacity: 0;
        visibility: hidden;
        min-height: 300px;
        transition: opacity 0.2s ease-in-out;

        > .kpo-project__item {
            display: block;
            width: 100%;
            
            @media (min-width: 992px) {
                margin: 0 0 var(--kpo-projects-gap);
            }
        }

        &.kpo-masonry-ready {
            opacity: 1;
            visibility: visible;
        }

        &.kpo-layout-ready {
            opacity: 1;
            visibility: visible;
        }

        &.kpo-masonry-ready > .kpo-project__item {
            margin: 0;
        }

        .kpo-project-card {
            height: auto;
        }

        .kpo-project-card__media,
        .kpo-project-card__media-link {
            display: block;
            width: 100%;
            height: auto;
            overflow: hidden;
            aspect-ratio: auto;
        }

        .kpo-project-card__image {
            display: block;
            width: 100%;
            height: auto;
            object-fit: cover;
        }

        @media (max-width: 991.98px) {
            display: flex;
            flex-wrap: wrap;
            --kpo-projects-gap: 1rem;
            gap: var(--kpo-projects-gap);
            opacity: 1;
            visibility: visible;
            min-height: 0;
            --kpo-card-ratio: 4 / 3;

            > .kpo-project__item {
                flex: 0 0 100%;
                max-width: 100%;
                position: relative;
            }

            .kpo-project-card__media,
            .kpo-project-card__media-link {
                aspect-ratio: var(--kpo-card-ratio);
            }
        }

        @media (min-width: 992px) {
            --kpo-masonry-columns: 2;
        }

        @media (min-width: 1440px) {
            --kpo-masonry-columns: 3;
        }
    }

    /* -- [02.3.c] Grid Layout Styles -- */
    &.kpo-job__list--grid > .kpo-project__item {
        flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
        max-width: calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
    }

    &.kpo-projects__list--grid-02 > .kpo-project__item {
        flex: 0 0 100%;
        max-width: 100%;
    }

    &.kpo-projects__list--grid-03 > .kpo-project__item {
        flex: 0 0 100%;
        max-width: 100%;
    }

    &.kpo-projects__list--grid-04 > .kpo-project__item {
        flex: 0 0 100%;
        max-width: 100%;
    }

    &.kpo-projects__list--grid-05 > .kpo-project__item {
        flex: 0 0 100%;
        max-width: 100%;
    }

    &.kpo-projects__list--grid {
        .kpo-project-card__media {
            width: 100%;
            overflow: hidden;
            /* --kpo-card-ratio is set inline for grid cards. */
            aspect-ratio: var(--kpo-card-ratio, 1 / 1);
        }

        .kpo-project-card__media,
        .kpo-project-card__media-link {
            display: block;
            width: 100%;
            height: 100%;
        }

        .kpo-project-card__image {
            display: block;
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
    }

    @media (min-width: 992px) {
        &.kpo-projects__list--grid-02 > .kpo-project__item {
            flex: 0 0 calc((100% - var(--kpo-projects-gap)) / 2);
            max-width: calc((100% - var(--kpo-projects-gap)) / 2);
        }

        &.kpo-projects__list--grid-03 > .kpo-project__item {
            flex: 0 0 calc((100% - var(--kpo-projects-gap)) / 2);
            max-width: calc((100% - var(--kpo-projects-gap)) / 2);
        }

        &.kpo-projects__list--grid-04 > .kpo-project__item {
            flex: 0 0 calc((100% - var(--kpo-projects-gap)) / 2);
            max-width: calc((100% - var(--kpo-projects-gap)) / 2);
        }

        &.kpo-projects__list--grid-05 > .kpo-project__item {
            flex: 0 0 calc((100% - var(--kpo-projects-gap)) / 2);
            max-width: calc((100% - var(--kpo-projects-gap)) / 2);
        }
    }

    @media (min-width: 1200px) {
        &.kpo-projects__list--grid-03 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
            max-width: calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
        }

        &.kpo-projects__list--grid-04 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
            max-width: calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
        }

        &.kpo-projects__list--grid-05 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
            max-width: calc((100% - (var(--kpo-projects-gap) * 2)) / 3);
        }
    }

    @media (min-width: 1400px) {
        &.kpo-projects__list--grid-04 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
            max-width: calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
        }
    }

    @media (min-width: 1440px) {
        &.kpo-projects__list--grid-04 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
            max-width: calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
        }

        &.kpo-projects__list--grid-05 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
            max-width: calc((100% - (var(--kpo-projects-gap) * 3)) / 4);
        }
    }

    @media (min-width: 1920px) {
        &.kpo-projects__list--grid-05 > .kpo-project__item {
            flex: 0 0 calc((100% - (var(--kpo-projects-gap) * 4)) / 5);
            max-width: calc((100% - (var(--kpo-projects-gap) * 4)) / 5);
        }
    }
}

/* -- [02.4] Footer Styles -- */
.kpo-project__footer {

    &.kpo-project__footer--archive {
        max-width: var(--kpo-footer-archive-max-width);
        margin: 0 auto;
        padding: var(--kpo-footer-archive-padding);
    }

    &.kpo-project__footer--single {
        max-width: var(--kpo-footer-single-max-width);
        margin: 0 auto;
        padding: var(--kpo-footer-single-padding);
    }
}

/* ================= [03] Components ================= */
/* -- [03.1] Archive Title Styles -- */
.kpo-project__archive-title {
	margin: var(--kpo-archive-heading-margin);
	padding: var(--kpo-archive-heading-padding);
	color: var(--kpo-archive-heading-font-color);
	font-family: var(--kpo-archive-heading-font-family);
	font-size: var(--kpo-archive-heading-font-size);
	font-weight: var(--kpo-archive-heading-font-weight);
	line-height: var(--kpo-archive-heading-line-height);
}

/* -- [03.2] Archive Description Styles -- */
.kpo-archive__description {
	color: var(--kpo-archive-description-font-color);
	font-family: var(--kpo-archive-description-font-family);
	font-size: var(--kpo-archive-description-font-size);
	font-weight: var(--kpo-archive-description-font-weight);
	line-height: var(--kpo-archive-description-line-height);
}

/* -- [03.3] Category Navigation Styles -- */
.kpo-projects-category-nav {
    margin: 3rem auto 3rem auto;

    .kpo-projects-category-nav__list {
        display: flex;
        justify-content: center;
        gap: 1.5rem;
        margin: 0;
        padding: 0;
        list-style: none;

        @media (max-width: 991.98px) {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            justify-content: stretch;
        }

        .kpo-projects-category-nav__link {
            color: var(--kpo-navigation-font-color);
            display: inline-flex;
            flex-direction: column;
            align-items: center;
            gap: 0.5rem;
            font-size: 1.2rem;
            text-decoration: none;
            text-align: center;

            @media (max-width: 991.98px) {
                width: 100%;
            }

            .kpo-projects-category-nav__icon {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                width: 2.75rem;
                height: 2.75rem;

                img {
                    display: block;
                    width: 100%;
                    height: 100%;
                    object-fit: contain;
                }
            }

            &:hover {
                color: var(--kpo-navigation-hover-font-color);
            }

            &.kpo-projects-category-nav__link--current {
                color: var(--kpo-navigation-active-font-color);
            }
        }
    }
}

/* -- [03.4] Project Card Styles -- */
.kpo-project-card {
    position: relative;
    height: 100%;
    overflow: hidden;
    border-radius: 0.3rem;
    backface-visibility: hidden;
    transform: translateZ(0);
    will-change: transform;
    
    /* -- [03.4.a] Card Badge Styles -- */
    .kpo-badge {
        position: absolute;
        top: 0.8rem;
        right: 0.8rem;
        padding: 0rem 0.5rem;
        background-color: #ffffff;
        border-radius: 0.2rem;
        z-index: 300;

        .kpo-badge__label {
            color: #222222;
            font-size: 0.8rem;
            font-weight: 600;
        }
    }

    /* -- [03.4.a] Card Media Styles -- */
    .kpo-project-card__media {
        background-color: #000000;
        overflow: hidden;
        backface-visibility: hidden;
        transform: translateZ(0);
        will-change: transform;
    }

    .kpo-project-card__image {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transform: scale(1);
        opacity: 1;
        transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out, filter 0.2s ease-in-out;
    }

    &.kpo-project-card--hover-image:hover {
        .kpo-project-card__image {
            transform: scale(1.03);
            opacity: 0.7;
        }
    }

    .kpo-project-card__card-link,
    .kpo-project-card__overlay-link {
        position: absolute;
        inset: 0;
        z-index: 11;
        display: block;
        text-decoration: none;

        &:focus-visible {
            outline: 2px solid var(--color-accessibility);
            outline-offset: -2px;
        }
    }

    /* -- [03.4.b] Card Content Styles -- */
	.kpo-project-card__content {
        padding: 1.5rem 2rem 2rem 2rem;
        backface-visibility: hidden;
        transform: translateZ(0);
        will-change: transform;

        .kpo-project-card__header {
        }
        .kpo-project-card__body {
        }

        .kpo-project-card__footer {
            display: flex;
            gap: 0.5rem;
        }
	}

    /* -- [03.4.c] Card Meta Styles -- */
   .kpo-project__meta {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0 0.5rem;
        margin: 0;
        padding: 0;
        list-style: none;
        
        &.kpo-project__meta--card {
            gap: 0 0.5rem;
            color: var(--kpo-meta-archive-font-color);
            font-family: var(--kpo-meta-archive-font-family);
            font-size: var(--kpo-meta-archive-font-size);
            line-height: var(--kpo-meta-archive-line-height);
            font-weight: var(--kpo-meta-archive-font-weight);

            .kpo-project__meta-item {
                &.kpo-project__meta-item--icon {
                    display: flex;
                    align-items: center;
                    gap: 0.2rem;
                    padding: 0.2rem 0;
                }
            }

            .kpo-project__meta-label {
                color: var(--kpo-meta-archive-font-color);
                font-size: inherit;
                font-weight: 600;
                line-height: inherit;
            }

            .kpo-project__meta-icon {
                display: block;
                width: 1em;
                height: 1em;
                flex: 0 0 1em;
                color: var(--kpo-meta-archive-font-color);
                fill: var(--kpo-meta-archive-font-color);
            }

            .kpo-project__meta-icon [fill]:not([fill="none"]) {
                fill: var(--kpo-meta-archive-font-color);
            }

            .kpo-project__meta-icon [stroke]:not([stroke="none"]) {
                stroke: var(--kpo-meta-archive-font-color);
            }

            .kpo-project__meta-value {
                color: var(--kpo-meta-archive-font-color);
                font-size: inherit;
                font-weight: inherit;
                line-height: inherit;
            }
        }
    }

    /* -- [03.4.d] Card Content Default Styles -- */
    &.kpo-project-card--content-default {
         @media (min-width: 992px) {
            .kpo-project-card__content {
                position: absolute;
                bottom: 0;
                left: 0;
                width: 100%;
                max-height: 100%;
                min-height: 60px;
                background: var(--kpo-card-default-background);
                padding: var(--kpo-card-default-padding);

                .kpo-project__heading-title {
                    color: var(--kpo-card-default-title-font-color);

                    .kpo-project__heading-link {
                        @media (min-width: 992px) {
                            color: var(--kpo-card-default-title-font-color);

                            &:is(:hover, :focus) {
                                color: var(--kpo-card-default-title-font-color);
                            }
                        }
                    }
                }

                .kpo-project__content {
                    color:  var(--kpo-card-card-default-content-font-color);
                }
            }
        }
    }

    /* -- [03.4.e] Card Content Reveal Styles -- */
    &.kpo-project-card--content-reveal {
        @media (min-width: 992px) {
            .kpo-project-card__content {
                position: absolute;
                bottom: 0;
                left: 0;
                opacity: 0;
                width: 100%;
                max-height: 100%;
                min-height: 50px;
                background-color: var(--kpo-card-reveal-background-color);
                transform: translateY(100%);
                transition: 0.2s transform cubic-bezier(0.25,0.46,0.45,0.94);
                padding: var(--kpo-card-reveal-padding);

                .kpo-project__heading-title {
                    color: var(--kpo-card-overlay-title-font-color);

                    .kpo-project__heading-link {
                        @media (min-width: 992px) {
                            color: var(--kpo-card-overlay-title-font-color);

                            &:is(:hover, :focus) {
                                color: var(--kpo-card-overlay-title-font-color);
                            }
                        }
                    }
                }

                .kpo-project__content {
                    color:  var(--kpo-card-reveal-content-font-color);
                    opacity: 0;
                    transform: translateY(20px);
                    transition-delay: calc(0.07s * 2);
                    transition-duration: 0.25s;
                    transition-property: opacity, transform;
                    transition-timing-function: cubic-bezier(0.25,0.46,0.45,0.94);
                }
            }

            &:hover {
                .kpo-project-card__content {
                    opacity: 1;
                    transform: translateY(0%);

                    .kpo-project__content {
                        opacity: 1;
                        transform: translateY(0);
                    }
                }
            }

            &:focus-within {
                .kpo-project-card__content {
                    opacity: 1;
                    transform: translateY(0%);

                    .kpo-project__content {
                        opacity: 1;
                        transform: translateY(0);
                    }
                }
            }
        }
    }

    /* -- [03.4.f] Card Content Moving Styles -- */
    &.kpo-project-card--content-moving {
        position: relative;
        overflow: unset;

        .kpo-project-card__content {
            display: block;
            position: absolute;
            left: 0;
            top: 0;
            opacity: 0;
            pointer-events: none;
            transform: translate(-6px, -6px) rotate(6deg);
            transform-origin: top left;
            transition: opacity 0.12s ease, transform 0.2s ease;
            will-change: left, top;
            z-index: 100;
            background-color: var(--kpo-card-moving-background-color);
            padding: var(--kpo-card-moving-padding);
            box-sizing: border-box;
            width: 100%;
            max-width: 100%;

            @media (prefers-reduced-motion: reduce) {
                transition: none;
            }
            
            @media (max-width: 991.98px) {
                position: relative;
                left: unset;
                top: unset;
                transform: none;
                opacity: 1;
                pointer-events: auto;
                width: auto;
                max-width: 100%;
            }
        }

        .kpo-project__meta {
            @media (min-width: 992px) {
                .kpo-project__meta-item {
                    .kpo-project__meta-label {
                        color: #000000;
                    }

                    .kpo-project__meta-icon {
                        color: #000000;
                        fill: #000000;
                    }

                    .kpo-project__meta-icon [fill]:not([fill="none"]) {
                        fill: #000000;
                    }

                    .kpo-project__meta-icon [stroke]:not([stroke="none"]) {
                        stroke: #000000;
                    }

                    .kpo-project__meta-value {
                        color: #000000;
                    }
                }
            }
        }

        &.kpo-project-card--content-follow .kpo-project-card__content {
            opacity: 1;
            transform: none;
        }

        &:focus-within .kpo-project-card__content {
            opacity: 1;
            transform: none;
        }
    }

    /* -- [03.4.g] Card Content Overlay Styles -- */
    &.kpo-project-card--content-overlay {
        .kpo-project-card__content {
            @media (prefers-reduced-motion: reduce) {
                transition: none;
            }

            @media (min-width: 992px) {
                display: flex;
                flex-direction: column;
                justify-content: center;
                position: absolute;
                left: 0;
                top: 0;
                z-index: 10;
                background-color: var(--kpo-card-overlay-background-color);
                width: 100%;
                height: 100%;
                opacity: 0;
                pointer-events: none;
                transform: translateX(0%) translateY(-100.1%) translateZ(0px);
                transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
            }
        }

        .kpo-project__heading-title {
            @media (min-width: 992px) {
                color: var(--kpo-card-overlay-title-font-color);
            }

            .kpo-project__heading-link {
                @media (min-width: 992px) {
                    color: var(--kpo-card-overlay-title-font-color);

                    &:is(:hover, :focus) {
                        color: var(--kpo-card-overlay-title-font-color);
                    }
                }
            }
        }

        .kpo-project__content {
            @media (min-width: 992px) {
                color: var(--kpo-card-overlay-content-font-color);
            }
        }
        &:focus-within {
            .kpo-project-card__content {
                @media (min-width: 992px) {
                    opacity: 1;
                    transform: translateX(0%) translateY(0%) translateZ(0px);
                }
            }
        }
    }

    @media (max-width: 991.98px) {
        .kpo-project-card__content {
            position: absolute !important;
            bottom: 0 !important;
            left: 0 !important;
            top: auto !important;
            right: auto !important;
            z-index: 10;
            display: block !important;
            width: 100% !important;
            max-height: 100% !important;
            min-height: 60px;
            height: auto !important;
            opacity: 1 !important;
            visibility: visible !important;
            pointer-events: auto !important;
            transform: none !important;
            transition: none !important;
            background: var(--kpo-card-default-background) !important;
            padding: var(--kpo-card-default-padding) !important;
            box-sizing: border-box;
        }

        .kpo-project__heading-title {
            color: var(--kpo-card-default-title-font-color);

            .kpo-project__heading-link {
                color: var(--kpo-card-default-title-font-color);

                &:is(:hover, :focus) {
                    color: var(--kpo-card-default-title-font-color);
                }
            }
        }

        .kpo-project__content {
            color: var(--kpo-card-default-content-font-color);
            opacity: 1 !important;
            transform: none !important;
        }

        .kpo-project-card__meta-label,
        .kpo-project-card__meta-value,
        .kpo-project-card__meta-icon {
            color: var(--kpo-card-default-content-font-color);
            fill: var(--kpo-card-default-content-font-color);
        }

        .kpo-project-card__meta-icon [fill]:not([fill="none"]) {
            fill: var(--kpo-card-default-content-font-color);
        }

        .kpo-project-card__meta-icon [stroke]:not([stroke="none"]) {
            stroke: var(--kpo-card-default-content-font-color);
        }

        &.kpo-project-card--content-moving {
            overflow: hidden;
        }
    }
}

/* .kpo-projects__list:has(.kpo-project-card:hover) .kpo-project__item:not(:hover) .kpo-project-card .kpo-project-card__image,
.kpo-projects__list:has(.kpo-project-card:focus-within) .kpo-project__item:not(:focus-within) .kpo-project-card .kpo-project-card__image {
    filter: blur(4px);
} */

/* -- [03.5] Heading Styles -- */
.kpo-project__heading {
    margin: 0 0 0.5rem 0;

    .kpo-project__heading-title {
        margin: 0;
        padding: 0;
        font-family: var(--kpo-heading-title-font-family);
        font-size: var(--kpo-heading-title-font-size);
        line-height: var(--kpo-heading-title-line-height);
        font-weight: var(--kpo-heading-title-font-weight);

        .kpo-project__heading-link {
            color: var(--kpo-heading-title-font-color);
            text-decoration: none;
            transition: color 0.2s ease-in-out;

            &:is(:hover, :focus) {
                color: var(--kpo-heading-title-hover-font-color);
            }

            &:focus-visible {
                outline: 2px solid var(--color-accessibility);
                outline-offset: 2px;
                visibility: visible;
                opacity: 1;
            }
        }
    }

    &.kpo-project__heading--single {
        .kpo-project__heading-title {
            margin: 0;
            padding: 0;
            color: var(--kpo-heading-title-single-font-color);
            font-size: var(--kpo-heading-title-single-font-size);
            line-height: var(--kpo-heading-title-single-line-height);
            font-weight: var(--kpo-heading-title-single-font-weight);
        }
    }
}

/* -- [03.6] Meta Styles -- */
.kpo-project__meta {
    margin: 0;
    padding: 0;
    list-style: none;

    &.kpo-project__meta--card {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0 0.5rem;
    }
    
    &.kpo-project__meta--single {
        display: flex;
        flex-wrap: wrap;
        flex-direction: column;
        gap: 0.5rem;
        padding: 1.5rem 0 1.5rem 0;
        margin-bottom: 2rem;
        color: var(--kpo-meta-single-font-color);
        border-bottom: 1px solid #d7d0d0;
        font-family: var(--kpo-meta-single-font-family);
        font-size: var(--kpo-meta-single-font-size);
        line-height: var(--kpo-meta-single-line-height);
        font-weight: var(--kpo-meta-single-font-weight);

        @media (min-width: 992px) {
            flex-direction: row;
            gap: 0.6rem;
        }

        .kpo-project__meta-item {
            @media (min-width: 992px) {
                flex: 0 1 32%;
                max-width: 32%;
                min-width: 0;
            }

            &.kpo-project__meta-item--icon {
                display: flex;
                gap: 0.5rem;
                padding: 0.2rem 0;
                flex-wrap: wrap;

                @media (min-width: 992px) {
                    flex-wrap: nowrap;
                }
            }
        }

        .kpo-project__meta-label {
            display: block;
            color: var(--kpo-meta-single-font-color);
            font-size: inherit;
            font-weight: 600;
            line-height: inherit;
        }

        .kpo-project__meta-icon {
            width: 1em;
            height: 1em;
            flex: 0 0 1em;
            color: var(--kpo-meta-single-font-color);
            fill: var(--kpo-meta-single-font-color);
        }

        .kpo-project__meta-icon [fill]:not([fill="none"]) {
            fill: var(--kpo-meta-single-font-color);
        }

        .kpo-project__meta-icon [stroke]:not([stroke="none"]) {
            stroke: var(--kpo-meta-single-font-color);
        }

        .kpo-project__meta-value {
            color: var(--kpo-meta-single-font-color);
            font-size: inherit;
            font-weight: inherit;
            line-height: inherit;
            font-size: 0.9rem;
            line-height: inherit;
        }
    }

    &.kpo-project__meta--single-empty {
         padding: 1.5rem 0 0;
         border: none;
    }
    
}

/* -- [03.7] Content Styles -- */
.kpo-project__content {
    color: var(--kpo-content-font-color);
    font-family: var(--kpo-content-font-family);
    font-size: var(--kpo-content-font-size);
    line-height: var(--kpo-content-line-height);
    font-weight: var(--kpo-content-font-weight);

    &.kpo-project__content--single {
        font-family: var(--kpo-content-single-font-family);
        font-size: var(--kpo-content-single-font-size);
        line-height: var(--kpo-content-single-line-height);
        font-weight: var(--kpo-content-single-font-weight);
    }
}

/* -- [03.8] Back Button Styles -- */
.kpo-projects__back {
    .kpo-projects__back-link {
        display: flex;
        align-items: center;
        gap: 0.2rem;
        color: #ffffff;
        font-size: 0.9rem;
        text-decoration: none;

        &:hover {
            color: #ffffff;
        }

        &::before {
            content: "";
            display: inline-block;
            width: 0.9rem;
            height: 0.9rem;
            --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M14.414 5.586a2 2 0 0 0-2.828 0L5.171 12l6.415 6.414c.39.391.902.586 1.414.586s1.024-.195 1.414-.586a2 2 0 0 0 0-2.828L10.829 12l3.585-3.586a2 2 0 0 0 0-2.828'/%3E%3C/svg%3E");
            background-color: currentColor;
            -webkit-mask-image: var(--svg);
            mask-image: var(--svg);
            -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
            -webkit-mask-position: center;
            mask-position: center;
            -webkit-mask-size: 100% 100%;
            mask-size: 100% 100%;
        }
    }
}

/* -- [03.8.a] Motion Styles -- */
@keyframes kpo-hero-title-enter-top {
    from {
        opacity: 0;
        transform: translate3d(0, -1.5rem, 0);
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes kpo-hero-title-enter-bottom {
    from {
        opacity: 0;
        transform: translate3d(0, 2.25rem, 0);
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes kpo-meta-item-enter {
    from {
        opacity: 0;
        transform: translate3d(0, 0.875rem, 0);
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes kpo-card-scroll-reveal {
    from {
        opacity: 0;
        transform: translate3d(0, 2rem, 0);
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@media (prefers-reduced-motion: no-preference) {
    .kpo-project__hero-title.kpo-project__hero-title--top {
        opacity: 0;
        transform: translate3d(0, -1.5rem, 0);
        animation-name: kpo-hero-title-enter-top;
        animation-duration: 1s;
        animation-fill-mode: both;
        animation-timing-function: cubic-bezier(0.2, 0.9, 0.25, 1);
    }
}

@supports (animation-timeline: view()) {
    @media (prefers-reduced-motion: no-preference) {
        .kpo-project__header-inner {
            view-timeline-name: --kpo-header-inner-view;
            view-timeline-axis: block;
        }

        .kpo-project__hero-title {
            opacity: 0;
            animation-duration: 1s;
            animation-fill-mode: both;
            animation-timing-function: cubic-bezier(0.2, 0.9, 0.25, 1);
            animation-timeline: --kpo-header-inner-view;
            animation-range: entry 100% cover 72%;
        }

        .kpo-project__hero-title.kpo-project__hero-title--top {
            transform: translate3d(0, -1.5rem, 0);
            animation-name: kpo-hero-title-enter-top;
            animation-timeline: auto;
        }

        .kpo-project__hero-title.kpo-project__hero-title--bottom {
            transform: translate3d(0, 2.25rem, 0);
            animation-name: kpo-hero-title-enter-bottom;
            animation-duration: 1.45s;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item {
            opacity: 0;
            animation-name: kpo-meta-item-enter;
            animation-duration: 1.15s;
            animation-fill-mode: both;
            animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
            animation-timeline: view(block);
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(1) {
            animation-range: entry 10% cover 26%;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(2) {
            animation-range: entry 13% cover 29%;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(3) {
            animation-range: entry 16% cover 32%;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(4) {
            animation-range: entry 19% cover 35%;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(5) {
            animation-range: entry 22% cover 38%;
        }

        .kpo-project__meta--single:not(.kpo-project__meta--single-empty) .kpo-project__meta-item:nth-child(6) {
            animation-range: entry 25% cover 41%;
        }

        .kpo-project__gallery {
            opacity: 0;
            transform: translate3d(0, 2rem, 0);
            animation-name: kpo-card-scroll-reveal;
            animation-duration: 1s;
            animation-fill-mode: both;
            animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
            animation-timeline: view(block);
            animation-range: entry 12% cover 34%;
        }

        .kpo-projects__list--scroll-reveal.kpo-projects__list--grid > .kpo-project__item:not(.kpo-project__item--filtered):not(.kpo-project__item--filtered-hidden):not(.kpo-project__item--paged-hidden) {
            opacity: 0;
            transform: translate3d(0, 2rem, 0);
            animation-name: kpo-card-scroll-reveal;
            animation-duration: 1s;
            animation-fill-mode: both;
            animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
            animation-timeline: view(block);
            animation-range: entry 12% cover 34%;
        }
    }
}

/* -- [03.9] Post Navigation Styles -- */
.kpo-project__nav {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: space-between;
    gap: 1.5rem;
    width: 100%;
    margin: 0 0 3rem 0;
    
    .kpo-project__nav-item {
        display: flex;
        flex: 1 1 0;

        &.kpo-project__nav-item--prev {
            justify-content: flex-start;
        }

        &.kpo-project__nav-item--next {
            justify-content: flex-end;
            text-align: right;

            .kpo-project__nav-link {
                align-items: flex-end;
            }
        }
    }

    .kpo-project__nav-link {
        display: flex;
        flex-direction: column;
        width: auto;
        max-width: 100%;
        padding: var(--kpo-post-nav-padding);
        background-color: var(--kpo-post-nav-background-color);
        color: var(--kpo-post-nav-font-color);
        border-radius: 0.3rem;
        font-size: var(--kpo-post-nav-font-size);
        text-decoration: none;

        &:is(:hover, :focus) {
            color: var(--kpo-post-nav-hover-font-color);
			background-color: var(--kpo-post-nav-hover-background-color);
		}

		&:focus-visible {
			outline: 2px solid var(--color-accessibility);
			outline-offset: 2px;
			visibility: visible;
			opacity: 1;
		}
    }
}

/* -- [03.10] Share Bar Styles -- */
.kpo-project__share {
    .kpo-project__share-list {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        list-style: none;
        margin: 0;
        padding: 0;

        .kpo-project__share-item {
            &.kpo-project__share-item--heading {
                color: var(--kpo-share-heading-font-color);
                font-size: var(--kpo-share-heading-font-size);
                font-weight: var(--kpo-share-heading-font-weight);
            }
        }

        .kpo-project__share-link {
            display: flex;
            align-items: center;
            width: 20px;
            height: 20px;
            color: var(--kpo-share-font-color);

            &:is(:hover, :focus) {
                color: var(--kpo-share-hover-font-color);
            }

            &:focus-visible {
                outline: 2px solid var(--color-accessibility);
                outline-offset: 2px;
                visibility: visible;
                opacity: 1;
            }
        }
    }
}

/* -- [03.11] Pagination Styles -- */
.kpo-projects-pagination  {
	display: flex;
	justify-content: center;
	align-items: center;

    &.kpo-projects-pagination--load-more {
        .kpo-projects-pagination__inner {
            .kpo-projects-pagination__link {
                display: inline-flex;
                justify-content: center;
                align-items: center;
                color: var(--kpo-pagination-button-font-color);
                background-color: var(--kpo-pagination-button-background-color);
                border: none;
                border-radius: 1rem;
                font-size: 1rem;
                line-height: 1;
                text-decoration: none;
                transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out;
                cursor: pointer;

                &:is(:hover, :focus) {
                    color: var(--kpo-pagination-button-font-color);
                    background-color: var(--kpo-pagination-button-background-color);
                    border-radius: 1rem;
                }

                &:focus-visible {
                    outline: 2px solid var(--color-accessibility);
                    outline-offset: 2px;
                    visibility: visible;
                    opacity: 1;
                }

                &.kpo-projects-pagination__link--disabled {
                    opacity: 0.4;
                    color: #666666;
                    background: #cccccc;
                    cursor: not-allowed;
                    pointer-events: none;

                }

                &.kpo-projects-pagination__link--next,
                &.kpo-projects-pagination__link--prev {
                    width: auto;
                    padding: 1rem 1rem;
                }
            }
        }
    }

	.kpo-projects-pagination__inner {
		display: flex;
		align-items: center;
		gap: 1.5rem;

		.kpo-projects-pagination__list {
			display: flex;
			gap: 0.5rem;
			list-style: none;
			margin: 0;
			padding: 0;
		}

		.kpo-projects-pagination__link {
			display: inline-flex;
			justify-content: center;
			align-items: center;
			width: 1.5rem;
			height: 1.5rem;
			color: var(--kpo-pagination-font-color);
            border: none;
			border-radius: 1rem;
			font-size: 0.9rem;
			line-height: 1;
			text-decoration: none;
			transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out;

			&:is(:hover, :focus) {
				color: var(--kpo-pagination-button-font-color);
				background-color: var(--kpo-pagination-button-background-color);
				border-radius: 1rem;
			}

			&:focus-visible {
				outline: 2px solid var(--color-accessibility);
				outline-offset: 2px;
				visibility: visible;
				opacity: 1;
			}

			&.kpo-projects-pagination__link--disabled {
				opacity: 0.4;
				color: #666666;
                background: #cccccc;
				cursor: not-allowed;
				pointer-events: none;

			}

			&.kpo-projects-pagination__link--current  {
				color: var(--kpo-pagination-button-font-color);
				background-color: var(--kpo-pagination-button-background-color);
				border-radius: 1rem;
			}

			&.kpo-projects-pagination__link--next,
			&.kpo-projects-pagination__link--prev {
				width: auto;
				padding: 0.5rem 1rem;
			}
		}
	}
}

/* -- [03.12] Hero Styles -- */
.kpo-project__hero {
    overflow: hidden;
    position: relative;
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);

    .kpo-badge {
        display: inline-block;
        margin: 0.3rem 0 0.3rem 0;
        padding: 0 0.5rem;
        background-color: #ffffff;
        border-radius: 0.2rem;
        justify-self: start;

        @media (min-width: 992px) {
            margin: 0.5rem 0;
        }

        .kpo-badge__label {
            color: #222222;
            font-size: 0.9rem;
            font-weight: 600;
        }
    }

    &.kpo-project__hero--no-image {
        overflow: visible;
        width: 100%;
        max-width: 100%;
        margin-left: 0;
        margin-right: 0;

        .kpo-project__hero-fallback {
            padding: 2rem 0 0 0;
            display: grid;
        }

        .kpo-projects__back-link {
            color: var(--kpo-primary);

            &:is(:hover, :focus) {
                color: var(--kpo-secondary);
            }
        }

        .kpo-project__heading {
            margin-bottom: 0;
        }

        .kpo-project__heading-title {
            color: var(--kpo-heading-title-font-color);
        }

        .kpo-project__heading-link {
            color: var(--kpo-heading-title-font-color);

            &:is(:hover, :focus) {
                color: var(--kpo-heading-title-hover-font-color);
            }
        }
    }

    .kpo-project__hero-image {
        aspect-ratio: 16 / 8;

        @media (min-width: 992px) {
             aspect-ratio: 16 / 6;
        }
    }

    .kpo-project__hero-title {
        position: absolute;
        width: 100%;
        background-color: rgba(0,0,0,0.7);

        &.kpo-project__hero-title--top {
            top: 0;
            left: 0;
        }

        &.kpo-project__hero-title--bottom {
            bottom: 0;
            left: 0;
        }

        .kpo-project__hero-title-inner {
            margin: 0 auto;
            padding: var(--kpo-hero-padding);
            max-width: var(--kpo-hero-max-width);
        }
    }
}

/* -- [03.13] Gallery Styles -- */
.kpo-project__gallery {
    margin-top: 4rem;

    .kpo-project__gallery-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1rem;

        @media (min-width: 768px) {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        @media (min-width: 1200px) {
            grid-template-columns: repeat(5, minmax(0, 1fr));
        }
    }

    .kpo-project__gallery-trigger {
        display: block;
        width: 100%;
        padding: 0;
        border: 0;
        background: transparent;
        cursor: pointer;
        aspect-ratio: 1 / 1;
        overflow: hidden;
        border-radius: 0.3rem;

        &:focus-visible {
            outline: 2px solid var(--color-accessibility);
            outline-offset: 3px;
        }
    }

    .kpo-project__gallery-thumb {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover;
        backface-visibility: hidden;
        transition: transform 0.2s ease, opacity 0.2s ease, filter 0.2s ease;
    }

    .kpo-project__gallery-trigger:is(:hover, :focus-visible) .kpo-project__gallery-thumb {
        transform: scale(1.03);
        filter: saturate(1.5);
    }

    .kpo-project__gallery-grid:has(.kpo-project__gallery-trigger:hover) .kpo-project__gallery-trigger:not(:hover) .kpo-project__gallery-thumb {
        filter: blur(4px);
        transform: scale(1.04);
    }
}

.kpo-project__gallery-dialog {
    position: fixed;
    inset: 0;
    width: min(100%, 1100px);
    max-width: calc(100vw - 2rem);
    max-height: calc(100vh - 2rem);
    margin: auto;
    overflow: auto;
    padding: 2rem 0 2rem 0;
    border: 0;
    border-radius: 1rem;
    background: #0c0f16;
    color: #ffffff;
    box-shadow: 0 2rem 5rem rgba(0, 0, 0, 0.35);

    &::backdrop {
        background: rgba(12, 15, 22, 0.88);
    }

    @media (min-width: 992px) {
        max-width: calc(100vw - 4rem);
        max-height: calc(100vh - 4rem);
        padding: 1.25rem;
    }

    .kpo-project__gallery-dialog-toolbar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        margin-bottom: 1rem;
    }

    .kpo-project__gallery-dialog-count {
        margin: 0;
        font-size: 0.95rem;
        line-height: 1.4;
        color: rgba(255, 255, 255, 0.78);
    }

    .kpo-project__gallery-dialog-close,
    .kpo-project__gallery-dialog-nav {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 2.75rem;
        min-height: 2.75rem;
        padding: 0.6rem;
        border: 0;
        border-radius: 999px;
        background: rgba(255, 255, 255, 0.14);
        color: #ffffff;
        cursor: pointer;
        transition: background-color 0.2s ease, opacity 0.2s ease;

        &:hover,
        &:focus-visible {
            background: rgba(255, 255, 255, 0.24);
        }

        &:focus-visible {
            outline: 2px solid #ffffff;
            outline-offset: 2px;
        }
    }

    .kpo-project__gallery-dialog-close {
        font-size: 1.5rem;
        line-height: 1;
    }

    .kpo-project__gallery-dialog-stage {
        display: grid;
        grid-template-columns: auto minmax(0, 1fr) auto;
        align-items: center;
        gap: 0.75rem;

        @media (max-width: 767.98px) {
            grid-template-columns: 1fr;
        }
    }

    .kpo-project__gallery-dialog-nav-form {
        margin: 0;
    }

    .kpo-project__gallery-dialog-nav-spacer {
        display: block;
        width: 2.75rem;
        height: 2.75rem;

        @media (max-width: 767.98px) {
            display: none;
        }
    }

    .kpo-project__gallery-dialog-figure {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 0.85rem;
        margin: 0;
        min-width: 0;
    }

    .kpo-project__gallery-dialog-image {
        display: block;
        width: auto;
        height: auto;
        max-width: min(100%, 1024px);
        max-height: min(70vh, 1024px);
        margin: 0 auto;
        object-fit: contain;
        border-radius: 0.75rem;
        background: rgba(255, 255, 255, 0.04);
    }

    .kpo-project__gallery-dialog-caption {
        margin: 0;
        text-align: center;
        font-size: 0.95rem;
        line-height: 1.6;
        color: rgba(255, 255, 255, 0.82);
    }

    @media (max-width: 767.98px) {
        max-width: calc(100vw - 1rem);
        max-height: calc(100vh - 1rem);
        padding: 1rem;

        .kpo-project__gallery-dialog-toolbar {
            gap: 0.75rem;
            margin-bottom: 0.75rem;
        }

        .kpo-project__gallery-dialog-stage--has-nav {
            grid-template-columns: repeat(2, minmax(0, 1fr));
            align-items: start;
            gap: 0.75rem;
        }

        .kpo-project__gallery-dialog-figure {
            order: 1;
            grid-column: 1 / -1;
            width: 100%;
        }

        .kpo-project__gallery-dialog-nav-form {
            order: 2;
            display: flex;
            width: 100%;
        }

        .kpo-project__gallery-dialog-stage--has-nav .kpo-project__gallery-dialog-nav-spacer {
            display: block;
            order: 2;
            width: 100%;
            min-height: 2.75rem;
        }

        .kpo-project__gallery-dialog-nav--prev {
            margin-right: auto;
        }

        .kpo-project__gallery-dialog-nav--next {
            margin-left: auto;
        }

        .kpo-project__gallery-dialog-image {
            max-width: 100%;
            max-height: min(62vh, 1024px);
        }
    }
}

/* ================= [04] Utilities ================= */
/* -- [04.1] Screen Reader -- */
.kpo-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;

	&:focus,
	&:focus-within {
		position: static;
		width: auto;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
		clip-path: none;
		white-space: normal;
	}

	&.focusable:not(:focus):not(:focus-within) {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		clip-path: inset(50%);
		white-space: nowrap;
		border: 0;
	}

	&.focusable:focus,
	&.focusable:focus-within {
		position: static;
		width: auto;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
		clip-path: none;
		white-space: normal;
	}
}
