:root {
    --portfolio-nav-height: 58px;
    --portfolio-orange: #f04a1d;
    --portfolio-ink: #060606;
    --portfolio-paper: #f1f0ec;
    --portfolio-line: rgba(255, 255, 255, 0.16);
}

body.portfolio-system-ready > .site-nav,
body.portfolio-system-ready > .back-btn {
    visibility: hidden;
    pointer-events: none;
}

body.portfolio-return #intro-overlay,
body.portfolio-return #intro-curtain {
    display: none !important;
}

.portfolio-system-nav {
    position: fixed;
    inset: 0 0 auto;
    z-index: 1800;
    height: var(--portfolio-nav-height);
    display: grid;
    grid-template-columns: minmax(180px, 1fr) auto minmax(300px, 1fr);
    align-items: center;
    gap: 24px;
    padding-inline: clamp(16px, 3vw, 48px);
    color: #fff;
    background: rgba(5, 5, 5, 0.84);
    border-bottom: 1px solid var(--portfolio-line);
    box-shadow: inset 0 -1px 0 rgba(240, 74, 29, 0.08);
    backdrop-filter: blur(18px) saturate(130%);
    -webkit-backdrop-filter: blur(18px) saturate(130%);
    transform: translateY(-105%);
    transition: transform 620ms cubic-bezier(0.76, 0, 0.24, 1);
    isolation: isolate;
}

.portfolio-system-nav::after {
    content: "";
    position: absolute;
    inset: auto 0 -1px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--portfolio-orange) 34%, transparent 74%);
    transform: scaleX(var(--portfolio-scroll, 0));
    transform-origin: left center;
    opacity: 0.82;
}

body.portfolio-system-ready .portfolio-system-nav {
    transform: translateY(0);
}

body.portfolio-system-ready .portfolio-system-nav.portfolio-system-nav--home {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-105%);
    transition:
        transform 620ms cubic-bezier(0.76, 0, 0.24, 1),
        opacity 240ms ease,
        visibility 0s linear 620ms;
}

body.portfolio-system-ready .portfolio-system-nav.portfolio-system-nav--home.is-visible {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    transition-delay: 0s;
}

.portfolio-system-nav,
.portfolio-system-nav * {
    box-sizing: border-box;
    letter-spacing: 0;
}

.portfolio-system-nav a {
    color: inherit;
    text-decoration: none;
}

.portfolio-system-nav a:focus-visible,
.portfolio-project-switcher a:focus-visible {
    outline: 1px solid var(--portfolio-orange);
    outline-offset: 3px;
}

.portfolio-nav-path {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    justify-self: start;
    font: 500 0.64rem/1 Menlo, Monaco, "Courier New", monospace;
    text-transform: uppercase;
}

.portfolio-nav-path__action {
    width: 31px;
    height: 31px;
    flex: 0 0 31px;
    display: block;
}

.portfolio-nav-path__icon {
    width: 31px;
    height: 31px;
    flex: 0 0 31px;
    display: grid;
    place-items: center;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.28);
    transition:
        color 220ms ease,
        background 220ms ease,
        border-color 220ms ease,
        transform 220ms ease;
}

.portfolio-nav-path__action:hover .portfolio-nav-path__icon,
.portfolio-nav-path__action:focus-visible .portfolio-nav-path__icon {
    color: var(--portfolio-ink);
    background: var(--portfolio-orange);
    border-color: var(--portfolio-orange);
    transform: translateX(-3px);
}

.portfolio-nav-path__copy {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.portfolio-nav-identity {
    min-width: 0;
    display: inline-flex;
    align-items: baseline;
    gap: 10px;
    justify-self: center;
    text-transform: uppercase;
}

.portfolio-nav-identity span {
    color: var(--portfolio-orange);
    font: 500 0.58rem/1 Menlo, Monaco, "Courier New", monospace;
}

.portfolio-nav-identity strong {
    max-width: 34vw;
    overflow: hidden;
    color: #fff;
    font: 600 0.76rem/1 Menlo, Monaco, "Courier New", monospace;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.portfolio-nav-route {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(12px, 2vw, 28px);
}

.portfolio-nav-chapter {
    min-width: 94px;
    overflow: hidden;
    color: rgba(255, 255, 255, 0.58);
    font: 400 0.58rem/1 Menlo, Monaco, "Courier New", monospace;
    text-align: right;
    text-overflow: ellipsis;
    text-transform: uppercase;
    white-space: nowrap;
}

.portfolio-nav-tabs {
    display: inline-grid;
    grid-template-columns: 1fr 1fr;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.portfolio-nav-tabs a {
    position: relative;
    min-width: 72px;
    height: 30px;
    display: grid;
    place-items: center;
    padding: 0 12px;
    color: rgba(255, 255, 255, 0.58);
    font: 500 0.58rem/1 Menlo, Monaco, "Courier New", monospace;
    text-transform: uppercase;
    transition: color 180ms ease, background 180ms ease;
}

.portfolio-nav-tabs a + a {
    border-left: 1px solid rgba(255, 255, 255, 0.2);
}

.portfolio-nav-tabs a::after {
    content: "";
    position: absolute;
    inset: auto 8px 4px;
    height: 1px;
    background: var(--portfolio-orange);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 220ms ease;
}

.portfolio-nav-tabs a:hover,
.portfolio-nav-tabs a:focus-visible,
.portfolio-nav-tabs a[aria-current="page"] {
    color: #fff;
    background: rgba(255, 255, 255, 0.06);
}

.portfolio-nav-tabs a[aria-current="page"]::after {
    transform: scaleX(1);
}

body.portfolio-project-page .next-project {
    display: none !important;
}

.portfolio-project-switcher {
    position: relative;
    z-index: 3;
    color: #fff;
    background: var(--portfolio-ink);
    border-top: 1px solid rgba(255, 255, 255, 0.16);
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}

.portfolio-project-switcher__head {
    min-height: 62px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 0 clamp(20px, 4vw, 64px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    font: 500 0.62rem/1 Menlo, Monaco, "Courier New", monospace;
    text-transform: uppercase;
}

.portfolio-project-switcher__head span {
    color: var(--portfolio-orange);
}

.portfolio-project-switcher__head a {
    color: rgba(255, 255, 255, 0.66);
    text-decoration: none;
    transition: color 180ms ease;
}

.portfolio-project-switcher__head a:hover,
.portfolio-project-switcher__head a:focus-visible {
    color: #fff;
}

.portfolio-project-switcher__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.portfolio-project-route {
    --switch-image: none;
    position: relative;
    min-height: clamp(330px, 38vw, 520px);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
    padding: clamp(26px, 4vw, 62px);
    color: #fff;
    background:
        linear-gradient(120deg, rgba(0, 0, 0, 0.96), rgba(0, 0, 0, 0.52) 58%, rgba(0, 0, 0, 0.76)),
        var(--switch-image) center / cover no-repeat;
    text-decoration: none;
    isolation: isolate;
}

.portfolio-project-route + .portfolio-project-route {
    border-left: 1px solid rgba(255, 255, 255, 0.16);
}

.portfolio-project-route::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(90deg, transparent, rgba(240, 74, 29, 0.2), transparent);
    transform: translateX(-110%);
    transition: transform 720ms cubic-bezier(0.19, 1, 0.22, 1);
}

.portfolio-project-route::after {
    content: "";
    position: absolute;
    inset: 18px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    pointer-events: none;
    transition: border-color 220ms ease, inset 420ms cubic-bezier(0.19, 1, 0.22, 1);
}

.portfolio-project-route:hover::before,
.portfolio-project-route:focus-visible::before {
    transform: translateX(110%);
}

.portfolio-project-route:hover::after,
.portfolio-project-route:focus-visible::after {
    inset: 12px;
    border-color: rgba(240, 74, 29, 0.74);
}

.portfolio-project-route__meta {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    color: rgba(255, 255, 255, 0.64);
    font: 500 0.62rem/1 Menlo, Monaco, "Courier New", monospace;
    text-transform: uppercase;
}

.portfolio-project-route__meta strong {
    color: var(--portfolio-orange);
    font-weight: 500;
}

.portfolio-project-route__title {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 20px;
}

.portfolio-project-route__title strong {
    font: 600 clamp(2.6rem, 5vw, 6rem)/0.84 "Oswald", "Arial Narrow", sans-serif;
    letter-spacing: 0;
    text-transform: uppercase;
}

.portfolio-project-route__title span {
    width: 68px;
    height: 68px;
    display: grid;
    place-items: center;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.36);
    font: 400 1.3rem/1 Menlo, Monaco, monospace;
    transition: color 220ms ease, background 220ms ease, transform 220ms ease;
}

.portfolio-project-route:hover .portfolio-project-route__title span,
.portfolio-project-route:focus-visible .portfolio-project-route__title span {
    color: #050505;
    background: var(--portfolio-orange);
    border-color: var(--portfolio-orange);
}

.portfolio-project-route--previous:hover .portfolio-project-route__title span {
    transform: translateX(-5px);
}

.portfolio-project-route--next:hover .portfolio-project-route__title span {
    transform: translateX(5px);
}

.portfolio-route-transition {
    position: fixed;
    inset: 0;
    z-index: 9900;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: #050505;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition:
        opacity 280ms cubic-bezier(0.76, 0, 0.24, 1),
        visibility 0s linear 280ms;
    isolation: isolate;
}

.portfolio-route-transition.is-covering,
.portfolio-route-transition.is-revealing {
    visibility: visible;
}

.portfolio-route-transition.is-covering {
    opacity: 1;
    pointer-events: auto;
    transition-delay: 0s;
}

.portfolio-route-transition.is-inbound {
    opacity: 1;
    transition: none;
}

.portfolio-route-transition.is-revealing {
    opacity: 0;
    pointer-events: none;
    transition:
        opacity 460ms cubic-bezier(0.76, 0, 0.24, 1),
        visibility 0s linear 460ms;
}

/* Hand-tap loader adapted from Uiverse.io by Pradeepsaranbishnoi (MIT). */
.portfolio-tap-loader {
    --skin-color: #e4c560;
    --tap-speed: 0.6s;
    --tap-stagger: 0.1s;
    position: relative;
    width: 80px;
    height: 60px;
    margin-left: 80px;
    opacity: 0;
    transform: translateY(18px) scale(0.9);
    transition:
        opacity 180ms ease,
        transform 420ms cubic-bezier(0.19, 1, 0.22, 1);
}

.portfolio-route-transition.is-covering .portfolio-tap-loader {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.portfolio-route-transition.is-revealing .portfolio-tap-loader {
    opacity: 0;
    transform: translateY(-12px) scale(0.96);
    transition-duration: 180ms, 360ms;
}

.portfolio-tap-loader::before {
    content: "";
    display: block;
    position: absolute;
    top: 70%;
    right: 20%;
    width: 180%;
    height: 75%;
    background: var(--skin-color);
    border-radius: 40px 10px;
    filter: blur(16px);
    opacity: 0.16;
}

.portfolio-tap-loader__palm {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    background: var(--skin-color);
    border-radius: 10px 40px;
}

.portfolio-tap-loader__thumb {
    position: absolute;
    right: 1%;
    bottom: -18%;
    width: 120%;
    height: 38px;
    background: var(--skin-color);
    border-bottom: 2px solid rgba(0, 0, 0, 0.1);
    border-left: 2px solid rgba(0, 0, 0, 0.1);
    border-radius: 30px 20px 20px 10px;
    transform: rotate(-20deg);
    transform-origin: calc(100% - 20px) 20px;
}

.portfolio-tap-loader__thumb::after {
    content: "";
    position: absolute;
    bottom: -8%;
    left: 5px;
    width: 20%;
    height: 60%;
    background: rgba(255, 255, 255, 0.3);
    border-right: 2px solid rgba(0, 0, 0, 0.05);
    border-radius: 60% 10% 10% 30%;
}

.portfolio-tap-loader__finger {
    position: absolute;
    right: 64%;
    bottom: 32%;
    width: 80%;
    height: 35px;
    background: var(--skin-color);
    transform: rotate(10deg);
    transform-origin: 100% 20px;
    animation-duration: calc(var(--tap-speed) * 2);
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
    animation-play-state: paused;
}

.portfolio-route-transition.is-covering .portfolio-tap-loader__finger,
.portfolio-route-transition.is-revealing .portfolio-tap-loader__finger {
    animation-play-state: running;
}

.portfolio-tap-loader__finger::before {
    content: "";
    position: absolute;
    right: 65%;
    bottom: 8%;
    width: 140%;
    height: 30px;
    background: var(--skin-color);
    border-radius: 20px;
    transform: rotate(-60deg);
    transform-origin: calc(100% - 20px) 20px;
}

.portfolio-tap-loader__finger:nth-child(1) {
    filter: brightness(70%);
    animation-name: portfolio-tap-upper-1;
}

.portfolio-tap-loader__finger:nth-child(2) {
    filter: brightness(80%);
    animation-name: portfolio-tap-upper-2;
    animation-delay: var(--tap-stagger);
}

.portfolio-tap-loader__finger:nth-child(3) {
    filter: brightness(90%);
    animation-name: portfolio-tap-upper-3;
    animation-delay: calc(var(--tap-stagger) * 2);
}

.portfolio-tap-loader__finger:nth-child(4) {
    filter: brightness(100%);
    animation-name: portfolio-tap-upper-4;
    animation-delay: calc(var(--tap-stagger) * 3);
}

@keyframes portfolio-tap-upper-1 {
    0%,
    50%,
    100% {
        transform: rotate(10deg) scale(0.4);
    }

    40% {
        transform: rotate(50deg) scale(0.4);
    }
}

@keyframes portfolio-tap-upper-2 {
    0%,
    50%,
    100% {
        transform: rotate(10deg) scale(0.6);
    }

    40% {
        transform: rotate(50deg) scale(0.6);
    }
}

@keyframes portfolio-tap-upper-3 {
    0%,
    50%,
    100% {
        transform: rotate(10deg) scale(0.8);
    }

    40% {
        transform: rotate(50deg) scale(0.8);
    }
}

@keyframes portfolio-tap-upper-4 {
    0%,
    50%,
    100% {
        transform: rotate(10deg) scale(1);
    }

    40% {
        transform: rotate(50deg) scale(1);
    }
}

body.portfolio-route-leaving {
    overflow: hidden !important;
}

@media (max-width: 820px) {
    .portfolio-system-nav {
        grid-template-columns: auto minmax(0, 1fr) auto;
        gap: 10px;
        padding-inline: 14px;
    }

    .portfolio-nav-path__copy,
    .portfolio-nav-chapter,
    .portfolio-nav-identity span {
        display: none;
    }

    .portfolio-nav-identity {
        justify-self: start;
    }

    .portfolio-nav-identity strong {
        max-width: 30vw;
        font-size: 0.64rem;
    }

    .portfolio-nav-route {
        gap: 0;
    }

    .portfolio-nav-tabs a {
        min-width: 58px;
        height: 30px;
        padding-inline: 8px;
        font-size: 0.54rem;
    }

    .portfolio-project-switcher__head {
        min-height: 58px;
        padding-inline: 20px;
    }

    .portfolio-project-switcher__grid {
        grid-template-columns: 1fr;
    }

    .portfolio-project-route {
        min-height: 300px;
        padding: 28px 20px;
    }

    .portfolio-project-route + .portfolio-project-route {
        border-top: 1px solid rgba(255, 255, 255, 0.16);
        border-left: 0;
    }

    .portfolio-project-route__title strong {
        font-size: clamp(2.8rem, 15vw, 4.5rem);
    }

    .portfolio-project-route__title span {
        width: 56px;
        height: 56px;
    }
}

@media (max-width: 430px) {
    .portfolio-system-nav {
        gap: 8px;
        padding-inline: 12px;
    }

    .portfolio-nav-path__icon {
        width: 30px;
        height: 30px;
        flex-basis: 30px;
    }

    .portfolio-nav-path__action {
        width: 30px;
        height: 30px;
        flex-basis: 30px;
    }

    .portfolio-nav-identity strong {
        max-width: 25vw;
        font-size: 0.58rem;
    }

    .portfolio-nav-tabs a {
        min-width: 52px;
        padding-inline: 6px;
    }

    .portfolio-project-switcher__head {
        align-items: flex-start;
        flex-direction: column;
        justify-content: center;
        gap: 8px;
        padding-block: 16px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .portfolio-system-nav,
    .portfolio-project-route::before,
    .portfolio-project-route::after,
    .portfolio-project-route__title span,
    .portfolio-route-transition *,
    .portfolio-route-transition {
        animation-duration: 0.01ms !important;
        animation-delay: 0ms !important;
        transition-duration: 0.01ms !important;
        transition-delay: 0ms !important;
    }
}
