/* ============================================================
   PURPLE LIGHT TOUCH FOUNDATION
   GALLERY — PREMIUM EDITORIAL DESIGN
   ============================================================ */


/* ============================================================
   01. PAGE VARIABLES
   ============================================================ */

.gallery-page {

    --gallery-purple-950: #16082e;
    --gallery-purple-900: #211044;
    --gallery-purple-800: #32145c;
    --gallery-purple-700: #4b2180;
    --gallery-purple-500: #7b4ca8;

    --gallery-gold: #D4AF37;
    --gallery-gold-light: #e3c45b;

    --gallery-cream: #faf7fc;
    --gallery-cream-dark: #f1eaf6;

    --gallery-white: #ffffff;

    --gallery-text: #24183d;
    --gallery-muted: #756b83;

    --gallery-border: #e5dbe9;

    overflow-x: hidden;
}


/* ============================================================
   02. SHARED TYPOGRAPHY
   ============================================================ */

.gallery-page .section-eyebrow {

    display: inline-block;

    margin-bottom: 18px;

    color: var(--gallery-gold);

    font-family: var(--body-font);

    font-size: 10px;

    font-weight: 700;

    letter-spacing: 2.5px;

    text-transform: uppercase;
}


.gallery-page .purple-eyebrow {

    color: var(--gallery-purple-700);

}


.gallery-page h2 {

    color: var(--gallery-purple-950);

    font-family: var(--heading-font);

    font-size: clamp(44px, 5vw, 70px);

    font-weight: 500;

    line-height: .98;
}


.gallery-page h2 em {

    color: var(--gallery-purple-700);

    font-style: italic;
}

/* ============================================================
   03. HERO
   ============================================================ */

.gallery-hero {

    position: relative;

    min-height: 750px;

    display: flex;

    align-items: center;

    overflow: hidden;

    background: var(--gallery-purple-950);

    isolation: isolate;
}


/* ============================================================
   HERO IMAGE
   ============================================================ */

.gallery-hero-image {

    position: absolute;

    inset: 0;

    z-index: -3;
}


.gallery-hero-image img {

    width: 100%;

    height: 100%;

    object-fit: cover;

    /*
       Push the visible image further downward.
       Higher percentage = image moves further down.
    */

    object-position: center 78%;
}


/* ============================================================
   HERO OVERLAY
   ============================================================ */

.gallery-hero-overlay {

    position: absolute;

    inset: 0;

    z-index: -2;

    background:
        linear-gradient(
            90deg,
            rgba(22,8,46,.94),
            rgba(22,8,46,.72) 45%,
            rgba(22,8,46,.20)
        );
}


/* ============================================================
   CURVED WHITE TRANSITION
   ============================================================ */

.gallery-hero::after {

    content: "";

    position: absolute;

    left: -5%;

    right: -5%;

    bottom: -100px;

    height: 160px;

    border-radius: 50% 50% 0 0 / 100% 100% 0 0;

    background: var(--gallery-white);

    z-index: 2;
}


/* ============================================================
   HERO CONTENT
   ============================================================ */

.gallery-hero-content {

    position: relative;

    z-index: 3;

    padding-top: 110px;
}


.gallery-hero-content h1 {

    max-width: 850px;

    margin: 0;

    color: var(--gallery-white);

    font-family: var(--heading-font);

    font-size: clamp(68px, 8vw, 115px);

    font-weight: 500;

    line-height: .86;

    letter-spacing: -2px;
}


.gallery-hero-content h1 em {

    color: var(--gallery-gold);

    font-style: italic;
}


.gallery-hero-content p {

    max-width: 550px;

    margin-top: 30px;

    color: rgba(255,255,255,.76);

    font-size: 15px;

    line-height: 1.8;
}


/* ============================================================
   HERO LINK
   ============================================================ */

.gallery-hero-link {

    display: inline-flex;

    align-items: center;

    gap: 14px;

    margin-top: 32px;

    padding-bottom: 9px;

    border-bottom: 1px solid var(--gallery-gold);

    color: var(--gallery-white);

    font-size: 10px;

    font-weight: 700;

    letter-spacing: 1.6px;

    text-transform: uppercase;

    transition:
        gap .3s ease,
        color .3s ease;
}


.gallery-hero-link i {

    color: var(--gallery-gold);
}


.gallery-hero-link:hover {

    gap: 21px;

    color: var(--gallery-gold);
}


/* ============================================================
   HERO MARK
   ============================================================ */

.gallery-hero-mark {

    position: absolute;

    right: 7%;

    bottom: 150px;

    z-index: 3;

    display: flex;

    flex-direction: column;

    align-items: center;
}


.gallery-hero-mark span {

    color: rgba(255,255,255,.18);

    font-family: var(--heading-font);

    font-size: 105px;

    line-height: .8;
}


.gallery-hero-mark small {

    margin-top: 10px;

    color: var(--gallery-gold);

    font-size: 9px;

    font-weight: 700;

    letter-spacing: 3px;
}


/* ============================================================
   MOBILE HERO
   ============================================================ */

@media (max-width: 768px) {

    .gallery-hero {

        min-height: 680px;

    }


    .gallery-hero-image img {

        /*
           Mobile needs its own crop because the narrow
           screen changes how object-fit: cover behaves.
        */

        object-position: center 72%;

    }


    .gallery-hero-content {

        padding-top: 90px;

        padding-left: 20px;

        padding-right: 20px;

    }


    .gallery-hero-content h1 {

        max-width: 100%;

        font-size: clamp(52px, 14vw, 78px);

        line-height: .88;

        letter-spacing: -1.5px;

    }


    .gallery-hero-content p {

        max-width: 100%;

        margin-top: 24px;

        font-size: 14px;

        line-height: 1.7;

    }


    .gallery-hero-link {

        margin-top: 26px;

    }


    .gallery-hero-mark {

        right: 20px;

        bottom: 115px;

    }


    .gallery-hero-mark span {

        font-size: 70px;

    }


    .gallery-hero-mark small {

        font-size: 8px;

        letter-spacing: 2px;

    }


    .gallery-hero::after {

        bottom: -75px;

        height: 120px;

    }

}


/* ============================================================
   SMALL PHONES
   ============================================================ */

@media (max-width: 480px) {

    .gallery-hero {

        min-height: 640px;

    }


    .gallery-hero-image img {

        object-position: center 75%;

    }


    .gallery-hero-content {

        padding-top: 75px;

    }


    .gallery-hero-content h1 {

        font-size: clamp(48px, 14vw, 65px);

    }


    .gallery-hero-mark {

        right: 15px;

        bottom: 100px;

    }


    .gallery-hero-mark span {

        font-size: 58px;

    }

}


/* ============================================================
   04. GALLERY INTRO — CLEAN PREMIUM EDITORIAL DESIGN
============================================================ */
.gallery-intro {
    position: relative;
    overflow: hidden;
    isolation: isolate;

    /* Creates visible breathing space between hero and intro */
    margin-top: 45px;

    padding: 150px 0 165px;

    color: var(--gallery-white);

    background:
        radial-gradient(
            circle at 8% 20%,
            rgba(182, 120, 235, .12),
            transparent 28%
        ),
        radial-gradient(
            circle at 86% 78%,
            rgba(212, 175, 55, .07),
            transparent 24%
        ),
        linear-gradient(
            125deg,
            #130622 0%,
            #21103d 38%,
            #321553 68%,
            #18082e 100%
        );
}


/* ============================================================
   LARGE EDITORIAL CIRCLE
============================================================ */

.gallery-intro-frame {
    position: absolute;

    width: 690px;
    height: 690px;

    right: -370px;
    top: 50%;

    transform: translateY(-50%);

    border:
        1px solid
        rgba(212, 175, 55, .13);

    border-radius: 50%;

    box-shadow:
        0 0 0 55px rgba(212, 175, 55, .018),
        0 0 0 110px rgba(255, 255, 255, .012),
        0 0 0 180px rgba(255, 255, 255, .007);

    pointer-events: none;

    z-index: 0;
}


/* ============================================================
   SECOND DECORATIVE RING
============================================================ */

.gallery-intro-frame::before {
    content: "";

    position: absolute;

    width: 410px;
    height: 410px;

    left: -160px;
    top: 135px;

    border:
        1px solid
        rgba(212, 175, 55, .07);

    border-radius: 50%;
}


/* ============================================================
   SMALL GOLD DETAIL
============================================================ */

.gallery-intro-frame::after {
    content: "";

    position: absolute;

    width: 7px;
    height: 7px;

    left: 115px;
    top: 150px;

    border-radius: 50%;

    background: var(--gallery-gold);

    box-shadow:
        0 0 0 8px rgba(212, 175, 55, .07),
        0 0 20px rgba(212, 175, 55, .35);
}


/* ============================================================
   CONTENT GRID
============================================================ */

.gallery-intro-grid {
    position: relative;

    z-index: 3;

    display: grid;

    grid-template-columns:
        minmax(0, .92fr)
        minmax(0, 1.08fr);

    gap: 115px;

    align-items: center;
}


/* ============================================================
   LEFT EDITORIAL COLUMN
============================================================ */

.gallery-intro-heading {
    position: relative;

    padding-left: 42px;
}


/* ============================================================
   GOLD VERTICAL LINE
============================================================ */

.gallery-intro-heading::before {
    content: "";

    position: absolute;

    left: 0;
    top: 4px;

    width: 2px;
    height: 190px;

    background:
        linear-gradient(
            to bottom,
            var(--gallery-gold-light),
            var(--gallery-gold) 55%,
            rgba(212, 175, 55, 0)
        );

    border-radius: 10px;
}


/* ============================================================
   OVERSIZED SECTION NUMBER
============================================================ */

.gallery-intro-heading::after {
    content: "01";

    position: absolute;

    left: -35px;
    bottom: -125px;

    color: rgba(255,255,255,.035);

    font-family: var(--heading-font);

    font-size: 190px;

    font-weight: 500;

    line-height: .8;

    letter-spacing: -12px;

    pointer-events: none;

    z-index: -1;
}


/* ============================================================
   EYEBROW
============================================================ */

.gallery-intro .purple-eyebrow {
    display: inline-flex;

    align-items: center;

    gap: 12px;

    margin-bottom: 28px;

    color: var(--gallery-gold-light);

    font-size: 10px;

    font-weight: 700;

    letter-spacing: 3.2px;

    text-transform: uppercase;
}


.gallery-intro .purple-eyebrow::before {
    content: "";

    width: 34px;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--gallery-gold),
            transparent
        );
}


/* ============================================================
   MAIN TITLE
============================================================ */

.gallery-intro-heading h2 {
    max-width: 650px;

    margin: 0;

    color: #ffffff;

    font-family: var(--heading-font);

    font-size: clamp(54px, 6vw, 88px);

    font-weight: 500;

    line-height: .91;

    letter-spacing: -3.4px;
}


/* ============================================================
   ELEGANT SCRIPT WORD
============================================================ */

.gallery-intro-heading h2 em {
    display: block;

    margin-top: 14px;

    color: #d6a9f2;

    font-family: "Great Vibes", cursive;

    font-size: 1.08em;

    font-weight: 400;

    font-style: normal;

    line-height: .85;

    letter-spacing: 0;
}


/* ============================================================
   RIGHT INTRODUCTION PANEL
============================================================ */

.gallery-intro-copy {
    position: relative;

    max-width: 670px;

    padding: 58px 62px 55px;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.105),
            rgba(255,255,255,.035)
        );

    border:
        1px solid
        rgba(255,255,255,.13);

    border-radius:
        5px
        30px
        5px
        30px;

    box-shadow:
        0 35px 90px rgba(5, 1, 18, .34),
        inset 0 1px 0 rgba(255,255,255,.08);

    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}


/* ============================================================
   GOLD TOP ACCENT
============================================================ */

.gallery-intro-copy::before {
    content: "";

    position: absolute;

    left: 62px;
    top: -1px;

    width: 120px;
    height: 2px;

    background:
        linear-gradient(
            90deg,
            var(--gallery-gold-light),
            var(--gallery-gold),
            transparent
        );
}


/* ============================================================
   CORNER DETAIL
============================================================ */

.gallery-intro-copy::after {
    content: "";

    position: absolute;

    right: 28px;
    top: 28px;

    width: 48px;
    height: 48px;

    border:
        1px solid
        rgba(212,175,55,.17);

    border-radius: 50%;
}


/* ============================================================
   LEAD STATEMENT
============================================================ */

.gallery-intro-copy .gallery-lead {
    position: relative;

    margin:
        0
        55px
        27px
        0 !important;

    padding-left: 28px;

    color: #ffffff !important;

    font-family: var(--heading-font);

    font-size: 27px !important;

    font-weight: 500;

    line-height: 1.42 !important;
}


/* ============================================================
   GOLD MARK BESIDE LEAD
============================================================ */

.gallery-intro-copy .gallery-lead::before {
    content: "";

    position: absolute;

    left: 0;
    top: 5px;

    width: 2px;
    height: 72px;

    background:
        linear-gradient(
            to bottom,
            var(--gallery-gold),
            transparent
        );

    border-radius: 5px;
}


/* ============================================================
   BODY COPY
============================================================ */

.gallery-intro-copy > p:not(.gallery-lead) {
    max-width: 565px;

    margin: 0;

    color:
        rgba(255,255,255,.72)
        !important;

    font-size: 14px;

    line-height: 1.95;

    letter-spacing: .1px;
}


/* ============================================================
   SIGNATURE
============================================================ */

.gallery-signature {
    display: flex;

    align-items: center;

    gap: 16px;

    margin-top: 38px;

    padding-top: 25px;

    border-top:
        1px solid
        rgba(255,255,255,.10);
}


.gallery-signature span {
    position: relative;

    display: block;

    width: 52px;
    height: 1px;

    flex-shrink: 0;

    background: var(--gallery-gold);
}


.gallery-signature span::after {
    content: "";

    position: absolute;

    right: -1px;
    top: -2px;

    width: 5px;
    height: 5px;

    border-radius: 50%;

    background: var(--gallery-gold);

    box-shadow:
        0 0 8px rgba(212,175,55,.35);
}


.gallery-signature strong {
    color: #e0bc7d;

    font-family: var(--heading-font);

    font-size: 17px;

    font-weight: 500;

    font-style: italic;
}


/* ============================================================
   SUBTLE CONTENT SHADOW
============================================================ */

.gallery-intro-grid::after {
    content: "";

    position: absolute;

    width: 300px;
    height: 300px;

    right: 8%;
    bottom: -130px;

    background:
        radial-gradient(
            circle,
            rgba(212,175,55,.07),
            transparent 68%
        );

    pointer-events: none;

    z-index: -1;
}


/* ============================================================
   REVEAL ANIMATION
============================================================ */

.gallery-intro-heading.reveal-gallery {
    opacity: 0;

    transform: translateX(-85px);

    transition:
        opacity .9s ease,
        transform 1.1s cubic-bezier(.16,1,.3,1);
}


.gallery-intro-copy.reveal-gallery {
    opacity: 0;

    transform: translateX(85px);

    transition:
        opacity .9s ease,
        transform 1.1s cubic-bezier(.16,1,.3,1);

    transition-delay: .15s;
}


.gallery-intro-heading.reveal-gallery.gallery-visible,
.gallery-intro-copy.reveal-gallery.gallery-visible {
    opacity: 1;

    transform: translateX(0);
}


/* ============================================================
   TABLET
============================================================ */

@media (max-width: 1100px) {

    .gallery-intro {
        padding: 135px 0 150px;
    }

    .gallery-intro-grid {
        gap: 70px;
    }

    .gallery-intro-heading h2 {
        font-size: clamp(50px, 6vw, 74px);
    }

    .gallery-intro-copy {
        padding: 50px 45px;
    }

}


/* ============================================================
   TABLET / PORTRAIT
============================================================ */

@media (max-width: 900px) {

    .gallery-intro {
        padding: 115px 0 140px;
    }

    .gallery-intro-grid {
        grid-template-columns: 1fr;

        gap: 65px;
    }

    .gallery-intro-heading {
        padding-left: 34px;
    }

    .gallery-intro-heading h2 {
        max-width: 700px;
    }

    .gallery-intro-copy {
        max-width: 720px;

        justify-self: end;
    }

    .gallery-intro-frame {
        right: -420px;
    }

}


/* ============================================================
   MOBILE
============================================================ */

@media (max-width: 640px) {

    .gallery-intro {
        padding: 95px 0 120px;
    }


    .gallery-intro-frame {
        width: 350px;
        height: 350px;

        right: -235px;
    }


    .gallery-intro-heading {
        padding-left: 25px;
    }


    .gallery-intro-heading::before {
        height: 135px;
    }


    .gallery-intro-heading::after {
        left: -12px;
        bottom: -70px;

        font-size: 95px;

        letter-spacing: -6px;
    }


    .gallery-intro .purple-eyebrow {
        margin-bottom: 22px;

        font-size: 9px;

        letter-spacing: 2.5px;
    }


    .gallery-intro-heading h2 {
        font-size: clamp(45px, 13vw, 64px);

        letter-spacing: -2px;
    }


    .gallery-intro-copy {
        padding: 39px 28px 34px;

        border-radius:
            4px
            23px
            4px
            23px;
    }


    .gallery-intro-copy::before {
        left: 28px;

        width: 85px;
    }


    .gallery-intro-copy::after {
        right: 19px;
        top: 20px;

        width: 38px;
        height: 38px;
    }


    .gallery-intro-copy .gallery-lead {
        margin:
            0
            38px
            23px
            0 !important;

        padding-left: 21px;

        font-size: 20px !important;

        line-height: 1.48 !important;
    }


    .gallery-intro-copy .gallery-lead::before {
        height: 58px;
    }


    .gallery-intro-copy > p:not(.gallery-lead) {
        font-size: 13.5px;

        line-height: 1.85;
    }


    .gallery-signature {
        margin-top: 28px;

        padding-top: 21px;
    }


    .gallery-signature strong {
        font-size: 15px;
    }


    .gallery-intro-heading.reveal-gallery {
        transform: translateX(-50px);
    }


    .gallery-intro-copy.reveal-gallery {
        transform: translateX(50px);
    }

}


/* ============================================================
   SMALL PHONES
============================================================ */

@media (max-width: 390px) {

    .gallery-intro {
        padding: 82px 0 105px;
    }

    .gallery-intro-heading h2 {
        font-size: 40px;
    }

    .gallery-intro-copy {
        padding: 34px 23px 30px;
    }

    .gallery-intro-copy .gallery-lead {
        font-size: 19px !important;
    }

}


/* ============================================================
   REDUCED MOTION
============================================================ */

@media (prefers-reduced-motion: reduce) {

    .gallery-intro .reveal-gallery,
    .gallery-intro .reveal-gallery.gallery-visible {

        opacity: 1 !important;

        transform: none !important;

        transition: none !important;
    }

}



/* ============================================================
   05. FEATURED STORY — EDITORIAL IMAGE + CONTENT COMPOSITION
============================================================ */
.gallery-featured {
    position: relative;
    overflow: hidden;

    padding: 145px 0 25px;

    background:
        linear-gradient(
            180deg,
            #ffffff 0%,
            #fcf9fd 100%
        );
}

/* ============================================================
   FEATURED STORY WRAPPER
============================================================ */

.featured-story {
    position: relative;

    display: grid;

    grid-template-columns:
        minmax(0, 1.08fr)
        minmax(360px, .92fr);

    align-items: center;

    gap: 0;
}


/* ============================================================
   IMAGE COLUMN
============================================================ */

.featured-story-image {
    position: relative;

    z-index: 1;

    width: calc(100% - 45px);

    overflow: hidden;

    border-radius:
        6px
        95px
        6px
        6px;

    background: #24102f;

    box-shadow:
        0 35px 90px rgba(52, 21, 72, .18);
}


/* ============================================================
   IMAGE GOLD CORNER
============================================================ */

.featured-story-image::before {
    content: "";

    position: absolute;

    z-index: 4;

    left: 28px;
    top: 28px;

    width: 82px;
    height: 82px;

    border-top:
        1px solid
        rgba(212,175,55,.8);

    border-left:
        1px solid
        rgba(212,175,55,.8);

    pointer-events: none;
}


/* ============================================================
   IMAGE DECORATIVE RINGS
============================================================ */

.featured-story-image::after {
    content: "";

    position: absolute;

    z-index: 3;

    right: -65px;
    bottom: -65px;

    width: 235px;
    height: 235px;

    border:
        1px solid
        rgba(212,175,55,.65);

    border-radius: 50%;

    box-shadow:
        0 0 0 18px rgba(212,175,55,.035),
        0 0 0 42px rgba(212,175,55,.018);

    pointer-events: none;
}


/* ============================================================
   IMAGE
============================================================ */

.featured-story-image img {
    display: block;

    width: 100%;
    height: 650px;

    object-fit: cover;

    transform: scale(1.015);

    transition:
        transform 1.2s cubic-bezier(.16,1,.3,1),
        filter .7s ease;
}


/* ============================================================
   IMAGE HOVER
============================================================ */

.featured-story-image:hover img {
    transform: scale(1.06);
}


/* ============================================================
   IMAGE SIDE LABEL
============================================================ */

.featured-story-image .story-image-label {
    position: absolute;

    z-index: 5;

    left: 28px;
    bottom: 28px;

    display: flex;
    align-items: center;
    gap: 12px;

    padding: 11px 16px;

    color: #ffffff;

    background:
        rgba(30, 10, 42, .68);

    border:
        1px solid
        rgba(255,255,255,.15);

    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);

    font-size: 9px;
    font-weight: 700;

    letter-spacing: 2px;

    text-transform: uppercase;
}

.featured-story-image .story-image-label::before {
    content: "";

    width: 25px;
    height: 1px;

    background: var(--gallery-gold);
}


/* ============================================================
   CONTENT PANEL
============================================================ */

.featured-story-content {
    position: relative;

    z-index: 5;

    margin-left: -82px;

    padding:
        70px
        65px
        72px
        72px;

    background: #ffffff;

    border:
        1px solid
        rgba(89,37,111,.10);

    box-shadow:
        0 35px 85px rgba(45,20,65,.13);
}


/* ============================================================
   GOLD TOP LINE
============================================================ */

.featured-story-content::before {
    content: "";

    position: absolute;

    left: 72px;
    top: -2px;

    width: 125px;
    height: 3px;

    background:
        linear-gradient(
            90deg,
            var(--gallery-gold),
            rgba(212,175,55,0)
        );
}


/* ============================================================
   LARGE BACKGROUND NUMBER
============================================================ */

.featured-story-content::after {
    content: "02";

    position: absolute;

    z-index: -1;

    right: 25px;
    bottom: 18px;

    color: rgba(89,37,111,.045);

    font-family: var(--heading-font);

    font-size: 125px;

    font-weight: 500;

    line-height: .8;

    letter-spacing: -7px;

    pointer-events: none;
}


/* ============================================================
   DECORATIVE DOT
============================================================ */

.featured-story-content .story-decoration {
    position: absolute;

    right: 35px;
    top: 35px;

    width: 8px;
    height: 8px;

    border-radius: 50%;

    background: var(--gallery-gold);

    box-shadow:
        0 0 0 8px rgba(212,175,55,.08),
        0 0 18px rgba(212,175,55,.22);
}


/* ============================================================
   EYEBROW
============================================================ */

.featured-story-content .purple-eyebrow {
    display: inline-flex;

    align-items: center;

    gap: 12px;

    margin-bottom: 24px;

    color: var(--gallery-purple-700);

    font-size: 10px;

    font-weight: 700;

    letter-spacing: 2.8px;

    text-transform: uppercase;
}


.featured-story-content .purple-eyebrow::before {
    content: "";

    width: 30px;
    height: 1px;

    background: var(--gallery-gold);
}


/* ============================================================
   TITLE
============================================================ */

.featured-story-content h2 {
    position: relative;

    max-width: 530px;

    margin: 0;

    color: var(--gallery-purple-900);

    font-family: var(--heading-font);

    font-size:
        clamp(
            43px,
            4.5vw,
            68px
        );

    font-weight: 500;

    line-height: .96;

    letter-spacing: -2.7px;
}


/* ============================================================
   GOLD TITLE MARK
============================================================ */

.featured-story-content h2::after {
    content: "";

    display: block;

    width: 55px;
    height: 2px;

    margin-top: 27px;

    background:
        linear-gradient(
            90deg,
            var(--gallery-gold),
            rgba(212,175,55,.15)
        );
}


/* ============================================================
   DESCRIPTION
============================================================ */

.featured-story-content p {
    position: relative;

    z-index: 2;

    max-width: 535px;

    margin:
        29px
        0
        0;

    color: var(--gallery-muted);

    font-size: 15px;

    line-height: 1.95;
}


/* ============================================================
   STORY LINK
============================================================ */

.gallery-text-link,
.gallery-story-link {
    position: relative;

    z-index: 4;

    display: inline-flex;

    align-items: center;

    gap: 13px;

    margin-top: 34px;

    padding-bottom: 8px;

    color: var(--gallery-purple-700);

    border-bottom:
        1px solid
        rgba(89,37,111,.20);

    font-size: 10px;

    font-weight: 700;

    letter-spacing: 1.9px;

    text-transform: uppercase;

    transition:
        color .3s ease,
        border-color .3s ease;
}


.gallery-text-link i,
.gallery-story-link i {
    color: var(--gallery-gold);

    transition:
        transform .35s cubic-bezier(.16,1,.3,1);
}


.gallery-text-link:hover,
.gallery-story-link:hover {
    color: var(--gallery-gold);

    border-color:
        var(--gallery-gold);
}


.gallery-text-link:hover i,
.gallery-story-link:hover i {
    transform:
        translateX(8px);
}


/* ============================================================
   IMAGE REVEAL
============================================================ */

.featured-story-image.reveal-gallery {
    opacity: 0;

    transform:
        translateX(-70px)
        scale(.97);

    transition:
        opacity .9s ease,
        transform 1.15s cubic-bezier(.16,1,.3,1);
}


.featured-story-image.reveal-gallery.gallery-visible {
    opacity: 1;

    transform:
        translateX(0)
        scale(1);
}


/* ============================================================
   CONTENT REVEAL
============================================================ */

.featured-story-content.reveal-gallery {
    opacity: 0;

    transform:
        translateX(70px);

    transition:
        opacity .9s ease,
        transform 1.15s cubic-bezier(.16,1,.3,1);

    transition-delay: .18s;
}


.featured-story-content.reveal-gallery.gallery-visible {
    opacity: 1;

    transform:
        translateX(0);
}


/* ============================================================
   TABLET
============================================================ */

@media (max-width: 1050px) {

    .gallery-featured {
        padding: 125px 0 140px;
    }


    .featured-story {
        grid-template-columns:
            minmax(0, 1fr)
            minmax(320px, .88fr);
    }


    .featured-story-image {
        width: calc(100% - 30px);

        border-radius:
            6px
            70px
            6px
            6px;
    }


    .featured-story-image img {
        height: 570px;
    }


    .featured-story-content {
        margin-left: -55px;

        padding:
            55px
            45px
            60px
            55px;
    }


    .featured-story-content::before {
        left: 55px;
    }

}


/* ============================================================
   TABLET / PORTRAIT
============================================================ */

@media (max-width: 800px) {

    .gallery-featured {
        padding: 105px 0 125px;
    }


    .featured-story {
        grid-template-columns: 1fr;
    }


    .featured-story-image {
        width: 100%;

        border-radius:
            6px
            65px
            6px
            6px;
    }


    .featured-story-image img {
        height: 560px;
    }


    .featured-story-content {
        width: calc(100% - 50px);

        margin:
            -75px
            auto
            0;

        padding:
            55px
            50px
            60px;

        justify-self: center;
    }


    .featured-story-content::before {
        left: 50px;
    }

}


/* ============================================================
   MOBILE
============================================================ */

@media (max-width: 640px) {

    .gallery-featured {
        padding: 82px 0 105px;
    }


    .featured-story-image {
        border-radius:
            5px
            43px
            5px
            5px;
    }


    .featured-story-image::before {
        left: 18px;
        top: 18px;

        width: 55px;
        height: 55px;
    }


    .featured-story-image::after {
        right: -55px;
        bottom: -55px;

        width: 175px;
        height: 175px;
    }


    .featured-story-image img {
        height: 435px;
    }


    .featured-story-image .story-image-label {
        left: 18px;
        bottom: 18px;

        padding:
            9px
            12px;

        font-size: 8px;

        letter-spacing: 1.6px;
    }


    .featured-story-content {
        width: calc(100% - 24px);

        margin:
            -48px
            auto
            0;

        padding:
            42px
            27px
            47px;
    }


    .featured-story-content::before {
        left: 27px;

        width: 80px;
    }


    .featured-story-content::after {
        right: 17px;
        bottom: 15px;

        font-size: 78px;
    }


    .featured-story-content .story-decoration {
        right: 25px;
        top: 25px;
    }


    .featured-story-content .purple-eyebrow {
        margin-bottom: 19px;

        font-size: 9px;

        letter-spacing: 2.2px;
    }


    .featured-story-content h2 {
        font-size:
            clamp(
                38px,
                11vw,
                53px
            );

        letter-spacing: -1.9px;
    }


    .featured-story-content h2::after {
        margin-top: 21px;
    }


    .featured-story-content p {
        margin-top: 24px;

        font-size: 13.5px;

        line-height: 1.86;
    }


    .gallery-text-link,
    .gallery-story-link {
        margin-top: 28px;

        font-size: 9px;

        letter-spacing: 1.5px;
    }


    .featured-story-image.reveal-gallery {
        transform:
            translateX(-45px)
            scale(.98);
    }


    .featured-story-content.reveal-gallery {
        transform:
            translateX(45px);
    }

}


/* ============================================================
   SMALL PHONES
============================================================ */

@media (max-width: 390px) {

    .gallery-featured {
        padding: 70px 0 90px;
    }


    .featured-story-image img {
        height: 385px;
    }


    .featured-story-content {
        padding:
            36px
            22px
            40px;
    }


    .featured-story-content::before {
        left: 22px;
    }


    .featured-story-content h2 {
        font-size: 36px;
    }

}


/* ============================================================
   REDUCED MOTION
============================================================ */

@media (prefers-reduced-motion: reduce) {

    .featured-story-image.reveal-gallery,
    .featured-story-content.reveal-gallery,
    .featured-story-image.reveal-gallery.gallery-visible,
    .featured-story-content.reveal-gallery.gallery-visible {

        opacity: 1 !important;

        transform: none !important;

        transition: none !important;
    }


    .featured-story-image img {
        transition: none;
    }

}





/* ============================================================
   06. GALLERY SECTION
   ============================================================ */
.gallery-section {
    padding: 1px 0 95px;
    background: var(--gallery-cream);
}


.gallery-heading {

    display: flex;

    align-items: end;

    justify-content: space-between;

    gap: 30px;

    margin-bottom: 30px;
}


.gallery-heading h2 {

    margin: 0;
}


.gallery-heading > p {

    max-width: 430px;

    margin-bottom: 4px;

    color: var(--gallery-muted);

    font-size: 14px;

    line-height: 1.7;
}


/* ============================================================
   07. FILTERS
   ============================================================ */

.gallery-filters {

    display: flex;

    flex-wrap: wrap;

    gap: 10px;

    margin-bottom: 45px;
}


.gallery-filter {

    padding: 11px 22px;

    border: 1px solid var(--gallery-border);

    border-radius: 30px;

    background: transparent;

    color: var(--gallery-muted);

    font-family: var(--body-font);

    font-size: 9px;

    font-weight: 700;

    letter-spacing: 1.5px;

    text-transform: uppercase;

    cursor: pointer;

    transition:
        background .3s ease,
        color .3s ease,
        border-color .3s ease,
        transform .3s ease;
}


.gallery-filter:hover {

    border-color: var(--gallery-purple-700);

    color: var(--gallery-purple-700);

    transform: translateY(-2px);

}


.gallery-filter.active {

    border-color: var(--gallery-purple-900);

    background: var(--gallery-purple-900);

    color: var(--gallery-white);
}


/* ============================================================
   08. MASONRY GRID
   ============================================================ */

.gallery-grid {

    display: grid;

    grid-template-columns:
        repeat(4, 1fr);

    grid-auto-rows: 230px;

    gap: 18px;
}


.gallery-item {

    position: relative;

    overflow: hidden;

    min-height: 230px;

    border-radius: 28px;

    background: var(--gallery-purple-900);

    cursor: pointer;

    transition:
        opacity .4s ease,
        transform .4s ease;
}


.gallery-item.gallery-large {

    grid-column: span 2;

    grid-row: span 2;
}


.gallery-item.gallery-tall {

    grid-row: span 2;
}


.gallery-item.gallery-wide {

    grid-column: span 2;
}


.gallery-item img {

    width: 100%;

    height: 100%;

    object-fit: cover;

    transition:
        transform .8s cubic-bezier(.2,.7,.2,1);
}


.gallery-item::after {

    content: "";

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            180deg,
            transparent 25%,
            rgba(22,8,46,.90)
        );

    opacity: .75;

    transition: opacity .4s ease;
}


.gallery-item:hover img {

    transform: scale(1.07);
}


.gallery-item:hover::after {

    opacity: .9;
}


.gallery-item-overlay {

    position: absolute;

    left: 25px;

    right: 25px;

    bottom: 24px;

    z-index: 3;

    display: flex;

    align-items: end;

    justify-content: space-between;

    gap: 15px;

    color: var(--gallery-white);
}


.gallery-item-overlay span {

    display: block;

    margin-bottom: 5px;

    color: var(--gallery-gold);

    font-size: 8px;

    font-weight: 700;

    letter-spacing: 1.8px;

    text-transform: uppercase;
}


.gallery-item-overlay h3 {

    margin: 0;

    font-family: var(--heading-font);

    font-size: 24px;

    font-weight: 500;

    line-height: 1.05;
}


.gallery-open {

    width: 43px;

    height: 43px;

    flex-shrink: 0;

    display: flex;

    align-items: center;

    justify-content: center;

    border: 1px solid rgba(255,255,255,.45);

    border-radius: 50%;

    background: rgba(22,8,46,.35);

    color: var(--gallery-white);

    cursor: pointer;

    backdrop-filter: blur(5px);

    transition:
        background .3s ease,
        color .3s ease,
        transform .3s ease;
}


.gallery-open:hover {

    background: var(--gallery-gold);

    color: var(--gallery-purple-950);

    transform: scale(1.08);
}


/* ============================================================
   09. PHOTO STORY
   ============================================================ */

.gallery-story {

    padding: 140px 0;

    background: var(--gallery-white);
}


.gallery-story-grid {

    display: grid;

    grid-template-columns: .85fr 1.15fr;

    gap: 90px;

    align-items: center;
}


.gallery-story-content {

    max-width: 550px;
}


.gallery-story-content p {

    margin-top: 23px;

    color: var(--gallery-muted);

    font-size: 15px;

    line-height: 1.8;
}


.gallery-story-images {

    position: relative;

    min-height: 620px;
}


.story-image {

    position: absolute;

    overflow: hidden;

    background: var(--gallery-purple-900);

}


.story-image img {

    width: 100%;

    height: 100%;

    object-fit: cover;

    transition: transform .8s ease;
}


.story-image:hover img {

    transform: scale(1.06);
}


.story-image-main {

    top: 0;

    left: 0;

    width: 76%;

    height: 550px;

    border-radius: 90px 25px 90px 25px;

}


.story-image-small {

    right: 0;

    bottom: 0;

    width: 42%;

    height: 310px;

    border: 10px solid var(--gallery-white);

    border-radius: 25px 70px 25px 70px;

}


.story-image .gallery-open {

    position: absolute;

    right: 20px;

    bottom: 20px;

    z-index: 4;
}








/* ============================================================
   PORTRAIT GALLERY — UNIFORM PORTRAIT FRAMES
============================================================ */

.portrait-gallery {
    padding: 12px 0 100px;
    background: transparent;
}

.portrait-grid {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

/* ============================================================
   UNIVERSAL PORTRAIT FRAME
============================================================ */

.portrait-card {
    position: relative;
    width: 100%;

    /* Same portrait shape for EVERY image */
    aspect-ratio: 3 / 4;

    overflow: hidden;
    border-radius: 32px;

    background: var(--gallery-purple-900);

    cursor: pointer;

    transition:
        transform .45s cubic-bezier(.22,.61,.36,1),
        box-shadow .45s ease;
}

/* ============================================================
   IMAGE — ALWAYS FILLS THE SAME PORTRAIT FRAME
============================================================ */

.portrait-card img {
    display: block;

    width: 100%;
    height: 140%;

    /*
       Every image fills the exact same frame.
       The portrait shape remains consistent.
    */
    object-fit: cover;

    /*
       Keeps the important central portion visible.
    */
    object-position: center center;

    transition:
        transform .8s cubic-bezier(.22,.61,.36,1),
        filter .6s ease;
}

/* ============================================================
   IMAGE OVERLAY
============================================================ */

.portrait-card::after {
    content: "";
    position: absolute;
    inset: 0;

    background: linear-gradient(
        to top,
        rgba(22,8,46,.55),
        transparent 60%
    );

    opacity: .85;

    transition: opacity .4s ease;

    pointer-events: none;
}

/* ============================================================
   EXPAND BUTTON
============================================================ */

.portrait-open {
    position: absolute;
    right: 18px;
    bottom: 18px;

    z-index: 3;

    width: 46px;
    height: 46px;

    border: none;
    border-radius: 50%;

    display: flex;
    align-items: center;
    justify-content: center;

    background: rgba(255,255,255,.12);
    color: #fff;

    backdrop-filter: blur(8px);

    cursor: pointer;

    transition:
        transform .35s ease,
        background .35s ease,
        color .35s ease;
}

/* ============================================================
   HOVER
============================================================ */

.portrait-card:hover {
    transform: translateY(-8px);

    box-shadow:
        0 25px 55px rgba(22,8,46,.28);
}

.portrait-card:hover img {
    transform: scale(1.04);
    filter: saturate(1.05);
}

.portrait-card:hover::after {
    opacity: .95;
}

.portrait-card:hover .portrait-open {
    background: var(--gallery-gold);
    color: var(--gallery-purple-950);
    transform: scale(1.12);
}

/* ============================================================
   LARGE DESKTOP
============================================================ */

@media (min-width: 1400px) {

    .portrait-grid {
        gap: 16px;
    }

    .portrait-card {
        aspect-ratio: 3 / 4;
    }
}

/* ============================================================
   TABLET
============================================================ */

@media (max-width: 1100px) {

    .portrait-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 18px;
    }

    .portrait-card {
        aspect-ratio: 3 / 4;
    }
}

/* ============================================================
   MOBILE
============================================================ */

@media (max-width: 640px) {

    .portrait-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .portrait-card {
        aspect-ratio: 3 / 4;
        border-radius: 26px;
    }
}







/* ============================================================
   10. CTA
   ============================================================ */

.gallery-cta {

    padding: 110px 0;

    background: var(--gallery-white);
}


.gallery-cta-inner {

    position: relative;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 60px;

    overflow: hidden;

    padding: 75px 80px;

    border-radius: 45px;

    background:
        linear-gradient(
            125deg,
            var(--gallery-purple-950),
            var(--gallery-purple-800)
        );
}


.gallery-cta-inner::before {

    content: "";

    position: absolute;

    right: -170px;

    top: -230px;

    width: 440px;

    height: 440px;

    border: 1px solid rgba(212,175,55,.24);

    border-radius: 50%;
}


.gallery-cta-inner::after {

    content: "";

    position: absolute;

    right: 70px;

    bottom: -240px;

    width: 320px;

    height: 320px;

    border: 1px solid rgba(212,175,55,.15);

    border-radius: 50%;
}


.gallery-cta-content {

    position: relative;

    z-index: 2;

    max-width: 650px;
}


.gallery-cta-content h2 {

    color: var(--gallery-white);
}


.gallery-cta-content h2 em {

    color: var(--gallery-gold);
}


.gallery-cta-content p {

    max-width: 580px;

    margin-top: 20px;

    color: rgba(255,255,255,.68);

    font-size: 14px;
}


.gallery-cta-actions {

    position: relative;

    z-index: 2;

    display: flex;

    flex-direction: column;

    gap: 14px;

    flex-shrink: 0;
}


/* ============================================================
   11. LIGHTBOX
============================================================ */

.gallery-lightbox {

    position: fixed;

    inset: 0;

    z-index: 5000;

    display: flex;

    align-items: center;

    justify-content: center;

    padding: 50px;

    background: rgba(16,5,31,.96);

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    transition:
        opacity .35s ease,
        visibility .35s ease;
}


.gallery-lightbox.active {

    opacity: 1;

    visibility: visible;

    pointer-events: auto;
}


.lightbox-content {

    position: relative;

    max-width: min(1100px, 90vw);

    max-height: 90vh;

    text-align: center;
}


.lightbox-content img {

    display: block;

    max-width: 100%;

    max-height: 78vh;

    margin: auto;

    object-fit: contain;

    border-radius: 8px;

}


.lightbox-content p {

    margin-top: 16px;

    color: rgba(255,255,255,.72);

    font-size: 12px;

}


.lightbox-close,
.lightbox-prev,
.lightbox-next {

    position: absolute;

    z-index: 5;

    display: flex;

    align-items: center;

    justify-content: center;

    width: 48px;

    height: 48px;

    border: 1px solid rgba(255,255,255,.25);

    border-radius: 50%;

    background: rgba(255,255,255,.06);

    color: var(--gallery-white);

    cursor: pointer;

    transition:
        background .3s ease,
        color .3s ease,
        transform .3s ease;
}


.lightbox-close:hover,
.lightbox-prev:hover,
.lightbox-next:hover {

    background: var(--gallery-gold);

    color: var(--gallery-purple-950);

}


.lightbox-close {

    top: 25px;

    right: 30px;
}


.lightbox-prev {

    left: 30px;

    top: 50%;

    transform: translateY(-50%);
}


.lightbox-next {

    right: 30px;

    top: 50%;

    transform: translateY(-50%);
}


.lightbox-prev:hover,
.lightbox-next:hover {

    transform:
        translateY(-50%)
        scale(1.06);
}


/* ============================================================
   12. SCROLL REVEAL
============================================================ */

.reveal-gallery {

    opacity: 0;

    transform: translateY(40px);

    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.2,.7,.2,1);
}


.reveal-gallery.gallery-visible {

    opacity: 1;

    transform: translateY(0);
}


.gallery-item:nth-child(1) {

    transition-delay: .04s;
}


.gallery-item:nth-child(2) {

    transition-delay: .08s;
}


.gallery-item:nth-child(3) {

    transition-delay: .12s;
}


.gallery-item:nth-child(4) {

    transition-delay: .16s;
}


.gallery-item:nth-child(5) {

    transition-delay: .20s;
}


.gallery-item:nth-child(6) {

    transition-delay: .24s;
}


.gallery-item:nth-child(7) {

    transition-delay: .28s;
}


.gallery-item:nth-child(8) {

    transition-delay: .32s;
}


.gallery-item:nth-child(9) {

    transition-delay: .36s;
}


.gallery-item:nth-child(10) {

    transition-delay: .40s;
}


/* ============================================================
   13. HERO ANIMATION
============================================================ */

.gallery-hero-content {

    animation:
        galleryHeroText 1s
        cubic-bezier(.2,.7,.2,1)
        both;
}


.gallery-hero-image img {

    animation:
        galleryHeroImage 1.6s
        ease
        both;
}


@keyframes galleryHeroText {

    from {

        opacity: 0;

        transform: translateY(35px);

    }

    to {

        opacity: 1;

        transform: translateY(0);

    }

}


@keyframes galleryHeroImage {

    from {

        opacity: 0;

        transform: scale(1.07);

    }

    to {

        opacity: 1;

        transform: scale(1);

    }

}


/* ============================================================
   14. TABLET
============================================================ */

@media (max-width: 1050px) {

    .gallery-grid {

        grid-template-columns:
            repeat(3, 1fr);

    }


    .gallery-item.gallery-large {

        grid-column: span 2;

    }


    .gallery-story-grid {

        gap: 55px;

    }

}


/* ============================================================
   15. 900PX
============================================================ */

@media (max-width: 900px) {

    .gallery-hero {

        min-height: 690px;

    }


    .gallery-hero-content {

        padding-top: 125px;

    }


    .gallery-hero-mark {

        display: none;

    }


    .gallery-intro {

        padding: 100px 0;

    }


    .gallery-intro-grid {

        grid-template-columns: 1fr;

        gap: 45px;

    }


    .gallery-intro-heading {

        position: static;

    }


    .featured-story {

        grid-template-columns: 1fr;

        gap: 50px;

    }


    .gallery-heading {

        align-items: start;

        flex-direction: column;

        gap: 20px;

    }


    .gallery-grid {

        grid-template-columns:
            repeat(2, 1fr);

        grid-auto-rows: 250px;

    }


    .gallery-story-grid {

        grid-template-columns: 1fr;

    }


    .gallery-story-content {

        max-width: 700px;

    }


    .gallery-story-images {

        min-height: 600px;

    }


    .gallery-cta-inner {

        flex-direction: column;

        align-items: flex-start;

        padding: 60px 50px;

    }


    .gallery-cta-actions {

        flex-direction: row;

        flex-wrap: wrap;

    }

}


/* ============================================================
   16. MOBILE
============================================================ */

@media (max-width: 640px) {

    .gallery-page h2 {

        font-size: 43px;

    }


    .gallery-hero {

        min-height: 650px;

    }


    .gallery-hero-content {

        padding-top: 140px;

    }


    .gallery-hero-content h1 {

        font-size: 64px;

        letter-spacing: -1px;

    }


    .gallery-hero-content p {

        font-size: 14px;

    }


    .gallery-intro {

        padding: 85px 0;

    }


    .gallery-featured {

        padding-bottom: 90px;

    }


    .featured-story-image img {

        height: 500px;

    }


    .featured-story-image {

        border-radius: 65px 25px 65px 25px;

    }


    .gallery-section {

        padding: 90px 0;

    }


    .gallery-filters {

        gap: 7px;

    }


    .gallery-filter {

        padding: 9px 15px;

        font-size: 8px;

    }


    .gallery-grid {

        grid-template-columns: 1fr;

        grid-auto-rows: 310px;

    }


    .gallery-item,
    .gallery-item.gallery-large,
    .gallery-item.gallery-wide,
    .gallery-item.gallery-tall {

        grid-column: auto;

        grid-row: span 1;

    }


    .gallery-item.gallery-large {

        min-height: 420px;

    }


    .gallery-item.gallery-tall {

        min-height: 420px;

    }


    .gallery-story {

        padding: 90px 0;

    }


    .gallery-story-images {

        min-height: 510px;

    }


    .story-image-main {

        width: 82%;

        height: 430px;

    }


    .story-image-small {

        width: 45%;

        height: 245px;

    }


    .gallery-cta {

        padding: 70px 0;

    }


    .gallery-cta-inner {

        padding: 50px 28px;

        border-radius: 30px;

    }


    .gallery-cta-actions {

        width: 100%;

        flex-direction: column;

        align-items: stretch;

    }


    .gallery-cta-actions .btn {

        width: 100%;

        justify-content: center;

    }


    .gallery-lightbox {

        padding: 25px;

    }


    .lightbox-close {

        top: 15px;

        right: 15px;

    }


    .lightbox-prev {

        left: 10px;

    }


    .lightbox-next {

        right: 10px;

    }

}


/* ============================================================
   17. SMALL PHONES
============================================================ */

@media (max-width: 390px) {

    .gallery-hero-content h1 {

        font-size: 56px;

    }


    .gallery-page h2 {

        font-size: 38px;

    }


    .gallery-item-overlay h3 {

        font-size: 21px;

    }

}


/* ============================================================
   18. REDUCED MOTION
============================================================ */

@media (prefers-reduced-motion: reduce) {

    .gallery-page *,
    .gallery-page *::before,
    .gallery-page *::after {

        animation: none!important;

        transition: none!important;

        scroll-behavior: auto!important;

    }


    .reveal-gallery {

        opacity: 1!important;

        transform: none!important;

    }

}