:root {
    --no-ai-border: #4F7600;
    --no-ai: #E8F5CD;
    --co-led-border: #8C6711;
    --co-led: #FFF5C9;
    --ai-led-border: #A15500;
    --ai-led: #FFE7CC;
}

main {
    position: relative;
    display: grid;
    grid-template-columns: 12rem minmax(0, 1fr);
    gap: 4rem;
    padding-top: 4rem;
}

.toc-container {
    padding-left: 4rem;
    width: 8rem;
    height: auto;
}

.main-container {
    box-sizing: border-box;
    width: 100%;
    max-width: 90ch;       
    padding-right: 4rem;
}

.main-container section, p, hr, picture img, picture, figure, .columns, .main-container ul, aside, blockquote, .lottie-anim {
    width: 100%;
    margin-bottom: 2.5ch;
}

main p {
    color: var(--neutral-800);
}

main img {
    object-fit: contain;
    object-position: center;
}

blockquote {
    display: flex;
    flex-direction: column;
    min-height: 0;
    gap: 1rem;
}

/* ====================================================================== */

.toc-spacer {
    position: absolute;
    width: 50px;
    height: 50px;
    margin-top: -8rem;
}

/* ====================================================================== */

#case-study-title { /* 910px - 3 lines | 657px - 4 lines | 512px - 5 lines | 442px - 6 lines*/
    margin: 0 auto;
    padding: 2.4rem;
    max-width: 1312px;
    font-size-adjust: from-font;
}

.hero {
    width: 100%;
    background-image: linear-gradient(to bottom, var(--accent-700), var(--accent-900));
    color: var(--bg);
    padding-top: 6rem;
    min-height: calc(6rem + 300px + 7.5rem + (1.2em * 6) + 4.8rem); 
}

.hero p {
    color: var(--gray-300);
}

.hero:after {
    content: "";
    display: block;
    clear: both;
}

.hero .lottie-anim, .hero picture {
    display: block;
    aspect-ratio: 16/9;
    object-fit: cover;
    margin: 0 auto;
    overflow: hidden;
}

.logistics {
    display:flex; justify-content: space-around; gap: 2rem;
    padding: 0 2.4rem 3.5rem;
    max-width: 1312px; margin: 0 auto;
    min-height: 7.5rem;
}

.hero .subtitle {
    margin-bottom: 0.5rem;
}

.hero-ribbon {
    position: relative;
    width: 100%;
    height: 0.8rem;
    background-image: var(--case-study);
}

.hero-ribbon img {
    position: absolute;
    width: 80px;
    height: 74px;
    right: 8%;
    transform: translateY(-50%);
}

/* ============================================================== */

.wip {
    margin: 1.6rem 0;
}

.wip:after {
    content: "";
    display: block;
    clear: both;
}

/* ============================================================== */

.table-of-contents {
    position: sticky;
    top: 8rem;
}

.toc-header {
    font-family: gravity-bold; 
    color: var(--accent-800);
    margin-bottom: 0.5ch;
}

[id] { scroll-margin-top: 8rem; }

.table-of-contents ul {
    padding-left: 0;
}

.table-of-contents li a { 
    position: relative;
    font-family: gravity-bold;
    font-size: clamp(0.9rem, 1vw, 1.05rem);
    line-height: 240%;
    color: var(--neutral-400); 
    text-decoration: none;
    transition: 0.25s ease; 
}
.table-of-contents li.active a,
.table-of-contents li a:hover { 
    color: var(--neutral-900);
}

.table-of-contents li a:before {
    position: absolute; 
    content: "•";
    margin-left: -1rem;
    opacity: 0;
}

.table-of-contents li a:hover:before,
.table-of-contents li a:active:before,
.table-of-contents li.active a:before {
    opacity: 1;
}

.toc-section {
    display: inline-block;
    font-family: gravity;
    color: var(--accent-500);
    border: 1px solid var(--accent-400);
    background-color: var(--accent-100);
    padding: .25rem 0.75rem;
    border-radius: 100px;  
    margin-bottom: 0.75rem; 
}

/* ================================================================= */

.main-container section {
    padding-bottom: 6ch;
    content-visibility: auto;
}

.main-container article {
    padding-bottom: 4ch;
}

.main-container article.extra-space {
    padding-bottom: 9ch;
}

/* ====================================================================== */

.columns {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 1rem;
}

.columns * {
    object-fit: cover;
    object-position: 0 0;
    /* min-height: 0; */
}

.columns img, .columns video, .columns figure {
    margin-bottom: 0;
}

.gallery {
    display: grid; 
    grid-template-columns: 1fr 1fr;
    gap: .25rem;
}

.gallery img {
    /* width: 1fr; */
    height: 400px;
    object-fit: cover;
    object-position: 0 0;
    margin-bottom: 0;
}

/* STRICTLY TWO COLUMNS ACROSS ALL SCREEN SIZES */
.two-columns {
    display: grid; 
    grid-template-columns: 1fr 1fr; 
    gap: 2rem;
}

.two-columns * {
    height: auto; 
    margin-top: 0; 
    object-position: 0 0;
    
}

.two-columns-text-and-image {
    display: flex;
    justify-content: space-between;
    flex-direction: row-reverse;
    gap: 2rem;
}

.two-columns-text-and-image img {
    /* width: auto; */
    /* max-height: 500px; */
    margin: 0;
}

/* ====================================================================== */

.insight {
    display: grid;
    grid-template-rows: min-content;
    padding: 1rem 1.5rem;
    margin-bottom: 1.75rem;
    border-radius: 0.6rem;
    background-color: var(--accent-100);
    border: 1.25px solid var(--accent-400);
    /* max-width: clamp(min(70ch, 100%), 20vw, 160ch); */
}

.insight * {
    margin-bottom: 0;
}

.insight-half {
    background-color: var(--pain-point); 
    border-radius: .6rem 0 0 .6rem;
    display: flex;
    align-items: center;
}

.with-emoji {
    grid-template-columns: 2ch 1fr;
    gap: 1.5rem;
}

.with-emoji span:nth-child(1) {
    font-size: 1.6rem;
}

.pain-point {
    grid-template-columns: 2ch 1fr;
    gap: 1.5rem;
    background-color: var(--pain-point);
    border: 1.25px solid var(--quote-pain);
}

.gain-point {
    grid-template-columns: 1ch 1fr;
    gap: 1.5rem;
    background-color: var(--gain-point);
    border: 1.25px solid var(--quote-gain);
}

/* ====================================================================== */

.interview-data {
    display: grid;
    grid-template-columns: 0.45fr 0.55fr;
    gap: 2rem;
}

.quote {
    box-sizing: border-box;
    padding-left: 1.25rem;
    border-left: 0.3rem solid var(--accent-400);
    align-items: center;
    /* height: 100%; */
}

/* ================================= */

.quote-profile {
    display: flex; 
    align-items: center;
    justify-content: flex-start;
    gap: 1rem;
}

.quote-profile p {
    margin-bottom: 0;
}

.quote-profile img {
    width: 3.5rem;
    height: 3.5rem;
    min-height: 0;
    margin: 0;
    object-position: 0 0;
}

/* ====================================================================== */

.tag {
    display: inline-block;
    width: fit-content;
    border: 1px solid var(--neutral-700);
    padding: .25rem 0.75rem;
    border-radius: 100px;
    color: var(--neutral-700);
    margin-bottom: 0.75rem;
}

.reflection-unit {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin-bottom: 0rem;
    gap: 0 0.75rem;

    > h3 {
    margin-bottom: 1ch;
    }
}

/* ================================= */

.tags {
    padding-left: 0;
}

.tags li {
    font-family: gravity;
    display: inline;
    list-style-type: none;
    white-space: nowrap;

    color: var(--neutral-700);
    background-color: var(--neutral-200);
    border: 1.25px solid var(--neutral-700);
    padding: .25rem 0.75rem;
    border-radius: 100px; 

    margin-right: .25rem;
    line-height: 2.5rem;
}

.no-ai {
    border: 1px solid var(--no-ai-border);
    background-color: var(--no-ai);
    color: var(--no-ai-border);
}

.co-led {
    border: 1px solid var(--co-led-border);
    background-color: var(--co-led);
    color: var(--co-led-border);
}

.ai-led {
    border: 1px solid var(--ai-led-border);
    background-color: var(--ai-led);
    color: var(--ai-led-border);
}

/* ====================================================================== */

#next-case-study {
    position: relative;
    cursor: pointer;
}

#next-case-study:hover {
    opacity: .8;
    transform: translateX(.5rem);
}

#next-case-study::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    /* width: 100%; */
    /* height: 100%; */
    background: linear-gradient(90deg, transparent, #fef6f090, transparent);
    transition: .5s ease-in-out;
}

#next-case-study:hover::before {
    /* left: 100%; */
}

/* ====================================================================== */

.hmw-wrap {
    position: relative;
    transition: .5s ease-in-out;
}

.hmw-wrap img, .rotate-img img {
    transition: .5s ease-in-out;
}

.hmw-wrap img:hover, .rotate-img img:hover {
    transform: rotate(4deg);
}

.hmw-wrap h2::after {
    position: absolute; 
    content: url("https://media.dave-vo.com/file/dvfolio/general/logo-stroked.png");
    width: 2rem; height: 2.25rem;
    left: -1.75rem; 
    transform: scale(.2) scaleX(-1) rotate(300deg); 
}

/* ====================================================================== */

.numbered {
    margin: 1rem 0; margin-top: 2rem;
}

.numbered span, .numbered-span {
    font-family: gravity-bold;
    color: var(--bg);
    background-color: #14ae5c;
    border-radius: 50%;
    padding: .2rem .55rem;
}

.numbered-span {
    background-color: var(--accent-400);
    padding: .2rem .65rem;
}

.numbered-list-item {
    display: flex;
    gap: 0.65rem;
    align-items: center;
}

.numbered-list-item h3 {
    margin-bottom: 0.1rem;
}

.research-process-item {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: clamp(2rem, 5vw, 4rem);
}

/* =========================================================== */

.aromacovery-team {
    display: flex;
    justify-content: center;
}

.aromacovery-team img {
    max-width: 320px;
    transform: rotate(8deg);
    transition: .5s ease-in-out;
}

.aromacovery-team img:hover {
    transform: rotate(12deg);
}

/* =========================================================== */

.locked {
    max-width: 22rem;
    height: auto;
    position: relative;
    padding: 1rem;

    left: 50%;
    transform: translateX(-50%);
    text-align: center;
}

.locked h2 {
    width: 100%;
    margin-bottom: 1rem;
}

.locked-input input {
    max-width: 20.5rem;
    width: 100%;
    height: 2rem;
    border-radius: .4rem;
    padding: .25rem .75rem;
    border: .1rem solid var(--neutral-600-border);
    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.12);
}

.locked-input button {
    max-width: 22rem;
    width: 100%;
    background-color: var(--accent-400);
    padding: .5rem 1.2rem;
    border-radius: .4rem;
    color: white;

    margin: 1rem 0;
    align-items: center;
    transition: opacity .5s ease-in-out;
}


/* =========================================================== */

@media screen and (max-width: 1100px) {
    .two-columns-text-and-image {
        flex-direction: column;
    }
}

@media screen and (max-width: 800px) {
    .interview-data {
        grid-template-columns: 1fr;
    }

    .insight-half {
        background-color: var(--pain-point); 
        border-radius: .6rem;
        margin-bottom: 1.5rem;
    }

    .columns {
        grid-auto-flow: row;    
    }
    .columns div {
        margin-bottom: 1rem;
    }
    .columns p {
        margin-bottom: 0;
    }
}

@media screen and (max-width: 623px) {
    #case-study-title {
        text-align: left;
    }

    .logistics {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 3rem;
        min-height: 240px;
    }

    .table-of-contents {
        visibility: hidden;
        display: none;
    }

    main {
        grid-template-columns: 1fr;
        padding: 0;
    }

    .main-container {
        width: calc(100% - 4.8rem);
        max-width: 410px;
        margin: 0 auto;
        padding: 0;
    }

    main img {
        min-height: 0;
        object-fit: cover;
    }

    .main-container article {
        padding-bottom: 4ch;
    }

    .main-container article.extra-space {
        padding-bottom: 8ch;
    }

    .gallery {
        grid-template-columns: 1fr;
        margin-top: 2rem;
    }
    .gallery img {
        margin-top: 0;
    }

    .quote-text {
        font-size: 1.1rem;
    }

    .aromacovery-team img {
        margin-top: 2rem;
    }

    .hmw-wrap h2::after {
        visibility: collapse;
    }
}

@media screen and (max-width: 414px) {
    .quote-profile {
        flex-direction: column;
        align-items: normal;
        gap: .5rem;
    }

    .rotate-img {
        grid-template-columns: 1fr;
    }
}