:root {
    --color-grey:#ECE1D3;
    --color-red:#742931;
    --color-black:#391B21;
    --color-yellow:#886D23;
    --color-blue:#96ACBD;
}


/* =====================================================
   RESET
===================================================== */

* {
    box-sizing:border-box;
}

html {
    margin:0;
    padding:0;
    scroll-behavior:smooth;
}

body {
    margin:0;
    padding:0;
    width:100%;
    min-height:100%;
    background:var(--color-grey);
    color:var(--color-black);
    font-family:neue-haas-grotesk-display,sans-serif;
    overflow-x:hidden;
}


/* =====================================================
   PROJECT PAGE
===================================================== */

.project-page {
    width:100%;
}


/* =====================================================
   PROJECT HEADER
===================================================== */

.project-header {
    width:100%;
    padding:28px 30px 24px;
}

.project-tags {
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px 40px;
}

.project-tag {
    width:100%;
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    font-size:clamp(22px,2.4vw,38px);
    line-height:.7;
    font-weight:500;
    letter-spacing:-.04em;
    opacity:0;
    transform:translateY(25px);
    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.16,1,.3,1);
}

.project-tag span:last-child {
    flex-shrink:0;
}

.project-page.is-loaded .project-tag {
    opacity:1;
    transform:translateY(0);
}

.project-page.is-loaded .project-tag:nth-child(1) {
    transition-delay:.05s;
}

.project-page.is-loaded .project-tag:nth-child(2) {
    transition-delay:.12s;
}

.project-page.is-loaded .project-tag:nth-child(3) {
    transition-delay:.19s;
}

.project-page.is-loaded .project-tag:nth-child(4) {
    transition-delay:.26s;
}


/* =====================================================
   HERO
===================================================== */

.project-hero {
    position:relative;
    width:100%;
    margin:0;
    padding:0 30px;
    overflow:visible;
}

.project-hero-image {
    position:relative;
    width:45%;
    aspect-ratio:16 / 9;
    margin:0 auto;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--color-black);
    overflow:hidden;
    border-radius:10px;
    z-index:1;
}

.project-hero-image img {
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
    opacity:0;
    transform:scale(1.025);
    transition:
        opacity 1.2s ease,
        transform 1.4s cubic-bezier(.16,1,.3,1);
}

.project-page.is-loaded .project-hero-image img {
    opacity:1;
    transform:scale(1);
}


/* =====================================================
   HERO INTRO
===================================================== */

.project-hero-intro {
    position:relative;
    width:100%;
    margin-top:-50px;
    padding:0;
    display:flex;
    justify-content:center;
    z-index:3;
    pointer-events:none;
    mix-blend-mode:difference;
}

.project-hero-intro p {
    width:100%;
    max-width:850px;
    margin:0 auto 60px;
    color:white;
    font-size:clamp(20px,4.3vw,40px);
    font-weight:400;
    line-height:.9;
    letter-spacing:-.045em;
    text-transform:uppercase;
    text-align:center;
    opacity:0;
    transform:translateY(35px);
    transition:
        opacity 1s ease,
        transform 1s cubic-bezier(.16,1,.3,1);
}

.project-page.is-loaded .project-hero-intro p {
    opacity:1;
    transform:translateY(0);
    transition-delay:.55s;
}


/* =====================================================
   PROJECT CONTENT
===================================================== */

.project-content {
    position:relative;
    width:100%;
    margin-top:0;
    padding:0 30px 180px;
    color:var(--color-black);
}


/* =====================================================
   MEDIA
===================================================== */

.project-media {
    position:relative;
    width:100%;
    margin:0 auto;
    overflow:hidden;
    border-radius:16px;
    opacity:0;
    transform:translateY(60px);
    transition:
        opacity 1s ease,
        transform 1.1s cubic-bezier(.16,1,.3,1);
}

.project-media.is-visible {
    opacity:1;
    transform:translateY(0);
}

.project-media img,
.project-media video {
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
    transition:
        transform 1.2s cubic-bezier(.16,1,.3,1);
}

.project-media.is-visible img,
.project-media.is-visible video {
    transform:scale(1);
}

.project-media:hover img,
.project-media:hover video {
    transform:scale(1.035);
}


/* =====================================================
   LARGE IMAGE
===================================================== */

.project-media-large {
    width:90%;
    aspect-ratio:16 / 9;
    margin:0 auto 120px;
}


/* =====================================================
   IMAGE GRID
===================================================== */

.project-grid {
    width:90%;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
    margin:100px auto 150px;
}

.project-grid .project-media {
    width:100%;
    aspect-ratio:4 / 3;
}


/* =====================================================
   SPLIT CONTENT
===================================================== */

.project-split {
    width:90%;
    display:grid;
    grid-template-columns:1fr 1.25fr;
    gap:40px;
    align-items:start;
    margin:100px auto 150px;
}

.project-split .project-media {
    width:100%;
    aspect-ratio:4 / 5;
}


/* =====================================================
   TEXT
===================================================== */

.project-text {
    opacity:0;
    transform:translateY(40px);
    transition:
        opacity .9s ease,
        transform 1s cubic-bezier(.16,1,.3,1);
}

.project-text.is-visible {
    opacity:1;
    transform:translateY(0);
}

.project-text p {
    margin:0;
    max-width:420px;
    font-size:clamp(22px,2.2vw,34px);
    line-height:.95;
    letter-spacing:-.035em;
}

.project-text-left {
    width:90%;
    margin:0 auto 120px;
    padding-left:0;
}

.project-text-center {
    display:block;
    width:100%;
    max-width:1000px;
    margin:100px auto 0;
    padding:0;
    text-align:center;
    position:relative;
    left:auto;
    right:auto;
    transform:none;
}

.project-text-center p {
    display:block;
    width:100%;
    max-width:none;
    margin:0 auto;
    padding:0;
    text-align:center;
    font-size:32px;
    line-height:1.2;
}


/* =====================================================
   INSTAGRAM LINK
===================================================== */

.project-instagram-link {
    display:block;
    width:max-content;
    margin:70px auto 0;
    color:inherit;
    text-decoration:none;
    font-size:24px;
    line-height:1;
    border-bottom:1px solid currentColor;
    transition:opacity .3s ease;
}

.project-instagram-link:hover {
    opacity:.55;
}


/* =====================================================
   GALLERY PROJECT GRID
===================================================== */

.gallery-project-grid {
    width:100%;
    max-width:1300px;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:14px;
    margin:40px auto 0;
    align-items:start;
}

.gallery-project-item {
    width:100%;
    aspect-ratio:3 / 4;
    margin:0;
    padding:0;
    overflow:hidden;
    border-radius:10px;
}

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


/* =====================================================
   FLOATING MENU
===================================================== */

.floating-menu {
    position:fixed;
    left:50%;
    bottom:40px;
    transform:translateX(-50%);
    width:490px;
    height:40px;
    z-index:5000;
}

.floating-menu-track {
    position:relative;
    width:100%;
    height:100%;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    align-items:center;
    background-color:var(--color-blue);
    border-radius:10px;
    overflow:hidden;
}

.floating-menu-item {
    position:relative;
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--color-grey);
    text-decoration:none;
    font-size:14px;
    font-weight:400;
    z-index:3;
    transition:color .35s ease;
}

.floating-menu-item.active {
    color:var(--color-blue);
}

.floating-menu-active {
    position:absolute;
    top:50%;
    left:18px;
    width:26.666666%;
    height:70%;
    background-color:var(--color-grey);
    border-radius:6px;
    z-index:2;
    pointer-events:none;
    transform:
        translateY(-50%)
        translateX(125%);
}


/* =====================================================
   MOBILE
===================================================== */

@media (max-width:700px) {

    /* ---------------------------------------------
       HEADER
    --------------------------------------------- */

    .project-header {
        padding:20px 16px 18px;
    }

    .project-tags {
        grid-template-columns:1fr 1fr;
        gap:8px 12px;
    }

    .project-tag {
        font-size:16px;
    }


    /* ---------------------------------------------
       HERO
    --------------------------------------------- */

    .project-hero {
        width:100%;
        padding:0 16px;
        margin:0;
        aspect-ratio:auto;
    }

    .project-hero-image {
        width:50%;
        aspect-ratio:16 / 9;
        border-radius:14px;
    }

    .project-hero-intro {
        width:100%;
        margin-top:-35px;
        padding:0 4%;
    }

    .project-hero-intro p {
        font-size:clamp(18px,8vw,24px);
        line-height:.9;
    }


    /* ---------------------------------------------
       CONTENT
    --------------------------------------------- */

    .project-content {
        padding:0 16px 110px;
    }


    /* ---------------------------------------------
       MEDIA
    --------------------------------------------- */

    .project-media {
        border-radius:14px;
    }

    .project-media-large {
        width:90%;
        aspect-ratio:16 / 9;
        margin:0 auto 80px;
    }


    /* ---------------------------------------------
       PROJECT GRID
    --------------------------------------------- */

    .project-grid {
        width:90%;
        grid-template-columns:1fr;
        gap:16px;
        margin:70px auto 100px;
    }

    .project-grid .project-media {
        aspect-ratio:4 / 5;
    }


    /* ---------------------------------------------
       SPLIT
    --------------------------------------------- */

    .project-split {
        width:90%;
        grid-template-columns:1fr;
        gap:50px;
        margin:70px auto 100px;
    }

    .project-split .project-media {
        width:100%;
        aspect-ratio:4 / 5;
        order:1;
    }

    .project-split .project-text {
        order:0;
    }


    /* ---------------------------------------------
       TEXT
    --------------------------------------------- */

    .project-text-left {
        width:90%;
        margin:0 auto 80px;
        padding-left:0;
    }

    .project-text p {
        font-size:25px;
        max-width:320px;
    }

    .project-text-center {
        width:calc(100% - 50px);
        margin:70px auto 0;
        text-align:center;
    }

    .project-text-center p {
        font-size:24px;
        line-height:1.2;
        max-width:400px;
    }


    /* ---------------------------------------------
       INSTAGRAM
    --------------------------------------------- */

    .project-instagram-link {
        margin:50px auto 0;
        font-size:18px;
        padding-bottom:5px;
    }


    /* ---------------------------------------------
       GALLERY PROJECT
    --------------------------------------------- */

    .gallery-project-grid {
        width:90%;
        grid-template-columns:repeat(4,1fr);
        gap:8px;
        margin:25px auto 0;
    }

    .gallery-project-item {
        width:100%;
        aspect-ratio:3 / 4;
        border-radius:6px;
    }

    .gallery-project-image {
        width:100%;
        height:100%;
        object-fit:cover;
    }


    /* ---------------------------------------------
       FLOATING MENU
    --------------------------------------------- */

    .floating-menu {
        left:50%;
        right:auto;
        bottom:
            calc(
                20px +
                env(safe-area-inset-bottom)
            );
        width:calc(100vw - 32px);
        max-width:490px;
        height:44px;
        transform:translateX(-50%);
    }

    .floating-menu-item {
        font-size:13px;
    }
}


/* =====================================================
   SMALL MOBILE
===================================================== */

@media (max-width:400px) {

    .project-header {
        padding:18px 14px 16px;
    }

    .project-tags {
        gap:8px 10px;
    }

    .project-tag {
        font-size:14px;
    }


    /* ---------------------------------------------
       HERO
    --------------------------------------------- */

    .project-hero {
        padding:0 14px;
    }

    .project-hero-image {
        width:94%;
    }


    /* ---------------------------------------------
       CONTENT
    --------------------------------------------- */

    .project-content {
        padding-left:14px;
        padding-right:14px;
    }


    /* ---------------------------------------------
       TEXT
    --------------------------------------------- */

    .project-text p {
        font-size:22px;
    }

    .project-text-center {
        width:calc(100% - 32px);
        max-width:200px;
        margin-top:55px;
    }

    .project-text-center p {
        font-size:15px;
    }


    /* ---------------------------------------------
       INSTAGRAM
    --------------------------------------------- */

    .project-instagram-link {
        margin-top:45px;
        font-size:13px;
    }


    /* ---------------------------------------------
       GALLERY
    --------------------------------------------- */

    .gallery-project-grid {
        width: 90%;
        gap:6px;
    }


    /* ---------------------------------------------
       FLOATING MENU
    --------------------------------------------- */

    .floating-menu {
        width:calc(100vw - 28px);
        height:42px;
    }

    .floating-menu-item {
        font-size:12px;
    }
}


/* =====================================================
   REDUCED MOTION
===================================================== */

@media (prefers-reduced-motion:reduce) {

    html {
        scroll-behavior:auto;
    }

    *,
    *::before,
    *::after {
        transition-duration:0.01ms !important;
        animation-duration:0.01ms !important;
    }
}

